Kernel version 0.8 : Preparing 0.9 Kernel API

This commit is contained in:
Rémy GIBERT 2016-12-08 17:53:29 +01:00
parent 75750babe2
commit 68c61c225f
5 changed files with 201 additions and 76 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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