From d49f976072cfa1f7a1c6606ac10eef81ed801cb8 Mon Sep 17 00:00:00 2001 From: Jakub Husak Date: Sun, 31 May 2020 14:29:18 +0200 Subject: [PATCH] added new carts --- various_flashers/8kB_PILOT/Atari PILOT.rom | Bin 0 -> 8192 bytes .../8kB_PILOT/PILOTflashwrite.xex | Bin 0 -> 9855 bytes various_flashers/8kB_PILOT/flashwrite.asx | 348 ++++++++++++++++++ various_flashers/8kB_PILOT/makeflashwrite.sh | 2 + various_flashers/8kB_PILOT/readme | 1 + various_flashers/8kB_WSFN/WSFN.rom | Bin 0 -> 8192 bytes various_flashers/8kB_WSFN/WSFNflashwrite.xex | Bin 0 -> 9855 bytes various_flashers/8kB_WSFN/flashwrite.asx | 348 ++++++++++++++++++ various_flashers/8kB_WSFN/makeflashwrite.sh | 2 + various_flashers/8kB_WSFN/readme | 1 + 10 files changed, 702 insertions(+) create mode 100644 various_flashers/8kB_PILOT/Atari PILOT.rom create mode 100644 various_flashers/8kB_PILOT/PILOTflashwrite.xex create mode 100644 various_flashers/8kB_PILOT/flashwrite.asx create mode 100755 various_flashers/8kB_PILOT/makeflashwrite.sh create mode 100644 various_flashers/8kB_PILOT/readme create mode 100644 various_flashers/8kB_WSFN/WSFN.rom create mode 100644 various_flashers/8kB_WSFN/WSFNflashwrite.xex create mode 100644 various_flashers/8kB_WSFN/flashwrite.asx create mode 100755 various_flashers/8kB_WSFN/makeflashwrite.sh create mode 100644 various_flashers/8kB_WSFN/readme diff --git a/various_flashers/8kB_PILOT/Atari PILOT.rom b/various_flashers/8kB_PILOT/Atari PILOT.rom new file mode 100644 index 0000000000000000000000000000000000000000..2c18825d524d7c158b86fc67118163a158530efc GIT binary patch literal 8192 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. +; + 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 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 "Atari PILOT.rom" +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/8kB_PILOT/makeflashwrite.sh b/various_flashers/8kB_PILOT/makeflashwrite.sh new file mode 100755 index 0000000..a2616c3 --- /dev/null +++ b/various_flashers/8kB_PILOT/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:PILOTflashwrite.xex + diff --git a/various_flashers/8kB_PILOT/readme b/various_flashers/8kB_PILOT/readme new file mode 100644 index 0000000..eace5f9 --- /dev/null +++ b/various_flashers/8kB_PILOT/readme @@ -0,0 +1 @@ +https://atariwiki.org/wiki/attach/Pilot/Atari%20PILOT.rom diff --git a/various_flashers/8kB_WSFN/WSFN.rom b/various_flashers/8kB_WSFN/WSFN.rom new file mode 100644 index 0000000000000000000000000000000000000000..0edec83119472ac97b8473e8f08a527f423107df GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/various_flashers/8kB_WSFN/flashwrite.asx b/various_flashers/8kB_WSFN/flashwrite.asx new file mode 100644 index 0000000..15e3f01 --- /dev/null +++ b/various_flashers/8kB_WSFN/flashwrite.asx @@ -0,0 +1,348 @@ +; 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 . +; + 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 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 "WSFN.rom" +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/8kB_WSFN/makeflashwrite.sh b/various_flashers/8kB_WSFN/makeflashwrite.sh new file mode 100755 index 0000000..d01e394 --- /dev/null +++ b/various_flashers/8kB_WSFN/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:WSFNflashwrite.xex + diff --git a/various_flashers/8kB_WSFN/readme b/various_flashers/8kB_WSFN/readme new file mode 100644 index 0000000..a1b3050 --- /dev/null +++ b/various_flashers/8kB_WSFN/readme @@ -0,0 +1 @@ +https://atariwiki.org/wiki/attach/WSFN/WSFN.rom