?login_element?

Subversion Repositories NedoOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;dehl = m
  2. ;dehl' = n
  3. ;out: dehl = m/n
  4. uintdiv32
  5.         ld a,h
  6.         cpl
  7.         ld h,a
  8.         ld a,l
  9.         cpl
  10.         ld l,a
  11.         ld (.dividendlo),hl
  12.         ld a,d
  13.         cpl
  14.         ld h,a
  15.         ld a,e
  16.         cpl
  17.         ld l,a
  18.         ld (.dividendhi),hl
  19.         ld a,1
  20.         ld bc,0
  21.         ld de,1
  22.         ld hl,0
  23.         ld iy,0
  24.         ld (.templo),hl
  25.         ld (.temphi),hl
  26.         exx
  27.         ld bc,de
  28.         ex de,hl
  29.         bit 7,b
  30.         jr nz,.rshiftloop
  31. .lshiftloop
  32.         sla de
  33.         rl bc
  34.         exx
  35.         sla de
  36.         rl bc
  37.         exx
  38.         inc a
  39.         bit 7,b
  40.         jr z,.lshiftloop
  41. .rshiftloop
  42. .templo=$+2
  43.         ld ix,0
  44. .temphi=$+1
  45.         ld hl,0
  46.         add ix,de
  47.         adc hl,bc
  48.         jr c,.nextbit
  49.         push ix
  50.         push hl
  51.         push de
  52. .dividendlo=$+1
  53.         ld de,0
  54.         add ix,de
  55. .dividendhi=$+1
  56.         ld de,0
  57.         adc hl,de
  58.         pop de
  59.         pop hl
  60.         pop ix
  61.         jr c,.nextbit
  62.         ld (.templo),ix
  63.         ld (.temphi),hl
  64.         exx
  65.         add iy,de
  66.         add hl,bc
  67.         exx
  68. .nextbit
  69.         srl bc
  70.         rr de
  71.         exx
  72.         srl bc
  73.         rr de
  74.         exx
  75.         dec a
  76.         jr nz,.rshiftloop
  77.         exx
  78.         ld de,iy
  79.         ex de,hl
  80.         ret
  81.  
  82. ;bc = m
  83. ;de = n
  84. ;out: dehl = m*n
  85. uintmul16
  86.         ld hl,0
  87.         exx
  88.         ld hl,0
  89.         ld de,hl
  90.         exx
  91. .loop   srl bc
  92.         jr nc,.skip
  93.         add hl,de
  94.         exx
  95.         adc hl,de
  96.         exx
  97. .skip   sla de
  98.         exx
  99.         rl de
  100.         exx
  101.         ld a,b
  102.         or c
  103.         jr nz,.loop
  104.         exx
  105.         push hl
  106.         exx
  107.         pop de
  108.         ret
  109.