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