; output the number in hl as an ascii decimal ; uses direct I/O calls, ; no registers affected. ; outdec: push hl push de push bc push af xor a ld (ltst),a ; leading zero test ld de,10000 ; start with 10000 call outnum ld de,1000 call outnum ld de,100 call outnum ld de,10 call outnum ld a,'0' add a,l ; last number ld e,a call outlst ; output it pop af pop bc pop de pop hl ret outnum: or a ; clear carry ld a,'0'-1 ; ascii zero-1 outlp: inc a sbc hl,de jp nc,outlp add hl,de ; restore hl to proper count ld e,a cp '0' ; possible leading zero? jp nz,outnm2 ld a,(ltst) or a ret z ; leading, don't print it outnm2: ld a,0ffh ld (ltst),a ; set not leading flag outlst: push hl ; enter here to output last number push de ld c,06 call bdos pop de ld a,(lstsw) or a call nz,lstit pop hl ret ltst: db 00