mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 18:32:56 +00:00
Kernel 0.93+
This commit is contained in:
parent
1eaef24566
commit
61f832d23a
@ -158,7 +158,7 @@ SEEK.END .EQ $02
|
||||
*--------------------------------------
|
||||
* A2osX.SYSCALL Functions Indexes
|
||||
*--------------------------------------
|
||||
SYS.GetMemStat .EQ $00
|
||||
* .EQ $00
|
||||
SYS.ChMod .EQ $02
|
||||
SYS.FStat .EQ $04
|
||||
SYS.Stat .EQ $06
|
||||
@ -215,8 +215,8 @@ SYS.FPrintF .EQ $5C
|
||||
|
||||
* .EQ $60
|
||||
SYS.ChTyp .EQ $62
|
||||
SYS.LoadFile .EQ $64
|
||||
SYS.LoadTxtFile .EQ $66
|
||||
* .EQ $64
|
||||
* .EQ $66
|
||||
|
||||
* .EQ $68
|
||||
* .EQ $6A
|
||||
@ -256,9 +256,9 @@ SYS.ExecV .EQ $A2
|
||||
* .EQ $A4
|
||||
SYS.Kill .EQ $A6
|
||||
|
||||
* .EQ $A8
|
||||
* .EQ $AA
|
||||
* .EQ $AC
|
||||
SYS.LoadFile .EQ $A8
|
||||
SYS.LoadTxtFile .EQ $AA
|
||||
SYS.GetMemStat .EQ $AC
|
||||
* .EQ $AE
|
||||
|
||||
SYS.Args2ArgV .EQ $B0
|
||||
|
@ -158,8 +158,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYAI K.Buf256
|
||||
|
||||
ldx #SYS.LoadFile
|
||||
jsr K.SYSCALL2.BANK BANK1!!!
|
||||
jsr K.LoadFile
|
||||
bcs BIN.Load.Cleanup.RTS Error Loading file
|
||||
stx BIN.hMem save hMem
|
||||
|
||||
|
@ -110,7 +110,7 @@ K.Buf256 .EQ $1100
|
||||
K.IOBuf .EQ $1200
|
||||
*--------------------------------------
|
||||
Mem.MHiMem .EQ A2osX.SYSCALL
|
||||
Mem.XHiMem .EQ $C000
|
||||
Mem.XHiMem .EQ A2osX.SYSCALL
|
||||
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
||||
*--------------------------------------
|
||||
H.BIN.T .EQ 0
|
||||
|
@ -26,128 +26,6 @@ K.ChTyp jsr PFT.CheckPathYA
|
||||
|
||||
.99 >RET 1 discard filetype
|
||||
*/--------------------------------------
|
||||
* # LoadTxtFile
|
||||
* Load TXT a file in memory (with ending 0)
|
||||
* ## C
|
||||
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW auxtype`
|
||||
* `>PUSHB ftype`
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA filename`
|
||||
* `>SYSCALL loadtxtfile`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = File Length (without ending 0)
|
||||
* X = hMem of Loaded File
|
||||
*\--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPTMP 5 Bytes
|
||||
FIO.bTXT .BS 1
|
||||
FIO.hFILE .BS 1
|
||||
FIO.MemPtr .BS 2
|
||||
FIO.hMem .BS 1
|
||||
.ED
|
||||
*--------------------------------------
|
||||
K.LoadTxtFile sec
|
||||
.HS 90 BCC
|
||||
*/--------------------------------------
|
||||
* # LoadFile
|
||||
* Load a file in memory
|
||||
* ## C
|
||||
* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW auxtype`
|
||||
* `>PUSHB ftype`
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA filename`
|
||||
* `>SYSCALL loadfile`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded File
|
||||
*\--------------------------------------
|
||||
K.LoadFile clc
|
||||
|
||||
ror FIO.bTXT
|
||||
jsr K.FOpen
|
||||
bcs .9
|
||||
|
||||
.12 sta FIO.hFILE
|
||||
|
||||
pha
|
||||
>PUSHWI K.S.Stat
|
||||
pla
|
||||
jsr K.FStat
|
||||
bcs .11
|
||||
|
||||
lda K.S.Stat+S.STAT.SIZE+3
|
||||
ora K.S.Stat+S.STAT.SIZE+2
|
||||
bne .10
|
||||
|
||||
>LDYA K.S.Stat+S.STAT.SIZE
|
||||
|
||||
bit FIO.bTXT Add 1 to buffer size for ending 0
|
||||
bpl .1
|
||||
iny
|
||||
bne .1
|
||||
inc
|
||||
bne .1
|
||||
|
||||
.10 lda #E.FTB
|
||||
.11 bra .99
|
||||
|
||||
.1 jsr K.GetMem
|
||||
bcs .99
|
||||
>STYA FIO.MemPtr
|
||||
stx FIO.hMem
|
||||
|
||||
>PUSHW K.S.Stat+S.STAT.SIZE
|
||||
>PUSHW FIO.MemPtr
|
||||
lda FIO.hFILE
|
||||
jsr K.FRead
|
||||
bcc .2
|
||||
|
||||
pha
|
||||
lda FIO.hMem
|
||||
jsr K.FreeMem
|
||||
pla
|
||||
|
||||
.99 pha
|
||||
lda FIO.hFILE
|
||||
jsr K.FClose
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.2 sty .7+1
|
||||
sta .8+1
|
||||
|
||||
bit FIO.bTXT
|
||||
bpl .5
|
||||
|
||||
pha set ending 0
|
||||
tya
|
||||
|
||||
* clc
|
||||
|
||||
adc FIO.MemPtr
|
||||
sta .4+1
|
||||
|
||||
pla
|
||||
adc FIO.MemPtr+1
|
||||
sta .4+2
|
||||
|
||||
.4 stz $ffff Self Modified
|
||||
|
||||
.5 jsr .99 close file
|
||||
|
||||
.7 ldy #$ff SELFMODIFIED
|
||||
.8 lda #$ff SELFMODIFIED
|
||||
ldx FIO.hMem
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # ChOwn
|
||||
* **In:**
|
||||
* PUSHW = mod
|
||||
|
20
SYS/KERNEL.S.GPX.txt
Normal file
20
SYS/KERNEL.S.GPX.txt
Normal file
@ -0,0 +1,20 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* SYSCALL (AUXLC to AUXLC)
|
||||
* Used by user & kernel for inter bank Calls
|
||||
* In:
|
||||
* X = SYSfnc.Index
|
||||
* Y,A = free for Inline param
|
||||
*--------------------------------------
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
jsr K.SYSCALL2
|
||||
sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.GPX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
ASM
|
@ -46,6 +46,15 @@ Kernel.Init2 sei
|
||||
|
||||
jsr Kernel.Move
|
||||
|
||||
>LDYAI A2osX.GPX
|
||||
>STYA A1L Src Start Address (MAIN)
|
||||
>LDYAI A2osX.D1
|
||||
>STYA A2L Src End Address (MAIN)
|
||||
>LDYAI A2osX.SYSCALL
|
||||
>STYA A4L Dst Address (AUX)
|
||||
sec Main To Aux
|
||||
jsr AuxMove
|
||||
|
||||
sta SETALTZP
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
|
@ -1,71 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||
bcc IO.OPEN.REG.E Already Exists
|
||||
|
||||
bit IO.Open.FLAGS Create if not exists ?
|
||||
bpl IO.OPEN.RTS No, return MLI error
|
||||
|
||||
ldx #2 Yes, Create...
|
||||
|
||||
.1 lda IO.Open.TYPE,x
|
||||
sta K.MLI.PARAMS+4,x File type,Aux type
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda #S.FI.ST.STD
|
||||
|
||||
jsr IO.MLI.CREATE
|
||||
bcs IO.OPEN.RTS
|
||||
|
||||
IO.OPEN.REG.E ldx #0
|
||||
jsr IO.MkFD
|
||||
bcs IO.OPEN.RTS
|
||||
|
||||
jsr IO.MLI.OPEN
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
lda IO.Open.FLAGS
|
||||
bit #O.WRONLY
|
||||
beq .20 Write mode ?
|
||||
|
||||
and #O.APPEND Append ?
|
||||
bne .11 yes, go to end of file
|
||||
|
||||
stz K.MLI.PARAMS+2
|
||||
stz K.MLI.PARAMS+3
|
||||
stz K.MLI.PARAMS+4
|
||||
>MLICALL MLISETEOF no, reset size to 0
|
||||
bra .21
|
||||
|
||||
.11 >MLICALL MLIGETEOF
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
>MLICALL MLISETMARK
|
||||
.21 bcs IO.OPEN.ERR
|
||||
|
||||
.20 lda IO.Open.FLAGS
|
||||
and #O.TEXT Text Mode ?
|
||||
beq .8
|
||||
|
||||
lda #$FF
|
||||
sta K.MLI.PARAMS+2
|
||||
lda #C.CR
|
||||
sta K.MLI.PARAMS+3
|
||||
>MLICALL MLINEWLINE
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
.8 lda IO.hFD
|
||||
IO.OPEN.RTS rts
|
||||
|
||||
IO.OPEN.ERR pha Save Error Code
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.OPEN.CDEV
|
||||
IO.OPEN.BDEV jsr K.IOCTL.GetPDrv
|
||||
|
||||
@ -358,9 +293,7 @@ IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
IO.DEVDIR .EQ * "/DEV/"
|
||||
*--------------------------------------
|
||||
STAT.FIFO .AS "/DEV/FIFO"
|
||||
IO.DEV.FIFO .AS "/DEV/FIFO"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.IO
|
||||
|
@ -5,7 +5,7 @@ NEW
|
||||
*--------------------------------------
|
||||
* Bank 1
|
||||
*--------------------------------------
|
||||
K.SYSCALL .DA K.GetMemStat $00
|
||||
K.SYSCALL .DA 0 $00
|
||||
.DA K.ChMod
|
||||
.DA K.FStat
|
||||
.DA K.Stat
|
||||
@ -61,8 +61,8 @@ K.SYSCALL .DA K.GetMemStat $00
|
||||
|
||||
.DA 0 $60
|
||||
.DA K.ChTyp
|
||||
.DA K.LoadFile
|
||||
.DA K.LoadTxtFile
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.ChOwn
|
||||
@ -101,9 +101,9 @@ K.SYSCALL .DA K.GetMemStat $00
|
||||
.DA K.ExecV
|
||||
.DA 0
|
||||
.DA K.Kill
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.LoadFile
|
||||
.DA K.LoadTxtFile
|
||||
.DA K.GetMemStat
|
||||
.DA 0
|
||||
|
||||
.DA K.Args2ArgV $B0
|
||||
@ -381,11 +381,11 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #$80
|
||||
|
||||
.DA #RRAMWRAMBNK2 $D0
|
||||
.DA #$C0 $D0 : PWD
|
||||
.DA #$80
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #$C0 PWD
|
||||
.DA #$80
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #$C0 PWD
|
||||
.DA #$80
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #$80
|
||||
@ -415,21 +415,21 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||
.DA #$C0 FreeStkObj
|
||||
.DA #$80
|
||||
*--------------------------------------
|
||||
.DA #0 $F0 : SLIST
|
||||
.DA #$C0 $F0 : SLIST
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
.DA #0
|
||||
.DA #$C0
|
||||
.DA #$80
|
||||
*--------------------------------------
|
||||
K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK
|
||||
|
@ -4,7 +4,6 @@ NEW
|
||||
* http://6502.org/source/integers/32muldiv.htm
|
||||
* http://nparker.llx.com/a2/mult.html
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
* ARG32*ACC32->TMP32
|
||||
*--------------------------------------
|
||||
MATH.MUL32 jsr MATH.TMP32ZERO
|
||||
|
@ -275,7 +275,7 @@ K.FreeMem.ERR phx
|
||||
jsr K.SYSCALL2.BANK
|
||||
plx
|
||||
lda #E.INVH
|
||||
>DEBUG
|
||||
>DEBUGOA
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -393,121 +393,6 @@ Mem.DecRefCnt ldy #S.MEM.REFCNT
|
||||
dec
|
||||
sta (ZPMemMgrSPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
ZPSListKeyID .EQ ZPMEMMGR+6
|
||||
ZPSListDataPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataLen .EQ ZPMEMMGR+10
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
||||
*/--------------------------------------
|
||||
* # SListGetData
|
||||
* ## ASM
|
||||
* `PUSHW DataOfs`
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListGetData`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Byte Count
|
||||
* X = hMem (if DataPtr = 0)
|
||||
*\--------------------------------------
|
||||
K.SListGetData pha
|
||||
>PULLW ZPSListKeyID
|
||||
>PULLW ZPSListDataPtr
|
||||
>PULLW ZPSListDataLen
|
||||
>PULLW ZPMemMgrSize
|
||||
pla
|
||||
bra K.SListFree
|
||||
*/--------------------------------------
|
||||
* # SListAddData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListAddData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListAddData
|
||||
*/--------------------------------------
|
||||
* # SListSetData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListSetData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListSetData pha
|
||||
>PULLW ZPSListKeyID
|
||||
>PULLW ZPSListDataPtr
|
||||
>PULLW ZPSListDataLen
|
||||
pla
|
||||
bra K.SListFree
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListGetByID`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID pha
|
||||
>PULLW ZPSListKeyID
|
||||
>PULLW ZPSListDataPtr
|
||||
pla
|
||||
bra K.SListFree
|
||||
*/--------------------------------------
|
||||
* # SListNewKey
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListNewKey`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = KeyID
|
||||
* X = KeyLen
|
||||
*\--------------------------------------
|
||||
K.SListNewKey
|
||||
*/--------------------------------------
|
||||
* # SListLookup
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListLookup`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = KeyID
|
||||
* X = Key Length
|
||||
*\--------------------------------------
|
||||
K.SListLookup pha
|
||||
>PULLW ZPSListDataPtr
|
||||
pla
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## ASM
|
||||
* `>SYSCALL SListNew`
|
||||
* ## RETURN VALUE
|
||||
* A=hSList
|
||||
*\--------------------------------------
|
||||
K.SListNew
|
||||
*/--------------------------------------
|
||||
* # SListFree
|
||||
* ## ASM
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListFree sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr X.SLIST
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # NewStkObj
|
||||
* Y,A = Size Requested
|
||||
@ -595,15 +480,6 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
|
||||
* (X,Y unmodified)
|
||||
*\--------------------------------------
|
||||
*--------------------------------------
|
||||
* in Y,A = buf size
|
||||
*--------------------------------------
|
||||
MEM.GetMainBuf sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
jsr K.GetMem
|
||||
sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
MEM.GetKrnlBuf pha
|
||||
tya
|
||||
clc
|
||||
@ -616,55 +492,21 @@ MEM.GetKrnlBuf pha
|
||||
cpx #DevMgr.HiMem
|
||||
pha
|
||||
sbc /DevMgr.HiMem
|
||||
bcs .98 No More Room...
|
||||
pla
|
||||
bcs .99 No More Room...
|
||||
|
||||
ldy DevMgr.Free
|
||||
stx DevMgr.Free
|
||||
ldx DevMgr.Free+1
|
||||
pla
|
||||
sta DevMgr.Free+1
|
||||
txa
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.98 pla
|
||||
.99 lda #E.OOM
|
||||
* sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # GetMemStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to 24 bytes buffer
|
||||
* ## RETURN VALUE
|
||||
* Buffer filled with memory stats
|
||||
*\--------------------------------------
|
||||
K.GetMemStat >STYA ZPPtr1
|
||||
|
||||
ldy #23
|
||||
ldx #7
|
||||
|
||||
.1 lda DevMgr.Stat,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
sta SETREADAUX
|
||||
|
||||
jsr .2
|
||||
|
||||
sta CLRREADAUX
|
||||
|
||||
.2 ldx #7
|
||||
|
||||
.3 lda Mem.Table,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MEM
|
||||
|
@ -75,13 +75,13 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
.90 pha save error code
|
||||
>PUSHBI 2
|
||||
lda .8+1
|
||||
>SYSCALL2 Kill
|
||||
jsr K.Kill
|
||||
pla get back error code
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* PS.CreateChild
|
||||
@ -226,7 +226,7 @@ PS.CreateChild ldx #0
|
||||
.9 pha
|
||||
>PUSHBI 2
|
||||
lda CORE.LastPSID
|
||||
>SYSCALL2 Kill
|
||||
jsr K.Kill
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
@ -582,7 +582,7 @@ PS.AddYAp12ArgSize
|
||||
K.Kill cmp #0
|
||||
beq .99 CS
|
||||
|
||||
sta K.Kill.PID
|
||||
sta .1+1
|
||||
|
||||
jsr CORE.GetPSByID
|
||||
bcs .99
|
||||
@ -618,23 +618,17 @@ K.Kill.2 ldy #S.PS.hSID
|
||||
lda S.Table.hSession-1,x
|
||||
jsr K.FreeMem
|
||||
|
||||
ldy #S.PS.hSS
|
||||
jsr .8
|
||||
ldx #5
|
||||
|
||||
ldy #S.PS.hDS
|
||||
jsr .8
|
||||
|
||||
ldy #S.PS.hCS
|
||||
jsr .8
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
jsr .8
|
||||
.11 ldy .10,x
|
||||
|
||||
ldy #S.PS.hENV
|
||||
jsr .8
|
||||
lda (ZPPtr1),y
|
||||
bne .12
|
||||
|
||||
ldy #S.PS.hCWD
|
||||
jsr .8
|
||||
jsr K.FreeMem
|
||||
|
||||
.12 dex
|
||||
bpl .11
|
||||
|
||||
lda (ZPPtr1)
|
||||
bit #S.PS.F.CLOSEONX
|
||||
@ -645,7 +639,7 @@ K.Kill.2 ldy #S.PS.hSID
|
||||
ldx #SYS.fclose
|
||||
jsr K.SYSCALL2.BANK
|
||||
|
||||
.1 lda K.Kill.PID
|
||||
.1 lda #$ff SELF MODIFIED
|
||||
|
||||
ldx #0
|
||||
|
||||
@ -655,17 +649,175 @@ K.Kill.2 ldy #S.PS.hSID
|
||||
inx
|
||||
cpx CORE.PSCount
|
||||
bne .2
|
||||
bra *
|
||||
|
||||
.3 stz PS.Table.PID,x
|
||||
lda PS.TABLE.hPS,x
|
||||
stz PS.TABLE.hPS,x
|
||||
.4 jmp K.FreeMem
|
||||
jmp K.FreeMem
|
||||
|
||||
.8 lda (ZPPtr1),y
|
||||
bne .4
|
||||
.9 rts
|
||||
.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
|
||||
.DA #S.PS.hARGV,#S.PS.hENV,#S.PS.hCWD
|
||||
*/--------------------------------------
|
||||
* # LoadTxtFile
|
||||
* Load TXT a file in memory (with ending 0)
|
||||
* ## C
|
||||
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW auxtype`
|
||||
* `>PUSHB ftype`
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA filename`
|
||||
* `>SYSCALL loadtxtfile`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = File Length (without ending 0)
|
||||
* X = hMem of Loaded File
|
||||
*\--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPTMP 5 Bytes
|
||||
FIO.bTXT .BS 1
|
||||
FIO.hFILE .BS 1
|
||||
FIO.MemPtr .BS 2
|
||||
FIO.hMem .BS 1
|
||||
.ED
|
||||
*--------------------------------------
|
||||
K.Kill.PID .BS 1
|
||||
K.LoadTxtFile sec
|
||||
.HS 90 BCC
|
||||
*/--------------------------------------
|
||||
* # LoadFile
|
||||
* Load a file in memory
|
||||
* ## C
|
||||
* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW auxtype`
|
||||
* `>PUSHB ftype`
|
||||
* `>PUSHB flags`
|
||||
* `>LDYA filename`
|
||||
* `>SYSCALL loadfile`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded File
|
||||
*\--------------------------------------
|
||||
K.LoadFile clc
|
||||
|
||||
ror FIO.bTXT
|
||||
ldx #SYS.FOpen
|
||||
jsr K.SYSCALL2.BANK
|
||||
|
||||
bcs .9
|
||||
|
||||
.12 sta FIO.hFILE
|
||||
|
||||
pha
|
||||
>PUSHWI K.S.Stat
|
||||
pla
|
||||
ldx #SYS.FStat
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcs .11
|
||||
|
||||
lda K.S.Stat+S.STAT.SIZE+3
|
||||
ora K.S.Stat+S.STAT.SIZE+2
|
||||
bne .10
|
||||
|
||||
>LDYA K.S.Stat+S.STAT.SIZE
|
||||
|
||||
bit FIO.bTXT Add 1 to buffer size for ending 0
|
||||
bpl .1
|
||||
iny
|
||||
bne .1
|
||||
inc
|
||||
bne .1
|
||||
|
||||
.10 lda #E.FTB
|
||||
.11 bra .99
|
||||
|
||||
.1 jsr K.GetMem
|
||||
bcs .99
|
||||
>STYA FIO.MemPtr
|
||||
stx FIO.hMem
|
||||
|
||||
>PUSHW K.S.Stat+S.STAT.SIZE
|
||||
>PUSHW FIO.MemPtr
|
||||
lda FIO.hFILE
|
||||
ldx #SYS.FRead
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcc .2
|
||||
|
||||
pha
|
||||
lda FIO.hMem
|
||||
jsr K.FreeMem
|
||||
pla
|
||||
|
||||
.99 pha
|
||||
lda FIO.hFILE
|
||||
ldx #SYS.FClose
|
||||
jsr K.SYSCALL2.BANK
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.2 sty .7+1
|
||||
sta .8+1
|
||||
|
||||
bit FIO.bTXT
|
||||
bpl .5
|
||||
|
||||
pha set ending 0
|
||||
tya
|
||||
|
||||
* clc
|
||||
|
||||
adc FIO.MemPtr
|
||||
sta .4+1
|
||||
|
||||
pla
|
||||
adc FIO.MemPtr+1
|
||||
sta .4+2
|
||||
|
||||
.4 stz $ffff Self Modified
|
||||
|
||||
.5 jsr .99 close file
|
||||
|
||||
.7 ldy #$ff SELFMODIFIED
|
||||
.8 lda #$ff SELFMODIFIED
|
||||
ldx FIO.hMem
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # GetMemStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to 24 bytes buffer
|
||||
* ## RETURN VALUE
|
||||
* Buffer filled with memory stats
|
||||
*\--------------------------------------
|
||||
K.GetMemStat >STYA ZPPtr1
|
||||
|
||||
ldy #23
|
||||
ldx #7
|
||||
|
||||
.1 lda DevMgr.Stat,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
sta SETREADAUX
|
||||
|
||||
jsr .2
|
||||
|
||||
sta CLRREADAUX
|
||||
|
||||
.2 ldx #7
|
||||
|
||||
.3 lda Mem.Table,x
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PS
|
||||
|
@ -1,114 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*/--------------------------------------
|
||||
* # GetPWUID
|
||||
* ## C
|
||||
* `int getpwuid(short int uid, S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>PUSHW passwd`
|
||||
* `lda uid`
|
||||
* `>SYSCALL getpwuid`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWUID
|
||||
*/--------------------------------------
|
||||
* # GetPWName
|
||||
* ## C
|
||||
* `int getpwname(const char* name, S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>PUSHW passwd`
|
||||
* `>LDYA name`
|
||||
* `>SYSCALL getpwname`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWName jsr SHARED.SPtr1PPtr2
|
||||
|
||||
bra K.PutPW.1
|
||||
*/--------------------------------------
|
||||
* # PutPW
|
||||
* ## C
|
||||
* `int putpw( S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>LDYA passwd`
|
||||
* `>SYSCALL putpw`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.PutPW >STYA ZPPtr2
|
||||
|
||||
K.PutPW.1 sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
jsr X.PWD
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
bcs .9
|
||||
|
||||
lda PWD.bDirty
|
||||
beq .9
|
||||
|
||||
lda PWD.DBPtr
|
||||
sta A1L
|
||||
clc
|
||||
adc PWD.DBSize
|
||||
sta A2L
|
||||
|
||||
lda PWD.DBPtr+1
|
||||
sta A1L+1
|
||||
adc PWD.DBSize+1
|
||||
sta A2L+1
|
||||
|
||||
>LDYA PWD.DBSize
|
||||
jsr K.getmem
|
||||
bcs .9
|
||||
|
||||
stx .8+1
|
||||
>STYA A4L Save Destination Address in MAIN
|
||||
|
||||
clc Aux To Main
|
||||
jsr AuxMove
|
||||
|
||||
>PUSHWZ Aux type
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHBI O.WRONLY+O.CREATE
|
||||
>LDYAI PWD.FILE
|
||||
ldx #SYS.FOpen
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcc .1
|
||||
|
||||
pha
|
||||
jsr .8
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.1 sta .7+1
|
||||
|
||||
>PUSHW PWD.DBSize
|
||||
lda .8+1
|
||||
jsr K.getmemptr
|
||||
>PUSHYA
|
||||
lda .7+1
|
||||
ldx #SYS.FWrite
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcc .2
|
||||
|
||||
pha
|
||||
jsr .7
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 stz PWD.bDirty
|
||||
|
||||
.7 lda #$ff SELF MODIFIED
|
||||
ldx #SYS.fclose
|
||||
jsr K.SYSCALL2.BANK
|
||||
|
||||
.8 lda #$ff
|
||||
jmp K.freemem SELF MODIFIED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PWD
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
ASM
|
@ -1,11 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
X.PWD jmp (.1-SYS.GetPWUID,x)
|
||||
.1 .DA PWD.GetPWUID
|
||||
.DA PWD.GetPWName
|
||||
.DA PWD.PutPW
|
||||
*--------------------------------------
|
||||
* ZPPtr1 : UID / pName (Input)
|
||||
* ZPPtr2 : pPW (Output)
|
||||
* ZPPtr3 : pDB
|
||||
@ -13,7 +8,21 @@ X.PWD jmp (.1-SYS.GetPWUID,x)
|
||||
* ....\CR
|
||||
* \0
|
||||
*--------------------------------------
|
||||
PWD.GetPWUID lda PWD.hDB
|
||||
*/--------------------------------------
|
||||
* # GetPWUID
|
||||
* ## C
|
||||
* `int getpwuid(short int uid, S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>PUSHW passwd`
|
||||
* `lda uid`
|
||||
* `>SYSCALL getpwuid`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWUID sta ZPPtr1+1
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda PWD.hDB
|
||||
beq PWD.GetPW.9
|
||||
|
||||
jsr K.GetmemPtr
|
||||
@ -50,16 +59,26 @@ PWD.GetPW.9 lda #E.IPWDDB
|
||||
PWD.GetPW.99 lda #E.IUSR
|
||||
sec
|
||||
PWD.GetPW.RTS rts
|
||||
*--------------------------------------
|
||||
PWD.GetPWName lda PWD.hDB
|
||||
*/--------------------------------------
|
||||
* # GetPWName
|
||||
* ## C
|
||||
* `int getpwname(const char* name, S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>PUSHW passwd`
|
||||
* `>LDYA name`
|
||||
* `>SYSCALL getpwname`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.GetPWName >STYA TXTPTR
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda PWD.hDB
|
||||
beq PWD.GetPW.9
|
||||
|
||||
jsr K.GetmemPtr
|
||||
>STYA ZPPtr3
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>STYA TXTPTR
|
||||
|
||||
ldy #0
|
||||
jsr SHARED.TXTPTR.GetY
|
||||
beq PWD.GetPW.99
|
||||
@ -91,13 +110,21 @@ PWD.GetPWName lda PWD.hDB
|
||||
.8 iny
|
||||
jsr PWD.NextString skip PASSWORD
|
||||
jmp PWD.GetByte get UID
|
||||
*/--------------------------------------
|
||||
* # PutPW
|
||||
* ## C
|
||||
* `int putpw( S.PW* passwd );`
|
||||
* ## ASM
|
||||
* `>LDYA passwd`
|
||||
* `>SYSCALL putpw`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.PutPW >STYA ZPPtr2
|
||||
>STYA TXTPTR
|
||||
*--------------------------------------
|
||||
* ZPPtr2 : pPW (Input)
|
||||
* ZPPtr3 : pDB
|
||||
*--------------------------------------
|
||||
PWD.PutPW >LDYA ZPPtr2
|
||||
>STYA TXTPTR
|
||||
|
||||
lda PWD.hDB
|
||||
bne .1
|
||||
|
||||
@ -191,7 +218,71 @@ PWD.PutPW >LDYA ZPPtr2
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPPtr2 = pPW
|
||||
PWD.Save lda PWD.bDirty
|
||||
beq .9
|
||||
|
||||
lda PWD.DBPtr
|
||||
sta A1L
|
||||
clc
|
||||
adc PWD.DBSize
|
||||
sta A2L
|
||||
|
||||
lda PWD.DBPtr+1
|
||||
sta A1L+1
|
||||
adc PWD.DBSize+1
|
||||
sta A2L+1
|
||||
|
||||
>LDYA PWD.DBSize
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
stx .8+1
|
||||
>STYA A4L Save Destination Address in MAIN
|
||||
|
||||
clc Aux To Main
|
||||
jsr AuxMove
|
||||
|
||||
>PUSHWZ Aux type
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHBI O.WRONLY+O.CREATE
|
||||
>LDYAI PWD.FILE
|
||||
ldx #SYS.FOpen
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcc .1
|
||||
|
||||
pha
|
||||
jsr .8
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.1 sta .7+1
|
||||
|
||||
>PUSHW PWD.DBSize
|
||||
lda .8+1
|
||||
jsr K.getmemptr
|
||||
>PUSHYA
|
||||
lda .7+1
|
||||
ldx #SYS.FWrite
|
||||
jsr K.SYSCALL2.BANK
|
||||
bcc .2
|
||||
|
||||
pha
|
||||
jsr .7
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 stz PWD.bDirty
|
||||
|
||||
.7 lda #$ff SELF MODIFIED
|
||||
ldx #SYS.fclose
|
||||
jsr K.SYSCALL2.BANK
|
||||
|
||||
.8 lda #$ff
|
||||
jmp K.freemem SELF MODIFIED
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
PWD.GetUID >LDYA PWD.DBPtr
|
||||
>STYA ZPPtr3
|
||||
|
@ -154,6 +154,15 @@ SHARED.NextCharPtr2
|
||||
inc ZPPtr2+1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SHARED.PullYA sta CLRREADAUX
|
||||
lda (pStack)
|
||||
tay
|
||||
inc pStack
|
||||
lda (pStack)
|
||||
inc pStack
|
||||
sta SETREADAUX
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SHARED
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
@ -1,17 +1,36 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
X.SLIST jmp (.1-SYS.SListGetData,x)
|
||||
.1 .DA SLIST.GetData
|
||||
.DA SLIST.AddData
|
||||
.DA SLIST.SetData
|
||||
.DA SLIST.GetByID
|
||||
.DA SLIST.NewKey
|
||||
.DA SLIST.Lookup
|
||||
.DA SLIST.New
|
||||
.DA SLIST.Free
|
||||
*--------------------------------------
|
||||
SLIST.GetData jsr SLIST.Select
|
||||
ZPSListKeyID .EQ ZPMEMMGR+6
|
||||
ZPSListDataPtr .EQ ZPMEMMGR+8
|
||||
ZPSListDataLen .EQ ZPMEMMGR+10
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
||||
*/--------------------------------------
|
||||
* # SListGetData
|
||||
* ## ASM
|
||||
* `PUSHW DataOfs`
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListGetData`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Byte Count
|
||||
* X = hMem (if DataPtr = 0)
|
||||
*\--------------------------------------
|
||||
K.SListGetData sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListKeyID
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataLen
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPMemMgrSize
|
||||
|
||||
jsr SLIST.Select
|
||||
jsr SLIST.SkipKey
|
||||
jsr SLIST.GetDataLen
|
||||
|
||||
@ -36,7 +55,7 @@ SLIST.GetData jsr SLIST.Select
|
||||
bne .12
|
||||
|
||||
>LDYA SLIST.DataLen
|
||||
jsr MEM.GetMainBuf
|
||||
>SYSCALL2 GetMem In MAIN Mem
|
||||
bcs .9
|
||||
stx .82+1
|
||||
>STYA ZPSListDataPtr
|
||||
@ -99,8 +118,26 @@ SLIST.GetData jsr SLIST.Select
|
||||
.82 ldx #$ff SELF MODIFIED
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.AddData jsr SLIST.Select
|
||||
*/--------------------------------------
|
||||
* # SListAddData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListAddData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListAddData sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListKeyID
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataLen
|
||||
|
||||
jsr SLIST.Select
|
||||
jsr SLIST.SkipKey
|
||||
|
||||
>LDYA SLIST.KeyID Save DataLen location
|
||||
@ -153,8 +190,26 @@ SLIST.AddData jsr SLIST.Select
|
||||
jsr SLIST.AddBlockByte Make sure 0 follow DATA
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.SetData jsr SLIST.Select
|
||||
*/--------------------------------------
|
||||
* # SListSetData
|
||||
* ## ASM
|
||||
* `PUSHW DataLen`
|
||||
* `PUSHW DataPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListSetData`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListSetData sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListKeyID
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataLen
|
||||
|
||||
jsr SLIST.Select
|
||||
jsr SLIST.SkipKey
|
||||
jsr SLIST.GetDataLen
|
||||
|
||||
@ -187,8 +242,24 @@ SLIST.SetData jsr SLIST.Select
|
||||
.9 lda #E.DATALEN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.GetByID jsr SLIST.Select
|
||||
*/--------------------------------------
|
||||
* # SListGetByID
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `PUSHW KeyID`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListGetByID`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = Next KeyID
|
||||
*\--------------------------------------
|
||||
K.SListGetByID sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListKeyID
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
|
||||
jsr SLIST.Select
|
||||
|
||||
jsr SLIST.GetNextByte
|
||||
|
||||
@ -217,8 +288,22 @@ SLIST.GetByID jsr SLIST.Select
|
||||
.9 lda #E.NOKEY
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.NewKey jsr SLIST.Search
|
||||
*/--------------------------------------
|
||||
* # SListNewKey
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListNewKey`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = KeyID
|
||||
* X = KeyLen
|
||||
*\--------------------------------------
|
||||
K.SListNewKey sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
|
||||
jsr SLIST.Search
|
||||
bcc .99
|
||||
|
||||
lda SLIST.KeyLen
|
||||
@ -254,16 +339,36 @@ SLIST.NewKey jsr SLIST.Search
|
||||
.99 lda #E.DUPKEY
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.Lookup jsr SLIST.Search
|
||||
*/--------------------------------------
|
||||
* # SListLookup
|
||||
* ## ASM
|
||||
* `PUSHW KeyPtr`
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListLookup`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = KeyID
|
||||
* X = Key Length
|
||||
*\--------------------------------------
|
||||
K.SListLookup sta SLIST.hList
|
||||
|
||||
jsr SHARED.PullYA
|
||||
>STYA ZPSListDataPtr
|
||||
|
||||
jsr SLIST.Search
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPSListKeyID
|
||||
ldx SLIST.KeyLen
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.New >LDYAI 160 40k Max before out of memory!!!
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## ASM
|
||||
* `>SYSCALL SListNew`
|
||||
* ## RETURN VALUE
|
||||
* A=hSList
|
||||
*\--------------------------------------
|
||||
K.SListNew >LDYAI 160 40k Max before out of memory!!!
|
||||
jsr K.GetMem0
|
||||
bcs .9
|
||||
>STYA ZPSListIBlkPtr
|
||||
@ -281,8 +386,14 @@ SLIST.New >LDYAI 160 40k Max before out of memory!!!
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLIST.Free sta .8+1
|
||||
*/--------------------------------------
|
||||
* # SListFree
|
||||
* ## ASM
|
||||
* `lda hSList`
|
||||
* `>SYSCALL SListFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListFree sta .8+1
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA .1+1
|
||||
@ -299,7 +410,7 @@ SLIST.Free sta .8+1
|
||||
jmp K.FreeMem
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
SLIST.Search jsr K.GetMemPtr
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
@ -466,6 +577,7 @@ SLIST.ToNextBlock
|
||||
>STYA ZPSListDBlkPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.hList .BS 1
|
||||
SLIST.KeyLen .BS 1
|
||||
SLIST.DataLen .BS 2
|
||||
SLIST.nDataCnt .BS 2
|
||||
|
@ -277,7 +277,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda STAT.FIFO,y
|
||||
.1 lda IO.DEV.FIFO,y
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
cpy #9
|
||||
|
@ -36,8 +36,8 @@ UNISTD.Open ldx #5 /DEV/
|
||||
bcs .9
|
||||
|
||||
.1 lda K.MLI.PATH,x
|
||||
cmp IO.DEVDIR-1,x
|
||||
bne .9
|
||||
cmp IO.DEV.FIFO-1,x
|
||||
bne IO.OPEN.REG
|
||||
dex
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
@ -83,17 +83,82 @@ UNISTD.Open ldx #5 /DEV/
|
||||
|
||||
.71 lda (pFD) #S.FD.T
|
||||
tax
|
||||
jmp (.8,x)
|
||||
jmp (.8-4,x)
|
||||
|
||||
.8 .DA STDIO.IOERR REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.8
|
||||
* .DA STDIO.IOERR REG
|
||||
* .DA STDIO.IOERR DIR
|
||||
.DA IO.OPEN.CDEV
|
||||
.DA IO.OPEN.BDEV
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA IO.OPEN.DSOCK
|
||||
.DA IO.OPEN.SSOCK
|
||||
.DA IO.OPEN.PIPE
|
||||
.9 jmp IO.OPEN.REG
|
||||
*--------------------------------------
|
||||
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||
bcc IO.OPEN.REG.E Already Exists
|
||||
|
||||
bit IO.Open.FLAGS Create if not exists ?
|
||||
bpl IO.OPEN.RTS No, return MLI error
|
||||
|
||||
ldx #2 Yes, Create...
|
||||
|
||||
.1 lda IO.Open.TYPE,x
|
||||
sta K.MLI.PARAMS+4,x File type,Aux type
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda #S.FI.ST.STD
|
||||
|
||||
jsr IO.MLI.CREATE
|
||||
bcs IO.OPEN.RTS
|
||||
|
||||
IO.OPEN.REG.E ldx #0
|
||||
jsr IO.MkFD
|
||||
bcs IO.OPEN.RTS
|
||||
|
||||
jsr IO.MLI.OPEN
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
lda IO.Open.FLAGS
|
||||
bit #O.WRONLY
|
||||
beq .20 Write mode ?
|
||||
|
||||
and #O.APPEND Append ?
|
||||
bne .11 yes, go to end of file
|
||||
|
||||
stz K.MLI.PARAMS+2
|
||||
stz K.MLI.PARAMS+3
|
||||
stz K.MLI.PARAMS+4
|
||||
>MLICALL MLISETEOF no, reset size to 0
|
||||
bra .21
|
||||
|
||||
.11 >MLICALL MLIGETEOF
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
>MLICALL MLISETMARK
|
||||
.21 bcs IO.OPEN.ERR
|
||||
|
||||
.20 lda IO.Open.FLAGS
|
||||
and #O.TEXT Text Mode ?
|
||||
beq .8
|
||||
|
||||
lda #$FF
|
||||
sta K.MLI.PARAMS+2
|
||||
lda #C.CR
|
||||
sta K.MLI.PARAMS+3
|
||||
>MLICALL MLINEWLINE
|
||||
bcs IO.OPEN.ERR
|
||||
|
||||
.8 lda IO.hFD
|
||||
IO.OPEN.RTS rts
|
||||
|
||||
IO.OPEN.ERR pha Save Error Code
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # close
|
||||
* ## C
|
||||
|
@ -39,6 +39,9 @@ Mem.XLoMem .EQ *
|
||||
A2osX.GP .PH A2osX.SYSCALL
|
||||
.INB USR/SRC/SYS/KERNEL.S.GP
|
||||
.EP
|
||||
A2osX.GPX .PH A2osX.SYSCALL
|
||||
.INB USR/SRC/SYS/KERNEL.S.GPX
|
||||
.EP
|
||||
A2osX.D1 .PH $D000
|
||||
.DA #RRAMWRAMBNK1
|
||||
.INB USR/SRC/SYS/KERNEL.S.STAT
|
||||
@ -52,13 +55,12 @@ A2osX.D1 .PH $D000
|
||||
.EP
|
||||
A2osX.D2 .PH $D000
|
||||
.DA #RRAMWRAMBNK2
|
||||
.INB USR/SRC/SYS/KERNEL.S.BIN
|
||||
.INB USR/SRC/SYS/KERNEL.S.STRING
|
||||
.INB USR/SRC/SYS/KERNEL.S.TIME
|
||||
.INB USR/SRC/SYS/KERNEL.S.BIN
|
||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||
.EP
|
||||
A2osX.E0 .PH $E000
|
||||
.INB USR/SRC/SYS/KERNEL.S.JMP
|
||||
|
Loading…
x
Reference in New Issue
Block a user