A2osX/BIN/ACOS.S.KW.txt

396 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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