; use FP math pack to print 8- or 16-bit integers in decimal. ;;; Subroutine: printdecb ;;; Print byte in accumulator, in decimal ;;; Trashes all regs/flags printdecb: ldx #0 ; fall thru to printdecw ;;; Subroutine: printdecw ;;; Print word in A/X, in decimal (X is high byte) ;;; Trashes all regs/flags ; one annoyance here: we need (zp),y addressing because FASC actually ; updates INBUFF to point to the first non-zero ASCII digit (this is ; how we skip leading zeroes), but we don't have a "printchry" that ; preserves Y, so we end up using X for a counter and copying it to Y ; every loop iteration... ; also, why did I pick A/X instead of X/Y like FLD(0|1)R uses? in case ; someone ever wants to call this from C code in cc65... printdecw: sta FR0 stx FR0+1 jsr IFP jsr FASC ldx #0 pwloop: txa tay lda (INBUFF),y php and #$7f jsr printchrx inx plp bpl pwloop rts