From 504a8df2955f69fd5e5c53a60f2cbdac5e874905 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 27 Oct 2019 21:06:30 -0400 Subject: [PATCH] Fixed bug in F_SNEXT. ^C now aborts program. --- SOFTCARD80.ASM#040000 | 26 +++++++++++++++++--------- SOFTCARD80.BIN#041000 | Bin 43011 -> 43011 bytes zapple2.po | Bin 819200 -> 819200 bytes 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/SOFTCARD80.ASM#040000 b/SOFTCARD80.ASM#040000 index 9d11716..19c512d 100644 --- a/SOFTCARD80.ASM#040000 +++ b/SOFTCARD80.ASM#040000 @@ -19,7 +19,10 @@ ; ; BDOS TODOs ; ---------- -; TODO: Get STAT to work +; TODO: NAME2FCB needs to generate size information in some cases but not others. +; Right now this functionality is just commented out. +; TODO: F_DELETE is deleting only the first matching file. Should be all matching files. +; TODO: Get STAT.COM to work ; TODO: F_WRITE bug turns out to be bug in ProDOS 2.5.0a7 (SET_MARK) ; TODO: Maybe I should eliminate use of "EX AF,AF'" in BDOS since CP/M apps may ; expect exclusive use of alternate register set. @@ -550,6 +553,10 @@ BDOSINIT DI ; Make sure interrupts are off LD (IOBYTE),A ; Initialize IOBYTE LD (CURDRV),A ; Drive A:, User 0 LD (FILEBUF),A ; Zero chars in command tail + XOR A ; A=0 means close all files + LD (FCMLIN),A ; Store in parameter list + LD HL,FCMLI ; Pass address of 6502 JSR instruction + CALL PRODOS ; Invoke ProDOS MLI LD (FRN1),A ; Initialize FRNs to zero LD (FRN2),A ; ... LD (FRN3),A ; ... @@ -559,7 +566,7 @@ BDOSINIT DI ; Make sure interrupts are off LD HL,0000H ; Initialize LOGVEC & ROVEC to 0000H LD (LOGVEC),HL ; ... LD (ROVEC),HL ; ... - JP PROGSTRT ; Run user program + JP CCP ; Start the CCP BDOSIMP ;;; CALL PRHEX ; Print sys call number @@ -639,6 +646,8 @@ C_READ LD HL,RDKEY ; We are going to call RDKEY LD (CMD),A ; ... LD (SOFTCARD),A ; Do it! LD A,(AREG) ; Grab the return value + CP 83H ; See if it is Ctrl-C + JP Z,BDOSINIT ; If Ctrl-C quit user program, go to CCP PUSH AF ; Preserve A (and F) LD HL,COUT ; Echo the character using COUT LD (ADDR),HL ; ... @@ -962,7 +971,8 @@ FSFS2 LD A,0FFH ; No match F_SNEXT LD (TEMPWORD),DE ; Store pointer to search FCB LD HL,(CDBPTR) ; Pointer into current block LD A,(CDBCOUNT) ; File count for current block -FSNL1 CALL CHKDIRBLK ; Search directory block +FSNL1 LD DE,(TEMPWORD) ; Get ptr to search FCB back + CALL CHKDIRBLK ; Search directory block CP 0 ; See if it was a match JP Z,FSNS1 ; If so, return @@ -1592,16 +1602,17 @@ N2FL3 INC HL ; Advance source pointer LD A,(HL) ; Read character CP '.' ; See if it is a period JP Z,N2FS2 ; Prepare to copy the extension + LD (DE),A ; Write character CP '8' ; See if character in name is '8' JP NZ,N2FS0 ; If not, then no substitution LD A,B ; See how many chars have been written CP 8 ; >=8? If so we are in the extension JP C,N2FS0 ; If not, then no substitution - LD A,'$' ; Otherwise substitude '8'->'$' + LD A,'$' ; Otherwise substitute '8'->'$' + LD (DE),A ; Re-write the substituted character -N2FS0 LD (DE),A ; Write character - INC B ; Increment count of chars written +N2FS0 INC B ; Increment count of chars written N2FS1 DEC C ; Decrement count of chars remaining JP N2FL3 ; Loop @@ -1943,9 +1954,6 @@ N2H2 OR 0F0H ; ; Need to handle this differently for eg: ERA A: vs DIR A: !! ; TODO: Parse * wildcard and generate FCB with ?s ; TODO: Implement REN, SAVE commands -; TODO: Implement support for ^C in C_READ -; TODO: Fix DIR command to use C_WRITE not C_WRITESTR ($s!!). -; TODO: Why is DIR command giving partial results? ; Get a line of text from the console & handle it CCP diff --git a/SOFTCARD80.BIN#041000 b/SOFTCARD80.BIN#041000 index 688bafd58198dbd10f644ff3d14919dded21c760..17c96b6c5d9aa5133265a88a8fae0727bdb03e83 100644 GIT binary patch delta 2828 zcmZ`*e{2)i9e+-YXG7w|G0l*n!562ngbvs-NaiJm0fHh3LF?9S0*cqInYMQf!c<@|Ah`VX^5K(Inv_H$F6x;$c{D{v zQe=0E>`4**sJ<2v2-Pn^^**FD^F2o6|uCDX6`b3W8<-@SS{;g{p>SrBl}f$F!~L4KYNO;e8k4% zm*S&wZ03<9Me7$B0~(4-SEFmo7SYmQqbqD{B{$vlR3EuJal()wGR zF{@QGWF4}hYFGXDL?Vn07)Y*Wf?Z-E;wG<)#8r$n-4OLZafL`#x)AXP>kx4ySXA{7S zGX#~gtwOH)GhCWH%T4cHhV)lCuoq*LZ!>A|qE0^#`*?;6J}$k^So$~S=_^0BbRcR7 z^FyW>Iq^ABr_3NfWUQ4#DzklV@~0wsM9lX2v)d|kFJJ$Tm?nQN5@*bev}@1Dj4il9 z^4DTbwN}E8io`)vyi4nNOpI-O-fx_cx5i+LU|bPACK~;6M+~RR20zL*-}9;e?|B59 zh6c%FbDm!piC)vQDS1wN&l1mhzFzW-Jz{5NmcwEWT8TPS8_9QL`n$Bbe^#1m*dirM ztWUv~RwLI}_Cvi8Uo0xru+nVo)2%b2>gdN6R@G{_CbzP;s@voZY|w`;kUpfkokmmb%UFq?SHWlGc-tk$bLe$?_sgI84ua4 zWy8T+TW6*E9$QNFlbOCQk{3n1)6}VAVHefsmeBM&aeC)F;?JfxPktdjz2%Zf`~pWl zR|ixaTtkCoI$m1YW4i&8=d=M!Ja1)BY(>o>6=!vOF{{6hH@zUmQUTE z?dYa#1Z4xEHD>27gM;5^__c2)aQke+*<&o!RwbMutq5cTiZ|f|fxICRP@YYMR%19D za3D*?Xpq|zp%!PiQLcq89XnRq1ZD~mq<#d^xKa9tfmVa6mJcRi8gTo~`69VD@loGY zRmb$+TGUyE3O_d6M@^B5n*@xR!zso>osYVVXvmYZCK)o?XDKZ`h(#k3>G@Ap8>NOXS ze8xs?Gq>%U+|GFe6`@7Lax<64*9hcfstO`F$mKJ7XJR4;-CAxU2hb0|M!T9;;fjHa zM&H9ZZ7aG1syI~W@0+oHnvB@#s2;UjwKk!GCtGsUT#0iwo=4z1xVUjk(W13&P z$Lrc@%RuB329f4%iGiBIvu5 ziY8!eT@i~5`q>iJQpC;*y5yU~kzFqDHs=o;4ENQNqgPI(5o*4>%YUZ2*XW9lo1klZvp|EY{9E{}6L*cTSbL-!R z@q4?6!V724Vb04Y6OT;(*ms7)<)#E^+To$F9q@ijc5C2?>9`1{u@8N)IC%eUZ~n+a delta 2840 zcmZ`*Z*UXW5q~EOMe=`H#Wl8TbUu$=M5B_MWI{DUK*(U)2HZ653@r|LLXv@j357Hx zn}E)SMt3^tWa&=rhjvnfOU6LVD8UJ_r_(_0h|9@7!0wnfxN55*HZ9asl1cc`sn6Ya zClQaE+H?E%?f%}|eY^Yi>G*Za@#~i21%wn72J(%!i!B5}4V4iU7QdJMb*7qG@X#N1m1fTpjb7==@C7mT{O4vYHwLn@2eEe2Q3&9E}kn zO-F^f9rZ}tDZqY*Ipv338my>u&p_THf-fqVnzNj_c5umBC1T>?#BjthE`MtBdDACG z9^*`}A&l8jIsGS*J}qWL?(F7LZ9!=KNKDhyB6;0FZ_R9o=$kM>@{QsX@yb?ZIyBN0ds@TI7O=FFJFsj11w{x%m6J!@{laKCk2VDM2;Uk z3spkClwYx6xDQ)-YLJQxs{&F{ja0HlQf=Laz^^+dAK}L;*U1#`t3_|owMZ?uC$ZpB z-d6{LI;46)NY+SDq6?PHZs`SnRfie+m&ojkjoO|63H@Jr2m=r#-{QX{^wU^vWabv1 zHTU>bF!N}}eVUirBGt@2k^Wf3S$;2H&w20zgPu>sx$k}?4$M6<*&LnQG$WFK#z%ip z0{f$22ndpY8ZG#-C>@~LlKF|LUg8JNMctxg;IJOfhxJ!cPel54lq9C5OVP)O+tU4L z1G6m_(%qRAF?*L@oT-V~vq4l!Whn*4?4XdT7^SR;1-w|CrECa;x5e}(*%u3}wRh@8 znXTp;D_-<4Y%?E3>RoWU9HkFZe!WuuaSUcux!ahQ$a`aVL$eiab33Y0XO(R&qFh~Y z=`O@N^%9^V-J5wMrmvOzKw!Vw7Yj61S<94A4C7t-Kbu`SDUHWgz{Q433=LDe#zCx> z3vj_n`sYgo=a&lTUo1kTm9Gkcg&as!m*FR>)z@dd!scQ5TY`%!4U~+?l#s^l08T$! z0lxl7n3>X^iB05oz*sL#xy*Yqx^b5_8g2*xadx9XXO-s1{aZT`_w^v~fr{%Ed3W4*9O*th z9z!=^MK7yRar0Wy?I^IGeiqR?5xq+i;FalPZ_ zJMkOtpmH*<-HDSuXeOJhMmB^&nZLy`%$>Oz*DmxbqjBvkmws0=z2$771B1SZsUR;J|5+7sE=l5dwk`=jam?Q`8X_9Xpd8Ja>ZGtr1&}FldSNcDNqQKl*mi^;2y{ss zNMfGJ^UBl71`jUlZcKVGIflt`On!#RYnX&FVKH%I!eJ7@gvSK?02S8_eQDVnt%aWOZcs%~`g()Rw2hgwc4 z&?*S{5Qsk5*WW?3oB~dMrN6_{a%vCeFZc9!6t|qh7z2nI1AgU~{T)Sy0#KQO{the1 qyG`BLg~ii{FOGi*TVosA)jV_ck6;48Sa|)`7yQJ(hJGiymj4%eNGGHK diff --git a/zapple2.po b/zapple2.po index c788078592101d57561b1b575fbc37a052fb14e0..06399bcecf5195390871ceba962ad0c8c38f0b6a 100644 GIT binary patch delta 2913 zcmZ`*e{d679e-(eLqglMX`nKJE7_(8ww!>A&>Gu-z`!w3%6NL}07pH&I(kL)1k!S) z8z`6EZjx=X4d$E<$4xoUAE4n7u2eY5bZ~Mr;U-n*ETH!I1E*WRZ#U^d z=S=4P`g}j%@Atj$`@Z+q@2CBK`r>bhB4RN@AE2_mD~ZM3HwpG8VS-WsrEu^jL2R8h zZ5UigkOd}F-CzkxmKHQLvi~}?0@;tnRHxvbJ!J2Usg11tBms4@vC!UzJ5xVghH97P zNSF!?4g`Z=TR;w-WD<0rNCibT6{L^GXkUzOkI@}5%8#ll5QR|H5>(|x$vUA!tC{Ez zP&)#*C^NF|cDH`#AHN8k52OP9`hP00j;&`K*`4fR_5{nZud#2li?}_Uz)9R4Zg0<6 z&ty*p@8n(llY9;T6}~_4b$&m8iZ6M{2ZNV_BSCEDVZ4tgt4OU|L4o)co?Kf{#K!-| zlPgSXO!*G2U&;Td0PV#eq4R3hp~%#50?!15&y$=LeyFPf@t$l9eLWd}DG zR^uU#BevSFR?bGfBcpA}U`U*-FpF?EP$ zy30oYM5K?1=`L4#Te0d8s@@b6^v^`Yy&(r8GYx z#x_3Z(oRTQdtjHKU+g(1YJRD?2gk|;g|W`}eCq#u9>%7jLel7*=T}6kQ}?V(o>ty5 z#B-jn{dlae ziS%0{-fQMmF1K^)b5p4Oy*Rb=P4TBwnnh5L`orBsQ3z*(3V_ zlBbn!Lp*P0k8MWzAsNSYdoHfO3f4Xw5B8Fj>0bPoz2ti4VbF-~$fmRprQO~&dSfeq z^WUYply8J^{Zz=(p)FKag)AT~cBkD*N5}#KX+y}Jd@AH!jp4N0j0_d6T51Y;>n-hC zq0(aL5Ljswn3?e*`9oNb4JCfyZqS%A>0k(kZktOV7fGF=54$Eyo2T|xp!RYzayvTU zXeyz0tqAHaZM8BKD%a|z%YayJUk-Vz%ZZX?G=%w%+|O)DUJ1z)SqdvS7|y2D*3ftcnziBa3_#xp8%=UThHC~c8+A|EVp^$RO8_*$ z&13;iKfZ*t5~&@yKt%{`_Z*E~RffYJA2cIjPdhYYVNVA%6Y=v=vYD|7)mx8GGO~Iv z3>hzXsx?BV`WfLkw8xha%i;In{>qWp-`!O1koCEBf73S z76IaJ*v3(JNtbqPVpPytZjTD@xqQhhf~pDB36xD|Dv%jrk}@q|noGGWs7i10wxE6* z*IpO2@MOLuXQ_|+vNM@XC6e8cqaLX;J}Z(>Fl&2d%_OzjCP4uSN_>Bx9!{XXNw@~Vvue(owq4T;1nUH=AWKtTQM`ozD zPhguRS?9@c7?AX5=&y``N0XG%yV&zMuE6>9K?DM@Jc=LYHBtChGQNaVWU4HI6f{P%y$*|HAQ^ytGmPWQPLs6^r0G6{ z9}+aI9**L^kn1O3h-QIqL(gTwQU*?Ja7+Z#*oWGm>%990xBxB&|9J7^ s{`l_(@BfH&ERIJAa$WqwtE7c3xE=eeWC^ zWnH50`@Vbc^ZmZ}eeZqW*MR^N2r%b=Ybq?UA#@9swKkR5jt!aEArk>34@Q3fkjb=h zj`&W0fr-o`2)e(RBun$$PWH2Xji~%wLN!M{bNk9u3DwD#A2k7$*W{P)#mvl0wa8JM z17Rp2I8gL&TS5*V^)qJ@%-ICrX{x;tc?hd~jjtBGO!Q063ioH6H3W% zvk(tuLS4^|WvHfvIuV|j&8F0dpv|QTj;TWgDznzVAyUWj1{#tG&ebi>dP|slBK3DH zb9^qUSAJMchw>4bi#~Utbp>S_9=MxXZH{dCCKX2P};>Y!y@%TZm%_*YgjaF zt>LKCNl%2V@qZzfe<7+QhiMNvh?U4%9}-ebSeR+8Me23|Hax`1KjBhf zMwxjU@)r_ZVZqRx<&3p`i`L2^0}n@rGmdb%V^hx=PWhz~&Ttzdnemk{e-fF~V#a6B zY${Ucg!)g!6f-GOAL-~V>2)D(113n?7;;n^(K;hiCv^3bY4-v(-s2Iw)+s$4f(!v) zV$eRw_;BBAGUH-AqAIK zDdeIODOA&O#T?KDZp}LWFh5eZMxuFFH9F5!Bc;R=$AU+AR}Bbikm3L#RdpPSbS^Kw zGx>a!T+wa>|3xbELcMzDe}ey49^wE5Nw@f~3H~Hj>$$nbXN)~Q7mQ3Ak)Py~Edp8T zzb7)Eia62zxth+QA6RsJCeHle6R~&Z@$ts+%!VnE`ZGTKgDTh?21`JY^o#JkBMTA& zn$78-8|p=l;B3?^NCyt=p-<|IKFyw97O@=E z3er^(OU8?e=nO5Rhy@f99iioA5swp#Gqf3D@YaadAh{x*)s_w|KfT3RW5SCbf^BBK zNVyAsm!Q;s+O3sIKa0Q@U1HZi3#HwWyT0ktmYLQ{)KOtxjcD6JxOx{O9aJ8& z0rUC-L`wdq;F-&UM6v0PqH1kz+9_-rkiI9_=ps+yphOEP+!f&X)1~0-Plc%o_36l1 zwiV`DVJr)>HrPZ-DbO*XZ>Vm;LNw_e1_W+sG8TZaxSwdn(sKqBA=K9RBX#YZ^Xr zZC!=UxGux%cc{a`IuDTY0P=KHsBYZK)e})yCjuwvsFo+~jJl2?&4uTq=mxClVr4pN z+%BdKdDb$|AZ9yab|eLnto9E?)s~pPRvm}|a4Tf&DqZZ;4voJT)!J{q7rkNk$|s}h zoha3brZU+|WJVa2{#z8o?CG0P^(_UreN^r_QUFvRDpxBU9+ofoP^rJ3|S`>SQfhXopbZTeIO@g*lM$Y++tXjD46jDRAg*ur^=vFJ9ZGKfm*94X{ai6~Ls_r-S_qEbaXo zv{`yz#~Cilz}sSAk&slK#kMDP4x9#gzI1#3OEXDd&hwxlrMwtk3^+wIONHX`Z{BuCmAQ(bZSVhqcc=VacPIzBIJ$jQR7 z(Yy1q6**aVZ1kV=vhU_(@5V-dD8hbvS(oqHkuahR&nOr(#VJG>mk7700F-(quCD7b zICfzizqmDV_|aqhxKR;NR}2Mdd@1ELRw)271m#ZnPOf^5boilY+Yo*#&}FqZj(LBM zm!FE)IdEkMFzLkPC?>}+`6VW=ViLrJ#l(&Yhe-$%9uw>Y)La0X)AlLgvv9qwgXybr zPtl-sE?(!yfUHvI)Rpq@;yDMwj}&e&pT_5%SHL$z2`?OImW$X~y$h9y>MBv5jYA|F zF$?E341aZQ{lu&?VYuScs?%G<9neeQ{A1wLL3qd?6SHHAVn>%QZ|iAa(sW9Oc0s^E zAo_4mPdm|c3OMQIp7y+^Q@b#KrL(8Kpy?FG=s?Wq@T