From 466c8ea4dc426cee173796394df4e0acd4c716cf Mon Sep 17 00:00:00 2001 From: Jakub Husak Date: Sun, 31 May 2020 15:40:34 +0200 Subject: [PATCH] added new flashers and renamed some --- .../ACTION36flashwrite.xex} | Bin 26282 -> 26277 bytes .../action.bin | Bin .../action_128.rom | Bin .../flashwrite.asx | 0 .../034M_Action36ACS_orig/makeflashwrite.sh | 2 + .../makerom.sh | 0 .../readme | 0 .../MAC65DDTflashwrite.xex} | Bin 26282 -> 26277 bytes .../flashwrite.asx | 0 .../mac65.bin | Bin .../mac65_128.rom | Bin .../034M_Mac65_DDT/makeflashwrite.sh | 2 + .../makerom.sh | 0 .../readme | 0 .../makeflashwrite.sh | 2 - .../034flasher_mac65/makeflashwrite.sh | 2 - .../8kB_PILOT/PILOTflashwrite.xex | Bin 9855 -> 9861 bytes various_flashers/8kB_PILOT/flashwrite.asx | 4 + various_flashers/8kB_WSFN/WSFNflashwrite.xex | Bin 9855 -> 9861 bytes various_flashers/8kB_WSFN/flashwrite.asx | 4 + .../M091_BASICXE41/BASIC XE 4.1.rom | Bin 0 -> 16384 bytes .../M091_BASICXE41/BASICXEflashwrite.xex | Bin 0 -> 26277 bytes .../M091_BASICXE41/flashwrite.asx | 378 ++++++++++++++++++ .../M091_BASICXE41/makeflashwrite.sh | 2 + various_flashers/M091_BASICXE41/readme | 1 + .../M091_OSSBasicXL103/BASICXLflashwrite.xex | Bin 0 -> 26277 bytes .../M091_OSSBasicXL103/OSSBasicXL103.rom | Bin 0 -> 16384 bytes .../M091_OSSBasicXL103/flashwrite.asx | 378 ++++++++++++++++++ .../M091_OSSBasicXL103/makeflashwrite.sh | 2 + various_flashers/M091_OSSBasicXL103/readme | 1 + .../flashwriteexample/flashwrite.xex | Bin 9866 -> 0 bytes 31 files changed, 774 insertions(+), 4 deletions(-) rename various_flashers/{034flasher_action_36_orig/flashwrite.xex => 034M_Action36ACS_orig/ACTION36flashwrite.xex} (94%) rename various_flashers/{034flasher_action_36_orig => 034M_Action36ACS_orig}/action.bin (100%) rename various_flashers/{034flasher_action_36_orig => 034M_Action36ACS_orig}/action_128.rom (100%) rename various_flashers/{034flasher_action_36_orig => 034M_Action36ACS_orig}/flashwrite.asx (100%) create mode 100755 various_flashers/034M_Action36ACS_orig/makeflashwrite.sh rename various_flashers/{034flasher_action_36_orig => 034M_Action36ACS_orig}/makerom.sh (100%) rename various_flashers/{034flasher_action_36_orig => 034M_Action36ACS_orig}/readme (100%) rename various_flashers/{034flasher_mac65/flashwrite.xex => 034M_Mac65_DDT/MAC65DDTflashwrite.xex} (94%) rename various_flashers/{034flasher_mac65 => 034M_Mac65_DDT}/flashwrite.asx (100%) rename various_flashers/{034flasher_mac65 => 034M_Mac65_DDT}/mac65.bin (100%) rename various_flashers/{034flasher_mac65 => 034M_Mac65_DDT}/mac65_128.rom (100%) create mode 100755 various_flashers/034M_Mac65_DDT/makeflashwrite.sh rename various_flashers/{034flasher_mac65 => 034M_Mac65_DDT}/makerom.sh (100%) rename various_flashers/{034flasher_mac65 => 034M_Mac65_DDT}/readme (100%) delete mode 100755 various_flashers/034flasher_action_36_orig/makeflashwrite.sh delete mode 100755 various_flashers/034flasher_mac65/makeflashwrite.sh create mode 100644 various_flashers/M091_BASICXE41/BASIC XE 4.1.rom create mode 100644 various_flashers/M091_BASICXE41/BASICXEflashwrite.xex create mode 100644 various_flashers/M091_BASICXE41/flashwrite.asx create mode 100755 various_flashers/M091_BASICXE41/makeflashwrite.sh create mode 100644 various_flashers/M091_BASICXE41/readme create mode 100644 various_flashers/M091_OSSBasicXL103/BASICXLflashwrite.xex create mode 100644 various_flashers/M091_OSSBasicXL103/OSSBasicXL103.rom create mode 100644 various_flashers/M091_OSSBasicXL103/flashwrite.asx create mode 100755 various_flashers/M091_OSSBasicXL103/makeflashwrite.sh create mode 100644 various_flashers/M091_OSSBasicXL103/readme delete mode 100644 various_flashers/flashwriteexample/flashwrite.xex diff --git a/various_flashers/034flasher_action_36_orig/flashwrite.xex b/various_flashers/034M_Action36ACS_orig/ACTION36flashwrite.xex similarity index 94% rename from various_flashers/034flasher_action_36_orig/flashwrite.xex rename to various_flashers/034M_Action36ACS_orig/ACTION36flashwrite.xex index f821d5f00fa95dfeb656026dc9602ce2ea445cab..d7d75a6cdad75981498f6cf8cb6136c6bb234c49 100644 GIT binary patch delta 951 zcmYLHO=weD6uwD}##XfY=nzoo>AOErp{>J^Hd7VUMGP8Oq80|rYi(v4(4?e6(^WeR zLabh~WEsVWHp(qN4HR+XLMX^&k#a!-gD{IK&gd{aLg_+8d7fv5zQsB3oO93jedpY} z*a%b`fjyo_U`zn4JAqgAFRlGx%kLVCQfLL5WOPa!PlFZUQC zk;`8iEfg}@-{8V%z5soFeFUDf+72+pcrKeB>ZuS5jPmXP?=ZyKbUyRzG>m4)fq=1; z2(Z9RjL8A^pmc{c9bz?z-P-Qt%*T@^3^F%o>X18Wx_RGEna-qHpVfaU(imVmj4sAn z{c^UsA!!&Xv$bWohW7CB+9U{&EgG0iJ`4&b*+}b>@a!^}~mOliegX<_j)nJ{$ z2m11wUQN9PA8Rf6cQBr>1MYTfyMISQ1noaDqBuc-5F6tVqjr_e-)}g z-lodCI(zkZ$MfJH?&hdJ4s|N%S8mglN_jrCe`Z8fOG$MM#Y~_`HI%BY#gQE;Py0X% z9Pz6hp3v%CJ*-2i|IK;`UCP8_8$-T!=CreD2IOA0c|QK2tOL7Q6vu6nV;Lo{gwj~yD##h)8>bdBOFTz z*rB|?iLH0O*B{*&pDF1zc*dg^nz-d7+6}O|-ir4)9JNqUF}i_jOU&c;?s7Y z+D^I*W*LNMaDsQpvjeF+7m83aiwPHGpqmn`6gA3Y2wiAsc|9)?au@e-zH`ra zzH`p4wqzK} z6F|UR9f`0=#bz?amaDf($0JUgxZML@!MZVEALQ% zYQj4PKK=a{{Vem`s#j$%ElbidyL6;5=c>Npar zk2B4!9z|q{Dpy{ky7#@~po6eW705eO1vh4H{Okn*yypJl62<4AuWvBpMdl%&KgeZ*m+`A$3_j%xsqzw0Bnb;F z#E$bYgzo)=979NGsNhfH>O(K}Ti@oDs@{T!+;s3tIw7OmhC0{#akrzU zgNn-LE~_gM$LZbWZd^y*?dqof*Yyx{&*A0Y#T?{NfirMgKidhQ+aeB`yT@gt;rNPU z(+%#-D?W!Nz4Lo&PvRGCAtrM~_6wYwKH&9>v?oN`!Rh%zU{1f#e>-qq$c&gpPzAXE h^p|+x+ttzi93pG0KZ!(W=0_6Hvqt}lK93Ht{{bjfjrRZm diff --git a/various_flashers/034flasher_action_36_orig/action.bin b/various_flashers/034M_Action36ACS_orig/action.bin similarity index 100% rename from various_flashers/034flasher_action_36_orig/action.bin rename to various_flashers/034M_Action36ACS_orig/action.bin diff --git a/various_flashers/034flasher_action_36_orig/action_128.rom b/various_flashers/034M_Action36ACS_orig/action_128.rom similarity index 100% rename from various_flashers/034flasher_action_36_orig/action_128.rom rename to various_flashers/034M_Action36ACS_orig/action_128.rom diff --git a/various_flashers/034flasher_action_36_orig/flashwrite.asx b/various_flashers/034M_Action36ACS_orig/flashwrite.asx similarity index 100% rename from various_flashers/034flasher_action_36_orig/flashwrite.asx rename to various_flashers/034M_Action36ACS_orig/flashwrite.asx diff --git a/various_flashers/034M_Action36ACS_orig/makeflashwrite.sh b/various_flashers/034M_Action36ACS_orig/makeflashwrite.sh new file mode 100755 index 0000000..db4f41e --- /dev/null +++ b/various_flashers/034M_Action36ACS_orig/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:ACTION36flashwrite.xex + diff --git a/various_flashers/034flasher_action_36_orig/makerom.sh b/various_flashers/034M_Action36ACS_orig/makerom.sh similarity index 100% rename from various_flashers/034flasher_action_36_orig/makerom.sh rename to various_flashers/034M_Action36ACS_orig/makerom.sh diff --git a/various_flashers/034flasher_action_36_orig/readme b/various_flashers/034M_Action36ACS_orig/readme similarity index 100% rename from various_flashers/034flasher_action_36_orig/readme rename to various_flashers/034M_Action36ACS_orig/readme diff --git a/various_flashers/034flasher_mac65/flashwrite.xex b/various_flashers/034M_Mac65_DDT/MAC65DDTflashwrite.xex similarity index 94% rename from various_flashers/034flasher_mac65/flashwrite.xex rename to various_flashers/034M_Mac65_DDT/MAC65DDTflashwrite.xex index 0a5ba948de55c5e707bb7016582bba23c05ba076..bb5f207e5376e1a94e8adfdc324b6f8af9811dad 100644 GIT binary patch delta 951 zcmYLHO=weD6uwD}##XfY=nzoo>AOErp{>J^Hd7VUMGP8Oq80|rYi(v4(4?e6(^WeR zLabh~WEsVWHp(qN4HR+XLMX^&k#a!-gD{IK&gd{aLg_+8d7fv5zQsB3oO93jedpY} z*a%b`fjyo_U`zn4JAqgAFRlGx%kLVCQfLL5WOPa!PlFZUQC zk;`8iEfg}@-{8V%z5soFeFUDf+72+pcrKeB>ZuS5jPmXP?=ZyKbUyRzG>m4)fq=1; z2(Z9RjL8A^pmc{c9bz?z-P-Qt%*T@^3^F%o>X18Wx_RGEna-qHpVfaU(imVmj4sAn z{c^UsA!!&Xv$bWohW7CB+9U{&EgG0iJ`4&b*+}b>@a!^}~mOliegX<_j)nJ{$ z2m11wUQN9PA8Rf6cQBr>1MYTfyMISQ1noaDqBuc-5F6tVqjr_e-)}g z-lodCI(zkZ$MfJH?&hdJ4s|N%S8mglN_jrCe`Z8fOG$MM#Y~_`HI%BY#gQE;Py0X% z9Pz6hp3v%CJ*-2i|IK;`UCP8_8$-T!=CreD2IOA0c|QK2tOL7Q6vu6nV;Lo{gwj~yD##h)8>bdBOFTz z*rB|?iLH0O*B{*&pDF1zc*dg^nz-d7+6}O|-ir4)9JNqUF}i_jOU&c;?s7Y z+D^I*W*LNMaDsQpvjeF+7m83aiwPHGpqmn`6gA3Y2wiAsc|9)?au@e-zH`ra zzH`p4wqzK} z6F|UR9f`0=#bz?amaDf($0JUgxZML@!MZVEALQ% zYQj4PKK=a{{Vem`s#j$%ElbidyL6;5=c>Npar zk2B4!9z|q{Dpy{ky7#@~po6eW705eO1vh4H{Okn*yypJl62<4AuWvBpMdl%&KgeZ*m+`A$3_j%xsqzw0Bnb;F z#E$bYgzo)=979NGsNhfH>O(K}Ti@oDs@{T!+;s3tIw7OmhC0{#akrzU zgNn-LE~_gM$LZbWZd^y*?dqof*Yyx{&*A0Y#T?{NfirMgKidhQ+aeB`yT@gt;rNPU z(+%#-D?W!Nz4Lo&PvRGCAtrM~_6wYwKH&9>v?oN`!Rh%zU{1f#e>-qq$c&gpPzAXE h^p|+x+ttzi93pG0KZ!(W=0_6Hvqt}lK93Ht{{bjfjrRZm diff --git a/various_flashers/034flasher_mac65/flashwrite.asx b/various_flashers/034M_Mac65_DDT/flashwrite.asx similarity index 100% rename from various_flashers/034flasher_mac65/flashwrite.asx rename to various_flashers/034M_Mac65_DDT/flashwrite.asx diff --git a/various_flashers/034flasher_mac65/mac65.bin b/various_flashers/034M_Mac65_DDT/mac65.bin similarity index 100% rename from various_flashers/034flasher_mac65/mac65.bin rename to various_flashers/034M_Mac65_DDT/mac65.bin diff --git a/various_flashers/034flasher_mac65/mac65_128.rom b/various_flashers/034M_Mac65_DDT/mac65_128.rom similarity index 100% rename from various_flashers/034flasher_mac65/mac65_128.rom rename to various_flashers/034M_Mac65_DDT/mac65_128.rom diff --git a/various_flashers/034M_Mac65_DDT/makeflashwrite.sh b/various_flashers/034M_Mac65_DDT/makeflashwrite.sh new file mode 100755 index 0000000..f2942ff --- /dev/null +++ b/various_flashers/034M_Mac65_DDT/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:MAC65DDTflashwrite.xex + diff --git a/various_flashers/034flasher_mac65/makerom.sh b/various_flashers/034M_Mac65_DDT/makerom.sh similarity index 100% rename from various_flashers/034flasher_mac65/makerom.sh rename to various_flashers/034M_Mac65_DDT/makerom.sh diff --git a/various_flashers/034flasher_mac65/readme b/various_flashers/034M_Mac65_DDT/readme similarity index 100% rename from various_flashers/034flasher_mac65/readme rename to various_flashers/034M_Mac65_DDT/readme diff --git a/various_flashers/034flasher_action_36_orig/makeflashwrite.sh b/various_flashers/034flasher_action_36_orig/makeflashwrite.sh deleted file mode 100755 index 1854ca7..0000000 --- a/various_flashers/034flasher_action_36_orig/makeflashwrite.sh +++ /dev/null @@ -1,2 +0,0 @@ -mads flashwrite.asx -o:flashwrite.xex - diff --git a/various_flashers/034flasher_mac65/makeflashwrite.sh b/various_flashers/034flasher_mac65/makeflashwrite.sh deleted file mode 100755 index 1854ca7..0000000 --- a/various_flashers/034flasher_mac65/makeflashwrite.sh +++ /dev/null @@ -1,2 +0,0 @@ -mads flashwrite.asx -o:flashwrite.xex - diff --git a/various_flashers/8kB_PILOT/PILOTflashwrite.xex b/various_flashers/8kB_PILOT/PILOTflashwrite.xex index 1b4e43b5b68313160571a2b479651d03aa950fb6..d151c84b690fe718e0f726b2428216c496246f72 100644 GIT binary patch delta 16 XcmezG)9SmSR*mDZ@*}3lOe!h>KW7GT delta 10 RcmZqm{qM7(R*gwT1ppbC1G@kK diff --git a/various_flashers/8kB_PILOT/flashwrite.asx b/various_flashers/8kB_PILOT/flashwrite.asx index e4a5978..1381cbb 100644 --- a/various_flashers/8kB_PILOT/flashwrite.asx +++ b/various_flashers/8kB_PILOT/flashwrite.asx @@ -343,6 +343,10 @@ badcompare_tmp2 equ * +1 ;------------ org _SOURCE ins "Atari PILOT.rom" + +;------------ + org $2e2 + dta a(MAIN_PROCESS) ;------------ org $2e2 dta a(FINISH_PROCESS) diff --git a/various_flashers/8kB_WSFN/WSFNflashwrite.xex b/various_flashers/8kB_WSFN/WSFNflashwrite.xex index c86642ee6f912d1470ed7521aa4258c996509da2..01fd33327d6650687dfa093a2bd52ef4cf666d19 100644 GIT binary patch delta 16 XcmezG)9SmSR*mDZ@*}3lOe!h>KW7GT delta 10 RcmZqm{qM7(R*gwT1ppbC1G@kK diff --git a/various_flashers/8kB_WSFN/flashwrite.asx b/various_flashers/8kB_WSFN/flashwrite.asx index 15e3f01..6feaaa0 100644 --- a/various_flashers/8kB_WSFN/flashwrite.asx +++ b/various_flashers/8kB_WSFN/flashwrite.asx @@ -343,6 +343,10 @@ badcompare_tmp2 equ * +1 ;------------ org _SOURCE ins "WSFN.rom" + +;------------ + org $2e2 + dta a(MAIN_PROCESS) ;------------ org $2e2 dta a(FINISH_PROCESS) diff --git a/various_flashers/M091_BASICXE41/BASIC XE 4.1.rom b/various_flashers/M091_BASICXE41/BASIC XE 4.1.rom new file mode 100644 index 0000000000000000000000000000000000000000..5f950563dd1d266351301961a2980d16944beef8 GIT binary patch literal 16384 zcmd^meOy#k{{Nl1GccgSpl0-ZG-}1ro%(J?Z4Z)CLtViDTieH58#V5acH6$Y``w3j zp_)rHiVZ1-Yv?e{W$qmr7*s$|;HH2xRCdJy6jP~W!qU8=;L|3*_Ze(=zu(vQzu%v~ zQO-U0-1G1`pYu7N^EsafQrYDHKoM%l#BRA*NFv)>%T6i&9!34J`xUaS$;GbOqsYw0 zHn!A!SvFKX$;#VYm&jk6*7hitJLT9id^HH?(exbob(3ZGH^l}u(f_(3bW}Bw5<|2P zt|(BbSDYsQ1e>arO|ZPbUr}R(b)rdqkz8ygF9t|mvzsaDEm_z5ce2a{Py}~O2U!(( zyrce0echSP9B(xr4mgO5SRvb7T66t_=g!1B5r%9#Jr0uoFPYKNI$le>5ZKVj9nF zWIhaS(vnh(LeDv4LVpS9Q-4u@E~rMxl_rfXG$_KDP%W$%whIBFQM3zwQ4s3Mj}+qG z7FjR$rxpvfc=L?erN(oiO=@gPt)-VM+9s|Sypi?zBGjP z>yhkZZnnfbTC!fgA5A@Dt;~m!F$_OOJ6iAYmKURJvKJF$x&PDX(u?cMi>1=W;*G_I zO7#NSxI<)=u=s<+5--a@o5!PuJ0K|6#ab?@deV`qD7;_a{Zbb)4;+Pd>Hm5-t3m9ZY zSV#7BdipJ&iedY4;TWCmaiO1kzM4p_+-LxFb5)NlxuFHC?@lK5&9aV5-n#U`$1?J= zmaNQNl#`dYDW$_4gU{U0>SV_55yW)SS>Tbx@&fVWh~7C}js0ju?=)&GS<{S9ZwwvY39BsySFz0|9Y@g%0*rEhcy)j|J&qTOuw z%0D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 BzR3Up literal 0 HcmV?d00001 diff --git a/various_flashers/M091_BASICXE41/BASICXEflashwrite.xex b/various_flashers/M091_BASICXE41/BASICXEflashwrite.xex new file mode 100644 index 0000000000000000000000000000000000000000..fca4c3a48fb03bf4e41270ef6178a78cde4bf3bd GIT binary patch literal 26277 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 MHRJXGG)zwZ-(7#2<^TWy literal 0 HcmV?d00001 diff --git a/various_flashers/M091_BASICXE41/flashwrite.asx b/various_flashers/M091_BASICXE41/flashwrite.asx new file mode 100644 index 0000000..fabf361 --- /dev/null +++ b/various_flashers/M091_BASICXE41/flashwrite.asx @@ -0,0 +1,378 @@ +; 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 . +; + 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 "BASIC XE 4.1.rom",0,$1000 + ins "BASIC XE 4.1.rom",+1*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(9) ; d501 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "BASIC XE 4.1.rom",0,$1000 + ins "BASIC XE 4.1.rom",+2*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(1) ; $d509 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "BASIC XE 4.1.rom",0,$1000 + ins "BASIC XE 4.1.rom",+3*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/M091_BASICXE41/makeflashwrite.sh b/various_flashers/M091_BASICXE41/makeflashwrite.sh new file mode 100755 index 0000000..9e2d0a8 --- /dev/null +++ b/various_flashers/M091_BASICXE41/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:BASICXEflashwrite.xex + diff --git a/various_flashers/M091_BASICXE41/readme b/various_flashers/M091_BASICXE41/readme new file mode 100644 index 0000000..9531efb --- /dev/null +++ b/various_flashers/M091_BASICXE41/readme @@ -0,0 +1 @@ +https://atariwiki.org/wiki/attach/Basic%20XE/BASIC%20XE%204.1.rom diff --git a/various_flashers/M091_OSSBasicXL103/BASICXLflashwrite.xex b/various_flashers/M091_OSSBasicXL103/BASICXLflashwrite.xex new file mode 100644 index 0000000000000000000000000000000000000000..ba4e8278f03353fa958defc7c8108bcdc6c71884 GIT binary patch literal 26277 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

y#o6rd4oCpbyi-RUkw_VNQ=T? zmKAHSlY@9 z&_{splsYAfPu{OSByMhs;f&&P@7G|h>^`X8DGziXQg4CrGb|sY1Cunkp=N*v`6O~j zkb8>u%MrRC2R!kPCZZ1zKA>D8!KTI=)N~FCettW4f41ZwX|>_WCHjq*=U|C5ImXt; z5@G5af_k^>9kX2WJDuQ_-}s$g*oSAoiK@V!{o+6wsM4?3_4N(C=|4j9o5?~vIROxx z2Ei761_gjg0XY9h-*!fM>ndUIbW3V. +; + 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",0,$1000 + ins "OSSBasicXL103.rom",+1*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(9) ; d501 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "OSSBasicXL103.rom",0,$1000 + ins "OSSBasicXL103.rom",+2*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(1) ; $d509 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "OSSBasicXL103.rom",0,$1000 + ins "OSSBasicXL103.rom",+3*$1000+$0,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/M091_OSSBasicXL103/makeflashwrite.sh b/various_flashers/M091_OSSBasicXL103/makeflashwrite.sh new file mode 100755 index 0000000..7592320 --- /dev/null +++ b/various_flashers/M091_OSSBasicXL103/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:BASICXLflashwrite.xex + diff --git a/various_flashers/M091_OSSBasicXL103/readme b/various_flashers/M091_OSSBasicXL103/readme new file mode 100644 index 0000000..976e217 --- /dev/null +++ b/various_flashers/M091_OSSBasicXL103/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/flashwriteexample/flashwrite.xex b/various_flashers/flashwriteexample/flashwrite.xex deleted file mode 100644 index 003dcf0a7704f0e3c67a0388c93afedac841bd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9866 zcmeG?k9!kUwl|ZRG))T`=yr{)KZdrcEeJ$m-3Y7&6<^7VEB;*8^?e(VVB=HD7JQ3- z>u%9ZYy-jYNid;A#~~AQBY}Vxj1Vka&DR7!-nnTJec$fB zKVVIhnR|ZBIp>~p?z!gbt+1f$u|E* zAabq()wyJ98$tRmY5}HU3icuZZ)<#f`JyH#kR9k>{DYCNu>w1M%PU~i zRDlKGii%Y*oLS|YRTXUsqaz9A=thE4oM^1rw!DIyT{X~HA!`SgR}3_f`-+Oh@``M; z{60qAv#MkUZZoTtX};zoBPp~H{JpGk*%U~cha0%XPp))U&P0h>RovX_#7uJK9}L@KV4YxFXO8*3B_PXu}RdVBJm9;Ujo5@!8GrCdG= zH~;{&P>DI;E0tK~oB7oVRpri@2Ub?XjGw4X2yj32O64KApTch$;x+y;QghfoQCc0o zb0XxFwEFm+6Jr8`zx zIe(RpI)Yi>{q0!wiDvHCW(DDEeJ83``K~=8B7p;U%rs+_vzn94p%Yc?NA|tubz{sv zqj?o1CD6DV&Hh=dM1&EMMsO3&Q9DOISs(zIg}SmfX759^6^?xE^}-dFSIc+lC(w}#OejGSKH8`g{wP@i{wYnK$T@taI83Wj`Vbc3{sZ%co% z2cW)88~X)TVU!86eVz^OP$p=(MhaO^b)M?vL(xw6rbuWKi}l^iO3x|=k;W)I3m7h9B(?@npZryBQ`ldelP}^@{$s4;&+~bcbkynL zk4he!$$5-F#@+FT)S?Vw|2Jx`10h7qMX?#{xJ~U6uUsLWjnCJ_(!;4Zz6yw`p_KSJ zkZ?1mu?9o;!1!q;rav`(wMLC}q;1T*@oJxFv-V zu-K<>2Wq*9B)3dO&!*i}eBMjumpm`ol3M#6aY<5WsaqZgjjsMMzE-FeX;1+Kp(w>L z3f;n3( zBO@tp?YG2mJo*|~CB0^H(J_qp7(q`FO>$L1ni-_Er?}fwUI=#_^qrv7FVK*Pv2-)- zqWJCZB=_E%(Lm0kwKvAGA4C`PYXz+dk9EEhcL&lZXyv*TBGz&sJ%ousF85|T2AOGw zv3`Am2AL45M|Vd8sl5nnSidHhiv(KO{bG^yio)bDfiuG`7I;xr>kc z${9Wei(SLzcS&)dMuu5#mEPyOqyf1YHwr679Z4QOAsvLsJ(2*;MWCma9A`h>8aV*B zUnL-TW+|u8nH+ny6wm(He?@kGvdr3leH`og92~j>h4{#3v4~8+B;7`5O@2B%!_VZ{ zPc5_SL200U2j2;9h&S-tJPG%UTz0oN60nRt+KJ#)c6-Xce`^bSE)wVpbs~3wyX(!& zi}DAc8;r>c$sY+t`#>^tbQ`T0Ti8L!Y(2jXWB?;DMPCIwVGg2lf$+bSJSS3n%Na$N zW6uMbPY8PVHhf~lJ(%(Y`iMIc(EtPmQk2+odLScaUX2CVE~g5z$I z{%mq?<+u8$MB@^+6!qo1l1A`L-s0D4FE zk*5#R;e&LNK)~7w8J;!x7i8~F+9Auclz(0}l$JC{IoMU^IqJ0~OQOg6@&*8r z=a~2)=(5*g?(TNb_73IiqVU7uz`guh(IS{eTvP*ybOEt&1W_WeBYSE&3@Ea>>i7WE z-;L5n{zdSc023>nW&-klJcB&( zE(PW6MJO(TQBmd>fwdqdAb)bli^;!&sbJ?YUnZ5wL%59JKtx_^a$U{g65%Jrj z8zA*XmOHvLvw`guRT$V$#2nsw>9hGN|5>8=a5f`%H3Xkf=2lC;7=>@+8m zdpnhzlG+^mB`BMeK!1wQJ7YfMIb*Z=OJiP}pFaIblFEDnmBe4_g*}rw{i*%&otaPV zhjwO{%0<#)-xacauhcK!1v^2GQRemL7ggnrAv-1sZKwR1 zBieH*rF!}oL+}?12>62GrA+!Brat`?6K{Y;8w~)Yln&p*^e$z96~u!~c0zg`Q~P`9 z2SN-3LyG~{sV5l!Qi=vg^ug2&@%#^xTKktf9re=D+Tm;oY!gtEKTY#%QUfHbYlPZ{ zdeU{JAkFs`5HlL=OLmdIJilv2uSXj@b>Yai07Udfuf%N%Xp+Aq1+)9xY0nhUh={cpuByDku zya?0SBK?Uhtve5? zdVoL3p95D2bKI>0>-LJQ00){D`K$G@30 zGC&It2ZImEnE_JP!3QzLhuTrB)>scK$!4qXgR{|DQHcb>TcHM6MgdT z3ioU5<9115mnJsKXtUYRw_Byn{hD~tLTB|!I2vZ}g3P%qmYsuXlJ%dB($qYLVmLLrsi355Q2SJ>L zDhNG{0~!|x91vhFKp@toqjb2LPN(Sb3jl}D(Xb?88A3fMEJRcK9R0M30sL`>@s}vY zU&E8;y9FoLUoVkm71*1PxtGR=i}EK4!56F#xE%D zgDw6G5hb%(@+MtOiax1S2_H>RLLA z6PnC;-~AxT#HA1XrE%PR^UlBv`A&`IRTeB^*&n*M$??f315zU`31MBrFQ!C+Uw1za@v$B6Q@?eTdc}ymYZ*^y{={k8h52>9GW;|;*GTkS+1XW zv-w6eeR8b@p^9l!e>}Z>;*YLFtcKz=5kzr1fo56c8Jo6O8Y;-+}9l_h%rtvA$&jnqhng)w?Gct?t?DCZMaXLd)K<*3U#& zz2k0aI93Wzw4fOijFVVBDldfx5jP%Hm!cY0Gij`5@;GXWK|5^>J%gpKWz0`YnYm+i zx3jwX@kO?=MRvBxKEBBQ1M*c`YJ^ocHa~WIv%}_CuwafA{u9K);jdMVmMPK=!(sqq;`;d zC#W6*vRX%eU`!AB5v8h80g74&Q|bZQAo&4}7(8Sg1G5H^@JA;4j{)EqVN=QHp94f9 zkyc>)$3Q{e|1XWOeIxDf0^gnlO!x96Al{dOg3W-aE6lbIBwYf)e+9ruC<*|?=I;QV z-=-*+03zT!z!0Hal2!m9&%SE`5l#L`E?%a9)fduN?z?&4FZMmTFSO5~C7A^&N&@?x z??@&Yv~UMW5Ll9Woe)RD-bqA~?|12tK=375qYxrIYS4m0@`aRw3Za!9%a`9lvpU_K+<1-f_R@yt4q28nH0$YZ9yi7}=G$N2 mcfoIyM#le?!3R8}40HW&YaVf+7@{}qApakrtCC!6tNs`BJ@P34