Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-03-11 17:41:45 +01:00
parent a395d3fe03
commit 8a81ee27bc
13 changed files with 103 additions and 87 deletions

Binary file not shown.

View File

@ -586,9 +586,10 @@ CSH.fCall ldx ZPPtr1
pla pla
sta ZPPtr1 sta ZPPtr1
phy phy
jsr .80 jsr CSH.fCall.Exec
plx plx restore returned type
rts rts
.90 lda #CSH.E.SYNTAX .90 lda #CSH.E.SYNTAX
.HS 2C BIT ABS .HS 2C BIT ABS
.91 lda #CSH.E.TMISMATCH .91 lda #CSH.E.TMISMATCH
@ -607,7 +608,9 @@ CSH.fCall ldx ZPPtr1
.99 rts .99 rts
.80 jmp (J.CSH.EXEC,x) *--------------------------------------
CSH.fCall.Exec
jmp (J.CSH.EXEC,x)
*-------------------------------------- *--------------------------------------
* Input: * Input:
* ZPFileBufPtr, A = Expected type * ZPFileBufPtr, A = Expected type
@ -887,8 +890,8 @@ CSH.GetNumOnStack
bcc .1 bcc .1
bne .99 bne .99
>PUSHW ZPFileBufPtr
>PUSHWI ZPFileBufPtr >PUSHWI ZPFileBufPtr
>LDYA ZPFileBufPtr
>SYSCALL StrToF >SYSCALL StrToF
clc clc
rts rts

View File

@ -81,12 +81,16 @@ CORE.Events jsr CORE.GetEvents
*-------------------------------------- *--------------------------------------
.4 bit OPENAPPLE .4 bit OPENAPPLE
bpl .8 bpl .8
lda KBD lda KBD
bpl .8 bpl .8
cmp #"0" cmp #"0"
bcc .8 bcc .8
cmp #"6"
cmp #"9"+1
bcs .8 bcs .8
sta KBDSTROBE sta KBDSTROBE
and #$0F and #$0F
tax tax

View File

@ -64,7 +64,28 @@ K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
>STYA pFD >STYA pFD
lda #S.IOCTL.STATCODE.GETDIB lda #S.IOCTL.STATCODE.GETDIB
jmp SHARED.GetDevStatus *--------------------------------------
SHARED.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
jsr SHARED.GetPDrv
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
*--------------------------------------
SHARED.pDrvJmp jmp (pDrv)
*--------------------------------------
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
iny
lda (pFD),y
sta pDRV+1
rts
*/-------------------------------------- */--------------------------------------
* # MKDev * # MKDev
* Create a hDEV * Create a hDEV
@ -163,7 +184,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
*/-------------------------------------- */--------------------------------------
* # IOCTL * # IOCTL
* ## C * ## C
* `int ioctl(short int DevID, int request, void * param );` * `int ioctl(short int DevID, short int request, void *param);`
* ## ASM * ## ASM
* `>PUSHB hDEV` * `>PUSHB hDEV`
* `>PUSHB request` * `>PUSHB request`

View File

@ -31,8 +31,7 @@ K.OpenDir jsr PFT.CheckPath0
jsr IO.MLI.OPEN jsr IO.MLI.OPEN
bcs .98 bcs .98
.8 lda IO.hFD .8 jsr STDIO.NewHFile
jsr STDIO.NewHFile
bcc K.ReadDir.RTS bcc K.ReadDir.RTS
.98 jmp UNISTD.Open.ERR .98 jmp UNISTD.Open.ERR
@ -56,12 +55,13 @@ K.OpenDir jsr PFT.CheckPath0
*\-------------------------------------- *\--------------------------------------
.DUMMY .DUMMY
.OR ZPTMP 8 Bytes .OR ZPTMP 8 Bytes
K.ReadDir.hMem .BS 1 K.ReadDir.hBlk .BS 1
K.ReadDir.BufSize .BS 2
K.ReadDir.ECIB .BS 1 K.ReadDir.ECIB .BS 1
K.ReadDir.EL .BS 1 K.ReadDir.EL .BS 1
K.ReadDir.EPB .BS 1 K.ReadDir.EPB .BS 1
K.ReadDir.EC .BS 2 K.ReadDir.EC .BS 2
K.ReadDir.BufSize .BS 2
K.ReadDir.hBuf .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
K.ReadDir jsr PFT.CheckNodeA K.ReadDir jsr PFT.CheckNodeA
@ -173,7 +173,7 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
jsr K.GetMem jsr K.GetMem
bcs .99 bcs .99
stx K.ReadDir.hMem stx K.ReadDir.hBlk
>STYA K.MLI.PARAMS+2 For reading >STYA K.MLI.PARAMS+2 For reading
pha pha
tya tya
@ -210,8 +210,8 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
inc K.ReadDir.EC+1 ...and ProDOS does NOT include header entry in EC inc K.ReadDir.EC+1 ...and ProDOS does NOT include header entry in EC
bra .4 bra .4
.98 jsr K.ReadDir.CLN .98 jmp K.ReadDir.FreeBlk
sec
.99 rts .99 rts
.2 ldy #S.FD.DIR.EL+3 .2 ldy #S.FD.DIR.EL+3
@ -287,7 +287,7 @@ K.ReadDir.DIR1 lda (ZPPtr2) X = EntryCount In This Block
bne K.ReadDir.DIR1 bne K.ReadDir.DIR1
* pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed) * pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed)
K.ReadDir.DIR2 jsr K.ReadDir.GetBuf K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
bcs .9 bcs K.ReadDir.FreeBlk
lda K.ReadDir.EPB lda K.ReadDir.EPB
sta K.ReadDir.ECIB sta K.ReadDir.ECIB
@ -338,29 +338,27 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
inc ZPPtr3+1 inc ZPPtr3+1
bra .1 bra .1
.9 jsr K.ReadDir.CLN
sec
rts
.8 ldx #3 .8 ldx #3
ldy #S.FD.DIR.EL+3 ldy #S.FD.DIR.EL+3
.81 lda K.ReadDir.EL,x Store back this session prameters to S.DIR .81 lda K.ReadDir.EL,x Store back this session parameters to S.DIR
sta (pFD),y sta (pFD),y
dey dey
dex dex
bpl .81 bpl .81
jsr K.ReadDir.CLN Discard READBUFFER jsr K.ReadDir.FreeBlk
K.ReadDir.EXIT ldx #$ff Self Modified : hDIRENT K.ReadDir.EXIT ldx K.ReadDir.hBuf
txa txa
jmp K.GetMemPtr jmp K.GetMemPtr
*-------------------------------------- *--------------------------------------
K.ReadDir.CLN pha K.ReadDir.FreeBlk
lda K.ReadDir.hMem pha
lda K.ReadDir.hBlk
jsr K.FreeMem jsr K.FreeMem
pla pla
sec
rts rts
*-------------------------------------- *--------------------------------------
K.ReadDir.GetBuf K.ReadDir.GetBuf
@ -368,7 +366,7 @@ K.ReadDir.GetBuf
K.ReadDir.GetBufYA K.ReadDir.GetBufYA
jsr K.GetMem0 make sure 0 filled jsr K.GetMem0 make sure 0 filled
bcs .9 bcs .9
stx K.ReadDir.EXIT+1 stx K.ReadDir.hBuf
>STYA ZPPtr4 >STYA ZPPtr4
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -37,11 +37,11 @@ IO.WRITE.REG.RTS
IO.OPEN.CDEV IO.OPEN.CDEV
IO.OPEN.BDEV jsr SHARED.GetPDrv IO.OPEN.BDEV jsr SHARED.GetPDrv
ldx #IOCTL.OPEN ldx #IOCTL.OPEN
lda IO.hDev lda IO.hFD
jsr SHARED.pDrvJmp jsr SHARED.pDrvJmp
bcs IO.WRITE.REG.RTS bcs IO.WRITE.REG.RTS
lda IO.hDev lda IO.hFD
*-------------------------------------- *--------------------------------------
IO.CLOSE.CDEV IO.CLOSE.CDEV
IO.CLOSE.BDEV IO.CLOSE.BDEV
@ -125,13 +125,16 @@ IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
* X = 2 > PIPE * X = 2 > PIPE
*-------------------------------------- *--------------------------------------
IO.MkFD stx .8+1 IO.MkFD stx .8+1
ldy IO.MkFD.Y,x ldy IO.MkFD.Y,x
lda #0 lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX jsr MEM.GetMem.YAX
bcs .9 bcs .9
>STYA pFD >STYA pFD
stx IO.hFD stx IO.hFD
.8 ldx #$ff SELF MODIFIED .8 ldx #$ff SELF MODIFIED
lda IO.MkFD.T,x lda IO.MkFD.T,x
sta (pFD) X = hFD, A = T sta (pFD) X = hFD, A = T

View File

@ -315,13 +315,13 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 $90 : DEV .DA #RRAMWRAMBNK1 $90 : DEV
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK1
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK1
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK1
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 $98 : BIN .DA #RRAMWRAMBNK2 $98 : BIN
.DA #0 .DA #0

View File

@ -1,28 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
SHARED.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
jsr SHARED.GetPDrv
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
*--------------------------------------
SHARED.pDrvJmp jmp (pDrv)
*--------------------------------------
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
iny
lda (pFD),y
sta pDRV+1
rts
*--------------------------------------
SHARED.IsIDValid SHARED.IsIDValid
cmp #'.' cmp #'.'
beq SHARED.IsDigit.8 beq SHARED.IsDigit.8

View File

@ -197,7 +197,7 @@ K.FGetS jsr PFT.CheckNodeA
sta ZPPtr1+1 sta ZPPtr1+1
bmi .3 already something in buffer bmi .3 already something in buffer
.1 jsr STDIO.Read.1 .1 jsr STDIO.Get.1
bcc .2 bcc .2
cmp #MLI.E.EOF cmp #MLI.E.EOF
beq .9 beq .9
@ -206,6 +206,7 @@ K.FGetS jsr PFT.CheckNodeA
bpl .9 IO error bpl .9 IO error
inc NO DATA -> BLOCKING inc NO DATA -> BLOCKING
rts rts
.2 lda K.IOBuf .2 lda K.IOBuf
cmp #C.LF Discard any leading LF cmp #C.LF Discard any leading LF
beq .1 beq .1
@ -222,12 +223,13 @@ K.FGetS jsr PFT.CheckNodeA
lda ZPPtr1+1 lda ZPPtr1+1
eor #$ff eor #$ff
sta ZPPtr1+1 sta ZPPtr1+1
.3 inc ZPPtr1 .3 inc ZPPtr1
bne .4 bne .4
inc ZPPtr1+1 inc ZPPtr1+1
beq .8 Buffer full beq .8 Buffer full
.4 jsr STDIO.Read.1 .4 jsr STDIO.Get.1
bcs .5 bcs .5
lda K.IOBuf lda K.IOBuf
@ -293,7 +295,7 @@ K.GetChar ldy #S.PS.hStdIn
K.GetC jsr PFT.CheckNodeA K.GetC jsr PFT.CheckNodeA
bcs K.GetC.RTS bcs K.GetC.RTS
jsr STDIO.Read.1 jsr STDIO.Get.1
bcc .8 bcc .8
tay tay
bpl K.GetC.RTS I/O error bpl K.GetC.RTS I/O error
@ -305,7 +307,7 @@ K.GetC jsr PFT.CheckNodeA
K.GetC.RTS rts K.GetC.RTS rts
*-------------------------------------- *--------------------------------------
STDIO.Read.1 lda #0 STDIO.Get.1 lda #0
>PUSHA >PUSHA
inc read 1 byte inc read 1 byte
>PUSHA >PUSHA
@ -342,7 +344,7 @@ STDIO.Read.1 lda #0
* CS : A = EC * CS : A = EC
*\-------------------------------------- *\--------------------------------------
K.FOpen jsr PFT.CheckPath4 K.FOpen jsr PFT.CheckPath4
bcs K.FOpen.RET6 bcs .9
>PULLW IO.Open.AUXTYPE >PULLW IO.Open.AUXTYPE
>PULLB IO.Open.TYPE >PULLB IO.Open.TYPE
@ -352,14 +354,15 @@ K.FOpen jsr PFT.CheckPath4
inc pStack inc pStack
jsr UNISTD.Open jsr UNISTD.Open
bcs K.FClose.RTS bcs .99
jsr STDIO.NewHFile jsr STDIO.NewHFile
bcc K.FClose.RTS bcc .99
jmp UNISTD.Open.ERR jmp UNISTD.Open.ERR
K.FOpen.RET6 >RET 6 .9 >POP 6
.99 rts
*/-------------------------------------- */--------------------------------------
* # FClose * # FClose
* Close a file * Close a file
@ -645,8 +648,7 @@ K.Rename jsr PFT.CheckPath2
* K.Buf256 = filepath * K.Buf256 = filepath
* X = hFD * X = hFD
*-------------------------------------- *--------------------------------------
STDIO.NewHFile sta .4+1 Store hFD STDIO.NewHFile ldx #1
ldx #1
.1 lda OF.Table.hFD-1,x .1 lda OF.Table.hFD-1,x
beq .2 beq .2
@ -658,26 +660,26 @@ STDIO.NewHFile sta .4+1 Store hFD
* sec * sec
rts rts
.2 stx .3+1 Store hFILE .2 stx .4+1
ldx #0
lda (pFD) lda (pFD)
cmp #S.FD.T.CDEV cmp #S.FD.T.CDEV
beq .20 beq .3
cmp #S.FD.T.BDEV cmp #S.FD.T.BDEV
bne .21 beq .3 No hPath for DEV
.20 lda #0 No hPath for DEV >LDYAI K.buf256
bra .3
.21 >LDYAI K.buf256
>SYSCALL2 StrDup >SYSCALL2 StrDup
bcs .9 bcs .9
txa .3 txa
.3 ldx #$ff SELF MODIFIED
.4 ldx #$ff SELF MODIFIED
sta OF.Table.hPath-1,x sta OF.Table.hPath-1,x
.4 lda #$ff SELF MODIFIED lda IO.hFD
sta OF.Table.hFD-1,x sta OF.Table.hFD-1,x
txa hFILE txa hFILE

View File

@ -1,21 +1,20 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*/-------------------------------------- */--------------------------------------
* # strtof * # StrToF
* Convert String to 40 bits Float * Convert String to 40 bits Float
* ## C * ## C
* `float strtof (const char* str, char** endptr);` * `float strtof (const char* str, char** endptr);`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHW str`
* `>PUSHWI EndPtr` * `>PUSHWI EndPtr`
* `>LDYA str` * `>SYSCALL StrToF`
* `>SYSCALL strtof`
* ## RETURN VALUE * ## RETURN VALUE
* On stack (float) * On stack (float)
*\-------------------------------------- *\--------------------------------------
K.strtof pha K.StrToF >PULLW ZPPtr1
>PULLW ZPPtr1 >PULLYA
pla
jsr K.AToF jsr K.AToF
lda TXTPTR lda TXTPTR
@ -56,7 +55,7 @@ K.AToF >STYA TXTPTR Ptr to source string
* `>PUSHW str` * `>PUSHW str`
* `>PUSHW EndPtr` * `>PUSHW EndPtr`
* `>PUSHB Base` * `>PUSHB Base`
* `>SYSCALL strtol` * `>SYSCALL StrToL`
* ## RETURN VALUE * ## RETURN VALUE
* On stack (long) * On stack (long)
*\-------------------------------------- *\--------------------------------------

View File

@ -171,7 +171,7 @@ TERMX.READ bit bActive is screen active?
bpl .6 no....go check flush... bpl .6 no....go check flush...
jsr TERMX.CURBLNK jsr TERMX.CURBLNK
lda OPENAPPLE bit OPENAPPLE
bpl .1 bpl .1
jsr TERMX.Title.ON jsr TERMX.Title.ON

View File

@ -18,9 +18,7 @@ NEW
IO.Open.FLAGS .BS 1 IO.Open.FLAGS .BS 1
IO.Open.TYPE .BS 1 IO.Open.TYPE .BS 1
IO.Open.AUXTYPE .BS 2 IO.Open.AUXTYPE .BS 2
IO.hDev .BS 1
IO.hFD .BS 1 IO.hFD .BS 1
IO.hFILE .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
K.Open jsr PFT.YAToMLIPATH K.Open jsr PFT.YAToMLIPATH
@ -47,6 +45,7 @@ UNISTD.Open ldx #5 /DEV/
>SYSCALL2 GetDevByName >SYSCALL2 GetDevByName
bcc .7 bcc .7
ldx #2 ldx #2
.10 lda Nod.Table.hPath-2,x .10 lda Nod.Table.hPath-2,x
beq .3 beq .3
@ -71,8 +70,8 @@ UNISTD.Open ldx #5 /DEV/
lda #MLI.E.NODEV lda #MLI.E.NODEV
* sec * sec
rts no OF found rts no OF found
*--------------------------------------
.7 stx IO.hDev .7 stx IO.hFD
>STYA pFD >STYA pFD
.71 lda (pFD) #S.FD.T .71 lda (pFD) #S.FD.T
@ -106,31 +105,40 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
IO.OPEN.REG.E ldx #0 IO.OPEN.REG.E ldx #0
jsr IO.MkFD jsr IO.MkFD
bcs IO.OPEN.RTS bcs IO.OPEN.RTS
jsr IO.MLI.OPEN jsr IO.MLI.OPEN
bcs UNISTD.Open.ERR bcs UNISTD.Open.ERR
lda IO.Open.FLAGS lda IO.Open.FLAGS
bit #O.WRONLY bit #O.WRONLY
beq .20 Write mode ? beq .20 Write mode ?
and #O.APPEND Append ? and #O.APPEND Append ?
bne .11 yes, go to end of file bne .11 yes, go to end of file
stz K.MLI.PARAMS+2 stz K.MLI.PARAMS+2
stz K.MLI.PARAMS+3 stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4 stz K.MLI.PARAMS+4
>MLICALL MLISETEOF no, reset size to 0 >MLICALL MLISETEOF no, reset size to 0
bra .21 bra .21
.11 >MLICALL MLIGETEOF .11 >MLICALL MLIGETEOF
bcs UNISTD.Open.ERR bcs UNISTD.Open.ERR
>MLICALL MLISETMARK >MLICALL MLISETMARK
.21 bcs UNISTD.Open.ERR .21 bcs UNISTD.Open.ERR
.20 lda IO.Open.FLAGS .20 lda IO.Open.FLAGS
and #O.TEXT Text Mode ? and #O.TEXT Text Mode ?
beq .8 beq .8
lda #$FF lda #$FF
sta K.MLI.PARAMS+2 sta K.MLI.PARAMS+2
lda #C.CR lda #C.CR
sta K.MLI.PARAMS+3 sta K.MLI.PARAMS+3
>MLICALL MLINEWLINE >MLICALL MLINEWLINE
bcs UNISTD.Open.ERR bcs UNISTD.Open.ERR
.8 lda IO.hFD .8 lda IO.hFD
IO.OPEN.RTS rts IO.OPEN.RTS rts

View File

@ -74,6 +74,7 @@ A2osX.D1.B .PH $D000
.INB USR/SRC/SYS/KERNEL.S.IO .INB USR/SRC/SYS/KERNEL.S.IO
.INB USR/SRC/SYS/KERNEL.S.STDIO .INB USR/SRC/SYS/KERNEL.S.STDIO
.INB USR/SRC/SYS/KERNEL.S.STDIO2 .INB USR/SRC/SYS/KERNEL.S.STDIO2
.INB USR/SRC/SYS/KERNEL.S.DEV
.EP .EP
A2osX.D1.S .EQ *-A2osX.D1.B A2osX.D1.S .EQ *-A2osX.D1.B
@ -85,7 +86,6 @@ A2osX.D2.B .PH $D000
.INB USR/SRC/SYS/KERNEL.S.ARG .INB USR/SRC/SYS/KERNEL.S.ARG
.INB USR/SRC/SYS/KERNEL.S.STDLIB .INB USR/SRC/SYS/KERNEL.S.STDLIB
.INB USR/SRC/SYS/KERNEL.S.STRING .INB USR/SRC/SYS/KERNEL.S.STRING
.INB USR/SRC/SYS/KERNEL.S.DEV
.INB USR/SRC/SYS/KERNEL.S.BIN .INB USR/SRC/SYS/KERNEL.S.BIN
.INB USR/SRC/SYS/KERNEL.S.PS .INB USR/SRC/SYS/KERNEL.S.PS
.EP .EP