From 230fed8d882b0671bfbf234a3896f142cec5b4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 13 Sep 2019 17:39:37 +0200 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CMP.S.txt | 34 +- INC/MONITOR.I.txt | 2 +- ProDOS.203/ProDOS.S.CCLK.txt | 7 +- ProDOS.203/ProDOS.S.DiskII.txt | 2 +- ProDOS.203/ProDOS.S.GP.txt | 72 ++--- ProDOS.203/ProDOS.S.IRQ.txt | 28 +- ProDOS.203/ProDOS.S.LDR.A.txt | 4 +- ProDOS.203/ProDOS.S.LDR.B.txt | 11 +- ProDOS.203/ProDOS.S.RAMI.txt | 4 +- ProDOS.203/ProDOS.S.RAMX.txt | 2 +- ProDOS.203/ProDOS.S.SEL0.txt | 10 +- ProDOS.203/ProDOS.S.SEL1.txt | 6 +- ProDOS.203/ProDOS.S.SEL2.txt | 163 +++++----- ProDOS.203/ProDOS.S.TCLK.txt | 14 +- ProDOS.203/ProDOS.S.XDOS.A.txt | 4 +- ProDOS.203/ProDOS.S.XDOS.M.txt | 551 ++++++++++++++++----------------- ProDOS.203/ProDOS.S.txt | 19 ++ 18 files changed, 485 insertions(+), 448 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7e1a96555cefb5a9cdc1995a53c6859383a3d436..1ee56a47b58fb30bd7ac50b82553bbb5451cdba6 100644 GIT binary patch delta 341899 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 zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= V5P$##AOHaf{Qnf#k(%_M{|EO8GB^ML delta 319252 zcmeI)eOwgP{y6Y6%hU3_JTDK!&LYaAxF9NOnTQ}L0*RG9gRlt6Q-G%T)?HQv4PC{k zMoNq*P0Y15OQIWLR$ef*t!@g1spU1yht{V|&GGj+Gs_D1e*gXb_vsbx&N*k!IdkTm z_nbMqJGFn^^{jh`G=**W78fgFpMuJFO1cL1H!doR1tbA)_^0KXQOSNBDDs zKf3JxPBFXzprx;tZIXMLWyH)SuN{;wIG8N5jVqR>-B;PNcVr|JX7CcCkZSrs+ zQ)r=LGRMBMn20Dpe%dNh2u`GXD|2Ha{QSRk8gJV>H#IXJ_U`del843*Cwn(7 zCSsC5|K2({%#=yPq1`iLBRu^0W9vNWnTv5+b7!3={3+nitMkq}?~{#Q9SS%D6KF|~ z6wotpf@fmv?=~ykd>fQL4NCaeuR-bGpbXfjRKC7f>#ig%ar2Y)85whOiF+VvDJ@)~ zA2a63c;XpETAryc)rY6X@3+?wc`zhQoloQ;Bzph2@x-4cIY|#bl(BF_T9S(Gz#>-;tufOUPp2idhK;Lu|u zq7_hI`XLo~}57#7< z@G*SaiJ&n|IRDIvAdPM;Dby}6DU>paPavM-NOe`gt72-p89@rGYpk1z#50lpQdv+c?JzN!cxrU8U2NT+ zMLgq4a(t$BGlh62z-GF2b2jmuNRktVV^fJ|B5V%FrV-CcBzdAWHc>-7CzIsF;mri% zGleWGFR3YCRwgw>;zXiJB8!*tn?r(QgQt@Gf`aP&45s;$-+RaEI`l~ff*RO@GHYihKxwNgvMX7N5*YBiI>Ps&n9GPC)ovea>r zsidf~qWbBwlEU@kiJd%=_@qf;#U)bZCnplk9R7nWbxcEO@V?NHYk3YYl@{i&;&1*V zq)YDUFLhA=O8d3R&TX1PbO3yI#Go1VR3p*|yaKL6I{kkcN) zUJ#a;5 z2eor$M zs^`@4r&X*kf61Hmbsri0DBt7{;bVMQA8S_Aeb@=sw-r8Yk@f8lKI|mxTVG#xn)Pk2 zFI(*(jx+u%U-pbO^aDRO&-ymdpDl6|2hVUdPN-NV|CT@N?H~s8AN#Wxm^%KQ0CuX! zs{GRD@>f=q@bx4v{$>7B02|}AszzH~Ln1bimc`m<^>GQS_-G}Y<5yp$tyxx8t}m!4 z)RM?eq@}8+WHrwXhWd8CrDV$(W;O2>#O6TGi-Xv4%qsrHAU2v=)%igXJ5MIJw$wV_ ziDhqrk%~?xl>L{?+rgQvAu%o_Jz@6LSsN>h^XvKlaO~rdS+W{(S9LBU94L@%h-h~&O_P?%gSD;Pu4GdG$&ObmiuUK zm_98dGc}B#xSZAa_<36sWlYG{r!H8Ky`Y|dZaEt-SNTg3oqLwE*$z;+!@lR)XQSmY zwbnBJww)a#_tjgswr^+4SJsUQ zhcUNic}3~sWkoY)#7`y@-jy=u4}QiP+%`4{0eVtE}VSIKalr!}dyB zo&P?-Ua*r#e{bFFJILN*T4VHay1jS8L5AbUcTwo5`X< znsX#`a(rTvs1C2`W5b<(vzGgK9~&~`yfiQ%&7{f1>jG)1uF2O+M-aP`$S;zXlJXTq zeu=)WBp$y*@~ZqgF-sC=;XmwS)d81DOU=ssRi)bUB{juyB;ksfOC5i)kBxD@O2<|; znRlI6A7bY+fAFP;*m=wi{-ZOi@Wd1nFYp6j0c>}9m&0s~FJZ)%gt4P7uc=xYGm*qGe8ypRyszxP zViL(DJHGKSplQ$dz^;rVfBrCJ5JP(bkCLc3CxC!b%GD&?|@vMh*;qXpsEnT0L~oigIae*W?#0 zjU#eTF`C3EXof5wag=rU@PaUHejV*VWV|;&>nIz``0y1+!3$sBaFmT?{P=xG*-&Q~ zSCBW+1n?)0vJ)63@BTGA&N&c5OIMJ@ApX9u*@;XrUr9qlq_irQf8%SQCY1m5Yc`Hi z@fW{_Bj@-)Gpi0%Gc7adEKWaPTU`y;=oDx|fFnGN&o#4SoW_V*tm0oVv#e9Nb>mGl z8|5^XX{o6$SjB&1W|dCkXiVWM-eP7|P7w@rmV(v1|2M4KDH4(uK+KG9*gz(VU-S(- zZbmdiyIEa0%=|oK80*l1d0+xj#L~_Dy2ryciBCcYbQ?dMG=W6MNlE!nA>V)rwuBm* zFjB*`EH2m9@qf@l5jK`j!osPf3D&VC?hV-?9@TR8ygkNK=RT`v2u<$~371 z^4{OE8mH+{jP}_&KI1!Rzx!yJ)ph*J@7Rcp`^93?HrC{?tgEi6Dk)#0A0AHQX3)4) zjaUU}7kao2wAe%{hN(*nr+SXm4CBQ^HQ0``GrrHRWBjR zwBeC4zb=0Acq_tjL_G)kL22QtD!AxYRB82vB~@@m(!*S$q*|f_OY`%RGJ-iFyLIKu+FpoDFk(l4g=HX(ObozVOf>OW0`bsX+7%@=(@0n`-`3BnlS-KA zhJyU6s+D@0Bb`>4@;CcgZep2)XL$K=7s=3D zy9jiH>R5f!z3viMVQuEj0f4oVuNhzy$2`l##q;zuYQ<}M2~@8PW@*r0tE@R!^Ir|H zV{|pPhDjt|%cPAZMI}ucXoZO%n`LBLt19go|1s(Kok2ms61+0U8;08gX zfoU*Mpe--Z>c^0P^^CTnNNm25seKK@l}V^i5UWy6{5Q~~G-vVl%X*~_*!W-hvQox= zO*HlL{L*`O4i6G`6JI;XhNQg2RB7`IX{naLj1c~EclUyIKv9<-fT?&tdd4AhdMk^&e{FluW`peHJK^T{XKfWY^LlN7+|z89Ufhky1Y zJD+)Wh4>OK$~4=#Z5Bb(a&Lu;+V0n%~%U;}PhB2x0pBjD1qtXyBNT>)3a%F0q} z$#D@RpmR8OL!1A6xwTf>%#kw#b^RJv@6W#x5EoXHEnfM8R z>=c{e)(t`8xFOj+wB9~^#A$Xqv!5@ZF9-NHPP6_VpWBLdBK8ytQ^1(l|fq{LtWNE8Q%3&F%S_@{A&_n$E zpIP?duWZq&_2m^+W%=|{N`em$2gfJXgIXXtZKaB$BI19ob8ca5H`sheL>UYNg<_~u#f%)%$7)#bvK0mA(AZDFar z`FGYgcGB#+w5k#@u3$KBazfq0;$>CUG&G>l78=hhEUcewvZgb_!UoC|DdDhyIhn3W zc4v#rnmJe48H(i-Npys#4}><(jE&Iv@msI3T7_Q*tV54+fzb2Ou@RHKc%Q3~_Jv#s zokBzFV0Bt8@65l-KH@6(fVm&-L!F-q>;n#+ckM!p|IPpX8at(PYkz32yK_jTbRQJi z8PX8?p{(=mq0k4N_gx8n$jM<9T(Z}7K6W#7fN@zxZ^_1lPnx{G^ZwhRkI1A*zU5Bn zMTb=|Ly4@MR=3F*PYc%$dI;Q=N9x z)3rt^`bGYvo$6x;F{E>=y~>kOh{Z-OtF8j_qheRS$ag!a-ep#GmN=@a7+Qyw>pD+4 zsT4ACueF`momDANS(vauWi=Dm^Rrx44|%SF=?0x}NmMm-Zg*8JW8B5OA>Z-wu`AZ{ zk?yKeF_SfXi@R#BwH8C}s%IcSI;n)4vBdTK6P~J1!dAg0o4DVAV@aEwx{6-Xrv6E) zE9r_vX$7tRT7H^B6&t%nT$)m7R*AQ2am4Kwk%BxlWZG@(9>pcn9xo|WNBKhv`HTNSNx%r>)DJG`_*w=m89~g@3?HrBaG}Swod}jJPLU zF4pnOy;K>a&%{?=st8Xp!R(3q9W}(?1u|j0RenKY6(>(h(WJzuB&1ACNlcjpv$a4s zh}U?llw-yClr#;jcF&HVoj?*jm`YeRUR+8`x1H%SZ&jF-zb0Y7eHu|JVE?V&ssJf} zO`>LsCSH>O|0ct~@g&e2;=hLc;bq8MHC{(^TWdWQe2p;jHQJ(e;tTN$mjcDBe9=1kqSF$;u~KMJ>9XqLqV?hn z2^=S73CCBKU$qpva*dw8A%PK6YN#pQUQcT*M)*fc5s(t5Hnd^jh4@F=lEdaYNG*m& z59c0S14D~W)8U2q$Ji3X=6e1YU)6N=NEo~{kN_?>$(rQ&pj#48@!@c}=TI!^3Q z2`LG)6H^n@h*u&M00}2)CdE%mm^6_@O=b$=4jlTIm><8vPsMsjVEgjOd|f%m=%Q;)o`g9Ss&NwQUbVZ_q&fNs3?Q!rr3XZwZCeDVr1tF zmW8(= zg{kw$hil>^h-)UZMn&5Y68dK`(b3WR=PIg}>Z>dBVQvhYBr}I!8K9cSJjj0;pi0)| zG8NC2KfSng>BvgEEtKj;7jgU_5>tS3BU89OY->aRN5lkhn?EYSqI(G*Ws0AMaa%Yl zhw#T}0!MLqA1*LTRiNwR(k`M}??Hge6H+x`e$RiaRE=|aayZY8yev=^;rkS1oL^H@ zC7wOWi$?zbKouAG^l(aYe;y=)+Lubzt17U? zPb-A@A~0@L8Qn=-D1T}Z=QxJAYo)Zb)+DJ2QZFvcuN;;7!5~#Qx8z=vPA!I1(5aV> zN~I`P2k^UsR354lTaIMfGfd&r@G;)1dmX%y9|%%KsFvEQIHeTQ6oVh5vQq`C#)OpF za#~03FNb7snAURF@=pb;;({w|DM);!lmPCsXijVScY;-6InNHC1L9W&@pL*pq8#F1 zZOs6#gyNK3yl-=>v4xWOWw0AWl@yBogAWW*jmcVW%Qfmb8eLUAs)372Xn;6HhpC>P zW=z~x+^g!;m9Wz?y38l#*%+dV(f#dS{Di+lJeW1I*$S3b!R4SvuZ8QqHBZq%SR{0N z-nuKj7`_0z{!edJ{lj+p>cqnouS4|ipfJBiOH?{$O$;4&v=@wy7w;aX)k3D#qC`^D zKFz9PRC=jYa42yVEfgdg(X@?x2dm;#b+$zJuZBeb)7^(yRa9WTEzzU~nrPXI;nt20 zRYiu9U5KrtD5i}aci=cLQm8tx(B_AjdaKTC2Ov9ViVuYtXN*K7(OGHx=D{pHAeTc zlm*rQ6-J63Q6_PH^#!#9Z0X30liL>P zDYT<#G#iOeD~&H68SlDvIGXsq!IWy3YfGy~mEI|1M(3z4#8MoGzbeM^$mBE#CKCW^ozh zFk%=Io!hSA_>IKZ$W-UU=^2^8b@y;Q@qdq@OF@vss0x~FZQ#3ysr)YS{-rwKuSQbZoVHv4gb3W`|f4X2}{M*u;Mf706((D`*bnI`K3jp&fv$kSmh_M zDhX@K^m;(&m--s`&VWt}%TAv{srhumKkB%8Yoz}!{re#Gw}Qv+W|fEDX|qm;P*>s}ptrTCGfn7H=ci$5gB zOSd?-{`b|r_`^)qbF}}D%KwP1{}aEXQi9P1d~G{OKQmKaN zUE=zkEq=nknUV@=;fUs7y`kWL7^4bu`F=Rn23{DW3eX&53d#y8H=|nX_;4yRrJq^6 z6i%geu&?D)!&Q+v1Ge~pADF^rm8EpedPG^o^~ZZD1}Qc$mS8#hUTui$30sQLlYDnL zOdn4(a1Dh%KkBf5wl$0IFHBYWe|On4wp{%FLwASxQM;eD#ryusEdQU~hiuXQ=VmgM zRYfb{Ku0yjZ?+V^=a~XnejGh!FW92TUE*8Ds>bRpjCc{ZPThy~xok`4f5n<$G(K1F zCAh}W$p$RjjjG6XTSNH&0aImhjxaKT+YK=X9laD2-#?kc8t`e9FE?#P_}pR&!JkpX z_qHw8_b-UmY70m1>~=?r7KfMs09VpG&ynT3-W5|Mf$+qa$O>!9Dp!om!IhB>kHGt6 zGO($1)YRui{@OTIq|QzTcLDU{cX9L#-wV6h%fyAd{R#~Ua2QS^jvreRN11pJMU(hB z$qE*)gfEVa>Qr zILW9=xVjG~A-*26B^BV*$R=>}l%i=PPF28Rh~s8NBi8Xjk*aVzFWDA8IZ~y950LXC zRq1xVvS@y0l*(@=thV@DTLM;F+ybocT{Of&DSM501wsH_GRQA2g- z=;WCwRg6pUa3weLlcQ8&0jw-~cyd^=_!)g!Y01+GL>|iL&vI$n98d+zF zpjyvv58-BZ#vcs*+6%rC62GsUTa;~=o4Szyw1-o5{;iu!meI{l*u34~=ALNxa$IIc z?n3w`M`v%EdV;LeE<^nbBi9t$NneNfeXe?%eB3kAR%gOIb+*i{C2m%(K0F~MNi#mW znQ>bkUK2%B=>#rDV1xJxMEK+>tLSuF`Xm76u~X;rcG>DA_`vbLZ1q?slV6;zj$-EX z>$BmzXj%O3Y;|IEHUWd+X3d&I>MH58%?e;i!b$qPmPF_9ZmVJM2l>gX)f#32zht#K zn#tu~TCI)`SxD$47lvlFxGEh!C2>`J0(@!=olU($ek$M~1))nUxz zd}qB{#XP|uuUAJoR7Vl@lf1)LHOD-~kJ}3IPxBdcE02F>t9m?>&u`wUj$jt^`ysHC zX;9w{@YchU49r96=hF1UI1*XFU#5u)`M@_IXDvVV4LHgozVHnQT*9w^1Ddgzf1hrZ z@ISnv9w&=@hL<^pMKDYGX!=shFMt>SGWaqkELGH0Rni90hbO`4_b=x+I)?c%75p~G zuqdxevRuSUT00Ndq`nk)nDJ{q0v{g!tNH#3xr}r3rU}sj&igmqy}Mqx+rb!4p4@U% zFh-5BI9$5f`R$wPzcaa4AHBbU5ujJ;hnpd|_%>Kt}9i zKU^c^nu4^;BEtwdee2y1nH?WCM@)MZhKGG~?KBVPYYq1uYM8P6T2Aw;(@Nf-?!wsH zoyv4+_PFm1b6@k-`|2X{o_^}d#rb*gO=4s5e#1-0qrNs2?^oXLAS50BYqxW!85>_} ze(V01=QQ6jSM=_gnGS#T$;I_E+er7`JC@*YW}2VqZobo}wYa+|yiGxKqwKirKh*|i z+VyabJ+)qQOPKmu+=oBaI?atz?c^S4{>O}oDFZ*54z)SRSL~U&Y1Ufv&F!fT*+WCy zW?PscPXCul&JF%#vWryaMRLwP+ft$|^(k}b&fVFq=rIfl-CjM0b3*A*^Ys~vbSF=m z-HHwCdx{Mk;BRBkYsNpF4BwypSmWI0S=@5^(RKjk*?Dx z(|h+T%r}fsviC0E#-80T_89MeZ6u!=zdvdC(<#&318yjr|9l`=cT=#~ZHd}%T)4l@ zr-N%raA-+z>`D<@-gj85_`Na8)7jMbag(gX(eQ;stmoD=cHWVDkuvf-exfgDfW zlWtkmmuy;S*eP7vDfI41cdqSw&univDD-yRZ6(JI2ZRk@2#0qHrb&C!qjW>PeG@D* z`|_J)QBOncr2~T5;nIQT<1<5b2Ly#Zq&_qR;g<6ob_zR<2ZTO_>C_LqzYrkomiZN> z@gSr(@;#QX@}Rm+F1yHab0&A;t}>5%_CHPbeKXB7jFm!^Im2w8xC_$SLE0Tj7k3JM z`4mf z6c3Pob8?q!Kd1g{_pgE_qG8_9P(wx+({Ir97|%9alEZbaf-eeB}xefw{Hhsu6y`6N(xP9k$w+c<3JG#9F%#N*Opj9!j*`(vT$$-TH z!ZdE&dqXC#jz?nm3mO+l$~m0th-(T-=g$0G+`B2O?-8>{@9xipZpFZ+tS$S6jz^O6 zU|(qTU0(?BW>eNs?@>4n*I*Os<(0K53rb)8ACrB@oTR+IH1n-Cr#&J9xGxgS_8l2XdE3&`x6MiCHvV?2Va~0FG}F%p+2DG+ zLGHkL)A4rZ!?ad1*ex4;CGC*n>QG~=Y_OG_7&70W(H}uJyB7)ccpnuy2J16A?3ITs z&Sj4YO*hVFn6B2RxB2WzU-{RaP3gUxbs0+YRl1j5rse0ncCwWWZWVKCbKNturB-P4 znz?iBekb#lMzd?XU3XJY>ssNE;s!mC4n>o!!wlVvg^mjS#&d_V>ES9FuWodO9jKL0_}mP zER)(pyDNoO`#~rxLu0TXYVxDxp4Y^&EOwk(UZ-=g|t><};??%!2b$gY2#l#5P&nym7XlZWBEu;|9UKM}Yd$ zUJl)}OxRsc8`1PVr#rK2v9PwQQrMKfR`Dm)_RBQ06IA!hITi&iWG@8mE)^5+Xk)qx zg_f~{Yaz#c!4M{%v4uwa!6-|H#gcD~8Z=Z0#^^!AV!;?OxI1!?+ZS}+ln7-Qn|dtn z?RIV9(8^E{REay#e1B@7?%?^RU3nb~pns4-cV^IhjplZ$@09tx)WO`Lc6-vH(V=o3 zB#(3X)%3J^s&t@mvQ<*t{s8kIUG4%+w%^lyy~7OW%qSalw;MFObjS=10$f__U~O?x&~kn^ z^v-?fo4(A0E^Q9Bg?kyw1f$)cp_~>_AsF5fxOu-OS?oGy=XIpzakGE5ENLU4o2Ace z9%}R2lU|?JYgh^gR6oZ6ZF=y$yGdmnI|#)Y#|;{`HRq=V=$=2D`NezHaKm=%z^G3*O{Arp-D#yGxh-ce z!7CT#dFd?yMmBWr6M&>*2xz8noM3>PuPAkSN4E<}mYdM)l-l&Bf1b@yHtpjIel_KG zkhWPZkHCqz1q0mhjKDpAwv7QxhPu56T8f44pn;Ymp(~BFEEQ-sc^k%w;taIM`Y(h$ za056^f-$ti>_~Timu^!XcfHmVdr(j?JJx?myJor$2HAkwb=Q|dv9g3~vY6&WT?e3k z7l(QwhAMRV)`nI}6(ld5(;=%*Gkz)T02VEZq?P1&(>3ER7$QcaP(KG+*aVlap{8)C zCv`9ol0r&g6)Iu&gn16=YIZpUohvmd4>nKez7s4Cu&wzWvfuihK#k?--oun0?vS+; zI(9zi+J{V^Lhhz6x@UJnPn4zgJ2*YpVGE9|?Jmq2297{E4p3hu1=Vcd3vV0Yz|6mF zRs?pColq%-TnxBoae=t4i^#xM#elNoApnbNYd_d`s>vzJ6I#LS04m!L(#H5h^7yhc zZ@6k8decK~s;y*T2&Ns}Q~xo|;iAr&lIeKz+>!3y+I%=Yh1(*SU3a)|5q5Uj51t?c zNoEJY?5cA276B@}lXGaEkiqKq3mZNYpf%v2{RUXy0dqDdoHOhYw(!E1%|gdr+RY2j zo95F5K?C(^-N6G=Q%~nUJ9l)4pplMl6i#zBr z%X4XxU*f5Ln+0cLzDz6oiO&G^L^HE?Gfda!=55#^q|+Mu3>?`Z6gMs18RfL2Yb@Ql zF>8nL%+u45G?-m0F#V61jvC_{(XU~Id6*C1&K}ckecLy z_)fV6S#o$O(*i!?-q>j35LzWW|z3lf=ir^{NF$(wzAsoj=;4M++XmhH!md4n#(^HOD-8=7a520`j|$F`(zr)ZT<1PL zZ?bd{!yX~e0I9_^h7Seh%Af(mUZE>^0ATt6Ost;;!z>+I55|&lFCCR1z^F8?_>DV! zerGWRHZhHP^=S=spyqYR%wNNwtodK_ynVarJfl9vHWi2NxV8D>ya3%+VQ44`uD2h+ zIXL0h-(+V#duZ+E490wZ*H$>r{wTq~3&u|1k*DvPJo{uOSK~**fN#IqE;H|9ms7vR z31%v8nJ-;zd)qoUgFr*O&?WDWnrU(1w3kdJG&5goW*>=}HHAV>K~L;%7Y>=9g97Hd ze~ia`PwR5;&wThI-MtoeUvbG41F25gS;j)SbLAaQk>;nkhKq+ReVpedlP6@o zEv?0)f7_fE&;F*^Jcy#n(yym4raiv zf%5(qdH>wG+>DD&Q@PmY==mDmz(rFeqm6I}FPg$HZHFnJW=ETh zZu!G?!Fbp=Y{%E;s3t$z3`+1wA^i{yZ@vokn=< z+WJzKKeM$tAS)V9qBKtiOROh)i)YV>a}C|G_MP^*9SV1tX~Xn3_>xK8(NpUS;qB=i z9`{0BJ9JRsRIyELGkquS`QMx59XUyPbm9r|#y9B1b5>GbyGopn>v|6!v{wSHn!T6S7-hB!txDdLt-4QzRR)HN4 zyX)!hhZL9U(`Z54=@$3xZBsaR?6mRao|fQ#=v#gErkIYqEx!G2GAMtapo42D$6kQ> zH|ztq5Ee&n!e8)KtXwhB0Vnhf$RmUf!1ckow$*EZCM5lB4x47eI3#eY3~&*DL)ft! z4$ThE6GWQb8_kjHA(y)lVGiBw?6{-d5yDTD2xbKw;5E4JcZo-%lO^SCjygpzLp?Cf z`u;Na@#S>x*UQCG475|0IlO5sEzht2;ywXxPz+r{mw*4oPQh?SFnlby!!3)VBQx`# z7UM61`xz)d^MHlkzg*-_U51fmmsxiij?VNGH(=rHE?1s5T{eC!%(a|1d@67Uu1C!@ z>rTUI-;N4&h>#uxVzm@r-csV|bIvUVvjy+Li^!UY})>9n9`h^(!qdNrq2^E|-48 zKZRZU1UjO2cL{loW;q<1hi^VMzh&t}uZu!F-mJ3n=v<@856 zaWrXQui0^%4noX!u+!Sw@AhPl|3sMoPr-b!*X(j{r`Vdy>-Pzj%+Q7|L9X1a&8p98 zlAXR6h%zRVfJ9hTa=Qti z7k&|1d7&{wX0h)bG7ok0!T>nzXtoDzuH>=_9+@_t3*k@XN#tFv6fOIavzZ zNbg+pU+dch!9GUbJdhW z$Cn)(1H7L?4v^I#@FU+#;1bElg5zeOht-oJMhB$ed{S7r;2kIYf_U$nKVW7jtjdmFfS?=|%4ge_kQTMi3c{4IHUl2l%=K>N0`|ISxJi?Y9Ws1Yu2zZnmSS9wSQ9hy$P z_S}T`!}F$nLPo7LZK9X3Ca0ank&Q|6bk6q=I8NJUaU{$}g*I8YU;n0=z^a4!dh>)w zoM2khs_F+hTV3c7fpy23eKV8Hk91hz>}_ciw!BGiC*aWGU%2-Hui!?=0QW&Y1BNCc z9d2F>8)2#mlGO>taAySF!#XE{{oA~{;)N)_{2V9Cp3m$~Ci=H@f7aMyG{tcWT(=BCL9R!V!} zUfisswSv1*dpdEVH)F@0E!>qqO(k#{feAh=y*jm$0TBNh9GmA&2!Lfe4ZQ?hqxsC@ zJashi1R0b^SKc~yPk!I&1G4~;5-mcGSE=gsdg9K2X0u~^;$sk=5fLs1SsOC)Q zsUy}DFT+AEJ;ZY`o$JUk{Y)oiGr?9k8fX@}recxz&1|yom}|aBYw(#4O8Ar<-@K9> zrzOxPkfwD}mYsp(I^HR>SqV$LyH|E`jYqP4JwpG7Cu(pqRB zU0CiF7nb|PF>QgGJJv3xZEZLtv^&5R`Vib$+=A6AvvBD*+K-R^CYU^SL-JmMQ~YMK zgK?e?{l8K;LYMuHYK5bP0`y*3{M%U!_fdU}C%x4(ekH8*9f12l_EQ{Km;C3IDO9J6u-x+TBTYnS|X}s4$ocU}ow8nP=4N=@!yZ#%Y z-D$(O0xZu5!XSi*0r>m6m-QPmu0nL`YT}OmoZsTp!A2j&#E*+Ew z7o5TRG+NNlP>|RNO|E&|97RR;bkX>JkQ}+|S=35YCc82X1G6-9l2XyE2;QYZ^%!DQDKA|xkw$h<>rAwrV zg=J6LFUSc)p8$7VpWIG@COxNsJ^@vMVJIz?ukV1N183(`astkdD?K|dyE@?7b-UO6 zi*hGiY$3nKJmYWBF?L!UAsHlZAtxGJn$3@^R1f_%by1Hw^2|K*)gk!r5ckkufs1-t z7WF{Lm0eq#J)Q{6I4g8l^ca2>^5FA~9hT6o6+K(ad*FkO;T3vA8gC+lQr$#eMT_;(p>q3?*ysD<}=x_xCApw<5_Wv{VV(nn|9p4Z<{#d zuR?t`MAT<-)0_7`@mO}o9kWZ@`PH-Aj;&5DOzX2V%i5U@>+fu%pT5DzZ3;r>A^lFf{f8;7hC7GMe{%2%;`%!#)o#clX!nIYo!7{P-_9So9(v=AznYqFKRMUO`sHfw-j}O6 z_%N*vKB^U-YG<7HzWH=M6We{Pd&B1{MLtio?DnaYZ{kQyo7tWq7*h$b5o{qv*3r_#4~u&qs`~a z)Vetjro-xQv{!M`ZD(R}hl4#BfiS z*;>W*4pQgNUp}qAkB#w$PllAY+Z~6S{foKYO)g^VH2vP3T{(4cTV);tr+xmuGwP2V z;8%IGmKCMYZ`8ooZ4&tYbLvQ5)#u>u5JA73vi&!;j4$o?E$Cc!L4C_k=edl;CGyhm z<=`iXp3lK^MBu>~i*uKjRK^q66|f0Ut%;jN99F_dy`F!Qet&0;_We73q*#?cB{y!t zLs@aTsj2gb>+`Tn0enMiDsg>5d?<-NE}l621NQdPk+?~`E&BxGR;#n-KXoc`(9;4| zjVK_2_}2X&1+2bTKs`j$@0ddY4YYtYByNg$FvV%`bsi{SEu^K77lQmfUz8rzB1XZ( zBpPXyLW+~aLuBYf(75${{1o_|fk8?dS(%dyKjb6c@RXt%0B1^aW~RP~{&dK9Bmd21 zwU4?9N|nP?is11O#OEc*5q=aN7Y{%86dwUW{9fjnd5%6Z-&e%sx>q5&FE2hXMf}O% z>Xe$Q((x(8ck^&P>ysD57rXY`#}QZphs3W9Cyt*eCC(+TuMd|)JX@uTF3!ncR;?xO zTSZ3e(z^aUIA~?mTHG5F^Mf@-IaZdFG~szmicYtFJDpn z>b64}1@u??#OEDr73ODV#HGfiW~UL?9o8C5C2p{)2fyPNTi5}fwnKd0CGgAn8MzA| zP1Z{tk@)Qzbru(-Cc`i79E_0IZTE078shWbh;nq+g5beCVv|Ba@KhdKLGQ!9-g}`S z&8r2KD~HRGe?aI1DTvpHaO8^%tidtyM7|FqO7n>;3^4Ji;3r!j(Nj92lJHSP3vvIL z#7%@|Ss6+n_@(@0cx*&ImIKF<13!PJ-NC<`S6@^6={|+rXy-~I4n455>wf8EjEN^6 zpIO^}b_tvbhXWAn^*N-bBkN&p)nfR0J8}I20xIE~h%mOkgam#EN3~K8JZq!|zP?Or zERH6JUP$EGXB$Gvy3$hOcF39u9Y9|}0++)iE{Ug)1oAur?Rl?pT#rIZ+B@ONcwf_p z1{LVDi;CbUZ^YLu#aKsiW_ETC@%mcPS`J|My&nYqjp$+u0GV;^bBtJ_@LVg)eLOWpm zTCoO?Waty%`AUB97$>^TPr0G?(EVo=6h3E1mcD@gtWo}}HEVdJ6J;ah+{mmGMrRFA zb&`sL!;v}>JgN|$?nE2R%9Ia0-pS@mnocU?qP2`mQW?I#50@eKjJ1`;D@mZmn)fWd zt%oMi9vTQwev(@FUWC|nq% z)u-!!e*bjecykbUM%{FlfAA-nAD{iF+Tn>Pwds%gU)x9r(|(F3J-7N?{cjCJwR^W+ zfW#2nUw`3V>{qKV)&JgbvG$dYyW!_G&h_WH47F)rZ9}+4v!&ibH##yoZrcURhHbxE z8u|DCR7Wf3shb@8GR>*A$*Zr{U*neY7yeX_W7hFLH{lDhN`A{tb>Yil_eTn9@dN#& zyia6d@F@&EfaLu7+A^Y$GooeC@X#djeDLkSnYrGc44jhL*{Ki1RJ2hXqY6fR4w&4F z5&LqmH%&n==PC5@G})Ck_28j?OuU}>_=wN6pJZAbkN_1w<1e-Ulbn>hc=2*mLqd4qnFczu zJWP5{lpG#;MSs3750`4{GM3gfHETAJkCQ^+SHVzU_z_zsJk_X?K1d)eIsf71VI(1v z-}9F`-Z@H2_dqoNpvFc*DlU5ge39HOo|z3#ouxlkB`yi{y;uu)j#XSL)F!d>@+C)4Iwi~6E~sT6 zE(qIAHx}%Zh1ttobK@4#XV#{W*xme0`>-+2;^u4;`<}ST-|rA6XG|la(n#!{5u5W# z^!wtb(}Lvri%9HVDNcFRTT6gGib&Tn-Ji)EhUzoJ_!`P)umD&}u|upD0g&QF(zg)-0ckIBQ> zDKC&`CznbOO-<1xrNCFW;m0qPFaaXL|9~j#(^esB_Q)t5zgr#_6jDo`opLWl+K3b} ztN1hWuxNN_kEe533{%ffhZmm)vH~hAJ@GYVVtgWrS}4 ziN0~oywWvnEb}ry!!>LS^9sM%6~0^jD&OcD797fx=vCnfsTz&=mHhaIC8ZUM;TKu- zL98TlGygeF+QOfAg#usW{oKOhnAiE)ZVG1t}db(oX63;dNfP0t|+#u6#CeNI`AZ`|k-X?Vk=sOuCYP*!I$34t}c}INj zNS}QixkG&KFeisZcSz|Mrew||(L3oz6!Wea#vAORr|uHpOPzQYi8azqmVdU&m*vgd zL)|)~Ji=sdopC{7-!gj@ZeB9{2ipMq0S*JC03}2TQ9_guB}55PLX;3CLPUSHWZ Aux type >SYSCALL FOpen rts *-------------------------------------- -CS.RUN.SEEK clc - rts +CS.RUN.SEEK >LDYA ZPPtr1 + >SYSCALL atol + bcs .9 + + >PULLL SeekOfs + + lda bSkip1 + bmi .1 + + >PUSHBI SEEK.SET + >PUSHL SeekOfs + lda hFile1 + >SYSCALL fseek + bcs .9 + +.1 >PUSHBI SEEK.SET + >PUSHL SeekOfs + lda hFile2 + >SYSCALL fseek + +.9 rts *-------------------------------------- CS.RUN.READ1 >PUSHWI 256 >PUSHW ZPBufPtr1 diff --git a/INC/MONITOR.I.txt b/INC/MONITOR.I.txt index 2f51a826..09f515e6 100644 --- a/INC/MONITOR.I.txt +++ b/INC/MONITOR.I.txt @@ -77,7 +77,7 @@ LIST .EQ $FE5E DISASSEMBLE 20 INSTRUCTIONS LIST2 .EQ $FE63 DISASSEMBLE •A• INSTRUCTIONS SETINV .EQ $FE80 PRINT INVERSE TEXT TO SCREEN SETNORM .EQ $FE84 PRINT NORMAL TEXT TO SCREEN -SETKBD .EQ $FE93 GRAB INPUT HOOKS FOR KEYBOARD +SETKBD .EQ $FE89 GRAB INPUT HOOKS FOR KEYBOARD SETVID .EQ $FE93 GRAB OUTPUT HOOKS FOR SCREEN XBASIC .EQ $FEB0 GO BASIC, DESTROYING OLD BASCON .EQ $FEB3 GO BASIC, CONTINUING OLD diff --git a/ProDOS.203/ProDOS.S.CCLK.txt b/ProDOS.203/ProDOS.S.CCLK.txt index 8506ca13..6899dc35 100644 --- a/ProDOS.203/ProDOS.S.CCLK.txt +++ b/ProDOS.203/ProDOS.S.CCLK.txt @@ -7,21 +7,21 @@ NEW ofsC .EQ *-tclk_in offset to Cortland clock org cclock_0 -* SHORT I,M 8 bit mode. + >SHORTMX 8 bit mode. lda statereg state register. sta savestate save for restore after tool call. and #$CF clear the read/write aux memory bits. sta statereg make it real clc set e = 0 to set native mode xce -* LONG I,M 16 bit mode. + >LONGMX 16 bit mode. lda ##$0000 zero out result space. pha push 4 words for hex time result pha pha pha >IIGS ReadTimeHex -* SHORT M back to 8 bit to get results from stack + >SHORTM back to 8 bit to get results from stack lda savestate restore state register sta statereg pla pull off seconds and ignore @@ -61,7 +61,6 @@ savestate .EQ *-ofsC .HS 000000000000 cclk_end .EQ * end of obj cclock_0. .HS 000000 pad to page boundary -* LONG I OFF *-------------------------------------- MAN SAVE USR/SRC/PRODOS.203/PRODOS.S.CCLK diff --git a/ProDOS.203/ProDOS.S.DiskII.txt b/ProDOS.203/ProDOS.S.DiskII.txt index 75c24688..fc500146 100644 --- a/ProDOS.203/ProDOS.S.DiskII.txt +++ b/ProDOS.203/ProDOS.S.DiskII.txt @@ -748,7 +748,7 @@ wrefa6 .EQ *-ofsD bcc L5881 (3-) branch if not the last. bcs L58B1 (3) waste 3 cycles, branch always. L58B1 bcs L58C0 (3) branch always. -L58B3 lda pch (4) absolute reference to zero page +L58B3 lda >pch (4) absolute reference to zero page sta q6h,x (5) lda q6l,x (4) pha (3) waste 14 micro-seconds total diff --git a/ProDOS.203/ProDOS.S.GP.txt b/ProDOS.203/ProDOS.S.GP.txt index 5dc038e6..10eaf8b5 100644 --- a/ProDOS.203/ProDOS.S.GP.txt +++ b/ProDOS.203/ProDOS.S.GP.txt @@ -4,7 +4,7 @@ NEW * global page ofsG .EQ $2E00-MLI offset to global org - + .BS $2E00-* H2E00 jmp mlient1 $2E00-2EFF moved to $BF00 jspare .EQ *-ofsG jmp jspare will be changed to point to dispatcher. @@ -36,13 +36,13 @@ drivertbl2 .EQ *-ofsG device driver table 2 .DA nodevice .DA nodevice *devnum .EQ *-ofsG most recent accessed device - .DA #0 + .DA #0 numdevs .EQ *-ofsG count (-1) active devices .DA #$ff devlist .EQ *-ofsG active device list .HS 00000000000000 up to 14 units may be active .HS 00000000000000 - .DA #0 + .DA #0 .AS "(C)APPLE " mlient1 .EQ *-ofsG @@ -53,27 +53,27 @@ aftirq .EQ *-ofsG irq returns here. sta RRAMWRAMBNK1 read/write RAM bank 1 jmp fix45 restore $45 after interrupt in LC oldacc .EQ *-ofsG - .DA #0 + .DA #0 afbank .EQ *-ofsG .HS 00 * memory map of lower 48k. each bit represents 1 page. * protected pages = 1, unprotected = 0 -memmap .EQ *-ofsG P8 memory bitmap +memmap .EQ *-ofsG P8 memory bitmap .HS C000000000000000 .HS 0000000000000000 - .HS 0000000000000001 + .HS 0000000000000001 * table of buffer addresses for currently open files. * these can only be changed thru the mli call setbuf. -buftbl .EQ *-ofsG +buftbl .EQ *-ofsG .HS 0000 file #1 .HS 0000 file #2 .HS 0000 file #3 .HS 0000 file #4 - .HS 0000 file #5 + .HS 0000 file #5 .HS 0000 file #6 .HS 0000 file #7 .HS 0000 file #8 @@ -83,32 +83,32 @@ buftbl .EQ *-ofsG * at the time of the most recent interrupt are stored here along * with the address interrupted. -inttbl .EQ *-ofsG interrupt table - .HS 0000 int #1 +inttbl .EQ *-ofsG interrupt table + .HS 0000 int #1 .HS 0000 int #2 .HS 0000 int #3 .HS 0000 int #4 -p8areg .EQ *-ofsG A register savearea - .DA #0 -p8xreg .EQ *-ofsG X register savearea +p8areg .EQ *-ofsG A register savearea .DA #0 -p8yreg .EQ *-ofsG Y register savearea +p8xreg .EQ *-ofsG X register savearea .DA #0 -p8sreg .EQ *-ofsG S register savearea +p8yreg .EQ *-ofsG Y register savearea .DA #0 -p8preg .EQ *-ofsG P register savearea +p8sreg .EQ *-ofsG S register savearea + .DA #0 +p8preg .EQ *-ofsG P register savearea .DA #0 bankid .EQ *-ofsG bank ID byte (ROM/RAM) .DA #1 -intadr .EQ *-ofsG interrupt return address +intadr .EQ *-ofsG interrupt return address .HS 0000 -p8date .EQ *-ofsG bits 15-9=yr, 8-5=mo, 4-0=day +p8date .EQ *-ofsG bits 15-9=yr, 8-5=mo, 4-0=day .HS 0000 -p8time .EQ *-ofsG bits 12-8=hr, 5-0=min, low-hi format +p8time .EQ *-ofsG bits 12-8=hr, 5-0=min, low-hi format .HS 0000 flevel .EQ *-ofsG current file level .DA #0 -bubit .EQ *-ofsG backup bit disable, setfileinfo only +bubit .EQ *-ofsG backup bit disable, setfileinfo only .DA #0 spare1 .EQ *-ofsG used to save acc .DA #0 @@ -116,17 +116,17 @@ newpfxptr .EQ *-ofsG appletalk alternate prefix ptr .DA #0 *machid .EQ *-ofsG machine ID byte .DA #0 -rommap .EQ *-ofsG slot ROM bit map +rommap .EQ *-ofsG slot ROM bit map .DA #0 preflag .EQ *-ofsG prefix active flag .DA #0 -mliact .EQ *-ofsG MLI active flag +mliact .EQ *-ofsG MLI active flag .DA #0 mliretn .EQ *-ofsG last MLI call return address .DA 0 -mlix .EQ *-ofsG MLI X register savearea +mlix .EQ *-ofsG MLI X register savearea .DA #0 -mliy .EQ *-ofsG MLI Y register savearea +mliy .EQ *-ofsG MLI Y register savearea .DA #0 * language card bank switching routines which must reside at $BFA0 because @@ -134,15 +134,15 @@ mliy .EQ *-ofsG MLI Y register savearea HBFA0 .EQ *-ofsG GP.HBFA0 eor $E000 test for rom enable - beq .1 taken if ram enabled + beq .1 taken if ram enabled sta RROMBNK2 read ROM - bne .2 always -.1 lda bnkbyt2 for alternate ram - eor $D000 test - beq .2 branch if not alternate ram + bne .2 always +.1 lda bnkbyt2 for alternate ram + eor $D000 test + beq .2 branch if not alternate ram lda RRAMWRAMBNK2 else enable alt $D000 -.2 pla return code - rti re-enable interrupts and return +.2 pla return code + rti re-enable interrupts and return mlicont .EQ *-ofsG sec @@ -156,13 +156,13 @@ mlicont .EQ *-ofsG jmp xdosmli irqexit .EQ *-ofsG - lda bankid determine state of ram card (ROM/RAM) + lda bankid determine state of ram card (ROM/RAM) irqxit0 .EQ *-ofsG -GP.irqxit0 beq .2 branch if ram card enabled. - bmi .1 branch if alternate $D000 enabled. +GP.irqxit0 beq .2 branch if ram card enabled. + bmi .1 branch if alternate $D000 enabled. - lsr determine if no ram card present. + lsr determine if no ram card present. bcc .3 branch if rom only system. lda RROMWRAMBNK2 enable rom @@ -185,7 +185,7 @@ bnkbyt2 .EQ *-ofsG .DA #0 .HS 00000000 pad to before $BFFA .DA #4 gsos compatibility byte ($BFFA) - .DA #0 pad + .DA #0 pad .DA #0 reserved .DA #0 version # of running interpreter .DA #0 preserved for System Utilities diff --git a/ProDOS.203/ProDOS.S.IRQ.txt b/ProDOS.203/ProDOS.S.IRQ.txt index 86859301..e65ce275 100644 --- a/ProDOS.203/ProDOS.S.IRQ.txt +++ b/ProDOS.203/ProDOS.S.IRQ.txt @@ -6,29 +6,29 @@ NEW * address $FFCB (ROM rts opcode) for rom switching to function. lanirq .EQ *-ofsR2 - -H2D9B pha $2D9B-2DFF moved to $FF9B-FFFF + .BS $2D9B-* +H2D9B pha $2D9B-2DFF moved to $FF9B-FFFF lda accsav sta oldacc pla sta accsav - pla get status register from stack - pha and put it back. - and #$10 is it a break or interrupt? - bne H2DC2 branch if break. - lda $D000 get ram bankid (LC1 = $D8, LC2=$EE) - eor #$D8 is the system active? ($D8) - beq sysactv branch if it is + pla get status register from stack + pha and put it back. + and #$10 is it a break or interrupt? + bne H2DC2 branch if break. + lda $D000 get ram bankid (LC1 = $D8, LC2=$EE) + eor #$D8 is the system active? ($D8) + beq sysactv branch if it is lda #$FF sysactv sta bankid sta afbank - lda /aftirq setup return address + lda /aftirq setup return address pha lda #aftirq pha - lda #$04 status reg with interrupt flag set + lda #$04 status reg with interrupt flag set pha -H2DC2 lda /romirq setup ROM re-entry +H2DC2 lda /romirq setup ROM re-entry pha lda #romirq pha @@ -64,8 +64,8 @@ stapfx .EQ *-ofsR2 * these 3 vectors hard-coded into processor - .DA nmivect nmi handler - .DA lreset reset handler + .DA nmivect nmi handler + .DA lreset reset handler irqv .EQ *-ofsR2 .DA lanirq irq handler diff --git a/ProDOS.203/ProDOS.S.LDR.A.txt b/ProDOS.203/ProDOS.S.LDR.A.txt index c28800e2..676b2a69 100644 --- a/ProDOS.203/ProDOS.S.LDR.A.txt +++ b/ProDOS.203/ProDOS.S.LDR.A.txt @@ -164,7 +164,7 @@ H216E jsr reloc sei no interrupts. sta SETALTZP use alt zero page/stack stx auxsp init aux sp to $FF - sta SETALTZP use main zero page/stack + sta CLRALTZP use main zero page/stack pha restore interrupt status plp sta CLRC3ROM enable internal slot 3 ROM @@ -184,7 +184,7 @@ noramdsk lda RROMWRAMBNK2 read ROM/write RAM bank 2 sta auxsp stx irqv+1 interrupt vector sty irqv save irq vector in aux lc - sta SETALTZP use main zero page/stack + sta CLRALTZP use main zero page/stack stx irqv+1 save irq vector in main lc sty irqv lda #$01 diff --git a/ProDOS.203/ProDOS.S.LDR.B.txt b/ProDOS.203/ProDOS.S.LDR.B.txt index e65aa6b4..5c41de1a 100644 --- a/ProDOS.203/ProDOS.S.LDR.B.txt +++ b/ProDOS.203/ProDOS.S.LDR.B.txt @@ -817,7 +817,7 @@ nxgroup dey is opcode len in lowest 2 bits of acc? lsr (if length = 0 then error) bne nxgroup - .LIST ON + .BS $2B89-* H2B89 and #$03 rts if z-set then error @@ -845,7 +845,7 @@ patch101 php sei disable interrupts clc xce full native mode - + >LONGMX phb save DBR pha pha @@ -869,9 +869,9 @@ patch101 php >IIGS PtrToHand plx low word of handle plb set DBR to handle's bank - lda 1,x get upper 16 bits of 24 bit address + lda >1,x get upper 16 bits of 24 bit address tay save in y - lda 0,x get low 8 bits of address + lda >0,x get low 8 bits of address and ##$00FF clear high byte xba put address in high byte ora ##$005C include JML opcode @@ -903,7 +903,8 @@ L2C4D lda 1,s sec rtl - .BS $2C80-* + .BS $2C80-* + MAN SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.B LOAD USR/SRC/PRODOS.203/PRODOS.S diff --git a/ProDOS.203/ProDOS.S.RAMI.txt b/ProDOS.203/ProDOS.S.RAMI.txt index c9e27a94..ac0b9b58 100644 --- a/ProDOS.203/ProDOS.S.RAMI.txt +++ b/ProDOS.203/ProDOS.S.RAMI.txt @@ -9,7 +9,7 @@ RAM_1 .BS $2C80-* H2C80 ldy #$99 move $9A bytesfrom lcsrc to lcdest. -.1 lda lcsrc,y transfer main bank portion of driver +.1 lda lcsrc,y transfer main bank portion of driver sta lcdest,y dey cpy #$FF @@ -19,7 +19,7 @@ H2C80 ldy #$99 move $9A bytesfrom lcsrc to lcdest. stx A1L dex stx A2L - ldx ramsrc + ldx /ramsrc stx A1L+1 inx stx A2L+1 diff --git a/ProDOS.203/ProDOS.S.RAMX.txt b/ProDOS.203/ProDOS.S.RAMX.txt index 5acef5a9..4341adf9 100644 --- a/ProDOS.203/ProDOS.S.RAMX.txt +++ b/ProDOS.203/ProDOS.S.RAMX.txt @@ -99,7 +99,7 @@ L5194 lda (A1L),y move A1,A2 to A4,A3 sta (A3L),y dey bne L5194 - sta SETALTZP use main zero page/stack + sta CLRALTZP use main zero page/stack L51A2 stx R2L pla restore R2 sta R2H diff --git a/ProDOS.203/ProDOS.S.SEL0.txt b/ProDOS.203/ProDOS.S.SEL0.txt index 97da12e8..ea1cc9af 100644 --- a/ProDOS.203/ProDOS.S.SEL0.txt +++ b/ProDOS.203/ProDOS.S.SEL0.txt @@ -260,22 +260,22 @@ L5C0B jsr prntmsg dsp1msgs .EQ *-ofsS dsp1msg0 .EQ *-ofsS - .AS "ENTER PREFIX (PRESS "RETURN" TO ACCEPT)" + .AS -"ENTER PREFIX (PRESS "RETURN" TO ACCEPT)" .HS 00 disp1msg .EQ *-ofsS - .AS "ENTER PATHNAME OF NEXT APPLICATION" + .AS -"ENTER PATHNAME OF NEXT APPLICATION" .HS 00 dsp1err1 .EQ *-ofsS .DA #$87 - .AS "NOT A TYPE "SYS" FILE" + .AS -'NOT A TYPE "SYS" FILE' .HS 00 dsp1err2 .EQ *-ofsS .DA #$87 - .AS "I/O ERROR " + .AS -"I/O ERROR " .HS 00 dsp1err3 .EQ *-ofsS .DA #$87 - .AS "FILE/PATH NOT FOUND " + .AS -"FILE/PATH NOT FOUND " .HS 00 dsp1info .EQ *-ofsS get file info parms .DA #$0A 10 parameters diff --git a/ProDOS.203/ProDOS.S.SEL1.txt b/ProDOS.203/ProDOS.S.SEL1.txt index 859d16e8..e6f6f223 100644 --- a/ProDOS.203/ProDOS.S.SEL1.txt +++ b/ProDOS.203/ProDOS.S.SEL1.txt @@ -381,13 +381,13 @@ doread .EQ *-ofsB * data area dsp2msg .EQ *-ofsB - .AS "RETURN: Select | TAB: Chg Vol | " - .AS "ESC: Back" + .AS -"RETURN: Select | TAB: Chg Vol | " + .AS -"ESC: Back" .DA #$00 fldrmsg .EQ *-ofsB .DA #$0F inverse control code .HS 1B enable mousetext - .AS "XY" folder characters + .AS -"XY" folder characters .HS 18 disable mousetext .HS 0E normal control code .HS 00 diff --git a/ProDOS.203/ProDOS.S.SEL2.txt b/ProDOS.203/ProDOS.S.SEL2.txt index 56967a6e..3c7857ca 100644 --- a/ProDOS.203/ProDOS.S.SEL2.txt +++ b/ProDOS.203/ProDOS.S.SEL2.txt @@ -19,7 +19,7 @@ GQdisp lda RRAMWRAMBNK1 read/write LC bank 1 clc xce 16 bit native mode. jmp P8QUIT go to GQuit. - .DA #0000000000 offset to paragraph boundary. + .HS 0000000000 offset to paragraph boundary. .AS "GQ" id bytes so GQuit can identify this * load application @@ -39,10 +39,10 @@ GQdisp lda RRAMWRAMBNK1 read/write LC bank 1 * so in case of an error setting the P8 prefix, it can be displayed in the * error message. -* SHORT M 8 bit accumulator -* LONG I ON + >SHORTM 8 bit accumulator + pha save the switch status. - ldx #inbuf point to passed prefix. + ldx ##inbuf point to passed prefix. jsr copyvol copy the name into the buffer. pla retrieve the switch status @@ -66,11 +66,11 @@ L6020 jsr MLI set prefix * load application at $2000 L602D xce native mode (carry clear) -* LONG I 16 bit regs, 8 bit acc. + >LONGX 16 bit regs, 8 bit acc. lda pbuf+1 is the application name cmp #$2F a complete pathname ? bne L603D no, use prefix as volume name - ldx #pbuf else use the application name. + ldx ##pbuf else use the application name. jsr copyvol copy the volume name to buffer. L603D sec back to emulation mode. xce @@ -124,7 +124,7 @@ L6099 lda RROMBNK2 enable ROM gqerror .EQ *-ofsQ clc xce 16 bit native mode -* LONG I,M + >LONGMX jsr mountvol mount volume. bcs L60AB if error. sec back to emulation mode. @@ -136,8 +136,8 @@ gqerror .EQ *-ofsQ L60AB clc native mode xce -* LONG I,M - and #$00FF mask off high byte of error code. + >LONGMX + and ##$00FF mask off high byte of error code. pha put on stack for IntMath tool call. pea $0000 errval>>16 pea errval push address of string buffer. @@ -167,16 +167,16 @@ L60AB clc native mode * carry set if no window displayed or if had window and 'esc' pressed. mountvol .EQ *-ofsQ - ldy #$0000 volbuf>>16 - ldx #volbuf set up pointer to volume name. + ldy ##$0000 volbuf>>16 + ldx ##volbuf set up pointer to volume name. * if error is 'volume not found' or 'no disk in drive' then display the * Mount Volume window, otherwise return with carry set. - and #$00FF mask just in case. - cmp #$0045 volume not found ? + and ##$00FF mask just in case. + cmp ##$0045 volume not found ? beq L6101 yes - cmp #$002F no disk in drive ? + cmp ##$002F no disk in drive ? beq L6101 yes sec indicate error not handled. rts return with error code still in acc. @@ -210,7 +210,7 @@ L6101 pha save error code in case esc pressed. pld restore D reg. plx pull volume name pointer off stack plx - cmp #$0001 which button was pressed ? + cmp ##$0001 which button was pressed ? bne L613C if Escape pressed. clc indicate Return was pressed. pla pull original error code off stack. @@ -225,21 +225,20 @@ L613C sec indicate Escape was pressed. * output: volume name is stored in volbuf. copyvol .EQ *-ofsQ - lda 1,x get the first slash + lda >1,x get the first slash sta volbuf+1 - ldy #$0002 initialize the length count. -* LONGI OFF -* LONGA OFF -L6148 lda 2,x now copy the volume name up to - cmp #$2F the separating slash. + ldy ##$0002 initialize the length count. + +L6148 lda >2,x now copy the volume name up to + cmp #$2F the separating slash. beq L6156 sta volbuf,y inx iny - bra L6148 + bra L6148 L6156 dey fix character count. - tya length. - sta volbuf store the resultant string length. + tya length. + sta volbuf store the resultant string length. rts * translate a filename message from the message center to the currently @@ -263,7 +262,7 @@ L6170 lda #$FF put flag conditioning value on pha the stack (assume error). clc native 16-bit mode. xce -* LONG I,M + >LONGMX pha make room on stack for user id. >IIGS MMStartUp start up the memory manager. pla get the user id and @@ -288,70 +287,70 @@ L6170 lda #$FF put flag conditioning value on pha (still in acc and x regs) >IIGS MessageCenter bcs L6203 branch if no message. - pha leave 4 bytes free on stack - pha (will be used as a direct page pointer) - tsc get the stack pointer. - phd save current direct register. - inc point to new direct page space. - tcd make a new direct page. + pha leave 4 bytes free on stack + pha (will be used as a direct page pointer) + tsc get the stack pointer. + phd save current direct register. + inc point to new direct page space. + tcd make a new direct page. lda [$04] de-reference the handle. - sta $00 - ldy #$0002 - lda [$04],y - sta $02 - ldy #$0006 get the message command. - lda [$00],y - bne bad_msg if print, then skip it. - lda $00 adjust pointer to filename string. + sta $00 + ldy ##$0002 + lda [$04],y + sta $02 + ldy ##$0006 get the message command. + lda [$00],y + bne bad_msg if print, then skip it. + lda $00 adjust pointer to filename string. clc - adc #$0008 - sta $00 - bcc L61D1 - inc $02 -L61D1 lda [$00] get the length of the string. - and #$00FF mask off high (leaving just the length) -* SHORT M 8 bit accumulator - cmp sysentry+5 check against length of app buffer. - beq L61DF if equal then continue with move. - bcs bad_msg if too long then bad message. -L61DF tay string length. -L61E0 lda [$00],y get a character. - sta sysentry+6,y store it in the app's filename buffer - sta inbuf,y and in prefix buffer. + adc ##$0008 + sta $00 + bcc L61D1 + inc $02 +L61D1 lda [$00] get the length of the string. + and ##$00FF mask off high (leaving just the length) + >SHORTM 8 bit accumulator + cmp sysentry+5 check against length of app buffer. + beq L61DF if equal then continue with move. + bcs bad_msg if too long then bad message. +L61DF tay string length. +L61E0 lda [$00],y get a character. + sta sysentry+6,y store it in the app's filename buffer + sta inbuf,y and in prefix buffer. dey - bpl L61E0 - lda #$00 change flag conditioning value on stack - sta $0D,s to indicate a filename is passed. + bpl L61E0 + lda #$00 change flag conditioning value on stack + sta $0D,s to indicate a filename is passed. bad_msg -* LONG M 16-bit acc. - pld restore direct register. - pla fix stack because handle and userid - pla still on stack. + >LONGM 16-bit acc. + pld restore direct register. + pla fix stack because handle and userid + pla still on stack. pea $0003 now delete the message (done with it). pea $0001 message type 1. - pha garbage handle (not used). + pha garbage handle (not used). pha >IIGS MessageCenter go delete the message. L6203 >IIGS DisposeHandle throw away message (handle is on stack) L620A >IIGS MMShutDown shutdown the memory manager (userid is sec on stack). xce back to emulation mode. -* LONGA OFF + pla condition z-flag with value on stack. - bne L6231 then done. - ldx inbuf get length of pathname. - lda #$2F look for slash. + bne L6231 then done. + ldx inbuf get length of pathname. + lda #$2F look for slash. L621B cmp inbuf,x - beq L6225 when found, set prefix. + beq L6225 when found, set prefix. dex - bne L621B - bra L6231 if no slash, just skip it. -L6225 dex don't include trailing slash. - stx inbuf set new length. - jsr MLI set the P8 prefix. + bne L621B + bra L6231 if no slash, just skip it. +L6225 dex don't include trailing slash. + stx inbuf set new length. + jsr MLI set the P8 prefix. .DA #$C6 .DA pfxparms - lda #$00 set z-flag + lda #$00 set z-flag L6231 rts and go launch the app. * check for disk volume @@ -363,23 +362,23 @@ L6231 rts and go launch the app. ckfordrv .EQ *-ofsQ SEL2.ckfordrv clc native mode xce -* LONG I 16-bit regs, 8-bit acc. - ldx #sysentry+6 point to pathname buffer. + >LONGX 16-bit regs, 8-bit acc. + ldx ##sysentry+6 point to pathname buffer. jsr copyvol copy volume name to pathname buffer. -.1 sec emulation mode. +.1 sec emulation mode. xce jsr MLI get info on the volume. .DA #$C4 .DA gfiparms - bcc .2 branch if volume found, - clc (native mode) + bcc .2 branch if volume found, + clc (native mode) xce -* LONG I,M + >LONGMX jsr mountvol else ask user to mount the volume. bcc .1 if pressed, then try again. - sec emulation mode. + sec emulation mode. xce - sec disk not found. + sec disk not found. .2 rts * Prodos 8 parameter lists @@ -435,12 +434,12 @@ gfiparms .EQ *-ofsQ get file info parms. quitstr1 .EQ *-ofsQ .DA #$1B - .AS 'Can't run next application.' + .AS "Can't run next application." quitstr2 .EQ *-ofsQ .DA #$14 .AS "ProDOS Error = $" errval .EQ *-ofsQ hex error code gets stored here - .AS ' ' + .AS " " quitbtn2 .EQ *-ofsQ null string (no 2nd button) .HS 00 diff --git a/ProDOS.203/ProDOS.S.TCLK.txt b/ProDOS.203/ProDOS.S.TCLK.txt index b35cf92b..a0badd90 100644 --- a/ProDOS.203/ProDOS.S.TCLK.txt +++ b/ProDOS.203/ProDOS.S.TCLK.txt @@ -92,13 +92,13 @@ tdays .EQ *-ofsT * the days of the week. yradj .EQ *-ofsT - .DA #$60 Monday - .DA #$5F Sunday - .DA #$5E Saturday - .DA #$5D Friday - .DA #$62 Thursday - .DA #$61 Wednesday - .DA #$60 Tuesday + .DA #$07 Monday + .DA #$0C Sunday + .DA #$0B Saturday + .DA #$0A Friday + .DA #$09 Thursday + .DA #$08 Wednesday + .DA #$08 Tuesday tclk_end .EQ * end of obj tclock_0. .HS 000000 pad *-------------------------------------- diff --git a/ProDOS.203/ProDOS.S.XDOS.A.txt b/ProDOS.203/ProDOS.S.XDOS.A.txt index cb0e7e0f..6b43db42 100644 --- a/ProDOS.203/ProDOS.S.XDOS.A.txt +++ b/ProDOS.203/ProDOS.S.XDOS.A.txt @@ -4,8 +4,8 @@ NEW * xdos mli system call processor ofsX .EQ *-xdosorg offset to xdos org - xdosmli .EQ *-ofsX xdos MLI in aux ram + xdosobj cld no decimal. pla get processor status sta spare1 save it temporarily @@ -109,7 +109,7 @@ devmgr .EQ *-ofsX php do not allow interrupts. sei the call spec for devices must H30B9 lda (A3L),y be passed to drivers in page zero: - sta (A4L),y sta $0042,y + sta >$0042,y dey bne H30B9 ldx buf+1 buffer page diff --git a/ProDOS.203/ProDOS.S.XDOS.M.txt b/ProDOS.203/ProDOS.S.XDOS.M.txt index 040d43d5..e399f421 100644 --- a/ProDOS.203/ProDOS.S.XDOS.M.txt +++ b/ProDOS.203/ProDOS.S.XDOS.M.txt @@ -32,7 +32,7 @@ L4DED dex test for conflicts. inx inx inx -L4DFE dex set proper bits to 1 +L4DFE dex set proper bits to 1 jsr cmembit ora memmap,y to mark it's allocation. sta memmap,y @@ -47,7 +47,7 @@ L4DFE dex set proper bits to 1 sta buftbl-1,x validated as good. store hi addr clc (entnums start at 1, not 0) rts -L4E1E lda #$56 buffer is in use or not legal +L4E1E lda #$56 buffer is in use or not legal sec rts getbufadr .EQ *-ofsX @@ -69,21 +69,21 @@ freebuf .EQ *-ofsX inx inx inx -L4E43 dex drop to next lower page. +L4E43 dex drop to next lower page. jsr cmembit get bit and position to memtable of eor #$FF this page. invert mask. and memmap,y mark address as free space. sta memmap,y cpx bufaddrh all pages freed ? bne L4E43 no. -L4E54 clc no error. +L4E54 clc no error. rts * calculate memory allocation bit position. * on entry: x = high address of buffer, low address assumed zero. * on exit: acc = allocation bit mask, x = unchanged, y = pointer to memtabl byte -cmembit .EQ *-ofsX +cmembit .EQ *-ofsX txa page address and #$07 which page in any 2k set ? tay use as index to determine @@ -105,7 +105,7 @@ valdbuf .EQ *-ofsX sbc #$01 (carry is set) bcs L4E76 dex -L4E76 clc +L4E76 clc adc usrbuf calculate end of request address. txa do high address. adc usrbuf+1 the final address @@ -113,8 +113,8 @@ L4E76 clc cpx #$BF bcs L4E1E report bad buffer. inx loop thru all affected pages. -vldbuf1 .EQ *-ofsX -L4E82 dex check next lower page. +vldbuf1 .EQ *-ofsX +L4E82 dex check next lower page. jsr cmembit and memmap,y if 0 then no conflict. bne L4E1E branch if conflict. @@ -123,7 +123,7 @@ L4E82 dex check next lower page. clc all pages ok. rts -getbuf .EQ *-ofsX give user address of file buffer +getbuf .EQ *-ofsX give user address of file buffer ldy #$02 referenced by refnum. lda bufaddrl sta (A3L),y @@ -133,7 +133,7 @@ getbuf .EQ *-ofsX give user address of file buffer clc no errors possible rts -setbuf .EQ *-ofsX +setbuf .EQ *-ofsX ldy #$03 jsr alcbufr1 allocate new buffer address over old one bcs L4EC7 report any errors immediately @@ -144,7 +144,7 @@ setbuf .EQ *-ofsX jsr freebuf free address space of old buffer ldy #$00 ldx #$03 -L4EB8 lda (usrbuf),y move all 4 pages of the buffer to +L4EB8 lda (usrbuf),y move all 4 pages of the buffer to sta (datptr),y new location. iny bne L4EB8 @@ -153,7 +153,7 @@ L4EB8 lda (usrbuf),y move all 4 pages of the buffer to dex bpl L4EB8 clc no errors -L4EC7 rts +L4EC7 rts * move 3 pages of dispatcher from 'displc2' to 'dispadr' @@ -171,7 +171,7 @@ calldisp .EQ *-ofsX stz A1L ldy #$00 ldx #$03 3 pages to move. -L4EE0 dey move a page of code. +L4EE0 dey move a page of code. lda (A1L),y sta (A2L),y tya @@ -193,7 +193,7 @@ L4EE0 dey move a page of code. * translate a prodos call into a smartport call * to access unseen smartport devices -remap_sp .EQ *-ofsX +remap_sp .EQ *-ofsX ldx #$03 assume 3 parameters. lda A4L command number sta cmdnum @@ -203,10 +203,10 @@ remap_sp .EQ *-ofsX ldy /spstatlist sty buf+1 stz bloknml set statcode = 0 for simple status call -L4F1B cmp #$03 format command ? +L4F1B cmp #$03 format command ? bne L4F21 no. ldx #$01 format has only 1 parameter. -L4F21 stx statparms set # of parms. +L4F21 stx statparms set # of parms. lda unitnum lsr turn unit number into an index lsr @@ -220,13 +220,13 @@ L4F21 stx statparms set # of parms. lda spvecthi-1,x sta sp_vector+2 ldx #$04 copy buffer pointer and block # -L4F3F lda buf-1,x from prodos parameters +L4F3F lda buf-1,x from prodos parameters sta sp_bufptr-1,x to smartport parameter block dex bne L4F3F -sp_vector .EQ *-ofsX smartport call +sp_vector .EQ *-ofsX smartport call jsr $0000 (entry address gets modified) -cmdnum .EQ *-ofsX +cmdnum .EQ *-ofsX .HS 00 command # .DA statparms bcs L4F6E @@ -239,294 +239,293 @@ cmdnum .EQ *-ofsX bne L4F65 yes, check for write protected. lda #$2F return offline error. bra L4F6D -L4F65 and #$44 mask all but write allowed and write +L4F65 and #$44 mask all but write allowed and write eor #$40 protected bits. if allowed and not beq L4F6E protected, exit with carry clear lda #$2B else return write protected error. -L4F6D sec -L4F6E rts -spvectlo .EQ *-ofsX storage for low byte of smartport - .HS 0000000000000000 entry. - .HS 00000000000000 -spvecthi .EQ *-ofsX storage for high byte of smartport - .HS 0000000000000000 entry. - .HS 00000000000000 -statparms .EQ *-ofsX # of parms (always 3 except format) - .HS 03 -sp_unitnum .EQ *-ofsX - .HS 00 unit number -sp_bufptr .EQ *-ofsX - .HS 0000 data buffer +L4F6D sec +L4F6E rts +spvectlo .EQ *-ofsX storage for low byte of smartport + .HS 0000000000000000 entry. + .HS 00000000000000 +spvecthi .EQ *-ofsX storage for high byte of smartport + .HS 0000000000000000 entry. + .HS 00000000000000 +statparms .EQ *-ofsX # of parms (always 3 except format) + .HS 03 +sp_unitnum .EQ *-ofsX + .HS 00 unit number +sp_bufptr .EQ *-ofsX + .HS 0000 data buffer .HS 000000 block number (3 bytes) * data tables -scnums .EQ *-ofsX table of valid mli command numbers. - .HS D3000000 - .HS 40410000808182 - .HS 65C0C1C2C3C4C5C6 - .HS C7C8C9CACBCCCDCE - .HS CF00D0D1D2 -pcntbl .EQ *-ofsX parameter counts for the calls - .HS 02FFFF - .HS FF0201FFFF030300 - .HS 04070102070A0201 - .HS 0103030404010102 - .HS 02FF020202 +scnums .EQ *-ofsX table of valid mli command numbers. + .HS D3000000 + .HS 40410000808182 + .HS 65C0C1C2C3C4C5C6 + .HS C7C8C9CACBCCCDCE + .HS CF00D0D1D2 +pcntbl .EQ *-ofsX parameter counts for the calls + .HS 02FFFF + .HS FF0201FFFF030300 + .HS 04070102070A0201 + .HS 0103030404010102 + .HS 02FF020202 * command table -cmdtable .EQ *-ofsX - .DA create create - .DA destroy destroy - .DA rename rename - .DA setinfo setinfo - .DA getinfo getinfo - .DA online online - .DA setprefx set prefix - .DA getprefx get prefix - .DA openf open - .DA newline newline - .DA readf read - .DA writef write - .DA closef close - .DA flushf flush - .DA setmark set mark - .DA getmark get mark - .DA seteof seteof - .DA geteof geteof - .DA setbuf setbuf - .DA getbuf getbuf +cmdtable .EQ *-ofsX + .DA create create + .DA destroy destroy + .DA rename rename + .DA setinfo setinfo + .DA getinfo getinfo + .DA online online + .DA setprefx set prefix + .DA getprefx get prefix + .DA openf open + .DA newline newline + .DA readf read + .DA writef write + .DA closef close + .DA flushf flush + .DA setmark set mark + .DA getmark get mark + .DA seteof seteof + .DA geteof geteof + .DA setbuf setbuf + .DA getbuf getbuf * corresponding command function bytes -disptch .EQ *-ofsX - .HS A0A1A2A3 - .HS 84050607 +disptch .EQ *-ofsX + .HS A0A1A2A3 + .HS 84050607 .HS 88494A4B - .HS 2C2D4E4F - .HS 50515253 + .HS 2C2D4E4F + .HS 50515253 -dinctbl .EQ *-ofsX table to increment - .HS 0100000200 directory usage/eof counts -pass .EQ *-ofsX - .HS 75 -xdosver .EQ *-ofsX - .HS 00 -compat .EQ *-ofsX +dinctbl .EQ *-ofsX table to increment + .HS 0100000200 directory usage/eof counts +pass .EQ *-ofsX + .HS 75 +xdosver .EQ *-ofsX + .HS 00 +compat .EQ *-ofsX .HS 00 .HS C3270D000000 -rootstuf .EQ *-ofsX - .HS 0F02000400000800 -whichbit .EQ *-ofsX - .HS 8040201008040201 -ofcbtbl .EQ *-ofsX - .HS 0C0D1819151617 -inftabl .EQ *-ofsX - .HS 1E101F2080939421 - .HS 22232418191A1B -deathmsg .EQ *-ofsX - .HS 20 - - .AS 'RESTART SYSTEM-$01' - .HS 20 +rootstuf .EQ *-ofsX + .HS 0F02000400000800 +whichbit .EQ *-ofsX + .HS 8040201008040201 +ofcbtbl .EQ *-ofsX + .HS 0C0D1819151617 +inftabl .EQ *-ofsX + .HS 1E101F2080939421 + .HS 22232418191A1B +deathmsg .EQ *-ofsX + .HS 20 + .AS -"RESTART SYSTEM-$01" + .HS 20 *** work space *** * note: this area is accessed by code that depends on the order of these * variables in the file control block and temporary directory. -own_blk .EQ *-ofsX - .HS 0000 -own_ent .EQ *-ofsX - .HS 00 -own_len .EQ *-ofsX - .HS 00 -h_credt .EQ *-ofsX - .HS 0000 directory creation date - .HS 0000 directory creation time - .HS 00 version under which this dir created - .HS 00 earliest version that it's compatible -h_attr .EQ *-ofsX attributes (protect bit, etc.) - .HS 00 -h_entln .EQ *-ofsX length of each entry in this directory - .HS 00 -h_maxent .EQ *-ofsX maximum number of entries per block - .HS 00 -h_fcnt .EQ *-ofsX current # of files in this directory - .HS 0000 -h_bmap .EQ *-ofsX address of first allocation bitmap - .HS 0000 -h_tblk .EQ *-ofsX total number of blocks on this unit - .HS 0000 -d_dev .EQ *-ofsX device number of this directory entry - .HS 00 -d_head .EQ *-ofsX address of directory header - .HS 0000 -d_entblk .EQ *-ofsX address of block which contains entry - .HS 0000 -d_entnum .EQ *-ofsX entry number within block - .HS 00 -d_stor .EQ *-ofsX - .HS 0000000000000000 file name - .HS 0000000000000000 -d_filid .EQ *-ofsX user's identification byte - .HS 00 -d_frst .EQ *-ofsX first block of file - .HS 0000 -d_usage .EQ *-ofsX # of blocks allocated to this file - .HS 0000 -d_eof .EQ *-ofsX current end of file marker - .HS 000000 -d_credt .EQ *-ofsX - .HS 0000 file creation date - .HS 0000 file creation time -d_sosver .EQ *-ofsX sos version that created this file - .HS 00 -d_comp .EQ *-ofsX backward version compatibility - .HS 00 -d_attr .EQ *-ofsX attributes (protect, r/w, enable, etc.) - .HS 00 -d_auxid .EQ *-ofsX user auxilliary identification - .HS 0000 -d_moddt .EQ *-ofsX - .HS 0000 file's last modification date - .HS 0000 file's last modification time -d_dhdr .EQ *-ofsX file directory header block address - .HS 0000 -scrtch .EQ *-ofsX scratch area for - .DA #00000000 allocation address conversion. -oldeof .EQ *-ofsX temp used in r/w - .HS 000000 -oldmark .EQ *-ofsX - .DA #000000 -xvcbptr .EQ *-ofsX used in 'cmpvcb' as a temp - .HS 00 -vcbptr .EQ *-ofsX - .HS 00 -fcbptr .EQ *-ofsX - .HS 00 -fcbflg .EQ *-ofsX - .HS 00 -reql .EQ *-ofsX - .HS 00 -reqh .EQ *-ofsX - .HS 00 -levels .EQ *-ofsX - .HS 00 -totent .EQ *-ofsX - .HS 00 -entcntl .EQ *-ofsX - .HS 00 -entcnth .EQ *-ofsX - .HS 00 -cntent .EQ *-ofsX - .HS 00 -nofree .EQ *-ofsX - .HS 00 -bmcnt .EQ *-ofsX - .HS 00 -saptr .EQ *-ofsX - .HS 00 -pathcnt .EQ *-ofsX - .HS 00 -p_dev .EQ *-ofsX - .HS 00 -p_blok .EQ *-ofsX - .HS 0000 -bmptr .EQ *-ofsX - .HS 00 -basval .EQ *-ofsX - .HS 00 -half .EQ *-ofsX - .HS 00 +own_blk .EQ *-ofsX + .HS 0000 +own_ent .EQ *-ofsX + .HS 00 +own_len .EQ *-ofsX + .HS 00 +h_credt .EQ *-ofsX + .HS 0000 directory creation date + .HS 0000 directory creation time + .HS 00 version under which this dir created + .HS 00 earliest version that it's compatible +h_attr .EQ *-ofsX attributes (protect bit, etc.) + .HS 00 +h_entln .EQ *-ofsX length of each entry in this directory + .HS 00 +h_maxent .EQ *-ofsX maximum number of entries per block + .HS 00 +h_fcnt .EQ *-ofsX current # of files in this directory + .HS 0000 +h_bmap .EQ *-ofsX address of first allocation bitmap + .HS 0000 +h_tblk .EQ *-ofsX total number of blocks on this unit + .HS 0000 +d_dev .EQ *-ofsX device number of this directory entry + .HS 00 +d_head .EQ *-ofsX address of directory header + .HS 0000 +d_entblk .EQ *-ofsX address of block which contains entry + .HS 0000 +d_entnum .EQ *-ofsX entry number within block + .HS 00 +d_stor .EQ *-ofsX + .HS 0000000000000000 file name + .HS 0000000000000000 +d_filid .EQ *-ofsX user's identification byte + .HS 00 +d_frst .EQ *-ofsX first block of file + .HS 0000 +d_usage .EQ *-ofsX # of blocks allocated to this file + .HS 0000 +d_eof .EQ *-ofsX current end of file marker + .HS 000000 +d_credt .EQ *-ofsX + .HS 0000 file creation date + .HS 0000 file creation time +d_sosver .EQ *-ofsX sos version that created this file + .HS 00 +d_comp .EQ *-ofsX backward version compatibility + .HS 00 +d_attr .EQ *-ofsX attributes (protect, r/w, enable, etc.) + .HS 00 +d_auxid .EQ *-ofsX user auxilliary identification + .HS 0000 +d_moddt .EQ *-ofsX + .HS 0000 file's last modification date + .HS 0000 file's last modification time +d_dhdr .EQ *-ofsX file directory header block address + .HS 0000 +scrtch .EQ *-ofsX scratch area for + .HS 00000000 allocation address conversion. +oldeof .EQ *-ofsX temp used in r/w + .HS 000000 +oldmark .EQ *-ofsX + .HS 000000 +xvcbptr .EQ *-ofsX used in 'cmpvcb' as a temp + .HS 00 +vcbptr .EQ *-ofsX + .HS 00 +fcbptr .EQ *-ofsX + .HS 00 +fcbflg .EQ *-ofsX + .HS 00 +reql .EQ *-ofsX + .HS 00 +reqh .EQ *-ofsX + .HS 00 +levels .EQ *-ofsX + .HS 00 +totent .EQ *-ofsX + .HS 00 +entcntl .EQ *-ofsX + .HS 00 +entcnth .EQ *-ofsX + .HS 00 +cntent .EQ *-ofsX + .HS 00 +nofree .EQ *-ofsX + .HS 00 +bmcnt .EQ *-ofsX + .HS 00 +saptr .EQ *-ofsX + .HS 00 +pathcnt .EQ *-ofsX + .HS 00 +p_dev .EQ *-ofsX + .HS 00 +p_blok .EQ *-ofsX + .HS 0000 +bmptr .EQ *-ofsX + .HS 00 +basval .EQ *-ofsX + .HS 00 +half .EQ *-ofsX + .HS 00 * bitmap info tables -bmastat .EQ *-ofsX - .HS 00 -bmadev .EQ *-ofsX - .HS 00 -bmadadr .EQ *-ofsX - .HS 0000 -bmacmap .EQ *-ofsX - .HS 00 -tposll .EQ *-ofsX - .HS 00 -tposlh .EQ *-ofsX - .HS 00 -tposhi .EQ *-ofsX - .HS 00 -rwreql .EQ *-ofsX - .HS 00 -rwreqh .EQ *-ofsX - .HS 00 -nlchar .EQ *-ofsX - .HS 00 -nlmask .EQ *-ofsX - .HS 00 -ioaccess .EQ *-ofsX has a call been made to - .HS 00 disk device handler ? -cmdtemp .EQ *-ofsX - .HS 00 -bkbitflg .EQ *-ofsX used to set or clear backup bit - .HS 00 -duplflag .EQ *-ofsX - .HS 00 -vcbentry .EQ *-ofsX - .HS 00 +bmastat .EQ *-ofsX + .HS 00 +bmadev .EQ *-ofsX + .HS 00 +bmadadr .EQ *-ofsX + .HS 0000 +bmacmap .EQ *-ofsX + .HS 00 +tposll .EQ *-ofsX + .HS 00 +tposlh .EQ *-ofsX + .HS 00 +tposhi .EQ *-ofsX + .HS 00 +rwreql .EQ *-ofsX + .HS 00 +rwreqh .EQ *-ofsX + .HS 00 +nlchar .EQ *-ofsX + .HS 00 +nlmask .EQ *-ofsX + .HS 00 +ioaccess .EQ *-ofsX has a call been made to + .HS 00 disk device handler ? +cmdtemp .EQ *-ofsX + .HS 00 +bkbitflg .EQ *-ofsX used to set or clear backup bit + .HS 00 +duplflag .EQ *-ofsX + .HS 00 +vcbentry .EQ *-ofsX + .HS 00 * xdos temporary variables -namcnt .EQ *-ofsX - .HS 00 -rnptr .EQ *-ofsX - .HS 00 -namptr .EQ *-ofsX - .HS 00 -vnptr .EQ *-ofsX - .HS 00 -prfxflg .EQ *-ofsX - .HS 00 -cferr .EQ *-ofsX - .HS 00 +namcnt .EQ *-ofsX + .HS 00 +rnptr .EQ *-ofsX + .HS 00 +namptr .EQ *-ofsX + .HS 00 +vnptr .EQ *-ofsX + .HS 00 +prfxflg .EQ *-ofsX + .HS 00 +cferr .EQ *-ofsX + .HS 00 * deallocation temporary variables -firstbl .EQ *-ofsX - .HS 00 -firstbh .EQ *-ofsX - .HS 00 -stortyp .EQ *-ofsX - .HS 00 -deblock .EQ *-ofsX - .HS 0000 -dtree .EQ *-ofsX - .HS 00 -dsap .EQ *-ofsX - .HS 00 -dseed .EQ *-ofsX - .HS 0000 -topdest .EQ *-ofsX - .HS 00 -dtmpx .EQ *-ofsX - .HS 00 -loklst .EQ *-ofsX look list of recognized device numbers -dealbufl .EQ *-ofsX +firstbl .EQ *-ofsX + .HS 00 +firstbh .EQ *-ofsX + .HS 00 +stortyp .EQ *-ofsX + .HS 00 +deblock .EQ *-ofsX + .HS 0000 +dtree .EQ *-ofsX + .HS 00 +dsap .EQ *-ofsX + .HS 00 +dseed .EQ *-ofsX + .HS 0000 +topdest .EQ *-ofsX + .HS 00 +dtmpx .EQ *-ofsX + .HS 00 +loklst .EQ *-ofsX look list of recognized device numbers +dealbufl .EQ *-ofsX .HS 0000000000000000 -dealbufh .EQ *-ofsX - .HS 0000000000000000 -cbytes .EQ *-ofsX - .HS 0000 - .HS 00 cbytes+2 must = 0 -bufaddrl .EQ *-ofsX - .HS 00 -bufaddrh .EQ *-ofsX - .HS 00 -goadr .EQ *-ofsX - .HS 0000 -delflag .EQ *-ofsX used by 'detree' to know if called - .HS 00 from delete (destroy). +dealbufh .EQ *-ofsX + .HS 0000000000000000 +cbytes .EQ *-ofsX + .HS 0000 + .HS 00 cbytes+2 must = 0 +bufaddrl .EQ *-ofsX + .HS 00 +bufaddrh .EQ *-ofsX + .HS 00 +goadr .EQ *-ofsX + .HS 0000 +delflag .EQ *-ofsX used by 'detree' to know if called + .HS 00 from delete (destroy). * zero fill to page boundary - 3 ($FEFD). so that cortland flag stays * within page boundary. @@ -535,8 +534,8 @@ delflag .EQ *-ofsX used by 'detree' to know if called .HS 0000000000 .DA calldisp -cortflag .EQ *-ofsX cortland flag. 1 = Cortland system - .HS 00 (must stay within page boundary) +cortflag .EQ *-ofsX cortland flag. 1 = Cortland system + .HS 00 (must stay within page boundary) * end of obj mli_2 *-------------------------------------- diff --git a/ProDOS.203/ProDOS.S.txt b/ProDOS.203/ProDOS.S.txt index 918e108f..3a9939ed 100644 --- a/ProDOS.203/ProDOS.S.txt +++ b/ProDOS.203/ProDOS.S.txt @@ -20,6 +20,25 @@ MMShutDown .EQ $0303 ReadTimeHex .EQ $0D03 Int2Hex .EQ $220B TLTextMountVolume .EQ $1201 +*-------------------------------------- + .MA SHORTMX + sep #$30 + .EM + .MA SHORTM + sep #$20 + .EM + .MA SHORTX + sep #$10 + .EM + .MA LONGMX + rep #$30 + .EM + .MA LONGM + rep #$20 + .EM + .MA LONGX + rep #$10 + .EM *-------------------------------------- .MA IIGS ldx ##]1