From 68c61c225fd90c1849c1b0fcc2c9364255b7a310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 8 Dec 2016 17:53:29 +0100 Subject: [PATCH] Kernel version 0.8 : Preparing 0.9 Kernel API --- A2osX.STARTUP.txt | 4 +- INC/A2osX.I.txt | 160 +++++++++++++++++++++++++++++------------- SYS/KERNEL.S.CIO.txt | 47 +++++++++---- SYS/KERNEL.S.DEV.txt | 51 ++++++++++++-- SYS/KERNEL.S.FILE.txt | 15 ++-- 5 files changed, 201 insertions(+), 76 deletions(-) diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index 4e81ddd4..3da4b2fb 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -13,8 +13,8 @@ SET INSDRV CONSOLE.DRV STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN # Serial Login -#INSDRV SSC.DRV 9600 N 8 1 X -#STARTPROC GETTY COM2 LOGIN +#INSDRV SSC.DRV 9600,N,8,1,X +#STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN #INSDRV PIC.DRV # Network Section INSDRV UTHERNET.DRV 000E3A123456 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index a9142de5..239b0dd5 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -206,10 +206,10 @@ SYS.SScanF .EQ $42 SYS.PPrintFYA .EQ $44 SYS.CPrintFYA .EQ $46 -* .EQ $48 SYS.FPUTCA -* .EQ $4A SYS.FGETC -* .EQ $4C SYS.FPUTSYA -* .EQ $4E SYS.FGETS +SYS.FPUTCA .EQ $48 +SYS.FGETC .EQ $4A +SYS.FPUTSYA .EQ $4C +SYS.FGETS .EQ $4E *-------------------------------------- SYS.NewPStrYA .EQ $50 SYS.PStrCpy .EQ $52 @@ -245,11 +245,10 @@ SYS.GetDevByIDA .EQ $80 SYS.GetDevByNameYA .EQ $82 SYS.GetDevInfoA .EQ $84 * .EQ $86 - *-------------------------------------- -SYS.MKNOD .EQ $88 -SYS.MKFIFO .EQ $8A -* .EQ $8C +SYS.MKNodYA .EQ $88 +SYS.MKNodA .EQ $8A +SYS.MKFIFO .EQ $8C * .EQ $8E *-------------------------------------- SYS.GetMem .EQ $90 @@ -305,6 +304,20 @@ S.MEM.LEN .EQ 6 * S.MEM .EQ 8 *-------------------------------------- +S.MEMSTAT.ML .EQ 0 +S.MEMSTAT.MF .EQ 2 +S.MEMSTAT.MH .EQ 4 +* +S.MEMSTAT.XL .EQ 8 +S.MEMSTAT.XF .EQ 10 +S.MEMSTAT.XH .EQ 12 +* +S.MEMSTAT.DL .EQ 16 +S.MEMSTAT.DF .EQ 18 +S.MEMSTAT.DH .EQ 20 +* +S.MEMSTAT .EQ 24 +*-------------------------------------- * DEVMGR (old API) *-------------------------------------- S.DEV.CODE .EQ 0 cld,jmp... @@ -395,15 +408,15 @@ DEVMGR..CLOSE .EQ 7 DEVMGR..READ .EQ 8 DEVMGR..WRITE .EQ 9 *-------------------------------------- -S.DEVSTAT.STATUS .EQ 0 -S.DEVSTAT.STATUS.BLOCK .EQ %10000000 -S.DEVSTAT.STATUS.WRITE .EQ %01000000 -S.DEVSTAT.STATUS.READ .EQ %00100000 -S.DEVSTAT.STATUS.ONLINE .EQ %00010000 -S.DEVSTAT.STATUS.NOFMT .EQ %00001000 -S.DEVSTAT.STATUS.WENABL .EQ %00000100 -S.DEVSTAT.STATUS.IRQ .EQ %00000010 -S.DEVSTAT.STATUS.OPENED .EQ %00000001 +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 @@ -528,24 +541,89 @@ S.STAT .EQ 64 *-------------------------------------- * S.FILE for FOPEN,FREAD...... *-------------------------------------- -S.FILE.HANDLER .EQ 0 0=KRNL,!0=hDEV,hLIB (LIBNFS,LIBTCPIP.....) -S.FILE.TYPE .EQ 1 -S.FILE.TYPE.REG .EQ 1 -S.FILE.TYPE.DIR .EQ 2 -S.FILE.TYPE.BLK .EQ 3 -S.FILE.TYPE.CHR .EQ 4 -S.FILE.TYPE.LNK .EQ 5 -S.FILE.TYPE.SOCK .EQ 6 -S.FILE.TYPE.FIFO .EQ 7 - -S.FILE.PRODOS.REF .EQ 2 -S.FILE.PRODOS.IOBUF .EQ 3 -* -S.FILE.PRODOS .EQ 4 -* -* no S.FILE,Variable size +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.DIR for OpenDir,ReadDir,CloseDir +S.FILE.REG.REF .EQ 2 +S.FILE.REG.IOBUF .EQ 3 +* +S.FILE.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.FILE.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.FILE.SOCK .EQ 32 +*-------------------------------------- +S.FILE.FIFO.hMem .EQ 2 +S.FILE.FIFO.InPtr .EQ 3 +S.FILE.FIFO.OutPtr .EQ 4 +* +S.FILE.FIFO .EQ 5 +*-------------------------------------- +* OLD API: S.DIR for OpenDir,ReadDir,CloseDir *-------------------------------------- S.DIR.HANDLER .EQ 0 S.DIR.F .EQ 1 @@ -565,19 +643,5 @@ S.PFT.DATA .EQ 24 8 bytes OPAQUE data for handler * S.PFT .EQ 32 *-------------------------------------- -S.MEMSTAT.ML .EQ 0 -S.MEMSTAT.MF .EQ 2 -S.MEMSTAT.MH .EQ 4 -* -S.MEMSTAT.XL .EQ 8 -S.MEMSTAT.XF .EQ 10 -S.MEMSTAT.XH .EQ 12 -* -S.MEMSTAT.DL .EQ 16 -S.MEMSTAT.DF .EQ 18 -S.MEMSTAT.DH .EQ 20 -* -S.MEMSTAT .EQ 24 -*-------------------------------------- MAN SAVE /A2OSX.DEV/INC/A2OSX.I diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt index 18e5dd39..5d6a6a7d 100644 --- a/SYS/KERNEL.S.CIO.txt +++ b/SYS/KERNEL.S.CIO.txt @@ -461,20 +461,6 @@ PrintF.SS >PULLW ZPQuickPtr2 .8 clc .9 rts *-------------------------------------- -K.COutA phx - phy - cmp #13 - bne .1 - ldx #DEVMGR.COUT - jsr pDevJmp - bcs .2 - lda #10 -.1 ldx #DEVMGR.COUT - jsr pDevJmp -.2 ply - plx - rts -*-------------------------------------- CIO.GetCharAtPtr1Y lda #$ff Self Modified PSTR/CSTR bne .1 @@ -496,6 +482,39 @@ CIO.GetCharAtPtr1Y .9 clc no error, but end of string rts *-------------------------------------- +K.COutA phx + phy + cmp #13 + bne .1 + ldx #DEVMGR.COUT + jsr pDevJmp + bcs .2 + lda #10 +.1 ldx #DEVMGR.COUT + jsr pDevJmp +.2 ply + plx + rts +*/-------------------------------------- +* #PutCA +* Print A (char) to StdOut +* ##In: +* A : char to print +* none. +* ##Out: +* CC = success +*\-------------------------------------- +K.FPutCA + +K.PutCA + ldx #DEVMGR..WRITE +*-------------------------------------- +K.FGetC +*-------------------------------------- +K.FPutSYA +*-------------------------------------- +K.FGetS +*-------------------------------------- PRINTDEC lda PADLEN any Len format ? beq .1 no diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 0ca83de3..1c255b41 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -101,27 +101,66 @@ K.GetDevInfoA jsr K.GetDevByIDA jmp (ZPQuickPtr1) */-------------------------------------- * #MkNodYA -* return a S.FILE from a given device +* return a S.FILE from a given Device * ##IN: * Y,A=DevName * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MkNodYA +K.MkNodYA jsr K.GetDevByNameYA + bcs .9 + + >PUSHWI S.FILE.DEV + >PUSHBI S.MEM.F.INIT0 + jsr K.GetMem + bcs + + clc - rts +.9 rts */-------------------------------------- -* #MkFIFO -* return a S.FILE +* #MKFIFO +* return a S.FILE to a new FIFO * ##IN: * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MkFIFO +K.MKFIFO >PUSHWI 256 + >PUSHBI S.MEM.F.INIT0 + jsr K.GetMem + bcs .99 + + phx save FIFO buffer + + >PUSHWI S.FILE.FIFO + >PUSHBI S.MEM.F.INIT0 + jsr K.GetMem + + bcs .9 + + >STYA ZPQuickPtr1 + + ldy #S.FILE.T + lda #S.FILE.T.FIFO + sta (ZPQuickPtr1),y + + iny S.FILE.FIFO.hMem + pla + sta (ZPQuickPtr1),y + txa clc rts + +.9 plx get back FIFO buffer + pha save error code + txa + jsr K.FreeMemA + pla + sec + +.99 rts *-------------------------------------- MAN SAVE SYS/KERNEL.S.DEV diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index b31a2f59..69c4e02d 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.PRODOS +K.FOPEN.10 >PUSHWI S.FILE.T.REG >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs K.FOPEN.9 @@ -73,14 +73,14 @@ K.FOPEN.10 >PUSHWI S.FILE.PRODOS >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call txa - ldy #S.FILE.PRODOS.IOBUF + ldy #S.FILE.REG.IOBUF sta (ZPQuickPtr1),y >MLICALL MLIOPEN bcs .98 lda MLICALL.PARAMS+5 get ref_num - ldy #S.FILE.PRODOS.REF + ldy #S.FILE.REG.REF sta (ZPQuickPtr1),y sta MLICALL.PARAMS+1 Next MLI Calls are REF_NUM based @@ -115,7 +115,10 @@ K.FOPEN.10 >PUSHWI S.FILE.PRODOS sta MLICALL.PARAMS+3 >MLICALL MLINEWLINE -.30 lda hFILE +.30 ldy #S.FILE.T + lda #S.FILE.T.REG + sta (ZPQuickPtr1),y + lda hFILE clc rts CC @@ -141,13 +144,13 @@ K.FCloseA jsr PFT.CheckFileA jsr K.GetMemPtrA >STYA ZPQuickPtr1 -K.FCloseA.1 ldy #S.FILE.PRODOS.REF +K.FCloseA.1 ldy #S.FILE.REG.REF lda (ZPQuickPtr1),y beq .1 sta MLICALL.PARAMS+1 >MLICALL MLICLOSE -.1 ldy #S.FILE.PRODOS.IOBUF +.1 ldy #S.FILE.REG.IOBUF lda (ZPQuickPtr1),y beq .2 jsr K.FreeMemA