2016-08-17 06:25:58 +00:00
|
|
|
|
PR#3
|
2017-03-29 15:48:15 +00:00
|
|
|
|
PREFIX /A2OSX.BUILD
|
2016-08-17 06:25:58 +00:00
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.Reset ldy #CSH.hStack
|
|
|
|
|
lda (pData),y
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
>LDYAI 256
|
|
|
|
|
>SYSCALL GetMemYA
|
|
|
|
|
bcs .9
|
|
|
|
|
txa
|
|
|
|
|
ldy #CSH.hStack
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sta (pData),y
|
2017-07-13 15:22:13 +00:00
|
|
|
|
|
|
|
|
|
.1 lda #0
|
|
|
|
|
ldy #CSH.StackPtr
|
|
|
|
|
sta (pData),y
|
|
|
|
|
* clc
|
|
|
|
|
.9 rts
|
2017-07-12 15:25:23 +00:00
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.Exec jsr CSH.GetBuffer
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
ldy #CSH.hStack
|
|
|
|
|
lda (pData),y
|
|
|
|
|
>SYSCALL GetMemPtrA
|
|
|
|
|
>STYA ZPCSHStack
|
|
|
|
|
|
2017-07-11 15:53:52 +00:00
|
|
|
|
ldy #0
|
2017-07-10 15:50:32 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetCharNB
|
2016-08-17 06:25:58 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
cmp #'}' End of block ?
|
|
|
|
|
bne .10
|
|
|
|
|
|
|
|
|
|
jsr CSH.CheckStack must be on stack....
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CSH.Pop was expected, get stacked Cmd...
|
|
|
|
|
tax
|
|
|
|
|
jmp (J.CSHCMDS.END,x)
|
|
|
|
|
|
|
|
|
|
.10 jsr CSH.SavePtr Save Ptr, in case of while,for....
|
2017-07-10 15:50:32 +00:00
|
|
|
|
|
2016-08-17 06:25:58 +00:00
|
|
|
|
cmp #$0D
|
2017-07-11 15:53:52 +00:00
|
|
|
|
beq .6 empty line...skip...
|
2016-08-17 06:25:58 +00:00
|
|
|
|
|
2017-07-10 15:50:32 +00:00
|
|
|
|
.1 iny
|
|
|
|
|
sta (pData),y
|
|
|
|
|
|
|
|
|
|
cpy #CmdLine.MAX
|
2017-07-13 15:22:13 +00:00
|
|
|
|
beq .8 Buffer full, try execute...
|
2017-07-10 15:50:32 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetNextChar
|
|
|
|
|
bcs .8 EOF, try execute...
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
|
|
|
|
cmp #$0D EOL, skip CR and exec...
|
|
|
|
|
beq .6
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.CheckCharNB
|
2017-07-11 15:53:52 +00:00
|
|
|
|
bcc .1 still in keyword....loop
|
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
sta (pData)
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.CheckKeyword
|
2017-07-11 15:53:52 +00:00
|
|
|
|
bcs .5 not an internal SCRipt keyword....
|
2016-08-17 06:25:58 +00:00
|
|
|
|
|
2017-07-12 15:25:23 +00:00
|
|
|
|
lda #0
|
|
|
|
|
sta (pData) Reset Cmdline
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
stx CSH.CmdSave
|
|
|
|
|
jmp (J.CSHCMDS,x)
|
2017-07-10 15:50:32 +00:00
|
|
|
|
|
2017-07-11 15:53:52 +00:00
|
|
|
|
.5 lda (ZPBufPtr) restore char....
|
|
|
|
|
bra .1
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.6 jsr CSH.GetNextChar Skip last char...
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.8 tya
|
|
|
|
|
beq .80 empty line....nothing to do..
|
2017-07-10 15:50:32 +00:00
|
|
|
|
sta (pData)
|
|
|
|
|
|
|
|
|
|
ldy #bEcho
|
2016-08-17 06:25:58 +00:00
|
|
|
|
lda (pData),y
|
2017-07-13 15:22:13 +00:00
|
|
|
|
beq .80
|
2016-08-17 06:25:58 +00:00
|
|
|
|
|
2016-10-17 06:21:04 +00:00
|
|
|
|
>PUSHW pData
|
|
|
|
|
>LDYA L.MSG.ECHO
|
2017-04-03 06:01:52 +00:00
|
|
|
|
>SYSCALL PPrintFYA
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.80 clc
|
2016-08-17 06:25:58 +00:00
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.CheckKeyword
|
2017-07-11 15:53:52 +00:00
|
|
|
|
phy
|
2017-07-13 15:22:13 +00:00
|
|
|
|
>LDYA L.CSHCMDS
|
2017-07-11 15:53:52 +00:00
|
|
|
|
>STYA ZPPtr2
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtr2)
|
|
|
|
|
beq .9 Ending 0, not found....
|
|
|
|
|
|
|
|
|
|
cmp (pData) Same Len ?
|
|
|
|
|
bne .4
|
|
|
|
|
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
.2 lda (pData),y
|
|
|
|
|
|
|
|
|
|
cmp #'a' To Uppercase
|
|
|
|
|
bcc .3
|
|
|
|
|
cmp #'z'+1
|
|
|
|
|
bcs .3
|
|
|
|
|
eor #$20
|
|
|
|
|
|
|
|
|
|
.3 cmp (ZPPtr2),y
|
|
|
|
|
bne .4
|
|
|
|
|
dey
|
|
|
|
|
bne .2
|
|
|
|
|
|
|
|
|
|
ply
|
|
|
|
|
clc Found an internal Cmd...
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.4 inx
|
|
|
|
|
inx
|
|
|
|
|
|
|
|
|
|
lda ZPPtr2
|
|
|
|
|
sec
|
|
|
|
|
adc (ZPPtr2)
|
|
|
|
|
sta ZPPtr2
|
|
|
|
|
bcc .1
|
|
|
|
|
inc ZPPtr2+1
|
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.9 ply
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.GetBuffer ldy #CSH.hBuf
|
2016-08-17 06:25:58 +00:00
|
|
|
|
lda (pData),y
|
2017-07-10 15:50:32 +00:00
|
|
|
|
>SYSCALL GetMemPtrA
|
|
|
|
|
>STYA ZPBufBase
|
2016-08-17 06:25:58 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
ldy #CSH.BufLen
|
2017-07-10 15:50:32 +00:00
|
|
|
|
lda (pData),y
|
|
|
|
|
clc
|
|
|
|
|
adc ZPBufBase
|
|
|
|
|
sta ZPBufEnd
|
2016-09-26 16:02:14 +00:00
|
|
|
|
|
2017-07-10 15:50:32 +00:00
|
|
|
|
iny
|
|
|
|
|
lda (pData),y
|
|
|
|
|
adc ZPBufBase+1
|
|
|
|
|
sta ZPBufEnd+1
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.SetBufPtr ldy #CSH.BufPtr
|
2017-07-10 15:50:32 +00:00
|
|
|
|
lda (pData),y
|
|
|
|
|
clc
|
|
|
|
|
adc ZPBufBase
|
|
|
|
|
sta ZPBufPtr
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
lda (pData),y
|
|
|
|
|
adc ZPBufBase+1
|
|
|
|
|
sta ZPBufPtr+1
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.SavePtr ldx ZPBufPtr
|
|
|
|
|
stx CSH.BufPtrSave
|
2017-07-12 15:25:23 +00:00
|
|
|
|
ldx ZPBufPtr+1
|
2017-07-13 15:22:13 +00:00
|
|
|
|
stx CSH.BufPtrSave+1
|
2017-07-12 15:25:23 +00:00
|
|
|
|
rts
|
2017-07-11 15:53:52 +00:00
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.WHILE
|
|
|
|
|
CSH.IF jsr CSH.GetCharNB
|
2017-07-11 15:53:52 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
cmp #'('
|
|
|
|
|
bne .9
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetNextCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CSH.ExpEval
|
2017-07-11 15:53:52 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetCharNB
|
2017-07-12 15:25:23 +00:00
|
|
|
|
bcs .99
|
2017-07-11 15:53:52 +00:00
|
|
|
|
cmp #')'
|
|
|
|
|
bne .9
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetNextCharNB
|
2017-07-12 15:25:23 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
cmp #'{'
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
lda CSH.ACC
|
|
|
|
|
ora CSH.ACC+1
|
|
|
|
|
ora CSH.ACC+2
|
|
|
|
|
ora CSH.ACC+3
|
|
|
|
|
beq .6 eval returned false, skip {{....}}
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetNextCharNB Skip '{'
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
lda CSH.CmdSave Push "IF" or "WHILE"
|
|
|
|
|
beq .1 if "IF", no need to push Saved Ptr
|
2017-07-12 15:25:23 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
pha
|
|
|
|
|
lda CSH.BufPtrSave+1 WHILE : push loop address...
|
|
|
|
|
jsr CSH.Push
|
|
|
|
|
lda CSH.BufPtrSave
|
|
|
|
|
jsr CSH.Push
|
|
|
|
|
pla
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.1 jsr CSH.Push
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'}' Tell '}' is expected at the end of block
|
|
|
|
|
jsr CSH.Push
|
|
|
|
|
bcs .99
|
|
|
|
|
|
2017-07-11 15:53:52 +00:00
|
|
|
|
rts
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.6 ldx #1 expecting 1 '}' for now....
|
2017-07-12 15:25:23 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.7 jsr CSH.GetNextChar
|
2017-07-12 15:25:23 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
cmp #'{'
|
|
|
|
|
bne .71
|
|
|
|
|
inx
|
|
|
|
|
bra .7
|
|
|
|
|
|
|
|
|
|
.71 cmp #'}'
|
|
|
|
|
bne .7
|
2017-07-13 15:22:13 +00:00
|
|
|
|
txa
|
|
|
|
|
beq .9
|
2017-07-12 15:25:23 +00:00
|
|
|
|
dex
|
|
|
|
|
bne .7
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
jsr CSH.GetNextChar
|
|
|
|
|
|
2017-07-12 15:25:23 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2017-07-11 15:53:52 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.9 lda #CSHERR.SYNTAX
|
2017-07-11 15:53:52 +00:00
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.IF.END jsr CSH.GetNextChar just skip ending '}'
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.WHILE.END jsr CSH.Pop
|
|
|
|
|
ldy #CSH.BufPtr
|
|
|
|
|
sta (pData),y
|
|
|
|
|
jsr CSH.Pop
|
|
|
|
|
ldy #CSH.BufPtr+1
|
|
|
|
|
sta (pData),y
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.BREAK
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.CONTINUE
|
|
|
|
|
|
|
|
|
|
lda #CSHERR.SYNTAX
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-17 05:59:30 +00:00
|
|
|
|
CSH.ExpEval stz CSH.ACC
|
|
|
|
|
stz CSH.ACC+1
|
|
|
|
|
stz CSH.ACC+2
|
|
|
|
|
stz CSH.ACC+3
|
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
|
|
jsr CSH.GetCharNB
|
|
|
|
|
>DEBUG
|
|
|
|
|
bcs .9
|
|
|
|
|
cmp #')'
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
jsr CSH.IsLetter Fnc or Var ?
|
|
|
|
|
bcs .1
|
|
|
|
|
|
|
|
|
|
bra .9
|
|
|
|
|
|
|
|
|
|
.1 jsr CSH.IsDigit number ?
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CSH.GetNumInACC
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 lda #CSHERR.SYNTAX
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.GetNumInACC ldy #0
|
|
|
|
|
|
|
|
|
|
.1 iny
|
|
|
|
|
cpy #10
|
|
|
|
|
beq .9
|
|
|
|
|
|
|
|
|
|
sta (pData),y
|
|
|
|
|
|
|
|
|
|
jsr CSH.GetNextChar
|
|
|
|
|
bcs .8
|
|
|
|
|
jsr CSH.IsDigit
|
|
|
|
|
bcc .1
|
|
|
|
|
|
|
|
|
|
.8 tya
|
|
|
|
|
sta (pData)
|
|
|
|
|
|
|
|
|
|
>PUSHW pData
|
|
|
|
|
>PUSHW L.CSH.ACC
|
|
|
|
|
>SYSCALL AToI
|
|
|
|
|
bcs .9
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 lda #CSHERR.SYNTAX
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.Push pha
|
|
|
|
|
ldy #CSH.StackPtr
|
2017-07-12 15:25:23 +00:00
|
|
|
|
lda (pData),y
|
2017-07-13 15:22:13 +00:00
|
|
|
|
tay
|
2017-07-12 15:25:23 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
pla
|
|
|
|
|
sta (ZPCSHStack),y
|
|
|
|
|
iny
|
|
|
|
|
beq .9
|
|
|
|
|
tya
|
|
|
|
|
ldy #CSH.StackPtr
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sta (pData),y
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.9 lda #CSHERR.SOVERFLW
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.Pop ldy #CSH.StackPtr
|
2017-07-12 15:25:23 +00:00
|
|
|
|
lda (pData),y
|
|
|
|
|
beq .9
|
|
|
|
|
dec
|
2017-07-13 15:22:13 +00:00
|
|
|
|
tay
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sta (pData),y
|
2017-07-13 15:22:13 +00:00
|
|
|
|
lda (ZPCSHStack),y
|
2017-07-12 15:25:23 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.9 lda #CSHERR.SYNTAX
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.CheckStack pha
|
|
|
|
|
ldy #CSH.StackPtr
|
2017-07-12 15:25:23 +00:00
|
|
|
|
lda (pData),y
|
|
|
|
|
beq .9
|
2017-07-13 15:22:13 +00:00
|
|
|
|
dec
|
2017-07-12 15:25:23 +00:00
|
|
|
|
tay
|
2017-07-13 15:22:13 +00:00
|
|
|
|
pla
|
|
|
|
|
cmp (ZPCSHStack),y
|
2017-07-12 15:25:23 +00:00
|
|
|
|
bne .9
|
2017-07-13 15:22:13 +00:00
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
ldy #CSH.StackPtr
|
|
|
|
|
sta (pData),y
|
|
|
|
|
|
2017-07-11 15:53:52 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2017-07-12 15:25:23 +00:00
|
|
|
|
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.9 lda #CSHERR.SYNTAX
|
2017-07-12 15:25:23 +00:00
|
|
|
|
sec
|
2017-07-13 15:22:13 +00:00
|
|
|
|
rts
|
2017-07-12 15:25:23 +00:00
|
|
|
|
*--------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.GetCharNB jsr CSH.GetChar
|
|
|
|
|
bcs CSH.GetNextCharNB.RTS
|
|
|
|
|
jsr CSH.CheckCharNB
|
|
|
|
|
bcc CSH.GetNextCharNB.RTS
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.GetNextCharNB
|
|
|
|
|
jsr CSH.GetNextChar
|
|
|
|
|
bcs CSH.GetNextCharNB.RTS
|
|
|
|
|
jsr CSH.CheckCharNB
|
|
|
|
|
bcs CSH.GetNextCharNB
|
|
|
|
|
CSH.GetNextCharNB.RTS
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.CheckCharNB cmp #32 SPACE
|
|
|
|
|
beq .9
|
|
|
|
|
cmp #13 CR
|
|
|
|
|
beq .9
|
|
|
|
|
cmp #10 LF
|
|
|
|
|
beq .9
|
|
|
|
|
cmp #8 TAB
|
|
|
|
|
beq .9
|
2017-07-12 15:25:23 +00:00
|
|
|
|
clc
|
2017-07-13 15:22:13 +00:00
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.GetNextChar phy
|
|
|
|
|
ldy #CSH.BufPtr
|
|
|
|
|
lda (pData),y
|
|
|
|
|
inc
|
|
|
|
|
sta (pData),y
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
lda (pData),y
|
|
|
|
|
inc
|
|
|
|
|
sta (pData),y
|
|
|
|
|
|
|
|
|
|
.1 ply
|
|
|
|
|
|
|
|
|
|
inc ZPBufPtr
|
|
|
|
|
bne CSH.GetChar
|
|
|
|
|
inc ZPBufPtr+1
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CSH.GetChar lda ZPBufPtr
|
|
|
|
|
eor ZPBufEnd
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
lda ZPBufPtr+1
|
|
|
|
|
eor ZPBufEnd+1
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
lda #MLI.ERR.EOF
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPBufPtr)
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*---------------------------------------
|
2017-07-17 05:59:30 +00:00
|
|
|
|
CSH.IsLetterOrDigit
|
|
|
|
|
jsr CSH.IsDigit
|
|
|
|
|
bcc CSH.IsLetterRTS
|
|
|
|
|
*---------------------------------------
|
2017-07-13 15:22:13 +00:00
|
|
|
|
CSH.IsLetter cmp #'A'
|
|
|
|
|
bcc .9
|
|
|
|
|
|
|
|
|
|
cmp #'Z'+1
|
|
|
|
|
bcc CSH.IsLetterRTS
|
|
|
|
|
|
|
|
|
|
cmp #'a'
|
|
|
|
|
bcc .9
|
|
|
|
|
cmp #'z'+1
|
|
|
|
|
rts CC if lowercase
|
|
|
|
|
|
|
|
|
|
.9 sec
|
|
|
|
|
|
|
|
|
|
CSH.IsLetterRTS rts
|
|
|
|
|
*---------------------------------------
|
|
|
|
|
CSH.IsDigit cmp #'0'
|
|
|
|
|
bcc .9
|
|
|
|
|
cmp #'9'+1
|
|
|
|
|
rts cc if ok, cs if not
|
|
|
|
|
|
|
|
|
|
.9 sec
|
|
|
|
|
rts
|
2016-08-17 06:25:58 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
2017-07-13 15:22:13 +00:00
|
|
|
|
SAVE /A2OSX.SRC/SBIN/SHELL.S.CSH
|
2017-03-29 15:48:15 +00:00
|
|
|
|
LOAD /A2OSX.SRC/SBIN/SHELL.S
|
2016-08-17 06:25:58 +00:00
|
|
|
|
ASM
|