mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 07:54:37 +00:00
396 lines
5.7 KiB
Plaintext
396 lines
5.7 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
KW.ADDINT
|
||
KW.APPEND
|
||
KW.BYTE
|
||
KW.CLEAR
|
||
KW.CLOCK
|
||
KW.CLOSE
|
||
KW.COPY
|
||
KW.CREATE
|
||
KW.ECHO
|
||
KW.EDIT
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
*KW.END
|
||
KW.FILL
|
||
KW.FLAG
|
||
KW.FOR
|
||
KW.FREE
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.GET jsr CORE.GetNextCharNB
|
||
bcs .9
|
||
|
||
jsr CORE.CreateOrGetVar
|
||
bcs .99
|
||
|
||
ldx #RT.GET.ID
|
||
jsr CODE.JSRRT
|
||
|
||
ldy ZPADDR
|
||
ldx ZPADDR+1
|
||
jsr CODE.LDYXI
|
||
|
||
ldx #RT.StrSet.ID
|
||
clc
|
||
jmp CODE.JSRRT
|
||
|
||
.9 lda #E.CSYN
|
||
sec
|
||
|
||
.99 rts
|
||
*--------------------------------------
|
||
KW.GOSUB lda #$20 JSR abs
|
||
bra KW.GOTO1
|
||
*--------------------------------------
|
||
KW.GOTO lda #$4C JMP abs
|
||
|
||
KW.GOTO1 jsr CODE.EmitByte
|
||
jsr CORE.GetNextCharNB
|
||
bcs .90
|
||
|
||
jsr CORE.GetLabel
|
||
bcc .1
|
||
|
||
jsr CORE.AddFWRef
|
||
bcs .99
|
||
|
||
.1 lda ZPADDR
|
||
jsr CODE.EmitByte
|
||
lda ZPADDR+1
|
||
clc
|
||
jmp CODE.EmitByte
|
||
|
||
.90 lda #E.CSYN
|
||
|
||
.99 rts
|
||
*--------------------------------------
|
||
KW.HOME ldx #8 CLRSCR
|
||
jsr CODE.LDXI
|
||
|
||
ldx #RT.OUTX.ID
|
||
clc
|
||
jmp CODE.JSRRT
|
||
*--------------------------------------
|
||
* IP exp THEN st1 ELSE st2
|
||
*--------------------------------------
|
||
KW.IF jsr EXP.Eval
|
||
|
||
bcs .99
|
||
|
||
lda EXP.TYPE
|
||
bne .91
|
||
|
||
ldx #0
|
||
|
||
.1 lda CCODE.TESTTRUE,x
|
||
jsr CODE.EmitByte
|
||
inx
|
||
cpx #CCODE.TESTTRUE.LEN
|
||
bne .1
|
||
|
||
ldy pCCS
|
||
|
||
dey
|
||
lda ZPCodeBufPtr+1
|
||
sta (pData),y
|
||
|
||
dey
|
||
lda ZPCodeBufPtr
|
||
sta (pData),y
|
||
|
||
dey
|
||
lda #KWID.IF
|
||
sta (pData),y
|
||
|
||
sty pCCS
|
||
|
||
lda ZPCodeBufPtr
|
||
clc
|
||
adc #2
|
||
sta ZPCodeBufPtr
|
||
bcc .8
|
||
|
||
inc ZPCodeBufPtr+1
|
||
|
||
.8 clc
|
||
rts
|
||
|
||
.90 lda #E.CSYN
|
||
sec
|
||
rts
|
||
|
||
.91 lda #E.TMISMATCH
|
||
sec
|
||
.99 rts
|
||
*--------------------------------------
|
||
KW.ENDIF sec
|
||
.HS 90 BCC
|
||
*--------------------------------------
|
||
KW.ELSE clc
|
||
|
||
ldy pCCS
|
||
lda (pData),y
|
||
eor #KWID.IF
|
||
bne .9
|
||
|
||
iny
|
||
lda (pData),y
|
||
sta ZPPtr1
|
||
|
||
iny
|
||
lda (pData),y
|
||
sta ZPPtr1+1 ZPPtr1 = JMP if FALSE
|
||
|
||
bcs .5 ENDIF
|
||
|
||
lda #$4C JMP abs
|
||
jsr CODE.EmitByte
|
||
|
||
ldy pCCS
|
||
iny
|
||
|
||
lda ZPCodeBufPtr
|
||
sta (pData),y
|
||
iny
|
||
lda ZPCodeBufPtr+1
|
||
sta (pData),y
|
||
|
||
lda ZPCodeBufPtr
|
||
clc
|
||
adc #2
|
||
sta ZPCodeBufPtr
|
||
bcc .1
|
||
|
||
inc ZPCodeBufPtr+1
|
||
|
||
.1 lda ZPCodeBufPtr
|
||
sta (ZPPtr1)
|
||
|
||
lda ZPCodeBufPtr+1
|
||
ldy #1
|
||
sta (ZPPtr1),y
|
||
|
||
clc
|
||
rts
|
||
|
||
.5 lda ZPCodeBufPtr
|
||
sta (ZPPtr1)
|
||
|
||
ldy #1
|
||
lda ZPCodeBufPtr+1
|
||
sta (ZPPtr1),y
|
||
|
||
lda pCCS
|
||
clc
|
||
adc #3
|
||
sta pCCS
|
||
|
||
clc
|
||
rts
|
||
|
||
.9 lda #E.NOIF
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.INFO
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.INPUT stz hIn Defaut to Keyboard
|
||
|
||
jsr CORE.GetNextCharNB
|
||
bcs .9
|
||
|
||
cmp #'"'
|
||
bne .5
|
||
|
||
jsr EXP.CreateStrConst
|
||
bcs .99
|
||
|
||
ldx #RT.StrOut.ID
|
||
jsr CODE.JSRRT
|
||
|
||
.5 jsr CORE.CreateOrGetVar
|
||
bcs .99
|
||
|
||
ldx #RT.INPUT.ID
|
||
jsr CODE.JSRRT
|
||
|
||
ldy ZPADDR
|
||
ldx ZPADDR+1
|
||
jsr CODE.LDYXI
|
||
|
||
ldx #RT.StrSet.ID
|
||
clc
|
||
jmp CODE.JSRRT
|
||
|
||
.9 lda #E.CSYN
|
||
sec
|
||
|
||
.99 rts
|
||
*--------------------------------------
|
||
KW.KILL
|
||
KW.LINK
|
||
KW.LOG
|
||
KW.MARK
|
||
KW.MODEM
|
||
KW.MOVE
|
||
KW.MSG
|
||
KW.NEXT
|
||
KW.NIBBLE
|
||
KW.NOT
|
||
KW.ON
|
||
KW.NOCAR >DEBUG
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.OPEN
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.POKE
|
||
KW.POP
|
||
KW.POSITION
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.PRINT stz ZPPtr2 put ending CR
|
||
stz hOut Default to screen
|
||
|
||
.10 jsr CORE.GetNextCharNB
|
||
bcs .8
|
||
|
||
.11 cmp #'\'
|
||
bne .13
|
||
|
||
.12 ldx #RT.OUTCRLF.ID
|
||
jsr CODE.JSRRT
|
||
bra .10
|
||
|
||
.13 jsr CORE.IsEndInst
|
||
bcs .8
|
||
|
||
jsr CORE.IsKW
|
||
bcc .8
|
||
|
||
stz ZPPtr2 put ending CR
|
||
|
||
jsr EXP.Eval
|
||
bcs .99
|
||
|
||
lda EXP.TYPE
|
||
beq .6
|
||
|
||
ldx #RT.StrOut.ID
|
||
bra .7
|
||
|
||
.6 ldx #RT.IntOut.ID
|
||
.7 jsr CODE.JSRRT
|
||
*--------------------------------------
|
||
jsr CORE.GetCharNB
|
||
bcs .8
|
||
|
||
.70 cmp #'\'
|
||
beq .12
|
||
|
||
jsr CORE.IsEndInst
|
||
bcs .8
|
||
|
||
jsr CORE.IsKW
|
||
bcc .8
|
||
|
||
lda (ZPInputBufPtr)
|
||
cmp #','
|
||
bne .71
|
||
|
||
tax
|
||
jsr CODE.PutChar
|
||
|
||
bra .10 go skip
|
||
|
||
.71 cmp #';'
|
||
bne .90
|
||
|
||
ror ZPPtr2 suppress ending CR
|
||
|
||
jsr CORE.GetNextCharNB skip ;
|
||
bcc .11
|
||
|
||
.8 bit ZPPtr2
|
||
bmi .80
|
||
|
||
ldx #RT.OUTCRLF.ID
|
||
jsr CODE.JSRRT
|
||
|
||
.80 clc
|
||
rts
|
||
|
||
.90 lda #E.CSYN
|
||
sec
|
||
.99 rts
|
||
*--------------------------------------
|
||
KW.PUBLIC
|
||
KW.PUSH
|
||
KW.RAM
|
||
KW.RAM2
|
||
KW.READ
|
||
KW.READY
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.RETURN
|
||
* TODO : check context
|
||
|
||
KW.END lda #$60 RTS
|
||
|
||
clc
|
||
jmp CODE.EmitByte
|
||
*--------------------------------------
|
||
KW.REWIND
|
||
KW.RIPCO
|
||
KW.SET
|
||
KW.SETINT
|
||
KW.TEXT
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.THEN ldy pCCS
|
||
lda (pData),y
|
||
eor #KWID.IF
|
||
bne .9
|
||
|
||
clc
|
||
rts
|
||
|
||
.9 lda #E.NOIF
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
KW.TONE
|
||
KW.UPDATE
|
||
KW.USE
|
||
KW.WHENd
|
||
KW.WRITE
|
||
lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/bin/acos.s.kw
|
||
LOAD usr/src/bin/acos.s
|
||
ASM
|