From 7bb65cdca8eaf64e809c1cd20a5b5e3c0364f566 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 17 Jul 2021 13:15:28 -0400 Subject: [PATCH] Improved LOADFILE error handling --- applecorn.po | Bin 143360 -> 143360 bytes applecorn.s | 82 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/applecorn.po b/applecorn.po index 97187add5e5e1b05bd9e7f998c9aeb9fb29b65af..3812cb0ec0db18e698ffa5e0498fff4138a834d8 100644 GIT binary patch delta 2022 zcma)7eNa?Y6o2n6D6F7>2_#n6y%gD`qmm;cU|Q*p(THUqiqzVmQISqgS&_}YKDN-j zy33WB#&M=i#k%NY-Y!m4Tf`D#yoKjz(?&>`=Q)yX3R@xWF8%m@rn_o-#csg%w z&PtiRlb4%$p^ta({mw`a?ax^dzI-KwB15AnJTw-$NE*?^)7Iifm&0f{^xH)g8Xg`R zrqTCLXZ4(Qeud8cJH*rNqQAYJO#>g~E^T*uG#7EUf3G@^pE%PF&K>8^5$CrZy-rVD z^0zrX{*Jb@9ezI{;7n2Nao$a>Z)YXC;q0dUwd-a;n(ni003o~RvVEqqiGWF^8*u$M z3L{Rnvkh|S$dCh2V4ZZ8!Bra@7zmAw#QkC}w8c@-?ArIGf%niCNG|VbK1lZRa4;Sc zVcmbI3fAF6`Cz!yK0`Mwc4W`+ba(WS7_f(Kbj$_qi;jKtnq$X<6U9zR_6Zc!4s3M% zpah@M#;t!3E4M)(x(8UmvV0uWO;v@x-5s2(|O-vz{XDVCY_H@9My4?Vdtv3yy>hU+L zbHzBGnkIHr;ui9 zL=060_dYdVdP_UU!63W^*aBPU(%9C$DYp3@jBQ<|^w*xBlOr&MyI=^*=-KnD^S>s7 zz=Fgeu-i$JE+q@>9byz%ADJOA6G_pfRDtD@nF0%tSput|1?rw@!vUMUWu*CxYUKHs zX=|^^`n1gsH^kxOTy-SD>#&nVZ>N%~Uaf`GfeH*qY0yB*H7Q~sTQ$!?p06@TbCmHY zW@Szdz1~}8MhAM?=D1vQ&BBi8EzXA)MI%d_l(WBpUYmISh*>JvKq+n2bP{R`z2oXq zg;(cr!L`p>HAKL~c^8P$?zmn* zSV@`}>gM1vHyk!Lw!}#a*c=V@>p!y_fQYJOF~*GLzjj)vA-;*0Ys+qVE-1dDB&mr= z2#7B#$so)Q&=cCKhp%Yjd?=xzUfH0gRMs~fRC4bGZeJICd9( zv+q{^4O-u~4A!o`4agltzmLPm!b0(oYc*SbGJgcv`*r+3X<_h=guFm$1+56)mI?Kw tR?ifwQ-o@xP@N?F0ndRT{2QD3V?Vste6F*QKe?4pplQOnlh5)!{{Wu862|}l delta 2139 zcmZ`(eNa@_6@TyTE-cH3N)#yC_PWoHpuxl{kutghYFsm~4MoJpHYsgs+>#xgrqQ-e zraX)fo+LMX+}h?3XS%MSz1rt2ZcJy4TR?+lk-@jT1s&VWU=RdHb~kKDT3bucdkaqc zM|XG5JLlYUe!p{mcX!1Rt2koyIn0@BnaAZ!bj^|_E0|G+`D~4eBW337h0V4nNu($J zzcBwknVt1#r#*GR&vL`;#kc-qBcImil27VwmhtFJ@k(UYFwa1ds)Z+E z)duWA&bK_ssL9F|yUL0C07h~E1dM;h4wXv4j<@r$QYoyqEe9>Srf*!#qdRsV5-pKl zBsLa8>C`rZJ7AyMu5*jylofO5cePVaOn(yiJ_9Y3ce>z1{xp#D)wO&TsN1{Jc=Ycy z9(|jP$BnJz;lSTgG!S+b2%AenH%m60!W>73v5BK5Y}LIKj_$`cjt=2ejwa(Y-Am_a z8qVNo7%$*xDcPYOPP!GAngh4}-Kvdct4V*z&VGkPL(85o@`BlTxDLh{<)NYgWw$C5xHi z7k=vg2|94_P4wEqLkFrEF~5sZ^T^r3&5jQ=+^Q+fT2NHKrZj2lS57u*Cz~~;MXT|d z=?_Gc(yAe%MOw57oSGtV#B}9}v3?^@mTOsaYmhBk?!5bowvr{}ZLMIjFf6_qw5k?# zUlU&srhxNzjr40a84_-WgprVt78Xi1_cG3%%eiwncNXVf%(*i;_d+h1t|l7`(R6nP=T76?HqLG3 zp!>nkhMD=7-^T4{y|<5@EqaAD*P5wWwY*=(?J}+WZfv0oecI5@#K=Mu8jywkbuRQP zxt&o>LYDbVQhnu_xUa|#(pso>?1 zs{z?%K!cy-%k4I)ytX}6+U+ezCmOw0FzDGvZv{Hv*j^!7+xJK*P>DV`D)hb$w!IQ^ zdySmlEmcZ;0igl__87g;2msZMfOfvoTPd7xM8gema!%(%Yh{R#Bm>rU2YNw%+{82ELE}stv-?W-Z-B$nr diff --git a/applecorn.s b/applecorn.s index 8d51604..df0816a 100644 --- a/applecorn.s +++ b/applecorn.s @@ -203,8 +203,9 @@ RESET TSX RTS * ProDOS file handling for MOS OSFILE LOAD call -* Return A=0 if file not found -* A=1 if file found +* Return A=0 if successful +* A=1 if file not found +* A=2 if read error LOADFILE LDX $0100 ; Recover SP TXS LDA $C081 ; Gimme the ROM! @@ -216,14 +217,16 @@ LOADFILE LDX $0100 ; Recover SP LDA #>MOSFILE STA OPENPL+2 JSR OPENFILE - BCS :NOTFOUND ; File not found error - + BCS :NOTFND ; File not found :L1 LDA OPENPL+5 ; File ref number STA READPL+1 JSR RDBLK - BCS :EOF ; Assume only poss error is EOF + BCC :S1 + CMP #$4C ; EOF + BEQ :EOF + BRA :READERR - LDA #RDBUF STA A1H @@ -238,12 +241,12 @@ LOADFILE LDX $0100 ; Recover SP LDA FBEXEC+1 LDX BLOCKS :L2 CPX #$00 - BEQ :S1 + BEQ :S2 INC INC DEX BRA :L2 -:S1 STA A4H +:S2 STA A4H SEC ; Main -> AUX JSR AUXMOVE @@ -251,18 +254,17 @@ LOADFILE LDX $0100 ; Recover SP INC BLOCKS BRA :L1 -:NOTFOUND - LDA #$00 ; Nothing found +:NOTFND LDA #$01 ; Nothing found PHA BRA :EXIT -:EOF - LDA #$01 ; File found +:READERR LDA #$02 ; Read error PHA - - LDA OPENPL+1 ; File ref num + BRA :EOF2 +:EOF LDA #$00 ; Success + PHA +:EOF2 LDA OPENPL+1 ; File ref num STA CLSPL+5 JSR CLSFILE - :EXIT LDA $C08B ; R/W RAM, bank 1 LDA $C08B LDA #= 2 (not last) CMP #$00 ; If no bytes left ... BNE :S3 - LDA LEN + LDA :LEN BNE :S3 BRA :NORMALEND @@ -358,9 +360,9 @@ SAVEFILE LDX $0100 ; Recover SP STA A2L LDA FBEND+1 STA A2H - LDA LEN + LDA :LEN STA WRITEPL+4 ; Remaining bytes to write - LDA LEN+1 + LDA :LEN+1 STA WRITEPL+5 :S2 LDA #