home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol082 / testbit.asm < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  662 b   |  34 lines

  1. ;testbit.asm
  2. ;external function which returns bit value of a byte
  3. ;
  4. ; function testbit ( x : char; bit : integer ):
  5. ;        boolean; extern;
  6. ;
  7. ; bit number is in range 0..7
  8. ;
  9. ;entry code
  10.     db 95,6,0    ;int vmcode
  11.     db 92        ;lpn vmcode
  12.     db 0        ;mode vmcode
  13. ;on entry  bc=wtos  de=wb  hl=wbase
  14. ;
  15. ;get bit# into b_reg and x into a_reg
  16. testbit    xchg        ;hl=wb
  17.     dcx h! dcx h! dcx h! dcx h ;point to bit lownib
  18.     mov b,m        ;low byte of bit
  19.     dcx h! mov a,m    ;x
  20.     inr b
  21. ;shift loop
  22. loop    rlc
  23.     dcr b
  24.     jnz loop
  25.     jc true        ;bit is set
  26. ;false : bit is zero
  27.     dcx h! mvi m,0! dcx h! mvi m,0
  28.     ret
  29. ;true : bit is one
  30. true    dcx h! mvi m,0! dcx h! mvi m,1
  31.     ret
  32. ;
  33.     end
  34.