more flashers converted

This commit is contained in:
Jakub Husak
2023-01-30 13:55:12 +01:00
parent 2a248ee993
commit 1210ff70f8
26 changed files with 55 additions and 1243 deletions
Binary file not shown.
@@ -1,487 +0,0 @@
; JatariCart256 flasher
; by Jakub Husak , 04.01.2020
; All Rights Reserved.
;
; JatariCart is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; JatariCart is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with JatariCart256. If not, see <http://www.gnu.org/licenses/>.
;
icl '../../lib/atari.hea'
; flash image is included at the end of file
; uncomment when flashing all cart or want to check all blocks written so far.
;.def compareall
BankNum equ $88
Counter equ $89
operation equ $8a
start equ 6 ; format chip and program
select equ 5 ; ferify and format sectors
option equ 3 ; verify
outchar equ $F2B0
memtop equ $2e5
dmactls equ $22f
_SOURCE equ $6000
_DEST equ $A000
; test code
org $2000
STARTFLASHWRITE
mva #$A0 106
jsr opened
lda 20
@ cmp 20
beq @-
@ lda #$1
sta 66
; waiting for cart to be inserted
jsr print
TITLE+128
dta $9b,c'JatariCart/MaxFlash flasher'
dta $9b
dta c'by JHusak, I.2023'
dta $9b
dta c'JatariCart of size '
CARTSIZE+128
dta c' kB needed',$9b,$9b
dta c'Insert JatariCart of '
CARTSIZE+128
dta c' kB...',0
sta $D500
?wloop lda $D013
lsr
bcc ?wloop
ldx #$25
?lloop
bit VCOUNT
bmi *-3
bit VCOUNT
bpl *-3
dex
bne ?lloop
jsr print
dta c' inserted.',$9b,0
; cart inserted, fake it was not changed
lda $d013
sta $3fa
ldx #0 ; chip address
stx numchips
_check_chips
stx _storex
jsr check_type
bcc ?_next
jsr print
dta c'unrecognized chip: ',0
lda m_vendor
jsr printhex
lda m_kind
jsr printhex
cpx #$0
seq
jmp *
jsr print
dta c'ignoring chip ...',0
jmp menu
?_next inc numchips
lda numchips
clc
adc #$30
sta chipno
jsr print
dta c'chip '
chipno
dta c'0'
dta c' vend/prod: ',0
lda m_vendor
jsr printhex
lda m_kind
jsr printhex
jsr print
dta c' code: ',0
; print memory type
lda M_VECTOR
clc
adc #flash_idstr ; will print flashmem text id
sta ?taddr
lda M_VECTOR+1
adc #0
sta ?taddr+1
ldy #0
?loop ; write string onscreen till 0
lda ?taddr:$ffff,y
beq ?exit
sty st_y
jsr outchar
ldy st_y:#0
iny
bne ?loop
?exit
jsr printnl
ldx _storex
cpx #0
bne menu
lda m_vendor
sta t_vendor
lda m_kind
sta t_kind
ldx #$40
jmp _check_chips
menu
jsr printnl
;lda #$ff
;sta $d301
jsr print
dta c'Press:',$9b
dta c'START - format cart and programm',$9b
;dta c'SELECT - verify; repair bad blocks.',$9b
dta c'OPTION - verify',$9b,0
?wloop lda 53279
cmp #7
beq ?wloop
sta operation
cmp #select
beq ?wloop
cmp #option
jeq CHECKONLY
cmp #start
beq FORMAT
bne ?wloop
; start
FORMAT
jsr printformatting
jsr print
dta c'1...',0
ldx #0
jsr flashformatchip
bcs formatfailed
jsr flashend ; restores display etc.
.if .def TWOCHIPS
jsr printdone
jsr printformatting
jsr print
dta c'2...',0
ldx #$40
jsr flashformatchip
bcs formatfailed
jsr flashend ; restores display etc.
.endif
printdone jsr print
dta c'done:)',$9b,0
rts
printformatting
jsr print
dta c'Formatting cart chip ',0
rts
formatfailed
jsr print
dta c'failed:(',$9b,'Waiting for reboot...',$9b,0
jmp *
VERIFYREPAIR
jsr print
dta c'Verify and ',0
CHECKONLY
jsr print
dta c'Compare.',$9b,0
rts
t_vendor .byte 0
t_kind .byte 0
numchips .byte 0
_storex .byte 0
crcsums
:128 dta 0,0
opened
ldx #0
lda #12
jsr icio
mwa #name icbufa,x
mva #$0c icax1,x
mva #$0 icax2,x
lda #3
icio sta iccmd,x
jmp $e456
name dta 'E:',$9b
CHECKINIT
mwa #_SOURCE _csrc
mwa #_DEST _cdst
sei
CHECK
mva #0 badcompare_counter
sta badcompare_counter+1
ldx BankNum
sta $d500,x
checkloop
_csrc equ * + 1
lda $6000 ; src
_cdst equ * + 1
cmp $A000 ; dst
beq @+
lda _csrc
ldx _csrc+1
jsr BADCOMPARE
@ inw _csrc
inw _cdst
lda _csrc+1
cmp #>_SOURCE+$20
bne checkloop
cpw #0 badcompare_counter
beq @+
sta $d580
lda $d013
sta $3fa
cli
jsr print
dta c'non-match byte#:',0
lda badcompare_counter+1
jsr printhex
lda badcompare_counter
jsr printhex
jsr printnl
sec
rts
@ sta $d580
lda $d013
sta $3fa
cli
lda #'o'
jsr outchar
@ clc
dmaon mva #34 dmactls
sta dmactl
rts
VERIFY
;mwa #_SOURCE _csrc
;mwa #_DEST _cdst
jsr CHECKINIT
bcc v_rts
lda #'f'
jsr outchar
ldx BankNum
lda #$a0
jsr flashformatsector
ldx BankNum
lda #$b0
jsr flashformatsector
jsr FORMATTED
dec Counter
bne VERIFY
v_rts jmp dmaon
COMPARE_CRC16_DEST_ALL
lda BankNum
sta _tbanknum
@ sei
_tbanknum equ * + 1
sta $D500
clc
mva _tbanknum calccrc_bank
jsr CALCCRC_DEST
jsr status_crc
.ifdef compareall
dec _tbanknum
bpl @-
.endif
sta $D580
lda $d013
sta $3fa
cli
rts
status_crc
php
jsr printBank_t
plp
php
sne
lda #'o'
plp
seq
lda #'!'
jsr outchar
lda #','
jmp outchar
CALCCRC_DEST
php
mwa #_DEST _tsrc
bne crccont
CALCCRC ; c=1 - write; c=0 - check
php
mwa #_SOURCE _tsrc
mwa #$2000 _tcnt
crccont mwa #$ffff crc16.crc
_tsrc equ * + 1
lda $ffff
jsr crc16.updCRC
inw _tsrc
dew _tcnt
bne _tsrc -1
calccrc_bank equ * +1
lda #$ba ; nk number
asl
tax
plp
bcc crccheck
mwa crc16.crc crcsums,x
rts
_tcnt :2 dta 0
crccheck
cpw crc16.crc crcsums,x
rts
printBank_t
lda _tbanknum
bpl @+
printBank
jsr printnl
lda BankNum
@ pha
lda #'B'
jsr outchar
pla
jsr printhex
lda #':'
jmp outchar
MAIN_PROCESS
;mva #0 dmactls
;sta dmactl
sec
mva BankNum calccrc_bank
jsr CALCCRC
mwa #_DEST flashaddr
jsr printBank
lda operation
cmp #select
jeq VERIFY
cmp #option
jeq CHECKINIT
FORMATTED
mwa #_SOURCE _writeaddr
lda _writeaddr+1
clc
adc #$20
sta _cmpaddr ; only hi byte
mwa #_DEST flashaddr
; sec
formatted_next
ldx BankNum
formatted_next2
_writeaddr equ *+1
lda $ffff
jsr flashwritebyte
jsr flashincaddr
inw _writeaddr
_cmpaddr equ * + 1
lda #$ff
cmp _writeaddr+1
bne formatted_next2
jsr flashend
jmp COMPARE_CRC16_DEST_ALL
FINISH_PROCESS
jsr print
dta $9b,'Finished',0
jmp *
rts
badcompare_counter dta 0,0
BADCOMPARE
ldy 53279
cpy #7
beq @+
pha
txa
pha
lda #'!'
jsr outchar
pla
jsr printhex
pla
jsr printhex
lda #':'
jsr outchar
mwa _csrc badcompare_tmp1
badcompare_tmp1 equ * +1
lda $ffff
jsr printhex
lda #'/'
jsr outchar
mwa _cdst badcompare_tmp2
badcompare_tmp2 equ * +1
lda $ffff
jsr printhex
jsr printnl
@ inw badcompare_counter
sec
jmp dmaon
; -------
icl '../../lib/flashwritelib.asx'
icl '../../lib/crc16_v2.asm'
;jsr print
;dta c'AlaMaKota.',$9b,0
;lda #$55
;jsr printhex
;lda #$aa
;jsr printhex
;jmp *
icl '../../lib/print2.asx'
org $2e2
dta a(STARTFLASHWRITE)
; ---------------------------------------
; blocks for every 8kb bank
.rept BANKS, #
.print "A :1"
.local block:1
;------------
org BankNum
dta b(:1)
dta b(1) ; Counter
;------------
org _SOURCE
BANKS_FILE(:1)
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
.endl
.endr
;------------
.if .def CUSTOM_CART_LAYOUT
CUSTOM_CART_LAYOUT
.endif
org $2e2
dta a(FINISH_PROCESS)
@@ -0,0 +1,46 @@
; Action!3.6: Copyright 1983 by Clinton W Parker.
; D500 A000 20 6c offset:$0000
; D503 A000 85 86 offset $1000
; D504 A000 20 dd offset $2000
; All: B000 36 01 offset $3000
;
.define TITLE dta c'BASICXE 4.1'
.define CARTSIZE dta c'>=128'
.define BANKS 0
.macro CUSTOM_CART_LAYOUT
;------------
org BankNum
dta b(0) ; $d500
dta b(1) ; Counter
;------------
org _SOURCE
ins "BASIC XE 4.1.rom",+$1000,$1000
ins "BASIC XE 4.1.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
org BankNum
dta b(1) ; d501
dta b(1) ; Counter
;------------
org _SOURCE
ins "BASIC XE 4.1.rom",+$3000,$1000
ins "BASIC XE 4.1.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
org BankNum
dta b(9) ; $d509
dta b(1) ; Counter
;------------
org _SOURCE
ins "BASIC XE 4.1.rom",+$2000,$1000
ins "BASIC XE 4.1.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
.endm
@@ -1,6 +0,0 @@
outfile=BASICXEflashwrite
cd `dirname $0`
mads flashwrite.asx -m:macroflashname.asx -o:"$outfile".xex
rm "$outfile".lst
@@ -1,378 +0,0 @@
; JatariCart256 Action!3.6 flasher
; by Jakub Husak , 04.01.2020
; All Rights Reserved.
;
; Action!3.6: Copyright 1983 by Clinton W Parker.
;
; JatariCart256 is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; JatariCart256 is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with JatariCart256. If not, see <http://www.gnu.org/licenses/>.
;
icl '../../lib/atari.hea'
; uncomment when flashing all cart or want to check all blocks written so far.
;.def compareall
BankNum equ $88
Counter equ $89
operation equ $8a
start equ 6 ; format chip and program
select equ 5 ; ferify and format sectors
option equ 3 ; verify
outchar equ $F2B0
memtop equ $2e5
dmactls equ $22f
_SOURCE equ $6000
_DEST equ $A000
; test code
org $2000
jsr $f420 ; clrscr
lda portb
cmp #$fd
beq @+
jsr print
dta c'Run with BASIC enabled and restart.',0
jmp *
@ lda #$1
sta 66
; waiting for cart to be inserted
jsr print
dta c'Insert cartridge...',0
@ lda $D013
lsr
bcc @-
jsr print
dta c' inserted.',$9b,0
; cart inserted, fake it was not changed
lda $d013
sta $3fa
;lda #$ff
;sta $d301
jsr print
dta c'Press:',$9b
dta c'START - format cart and programm',$9b
dta c'SELECT - verify; repair bad blocks.',$9b
dta c'OPTION - verify only',$9b,0
@ lda 53279
cmp #7
beq @-
sta operation
cmp #select
beq VERIFYREPAIR
cmp #option
beq CHECKONLY
; start
FORMAT
jsr print
dta c'Formatting cart ...',0
jsr flashformatchip
bcs formatfailed
jsr print
dta c'done:)',$9b,0
rts
formatfailed
jsr print
dta c'failed:(',$9b,'Waiting for reboot...',$9b,0
jmp *
VERIFYREPAIR
jsr print
dta c'Verify and ',0
CHECKONLY
jsr print
dta c'Compare.',$9b,0
rts
crcsums
:128 dta 0,0
CHECKINIT
mwa #_SOURCE _csrc
mwa #_DEST _cdst
sei
CHECK
mva #0 badcompare_counter
sta badcompare_counter+1
ldx BankNum
sta $d500,x
checkloop
_csrc equ * + 1
lda $6000 ; src
_cdst equ * + 1
cmp $A000 ; dst
beq @+
lda _csrc
ldx _csrc+1
jsr BADCOMPARE
@ inw _csrc
inw _cdst
lda _csrc+1
cmp #>_SOURCE+$20
bne checkloop
cpw #0 badcompare_counter
beq @+
sta $d580
lda $d013
sta $3fa
cli
jsr print
dta c'non-match byte#:',0
lda badcompare_counter+1
jsr printhex
lda badcompare_counter
jsr printhex
jsr printnl
sec
rts
@ sta $d580
lda $d013
sta $3fa
cli
lda #'o'
jsr outchar
@ clc
dmaon mva #34 dmactls
sta dmactl
rts
VERIFY
;mwa #_SOURCE _csrc
;mwa #_DEST _cdst
jsr CHECKINIT
bcc v_rts
lda #'f'
jsr outchar
ldx BankNum
lda #$a0
jsr flashformatsector
ldx BankNum
lda #$b0
jsr flashformatsector
jsr FORMATTED
dec Counter
bne VERIFY
v_rts jmp dmaon
COMPARE_CRC16_DEST_ALL
lda BankNum
sta _tbanknum
@ sei
_tbanknum equ * + 1
sta $D500
clc
mva _tbanknum calccrc_bank
jsr CALCCRC_DEST
jsr status_crc
.ifdef compareall
dec _tbanknum
bpl @-
.endif
sta $D580
lda $d013
sta $3fa
cli
rts
status_crc
php
jsr printBank_t
plp
php
sne
lda #'o'
plp
seq
lda #'!'
jsr outchar
lda #','
jmp outchar
CALCCRC_DEST
php
mwa #_DEST _tsrc
bne crccont
CALCCRC ; c=1 - write; c=0 - check
php
mwa #_SOURCE _tsrc
mwa #$2000 _tcnt
crccont mwa #$ffff crc16.crc
_tsrc equ * + 1
lda $ffff
jsr crc16.updCRC
inw _tsrc
dew _tcnt
bne _tsrc -1
calccrc_bank equ * +1
lda #$ba ; nk number
asl
tax
plp
bcc crccheck
mwa crc16.crc crcsums,x
rts
_tcnt :2 dta 0
crccheck
cpw crc16.crc crcsums,x
rts
printBank_t
lda _tbanknum
bpl @+
printBank
jsr printnl
lda BankNum
@ pha
lda #'B'
jsr outchar
pla
jsr printhex
lda #':'
jmp outchar
MAIN_PROCESS
;mva #0 dmactls
;sta dmactl
sec
mva BankNum calccrc_bank
jsr CALCCRC
mwa #_DEST flashaddr
jsr printBank
lda operation
cmp #select
jeq VERIFY
cmp #option
jeq CHECKINIT
FORMATTED
mwa #_SOURCE _writeaddr
lda _writeaddr+1
clc
adc #$20
sta _cmpaddr
mwa #_DEST flashaddr
sec
formatted_next
ldx BankNum
formatted_next2
_writeaddr equ *+1
lda $ffff
jsr flashwritebyte
jsr flashincaddr
inw _writeaddr
_cmpaddr equ * + 1
lda #$ff
cmp _writeaddr+1
bne formatted_next2
jmp COMPARE_CRC16_DEST_ALL
FINISH_PROCESS
jsr print
dta $9b,'Finished',0
jmp *
rts
badcompare_counter dta 0,0
BADCOMPARE
ldy 53279
cpy #7
beq @+
pha
txa
pha
lda #'!'
jsr outchar
pla
jsr printhex
pla
jsr printhex
lda #':'
jsr outchar
mwa _csrc badcompare_tmp1
badcompare_tmp1 equ * +1
lda $ffff
jsr printhex
lda #'/'
jsr outchar
mwa _cdst badcompare_tmp2
badcompare_tmp2 equ * +1
lda $ffff
jsr printhex
jsr printnl
@ inw badcompare_counter
sec
jmp dmaon
; -------
icl '../../lib/flashwritelib.asx'
icl '../../lib/crc16_v2.asm'
;jsr print
;dta c'AlaMaKota.',$9b,0
;lda #$55
;jsr printhex
;lda #$aa
;jsr printhex
;jmp *
icl '../../lib/print2.asx'
org $2e2
dta a($2000)
; ---------------------------------------
; D500 A000 20 6c offset:$0000
; D503 A000 85 86 offset $1000
; D504 A000 20 dd offset $2000
; All: B000 36 01 offset $3000
; blocks for every 8kb bank
;------------
org BankNum
dta b(0) ; $d500
dta b(1) ; Counter
;------------
org _SOURCE
ins "OSSBasicXL103.rom",+$1000,$1000
ins "OSSBasicXL103.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
org BankNum
dta b(1) ; d501
dta b(1) ; Counter
;------------
org _SOURCE
ins "OSSBasicXL103.rom",+$3000,$1000
ins "OSSBasicXL103.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
org BankNum
dta b(9) ; $d509
dta b(1) ; Counter
;------------
org _SOURCE
ins "OSSBasicXL103.rom",+$2000,$1000
ins "OSSBasicXL103.rom",+$0000,$1000
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
;------------
org $2e2
dta a(FINISH_PROCESS)
@@ -1,3 +0,0 @@
cd `dirname $0`
mads flashwrite.asx -o:BASICXLflashwrite.xex
@@ -1,358 +0,0 @@
; JatariCart256 flasher
; by Jakub Husak , 04.01.2020
; All Rights Reserved.
;
; JatariCart256 is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; JatariCart256 is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with JatariCart256. If not, see <http://www.gnu.org/licenses/>.
;
icl '../../lib/atari.hea'
; uncomment when flashing all cart or want to check all blocks written so far.
;.def compareall
BankNum equ $88
Counter equ $89
operation equ $8a
start equ 6 ; format chip and program
select equ 5 ; ferify and format sectors
option equ 3 ; verify
outchar equ $F2B0
memtop equ $2e5
dmactls equ $22f
_SOURCE equ $6000
_DEST equ $A000
; test code
org $2000
jsr $f420 ; clrscr
lda portb
cmp #$fd
beq @+
jsr print
dta c'Run with BASIC enabled and restart.',0
jmp *
@ lda #$1
sta 66
; waiting for cart to be inserted
jsr print
dta c'Insert cartridge...',0
@ lda $D013
lsr
bcc @-
jsr print
dta c' inserted.',$9b,0
; cart inserted, fake it was not changed
lda $d013
sta $3fa
;lda #$ff
;sta $d301
jsr print
dta c'Press:',$9b
dta c'START - format cart and programm',$9b
dta c'SELECT - verify; repair bad blocks.',$9b
dta c'OPTION - verify only',$9b,0
@ lda 53279
cmp #7
beq @-
sta operation
cmp #select
beq VERIFYREPAIR
cmp #option
beq CHECKONLY
; start
FORMAT
jsr print
dta c'Formatting cart ...',0
jsr flashformatchip
bcs formatfailed
jsr print
dta c'done:)',$9b,0
rts
formatfailed
jsr print
dta c'failed:(',$9b,'Waiting for reboot...',$9b,0
jmp *
VERIFYREPAIR
jsr print
dta c'Verify and ',0
CHECKONLY
jsr print
dta c'Compare.',$9b,0
rts
crcsums
:128 dta 0,0
CHECKINIT
mwa #_SOURCE _csrc
mwa #_DEST _cdst
sei
CHECK
mva #0 badcompare_counter
sta badcompare_counter+1
ldx BankNum
sta $d500,x
checkloop
_csrc equ * + 1
lda $6000 ; src
_cdst equ * + 1
cmp $A000 ; dst
beq @+
lda _csrc
ldx _csrc+1
jsr BADCOMPARE
@ inw _csrc
inw _cdst
lda _csrc+1
cmp #>_SOURCE+$20
bne checkloop
cpw #0 badcompare_counter
beq @+
sta $d580
lda $d013
sta $3fa
cli
jsr print
dta c'non-match byte#:',0
lda badcompare_counter+1
jsr printhex
lda badcompare_counter
jsr printhex
jsr printnl
sec
rts
@ sta $d580
lda $d013
sta $3fa
cli
lda #'o'
jsr outchar
@ clc
dmaon mva #34 dmactls
sta dmactl
rts
VERIFY
;mwa #_SOURCE _csrc
;mwa #_DEST _cdst
jsr CHECKINIT
bcc v_rts
lda #'f'
jsr outchar
ldx BankNum
lda #$a0
jsr flashformatsector
ldx BankNum
lda #$b0
jsr flashformatsector
jsr FORMATTED
dec Counter
bne VERIFY
v_rts jmp dmaon
COMPARE_CRC16_DEST_ALL
lda BankNum
sta _tbanknum
@ sei
_tbanknum equ * + 1
sta $D500
clc
mva _tbanknum calccrc_bank
jsr CALCCRC_DEST
jsr status_crc
.ifdef compareall
dec _tbanknum
bpl @-
.endif
sta $D580
lda $d013
sta $3fa
cli
rts
status_crc
php
jsr printBank_t
plp
php
sne
lda #'o'
plp
seq
lda #'!'
jsr outchar
lda #','
jmp outchar
CALCCRC_DEST
php
mwa #_DEST _tsrc
bne crccont
CALCCRC ; c=1 - write; c=0 - check
php
mwa #_SOURCE _tsrc
mwa #$2000 _tcnt
crccont mwa #$ffff crc16.crc
_tsrc equ * + 1
lda $ffff
jsr crc16.updCRC
inw _tsrc
dew _tcnt
bne _tsrc -1
calccrc_bank equ * +1
lda #$ba ; nk number
asl
tax
plp
bcc crccheck
mwa crc16.crc crcsums,x
rts
_tcnt :2 dta 0
crccheck
cpw crc16.crc crcsums,x
rts
printBank_t
lda _tbanknum
bpl @+
printBank
jsr printnl
lda BankNum
@ pha
lda #'B'
jsr outchar
pla
jsr printhex
lda #':'
jmp outchar
MAIN_PROCESS
;mva #0 dmactls
;sta dmactl
sec
mva BankNum calccrc_bank
jsr CALCCRC
mwa #_DEST flashaddr
jsr printBank
lda operation
cmp #select
jeq VERIFY
cmp #option
jeq CHECKINIT
FORMATTED
mwa #_SOURCE _writeaddr
lda _writeaddr+1
clc
adc #$20
sta _cmpaddr
mwa #_DEST flashaddr
sec
formatted_next
ldx BankNum
formatted_next2
_writeaddr equ *+1
lda $ffff
jsr flashwritebyte
jsr flashincaddr
inw _writeaddr
_cmpaddr equ * + 1
lda #$ff
cmp _writeaddr+1
bne formatted_next2
jmp COMPARE_CRC16_DEST_ALL
FINISH_PROCESS
jsr print
dta $9b,'Finished',0
jmp *
rts
badcompare_counter dta 0,0
BADCOMPARE
ldy 53279
cpy #7
beq @+
pha
txa
pha
lda #'!'
jsr outchar
pla
jsr printhex
pla
jsr printhex
lda #':'
jsr outchar
mwa _csrc badcompare_tmp1
badcompare_tmp1 equ * +1
lda $ffff
jsr printhex
lda #'/'
jsr outchar
mwa _cdst badcompare_tmp2
badcompare_tmp2 equ * +1
lda $ffff
jsr printhex
jsr printnl
@ inw badcompare_counter
sec
jmp dmaon
; -------
icl '../../lib/flashwritelib.asx'
icl '../../lib/crc16_v2.asm'
;jsr print
;dta c'AlaMaKota.',$9b,0
;lda #$55
;jsr printhex
;lda #$aa
;jsr printhex
;jmp *
icl '../../lib/print2.asx'
org $2e2
dta a($2000)
; ---------------------------------------
; code generator for bank by bank programming.
; .rept number of cartridge banks of 8kb; set this for 8kb banks number:
; 256kb flash - 32
; 128 kb flash - 16
; 8 kb flash - 1
;.rept 32, #
.rept 1, #
.print "A :1"
.local block:1
;------------
org BankNum
dta b(:1)
dta b(1) ; Counter
;------------
org _SOURCE
ins "missile.bin",+:1*8192,8192
;------------
org $2e2
dta a(MAIN_PROCESS)
;------------
.endl
.endr
;------------
org $2e2
dta a(FINISH_PROCESS)
Binary file not shown.
@@ -1,3 +0,0 @@
cd `dirname $0`
mads flashwrite.asx -o:flashwrite.xex
+9 -8
View File
@@ -1,9 +1,10 @@
Umieść ten plik na dysku, w pliku atr lub po prostu skopiuj i uruchom z sio2sd lub innego urządzenia, które pozwala na uruchomienie plików wykonywalnych. Uruchom komputer z wciśniętym OPTION. Wtedy albo:
Umieść plik z wybranego katalogu na dysku, w pliku atr lub po prostu skopiuj i uruchom z sio2sd lub innego urządzenia, które pozwala na uruchomienie plików wykonywalnych. Uruchom komputer z wciśniętym OPTION. Wtedy albo:
1. komputer się uruchomi i pozwoli wczytać flasher,
albo
2. uruchomi się kartridż.
W drugim przypadku, należy trzymając OPTION po kilka-kilkanaście razy kilka razy na sekundę wciskać klawisz RESET, aż zaziała tzw. błąd resetu i komputer zbootuje się na zimno i pozwoli wczytać flasher. Jeśli na kartridżu jest coś nagrane, to w zależności co, można:
W drugim przypadku, należy trzymając OPTION po kilka-kilkanaście razy kilka razy na sekundę wciskać klawisz RESET, aż zadziała tzw. błąd resetu i komputer zbootuje się na zimno i pozwoli wczytać flasher. Jeśli na kartridżu jest coś nagrane, to w zależności co, można:
* jeśli jest nagrane coś, co wyłącza kartridż, należy poczekać do tego momentu, następnie wcisnąć reset lub wykorzystać błąd reset.
* kartridże z językami programowania pozwalają systemowi bootować się, więc nie ma problemu
* jeśli jest nagrane coś, co kartridża nie wyłącza, należy próbować wykorzystać błąd reset, a w ostateczności, jak nijak nie idzie, włożyć dokładnie i poziomo stanowczym ruchem włożyć kartridż po uruchomieniu flashera, gdy prosi on o włożenie kartridża. Jednak grozi to uszkodzeniem komputera (mała szansa ale jednak).
* wykorzystać przejściówkę - rozgałęziacz kartridży, np. ten od toriego na 4 sztuki.
@@ -11,26 +12,25 @@ Gdy wszystko pójdzie dobrze, pojawi się menu:
Press:
START - format cart and programm
SELECT - verify; repair bad blocks.
OPTION - verify only
Wybierz START.
Po kilku popikiwaniach i przerwach flasher kończy pracę.
Po kilku(nastu,dziesięciu) popikiwaniach i przerwach flasher kończy pracę:
Finished.
__NIE PRZERYWAJ PRACY PODCZAS FLASHOWANIA!!! (tzn. gdy flasher nie odczytuje z dysku, a zapisuje do kartridża)__
Można to zrobić podczas czytania danych z pliku.
Aby wygenerować flasher (plik .xex) należy wejść do wybranego katalogu i wykonać ../makeflashwrite.sh
---------------------------------------------------------------------------------------------------------------------
EN:
Please put those file on disk, or on atr file or simply copy and run from sio2sd or another device which allows running executables.
Please put the file from chosen catalog on some disk, atr file or simply copy and run from sio2sd or another device which allows running executables.
Turn on your Atari with OPTION. Then one of two cases will occur:
1. computer boots up from device and runs flasher,
2. the cartridge will run.
@@ -43,14 +43,15 @@ When all is ok, the menu will appear:
Press:
START - format cart and programm
SELECT - verify; repair bad blocks.
OPTION - verify only
Choose your option (START will be good)
After some beeps and pauses the flasher finishes it's job.
After some beeps and pauses the flasher finishes it's job:
Finished.
__DO NOT BREAK THE JOB DURING FLASHING!!! (ie when flasher does not read from the disk, but writes to it)__
You are free to do it during read from device.
To generate flasher (.xex file) go to chosen catalog and run: ../makeflashwrite.sh