From d06836730ef024554c886cec9113934257086bb3 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 20 Oct 2019 20:44:21 -0400 Subject: [PATCH] Fixed bug I just introduced in F_OPEN --- SOFTCARD80.ASM#040000 | 33 +++++++++++++++++---------------- SOFTCARD80.BIN#041000 | Bin 32771 -> 32771 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index d95a4a6..da7cf5b 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -827,11 +827,12 @@ _F_OPEN LD IX,PATHBUF ; Destination buffer 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 is S2 field + LD (HL),A ; Store file reference number in S2 field PUSH HL ; Keep pointer into FCB for later ; ProDOS GET_EOF call. Convert bytes to records (ie: divide by 128) ; Assumes no files > 64K on ProDOS filesystem + LD (FO2MLIN),A ; Store file ref num in param list LD HL,FO2MLI ; Pass address of 6502 JSR instruction CALL PRODOS ; Invoke ProDOS MLI (GET_EOF) LD A,(FO2MLIE2) ; Most significant byte of length @@ -865,7 +866,7 @@ _F_OPEN LD IX,PATHBUF ; Destination buffer LD B,0 ; ... LD C,A ; ... ADD HL,BC ; ... - lD A,(FOMLIN) ; Get ProDOS file reference number + LD A,(FOMLIN) ; Get ProDOS file reference number LD (HL),A ; Store in FRN slot XOR A ; Success @@ -903,7 +904,7 @@ FOIOB DEFB 0 ; Local variable to record IOBUF idx ; Returns error codes in A and L: F_CLOSE LD H,D ; Pointer to FCB ... LD L,E ; ... into HL - LD BC,14 ; Offset to S2 field (reserved field) + LD BC,0EH ; Offset to S2 field (reserved field) ADD HL,BC ; Compute address LD A,(HL) ; Obtain file reference num from FCB S2 CP 0 ; If file reference number is zero ... @@ -928,7 +929,7 @@ F_CLOSE LD H,D ; Pointer to FCB ... LD H,D ; Pointer to FCB ... LD L,E ; ... into HL - LD BC,14 ; Offset to S2 field (reserved field) + LD BC,0EH ; Offset to S2 field (reserved field) ADD HL,BC ; Compute address XOR A ; Zero out the S2 field LD (HL),A ; ... @@ -1065,16 +1066,16 @@ FDMLIP DEFW PATHBUF+OFFSET ; ProDOS PL: Pointer to path in 6502 addr ; reading. Increment it so next read advances to next record. F_READ LD H,D ; Pointer to FCB ... LD L,E ; ... into HL - LD BC,14 ; Offset to S2 field (reserved field) + LD BC,0EH ; Offset to S2 field (reserved field) ADD HL,BC ; Compute address LD A,(HL) ; Obtain file reference num from FCB S2 - LD (FRMLIN),A ; Store in parameter list + LD (FR2MLIN),A ; Store in parameter list LD HL,(DMAADDR) ; Read from DMA buffer address LD BC,OFFSET ; Convert to 6502 address ADD HL,BC ; ... - LD (FRMLIDB),HL ; Store I/O buffer address in parm list - LD HL,FRMLI ; Pass address of 6502 JSR instruction + LD (FR2MLIDB),HL ; Store I/O buffer address in parm list + LD HL,FR2MLI ; Pass address of 6502 JSR instruction CALL PRODOS ; Invoke ProDOS MLI CP 4CH ; See if it was EOF JP Z,FREOF ; If so, return EOF code (1) @@ -1095,15 +1096,15 @@ FRERR LD A,0FFH ; All other errors are 0FFH LD L,A ; Return code in L aslo RET ; Done (error) -FRMLI DEFB 20H,00H,0BFH ; JSR $BF00 in 6502 code +FR2MLI DEFB 20H,00H,0BFH ; JSR $BF00 in 6502 code DEFB 0CAH ; ProDOS READ call - DEFW FRMLIPL+OFFSET ; Pointer to parm list in 6502 addr space + DEFW FR2MLIPL+OFFSET ; Pointer to parm list in 6502 addr space DEFB 60H ; RTS in 6502 code -FRMLIPL DEFB 4 ; ProDOS PL: Four parameters -FRMLIN DEFB 0 ; ProDOS PL: File reference number -FRMLIDB DEFW 0000H ; ProDOS PL: Data buffer -FRMLIRC DEFW 128 ; ProDOS PL: Request count (bytes to read) -FRMLITC DEFW 0000H ; ProDOS PL: Number of bytes transferred +FR2MLIPL DEFB 4 ; ProDOS PL: Four parameters +FR2MLIN DEFB 0 ; ProDOS PL: File reference number +FR2MLIDB DEFW 0000H ; ProDOS PL: Data buffer +FR2MLIRC DEFW 128 ; ProDOS PL: Request count (bytes to read) +FR2MLITC DEFW 0000H ; ProDOS PL: Number of bytes transferred ; Write next record ; DE is the address of the FCB describing the file to which to write @@ -1113,7 +1114,7 @@ FRMLITC DEFW 0000H ; ProDOS PL: Number of bytes transferred ; writing. Increment it so next write advances to next record. F_WRITE LD H,D ; Pointer to FCB ... LD L,E ; ... into HL - LD BC,14 ; Offset to S2 field (reserved field) + LD BC,0EH ; Offset to S2 field (reserved field) ADD HL,BC ; Compute address LD A,(HL) ; Obtain file reference num from FCB S2 LD (FWMLIN),A ; Store in parameter list diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 5bf5fd15723d66f78125ce71db8df35acb6d7853..bae372a585e49ab182fd6a4fa78a013e72c90ea8 100644 GIT binary patch delta 1305 zcmZ8h-D}%c6u)weXQyqP4{(|ohGj#;9MWbQ-Gi1dDAZvL3j2V;Qc$k0ZnX`TwMi^{ zX(O|?*~3J%nFiX7m9CTe5XsYnyP6h?86G$_A+JX%1%-uAzj_` z@jJhB?m4<#2wW}%O3{waFI0DfPVCI}TwELI_;;o=s|uPblbvhpq3h0XTLweT|COsjsMjX4}W` zz5hAjZ8^o~xL;qvP`aett|fm=Zq+R*@A3M5WM1N$ZNkgK=W;rR{4$@HdDS<6$C;76 zQ;sA9Ng}h1ICvs^2+rKR6od*D_Nye^X~F1lTPFh*_ zll|i`lM7Oysh!NFk0P73U(|l~UJTiMliHzzFBtP84?iH~?r}3i#6eUN29ezrzQF_^ z5-|>fII`0qa|6_wvaSxT56xt z19L&@Y!)Aox4Bp`s=TUam1QsCOe^8M*Xd-Ga7{ypQ?-H~gXK0AbFkc{VjdQg Z8S$uiiynJfNwdL3rZ@2_BGOaz$3D)iiY^K(Qk~WLl;@V4)zjLPDz+?S%($IM+_QskZJt zzUQ9vo$s7`j~5EQg@SLX+ux~WtY2uVHPv&z)bIc2jm~UF%w@!xj5u2ykWU^N!wdK( z_AA3mPPwl9r5q$rk`eL@IZ70AMLtI+VZI`NL2BfW(xU9+@>|4+qctlrEpzCC6S?($ zdRz*i&HGDY0O^&hX$WOl3)tqH=PXXG>(-~#X_*JGn8X~4gocJOFJNnnIH-I8*Q8O5 zC%G^RX&e00Of5;cdT3mF7H<}+qmRBz4MF32P%(l7XOfto&UBztA#m69DWk@M0;}JE zmA|PWgkVuSIxYL)6Cp3cMF*K#EMCI=2krQ?Sh|EgezSmBd>hB|AF;gZG4TQJd4R1k zcm6TWzD*S<-@yEQhC6~nLzk&8F4EeD^(Jiq@^xJK66;2)Wz-XwskBJljT-E1xfrhZ z{axObbraWS%r&)kZsNO2B8uDszo+o3 zYyOgXR&kD*6AJK7D^R8s2P3qDV7`-;0}!kLV;d%aZ3kyr;eT*(j+tL8&I{(Z4Cgx+ zhhg}3aH^$;INOBlZNfFh($m|NZ~mT@A8TqAh{wTbXStuWoorsrV^LGd0RuakQ#MG*oP;Di%#6ks%$=?2G2X4=5aL$yL$v%s63?x zVWWIX6)Gpx)Cg1CLI?6(f^&}Foc4?Z%=#?&|ED42Z#e2O(%%=7;G0)r)g^@E?z*e| zS@A3N@%*Z~FR-`rje76(DC%uL9l^>nGv0vP47YeFimYLFrcufi|L#`IzqQ-qQH5UV zgTG1xOpIQ@6v8OxJZFy5lPhJ3_U45>sjk)XL8`NkfP^-?p%Y%C8+B_=tu;VAL2ImS zCIH0H4d@r>8f%OOxkGMmfg%a*6$Fz{ST{L)%c^Gz_hwwmW>(CrRLX%UQE3LmDwSqI etT7`V6_;sW=r*0V?$Qsf+od~nxZmGuwf+ZO${~pW diff --git a/zapple2.po b/zapple2.po index d85250529a107cc85aba63be062badd7fad153a7..8b8304b9afb0951344275c219820632bdcc0fb49 100644 GIT binary patch delta 1380 zcmZ8h-D?|15Z|+9rXu8}=gyvFJ6Olu z-pgsKEQ;m=w@;Z5w z$b^!4M=mNHnsnOkUmK3g9#np|D0z@k_-Pm- zn)WO%iIwxVM_V)OdFpIiB9;a)huVZtFBT7Ddy6Q``7*9jOzj{Vdez!sxHZ^&Gc4aVzjXdNZhwyLLHB)qn0?zC z*qS{{6yapc#c;j<-RE7fvd?}O zy3(^4Y8O&##S{;#)xw3;U1Gl;8CAGSjq$YfnHudxZk;cvV!}0l$2zMzCoDw;mPBPK zaUjAjf;BR#c%Vd?y)sF;Doh&gYe^Li7w3fat?CR}KQNqYE)K(}+r?SAv4^um_+gFk zs%jgXNb1I3)gJwDS_dmf$IsT#WqB)&_`)EVL>2uIf zVt`a@&_(ucCm$M9>MHv2iRd9@vTkfOpT5_LOtC^uZ^l)`9O3@^WTmYyA1AUOElPf5 zw(tu~@gb1|pa>u{3QBQK1j?vtG=3;v@J`sZ5c9En=wwYAcEXyrf?}-IHvJ%kbhST7lyR{ zqfA{2dl55EYW###Z;e-tJyPp60^$8awN#{k(i(i2-at8$q#rA$h z`lJ08FDr~f0RC>)!NlxvNg=;8U`h1kQofINq{B`9jW_cVYOqm&B+IQZ0_W()nmwr% z*I^0LBAXWlKup7gL4k3x2Pw}*+@S(R4CaalldsqqInDV*)f8GNE+-R9)*_X4SZ+{x q0+w4;PQj9AMk2~yeUdko)b45bc`r%`|@3l=&YZRX|t( delta 1381 zcmZ8hU1%It6uz_Bq&u5-voRq}6K!@fh3M8KGCmZC%_{UKB0@oHp-OP}&dlv<)L?d# zNp0+|i4ZAKS`qfa7eSGNmI<~Y2}M$O)i|@v!k$-Qz?z9nzUN0cX( zKIK{Em?A4zr1Q!!j8~-3m4foe!t5&RVNzR)5kkvWcvNE0MLT%syV#)UMdkZ*f*0wz z>oJIESkt(~RnA+CTGXviiCr}hVZ2Zpwle)Yx;;$pizO=Z$PWAq9KG}Q8+d# zdEgTvH^e0ynF%aRVeW$(fpIKOVVB@IAZFfPV>?nG(aee+!UNp=09ymj_(P0-n<|k0 z5p$Dq<|tyjFB4suC4~*^O|lNqw{Y$YtQ*m)Q4C)u;w*7C3b3=~U^w3Q_ju=4To)AD zc~YSer3@v6vUSO|I&!@1)~rh&fe=ozKZO$#Q_*V43Gd3`HsqA}J(*J-^OwzYvVGhf zl7V+jhB`$V5Ox>Ad?z7!Ay^t@2PSoM7iV7PzISkrn_tQHi{>{J=bD2+{yib>t7tih$AHwbY*lJbB~FNY@bI^H*+7a3BKFJ>Tp_MqaZ_(q zXa;WX*{-DIsc6DPxE&ev{xuo*UTs4LS0P42+EGMo_RcFxJ~)s)p@uU>`(ZtVO@6gjbZOilz0^7*|Sm>m`kU zNayF}q~xz;R?6&4sTS1@|LY4S4VCz4zcU3OFaDApG7~BtPpZBPw%uwXNj2I>)g`_Gxh}p5yUrYSjlIn@^AL>)ROv`_dxDz_1+t8sHOHa_;T~qdIRn?+~@8#WcAY1Z6j3i-(JP!TYD`Y zRp_~P_|dF`iO~X>d;oRW&zt?^)M8d7Eh&C~v~ekWgy^(4Afs{<^u+6Aqi9X2g>{&o zAO+e$LjYpv26PVek2OGiOpnuLpol=D`M~58+E@00tm>M=4H^^^@kR4G5tA_8AmSKI sOGF%pX_*>vC^NswwzI2b(z;7Nv{o0^HrepOne8eI;$PUVHrA#82j5ORYXATM