;------------------------------------------------------------------------------- ;@doc:module ; ; === Utility === ; ; Contains some general-purpose utility routines. ; ;@doc:end ;------------------------------------------------------------------------------- .module Utility ;------------------------------------------------------------------------------- ;@doc:routine ; ; === Utilily.DecodeBCD === ; ; Converts a value stored as packed BCD to binary. ; ; INPUTS: ; REGISTERS ; * A - BCD value to convert. ; ; OUTPUTS: ; REGISTERS ; * A - Binary equivalent of the BCD value. ; ; DESTROYED: ; REGISTERS ; * F ; ;@doc:end ;------------------------------------------------------------------------------- DecodeBCD push bc push af srl a srl a srl a srl a ld b,a or a jr z,+ xor a - add a,10 djnz - + ld b,a pop af and $0F add a,b pop bc ret ;------------------------------------------------------------------------------- ;@doc:routine ; ; === Utilily.EncodeBCD === ; ; Converts a value stored as binary to packed BCD. ; ; INPUTS: ; REGISTERS ; * A - binary value to convert. ; ; OUTPUTS: ; REGISTERS ; * A - Packed BCD equivalent of the binary value. ; ; DESTROYED: ; REGISTERS ; * F ; ;@doc:end ;------------------------------------------------------------------------------- EncodeBCD push bc ld b,0 - cp 10 jp m,+ sub 10 inc b jr - + sla b sla b sla b sla b add a,b pop bc ret .endmodule