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 / TURBOPAS / PMLINK.LBR / GETBTS.MAC < prev    next >
Text File  |  2000-06-30  |  768b  |  51 lines

  1.     .z80
  2.     external NBits,BitCnt,WB,InByte
  3.  
  4. getbts:    ld    HL,0    ;Results here
  5.     ld    A,(NBits)
  6.     ld    C,A    ; C := NBits
  7.     ld    A,(BitCnt)
  8.     cp    C
  9.     jr    NC,ok    ;BitCnt>=NBits
  10.  
  11.     ld    B,A    ;B := BitCnt
  12.     ld    A,C    ;A := NBits
  13.     sub    B    ;A := NBits - BitCnt
  14.     ld    (NBits),A
  15.     ld    A,(WB)
  16.     call    shl    ;WB shl BitCnt
  17.     push    HL    ;intermediate result
  18.     call    InByte    ;new Byte in L
  19.     ld    A,(NBits)
  20.     ld    B,A    ;B := NBits
  21.     ld    A,8    ;
  22.     SUB    B    ;A := 8 - NBits
  23.     ld    (BitCnt),A
  24.     ld    A,L    ;New byte
  25.     pop    HL
  26.     call    shl    ;WB shl NBits
  27.     ld    (WB),A
  28.     ret
  29.  
  30. ok:    ld    B,C    ;B := NBits
  31.     sub    B    ;A := BitCnt - NBits
  32.     ld    (BitCnt),A
  33.     ld    A,(WB)
  34.     call    shl
  35.     ld    (WB),A
  36.     ret
  37.  
  38. shl:    sla    A    ;MSB in Carry
  39.     rl    L
  40.     djnz    shl
  41.     ret
  42.  
  43.     end    getbts
  44. ),A
  45.     ld    A,L    ;New byte
  46.     pop    HL
  47.     call    shl    ;WB shl NBits
  48.     ld    (WB),A
  49.     ret
  50.  
  51. ok:    l