From e91b5a399115a2f5bfe05231c773a9bfd903b8c6 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 11 Sep 2021 21:42:27 -0400 Subject: [PATCH] Finally have *INFO working! OMG, what a nightmare. --- applecorn.po | Bin 819200 -> 819200 bytes mainmem.svc.s | 4 ++-- mainmem.wild.s | 34 ++++++++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/applecorn.po b/applecorn.po index 083c4e12904b54641f2bacc23102c78414c65f86..9f2033961b0fd935f14c32ff8b9e3558d6cd8054 100644 GIT binary patch delta 1957 zcmZuxdu$X%7~j3^%w3W4GL$P&oC1YjD|dU}@i?_Dr6zhwPdF$EVgwc_g5{y0ME)SM zSX=00YSA1kc*Ld=;u5Dh2uTx?((>*Vh2tMg2_!WdQwb%j0klV<&fHNfiOKHHxAVQ` z`~7~qx(>Py(Ovd&-+H8i0@p-I|5YNwsM>Gex8E-F+s1E&-)U|8?dXepvo&8+W{cE* zjaUxS|F}4!7>@QNPy%IV z`b4R@U@oHbgf(9jJqJcr0(ll(=au40@YUQ+ftVhjNgm8FWl526zLG7e@oV2VQ514~nAg>YZh zl5R-4V-jbZx6nYxsTQrW5-r-r>O1*G(>vKZ2uo}|gk@G?3=EeE_smVILYN9-~*r3@a=}uW@StWtB_A_z6`ciNr@21%h4|uk@UJA|coRvC29X zPAfaBqe@9`Jy>G zx)*ZkpZnQTSAQAMr7j-b9|XG0rT=cO4(K@|Hua6H3g|CBduu`_e^*R7Fk&(zG=%Ux zC#3Mmf)pf8N^oL+3Ke>R0|S(w{Gt*$r$jC(k@HIAvck3+^+PBN?}R`l``9=>guK9+ zm@nF;#G?VHkaj7YLmE?91<-CKaz%M|9#d}J9?rly^6sz)Pk&9Y8&5Oe(98ehR?i^2 zedc6AwTFKjg6er9-w(r7XX{f)Rk#69b_@?~5E(m-NCG*+SMm64URJWobwqkSQ5UOI zWBgkYwoU(wCl2!VXN+kwhS95qAl3+-URq_mE8{r@BP8Muj1cAypw2t&BcNG#1V)qZ zaOIqm@s3GnRI^0)KQAs92dc=1r=YDsvVF!X8z#Ktr#76+m+x#i-;vDvg`6>N*zhOv zZey{6H`t&4wAxN9_^4cVM%5xGJuOmWkNakVV3qJ3i`J=4%GHyen=I^&BX-hb{YF$Z zipX24KDwo+*-h%zrZHr*DqOJysdYOwR%aYXILF654(@rnCqTLD*IIkry^=Mqy~iE% z#Bn!orYqh0T~USy8`lw@H1nXhuS@T52zyQG5VxJ$u<6%Yq`P6SHKF~WF&bmChufpt z4|)&Xbn}cq8+zQ@4?S+v!{57j5WckNHIQ9FkY)ZB|SYB zj4P2k)v1wds^(y|s+FEnd!$y)(^~7)UdyuSnS`Z^54^m!b3N_`}O;N&6Jv@ z1BFgLV)GE6Z-E_88+FiYCF%lS2gs_nHFjJqXIJ?wdtYx_{9(%wPZ;@w$za=!(+=$4 zSP7bGr0XdruDqFCF2B>ZG9B-kdhC=uwWbu;l-g@b9W|xtHKn6!N?$luI=c8@ DMK|=^ delta 1884 zcmZuxZA=tL7~T(N?m)h@RnHIXAfOyn?sl%|0SDq)?O9KYLeeI9a!qP%nqt!a(O>Oa z3)0G1tbr-^Obn^EYckil(wRH4m^9hld3WEh zd7tOm(RHlrII_o*yW1g^mS#LJ>Ay)x82j2R``auszZHI~{7&m_vw+X;E_b^+=JiNt zuOZWlMka^#QQd+LPNG}mL3Upwx!4Hv&uBfZc>uII{7W%Lt6fG@i^p)aR2xln?*nkj zYHDY@^T|D}x9%Z0BF}N)aE%g2%-Kg?#7OG9SV|`zfs@K0rnkm`jYh{njyy=?W1zU! ziVc;di>PxJ96S=<8|BvB}x1&KEQ_MUgizwL0AyZmN!XX(W=!#fVZbL~`tV@8r zd9y^ROl+(nS;EQ|MbBr@eF@-LW$;RI)n8fkwlAi~3(;tSA&aVzS2ZMJYCPeduq4bM z$sUG;j?h07ptRtT);=bD4@A^Mjh7u9)gn18p@kcYZcmw(qm6XcI4CJeg2N;g9l`uF zFr=f6F2AQ}dMfTAHnFSA^XY+cfU^OJg0lwTx0$|`ZE#Hw(o%sg~#0=)hv2T(Ru|IOv0 z*~NUnPXI%1SLD5vP|$i;2aNg6cl8~H#N|=fQf)J&=DE0~#;9wahg(*&3o38Ch-a@A z{Jf0OT^w<(hP5^{yI%~5I6R!Q0Fy0t9z9Zs$yU4mhq2wK=Zo0XKN9fi&pmzX00w_o4cRwiGFmqU zV7aNK@VKX?An8#3b4yaFkP93bO!&?(s-g30Xh041tD#FOTSpH}fdz0A_PxXW^yC!K zFlS<=XqOU?8*>WDpvpNUF_n2RxvYk+s89D}$l(p0SukI2=ybrPRf64knz3H5|BqWe z3pKcmg@S4a|2G8HqI8Bt%6v0~`6?#1J8UB+3+@Pv z7T)2?IU~dO=XW`cTHXDuxa=ILY6UI=>o6L{G@wAlJARlf5Te^%gb zxq)t0;SS4_L#y|D6&{y2b~%Hg(~chL;859(1R8Q6o@0`LvqQal+Hr$5YjMC%JIvpa z>Wlz{oO))@(6KVK-5JS7HBRA*CD12jwjc}8lK|#J?y;g8`WV3Zg}b!jL4BmXnIA9R z+_nX$O?R+I`m0$p=bYU|DtqMY({hqX5SzB_10 z$D~6Z8z14=l-RQcF3H%XnTbz*U-(dY?|uuck@Ff|re*kcTKqxJ6i=9WCSsF)qz3K47#fNj1;uB}&#jRf0>b10bt*zelR&PeDch(7S GX3f6^$JJW^ diff --git a/mainmem.svc.s b/mainmem.svc.s index af3c9a3..0d22035 100644 --- a/mainmem.svc.s +++ b/mainmem.svc.s @@ -711,12 +711,12 @@ INFO JSR PREPATH ; Preprocess pathname ** it does not go well ;) INFOREENTRY - JSR WILDNEXT ; Start of new block + JSR WILDNEXT2 ; Start of new block BCS INFOEXIT ; No more matches INFOFIRST LDA WILDIDX CMP #$FF ; Is WILDNEXT about to read new blk? BEQ :DONEBLK ; If so, print this blk first - JSR WILDNEXT + JSR WILDNEXT2 BCS :DONEBLK ; If no more matches BRA INFOFIRST :DONEBLK JSR COPYAUXBLK diff --git a/mainmem.wild.s b/mainmem.wild.s index 506da19..6c388fd 100644 --- a/mainmem.wild.s +++ b/mainmem.wild.s @@ -59,16 +59,42 @@ WILDCARD STZ :LAST * Caller should check WILDIDX and call again if value is $FF WILDNEXT LDX MFTEMP ; Length of MFTEMP :L1 CPX #$00 ; Find final segment (previous match) - BEQ :S1 + BEQ :AGAIN LDA MFTEMP,X CMP #'/' BNE :S2 DEX STX MFTEMP ; Trim MFTEMP - BRA :S1 + BRA :AGAIN :S2 DEX BRA :L1 -:S1 JSR SRCHBLK +:AGAIN JSR SRCHBLK + BCC :NOMATCH + JSR APPMATCH ; Append MATCHBUF to MFTEMP + JSR TMPtoMF ; Copy back to MOSFILE + CLC + RTS +:NOMATCH LDA WILDIDX ; See if there are more blocks + CMP #$FF + BEQ :AGAIN ; Yes, go again + SEC + RTS + +* Different version of WILDNEXT which is used by the *INFO handler +* Because it needs to intercept each block. +* TODO: Once this works, refactor/cleanup +WILDNEXT2 LDX MFTEMP ; Length of MFTEMP +:L1 CPX #$00 ; Find final segment (previous match) + BEQ :AGAIN + LDA MFTEMP,X + CMP #'/' + BNE :S2 + DEX + STX MFTEMP ; Trim MFTEMP + BRA :AGAIN +:S2 DEX + BRA :L1 +:AGAIN JSR SRCHBLK BCC :NOMATCH JSR APPMATCH ; Append MATCHBUF to MFTEMP JSR TMPtoMF ; Copy back to MOSFILE @@ -184,7 +210,7 @@ SRCHBLK LDA WILDIDX :EOF :BADDIR :NODIR - SEC ; No match, caller checks WILDIDX .. + CLC ; No match, caller checks WILDIDX .. RTS ; .. to see if another block :CONT JSR SRCHBLK2 ; Handle one block