Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-05-04 23:13:50 +02:00
parent 7c6e4a8f47
commit b966ec2681
20 changed files with 166 additions and 124 deletions

Binary file not shown.

View File

@ -686,5 +686,5 @@ DCB .DA #S.DCB.T.NIC
DRV.END DRV.END
MAN MAN
SAVE USR/SRC/DRV/X.U2.DRV.S SAVE USR/SRC/DRV/X.U2.DRV.S
LOAD USR/SRC/DRV/UTHER2.AI.DRV.S LOAD USR/SRC/DRV/UTHERNET2.DRV.S
ASM ASM

View File

@ -204,11 +204,11 @@ SYS.FPrintF .EQ $5C
* .EQ $5E * .EQ $5E
* .EQ $60 * .EQ $60
* .EQ $62 SYS.ChTyp .EQ $62
SYS.LoadFile .EQ $64 SYS.LoadFile .EQ $64
SYS.LoadTxtFile .EQ $66 SYS.LoadTxtFile .EQ $66
SYS.ChTyp .EQ $68 * .EQ $68
* .EQ $6A * .EQ $6A
* .EQ $6C * .EQ $6C
* .EQ $6E * .EQ $6E

View File

@ -399,7 +399,11 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
.9 lda #0 .9 lda #0
tay tay
.99 rts rts
.99 ora #0
beq *
rts
*/-------------------------------------- */--------------------------------------
* # Write (STREAM) * # Write (STREAM)
* ## C * ## C
@ -686,7 +690,8 @@ SKT.CheckStream ldy #S.SOCKET.T
bcc .8 bcc .8
cmp #S.SOCKET.TCP.S.CLWAIT cmp #S.SOCKET.TCP.S.CLWAIT
bcs .91 bcs .91
.8 rts CC=ESTBLSH...or less .8 lda #0
rts CC=ESTBLSH...or less
.91 lda #MLI.E.IO .91 lda #MLI.E.IO
sec sec

View File

@ -177,7 +177,8 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
>PUSHBI O.RDONLY >PUSHBI O.RDONLY
>LDYA BIN.CmdLine >LDYA BIN.CmdLine
>SYSCALL LoadFile BANK1!!! ldx #SYS.LoadFile
jsr K.SYSCALL.GoB BANK1!!!
bcs BIN.Load.Cleanup.RTS Error Loading file bcs BIN.Load.Cleanup.RTS Error Loading file
stx BIN.hMem save hMem stx BIN.hMem save hMem
@ -218,7 +219,8 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
jsr BIN.RelExe jsr BIN.RelExe
>LDYA BIN.CmdLine get back bin path >LDYA BIN.CmdLine get back bin path
>SYSCALL StrDup make a copy of this string ldx #SYS.strdup make a copy of this string
jsr K.SYSCALL.GoB
bcs .98 bcs .98
lda BIN.hMem Keep X=new string hMem lda BIN.hMem Keep X=new string hMem

View File

@ -529,7 +529,8 @@ CORE.PSFree sta .10+1 Save PS ID
bne .10 bne .10
txa txa
>SYSCALL fclose ldx #SYS.fclose
jsr K.SYSCALL.GoB
.10 lda #$ff Self Modified .10 lda #$ff Self Modified

View File

@ -578,7 +578,8 @@ K.ReadDir.ConvertTime
tay tay
lda ZPPtr3+1 lda ZPPtr3+1
adc #0 adc #0
>SYSCALL PTime2Time BANK2 ldx #SYS.PTime2Time BANK2
jsr K.SYSCALL.GoB
rts rts
*/------------------------------------- */-------------------------------------
* # CloseDir * # CloseDir

View File

@ -118,7 +118,8 @@ K.ExpandStr stz .88+1 Reset Intermediate string...
stz K.Buf256,x stz K.Buf256,x
>LDYAI K.Buf256 >LDYAI K.Buf256
>SYSCALL StrDup ldx #SYS.StrDup
jsr K.SYSCALL.GoB
bcs .9 bcs .9
stx .88+1 save this as temp string, in case of recurse stx .88+1 save this as temp string, in case of recurse
@ -229,8 +230,10 @@ ENV.Search.YA >STYA .4+1
inx inx
bra .4 bra .4
.5 >LDYAI K.Buf256 .5 >PUSHWI K.S.STAT
jsr K.STAT.YA.JMP >LDYAI K.Buf256
ldx #SYS.stat
jsr K.SYSCALL.GoB
bcs .1 Failed...retry next path... bcs .1 Failed...retry next path...
lda K.S.STAT+S.STAT.P.TYPE lda K.S.STAT+S.STAT.P.TYPE

View File

@ -1,6 +1,31 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*/-------------------------------------- */--------------------------------------
* # ChTyp
* Change The type of a ProDOS File
* ## C
* `int chtyp(const char *filepath, const char filetype);`
* ## ASM
* **In:**
* `>PUSHBI filetype`
* `>LDYA filepath`
* `>SYSCALL chtyp`
* ## RETURN VALUE
*\--------------------------------------
K.ChTyp jsr PFT.CheckPathYA
bcs .99
>PULLB .1+1
>MLICALL MLIGETFILEINFO
bcs .9
.1 lda #$ff
sta K.MLI.PARAMS+S.FI.T
>MLICALL MLISETFILEINFO
.9 rts
.99 >RET 1 discard filetype
*/--------------------------------------
* # LoadTxtFile * # LoadTxtFile
* Load TXT a file in memory (with ending 0) * Load TXT a file in memory (with ending 0)
* ## C * ## C
@ -122,31 +147,6 @@ K.LoadFile clc
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # ChTyp
* Change The type of a ProDOS File
* ## C
* `int chtyp(const char *filepath, const char filetype);`
* ## ASM
* **In:**
* `>PUSHBI filetype`
* `>LDYA filepath`
* `>SYSCALL chtyp`
* ## RETURN VALUE
*\--------------------------------------
K.ChTyp jsr PFT.CheckPathYA
bcs .99
>PULLB .1+1
>MLICALL MLIGETFILEINFO
bcs .9
.1 lda #$ff
sta K.MLI.PARAMS+S.FI.T
>MLICALL MLISETFILEINFO
.9 rts
.99 >RET 1 discard filetype
*/--------------------------------------
* # ChOwn * # ChOwn
* **In:** * **In:**
* PUSHW = mod * PUSHW = mod

View File

@ -65,10 +65,10 @@ GP.Sleep php
plx get PC HI plx get PC HI
inc Advance one byte because of return by RTI inc Advance one byte because of return by RTI
bne .1 bne GP.Sleep2
inx inx
.1 iny #S.PS.PC GP.Sleep2 ldy #S.PS.PC
sta (pPs),y sta (pPs),y
txa txa
@ -112,62 +112,42 @@ GP.Sleep php
* *** MUST BE REINTRANT *** * *** MUST BE REINTRANT ***
*-------------------------------------- *--------------------------------------
GP.SysCall dec IRQ.InKernel GP.SysCall dec IRQ.InKernel
sty .5+1 save Y (Func Arg)
sta .6+1 save A (Func Arg)
stx .7+1 save X (Func ID)
lda K.SYSCALL.BANK,x Get Target BNK pha
bpl .1 0, E000, no BNK change phy
ldy #S.PS.A
sta (pPs),y
cmp $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2 txa
beq .1 same as actual BNK...go restore A and JMP iny #S.PS.X
sta (pPs),y
tax set Target BNK in x pla
lda $D000 get source BNK iny #S.PS.Y
bit $C000,x switch to Target BNK sta (pPs),y
bit $C000,x
.1 pha remember source BNK tay
pla
jsr .5 go to kernel..... jsr K.SYSCALL.Go
bcc .2 no error quit...
stx .4+1 save X
plx get back Source BNK
bit $C000,x switch to Target BNK
bit $C000,x
bcc .4 no error quit...
tax CS,A=0 ? tax CS,A=0 ?
bne .4 no, return error to caller beq .3 Yes, BLOCKING I/O
pla get PC LO .2 inc IRQ.InKernel
rts Unmodified Carry
.3 pla get PC LO
plx get PC HI plx get PC HI
sec * sec
sbc #3 move back JSR GP.SysCall sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
bcs .2 bcs .4
dex dex
.2 phx .4 inc IRQ.InKernel
pha bra GP.Sleep2
ldy .5+1
lda .6+1
ldx .7+1
inc IRQ.InKernel
jmp GP.Sleep
.4 ldx #$FF Self Modified
inc IRQ.InKernel
rts Unmodified Carry
.5 ldy #$FF Self Modified
.6 lda #$FF Self Modified
.7 ldx #$FF Self Modified
jmp (K.SYSCALL.JMP,x)
*-------------------------------------- *--------------------------------------
GP.LibCall dec IRQ.InLib GP.LibCall dec IRQ.InLib
@ -179,16 +159,16 @@ GP.LibCall dec IRQ.InLib
.1 jsr $FFFF SELF MODIFIED .1 jsr $FFFF SELF MODIFIED
GP.LibCall.8 inc IRQ.InLib GP.LibCall.8 inc IRQ.InLib
rts GP.LibCall.RTS rts
*-------------------------------------- *--------------------------------------
GP.AtkCall dec IRQ.InKernel GP.AtkCall dec IRQ.InKernel
* >STYA .1 >STYA .1
* jsr GO.ProDOS jsr GO.ProDOS
* jsr MLI jsr MLI
* .DA #MLIATALK .DA #MLIATALK
*.1 .DA * .1 .DA *
* jsr GO.A2osX jsr GO.A2osX
inc IRQ.InKernel inc IRQ.InKernel
rts rts

View File

@ -2,12 +2,12 @@ NEW
PREFIX PREFIX
AUTO 4,1 AUTO 4,1
*-------------------------------------- *--------------------------------------
* $E000-E1FF K.SYSCALL.JMP Jmp Table * $E000-E1FF System calls Jump Table
*-------------------------------------- *--------------------------------------
* Bank 1 * Bank 1
*-------------------------------------- *--------------------------------------
K.SYSCALL.JMP .DA K.GetMemStat $00 K.SYSCALL .DA K.GetMemStat $00
.DA 0 .DA K.ChMod
.DA K.FStat .DA K.FStat
.DA K.Stat .DA K.Stat
.DA K.MKDir .DA K.MKDir
@ -61,11 +61,11 @@ K.SYSCALL.JMP .DA K.GetMemStat $00
.DA 0 .DA 0
.DA 0 $60 .DA 0 $60
.DA 0 .DA K.ChTyp
.DA K.LoadFile .DA K.LoadFile
.DA K.LoadTxtFile .DA K.LoadTxtFile
.DA K.ChTyp .DA 0
.DA K.ChMod .DA 0
.DA K.ChOwn .DA K.ChOwn
.DA K.ChGrp .DA K.ChGrp
@ -424,11 +424,37 @@ K.GUIOSD.JMP sta SETREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
rts rts
*-------------------------------------- *--------------------------------------
K.STAT.YA.JMP pha K.SYSCALL.Go bit K.SYSCALL.BANK,x Get Target BNK
>PUSHWI K.S.STAT bpl K.SYSCALL.JMP 0, E000, no BNK change
pla
>SYSCALL stat K.SYSCALL.GoB sta .7+1
lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
cmp K.SYSCALL.BANK,x
beq .7
pha remember source BNK
stx .6+1
lda K.SYSCALL.BANK,x
tax get Target BNK in x
bit $C000,x switch to Target BNK
bit $C000,x
jsr .6
stx .5+1 Save X
plx get back Source BNK
bit $C000,x switch to Target BNK
bit $C000,x
.5 ldx #$ff SELF MODIFIED
rts rts
.6 ldx #$ff SELF MODIFIED
.7 lda #$ff SELF MODIFIED
K.SYSCALL.JMP jmp (K.SYSCALL,x)
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.JMP SAVE USR/SRC/SYS/KERNEL.S.JMP

View File

@ -272,8 +272,8 @@ K.FreeMem.ERR phx
>PUSHBI 2 >PUSHBI 2
>LDYAI K.FreeMem.MSG >LDYAI K.FreeMem.MSG
.1 >SYSCALL printf .1 ldx #SYS.printf
jsr K.SYSCALL.GoB
plx plx
sec sec
@ -537,8 +537,10 @@ MEM.Kernel.JMP jmp (SYS.Kernel.JMP,x)
* Y,A = File Length * Y,A = File Length
* X = hMem of Loaded Object in AUX mem * X = hMem of Loaded Object in AUX mem
*\-------------------------------------- *\--------------------------------------
K.LoadStkObj >SYSCALL LoadTxtFile To get ending \0 K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
jsr K.SYSCALL.GoB
bcs .99 bcs .99
sty .81+1 sty .81+1
sta .82+1 sta .82+1

View File

@ -654,7 +654,7 @@ CB.Update >LDYA ZPCmdPtr
GO.GetMem ldx #SYS.GetMem GO.GetMem ldx #SYS.GetMem
.HS 2C BIT ABS .HS 2C BIT ABS
GO.GetMemPtr ldx #SYS.GetMemPtr GO.GetMemPtr ldx #SYS.GetMemPtr
jmp (K.SYSCALL.JMP,x) jmp (K.SYSCALL,x)
*-------------------------------------- *--------------------------------------
CB.Cache .BS S.CB CB.Cache .BS S.CB
FON.Cache .BS S.FON FON.Cache .BS S.FON

View File

@ -142,7 +142,9 @@ PS.CreateChild ldx #0
ldy #S.PS.hPREFIX copy hPREFIX... ldy #S.PS.hPREFIX copy hPREFIX...
lda (pPs),y lda (pPs),y
jsr K.GetMemPtr jsr K.GetMemPtr
>SYSCALL StrDup
ldx #SYS.StrDup
jsr K.SYSCALL.GoB
bcs .9 bcs .9
jsr PS.SetMemOwner Set Ownership jsr PS.SetMemOwner Set Ownership
@ -209,8 +211,10 @@ PS.Load ldy #$ff
cmp #'/' cmp #'/'
bne .1 bne .1
>PUSHWI K.S.STAT
>LDYA PS.ArgV found /, some path specified, no search >LDYA PS.ArgV found /, some path specified, no search
jsr K.STAT.YA.JMP ldx #SYS.stat
jsr K.SYSCALL.GoB
bcc .6 REAL path in K.Buf256 bcc .6 REAL path in K.Buf256
.99 rts .99 rts
@ -285,8 +289,10 @@ PS.Load.SCRIPT ldx #$ff
sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL\0" sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL\0"
.5 >LDYAI K.Buf256 .5 >PUSHWI K.S.STAT
jsr K.STAT.YA.JMP >LDYAI K.Buf256
ldx #SYS.stat
jsr K.SYSCALL.GoB
bcs PS.Load.RTS bcs PS.Load.RTS
lda K.S.STAT+S.STAT.P.TYPE lda K.S.STAT+S.STAT.P.TYPE
@ -392,19 +398,22 @@ PS.LoadGetHeader
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY >PUSHBI O.RDONLY
>LDYAI K.IOBuf >LDYAI K.IOBuf
>SYSCALL fopen ldx #SYS.fopen
jsr K.SYSCALL.GoB
bcs .9 bcs .9
sta .1+1 sta .1+1
>PUSHWI 128 >PUSHWI 128
>PUSHWI K.IOBuf+128 >PUSHWI K.IOBuf+128
.1 lda #$ff SELF MODIFIED .1 lda #$ff SELF MODIFIED
>SYSCALL fread ldx #SYS.fread
jsr K.SYSCALL.GoB
php php
pha pha
lda .1+1 lda .1+1
>SYSCALL fclose ldx #SYS.fclose
jsr K.SYSCALL.GoB
pla pla
plp plp
.9 rts .9 rts

View File

@ -73,7 +73,8 @@ PWD.Store lda PWD.DBPtr
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHBI O.WRONLY+O.CREATE >PUSHBI O.WRONLY+O.CREATE
>LDYAI PWD.FILE >LDYAI PWD.FILE
>SYSCALL FOpen ldx #SYS.FOpen
jsr K.SYSCALL.GoB
bcc .1 bcc .1
pha pha
@ -89,7 +90,8 @@ PWD.Store lda PWD.DBPtr
jsr K.getmemptr jsr K.getmemptr
>PUSHYA >PUSHYA
lda .7+1 lda .7+1
>SYSCALL FWrite ldx #SYS.FWrite
jsr K.SYSCALL.GoB
bcs .2 bcs .2
jsr .7 jsr .7
@ -103,7 +105,8 @@ PWD.Store lda PWD.DBPtr
rts rts
.7 lda #$ff .7 lda #$ff
>SYSCALL fclose ldx #SYS.fclose
jsr K.SYSCALL.GoB
.8 lda #$ff .8 lda #$ff
jsr K.freemem jsr K.freemem

View File

@ -328,7 +328,8 @@ K.MkNod.I ldx #2
.2 stx .3+1 Store hFILE .2 stx .3+1 Store hFILE
>LDYA ZPPtr1 >LDYA ZPPtr1
>SYSCALL StrDup ldx #SYS.StrDup
jsr K.SYSCALL.GoB
bcs .9 bcs .9
txa txa

View File

@ -123,7 +123,9 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
>PULLYA Get String >PULLYA Get String
>STYA ZPPtr2 Save Buffer >STYA ZPPtr2 Save Buffer
>SYSCALL strlen Get String len in Y,A ldx #SYS.strlen Get String len in Y,A
jsr K.SYSCALL.GoB
>PUSHYA push len >PUSHYA push len
>PUSHW ZPPtr2 push buffer >PUSHW ZPPtr2 push buffer
jsr IO.Write.I jsr IO.Write.I
@ -900,6 +902,7 @@ K.GetC.I >PUSHWI 1
>RET 4 BLOCKING I/O >RET 4 BLOCKING I/O
.8 lda K.IOBuf .8 lda K.IOBuf
K.GetC.RTS rts K.GetC.RTS rts
*/-------------------------------------- */--------------------------------------
* # SScanF * # SScanF
@ -1391,7 +1394,8 @@ STDIO.NewHFile sta .4+1 Store hFD
bra .3 bra .3
.21 >LDYAI K.buf256 .21 >LDYAI K.buf256
>SYSCALL strdup ldx #SYS.strdup
jsr K.SYSCALL.GoB
bcs .9 bcs .9
txa txa

View File

@ -314,8 +314,10 @@ STDLIB.realpath.I
clc clc
ror .82+1 ror .82+1
>SYSCALL ExpandStr ldx #SYS.ExpandStr
jsr K.SYSCALL.GoB
bcs STDLIB.32.RTS bcs STDLIB.32.RTS
>STYA ZPPtr1 >STYA ZPPtr1
stx .99+1 save expanded buffer hMem stx .99+1 save expanded buffer hMem
@ -423,7 +425,8 @@ STDLIB.realpath.I
.82 lda #$ff SELF MODIFIED .82 lda #$ff SELF MODIFIED
bpl .88 bpl .88
>LDYAI K.Buf256 >LDYAI K.Buf256
>SYSCALL StrDup BANK 2 ldx #SYS.StrDup BANK 2
jsr K.SYSCALL.GoB
rts rts
.88 clc .88 clc

View File

@ -25,7 +25,8 @@ K.StrLen >STYA .1+1
inc .1+2 inc .1+2
bra .1 bra .1
.8 rts .8 clc
rts
*/-------------------------------------- */--------------------------------------
* # StrCat * # StrCat
* Concatenate strings * Concatenate strings
@ -78,7 +79,8 @@ K.StrCpy clc
.8 ply .8 ply
pla pla
K.StrCpy.RTS rts K.StrCpy.RTS clc
rts
*/-------------------------------------- */--------------------------------------
* # StrDup * # StrDup
* Create a new copy of this C-String * Create a new copy of this C-String
@ -129,7 +131,7 @@ K.StrDup >STYA .1+1
K.StrDup.8 pla K.StrDup.8 pla
ply ply
* clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # StrUpr/StrLwr * # StrUpr/StrLwr