Mirror of CollapseOS
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

45 líneas
705B

  1. ; Borrowed from Tasty Basic by Dimitri Theulings (GPL).
  2. ; Divide HL by DE, placing the result in BC and the remainder in HL.
  3. divide:
  4. push hl ; --> lvl 1
  5. ld l, h ; divide h by de
  6. ld h, 0
  7. call .dv1
  8. ld b, c ; save result in b
  9. ld a, l ; (remainder + l) / de
  10. pop hl ; <-- lvl 1
  11. ld h, a
  12. .dv1:
  13. ld c, 0xff ; result in c
  14. .dv2:
  15. inc c ; dumb routine
  16. call .subde ; divide using subtract and count
  17. jr nc, .dv2
  18. add hl, de
  19. ret
  20. .subde:
  21. ld a, l
  22. sub e ; subtract de from hl
  23. ld l, a
  24. ld a, h
  25. sbc a, d
  26. ld h, a
  27. ret
  28. ; DE * BC -> DE (high) and HL (low)
  29. multDEBC:
  30. ld hl, 0
  31. ld a, 0x10
  32. .loop:
  33. add hl, hl
  34. rl e
  35. rl d
  36. jr nc, .noinc
  37. add hl, bc
  38. jr nc, .noinc
  39. inc de
  40. .noinc:
  41. dec a
  42. jr nz, .loop
  43. ret