A2osX/BIN/ASM.S.OUT.txt
burniouf a5ba00f1a6 SCMASM.SYSTEM & ASM:C-string support (new directives .CS. CZ .PS, updated Notepad++ XML)
CC:Added typedef, struct/union need a KERNEL mod
VEDRIVE:bugfixes, added LanCEGS code (oops ;-)
2022-09-11 21:11:32 +02:00

340 lines
4.9 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
clc
rts
*---------------------------------------
OUT.EmitByte phy
phx
tax
>LDA.G ASM.PASS
beq .1
>LDA.G ASM.DU.ON
bmi .1
>PUSHB.G DST.hREFNUM
txa
>PUSHA
phx
>SYSCALL FPutC
plx
bcs .9
.1 >INC.G ASM.PC
bne .2
>INC.G ASM.PC+1
bne .2
>INC.G ASM.PC+2
bne .2
>INC.G ASM.PC+3
.2 >LDA.G ASM.PH.ON
beq .3
>INC.G ASM.PC.PH
bne .3
>INC.G ASM.PC.PH+1
bne .3
>INC.G ASM.PC.PH+2
bne .3
>INC.G ASM.PC.PH+3
.3 >LDA.G OUT.Buf
cmp #3
bne .4
phx
jsr OUT.PrintBuf
plx
bcs .9
ldy #OUT.Buf
lda #0
.4 inc
sta (pData),y
clc
adc #OUT.Buf
tay
txa
sta (pData),y
.8 clc
.9 plx
ply
rts
*---------------------------------------
OUT.PrintBuf jsr OUT.PrintLineOn
bcs OUT.PrintBufReset
>LDA.G ASM.LI.XON
bpl OUT.PrintBufReset
jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
jsr OUT.PrintCR
bcs OUT.PrintBuf.RTS
OUT.PrintBufReset
>STZ.G OUT.Buf
ldx #4
ldy #ASM.PC
.2 lda (pData),y
pha
iny
dex
bne .2
ldx #4
ldy #OUT.PC+3
.3 pla
sta (pData),y
dey
dex
bne .3
.8 clc
OUT.PrintBuf.RTS
rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcc OUT.PrintLine.1
clc
rts
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
>LDA.G SRC.Depth
.1 dec
beq .2
pha
lda #'>'
>SYSCALL PutChar
pla
bra .1
.2 >PUSHW L.MSG.LINENUM
>PUSHW.G SRC.LINENUM
>PUSHBI 2
>SYSCALL PrintF
>LDA.G MAC.CtxStackPtr
.3 dec
bmi .4
pha
lda #'>'
>SYSCALL PutChar
pla
bra .3
.4 >LDYA ZPLineBuf
>SYSCALL PutS
jmp OUT.PrintCR1
*---------------------------------------
OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineEQU
>LDA.G OUT.Buf
pha
asl
tax
>PUSHB L.MSG.OUT0+1,x
>PUSHB L.MSG.OUT0,x
ldy #OUT.PC+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
pla
beq .2
tax
ldy #OUT.Buf
pha
.1 iny
>PUSHB (pData),y
dex
bne .1
pla
.2 inc
inc
>PUSHA Byte Count+2 for PC
>SYSCALL PrintF
rts
*---------------------------------------
OUT.PrintLineEQU
lda SRC.ACC.SIZE
asl
tax
>PUSHB L.MSG.EQU0+1,x
>PUSHB L.MSG.EQU0,x
lda SRC.ACC.SIZE
beq .2
tay
.1 dey
>PUSHB SRC.ACC,y
tya
bne .1
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
>SYSCALL PrintF
rts
*---------------------------------------
OUT.PrintLineOn
>LDA.G bListAll
bmi .8
>LDA.G ASM.LI.ON
bpl .9
>LDA.G ASM.MA.ON MACRO Mode ?
bmi .1
>LDA.G MAC.CtxID within MACRO ?
beq .11
.1 >LDA.G ASM.LI.MON
bpl .9
clc
rts
.11 >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
clc
rts
.2
.8 clc
rts
.9 sec
OUT.PrintLineOnRTS
rts
*---------------------------------------
OUT.PrintLineErr
sta DIR.Byte Save Error code
jsr OUT.PrintLine.1
bcs OUT.PrintLineOnRTS
>PUSHW L.MSG.ERROR
>PUSHB DIR.Byte
>PUSHBI 1
>SYSCALL PrintF
lda ZPLinePtr
sec
sbc ZPLineBuf
jsr OUT.PrintLineErrDashA
>LDA.G SRC.Depth
dec
jsr OUT.PrintLineErrDashA
>LDA.G MAC.CtxStackPtr
jsr OUT.PrintLineErrDashA
lda #'^'
>SYSCALL PutChar
bcs OUT.PrintLineOnRTS
jsr OUT.PrintCR
>PUSHW L.MSG.PASS
>LDA.G ASM.PASS
inc
>PUSHA
>PUSHBI 1
jsr OUT.Print
.DO ASMDBG=1
>PUSHW L.MSG.EQU0+2
>PUSHB (ZPSymbolBuf) flags
>PUSHBI 1
>SYSCALL printf
>LDYA L.MSG.CRLF
>STYA ZPTmpBuf
jsr SYM.Dump.GLP
.FIN
jmp OUT.PrintCR
*---------------------------------------
OUT.PrintLineErrDashA
tax
beq .8
.1 phx
lda #'-'
>SYSCALL PutChar
plx
bcs .9
dex
bne .1
.8 clc
.9 rts
*---------------------------------------
OUT.Print >SYSCALL PrintF
bcs OUT.Print.RTS
*---------------------------------------
OUT.PrintCR >PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
OUT.PrintCR1 >DEC.G OUT.LineCnt
bne .8
lda #PAGE.LEN
sta (pData),y
.8
* clc
OUT.Print.RTS rts
*---------------------------------------
MAN
SAVE usr/src/bin/asm.s.out
LOAD usr/src/bin/asm.s
ASM