From 3b1a5ae4dab509da545730eeb263c99174fccc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 6 Jul 2018 16:42:20 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/KERNEL.I.txt | 5 + SYS/KERNEL.S.DRV.txt | 360 +++++++++++++++------------------------ 4 files changed, 146 insertions(+), 219 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index cfd1a010f6de5437ef3f40310bca8115a3b9f298..3ffe52bbd52e15e97ca5316aa823fd08c2694cc1 100644 GIT binary patch delta 2903 zcmaJ?ZBSI#89wJ;mh9pOA9DAuYtaQZh>KkI6BiV8Sr%B_FLoC~t%(Z)hD0w)z-ZL6 ztANC?M%l_q8%QQ9Lv+J%m;r1s-$_! z^T8*QHE+ir4oLb_RA1%BipL67(W2=7m~o(@e@iqyQh!+q(z5v#%>H%u5$*`LeEPqC(VJM$D@Nv(TEhD>TY_2NW~z>G6Dv-y=7yDARDomh zia=!Nyt0Id$~gD`5$)!N+qh^e5k*~zr>dTErIOe24VFNLphV{BA1 zDZTJ3Zs6`WI=)`vRC!m%B-0;r=c;aGJX9?%s*0}!k|zPcT=+gW`~`=d ze$M@L`T>U*qFf-#&p1rRtN_chkcAMYr1Z^^q#3zF{`4%=anbm35jYoA5_k+z&BZZFjJ=5 zC=34V4*$VjUiA*IV))k{DFQ#g!_T@ClJj@?;IjL7_<%~yGV85kSCj7HJ~afRagq%>Tqm|k4Gu(*i(s0hSz&4Fl244#!j z6b4Y^_Ig}?8q#b^;^tDo89|N3I!ef8)k)Bz1KB2&+Y490Qe^6d>zGYoyp>`4EZ$n& zfLa%Qh%6SMGy@G53$|vz&6VsbP1<4wS!KZA?DzP+G+LDzNXu!K+-6*c*X<11#GdZM zAx~GQ*aM_ns4=SoV3SbeYpfzcv>>aJB9`jvJ_6}M)>Z;J{O%fp7(wPXinwb>l691V zRTippHah&|Nizekiah%CU!Y#L>_WfnU^c@5df35ig)PXuhgrL}6;Cy%!!CF%{yI8}w1(2M{!(L+ z4(#5Idhi4tf00Rxi`@*Kv3gbHTja-*#C z!~HDOW}XQC&ky~Dm*vJUM%i6(bQ~+k*p#?9&dMOOSB?(9&z>Cp2&0!+{6Y8#`@@4( z9KXh*(TbW_8~wT8iQgl9rPcK|7__;vy8o6esyoysA2hhY8;NE&geW ze}j)dWcbwIq;bq=Ky~{;=bmnXFosasO?HFwEH!41EPX}%q+eRFF@lcXWQ*Vr(50Jf z2|S19lFKNP-ePkhLYiBwYW-VFn);=e9lypueEh-kG?IScYJY?d++tTRd;6(nFu@Kc bQU()}!9?m{;+esObTA+yi|)wHFR}&)(wKb4jNA9c7EWP_*{vK%V*2=kBMr<*BNKJRnK^EJflqM;3dbI= z$?oJz8Vxqi)ZM!iW1DXb^e_h*gxfFvPo2BWaAz2-c-zH{e9lBa6D5DkjQoZXOuu4$ zG#;apvnioT<_hl5GuC8sP6}=uosgCLaNT=R`fSRYI$4xDn%~#4#F=eTMmNUkPzOEIPUCSa%~dMLB?9K=Y)b4K69nHiO2K!nl1nCmn|23s z{G1Th{IlGNc6wOx7<&&{lW7yNvc13wb`8)hyI2Dll zWmsGGaQ-x%$R1lZ~K z^2w~ITD5R$nW{pyMztBwqI6uvy4!?vFzCF!Eu8ZOC+FJS(svbV`ARtcTQM~Pv{oy>kFS6l2lh)7Pn+mdl z+^LgnAa5*n>g!17ea_j>#-q{vko3}VE+oO-u;SnDF%_p_uO`05qH!3)a?=}+&70mb zPOaL|TFdpbZ`7UHKA!S)&wlrDZogZQ<^<^+cjTMekINw4v5;?2#j(FC_g#V=$X{OFnrN!t`B0Bp$Z^<3lswOZBWZsS?YO{lXqHL&4&b= zRs+~~W^w0STnE^bvv{jx4!;yg-^F6fqi9+Ov*(?{^XxJ7l@2b0KSQVf2DeNoC>qAf zAdkXY=s}i}1&hxwZiffqqr&rJ z1(X7X^C{0{1r?UY)>Dg6cpY9@sjz&qnTn=R&O(&hMm5S;lk8U%q3vzda<&*)>P_aB zqe52da&w?~y}G;_usk~1MyZq~pxR&@6>XI!!Di5cObyD}3p1b=-D;y&^yq-0u?A;a zQ$Hf|3IlSGTJ|KIR7}F~NHu2TYSUW`xHdTq9G$6f_zy^~^M06m1jfhxX_G%F+18L6@ z#9k8?TRGSlTKgE(7sjiVI>B z5d((AAWQL~)RVd^?D$Y@ojqQBBDS{OK;|HLb^}s$QOjT>D#nA{Nl?8DHFizCn)$uSV zww+2r;U;_u_E2FuwvTE>I}?<8WglTNd$Fp;UbVMNES6eRt-(*$K4Q#$8GW3<;l4ta z1^wt&g35>c(fk>zNd6;&<_(~=GgPkp09ls&7;T%Oc=;e%7W&Z18EO?f1aJX)s~7hq zH*E!WqplGe_o@*@wS$?$e8ofjwAX01)@z-e8%0nXACbCH#s!Ujm9TxEx z(Z^vv_7}>H!h3PvIy#J>6nYH`m(rd|4_-~~rlAHIyflXB#jFv-6twIY<(}!Yb=qwaIjnO{{T9@gR)xtZW(+F;VLfp;?$0*>k!zAj8*U;!S z`q``zvP=ujzKbrg-WpJJ1l_$xuZBla#&x;`9z#Z9IF5R+(>XAVUcXLr`H|T@b+dO0 z-A6ZxYFqLo(qJC_*Qb38YC#n3;qG3pgZ0i3~}Y3^dT& z4hJD1wbl}^hw-+eRw7ljRj61W6npEvEn*d|)@oa8TdjRj`>t)RU3;%Huf*@m_w6%l zuf6tKYya!9cMcqI95~?k+A@9m+tuayXIJVkWeE8*g04}g6J}bnZxVE8pUOU-Yc#<- z3*hDImfR}%xordI^%tMKGZGw`QmR@&|5=EF{bq;;NA@XIUb(Z^0&=q&9Pul)6MVj|ao>%|(%9DBwZ6Ycf#T0YbTaH$+C2j@(&Rp;$Jyg;a5PSV zcq>Fl0{cMx0vo45Iu6lo6G6owH-ml#g%{tZzWYct5X)E6Oo!(>QV+bj2l#@lYjTy39VkjExAXt;LBuzj2qpH5=u{j+@h*adol~11^2}_bvni; z2SGdy(NK62^j|^FqWdA$L(_7bS6Oxl#0Q}M;=)B>J)^#HCEe2ZApNvF#QD9u{Go8) zcqn{iI5+~8UxnyuuW!i7y&a#E*N)TKf%q^)!&80`A3;keLr{7a)XyI`6gQkhx_=7v zUq@9+9wiSleG)QUV_`JA^gLf+&(uH09P|x-J{ygX&-3{cn$KI=(LAXg%~SK(F2va! zkarQ}R+XJg^~Ln++GbK_JU zh*wCC{Y4f&ayy+E6DNCpPG7$lDqfn|z0;&FzE{c?zRy2<@0D_dm-*+!y^^Radxd|m zIw2W^AF$752Rqky`oQ`sdLvn4Z=ZWT6#j4y)z#hWb%XUaP;WgUnQgDnncnE>^tr+Q zBfiJ;C!~zXk4fdapTteqbUnPfyM4&n$w9|WXlFKn^$l_X#}PM59&&>Irwn3mCS))t zAK_u=lF`Rt`dMNbo0A7Y|8rc^Rq%_%B5soLtptJ8wZ5I8aQmi*gTo;Hl0YH8Ll&(4 z)%o|Yr0Wk!31z3%4X31KkzbP&s+t=4AJ~3_$J*!hd6Wf=SHsByF#Hx75tK{8_B(Bf zSLRmBKH0U-=>h3#Ocdn&o<6$<+#V3$)d2Jd#GZG^tBC~hk4W#qIM4eNHvy-Pb71{> zF0lR*0~QBT(O;7RgsbBC`5Qkuj-S8tPmZ7W_$T5gtLPu37C#B4A|c80?^LQM;2#0&2dTu3q0w*v>>zN2vOM_cpx$|ZL=?#_#w>1q z`{?A(&dy`p0fxB_kWw5_lAY`TS{UxMLhY2=`$Brnntid-(jM5$dV{?E ztRfFj_bTHdtQ`fP;^L-J0hd1%!k**5AUd&Q0`#9oA@ME#RN z5EX4asEs#j;~{N4i~@rbkUx#dW;`_A?)7>vrZ++5(GN4Ap;_t2T#X$P=x;&|q+<|W zbY6HUuFQfpItr?(GG*+g-5ds>^kzFvlP3TgeXt!MuB%wqKR}aHODzw_Bl$ukXDhcR@x^ad^MA9FGN{bsH+@@ zM<;nk_78_g_XgI0WD}y>#sZ4G0*rQA%hI2-udmw;b;W{Od0AJJRYEgeZPVv6rq5;0 zo)hD(X)qQV}a0NTtS7(niWYgES1$u!)B2X!tlA z%sTsKmXrcpD70)_DYAk)F*Zhr1F^i6e?8_N?fBb*J3;be^Ey1q?5*3zKs&{efm7N# zj&xtrT}G3R)+Uh3HO3|=s!&&Lk!(^WQZV%`0s8`V>lUe~ ztt!rvQ%#?g;I1JRj0-V$v6J)oceRHQ9FSLoltJZMN_$|hRo^|6VOuTM(E@Wl*Ez<1 zlozswxrMATrI3{^QkAWeHHH_N^hm|a;#8uBm!?!|3@^=u2?q@=G%TTEDGkfmU@ovP zCkYf9ZT^v2(Qpitp;U?yfEO|r0c8}LU2W)oPj8zWaw>$Ve{4jls$Sj!;sSwRAWT(> z^rJOzW!I>$-6xe6EkpqUY{qJ|n60IlEvr-WPvb@ns(e~1+|)?nl(GFW%)GD4?iCJ$V{a-jaFjIZK6T0E*< zZ^P9_mwfB?>PD*;J}Xk7 z7!UrHbAtaP@!+prl?eVAf~mTs#(w>^jBj5`U_?HI5mSMFHP*PYH7WTZRWw*X`l0Ed zEuIcsWRJBy)gCPyxCz1P>N6S5QV0H^)@H4`|4c^7rgbzM@0oluK0<)hsgbd-`51jt z*mu!Zrfx0lc+>Sm4iIFSSOXaGfA8;TK;P z?W~r&di#B-lOQiuw}t!)J|~D>6fWlOc!^_7M<;gRJ4%m$y$rsGtk+6ejZy+m;VSqK(=dl2S`4gW;?b*?tp+-Q(hXITR_^Vt#g2BFtu%P z;caIqzAW!L76jucqpI4`1p1F7v`w3_-(Tld9InG{oj%3ch7T@Vke;_ykeA1pF;$zc zXVFH8;%-<6CO;!lCE}z3DA}ey{isyz98OiE!`r(j42FP!j|dY%?C`duSAyuBPiVom zLrXlPoTwcW{X}8L-dh)zf5!o|OthiUx>yyM;Iu$?R?v7(~Y|q|@+D_mTm7@g;_oF_6 z-SMrx!+3oQg6UI~8sZuaV6&@j@oBBOtNe`GaY?FJ8KLY}RqaIQADHL-T!lkm0$=}_ zcMj5ih{lo|*%8=l#6wzgI~;eMVVa#kH~k11WI3w7c}X%yZlbh|9V4p@*!_e47=pn1 zS++?c?=?7B|8BgQxN9jFB1Qb1z+VfcTW~K{ln}wU5)<~9F_GdIG*ge$=0!6xZ>r&E zrTm=R*k-Y=XZ9XRXJe@H2EuLr$pF5|-Odb}0-Gw#Tv=-|<)5G(CaBPyhpeVvcF7@ zuWDHV=2Nr;oy3bf^HR<%0iB5f^L@mCCdV1FzmgE3zn{7E0bWYfXD&hXqx9PO7hXggj_H8}p#-3WmBz#{$mqAQYVwX0CQvBRP*IK`8rt zk|K{WMZUq@t=${q`WhdftCIPN`BoX9oXaIXr73c$jUNb0tP!imCTSM#qGW^p|3-RZ9mLUS?LX{4T!2 z^1L64e!zTR7hlatK9Np=#2 zo$a?Q+^qS(qaAs)f$b{ATGQ{7sO&lUT}|L0NMOew;{tgzaD>0*8UI9YO!2q8(m$)w zQ&Pzdf6?f%dra)X?yoU^$oU(6QZw*(P3`yMySUaJW9>yVnE#QW4QMp+pTxiUUxK=| zB<(ug`-1vpNm||P{Zh7C;LozD@0X<67yg^LNY}e>? z{DPd+6H942p863h`g9%s7e=pBS4E}r)fq^qE2};e>DeM%ishntDVVZ!u_C-}G_3fy zO+t=A$5Su=Z;vfor!GD%SvTa&+b$t^GX*nU*n}(-Ti8&*(l1IwTm^Yn$Ayb63c|+ N9hv7dFH7&8{SPSaFuni) delta 7843 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 s>@1jz7SHvWjHPX, VS:Use Aux ZP *-------------------------------------- * $42-$47 ProDOS Block Device Drivers Main *-------------------------------------- +DRV.BLK.Cmd .EQ $42 +DRV.BLK.UnitNum .EQ $43 +DRV.BLK.Buf .EQ $44 +DRV.BLK.BlkNum .EQ $47 +*-------------------------------------- * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- SIGNFLG .EQ $16 COS,SIN,TAN diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index c5752c11..8d8074ff 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -5,18 +5,14 @@ AUTO 4,1 * DRV.DiskII * X = IOCTL * Y,A = PTR to S.IOCTL -* pDev -> Dev Header AUX!!! -* $42 Command Number -* $43 Unit Number -* $44-$45 Buffer Pointer -* $46-$47 Block Number *-------------------------------------- DRV.DiskII cld + >STYA pIOCTL jmp (.1,x) -.1 .DA DRV.DiskII.S status - .DA DRV.DiskII.RW Read - .DA DRV.DiskII.RW Write - .DA A2osX.BadCall Format +.1 .DA DRV.DiskII.STATUS + .DA DRV.BLK READ + .DA DRV.BLK WRITE + .DA A2osX.BadCall FORMAT .DA A2osX.BadCall .DA A2osX.BadCall .DA A2osX.BadCall @@ -25,37 +21,12 @@ DRV.DiskII cld .DA A2osX.BadCall .DA A2osX.BadCall IRQ *-------------------------------------- -DRV.DiskII.S >LDYAI DRV.DiskII.Stat - clc - rts +DRV.DiskII.STATUS + >LDYAI DRV.DiskII.DSTAT + jmp DRV.STATUS.YA *-------------------------------------- -DRV.DiskII.RW >STYA A2osX.RW.SrcDst+1 - jsr DRV.BlkDevice.GetCmdAndDevAX -*-------------------------------------- - ldy #$D0 - .HS 2C bit abs -A2osX.RamDrv.RW1 - ldy #$FF - - sty A2osX.RW.Drv+2 - - jsr GO.ProDOS - stx $42 - sta $43 - - ldy #3 - -A2osX.RW.SrcDst lda $ffff,y Self Modified - sta $44,y - dey - bpl A2osX.RW.SrcDst - -A2osX.RW.Drv jsr $0000 - cli - jsr GO.A2osX - rts -*-------------------------------------- -DRV.DiskII.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ +DRV.DiskII.DSTAT + .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ .DA 280 .DA #0 >PSTR "Disk II 5.25" @@ -67,18 +38,14 @@ DRV.DiskII.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ * DRV.RamDrive * X = IOCTL * Y,A = PTR to S.IOCTL -* pDev -> Dev Header AUX!!! -* $42 Command Number -* $43 Unit Number -* $44-$45 Buffer Pointer -* $46-$47 Block Number *-------------------------------------- DRV.RamDrive cld + >STYA pIOCTL jmp (.1,x) -.1 .DA DRV.RamDrive.S status - .DA DRV.RamDrive.RW Read - .DA DRV.RamDrive.RW Write - .DA A2osX.BadCall Format +.1 .DA DRV.RamDrive.STATUS + .DA DRV.BLK READ + .DA DRV.BLK WRITE + .DA DRV.BLK FORMAT .DA A2osX.BadCall .DA A2osX.BadCall .DA A2osX.BadCall @@ -87,25 +54,18 @@ DRV.RamDrive cld .DA A2osX.BadCall .DA A2osX.BadCall IRQ *-------------------------------------- -DRV.RamDrive.S jsr DRV.BlkDevice.GetCmdAndDevAX - jsr GO.ProDOS - stx $42 - sta $43 - jsr $FF00 - jsr GO.A2osX +DRV.RamDrive.STATUS + jsr DRV.Blk bcs .9 - stx DRV.RamDrive.Stat+S.DSTAT.SIZE - sty DRV.RamDrive.Stat+S.DSTAT.SIZE+1 + stx DRV.RamDrive.DSTAT+S.DSTAT.SIZE + sty DRV.RamDrive.DSTAT+S.DSTAT.SIZE+1 - >LDYAI DRV.RamDrive.Stat - clc + >LDYAI DRV.RamDrive.DSTAT + jmp DRV.STATUS.YA + .9 rts *-------------------------------------- -DRV.RamDrive.RW >STYA A2osX.RW.SrcDst+1 - jsr DRV.BlkDevice.GetCmdAndDevAX - bra A2osX.RamDrv.RW1 -*-------------------------------------- -DRV.RamDrive.Stat +DRV.RamDrive.DSTAT .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ .BS 3 >PSTR "ProDOS /RAM Disk" @@ -116,18 +76,14 @@ DRV.RamDrive.Stat * DRV.BlkDevice * X = IOCTL * Y,A = PTR to S.IOCTL -* pDev -> Dev Header -* $42 Command Number -* $43 Unit Number -* $44-$45 Buffer Pointer -* $46-$47 Block Number *-------------------------------------- DRV.BlkDevice cld + >STYA pIOCTL jmp (.1,x) -.1 .DA DRV.BlkDevice.S status - .DA DRV.BlkDevice.RW - .DA DRV.BlkDevice.RW - .DA DRV.BlkDevice.F +.1 .DA DRV.BlkDevice.STATUS + .DA DRV.BLK READ + .DA DRV.BLK WRITE + .DA DRV.BLK FORMAT .DA A2osX.BadCall .DA A2osX.BadCall .DA A2osX.BadCall @@ -136,54 +92,30 @@ DRV.BlkDevice cld .DA A2osX.BadCall .DA A2osX.BadCall IRQ *-------------------------------------- -DRV.BlkDevice.S jsr DRV.BlkDevice.GetCmdAndDev - - jsr DRV.BlkDevice.Go +DRV.BlkDevice.STATUS + jsr DRV.Blk bcs .9 - stx DRV.BlkDevice.Stat+S.DSTAT.SIZE - sty DRV.BlkDevice.Stat+S.DSTAT.SIZE+1 + stx DRV.BlkDevice.DSTAT+S.DSTAT.SIZE + sty DRV.BlkDevice.DSTAT+S.DSTAT.SIZE+1 - >LDYAI DRV.BlkDevice.Stat - clc + >LDYAI DRV.BlkDevice.DSTAT + jmp DRV.STATUS.YA .9 rts *-------------------------------------- -DRV.BlkDevice.RW - >STYA DRV.BlkDevice.GetParam.1+1 - - jsrDRV.BlkDevice.GetCmdAndDev - - jsr DRV.BlkDevice.GetParam - bra DRV.BlkDevice.Go +DRV.BlkDevice.DSTAT + .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ + .BS 3 + >PSTR "ProDOS Block Dev" + .DA #S.DSTAT.T.PRODOS + .DA #0 + .DA KVER *-------------------------------------- -DRV.BlkDevice.F jsr DRV.BlkDevice.GetCmdAndDev - -DRV.BlkDevice.Go - ldy #S.NODE.DEV.BUSPTR - lda (pDev),y - sta .8+1 - iny - lda (pDev),y - sta .8+2 -.8 jmp $ffff +* IOCTL to BLK protocol converter +* in : pIOCTL (AUX) *-------------------------------------- -DRV.BlkDevice.GetParam - ldy #3 -DRV.BlkDevice.GetParam.1 - lda $ffff,y Self Modified - sta $44,y - dey - bpl DRV.BlkDevice.GetParam.1 - rts -*-------------------------------------- -DRV.BlkDevice.GetCmdAndDev - jsr DRV.BlkDevice.GetCmdAndDevAX - stx $42 - sta $43 - rts -DRV.BlkDevice.GetCmdAndDevAX - txa +DRV.BLK txa lsr - tax CMD + sta DRV.BLK.PARAMS CMD ldy #S.NODE.DEV.DEVID Drive 1, or 2 lda (pDev),y @@ -201,81 +133,69 @@ DRV.BlkDevice.GetCmdAndDevAX plp ror DSSS0000 + sta DRV.BLK.PARAMS+1 UNITNUM + + ldx #3 + + ldy #S.IOCTL.BUFPTR+3 + +.1 lda (pIOCTL),y BUF,BLKNUM + sta DRV.BLK.PARAMS+2,x + dey + dex + bpl .1 + + ldy #S.NODE.DEV.BUSPTR + + lda (pNode),y + sta .3+1 + iny + lda (pNode),y + sta .3+2 + + jsr GO.ProDOS + + ldx #5 + +.2 lda DRV.BLK.PARAMS,x + sta $42,x + dex + bpl .2 + +.3 jsr $ffff SELF MODIFIED + + jsr GO.A2osX rts -*-------------------------------------- -DRV.BlkDevice.Stat - .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ - .BS 3 - >PSTR "ProDOS Block Dev" - .DA #S.DSTAT.T.PRODOS - .DA #0 - .DA KVER + +DRV.BLK.PARAMS .BS 6 *-------------------------------------- * Smartport Driver *-------------------------------------- DRV.SmartPort cld - jmp (.1,x) -.1 .DA DRV.SmartPort.S STATUS - .DA DRV.SmartPort.P BR - .DA DRV.SmartPort.P BW - .DA DRV.SmartPort.NP FORMAT - .DA DRV.SmartPort.P CONTROL - .DA DRV.SmartPort.NP INIT - .DA DRV.SmartPort.NP OPEN - .DA DRV.SmartPort.NP CLOSE - .DA DRV.SmartPort.P R - .DA DRV.SmartPort.P W - .DA A2osX.BADCALL IRQ -*-------------------------------------- -DRV.SmartPort.S jsr DRV.SmartPort.GetDev - >LDYAI K.S.DSTAT - >STYA K.S.IOCTL+S.IOCTL.BUFPTR - lda #S.IOCTL.STATCODE.GETDIB - sta K.S.IOCTL+S.IOCTL.CTRLCODE - jsr DRV.SmartPort.Go - bcs .9 - >LDYAI K.S.DSTAT -.9 rts -*-------------------------------------- -DRV.SmartPort.P jsr DRV.SmartPort.GetParam - bra DRV.SmartPort.Go -DRV.SmartPort.NP - jsr DRV.SmartPort.GetDev -*-------------------------------------- -DRV.SmartPort.Go + >STYA DRV.SmartPort.Go.IOCTL + + txa + lsr + sta DRV.SmartPort.Go.Cmd + tax + + lda DRV.SmartPort.Cnt,x + sta DRV.SmartPort.Go.Cmd + ldy #S.NODE.DEV.BUSPTR - lda (pDev),y + lda (pNode),y sta .8+1 iny - lda (pDev),y + lda (pNode),y sta .8+2 .8 jsr $ffff DRV.SmartPort.Go.Cmd .BS 1 - .DA K.S.IOCTL - rts -*-------------------------------------- -DRV.SmartPort.GetParam - >STYA ZPDRV Get Ptr To ParamList - jsr DRV.BlkDevice.GetCmdAndDev - - ldy #7 - -.1 lda (ZPDRV),y - sta K.S.IOCTL+2,y - dey - bpl .1 - rts -*-------------------------------------- -DRV.SmartPort.GetDev - txa - lsr - sta DRV.SmartPort.Go.Cmd - tax - lda DRV.SmartPort.Cnt,x - sta K.S.IOCTL+S.IOCTL.CNT +DRV.SmartPort.Go.IOCTL + .BS 2 rts + DRV.SmartPort.Cnt .HS 03030301030101010404 *-------------------------------------- @@ -284,6 +204,7 @@ DRV.SmartPort.Cnt * - READ returns EOF. *-------------------------------------- DRV.NULL cld + >STYA pIOCTL jmp (.1,x) *-------------------------------------- .1 .DA DRV.NULL.STATUS @@ -298,41 +219,10 @@ DRV.NULL cld .DA DRV.NULL.WRITE .DA A2osX.BADCALL IRQ *-------------------------------------- -DRV.NULL.STATUS >STYA pIOCTL - - ldy #S.IOCTL.STATCODE - lda (pIOCTL),y - beq .1 +DRV.NULL.STATUS >LDYAI DRV.NULL.DSTAT + jmp DRV.STATUS.YA - cmp #S.IOCTL.STATCODE.GETDIB - bne .9 - - ldx #15 - .HS 2C bit abs -.1 ldx #3 - - ldy #S.IOCTL.BUFPTR - lda (pIOCTL),y - sta .3+1 - iny - lda (pIOCTL),y - sta .3+2 - -.2 lda DRV.NULL.DSTAT,x -.3 sta $ffff,x SELF MODIFIED - dex - bpl .2 - - clc - rts - -.9 lda #MLI.E.BADCTL - sec - rts - -DRV.NULL.READ >STYA pIOCTL - - ldx #C.EOF +DRV.NULL.READ ldx #C.EOF jmp DRV.READ.X DRV.NULL.OPEN @@ -351,8 +241,9 @@ DRV.NULL.DSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ+S.DSTAT.S.OPENED * SYS DEVICE *-------------------------------------- DRV.SYS cld + >STYA pIOCTL jmp (.1,x) -.1 .DA .2 STATUS +.1 .DA DRV.SYS.STATUS .DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL WRITEBLOCK .DA A2osX.BADCALL FORMAT @@ -364,16 +255,8 @@ DRV.SYS cld .DA DRV.SYS.Write .DA A2osX.BADCALL IRQ *-------------------------------------- -.2 >LDYAI .3 - clc - rts -*-------------------------------------- -.3 .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ+S.DSTAT.S.OPENED - .DA #0,#0,#0 - >PSTR "A2osX SYS Screen" - .DA #S.DSTAT.T.CHAR - .DA #0 - .DA KVER +DRV.SYS.STATUS >LDYAI DRV.SYS.DSTAT + jmp DRV.STATUS.YA *-------------------------------------- DRV.SYS.Open lda #DEVID.SYS sta A2osX.SCRNDEVS+1 @@ -612,12 +495,51 @@ DRV.SYS.SetBaseX sta ZPDRV+1 rts *-------------------------------------- +DRV.SYS.DSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ+S.DSTAT.S.OPENED + .DA #0,#0,#0 + >PSTR "A2osX SYS Screen" + .DA #S.DSTAT.T.CHAR + .DA #0 + .DA KVER +*-------------------------------------- DRV.SYS.CH .BS 1 DRV.SYS.CV .BS 1 *-------------------------------------- DRV.SYS.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 DRV.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B *-------------------------------------- +DRV.STATUS.YA >STYA .2+1 + + ldy #S.IOCTL.STATCODE + lda (pIOCTL),y + beq .1 + + cmp #S.IOCTL.STATCODE.GETDIB + bne .9 + + ldx #15 + .HS 2C bit abs +.1 ldx #3 + + ldy #S.IOCTL.BUFPTR + lda (pIOCTL),y + sta .3+1 + iny + lda (pIOCTL),y + sta .3+2 + +.2 lda $ffff,x SELF MODIFIED +.3 sta $ffff,x SELF MODIFIED + dex + bpl .2 + + clc + rts + +.9 lda #MLI.E.BADCTL + sec + rts +*-------------------------------------- DRV.READ.X ldy #S.IOCTL.BYTECNT lda #1 sta (pIOCTL),y