mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-30 08:51:06 +00:00
268 lines
4.0 KiB
Plaintext
268 lines
4.0 KiB
Plaintext
NEW
|
||
PREFIX
|
||
AUTO 4,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
|