From 05e5e408156238209e22edd5c815bcecd6bac65e Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Mon, 21 Oct 2019 15:38:32 -0400 Subject: [PATCH] Code cleanup --- SOFTCARD80.ASM#040000 | 89 ++++++++++++------------------------------ SOFTCARD80.BIN#041000 | Bin 32771 -> 32771 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 25 insertions(+), 64 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index fb4933d..0d37ce5 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -800,7 +800,8 @@ F_OPEN CALL F_SFIRST _F_OPEN LD IX,PATHBUF ; Destination buffer CALL FCB2PATH ; Populate PATHLEN and PATH - PUSH DE ; Preserve pointer to FCB + PUSH DE ; Copy pointer to FCB ... + POP IY ; ... into IY ; Work out which IOBUF to allocate for this file XOR A ; Looking for FRN slot with value 0 @@ -818,16 +819,9 @@ _F_OPEN LD IX,PATHBUF ; Destination buffer CP 0 ; See if there was an error JP NZ,FOERR ; Handle error - POP DE ; Restore pointer to FCB - ; Store ProDOS FRN in S2 field of FCB LD A,(FOMLIN) ; Get ProDOS file reference number - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,0EH ; Offset to S2 field (reserved field) - ADD HL,BC ; Compute address - LD (HL),A ; Store file reference number in S2 field - PUSH HL ; Keep pointer into FCB for later + LD (IY+0EH),A ; Store file reference number in S2 field ; ProDOS GET_EOF call ; Assumes no files > 64K on ProDOS filesystem @@ -840,15 +834,11 @@ _F_OPEN LD IX,PATHBUF ; Destination buffer CALL LEN2RECS ; Leaves number of records in A ; Store records used - POP HL ; Recover pointer into FCB - INC HL ; Advance to records used (offset 0FH) - LD (HL),A ; Set records used + LD (IY+0FH),A ; Set records used field ; Set sequential record number to zero - LD BC,20H-0FH ; Skip ahead to offset 20H - seq rec num - ADD HL,BC ; ... XOR A ; Zero the sequential record number - LD (HL),A ; ... + LD (IY+20H),A ; ... ; Store ProDOS FRN in slot FRN1 - FRN4 LD A,(TEMPBYTE) ; Obtain IOBUF idx (1,2,3,4) @@ -863,8 +853,7 @@ _F_OPEN LD IX,PATHBUF ; Destination buffer LD L,A ; Copy to L RET ; Done -FOERR POP DE ; Restore the stack - LD A,0FFH ; Error return status +FOERR LD A,0FFH ; Error return status LD L,A ; Copy to L RET ; Done (error) @@ -896,12 +885,10 @@ F_CLOSE LD H,D ; Pointer to FCB ... XOR A ; And zero it LD (HL),A ; ... - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,0EH ; Offset to S2 field (reserved field) - ADD HL,BC ; Compute address + PUSH DE ; Copy pointer to FCB ... + POP IX ; ... into IX XOR A ; Zero out the S2 field - LD (HL),A ; ... + LD (IX+0EH),A ; ... FCSUCC XOR A ; Return zero for error LD L,A ; Return in L also @@ -1010,18 +997,13 @@ FDERR LD A,0FFH ; 0FFH for error ; Returns error codes in A and L: ; 0 OK, 1 EOF, 9 invalid FCB, 10 media changed, 0FFH h/w error ; TODO Handle multiple extents -F_READ PUSH DE ; Preserve pointer to FCB - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,0EH ; Offset to S2 field (reserved field) - ADD HL,BC ; Compute address - LD A,(HL) ; Obtain file reference num from FCB S2 +F_READ PUSH DE ; Copy pointer to FCB ... + POP IX ; ... into IX + LD A,(IX+0EH) ; Obtain file reference num from FCB S2 LD (SMMLIN),A ; Store in parameter list for SET_MARK LD (FRMLIN),A ; Store in parameter list for READ - LD BC,20H-0EH ; Skip ahead to seq record num in FCB - ADD HL,BC ; ... - LD A,(HL) ; Obtain sequential record number + LD A,(IX+20H) ; Obtain sequential record number CALL RECS2LEN ; Leaves the length in bytes in HL LD (SMMLIP1),HL ; Write 16 bit length in FRMLIP1,FRMLIP2 XOR A ; Set FRMLIP3 to zero @@ -1048,26 +1030,18 @@ F_READ PUSH DE ; Preserve pointer to FCB CP 0 ; See if there was some other error JP NZ,FRERR ; If so, return code 0FFH (h/w error) - POP DE ; Get pointer to FCB back - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,20H ; Advance to sequential rec number field - ADD HL,BC ; ... - INC (HL) ; Increment sequential record number + INC (IX+20H) ; Increment sequential record number XOR A ; Zero for success LD L,A ; Return code in L also RET ; Done -FREOF POP DE ; Fix up stack - LD A,1 ; EOF return code +FREOF LD A,1 ; EOF return code LD L,A ; Return code in L also RET ; Done (EOF) -FRBFCB POP DE ; Fix up stack - LD A,9 ; Invalid FCB return code +FRBFCB LD A,9 ; Invalid FCB return code LD L,A ; Return code in L also RET ; Done (Bad FCB) -FRERR POP DE ; Fix up stack - LD A,0FFH ; All other errors are 0FFH +FRERR LD A,0FFH ; All other errors are 0FFH LD L,A ; Return code in L aslo RET ; Done (error) @@ -1076,18 +1050,13 @@ FRERR POP DE ; Fix up stack ; Returns error codes in A and L: ; 0 OK, 1 dir full, 2 disk full, 9 invalid FCB, 10 media changed, 0FFH h/w error ; TODO Handle multiple extents -F_WRITE PUSH DE ; Preserve pointer to FCB - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,0EH ; Offset to S2 field (reserved field) - ADD HL,BC ; Compute address - LD A,(HL) ; Obtain file reference num from FCB S2 +F_WRITE PUSH DE ; Copy pointer to FCB ... + POP IX ; ... into IX + LD A,(IX+0EH) ; Obtain file reference num from FCB S2 LD (SMMLIN),A ; Store in parameter list for SET_MARK LD (FWMLIN),A ; Store in parameter list for WRITE - LD BC,20H-0EH ; Skip ahead to seq record num in FCB - ADD HL,BC ; ... - LD A,(HL) ; Obtain sequential record number + LD A,(IX+20H) ; Obtain sequential record number CALL RECS2LEN ; Leaves the length in bytes in HL ;; ; DEBUG @@ -1125,26 +1094,18 @@ F_WRITE PUSH DE ; Preserve pointer to FCB CP 0 ; See if there was some other error JP NZ,FWERR ; If so, return code 0FFH (h/w error) - POP DE ; Get pointer to FCB back - LD H,D ; Pointer to FCB ... - LD L,E ; ... into HL - LD BC,20H ; Advance to sequential rec number field - ADD HL,BC ; ... - INC (HL) ; Increment sequential record number + INC (IX+20H) ; Increment sequential record number XOR A ; Zero for success LD L,A ; Return code in L also RET ; Done -FWBFCB POP DE ; Clean up the stack - LD A,9 ; Invalid FCB return code +FWBFCB LD A,9 ; Invalid FCB return code LD L,A ; Return code in L also RET ; Done (EOF) -FWDF POP DE ; Clean up the stack - LD A,2 ; Disk full return code +FWDF LD A,2 ; Disk full return code LD L,A ; Return code in L also RET ; Done (Disk Full) -FWERR POP DE ; Clean up the stack - LD A,0FFH ; All other errors are 0FFH +FWERR LD A,0FFH ; All other errors are 0FFH LD L,A ; Return code in L aslo RET ; Done (error) diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 291be5a414597a5af36315f19bc08f6114cedc94..1f3dd24297e279c17a9d8a14336dfa61aaf6acad 100644 GIT binary patch delta 1367 zcmZ`(U1%It6uz@r)7_-qO|u%(P1^2cE!B;Gj3vStSEX$fn^+%8)1($==jUF>3b8&o zo7QGmD^f(U>sa5E5}{b7PO(1JA8eeJz)U-V4UVWV&_y;NqUeLgmz{d<%qVTtfxSQ9 z`ObIGIrpADR*fC2#?GZXy7sHiuef+^X8nQl8#?}cvTIW1_Nm;I%1!G7!q^=#u_zu9 zKN6S3JEhm8)6%!n57HH>CH*AbBA*a8$Q$JyFn=t6C$Gr*>w{SrS#+FFWxm#}YBtZ<4rmvLK58*MGe z4c3^aLV&yeYa@9(Ux1NVP409p#hdN zfkxo{;f>xETz@I_af%}3ZvR~lc2g9sEr!`Zc-~x!dy{Y?@#b>Qk9bHY26vLMuLjHs zdyC|6rvox?mkNDh1tr2x2j+2`z0T}y%h5cUnTl0RuGT;FKl)WF00T0Q|D*pLVbwrC zusmwN9GWA2Djf^uqg!UXqqOEF=XA*`4#Pc#nJ-Hb#bf(axVj#c+;afl1$$fMv8?|t z^^dy5>a6l{w2~h6lgn}WQqKeCRf*4{b6gf#sYHzeYh-=^fB|F`0Av@5bp&cVqVJT4 zcLfDxGAKEge_T+Vm4B7-eHqe(0hwpz|0v^o)Erd#tp2$?kcJ4iMG<}@7q;sy`3WYg zk0_fC9#-c3oIS22X8kUEmy+-_v^MYM>-Q=NFqnIle0^Lg-bGKB#4%7W4xUswM?`DK3}%0yphqW%Tt zw&3}~vmNR~&XNeJZNwC~vKkPcUd^~3FzTD(PoN1DD-)cLvi^hi2p+p&K8!P!{Muso zr{*v=XbV6-D`|N8CERkIiqdGpbSrMqK9NDhGAw8iXcK1#PB2@8W&&Uo`Y8dFH)#9# z>&$0DDnjTHep0<)e}egaFnxykDVP>8KMm6&C9z2V9`h4z{DQ-fqfQ$i?T>GU@9J+` z7f&rc)SIz#=;A`JCaiJGb{+{Ma5% v=y1y+*)C~99G2B^d+FI5wwEg)MKzt{(PF6vlE9^4qMM-kwf#NQwc8_Cp6S$!VyP&Wi{g~gFBk6RaRJZb zllTIDSUIMgRW2)kDTu5iJb8f3$q$iHLclJOD940hr0P8oeD27oQJF^Zb)T{C%FXT^%e0eDx74I>>29*sx4=9t_Sg^ zE)5{zKrx1P@c`D%{dNOdwgc9Thnz7iE>Pi}Fy~e*Ezn9(bSn;trXIjeMrZ71TC`}7 zMO_}V_0tKq{=s^xVxd~(Mi4)=sF`9-Ypl4hY0FS%2G^g)Ca~>hc2SdRnjdIDWYN#z zvugpna*bYpBjC6N3@R*Ll|{&h?JnW4q3}N9=Tv-!a=nP3aU*o7MosYq6+ZLPJDmp= z?-8~jE2m^rfu6HenDWCr9Pw(n0`Uf997O#6zF-_vjSr=3URUez|JHh+C4&W7A788W zHWgm?Yx$Aw&PPG`hElA`c)la76+Q!DB)qSsxJM`azaUWLk`f|X!sa6M)s6Vw&%(PA zwugjEMnmb#wW%GeN>Q}hmGk(eyU4ljQ7c8HG&(M(k)4PiW{zPZ^@F1y*;#N3tJFRS zn(s00CL`m4tVzTdGEc}wH})@Szb9~ASditC|B$xM!oKpZ@gC{#f)00w9sWtOit!zJ zl9P;-ddK7ub;cWX_Nno**Xc~E@s^G@WLlZ}Q)(On)&VtB->2s9WA0Wah8XyW8ZUVf z=iLAtW#}sK|JITH3-ppe=8KseaF42R$|MH;<9h3aF|Q6(E~>rJjde%;ZEp%C!!H)E z|IDx}@T}oE52cWM0mIcsHReFi-{h#?>_C&(A~Q07VErCh5gf&X1Z@0`rq5mBC!pq$x0~3?v}qv?lG`L|=9VI_++v(|yr9 z;k*3%@Y#j)TY8iBAo}`@sLQvsOLfS{!4HA!n{B$xwM($GcIk3QyR^9s`)~K^a%bDv zLT`QiC0&lRO99w9q{~s*R)gcYxf_l@%tI=c)BPmeoL_{LfMw3cm$eV*w!VJ=7;s22 diff --git a/zapple2.po b/zapple2.po index b0742609b7bef40faaf1af5dc00a1714996f5716..24e3ac6c5a6f66bb777ac0a99bac8b6d756aeb7e 100644 GIT binary patch delta 1859 zcmb7EeM}Q)7=N!6xDRZRB7=h3qaz?NB{y}+$+{`RaEh4ufnYT4U3<4qGjv&2(Aicc zVwNov5#Rl@#ju3UO{r01-IyP13ENeV1Vb0+(nMmwnZ;%MW5z5}_uREx6t_Rt+TD@EwE*_^Esttle*dq)Iqr!9I`{IE3gLqTCB~FTW#X0W7&La0* z_ez-0xNo?p-1viWDw(-YR{wD0!*R+Qa0m%D{<=zf;?ol$^{AA56id3e5=5X}s1(=MUpPQRi5^lxKCvEnC7cIF00q1X`eYX?X&SEh~4DPLd_JQe4%y)G%Lb(!h|S) z62)E+xS-5-q^Wp;56Y>d_<)ek3;E)SiBQ64N+-vyT)#ZKUser*HlA>4Ll6&ii4WTzw1BvgBk%0D01i@{oaWc44JrEc zE3-_xtbS1)a4C*9c&Ak5*Tpm>!4`Po>2eXZVJmzWY(+Zbx|n{N%0i^@Ml@ws?yWCC z3LBS|tf20wO;Xp5?yI>kM(&IJzzxb&W<{qtD^g5kkLJyG^TpsOMoJ|(*%4XU19!d@ z*H2MZtM!{DEQo5buXTFWsi*Gub2rov1B#q-|I7V;s)hCIKZS>;sA4l{U!2xH?yjuE zlT*|>!ityPq2_Jh?eQmVu{9pDGfBr*d&q{&|j4V?v=__FBk2=z*QxWYf1yqz_-dLzM)sc=C+1qF;FK zZ7D#O^e>ByexrdW;oF99y0iePqXLvSSJE7}W;&d2%tSoy2u0_^Kg9$<6pJnZS(7it zmP!p5BFiO9z@Fn^zKT>yA+0~4peZx-g-e=@s{zm01WeCLV_FlrfkX)@&^^#Y>Pm?u z%JohIM=dlP36Kx9-b&7j>_|ZoLa*>G-V3pF62BRyuO+?}rYjQP2GfWJViErFXNqr{ zmflqfd9OMx?JYFUhu{6*%14fmzMN-KZ0PcpJfAZ=-Vp^t0t|uc+cKY%hBVRdZ~|6y zj(r@ybeCFDfNPGDwsUm-#jLvaot?Iwc=jMY2j85>*z%WGSFGAxRa4)%fTEV!nuWJr z-ZwGZ#aOWO8ods;U!s@LDGXQBxB%CxbSqwenLdRF=PXSHAL~rLdK6fzoQr7u7|WGyyO|Cn!u+==m)b_t*xUd?M$7o$;uqasBdn-zgron zaYaMjioS)63*S@dT%1WVX1tAHw&Cs={pf#6KR846Fg~Nw`QiLOX}@7$l&%gRc}R1H zr`7DwY)Pxw(RYz)*F}UuM1ReBff>vg;Fy~5poe*_@O+oH^)p$Y4R$jX11FjBzW{>~ B@4Wy3 delta 1952 zcma)54Qx|Y6uz(PO7DAHH#XQm(zmLc1IhBDsC5k7Se=Z&3Pof|fa0SqMM2h_vtsT^JhUB8yp(D2Wh92nn6%wS@qR@g?Wpd(QdJ zIp00^9iNZ$`MCX+nR(qvLez^DPn!_>6(Q}g-I`g(r1V@(?{j3nJb^+R4`*#YoJE1? zKr%q|AekTrkO{%VS;iBsx(h#Sr*z&AI*nd3qk``0_ZV}E=?yN`B-f6&PVC%VOpL)| zf^XE&ii>l*xONxUK}yeK+jPv^_>Fu&e}R9_xzBmhdEI%_iG)l63r`9?_Gg4yf&lxV za6>SNWXpM+$oxcBCyS(K2$y(m{4hJVQmqt+0_p)NF&@?PTp6NJE-qJO_B9QdKp{OJ zv$o583uQuB8Rd@3Y`^BIIxee!NFx@7nuu^fv6dlry~}_WVE`+E)<_JfM^aIq1d7h) zxjizwBb~F3x9*X>siJj!IxwK5-~laMiykWBLh{6rtYThUzjSEpRgII6XMHYe8p7qh zQh@7|Vx#I?(g>9C@Zsfr0HPy9RlSn6Pf9vs;OR}~NJjUiqP=&*!|$eIR2vUn7`)vU zwl+<7kWUjz--r7~=DKAn4`Gj*A(!{b0q&s8?oFZ>M4xgd>a_)hYMfOCseW#h*^Z=p zew4fI_JThK8O;bkk!%>Hbq%LmH*{C6Z4a#Vk(LY=6#D#5t@ma2on)<~r!o3z%6(5M zt;#F4x^%7dZ@^AV-#6q`{f^`lq&jlVnMMq=GhM(d7vZI^!hgdyrUR}y(@$1agd$cw z^8biU4e^}Fl_doz!j8!igAc6noSFn4d{{W0J1bNmSWD1;t^`F)#%-FRLa>&Cp%g`` zz{tks$Od?eW#o}Kp4OD=cRs>4%R;+LHTgfcRGH90vilM)^IjD5 z^x5I4cx6Qa%1?g=WB6wcJPQ9j{OjcfNWH+r^=3($0j;{v;Je>|TJAyw!n38?@e!~@ z@{w+orn<^`Js#E07BK=hOuK!taa?ja0dHE4DI(D2>>=VY^VMs`UATWK~pxCJ~ zH=II?6uWNBJ+mFoCsrtSdW_7uj3>=&Q|uXI?i4!OrP%dw^rh6(J@=?*c0(>Lsrp6w zaJCn60#-A|js!oxjOz*x&<#gOQwCiW{KdpHQKi+5k5@M|V*IRmNsDWZ*|Ab|2y4r7L{?^KqR+McTmldd!L8nW*gy_6&-F`l63 z1TE>vzR65qHpcjch4mO$HqL(xldC7`x5?f@#zLA3nU~0Ch0GSh6){`Mz$tqC4xc=V ztcubzr`FX^=l(ab0smQgI_dG_Nx|;Zv`5!}lja`8q1(K?&Q@QC@!~~`F`nB1B;n@u zt3}7_<~P=u+g6I?NFn1Q=f0;6k1n5U`wyUbU7N$%l8s6AEqZP7gY(TRV%));1YKY4 k=a}kX^9<(ejDDVJF7kUAL$J96RR1QX61v&!-_M-;8*)VY*Z=?k