You are saving HL to hl_var, and A to a_var. Those are irrelevant to the ROM calls. Essentially, your code is doing this: ld hl,120 ld a,2 bcall _divhlbya bcall _disphl I don't know where you get 316 from, but you should be getting 60. > yea.. i guess... but this always returns 316... > ld hl,120 > ld (hl_var),hl > ld a,2 > ld (a_var),a > bcall(_divhlbya) > bcall(_disphl)