diff --git a/various_flashers/256kPrinceOfPersia/flashwrite.asx b/various_flashers/256kPrinceOfPersia/flashwrite.asx deleted file mode 100644 index c74f6f2..0000000 --- a/various_flashers/256kPrinceOfPersia/flashwrite.asx +++ /dev/null @@ -1,383 +0,0 @@ -; JatariCart256 Action!3.6 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 -.def TWOCHIPS -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 - mva #$A0 106 - jsr opened - lda 20 -@ cmp 20 - beq @- -@ lda #$1 - sta 66 - ; waiting for cart to be inserted - jsr print - dta c'Insert cartridge...',0 - sta $D500 -@ 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 - jeq CHECKONLY - ; start -FORMAT - jsr printformatting - jsr print - dta c'1...',0 - ldx #0 - jsr flashformatchip - bcs formatfailed - .if .def TWOCHIPS - jsr printdone - jsr printformatting - jsr print - dta c'2...',0 - ldx #$40 - jsr flashformatchip - bcs formatfailed - .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 -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 - - 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) -; --------------------------------------- -; blocks for every 8kb bank -.rept 24, # - .print "A :1" - .local block:1 -;------------ - org BankNum - dta b(:1) - dta b(1) ; Counter -;------------ - org _SOURCE - ins "PoP_Atarimax_20211024_final.car",+:1*8192,8192 -;------------ - org $2e2 - dta a(MAIN_PROCESS) -;------------ - .endl - .endr -;------------ - org $2e2 - dta a(FINISH_PROCESS) - - diff --git a/various_flashers/256kPrinceOfPersia/flashwritelib.asx b/various_flashers/256kPrinceOfPersia/flashwritelib.asx deleted file mode 100644 index 1907bd0..0000000 --- a/various_flashers/256kPrinceOfPersia/flashwritelib.asx +++ /dev/null @@ -1,303 +0,0 @@ -; flash eeprom library -; by JHusak , 04.01.2020 -; free to use. -lstore_x dta 0 -; x - 0x0 or 0x40 - chip select -; c - 1 - format, 0 - write - ;.print flashcnt -flashoppreamble - - pha - txa - pha - ; when write byte x must be set to either 0 or 40 temporarily - and #$40 - tax - ; $5555<$aa -@ sta $d502,x - lda #$aa - sta $b555 - ; $2aaa<$55 - sta $d501,x - lda #$55 - sta $aaaa - ; $5555<$80 - sta $d502,x - ; sector format: carry set - scc - lda #$80 ; sector erase - scs - lda #$a0 ; byte programm - sta $b555 - bcc @+ - ; $5555<$aa - sta $d502,x - lda #$aa - sta $b555 - ; $2aaa<$55 - sta $d501,x - lda #$55 - sta $aaaa - - ; PREPARE FOR SECTOR TO ERASE - - ; set upper bank bits -@ pla - tax - pla - rts - -; -------------------------- -; PROCEDURE -; x = 0 or 0x40 - flash chip address. -store_x dta 0 -flashformatchip2 - ldx #$40 - dta { bit.w } -flashformatchip - - sei - stx store_x - sec ; format preamble - jsr flashoppreamble ; does not touch A - sta $d502,x - lda #$10 - sta $b555 - lda #$ff - sta flashcmp - jsr flashcheckresult - beq @+ - ; cart is off and cli -; sec ; error -; rts -@ lda #$3f - sta flashformatcounter -@ sei - ldx store_x -flashformatcounter equ*+1 - sta $d5FF,x ; set chip (x) and bank - ; set pages count - ldy #$20 - ; reset address - lda #$a0 - sta flashformataddrcheck + 2 - ; check whole sector against 0xff - jsr flashchecksectorformatted_bare ; destroys x - bcs @+ ; format error - dec flashformatcounter - bpl @- -@ jmp flashcartoff ; preserves C - - -; -------------------------- -; PROCEDURE -flashformatsector -; x - even sector 00 - 7f -; a - erase 4KB from $B000 if A=$B0, FROM $A000 IF A=$A0 -; format 4kb evensector -; strange form - easily maps to cartridge banks -; to format bank, must format sector (x<<1) and (x<<1) +1 - ; first check if all ff - ; this is to avoid wear - stx flashformatstorex - sta flashformatstorea - sei - sta $d500,x - sta flashformataddrcheck + 2 - jsr flashchecksectorformatted - bcc flashsectorformatgood - sei -flashformatstorex equ * + 1 - ldx #0 ; filled before -flashformatstorea equ * + 1 - lda #0 ; filled before -; check least sector bit - - sec ; format preamble - jsr flashoppreamble ; does not touch A,X - sta $D500,x - ; A must be either $A0 or $B0 - sta flashtmpaddr+1 - sta flashformataddrcheck + 2 - - lda #$30 -flashtmpaddr equ *+1 - sta $a000 ; Format! - jsr flashcheckresult - sei - - lda flashformatstorea - sta flashformataddrcheck+2 - - ldx flashformatstorex - sta $d500,x - - ; check if all data in sector is $ff -flashchecksectorformatted - ldy #$10 -flashchecksectorformatted_bare - lda #$ff - ldx #0 -flashformataddrcheck - cmp $a000,x - bne flashsectorformaterror - inx - bne flashformataddrcheck - inc flashformataddrcheck + 2 - dey - bne flashformataddrcheck - -flashsectorformatgood - jsr flashcartoff - clc - rts - -flashsectorformaterror - jsr flashcartoff - sec - rts - - -; --------------------- -; PROCEDURE - -flashwritebyte - -; a - byte to write -; x - 8kb bank to switch, $00 to $7f, also chip select -; flashaddr - addres in flash - must be a000-offset - ; do not programm byte if already good - sei - sta $D500,x ; select bank, chip - ldy #{ cmp.w } - jsr flashprocessbyte - bne @+ - ;clc - ;jmp flashcartoff - sta $D580 - cli - clc - rts -@ sta flashcmp - - sei - clc ; write byte preamble - jsr flashoppreamble ; preserves A,X - - sta $D500,x - - ldy #{ sta.w } - ; WRITE BYTE ! - jsr flashprocessbyte - -flashcheckresult ; sei mode - mva #0 flashcnt - ldy #5 ; first time wait short first turn to speed up byte write. - bne @+ - -flashwaitfordone - ; approx 100ms in overall for chip erase: - ; as many cycles needed, as 256*cycles >100ms * (1+epsilon) - ; 100 ms is 180000 cycles - ; so max 256 rough loops must last longer - ; 180000 / 256 = 703 - ; 700 cycles by 6 cycles loop lasts = 116. - ; so flipipng values, and adding margin, - ; we count 128*6 cycles in inner loop. - ; max sector erase by datasheet: 25 ms - ; max chip erase by datasheet: 100 ms - ldy#250 -@ dey - nop - bne @- - -@ ldy #{ lda.w } - jsr flashprocessbyte - ldy #{ eor.w } - jsr flashprocessbyte - inc flashcnt - bne @+ - jsr flashcartoff - lda #$ff ; status - rts -@ - and #$40 - bne flashwaitfordone -; in acc will be mismatched byte - ldy #{ lda.w } - jsr flashprocessbyte - jsr flashcartoff ; preserves axy, not p -flashcmp equ *+1 - cmp #0 -; when non zero = error - rts - -flashcnt - dta 0 -; ---------------------- -; PROCEDURE - -flashprocessbyte - -; y - byteop for cpu to do with byte -; flashaddr - stored address - sty flashbyteop -flashaddr equ *+1 -flashbyteop - sta $aaaa - rts - -flashincaddr - inw flashaddr - rts - -flashsetaddr - stx flashaddr - sty flashaddr+1 - rts - -flashcartoff - pha - sta $d580 - lda $d013 - sta $3fa - cli - pla - rts - -; PROCEDURE -; Y-char to write -PRINTWHAT - php - pha - txa - pha - tya - pha - jsr $f2b0 - pla - tay - pla - tax - pla - plp - rts -PRINTDOT - php - pha - txa - pha - tya - pha - lda #'.' - jsr $f2b0 - pla - tay - pla - tax - pla - plp - rts -; ----------------------- IINT -; org $2e2 -; dta a($600) diff --git a/various_flashers/256kPrinceOfPersia/makeflashwrite.sh b/various_flashers/256kPrinceOfPersia/makeflashwrite.sh deleted file mode 100755 index 574835c..0000000 --- a/various_flashers/256kPrinceOfPersia/makeflashwrite.sh +++ /dev/null @@ -1,3 +0,0 @@ -cd `dirname $0` -mads flashwrite.asx -o:PoPflashwrite.xex -