diff --git a/flashwriteexample/atari.hea b/lib/atari.hea similarity index 100% rename from flashwriteexample/atari.hea rename to lib/atari.hea diff --git a/flashwriteexample/crc16_v2.asm b/lib/crc16_v2.asm similarity index 100% rename from flashwriteexample/crc16_v2.asm rename to lib/crc16_v2.asm diff --git a/flashwriteexample/flashwritelib.asx b/lib/flashwritelib.asx similarity index 100% rename from flashwriteexample/flashwritelib.asx rename to lib/flashwritelib.asx diff --git a/flashwriteexample/print2.asx b/lib/print2.asx similarity index 100% rename from flashwriteexample/print2.asx rename to lib/print2.asx diff --git a/various_flashers/034flasher_action_36_orig/action.bin b/various_flashers/034flasher_action_36_orig/action.bin new file mode 100644 index 0000000..fc6a917 Binary files /dev/null and b/various_flashers/034flasher_action_36_orig/action.bin differ diff --git a/various_flashers/034flasher_action_36_orig/action_128.rom b/various_flashers/034flasher_action_36_orig/action_128.rom new file mode 100644 index 0000000..d0ff779 Binary files /dev/null and b/various_flashers/034flasher_action_36_orig/action_128.rom differ diff --git a/various_flashers/034flasher_action_36_orig/flashwrite.asx b/various_flashers/034flasher_action_36_orig/flashwrite.asx new file mode 100644 index 0000000..3376b05 --- /dev/null +++ b/various_flashers/034flasher_action_36_orig/flashwrite.asx @@ -0,0 +1,358 @@ +; flash eeprom library +; by JHusak , 04.01.2020 +; free to use. + icl '../../lib/atari.hea' +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 + dec _tbanknum + bpl @- + 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 "action.bin",+0*$1000+$0,$1000 + ins "action.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(3) ; d503 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "action.bin",+1*$1000+$0,$1000 + ins "action.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(4) ; $d504 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "action.bin",+2*$1000+$0,$1000 + ins "action.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/034flasher_action_36_orig/flashwrite.xex b/various_flashers/034flasher_action_36_orig/flashwrite.xex new file mode 100644 index 0000000..f821d5f Binary files /dev/null and b/various_flashers/034flasher_action_36_orig/flashwrite.xex differ diff --git a/various_flashers/034flasher_action_36_orig/makeflashwrite.sh b/various_flashers/034flasher_action_36_orig/makeflashwrite.sh new file mode 100755 index 0000000..1854ca7 --- /dev/null +++ b/various_flashers/034flasher_action_36_orig/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:flashwrite.xex + diff --git a/various_flashers/034flasher_action_36_orig/makerom.sh b/various_flashers/034flasher_action_36_orig/makerom.sh new file mode 100755 index 0000000..fd229f3 --- /dev/null +++ b/various_flashers/034flasher_action_36_orig/makerom.sh @@ -0,0 +1,27 @@ +I=action.bin +O=action_128.rom +i=0 +z="" +while [[ $i -lt 512 ]]; do +z+=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +(( i = i + 1 )) +done +function out8k() { +echo "$z" | xxd -r -ps +} + +echo -n >$O +dd iseek=0 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +for t in 1 2 ; do out8k >>$O ; done + +dd iseek=1 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +dd iseek=2 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +for t in 1 2 3 1 2 3 4 5 6 7 8 ; do out8k >>$O ; done + + diff --git a/various_flashers/034flasher_action_36_orig/readme b/various_flashers/034flasher_action_36_orig/readme new file mode 100644 index 0000000..976e217 --- /dev/null +++ b/various_flashers/034flasher_action_36_orig/readme @@ -0,0 +1 @@ +http://atarionline.pl/utils/4.%20Programowanie/Action%21/Action%21%20v3.6%20%281984-01-17%29%28OSS%29%28US%29%5Ba%20034M%20mapping%5D.bin diff --git a/various_flashers/034flasher_mac65/flashwrite.asx b/various_flashers/034flasher_mac65/flashwrite.asx new file mode 100644 index 0000000..1a5687d --- /dev/null +++ b/various_flashers/034flasher_mac65/flashwrite.asx @@ -0,0 +1,358 @@ +; flash eeprom library +; by JHusak , 04.01.2020 +; free to use. + icl '../../lib/atari.hea' +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 + dec _tbanknum + bpl @- + 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 offset:$0000 +; D503 A000 offset $1000 +; D504 A000 offset $2000 +; All: B000 offset $3000 +; blocks for every 8kb bank +;------------ + org BankNum + dta b(0) ; $d500 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "mac65.bin",+0*$1000+$0,$1000 + ins "mac65.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(3) ; d503 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "mac65.bin",+1*$1000+$0,$1000 + ins "mac65.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(4) ; $d504 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "mac65.bin",+2*$1000+$0,$1000 + ins "mac65.bin",+$3000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/034flasher_mac65/flashwrite.xex b/various_flashers/034flasher_mac65/flashwrite.xex new file mode 100644 index 0000000..0a5ba94 Binary files /dev/null and b/various_flashers/034flasher_mac65/flashwrite.xex differ diff --git a/various_flashers/034flasher_mac65/mac65.bin b/various_flashers/034flasher_mac65/mac65.bin new file mode 100644 index 0000000..95b0973 Binary files /dev/null and b/various_flashers/034flasher_mac65/mac65.bin differ diff --git a/various_flashers/034flasher_mac65/mac65_128.rom b/various_flashers/034flasher_mac65/mac65_128.rom new file mode 100644 index 0000000..617fd83 Binary files /dev/null and b/various_flashers/034flasher_mac65/mac65_128.rom differ diff --git a/various_flashers/034flasher_mac65/makeflashwrite.sh b/various_flashers/034flasher_mac65/makeflashwrite.sh new file mode 100755 index 0000000..1854ca7 --- /dev/null +++ b/various_flashers/034flasher_mac65/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:flashwrite.xex + diff --git a/various_flashers/034flasher_mac65/makerom.sh b/various_flashers/034flasher_mac65/makerom.sh new file mode 100755 index 0000000..6c62246 --- /dev/null +++ b/various_flashers/034flasher_mac65/makerom.sh @@ -0,0 +1,27 @@ +I=mac65.bin +O=mac65_128.rom +i=0 +z="" +while [[ $i -lt 512 ]]; do +z+=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +(( i = i + 1 )) +done +function out8k() { +echo "$z" | xxd -r -ps +} + +echo -n >$O +dd iseek=0 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +for t in 1 2 ; do out8k >>$O ; done + +dd iseek=1 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +dd iseek=2 if=$I of=/dev/stdout bs=4096 count=1 >>$O +dd iseek=3 if=$I of=/dev/stdout bs=4096 count=1 >>$O + +for t in 1 2 3 1 2 3 4 5 6 7 8 ; do out8k >>$O ; done + + diff --git a/various_flashers/034flasher_mac65/readme b/various_flashers/034flasher_mac65/readme new file mode 100644 index 0000000..887617d --- /dev/null +++ b/various_flashers/034flasher_mac65/readme @@ -0,0 +1 @@ +https://atariwiki.org/wiki/attach/Mac65/MAC-65-Version%201.02.rom diff --git a/flashwriteexample/flashwrite.asx b/various_flashers/flashwriteexample/flashwrite.asx similarity index 97% rename from flashwriteexample/flashwrite.asx rename to various_flashers/flashwriteexample/flashwrite.asx index c3a47fe..af863d7 100644 --- a/flashwriteexample/flashwrite.asx +++ b/various_flashers/flashwriteexample/flashwrite.asx @@ -1,7 +1,7 @@ ; flash eeprom library ; by JHusak , 04.01.2020 ; free to use. - icl 'atari.hea' + icl '../../lib/atari.hea' BankNum equ $88 Counter equ $89 operation equ $8a @@ -298,9 +298,9 @@ badcompare_tmp2 equ * +1 sec jmp dmaon ; ------- - icl 'flashwritelib.asx' + icl '../../lib/flashwritelib.asx' - icl 'crc16_v2.asm' + icl '../../lib/crc16_v2.asm' ;jsr print ;dta c'AlaMaKota.',$9b,0 @@ -309,7 +309,7 @@ badcompare_tmp2 equ * +1 ;lda #$aa ;jsr printhex ;jmp * - icl 'print2.asx' + icl '../../lib/print2.asx' org $2e2 dta a($2000) ; --------------------------------------- diff --git a/flashwriteexample/flashwrite.xex b/various_flashers/flashwriteexample/flashwrite.xex similarity index 100% rename from flashwriteexample/flashwrite.xex rename to various_flashers/flashwriteexample/flashwrite.xex diff --git a/various_flashers/flashwriteexample/makeflashwrite.sh b/various_flashers/flashwriteexample/makeflashwrite.sh new file mode 100755 index 0000000..1854ca7 --- /dev/null +++ b/various_flashers/flashwriteexample/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:flashwrite.xex + diff --git a/flashwriteexample/missile.bin b/various_flashers/flashwriteexample/missile.bin similarity index 100% rename from flashwriteexample/missile.bin rename to various_flashers/flashwriteexample/missile.bin