A2osX/BIN/ASM.S.EXP.txt

294 lines
5.3 KiB
Plaintext
Raw Normal View History

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
2015-10-09 15:53:30 +00:00
*---------------------------------------
* U-Operators :
* B-Operators :
* Num Format : 0-9 -> decimal
2015-10-28 16:55:12 +00:00
* $ = Hex
2015-10-09 15:53:30 +00:00
* % = binary
* & = octal
2015-10-28 16:55:12 +00:00
* * = PC
2015-10-09 15:53:30 +00:00
*---------------------------------------
2015-11-20 16:31:14 +00:00
EXP.Eval stz EXP.Operator
2015-11-27 16:26:11 +00:00
2015-12-17 16:57:35 +00:00
stz EXP.Modifier
jsr SRC.GetChar
bcs EXP.Eval.Missing
2015-12-17 16:57:35 +00:00
jsr SRC.IsMODReserved
bcs EXP.Eval.Next1
stx EXP.Modifier
bra EXP.Eval.Next
EXP.Eval.Missing lda #ERR.MISSING.EXP
2015-11-27 16:26:11 +00:00
sec
2015-12-17 16:57:35 +00:00
rts
2015-11-27 16:26:11 +00:00
2018-01-11 16:34:09 +00:00
EXP.Eval.Next jsr SRC.GetNextCharUC
2018-01-23 07:31:16 +00:00
bcs EXP.Eval.Missing
2015-12-17 16:57:35 +00:00
EXP.Eval.Next1 cmp #'.' Local Label?
2015-11-27 16:26:11 +00:00
bne .12
jsr EXP.GetLocal
bcs .14
jmp EXP.EvalOperator
2015-12-17 16:57:35 +00:00
.14 rts
2015-11-27 16:26:11 +00:00
.12 cmp #'*'
2015-10-28 16:55:12 +00:00
bne .10
2015-10-09 15:53:30 +00:00
2015-11-20 16:31:14 +00:00
ldy #ASM.PC+3
ldx #3
2015-10-09 15:53:30 +00:00
2015-10-28 16:55:12 +00:00
.11 lda (pData),y
sta SRC.ACC,x
2015-11-20 16:31:14 +00:00
dey
dex
bpl .11
2015-12-17 16:57:35 +00:00
jmp EXP.EvalOperator
2015-10-09 15:53:30 +00:00
2015-10-28 16:55:12 +00:00
.10 jsr SRC.IsDigit10 Decimal constant ?
bcs .1
2015-10-09 15:53:30 +00:00
2015-10-28 16:55:12 +00:00
jsr SRC.GetDecimal
2015-11-27 16:26:11 +00:00
bcs EXP.EvalExitSYN
bra EXP.EvalOperator
2015-10-09 15:53:30 +00:00
2015-10-28 16:55:12 +00:00
.1 cmp #'$' Hex?
bne .2
2018-01-11 16:34:09 +00:00
2015-10-28 16:55:12 +00:00
jsr SRC.GetHex
2015-11-27 16:26:11 +00:00
bcs EXP.EvalExitSYN
bra EXP.EvalOperator
2015-10-09 15:53:30 +00:00
2015-10-28 16:55:12 +00:00
.2 cmp #'%' binary?
bne .3
jsr SRC.GetBinary
2015-10-09 15:53:30 +00:00
2015-11-27 16:26:11 +00:00
bcs EXP.EvalExitSYN
bra EXP.EvalOperator
2015-10-09 15:53:30 +00:00
2015-10-30 16:34:59 +00:00
.3 cmp #'&' octal?
bne .4
jsr SRC.GetOctal
2015-11-27 16:26:11 +00:00
bcs EXP.EvalExitSYN
bra EXP.EvalOperator
.4 cmp #'''
bne .43
2018-01-11 16:34:09 +00:00
jsr SRC.GetNextChar
2018-01-23 07:31:16 +00:00
bcs EXP.EvalExitSYN
2015-11-27 16:26:11 +00:00
jsr EXP.SetAccA
2018-01-11 16:34:09 +00:00
jsr SRC.GetNextChar
2018-01-23 07:31:16 +00:00
bcs EXP.EvalOperator
2015-11-27 16:26:11 +00:00
cmp #'''
bne EXP.EvalExitSYN
bra EXP.EvalOperator
.43 cmp '"'
bne .42
2018-01-11 16:34:09 +00:00
jsr SRC.GetNextChar
2018-01-23 07:31:16 +00:00
bcs EXP.EvalExitSYN
2015-11-27 16:26:11 +00:00
ora #$80
jsr EXP.SetAccA
2018-01-11 16:34:09 +00:00
jsr SRC.GetNextChar
2018-01-23 07:31:16 +00:00
bcs EXP.EvalOperator
2015-11-27 16:26:11 +00:00
cmp #'"'
bne EXP.EvalExitSYN
bra EXP.EvalOperator
.42 jsr SRC.IsLetter Symbol ?
bcs EXP.EvalExitSYN
2018-01-11 16:34:09 +00:00
2015-11-27 16:26:11 +00:00
jsr EXP.GetSymbol
bcs EXP.EvalExitRTS
bra EXP.EvalOperator
2015-10-09 15:53:30 +00:00
2018-01-11 16:34:09 +00:00
EXP.EvalExitOK clc
2015-11-27 16:26:11 +00:00
EXP.EvalExitRTS rts
2015-11-27 16:26:11 +00:00
EXP.EvalExitSYN lda #ERR.SYNTAX.ERROR
sec
rts
EXP.EvalExitUND lda #ERR.UNDEF.SYMBOL
sec
rts
2015-11-27 16:26:11 +00:00
EXP.EvalOperator lda EXP.Operator
beq .7
2015-11-20 16:31:14 +00:00
2015-11-27 16:26:11 +00:00
jsr EXP.Compute
bcs EXP.EvalExitRTS
.7 jsr SRC.GetChar
2018-01-23 07:31:16 +00:00
bcs EXP.EvalExitOK
2015-12-04 16:33:33 +00:00
2015-11-27 16:26:11 +00:00
cmp #' '
2015-12-17 16:57:35 +00:00
beq EXP.EvalExitOK
2015-12-04 16:33:33 +00:00
2015-11-27 16:26:11 +00:00
jsr SRC.IsAMReserved
bcc EXP.EvalExitOK
2015-12-04 16:33:33 +00:00
2015-11-27 16:26:11 +00:00
jsr SRC.IsEXPReserved
bcs EXP.EvalExitSYN
2015-12-04 16:33:33 +00:00
stx EXP.Operator
2015-11-27 16:26:11 +00:00
ldx #3
.8 lda SRC.ACC,x
sta SRC.ARG,x
2015-11-20 16:31:14 +00:00
dex
2015-11-27 16:26:11 +00:00
bpl .8
2015-10-09 15:53:30 +00:00
2015-12-04 16:33:33 +00:00
jmp EXP.Eval.Next
2015-11-27 16:26:11 +00:00
*---------------------------------------
EXP.GetLocal jsr SRC.GetDecimal
bcs EXP.EvalExitSYN
lda SRC.ACC+1
ora SRC.ACC+2
ora SRC.ACC+3
bne EXP.EvalExitSYN Max .255
lda SRC.ACC
beq EXP.EvalExitSYN .0 is not allowed
2018-01-22 07:34:59 +00:00
jsr SYM.GetLocal
2015-11-27 16:26:11 +00:00
bcs EXP.EvalExitUND
2015-11-20 16:31:14 +00:00
rts
2015-10-09 15:53:30 +00:00
*---------------------------------------
2015-11-27 16:26:11 +00:00
EXP.SetAccA sta SRC.ACC
2015-10-09 15:53:30 +00:00
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
2015-11-27 16:26:11 +00:00
rts
2015-10-09 15:53:30 +00:00
*---------------------------------------
EXP.GetSymbol >PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
2018-01-22 07:34:59 +00:00
>PUSHEA.G SYM.Global
2015-12-04 16:33:33 +00:00
>SYSCALL SListLookup
bcs .2
2015-11-27 16:26:11 +00:00
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
2015-11-27 16:26:11 +00:00
.1 clc
2015-11-27 16:26:11 +00:00
rts
.2 ldy #ASM.PASS
lda (pData),y pass#2?
bne .99 yes, undefined symbol
>PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
2018-01-22 07:34:59 +00:00
>PUSHEA.G SYM.Global
lda #6
2018-01-22 07:34:59 +00:00
>STA.G SYM.Global+SYM.LEN
2015-10-28 16:55:12 +00:00
lda #0
2018-01-22 07:34:59 +00:00
>STA.G SYM.Global+SYM.F
>SYSCALL SListAdd
bcs .9
adc ZPLinePtr
sta ZPLinePtr
bcc .3
inc ZPLinePtr+1
.3 clc
rts
.99 lda #ERR.UNDEF.SYMBOL
sec
.9 rts
2015-11-27 16:26:11 +00:00
*---------------------------------------
2015-12-04 16:33:33 +00:00
EXP.Compute dec
asl
tax
2015-12-17 16:57:35 +00:00
* ldy #ASM.PASS
* lda (pData),y pass#2?
* beq .8
2015-12-04 16:33:33 +00:00
jmp (J.EXP.OP,x)
2015-12-17 16:57:35 +00:00
.8 clc
rts
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.EOR
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.ORA
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.AND
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.LOW
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.EQU
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.GRT
2015-12-04 16:33:33 +00:00
clc
rts
*---------------------------------------
2018-01-12 16:05:04 +00:00
EXP.OP.ADD ldx #0 ARG-ACC->ACC
2015-12-04 16:33:33 +00:00
ldy #4
clc
.1 lda SRC.ARG,x
adc SRC.ACC,x
sta SRC.ACC,x
inx
dey
bne .1
bcc .8
lda #ERR.VAL.TOO.BIG
.8 rts
*---------------------------------------
2018-01-12 16:05:04 +00:00
EXP.OP.SUB ldx #0 ARG-ACC->ACC
2015-12-04 16:33:33 +00:00
ldy #4
sec
.1 lda SRC.ARG,x
sbc SRC.ACC,x
sta SRC.ACC,x
inx
dey
bne .1
bcs .8
lda #ERR.VAL.TOO.BIG
sec
rts
.8 clc
rts
*---------------------------------------
EXP.OP.MUL
2015-12-04 16:33:33 +00:00
*---------------------------------------
EXP.OP.DIV
2015-11-27 16:26:11 +00:00
clc
rts
*---------------------------------------
2015-10-09 15:53:30 +00:00
MAN
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.EXP
LOAD /A2OSX.BUILD/BIN/DEV/ASM.S
2015-10-28 16:55:12 +00:00
ASM