From 4cb94bb3aaad32b3104b947feba3fbad15af0be1 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Tue, 20 Jul 2021 23:47:30 -0400 Subject: [PATCH] Reimplemented OSWORD(A=$00). Forth works now too! --- applecorn.po | Bin 143360 -> 143360 bytes applecorn.s | 88 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 58 insertions(+), 30 deletions(-) diff --git a/applecorn.po b/applecorn.po index 7e0f6c30f9c65114f210ac6797f5641d635503a3..e600f7fe7016552d0dfa64a28d3300dee3b9b386 100644 GIT binary patch delta 15636 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 *3x{BtxKK{D~749%98VC=XF9L;8b2-1`n zM7d+^tuP6!b&l3-Hnv3oRp#vF2Ql9iU%_N?PDo;o+87^v2$VW(Y?;Hvk6p_nw2cEXrGNa< zBFU|fkJoDSP>BlANP?*6V5v}`coQ7VL0~ln(GIKgR(_c&Y^8}UgPr1ocWl~Ze45&{7J;M7xwZ|Oc!*n%z56{Xv=qv zQIy%f@1qko;Dp_=xCZnv>5sk>`Tu}34#gQ*p?>FWYtfJK&Ar$&-qXc7r+CVo)po2PX6i)W0#JH|tA$uuezc?A5$Wi`)=o^_z7m9L z_X-Hj#7|_pix^KT6i>;Nfw9aIUC&t=rjcOWk8omY&z1><=pR*q{MiLUC^501m6aK zty?I9iN+aJ3G>@)fM^jBcAe4C^Z}aH?kiZ<6)b4KtD6%XF$;}mjqe;Nv`7*wmiNvT zUct}?SKuFM!iRYz{4QsaC)5=xVzB0g8p|iwig4+$_JwhC+myw)Y~;cW4A?Ze7*9Lv%;Np7nZ;KNujNyOy61FF|wGVy9RUS!@ELjE)6hxt4Fm zUh`dtv5H^k_44DfcY;5$$2mhq>?iiG9MRCR3w_a~+p$Q#npUG{3x+RqF3Q7vgsKOs z0v#(|?-kQzBzrlgPSo5v?3!aD9lV5*B zG20W1b<}&U&UlEh9XNN4WaE9YO4BR3?86KU7?wunp z&cwflK%`qZ^_=7=wO5{0+!NI@sQsjZI45y@WYAloWUV)_cFEud!Qf0h(ONY9#338* z5uv6VA~(=&fvZ}5=2sxa*hgU6YEL6Zjj@~f2#zVh%ELq#&L38TMegP>;PE5N0nZd+ zM?zwJoVINZ5F{S*Op#butvgh-fP5HXEVfRX((d4jqs0@9bWC@gAe$ZN0=9i#j7j^6Z@|IWZE*PXG5rKptEF>ksC;pW?-Lg zJwg?;$*k>o<|iT~XG-EC6CT9qJjA_=C-a(FY*KIrbiV-4n2$I~6_;pGnY$h-q3F@X z^HtI*eTCB+?|BYm=Om0hSjPphixZjnzr6$ff*5zQ)pqs9En92d9&FUaKgh_i>GF*xK7{dd z_GetT;AG-K(&AruX}2I&6l-F6VMWapUdX5#ZkW#3Orz%1fuT@sToW>gNSDoy4WGlvk~4Wy*2j{ehBbC>yZq$G#O zBxTNvS6$jCVo4DPumYDjE#BC490bYnhYMFAcN2dfLOO(&@p~_deK;Y~QR*#omU=(2 zM>}X1TYT*ukh)-Wk&YeSUZK?csTZavaKcJ3Mmy*eG1cCPvM4vXYpj!|dJN4-$4g)x zRR%Iws|MnkvVlb!n-+*|(f%e;hZM2H5B(i%lWMbpc%#3A5Kk-)k);-q11*7WNBV|Z zQdF*O_kvvO{>V!^918P4Z<~#9=Qqs!Mi z)5Qp&2eapCrnYgjfsVwQyPP|`U1h3rru;^kJZe`A+?)nPq9Ej5*6Ap;I$K$R7CNaUPZ@msoBRX{!^z!10 zRP$8&bKl>^UXid1b;vh{RYtitR@}<(7MjgklUCIc4FuWB=t{bljv_p+$ELXB)xQOy z6&JsB*CIQ?RU#}f=q(-3fRwYkZzhcM>CT4WJN;3^+pKie}KsYA1e zTV>Rc8ZX~)CBghdWL~car zL)Q)lZhsKO$99lY5B+{y0q04y)I)KVX?jZ!>hs}q&v3^p~FtxM06j*vEb&Lr|l@htWx^^UNMDi zQ3zwCAg$Id%a>-DbpOF-M|{rX2DRG+L9jC4}2F5EK=8MmWbpBWzRK=K^Ui zOxV=Rk7J~WDcnPu*n#q`?!{szb|0CfHr`}itb|dS^y)J&ZmQfgP#upX+lbP;ILTD$Oe0`YAJ-G^o%?jX(^>=q<7*45EDJwH+(Y{4J4O$wUEP! z3FIk5nPZ#wBaDp}lOG{QZP5E>ft9ksfn2b66Ab$)EFu{MNxdlNOW#a6p8``5!%3s1 z`VXL+_+K+oo5_DEnal8>UC7?%Y^L-(#@+~zKWB5C^Rk<}T4>vhQBfwZ-h6k|Nw@+3 z-ZuqN7iD;6{wsK^UVa!u#hme;qln%HG2=bA5O-tTGRjChi$<4^E;sRu0hxHM_&Fb+ zH_9&KBHr&JF;qj%2iBy(nrJoL#PAsV(Ywo$R^x~y6mUG#5}?xILkNhqsVKx3VXXUeS3G6k|sxM#vhw;ClCk2BsL|Lu-24b~n$4*7Q>rtHReHGX8H*TR8%{^GO6$6L3piorg*to>G zbG7F7TUcnU;&BBz?1rLPh1GeL3|%yKhec~e`SO{qQEo6O{;H^SJyAyGp=l!7Nj?Vj z9MJDYiA!PP3apXIHSte??=1QqalN&5$yRKen+*OE@OLTNvFpbb6j_og(Zt;tpCSNP zOrl9cX=Q@E4)&#P~^FsC5M$_IOe z$alzq8ZlHj(wqSAP&{O%TAk5X9Egct7PyT+DV9%Y zYb_SMC45!hQ#q{OVVOp+1RJ(I>mJOw;#G^#(zd^i(IXkBTBk}#(6)LMuenDu!rTN^ zd|)Hs85T^dO$g6}W}n~EQ+Z*FBVM0?<35aTGDg6eSw7*K(2&dX5-ov`(dT9HIgQzS`PTd1tF5Mx(dP_q9M^>6=3d4o5I&H8kaHCrkv@C?_t$ z-$dnN{E0-%g$ZFq9A&`^%1?-#atZ#3#bUWITV#onSftfYRMJ2L|%)Oy1hJ63mQ2!a z+TcXqKtN1-*zS1#opxYgB~!r?corN>w*P7!g~|5cq8R%kHcAohvO0;GFayjt@Io+v zyT5;cI1FI7Lh~+R2=b8!w$m+mWjoMwfF8Re%Kauzf(t<`%C@9%EeKKAxa2K$Wo@HuX;5D)g~+a@@=m9J;5R<2qNAZGEj1pNBvA*^aKsw=(xa)vhfW*Et* zxrpGkB21-#5$f#J0^%N3(}#Ea(UeON4umjI zh@S&BbQ4Cr?~>rP|% zi_hYFIb+iYUjUH7*b;-O05Tc73D%Vf5U;nU#E!Lq@amgD4`u-IB##R-F<1Z?KSVJZ zP1c3y%hAB|w8W8J-J3~Q5uI| zp!n=!%fz!RYFKLBd@3Ss0FFZItznf^{~Uz!EM1sGV0D9lY{wHFkxcw>P$+;LCMp#b z<|o*G=!?s-pmD z{9^!J0;Kmp1ZWWlaDjg^z;}_PFY^Bm&}l%6{c`}h?D~X7em$TYfEN2LfLib@W%9oO z=qtNPr}Do7NC(K|e+|$eyUC#P{{c`MAd_DJ6k|7A_5LD2PXn^}D*+|hEn2mIM>Qv_ zo&`|juL1IVKze^8px?vkEb<=*v=`7~{~17g>{iPne#I8H3{)DmKWxvKJxQ74?J#)% zI>1W6>UfiXBj971<2k$5X!h?$<7p5K8kPS5;3~jIv&#P=U|X-7YTZ!uUF=^5 zIJZDagW0`{rx82v+fASwxInw025rf%`Dz-`DbsJbqu9 z_&6k>c%$`C1;13*xt8DPUJn`-c<%Ah&<-l%B=}zht5m~rPz}f6cZqYA;Zbc>!D0_L z9tGzj&pF>>#Q6@Y=Op+mMGm5`_W?=e9IgK_kn|F_szA9Hu0*WqSpDZkR%s~|01Yhk zBzS~)mD+s%b8wjW^C`p)XBz|BO{R{lS4UbM=asQ?utN@l3&$(6!#SZy(|% zrz*h+b!e0O=@Q`(47TlqCyh6n1CIh#weM*^MMJpU3}{|Ajct4#V1zFr<#1i}k5RLAa{S)@1b!swN zR%ccXweqaS;Nxi5VtR@(1U01EHV+s&vVnlF(e@G+`vYP!yv&%o7J^I}gOo#;;f$Xs zyAAWD2%d77M%(l6kZoPd=M)G!Zz5H>vQ4yDtGZ?F{`dF$+*-|| zbSBIoeLR3AJy1g`dU!tx60=3)DUNFzR7(z`FN73_?y!+e{Qk>uS#6L{wY}E;O>snR zFaMv|nnR;CXsrPyIz&1isA)_WtdMp_%Kl&VTIi+ct76#(_7N?$aG4@H=?M8|CLcfRlVAFuP#&wFQZ6puH>lHR3UX|QbjO)S8|Yk@7tW*ytFyhML+vBnCgHifC1gjT&LDifoLt< zF@0oX>@}ITq#_5t* zDbq9Y--cwTF3nLUr=(=3u3DvBk(H84Y=<_9BMjBA%KUYXa&>0H30zVQzqi(6lG)@{RJ2fSBSvr@Qs>DFCS<7NG(lap@`0AY^U!=sBlD>wv z^z!S1qvXmKF znXibnLp>sGJg2`ab}1{gD%WH!O@4WG1`bN(Y#4cvq{5=mkG1{riJ!I_^{{|lb~ oPb|MLVP$>n|KsQGW9;-se~$Q{_;s>=*@17^sg3MJSzq}71)MUBHUIzs delta 990 zcmZ8gdrVVT7{A};VhfH~r9O}?I~vIbWULY&n2kl*G)>$r(I%Vxp@r0FvV~NmaWO`2 zGP*e2U63vKTbw5{!o5c=+xTOJVyHAg2lSOCV;HDJ0v#<&W?b00vKg{3C*R}u zJdv7OI5V4}|%$_3O6@4+J4o zX5D~mrHz)ImS-S(3Z9qFmk2A`E8abPQ0ftO2shorLfK0j|7~AmWrewtDK}?{3w!># z;zkBy2=t3zzoXs=LW6$a1|Z|@gI18)fx#jPny_p5MQFtG@NPKCx`*vhu*ds4E%jDY z+4}}9RX>}Cs?ENLdx@G9QKShaN2G4WEYhfwC(|(gmU7bYZ9|y%sf&$unHhe6BXRs$7@TN$y>i$L#cHGLE_+%v=HERFPEfadV2`yqQ92Qt7%|bFdW8E}fRIDgYYP@U(X<8GSY<$scZ z4)MlC5Sc}E0<&By$zv~kvRN$ZkN5W}WOOV*0=L5o2?qn@UatYN+AGKMK*RN)7Q-EE zYu|v+wp;KYpKtvSW487!IXKedHhTd%yr8mlSzw1!ppk(B$m=1FjdRr>7Q_<-hZ83#$9g$h4x6_*PB0S}Jke*gdg diff --git a/applecorn.s b/applecorn.s index 7e47d75..efa15df 100644 --- a/applecorn.s +++ b/applecorn.s @@ -1361,50 +1361,78 @@ SCNTAB DW $800,$880,$900,$980,$A00,$A80,$B00,$B80 OSWORD STX ZP1 ; ZP1 points to control block STY ZP1+1 CMP #$00 ; OSWORD 0 read a line - BNE :S1 + BNE :UNSUPP LDA (ZP1) ; Addr of buf -> ZP2 STA ZP2 LDY #$01 LDA (ZP1),Y STA ZP2+1 - LDY #$00 -:L1 JSR OSRDCH - STA (ZP2),Y INY - CMP #$0D ; Carriage return - BEQ :DONE - CMP #27 ; Escape - BEQ :CANCEL - CMP #$7F ; Delete - BEQ :DELETE - JSR OSWRCH ; Echo - BRA :L1 -:DONE JSR OSWRCH - LDA #$0A - JSR OSWRCH - CLC - RTS -:CANCEL SEC - RTS -:DELETE DEY - BEQ :L1 ; Nothing to delete - JSR OSWRCH ; Echo - DEY + LDA (ZP1),Y + STA :MAXLEN + INY + LDA (ZP1),Y + STA :MINCH + INY + LDA (ZP1),Y + STA :MAXCH + LDY #$00 BRA :L1 -:S1 PHA - LDA #OSWORDM +:BELL LDA #$07 ; BELL +:R1 DEY +:R2 INY + JSR $FFEE ; OSWRCH + +:L1 JSR $FFE0 ; OSRDCH + BCS :EXIT + + CMP #$7F ; Delete + BNE :S1 ; Nope + CPY #$00 ; Begin of line? + BEQ :L1 + DEY +:S1 CMP #$15 ; Line delete ^U + BNE :S2 ; Nope + TYA ; Begin of line? + BEQ :L1 + LDA #$7F ; Delete +:L2 JSR $FFEE ; OSWRCH + DEY + BNE :L2 + BEQ :L1 +:S2 STA (ZP2),Y + CMP #$0D ; CR + BEQ :S3 + CPY :MAXLEN + BCS :BELL + CMP :MINCH + BCC :R1 + CMP :MAXCH + BEQ :R2 + BCC :R2 + BCS :R1 +:S3 JSR $FFE7 ; OSNEWL +:EXIT LDA ESCFLAG + ROL + RTS + +:UNSUPP PHA + LDA #<:OSWORDM ; Unimplemented, print msg + LDY #>:OSWORDM JSR PRSTR PLA JSR PRHEX - LDA #OSWORDM2 + LDA #<:OSWRDM2 + LDY #>:OSWRDM2 JSR PRSTR RTS -OSWORDM STR 'OSWORD(' +:MAXCH DB $00 +:MINCH DB $00 +:MAXLEN DB $00 +:OSWORDM STR 'OSWORD(' DB $00 -OSWORDM2 STR ')' +:OSWRDM2 STR ')' DB $00 OSBYTE PHX