mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel 0.92+
This commit is contained in:
parent
324423e027
commit
b889c4778e
@ -61,7 +61,7 @@ X = DevID
|
|||||||
# GetDevStatus
|
# GetDevStatus
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int getdevstatus(short int hDEV, S.DIB* dstat);`
|
`int getdevstatus(short int DevID, S.DIB* dstat);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHWI S.DIB`
|
`>PUSHWI S.DIB`
|
||||||
@ -803,6 +803,9 @@ Specifiers :
|
|||||||
+ \f : Print 'FF' ($0C,12)
|
+ \f : Print 'FF' ($0C,12)
|
||||||
+ \n : Print 'LF' ($0A,10)
|
+ \n : Print 'LF' ($0A,10)
|
||||||
+ \r : Print 'CR' ($0D,13)
|
+ \r : Print 'CR' ($0D,13)
|
||||||
|
+ \t : Print 'TAB' ($09,09)
|
||||||
|
+ \v : Print 'VT' ($0B,11)
|
||||||
|
+ \xHH : Print byte with hexadecimal value HH (1 to 2 digits)
|
||||||
+ \\\\ : Print \
|
+ \\\\ : Print \
|
||||||
+ \\% : Print %
|
+ \\% : Print %
|
||||||
|
|
||||||
|
Binary file not shown.
@ -17,6 +17,8 @@ CORE.Quit >LDA.G CORE.hArgVBuf
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* http://heirloom.sourceforge.net/sh/sh.1.html
|
||||||
|
*--------------------------------------
|
||||||
* Input : ZPArgVBuf (String)
|
* Input : ZPArgVBuf (String)
|
||||||
* Tokenize ZPArgVBuf
|
* Tokenize ZPArgVBuf
|
||||||
* :LOOP
|
* :LOOP
|
||||||
@ -61,16 +63,21 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
jsr CORE.GetCharNB
|
jsr CORE.GetCharNB
|
||||||
bcs .9 Ending 0, CS,A=0
|
bcs .9 Ending 0, CS,A=0
|
||||||
|
|
||||||
cmp #'#' commented line?
|
cmp #C.CR
|
||||||
|
beq .80 empty line ?
|
||||||
|
|
||||||
|
.10 cmp #'#' commented line?
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.1 jsr CORE.GetNextCharNB
|
.1 jsr CORE.GetNextCharNB
|
||||||
bcs .8 A=0
|
bcs .8 EOF
|
||||||
eor #C.CR
|
cmp #C.CR
|
||||||
bne .1
|
bne .1 EOL
|
||||||
jsr CORE.GetNextChar
|
|
||||||
|
|
||||||
.8 clc
|
.80 jsr CORE.GetNextChar skip CR...
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
clc
|
||||||
.9 rts EOL, CS,A=0
|
.9 rts EOL, CS,A=0
|
||||||
|
|
||||||
.2 cmp #'|'
|
.2 cmp #'|'
|
||||||
@ -142,9 +149,23 @@ CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char
|
|||||||
CORE.ExecCmd.1 lda #0
|
CORE.ExecCmd.1 lda #0
|
||||||
sta (ZPArgVBufPtr)
|
sta (ZPArgVBufPtr)
|
||||||
|
|
||||||
|
jsr CORE.StkGet IF,WHILE,FOR ?
|
||||||
|
bcs .3 no particular context, exec...
|
||||||
|
tax
|
||||||
|
|
||||||
|
>LDA.G CORE.IntCmd
|
||||||
|
bmi .2 external ...
|
||||||
|
|
||||||
>LDYA ZPArgVBuf
|
and #$3F
|
||||||
|
cmp #C.FOR
|
||||||
|
bcs .3 FOR...FI : always execute
|
||||||
|
|
||||||
|
.2 txa
|
||||||
|
bpl .8 context is FALSE, skip line
|
||||||
|
asl
|
||||||
|
bpl .8 parent context is FALSE, skip line
|
||||||
|
|
||||||
|
.3 >LDYA ZPArgVBuf
|
||||||
>STYA ZPArgVBufPtr
|
>STYA ZPArgVBufPtr
|
||||||
|
|
||||||
>LDA.G CORE.IntCmd
|
>LDA.G CORE.IntCmd
|
||||||
@ -153,6 +174,9 @@ CORE.ExecCmd.1 lda #0
|
|||||||
|
|
||||||
jmp (J.CMD,x)
|
jmp (J.CMD,x)
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>SYSCALL execv
|
>SYSCALL execv
|
||||||
@ -314,6 +338,9 @@ CORE.ArgV.NextChar
|
|||||||
CORE.ArgV.Next lda (ZPArgVBufPtr)
|
CORE.ArgV.Next lda (ZPArgVBufPtr)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
|
>STYA ZPArgVBufPrev
|
||||||
|
|
||||||
.1 jsr CORE.ArgV.NextChar
|
.1 jsr CORE.ArgV.NextChar
|
||||||
lda (ZPArgVBufPtr)
|
lda (ZPArgVBufPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -80,7 +80,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
|||||||
jsr CORE.ArgV.Next
|
jsr CORE.ArgV.Next
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYA L.EXP.OP.UNARY -d -e -f ?
|
>LDYA L.EXP.OP.UNARY -d -e -f -n -z ?
|
||||||
jsr CORE.LookupArgVBuf
|
jsr CORE.LookupArgVBuf
|
||||||
|
|
||||||
bcs .1
|
bcs .1
|
||||||
@ -93,8 +93,8 @@ EXP.TEST lda (ZPArgVBufPtr)
|
|||||||
|
|
||||||
>EOR.G CORE.Test
|
>EOR.G CORE.Test
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
lda (ZPArgVBufPtr)
|
||||||
bra .8 go check ]
|
bra .80 go check ]
|
||||||
|
|
||||||
.9 lda #E.ESYN
|
.9 lda #E.ESYN
|
||||||
sec
|
sec
|
||||||
@ -118,7 +118,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
|||||||
.8 jsr CORE.ArgV.Next
|
.8 jsr CORE.ArgV.Next
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
cmp #']'
|
.80 cmp #']'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
@ -128,13 +128,14 @@ EXP.TEST lda (ZPArgVBufPtr)
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
||||||
beq .9 we need one arg
|
beq EXP.OP.UNARY.ESYN we need one arg or ]
|
||||||
|
|
||||||
>LDA.G CORE.Operator
|
>LDA.G CORE.Operator
|
||||||
tax
|
tax
|
||||||
jmp (J.EXP.OP.UNARY,x)
|
jmp (J.EXP.OP.UNARY,x)
|
||||||
|
|
||||||
.9 lda #E.ESYN
|
EXP.OP.UNARY.ESYN
|
||||||
|
lda #E.ESYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -161,6 +162,10 @@ EXP.OP.UNARY.DEF.7
|
|||||||
>PUSHEA.G StatBuf
|
>PUSHEA.G StatBuf
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL STAT
|
>SYSCALL STAT
|
||||||
|
php
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
plp
|
||||||
rts
|
rts
|
||||||
|
|
||||||
EXP.OP.UNARY.DEF.8
|
EXP.OP.UNARY.DEF.8
|
||||||
@ -173,6 +178,22 @@ EXP.OP.UNARY.DEF.9
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
EXP.OP.UNARY.N lda (ZPArgVBufPtr) [ -N ] ?
|
||||||
|
cmp #']'
|
||||||
|
beq EXP.OP.UNARY.DEF.9 FALSE
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
beq EXP.OP.UNARY.ESYN
|
||||||
|
bra EXP.OP.UNARY.DEF.8 arg is not empty TRUE
|
||||||
|
|
||||||
|
EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
|
||||||
|
cmp #']'
|
||||||
|
beq EXP.OP.UNARY.DEF.8 TRUE
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
beq EXP.OP.UNARY.ESYN
|
||||||
|
bra EXP.OP.UNARY.DEF.9 FALSE
|
||||||
|
*--------------------------------------
|
||||||
EXP.TEST.BINARY >LDA.G CORE.Operator
|
EXP.TEST.BINARY >LDA.G CORE.Operator
|
||||||
beq .1 =
|
beq .1 =
|
||||||
|
|
||||||
@ -184,7 +205,7 @@ EXP.TEST.BINARY >LDA.G CORE.Operator
|
|||||||
.1 jsr CORE.ArgV.Next
|
.1 jsr CORE.ArgV.Next
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPArgVBufPrev
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL strcmp
|
>SYSCALL strcmp
|
||||||
ror CS if !=
|
ror CS if !=
|
||||||
@ -199,15 +220,15 @@ EXP.TEST.BINARY >LDA.G CORE.Operator
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.TEST.BINARY.NUM
|
EXP.TEST.BINARY.NUM
|
||||||
jsr CORE.ArgV.Next
|
>LDYA ZPArgVBufPrev
|
||||||
beq .9
|
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLL.G M32.ACC
|
>PULLL.G M32.ACC
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
beq .9
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -97,42 +97,54 @@ IO.Reset.Err >LDA.G IO.hErr
|
|||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PrintBatchErrMsg
|
IO.PrintBatchErrMsg
|
||||||
>LDA.G hInputBuf
|
>LDYA ZPInputBuf
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
stz ZPPtr3
|
stz ZPPtr2 Line Count
|
||||||
stz ZPPtr3+1
|
stz ZPPtr2+1
|
||||||
|
|
||||||
.1 >LDYA ZPPtr1
|
.1 inc ZPPtr2
|
||||||
>STYA ZPPtr2 Save actual line start
|
|
||||||
|
|
||||||
inc ZPPtr3
|
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPPtr3+1
|
inc ZPPtr2+1
|
||||||
|
|
||||||
.2 lda (ZPPtr1)
|
.2 ldy #$ff
|
||||||
beq .6 EoF
|
|
||||||
inc ZPPtr1
|
|
||||||
bne .3
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.3 cmp #$0D
|
.3 iny
|
||||||
bne .2 Scan until EoL
|
lda (ZPPtr1),y
|
||||||
|
beq .4 EoF
|
||||||
|
|
||||||
ldx ZPPtr1
|
cmp #C.CR
|
||||||
cpx ZPInputBufPtr
|
bne .3 Scan until EoL
|
||||||
|
|
||||||
|
.4 tya
|
||||||
|
clc
|
||||||
|
adc ZPPtr1
|
||||||
|
tax
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
|
adc #0
|
||||||
|
pha
|
||||||
|
|
||||||
|
cpx ZPInputBufPtr
|
||||||
sbc ZPInputBufPtr+1
|
sbc ZPInputBufPtr+1
|
||||||
bcc .1 not this line....
|
pla
|
||||||
|
bcs .41
|
||||||
|
|
||||||
.4 ldy #0
|
inx
|
||||||
|
bne .40
|
||||||
|
inc
|
||||||
|
.40 stx ZPPtr1
|
||||||
|
sta ZPPtr1+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
.5 lda (ZPPtr2),y
|
.41 ldy #$ff
|
||||||
|
|
||||||
|
.5 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
beq .6
|
beq .6
|
||||||
iny
|
|
||||||
cmp #$0D
|
cmp #C.CR
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
phy
|
phy
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hStdErr
|
ldy #S.PS.hStdErr
|
||||||
@ -147,22 +159,24 @@ IO.PrintBatchErrMsg
|
|||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL fprintf
|
>SYSCALL fprintf
|
||||||
|
|
||||||
lda ZPInputBufPtr
|
ldy #$ff
|
||||||
sec
|
|
||||||
sbc ZPPtr2
|
|
||||||
beq .8
|
|
||||||
tay
|
|
||||||
|
|
||||||
.7 phy
|
.7 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
cmp #C.CR
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
phy
|
||||||
>PUSHBI '-'
|
>PUSHBI '-'
|
||||||
ldy #S.PS.hStdErr
|
ldy #S.PS.hStdErr
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL fputc
|
>SYSCALL fputc
|
||||||
ply
|
ply
|
||||||
dey
|
bra .7
|
||||||
bne .7
|
|
||||||
|
|
||||||
.8 >PUSHW ZPPtr3
|
.8 >PUSHW ZPPtr2
|
||||||
|
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>PUSHW L.MSG.BATCHERR
|
>PUSHW L.MSG.BATCHERR
|
||||||
|
@ -153,6 +153,8 @@ L.EXP.OP.UNARY .DA EXP.OP.UNARY
|
|||||||
J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
||||||
.DA EXP.OP.UNARY.E
|
.DA EXP.OP.UNARY.E
|
||||||
.DA EXP.OP.UNARY.F
|
.DA EXP.OP.UNARY.F
|
||||||
|
.DA EXP.OP.UNARY.N
|
||||||
|
.DA EXP.OP.UNARY.Z
|
||||||
L.EXP.OP.BINARY .DA EXP.OP.BINARY
|
L.EXP.OP.BINARY .DA EXP.OP.BINARY
|
||||||
L.EXP.OP.MATH .DA EXP.OP.MATH
|
L.EXP.OP.MATH .DA EXP.OP.MATH
|
||||||
J.EXP.OP.MATH .DA M32.Add
|
J.EXP.OP.MATH .DA M32.Add
|
||||||
@ -583,6 +585,8 @@ EXP.BEGIN .AZ "!["
|
|||||||
EXP.OP.UNARY .AZ "-D"
|
EXP.OP.UNARY .AZ "-D"
|
||||||
.AZ "-E"
|
.AZ "-E"
|
||||||
.AZ "-F"
|
.AZ "-F"
|
||||||
|
.AZ "-N"
|
||||||
|
.AZ "-Z"
|
||||||
.HS 00
|
.HS 00
|
||||||
EXP.OP.BINARY .AZ "="
|
EXP.OP.BINARY .AZ "="
|
||||||
.AZ "!="
|
.AZ "!="
|
||||||
|
@ -160,6 +160,9 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
|||||||
* + \f : Print 'FF' ($0C,12)
|
* + \f : Print 'FF' ($0C,12)
|
||||||
* + \n : Print 'LF' ($0A,10)
|
* + \n : Print 'LF' ($0A,10)
|
||||||
* + \r : Print 'CR' ($0D,13)
|
* + \r : Print 'CR' ($0D,13)
|
||||||
|
* + \t : Print 'TAB' ($09,09)
|
||||||
|
* + \v : Print 'VT' ($0B,11)
|
||||||
|
* + \xHH : Print byte with hexadecimal value HH (1 to 2 digits)
|
||||||
* + \\\\ : Print \
|
* + \\\\ : Print \
|
||||||
* + \\% : Print %
|
* + \\% : Print %
|
||||||
* Modifiers for len and padding :
|
* Modifiers for len and padding :
|
||||||
@ -202,14 +205,14 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
.1 jsr MEM.GetCharPtr1
|
.1 jsr MEM.GetCharPtr1
|
||||||
beq .8 end of format..
|
beq .8 end of format..
|
||||||
|
|
||||||
cmp #'%'
|
.22 cmp #'%'
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
stz K.PrintF.PadL
|
stz K.PrintF.PadL
|
||||||
lda #' '
|
lda #' '
|
||||||
sta K.PrintF.PadC
|
sta K.PrintF.PadC
|
||||||
|
|
||||||
.2 ldx #PrintFTBL2-PrintFTBL1-1
|
.2 ldx #PrintFTBL1.Cnt-1
|
||||||
jsr MEM.GetCharPtr1
|
jsr MEM.GetCharPtr1
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
@ -268,20 +271,35 @@ K.PrintF.1 stz PrintF.Cnt
|
|||||||
.10 cmp #'\'
|
.10 cmp #'\'
|
||||||
bne .20
|
bne .20
|
||||||
|
|
||||||
ldx #PrintFTBL2.OUT-PrintFTBL2-1
|
|
||||||
jsr MEM.GetCharPtr1
|
jsr MEM.GetCharPtr1
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
|
ldx #PrintFTBL2.Cnt-1
|
||||||
|
|
||||||
.12 cmp PrintFTBL2,x
|
.12 cmp PrintFTBL2,x
|
||||||
beq .13
|
beq .19
|
||||||
dex
|
dex
|
||||||
bpl .12
|
bpl .12
|
||||||
bra .1
|
|
||||||
|
|
||||||
.13 lda PrintFTBL2.OUT,x
|
cmp #'x'
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>LDYA ZPPtr1
|
||||||
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
jsr STDLIB.GetHex
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr MEM.AddYToPtr1
|
||||||
|
|
||||||
|
.14 lda HEXBUF
|
||||||
|
bra .20
|
||||||
|
|
||||||
|
.19 lda PrintFTBL2.OUT,x
|
||||||
|
|
||||||
.20 jsr PrintF.COut
|
.20 jsr PrintF.COut
|
||||||
bcc .1
|
bcs .99
|
||||||
|
jmp .1
|
||||||
|
|
||||||
.99 php
|
.99 php
|
||||||
pha
|
pha
|
||||||
@ -307,8 +325,10 @@ PrintF.ESC jmp (.1,x)
|
|||||||
.DA PrintF.S,PrintF.SS
|
.DA PrintF.S,PrintF.SS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintFTBL1 .AS "bBdDuefhHiILnNsS"
|
PrintFTBL1 .AS "bBdDuefhHiILnNsS"
|
||||||
PrintFTBL2 .AS "befnr\%"
|
PrintFTBL1.Cnt .EQ *-PrintFTBL1
|
||||||
PrintFTBL2.OUT .HS 08.1B.0C.0A.0D \b\e\f\n\r
|
PrintFTBL2 .AS "befnrtv\%"
|
||||||
|
PrintFTBL2.Cnt .EQ *-PrintFTBL2
|
||||||
|
PrintFTBL2.OUT .HS 08.1B.0C.0A.0D.09.0B \b\e\f\n\r\t\v
|
||||||
.DA #'\' \\
|
.DA #'\' \\
|
||||||
.DA #'%' \%
|
.DA #'%' \%
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -145,7 +145,7 @@ STDLIB.GetHex lda (ZPPtr2)
|
|||||||
|
|
||||||
sta STDLIB.32
|
sta STDLIB.32
|
||||||
|
|
||||||
ldy #$ff
|
ldy #0
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user