From ad49295e8fdb0fd2cdce54bff7a80137caf76757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 10 Jul 2018 17:33:13 +0200 Subject: [PATCH] Kernel 0.9.2 --- DRV/CONSOLE.DRV.S.txt | 4 +- INC/A2osX.I.txt | 84 +++++++++++----------- INC/KERNEL.I.txt | 17 +++-- LIB/LIBTCPIP.S.SKT.txt | 12 ++-- LIB/LIBTCPIP.S.txt | 14 ++-- SYS/KERNEL.S.DEV.txt | 18 +++-- SYS/KERNEL.S.DIRENT.txt | 20 +++--- SYS/KERNEL.S.DRV.txt | 16 ++--- SYS/KERNEL.S.INIT.txt | 156 ++++++++++++++++++++++------------------ SYS/KERNEL.S.IO.txt | 62 +++++++++------- SYS/KERNEL.S.IRQ.txt | 27 +++---- SYS/KERNEL.S.STAT.txt | 24 +++---- SYS/KERNEL.S.STDIO.txt | 56 ++++++--------- 13 files changed, 258 insertions(+), 252 deletions(-) diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 8d1325ea..9df61145 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -41,7 +41,7 @@ Dev.Detect >LDYA L.MSG.DETECT >SYSCALL InsDrv bcs .9 - >STYA DEV.NODE+S.NODE.DEV.DRVPTR + >STYA DEV.NODE+S.FD.DEV.DRVPTR >LDYA L.NODE >SYSCALL MKNOD @@ -50,7 +50,7 @@ Dev.Detect >LDYA L.MSG.DETECT CS.END MSG.DETECT .AZ "Apple IIe/IIc 80 Col Driver.\r\n" *-------------------------------------- -NODE .DA #S.NODE.T.CDEV +NODE .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #0 DEVID diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 1eab4858..569b9eee 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -282,7 +282,7 @@ S.MSTAT .EQ 24 C.EOF .EQ 4 *-------------------------------------- DEVID.NULL .EQ 0 -DEVID.SYS .EQ 2 +DEVID.SYS .EQ 1 *-------------------------------------- IOCTL.STATUS .EQ 0 X,Y = byte count returned IOCTL.READBLOCK .EQ 2 @@ -359,59 +359,59 @@ S.DSTAT.VERSION .EQ 23 * S.DSTAT .EQ 25 *-------------------------------------- -* S.NODE +* S.FD *-------------------------------------- -S.NODE.T .EQ 0 -S.NODE.T.REG .EQ 0 -S.NODE.T.DIR .EQ 2 -S.NODE.T.CDEV .EQ 4 -S.NODE.T.BDEV .EQ 6 -S.NODE.T.LNK .EQ 8 -S.NODE.T.DSOCK .EQ 10 -S.NODE.T.SSOCK .EQ 12 -S.NODE.T.FIFO .EQ 14 -S.NODE.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....) +S.FD.T .EQ 0 +S.FD.T.REG .EQ 0 +S.FD.T.DIR .EQ 2 +S.FD.T.CDEV .EQ 4 +S.FD.T.BDEV .EQ 6 +S.FD.T.LNK .EQ 8 +S.FD.T.DSOCK .EQ 10 +S.FD.T.SSOCK .EQ 12 +S.FD.T.FIFO .EQ 14 +S.FD.HANDLER .EQ 1 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....) *-------------------------------------- -S.NODE.REG.REF .EQ 2 -S.NODE.REG.IOBUF .EQ 3 +S.FD.REG.REF .EQ 2 +S.FD.REG.IOBUF .EQ 3 * -S.NODE.REG .EQ 4 +S.FD.REG .EQ 4 *-------------------------------------- -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.FD.DIR.REF .EQ 2 +S.FD.DIR.IOBUF .EQ 3 +S.FD.DIR.EL .EQ 4 +S.FD.DIR.EPB .EQ 5 +S.FD.DIR.FC .EQ 6 word * -S.NODE.DIR .EQ 8 +S.FD.DIR .EQ 8 *-------------------------------------- -S.NODE.DEV.BUSID .EQ 2 -S.NODE.DEV.DEVID .EQ 3 -S.NODE.DEV.BUSPTR .EQ 4 word -S.NODE.DEV.DRVPTR .EQ 6 word -S.NODE.DEV.NAME .EQ 8 C-String +S.FD.DEV.BUSID .EQ 2 +S.FD.DEV.DEVID .EQ 3 +S.FD.DEV.BUSPTR .EQ 4 word +S.FD.DEV.DRVPTR .EQ 6 word +S.FD.DEV.NAME .EQ 8 C-String * -S.NODE.DEV .EQ 16 +S.FD.DEV .EQ 16 *-------------------------------------- -* S.NODE.LNK +* S.FD.LNK *-------------------------------------- -S.NODE.SSOCK.HSKT .EQ 2 -S.NODE.SSOCK.OPEN .EQ 3 -S.NODE.SSOCK.CLOSE .EQ 4 -S.NODE.SSOCK.READ .EQ 5 -S.NODE.SSOCK.WRITE .EQ 6 -S.NODE.SSOCK.STATUS .EQ 7 +S.FD.SSOCK.HSKT .EQ 2 +S.FD.SSOCK.OPEN .EQ 3 +S.FD.SSOCK.CLOSE .EQ 4 +S.FD.SSOCK.READ .EQ 5 +S.FD.SSOCK.WRITE .EQ 6 +S.FD.SSOCK.STATUS .EQ 7 * -S.NODE.SSOCK .EQ 8 +S.FD.SSOCK .EQ 8 *-------------------------------------- -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.FD.FIFO.S .EQ 2 +S.FD.FIFO.S.Opened .EQ 1 +S.FD.FIFO.S.Closed .EQ 2 +S.FD.FIFO.hMem .EQ 3 +S.FD.FIFO.Tail .EQ 4 +S.FD.FIFO.Head .EQ 5 * -S.NODE.FIFO .EQ 6 +S.FD.FIFO .EQ 6 *-------------------------------------- * PS STRUCT *-------------------------------------- diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index ca020ddf..b9692cbc 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -21,7 +21,7 @@ ZPPtr4 .EQ ZPKERNEL+6 pIOCTL .EQ ZPKERNEL+8 pDev .EQ ZPKERNEL+10 -pNode .EQ ZPKERNEL+12 +pFD .EQ ZPKERNEL+12 pIOBuf .EQ ZPKERNEL+14 *-------------------------------------- SYS.BASL0 .EQ $800 @@ -102,22 +102,25 @@ K.STACKTOP .EQ $03ED XFer !!! down to $3E0 *-------------------------------------- *** $3F0-$3FF IRQ Handler.... *** *-------------------------------------- -* Main/Aux $400 -> $7FF : TXT PAGE1 System Screen -* Main/Aux $800 -> $BFF : TXT PAGE2 Console Screen +* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen +* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen *-------------------------------------- * free $0C00->$17FF = $C00 (3072) Aux *-------------------------------------- -K.Buf256 .EQ $0C00 Main +Dev.Table.hMem .EQ $0C00 K.Dev.MAX +Dev.Table.F .EQ $0C20 K.Dev.MAX +Dev.Table.PTRLO .EQ $0C40 K.Dev.MAX +Dev.Table.PTRHI .EQ $0C60 K.Dev.MAX *-------------------------------------- -PS.Table.PID .EQ $0D00 K.PS.MAX -PS.Table.hMem .EQ $0D20 K.PS.MAX +PS.Table.hMem .EQ $0D00 K.PS.MAX +PS.Table.PID .EQ $0D20 K.PS.MAX PS.Table.Stat .EQ $0D40 K.PS.MAX *-------------------------------------- Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b *-------------------------------------- Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b *-------------------------------------- -Dev.Table .EQ $0E00 K.Dev.MAX*2=32*2=64b +K.Buf256 .EQ $0E00 *-------------------------------------- K.IOBuf .EQ $0F00 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index e425fc93..1c608ff5 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -301,17 +301,17 @@ SKT.AcceptA jsr SKT.GetA.I * A = hFile *\-------------------------------------- SKT.MkNodA sta .1+1 - >LDYAI S.NODE.SSOCK + >LDYAI S.FD.SSOCK >SYSCALL GetMem0.YA bcs .9 >STYA ZPTmpPtr1 - ldy #S.NODE.T - lda #S.NODE.T.SSOCK + ldy #S.FD.T + lda #S.FD.T.SSOCK sta (ZPTmpPtr1),y - ldy #S.NODE.SSOCK.HSKT + ldy #S.FD.SSOCK.HSKT .1 lda #$ff sta (ZPTmpPtr1),y @@ -325,9 +325,9 @@ SKT.MkNodA sta .1+1 >STYA ZPTmpPtr1 - ldy #S.NODE.SSOCK-1 + ldy #S.FD.SSOCK-1 -.2 lda NODE.SSOCK,y +.2 lda FD.SSOCK,y sta (ZPTmpPtr1),y dey bpl .2 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index cc6c6e98..c5c6ec8f 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -112,7 +112,7 @@ L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED LIB.LOAD ldx RefCount bne .8 - sta NODE.SSOCK+S.NODE.HANDLER + sta FD.SSOCK+S.FD.HANDLER jsr ARP.CLEAR jsr DNS.CLEAR @@ -292,14 +292,14 @@ bTextMode .BS 1 HST.SScanF .AZ "%d.%d.%d.%d" IP.ID .BS 2 IP.CHECKSUM .BS 4 -NODE.SSOCK .BS 1 S.NODE.HANDLER - .DA #S.NODE.T.SSOCK - .BS 1 S.NODE.SSOCK.HSKT - .DA #0 S.NODE.SSOCK.OPEN - .DA #0 S.NODE.SSOCK.CLOSE +FD.SSOCK .BS 1 S.FD.HANDLER + .DA #S.FD.T.SSOCK + .BS 1 S.FD.SSOCK.HSKT + .DA #0 S.FD.SSOCK.OPEN + .DA #0 S.FD.SSOCK.CLOSE .DA #0 .DA #0 - .DA #0 S.NODE.SSOCK.STATUS + .DA #0 S.FD.SSOCK.STATUS *-------------------------------------- MAN SAVE /A2OSX.SRC/LIB/LIBTCPIP.S diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 954511d2..c61aaa2a 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -14,8 +14,8 @@ K.GetDevByID cmp DevMgr.DevCnt tax - lda Dev.Table,x - jmp K.GetMemPtr + ldy Dev.Table.PTRLO,x + lda Dev.Table.PTRHI,x * clc @@ -33,14 +33,14 @@ K.GetDevByName >STYA ZPPtr1 ldx #0 - ldy Dev.Table,x - jsr K.GetMemPtr + ldy Dev.Table.PTRLO,x + lda Dev.Table.PTRHI,x >STYA ZPPtr2 lda (ZPPtr2) clc - adc #S.NODE.DEV.NAME + adc #S.FD.DEV.NAME sta ZPPtr3 ldy #1 lda (ZPPtr2) @@ -78,8 +78,6 @@ K.GetDev.NODEV lda #MLI.E.NODEV * **Out:** * Y,A = S.DSTAT *\-------------------------------------- -K.DevClose ldx #IOCTL.CLOSE - .HS 2C BIT ABS K.GetDevStatus ldx #IOCTL.STATUS jsr K.GetDevByID bcs K.IOCTL.9 @@ -90,12 +88,12 @@ K.GetDevStatus ldx #IOCTL.STATUS */-------------------------------------- * # IOCTL * ## C -* `int ioctl ( short int id, short int op, void *param);` +* `int ioctl(int fd, unsigned long request, ...);` * ## ASM * **In:** * `PUSHWI param` -* `lda #op` -* `ldy id` +* `lda #request` +* `ldy fd` * `>SYSCALL IOCTL` * **Out:** * Y,A = ... diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 7de63b02..53e5f44b 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -15,15 +15,15 @@ K.OpenDir jsr PFT.CheckPathYA >STYA ZPPtr2 jsr STDIO.SetMLIPathYA For GETFILEINFO,MLIOPEN - >LDYAI S.NODE.DIR + >LDYAI S.FD.DIR jsr K.GetMem0 bcs .99 >STYA ZPPtr1 stx .8+1 - ldy #S.NODE.T Done by GetMem0 - lda #S.NODE.T.DIR + ldy #S.FD.T Done by GetMem0 + lda #S.FD.T.DIR sta (ZPPtr1),y ldy #1 @@ -44,7 +44,7 @@ K.OpenDir jsr PFT.CheckPathYA bcs .98 lda K.MLI.PARAMS+5 get ref_num - ldy #S.NODE.DIR.REF + ldy #S.FD.DIR.REF sta (ZPPtr1),y .8 lda #$ff Self Modified @@ -83,7 +83,7 @@ K.ReadDir jsr PFT.CheckNodeA jsr K.GetMemPtr >STYA ZPPtr1 - ldy #S.NODE.DIR.REF + ldy #S.FD.DIR.REF lda (ZPPtr1),y beq K.ReadDir.ROOT jmp K.ReadDir.DIR @@ -94,7 +94,7 @@ K.ReadDir.NoMore rts *-------------------------------------- K.ReadDir.ROOT - ldy #S.NODE.DIR.FC did we already returned something ? + ldy #S.FD.DIR.FC did we already returned something ? lda (ZPPtr1),y bne K.ReadDir.NoMore @@ -207,7 +207,7 @@ K.ReadDir.ROOT * lda #0 done by S.MEM.F.INIT0 * sta (ZPPtr4) Ending 0 -.5 ldy #S.NODE.DIR.FC +.5 ldy #S.FD.DIR.FC lda #16 sta (ZPPtr1),y Flag that we returned somthing for next time @@ -239,7 +239,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF >MLICALL MLIREAD Read A block from directory bcs .98 - ldy #S.NODE.DIR.EL Check if first run.... + ldy #S.FD.DIR.EL Check if first run.... lda (ZPPtr1),y bne .2 no, we have all we need.... @@ -261,7 +261,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF sec .99 rts -.2 ldy #S.NODE.DIR.EL+3 +.2 ldy #S.FD.DIR.EL+3 ldx #3 .3 lda (ZPPtr1),y get this session parameters from S.DIR @@ -404,7 +404,7 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf >STYA ZPPtr1 ldx #3 - ldy #S.NODE.DIR.EL+3 + ldy #S.FD.DIR.EL+3 .81 lda K.ReadDir.EL,x Store back this session prameters to S.DIR sta (ZPPtr1),y diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 163309c2..7000be8e 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -104,13 +104,13 @@ DRV.BLK txa lsr sta DRV.BLK.PARAMS CMD - ldy #S.NODE.DEV.DEVID Drive 1, or 2 + ldy #S.FD.DEV.DEVID Drive 1, or 2 lda (pDev),y dec O or 1 lsr in Carry php - ldy #S.NODE.DEV.BUSID + ldy #S.FD.DEV.BUSID lda (pDev),y asl asl @@ -132,12 +132,12 @@ DRV.BLK txa dex bpl .1 - ldy #S.NODE.DEV.BUSPTR + ldy #S.FD.DEV.BUSPTR - lda (pNode),y + lda (pFD),y sta .3+1 iny - lda (pNode),y + lda (pFD),y sta .3+2 jsr GO.ProDOS @@ -169,11 +169,11 @@ DRV.SmartPort cld lda DRV.SmartPort.Cnt,x sta DRV.SmartPort.Go.Cmd - ldy #S.NODE.DEV.BUSPTR - lda (pNode),y + ldy #S.FD.DEV.BUSPTR + lda (pFD),y sta .8+1 iny - lda (pNode),y + lda (pFD),y sta .8+2 .8 jsr $ffff diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index c73df61a..61f56d67 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -2,7 +2,7 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- -Kernel.Init sei +Kernel.Init2 sei ldx #$FF txs sta SETALTZP @@ -11,8 +11,8 @@ Kernel.Init sei stx A2osX.SaveSX sta CLRALTZP Make sure MAIN ZP is enabled for X.PRINT.F -*-------------------------------------- -Kernel.Init2 >LDAXI MSG.Init2 + + >LDAXI MSG.Init2 jsr PrintFAX >LDAXI MSG.MAIN @@ -23,7 +23,7 @@ Kernel.Init2 >LDAXI MSG.Init2 >LDYAI CORE.Run >STYA ZPPtr2 >LDYAI A2osX.MAIN.S^$FFFF - >STYA ZPPtr3 + jsr Kernel.Move >LDAXI MSG.AUX @@ -48,7 +48,7 @@ Kernel.Init2 >LDAXI MSG.Init2 >LDYAI A2osX.SYSCALL >STYA ZPPtr2 >LDYAI A2osX.GP.S^$FFFF - >STYA ZPPtr3 + jsr Kernel.Move sta CLRALTZP @@ -65,7 +65,7 @@ Kernel.Init2 >LDAXI MSG.Init2 >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D2.S^$FFFF - >STYA ZPPtr3 + jsr Kernel.Move sta CLRALTZP @@ -82,7 +82,7 @@ Kernel.Init2 >LDAXI MSG.Init2 >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D1.S^$FFFF - >STYA ZPPtr3 + jsr Kernel.Move sta CLRALTZP @@ -99,7 +99,7 @@ Kernel.Init2 >LDAXI MSG.Init2 >LDYAI $E000 >STYA ZPPtr2 >LDYAI A2osX.E0.S^$FFFF - >STYA ZPPtr3 + jsr Kernel.Move sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F @@ -136,10 +136,10 @@ Kernel.Init3 sta SETALTZP jsr MemMgrInit - >LDYAI NODE.NULL + >LDYAI FD.NULL jsr DevMgrInit.AddCDev - >LDYAI NODE.SYS + >LDYAI FD.SYS jsr DevMgrInit.AddCDev jsr PS0Init @@ -219,7 +219,10 @@ IsDigit.9 sec .EP Kernel.ZP.S .EQ *-Kernel.ZP *-------------------------------------- -Kernel.Move ldy #0 +Kernel.Move >STYA ZPPtr3 + + ldy #0 + .1 inc ZPPtr3 bne .2 inc ZPPtr3+1 @@ -233,8 +236,41 @@ Kernel.Move ldy #0 inc ZPPtr1+1 inc ZPPtr2+1 bne .1 + .9 rts *-------------------------------------- +KConfigLoad >LDAXI MSG.KCREAD + jsr PrintFAX + + jsr MLI + .DA #MLIOPEN + .DA MLIOPEN00 + bcs .9 + + lda MLIOPEN00+5 + sta MLIREAD00+1 + sta MLICLOSE00+1 + + jsr MLI + .DA #MLIREAD + .DA MLIREAD00 + php + pha + jsr MLI + .DA #MLICLOSE + .DA MLICLOSE00 + pla + plp + bcs .9 + + >LDAXI MSG.KCREAD.OK + jsr PrintFAX + rts + +.9 >LDAXI MSG.KCREAD.KO + jsr PrintFAX + rts +*-------------------------------------- CPU.Init >LDAXI MSG.CPU jsr PrintFAX @@ -399,38 +435,6 @@ DetectZ80 ldx #Z80Code.Size clc .9 rts *-------------------------------------- -KConfigLoad >LDAXI MSG.KCREAD - jsr PrintFAX - - jsr MLI - .DA #MLIOPEN - .DA MLIOPEN00 - bcs .9 - - lda MLIOPEN00+5 - sta MLIREAD00+1 - sta MLICLOSE00+1 - - jsr MLI - .DA #MLIREAD - .DA MLIREAD00 - php - pha - jsr MLI - .DA #MLICLOSE - .DA MLICLOSE00 - pla - plp - bcs .9 - - >LDAXI MSG.KCREAD.OK - jsr PrintFAX - rts - -.9 >LDAXI MSG.KCREAD.KO - jsr PrintFAX - rts -*-------------------------------------- Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack .HS 3EFF LD A,0FFH Set Flag .HS 320D00 LD (FLAG),A @@ -780,13 +784,13 @@ DevMgrInit >LDYAI MSG.DEV tax 000DSSS0 lsr 0000DSSS and #$7 - sta NODE.BDEV+S.NODE.DEV.BUSID + sta FD.BDEV+S.FD.DEV.BUSID lda DEVPTRS,x - sta NODE.BDEV+S.NODE.DEV.BUSPTR + sta FD.BDEV+S.FD.DEV.BUSPTR lda DEVPTRS+1,x - sta NODE.BDEV+S.NODE.DEV.BUSPTR+1 + sta FD.BDEV+S.FD.DEV.BUSPTR+1 sta ZPPtr1+1 stz ZPPtr1 @@ -794,7 +798,7 @@ DevMgrInit >LDYAI MSG.DEV plp lda #0 adc #1 Make DevID 1 or 2 - sta NODE.BDEV+S.NODE.DEV.DEVID + sta FD.BDEV+S.FD.DEV.DEVID lda ZPPtr1+1 @@ -832,11 +836,11 @@ DevMgrInit >LDYAI MSG.DEV lda ZPPtr1 get $Cn and #$f get $0n - cmp NODE.BDEV+S.NODE.DEV.DEVID same as SSS ? + cmp FD.BDEV+S.FD.DEV.DEVID same as SSS ? beq .51 - inc NODE.BDEV+S.NODE.DEV.DEVID Remapped SP devices.... - inc NODE.BDEV+S.NODE.DEV.DEVID Add 2 to DEVID (2 & 3) + inc FD.BDEV+S.FD.DEV.DEVID Remapped SP devices.... + inc FD.BDEV+S.FD.DEV.DEVID Add 2 to DEVID (2 & 3) .51 jsr DevMgrInit.SP lda #A2osX.S.SP @@ -845,7 +849,7 @@ DevMgrInit >LDYAI MSG.DEV .6 jsr DevMgrInit.BLK lda #A2osX.S.BLK -.7 ldx NODE.BDEV+S.NODE.DEV.DEVID +.7 ldx FD.BDEV+S.FD.DEV.DEVID sta A2osX.S,x .8 dec DevMgrInit.DEVCNT @@ -868,7 +872,7 @@ DevMgrInit.USR >LDYAI DRV.BlkDevice *-------------------------------------- DevMgrInit.BLK ldy #$ff lda (ZPPtr1),y - sta NODE.BDEV+S.NODE.DEV.BUSPTR + sta FD.BDEV+S.FD.DEV.BUSPTR >LDYAI DRV.BlkDevice jmp DevMgrInit.AddBDev @@ -878,11 +882,11 @@ DevMgrInit.SP ldy #$ff clc adc #3 Compute smartport entry point sta .1+1 - sta NODE.BDEV+S.NODE.DEV.BUSPTR + sta FD.BDEV+S.FD.DEV.BUSPTR lda ZPPtr1+1 sta .1+2 - lda NODE.BDEV+S.NODE.DEV.DEVID + lda FD.BDEV+S.FD.DEV.DEVID sta SP.DEV.STATUS.DEVID .1 jsr $ffff Self Modified @@ -890,43 +894,55 @@ DevMgrInit.SP ldy #$ff .DA SP.DEV.STATUS bcs .9 + ldx SP.DEV.STATUS.DATA+S.DSTAT.S + >LDYAI DRV.SmartPort jsr DevMgrInit.AddBDev .9 rts *-------------------------------------- DevMgrInit.AddBDev - >STYA NODE.BDEV+S.NODE.DEV.DRVPTR + >STYA FD.BDEV+S.FD.DEV.DRVPTR - lda NODE.BDEV+S.NODE.DEV.BUSID + lda FD.BDEV+S.FD.DEV.BUSID ora #$30 - sta NODE.BDEV+S.NODE.DEV.NAME+1 SnDy + sta FD.BDEV+S.FD.DEV.NAME+1 SnDy - lda NODE.BDEV+S.NODE.DEV.DEVID + lda FD.BDEV+S.FD.DEV.DEVID ora #$30 - sta NODE.BDEV+S.NODE.DEV.NAME+3 SxDn + sta FD.BDEV+S.FD.DEV.NAME+3 SxDn - >LDYAI DEV.BDEV + >LDYAI FD.BDEV DevMgrInit.AddCDev >STYA .1+1 + stx .10+1 + + >LDYAI S.FD.DEV jsr K.GetMem >STYA .2+1 - - txa + phx ldx DevMgr.DevCnt - sta Dev.Table,x - inx - stx DevMgr.DevCnt + sta Dev.Table.PTRHI,x + tya + sta Dev.Table.PTRLO,x + pla + sta Dev.Table.hMem,x +.10+1 lda #$ff SELF MODIFIED + sta Dev.Table.F,x - ldx #S.NODE.DEV-1 + ldx #S.FD.DEV-1 .1 lda $ffff,x SELF MODIFIED .2 sta $ffff,x SELF MODIFIED dex bpl .1 + + jsr $ffff + + inc DevMgr.DevCnt clc rts @@ -934,7 +950,7 @@ DevMgrInit.AddCDev sec rts *-------------------------------------- -DEV.NULL .DA #S.NODE.T.CDEV +FD.NULL .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #DEVID.NULL @@ -943,7 +959,7 @@ DEV.NULL .DA #S.NODE.T.CDEV .AZ "NULL" NAME .HS 000000 *-------------------------------------- -DEV.SYS .DA #S.NODE.T.CDEV +FD.SYS .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #DEVID.SYS @@ -952,7 +968,7 @@ DEV.SYS .DA #S.NODE.T.CDEV .AZ "SYS" NAME .HS 00000000 *-------------------------------------- -DEV.BDEV .DA #S.NODE.T.BDEV +FD.BDEV .DA #S.FD.T.BDEV .DA #0 HANDLER .DA #0 BUSID .DA #0 DEVID @@ -968,7 +984,7 @@ SP.DEV.STATUS .DA #3 SP.DEV.STATUS.DEVID .BS 1 .DA SP.DEV.STATUS.DATA - .DA #3 return DIB + .DA S.IOCTL.STATCODE.GETDIB SP.DEV.STATUS.DATA .BS S.DSTAT *-------------------------------------- diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 4beaf605..2c72c892 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -2,13 +2,21 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- -IO.OPEN +* int open(const char *pathname, int flags); *-------------------------------------- -IO.SELECT jsr K.GetMemPtr - >STYA pNode - rts +IO.OPEN jsr IO.SELECT *-------------------------------------- -IO.WRITE lda (pNode) #S.NODE.T +* int close(int fd); +*-------------------------------------- +IO.CLOSE +*-------------------------------------- +* int read(int fd, void *buf, size_t count); +*-------------------------------------- +IO.READ +*-------------------------------------- +* int write(int fd, const void *buf, size_t count); +*-------------------------------------- +IO.WRITE lda (pFD) #S.FD.T tax *-------------------------------------- jmp (.1,x) @@ -23,54 +31,54 @@ IO.WRITE lda (pNode) #S.NODE.T *-------------------------------------- IO.WRITE.REG >PUSHW K.S.IOCTL+S.IOCTL.BUFPTR >PUSHW K.S.IOCTL+S.IOCTL.BYTECNT - ldy #S.NODE.REG.REF - >PUSHB (pNode),y + ldy #S.FD.REG.REF + >PUSHB (pFD),y jmp K.FWrite *-------------------------------------- -IO.WRITE.CDEV ldy #S.NODE.DEV.DRVPTR - lda (pNode),y +IO.WRITE.CDEV ldy #S.FD.DEV.DRVPTR + lda (pFD),y sta .1+1 iny - lda (pNode),y + lda (pFD),y sta .1+2 lda K.IOBuf ldx #IOCTL.WRITE .1 jmp $ffff *-------------------------------------- -IO.WRITE.SSOCK lda (pNode) #S.NODE.HANDLER +IO.WRITE.SSOCK lda (pFD) #S.FD.HANDLER jsr K.GetMemPtr >STYA .1 - ldy #S.NODE.SSOCK.HSKT - >PUSHB (pNode),y + ldy #S.FD.SSOCK.HSKT + >PUSHB (pFD),y >PUSHB K.IOBuf - ldy #S.NODE.SSOCK.WRITE - lda (pNode),y + ldy #S.FD.SSOCK.WRITE + lda (pFD),y tax Function Offset for write .1 jmp $ffff *-------------------------------------- -IO.WRITE.FIFO ldy #S.NODE.FIFO.S - lda (pNode),y +IO.WRITE.FIFO ldy #S.FD.FIFO.S + lda (pFD),y beq .9 Remote PS did not opened yet the pipe - cmp #S.NODE.FIFO.S.Closed + cmp #S.FD.FIFO.S.Closed beq .99 Remote PS closed the Pipe - ldy #S.NODE.FIFO.hMem - lda (pNode),y + ldy #S.FD.FIFO.hMem + lda (pFD),y jsr K.GetMemPtr >STYA .1+2 - ldy #S.NODE.FIFO.Head - lda (pNode),y + ldy #S.FD.FIFO.Head + lda (pFD),y inc - dey #S.NODE.FIFO.Tail - cmp (pNode),y + dey #S.FD.FIFO.Tail + cmp (pFD),y beq .9 FIFO is full iny - sta (pNode),y + sta (pFD),y tay lda K.IOBuf .1 sta $ffff,y @@ -83,6 +91,10 @@ IO.WRITE.FIFO ldy #S.NODE.FIFO.S sec rts *-------------------------------------- +IO.SELECT jsr K.GetMemPtr + >STYA pFD + rts +*-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.IO LOAD /A2OSX.SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index c8f99472..3b8f8ad0 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -190,40 +190,31 @@ K.IrqH.Switch inc IRQ.Tick *-------------------------------------- K.IrqH.DEV ldx #0 -.1 lda Dev.Table+1,x +.1 lda Dev.Table.F,x + and #S.DSTAT.S.IRQ beq .2 - sta $ff - lda Dev.Table,x + lda Dev.Table.PTRLO,x sta $fe + lda Dev.Table.PTRHI,x + sta $ff - ldy #S.NODE.DEV.DRVPTR + ldy #S.FD.DEV.DRVPTR lda ($fe),y - pha + sta .10+1 iny lda ($fe),y - sta $ff - pla - sta $fe - - ldy #IOCTL.IRQ+4+1 - lda ($fe),y - cmp /A2osX.BADCALL - beq .2 - sta .10+2 - dey - lda ($fe),y - sta .10+1 + phx + ldx #IOCTL.IRQ .10 jsr $ffff SELF MODIFIED plx bcc .8 CC, IRQ cleared by device .2 inx - inx .3 cpx DevMgr.DevCnt bne .1 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index a092f0ae..c8dd115f 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -126,9 +126,9 @@ K.MkNod jsr K.GetDevByName Y,A=NAME >STYA .1+1 stx .2+1 - ldy #S.NODE.T + ldy #S.FD.T lda (pDev),y - cmp #S.NODE.T.CDEV + cmp #S.FD.T.CDEV bne .99 txa Pass DEV.ID to OPEN @@ -136,22 +136,22 @@ K.MkNod jsr K.GetDevByName Y,A=NAME .1 jsr $FFFF SELF MODIFIED bcs .9 - >LDYAI S.NODE.DEV + >LDYAI S.FD.DEV jsr K.GetMem0 bcs .9 - >STYA ZPPtr3 Ptr3=S.NODE + >STYA ZPPtr3 Ptr3=S.FD - ldy #S.NODE.T - lda #S.NODE.T.CDEV + ldy #S.FD.T + lda #S.FD.T.CDEV sta (ZPPtr3),y - ldy #S.NODE.DEV.DEVID + ldy #S.FD.DEV.DEVID .2 lda #$ff Self Modified sta (ZPPtr3),y - ldy #S.NODE.DEV.DRVPTR + ldy #S.FD.DEV.DRVPTR lda .1+1 sta (ZPPtr3),y @@ -180,18 +180,18 @@ K.MKFIFO >LDYAI 256 stx .1+1 save FIFO buffer - >LDYAI S.NODE.FIFO + >LDYAI S.FD.FIFO jsr K.GetMem0 bcs .9 >STYA ZPPtr1 - ldy #S.NODE.T - lda #S.NODE.T.FIFO + ldy #S.FD.T + lda #S.FD.T.FIFO sta (ZPPtr1),y - iny S.NODE.FIFO.hMem + iny S.FD.FIFO.hMem .1 lda #$ff Self Modified sta (ZPPtr1),y txa diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 4bd3d05c..9e823533 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -596,7 +596,7 @@ K.GetChar ldy #S.PS.hStdIn K.GetC jsr K.GetMemPtr >STYA pDev - ldy #S.NODE.T + ldy #S.FD.T lda (pDev),y asl tax @@ -613,7 +613,7 @@ K.GetC jsr K.GetMemPtr *-------------------------------------- K.GetC.REG >PUSHWI K.IOBuf >PUSHWI 1 - ldy #S.NODE.REG.REF + ldy #S.FD.REG.REF >PUSHB (pDev),y jsr K.FRead @@ -622,7 +622,7 @@ K.GetC.REG >PUSHWI K.IOBuf .9 rts *-------------------------------------- K.GetC.CDEV ldx #IOCTL.READ - ldy #S.NODE.DEV.DRVPTR + ldy #S.FD.DEV.DRVPTR lda (pDev),y sta .1+1 iny @@ -630,15 +630,15 @@ K.GetC.CDEV ldx #IOCTL.READ sta .1+2 .1 jmp $ffff *-------------------------------------- -K.GetC.SSOCK lda (pDev) #S.NODE.HANDLER +K.GetC.SSOCK lda (pDev) #S.FD.HANDLER * jsr K.GetMemPtr * >STYA .1+1 -* ldy #S.NODE.SSOCK.READ +* ldy #S.FD.SSOCK.READ * lda (pDev),y * tax Function Offset for READ -* ldy #S.NODE.SSOCK.HSKT +* ldy #S.FD.SSOCK.HSKT * lda (pDev),y *.1 jmp $ffff @@ -840,15 +840,15 @@ K.FOpen jsr PFT.CheckPathSTK bcc K.FOpen.10 K.FOpen.9 rts -K.FOpen.10 >LDYAI S.NODE.REG +K.FOpen.10 >LDYAI S.FD.REG jsr K.GetMem0 bcs K.FOpen.9 >STYA ZPPtr1 stx .8+1 -* ldy #S.NODE.T Done by GetMem0 -* lda #S.NODE.T.REG +* ldy #S.FD.T Done by GetMem0 +* lda #S.FD.T.REG * sta (ZPPtr1),y jsr STDIO.SetIOBUF @@ -858,7 +858,7 @@ K.FOpen.10 >LDYAI S.NODE.REG bcs .98 lda K.MLI.PARAMS+5 get ref_num - ldy #S.NODE.REG.REF + ldy #S.FD.REG.REF sta (ZPPtr1),y sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based @@ -909,48 +909,34 @@ K.FOpen.AUXTYPE .BS 2 */-------------------------------------- * # FClose * Close a file +* ## C +* int fclose ( FILE * stream ); +* ## ASM * **In:** * A = hFILE * **Out:** *\-------------------------------------- K.FClose jsr PFT.CheckNodeA - sta K.FClose.8+1 + sta .8+1 jsr K.GetMemPtr >STYA ZPPtr1 - ldy #S.NODE.T - lda (ZPPtr1),y - asl - tax - jmp (.1,x) - -.1 .DA K.FClose.REG - .DA K.FClose.DIR - .DA K.FClose.CDEV - -K.FClose.REG -K.FClose.DIR ldy #S.NODE.REG.REF + ldy #S.FD.REG.REF lda (ZPPtr1),y beq .1 sta K.MLI.PARAMS+1 >MLICALL MLICLOSE -.1 ldy #S.NODE.REG.IOBUF +.1 ldy #S.FD.REG.IOBUF lda (ZPPtr1),y - beq K.FClose.8 + beq .8 jsr K.FreeMem - bra K.FClose.8 -K.FClose.CDEV ldy #S.NODE.DEV.DEVID - lda (ZPPtr1),y - jsr K.DevClose - bcs K.FClose.9 - -K.FClose.8 lda #$ff Self Modified +.8 lda #$ff Self Modified jmp K.FreeMem -K.FClose.9 rts +.9 rts */-------------------------------------- * # FRead * int fread ( void * ptr, int count, FILE * stream ); @@ -1197,13 +1183,13 @@ STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF >STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call txa - ldy #S.NODE.REG.IOBUF + ldy #S.FD.REG.IOBUF sta (ZPPtr1),y .9 rts *-------------------------------------- STDIO.GetRefNum jsr K.GetMemPtr >STYA ZPPtr1 - ldy #S.NODE.REG.REF + ldy #S.FD.REG.REF lda (ZPPtr1),y sta K.MLI.PARAMS+1 rts