?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.  ifndef included_div32_16
  2.  define included_div32_16
  3.  
  4. var_x=xOP2   ;output
  5. var_b=xOP2   ; 4 bytes, result gets copied to bottom anyways
  6. var_n=xOP3
  7. div32_16:
  8. ;HLDE/BC, BC>HL
  9. ;770+16{0,10}+{0,20+{0,22+{0,21}}}
  10. ;min: 770
  11. ;max: 993
  12. ;avg: 868.125
  13.  
  14.   push bc
  15.   ld a,b
  16.   srl a
  17.   cpl
  18.   ld b,a
  19.   ld a,c
  20.   rra
  21.   cpl
  22.   ld c,a
  23.   inc bc
  24.   ld a,d
  25.   add hl,bc : jr c,$+4 : sbc hl,bc
  26.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  27.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  28.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  29.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  30.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  31.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  32.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  33.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  34.   ld d,a
  35.   ld a,e
  36.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  37.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  38.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  39.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  40.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  41.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  42.   rla : adc hl,hl : add hl,bc : jr c,$+4 : sbc hl,bc
  43.   rla : adc hl,hl
  44.   ld e,a
  45.   pop bc
  46.   bit 0,c
  47.   ret z
  48. ;HL is the remainder
  49. ;r-Q*E = HL-DE
  50.   sbc hl,de
  51.   ret nc
  52.   add hl,bc
  53.   dec de
  54.   ret c
  55.   add hl,bc
  56.   dec de
  57.   ret
  58.  endif
  59.