From 49c1eed7e5681c3583fdd902a7e24b2a2195e56d Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 26 Oct 2019 00:15:47 -0400 Subject: [PATCH] Fixed CCP parser bug --- SOFTCARD80.ASM#040000 | 17 +++++++++++++---- SOFTCARD80.BIN#041000 | Bin 43011 -> 43011 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index 1a9282d..9df5281 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -2001,7 +2001,9 @@ CTL1 LD A,C ; See if any chars are left in input JP CTL1 ; Loop CTS1 CALL CMDSPC ; Handle space JP CTL1 ; Loop -CTS2 LD HL,FILEBUF ; First byte is length of string +CTS2 LD A,' ' ; Fake an additional space on the end ... + CALL CMDSPC ; ... so parser can get itself in correct state + LD HL,FILEBUF ; First byte is length of string LD (HL),D ; Write string length RET @@ -2037,12 +2039,16 @@ DLS1 DEC HL ; Put HL back to the beginning ; Character is passed in A ; State 0: Do not emit space to FILEBUF ; State 1: Do not emit space to FILEBUF -; Set length byte for PATHBUF & create FCB. +; Set length byte for PATHBUF & create FCB in PATHBUF2 ; -> State 2 ; State 2: Do not emit space to FILEBUF -; State 3: Emit space to FILEBUF -> State 4 +; State 3: Emit space to FILEBUF +; Set length byte for PATHBUF & create FCB in FCB1 TODO +; -> State 4 ; State 4: Do not emit space to FILEBUF -; State 5: Emit space to FILEBUF -> State 6 +; State 5: Emit space to FILEBUF +; Set length byte for PATHBUF & create FCB in FCB1 TODO +; -> State 6 ; State 6: Emit space to FILEBUF CMDSPC EX AF,AF' ; Save character for later LD A,B ; Get parser state @@ -2054,6 +2060,7 @@ CSS1 CP 1 ; State 1 - eat the space LD A,E ; Write length byte to PATHBUF LD (PATHBUF),A ; ... LD E,0 ; Reset length for next time + ; TODO RESET IY PUSH HL ; Preserve HL LD HL,PATHBUF2 ; DMAADDR to PATHBUF2 - will put FCB there LD (DMAADDR),HL ; ... @@ -2161,12 +2168,14 @@ CNS6 CP 6 ; State 6 CNS7 RET ; Write character at A to IX (which points into FILEBUF) +; Helper for CMDNSPC EMTFILBUF LD (IX+0H),A ; Emit char to FILEBUF INC IX ; ... INC D ; Character count for FILEBUF RET ; Write character at A to IX (which points into PATHBUF) +; Helper for CMDNSPC EMTPATHBUF LD (IY+0H),A ; Emit char to PATHBUF INC IY ; ... INC E ; Character count for FILEBUF diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 46fee5ce147ab1a196775c1ef4ea532a0f7e8375..6c620b370cba1cb0c065a2e90f76d00475789d65 100644 GIT binary patch delta 1115 zcmZuvOKcNY6n$emAEJ1Yi9(EU68Xj1)M-#PeCvd10jXc1R4OUTqSCa8Zi)!%#t1}0 zMJ4cfCiA&AtXSZLwo*TVMj#gaItJ8n`)JCqRizPP(ZZqumMpNtef~fdv6y-1+;{Fh z_uiR9^MOP2fm88dOGl2iTFTt`dkGEa8p+5qRKa3; z`N{#HaW2EuVJ$fT%rVQ0#bJ$xVU-qLF$U5Yu#m>z-=*2_Q>fdo(FlB^4G9rAuJx|b zv+RmNy_$bf8~1Pm@3w!>pAhAZAcw)9i1}}|vIeV9fm!)Ypljig77d9&8$iqqMNriJ zGLf2zhI)W@!enM$Q`P1yoXxoH~^dV*LYnt z-%b6``q*Rhg?U=9nSZNqNRER1F7Q6PYYSVNkoX7|-dEt8h0QmX8w*?B1G1`Nvc21sjq+Ntf;77X5PCA97 zjuMu2qV&rKk-j86BStP=zK~a&^qB%7M8Jn&=;!&oD(Ewa+`sc`K%Ze8U->t$w&*il zQxS4dk^i!oSA&%cR25sN)ey!H67mMG^=tGw=k&M4v?_4GR@cDw;b}Ect2F=43;f5n JxewsS&SwdV)(Zdt delta 1132 zcmZuvOKcle6n)Qj65F+%+G?Gsrp7OBgD`5T21ptwGAIFrK#;TwOVEG>3yLUW{wf2eM-KMlT8Xb_Vq$vvZ<4oFkLo&e+$XMxw$db;;YJsnF%33Hda$)pEW zu$Mi2WDr1LnD8wH!;GjHEi?8L zp?CKyAfRT$p3++F3pMG**P5CR`zYgzdN9h85sm1!v z>6MDcsd%z^@`e?U&o+|gU+{-^bk3t&4QdYQ7oK&G$PMj{Ky9@ubWAs#95wZgU-r4c%(_TlF-l$M3T6Y9g=?v*^`t zFhX1LCBlTx6Au;*Qu{?m_qz@8HQ#UW6InLcY9ci1=ie{1Mp(gNab}^aMFht|GG3ay zWCUL&d=~$*b$-dH=tjyfvrE6X&qjL5uI zmK~Yps=%8&W!alq7Mi9|fTq0qcUg8e4^UO>S(07I&lB>nm~}1uZ!O9njxWhn0DiI! awuYBv2Q~COd}`-u`D?p(xu$j`jlQI)JI4-$Dd{T?-Y*H{W`vfXNM+U zk=>U@*&pWZCNg@viB%on8=of1ql9-n)LP%xE3v1@#^Wk^cVquo+l-9^j}dtv-yV#! z!)W(;pMiJ#Z?u-78L?ZX*9~Z>zu9^_aB(Sii=JM><9la_94d?sB6d}S<%UgIwM@4< zLMOK>Xwbx&!C+y%`k@)`g=5`}_rdXz8JFn$CUyf)TID;l>`Yc-dG-yZSv)Kl^jsE4 zhK}aS=^3HFv2fcHo2r8 zP`=Bn3FUfTJ*a%27jHUskG&7Bbl8a;c2mfW4v0=&w5P%6wO{y;&u7oJnS)=0fsf}f zV>wU@_Cf>lT!#w{$gc1}hy8Y&LCUo@hKSd`&}L5EXIFq+$vMsXPA!FM(IE$B@3PoLrX@kbNPtyNG?^n!@sI7%Q6rPRO_SmtV+G=g9hTus`DqOWx3nYyb8I%A*AaFq8z=6sj(F3h0;^K%( ziGjn$8#}glY~}(|0}_%Q-qU=fZLI%>JdwMhJQKl$)ib5{(0_F8wGud~gnG8q!5y2%JiaS8X_R{#s(IHCug$`=R zwdfG#dakusAJ+(Gr!*W2PE+qR<+3K8pQicsMG#)nh>yLZ;W5d_KGbmk!)lRlX36Hh zhq`vrge#f18as_yk8*}8m^Nm^jVE2)njaXYSClbIPP5;jz3iX_G0y@X3xF)}f3m~^ z$byvgvAG32Z10R(WnV+u-zE)GE53SOI)oh4FAE#nYo--%(ntf0>Iq;kA~F_QLDiT-3!r&*6sqIlcNoo?p#-YejyYu{^$4nrC0- zaX4_kP_5>piAkkr{>#E+yDasX+e`t1TtzfTvx_=7q>nI=P>A|&;@`PO`=h3Op;XC|mR3GW0` zbo|=fW!-xL@mctA>-@4_E$A_~l0mU!N)~zFL82s#zFS`_C+zBS6(J-+AV_UoD<>p% z8IWW27v&Vuqt7=)n5Do}u#j?`d{OKQHzwl51