;  function: 16 bits multiply routine; N.O.P.; [EMAIL PROTECTED]
  ;entry name: Mul16Bits
  ;        in: DE, BC
  ;       out: HL=DE*BC
  ;   changes: A=0, HL, DE=0, flags
  ;     speed: 1089 clocks (3287 calculations/sec)

  Mul16Bits    ld    a,16
  Mul16Bits_1  sla   l
               rl    h
               sla   e
               rl    d
               jp    nc,Mul16Bits_2
               add   hl,bc
  Mul16Bits_2  dec a
               jp nz,Mul16Bits_1
               ret


  ;  function: 16 bits divide routine; N.O.P.; [EMAIL PROTECTED]
  ;entry name: Div16Bits
  ;        in: DE, BC
  ;       out: BC=DE/BC  HL=rest   (BC=0; HL=DE when division by zero)
  ;   changes: A=0, HL, BC, DE=0, flags
  ;     speed: 1783-2087 clocks (min. 1715 calculations/sec)

  Div16Bits    ld    a,16
               ld    hl,0
               ld    (Div16Bits_4+1),sp
               ld    (Div16Bits_1+1),bc
  Div16Bits_1  ld    sp,0
  Div16Bits_2  sla   e
               rl    d
               rl    l
               rl    h
               or    a
               sbc   hl,sp
               jp    c,Div16Bits_3
               sbc   hl,sp
               ccf
 Div16Bits_3   ccf
               rl    c
               rl    b
               add   hl,sp
               dec   a
               jp    nz,Div16Bits_2
 Div16Bits_4   ld    sp,0
               ret

greetings, stephan smetsers
[EMAIL PROTECTED]

Reply via email to