From cec2764d5cb41e728521dd2d00dcbd2161f2f449 Mon Sep 17 00:00:00 2001 From: burniouf Date: Sun, 13 Mar 2022 13:52:24 +0100 Subject: [PATCH] KMs & PMs Cleanup --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes .Floppies/ProDOSFX.BOOT.po | Bin 143360 -> 143360 bytes A2osX.S.QC.txt | 5 +- A2osX.S.txt | 189 ++++++----- BASIC.FX/BASIC.S.A.txt | 486 ++++++++++++++------------- BASIC.FX/BASIC.S.B.txt | 648 ++++++++++++++++++++---------------- BASIC.FX/BASIC.S.C.txt | 630 ++++++++++++++++++----------------- BASIC.FX/BASIC.S.D.txt | 23 +- BASIC.FX/BASIC.S.GP..txt | 4 +- BASIC.FX/BASIC.S.LDR.txt | 99 +++--- BASIC.FX/BASIC.S.txt | 31 +- ProDOS.FX/ProDOS.S.ILDR.txt | 36 +- ProDOS.FX/ProDOS.S.txt | 2 +- SBIN/VEDD.S.txt | 4 + SYS/KERNEL.S.INIT.txt | 31 +- SYS/KM.APPLETALK.S.txt | 4 +- SYS/KM.NSC.S.txt | 4 +- SYS/KM.RAMWORKS.S.txt | 5 +- SYS/KM.VEDRIVE.S.CF.txt | 4 +- SYS/KM.VEDRIVE.S.GS.txt | 4 +- SYS/KM.VEDRIVE.S.IP.txt | 4 +- SYS/KM.VEDRIVE.S.U1.txt | 19 +- SYS/KM.VEDRIVE.S.U2.txt | 189 ++++++++++- SYS/KM.VEDRIVE.S.txt | 378 +++++++++++++++------ SYS/KM.VSDRIVE.S.txt | 4 +- 26 files changed, 1637 insertions(+), 1166 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index c88e5ba7970bc03e518da422c7169f6eb5a79c98..1c54c328fe8c90145f0474f8b17aa44e567d1633 100644 GIT binary patch delta 149024 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 delta 78740 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

muW6S&qYd*#tjk(=JdgEn}Ixn>m#f)mFfb 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 diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 72971c2842d11b4092f0ac482109cc8b5774164a..052633e2f88cefd3d6bbd15a450b9f675ffe3878 100644 GIT binary patch delta 27073 zcmeHw33wD$)^=@Oy=3151gLapCj>ey23(*?0^QPCNW$haCXz@ZAs`7N=uEdt90VGp zjkbZbw$YR{($H)PND?xmCf zSh_B=pm;$>@xtPg+&m1!`e$J@c2&vW=!02bqK2CW-FO^s0lfb&qzuC`jNotdp24^S z0y}Or%+AE8V zY$TN!7CunV*YP7V+!{)p+@pAdA~9^5?dz-Z;ccD<<#<%A*c1GHVBwsxB^mQ4jhSnm zn>;UN0lOe!;cE-~7Gn2eMuNc(za5}*4|9d6x=(w;9aEet#;t51jm-+z6I~3(Fvk_m zv}3wc70X;#xYL;(O7~Lhlo3hcN70pjM~+jKg|29s9oFR|CPZYay61Vw=HT>ZEFA=x z`#LUITSugu@>H&bK#NgjnWJ(g1{(S;`6^cu`YuqFZYor*4X=-=DNO&i%&xV=9&xW;xbw|2CbW-)9E>6^*Q18j{J*goUGqG)VXrq}} z=lRVMx;ym!LX~Ilp78h0gnLJNkt#IYv~8!E=r9v=!d0HFJ?lJI%)xuYw;kjQ*01wi zb&T8{8kz*4QwnzgI=P)xc>>H~jyO2HuJkJ4W&>k46Fr_UV@n-oC$Vvq$}(C720S`a z*`mJGQ}Y-e9jww(m>s3H^ad4HHB-F}-uW z-f^chT9oG~bw-)c>5H7W-<*xHRrsf&N=J_%-m#54Xxe-jHQ_Q;Pci{eQL<|j?x&* z+^%Pd$~)n2dq-i6r3B87cBOc}YQbWwQtGh=;w&yftKbjr2qPr-aAhT^ta%e*B^#a^K{?lLoDyM~8nI(agllTVTC5)5 zgQa@CiK$(lcoQ6kydM|S5DQ}f>!v-SJK|z?W1q#vc<6PWUzl4XTvH-qtCB5KA{xkx zQzJgeitrpTzuax~%JocYL}gYfG8uF)^3->ZMVCVS0{_P>ha!%`XM4m>Yy+xdTkKM7 zgT=gIdwP3B=!hC`m^oJFx$&l=NDq0jII^@nr&3>B6Zuf&Z;@9b z`y-n%&$UWRLe!?jsHUW-rsSxml&I#=-+~jOG7_U;^rjq4idvl%)tD5eINC*eyeU1N zGoLnN4p~Q16!@Id-8d#{9p`Y|;kk98XI*JgUfM}#{g@WD?ckWGZnu}ts>uUwgSup1 zrPGm~8Wk#cy6<9s>|JxTi}rkB{5GPJ`MekXLx+}-C`(LKr6oAZ5*_90@Armmci;#6 z`;}(6<7kiPit*dMaaIkUoN-SLHe=bcI;L<%#RFB3Oie6?0^_n}OR8!XGc%X1fbwNI z1;y5?%~SD0>uZ~nQgLhp;l?(S=Jl8vCP!>Krodp@C9w_s`8t@V(Ye{`-JFCM?u~i= zG_mK!0vaD>Eqv(*e7^Ozmmh=AgD+3PTdbE~Zjb8T?Y@T@cfb|iZojMD713_LyPZk4 zzU`Qb&$ISBhT-F^!(P!qV7&d6NAOX5TVH8Y;8(3R+qL*ut7Cf+d|uu@7S~$i--t39 zw|f)~D_kX=ce*DV^R~H)JHgj~G46bw8N1zkv0LZ8lUeXalcL=bu~FIXn7(mdC$qxo zR=JjRb}JetIEk#%I~&xDal7}gJENz1&>9=POry&()C9L(?A z+#Xc$g8P!Itke6KZiRLK8&Bf>)+sx*_^s9@JD!m*c*CJ&5)N4Vb|ePFJ!iTTymxi$ z8m1eMTD7jp6QQUCilR5o?qt?%Z=l8-+&Mep7=&K%4nws}LYLk{monU`+$HN)*CgC% z{m3;9ud#;h90i}_caDb7!kvj=mxp)8$6VdcT;1M`#a8}N)oxd{pIdJrJ(roQ)}1>i z1LE7AX*gpI-4z)KntgftfG4JBUFc8NvAag%?^+DYwU>WJF}S4eePe4O>XAWt1Wewza857{h^+x>X>oXqq|1kowmbW$W;8T{!`|y z9nAVI48Fto@kyrkXXmSy?3bPWmg3I(3C$F<;AQ9<2EZBsGcjA7Sbc(V+9yztJB-oo za0jkkvbJjN(xVE3p8697mNz?%iUUn8olR_~Za z8^WEvmIpg62RfZ^fh-239iBlgu^i(|boMLBMxNK%aHj-f>E>+Ae6g@kQ%*dvl`ibGt)! zQ0=Y-osE+**TT-mTd-2*KC5ou^gB>L?{!u{$gMchi9Va%)I~E4X3UwK?kuo`wY%nZ zrpoU0kf1xvq|od|OzUp<9~jHaFklbwi-SS>#lBP}vN9^0XARyz4Msx#{!zgI-o~tD zn4l!?9n+_D}d9Gn^n;`1$k>ja%GA9tqD>Kw0Qnyi{P z=fmYk-y9wO;ePiI%s*P)laPLdR|X!tTZ;GDfvElO6AN+Li4+o?kZwwQmY;cf`VgZaTCk zpu4Pr?tat_DQKxRx;--}eM{Sxn3o>h+Gc-n>n3YW`?tEM_C&ga+)lUJvB`bvjp;j| z-V?iHhpS<4TIFPX|w2jUNaV_>u`Yz#5ZTKyL{PvN|8B?r+k0no`wvvZ5` zbBzeZ{n3lCTd-G_@Fb;AponEyIuFYz)XmP#0U*5v%fONs4u*YPi1?%U7xFGlF;EZ3 z8&9193TFZeSB9lQ<~%Pqr^qmmXM6M+ED#$N$>C02^4A(CU^21`@@Iln>LQ3cfpf4& zI7TQ+E0##}!i0BPHdq>`mQ_xiZGO9^`E4Sgach(PrI#JAG{5?q4cFu9y*P0k-*a?% zh;q`DzM>r^FO~h)R<{t}pf{Z!)U1_g=7c}KSzt>UR)$f@(a@^=;%u%S^g$m5*w4JW z*hQgL@A8e8s@roDb>GFtfV3iA-u!~1s@WXNra!=B*xhojR(~Gm)aGH4k zLmU1Q+5c)NfxnKsak>q^128O$6RqtyPMPwY8BC;_aWV}GNRiQTDdSFn6P0rucXAnB zNfu6CN^)gtJ&}(4xpU^rB)GOxxc1j1=5h+0Z{p9J13EIb`kv6=9ea52K_rNDjz>}* ziQG3c%@hxX)A>TZ-m!=;eh!sBFF^P3-_5G5j_HT*HEBFlkLPM^scVMTGJ2vbTWet^ zI<7k>tX0%29pjwXT2(zv9gI7cNsMR0;u~mYY<$BnrOaPb8e~j-s`-b~ooU*~erIN9 zJd+wSW;%0QGV^3IDhh~a)7Z58(jAy{CK86qM#tx*<)rN$;~LggA6gz(3g6pvLqio$ zg}xK!fwU&J)HbsPpJ#enW1oH)f=K$4UGSfy;NWIWBkoz}`L!j&f_ogt4t}F)#6E#@ z5Za+o*JB+@bv@n@tTy!52X=&@uOOJO3Fiq!na&1!sIx)dAfBH7gy^aH2S?h$YZDqj zJo&dzKl}XeUwrwGuTFjKcig=y;sS00@jzZnY7OI13mH5d@EQCg8c7DfTEk`VJJpg5ey^I#;Nga#?ivr_46>#^ zmuz}P4XJ#ynos3B)LrUXnruzJhEL^dHJj=*O)E7`4{MrMX;3O(tI4R-aH;%C&FYn! z#+91Esr*U}pUSV%_*3~c8ZMPzt>IJo)tYSw*J$`uJ|EQfrSgwx2Bq>7)&5i-4lRGs zSRT++TJF_YDl|7uWSCobqtEmWUC-u#LzFtgT2xu*gP&EbYY8}yJ*#kHj@V}v zN1s)c2bYJ$I)a;3yA>6|^}$EsE2KUIn8YPVY)fzzX6Of4ONfa-Dvfm{?^aZW)rYKu zFRVV;F}#@?dM98E{o4Uz=y#;trFTMwP}OUS7A2yu4)r;Yta7+FQNJ7G>hu8f=8J++ z5vt$w#aZ0^DLP!kX<_2k5VU|K=G`2vdj%rhxgDR3KiY`po;wxjxv~+rE)Na@bg!U`8~(K%X3Z6+l)Ty}iRBh69W#w<^$ zD@{8-z%@o|^3tw5v|c<`p$GVT3$>Lgr7kR|JII^Tt??$n(7~KJ(6mz!D>@V1QLOB- zd5M*Ye@uKn@x{cgi7zEO6Jtvui=>m>A&y|D7J=v%nI%md%N2(0!Me3TShG07ItEH% zNr6spR;8nbwQ$A+H3SC%IKEv?W{HBDc)YmaZjW)b;~o2Ysk+#&dNoRW56x zJ|;Y|+jbM{KEgbqFM57~b&d*(U+0J|-9uzm5cLEsdXQ&jXJvZ`&xcv1pakQIGOOSl zMn4=Y&SIXQp(ieyK+Wk%?pOz9PuHGX=M7;RK!xs%ERPJz8@?|^Dk)mzSst>5jx8;x z%jFu@!VZU0ETomz*{nJu5fA4f-J!^X}_wq$4s!7Y3&bb?HjcAty()iu_yGaQplw;wf0q7`x{z&)WnWE zwD!lf_F-`8T&ZK1Q_IC?wG;QnXZ@h~9GK$vIzDn{a=0`R#~_?Z4CKD>%#^0M&lzN% zZ=kFGr^D+%7+uUS$!NU6STg-92h)JDbkh-BDs5ygj}N$ z(Ct=u2**gS^p^=x^ef+6d$6nu7!GJT4LY$Oa^z=H%-?X{|7nUl#i2!aeEFr;GZOB( z+MYmKKTK7=m}>9;#Vo9^OrQC{uH=IlOzaXOu$*w_|p`!cqs} zq#$H~PaZv2In{Helz}Qj90|J>-CZ8}QKTV~~iAh zj=SIv*Ep^;LoB@qm1?=t@nUH>ltMk0F6VK$Kekly2phpmN#N^k-`JHp);p`?@vaVY z7kt(SpsWIp>s2VrU?WT|O1(e17!DU;S`bo=K)}P9=k!^n`5%?_$`n{u&El)T?DbvF zZu{DVzu1kA0g ztXNS~QOC^F3YLzoS_j6q%^XgT%kZ04uXkS3JJUsDIwR~i4udIr4?C6izQYdeV7k_} zVmX}!QIfL?g)Sw*rH=l?-+w={|FDNN-jnX+ic|Pv%Z>E*{=*xur>BlqmIC}mp|~#{ z?y>ZyXPqZ_v$^`x&tu$SkkovE07C}zg268MB+u_V?7E&FyRf4CC< z@z-&v!Z{rkN$uOhbxsS{S3HjKDGmz0t@<{g;e_q)57EO+pfb|Zavd^MU$=pU`wtJ$ zA^{*si3%0cp(0?Y3JeqtFu%co5=o=`gyNB%xQAC_ko8=CAdLsr$?9Av0@xU9OW{N@++Wh=^8m93~?Of|6H zTwYOEv8b-19LY{BW{N5v&R`PDGZM>T)p=!2Iiss%imL$!Wq_EovSP(*q+5-htv*iPR?G8%LX z7B9U89e1IRAPhS~V%R&t=l_PA96Csj6>5e>OnMo2T*|zL$a!cqSMz^)!yDw<4w< z#WD3!+Q)ujre!>tN{(U1-;vC$O5O=Yiuf&QThfX}rVeFs@mXnEX|Mk$Ont7&&(PNm zV(6dx82Tt}$BlSk=)Lj4&Q8Jh zO?dGomwoK~d9~#QprX&hzfBxFH*xIzQ6D?6)-)~EFq?hs91eJPUM*$kOL=zQEM@1f z^Xz=H+8Y1dIMefpmA@dc^4;ov>RUCpXl4kke6eOzrKYJ$)AXRGX$i;57i%&qc~)Mf zSzV=RtQx|~s{~eFBeL=uo|P{ZSou<5F%AGe)p7$TI@=qWx?BQAYor(7(K9u-$;>N^h5}!-7^Q`<@B9I0G zSUG?YD<6eeITQ|L<)eqPa=?&GG_Z0cftkUx@>>uqpZtG|l~3eZIm5H^wSHDUkz?hc z(!ZCLGg`Y-Yd@B0Kd-e1Ot8<@+AFknlh*!>)_!$@z{-=f_9a^T%UZi~B4X$(we}#M zmA^WOl|wAn4~oSYV&z8$v2wsM2xk(5wx6(;{QFt?_y5mXIW%$rEB|JKJ!vQ_|Nft{ z@+W<){5_GCfAl|N<$Q&HR?hfYIaKlAW90>d_%MN3xjG(Lx!C1Q)PIeY1LKym@=G^k z<&dXHS$QMR%2yB3f@9^Q|0}F~^i5g$uX<;i9Sox*Fto&z=mH#ARFl@Zn_(iz{ngm{$61i{LN|3YRETH|0Q1ZkL(f}Db> zOj&t3lc&pOmQ<`>wQNN>^8hR$&DAnxuyix4*pFITwul)ðl(oi;af!o*3F;mXRI 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 delta 29829 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 IbjG9q4GI{U5dZ)H delta 4747 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 diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index ccf52e66..ef7eb56d 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -19,6 +19,7 @@ A2osX.QC.ROOT .BS 64 A2osX.QC.Start1 sei ldx #$FF txs + cli bit RROMBNK1 >LDYAI A2osX.QC @@ -271,6 +272,6 @@ QC.FREE .EQ $1300-* .EP *-------------------------------------- MAN -SAVE USR/SRC/A2OSX.S.QC -LOAD USR/SRC/A2OSX.S +SAVE usr/src/a2osx.s.qc +LOAD usr/src/a2osx.s ASM diff --git a/A2osX.S.txt b/A2osX.S.txt index 18c5454c..933da1fe 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -17,15 +17,16 @@ NEW TmpPtr1 .EQ $0 main & aux ZP TmpPtr2 .EQ $2 main & aux ZP *-------------------------------------- -A2osX.KMLOAD .EQ $2000 +A2osX.PMLOAD .EQ $2000 A2osX.LOGOLOAD .EQ $4000 -A2osX.KMMAXLEN .EQ $6000 +A2osX.PMMAXLEN .EQ $6000 A2osX.OpenBuff1 .EQ $8000 1024 Buffer for MLIOPEN01 A2osX.OpenBuff2 .EQ $8400 1024 Buffer for MLIOPEN02 A2osX.ReadBuff .EQ $8800 512 Buffer for MLIREAD01 Boot.Prefix .EQ $8A00 MLI.MAXPATH -LOGO.Filename .EQ $8A80 MLI.MAXPATH -KM.Filename .EQ $8B00 MLI.MAXPATH +Logo.Filename .EQ $8A80 MLI.MAXPATH +Sys.Prefix .EQ $8B00 MLI.MAXPATH +PM.Filename .EQ $8B80 MLI.MAXPATH MLIONLINE01BUF .EQ $8C00 256 *-------------------------------------- * Kernel Stage 0 @@ -37,12 +38,14 @@ A2osX.Init0 >LDYAI $2000 >LDYAI $1000 >STYA TmpPtr2 - ldx #$10 reloc $2000-$2FFF to $1000-$1FFF + ldx /SYSTEM.END-$1F00 + ldy #0 .1 lda (TmpPtr1),y sta (TmpPtr2),y iny bne .1 + inc TmpPtr1+1 inc TmpPtr2+1 dex @@ -76,6 +79,9 @@ A2osX.Init1.128 jsr MLI ldx Boot.Prefix .1 lda Boot.Prefix,x + sta Logo.Filename,x + sta Sys.Prefix,x + sta PM.Filename,x sta A2osX.QC.B.BOOT,x sta A2osX.QC.B.ROOT,x dex @@ -140,15 +146,11 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV .8 jsr PrintFYA *-------------------------------------- -A2osX.EnumKM >LDYAI MSG.KMENUM - jsr PrintFYA - jsr EnumKM -*-------------------------------------- A2osX.SetupQC lda RRAMWRAMBNK2 lda RRAMWRAMBNK2 ldx #0 -.1 lda A2osX.QC.B.Start,x +.1 lda A2osX.QC.B.Start,x Still at $2xxx !!! not moved to $1xxx sta $D100,x lda A2osX.QC.B.Start+$100,x sta $D200,x @@ -159,6 +161,10 @@ A2osX.SetupQC lda RRAMWRAMBNK2 lda RROMBNK1 *-------------------------------------- +A2osX.EnumPM >LDYAI MSG.PMENUM do this After SetupQC, a PM could override QC + jsr PrintFYA + jsr EnumPM +*-------------------------------------- A2osX.MLIQuit >LDYAI MSG.INIT0OK jsr PrintFYA >DEBUGOA @@ -174,23 +180,16 @@ A2osX.Screen80 lda #$8C Reset 80 col screen ($0C:HOME) jsr $C300 ldx Boot.Prefix - -.1 lda Boot.Prefix,x - sta LOGO.Filename,x - dex - bne .1 - - ldx Boot.Prefix ldy #0 .2 inx iny lda A2osX.LOGO,y - sta LOGO.Filename,x + sta Logo.Filename,x cpy A2osX.LOGO bne .2 - stx LOGO.Filename + stx Logo.Filename jsr MLI .DA #MLIOPEN .DA MLIOPEN00 @@ -387,34 +386,42 @@ DisableRamDRV php sec rts *-------------------------------------- -EnumKM.EPB .EQ $0D -EnumKM.EL .EQ $27 +EnumPM.EPB .EQ $0D +EnumPM.EL .EQ $27 *-------------------------------------- -EnumKM ldx #0 +EnumPM ldx #0 ldy Boot.Prefix .1 inx lda SYS,x - sta Boot.Prefix+1,y + sta Sys.Prefix+1,y + sta PM.Filename+1,y iny cpx SYS bne .1 - sty Boot.Prefix - lda #Boot.Prefix + sty Sys.Prefix + sty PM.Filename + + lda #Sys.Prefix pha - lda /Boot.Prefix + lda /Sys.Prefix pha - >LDYAI MSG.KMSYSDIR + >LDYAI MSG.PMSYSDIR jsr PrintFYA + jsr MLI + .DA #MLISETPREFIX + .DA MLISETPREFIX02 + bcs .19 + jsr MLI .DA #MLIOPEN .DA MLIOPEN01 bcc .10 - pha - >LDYAI MSG.KMSYSDIR.KO +.19 pha + >LDYAI MSG.PMSYSDIR.KO jsr PrintFYA sec rts @@ -428,13 +435,13 @@ EnumKM ldx #0 .DA MLIREAD01 bcs .98 - lda #EnumKM.EPB - sta EnumKM.EC + lda #EnumPM.EPB + sta EnumPM.EC >LDYAI A2osX.ReadBuff+4 - >STYA EnumKM.BPTR + >STYA EnumPM.BPTR -.3 >LDYA EnumKM.BPTR +.3 >LDYA EnumPM.BPTR >STYA TmpPtr1 lda (TmpPtr1) @@ -446,7 +453,7 @@ EnumKM ldx #0 lda (TmpPtr1) and #$0F - cmp KM.PREFIX at least enough chars for KM.*? + cmp PM. at least enough chars for PM.*? bcc .5 no, skip ldy #$10 file type @@ -454,26 +461,26 @@ EnumKM ldx #0 cmp #$06 'BIN'? bne .5 skip - ldy KM.PREFIX + ldy PM. -.4 lda (TmpPtr1),y KM.* ? - cmp KM.PREFIX,y +.4 lda (TmpPtr1),y PM.* ? + cmp PM.,y bne .5 dey bne .4 - jsr LoadKM + jsr LoadPM -.5 lda EnumKM.BPTR +.5 lda EnumPM.BPTR clc - adc #EnumKM.EL - sta EnumKM.BPTR + adc #EnumPM.EL + sta EnumPM.BPTR bcc .6 - inc EnumKM.BPTR+1 + inc EnumPM.BPTR+1 -.6 dec EnumKM.EC +.6 dec EnumPM.EC bne .3 bra .2 @@ -491,47 +498,46 @@ EnumKM ldx #0 .8 jsr MLI .DA #MLICLOSE .DA MLICLOSE01 - rts -*-------------------------------------- -EnumKM.EC .BS 1 -EnumKM.BPTR .BS 2 -*-------------------------------------- -LoadKM ldx Boot.Prefix + bcs .99 -.1 lda Boot.Prefix,x - sta KM.Filename,x - dex - bne .1 - - ldy #$1c + jsr MLI + .DA #MLISETPREFIX + .DA MLISETPREFIX01 + +.99 rts +*-------------------------------------- +EnumPM.EC .BS 1 +EnumPM.BPTR .BS 2 +*-------------------------------------- +LoadPM ldy #$1c lda (TmpPtr1),y - sta LoadKM.VERSION + sta LoadPM.VERSION iny lda (TmpPtr1),y - sta LoadKM.MVERSION + sta LoadPM.MVERSION - ldx Boot.Prefix + ldx Sys.Prefix lda (TmpPtr1) and #$0F tay clc - adc Boot.Prefix - sta KM.Filename + adc sys.Prefix + sta PM.Filename tax -.2 bit LoadKM.MVERSION +.2 bit LoadPM.MVERSION bpl .6 cpy #8 bcs .3 - lda LoadKM.Bits,y - bit LoadKM.MVERSION + lda LoadPM.Bits,y + bit LoadPM.MVERSION beq .6 bra .4 -.3 lda LoadKM.Bits-8,y - bit LoadKM.VERSION +.3 lda LoadPM.Bits-8,y + bit LoadPM.VERSION beq .6 .4 lda (TmpPtr1),y @@ -539,17 +545,17 @@ LoadKM ldx Boot.Prefix .HS 2C BIT ABS .6 lda (TmpPtr1),y - sta KM.Filename,x + sta PM.Filename,x dex dey bne .2 - lda #KM.Filename + lda #PM.Filename pha - lda /KM.Filename + lda /PM.Filename pha - >LDYAI MSG.KMLOAD + >LDYAI MSG.PMLOAD jsr PrintFYA jsr MLI @@ -567,7 +573,7 @@ LoadKM ldx Boot.Prefix bcs .98 jsr .9 - jmp A2osX.KMLOAD + jmp A2osX.PMLOAD .98 pha jsr .9 @@ -581,9 +587,9 @@ LoadKM ldx Boot.Prefix .DA MLICLOSE02 .99 rts *-------------------------------------- -LoadKM.VERSION .BS 1 -LoadKM.MVERSION .BS 1 -LoadKM.Bits .HS 8040201008040201 +LoadPM.VERSION .BS 1 +LoadPM.MVERSION .BS 1 +LoadPM.Bits .HS 8040201008040201 *-------------------------------------- .INB usr/src/shared/x.printf.s *-------------------------------------- @@ -599,26 +605,30 @@ MSG.CPU.KO .AZ "A2osX Requires At Least A 65C02 CPU.\n" MSG.RAMDRV .AZ "Checking ProDOS RamDrive..." MSG.RAMDRV.OK .AZ "Successfully Disabled.\n" MSG.RAMDRV.KO0 .AZ "Not Detected.\n" -MSG.RAMDRV.KO1 .AZ "Uninstall Failed !!!\n" +MSG.RAMDRV.KO1 .AZ "Uninstall Failed.\n" MSG.BOOTPREFIX .AZ "Boot Prefix:%S\n" -MSG.KMENUM .AZ "Looking For Kernel Modules...\n" -MSG.KMSYSDIR .AZ "SYS dir is %S\n" -MSG.KMSYSDIR.KO .AZ "***Error : $%h\n" -MSG.KMLOAD .AZ "***Loading KM : %S\n" +MSG.PMENUM .AZ "Looking For ProDOS Modules...\n" +MSG.PMSYSDIR .AZ "SYS dir is %S\n" +MSG.PMSYSDIR.KO .AZ "***Error : $%h\n" +MSG.PMLOAD .AZ "***Loading PM : %S\n" MSG.INIT0OK .AZ "A2osX[Stage0]:Complete.\n" *-------------------------------------- -MLIGETPREFIX01 .DA #1 +MLIGETPREFIX01 +MLISETPREFIX01 .DA #1 .DA Boot.Prefix *-------------------------------------- +MLISETPREFIX02 .DA #1 + .DA Sys.Prefix +*-------------------------------------- MLIONLINE01 .DA #2 * .DA #0 .DA #$B0 S3D2 .DA MLIONLINE01BUF *-------------------------------------- MLIOPEN00 .DA #3 For DIR listing - .DA LOGO.Filename + .DA Logo.Filename .DA A2osX.OpenBuff1 .BS 1 MLIREAD00 .DA #4 @@ -630,7 +640,7 @@ MLICLOSE00 .DA #1 .BS 1 *-------------------------------------- MLIOPEN01 .DA #3 For DIR listing - .DA Boot.Prefix + .DA Sys.Prefix .DA A2osX.OpenBuff1 .BS 1 MLIREAD01 .DA #4 @@ -642,13 +652,13 @@ MLICLOSE01 .DA #1 .BS 1 *-------------------------------------- MLIOPEN02 .DA #3 - .DA KM.Filename + .DA PM.Filename .DA A2osX.OpenBuff2 .BS 1 MLIREAD02 .DA #4 .BS 1 - .DA A2osX.KMLOAD Load address for KMs - .DA A2osX.KMMAXLEN Maxlen of KM + .DA A2osX.PMLOAD Load address for PMs + .DA A2osX.PMMAXLEN Maxlen of PM .BS 2 MLICLOSE02 .DA #1 .BS 1 @@ -661,7 +671,7 @@ MLIQUIT01 .DA #4 *-------------------------------------- A2osX.LOGO >PSTR "A2osX.logo" SYS >PSTR "sys/" -KM.PREFIX >PSTR "KM." +PM. >PSTR "PM." *-------------------------------------- SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 @@ -672,15 +682,16 @@ PALETTE.AUX .HS 00.01.02.03.04.05.06.07 .HS 08.09.0A.0B.0C.0D.0E.0F *-------------------------------------- .EP + + .LIST ON +SYSTEM.END .EQ * + .LIST OFF *-------------------------------------- A2osX.QC.B.Start A2osX.QC.B.BOOT .EQ *+4 A2osX.QC.B.ROOT .EQ *+4+64 .INB usr/src/a2osx.s.qc - .LIST ON -SYSTEM.END .EQ * - .LIST OFF *-------------------------------------- MAN -SAVE USR/SRC/A2OSX.S +SAVE usr/src/a2osx.s ASM diff --git a/BASIC.FX/BASIC.S.A.txt b/BASIC.FX/BASIC.S.A.txt index 993d598f..daeb94dd 100644 --- a/BASIC.FX/BASIC.S.A.txt +++ b/BASIC.FX/BASIC.S.A.txt @@ -2,47 +2,46 @@ NEW AUTO 3,1 *-------------------------------------- BS.ResetCSWKSW pha - lda GP.VECTOUT + lda GP.VECTOUT sta ZP.CSW - lda GP.VECTOUT+1 + lda GP.VECTOUT+1 sta ZP.CSW+1 - lda GP.VECTIN + lda GP.VECTIN sta ZP.KSW - lda GP.VECTIN+1 + lda GP.VECTIN+1 sta ZP.KSW+1 pla rts - +*-------------------------------------- BS.SetState0 ldx #$00 jsr BS.SetState - lda ZP.KSW+1 + + lda ZP.KSW+1 cmp GP.VDOSI+1 - bne L9A26 + beq BS.SetCSWKSW2VDOS - jmp BS.SetCSWKSW2VDOS - -L9A26 lda ZP.CSW+1 + lda ZP.CSW+1 cmp GP.VDOSO+1 beq BS.SetCSWKSW2VDOS bne BS.SaveCSWKSW - +*-------------------------------------- BS.IO.OUT cmp X9F65 bne L9A54 stx GP.PREGX tsx - lda $103,x - cmp #$12 + lda $103,x + cmp #$12 From AS rom: TRACE bne L9A6E - lda $104,x - cmp #$D8 + lda $104,x + cmp #$D8 jsr from $D810, then JSR MON.COUT bne L9A6E ldx #$04 jsr BS.SetState - lda X9F65 + lda X9F65 ldx GP.PREGX jmp BS.JMP.GP.VSYSO @@ -53,58 +52,59 @@ L9A54 cmp GP.CHRLAST cmp #$8D bne L9A74 - lda ZP.CH + lda ZP.CH bne L9A69 - lda BS.CMDBUF + lda BS.CMDBUF cmp #$3F -L9A69 lda #$8D +L9A69 lda #$8D bcs L9A74 rts L9A6E ldx GP.PREGX - lda X9F65 + lda X9F65 L9A74 jsr BS.ResetCSWKSW jsr MON.COUT cmp #$8D bne BS.SaveCSWKSW - lda AS.TRCFLG + lda AS.TRCFLG cmp #$A5 beq L9A8B sta GP.DTRACE - lda #$A5 + lda #$A5 sta AS.TRCFLG -L9A8B lda #$8D +L9A8B lda #$8D + BS.SaveCSWKSW pha - lda ZP.KSW+1 + lda ZP.KSW+1 sta GP.VECTIN+1 - lda ZP.KSW + lda ZP.KSW sta GP.VECTIN - lda ZP.CSW+1 + lda ZP.CSW+1 sta GP.VECTOUT+1 - lda ZP.CSW + lda ZP.CSW sta GP.VECTOUT pla BS.SetCSWKSW2VDOS pha - lda GP.VDOSO + lda GP.VDOSO sta ZP.CSW - lda GP.VDOSO+1 + lda GP.VDOSO+1 sta ZP.CSW+1 - lda GP.VDOSI + lda GP.VDOSI sta ZP.KSW - lda GP.VDOSI+1 + lda GP.VDOSI+1 sta ZP.KSW+1 pla rts - +*-------------------------------------- BS.IO.IN bit GP.EXECACTV bpl L9AC5 @@ -126,37 +126,37 @@ BS.CheckDOSCMD jsr BS.DOSCMD bcs BS.ERROUT ldy GP.PREGY - lda #$88 + lda #$88 ldx #$00 beq L9AEB L9AE8 jsr BS.RestoreAXY L9AEB jmp BS.SaveCSWKSW -BS.NODEVERR lda #$03 +BS.NODEVERR lda #$03 BS.ERROUT sta GP.ERRCODE sta AS.ERRNUM - lda GP.STATE + lda GP.STATE cmp #$01 php - lda #$0F + lda #$0F sta MLI.LEVEL - lda #$00 - sta GP.IFILACTV - sta GP.OFILACTV - sta GP.PFXACTV - sta GP.MLICF.REFNUM - lda #MLI.C.CLOSE - jsr GP.GOSYSTEM + + stz GP.IFILACTV + stz GP.OFILACTV + stz GP.PFXACTV + stz GP.MLICF.REFNUM + + lda #MLI.C.CLOSE + jsr GP.GOSYSTEM bcs L9B27 jsr LA004 bcs L9B27 - lda #$00 - sta MLI.LEVEL - sta GP.MLICF.REFNUM + stz MLI.LEVEL + stz GP.MLICF.REFNUM lda #MLI.C.FLUSH jsr GP.GOSYSTEM @@ -170,7 +170,7 @@ L9B27 plp L9B30 php jsr BS.SetState jsr BS.SetCSWKSW2VDOS - lda GP.ERRCODE + lda GP.ERRCODE plp bmi L9B4D @@ -189,12 +189,11 @@ L9B4D ldx AS.REMSTK txs tax -L9B53 lda #$03 +L9B53 lda #$03 jmp AS.BITERRFLG -L9B58 lda #$00 - sta AS.ERRNUM - lda #$A3 +L9B58 stz AS.ERRNUM + lda #$A3 sta X9F65 jsr AS.NORMAL jsr BS.ResetCSWKSW @@ -206,6 +205,7 @@ L9B58 lda #$00 BS.IO.IN0 jsr BS.SaveAXY bit GP.PFXACTV bpl L9B7E + jmp BS.IO.IN.CAT L9B7E bit GP.IFILACTV @@ -215,41 +215,41 @@ L9B7E bit GP.IFILACTV L9B86 bit GP.EXECACTV bmi BS.IO.IN.EXEC - lda ZP.PROMPT + lda ZP.PROMPT cmp #$DD beq L9B58 jsr BS.ResetCSWKSW -L9B94 lda GP.PREGA +L9B94 lda GP.PREGA ldy GP.PREGY jsr MON.KEYIN0 cmp #$88 bne L9BAC - lda ZP.PROMPT + lda ZP.PROMPT cmp #$BE beq L9BAA txa beq L9B94 -L9BAA lda #$88 +L9BAA lda #$88 L9BAC jmp BS.SaveCSWKSW BS.IO.IN.EXEC sta (ZP.BASL),y - lda ZP.PROMPT + lda ZP.PROMPT cmp #$BE beq L9BF2 - lda IO.KBD + lda IO.KBD bpl L9BCD cmp #$83 bne L9BCD jsr LB36B - lda GP.STATE + lda GP.STATE bne L9C01 sta IO.KSTROBE @@ -263,7 +263,7 @@ L9BCD jsr BS.Setup4readEFBytesAt200 bcc L9BDE L9BDA dex - lda IO.LINEBUF,x + lda IO.LINEBUF,x L9BDE ora #$80 sta IO.LINEBUF,x @@ -289,23 +289,24 @@ L9C01 ldx #$00 ldy ZP.CH bne L9C0E - lda #$DD + lda #$DD sta ZP.PROMPT - lda #$88 + lda #$88 rts -L9C0E lda (ZP.BASL),y +L9C0E lda (ZP.BASL),y jmp (ZP.KSW) + L9C13 jmp BS.ERROUT -BS.IO.IN.FILE lda ZP.PROMPT +BS.IO.IN.FILE lda ZP.PROMPT cmp #$DD bne L9C1F jmp L9B58 -L9C1F lda GP.PREGA +L9C1F lda GP.PREGA sta (ZP.BASL),y - lda IO.KBD + lda IO.KBD bpl L9C31 cmp #$83 @@ -314,7 +315,7 @@ L9C1F lda GP.PREGA bit IO.KSTROBE rts -L9C31 lda ZP.PROMPT +L9C31 lda ZP.PROMPT bit GP.DIRFLG bmi L9C95 @@ -331,46 +332,46 @@ L9C42 jsr BS.ReadOneByte rts -BS.ReadOneByte lda GP.MLIRW.COUNT +BS.ReadOneByte lda GP.MLIRW.COUNT sta GP.ParamL - lda #$01 + lda #$01 sta GP.MLIRW.COUNT - lda #MLI.C.READ - jsr GP.GOSYSTEM + lda #MLI.C.READ + jsr GP.GOSYSTEM bcs L9C66 - lda GP.ParamL + lda GP.ParamL sta GP.MLIRW.COUNT ldx GP.MLIRW.DATAPTR - lda IO.LINEBUF,x + lda IO.LINEBUF,x L9C66 rts -L9C67 lda GP.PREGA +L9C67 lda GP.PREGA sta (ZP.BASL),y -L9C6C lda #MLI.C.READ - jsr GP.GOSYSTEM +L9C6C lda #MLI.C.READ + jsr GP.GOSYSTEM bcs L9C66 - lda GP.MLIRW.TRANS + lda GP.MLIRW.TRANS beq L9C8E clc adc GP.MLIRW.DATAPTR tax - lda IO.LINEBUF-1,x + lda IO.LINEBUF-1,x and #$7F cmp #$0D bne L9C8E - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$10 bne L9C8E dex -L9C8E lda #$8D +L9C8E lda #$8D ldy GP.PREGY clc rts @@ -378,48 +379,47 @@ L9C8E lda #$8D L9C95 cmp #$BE beq L9C8E - lda GP.PREGA + lda GP.PREGA sta (ZP.BASL),y - lda #$4F + lda #$4F sta BS.CATWIDTH - lda #MLI.C.GETMARK - jsr GP.GOSYSTEM + lda #MLI.C.GETMARK + jsr GP.GOSYSTEM bcs L9D1F - lda GP.SBUFADR + lda GP.SBUFADR ora GP.SBUFADR+1 bne L9CDF - lda #$02 + lda #$02 sta GP.CATFLAG jsr BS.ReadDirEnt bcs L9D1F - lda GP.MLIRW.REFNUM - lsr - ror - ror - ror - tax - lda XBC12 + jsr BS.GetFTableIdx + + lda XBC12 sta XBC5A,x - lda XBC13 + lda XBC13 sta XBC5B,x jsr LB128 -L9CD3 lda #$A2 +L9CD3 lda #$A2 sta IO.LINEBUF - lda #$8D + lda #$8D sta IO.LINEBUF,x clc rts -L9CDF lda GP.CATFLAG +L9CDF lda GP.CATFLAG beq L9D22 + bmi L9CF9 + ldx #$00 dec GP.CATFLAG beq L9CD3 + jsr BS.LINEBUFCLR80 ldx #$10 jsr BS.PRINTERRMSGX @@ -431,41 +431,39 @@ L9CF9 cmp #$FF bne L9D1C dec GP.CATFLAG - lda #$00 - sta GP.MLIRW.COUNT - sta GP.MLIRW.COUNT+1 - lda #MLI.C.READ - jsr GP.GOSYSTEM + + stz GP.MLIRW.COUNT + stz GP.MLIRW.COUNT+1 + + lda #MLI.C.READ + jsr GP.GOSYSTEM jsr LB157 pha - lda GP.MLIRW.REFNUM + lda GP.MLIRW.REFNUM sta GP.MLIMRKEOFBUF.REFNUM pla bcc L9CF5 bcs L9D1F -L9D1C lda #$05 +L9D1C lda #$05 sec L9D1F jmp BS.ERROUT -L9D22 lda #$FF +L9D22 lda #$FF sta XBC16 - lda GP.MLIRW.REFNUM - lsr - ror - ror - ror - tax - lda XBC5A,x + + jsr BS.GetFTableIdx + + lda XBC5A,x sta XBC12 - lda XBC5B,x + lda XBC5B,x sta XBC13 - lda GP.SBUFADR+1 + lda GP.SBUFADR+1 and #$01 tax - lda GP.SBUFADR + lda GP.SBUFADR sec L9D45 inc XBC16 @@ -496,31 +494,31 @@ BS.IO.IN.CAT cmp #$DD jmp L9B58 -L9D72 lda GP.PREGA +L9D72 lda GP.PREGA sta (ZP.BASL),y - lda #$00 - sta GP.PFXACTV + + stz GP.PFXACTV ldx BS.CMDBUF.LEN -L9D7F lda BS.CMDBUF.LEN,x +L9D7F lda BS.CMDBUF.LEN,x sta IO.LINEBUF-1,x dex bne L9D7F ldx BS.CMDBUF.LEN - lda #$8D + lda #$8D rts BS.Setup4readEFBytesAt200 - lda XBBFE + lda XBBFE sta GP.MLIRW.REFNUM - lda #$02 + lda #$02 sta GP.MLIRW.DATAPTR+1 - lda #$EF + lda #$EF sta GP.MLIRW.COUNT - lda #$00 - sta GP.MLIRW.COUNT+1 - sta GP.MLIRW.DATAPTR + + stz GP.MLIRW.COUNT+1 + stz GP.MLIRW.DATAPTR rts BS.VSYSO jsr BS.SaveAXY @@ -550,7 +548,7 @@ BS.IO.OUT.CAT jsr BS.SaveAXY inc GP.INPTR bne L9DE7 - lda #$10 + lda #$10 L9DE4 jmp BS.ERROUT @@ -602,11 +600,11 @@ L9E2F rts BS.IO.OUT.TRACE pha stx GP.PREGX tsx - lda $104,x + lda $104,x cmp #$12 bne L9E46 - lda $105,x + lda $105,x cmp #$D8 bne L9E46 @@ -614,9 +612,6 @@ BS.IO.OUT.TRACE pha bcs L9EBA L9E46 pla - nop - nop - nop ldx GP.PREGX bit GP.OFILACTV bpl L9E70 @@ -630,22 +625,22 @@ L9E46 pla L9E5A cmp #$8D bne L9E02 - lda ZP.PROMPT + lda ZP.PROMPT cmp #$FF - lda #$8D + lda #$8D bcc L9E02 jsr BS.WriteTBUF sta GP.OFILACTV - lda #$8D + lda #$8D bne L9EA3 L9E70 pha - lda GP.IFILACTV + lda GP.IFILACTV ora GP.PFXACTV bpl L9E81 - lda ZP.PROMPT + lda ZP.PROMPT ora #$04 cmp #$84 beq L9EA6 @@ -658,13 +653,13 @@ L9E81 pla bne L9EA3 L9E8A jsr BS.SaveAXY - lda GP.OPENCNT + lda GP.OPENCNT beq L9EA0 jsr BS.WriteTBUF sta GP.OFILACTV jsr BS.ResetCSWKSW - lda #$15 + lda #$15 jsr GP.PRINTERR L9EA0 jsr BS.RestoreAXY @@ -697,7 +692,7 @@ L9EBE ldx #$FF bmi L9F3D L9ECA ldy #$00 - lda (AS.TXTPTR),y + lda (AS.TXTPTR),y bmi L9EF5 beq L9EF2 @@ -705,26 +700,26 @@ L9ECA ldy #$00 L9ED2 dec GP.STRINGS bne L9EF0 - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc AS.ARRAYEND+1 cmp #$03 bcs L9EE9 jsr BS.WriteTBUF jsr BS.KW.01 - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc AS.ARRAYEND+1 L9EE9 sta GP.STRINGS ldy #$00 - lda (AS.TXTPTR),y + lda (AS.TXTPTR),y L9EF0 cmp #$3A L9EF2 jmp AS.EXECSTMT L9EF5 sta ZP.PROMPT tay - lda BS.BYTES-$80,y + lda BS.BYTES-$80,y bmi L9EF2 sta X9F00+1 @@ -733,17 +728,17 @@ X9F00 bne L9F02 SELF MODIFIED L9F02 sta ZP.PROMPT sta GP.CHRLAST - lda BS.VSYSO.LO + lda BS.VSYSO.LO sta GP.VSYSO - lda BS.VSYSO.HI + lda BS.VSYSO.HI sta GP.VSYSO+1 bne L9F32 - lda #$01 + lda #$01 sta ZP.PROMPT bne L9F32 - lda #$02 + lda #$02 sta ZP.PROMPT bne L9F32 @@ -756,33 +751,36 @@ L9F02 sta ZP.PROMPT sta GP.DTRACE dey -L9F2E lda #$4A +L9F2E lda #$4A sta AS.TRCFLG L9F32 tya jmp AS.EXECSTMT - lda #$00 - sta AS.ERRNUM - tya - bne L9EF0 + brk + +* UNREACHABLE CODE ???? +* lda #$00 +* sta AS.ERRNUM +* tya +* bne L9EF0 L9F3D jsr BS.ResetCSWKSW - lda #$A3 + lda #$A3 jsr MON.COUT ldx AS.CURLINE - lda AS.CURLINE+1 + lda AS.CURLINE+1 jsr AS.INTPRINTAX - lda #$A0 + lda #$A0 jsr MON.COUT jsr BS.SaveCSWKSW sec jmp L9ECA - lda #$E3 + lda #$E3 bne L9F5E - lda #$A3 + lda #$A3 L9F5E sta X9F65 tya @@ -797,7 +795,7 @@ BS.SaveAXY sta GP.PREGA sty GP.PREGY rts -BS.RestoreAXY lda GP.PREGA +BS.RestoreAXY lda GP.PREGA ldx GP.PREGX ldy GP.PREGY rts @@ -805,12 +803,12 @@ BS.RestoreAXY lda GP.PREGA BS.SetState stx GP.STATE ldy #$00 -L9F7F lda BS.SYSIOVECTS,x +.1 lda BS.SYSIOVECTS,x sta GP.VSYSO,y inx iny cpy #$04 - bne L9F7F + bne .1 rts @@ -821,20 +819,20 @@ BS.PRINTERRX jsr BS.PRINTERRMSGX ldx GP.INPTR stx BS.CATWIDTH jsr BS.CROUT - lda #$87 + lda #$87 jsr BS.COUT BS.LINEBUFOUT ldx #$00 -L9FA3 lda IO.LINEBUF+1,x +.1 lda IO.LINEBUF+1,x jsr BS.COUT inx cpx BS.CATWIDTH - bcc L9FA3 + bcc .1 -BS.CROUT lda #$8D +BS.CROUT lda #$8D BS.COUT jmp MON.COUT - +*-------------------------------------- BS.PRINTERRMSGX ldy #$00 clc sty GP.INPTR @@ -846,7 +844,7 @@ L9FBA jsr L9FD6 ora #$10 L9FC4 tay - lda BS.TBL6,y + lda BS.TBL6,y beq L9FD5 ldy GP.INPTR @@ -856,7 +854,7 @@ L9FC4 tay L9FD5 rts -L9FD6 lda BS.TBL7,x +L9FD6 lda BS.TBL7,x bcs L9FED beq L9FE3 @@ -869,7 +867,7 @@ L9FD6 lda BS.TBL7,x rts L9FE3 inx - lda BS.TBL7,x + lda BS.TBL7,x sta GP.INPTR inx bne L9FD6 @@ -878,8 +876,8 @@ L9FED inx and #$0F clc rts - -BS.WriteTBUF256 lda #$00 +*-------------------------------------- +BS.WriteTBUF256 lda #$00 ldy #$01 bne LA00B @@ -893,17 +891,16 @@ BS.WriteTBUF jsr LA004 jmp BS.ERROUT LA004 ldy #$00 - lda GP.TBUFPTR + lda GP.TBUFPTR beq LA01F LA00B sta GP.MLIRW.COUNT sty GP.MLIRW.COUNT+1 - lda #MLI.C.WRITE - jsr GP.GOSYSTEM - pha - lda #$00 - sta GP.TBUFPTR - pla + lda #MLI.C.WRITE + jsr GP.GOSYSTEM + + stz GP.TBUFPTR + bcs LA020 LA01F clc @@ -912,29 +909,29 @@ LA020 rts LA021 jsr BS.KW.01 bcs LA047 - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 sta BS.TXTTAB+1 - lda AS.PGRMSTART + lda AS.PGRMSTART sta BS.TXTTAB - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta XBBD8 - lda #$03 + lda #$03 sta XBBD9 - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sta BS.MEMSIZE+1 + lda #$00 sta BS.MEMSIZE - jsr LA089 + jsr LA089 Z LA047 rts -BS.KW.01 lda #$00 - sta BS.TXTTAB - lda #$03 +BS.KW.01 stz BS.TXTTAB + lda #$03 sta XBBD9 - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta XBBD8 - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sta BS.TXTTAB+1 sec sbc AS.ARRAYEND+1 @@ -943,10 +940,10 @@ BS.KW.01 lda #$00 sbc #$03 sta XBBD9 - lda AS.ARRAYEND+1 + lda AS.ARRAYEND+1 adc #$00 sta XBBD8 - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc AS.STRINGSTART+1 adc #$01 cmp XBBD9 @@ -954,9 +951,9 @@ BS.KW.01 lda #$00 sta XBBD9 -LA07D lda AS.HIMEM+1 +LA07D lda AS.HIMEM+1 sta BS.MEMSIZE+1 - lda AS.HIMEM + lda AS.HIMEM sta BS.MEMSIZE sta AS.STRINGSTART @@ -965,31 +962,31 @@ LA089 clc sec -LA08D lda BS.MEMSIZE+1 +LA08D lda BS.MEMSIZE+1 sta AS.STRINGSTART+1 sbc #$00 sta XBBDA adc #$00 sta XBBDB - lda AS.ARRAYEND+1 + lda AS.ARRAYEND+1 adc #$01 sta XBBDD -LA0A3 lda AS.VARSTART +LA0A3 lda AS.VARSTART sbc #$06 sta ZP.A2L - lda AS.VARSTART+1 + lda AS.VARSTART+1 sbc #$00 sta ZP.A2H - lda AS.ARRAYSTART + lda AS.ARRAYSTART sta XBBDC - lda XBBDA + lda XBBDA cmp BS.TXTTAB+1 bcc LA0FA sbc XBBD9 sta XBBD7 - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc XBBDA sbc XBBD7 eor #$FF @@ -997,12 +994,12 @@ LA0A3 lda AS.VARSTART cmp XBBD7 bcc LA0D6 - lda XBBD7 + lda XBBD7 LA0D6 cmp BS.TXTTAB+1 bcs LA0E0 - lda BS.TXTTAB+1 + lda BS.TXTTAB+1 sbc #$00 LA0E0 sta XBBDA @@ -1012,16 +1009,16 @@ LA0E0 sta XBBDA bcs LA0F8 jsr LA131 - lda XBBDA + lda XBBDA sta XBBDB bcc LA0A3 -LA0F8 lda #$0C +LA0F8 lda #$0C LA0FA rts LA0FB clc -LA0FC lda ZP.A2L +LA0FC lda ZP.A2L adc #$07 sta ZP.A2L bcc LA106 @@ -1035,16 +1032,16 @@ LA106 eor AS.ARRAYSTART beq LA12F LA10E ldy #$00 - lda (ZP.A2L),y + lda (ZP.A2L),y iny eor (ZP.A2L),y bpl LA0FB - lda (ZP.A2L),y + lda (ZP.A2L),y bpl LA0FB ldy #$04 - lda (ZP.A2L),y + lda (ZP.A2L),y cmp XBBDA bcc LA0FC @@ -1063,7 +1060,7 @@ LA131 jsr LA160 bcs LA12F LA136 ldy #$02 - lda (ZP.A2L),y + lda (ZP.A2L),y cmp XBBDA bcc LA14A @@ -1076,7 +1073,7 @@ LA136 ldy #$02 rts LA14A clc -LA14B lda #$03 +LA14B lda #$03 adc ZP.A2L sta ZP.A2L bcc LA155 @@ -1092,7 +1089,7 @@ LA155 cmp XBBDC beq LA131 LA160 clc - lda XBBDC + lda XBBDC sta ZP.A2L stx ZP.A2H eor AS.ARRAYEND @@ -1102,21 +1099,21 @@ LA160 clc beq LA198 LA170 ldy #$02 - lda (ZP.A2L),y + lda (ZP.A2L),y adc ZP.A2L sta XBBDC iny - lda (ZP.A2L),y + lda (ZP.A2L),y adc ZP.A2H tax ldy #$00 - lda (ZP.A2L),y + lda (ZP.A2L),y iny eor (ZP.A2L),y bpl LA160 ldy #$04 - lda (ZP.A2L),y + lda (ZP.A2L),y asl adc #$05 adc ZP.A2L @@ -1128,9 +1125,9 @@ LA170 ldy #$02 clc LA198 rts -LA199 lda XBBD7 +LA199 lda XBBD7 sta ZP.PCH - lda XBBD8 + lda XBBD8 sta ZP.A1H ldy #$00 sty ZP.PCL @@ -1138,7 +1135,7 @@ LA199 lda XBBD7 ldx XBBD9 inx -LA1AD lda (ZP.PCL),y +LA1AD lda (ZP.PCL),y sta (ZP.A1L),y iny bne LA1AD @@ -1159,70 +1156,70 @@ LA1BC cmp XBBD7 LA1C8 sta ZP.PCH dey - lda (ZP.A2L),y + lda (ZP.A2L),y sta ZP.PCL dey sec - lda AS.STRINGSTART + lda AS.STRINGSTART sbc (ZP.A2L),y sta AS.STRINGSTART iny sta (ZP.A2L),y - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc #$00 sta AS.STRINGSTART+1 iny sta (ZP.A2L),y dey dey - lda (ZP.A2L),y + lda (ZP.A2L),y beq LA1F2 tay LA1EA dey - lda (ZP.PCL),y + lda (ZP.PCL),y sta (AS.STRINGSTART),y tya bne LA1EA LA1F2 clc - lda XBBDD + lda XBBDD sbc AS.STRINGSTART+1 rts -LA1F9 lda #$04 +LA1F9 lda #$04 LA1FB sta XBBB5 jsr BS.KW.01 bcs LA24E - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc AS.ARRAYEND+1 cmp XBBB5 - lda #$0C + lda #$0C bcc LA24E - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sta ZP.PCH sbc XBBB5 sta ZP.A1H sta AS.STRINGSTART+1 - lda AS.STRINGSTART + lda AS.STRINGSTART sta ZP.PCL sta ZP.A1L - lda AS.HIMEM + lda AS.HIMEM sbc ZP.PCL sta XBBED - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc ZP.PCH sta XBBEE jsr LA35F - lda #$00 + lda #$00 sec sbc XBBB5 sta XBBE2 jsr LA3A3 - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta XBBB7 sec sbc XBBB5 @@ -1238,29 +1235,29 @@ LA24E sec LA250 jsr BS.KW.01 bcs LA29D - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc #$00 sta ZP.PCH adc #$03 sta ZP.A1H - lda AS.STRINGSTART + lda AS.STRINGSTART sta ZP.PCL sta ZP.A1L - lda AS.HIMEM + lda AS.HIMEM sec sbc AS.STRINGSTART sta XBBED - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc AS.STRINGSTART+1 sta XBBEE jsr LA383 - lda #$04 + lda #$04 sta XBBE2 clc adc AS.HIMEM+1 sta AS.HIMEM+1 jsr LA3A3 - lda XBBE3 + lda XBBE3 cmp AS.HIMEM+1 beq LA2B7 @@ -1268,7 +1265,7 @@ LA250 jsr BS.KW.01 ldx GP.OPENCNT beq LA29B - lda AS.HIMEM+1 + lda AS.HIMEM+1 LA293 cmp XBBEE,x beq LA29E @@ -1281,14 +1278,15 @@ LA29B pla LA29D rts LA29E pla + LA29F sta GP.SBUFADR+1 sta XBBEE,x - lda #$00 - sta GP.SBUFADR - lda XBBF6,x + + stz GP.SBUFADR + lda XBBF6,x sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.SETBUF - jsr GP.GOSYSTEM + lda #MLI.C.SETBUF + jsr GP.GOSYSTEM bcs LA29D LA2B7 clc diff --git a/BASIC.FX/BASIC.S.B.txt b/BASIC.FX/BASIC.S.B.txt index bac792a3..b9fff234 100644 --- a/BASIC.FX/BASIC.S.B.txt +++ b/BASIC.FX/BASIC.S.B.txt @@ -1,6 +1,8 @@ NEW AUTO 3,1 *-------------------------------------- +BS.WHICHBITS .HS 8040201008040201 + BS.GETBUFR jsr LA1FB bcs LA304 pha @@ -12,7 +14,7 @@ LA2C5 sta GP.SBUFADR+1 ldx GP.OPENCNT beq LA2EE - lda XBBB7 + lda XBBB7 clc adc #$04 sta XBBB7 @@ -20,37 +22,37 @@ LA2C5 sta GP.SBUFADR+1 LA2D6 cmp XBBEE,x bne LA2EB - lda GP.SBUFADR+1 + lda GP.SBUFADR+1 jsr LA356 jsr LA29F - lda GP.SBUFADR+1 + lda GP.SBUFADR+1 adc #$04 bcc LA2C5 LA2EB dex bne LA2D6 -LA2EE lda GP.SBUFADR+1 +LA2EE lda GP.SBUFADR+1 bit GP.EXECACTV bpl LA303 LA2F6 ldx #$08 jsr LA356 jsr LA29F - lda GP.SBUFADR+1 + lda GP.SBUFADR+1 adc #$04 LA303 clc LA304 rts -BS.FREEBUFR lda GP.OPENCNT +BS.FREEBUFR lda GP.OPENCNT asl asl adc AS.HIMEM+1 sta XBBB7 - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta XBBB8 - lda GP.RSHIMEM + lda GP.RSHIMEM cmp AS.HIMEM+1 beq LA354 @@ -61,22 +63,22 @@ BS.FREEBUFR lda GP.OPENCNT jsr LA2F6 bcc LA345 -LA327 lda XBBB7 +LA327 lda XBBB7 ldx GP.OPENCNT beq LA351 LA32F cmp XBBEE,x bne LA34E - lda AS.HIMEM+1 + lda AS.HIMEM+1 jsr LA356 jsr LA29F sec - lda XBBB7 + lda XBBB7 sbc #$04 sta XBBB7 -LA345 lda AS.HIMEM+1 +LA345 lda AS.HIMEM+1 sec sbc #$04 sta AS.HIMEM+1 @@ -90,7 +92,7 @@ LA354 clc rts LA356 pha - lda XBBB8 + lda XBBB8 jsr LA29F pla rts @@ -99,7 +101,7 @@ LA35F ldy #$00 cpy XBBEE beq LA376 -LA366 lda (ZP.PCL),y +LA366 lda (ZP.PCL),y sta (ZP.A1L),y iny bne LA366 @@ -112,7 +114,7 @@ LA366 lda (ZP.PCL),y LA376 cpy XBBED beq LA382 - lda (ZP.PCL),y + lda (ZP.PCL),y sta (ZP.A1L),y iny bne LA376 @@ -133,22 +135,22 @@ LA38F cpy XBBEE jmp LA388 LA39A dey - lda (ZP.PCL),y + lda (ZP.PCL),y sta (ZP.A1L),y tya bne LA39A LA3A2 rts -LA3A3 lda AS.VARSTART+1 +LA3A3 lda AS.VARSTART+1 sta ZP.A2H - lda AS.VARSTART + lda AS.VARSTART ldx AS.ARRAYSTART+1 clc bcc LA3B3 LA3AE clc - lda ZP.A2L + lda ZP.A2L adc #$07 LA3B3 sta ZP.A2L @@ -165,19 +167,19 @@ LA3BF clc beq LA3D6 ldy #$00 - lda (ZP.A2L),y + lda (ZP.A2L),y iny eor (ZP.A2L),y bpl LA3AE - lda (ZP.A2L),y + lda (ZP.A2L),y bpl LA3AE iny jsr LA3FD jmp LA3AE -LA3D6 lda ZP.A2L +LA3D6 lda ZP.A2L sta XBBDC LA3DB clc @@ -188,7 +190,7 @@ LA3E1 ldy #$00 clc jsr LA3FD clc - lda #$03 + lda #$03 adc ZP.A2L sta ZP.A2L bcc LA3F2 @@ -203,103 +205,103 @@ LA3F2 cmp XBBDC beq LA3DB -LA3FD lda (ZP.A2L),y +LA3FD lda (ZP.A2L),y beq LA410 iny iny - lda AS.VARSTART+1 + lda AS.VARSTART+1 cmp (ZP.A2L),y bcs LA410 - lda (ZP.A2L),y + lda (ZP.A2L),y adc XBBE2 sta (ZP.A2L),y LA410 rts - +*-------------------------------------- LA411 jsr LA021 bcs LA47F - lda AS.ARRAYEND + lda AS.ARRAYEND sec sbc AS.VARSTART sta BS.BAS.HDR sta XBBED - lda AS.ARRAYEND+1 + lda AS.ARRAYEND+1 sbc AS.VARSTART+1 sta BS.BAS.HDR+1 sta XBBEE - lda AS.ARRAYSTART + lda AS.ARRAYSTART sbc AS.VARSTART sta BS.BAS.HDR+2 - lda AS.ARRAYSTART+1 + lda AS.ARRAYSTART+1 sbc AS.VARSTART+1 sta BS.BAS.HDR+3 - lda AS.STRINGSTART + lda AS.STRINGSTART sbc XBBED sta ZP.A1L - lda AS.STRINGSTART+1 + lda AS.STRINGSTART+1 sbc #$00 sta ZP.A1H - lda AS.ARRAYEND + lda AS.ARRAYEND sbc XBBED sta ZP.PCL - lda AS.ARRAYEND+1 + lda AS.ARRAYEND+1 sbc #$00 sta ZP.PCH - lda #$03 + lda #$03 sta XA386+1 jsr LA383 - lda #$07 + lda #$07 sta XA386+1 - lda ZP.A1L + lda ZP.A1L sta XBBE9 inc ZP.A1H - lda ZP.A1H + lda ZP.A1H sta XBBEA - lda AS.HIMEM + lda AS.HIMEM sec sbc ZP.A1L sta XBBEB - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta BS.BAS.HDR+4 sbc ZP.A1H sta XBBEC clc LA47F rts -LA480 lda BS.BAS.HDR +LA480 lda BS.BAS.HDR sta XBBED clc adc AS.VARSTART sta AS.ARRAYEND - lda BS.BAS.HDR+1 + lda BS.BAS.HDR+1 sta XBBEE adc AS.VARSTART+1 sta AS.ARRAYEND+1 - lda AS.VARSTART + lda AS.VARSTART sta ZP.A1L adc BS.BAS.HDR+2 sta AS.ARRAYSTART - lda AS.VARSTART+1 + lda AS.VARSTART+1 sta ZP.A1H adc BS.BAS.HDR+3 sta AS.ARRAYSTART+1 - lda XBBE9 + lda XBBE9 sta ZP.PCL - lda XBBEA + lda XBBEA sta ZP.PCH jsr LA35F - lda XBBED + lda XBBED clc adc ZP.PCL sta AS.STRINGSTART - lda ZP.PCH + lda ZP.PCH adc #$00 sta AS.STRINGSTART+1 sec - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc BS.BAS.HDR+4 beq LA4D0 @@ -308,22 +310,53 @@ LA480 lda BS.BAS.HDR LA4D0 clc rts - +*-------------------------------------- LA4D2 jsr BS.LINEBUFCLR80 - lda #$A2 + lda #$A2 sta IO.LINEBUF - lda DIRENTBUF + lda DIRENTBUF and #$0F tay -LA4E0 lda DIRENTBUF,y +LA4E0 lda DIRENTBUF,y ora #$80 sta IO.LINEBUF+1,y dey bne LA4E0 - sty BS.TMPBUF4+2 - lda DIRENTBUF.TYPE + .DO LOWERCASE=1 + lda DIRENTBUF+$1D + bpl .18 + + lda DIRENTBUF + and #$0f + tay + +.10 cpy #8 + bcs .13 + + lda DIRENTBUF+$1D + and BS.WHICHBITS,y + beq .15 + + bne .14 + +.13 lda DIRENTBUF+$1C + and BS.WHICHBITS-8,y + beq .15 + +.14 lda IO.LINEBUF+1,y + eor #$20 + sta IO.LINEBUF+1,y + +.15 dey + bne .10 + +.18 .FIN + + stz BS.TMPBUF4+2 + + lda DIRENTBUF.TYPE ldx #$0E LA4F3 iny @@ -342,11 +375,12 @@ LA4F3 iny LA505 ldx #$02 pha -LA508 lda BS.PRODOSTYPES.ASC,y +LA508 lda BS.PRODOSTYPES.ASC,y sta $212,x dey dex bpl LA508 + pla bit BS.CATWIDTH bvc LA561 @@ -358,26 +392,26 @@ LA508 lda BS.PRODOSTYPES.ASC,y cmp #$04 bne LA549 - lda #$D2 + lda #$D2 sta $249 - lda DIRENTBUF.AUXT + lda DIRENTBUF.AUXT ldx DIRENTBUF.AUXT+1 jsr BS.AXDEC2LINEBUFY jmp LA544 -LA533 lda #$C1 +LA533 lda #$C1 sta $249 - lda DIRENTBUF.AUXT + lda DIRENTBUF.AUXT jsr BS.AHEX2LINEBUFY - lda DIRENTBUF.AUXT+1 + lda DIRENTBUF.AUXT+1 jsr BS.AHEX2LINEBUFY -LA544 lda #$BD +LA544 lda #$BD sta $24A -LA549 lda DIRENTBUF.EOF+2 +LA549 lda DIRENTBUF.EOF+2 sta BS.TMPBUF4+2 - lda DIRENTBUF.EOF + lda DIRENTBUF.EOF ldx DIRENTBUF.EOF+1 ldy #$46 jsr BS.AXDEC2LINEBUFY @@ -386,24 +420,24 @@ LA549 lda DIRENTBUF.EOF+2 jsr LA57E LA561 ldy #$1B - lda DIRENTBUF.UBLK + lda DIRENTBUF.UBLK ldx DIRENTBUF.UBLK+1 jsr BS.AXDEC2LINEBUFY - lda DIRENTBUF.ACCESS + lda DIRENTBUF.ACCESS and #$C2 cmp #$C2 beq LA57A - lda #$AA + lda #$AA sta IO.LINEBUF+1 LA57A ldx #$21 ldy #$2C -LA57E lda $25A,x +LA57E lda $25A,x lsr sta XBC10 - lda DIRENTBUF,x + lda DIRENTBUF,x pha and #$1F sta XBC0F @@ -422,10 +456,10 @@ LA57E lda $25A,x asl adc XBC0E sta XBC0E - lda XBC0F + lda XBC0F beq LA5B1 - lda XBC10 + lda XBC10 cmp #$64 bcc LA5C3 @@ -435,7 +469,7 @@ LA5B1 tya tay ldx #$08 -LA5B8 lda BS.NODATE,x +LA5B8 lda BS.NODATE,x sta IO.LINEBUF+1,y dey dex @@ -443,9 +477,9 @@ LA5B8 lda BS.NODATE,x rts -LA5C3 lda $25C,x +LA5C3 lda $25C,x pha - lda $25B,x + lda $25B,x ldx #$00 cmp #$3C bcc LA5D1 @@ -453,7 +487,7 @@ LA5C3 lda $25C,x txa LA5D1 jsr LA618 - lda #$BA + lda #$BA sta IO.LINEBUF+1,y dey pla @@ -472,7 +506,7 @@ LA5E2 cmp #$0A dey LA5EC dey - lda XBC10 + lda XBC10 jsr LA618 dey ldx XBC0E @@ -480,18 +514,18 @@ LA5EC dey inx inx -LA5FA lda BS.MONTHS-4,x +LA5FA lda BS.MONTHS-4,x sta IO.LINEBUF+1,y dey dex cpx XBC0E bne LA5FA - lda #$AD + lda #$AD sta IO.LINEBUF+1,y sta $205,y dey - lda XBC0F + lda XBC0F ldx #$00 jmp BS.AXDEC2LINEBUFY @@ -519,7 +553,7 @@ LA62B ora #$B0 LA633 sta IO.LINEBUF+1,y dey - lda #$A4 + lda #$A4 sta IO.LINEBUF+1,y rts @@ -528,11 +562,11 @@ BS.AXDEC2LINEBUFY sta BS.TMPBUF4 LA643 jsr LA65B - lda BS.TMPBUF4+3 + lda BS.TMPBUF4+3 ora #$B0 sta IO.LINEBUF+1,y dey - lda BS.TMPBUF4 + lda BS.TMPBUF4 ora BS.TMPBUF4+1 ora BS.TMPBUF4+2 bne LA643 @@ -540,13 +574,13 @@ LA643 jsr LA65B rts LA65B ldx #$18 - lda #$00 + lda #$00 sta BS.TMPBUF4+3 LA662 jsr BS.TMPBUF3x2 rol BS.TMPBUF4+3 sec - lda BS.TMPBUF4+3 + lda BS.TMPBUF4+3 sbc #$0A bcc LA676 @@ -558,7 +592,7 @@ LA676 dex rts -BS.LINEBUFCLR80 lda #$A0 +BS.LINEBUFCLR80 lda #$A0 ldx #$4F LA67E sta IO.LINEBUF+1,x @@ -566,19 +600,19 @@ LA67E sta IO.LINEBUF+1,x bpl LA67E rts - -BS.DOSCMD lda #$FF +*-------------------------------------- +BS.DOSCMD lda #$FF sta GP.XCNUM - lda #$20 + lda #$20 sta BS.GetCharSep - lda #$08 + lda #$08 sta BS.GetCharMax jsr BS.GetKWInCmdBuf - lda BS.CMDBUF - cmp #$41 + lda BS.CMDBUF + cmp #'A' bcs LA6A5 - eor #$2D + eor #'-' beq LA6A5 LA6A2 jmp BS.ERR10 @@ -586,31 +620,31 @@ LA6A2 jmp BS.ERR10 LA6A5 jsr BS.IsIntCmdMTR bcs LA6A2 - lda GP.STATE + lda GP.STATE bne LA6BA - lda GP.EXECACTV + lda GP.EXECACTV bne LA6BA jsr MON.CLREOL jsr BS.CROUT -LA6BA lda #$00 - sta GP.FoundBITS - sta GP.FoundBITS+1 - sta BS.CMDBUF - sta MLI.PATHBUF - lda GP.VDEFSLT +LA6BA stz GP.FoundBITS + stz GP.FoundBITS+1 + stz BS.CMDBUF + stz MLI.PATHBUF + + lda GP.VDEFSLT sta GP.ParamS - lda GP.VDEFDRV + lda GP.VDEFDRV sta GP.ParamD - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta XBBE3 ldx GP.XLEN inx inx stx BS.GetCharMax - lda GP.AllowedBITS + lda GP.AllowedBITS beq LA744 asl @@ -619,28 +653,28 @@ LA6BA lda #$00 jsr BS.GetKWInCmdBuf php pha - lda GP.AllowedBITS + lda GP.AllowedBITS bpl LA6F8 - lda #MLI.C.GETPREFIX + lda #MLI.C.GETPREFIX jsr GP.GOSYSTEM LA6F8 pla plp beq LA744 - cmp #$2C + cmp #',' bne LA703 jmp LA795 -LA703 cmp #$2F +LA703 cmp #'/' beq LA70B - cmp #$41 + cmp #'A' bcc LA73D LA70B dex - lda #$82 + lda #$82 sta BS.GetCharSep lsr sta BS.GetCharMax @@ -648,10 +682,10 @@ LA70B dex jsr LAA2D dey sty BS.CMDBUF.LEN - lda #$01 + lda #CMDBITS0.FN1 sta GP.FoundBITS -LA723 lda BS.CMDBUF.LEN,y +LA723 lda BS.CMDBUF.LEN,y sta MLI.PATHBUF,y dey bpl LA723 @@ -662,13 +696,13 @@ LA723 lda BS.CMDBUF.LEN,y bcc LA7A6 - lda GP.AllowedBITS + lda GP.AllowedBITS lsr bcs LA770 LA73A jmp BS.ERR10 -LA73D lda GP.XCNUM +LA73D lda GP.XCNUM cmp #$06 bne LA73A @@ -681,19 +715,21 @@ LA747 jsr BS.GetKWInCmdBuf beq LA79A jsr BS.TMPBUF3Reset - sty XBC08 + stz XBC08 + ldy #$13 sty XBC09 ldy #$40 sty GP.FoundBITS + jsr LA96E bcs LA76F - lda GP.ParamINPR + lda GP.ParamINPR cmp #$08 bcc LA79F -LA76C lda #$02 +LA76C lda #$02 sec LA76F rts @@ -704,14 +740,14 @@ LA770 lsr beq LA73A dex - lda #$82 + lda #$82 sta BS.GetCharSep ldy #$01 jsr BS.GetPathInPathBuf dey dey sty MLI.PATHBUF - lda #$03 + lda #$03 sta GP.FoundBITS dex jsr BS.GetCharSpaceSep @@ -730,76 +766,79 @@ LA79F jsr BS.GetCharSpaceSep bcs LA795 -LA7A6 lda GP.ParamS +LA7A6 lda GP.ParamS beq LA76C cmp #$08 bcs LA76C - lda GP.ParamD + lda GP.ParamD beq LA76C cmp #$03 bcs LA76C - lda GP.AllowedBITS + lda GP.AllowedBITS and #$21 lsr beq LA7C9 - lda GP.STATE + lda GP.STATE bne LA7C9 - lda #$0F + lda #$0F sec rts LA7C9 bcc LA80B - lda GP.AllowedBITS+1 + lda GP.AllowedBITS+1 and #$04 beq LA80B - lda GP.FoundBITS + lda GP.FoundBITS lsr bcs LA7E1 - lda GP.AllowedBITS + lda GP.AllowedBITS and #$90 beq BS.ERR10 bpl LA80B -LA7E1 lda BS.CMDBUF +LA7E1 lda BS.CMDBUF eor #$2F beq LA7ED - lda MLI.PFIXPTR + lda MLI.PFIXPTR beq LA806 -LA7ED lda GP.FoundBITS+1 +LA7ED lda GP.FoundBITS+1 and #$04 beq LA80B bcs LA806 - lda #$00 - sta BS.CMDBUF.LEN - sta BS.CMDBUF - lda #$01 + stz BS.CMDBUF.LEN + stz BS.CMDBUF + + lda #$01 ora GP.FoundBITS sta GP.FoundBITS LA806 jsr BS.GetVolAtSxDy bcs LA849 -LA80B lda GP.XCNUM +LA80B lda GP.XCNUM asl tax - lda BS.KW.JMP,x + + lda BS.KW.JMP,x sta BS.KW.JMPADDR - lda BS.KW.JMP+1,x + lda BS.KW.JMP+1,x sta BS.KW.JMPADDR+1 +* >DEBUG + clc txa beq LA844 @@ -807,11 +846,11 @@ LA80B lda GP.XCNUM eor #$32 beq LA844 - lda GP.AllowedBITS+1 + lda GP.AllowedBITS+1 and #$04 beq LA844 - lda GP.FoundBITS + lda GP.FoundBITS lsr bcc LA844 @@ -821,56 +860,57 @@ LA80B lda GP.XCNUM cmp #$07 bne LA849 - lda GP.AllowedBITS + lda GP.AllowedBITS and #$08 bne LA844 - lda #$06 + lda #$06 rts LA844 jmp (BS.KW.JMPADDR) -BS.ERR10 lda #$10 +BS.ERR10 lda #$10 LA849 sec rts - -BS.GetVolAtSxDy lda GP.ParamS +*-------------------------------------- +BS.GetVolAtSxDy lda GP.ParamS asl asl asl asl asl pha - lda GP.ParamD + lda GP.ParamD eor #$01 lsr pla ror sta GP.MLIMRKEOFBUF.REFNUM - lda #$01 - sta GP.SBUFADR - lda #$02 - sta GP.SBUFADR+1 - lda #MLI.C.ONLINE + + ldx #$01 + ldy #$02 + jsr BS.SetSBUFADRXY + + lda #MLI.C.ONLINE jsr GP.GOSYSTEM bcs LA849 - lda GP.ParamD + lda GP.ParamD sta GP.VDEFDRV - lda GP.ParamS + lda GP.ParamS sta GP.VDEFSLT - lda BS.CMDBUF + lda BS.CMDBUF eor #$2F beq LA8F4 - lda IO.LINEBUF+1 + lda IO.LINEBUF+1 and #$0F adc #$02 sta IO.LINEBUF+1 adc BS.CMDBUF.LEN cmp #$40 tax - lda #$10 + lda #$10 bcs LA8F5 ldy BS.CMDBUF.LEN @@ -880,19 +920,19 @@ LA89D dex dey bmi LA8AA - lda BS.CMDBUF,y + lda BS.CMDBUF,y sta BS.CMDBUF,x jmp LA89D -LA8AA lda #$2F +LA8AA lda #$2F sta BS.CMDBUF LA8AF sta BS.CMDBUF,x - lda IO.LINEBUF,x + lda IO.LINEBUF,x dex bne LA8AF - lda GP.XCNUM + lda GP.XCNUM cmp #$0B beq LA8F4 @@ -902,13 +942,13 @@ LA8AF sta BS.CMDBUF,x cmp #$08 beq LA8F4 - lda MLI.PATHBUF + lda MLI.PATHBUF tay clc adc IO.LINEBUF+1 cmp #$40 tax - lda #$10 + lda #$10 bcs LA8F5 stx MLI.PATHBUF @@ -917,15 +957,15 @@ LA8D9 dex dey bmi LA8E6 - lda MLI.PATHBUF+1,y + lda MLI.PATHBUF+1,y sta MLI.PATHBUF+1,x jmp LA8D9 -LA8E6 lda #$2F +LA8E6 lda #$2F sta MLI.PATHBUF+1 LA8EB sta MLI.PATHBUF+1,x - lda IO.LINEBUF,x + lda IO.LINEBUF,x dex bne LA8EB @@ -936,26 +976,29 @@ LA8F5 rts LA8F6 jsr BS.TMPBUF3Reset ldy #$09 + jsr BS.ToUpper + LA8FB cmp BS.KW.OPT,y beq LA935 dey bpl LA8FB - cmp #$54 + cmp #'T' beq LA90A LA907 jmp BS.ERR10 -LA90A lda #$04 +LA90A lda #$04 and GP.AllowedBITS beq LA931 ora GP.FoundBITS sta GP.FoundBITS - lda #$00 - sta XBC08 - lda #$12 + + stz XBC08 + + lda #$12 sta XBC09 jsr BS.GetCharSpaceSep beq LA907 @@ -969,10 +1012,10 @@ LA90A lda #$04 jmp BS.GetFTypeASC LA931 sec - lda #$0B + lda #$0B rts -LA935 lda BS.KW.OPT.PBITSLO,y +LA935 lda BS.KW.OPT.PBITSLO,y beq LA955 and GP.AllowedBITS+1 @@ -984,17 +1027,17 @@ LA935 lda BS.KW.OPT.PBITSLO,y and GP.FoundBITS+1 bne LA955 - lda #$01 + lda #$01 sta GP.ParamD - lda #$04 + lda #$04 LA94F ora GP.FoundBITS+1 sta GP.FoundBITS+1 -LA955 lda BS.KW.OPT.PBITSHI,y +LA955 lda BS.KW.OPT.PBITSHI,y and #$03 sta XBC08 - lda BS.KW.OPT.PBITSHI,y + lda BS.KW.OPT.PBITSHI,y lsr lsr sta XBC09 @@ -1005,7 +1048,7 @@ LA955 lda BS.KW.OPT.PBITSHI,y beq LA984 LA96E stx GP.INPTR - jsr LAA6A + jsr BS.GetDecDigit bcc LA97A bmi LA9C1 @@ -1022,7 +1065,7 @@ LA984 jsr BS.GetCharSpaceSep beq LA9BE LA989 stx GP.INPTR - jsr LAABC + jsr BS.GetHexDigit bcc LA995 bmi LA9C1 @@ -1037,14 +1080,14 @@ LA99D ldx #$02 LA99F cpx XBC08 beq LA9AC - lda BS.TMPBUF4,x + lda BS.TMPBUF4,x bne LA9C1 dex bne LA99F LA9AC ldy XBC09 -LA9AF lda BS.TMPBUF4,x +LA9AF lda BS.TMPBUF4,x sta GP.ParamA,y dey dex @@ -1071,7 +1114,7 @@ LA9C6 sta BS.TMPBUF4,y LA9D5 stx GP.INPTR LA9D8 ldx #$00 - lda XBC08 + lda XBC08 cmp #$0F beq LA9BE @@ -1079,7 +1122,7 @@ LA9D8 ldx #$00 adc XBC08 tay -LA9E6 lda BS.TMPBUF4,x +LA9E6 lda BS.TMPBUF4,x eor BS.PRODOSTYPES.ASC,y asl bne LA9F7 @@ -1094,18 +1137,18 @@ LA9E6 lda BS.TMPBUF4,x LA9F7 inc XBC08 bne LA9D8 -LA9FC lda #$0E +LA9FC lda #$0E sec sbc XBC08 tay - lda BS.PRODOSTYPES.H,y + lda BS.PRODOSTYPES.H,y sta GP.ParamT ldx GP.INPTR clc rts - +*-------------------------------------- BS.GetPathInPathBuf - jsr BS.GetCharUC + jsr BS.GetChar UC sta MLI.PATHBUF,y iny cmp #$2C @@ -1122,15 +1165,15 @@ BS.GetPathInPathBuf ora #$00 rts - +*-------------------------------------- BS.GetKWInCmdBuf ldx #$00 ldy #$00 -LAA2D jsr BS.GetCharUC +LAA2D jsr BS.GetChar UC sta BS.CMDBUF,y iny - cmp #$2C + cmp #',' beq LAA45 cmp #$20 @@ -1144,33 +1187,42 @@ LAA2D jsr BS.GetCharUC LAA45 ora #$00 rts - +*-------------------------------------- BS.GetCharSpaceSep - lda #$20 + lda #$20 sta BS.GetCharSep - jsr BS.GetCharUC - cmp #$2C + jsr BS.GetChar UC + cmp #',' beq LAA57 cmp #$0D LAA56 clc LAA57 rts - -BS.GetCharUC lda IO.LINEBUF,x +*-------------------------------------- +BS.GetCharUC lda IO.LINEBUF,x and #$7F cmp #$61 - bcc LAA63 + bcc .1 and #$5F -LAA63 inx +.1 inx cmp BS.GetCharSep beq BS.GetCharUC rts +*-------------------------------------- +BS.GetChar lda IO.LINEBUF,x + and #$7F -LAA6A cmp #$30 + inx + cmp BS.GetCharSep + beq BS.GetChar + + rts +*-------------------------------------- +BS.GetDecDigit cmp #$30 bcc LAA72 cmp #$3A @@ -1182,13 +1234,13 @@ LAA72 sec LAA76 and #$0F pha - lda BS.TMPBUF4+2 + lda BS.TMPBUF4+2 cmp #$1A bcs LAAA2 ldx #$02 -LAA82 lda BS.TMPBUF4,x +LAA82 lda BS.TMPBUF4,x pha dex bpl LAA82 @@ -1222,11 +1274,11 @@ LAAA2 pla inc BS.TMPBUF4+2 bne LAABB -LAAB8 lda #$FF +LAAB8 lda #$FF sec LAABB rts - -LAABC cmp #$30 +*-------------------------------------- +BS.GetHexDigit cmp #$30 bcc LAACC cmp #$3A @@ -1243,6 +1295,7 @@ LAACC sec rts LAAD0 sbc #$06 + LAAD2 and #$0F ldx #$03 @@ -1255,16 +1308,16 @@ LAAD6 jsr BS.TMPBUF3x2 ora BS.TMPBUF4 sta BS.TMPBUF4 rts - +*-------------------------------------- BS.TMPBUF3x2 asl BS.TMPBUF4 rol BS.TMPBUF4+1 rol BS.TMPBUF4+2 rts - +*-------------------------------------- BS.IsIntCmd ldx #$1F stx GP.XCNUM - lda BS.CMDBUF - eor #$2D + lda BS.CMDBUF + eor #'-' bne LAB03 inc GP.XCNUM @@ -1274,7 +1327,7 @@ BS.IsIntCmd ldx #$1F LAB03 ldy #$08 sty GP.XLEN -LAB08 lda BS.KW.LEN,x +LAB08 lda BS.KW.LEN,x bpl LAB13 and #$7F @@ -1282,7 +1335,9 @@ LAB08 lda BS.KW.LEN,x dec GP.XLEN LAB13 tax -LAB14 lda BS.CMDBUF,y + +LAB14 lda BS.CMDBUF,y + jsr BS.ToUpper cmp BS.KW.TABLE,x bne LAB33 @@ -1290,12 +1345,12 @@ LAB14 lda BS.CMDBUF,y dey bpl LAB14 -LAB20 lda GP.XCNUM +LAB20 lda GP.XCNUM asl tax - lda BS.KW.PBITS-1,x + lda BS.KW.PBITS-1,x sta GP.AllowedBITS+1 - lda BS.KW.PBITS-2,x + lda BS.KW.PBITS-2,x sta GP.AllowedBITS clc rts @@ -1308,16 +1363,15 @@ LAB33 ldy GP.XLEN dec GP.XCNUM sec jmp GP.EXTRNCMD - -BS.TMPBUF3Reset ldy #$00 - sty BS.TMPBUF4 - sty BS.TMPBUF4+1 - sty BS.TMPBUF4+2 +*-------------------------------------- +BS.TMPBUF3Reset stz BS.TMPBUF4 + stz BS.TMPBUF4+1 + stz BS.TMPBUF4+2 rts - -BS.KW.APPEND lda GP.FITYPE +*-------------------------------------- +BS.KW.APPEND lda GP.FITYPE cmp #$FC - beq BS.KW.02 + beq BS.KW.RUN cmp #$06 beq LABA3 @@ -1331,31 +1385,32 @@ LAB63 cmp #$FF beq LAB6F cmp #$B3 beq LAB6F - lda #$0D + lda #$0D sec rts LAB6F pha jsr LB562 jsr LB36B - lda #$00 - sta GP.ParamA - sta MLI.MEMTABL+19 - sta MLI.MEMTABL+20 - sta MLI.MEMTABL+21 - sta MLI.MEMTABL+22 - lda #$01 + + stz GP.ParamA + stz MLI.MEMTABL+19 + stz MLI.MEMTABL+20 + stz MLI.MEMTABL+21 + stz MLI.MEMTABL+22 + + lda #$01 sta MLI.MEMTABL+23 - lda #$20 + lda #$20 sta GP.ParamA+1 pla cmp #$FF bne LABA6 sta GP.ParamT - lda #$80 + lda #$80 sta GP.FoundBITS+1 - lda #$05 + lda #$05 sta GP.FoundBITS LABA3 jmp BS.KW.BRUN @@ -1363,10 +1418,10 @@ LABA6 sec jsr MON.IIGSID bcs LABA3 - jmp LB099 + jmp BS.QUIT.IIgs BS.KW.X05 jsr LA411 - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta BS.AS.HIMEMSave ldx XBBEA dex @@ -1378,13 +1433,13 @@ BS.KW.X05 jsr LA411 jsr AS.CLEAR1 jsr LA480 - lda #$00 + lda #$00 beq LABE6 -BS.KW.02 lda #$00 - sta GP.IFILACTV - sta AS.ERRNUM - lda GP.FoundBITS +BS.KW.RUN stz GP.IFILACTV + stz AS.ERRNUM + + lda GP.FoundBITS lsr bcc LABF4 @@ -1400,9 +1455,9 @@ LABE6 sta AS.ERRFLG jmp AS.NEXTSTMT LABF4 jsr AS.NORMAL - lda #$A3 + lda #$A3 sta X9F65 - lda #$FF + lda #$FF sta GP.XCNUM sta ZP.PROMPT ldx #$04 @@ -1414,7 +1469,7 @@ BS.KW.RESTORE jsr LAC1D BS.ENTRY jsr AS.CLEAR1 jsr BS.SetState0 - lda #$00 + lda #$00 sta ZP.CH jmp AS.RESTART1 @@ -1433,20 +1488,20 @@ LAC22 jsr LAC34 LAC33 rts -LAC34 lda #$01 +LAC34 lda #$01 ldx #$FC jsr BS.CheckFTypeXAccessA bcs LAC33 - lda #MLI.C.GETEOF + lda #MLI.C.GETEOF jsr GP.GOSYSTEM bcs LAC33 - lda AS.PGRMSTART + lda AS.PGRMSTART sta GP.MLIRW.DATAPTR adc GP.SBUFADR sta GP.ParamA - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 sta GP.MLIRW.DATAPTR+1 adc GP.SBUFADR+1 sta GP.ParamA+1 @@ -1454,7 +1509,7 @@ LAC34 lda #$01 cmp AS.HIMEM+1 -LAC5E lda #$0E +LAC5E lda #$0E bcs LAC33 ldx GP.SBUFADR @@ -1473,10 +1528,10 @@ LAC5E lda #$0E rts LAC80 sec - lda AS.PGRMSTART + lda AS.PGRMSTART sbc GP.FIAUXTYPE sta ZP.A1L - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 sbc GP.FIAUXTYPE+1 sta ZP.A1H ora ZP.A1L @@ -1484,94 +1539,97 @@ LAC80 sec beq LACD9 ldx AS.PGRMSTART - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 LAC98 stx ZP.PCL sta ZP.PCH ldy #$01 - lda (ZP.PCL),y + lda (ZP.PCL),y dey ora (ZP.PCL),y beq LACD9 - lda (ZP.PCL),y + lda (ZP.PCL),y adc ZP.A1L tax sta (ZP.PCL),y iny - lda (ZP.PCL),y + lda (ZP.PCL),y adc ZP.A1H sta (ZP.PCL),y clc bcc LAC98 -LACB6 lda GP.FoundBITS+1 +LACB6 lda GP.FoundBITS+1 and #$08 clc beq LACD9 - lda GP.ParamAT + lda GP.ParamAT sta AS.LINNUM - lda GP.ParamAT+1 + lda GP.ParamAT+1 sta AS.LINNUM+1 jsr AS.FINDLINE clc - lda AS.LOWTR + lda AS.LOWTR adc #$FF sta AS.TXTPTR - lda AS.LOWTR+1 + lda AS.LOWTR+1 adc #$FF sta AS.TXTPTR+1 clc LACD9 rts - +*-------------------------------------- BS.KW.STORE bcc LACFE - lda #$FC + lda #$FC sta GP.ParamT sta GP.FITYPE - lda #$C3 + lda #$C3 sta GP.FIACCESS - lda AS.PGRMSTART + lda AS.PGRMSTART sta GP.CRAUXTYPE sta GP.FIAUXTYPE - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 sta GP.CRAUXTYPE+1 sta GP.FIAUXTYPE+1 jsr BS.CreateFileOrDir bcs LAD47 -LACFE lda #$02 +LACFE lda #$02 ldx #$FC jsr BS.CheckFTypeXAccessA bcs LAD47 - lda AS.PGRMEND + lda AS.PGRMEND sec sbc AS.PGRMSTART tax - sta GP.SBUFADR - lda AS.PGRMEND+1 +* sta GP.SBUFADR + lda AS.PGRMEND+1 sbc AS.PGRMSTART+1 tay - sta GP.SBUFADR+1 - lda #$00 - sta GP.SBUFADR+2 - lda AS.PGRMSTART +* sta GP.SBUFADR+1 +* lda #$00 +* sta GP.SBUFADR+2 + + jsr BS.SetSBUFADRXY0 + + lda AS.PGRMSTART sta GP.MLIRW.DATAPTR - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 sta GP.MLIRW.DATAPTR+1 jsr BS.WriteXYBytes bcs LAD47 - lda #MLI.C.SETEOF + lda #MLI.C.SETEOF jsr GP.GOSYSTEM bcs LAD47 jsr BS.FileClose bcs LAD47 - lda AS.PGRMSTART+1 + lda AS.PGRMSTART+1 ldx AS.PGRMSTART cmp GP.FIAUXTYPE+1 bne LAD48 @@ -1585,25 +1643,25 @@ LAD47 rts LAD48 stx GP.FIAUXTYPE sta GP.FIAUXTYPE+1 jmp BS.SetFileInfoNoDate - -BS.KW.CREATE lda #$00 - sta GP.CRAUXTYPE - sta GP.CRAUXTYPE+1 - lda GP.FoundBITS - and #$04 +*-------------------------------------- +BS.KW.CREATE stz GP.CRAUXTYPE + stz GP.CRAUXTYPE+1 + >DEBUG + lda GP.FoundBITS + and #CMDBITS0.T bne BS.CreateFileOrDir - lda #$0F + lda #$0F sta GP.ParamT BS.CreateFileOrDir - lda GP.EXECACTV + lda GP.EXECACTV asl - lda #$00 + lda #$00 adc GP.OPENCNT cmp #$08 bcs LAD8D - lda GP.ParamT + lda GP.ParamT sta GP.CRTYPE ldx #$C3 ldy #$01 @@ -1614,49 +1672,49 @@ BS.CreateFileOrDir LAD82 stx GP.CRACCESS sty GP.CRSTTYPE - lda #MLI.C.CREATE + lda #MLI.C.CREATE jmp GP.GOSYSTEM -LAD8D lda #$0C +LAD8D lda #$0C rts -BS.KW.RENAME lda GP.FoundBITS +BS.KW.RENAME lda GP.FoundBITS lsr lsr - lda #MLI.C.RENAME + lda #MLI.C.RENAME bcs LAD9E jmp BS.ERR10 -BS.KW.DELETE lda #MLI.C.DESTROY +BS.KW.DELETE lda #MLI.C.DESTROY LAD9E jmp GP.GOSYSTEM BS.KW.LOCK jsr BS.GetFileInfo - lda GP.FIACCESS + lda GP.FIACCESS and #$3C ora #$01 sta GP.FIACCESS jmp BS.SetFileInfo BS.KW.UNLOCK jsr BS.GetFileInfo - lda #$C3 + lda #$C3 ora GP.FIACCESS sta GP.FIACCESS jmp BS.SetFileInfo -BS.KW.PREFIX lda GP.FoundBITS+1 +BS.KW.PREFIX lda GP.FoundBITS+1 and #$04 sec bne LADCB - lda GP.FoundBITS + lda GP.FoundBITS lsr -LADCB lda #$C6 +LADCB lda #$C6 bcs LAD9E - lda ZP.PROMPT + lda ZP.PROMPT beq LADF0 jsr BS.CROUT @@ -1665,7 +1723,7 @@ LADCB lda #$C6 LADD8 cpx BS.CMDBUF.LEN beq LADE8 - lda BS.CMDBUF,x + lda BS.CMDBUF,x ora #$80 jsr BS.COUT inx @@ -1676,7 +1734,7 @@ LADE8 jsr BS.CROUT clc rts -LADF0 lda #$FF +LADF0 lda #$FF sta GP.PFXACTV clc rts diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index 31d9b463..d2dd038f 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -3,22 +3,22 @@ NEW *-------------------------------------- BS.KW.BSAVE bcc LAE2D - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$B0 cmp #$90 XAE00 bcc LAE31 - lda GP.ParamA + lda GP.ParamA sta GP.CRAUXTYPE sta GP.FIAUXTYPE - lda GP.ParamA+1 + lda GP.ParamA+1 sta GP.CRAUXTYPE+1 sta GP.FIAUXTYPE+1 - lda #$06 + lda #$06 sta GP.ParamT sta GP.FITYPE - lda GP.FoundBITS + lda GP.FoundBITS and #$04 bne LAE31 @@ -28,10 +28,10 @@ XAE00 bcc LAE31 jsr BS.GetFileInfo bcs LAE33 -LAE2D lda #$02 +LAE2D lda #$02 bne LAE44 -LAE31 lda #$06 +LAE31 lda #$06 LAE33 sec rts @@ -45,23 +45,23 @@ BS.KW.BRUN jsr BS.KW.BLOAD LAE3F jmp (GP.MLIRW.DATAPTR) -BS.KW.BLOAD lda #$01 +BS.KW.BLOAD lda #$01 LAE44 ldx #$06 jsr BS.CheckFTypeXAccessA bcs LAE33 ldx GP.ParamA ldy GP.ParamA+1 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 bmi LAE66 ldx GP.FIAUXTYPE ldy GP.FIAUXTYPE+1 - lda GP.FoundBITS + lda GP.FoundBITS and #$04 bne LAEAB - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 LAE66 stx GP.MLIRW.DATAPTR sty GP.MLIRW.DATAPTR+1 @@ -69,7 +69,7 @@ LAE66 stx GP.MLIRW.DATAPTR bvs LAE80 pha - lda GP.FITYPE + lda GP.FITYPE cmp #$06 bne LAE7F @@ -88,11 +88,11 @@ LAE80 ldx GP.ParamL and #$10 beq LAEC5 - lda GP.ParamE + lda GP.ParamE sec sbc GP.ParamA tax - lda GP.ParamE+1 + lda GP.ParamE+1 sbc GP.ParamA+1 tay inx @@ -102,40 +102,40 @@ LAE80 ldx GP.ParamL LAEA5 bcs LAEC5 - lda #$02 + lda #$02 sec rts -LAEAB lda #$0B +LAEAB lda #$0B sec rts -LAEAF lda #MLI.C.GETEOF +LAEAF lda #MLI.C.GETEOF jsr GP.GOSYSTEM bcs LAEC3 ldx GP.SBUFADR ldy GP.SBUFADR+1 - lda GP.SBUFADR+2 + lda GP.SBUFADR+2 beq LAEC5 - lda #$0E + lda #$0E LAEC3 sec rts LAEC5 stx GP.MLIRW.COUNT sty GP.MLIRW.COUNT+1 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$40 beq LAEF7 ldx #$02 -LAED4 lda GP.ParamB,x +LAED4 lda GP.ParamB,x sta GP.SBUFADR,x dex bpl LAED4 -LAEDD lda #MLI.C.SETMARK +LAEDD lda #MLI.C.SETMARK jsr GP.GOSYSTEM ldx GP.XCNUM bcc LAEF7 @@ -146,36 +146,34 @@ LAEDD lda #MLI.C.SETMARK cpx #$0F bne LAEC3 - lda #MLI.C.SETEOF + lda #MLI.C.SETEOF jsr GP.GOSYSTEM bcc LAEDD rts LAEF7 ldx GP.XCNUM - lda #$CA + lda #$CA cpx #$0F bne LAF24 bit GP.FoundBITS+1 bvs LAF22 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$30 beq LAF22 - lda GP.MLIRW.COUNT - sta GP.SBUFADR - lda GP.MLIRW.COUNT+1 - sta GP.SBUFADR+1 - lda #$00 - sta GP.SBUFADR+2 - lda #MLI.C.SETEOF + ldx GP.MLIRW.COUNT + ldy GP.MLIRW.COUNT+1 + jsr BS.SetSBUFADRXY0 + lda #MLI.C.SETEOF jsr GP.GOSYSTEM -LAF22 lda #MLI.C.WRITE +LAF22 lda #MLI.C.WRITE LAF24 jsr GP.GOSYSTEM bcs LAF38 + bit GP.FoundBITS+1 bvs LAF35 @@ -191,10 +189,10 @@ LAF38 sec BS.KW.SAVE bcc LAF4E - lda #$FD + lda #$FD sta GP.ParamT sta GP.FITYPE - lda #$C3 + lda #$C3 sta GP.FIACCESS jsr BS.CreateFileOrDir bcs LAF9C @@ -203,7 +201,7 @@ LAF4E jsr LA411 bcs LAF9C ldx #$FD - lda #$02 + lda #$02 jsr BS.CheckFTypeXAccessA bcs LAF95 @@ -211,10 +209,10 @@ LAF4E jsr LA411 jsr BS.WriteXYBytes bcs LAF95 - lda XBBE9 + lda XBBE9 sta GP.MLIRW.DATAPTR sta GP.FIAUXTYPE - lda XBBEA + lda XBBEA sta GP.MLIRW.DATAPTR+1 sta GP.FIAUXTYPE+1 ldy XBBEC @@ -222,9 +220,10 @@ LAF4E jsr LA411 jsr BS.WriteXYBytes bcs LAF95 - lda #MLI.C.GETMARK + lda #MLI.C.GETMARK jsr GP.GOSYSTEM - lda #MLI.C.SETEOF + + lda #MLI.C.SETEOF jsr GP.GOSYSTEM bcs LAF95 @@ -241,16 +240,16 @@ LAF95 php LAF9C rts BS.SetupRW5AtBBE4 - lda #$E4 + lda #$E4 sta GP.MLIRW.DATAPTR - lda #$BB + lda #$BB sta GP.MLIRW.DATAPTR+1 ldy #$00 ldx #$05 rts BS.KW.LOAD ldx #$FD - lda #$01 + lda #$01 jsr BS.CheckFTypeXAccessA bcs LAF9C @@ -258,10 +257,10 @@ BS.KW.LOAD ldx #$FD jsr BS.ReadXYBytes bcs LAF9C - lda GP.FIAUXTYPE + lda GP.FIAUXTYPE sta XBBE9 sta GP.MLIRW.DATAPTR - lda AS.HIMEM+1 + lda AS.HIMEM+1 sec sbc BS.BAS.HDR+4 clc @@ -273,10 +272,10 @@ BS.KW.LOAD ldx #$FD beq LAFF3 - lda #$00 + lda #$00 sbc XBBE9 tax - lda AS.HIMEM+1 + lda AS.HIMEM+1 sbc XBBEA tay jsr BS.ReadXYBytes @@ -285,74 +284,75 @@ BS.KW.LOAD ldx #$FD jsr BS.FileClose jmp LAF95 -LAFF3 lda #$0E +LAFF3 lda #$0E sec rts -BS.FileClose lda #MLI.C.CLOSE +BS.FileClose lda #MLI.C.CLOSE bne LB007 -BS.ReadXYBytes lda #MLI.C.READ +BS.ReadXYBytes lda #MLI.C.READ bne LB001 -BS.WriteXYBytes lda #MLI.C.WRITE +BS.WriteXYBytes lda #MLI.C.WRITE LB001 sty GP.MLIRW.COUNT+1 stx GP.MLIRW.COUNT LB007 jmp GP.GOSYSTEM -BS.KW.IN lda #$00 +BS.KW.IN lda #$00 sta BS.GetCharSep beq LB018 -BS.KW.PR lda #$02 +BS.KW.PR lda #$02 sta BS.GetCharSep - lda #$08 + lda #$08 + LB018 ora GP.ParamINPR asl tax - lda GP.FoundBITS + lda GP.FoundBITS and #$40 beq LB035 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 bmi LB04A - lda GP.OUTVECT0,x + lda GP.OUTVECT0,x sta GP.ParamA - lda GP.OUTVECT0+1,x + lda GP.OUTVECT0+1,x sta GP.ParamA+1 LB035 jsr LB05C bcs LB049 ldy BS.GetCharSep - lda GP.ParamA + lda GP.ParamA sta ZP.CSW,y - lda GP.ParamA+1 + lda GP.ParamA+1 sta ZP.CSW+1,y LB049 rts LB04A jsr LB05C bcs LB05B - lda GP.ParamA+1 + lda GP.ParamA+1 sta GP.OUTVECT0+1,x - lda GP.ParamA + lda GP.ParamA sta GP.OUTVECT0,x LB05B rts -LB05C lda GP.ParamA +LB05C lda GP.ParamA sta ZP.PCL - lda GP.ParamA+1 + lda GP.ParamA+1 sta ZP.PCH ldy #$00 cmp #$C0 bcc LB081 - lda $CFFF + lda $CFFF sty ZP.A1L - lda (ZP.PCL),y + lda (ZP.PCL),y cmp #$FF beq LB087 @@ -365,38 +365,37 @@ LB077 cmp (ZP.PCL),y LB07F clc rts -LB081 lda (ZP.PCL),y +LB081 lda (ZP.PCL),y cmp #$D8 beq LB07F -LB087 lda #$03 +LB087 lda #$03 sec rts - +*-------------------------------------- BS.KW.BYE jsr LB562 jsr LB36B - lda #$65 + lda #$65 jsr MLI .DA #MLI.C.QUIT .DA GP.MLIRW - -LB099 jsr MLI +*-------------------------------------- +BS.QUIT.IIgs jsr MLI .DA #MLI.C.QUIT - .DA BS.MLIQUIT2.Param -BS.MLIQUIT2.Param - .DA #4 + .DA .1 + +.1 .DA #4 .DA #$EE .DA MLI.PATHBUF .DA #0 .DA 0 +*-------------------------------------- +BS.KW.CAT lda #$27 + .HS 2C BIT ABS +BS.KW.CATALOG lda #$4F -BS.KW.CAT lda #$27 - bne LB0AC - -BS.KW.CATALOG lda #$4F - -LB0AC sta BS.CATWIDTH - lda GP.FoundBITS + sta BS.CATWIDTH + lda GP.FoundBITS and #$05 lsr bne LB0BA @@ -420,15 +419,13 @@ LB0C1 jsr LB1BA jsr BS.PRINTERRMSGX jsr BS.LINEBUFOUT jsr BS.CROUT - lda XBC14 + lda XBC14 ora XBC15 - nop - nop LB0E8 jsr LB241 bcs LB113 - lda GP.ParamT + lda GP.ParamT beq LB0F7 cmp DIRENTBUF.TYPE @@ -437,18 +434,17 @@ LB0E8 jsr LB241 LB0F7 jsr LA4D2 jsr BS.LINEBUFOUT -LB0FD lda IO.KBD +LB0FD lda IO.KBD cmp #$83 bne LB10E - lda GP.STATE + lda GP.STATE bne LB113 bit IO.KSTROBE bcs LB113 -LB10E nop - lda #$FF +LB10E lda #$FF bne LB0E8 LB113 jsr BS.FileClose @@ -463,11 +459,11 @@ LB113 jsr BS.FileClose clc LB127 rts - +*-------------------------------------- LB128 jsr BS.LINEBUFCLR80 ldx #$01 ldy DIRENTBUF.STNL - lda #$AF + lda #$AF cpy #$F0 bcc LB13A @@ -479,7 +475,7 @@ LB13A tya sta IO.LINEBUF ldy #$05 -LB142 lda DIRENTBUF,y +LB142 lda DIRENTBUF,y ora #$80 sta IO.LINEBUF,x iny @@ -487,26 +483,29 @@ LB142 lda DIRENTBUF,y dec IO.LINEBUF bne LB142 - lda #$A2 + lda #$A2 sta IO.LINEBUF rts -LB157 lda #$18 - sta GP.SBUFADR - lda #$BC - sta GP.SBUFADR+1 - lda MLI.DEVNUM +LB157 ldx #BS.CMDBUF +* sta GP.SBUFADR + ldy /BS.CMDBUF +* sta GP.SBUFADR+1 + + jsr BS.SetSBUFADRXY + + lda MLI.DEVNUM sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.ONLINE + lda #MLI.C.ONLINE jsr GP.GOSYSTEM bcs LB127 - lda BS.CMDBUF + lda BS.CMDBUF and #$0F tax inx stx BS.CMDBUF.LEN - lda #$AF + lda #$AF sta BS.CMDBUF jsr BS.GetFileInfo bcs LB127 @@ -515,19 +514,19 @@ LB157 lda #$18 ldx #$36 jsr BS.PRINTERRMSGX jsr BS.TMPBUF3Reset - lda GP.FIAUXTYPE + lda GP.FIAUXTYPE ldx GP.FIAUXTYPE+1 ldy #$3D jsr BS.AXDEC2LINEBUFY - lda GP.FIBLOKS + lda GP.FIBLOKS ldx GP.FIBLOKS+1 ldy #$26 jsr BS.AXDEC2LINEBUFY - lda GP.FIAUXTYPE + lda GP.FIAUXTYPE sec sbc GP.FIBLOKS pha - lda GP.FIAUXTYPE+1 + lda GP.FIAUXTYPE+1 sbc GP.FIBLOKS+1 tax pla @@ -535,8 +534,8 @@ LB157 lda #$18 jsr BS.AXDEC2LINEBUFY clc rts - -LB1BA lda #$01 +*-------------------------------------- +LB1BA lda #$01 ldx #$0F ldy GP.STTYPE cpy #$0F @@ -547,36 +546,36 @@ LB1BA lda #$01 LB1C8 jsr LB210 bcs LB203 -BS.ReadDirEnt lda #$59 +BS.ReadDirEnt lda #$59 sta GP.MLIRW.DATAPTR - lda #$02 + lda #$02 sta GP.MLIRW.DATAPTR+1 - lda #$2B + lda #$2B sta GP.MLIRW.COUNT - lda #$00 - sta GP.MLIRW.COUNT+1 - lda #MLI.C.READ + + stz GP.MLIRW.COUNT+1 + lda #MLI.C.READ jsr GP.GOSYSTEM bcs LB203 ldx #$03 -LB1EA lda $27C,x +LB1EA lda $27C,x sta XBC12,x dex bpl LB1EA sta GP.MLIRW.COUNT - lda #$01 + lda #$01 sta XBC16 - lda #$00 - sta GP.SBUFADR+1 - sta GP.SBUFADR+2 + + stz GP.SBUFADR+1 + stz GP.SBUFADR+2 LB203 rts BS.CheckFTypeXAccessA pha - lda GP.FoundBITS + lda GP.FoundBITS and #$04 beq LB20F @@ -590,34 +589,34 @@ LB210 cpx GP.FITYPE and GP.FIACCESS beq LB23D - lda XBBE3 + lda XBBE3 sta GP.OSYSBUF+1 - lda #$0F + lda #$0F sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.C.OPEN jsr GP.GOSYSTEM bcs LB238 - lda GP.OREFNUM + lda GP.OREFNUM sta GP.MLIRW.REFNUM sta GP.MLICF.REFNUM sta GP.MLIMRKEOFBUF.REFNUM LB238 rts -LB239 lda #$0D +LB239 lda #$0D sec rts -LB23D lda #$0A +LB23D lda #$0A sec rts - -LB241 lda GP.SBUFADR+1 +*-------------------------------------- +LB241 lda GP.SBUFADR+1 and #$FE sta GP.SBUFADR+1 ldy XBC16 - lda #$00 + lda #$00 cpy XBC13 bcc LB25D @@ -638,25 +637,26 @@ LB25D dey LB268 adc #$04 sta GP.SBUFADR - lda #MLI.C.SETMARK + lda #MLI.C.SETMARK jsr GP.GOSYSTEM bcs LB28D - lda #MLI.C.READ + lda #MLI.C.READ jsr GP.GOSYSTEM bcs LB28D inc XBC16 - lda DIRENTBUF + lda DIRENTBUF and #$F0 beq LB241 - +* BUG on DEC word dec XBC14 bne LB28D dec XBC15 LB28D rts + BS.JMP.XTRNADDR jmp (GP.XTRNADDR) BS.KW.EXEC jsr BS.CheckFilename @@ -666,15 +666,14 @@ BS.KW.EXEC jsr BS.CheckFilename bpl LB2BC sta GP.MLIMRKEOFBUF.REFNUM - lda #$00 - sta GP.SBUFADR - sta GP.SBUFADR+1 - sta GP.SBUFADR+2 - lda #MLI.C.SETMARK + + jsr BS.ZeroSBUFADR + + lda #MLI.C.SETMARK jsr GP.GOSYSTEM bcs LB2B5 - lda GP.MLIMRKEOFBUF.REFNUM + lda GP.MLIMRKEOFBUF.REFNUM bne LB333 LB2B5 pha @@ -683,7 +682,7 @@ LB2B5 pha sec rts -LB2BC lda #$14 +LB2BC lda #$14 sec rts @@ -693,20 +692,20 @@ LB2C0 bit GP.EXECACTV jsr LB36B bcs LB2D3 -LB2CA lda GP.FITYPE +LB2CA lda GP.FITYPE cmp #$04 beq LB2D5 - lda #$0D + lda #$0D LB2D3 sec rts LB2D5 jsr LA1F9 bcs LB2D3 - lda #$00 - sta GP.SBUFADR - lda XBBE3 + stz GP.SBUFADR + + lda XBBE3 sta GP.SBUFADR+1 ldx GP.OPENCNT beq LB30E @@ -727,10 +726,10 @@ LB2F2 cmp XBBEE,x LB2FB tya sta XBBEE,x - lda XBBF6,x + lda XBBF6,x sta GP.MLIMRKEOFBUF.REFNUM - lda #MLI.C.SETBUF - jsr GP.GOSYSTEM + lda #MLI.C.SETBUF + jsr GP.GOSYSTEM bcc LB30D brk @@ -738,9 +737,10 @@ LB2FB tya LB30D pla LB30E sta XBBE3 sta GP.OSYSBUF+1 - lda #$00 - sta MLI.LEVEL - lda #MLI.C.OPEN + + stz MLI.LEVEL + + lda #MLI.C.OPEN jsr GP.GOSYSTEM bcc LB327 @@ -752,8 +752,9 @@ LB30E sta XBBE3 LB327 ldx GP.OSYSBUF+1 stx XBBF6 - lda GP.OREFNUM + lda GP.OREFNUM sta XBBFE + LB333 sta GP.MLIRW.REFNUM sta GP.MLIMRKEOFBUF.REFNUM sta GP.NEWLREF @@ -762,11 +763,11 @@ LB333 sta GP.MLIRW.REFNUM ldx GP.FIAUXTYPE+1 stx GP.ParamL+1 jsr LB45B - lda #$7F + lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.C.NEWLINE jsr GP.GOSYSTEM - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$03 beq LB364 @@ -775,24 +776,24 @@ LB333 sta GP.MLIRW.REFNUM jmp LB2B5 -LB364 lda #$FF +LB364 lda #$FF sta GP.EXECACTV clc rts -LB36B lda GP.EXECACTV +LB36B lda GP.EXECACTV bpl LB37B sta GP.EXECFILE ldx #$08 - lda XBBF6,x + lda XBBF6,x jsr LB515 LB37B rts BS.KW.X10 bcs LB3B7 - lda GP.FoundBITS + lda GP.FoundBITS and #$01 bne LB38D @@ -803,10 +804,10 @@ BS.KW.X10 bcs LB3B7 LB38D clc rts - lda #$00 - beq LB39F +* lda #$00 +* beq LB39F -BS.KW.FLUSH lda GP.FoundBITS +BS.KW.FLUSH lda GP.FoundBITS and #$01 beq LB39F @@ -814,7 +815,7 @@ BS.KW.FLUSH lda GP.FoundBITS bcs LB3A7 LB39F sta GP.MLICF.REFNUM - lda #MLI.C.FLUSH + lda #MLI.C.FLUSH jsr GP.GOSYSTEM LB3A7 rts @@ -824,34 +825,34 @@ BS.KW.03 php bcs LB3BB plp - lda #$14 + lda #$14 sec rts -LB3B3 lda #$0D +LB3B3 lda #$0D sec rts -LB3B7 lda #$06 +LB3B7 lda #$06 LB3B9 sec rts LB3BB plp ldx #$00 ldy #$00 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$10 bne LB3CD stx GP.ParamL+1 sty GP.ParamL -LB3CD lda GP.FoundBITS +LB3CD lda GP.FoundBITS and #$04 eor #$04 beq LB3DB - lda #$04 + lda #$04 sta GP.ParamT LB3DB bcc LB3FE @@ -859,7 +860,7 @@ LB3DB bcc LB3FE beq LB3B7 sta GP.FITYPE - lda #$C3 + lda #$C3 sta GP.FIACCESS ldx GP.ParamL+1 ldy GP.ParamL @@ -870,7 +871,7 @@ LB3DB bcc LB3FE jsr BS.CreateFileOrDir bcs LB3B9 -LB3FE lda GP.FITYPE +LB3FE lda GP.FITYPE cmp GP.ParamT bne LB3B3 @@ -879,7 +880,7 @@ LB3FE lda GP.FITYPE ldx GP.FIAUXTYPE+1 ldy GP.FIAUXTYPE - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$10 bne LB41D @@ -889,11 +890,11 @@ LB3FE lda GP.FITYPE LB41D jsr LA1F9 bcs LB3B9 - lda XBBE3 + lda XBBE3 sta GP.OSYSBUF+1 - lda #$07 + lda #$07 sta MLI.LEVEL - lda #MLI.C.OPEN + lda #MLI.C.OPEN jsr GP.GOSYSTEM bcc LB43B @@ -903,28 +904,29 @@ LB41D jsr LA1F9 sec rts -LB43B lda GP.FITYPE +LB43B lda GP.FITYPE cmp #$0F beq LB443 clc -LB443 lda #$00 +LB443 lda #$00 ror sta GP.DIRFLG ldx GP.OPENCNT - lda XBBE3 + lda XBBE3 sta XBBEF,x - lda GP.OREFNUM + lda GP.OREFNUM sta XBBF7,x inc GP.OPENCNT + LB45B asl asl asl asl asl tax - lda MLI.PATHBUF + lda MLI.PATHBUF ora GP.DIRFLG sta XBC59,x and #$7F @@ -932,16 +934,16 @@ LB45B asl cmp #$1E bcc LB473 - lda #$1D + lda #$1D LB473 sta ZP.PCL - lda GP.ParamL + lda GP.ParamL sta XBC5A,x - lda GP.ParamL+1 + lda GP.ParamL+1 sta XBC5B,x LB481 inx - lda MLI.PATHBUF,y + lda MLI.PATHBUF,y sta XBC5B,x dey dec ZP.PCL @@ -951,11 +953,11 @@ BS.KW.X07 clc rts BS.CheckFilename - lda GP.FoundBITS + lda GP.FoundBITS and #$01 bne LB49A - lda #$10 + lda #$10 sec rts @@ -965,13 +967,13 @@ LB49A ldx GP.OPENCNT stx GP.EXECFILE LB4A2 stx ZP.PCH - lda XBBF6,x + lda XBBF6,x jsr LB4D2 bne LB4B3 ldx ZP.PCH -LB4AE lda XBBF6,x +LB4AE lda XBBF6,x LB4B1 clc rts @@ -979,19 +981,19 @@ LB4B3 ldx ZP.PCH dex bne LB4A2 -LB4B8 lda GP.EXECACTV +LB4B8 lda GP.EXECACTV bpl LB4CE - lda XBBFE + lda XBBFE jsr LB4D2 bne LB4CE - lda #$FF + lda #$FF sta GP.EXECFILE ldx #$08 bne LB4AE -LB4CE lda #$12 +LB4CE lda #$12 sec rts @@ -1001,7 +1003,7 @@ LB4D2 asl asl asl tax - lda XBC59,x + lda XBC59,x sta GP.DIRFLG and #$7F cmp MLI.PATHBUF @@ -1011,16 +1013,16 @@ LB4D2 asl cmp #$1E bcc LB4EC - lda #$1D + lda #$1D LB4EC sta ZP.PCL - lda XBC5A,x + lda XBC5A,x sta XBBFF - lda XBC5B,x + lda XBC5B,x sta XBC00 LB4FA inx - lda MLI.PATHBUF,y + lda MLI.PATHBUF,y cmp XBC5B,x bne LB508 @@ -1030,7 +1032,7 @@ LB4FA inx LB508 rts -BS.KW.X06 lda GP.FoundBITS +BS.KW.X06 lda GP.FoundBITS and #$01 beq LB562 @@ -1038,27 +1040,27 @@ BS.KW.X06 lda GP.FoundBITS bcs LB4B1 LB515 sta GP.MLICF.REFNUM - lda XBBEE,x + lda XBBEE,x sta XBBE3 bit GP.EXECFILE bmi LB53F ldy GP.OPENCNT pha - lda XBBEE,y + lda XBBEE,y sta XBBEE,x pla sta XBBEE,y - lda XBBF6,x + lda XBBF6,x pha - lda XBBF6,y + lda XBBF6,y sta XBBF6,x pla sta XBBF6,y -LB53F lda #$00 - sta MLI.LEVEL - lda #MLI.C.CLOSE +LB53F stz MLI.LEVEL + + lda #MLI.C.CLOSE jsr GP.GOSYSTEM bcs LB572 @@ -1066,11 +1068,9 @@ LB53F lda #$00 bit GP.EXECFILE bpl LB55E - pha - lda #$00 - sta GP.EXECACTV - sta GP.EXECFILE - pla + stz GP.EXECACTV + stz GP.EXECFILE + rts LB55E dec GP.OPENCNT @@ -1080,17 +1080,17 @@ LB562 ldx GP.OPENCNT beq LB573 stx GP.EXECFILE - lda XBBF6,x + lda XBBF6,x jsr LB515 bcc LB562 LB572 rts -LB573 lda #$00 - sta GP.MLICF.REFNUM - lda #$07 +LB573 stz GP.MLICF.REFNUM + + lda #$07 sta MLI.LEVEL - lda #MLI.C.CLOSE + lda #MLI.C.CLOSE jmp GP.GOSYSTEM BS.KW.CLOSE jsr BS.CheckFilename @@ -1101,7 +1101,7 @@ BS.KW.CLOSE jsr BS.CheckFilename bit GP.DIRFLG bmi LB5F0 -LB592 lda GP.FoundBITS+1 +LB592 lda GP.FoundBITS+1 and #$03 beq LB5ED @@ -1111,55 +1111,56 @@ LB592 lda GP.FoundBITS+1 and #$01 beq LB5AD - lda GP.ParamR + lda GP.ParamR sta GP.ParamF - lda GP.ParamR+1 + lda GP.ParamR+1 sta GP.ParamF+1 -LB5AD lda #$EF +LB5AD lda #$EF sta GP.MLIRW.COUNT - lda #$00 - sta GP.MLIRW.COUNT+1 - sta GP.MLIRW.DATAPTR - lda #$02 + + stz GP.MLIRW.COUNT+1 + stz GP.MLIRW.DATAPTR + + lda #$02 sta GP.MLIRW.DATAPTR+1 - lda #$7F + lda #$7F sta GP.NLINEMASK - lda #MLI.C.NEWLINE + lda #MLI.C.NEWLINE jsr GP.GOSYSTEM bcs LB5EF -LB5CB lda GP.ParamF +LB5CB lda GP.ParamF ora GP.ParamF+1 clc beq LB5F0 - lda #MLI.C.READ + lda #MLI.C.READ jsr GP.GOSYSTEM bcs LB5EF - lda GP.ParamF + lda GP.ParamF sbc #$00 sta GP.ParamF - lda GP.ParamF+1 + lda GP.ParamF+1 sbc #$00 sta GP.ParamF+1 bcs LB5CB -LB5ED lda #$0B +LB5ED lda #$0B LB5EF sec LB5F0 rts -LB5F1 lda XBBFF +LB5F1 lda XBBFF sta BS.TMPBUF4 - lda XBC00 + lda XBC00 sta BS.TMPBUF4+1 - lda #$00 - sta BS.TMPBUF4+2 - sta BS.TMPBUF4+3 - sta GP.SBUFADR - sta GP.SBUFADR+1 - sta GP.SBUFADR+2 + + stz BS.TMPBUF4+2 + stz BS.TMPBUF4+3 + + jsr BS.ZeroSBUFADR + LB60E lsr GP.ParamR+1 ror GP.ParamR ldx #$00 @@ -1167,7 +1168,7 @@ LB60E lsr GP.ParamR+1 clc -LB619 lda BS.TMPBUF4,x +LB619 lda BS.TMPBUF4,x adc GP.SBUFADR,x sta GP.SBUFADR,x inx @@ -1186,14 +1187,14 @@ LB62F rol BS.TMPBUF4,x eor #$04 bne LB62F - lda GP.ParamR + lda GP.ParamR ora GP.ParamR+1 bne LB60E clc rts -LB642 lda #$02 +LB642 lda #$02 sec rts @@ -1211,7 +1212,7 @@ BS.KW.X04 jsr BS.CheckFilename ldx #$7F ldy #$EF - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$10 beq LB67C @@ -1222,56 +1223,55 @@ BS.KW.X04 jsr BS.CheckFilename cpy #$EF bcs LB6CB - lda #$22 + lda #$22 sta IO.LINEBUF - lda #$01 + lda #$01 LB67C sta GP.MLIRW.DATAPTR sty GP.MLIRW.COUNT stx GP.NLINEMASK - lda #$02 + lda #$02 sta GP.MLIRW.DATAPTR+1 - lda #$00 - sta GP.MLIRW.COUNT+1 - lda #MLI.C.NEWLINE + + stz GP.MLIRW.COUNT+1 + + lda #MLI.C.NEWLINE jsr GP.GOSYSTEM bcs LB69B -LB696 lda #$FF +LB696 lda #$FF sta GP.IFILACTV LB69B rts -LB69C lda #$59 +LB69C lda #$59 sta GP.MLIRW.DATAPTR - lda #$02 + lda #$02 sta GP.MLIRW.DATAPTR+1 - lda #$01 + lda #$01 sta GP.CATFLAG - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$01 clc beq LB696 - lda #$00 - sta GP.SBUFADR - sta GP.SBUFADR+1 - sta GP.SBUFADR+2 - lda #MLI.C.SETMARK + jsr BS.ZeroSBUFADR + + lda #MLI.C.SETMARK jsr GP.GOSYSTEM bcs LB6CA - lda #$FF + lda #$FF sta GP.IFILACTV LB6CA rts -LB6CB lda #$02 +LB6CB lda #$02 tax sec rts -LB6D0 lda GP.FoundBITS+1 +LB6D0 lda GP.FoundBITS+1 and #$43 beq LB719 @@ -1284,25 +1284,25 @@ LB6D0 lda GP.FoundBITS+1 LB6E0 jsr LB712 bcs LB71A LB6E5 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$02 beq LB6F1 jsr LB5AD bcs LB71A -LB6F1 lda GP.FoundBITS+1 +LB6F1 lda GP.FoundBITS+1 and #$40 beq LB719 - lda #MLI.C.GETMARK + lda #MLI.C.GETMARK jsr GP.GOSYSTEM bcs LB71A ldx #$00 ldy #$02 -LB703 lda GP.ParamB,x +LB703 lda GP.ParamB,x adc GP.SBUFADR,x sta GP.SBUFADR,x inx @@ -1311,7 +1311,7 @@ LB703 lda GP.ParamB,x bcs LB6CB -LB712 lda #MLI.C.SETMARK +LB712 lda #MLI.C.SETMARK jsr GP.GOSYSTEM bcs LB71A @@ -1328,14 +1328,13 @@ BS.KW.X08 jsr BS.CheckFilename bit GP.DIRFLG bpl LB734 - lda #$0A + lda #$0A LB732 sec rts -LB734 lda #$00 - sta GP.MLIRW.DATAPTR - lda #$02 +LB734 stz GP.MLIRW.DATAPTR + lda #$02 sta GP.MLIRW.DATAPTR+1 jsr LB6D0 bcc LB757 @@ -1346,18 +1345,18 @@ LB734 lda #$00 cpx #$02 beq LB732 -LB74B lda #MLI.C.SETEOF +LB74B lda #MLI.C.SETEOF jsr GP.GOSYSTEM bcs LB732 jsr LB6E0 bcs LB732 -LB757 lda AS.HIMEM +LB757 lda AS.HIMEM sta GP.MLIRW.DATAPTR - lda AS.HIMEM+1 + lda AS.HIMEM+1 sta GP.MLIRW.DATAPTR+1 - lda #$FF + lda #$FF sta GP.OFILACTV clc rts @@ -1370,7 +1369,7 @@ BS.KW.X09 php jsr BS.KW.03 bcs LB788 - lda GP.OREFNUM + lda GP.OREFNUM bne LB77B brk @@ -1382,14 +1381,14 @@ LB77B sta GP.MLIRW.REFNUM bit GP.DIRFLG bpl LB78A - lda #$0A + lda #$0A LB788 sec rts LB78A ldx GP.ParamL ldy GP.ParamL+1 - lda GP.FoundBITS+1 + lda GP.FoundBITS+1 and #$10 bne LB79D @@ -1397,26 +1396,21 @@ LB78A ldx GP.ParamL ldy GP.FIAUXTYPE+1 LB79D txa pha - lda GP.MLIRW.REFNUM - lsr - ror - ror - ror - tax + jsr BS.GetFTableIdx pla sta XBC5A,x sta XBBFF tya sta XBC5B,x sta XBC00 - lda #MLI.C.GETEOF + lda #MLI.C.GETEOF jsr GP.GOSYSTEM bcs LB788 - lda XBC00 + lda XBC00 bne LB7C8 - lda XBBFF + lda XBBFF cmp #$02 bcc LB7CD @@ -1426,7 +1420,7 @@ LB7C8 jsr LB7D0 LB7CD jmp LB74B LB7D0 ldx #$03 -LB7D2 lda GP.MLIMRKEOFBUF.REFNUM,x +LB7D2 lda GP.MLIMRKEOFBUF.REFNUM,x sta XBC09,x dex bne LB7D2 @@ -1439,10 +1433,10 @@ LB7E3 jsr BS.TMPBUF3x2 rol BS.TMPBUF4+3 rol XBC0E sec - lda BS.TMPBUF4+3 + lda BS.TMPBUF4+3 sbc XBBFF tax - lda XBC0E + lda XBC0E sbc XBC00 bcc LB805 @@ -1453,16 +1447,16 @@ LB7E3 jsr BS.TMPBUF3x2 LB805 dey bne LB7E3 - lda BS.TMPBUF4+3 + lda BS.TMPBUF4+3 ora XBC0E clc beq LB839 - lda XBBFF + lda XBBFF sec sbc BS.TMPBUF4+3 tax - lda XBC00 + lda XBC00 sbc XBC0E tay txa @@ -1472,34 +1466,64 @@ LB805 dey tya adc GP.SBUFADR+1 sta GP.SBUFADR+1 - lda GP.SBUFADR+2 + lda GP.SBUFADR+2 adc #$00 sta GP.SBUFADR+2 - lda #$02 + lda #$02 LB839 rts -BS.GetFileInfo lda #$0A +BS.GetFileInfo lda #$0A sta GP.SSGINFO - lda #MLI.C.GETFILEINFO + lda #MLI.C.GETFILEINFO bne LB858 BS.SetFileInfoNoDate - lda #$00 - sta GP.FIMDATE - sta GP.FIMDATE+1 - sta GP.FICDATE - sta GP.FICDATE+1 + stz GP.FIMDATE + stz GP.FIMDATE+1 + stz GP.FICDATE + stz GP.FICDATE+1 -BS.SetFileInfo lda #$07 +BS.SetFileInfo lda #$07 sta GP.SSGINFO - lda #MLI.C.SETFILEINFO + lda #MLI.C.SETFILEINFO LB858 jmp GP.GOSYSTEM BS.JMP.GP.VSYSO jmp (GP.VSYSO) BS.JMP.GP.VSYSI jmp (GP.VSYSI) *-------------------------------------- +BS.ToUpper cmp #'a' + bcc .9 + + cmp #'z'+1 + bcs .9 + + eor #$20 + +.9 rts +*-------------------------------------- +BS.GetFTableIdx lda GP.MLIRW.REFNUM + lsr + ror + ror + ror + tax + rts +*-------------------------------------- +BS.SetSBUFADRXY0 + stz GP.SBUFADR+2 + +BS.SetSBUFADRXY stx GP.SBUFADR + sty GP.SBUFADR+1 + rts +*-------------------------------------- +BS.ZeroSBUFADR lda #0 + sta GP.SBUFADR + sta GP.SBUFADR+1 + sta GP.SBUFADR+2 + rts +*-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s.c LOAD usr/src/basic.fx/basic.s diff --git a/BASIC.FX/BASIC.S.D.txt b/BASIC.FX/BASIC.S.D.txt index 6d242a48..1fe334bc 100644 --- a/BASIC.FX/BASIC.S.D.txt +++ b/BASIC.FX/BASIC.S.D.txt @@ -1,5 +1,10 @@ NEW AUTO 3,1 +*-------------------------------------- + .LIST ON +BS.FREESPACE .EQ $B861-* + .BS BS.FREESPACE + .LIST OFF *-------------------------------------- BS.SYSIOVECTS .DA BS.IO.OUT .DA BS.IO.IN @@ -7,8 +12,8 @@ BS.SYSIOVECTS .DA BS.IO.OUT .DA BS.IO.IN0 .DA BS.IO.OUT.CAT .DA BS.IO.IN0 -BS.VSYSO.LO .DA #$A7 -BS.VSYSO.HI .DA #$9D +BS.VSYSO.LO .DA #BS.VSYSO +BS.VSYSO.HI .DA /BS.VSYSO BS.ParamLByte .DA #$A0 .DA #$AC .DA #$AF @@ -125,15 +130,15 @@ BS.KW.LEN .DA #$BF .DA #$B5 .DA #$D8 BS.KW.TABLE .AS "BSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND" -BS.KW.JMP .DA BS.JMP.XTRNADDR +BS.KW.JMP .DA BS.JMP.XTRNADDR $00 .DA BS.KW.PR .DA BS.KW.IN .DA BS.KW.CAT .DA BS.KW.01 .DA BS.KW.BYE - .DA BS.KW.02 + .DA BS.KW.RUN .DA BS.KW.BRUN - .DA BS.KW.EXEC + .DA BS.KW.EXEC $10 .DA BS.KW.RESTORE .DA BS.KW.LOCK .DA BS.KW.03 @@ -141,7 +146,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR .DA BS.KW.STORE .DA BS.KW.BLOAD .DA BS.KW.BSAVE - .DA BS.KW.X05 + .DA BS.KW.X05 $20 .DA BS.KW.X06 .DA BS.KW.FLUSH .DA BS.KW.X07 @@ -149,7 +154,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR .DA BS.KW.X08 .DA BS.KW.X09 .DA BS.KW.CREATE - .DA BS.KW.DELETE + .DA BS.KW.DELETE $30 .DA BS.KW.PREFIX .DA BS.KW.RENAME .DA BS.KW.UNLOCK @@ -157,7 +162,7 @@ BS.KW.JMP .DA BS.JMP.XTRNADDR .DA BS.KW.CATALOG .DA BS.KW.LOAD .DA BS.KW.CLOSE - .DA BS.KW.APPEND + .DA BS.KW.APPEND $40 BS.KW.PBITS .DA $8040 .DA $8040 .DA $0495 @@ -583,7 +588,7 @@ XBBB5 .BS 2 XBBB7 .BS 1 XBBB8 .BS 1 BS.IsIntCmdMTR ldy #$02 -LBBBB lda BS.CMDBUF,y +LBBBB lda BS.CMDBUF,y cmp BS.MTR,y bne LBBCF dey diff --git a/BASIC.FX/BASIC.S.GP..txt b/BASIC.FX/BASIC.S.GP..txt index 37fe2087..55f757ba 100644 --- a/BASIC.FX/BASIC.S.GP..txt +++ b/BASIC.FX/BASIC.S.GP..txt @@ -74,7 +74,7 @@ GP.GOSYSTEM sta GP.GOSYSTEM.C stx BS.CALLX and #$1F tax - lda BS.ParamLByte,x + lda BS.ParamLByte,x sta GP.GOSYSTEM.P ldx BS.CALLX jsr MLI @@ -93,7 +93,7 @@ LBE8D cmp BS.MLIERTBL,x ldx #$13 -LBE97 lda BS.BIERRTBL,x +LBE97 lda BS.BIERRTBL,x ldx BS.CALLX sec diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index c3a2a70c..9aa5d1bc 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -7,53 +7,53 @@ LDR.SIG .DA $EEEE LDR.STARTUP.LEN .DA #7 LDR.STARTUP .AS "STARTUP" .BS MLI.MAXPATH-7 -LDR.START1 lda #$9A +LDR.START1 lda #$9A sta Ptr2+1 - lda #$24 + lda #$24 sta Ptr1+1 - lda #$00 + lda #$00 sta Ptr1 sta Ptr2 ldx #$23 tay jsr LDR.MoveXpages ldx #$01 - lda #$BE + lda #$BE sta Ptr2+1 jsr LDR.MoveXpages - lda #$15 + lda #$15 jsr MON.COUT jsr MON.SETNORM jsr MON.INIT jsr MON.MON ldx #$17 - lda #$00 + lda #$00 L2076 sta MLI.MEMTABL,x dex bne L2076 - lda #$CF + lda #$CF sta MLI.MEMTABL - lda #$3F + lda #$3F sta MLI.MEMTABL+19 - lda #$FF + lda #$FF sta MLI.MEMTABL+20 sta MLI.MEMTABL+21 sta MLI.MEMTABL+22 - lda #$C3 + lda #$C3 sta MLI.MEMTABL+23 - lda AS.COLDBOOT + lda AS.COLDBOOT cmp #$4C bne L20B1 - lda MLI.MACHID + lda MLI.MACHID and #$20 beq L20B1 ldx #$03 -L20A6 lda LDR.CSWVECT,x +L20A6 lda LDR.CSWVECT,x sta ZP.CSW,x dex bpl L20A6 @@ -62,7 +62,7 @@ L20A6 lda LDR.CSWVECT,x L20B1 ldx #$27 -L20B3 lda LDR.UNABLE,x +L20B3 lda LDR.UNABLE,x sta $628,x dex bpl L20B3 @@ -73,7 +73,7 @@ L20B3 lda LDR.UNABLE,x L20C2 bmi L20C2 LDR.MoveXpages dey - lda (Ptr1),y + lda (Ptr1),y sta (Ptr2),y tya bne LDR.MoveXpages @@ -88,11 +88,11 @@ L20D3 rts LDR.CSW cmp #$DD bne L20D3 - lda GP.OUTVECT0 + lda GP.OUTVECT0 sta ZP.CSW - lda GP.OUTVECT0+1 + lda GP.OUTVECT0+1 sta ZP.CSW+1 - lda MLI.DEVNUM + lda MLI.DEVNUM sta LDR.ONLINE.P.DEVNUM ldx #$01 asl @@ -109,14 +109,14 @@ L20EE stx GP.VDEFDRV sta GP.VDEFSLT ldx #$C1 ldy #$02 - lda MLI.SLTBYT + lda MLI.SLTBYT lsr L2102 lsr pha bcc L2115 - lda #$00 + lda #$00 sta GP.OUTVECT0,y sta GP.INVECT0,y txa @@ -129,11 +129,11 @@ L2115 iny pla bne L2102 - lda #$96 + lda #$96 sta AS.HIMEM+1 sta AS.STRINGSTART+1 sta GP.RSHIMEM - lda MLI.PFIXPTR + lda MLI.PFIXPTR beq L214E jsr MLI @@ -142,7 +142,7 @@ L2115 iny bne L218B ldx MLI.PATHBUF - lda #$2F + lda #$2F L2136 cmp MLI.PATHBUF,x bne L213E @@ -152,7 +152,7 @@ L2136 cmp MLI.PATHBUF,x L213E dex bne L2136 - lda LDR.PFXLEN + lda LDR.PFXLEN cmp #$03 bcs L216F @@ -165,14 +165,14 @@ L214E jsr MLI .DA LDR.ONLINE.P bne L218B - lda MLI.PATHBUF+1 + lda MLI.PATHBUF+1 and #$0F beq L218B tax inx stx MLI.PATHBUF - lda #$2F + lda #$2F sta MLI.PATHBUF+1 jsr MLI .DA #MLI.C.SETPREFIX @@ -187,15 +187,15 @@ L216F jsr MLI ldx LDR.STARTUP.LEN stx LDR.STARTUP.LEN1 -L217D lda LDR.STARTUP.LEN,x +L217D lda LDR.STARTUP.LEN,x sta IO.LINEBUF,x dex bne L217D - lda #$AD + lda #$AD sta IO.LINEBUF -L218B lda LDR.PFXLEN +L218B lda LDR.PFXLEN cmp #$03 bcs L2198 @@ -203,52 +203,52 @@ L218B lda LDR.PFXLEN .DA #MLI.C.SETPREFIX .DA LDR.GETSETPFX1.P -L2198 lda LDR.STARTUP.LEN1 +L2198 lda LDR.STARTUP.LEN1 bne L21C1 jsr LDR.KSW ldx #$1C -L21A2 lda LDR.PRODOSBASIC,x +L21A2 lda LDR.PRODOSBASIC,x sta $400,x dex bpl L21A2 ldx #$1F -L21AD lda LDR.COPYRIGHT,x +L21AD lda LDR.COPYRIGHT,x sta $480,x dex bpl L21AD - lda #$8D + lda #$8D jsr MON.COUT1 jsr MON.COUT1 jsr MON.COUT1 L21C1 ldx #$02 -L21C3 lda LDR.JMP.GP.ENTRY,x +L21C3 lda LDR.JMP.GP.ENTRY,x sta DOS.WARMSTART,x sta DOS.COLDSTART,x sta MON.USRJMP,x - lda LDR.AMPERSANDJMP,x + lda LDR.AMPERSANDJMP,x sta MON.AMPERSANDJMP,x dex bpl L21C3 - lda LDR.BRKVECT + lda LDR.BRKVECT sta MON.BRKVECT - lda LDR.BRKVECT+1 + lda LDR.BRKVECT+1 sta MON.BRKVECT+1 - lda LDR.POWERUP + lda LDR.POWERUP sta MON.POWERUP - lda LDR.POWERUP+1 + lda LDR.POWERUP+1 sta MON.POWERUP+1 eor #$A5 sta MON.POWERUPBYTE - lda #$A5 + lda #$A5 sta AS.TRCFLG - lda BS.IVERSION + lda BS.IVERSION sta MLI.IVERSION LDR.JMP.GP.ENTRY @@ -260,13 +260,13 @@ LDR.POWERUP .DA GP.ENTRY LDR.AMPERSANDJMP jmp GP.DOSCMD -LDR.KSW lda GP.INVECT0 +LDR.KSW lda GP.INVECT0 sta ZP.KSW - lda GP.INVECT0+1 + lda GP.INVECT0+1 sta ZP.KSW+1 ldx LDR.STARTUP.LEN inx - lda #$8D + lda #$8D rts LDR.CSWVECT .DA LDR.CSW @@ -279,11 +279,9 @@ LDR.GFINFO.P.PATHBUF LDR.GETSETPFX1.P .DA #1 -LDR.GETSETPFX1.P.BUF - .DA LDR.GETSETPFX1.SLASHLEN -LDR.GETSETPFX1.SLASHLEN - .DA #1 + .DA LDR.GETSETPFX1.SLASH LDR.GETSETPFX1.SLASH + .DA #1 .AS "/" LDR.STARTUP.LEN1 .DA #0 @@ -295,13 +293,12 @@ LDR.ONLINE.P.BUF .DA MLI.PATHBUF+1 LDR.GETSETPFX2.P .DA #1 -LDR.GETSETPFX2.P.BUF .DA MLI.PATHBUF LDR.PFXLEN .DA #0 LDR.UNABLE .AS -"*** UNABLE TO EXECUTE BASIC SYSTEM ***" -LDR.PRODOSBASIC .AS -" PRODOS BASIC 1.5 " -LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92" +LDR.PRODOSBASIC .AS -" PRODOS BASIC FX" +LDR.COPYRIGHT .AS -" COPYRIGHT APPLE 1983-92" .BS $2400-* *-------------------------------------- MAN diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 4154900a..80e15a52 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -1,9 +1,36 @@ NEW AUTO 3,1 .LIST OFF - .OP 6502 + .OP 65c02 .OR $2000 - .TF BASIC.FX,TSYS + .TF BASIC.SYSTEM,TSYS +*-------------------------------------- + .MA DEBUG +:1 bit $C000 + bpl :1 + sta $C010 + .EM +*-------------------------------------- +LOWERCASE .EQ 1 +*-------------------------------------- +CMDBITS0.PFIX .EQ $80 ;Prefix needs fetching, pathname optional +CMDBITS0.SLOT .EQ $40 ;No parameters to be processed +CMDBITS0.RRUN .EQ $20 ;Command only valid during program +CMDBITS0.FNOPT .EQ $10 ;Filename is optional +CMDBITS0.CRFLG .EQ $08 ;CREATE allowed +CMDBITS0.T .EQ $04 ;File type +CMDBITS0.FN2 .EQ $02 ;Filename '2' for RENAME +CMDBITS0.FN1 .EQ $01 ;Filename expected + +CMDBITS1.AD .EQ $80 ;Address +CMDBITS1.B .EQ $40 ;Byte +CMDBITS1.E .EQ $20 ;End address +CMDBITS1.L .EQ $10 ;Length +CMDBITS1.LINE .EQ $08 ;'@' line number +CMDBITS1.SD .EQ $04 ;Slot and drive numbers +CMDBITS1.F .EQ $02 ;Field +CMDBITS1.R .EQ $01 ;Record +CMDBITS1.V .EQ $00 ;Volume number ignored *-------------------------------------- Ptr1 .EQ 0 Ptr2 .EQ 2 diff --git a/ProDOS.FX/ProDOS.S.ILDR.txt b/ProDOS.FX/ProDOS.S.ILDR.txt index 1b3bebba..7d84a596 100644 --- a/ProDOS.FX/ProDOS.S.ILDR.txt +++ b/ProDOS.FX/ProDOS.S.ILDR.txt @@ -27,8 +27,9 @@ ILDR.ENUMPM .DO PM jsr ILDR.EnumInit .1 ldx #S.FI.T.BIN - ldy #ILDR.KMSFX - lda /ILDR.KMSFX + ldy #ILDR.KMPFX + lda /ILDR.KMPFX + clc prefix jsr ILDR.EnumNext bcs .4 @@ -65,6 +66,7 @@ ILDR.ENUMPM .DO PM ldx #S.FI.T.SYS ldy #ILDR.SYSTEMSFX lda /ILDR.SYSTEMSFX + sec suffix jsr ILDR.EnumNext bcs .9 @@ -151,11 +153,13 @@ ILDR.EnumInit.RTS rts *-------------------------------------- * X = expected FileType -* Y,A = expected suffix +* Y,A = expected prefix/suffix *-------------------------------------- ILDR.EnumNext stx ILDR.FT sty src sta src+1 + + ror ILDR.bPFXSFX .1 inc ILDR.nFC bne .2 @@ -208,9 +212,12 @@ ILDR.EnumNext stx ILDR.FT cmp ILDR.FT expected file type bne .1 - lda (src) expected suffix len + lda (src) expected prefix/suffix len cmp pbuf - bcs .1 filename LE suffix + bcs .1 filename LE prefix/suffix + + bit ILDR.bPFXSFX + bpl .12 go check prefix tay ldx pbuf @@ -223,8 +230,20 @@ ILDR.EnumNext stx ILDR.FT dex dey bne .11 + bra .15 + +.12 lda (src) expected prefix/suffix len + tay - ldy #$1D MIN_VERSION +.13 lda pbuf,y + eor (src),y + asl + bne .1 + + dey + bne .13 + +.15 ldy #$1D MIN_VERSION lda (idxl),y bpl .10 no lowercase information @@ -335,8 +354,8 @@ ILDR.QUIT .DA #4 PARAM CNT *-------------------------------------- ILDR.ATINIT .DA #6 .AS "ATINIT" -ILDR.KMSFX .DA #3 - .AS ".PM" +ILDR.KMPFX .DA #3 + .AS "PM." ILDR.SYSTEMSFX .DA #7 .AS ".SYSTEM" *-------------------------------------- @@ -348,6 +367,7 @@ ILDR.EL .BS 1 ILDR.nFC .BS 2 ILDR.FT .BS 1 ILDR.EITB .BS 1 +ILDR.bPFXSFX .BS 1 .ED *-------------------------------------- MAN diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index 973c7b62..9c52bba7 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65816 .OR $2000 - .TF PRODOS.FX,TSYS + .TF PRODOS,TSYS *-------------------------------------- READCAT .EQ 0 Boot Block read Catalog at $C00 ENHFILENAME .EQ 1 diff --git a/SBIN/VEDD.S.txt b/SBIN/VEDD.S.txt index 8c6d5862..db4d2f1c 100644 --- a/SBIN/VEDD.S.txt +++ b/SBIN/VEDD.S.txt @@ -299,6 +299,10 @@ CS.QUIT .8 clc rts *-------------------------------------- +* +*-------------------------------------- +CS.DRV +*-------------------------------------- CS.END *-------------------------------------- * Initialized DATA diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 0cdac4a4..0f069095 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -460,19 +460,18 @@ CPU.Init >PUSHWI MSG.CPU >PUSHBI 1 >SYSCALL2 printf - ldy #0 - stz A2osX.CPUSPEED+1 + ldx A2osX.HZ + ldy #0 + php sei - ldx A2osX.HWType - cpx #A2osX.HWType.IIc + lda A2osX.HWType + cmp #A2osX.HWType.IIc beq CPU.Init2c - ldx A2osX.HZ - .1 bit VBL //e : Wait VBL high.... bpl .1 @@ -489,8 +488,6 @@ CPU.Init >PUSHWI MSG.CPU pla (4) pha (3) pla (4) - pha (3) - pla (4) iny cpy #100 @@ -507,21 +504,22 @@ CPU.Init >PUSHWI MSG.CPU bra CPU.InitOK *-------------------------------------- -CPU.Init2c sta CLRIOUDIS +CPU.Init2c lda RDIOUDIS + pha + sta CLRIOUDIS + lda IO.IIC.RDVBLMSK pha Save VBLIRQ enable - sta IO.IIC.ENVBL - lda IO.IIC.CLRVBLIRQ - ldx A2osX.HZ + lda IO.IIC.CLRVBLIRQ .1 bit VBL Wait VBL high.... bpl .1 bit IO.IIC.CLRVBLIRQ clear //c IRQ -.3 lda #40 +.3 lda #60 .4 pha (3) pla (4) @@ -547,9 +545,14 @@ CPU.Init2c sta CLRIOUDIS bne .3 pla Disable VBLIRQ ? - bpl CPU.InitOk + bpl .8 sta IO.IIC.DISVBL + +.8 pla + bpl CPU.InitOk + + sta SETIOUDIS *-------------------------------------- CPU.InitOk plp diff --git a/SYS/KM.APPLETALK.S.txt b/SYS/KM.APPLETALK.S.txt index d269b949..28d24cac 100644 --- a/SYS/KM.APPLETALK.S.txt +++ b/SYS/KM.APPLETALK.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF sys/km/km.appletalk + .TF sys/pm/pm.appletalk *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -177,5 +177,5 @@ MLI.AT.FINaming .DA #0 Synchonous .DA #%10000000 b7=1:Use AFP long Name, b6=0:Update ProDOS dev table *-------------------------------------- MAN -SAVE usr/src/sys/km.appletalk.s +SAVE usr/src/sys/pm.appletalk.s ASM diff --git a/SYS/KM.NSC.S.txt b/SYS/KM.NSC.S.txt index 7d4dd8fc..988f51ea 100644 --- a/SYS/KM.NSC.S.txt +++ b/SYS/KM.NSC.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF sys/km/km.nsc + .TF sys/pm/pm.nsc *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -319,5 +319,5 @@ NSCDRV.SIZE .EQ *-NSCDRV.B.START .FIN *-------------------------------------- MAN -SAVE usr/src/sys/km.nsc.s +SAVE usr/src/sys/pm.nsc.s ASM diff --git a/SYS/KM.RAMWORKS.S.txt b/SYS/KM.RAMWORKS.S.txt index d4bfd9fc..1420d377 100644 --- a/SYS/KM.RAMWORKS.S.txt +++ b/SYS/KM.RAMWORKS.S.txt @@ -3,8 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF sys/km/km.ramworks -* .TF ramworks.pm + .TF sys/pm/pm.ramworks *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -793,5 +792,5 @@ RWDRVX.SIZE .EQ RWDRVX.B.END-RWDRVX.B.START .FIN *-------------------------------------- MAN -SAVE usr/src/sys/km.ramworks.s +SAVE usr/src/sys/pm.ramworks.s ASM diff --git a/SYS/KM.VEDRIVE.S.CF.txt b/SYS/KM.VEDRIVE.S.CF.txt index 682f9850..371d30e6 100644 --- a/SYS/KM.VEDRIVE.S.CF.txt +++ b/SYS/KM.VEDRIVE.S.CF.txt @@ -374,6 +374,6 @@ VEDRIVE.GetCharPtr1 .9 rts *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s.cf -LOAD usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s.cf +LOAD usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VEDRIVE.S.GS.txt b/SYS/KM.VEDRIVE.S.GS.txt index 7e88e826..61a724a2 100644 --- a/SYS/KM.VEDRIVE.S.GS.txt +++ b/SYS/KM.VEDRIVE.S.GS.txt @@ -12,6 +12,6 @@ DRV.GS .EQ * .EP *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s.gs -LOAD usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s.gs +LOAD usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VEDRIVE.S.IP.txt b/SYS/KM.VEDRIVE.S.IP.txt index 8eebba1e..980e5361 100644 --- a/SYS/KM.VEDRIVE.S.IP.txt +++ b/SYS/KM.VEDRIVE.S.IP.txt @@ -524,6 +524,6 @@ VEDRIVE.CheckARPFrame rts *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s.ip -LOAD usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s.ip +LOAD usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VEDRIVE.S.U1.txt b/SYS/KM.VEDRIVE.S.U1.txt index 045911df..d3400516 100644 --- a/SYS/KM.VEDRIVE.S.U1.txt +++ b/SYS/KM.VEDRIVE.S.U1.txt @@ -6,8 +6,7 @@ U1.Init lda CONF.SLOT asl asl asl - sta DRV.U1+2 set DRV.U1.Slotn0 - + sta Slotn0 tax lda /PP.ID @@ -47,7 +46,7 @@ U1.Init lda CONF.SLOT >LDYAI VEDRIVE.NICOK jsr PrintFYA - ldx DRV.U1+2 + ldx Slotn0 lda /PP.RxCTL sta PacketPagePTR+1,x @@ -104,7 +103,7 @@ U1.Init lda CONF.SLOT U1.READ php sei - ldx DRV.U1+2 + ldx Slotn0 lda /PP.RxEvent sta PacketPagePTR+1,x @@ -129,7 +128,7 @@ U1.READ php eor #$ff sta ZPnCnt - ldx DRV.U1+2 + ldx Slotn0 lda ZPBufPtr+1 pha @@ -174,7 +173,7 @@ U1.READWRITE.9 plp U1.WRITE php sei - ldx DRV.U1+2 + ldx Slotn0 lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL sta TxCMD+1,x @@ -201,7 +200,7 @@ U1.WRITE php bit /PP.BusST.Rdy4TxNOW beq U1.READWRITE.9 - ldx DRV.U1+2 + ldx Slotn0 ldy #0 @@ -237,12 +236,10 @@ U1.Name >PSTR "Uthernet V1" *-------------------------------------- DRV.U1 .EQ * .PH $D400 - cld - ldx #$ff SELF MODIFIED .EP *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s.u1 -LOAD usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s.u1 +LOAD usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VEDRIVE.S.U2.txt b/SYS/KM.VEDRIVE.S.U2.txt index af58f865..1090a55c 100644 --- a/SYS/KM.VEDRIVE.S.U2.txt +++ b/SYS/KM.VEDRIVE.S.U2.txt @@ -8,9 +8,9 @@ U2.Init lda CONF.SLOT asl clc adc #$88 - sta DRV.U2+2 set DRV.U2.Slotn0 + sta Slotn0 tax - + lda #W5100.MR.RST sta W5100.MR,x @@ -56,7 +56,7 @@ U2.Init lda CONF.SLOT >LDYAI VEDRIVE.NICOK jsr PrintFYA - ldx DRV.U2+2 + ldx Slotn0 lda #W5100.MR.PB+W5100.MR.AI+W5100.MR.IND sta W5100.MR,x @@ -83,14 +83,13 @@ U2.Init lda CONF.SLOT lda #W5100.AR.Sn.CR.OPEN sta W5100.DR,x - clc rts *-------------------------------------- U2.Read php sei - ldx DRV.U2+2 + ldx Slotn0 >AR.SELECT S0.RX.RSR lda W5100.DR,x get the received size HI @@ -180,7 +179,7 @@ U2.READWRITE.9 plp U2.Write php sei - ldx DRV.U2+2 + ldx Slotn0 lda ZPBufCnt eor #$ff @@ -252,13 +251,181 @@ Offset .BS 2 TotalSize .BS 2 *-------------------------------------- DRV.U2 .EQ * - .PH $D400 - cld - ldx #$ff SELF MODIFIED + .PH DRV.NIC.START + +DRV.U2.START jmp DRV.U2.Write + +DRV.U2.Read php + sei + + ldx DRV.START + + >AR.SELECT S0.RX.RSR + lda W5100.DR,x get the received size HI + nop + nop + ora W5100.DR,x LO + bne .1 + + jmp DRV.U2.9 + +.1 >AR.SELECT S0.RX.RD + lda W5100.DR,x get the received ptr HI + sta Offset+1 + ldy W5100.DR,x get the received ptr LO + sty Offset + + and /RXTX.MASK + ora /RX.BASE + sta W5100.AR,x + tya + sta W5100.AR+1,x + + lda W5100.DR,x get RX.Size HI (Frame size + 2) + sta TotalSize+1 + lda W5100.DR,x get RX.Size LO + sta TotalSize + + sec + sbc #2 MACRAW:strip 2 bytes Header from Size + sta ZPBufCnt + eor #$ff + sta ZPnCnt + + lda TotalSize+1 + sbc #0 + sta ZPBufCnt + eor #$ff + sta ZPnCnt+1 + + lda ZPBufPtr+1 + pha + + ldy #0 + +.2 inc ZPnCnt + bne .3 + + inc ZPnCnt+1 + beq .8 + +.3 lda W5100.DR,x + sta (ZPBufPtr),y + iny + bne .2 + + inc ZPBufPtr+1 + bra .2 + +.8 >AR.SELECT S0.RX.RD + + lda Offset + clc + adc TotalSize + pha save LO + + lda Offset+1 + adc TotalSize+1 + sta W5100.DR,x write HI + pla + sta W5100.DR,x write LO + + >AR.SELECT S0.CR + lda #W5100.AR.Sn.CR.RCVD + sta W5100.DR,x + + pla + sta ZPBufPtr+1 + + plp + clc + rts +*-------------------------------------- +DRV.U2.9 plp + sec + rts +*-------------------------------------- +DRV.U2.Write php + sei + + >STYA ZPBufCnt + + eor #$ff + sta ZPnCnt+1 + + tya + eor #$ff + sta ZPnCnt + + >LDYA DRV.OutBuf + >STYA ZPBufPtr + + ldx DRV.START + + >AR.SELECT S0.TX.FSR + lda W5100.DR,x get send size HI + nop + nop + ldy W5100.DR,x LO + cpy ZPBufCnt + sbc ZPBufCnt+1 + bcc DRV.U2.9 + + >AR.SELECT S0.TX.WR + lda W5100.DR,x Get HI + nop + nop + ldy W5100.DR,x Get LO + and /RXTX.MASK + ora /TX.BASE + sta W5100.AR,x Write HI + sta Offset+1 + tya + sta W5100.AR+1,x Write LO + sta Offset + + ldy #0 + +.2 inc ZPnCnt + bne .3 + + inc ZPnCnt+1 + beq .8 + +.3 lda (ZPBufPtr),y + sta W5100.DR,x + iny + bne .2 + + inc ZPBufPtr+1 + bra .2 + +.8 >AR.SELECT S0.TX.WR + lda Offset + clc + adc ZPBufCnt + pha save LO + lda Offset+1 + adc ZPBufCnt+1 + sta W5100.DR,x write HI + pla + sta W5100.DR,x write LO + + >AR.SELECT S0.CR + lda #W5100.AR.Sn.CR.SEND + sta W5100.DR,x + + plp + clc + rts .EP + + .LIST ON +DRV.U2.SIZE .EQ *-DRV.U2 + .LIST OFF *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s.u2 -LOAD usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s.u2 +LOAD usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VEDRIVE.S.txt b/SYS/KM.VEDRIVE.S.txt index 90a9cc5b..850fc55c 100644 --- a/SYS/KM.VEDRIVE.S.txt +++ b/SYS/KM.VEDRIVE.S.txt @@ -3,8 +3,8 @@ NEW .LIST OFF .OP 65C02 .OR $2000 -* .TF sys/km.vedrive - .TF vedrive.pm +* .TF sys/pm/pm.vedrive + .TF sys/pm.vedrive *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -31,11 +31,12 @@ ZPCheckSum .EQ 14 timerS .EQ 16 timerC .EQ 17 bRemoteMac .EQ 18 +Slotn0 .EQ 19 *-------------------------------------- ADT.CMD.VSD .EQ $C5 "E": Virtual Drive Command Envelope ADT.CMD.PING .EQ $D9 "Y": PING DRV.EntryPoint .EQ $BF41 -DRV.ADDR .EQ $D400 +DRV.NIC.START .EQ $D500 *-------------------------------------- CONF.FBUF .EQ $4000 CONF.LBUF .EQ $4400 @@ -67,7 +68,6 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0 rts .3 jsr VEDRIVE.MACInit - lda CONF.ADDRESS bne .4 @@ -111,7 +111,7 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0 .7 >LDYAI VEDRIVE.SRVOK jsr PrintFYA - jsr VEDRIVE.SetSlot +* jsr VEDRIVE.SetSlot bcc .8 >LDYAI VEDRIVE.NOSLOT @@ -135,22 +135,20 @@ VEDRIVE.Init >LDYAI VEDRIVE.MSG0 rts *-------------------------------------- VEDRIVE.CheckDRV - bit RRAMWRAMBNK2 - bit RRAMWRAMBNK2 - - clc - lda $D400 - eor #$D8 CLD - bne .8 - - lda $D401 - eor #$A2 LDX #imm - bne .8 + ldx #COPYRIGHT.LEN sec -.8 bit RROMBNK1 - rts +.1 lda DRV.EntryPoint-1,x + eor COPYRIGHT-1,x + bne .9 + + dex + bne .1 + + clc + +.9 rts *-------------------------------------- VEDRIVE.Ping lda CONF.PORT sta ADT.REQ.UDP.DST @@ -287,28 +285,93 @@ VEDRIVE.SetSlot ldx #2 Starts at Slot1 *-------------------------------------- VEDRIVE.Install ldx #PATCH.SIZE -.1 lda PATCH-1,x - sta DRV.EntryPoint-1,x - dex - bne .1 +*.1 lda PATCH-1,x +* sta DRV.EntryPoint-1,x +* dex +* bne .1 bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 + ldy #DRV.SIZE-1 +.2 lda DRV,y + sta DRV.START,y + dey + bne .2 + lda Slotn0 + sta DRV.START + ldy #DRV.IP.SIZE-1 + +.3 lda DRV.IP,y + sta DRV.IP.START,y + dey + bne .3 + ldx CONF.NIC + lda .10,x + sta ZPPtr1 + lda .10+1,x + sta ZPPtr1+1 + + lda .20,x + eor #$ff + sta ZPnCnt + lda .20+1,x + eor #$ff + sta ZPnCnt+1 + + lda #DRV.NIC.START + sta ZPPtr2 + lda /DRV.NIC.START + sta ZPPtr2+1 + + ldy #0 + +.4 inc ZPnCnt + bne .5 + + inc ZPnCnt+1 + beq .6 + +.5 lda (ZPPtr1),y + sta (ZPPtr2),y + iny + bne .4 + + inc ZPPtr1+1 + inc ZPPtr2+1 + bra .4 + +.6 ldy #S.UDP + +.7 lda ADT.REQ-1,y + sta DRV.OutBuf-1,y + dey + bne .7 + bit RROMBNK1 clc rts +*-------------------------------------- +.10 .DA DRV.U2 + .DA DRV.U2 + .DA DRV.U2 +*-------------------------------------- +.20 .DA DRV.U2.SIZE + .DA DRV.U2.SIZE + .DA DRV.U2.SIZE *-------------------------------------- .INB usr/src/shared/x.printf.s *-------------------------------------- * ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes) *-------------------------------------- +COPYRIGHT .AS "(C)APPLE " +COPYRIGHT.LEN .EQ *-COPYRIGHT PATCH .PH DRV.EntryPoint bit RRAMWRAMBNK2 jsr $D002 @@ -338,13 +401,18 @@ DRV.UNITNUM .EQ $43 DRV.BUFF .EQ $44 DRV.BLKNUM .EQ $46 *-------------------------------------- -DRV.FrmBuf .EQ $DA00 Frame Buffer = 1536 bytes -DRV.FrmBuf.Env .EQ DRV.FrmBuf+S.UDP -DRV.FrmBuf.Cmd .EQ DRV.FrmBuf+S.UDP+1 -DRV.FrmBuf.BlkL .EQ DRV.FrmBuf+S.UDP+2 -DRV.FrmBuf.BlkH .EQ DRV.FrmBuf+S.UDP+3 -DRV.FrmBuf.Sum .EQ DRV.FrmBuf+S.UDP+4 -DRV.FrmBuf.Data .EQ DRV.FrmBuf+S.UDP+5 +DRV.Write .EQ DRV.NIC.START +DRV.Read .EQ DRV.NIC.START+3 +*-------------------------------------- +DRV.OutBuf .EQ $D800-S.UDP-6 Frame Buffer = S.UDP+5+512+1 bytes +DRV.OutBuf.Env .EQ DRV.OutBuf+S.UDP +DRV.OutBuf.Cmd .EQ DRV.OutBuf+S.UDP+1 +DRV.OutBuf.BlkL .EQ DRV.OutBuf+S.UDP+2 +DRV.OutBuf.BlkH .EQ DRV.OutBuf+S.UDP+3 +DRV.OutBuf.Sum .EQ DRV.OutBuf+S.UDP+4 +DRV.OutBuf.Data .EQ DRV.OutBuf+S.UDP+5 +*-------------------------------------- +DRV.InBuf .EQ $DA00 Frame Buffer = 1536 bytes *-------------------------------------- DRV .PH $D001 Main LC Bnk 2 $D001->$DFFF @@ -363,7 +431,7 @@ DRV.START .BS 1 SELF MODIFIED slot 0n .1 cmp #3 beq .8 Format .... -* bcs DRV.DO.CMD.ERR more....IO error + bcs DRV.DO.CMD.ERR more....IO error ora #2 W=2,R=3 ldy DRV.UNITNUM @@ -371,16 +439,16 @@ DRV.START .BS 1 SELF MODIFIED slot 0n adc #2 CC from bcs -.2 sta DRV.FrmBuf.Cmd store cmd +.2 sta DRV.OutBuf.Cmd store cmd eor #ADT.CMD.VSD eor DRV.BLKNUM eor DRV.BLKNUM+1 - sta DRV.FrmBuf.Sum Compute & store CheckSum + sta DRV.OutBuf.Sum Compute & store CheckSum lda DRV.BLKNUM - sta DRV.FrmBuf.BlkL + sta DRV.OutBuf.BlkL lda DRV.BLKNUM+1 - sta DRV.FrmBuf.BlkH + sta DRV.OutBuf.BlkH *-------------------------------------- lda DRV.COMMAND dec 1-1=0 if read @@ -388,48 +456,12 @@ DRV.START .BS 1 SELF MODIFIED slot 0n *-------------------------------------- * Read block *-------------------------------------- -DRV.DO.CMD.R ldy #3 Read Back and check 4 bytes +DRV.DO.CMD.R ldy #S.UDP+5 + lda /S.UDP+5 + jsr DRV.Write + -.1 eor DRV.FrmBuf.BlkH,y - bne DRV.DO.CMD.ERR - dey - bpl .1 - - ldy #4 Read 4 bytes DATE/TIME + 1 Byte Checksum - -.2 eor DRV.FrmBuf.Sum - sta DRV.FrmBuf.Sum - dey - bpl .2 - - tay Last EOR was with Checksum, must be 0 - bne DRV.DO.CMD.ERR - -* Y=0 from TAY - - stz DRV.FrmBuf.Sum - sec - -.3 jsr $100 - eor DRV.FrmBuf.Sum - sta DRV.FrmBuf.Sum - iny - bne .3 - bcc .4 - inc DRV.BUFF+1 - clc - bcc .3 - -.4 dec DRV.BUFF+1 - - eor DRV.FrmBuf.Sum - bne DRV.DO.CMD.ERR - rts A=0,CC from bcc .4 -*-------------------------------------- -DRV.DO.CMD.ERR1 - pla - pla DRV.DO.CMD.ERR lda #MLI.E.IO sec @@ -438,35 +470,9 @@ DRV.DO.CMD.ERR * Write Block *-------------------------------------- DRV.DO.CMD.W lda #$B1 lda (),y - - sta $103 - ldy #0 - - stz DRV.FrmBuf.Sum - + + lda #MLI.E.IO sec - -.1 - eor DRV.FrmBuf.Sum - sta DRV.FrmBuf.Sum - iny - bne .1 - bcc .2 - inc DRV.BUFF+1 - clc - bcc .1 -.2 dec DRV.BUFF+1 -* A = DRV.FrmBuf.Sum - - - -* read back CMD - ldy #4 Read 5 bytes (echo from server) -.3 - eor DRV.FrmBuf.Sum,y Check 5 bytes (including block Sum) - bne DRV.DO.CMD.ERR - dey - bpl .3 rts *-------------------------------------- DRV.RWBYTE bit RRAMWRAMBNK1 @@ -480,20 +486,174 @@ DRV.RWBYTE bit RRAMWRAMBNK1 DRV.SIZE .EQ *-DRV .LIST OFF *-------------------------------------- +DRV.IP .PH $D400 + +DRV.IP.START ldy #S.IP.TOTAL.LENGTH+1 + lda ZPBufCnt + sec + sbc #S.ETH.EII + sta (ZPBufPtr),y + dey + lda ZPBufCnt+1 + sbc /S.ETH.EII + sta (ZPBufPtr),y + lda #0 + ldy #S.IP.HDR.CHECKSUM + sta (ZPBufPtr),y + iny + sta (ZPBufPtr),y + + stz ZPCheckSum RESET IP CHECKSUM + stz ZPCheckSum+1 + + clc + + ldy #S.IP.V.IHL + + ldx #10 10 words for IP Header + +.1 lda (ZPBufPtr),y + adc ZPCheckSum + sta ZPCheckSum + iny + lda (ZPBufPtr),y + adc ZPCheckSum+1 + sta ZPCheckSum+1 + iny + dex + bne .1 + + ldy #S.IP.HDR.CHECKSUM + lda ZPCheckSum + adc #0 + eor #$FF + sta (ZPBufPtr),y + iny + lda ZPCheckSum+1 + adc #0 + eor #$FF + sta (ZPBufPtr),y + rts +*-------------------------------------- + clc + + ldy #S.UDP.LENGTH+1 + lda (ZPBufPtr),y + adc #S.IP.PROTOCOL.UDP + sta ZPCheckSum+1 + + dey + lda (ZPBufPtr),y + adc /S.IP.PROTOCOL.UDP (all zero) + sta ZPCheckSum + + ldy #S.IP.SRC + ldx #4 4 words for SRC & DST IP + +.2 lda (ZPBufPtr),y + adc ZPCheckSum + sta ZPCheckSum + iny + lda (ZPBufPtr),y + adc ZPCheckSum+1 + sta ZPCheckSum+1 + iny + dex + bne .2 + + ldy #S.UDP.LENGTH+1 + lda (ZPBufPtr),y + eor #$ff + tax + + dey + lda (ZPBufPtr),y + eor #$ff + ldy #S.UDP.CHECKSUM + + phy Save Offset + pha Save !ByteCount.HI + + lda #0 Reset Checksum + sta (ZPBufPtr),y + iny + sta (ZPBufPtr),y + + >LDYA ZPBufPtr + >STYA ZPPtr1 + + ldy #S.IP + +.3 inx + bne .4 + + pla + inc + beq .8 + + pha +.4 lda (ZPPtr1),y + adc ZPCheckSum + sta ZPCheckSum + + iny + bne .5 + + inc ZPPtr1+1 +.5 inx + bne .6 + + pla + inc + beq .7 + + pha + +.6 lda (ZPPtr1),y + + adc ZPCheckSum+1 + sta ZPCheckSum+1 + iny + bne .3 + + inc ZPPtr1+1 + bra .3 + +.7 adc ZPCheckSum+1 A=0 from beq .7 + sta ZPCheckSum+1 + +.8 ply + lda ZPCheckSum + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPBufPtr),y + iny + lda ZPCheckSum+1 + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPBufPtr),y + rts +*-------------------------------------- + .EP +*-------------------------------------- + .LIST ON +DRV.IP.SIZE .EQ *-DRV.IP + .LIST OFF +*-------------------------------------- * CONTROL SECTION : *-------------------------------------- .DO DRV.SIZE>255 -* ERROR:DRV.SIZE too big + ERROR:DRV.SIZE too big .FIN *-------------------------------------- *-------------------------------------- - .INB usr/src/sys/km.vedrive.s.cf - .INB usr/src/sys/km.vedrive.s.ip - .INB usr/src/sys/km.vedrive.s.u1 - .INB usr/src/sys/km.vedrive.s.u2 - .INB usr/src/sys/km.vedrive.s.gs + .INB usr/src/sys/pm.vedrive.s.cf + .INB usr/src/sys/pm.vedrive.s.ip + .INB usr/src/sys/pm.vedrive.s.u1 + .INB usr/src/sys/pm.vedrive.s.u2 + .INB usr/src/sys/pm.vedrive.s.gs *-------------------------------------- VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n" VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n" @@ -693,5 +853,5 @@ ADT.REQ.END .EQ * ADT.REQ.LEN .EQ *-ADT.REQ *-------------------------------------- MAN -SAVE usr/src/sys/km.vedrive.s +SAVE usr/src/sys/pm.vedrive.s ASM diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index 9254d0b0..80133c3e 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF sys/km/km.vsdrive + .TF sys/pm/pm.vsdrive *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -618,5 +618,5 @@ DRV.SIZE .EQ *-DRV .FIN *-------------------------------------- MAN -SAVE usr/src/sys/km.vsdrive.s +SAVE usr/src/sys/pm.vsdrive.s ASM