Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-09-06 17:36:44 +02:00
parent 9fd9e6af69
commit 3cd1365e90
15 changed files with 114 additions and 83 deletions

View File

@ -52,13 +52,13 @@ X = DevID
# GetDevStatus
## C
`int getdevstatus ( short int hFD, S.DIB * dstat );`
`int getdevstatus(short int hFD, S.DIB* dstat);`
## ASM
**In:**
`>PUSHWI S.DIB`
`lda DevID`
`>SYSCALL GetDevStatus`
`>PUSHWI S.DIB`
`lda DevID`
`>SYSCALL GetDevStatus`
**Out:**
# MKDev
@ -139,26 +139,55 @@ DstStat = S.STAT
CS : not found
# PutEnv
Change or add an environment variable, string is 'NAME=VALUE'
## C
`int putenv(char *string);`
## ASM
**In:**
Y,A = PTR to String NAME=VALUE (C-String)
`>LDYA string`
`>SYSCALL putenv`
**Out:**
# SetEnv
Change or add an environment variable
## C
`int setenv(const char *name, const char *value);`
## ASM
**In:**
PUSHW = PTR To Value (PSTR)
PUSHW = PTR To Name (PSTR)
`>PUSHW value`
`>LDYA name`
`>SYSCALL setenv`
**Out:**
# GetEnv
searches the environment list to find the environment variable name,
and returns a pointer to the corresponding value string.
## C
`char *getenv(const char *name);`
## ASM
**In:**
Y,A = PTR to NAME (PSTR)
`>LDYA name`
`>SYSCALL gerenv`
**Out:**
CC : Y,A = PTR to VALUE (PSTR)
CC : Y,A = PTR to VALUE (C-String)
CS : not found
# UnsetEnv
Remove an environment variable
## C
`int unsetenv(const char *name);`
## ASM
**In:**
Y,A = PTR To Name (PSTR)
`>LDYA name`
`>SYSCALL unsetenv`
**Out:**
# LoadTxtFile

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,9 +11,9 @@ ZPPtr2 .EQ ZPKERNEL+2
ZPPtr3 .EQ ZPKERNEL+4
ZPPtr4 .EQ ZPKERNEL+6
pIOCTL .EQ ZPKERNEL+8
*pDev .EQ ZPKERNEL+10
pFD .EQ ZPKERNEL+12
pFD .EQ ZPKERNEL+10
pDRV .EQ ZPKERNEL+12
pIOCTL .EQ ZPKERNEL+12
pIOBuf .EQ ZPKERNEL+14
*--------------------------------------
SYS.BASL0 .EQ $800

View File

@ -201,7 +201,7 @@ CS.RUN.IACSB
bne .8
>PUSHEA.G IAC.SB.DATA
>PUSHW L.ENV.TERM
>LDYA L.ENV.TERM
>SYSCALL SetEnv
.8 jmp CS.RUN.LOOP

View File

@ -226,7 +226,7 @@ CS.RUN.READ lda #0 reset Buffer
>PUSHW ZPCMDBuf
>PUSHEA.G CMD.VarName
>LEA.G CMD.VarName
>SYSCALL SetEnv
rts
*--------------------------------------
@ -326,7 +326,7 @@ SetPWD ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL GetMemPtr
>PUSHYA
>PUSHW L.ENV.PWD
>LDYA L.ENV.PWD
>SYSCALL SetEnv
rts
*--------------------------------------

View File

@ -75,30 +75,19 @@ K.GetDev.9 rts
*/--------------------------------------
* # GetDevStatus
* ## C
* `int getdevstatus ( short int hFD, S.DIB * dstat );`
* `int getdevstatus(short int hFD, S.DIB* dstat);`
* ## ASM
* **In:**
* `>PUSHWI S.DIB`
* `lda DevID`
* `>SYSCALL GetDevStatus`
* `>PUSHWI S.DIB`
* `lda DevID`
* `>SYSCALL GetDevStatus`
* **Out:**
*\--------------------------------------
K.GetDevStatus pha
K.GetDevStatus jsr K.GetMemPtr
>STYA pFD
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
pla
jsr K.GetMemPtr
bcs K.GetDev.9
>STYA pFD
ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta .1+1
iny
lda (pFD),y
sta .1+2
jsr K.IOCTL.GetPDrv
lda #S.IOCTL.STATCODE.GETDIB
sta K.S.IOCTL+S.IOCTL.STATCODE
@ -106,9 +95,7 @@ K.GetDevStatus pha
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
.1 jmp $ffff
.9 rts
jmp (pDrv)
*/--------------------------------------
* # MKDev
* **In:**

View File

@ -57,7 +57,7 @@ K.OpenDir jsr PFT.CheckPathYA
.98 pha save MLI error
lda .8+1
jsr K.CloseDir
jsr K.FClose =K.CloseDir
pla get back MLI error
sec
.99 rts
@ -610,7 +610,7 @@ K.ReadDir.ConvertTime
* **Out:**
* none, always succeed.
*\-------------------------------------
K.CloseDir .EQ K.FClose
*K.CloseDir .EQ K.FClose
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DIRENT

View File

@ -225,8 +225,13 @@ K.FileSearch.YA >STYA .4+1
K.FileSearch.SearchPath .BS 2
*/--------------------------------------
* # PutEnv
* Change or add an environment variable, string is 'NAME=VALUE'
* ## C
* `int putenv(char *string);`
* ## ASM
* **In:**
* Y,A = PTR to String NAME=VALUE (C-String)
* `>LDYA string`
* `>SYSCALL putenv`
* **Out:**
*\--------------------------------------
K.PutEnv >STYA ZPPtr1 NAME=VALUE
@ -262,12 +267,19 @@ K.PutEnv >STYA ZPPtr1 NAME=VALUE
rts
*/--------------------------------------
* # SetEnv
* Change or add an environment variable
* ## C
* `int setenv(const char *name, const char *value);`
* ## ASM
* **In:**
* PUSHW = PTR To Value (PSTR)
* PUSHW = PTR To Name (PSTR)
* `>PUSHW value`
* `>LDYA name`
* `>SYSCALL setenv`
* **Out:**
*\--------------------------------------
K.SetEnv jsr MEM.PullP1P2 Ptr1=NAME,Ptr2=VALUE
K.SetEnv >STYA ZPPtr1 name
>PULLW ZPPtr2 value
K.SetEnv.I jsr K.UnsetEnv.I
jsr ENV.InitEnvP3 ZPPtr3 -> Env
@ -366,10 +378,16 @@ K.SetEnv.I jsr K.UnsetEnv.I
rts
*/--------------------------------------
* # GetEnv
* searches the environment list to find the environment variable name,
* and returns a pointer to the corresponding value string.
* ## C
* `char *getenv(const char *name);`
* ## ASM
* **In:**
* Y,A = PTR to NAME (PSTR)
* `>LDYA name`
* `>SYSCALL gerenv`
* **Out:**
* CC : Y,A = PTR to VALUE (PSTR)
* CC : Y,A = PTR to VALUE (C-String)
* CS : not found
*\--------------------------------------
K.GetEnv >STYA ZPPtr1
@ -383,8 +401,13 @@ K.GetEnv >STYA ZPPtr1
rts
*/--------------------------------------
* # UnsetEnv
* Remove an environment variable
* ## C
* `int unsetenv(const char *name);`
* ## ASM
* **In:**
* Y,A = PTR To Name (PSTR)
* `>LDYA name`
* `>SYSCALL unsetenv`
* **Out:**
*\--------------------------------------
K.UnsetEnv >STYA ZPPtr1 Store VAR Name

View File

@ -940,7 +940,7 @@ TskMgrInit >LDYAI MSG.TSK
>PUSHW ZPPtr1 push ENV value = PREFIX
>PUSHWI I.ENV.A2osX push ENV name = A2OSX
>LDYAI I.ENV.A2osX push ENV name = A2OSX
>SYSCALL SetEnv
bcs .9

View File

@ -37,16 +37,11 @@ K.Open.DEV >LDYAI K.MLI.PATH+6 skip $/DEV/
>STYA pFD
stx .1+1 DEVID
ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta .2+1
iny
lda (pFD),y
sta .2+2
jsr K.IOCTL.GetPDrv
.1 lda #$ff SELF MODIFIED pass A=DEVID To Driver
ldx #IOCTL.OPEN
.2 jsr $ffff SELF MODIFIED pDRV
.2 jsr K.IOCTL.pDrvJmp
bcs .9
ldx .1+1
@ -183,6 +178,7 @@ IO.WRITE.REG ldx #MLIWRITE
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr GP.MLICall
>LDYA K.MLI.PARAMS+6
rts
*--------------------------------------
IO.READ.CDEV ldx #IOCTL.READ
@ -190,16 +186,11 @@ IO.READ.CDEV ldx #IOCTL.READ
*--------------------------------------
IO.WRITE.CDEV ldx #IOCTL.WRITE
ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta .1+1
iny
lda (pFD),y
sta .1+2
jsr K.IOCTL.GetPDRV
>LDYAI K.S.IOCTL
.1 jsr $ffff
.1 jsr K.IOCTL.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
@ -275,22 +266,26 @@ K.IOCTL jsr K.GetMemPtr
>STYA pFD
ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta .8+1
iny
lda (pFD),y
sta .8+2
jsr K.IOCTL.GetPDRV
>PULLA
tax request
>PULLYA param
.8 jmp $ffff SELF MODIFIED x = op
jmp (pDRV) SELF MODIFIED x = op
.9 lda #MLI.E.NODEV
>RET 3
*--------------------------------------
K.IOCTL.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
iny
lda (pFD),y
sta pDRV+1
rts
K.IOCTL.pDrvJmp jmp (pDrv)
*/--------------------------------------
* # pipe
* ## C

View File

@ -17,7 +17,7 @@ K.SYSCALL.JMP .DA 0 $00
.DA K.OpenDir $10
.DA K.ReadDir
.DA K.CloseDir
.DA K.FClose
.DA K.Open
.DA K.Close
.DA K.Read

View File

@ -35,13 +35,13 @@ K.FStat jsr PFT.CheckNodeA
ldy #S.STAT.SIZE+3
lda #0
jsr K.Stat.StoreY
sta (ZPPtr1),y
ldx #2
.1 dey
lda K.MLI.PARAMS+2,x
jsr K.Stat.StoreY
sta (ZPPtr1),y
dex
bpl .1
@ -61,7 +61,7 @@ K.FStat jsr PFT.CheckNodeA
K.Stat jsr PFT.CheckPathYA
K.Stat.I jsr STDIO.SetMLIPathYA
>PULLW K.Stat.StoreY+1
>PULLW ZPPtr1
>MLICALL MLIGETFILEINFO
bcs .9
@ -79,44 +79,41 @@ K.Stat.I jsr STDIO.SetMLIPathYA
lda #0
.2 ldy #S.STAT.MODE
jsr K.Stat.StoreY
sta (ZPPtr1),y
ldx #K.Stat.DST-K.Stat.SRC
.3 ldy K.Stat.SRC-1,x
lda K.MLI.PARAMS,y
ldy K.Stat.DST-1,x
jsr K.Stat.StoreY
sta (ZPPtr1),y
dex
bne .3
ldy #S.STAT.SIZE
lda #0
jsr K.Stat.StoreY
sta (ZPPtr1),y
iny
lda K.MLI.PARAMS+S.FI.UBLKS
asl
jsr K.Stat.StoreY
sta (ZPPtr1),y
iny
lda K.MLI.PARAMS+S.FI.UBLKS+1
rol
jsr K.Stat.StoreY
sta (ZPPtr1),y
iny
lda #0
rol
jsr K.Stat.StoreY
sta (ZPPtr1),y
clc
.9 rts
K.Stat.StoreY sta $ffff,y
rts
*--------------------------------------
K.Stat.SRC .DA #S.FI.T
.DA #S.FI.AUXTYPE,#S.FI.AUXTYPE+1

View File

@ -31,9 +31,9 @@ A2osX.GP .PH $BD00
.EP
A2osX.D1 .PH $D000
.DA #RRAMWRAMBNK1
.INB /A2OSX.SRC/SYS/KERNEL.S.STDIO
.INB /A2OSX.SRC/SYS/KERNEL.S.STAT
.INB /A2OSX.SRC/SYS/KERNEL.S.DIRENT
.INB /A2OSX.SRC/SYS/KERNEL.S.STDIO
.INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB
.INB /A2OSX.SRC/SYS/KERNEL.S.PFT
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV