Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-03-18 16:48:16 +00:00
parent 26b0b2492a
commit c29c556af8
17 changed files with 226 additions and 190 deletions

View File

@ -213,6 +213,75 @@ Remove an environment variable
## RETURN VALUE
# NewFIFO
## C
`int getpwuid(short int uid, S.PW* passwd );`
## ASM
`>PUSHW passwd`
`>LDYA size`
`>SYSCALL getpwuid`
## RETURN VALUE
A = hFIFO
# GetPWName
## C
`int getpwname(const char* name, S.PW* passwd );`
## ASM
`>PUSHW passwd`
`>LDYA name`
`>SYSCALL getpwname`
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>LDYA passwd`
`>SYSCALL putpw`
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>LDYA passwd`
`>SYSCALL putpw`
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>LDYA passwd`
`>SYSCALL putpw`
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>LDYA passwd`
`>SYSCALL putpw`
## RETURN VALUE
# LoadTxtFile
Load TXT a file in memory (with ending 0)
@ -458,6 +527,7 @@ Y,A = PTR to MemBlock
## RETURN VALUE
Y,A = Byte Count
X = hMem (if DataPtr = 0)
# SListAddData

Binary file not shown.

View File

@ -492,10 +492,11 @@ DIR.MA >LDA.G ASM.MA.ON
jsr SRC.GetNextCharNB
beq DIR.OP.SYNERR
jsr SYM.GetName
>PUSHW ZPLinePtr
>LDA.G MAC.hMacroList
>SYSCALL SListNewKey
bcs .99
jsr MAC.New
>STYA MAC.MacroID
.8 lda #$ff
>STA.G ASM.MA.ON

View File

@ -56,69 +56,41 @@ MAC.Quit >LDA.G MAC.hCtxBuf
.8 clc
rts
*---------------------------------------
MAC.New lda #0
MAC.AddChar tax
phy
>LDA.G MAC.BufPtr
tay
.1 sta (ZPMacroBuf),y
iny
bne .1
rts
*---------------------------------------
MAC.AddChar >LDA.G ASM.PASS If Pass#2, ignore
bne .8
tax
lda (ZPMacroBuf)
cmp #254
beq .9 CS if EQ
inc
sta (ZPMacroBuf)
tay
txa
sta (ZPMacroBuf),y
>INC.G MAC.BufPtr
ply
tax
beq .1
* >SYSCALL PutChar
.8 clc
rts
.1
* lda #13
* >SYSCALL PutChar
* lda #10
* >SYSCALL PutChar
clc
.9 rts
*---------------------------------------
MAC.Store >LDA.G ASM.PASS If Pass#2, ignore
txa
bne .8
lda (ZPMacroBuf)
beq .8
>LDA.G MAC.BufPtr
tay
lda #0
>PUSHB.G MAC.hMacroList
>PUSHW ZPNameBuf
>PUSHYA
>PUSHW ZPMacroBuf
>SYSCALL SListAdd
>PUSHW.G MAC.MacroID
>LDA.G MAC.hMacroList
>SYSCALL SListAddData
rts
.8 clc
rts
*---------------------------------------
MAC.Lookup >PUSHB.G MAC.hMacroList
MAC.Lookup >PUSHW ZPMacroBuf
>PUSHW ZPLinePtr
>PUSHW ZPMacroBuf
>LDA.G MAC.hMacroList
>SYSCALL SListLookup
bcs .9
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .8
@ -128,7 +100,8 @@ MAC.Lookup >PUSHB.G MAC.hMacroList
.8
.9 rts
*---------------------------------------
MAC.NewOrGetCtx
MAC.NewOrGetCtx sec
rts
*---------------------------------------
*---------------------------------------
MAN

View File

@ -30,6 +30,12 @@ SRC.ParseLine jsr OUT.Reset
rts
*---------------------------------------
SRC.ParseLine.Macro
>LDA.G ASM.PASS If Pass#2, ignore
bne .8
>STZ.G MAC.BufPtr
sta (ZPMacroBuf)
lda (ZPLinePtr)
cmp #' ' No label, scan to DIR/OP if any
bne .1
@ -77,10 +83,7 @@ SRC.ParseLine.Macro
cmp #'m'
bne .3
.22 jsr MAC.Store
bcs SRC.ParseLine.RTS
>STZ.G ASM.MA.ON
.22 >STZ.G ASM.MA.ON
.8 clc
rts
@ -119,14 +122,9 @@ SRC.ParseLine.Macro
cmp #' '
bne .5
lda #0
jmp MAC.AddChar End of Line
clc
rts
.99 lda #ERR.MACRO.TOO.BIG
sec
bra .80 End of Line
.99
SRC.ParseLine.RTS
rts
*---------------------------------------

View File

@ -80,25 +80,23 @@ SYM.Dump stz ZPLinePtr
>LDYA L.MSG.SYMBOLS
>SYSCALL puts
.1 >PUSHB.G SYM.hGlobalList
.1 >PUSHW ZPNameBuf
>PUSHW ZPLinePtr
>PUSHW ZPGlobalBuf
>PUSHW ZPNameBuf
>LDA.G SYM.hGlobalList
>SYSCALL SListGetByID
bcc .10
clc
rts
.10 stx ZPLinePtr Save Next ID
sty ZPLinePtr+1
.10 >STYA ZPLinePtr Save Next ID
>LDA.G ASM.LI.ON
bpl .1
ldy #SYMG.F Get Symbol Size
lda (ZPGlobalBuf),y
and #SYMG.F.SIZE
* and #SYMG.F.SIZE
>PUSHA Byte Count
tax
@ -207,12 +205,12 @@ SYM.GetGlobal >PUSHB.G SYM.hGlobalList
rts
*---------------------------------------
SYM.LookupGlobal
>PUSHB.G SYM.hGlobalList
>PUSHW ZPLinePtr
>PUSHW ZPLookupBuf
>LDA.G SYM.hGlobalList
>SYSCALL SListLookup
bcs .9
>STYA.G SYM.GlobalID
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .8
@ -225,19 +223,21 @@ SYM.LookupGlobal
SYM.FlushGlobal lda (ZPGlobalBuf)
beq .8
>PUSHB.G SYM.hGlobalList
>LDA.G ASM.PASS
bne .2
>PUSHW ZPNameBuf
>PUSHW ZPGlobalBuf
>SYSCALL SListAdd
>PUSHW.G SYM.GlobalID
>LDA.G SYM.hGlobalList
>SYSCALL SListAddData
bra .3
.2 >PUSHW.G SYM.GlobalID
>PUSHW ZPGlobalBuf
>SYSCALL SListUpdateByID
.2 >PUSHW ZPGlobalBuf
>PUSHW.G SYM.GlobalID
>LDA.G SYM.hGlobalList
>SYSCALL SListSetData
.3 bcs .9
lda #0
@ -333,7 +333,7 @@ SYM.Lookup2Acc ldy #SYMG.F+4
bne .1
lda (ZPLookupBuf),y
and #SYMG.F.SIZE
* and #SYMG.F.SIZE
sta SRC.ACC.SIZE
clc

View File

@ -26,7 +26,7 @@ ZPRPtr .EQ ZPBIN+20
ZPOpsPtr .EQ ZPBIN+22
ZPOpDefPtr .EQ ZPBIN+24
ZPTmpBuf .EQ ZPBIN+16
ZPTmpBuf .EQ ZPBIN+26
*---------------------------------------
* Symbols
*---------------------------------------
@ -248,8 +248,16 @@ CS.INIT ldy #S.PS.ARGC
sec
.9 rts
*--------------------------------------
CS.RUN >SYSCALL GetChar
bcs .13 no char
CS.RUN ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
beq .13
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .99 Abort....beq=CS
@ -268,7 +276,7 @@ CS.RUN >SYSCALL GetChar
.13 >LDA.G bPause
bpl .11
clc
rts
.99 rts
.11 >STZ.G bPause
@ -313,7 +321,7 @@ CS.RUN >SYSCALL GetChar
inc
sta (pData),y
clc
.99 rts
rts
.1 jsr SYM.Dump
>PUSHW ZPLinePtr
@ -539,6 +547,8 @@ MAC.hMacroList .BS 1
MAC.hMacroBuf .BS 1
MAC.hCtxList .BS 1
MAC.hCtxBuf .BS 1
MAC.MacroID .BS 2
MAC.BufPtr .BS 1
MAC.CtxID .BS 2
OUT.PC .BS 4

View File

@ -1,5 +1,5 @@
NEW
PREFIX /A2OSX.BUILD
PREFIX
AUTO 4,1
*---------------------------------------
T.ADDR.MODES .EQ *

View File

@ -1,5 +1,5 @@
NEW
PREFIX /A2OSX.BUILD
PREFIX
AUTO 4,1
*---------------------------------------
T.OPCODES .EQ *

View File

@ -1,5 +1,5 @@
NEW
PREFIX /A2OSX.BUILD
PREFIX
AUTO 4,1
.LIST OFF
.OR $0

View File

@ -41,7 +41,7 @@ CMD.PUSHD >LDA.G PUSHD.STACK
sta (pData),y
lda (ZPArgVBufPtr)
bne CMD.CD.1
bne CMD.CD.0
.8 clc
.9 rts
@ -70,7 +70,7 @@ CMD.PWD ldy #S.PS.hPREFIX
CMD.CD lda (ZPArgVBufPtr)
beq CMD.CD.HOME
>LDYA ZPArgVBufPtr
CMD.CD.0 >LDYA ZPArgVBufPtr
bra CMD.CD.1
CMD.CD.HOME >LDYA L.ENV.HOME

View File

@ -346,12 +346,13 @@ CORE.ExecFunc >STYA TmpWord KeyID
jsr CORE.SkipLine
>PUSHWI 0 From Start
>PUSHWI 0 TextMode
>PUSHWI $ffff all
>PUSHWI 0 Allocate..
>PUSHW TmpWord KeyID
>LDA.G hFuncList
>DEBUG
>SYSCALL SListGetData
bcs .9
txa

View File

@ -110,6 +110,7 @@ E.IUSR .EQ $F2 Invalid User
E.NOKEY .EQ $EF Undefined Key
E.DUPKEY .EQ $EE Duplicate Key
E.NODATA .EQ $ED No Data
E.DATALEN .EQ $EC Data Length Mismatch
*--------------------------------------
* A2osX.SYSCALL Constants
*--------------------------------------

View File

@ -14,34 +14,9 @@ X.SLIST jmp (.1-SYS.SListGetData,x)
*--------------------------------------
SLIST.GetData jsr SLIST.Select
jsr SLIST.SkipKey
jsr SLIST.GetDataLen
lda ZPSListDataPtr
ora ZPSListDataPtr+1
bne .10
>LDYA SLIST.DataLen
>STYA ZPSListDataLen
jsr MEM.GetMainBuf
bcs .9
stx .82+1
>STYA ZPSListDataPtr
bra .12
.10 lda ZPMemMgrSize Get Offset
cmp SLIST.DataLen
lda ZPMemMgrSize+1
sbc SLIST.DataLen+1
bcc .11
lda #E.NODATA
.9 rts
.11 lda ZPMemMgrSize
ldx ZPMemMgrSize+1
jsr SLIST.SkipDataAX
.12 lda SLIST.DataLen
lda SLIST.DataLen
sec
sbc ZPMemMgrSize
eor #$ff
@ -51,8 +26,24 @@ SLIST.GetData jsr SLIST.Select
eor #$ff
sta SLIST.nDataCnt+1 Data remaining
lda ZPSListDataLen
ora ZPSListDataLen
bcc .99
.10 lda ZPMemMgrSize
ldx ZPMemMgrSize+1
jsr SLIST.SkipDataAX
lda ZPSListDataPtr
ora ZPSListDataPtr+1
bne .12
>LDYA SLIST.DataLen
jsr MEM.GetMainBuf
bcs .9
stx .82+1
>STYA ZPSListDataPtr
.12 lda ZPSListDataLen
ora ZPSListDataLen+1
sec
beq .1 String Mode
@ -94,7 +85,7 @@ SLIST.GetData jsr SLIST.Select
.99 lda #E.NODATA
sec
rts
.9 rts
.7 jsr SLIST.GetNextByte
@ -148,7 +139,11 @@ SLIST.AddData jsr SLIST.Select
bcc .1
rts
.8 jsr SLIST.Select.I go back to DataLen Location
.8 lda #0
jsr SLIST.AddBlockByte Make sure 0 follow DATA
bcs .9
jsr SLIST.Select.I go back to DataLen Location
lda SLIST.DataLen
jsr SLIST.SetBlockByte
@ -158,45 +153,66 @@ SLIST.AddData jsr SLIST.Select
clc
.9 rts
*--------------------------------------
SLIST.SetData
clc
SLIST.SetData jsr SLIST.Select
jsr SLIST.SkipKey
jsr SLIST.GetDataLen
lda SLIST.DataLen
cmp ZPSListDataLen
bne .9
ldx SLIST.DataLen+1
cpx ZPSListDataLen+1
bne .9
eor #$ff
sta SLIST.nDataCnt
txa
eor #$ff
sta SLIST.nDataCnt+1
.1 inc SLIST.nDataCnt
bne .2
inc SLIST.nDataCnt+1
beq .8
.2 jsr MEM.GetDataByte
jsr SLIST.SetBlockByte
bra .1
.8 clc
rts
.9 lda #E.DATALEN
sec
rts
*--------------------------------------
SLIST.GetByID jsr SLIST.Select
jsr SLIST.GetBlockByte
jsr SLIST.GetNextByte
tax
beq .9
ldy #0
.1 jsr SLIST.GetNextByte
jsr MEM.SetKeyCharY
.1 jsr SLIST.GetNextBlockByte
iny
jsr MEM.SetKeyCharY
dex
bne .1
jsr SLIST.GetNextBlockByte
txa lda #0
jsr MEM.SetKeyCharY
tax
jsr SLIST.SkipData
jsr MEM.SetDataByte
.2 jsr SLIST.GetNextBlockByte
jsr MEM.SetDataByte
dex
bne .2
jsr SLIST.GetNextBlockByte
clc
.HS B0 BCS
.9 sec
>LDYA SLIST.KeyID
clc
rts
.9 lda #E.NOKEY
sec
rts
*--------------------------------------
SLIST.NewKey jsr SLIST.Search
@ -305,16 +321,15 @@ SLIST.Search jsr K.GetMemPtr
bcc .1
sty SLIST.KeyLen
ldy SLIST.BlockPtr
lda (ZPSListDBlkPtr),y
beq .9
>DEBUG
.2 >LDYA SLIST.KeyID
>STYA ZPSListKeyID
ldy SLIST.BlockPtr
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
beq .9
cmp SLIST.KeyLen
bne .5
@ -402,39 +417,6 @@ SLIST.GetNextByte
.8 rts
*--------------------------------------
SLIST.GetNextBlockByte
phy
ldy SLIST.BytePtr
iny
beq .1
lda (ZPSListDBlkPtr),y
sty SLIST.BlockPtr
ply
rts
.1 ldy SLIST.BytePtr
iny
lda (ZPSListIBlkPtr),y
beq .9 Exit with A=0
sty SLIST.BytePtr
jsr K.GetMemPtr
>STYA ZPSListDBlkPtr
stz SLIST.BlockPtr
lda (ZPSListDBlkPtr)
.9 ply
rts
SLIST.GetBlockByte
phy
ldy SLIST.BlockPtr
lda (ZPSListDBlkPtr),y
ply
rts
*--------------------------------------
SLIST.AddBlockByte
phy
ldy SLIST.BytePtr