From 1cec3ddd8ed0b5307eb3efed68a97c58dbbff2b1 Mon Sep 17 00:00:00 2001 From: Jakub Husak Date: Thu, 9 Feb 2023 12:01:27 +0100 Subject: [PATCH] added verify empty flash before formatting --- lib/flashwrite.asx | 23 +++++++++++------- lib/flashwritelib.asx | 31 ++++++++++++++----------- various_flashers/postprocess_example.sh | 2 +- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/lib/flashwrite.asx b/lib/flashwrite.asx index 0a64d91..ce506e4 100644 --- a/lib/flashwrite.asx +++ b/lib/flashwrite.asx @@ -175,7 +175,7 @@ FORMAT ldx #0 jsr flashformatchip bcs formatfailed - jsr flashend ; restores display etc. + jsr flashend ; restores display etc. preserves all .if .def TWOCHIPS jsr printdone jsr printformatting @@ -184,7 +184,7 @@ FORMAT ldx #$40 jsr flashformatchip bcs formatfailed - jsr flashend ; restores display etc. + jsr flashend ; restores display etc. preserves all .endif printdone jsr print dta c'done:)',$9b,0 @@ -196,6 +196,7 @@ printformatting rts formatfailed + jsr flashend jsr print dta c'failed:(',$9b,'Waiting for reboot...',$9b,0 jmp * @@ -231,7 +232,6 @@ CHECKINIT mwa #_DEST _cdst sei CHECK - mva #0 badcompare_counter sta badcompare_counter+1 ldx BankNum @@ -241,21 +241,25 @@ _csrc equ * + 1 lda $6000 ; src _cdst equ * + 1 cmp $A000 ; dst - beq @+ + beq _byte_ok lda _csrc ldx _csrc+1 jsr BADCOMPARE -@ inw _csrc +_byte_ok + inw _csrc inw _cdst lda _csrc+1 cmp #>_SOURCE+$20 bne checkloop cpw #0 badcompare_counter - beq @+ + beq _all_bytes_ok + ; several differences found... + ; cart off sta $d580 lda $d013 sta $3fa cli + ; print status jsr print dta 253,c'non-match byte#:',0 lda badcompare_counter+1 @@ -266,13 +270,14 @@ _cdst equ * + 1 dta c' (START-cont)',0 lda #7 - cmp CONSOL + cmp CONSOL ; wait for consol req jsr printnl sec rts -@ sta $d580 +_all_bytes_ok + sta $d580 lda $d013 sta $3fa cli @@ -351,7 +356,7 @@ _tsrc equ * + 1 dew _tcnt bne _tsrc -1 calccrc_bank equ * +1 - lda #$ba ; nk number + lda #$ba ;nk number asl tax plp diff --git a/lib/flashwritelib.asx b/lib/flashwritelib.asx index 6ed0aa5..cd0381f 100644 --- a/lib/flashwritelib.asx +++ b/lib/flashwritelib.asx @@ -145,22 +145,26 @@ flashformatchip1 ; PROCEDURE ; x = 0 or 0x40 - flash chip address. flashformatchip - - sei + ; first check if not formatted stx store_x + jsr flashcheckempty + bcc flashformatexit + sei sec ; will format flash! + ldx store_x lda #flashoppreamble jsr jsrtovectorproc ; preserves A ; not needed to mva $ff flashcmp jsr wait4flashcheckresult ; waits for format finished ; then check number of banks for FFs +flashcheckempty lda #$3f ; this depends on flash size, $0f, $1f, $3f sta flashformatcounter flashbankloop sei ldx store_x flashformatcounter equ*+1 sta $d5FF,x ; set chip (x) and bank - ; set pages count + ; set pages count, 8kB ldy #$20 ; reset address lda #$a0 @@ -170,7 +174,17 @@ flashformatcounter equ*+1 bcs flashformatexit ; format error if c set dec flashformatcounter bpl flashbankloop -flashformatexit jmp flashcartoff ; preserves C +flashformatexit +flashcartoff ; preserves C + pha + sta $d580 + lda $d013 + sta $3fa + cli + pla + rts + +; -------------------------- store_x dta 0 ; -------------------------- @@ -399,12 +413,3 @@ flashsetbank sta $3fa rts -flashcartoff - pha - sta $d580 - lda $d013 - sta $3fa - cli - pla - rts - diff --git a/various_flashers/postprocess_example.sh b/various_flashers/postprocess_example.sh index 533d457..a2150bf 100755 --- a/various_flashers/postprocess_example.sh +++ b/various_flashers/postprocess_example.sh @@ -6,7 +6,7 @@ echo Copy $outfile to card? read while true; do -[ -d "$vol" ] && cp "$outfile" "$vol"/ATARI/ && { eject; exit; } +[ -d "$vol" ] && cp -v "$outfile" "$vol"/ATARI/ && { eject; exit; } echo Waiting for card inserted... sleep 1