?login_element?

Subversion Repositories NedoOS

Rev

Rev 73 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;bc * de результат в hl
  2. mulbcde
  3.         ld hl,0
  4.         ld a,b
  5.         dup 8
  6.         rla
  7.         jr nc,$+3 ; c - был перенос, nc - не было переноса    
  8.         add hl,de
  9.         add hl,hl
  10.         edup
  11.         ld a,c
  12.         dup 7
  13.         rla
  14.         jr nc,$+3 ; c - был перенос, nc - не было переноса    
  15.         add hl,de
  16.         add hl,hl
  17.         edup
  18.         rla
  19.         ret nc;jr nc,$+3 ;
  20.         add hl,de
  21.         ret
  22.  
  23. ;hl / de результат в hl
  24. divhlde
  25.         ld c,h
  26.         ld a,l
  27.         ld hl,0
  28.         ld b,16
  29. ;don't mind carry
  30. _DIV0.
  31. ;shift left hlca
  32.         rla
  33.         rl c
  34.         adc hl,hl
  35. ;no carry
  36. ;try sub
  37.         sbc hl,de
  38.         jr nc,$+3
  39.         add hl,de
  40. ;carry = inverted bit of result
  41.         djnz _DIV0.
  42.         rla
  43.         cpl
  44.         ld l,a
  45.         ld a,c
  46.         rla
  47.         cpl
  48.         ld h,a
  49.         ret
  50.  
  51. rnd
  52. ;0..c-1
  53.         ld a,r
  54. rnd0
  55.         sub c
  56.         jr nc,rnd0
  57.         add a,c
  58.         ret
  59.  
  60.