home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / TURBODSG / RETBIT.MAC < prev    next >
Text File  |  2000-06-30  |  853b  |  77 lines

  1. ;RETBIT.MAC by ESKAY
  2. ;
  3. .z80
  4. ;
  5. ; Purpose:
  6. ; return or set bit at bit map address
  7. ; IX points to start of bit map
  8. ; DHL holds 24-bit address
  9. ; for PUTBIT, C holds bit
  10. ; Preserve all registers
  11. ;
  12.     public    getbit,putbit
  13. ;
  14.     cseg
  15. ;
  16. getbit:    xor    a
  17.     jr    gpbit
  18. ;
  19. putbit:    ld    a,0ffh
  20. gpbit:    ld    (getput),a
  21.     push    bc
  22.     push    de
  23.     push    hl
  24.     push    ix
  25.     ld    a,l
  26.     or    a
  27.     ld    b,3
  28. lp1:    rr    d
  29.     rr    h
  30.     rr    l
  31.     djnz    lp1
  32.     and    7
  33. ;
  34. ; HL = offet into bit map, a=bit number
  35. ;
  36.     ex    de,hl
  37.     add    ix,de
  38.     ld    b,a        ;bit number into b
  39.     inc    b        ;set up for pre-test
  40.     ld    a,(getput)
  41.     or    a
  42.     jr    nz,putc
  43.     ld    a,(ix+0)
  44.     rlca
  45. loop:    dec    b
  46.     jr    z,done
  47.     rlca
  48.     jr    loop
  49. ;
  50. done:    and    1
  51. done1:    pop    ix
  52.     pop    hl
  53.     pop    de
  54.     pop    bc
  55.     ret
  56. ;
  57. putc:    ld    a,b
  58.     ld    b,8
  59. ..putl:    rlc    (ix+0)
  60.     dec    a
  61.     call    z,..srs
  62.     djnz    ..putl
  63.     jr    done1    
  64. ;
  65. ..srs:    ld    a,c
  66.     or    a
  67.     ld    a,0ffh
  68.     jr    z,..res
  69.     set    0,(ix+0)
  70.     ret
  71. ;
  72. ..res:    res    0,(ix+0)
  73.     ret
  74. ;
  75. getput:    db    0
  76.     end
  77.