mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.92 : SHELL, PUSHD,POPD added
This commit is contained in:
parent
e1072d492f
commit
df4e8f162d
@ -551,6 +551,13 @@ Load a file in AUX memory (Stock Objects)
|
||||
Y,A = File Length
|
||||
X = hMem of Loaded Object in AUX mem
|
||||
|
||||
# GetPSStat
|
||||
**In:**
|
||||
Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
|
||||
## RETURN VALUE
|
||||
Buffer filled with PS stats
|
||||
|
||||
# ExecL
|
||||
|
||||
## C
|
||||
@ -584,13 +591,6 @@ A = Child PSID
|
||||
## RETURN VALUE
|
||||
A = Status Byte
|
||||
|
||||
# GetPSStat
|
||||
**In:**
|
||||
Y,A = Ptr to K.PS.MAX*2+1 bytes buffer
|
||||
|
||||
## RETURN VALUE
|
||||
Buffer filled with PS stats
|
||||
|
||||
# Stat
|
||||
Return information about a file
|
||||
|
||||
@ -656,6 +656,20 @@ return a hFILE to a new FIFO
|
||||
CC = OK, CS = ERROR
|
||||
A = hFILE
|
||||
|
||||
# PutChar
|
||||
Print A (char) to StdOut
|
||||
|
||||
## C
|
||||
`int putchar ( int character );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`lda caracter`
|
||||
`>SYSCALL putchar`
|
||||
|
||||
## RETURN VALUE
|
||||
CC = success
|
||||
|
||||
# FPutC
|
||||
Print A (char) to hFILE
|
||||
|
||||
@ -671,20 +685,6 @@ Print A (char) to hFILE
|
||||
## RETURN VALUE
|
||||
CC = success
|
||||
|
||||
# PutChar
|
||||
Print A (char) to StdOut
|
||||
|
||||
## C
|
||||
`int putchar ( int character );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`lda caracter`
|
||||
`>SYSCALL putchar`
|
||||
|
||||
## RETURN VALUE
|
||||
CC = success
|
||||
|
||||
# PutS
|
||||
Write Str to StdOut, appends '\r\n'
|
||||
|
||||
@ -719,8 +719,8 @@ Prints C-Style String
|
||||
|
||||
## C
|
||||
`int printf ( const char * format, ... );`
|
||||
`int sprintf ( char * str, const char * format, ... );`
|
||||
`int fprintf ( hFILE stream, const char * format, ... );`
|
||||
`int sprintf ( char * str, const char * format, ... );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
@ -1109,6 +1109,22 @@ CC : success
|
||||
X = hMem of Full Path
|
||||
CS : A = Error Code
|
||||
|
||||
# StrMatch
|
||||
Compare a String against pattern (e.g. '*test?.txt')
|
||||
|
||||
## C
|
||||
`int * strmatch ( char * s, const char * pattern );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI pattern`
|
||||
`>LDYAI s`
|
||||
`>SYSCALL strmatch`
|
||||
|
||||
## RETURN VALUE
|
||||
CC : match
|
||||
CS : no match
|
||||
|
||||
# StrLen
|
||||
Returns Length of C-String
|
||||
|
||||
@ -1152,22 +1168,6 @@ Copy string
|
||||
## RETURN VALUE
|
||||
Y,A = destination
|
||||
|
||||
# StrMatch
|
||||
Compare a String against pattern (e.g. '*test?.txt')
|
||||
|
||||
## C
|
||||
`int * strmatch ( char * s, const char * pattern );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI pattern`
|
||||
`>LDYAI s`
|
||||
`>SYSCALL strmatch`
|
||||
|
||||
## RETURN VALUE
|
||||
CC : match
|
||||
CS : no match
|
||||
|
||||
# StrUpr/StrLwr
|
||||
Convert string to UPPERCASE/lowercase
|
||||
|
||||
|
Binary file not shown.
@ -17,6 +17,10 @@ CMD.Init >LDYAI 256
|
||||
>STYA ZPArgVBuf
|
||||
txa
|
||||
>STA.G CMD.hArgVBuf
|
||||
|
||||
lda #PUSHD.STACK
|
||||
tay
|
||||
sta (pData),y
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -99,6 +103,53 @@ Cmd.INT.PWD ldy #S.PS.hPREFIX
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.PUSHD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK+PUSHD.STACK.MAX
|
||||
beq .9
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL NewStr
|
||||
bcs .99
|
||||
|
||||
>INC.G PUSHD.STACK
|
||||
tay
|
||||
txa
|
||||
sta (pData),y
|
||||
|
||||
ldx #1
|
||||
jsr Cmd.GetArgX
|
||||
bcs .8
|
||||
|
||||
>SYSCALL RealPath
|
||||
bcs .99
|
||||
|
||||
jmp Cmd.INT.CD.1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.POPD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK
|
||||
beq .9
|
||||
|
||||
tay
|
||||
lda (pData),y
|
||||
jsr Cmd.SetPrefixA
|
||||
|
||||
>DEC.G PUSHD.STACK
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.CD ldx #1
|
||||
jsr Cmd.GetArgX
|
||||
bcs Cmd.INT.CD.HOME
|
||||
@ -114,7 +165,9 @@ Cmd.INT.CD.HOME >LDYA L.ENV.HOME
|
||||
|
||||
>LDYA L.ENV.ROOT
|
||||
>SYSCALL GetEnv
|
||||
bcs Cmd.INT.PWD
|
||||
bcc .1
|
||||
|
||||
jmp Cmd.INT.PWD
|
||||
|
||||
.1 >SYSCALL ExpandStr
|
||||
bcs Cmd.INT.CD.RTS
|
||||
@ -134,9 +187,13 @@ Cmd.INT.CD.1 >STYA ZPPtr1
|
||||
|
||||
>LDA.G CMD.Stat+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne Cmd.Exec.ERRSYN
|
||||
beq .1
|
||||
|
||||
ldy #0
|
||||
lda #E.SYNTAX
|
||||
sec
|
||||
bra .90
|
||||
|
||||
.1 ldy #0
|
||||
|
||||
.5 iny
|
||||
lda (ZPPtr1),y
|
||||
@ -156,8 +213,20 @@ Cmd.INT.CD.1 >STYA ZPPtr1
|
||||
.8 >LDYA ZPPtr1
|
||||
>SYSCALL NewStr
|
||||
bcs .90
|
||||
phx
|
||||
txa
|
||||
|
||||
jsr Cmd.SetPrefixA
|
||||
|
||||
.90 php
|
||||
pha
|
||||
>LDA.G CMD.hCmdLine
|
||||
>SYSCALL FreeMem
|
||||
pla
|
||||
plp
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Cmd.SetPrefixA pha
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL FreeMem
|
||||
@ -166,15 +235,7 @@ Cmd.INT.CD.1 >STYA ZPPtr1
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
sta (pPs),y
|
||||
jsr SetPWD.I
|
||||
|
||||
.90 php
|
||||
pha
|
||||
>LDA.G CMD.hCmdLine
|
||||
>SYSCALL FreeMem
|
||||
pla
|
||||
plp
|
||||
.9 rts
|
||||
jmp SetPWD.I
|
||||
*--------------------------------------
|
||||
Cmd.Exec.ERRSYN lda #E.SYNTAX
|
||||
sec
|
||||
@ -508,12 +569,6 @@ Cmd.INT.RD ldx #1
|
||||
>SYSCALL Remove
|
||||
.99 rts
|
||||
|
||||
.9 jmp Cmd.Exec.ERRSYN
|
||||
*--------------------------------------
|
||||
Cmd.INT.PUSHD
|
||||
.9 jmp Cmd.Exec.ERRSYN
|
||||
*--------------------------------------
|
||||
Cmd.INT.POPD
|
||||
.9 jmp Cmd.Exec.ERRSYN
|
||||
*--------------------------------------
|
||||
Cmd.INT.BREAK
|
||||
|
@ -236,6 +236,9 @@ Mem.NextSlot lda ZPMemMgrSPtr
|
||||
* none.
|
||||
* (X unmodified)
|
||||
*\--------------------------------------
|
||||
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad hMem,BIN=%s\r\n"
|
||||
K.FreeMem.ERRFREED .AZ "FreeMem:$%h=already freed,BIN=%s\r\n"
|
||||
*--------------------------------------
|
||||
K.FreeMem.BAD pha
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
@ -251,18 +254,39 @@ K.FreeMem.BAD pha
|
||||
>DEBUGOA
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMem.FREED ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
pla
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 3
|
||||
phx
|
||||
>LDYAI K.FreeMem.ERRFREED
|
||||
>SYSCALL printf
|
||||
plx
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMem tay
|
||||
|
||||
beq K.FreeMem.BAD Slot=0, reserved by Kernel
|
||||
|
||||
* cpy #$23
|
||||
* bne .11
|
||||
* >DEBUG
|
||||
*.11
|
||||
cmp Mem.LastSlot
|
||||
bcc .10
|
||||
bne K.FreeMem.BAD
|
||||
|
||||
.10 jsr K.GetMemByID X unmodified
|
||||
.10 pha
|
||||
jsr K.GetMemByID X unmodified
|
||||
lda (ZPMemMgrSPtr)
|
||||
bpl K.FreeMem.FREED In use ?
|
||||
|
||||
pla
|
||||
ldy #S.MEM.REFCNT
|
||||
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
|
||||
dec only one left ?
|
||||
@ -313,22 +337,6 @@ K.FreeMem tay
|
||||
>STYA Mem.Free
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMem.FREED ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
>PUSHYA
|
||||
>PUSHBI 2
|
||||
phx
|
||||
>LDYAI K.FreeMem.ERRFREED
|
||||
>SYSCALL printf
|
||||
plx
|
||||
>DEBUGOA
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMem.ERRBAD .AZ "FreeMem:%h=Bad hMem,BIN=%s\r\n"
|
||||
K.FreeMem.ERRFREED .AZ "FreeMem:hMem already freed,BIN=%s\r\n"
|
||||
*/--------------------------------------
|
||||
* # GetMemPtr
|
||||
* A = hMem
|
||||
|
@ -24,11 +24,22 @@ ERR.Codes .DA #MLI.E.IO
|
||||
.DA #E.OOH
|
||||
.DA #E.INVH
|
||||
.DA #E.BUF
|
||||
.DA #E.BADPATH
|
||||
.DA #E.BADARG
|
||||
.DA #E.NSP
|
||||
.DA #E.SYN
|
||||
.DA #E.ENVF
|
||||
.DA #E.IBIN
|
||||
.DA #E.FTB
|
||||
.DA #3 Ctrl-C
|
||||
*--------------------------------------
|
||||
.DA #E.SYNTAX
|
||||
.DA #E.STKOVERFLOW
|
||||
.DA #E.NOWHILE
|
||||
.DA #E.NOFOR
|
||||
.DA #E.NOIF
|
||||
.DA #E.BADEXP
|
||||
.DA #E.BADFTYPE
|
||||
*--------------------------------------
|
||||
ERR.Count .EQ *-ERR.Codes
|
||||
*--------------------------------------
|
||||
@ -53,11 +64,22 @@ ERR.Messages >PSTR "I/O Error"
|
||||
>PSTR "Out Of Memory Handle"
|
||||
>PSTR "Invalid Handle"
|
||||
>PSTR "Buffer Overflow"
|
||||
>PSTR "Bad Path"
|
||||
>PSTR "Bad API Argument"
|
||||
>PSTR "No Such Process"
|
||||
>PSTR "Syntax Error"
|
||||
>PSTR "Env Is Full"
|
||||
>PSTR "Invalid BIN format"
|
||||
>PSTR "File Too Big"
|
||||
>PSTR "User Interrupt"
|
||||
*--------------------------------------
|
||||
>PSTR "Script Syntax Error"
|
||||
>PSTR "Stack Overflow"
|
||||
>PSTR "LOOP Without WHILE"
|
||||
>PSTR "NEXT Without FOR"
|
||||
>PSTR "FI/ELSE Without IF"
|
||||
>PSTR "Bad Expression"
|
||||
>PSTR "Bad File Type"
|
||||
*--------------------------------------
|
||||
>PSTR "Unknown Error"
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user