Z80 Routines:Other:DispHL
From WikiTI
Simple and small routines that print the value of z80 register pair hl.
Decimal Unsigned Versions
- First a simple and small to show. Mostly for debugging or simple programs.
;Number in hl to decimal ASCII ;Thanks to z80 Bits ;inputs: hl = number to ASCII ;example: hl=300 outputs '00300' ;destroys: af, bc, hl, de used DispHL: ld bc,-10000 call Num1 ld bc,-1000 call Num1 ld bc,-100 call Num1 ld c,-10 call Num1 ld c,-1 Num1: ld a,'0'-1 Num2: inc a add hl,bc jr c,Num2 sbc hl,bc call PUTCHAR ret
;Bonus! DispA routine ;adaptable for a DispA routine or any other 8-bit register DispA: ld h,0 ld l,a jp DispHL
- DispHL especially adapted to games (nifty to RPG)
;DispHL for games ;input: hl=num, d=row,e=col, c=number of algarisms to skip ;number of numbers' characters to display: 5 ; example: 65000 ;output: hl displayed, with algarisms skiped and spaces for initial zeros DispHL_games: inc c ld b,1 ;skip 0 flag ld (CurRow),de ;Number in hl to decimal ASCII ;Thanks to z80 Bits ;inputs: hl = number to ASCII ;example: hl=300 outputs ' 300' ;destroys: af, hl, de used ld de,-10000 call Num1 ld de,-1000 call Num1 ld de,-100 call Num1 ld e,-10 call Num1 ld e,-1 Num1: ld a,'0'-1 Num2: inc a add hl,de jr c,Num2 sbc hl,de dec c ;c is skipping jr nz,skipnum inc c djnz notcharnumzero cp '0' jr nz,notcharnumzero leadingzero: inc b skipnum: ld a,' ' notcharnumzero: push bc call PUTCHAR ;bcall(_PutC) works, not sure if it preserves bc pop bc ret
Hexadecimal Version
;Display a 16- or 8-bit number in hex. DispHLhex: ; Input: HL ld c,h call OutHex8 ld c,l OutHex8: ; Input: C ld a,c rra rra rra rra call Conv ld a,c Conv: and $0F add a,$90 daa adc a,$40 daa call PUTCHAR ;replace by bcall(_PutC) or similar ret
Decimal Signed Version
;DispHL signed ; DispHLdecsigned: ret