A2osX/BIN/ASM.S.OUT.txt

222 lines
3.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
*---------------------------------------
OUT.Init lda #PAGE.LEN
>STA.G OUT.LineCnt
rts
*---------------------------------------
OUT.Reset ldx #4
ldy #ASM.PC
.1 lda (pData),y
pha
iny
dex
bne .1
ldx #4
ldy #OUT.PC+3
.2 pla
sta (pData),y
dey
dex
bne .2
>STZ.G OUT.Buf
>STA.G OUT.bEquate
rts
*---------------------------------------
OUT.PrintLineOn
* clc
* rts
>LDA.G ASM.LI.ON
bpl .9
>LDA.G ASM.MA.ON MACRO Mode ?
bpl .1
>LDA.G ASM.LI.MON
bpl .9
bmi .8
.1 >LDA.G ASM.DO.StackPtr within a DO/ELSE ?
beq .2
clc
adc #ASM.DO.Stack-1
tay
lda (pData),y TRUE ?
bne .8 yes, print always
>LDA.G ASM.LI.CON FALSE, check CON flag...
bpl .9
bmi .8
.2
.8 clc
rts
.9 sec
rts
*---------------------------------------
OUT.PrintLineErr
>STA.G DIR.Byte Save Error code
jsr OUT.PrintLine.1
bcs .9
.1 >PUSHB.G DIR.Byte
>PUSHBI 1
>LDYA L.MSG.ERROR
>SYSCALL printf
ldx ZPLinePtr
cpx ZPLineBuf
beq .4
.3 phx
lda #'-'
>SYSCALL PutChar
plx
bcs .9
dex
cpx ZPLineBuf
bne .3
.4 lda #'^'
phy
>SYSCALL PutChar
ply
bcs .9
.5 jmp OUT.PrintCR
.9 rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcs OUT.Print.RTS
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.Print.RTS
>LDA.G SRC.COUNT
.1 dec
bmi .2
pha
>LDA.G '>'
>SYSCALL putchar
pla
bra .1
.2 >PUSHW.G SRC.LINENUM
>PUSHBI 2
>LDYA L.MSG.LINENUM
>SYSCALL printf
>LDA.G MAC.Depth
.3 dec
bmi .4
pha
>LDA.G '>'
>SYSCALL putchar
pla
bra .3
.4 >LDYA ZPLineBuf
>SYSCALL puts
jmp OUT.PrintCR1
*---------------------------------------
OUT.Print >SYSCALL printf
bcs OUT.Print.RTS
jmp OUT.PrintCR
OUT.Print.RTS rts
*---------------------------------------
OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineAcc
>LDA.G OUT.Buf
beq .2
tax
clc
adc #OUT.Buf
tay
.1 >PUSHB (pData),y
dey
dex
bne .1
.2 ldy #OUT.PC+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
>LDA.G OUT.Buf
pha
inc
inc
>PUSHA Byte Count+2 for PC
pla
asl
tax
ldy L.MSG.OUT0,x
lda L.MSG.OUT0+1,x
>SYSCALL printf
rts
*---------------------------------------
OUT.PrintLineAcc
lda SRC.ACC.SIZE
beq .2
tax
ldy #0
.1 >PUSHB SRC.ACC,y
iny
dex
bne .1
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
asl
tax
cpx #9
bcs *
ldy L.MSG.EQU0,x
lda L.MSG.EQU0+1,x
>SYSCALL printf
rts
*---------------------------------------
OUT.EmitByte phy
phx
pha
>LDA.G OUT.Buf
cmp #3
bne .2
jsr OUT.PrintLineOn
bcs .1
>LDA.G ASM.LI.XON
bpl .1
jsr OUT.PrintLineOutBuf
jsr OUT.PrintCR
.1 jsr OUT.Reset
lda #0
ldy #OUT.Buf
.2 inc
sta (pData),y
clc
adc #OUT.Buf
tay
pla
sta (pData),y
.8 >INC.G ASM.PC
bne .80
>INC.G ASM.PC+1
bne .80
>INC.G ASM.PC+2
bne .80
>INC.G ASM.PC+3
.80 plx
ply
clc
rts
*---------------------------------------
OUT.PrintCR >PUSHBI 0
>LDYA L.MSG.CRLF
>SYSCALL printf
>DEBUG
OUT.PrintCR1 >DEC.G OUT.LineCnt
bne .8
lda #PAGE.LEN
sta (pData),y
* lda #$80
* >STA.G bPause
.8 rts
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.S.OUT
LOAD USR/SRC/BIN/ASM.S
ASM