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

  1. ;setbit.asm
  2. ;external procedure which sets a bit on in a byte
  3. ;
  4. ; procedure setbit ( var x : char; bit : integer );
  5. ;        extern;
  6. ; bit# in range 0..7
  7. ;
  8. ;entry code
  9.     db 95,6,0    ;int vmcode
  10.     db 92        ;lpn vmcode
  11.     db 0        ;mode vmcode
  12. ;on entry  bc=wtos  de=wb  hl=wbase
  13. ;
  14. ;get bit# in b_reg,  addr(x) in hl,  x into c_reg
  15. setbit    xchg        ;hl=wb
  16.     dcx h! dcx h! dcx h! dcx h
  17.     mov b,m        ;bit#
  18.     dcx h! mov d,m! dcx h! mov e,m ;addr(x)
  19.     xchg        ;hl=addr(x)
  20.     mov c,m        ;c=x
  21. ;create mask
  22.     inr b        ;incr loop count
  23.     mvi a,1
  24. loop    rrc
  25.     dcr b
  26.     jnz loop
  27. ;a=mask  c=byte
  28.     ora c
  29.     mov m,a        ;store byte
  30.     ret
  31. ;
  32.     end
  33.