PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
				.LIST OFF
*--------------------------------------
PrintPStrAX		>STAX TmpPtr1
				lda (TmpPtr1)
				tax
				beq .9
				ldy #1
				
.1				lda (TmpPtr1),y
				ora #$80
				jsr $FDED				COUT
				iny
				dex
				bne .1
				
.9				rts				
*--------------------------------------
PrintCStrAX		>STAX TmpPtr1
				pla 
				sta X.Save.RTS
				pla 
				sta X.Save.RTS+1
				
				ldy #0
				
.1				stz X.b0Flag
				stz X.DigitCount
				
				lda (TmpPtr1),y
				beq .9
				cmp #'%'
				bne .4
				
.11				iny
				lda (TmpPtr1),y
				beq .9
				cmp #'0'
				bne .22
				ror	X.b0Flag		beq -> CS
				bra .11
				
.22				bcc .21
				cmp #'9'+1
				bcs .21
				and #$0f
				sta X.DigitCount
				bra .11
				
.21				cmp #'d'
				bne .2
				pla
				jsr PrintADec
				bra .8
				
.2				cmp #'D'
				bne .3
				pla
				plx
				jsr PrintAXDec
				bra .8
				
.3				cmp #'h'
				bne .4
				pla
				jsr $FDDA				PRBYTE
				
.4				cmp #'\'
				bne .7
				iny
				lda (TmpPtr1),y
				beq .9
				cmp #'n'
				bne .9
				lda #$0D
				
.7				ora #$80
				jsr $FDED				COUT
.8				iny
				bne .1

.9				lda X.Save.RTS+1
				pha 
				lda X.Save.RTS
				pha
				rts				
*--------------------------------------
PrintADec		ldx #0
PrintAXDec		>STAX X.HexBuffer
				stz X.BCDBuffer
				stz X.BCDBuffer+1
				stz X.BCDBuffer+2
				
				phy
				
				ldx #16			let's roll 16 bits
				sed
.2				asl X.HexBuffer
				rol	X.HexBuffer+1
				php				cpy will disturb carry while BCD adc
				ldy #0
.3				plp
				lda X.BCDBuffer,y
				adc X.BCDBuffer,y
				sta X.BCDBuffer,y
				php
				iny
				cpy #3			Last byte of X.BCDBufferBUF?
				bne .3
				plp
				dex
				bne .2
				
				cld
				
				ldx #0
				ldy #5
				
.4				lda X.BCDBuffer,x
				pha
				and #$0F
				ora #$B0
				sta X.DigitBuffer,y
				dey

				pla
				lsr
				lsr
				lsr
				lsr
				ora #$B0
				sta X.DigitBuffer,y
				inx
				dey
				bpl .4
				
				lda X.DigitCount
				beq .5
				lda #6
				sec
				sbc X.DigitCount
.5				tay
.6				lda X.DigitBuffer,y
				cmp #"0"
				beq .7

				sec
				ror X.b0Flag
				bra .8
				
.7				cpy #5
				beq .8
				lda #" "
				bit X.b0Flag
				bpl .81
				lda #"0"
.8				jsr $FDED				COUT
.81				iny
				cpy #6
				bne .6
				
.9				ply
				rts
*--------------------------------------
X.Save.RTS		.BS 2
X.HexBuffer		.BS 2
X.BCDBuffer		.BS 3
X.b0Flag		.BS 1
X.DigitCount	.BS 1
X.DigitBuffer	.BS 6
*--------------------------------------
MAN
SAVE X.PRINTF.S
