From 53e429b7bd0138cc88449e03b2333d00c3a7d998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 9 Dec 2016 17:36:24 +0100 Subject: [PATCH] Kernel version 0.9 : Introducing Node API, FIFOs, DEVs, and sockets.... --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.DEV.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/LS.S.txt | 10 +- BIN/RM.S.txt | 4 +- BIN/X.CPMV.S.txt | 4 +- BIN/X.FILEENUM.S.txt | 2 +- INC/A2osX.I.txt | 267 ++++++++---------- INC/SOCKET.I.txt | 56 ++++ LIB/LIBMATH.S.txt | 54 ++++ LIB/LIBPAK.S.txt | 615 ++++++++++++++++++++++++++++++++++++++++++ SBIN/NFSD.S.txt | 231 ++++++++++++++++ SBIN/SHELL.S.CMD.txt | 4 +- SYS/KERNEL.S.BIN.txt | 2 +- SYS/KERNEL.S.CIO.txt | 99 ++++++- SYS/KERNEL.S.DEV.txt | 38 ++- SYS/KERNEL.S.DIR.txt | 56 ++-- SYS/KERNEL.S.FILE.txt | 71 +++-- SYS/KERNEL.S.PFT.txt | 5 +- _Docs/KERNEL.md | 62 ++++- 20 files changed, 1335 insertions(+), 245 deletions(-) create mode 100644 INC/SOCKET.I.txt create mode 100644 LIB/LIBMATH.S.txt create mode 100644 LIB/LIBPAK.S.txt create mode 100644 SBIN/NFSD.S.txt diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index 802671dbab096c32abfb49dd0443a00a7ccb3abc..521ea6ead1492feb498e61d55781bca63bbe22f2 100644 GIT binary patch delta 4160 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 WyA0m| delta 6021 zcmZWt33yXg7QQ!9NRdLf>`6-@1uW(9vNTOmW+qKu+SoJ+d1;|A&R8%?1zM)mvIvB< zWi5(ufl`-Ga2*xVkx@rMtjp)V@8brzZ=>QiE{x8(_r4cW@yi5h7U()Qkh$F=-bnhp-FOojg6C%PeRnzDLM+Set^JD5 zxs9&Fo zE6CpE7QCGtUTzz?0{|N#N0(diPI7X&*}qHC48)rSHX3O6P;G}B*>-1eH)e=%+k8f7VFZU0nQtQVR+`SeIm1gUk{Lx0(%-^}MB5TTw=uUIUSz(N zp?(TG>4VSE;X~%z$dQ$%sryyu9N^sT+&SF=rWB0EqzKEg-6^8-JBVhL9p6bNuPVp? zAdRbR_%5<&)pUH2T(xRy>Ta&$U)-@QsSNLQBHcY4jzfVdmfT2xF9&DGLkWp{>IDDq z<7hD4B-bmb7wPWjs4PhhiUA)o9XbUHvXp>~&=^75OovJ1rN(&=WbslYpkxf(Il_sA z6b>ua{HXXr4ocDBb{00Lgp3a{ES_A_(GB6`23#W2KTL)$)t&taW95V|!8KfNl=r9_ zNS6nh9%BMDet}S2O_IxtjE|H2)duqujApS4v~?=UclnXwN#a|r&wWZs!_(ya)y1i2 z_+ava*7hKeiyPM5vkZ;JI@{X2g6arvH!?lPZJ$PXknsi8LASS$Reh`};rAiKiy7R< z@j5BtN2Zq)*kO13GxBl^D7>6ekTMD~(!Qcp_N&CY##sLv_fPKX^e-L7&X!|SKu z)-DAGr{BoHjjde^7V_0l1%Z5%tX^X@zm=iG%RAM{RzV@WO%ALv;&;g7Yf5t8<>OC0 zO1@k(0Usj;YpwV=5!TvM?=f|MXR@^`8SCs=kX*K`#m5?h-Qz*#4;WpS?25^?D?so`XEF(}GP4?JZoetgMO}c$x;m9C)VPra zk^Xh&lm;u!w#JLf&cL*SY4?=7Iu9F_Vsf%8+>rvecpiKrvT9ZHfXZF1nW247q|N2Zd82W~hD0Z6D0#rMet4th+E7Gw}GB0hz`DA6f6c>=e z^n~0(PERW$kESbeF*%X0%+)EFo=obg#0Db6(@56!Ov5H}pr;(0$tyk6v4xE2ot|q| zWNqY}-b!3T+IofDQjSd;Pxkhf<1+FXJSUJZfS*WAeN(ZWNPW|sia3Q#Zrb9%+S>%SkX}E&C)OQx1N>27!a3wLWFTvAD^?Dl?NYnZX zJe{mtuS?$xB`u< z;y4Sf7im3;|JC4sKx)qT@5Q57+DmJQVPgrNK|C8v=AI3@AS8qWtSPxs!8r=Tr&on6 zGgUwcMVe%3BlWr5F*HgbXi%qzc+3$b}QJV;y5CuR(BJQN8=*>Q};M?_`k zo`wt5Hmmw_W_x_Y=>l_FdYRAQF`P}x!YXf4EDI4S!OmahRKkHKG?Ko}W#)(~2V%jn zuTEyI#(^rM*;JjVBu-*mbh+#4=w38YhPMeg0Z%>I zyk!h-V!!souV(h^`7L>PHvMIAh@!|BvgktEIXogIEo5}REq5+|)6FAdfAM*L#*o*> zy0`%QozyHv5^OLyB%G%b{%BL;a_Rw`S^km%!%VwLs@D!+C)@Pmg;SsSKQOLNR}^j`;@%UF|}} zQX2_uEz7-_zm+T^?OSblG1&^wCFItvW^21@p)NQ_Xby)W5^Iofn6q|}V_PlaQm#7g zZ?wh8nT62F;rwNgo){dDSqwyE?jk3*n=F?oC{%lhho_vEw56MfJIr`FY1m=KE6Bnf z*3?Q>R*E#U8Ymyifl3ll;VRC+8fWXufr>6w5P(?0I#Jo{d5~cpDIoeOX)fQS3=GNYQ7nWaP!MdcHOSCQqC~&A zPoboE95`kis=RnThyALnkgmcF9Efc8#xkF5I4%%M7z;u2D2jsU9?+xu+9DC zMPf>A(2!&arfemLH*RfmySxmGpTa*r7(!QXpt)o31 zYQG@4BDoA{w<~6M;Dp>j&1P~ZqGFQpGo`eLGX;Y%X{kAp*%K^Rs(_Gih>3coX^x~_(|Q&8a;F9EUZZ!_;%i9b zEsD{&Dp4vp|G3$o#yWrPN}=et$c>|+sK;T6Y+ksZ?_5GP7dw1SPp<- zBGf1e0bdJ~cJ(;~!R0`fJIIOMX1Gd?8L+}t>Z}3l{JT`y*{X0g6|P1(2WhAOr$Q6n z54CsmLG$i`fXf2Ch@_GBUJmO11;P{(8sR?928Nj4N5nlAd_M{AvD6&O77*f5e%yw} z=|x=;c`u?oEyd(8ph4eaB$SLK7>iZpjq=UCesG3 znny5c7_?~~#pL2aTk5f4dU2_atz7%i2solXK8&L$C6;=)GSl1o6T?`4JwFn_wUv@j z4kK&B4csgzpE^a-uNQD#G8|D*EEMpu`R92)yqbi@YZQ| zHBOA21D?z>B5fAG<-EVTZ&W$=_ik& zkpj|wz~y`&f&nTe)cYcVu*B<3>=S1;#3SL#GI8cY*kURNj*rLYl~SL7*QZgTXl+xFR!WZxrE*R{$c^6&7hx^Nokls|0%`jW z!rtDI<}s~oZtZMqoxeDlUe>lMiL~GIm{0kE_Z3tSp|ehv@sf&c>D8;X=MIIp-xSip1NSl)|0~- zHe*_8Fk{pIvbhv&mSMJexsmzTYzBx}Ejz_kA=7WenV_Gkz&?dE6-bXYY%T)#gLMKg z8mrMLVS{NR?HL+&<0&2ivaw)7i1`xq+gmBUwi$C2P^nioMW+i@jnt642V4!KV32$* zm)QxkNW19emmAcN1|05yd>ab0!Qt!Knb~NNp-!Y9qaoskVp|?{dTf@&9Iod@hH)Cw zx!R3!iP~qaW>2?!NE932bPNUr#N;_ hbHZ{r(3u^y?@i+!SC`*gUV`7k8;7Rgo8f={{{ef#$IAc! diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index e453fb3f9ca95524e2e67bb221d653939466f54b..ff71370544fbafe1e81cbf995de288d49e847f5d 100644 GIT binary patch delta 6343 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 Bc}D;M delta 7054 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 sVXX$~z0~OG9`2YX_ diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 4b6048b5..897fe058 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -133,11 +133,11 @@ CS.RUN ldy #bCANCEL >SYSCALL PStrMatch bcs .8 no match, skip.... -.4 ldy #S.STAT.PRODOS.DRIVE +.4 ldy #S.STAT.P.DRIVE lda (ZPPtr2),y ProDOS Device ? bne .5 - ldy #S.STAT.PRODOS.TYPE + ldy #S.STAT.P.TYPE lda (ZPPtr2),y cmp #$0F Directory ? bne .6 @@ -169,7 +169,7 @@ CS.RUN.DEV ldy #bLong lda (pData),y bpl CS.RUN.DIR - ldy #S.STAT.PRODOS.DEVBLOCKS+1 + ldy #S.STAT.P.DEVBLOCKS+1 >PUSHB (ZPPtr2),y dey >PUSHB (ZPPtr2),y @@ -178,7 +178,7 @@ CS.RUN.DEV ldy #bLong dey >PUSHB (ZPPtr2),y - ldy #S.STAT.PRODOS.DRIVE + ldy #S.STAT.P.DRIVE >PUSHB (ZPPtr2),y dey SLOT >PUSHB (ZPPtr2),y @@ -300,7 +300,7 @@ CS.RUN.FILE ldy #bLong lda (ZPPtr2),y >PUSHA File Mode - ldy #S.STAT.PRODOS.AUXTYPE+1 + ldy #S.STAT.P.AUXTYPE+1 lda (ZPPtr2),y >PUSHA dey diff --git a/BIN/RM.S.txt b/BIN/RM.S.txt index 8d98286d..ad4e5185 100644 --- a/BIN/RM.S.txt +++ b/BIN/RM.S.txt @@ -128,11 +128,11 @@ CS.RUN ldy #bCANCEL >SYSCALL PStrMatch bcs .8 no match, skip.... -.4 ldy #S.STAT.PRODOS.DRIVE +.4 ldy #S.STAT.P.DRIVE lda (ZPPtr2),y ProDOS Device ? bne .5 - ldy #S.STAT.PRODOS.TYPE + ldy #S.STAT.P.TYPE lda (ZPPtr2),y cmp #$0F Directory ? bne .6 diff --git a/BIN/X.CPMV.S.txt b/BIN/X.CPMV.S.txt index 6c118262..1d21e1eb 100644 --- a/BIN/X.CPMV.S.txt +++ b/BIN/X.CPMV.S.txt @@ -139,11 +139,11 @@ CS.RUN ldy #bCANCEL >SYSCALL PStrMatch bcs .8 no match, skip.... -.4 ldy #S.STAT.PRODOS.DRIVE +.4 ldy #S.STAT.P.DRIVE lda (ZPPtr2),y ProDOS Device ? bne .5 - ldy #S.STAT.PRODOS.TYPE + ldy #S.STAT.P.TYPE lda (ZPPtr2),y cmp #$0F Directory ? bne .6 diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 3a38d643..5727d221 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -86,7 +86,7 @@ InitSrcDirYA ldx #0 bcs .1 File/DIR does not exists, go extract pattern - lda STAT+S.STAT.PRODOS.TYPE + lda STAT+S.STAT.P.TYPE cmp #$0f beq .5 TYPE=DIR, do not extract wildcard diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 239b0dd5..08f38e69 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -63,6 +63,7 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300 KrnBuf256 .EQ $0C00 Main *-------------------------------------- MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!! +MLICALL.TMPBUF .EQ $0D12 Small buffer (14 bytes) for MLI calls BLKCALL.PARAMS .EQ $0D20 Max 6 Bytes copied to/from $42->$47 before Firmware call PRTCALL.PARAMS .EQ $D030 Max 8 bytes for smartport cmdnum $0->$9 KrnSTAT .EQ $0D40 S.STAT @@ -318,24 +319,6 @@ S.MEMSTAT.DH .EQ 20 * S.MEMSTAT .EQ 24 *-------------------------------------- -* DEVMGR (old API) -*-------------------------------------- -S.DEV.CODE .EQ 0 cld,jmp... -S.DEV.JMP .EQ 2 ...(code,x) -S.DEV.ID .EQ 4 -S.DEV.F .EQ 5 -S.DEV.F.INUSE .EQ %10000000 -S.DEV.F.BUSY .EQ %01000000 -S.DEV.F.SHARE .EQ %00100000 Device is shareable -S.DEV.F.IRQ .EQ %00010000 Device is irq driven -S.DEV.F.EVENT .EQ %00001000 Device is event driven -S.DEV.F.COUT .EQ %00000100 Device supports Char OUT -S.DEV.F.BLOCK .EQ %00000010 -S.DEV.F.CHAR .EQ %00000001 -S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx -* -S.DEV .EQ 16 -*-------------------------------------- S.DEVINFO.TYPE .EQ 0 S.DEVINFO.TYPE.CHAR .EQ %00000001 S.DEVINFO.TYPE.XY .EQ %00000010 @@ -376,7 +359,25 @@ DEVMGR.GFX.HLINE .EQ 18 DEVMGR.GFX.VLINE .EQ 20 DEVMGR.GFX.BITBLT .EQ 22 *-------------------------------------- -* DEVMGR (new API) = Smartport DIB +* DEVMGR (old API) +*-------------------------------------- +S.DEV.CODE .EQ 0 cld,jmp... +S.DEV.JMP .EQ 2 ...(code,x) +S.DEV.ID .EQ 4 +S.DEV.F .EQ 5 +S.DEV.F.INUSE .EQ %10000000 +S.DEV.F.BUSY .EQ %01000000 +S.DEV.F.SHARE .EQ %00100000 Device is shareable +S.DEV.F.IRQ .EQ %00010000 Device is irq driven +S.DEV.F.EVENT .EQ %00001000 Device is event driven +S.DEV.F.COUT .EQ %00000100 Device supports Char OUT +S.DEV.F.BLOCK .EQ %00000010 +S.DEV.F.CHAR .EQ %00000001 +S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx +* +S.DEV .EQ 16 +*-------------------------------------- +* DEVMGR (new API) = Smartport *-------------------------------------- * JMP : * DEVID : @@ -385,43 +386,38 @@ DEVMGR.GFX.BITBLT .EQ 22 * XY : X=Slot, Y=Device (<$80) * > $80 : IDs for PIPE,SOCK.... *-------------------------------------- -S..DEV.JMP .EQ 0 -S..DEV.DEVID .EQ 2 -S..DEV.FLAGS .EQ 3 -S..DEV.FLAGS.IRQ .EQ %10000000 -S..DEV.FLAGS.TYPE .EQ %00110000 -S..DEV.FLAGS.TYPE.DRV .EQ %00000000 -S..DEV.FLAGS.TYPE.BLK .EQ %00010000 -S..DEV.FLAGS.TYPE.SP .EQ %00100000 -S..DEV.FLAGS.NAMELEN .EQ %00001111 -S..DEV.NAME .EQ 4 -S..DEV .EQ 8 +*S.DEV.JMP .EQ 0 +*S.DEV.DEVID .EQ 2 +*S.DEV.F .EQ 3 +*S.DEV.F.BLOCK .EQ %10000000 +*S.DEV.F.WRITE .EQ %01000000 +*S.DEV.F.READ .EQ %00100000 +*S.DEV.F.ONLINE .EQ %00010000 +*S.DEV.F.NOFMT .EQ %00001000 +*S.DEV.F.WENABL .EQ %00000100 +*S.DEV.F.IRQ .EQ %00000010 +*S.DEV.F.OPENED .EQ %00000001 + +*S.DEV.NAME .EQ 4 +*S.DEV .EQ 8 *-------------------------------------- -DEVMGR..STATUS .EQ 0 -DEVMGR..READBLOCK .EQ 1 -DEVMGR..READBLOCK .EQ 2 -DEVMGR..FORMAT .EQ 3 -DEVMGR..CONTROL .EQ 4 -DEVMGR..INIT .EQ 5 -DEVMGR..OPEN .EQ 6 -DEVMGR..CLOSE .EQ 7 -DEVMGR..READ .EQ 8 -DEVMGR..WRITE .EQ 9 +*DEVMGR..STATUS .EQ 0 +*DEVMGR..READBLOCK .EQ 1 +*DEVMGR..WRITEBLOCK .EQ 2 +*DEVMGR..FORMAT .EQ 3 +*DEVMGR..CONTROL .EQ 4 +*DEVMGR..INIT .EQ 5 +*DEVMGR..OPEN .EQ 6 +*DEVMGR..CLOSE .EQ 7 +*DEVMGR..READ .EQ 8 +*DEVMGR..WRITE .EQ 9 *-------------------------------------- -S.DEVSTAT.S .EQ 0 -S.DEVSTAT.S.BLOCK .EQ %10000000 -S.DEVSTAT.S.WRITE .EQ %01000000 -S.DEVSTAT.S.READ .EQ %00100000 -S.DEVSTAT.S.ONLINE .EQ %00010000 -S.DEVSTAT.S.NOFMT .EQ %00001000 -S.DEVSTAT.S.WENABL .EQ %00000100 -S.DEVSTAT.S.IRQ .EQ %00000010 -S.DEVSTAT.S.OPENED .EQ %00000001 -S.DEVSTAT.SIZE .EQ 1 -S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX -S.DEVSTAT.TYPE .EQ 21 -S.DEVSTAT.SUBTYPE .EQ 22 -S.DEVSTAT.VERSION .EQ 23 +*S.DEVSTAT.F .EQ 0 same as S.DEV.F.* bitmasks +*S.DEVSTAT.SIZE .EQ 1 3 bytes +*S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX +*S.DEVSTAT.TYPE .EQ 21 +*S.DEVSTAT.SUBTYPE .EQ 22 +*S.DEVSTAT.VERSION .EQ 23 *-------------------------------------- *-------------------------------------- @@ -443,8 +439,11 @@ S.PS.hENV .EQ 6 S.PS.hCMDLINE .EQ 7 S.PS.UID .EQ 8 S.PS.hINDEV .EQ 9 +S.PS.hStdIn .EQ 9 S.PS.hOUTDEV .EQ 10 +S.PS.hStdOut .EQ 10 S.PS.hERRDEV .EQ 11 +S.PS.hStdErr .EQ 11 S.PS.CPID .EQ 12 S.PS.RC .EQ 13 S.PS.PC .EQ 14 @@ -494,6 +493,12 @@ S.TIME.WDAY .EQ 7 1..7 * S.TIME .EQ 8 *-------------------------------------- +S.PFT.PATH .EQ 0 /dev, /mnt +S.PFT.HANDLER .EQ 16 +S.PFT.DATA .EQ 24 8 bytes OPAQUE data for handler +* +S.PFT .EQ 32 +*-------------------------------------- * S.STAT *-------------------------------------- S.STAT.MODE .EQ 0 @@ -510,13 +515,14 @@ S.STAT.MODE.RU .EQ $0100 *S.STAT.MODE.SGID .EQ $0400 *S.STAT.MODE.SUID .EQ $0800 -S.STAT.MODE.REG .EQ $0000 -S.STAT.MODE.FIFO .EQ $1000 -S.STAT.MODE.CHR .EQ $2000 -S.STAT.MODE.BLK .EQ $2000 -S.STAT.MODE.DIR .EQ $4000 -S.STAT.MODE.LNK .EQ $5000 -S.STAT.MODE.SOCK .EQ $6000 +S.STAT.MODE.REG .EQ $0000 +S.STAT.MODE.DIR .EQ $1000 +*S.STAT.MODE.CDEV .EQ $2000 +*S.STAT.MODE.BDEV .EQ $3000 +*S.STAT.MODE.LNK .EQ $4000 +*S.STAT.MODE.DSOCK .EQ $5000 +*S.STAT.MODE.SSOCK .EQ $6000 +*S.STAT.MODE.FIFO .EQ $7000 S.STAT.DEV .EQ 2 WORD S.STAT.UID .EQ 4 WORD @@ -529,119 +535,56 @@ S.STAT.MTIME .EQ 30 S.TIME S.STAT.CTIME .EQ 38 S.TIME S.STAT.BLOCKS .EQ 46 DWORD S.STAT.BLKSIZE .EQ 50 WORD -S.STAT.PRODOS.TYPE .EQ 52 BYTE -S.STAT.PRODOS.AUXTYPE .EQ 53 WORD -S.STAT.PRODOS.SLOT .EQ 55 BYTE -S.STAT.PRODOS.DRIVE .EQ 56 BYTE -S.STAT.PRODOS.DEVSTATUS .EQ 57 BYTE -S.STAT.PRODOS.DEVCNFLCT .EQ 58 BYTE -S.STAT.PRODOS.DEVBLOCKS .EQ 59 BYTE +S.STAT.P.TYPE .EQ 52 BYTE +S.STAT.P.AUXTYPE .EQ 53 WORD +S.STAT.P.SLOT .EQ 55 BYTE +S.STAT.P.DRIVE .EQ 56 BYTE +S.STAT.P.DEVSTATUS .EQ 57 BYTE +*S.STAT.P.DEVCNFLCT .EQ 58 BYTE +S.STAT.P.DEVBLOCKS .EQ 59 BYTE * S.STAT .EQ 64 *-------------------------------------- -* S.FILE for FOPEN,FREAD...... +* S.NODE *-------------------------------------- -S.FILE.HANDLER .EQ 0 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....) -S.FILE.T .EQ 1 -S.FILE.T.REG .EQ 1 -S.FILE.T.DIR .EQ 2 -S.FILE.T.BDEV .EQ 3 -S.FILE.T.CDEV .EQ 4 -S.FILE.T.LNK .EQ 5 -S.FILE.T.DSOCK .EQ 6 -S.FILE.T.SSOCK .EQ 7 -S.FILE.T.FIFO .EQ 8 +S.NODE.HANDLER .EQ 0 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....) +S.NODE.T .EQ 1 +S.NODE.T.REG .EQ 0 +S.NODE.T.DIR .EQ 1 +S.NODE.T.CDEV .EQ 2 +S.NODE.T.BDEV .EQ 3 +S.NODE.T.LNK .EQ 4 +S.NODE.T.DSOCK .EQ 5 +S.NODE.T.SSOCK .EQ 6 +S.NODE.T.FIFO .EQ 7 *-------------------------------------- -S.FILE.REG.REF .EQ 2 -S.FILE.REG.IOBUF .EQ 3 +S.NODE.REG.REF .EQ 2 +S.NODE.REG.IOBUF .EQ 3 * -S.FILE.REG .EQ 4 +S.NODE.REG .EQ 4 *-------------------------------------- -S.FILE.DIR.REF .EQ 2 -S.FILE.DIR.IOBUF .EQ 3 -S.FILE.DIR.EL .EQ 4 -S.FILE.DIR.EPB .EQ 5 -S.FILE.DIR.FC .EQ 6 word +S.NODE.DIR.REF .EQ 2 +S.NODE.DIR.IOBUF .EQ 3 +S.NODE.DIR.EL .EQ 4 +S.NODE.DIR.EPB .EQ 5 +S.NODE.DIR.FC .EQ 6 word * -S.FILE.DIR .EQ 8 +S.NODE.DIR .EQ 8 *-------------------------------------- -S.FILE.DEV -*-------------------------------------- -* S.FILE.LNK -*-------------------------------------- -S.FILE.SOCK.SO .EQ 2 -S.FILE.SOCK.SO.DEBUG .EQ $01 -S.FILE.SOCK.SO.ACCEPTCONN .EQ $02 -S.FILE.SOCK.SO.REUSEADDR .EQ $04 -S.FILE.SOCK.SO.KEEPALIVE .EQ $08 -S.FILE.SOCK.SO.DONTROUTE .EQ $10 -S.FILE.SOCK.SO.BROADCAST .EQ $20 -S.FILE.SOCK.SO.USELOOPBACK .EQ $40 -S.FILE.SOCK.SO.LINGER .EQ $80 - -S.FILE.SOCK.S .EQ 3 -S.FILE.SOCK.S.CLOSED .EQ 0 -S.FILE.SOCK.S.LISTEN .EQ 1 -S.FILE.SOCK.S.SYNSENT .EQ 2 -S.FILE.SOCK.S.SYNRCVD .EQ 3 -S.FILE.SOCK.S.ESTBLSH .EQ 4 -S.FILE.SOCK.S.CLWAIT .EQ 5 -S.FILE.SOCK.S.LASTACK .EQ 6 -S.FILE.SOCK.S.FINWT1 .EQ 7 -S.FILE.SOCK.S.FINWT2 .EQ 8 -S.FILE.SOCK.S.CLOSING .EQ 9 -S.FILE.SOCK.S.TIMEWT .EQ 10 - -S.FILE.SOCK.SRC.ADDR .EQ 4 -S.FILE.SOCK.SRC.PORT .EQ 8 -S.FILE.SOCK.DST.ADDR .EQ 10 -S.FILE.SOCK.DST.PORT .EQ 14 -* Listen type Queue -S.FILE.SOCK.LQ.HEAD .EQ 16 -S.FILE.SOCK.LQ.TAIL .EQ 17 -S.FILE.SOCK.LQ .EQ 18 -S.FILE.SOCK.LQ.MAX .EQ 14 14 hSocket -* Datagram type Queue -S.FILE.SOCK.DQ.HEAD .EQ 16 -S.FILE.SOCK.DQ.TAIL .EQ 17 -S.FILE.SOCK.DQ .EQ 18 -S.FILE.SOCK.DQ.MAX .EQ 14 14 hMem (frames) -* Stream type Queue -S.FILE.SOCK.SQ.hInMem .EQ 16 -S.FILE.SOCK.SQ.hOutMem .EQ 17 -S.FILE.SOCK.SQ.SIZE .EQ 18 -S.FILE.SOCK.SQ.HEAD .EQ 20 -S.FILE.SOCK.SQ.TAIL .EQ 22 -S.FILE.SOCK.SQ.SEQNUM .EQ 24 -S.FILE.SOCK.SQ.ACKNUM .EQ 28 +S.NODE.DEV.ID .EQ 2 * -S.FILE.SOCK .EQ 32 +S.NODE.DEV .EQ 3 *-------------------------------------- -S.FILE.FIFO.hMem .EQ 2 -S.FILE.FIFO.InPtr .EQ 3 -S.FILE.FIFO.OutPtr .EQ 4 +* S.NODE.LNK +*-------------------------------------- +S.NODE.FIFO.S .EQ 2 +S.NODE.FIFO.S.Opened .EQ 1 +S.NODE.FIFO.S.Closed .EQ 2 +S.NODE.FIFO.hMem .EQ 3 +S.NODE.FIFO.Tail .EQ 4 +S.NODE.FIFO.Head .EQ 5 * -S.FILE.FIFO .EQ 5 -*-------------------------------------- -* OLD API: S.DIR for OpenDir,ReadDir,CloseDir -*-------------------------------------- -S.DIR.HANDLER .EQ 0 -S.DIR.F .EQ 1 -S.DIR.F.NOMORE .EQ $80 -S.DIR.PRODOS.REF .EQ 2 -S.DIR.PRODOS.IOBUF .EQ 3 -S.DIR.PRODOS.EL .EQ 4 -S.DIR.PRODOS.EPB .EQ 5 -S.DIR.PRODOS.FC .EQ 6 -* -S.DIR.PRODOS .EQ 8 -* no S.DIR -*-------------------------------------- -S.PFT.PATH .EQ 0 -S.PFT.HANDLER .EQ 23 -S.PFT.DATA .EQ 24 8 bytes OPAQUE data for handler -* -S.PFT .EQ 32 +S.NODE.FIFO .EQ 5 *-------------------------------------- MAN SAVE /A2OSX.DEV/INC/A2OSX.I diff --git a/INC/SOCKET.I.txt b/INC/SOCKET.I.txt new file mode 100644 index 00000000..3e5d8066 --- /dev/null +++ b/INC/SOCKET.I.txt @@ -0,0 +1,56 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 +*-------------------------------------- +S.NODE.SOCK.SO .EQ 2 +S.NODE.SOCK.SO.DEBUG .EQ $01 +S.NODE.SOCK.SO.ACCEPTCONN .EQ $02 +S.NODE.SOCK.SO.REUSEADDR .EQ $04 +S.NODE.SOCK.SO.KEEPALIVE .EQ $08 +S.NODE.SOCK.SO.DONTROUTE .EQ $10 +S.NODE.SOCK.SO.BROADCAST .EQ $20 +S.NODE.SOCK.SO.USELOOPBACK .EQ $40 +S.NODE.SOCK.SO.LINGER .EQ $80 + +S.NODE.SOCK.S .EQ 3 +S.NODE.SOCK.S.CLOSED .EQ 0 +S.NODE.SOCK.S.LISTEN .EQ 1 +S.NODE.SOCK.S.SYNSENT .EQ 2 +S.NODE.SOCK.S.SYNRCVD .EQ 3 +S.NODE.SOCK.S.ESTBLSH .EQ 4 +S.NODE.SOCK.S.CLWAIT .EQ 5 +S.NODE.SOCK.S.LASTACK .EQ 6 +S.NODE.SOCK.S.FINWT1 .EQ 7 +S.NODE.SOCK.S.FINWT2 .EQ 8 +S.NODE.SOCK.S.CLOSING .EQ 9 +S.NODE.SOCK.S.TIMEWT .EQ 10 + +S.NODE.SOCK.SRC.ADDR .EQ 4 +S.NODE.SOCK.SRC.PORT .EQ 8 +S.NODE.SOCK.DST.ADDR .EQ 10 +S.NODE.SOCK.DST.PORT .EQ 14 +* Listen type Queue +S.NODE.SOCK.LQ.HEAD .EQ 16 +S.NODE.SOCK.LQ.TAIL .EQ 17 +S.NODE.SOCK.LQ .EQ 18 +S.NODE.SOCK.LQ.MAX .EQ 14 14 hSocket +* Datagram type Queue +S.NODE.SOCK.DQ.HEAD .EQ 16 +S.NODE.SOCK.DQ.TAIL .EQ 17 +S.NODE.SOCK.DQ .EQ 18 +S.NODE.SOCK.DQ.MAX .EQ 14 14 hMem (frames) +* Stream type Queue +S.NODE.SOCK.SQ.hInMem .EQ 16 +S.NODE.SOCK.SQ.hOutMem .EQ 17 +S.NODE.SOCK.SQ.SIZE .EQ 18 +S.NODE.SOCK.SQ.HEAD .EQ 20 +S.NODE.SOCK.SQ.TAIL .EQ 22 +S.NODE.SOCK.SQ.SEQNUM .EQ 24 +S.NODE.SOCK.SQ.ACKNUM .EQ 28 +* +S.NODE.SOCK .EQ 32 +*-------------------------------------- +MAN +SAVE /A2OSX.DEV/INC/SOCKET.I \ No newline at end of file diff --git a/LIB/LIBMATH.S.txt b/LIB/LIBMATH.S.txt new file mode 100644 index 00000000..c7c4e555 --- /dev/null +++ b/LIB/LIBMATH.S.txt @@ -0,0 +1,54 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BOOT/LIB/LIBMATH.O +*-------------------------------------- + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I + .INB /A2OSX.DEV/INC/APPLESOFT.I +* .INB /A2OSX.DEV/INC/LIBMATH.I +*-------------------------------------- +ZPPtr1 .EQ ZPLIB +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA LIB.LOAD + .DA LIB.UNLOAD + .DA COS + .DA SIN + .DA TAN + .DA 0 +*-------------------------------------- +COS +*-------------------------------------- +SIN +*-------------------------------------- +TAN +*-------------------------------------- +LIB.LOAD +LIB.UNLOAD clc + rts + +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE LIB/LIBMATH.S +ASM diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt new file mode 100644 index 00000000..5fc148bd --- /dev/null +++ b/LIB/LIBPAK.S.txt @@ -0,0 +1,615 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BOOT/LIB/LIBPAK.O +*-------------------------------------- + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I +*-------------------------------------- +S.Pak.SrcPtr .EQ ZPLIB +S.Pak.SrcBlPtr .EQ ZPLIB+2 +S.Pak.SrcBlPtrT .EQ ZPLIB+4 +S.Pak.DstPtr .EQ ZPLIB+6 +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA LIB.LOAD + .DA LIB.UNLOAD + .DA Pak + .DA Unpak + .DA 0 +*-------------------------------------- +LIB.LOAD +LIB.UNLOAD clc + rts +*-------------------------------------- +* UNPACK code as short as possible +* For Self Extract +*-------------------------------------- +* File Header : +* SFX : +* - BIN must begin with CLD (QCODE) +* - BIN must be relocatable +* - BIN must overwrite itself +* (well, best way is moving CODE to $200) +*-------------------------------------- +* Shunk Header : +* WORD : !Target Length +* USED TO STOP UNPACK +* !!!NO EOF TOKEN!!! +* Short4 : [0..15] +* Short3 : [0..7] +*-------------------------------------- +S.PAK.LEN .EQ 0 +S.PAK.SHORT4 .EQ 2 +S.PAK.SHORT3 .EQ 18 +S.PAK .EQ 26 +*-------------------------------------- +* BITSTREAM : +* 0 = STORE : +* 00 : 1 byte follow (10 bits) +* 01 = 2 + n (4 bits count) +*-------------- +* 1 = CMD : +*---SHORT4 --- (3)+4=7 bits -------- +* 100 : SHORT4 +* xxxx = index in Short4 Table +*---SHORT3 --- (3)+3=6 bits -------- +* 101 : SHORT3 +* xxx = index in Short3 Table +*--- BACKLINK : (3)+8+5=16 bits ---- +* 110 : BackLink +* 9 bits : Offset (LO8,HI1) +* 4 bits : 3 + n (4 bits count) (18 max) +*--- REP : (3)+1, (3)+1+4 =4/8 bits ---- +* 111 : REP +* 0 : repeat last byte +* 1 : repeat 2 + n (4 bits count) +*-------------------------------------- +* In : +* PULLW = Src PTR +* PULLW = Src LEN +* PULLW = Dst PTR Compressed Buffer +*-------------------------------------- +PIPELEN .EQ 18 +STATS.SIZE .EQ 0 +STATS.BL .EQ 2 +STATS.REP .EQ 4 +STATS.S3 .EQ 6 +STATS.S4 .EQ 8 +*-------------------------------------- +S.Pak >PULLYA + >STYA S.Pak.Src Init for pass #1 + >STYA S.Pak.SrcPtr + >PULLA Get Src Len LO + eor #$ff + sta S.Pak.SrcCnt + sta S.Pak.Cnt Init for pass #1 + tax + + >PULLA Get Src Len HI + eor #$ff + sta S.Pak.SrcCnt+1 + sta S.Pak.Cnt+1 Init for pass #1 + tay + + >PULLW S.Pak.DstPtr + txa + jsr S.Pak.PutByte + tya + jsr S.Pak.PutByte + + ldx #9 +.1 stz S.Pak.Stat.Size,x Reset Stats + dex + bpl .1 + +* PASS #1 : Count occurence for each value... + +S.Pak.1 ldx #0 +.1 stz S.Pak.CntL,x + stz S.Pak.CntH,x + inx + bne .1 + + ldy #0 + +.2 inc S.Pak.Cnt + bne .3 + inc S.Pak.Cnt+1 + beq .5 + +.3 lda (S.Pak.SrcPtr),y + tax + inc S.Pak.CntL,x + bne .4 + inc S.Pak.CntH,x +.4 iny + bne .2 + inc S.Pak.SrcPtr+1 + bra .2 + +* ...Search for Top 24 +.5 ldy #23 + +.6 stz S.Pak.Cnt Init best score to 0 + stz S.Pak.Cnt+1 + + stz S.Pak.Byte + ldx #0 + +.7 lda S.Pak.CntL,x is it better at X + cmp S.Pak.Cnt + lda S.Pak.CntH,x + sbc S.Pak.Cnt+1 + bcs .8 not better + + stx S.Pak.Byte + lda S.Pak.CntL,x + sta S.Pak.Cnt + lda S.Pak.CntH,x + sta S.Pak.Cnt+1 + +.8 inx + bne .7 + + lda S.Pak.Byte + sta S.Pak.Short,y + stz S.Pak.CntL,x Discard this entry + stz S.Pak.CntH,x + dey + bpl .6 + + ldx #15 + +.9 lda S.Pak.Short4,x Store SHORT4 in reverse order + jsr S.Pak.PutByte + dex + bpl .9 + + ldx #7 + +.10 lda S.Pak.Short3,x Store SHORT3 in reverse order + jsr S.Pak.PutByte + dex + bpl .10 + + >LDYAI S.PAK Total Header Size + >STYA S.Pak.Stat.Size +* PASS #2 : +S.Pak.2 >LDYA S.Pak.Src Init for pass #2 + >STYA S.Pak.SrcPtr + >STYA S.Pak.SrcBlPtr + + >LDYA S.Pak.SrcCnt + >STYA S.Pak.Cnt + + lda #8 + sta S.Pak.PutBit+1 Initialize properly for first "PutBit" Call + stz S.Pak.Byte + + stz S.Pak.PipeLen + +S.Pak.2.LOOP ldx S.Pak.PipeLen Always fill Bytes in the PIPE until full + +.1 jsr S.Pak.GetByte Load PIPE.... + bcs .2 end of Buffer ? + sta S.Pak.Pipe,x + inx + cpx #PIPELEN PIPE Full ? + bne .1 + clc + +.2 stx S.Pak.PipeLen + + txa PIPE empty ....exit + beq .99 + +* try finding REPeating same bytes..... +S.Pak.2.REP dex + beq S.Pak.2.SHORT Only one char in PIPE... + + ldx #0 + +.1 lda S.Pak.Pipe,x + cmp S.Pak.Pipe+1,x + bne .2 + inx + cpx S.Pak.PipeLen + bne .1 + +.2 dex if one char.....no REP + beq .S.Pak.2.BL + dex if 2, -> REP ONE (not 2) + phx REP 1 + 0 or more....save REP count for later.... + + jsr S.Pak.2.STORE1 a = byte to store + + lda #%11100000 + plx + phx + beq .3 + ora #%00010000 + ldy #4 + jsr S.Pak.PutYBits + txa + beq .4 if not REP 2 or more no extra count + ldy #4 + jsr S.Pak.PutYBits + +.4 pla + clc + adc #2 + tay + jsr S.Pak.StripPipe Remove REP bytes from PIPE + + ldy #STATS.REP + jsr S.Pak.UpdateStats + jmp S.Pak.2.LOOP +S.Pak.2.BL +* Try finding best matching BackLink between SrcBlPtr and SrcPtr (max 512) +.4 lda S.Pak.SrcPtr + sec + sbc S.Pak.PipeLen + sta S.Pak.Limit setup Limit to SrcPtr-PIPE + lda S.Pak.SrcPtr+1 + sbc #0 + sta S.Pak.Limit+1 + +.40 lda S.Pak.SrcBlPtr + sta S.Pak.SrcBlPtrT + lda S.Pak.SrcBlPtr+1 + sta S.Pak.SrcBlPtrT+1 + +.5 txa Get PIPE Len + + clc make sure SrcBlPtrT+PIPE < Limit + adc S.Pak.SrcBlPtrT + tay + lda S.Pak.SrcBlPtrT+1 + adc #0 + cpy S.Pak.Limit + sbc S.Pak.Limit+1 + bcc .10 not enough room + + txa + dec + tay +.8 lda (S.Pak.SrcBlPtrT),y + cmp S.Pak.Pipe,y + bne .9 + dey + bpl .8 + +* Found a BL at S.Pak.SrcBlPtrT, Store it and remove X bytes from PIPE + phx save BL length + + lda #%1100000 + ldy #3 + jsr S.Pak.PutYBits + + lda S.Pak.Limit + sec + sbc S.Pak.SrcBlPtrT + php save C + + ldy #8 + jsr S.Pak.PutYBits + + plp + lda S.Pak.Limit+1 + sec + sbc S.Pak.SrcBlPtrT+1 + + jsr S.Pak.PutBit + + ply Get back BL len + phy + + jsr S.Pak.StripPipe Remove LEN bytes from PIPE + + pla Get back BL len + sec + sbc #3 Adjust Range..3-18 to 0->15 + asl + asl + asl + asl + ldy #4 store 4 bits len + jsr S.Pak.PutYBits + ldy #STATS.BL + jsr S.Pak.UpdateStats + jmp S.Pak.2.LOOP + +* No match...try starting at next byte +.9 inc S.Pak.SrcBlPtrT + bne .5 + inc S.Pak.SrcBlPtrT+1 + bra .5 +.10 dex reduce PIPE + cpx #2 2 bytes remaining? no need to BL, a BL is 16bits wide..... + bne .40 and start over from BLPtr + +* NO Bl Found, STORE +S.Pak.STORE lda S.Pak.Pipe + jsr S.Pak.2.STORE1 + ldy #1 + jsr S.Pak.StripPipe + jmp S.Pak.2.LOOP +*-------------------------------------- +S.Pak.2.STORE1 + rts +*-------------------------------------- +S.Pak.GetByte inc S.UnPak.Cnt + bne .1 + inc S.UnPak.Cnt+1 +.1 beq .9 + lda (S.Pak.SrcPtr) + pha + inc S.Pak.SrcPtr + bne .2 + inc S.Pak.SrcPtr+1 +.2 clc + rts +.9 sec + rts +*-------------------------------------- +S.Pak.PutYBits asl + jsr S.Pak.PutBit + dey + bne S.Pak.PutYBits + rts +*-------------------------------------- +* S.Pak.PutBit (bit in C) +*-------------------------------------- +S.Pak.PutBit ldx #$ff + pha + bne .1 + lda S.Pak.Byte + jsr S.Pak.PutByte + stz S.Pak.Byte + ldx #8 + +.1 dex + stx S.Pak.PutBit+1 + bcc .8 Nothing to "light up" + + lda S.Pak.Byte + lda S.Pak.BitMask,x + sta S.Pak.Byte +.8 pla + rts +*-------------------------------------- +S.Pak.PutByte sta (S.UnPak.DstPtr) + inc S.UnPak.DstPtr + bne .1 + inc S.UnPak.DstPtr+1 + +.1 inc S.Pak.Stat.Size + bne .2 + inc S.Pak.Stat.Size+1 +.2 + rts +*-------------------------------------- +* Y = count to remove from PIPE +*-------------------------------------- +S.Pak.StripPipe ldx S.Pak.PipeLen + beq .9 + + ldx #0 + +.1 lda S.Pak.Pipe+1,x + sta S.Pak.Pipe,x + inx + cpx S.Pak.PipeLen + bne .1 + dec S.Pak.PipeLen + dey + bne S.Pak.StripPipe + +.9 rts +*-------------------------------------- +S.Pak.UpdateStats + inc S.Pak.Stat.Size,y + bne .8 + inc S.Pak.Stat.Size+1,y +.8 rts +*-------------------------------------- +S.Pak.BitMask .HS 0102040810204080 +S.Pak.Src .BS 2 +S.Pak.SrcCnt .BS 2 +S.Pak.Cnt .BS 2 +S.Pak.CntL .BS 256 +S.Pak.CntH .BS 256 +S.Pak.Short4 .BS 16 +S.Pak.Short3 .BS 8 +S.Pak.Byte .BS 1 +S.Pak.Limit .BS 2 +S.Pak.PipeLen .BS 1 +S.Pak.Pipe .BS 18 +*-------------------------------------- +S.Pak.Stat.Size .BS 2 +S.Pak.Stat.BL .BS 2 +S.Pak.Stat.REP .BS 2 +S.Pak.Stat.S3 .BS 2 +S.Pak.Stat.S4 .BS 2 +*-------------------------------------- +* S.UnPak +* In : +* PULLW = Src PTR Compressed Buffer +* PULLW = Dst PTR +*-------------------------------------- +S.UnPak.SrcPtr .EQ ZPLIB +S.UnPak.DstPtr .EQ ZPLIB+2 +S.UnPak.ShrtTbl .EQ ZPLIB+4 +S.UnPak.Cnt .EQ ZPLIB+6 +*-------------------------------------- +S.UnPak >PULLW S.UnPak.SrcPtr + >PULLA Get Dst PTR LO + sec + sbc #1 + sta S.UnPak.DstPtr + >PULLA Get Dst PTR HI + sbc #0 + sta S.UnPak.DstPtr+1 setup Dst PTR-1 + + jsr S.UnPak.GetByte Get !LEN for counting up to $0000 + sta S.UnPak.Cnt + + jsr S.UnPak.GetByte + sta S.UnPak.Cnt+1 + + >LDYA S.UnPak.SrcPtr Get PTR to Short Table..... + >STYA S.UnPak.ShrtTbl and save it for SHORTx + + lda #8 + sta S.UnPak.GetBit+1 Initialize properly for first "GetBit" Call + +.1 inc S.UnPak.Cnt + bne .2 + inc S.UnPak.Cnt+1 + beq .99 + +.2 jsr S.UnPak.GetBit + bcs .4 CMD.... +*---- STORE + jsr S.UnPak.GetBit + ldx #1 + bcc .3 if CC one byte + jsr S.UnPak.Get4Bits CC + adc #2 range is 2->17 + tax + +.3 jsr S.UnPak.Get8Bits + jsr S.UnPak.PutByte + dex + bne .3 + bra .1 +.99 rts +*---- CMD +.4 jsr S.UnPak.GetBit + bcs .6 BACKLINK or REP... +*---- CMD : SHORT + lda #0 + ldy #4 + + jsr S.UnPak.GetBit if CS short3 + rol make offset 00000001 + asl ....00000010 + beq .5 + + dey if short3, only 3 bits + +.5 jsr S.UnPak.GetBit + rol + dey + bne .5 + + tay if s3, offset is 00010xxx + lda (S.UnPak.ShrtTbl),y if s4, offset is 0000xxxx + jsr S.UnPak.PutByte + bra .1 +*---- CMD : BACKLINK or REP +.6 jsr S.UnPak.GetBit + bcs .8 if CS -> REP +*---- CMD : BACKLINK + jsr S.UnPak.Get8Bits get Offset LO, (CC) + eor #$ff !offset LO + adc S.UnPak.DstPtr equiv. SUB offset + sta .7+1 PTR to Backlink LO + lda S.UnPak.DstPtr+1 + bcs .61 if ADC sets C, no need to dec HI + dec +.61 jsr S.UnPak.GetBit get Offset HI in C + bcc .62 + dec +.62 sta .7+2 PTR to Backlink HI + + jsr S.UnPak.Get4Bits CC + adc #3 Backlink are ate least 3 bytes... + tax + ldy #0 + +.7 lda $ffff,y Self Modified code : PTR to Backlink + jsr S.UnPak.PutByte + iny + dex + bne .7 + beq .1 +*---- CMD : REP +.8 jsr S.UnPak.GetBit + ldx #1 + bcc .9 REP 1 + + jsr S.UnPak.Get4Bits REP xxxx, CC + adc #2 range is 2->17 + tax + +.9 lda (S.UnPak.DstPtr) Get Last Byte + jsr S.UnPak.PutByte + dex + bne .9 + beq .1 +*-------------------------------------- +S.UnPak.Get8Bits + ldy #8 + .HS 2C bit abs +S.UnPak.Get4Bits + ldy #4 + lda #0 make sure to reset A before reading less than 8 bits only +.1 jsr S.UnPak.GetBit and to exit with CC if even if 8 bits read + rol + dey + bne .1 + rts always CC +*-------------------------------------- +S.UnPak.GetBit ldx #$ff Self Modified code + bne .1 + jsr S.UnPak.NxtByte + + ldx #8 + +.1 dex + stx S.UnPak.GetBit+1 + + pha Don't trash A + lda (S.UnPak.SrcPtr) + and S.UnPak.BitMask,x + cmp #1 if 0:CC, i>0 CS + + pla + rts Bit is in C +*-------------------------------------- +S.UnPak.GetByte lda (S.UnPak.SrcPtr) +S.UnPak.NxtByte inc S.UnPak.SrcPtr + bne .8 + inc S.UnPak.SrcPtr+1 +.8 rts +*-------------------------------------- +S.UnPak.PutByte inc S.UnPak.DstPtr + bne .8 + inc S.UnPak.DstPtr+1 +.8 sta (S.UnPak.DstPtr) + rts +*-------------------------------------- +S.UnPak.BitMask .HS 8040201008040201 +MAN +SAVE LIB/LIBPAK.S +ASM diff --git a/SBIN/NFSD.S.txt b/SBIN/NFSD.S.txt new file mode 100644 index 00000000..9a60f026 --- /dev/null +++ b/SBIN/NFSD.S.txt @@ -0,0 +1,231 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BOOT/SBIN/NFSD +*-------------------------------------- + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I + .INB /A2OSX.DEV/INC/LIBTCPIP.I +*-------------------------------------- +TIMEOUT.MAX .EQ 30 30 sec. +*-------------------------------------- +ZPIPCfgPtr .EQ ZPBIN +ZPSktPtr .EQ ZPBIN+2 +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Length To Relocate + .DA DS.END-DS.START Data Segment to Allocate + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT + .DA CS.HOOK +L.LIBTCPIP .DA LIBTCPIP +L.Socket .DA Socket +L.MSG.TCPWAIT .DA MSG.TCPWAIT +L.MSG.INITOK .DA MSG.INITOK +L.MSG.TCPIPERR .DA MSG.TCPIPERR +L.MSG.SKTERR .DA MSG.SKTERR +L.MSG.ABORT .DA MSG.ABORT +L.MSG.INCOMING .DA MSG.INCOMING + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLibYA + sta hLIBTCPIP + + lda (pPs) + ora #S.PS.F.EVENT Now accept events + sta (pPs) + clc + rts +*-------------------------------------- +CS.RUN jsr Init.Timeout + + >LDYA L.MSG.TCPWAIT + >SYSCALL PSTROutYA + +.1 >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? + bcs .99 + >STYA ZPIPCfgPtr + + lda (ZPIPCfgPtr) Configured ? + bmi CS.RUN.INIT + + >SYSCALL Sleep + jsr Wait.Timeout + bcc .1 + +.99 >LDYA L.MSG.TCPIPERR + >SYSCALL PSTROutYA + lda #SYSMGR.ERRSYN + sec + rts + +CS.RUN.INIT ldx #3 + ldy #S.IPCFG.IP+3 +.1 lda (ZPIPCfgPtr),y + sta Socket.Src.Addr,x + dey + dex + bpl .1 + + >PUSHW L.Socket + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.NEW + bcs .9 + txa + ldy #hSocket + sta (pData),y + + >LDYA L.MSG.INITOK + >SYSCALL PSTROutYA + +.11 >SYSCALL Sleep + ldy #bCTRLC + lda (pData),y + bmi .99 + bra .11 + + ldy #hSocket + lda (pData),y + + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ACCEPTA + bcs .11 + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GETA + >STYA ZPSktPtr + + ldx #3 + ldy #S.SOCKET.DST.ADDR+3 + +.2 >PUSHB (ZPSktPtr),y + dey + dex + bpl .2 + + >LDYA L.MSG.INCOMING + >SYSCALL PSTROutYA + bra .11 + +.9 >LDYA L.MSG.SKTERR + >SYSCALL PSTROutYA + lda #SYSMGR.ERRSYN + sec + rts + +.99 >LDYA L.MSG.ABORT + >SYSCALL PSTROutYA + lda #0 + sec + rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .1 is it a TIMER event? + + asl One second ? + bpl .9 + + ldy #TimeOut + lda (pData),y + beq .9 + + dec + sta (pData),y + sec do not discard TIMER event + rts + +.1 bit #S.EVT.F.KEY is it a KEY event? + beq .9 + + ldy #S.EVT.DATAHI is it an O or SAPPLE key ? + lda (pEvent),y + bne .9 + + ldy #S.EVT.DATALO + lda (pEvent),y + cmp #$03 Ctrl-C + bne .9 + + lda #$FF + ldy #bCTRLC + sta (pData),y + clc + rts + +.9 sec + rts +*-------------------------------------- +CS.QUIT ldy #hSocket + lda (pData),y + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA + + lda hLIBTCPIP + >SYSCALL UnloadLibA + clc + rts +*-------------------------------------- +CS.HOOK +*-------------------------------------- +Init.Timeout ldy #TimeOut + lda #TIMEOUT.MAX + sta (pData),y + rts +*-------------------------------------- +Wait.TimeOut sec + ldy #TimeOut + lda (pData),y + beq .9 + ldy #bCTRLC + lda (pData),y + bmi .9 + clc +.9 rts +*-------------------------------------- +CS.END +*-------------------------------------- +LIBTCPIP >PSTR "libtcpip.o" +MSG.TCPWAIT >PSTR "NFSD:Waiting for TCP/IP initializing...\n" +MSG.INITOK >PSTR "NFSD:Init Ok, Listening.\n" +MSG.TCPIPERR >PSTR "NFSD:TCP/IP Not initialized properly\n" +MSG.SKTERR >PSTR "NFSD:Listen Error\n" +MSG.ABORT >PSTR "NFSD:User Aborted\n" +MSG.INCOMING >PSTR "NFSD:Incoming Connection From : %d.%d.%d.%d\n" +hLIBTCPIP .BS 1 +*-------------------------------------- +Socket .DA #S.SOCKET.SOCK.DGRAM + .DA #S.SOCKET.SO.ACCEPTCONN + .DA #S.SOCKET.STATUS.LISTEN + .BS 1 +Socket.Src.Addr .BS 4 +Socket.Src.Port .DA 2049 +Socket.Dst.Addr .BS 4 +Socket.Dst.Port .BS 2 + .BS 16 +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +TimeOut .BS 1 +bCTRLC .BS 1 +hSocket .BS 1 +DS.END + .ED +*-------------------------------------- +MAN +SAVE SBIN/NFSD.S +ASM diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index e8628ce8..2304c552 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -129,7 +129,7 @@ Cmd.Exec.EXT ldy #1 >SYSCALL STAT bcs .99 - lda STAT+S.STAT.PRODOS.TYPE + lda STAT+S.STAT.P.TYPE cmp #$04 TXT File ? beq Cmd.Exec.EXT.TXT cmp #$06 BIN File ? @@ -283,7 +283,7 @@ Cmd.Exec.CD1 stz UsrBuf256 >SYSCALL STAT bcs .9 - lda STAT+S.STAT.PRODOS.TYPE + lda STAT+S.STAT.P.TYPE cmp #$0F Directory ? bne Cmd.Exec.ERRSYN diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 6af3827b..25669cd4 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -31,7 +31,7 @@ K.LoadEXEYA.1 >PUSHWI KrnBuf256 jsr K.STAT Look for AUXTYPE bcs .9 - >LDYA KrnBuf256+S.STAT.PRODOS.AUXTYPE + >LDYA KrnBuf256+S.STAT.P.AUXTYPE >STYA BIN.Relocate.Start >PUSHYA Push AUXTYPE diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt index 5d6a6a7d..5212e6aa 100644 --- a/SYS/KERNEL.S.CIO.txt +++ b/SYS/KERNEL.S.CIO.txt @@ -86,14 +86,16 @@ K.SScanF jsr PullPtr1Ptr2Ptr3 .9 sec rts *-------------------------------------- -K.SScanF.IncPtr1 dex +K.SScanF.IncPtr1 + dex beq .1 inc ZPQuickPtr1 bne .1 inc ZPQuickPtr1+1 never Zero .1 rts *-------------------------------------- -K.SScanF.IsDigit cmp #'0' +K.SScanF.IsDigit + cmp #'0' bcc .1 cmp #'9'+1 bcs .1 @@ -496,6 +498,22 @@ K.COutA phx plx rts */-------------------------------------- +* #FPutCAY +* Print A (char) to File +* ##In: +* A : char to print +* Y = hFILE +* none. +* ##Out: +* CC = success +*\-------------------------------------- +K.FPutCAY sta K.PutC.Char + sty K.PutC.Node + tya + bne K.PutCA.1 +K.PutCA.8 clc + rts +*/-------------------------------------- * #PutCA * Print A (char) to StdOut * ##In: @@ -504,10 +522,77 @@ K.COutA phx * ##Out: * CC = success *\-------------------------------------- -K.FPutCA - -K.PutCA - ldx #DEVMGR..WRITE +K.PutCA sta K.PutC.Char + ldy #S.PS.hStdOut + lda (pPs),y + beq K.PutCA.8 NUL + +K.PutCA.1 sta K.PutC.Node + jsr K.GetMemPtrA + >STYA pNode + + ldy #S.NODE.T + lda (pNode),y + asl + tax + jmp (K.PutCA.Jmp,x) +*-------------------------------------- +K.PutCA.Jmp .DA K.PutCA.REG + .DA K.PutCA.IOERR DIR + .DA K.PutCA.CDEV + .DA K.PutCA.IOERR BDEV + .DA K.PutCA.IOERR LNK + .DA K.PutCA.IOERR DSOCK + .DA K.PutCA.SSOCK + .DA K.PutCA.FIFO +*-------------------------------------- +K.PutCA.REG lda K.PutC.Node + ldy K.PutC.Char + jmp K.FWriteAY +*-------------------------------------- +K.PutCA.CDEV +*-------------------------------------- +K.PutCA.SSOCK +*-------------------------------------- +K.PutCA.FIFO ldy #S.NODE.FIFO.S + lda (pNode),y + beq .9 Remote PS did not opened yet the pipe + cmp #S.NODE.FIFO.S.Closed + beq .99 Remote PS closed the Pipe + + ldy #S.NODE.FIFO.hMem + lda (pNode),y + jsr K.GetMemPtrA + >STYA .1+2 + + ldy #S.NODE.FIFO.Head + lda (pNode),y + inc + iny + cmp (pNode),y + beq .9 FIFO is full + dey + sta (pNode),y + tay + lda K.PutC.Char +.1 sta $ffff,y + clc + rts + +.9 lda #MLI.ERR.VOLFULL + sec + rts + +.99 lda #MLI.ERR.EOF + sec + rts +*-------------------------------------- +K.PutCA.IOERR lda #MLI.ERR.IO + sec + rts +*-------------------------------------- +K.PutC.Char .BS 1 +K.PutC.Node .BS 1 *-------------------------------------- K.FGetC *-------------------------------------- @@ -559,7 +644,7 @@ PRINTDEC lda PADLEN any Len format ? clc .9 rts *-------------------------------------- -TYPES .AS "-pcbdls" +TYPES .AS "-dbclssp" ACCESS .AS "rwxrwxrwx" SIGN .BS 1 PADLEN .BS 1 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 1c255b41..5505b80b 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -10,7 +10,7 @@ AUTO 6 * A = DevID * ##OUT: * CC = OK, CS = ERROR -* Y,A = devslot +* Y,A = DEVSLOT * note: X Unmodified *\-------------------------------------- K.GetDevByIDA cmp DevMgr.LastDevID @@ -41,7 +41,7 @@ K.GetDevByIDA cmp DevMgr.LastDevID * ##OUT: * CC = OK, CS = ERROR * X = DEVID -* Y,A = pDev +* Y,A = DEVSLOT *\-------------------------------------- K.GetDevByNameYA >STYA ZPQuickPtr1 @@ -108,15 +108,33 @@ K.GetDevInfoA jsr K.GetDevByIDA * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MkNodYA jsr K.GetDevByNameYA +K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME,Ptr2=DEVSLOT bcs .9 - >PUSHWI S.FILE.DEV + >PUSHWI S.NODE.DEV >PUSHBI S.MEM.F.INIT0 jsr K.GetMem - bcs + bcs .9 - + >STYA ZPQuickPtr3 Ptr3=S.NODE + + ldy #S.DEV.DEVID + lda (ZPQuickPtr2),y + pha + + iny #S.DEV.F + lda (ZPQuickPtr2),y + asl CS if Block device + + ldy #S.NODE.T + lda #S.NODE.T.CDEV + adc #0 add CS if blok + sta (ZPQuickPtr3),y + + iny #S.NODE.DEV.ID + pla + sta (ZPQuickPtr3),y + clc .9 rts */-------------------------------------- @@ -134,7 +152,7 @@ K.MKFIFO >PUSHWI 256 phx save FIFO buffer - >PUSHWI S.FILE.FIFO + >PUSHWI S.NODE.FIFO >PUSHBI S.MEM.F.INIT0 jsr K.GetMem @@ -142,11 +160,11 @@ K.MKFIFO >PUSHWI 256 >STYA ZPQuickPtr1 - ldy #S.FILE.T - lda #S.FILE.T.FIFO + ldy #S.NODE.T + lda #S.NODE.T.FIFO sta (ZPQuickPtr1),y - iny S.FILE.FIFO.hMem + iny S.NODE.FIFO.hMem pla sta (ZPQuickPtr1),y txa diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index b7aca637..77fbb2ec 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -18,7 +18,7 @@ K.OpenDirYA jsr PFT.CheckPathYA >STYA ZPQuickPtr2 >STYA MLICALL.PARAMS+1 For GETFILEINFO,MLIOPEN - >PUSHWI S.DIR.PRODOS + >PUSHWI S.NODE.DIR >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs .9 @@ -51,14 +51,14 @@ K.OpenDirYA jsr PFT.CheckPathYA >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call txa - ldy #S.DIR.PRODOS.IOBUF + ldy #S.NODE.DIR.IOBUF sta (ZPQuickPtr1),y >MLICALL MLIOPEN bcs .98 lda MLICALL.PARAMS+5 get ref_num - ldy #S.DIR.PRODOS.REF + ldy #S.NODE.DIR.REF sta (ZPQuickPtr1),y .8 lda K.ReadDirA.hDir @@ -92,26 +92,26 @@ K.ReadDirA.EL .BS 1 K.ReadDirA.EPB .BS 1 K.ReadDirA.EC .BS 2 *-------------------------------------- -K.ReadDirA jsr PFT.CheckDirA +K.ReadDirA jsr PFT.CheckNodeA sta K.ReadDirA.hDir jsr K.GetMemPtrA >STYA ZPQuickPtr1 - ldy #S.DIR.F - lda (ZPQuickPtr1),y - and #S.DIR.F.NOMORE - bne .9 - - ldy #S.DIR.PRODOS.REF + ldy #S.NODE.DIR.REF lda (ZPQuickPtr1),y beq K.ReadDirA.ROOT jmp K.ReadDirA.DIR -.9 lda #0 +K.ReadDirA.NoMore + lda #0 sec CS,A=0 no more entry rts *-------------------------------------- -K.ReadDirA.ROOT stz MLICALL.PARAMS+1 All Volumes +K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? + lda (ZPQuickPtr1),y + bne K.ReadDirA.NoMore + + stz MLICALL.PARAMS+1 All Volumes >LDYAI KrnBuf256 >STYA MLICALL.PARAMS+2 @@ -182,24 +182,24 @@ K.ReadDirA.ROOT stz MLICALL.PARAMS+1 All Volumes lda #0 rol inc - sta KrnSTAT+S.STAT.PRODOS.DRIVE + sta KrnSTAT+S.STAT.P.DRIVE pla lsr CC lsr lsr lsr lsr - sta KrnSTAT+S.STAT.PRODOS.SLOT + sta KrnSTAT+S.STAT.P.SLOT >LDYAI KrnOut256 >STYA MLICALL.PARAMS+1 >MLICALL MLIGETFILEINFO - sta KrnSTAT+S.STAT.PRODOS.DEVSTATUS + sta KrnSTAT+S.STAT.P.DEVSTATUS bcs .80 >LDYA MLICALL.PARAMS+5 AUXTYPE=TOTAL BLOCKS - >STYA KrnSTAT+S.STAT.PRODOS.DEVBLOCKS + >STYA KrnSTAT+S.STAT.P.DEVBLOCKS >LDYA MLICALL.PARAMS+8 >STYA KrnSTAT+S.STAT.BLOCKS @@ -217,9 +217,9 @@ K.ReadDirA.ROOT stz MLICALL.PARAMS+1 All Volumes * lda #0 done by S.MEM.F.INIT0 * sta (ZPQuickPtr4) Ending 0 - ldy #S.DIR.F - lda #S.DIR.F.NOMORE - sta (ZPQuickPtr1),y + ldy #S.NODE.DIR.FC + lda #16 + sta (ZPQuickPtr1),y Flag that we returned somthing for next time lda K.ReadDirA.hDIRENT tax @@ -252,7 +252,7 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF >MLICALL MLIREAD Read A block from directory bcs .98 - ldy #S.DIR.PRODOS.EL Check if first run.... + ldy #S.NODE.DIR.EL Check if first run.... lda (ZPQuickPtr1),y bne .2 no, we have all we need.... @@ -274,7 +274,7 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF sec .99 rts -.2 ldy #S.DIR.PRODOS.EL+3 +.2 ldy #S.NODE.DIR.EL+3 ldx #3 .3 lda (ZPQuickPtr1),y get this session parameters from S.DIR @@ -417,7 +417,7 @@ K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf >STYA ZPQuickPtr1 ldx #3 - ldy #S.DIR.PRODOS.EL+3 + ldy #S.NODE.DIR.EL+3 .81 lda K.ReadDirA.EL,x Store back this session prameters to S.DIR sta (ZPQuickPtr1),y @@ -468,7 +468,7 @@ K.ReadDirA.ADD.. * sta KrnSTAT+S.STAT.BLOCKS+1 *-------------------------------------- K.ReadDirA.ADDD lda #$0F - sta KrnSTAT+S.STAT.PRODOS.TYPE + sta KrnSTAT+S.STAT.P.TYPE lda /S.STAT.MODE.DIR sta KrnSTAT+S.STAT.MODE+1 @@ -569,9 +569,9 @@ K.ReadDirA.ConvertTime jmp K.PTime2Time Will destroy Ptr1 & Ptr2 !!!! *-------------------------------------- ADDF.SRC .HS 1013141516171f20 -ADDF.DST .DA #S.STAT.PRODOS.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 +ADDF.DST .DA #S.STAT.P.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 .DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2 - .DA #S.STAT.PRODOS.AUXTYPE,#S.STAT.PRODOS.AUXTYPE+1 + .DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1 */------------------------------------- * #CloseDirA * ##In: @@ -579,18 +579,18 @@ ADDF.DST .DA #S.STAT.PRODOS.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 * ##Out: * none, always succeed. *\------------------------------------- -K.CloseDirA jsr PFT.CheckDirA +K.CloseDirA jsr PFT.CheckNodeA sta K.ReadDirA.hDir jsr K.GetMemPtrA >STYA ZPQuickPtr1 -K.CloseDirA.1 ldy #S.DIR.PRODOS.REF +K.CloseDirA.1 ldy #S.NODE.DIR.REF lda (ZPQuickPtr1),y beq .1 sta MLICALL.PARAMS+1 >MLICALL MLICLOSE -.1 ldy #S.DIR.PRODOS.IOBUF +.1 ldy #S.NODE.DIR.IOBUF lda (ZPQuickPtr1),y beq .2 jsr K.FreeMemA diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index 69c4e02d..04159ee9 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -58,7 +58,7 @@ K.FOPEN jsr PFT.CheckPathSTK bcc K.FOPEN.10 K.FOPEN.9 rts -K.FOPEN.10 >PUSHWI S.FILE.T.REG +K.FOPEN.10 >PUSHWI S.NODE.REG >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs K.FOPEN.9 @@ -73,14 +73,14 @@ K.FOPEN.10 >PUSHWI S.FILE.T.REG >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call txa - ldy #S.FILE.REG.IOBUF + ldy #S.NODE.REG.IOBUF sta (ZPQuickPtr1),y >MLICALL MLIOPEN bcs .98 lda MLICALL.PARAMS+5 get ref_num - ldy #S.FILE.REG.REF + ldy #S.NODE.REG.REF sta (ZPQuickPtr1),y sta MLICALL.PARAMS+1 Next MLI Calls are REF_NUM based @@ -115,8 +115,8 @@ K.FOPEN.10 >PUSHWI S.FILE.T.REG sta MLICALL.PARAMS+3 >MLICALL MLINEWLINE -.30 ldy #S.FILE.T - lda #S.FILE.T.REG +.30 ldy #S.NODE.T + lda #S.NODE.T.REG sta (ZPQuickPtr1),y lda hFILE clc @@ -139,18 +139,18 @@ hFILE .BS 1 * A = hFILE * ##Out : *\-------------------------------------- -K.FCloseA jsr PFT.CheckFileA +K.FCloseA jsr PFT.CheckNodeA sta hFILE jsr K.GetMemPtrA >STYA ZPQuickPtr1 -K.FCloseA.1 ldy #S.FILE.REG.REF +K.FCloseA.1 ldy #S.NODE.REG.REF lda (ZPQuickPtr1),y beq .1 sta MLICALL.PARAMS+1 >MLICALL MLICLOSE -.1 ldy #S.FILE.REG.IOBUF +.1 ldy #S.NODE.REG.IOBUF lda (ZPQuickPtr1),y beq .2 jsr K.FreeMemA @@ -159,6 +159,39 @@ K.FCloseA.1 ldy #S.FILE.REG.REF jsr K.FreeMemA rts */-------------------------------------- +* #FReadA +* Read ONE byte from file +* ##In : +* A = hFILE +* ##Out : +* A = Byte Read +*\-------------------------------------- +K.FReadA jsr PFT.CheckNodeA + ldx #MLIREAD + bra K.FReadWrite.0 +*/-------------------------------------- +* #FWriteAY +* ##In: +* A = hFILE +* Y = char +* #Out: +* Y,A = Bytes Written +*\-------------------------------------- +K.FWriteAY jsr PFT.CheckNodeA + sty MLICALL.TMPBUF + ldx #MLIWRITE +K.FReadWrite.0 jsr FILE.SetupPrt1A + >LDYAI MLICALL.TMPBUF + >STYA MLICALL.PARAMS+2 + lda #1 + sta MLICALL.PARAMS+4 + stz MLICALL.PARAMS+5 + lda #4 Param Count = 4 for MLIREAD & MLIWRITE + jsr A2osX.MLICALL + bcs .9 + lda MLICALL.TMPBUF +.9 rts +*/-------------------------------------- * #FRead * Read bytes from file * ##In : @@ -168,9 +201,9 @@ K.FCloseA.1 ldy #S.FILE.REG.REF * ##Out : * Y,A = Bytes Read *\-------------------------------------- -K.FRead jsr PFT.CheckFileSTK +K.FRead jsr PFT.CheckNodeSTK ldx #MLIREAD - bra K.FRead.1 + bra K.FReadWrite.1 */-------------------------------------- * #FWrite * ##In: @@ -180,15 +213,13 @@ K.FRead jsr PFT.CheckFileSTK * #Out: * Y,A = Bytes Written *\-------------------------------------- -K.FWrite jsr PFT.CheckFileSTK +K.FWrite jsr PFT.CheckNodeSTK ldx #MLIWRITE -K.FRead.1 >PULLA +K.FReadWrite.1 >PULLA jsr FILE.SetupPrt1A >PULLW MLICALL.PARAMS+4 >PULLW MLICALL.PARAMS+2 -* >MLICALL MLIWRITE - lda #4 Param Count = 4 for MLIREAD & MLIWRITE jsr A2osX.MLICALL bcs .9 @@ -199,7 +230,7 @@ K.FRead.1 >PULLA * ##In: * A = hFILE *\-------------------------------------- -K.FFlushA jsr PFT.CheckFileA +K.FFlushA jsr PFT.CheckNodeA jsr FILE.SetupPrt1A >MLICALL MLIFLUSH rts @@ -211,7 +242,7 @@ K.FFlushA jsr PFT.CheckFileA * PUSHB = From * PUSHB = hFILE *\------------------------------------- -K.FSeek jsr PFT.CheckFileSTK +K.FSeek jsr PFT.CheckNodeSTK >PULLA jsr FILE.SetupPrt1A >PULLB K.FSEEK.FROM @@ -269,7 +300,7 @@ K.FSEEK.OFFSET .BS 4 * ##Out: * Y,A,X = Offset *\-------------------------------------- -K.FTellA jsr PFT.CheckFileA +K.FTellA jsr PFT.CheckNodeA K.FTellA.1 jsr FILE.SetupPrt1A >MLICALL MLIGETMARK bcs .9 @@ -286,7 +317,7 @@ K.FTellA.1 jsr FILE.SetupPrt1A * A !=0 NOT EOF * CS : *\-------------------------------------- -K.FEOFA jsr PFT.CheckFileA +K.FEOFA jsr PFT.CheckNodeA jsr FILE.SetupPrt1A jsr K.FTELLA.1 bcs .9 @@ -347,7 +378,7 @@ K.Stat jsr PFT.CheckPathSTK *-------------------------------------- FILE.SetupPrt1A jsr K.GetMemPtrA >STYA ZPQuickPtr1 - ldy #S.FILE.PRODOS.REF + ldy #S.NODE.REG.REF lda (ZPQuickPtr1),y sta MLICALL.PARAMS+1 rts @@ -368,7 +399,7 @@ FILE.MLI2STAT sta (ZPQuickPtr2),y ldx #2 - ldy #S.STAT.PRODOS.TYPE+2 + ldy #S.STAT.P.TYPE+2 .3 lda MLICALL.PARAMS+S.FILEINFO.TYPE,x sta (ZPQuickPtr2),y diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 14e70fe2..546e620d 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -85,10 +85,9 @@ PFT.CheckPathYA * PULLB/A = hFILE/hDIR * Out : *-------------------------------------- -PFT.CheckFileSTK +PFT.CheckNodeSTK lda (pStack) read hFILE on top of stack -PFT.CheckFileA -PFT.CheckDirA stx S.PFT.SYSCALL save #SYSCALL +PFT.CheckNodeA stx S.PFT.SYSCALL save #SYSCALL sta S.PFT.hFILE jsr K.GetMemPtrA X = unmidified >STYA ZPQuickPtr1 diff --git a/_Docs/KERNEL.md b/_Docs/KERNEL.md index b92b00bf..1dac1699 100644 --- a/_Docs/KERNEL.md +++ b/_Docs/KERNEL.md @@ -70,6 +70,27 @@ Prints Pascal/C-Style String + CC : success + CS : I/O error from COut +#FPutCAY +Print A (char) to File + +##In: ++ A : char to print ++ Y = hFILE ++ none. + +##Out: ++ CC = success + +#PutCA +Print A (char) to StdOut + +##In: ++ A : char to print ++ none. + +##Out: ++ CC = success + #GetDevByIDA ##IN: @@ -77,7 +98,7 @@ Prints Pascal/C-Style String ##OUT: + CC = OK, CS = ERROR -+ Y,A = devslot ++ Y,A = DEVSLOT + note: X Unmodified #GetDevIDByNameYA @@ -88,7 +109,7 @@ Prints Pascal/C-Style String ##OUT: + CC = OK, CS = ERROR + X = DEVID -+ Y,A = pDev ++ Y,A = DEVSLOT #GetDevInfoA @@ -99,6 +120,25 @@ Prints Pascal/C-Style String + CC = OK, CS = ERROR + Y,A = Ptr to S.DEVINFO +#MkNodYA +return a S.FILE from a given Device + +##IN: ++ Y,A=DevName + +##OUT: ++ CC = OK, CS = ERROR ++ A = hFILE + +#MKFIFO +return a S.FILE to a new FIFO + +##IN: + +##OUT: ++ CC = OK, CS = ERROR ++ A = hFILE + #OpenDirYA ##In: @@ -207,6 +247,24 @@ Close a file ##Out : +#FReadA +Read ONE byte from file + +##In : ++ A = hFILE + +##Out : ++ A = Byte Read + +#FWriteAY + +##In: ++ A = hFILE ++ Y = char + +#Out: ++ Y,A = Bytes Written + #FRead Read bytes from file