home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol202 / vid9.mac < prev    next >
Encoding:
Text File  |  1984-12-19  |  1.1 KB  |  68 lines

  1. ;
  2. ; VLIB Module Name:  VID9
  3. ; Author:  Richard Conn
  4. ; VLIB  Version Number:  1.0
  5. ; Module Version Number:  1.0
  6. ; Module Entry Points:
  7. ;    VIDELAY
  8. ; Module External References:
  9. ;    ENVPTR
  10. ;
  11.     ext    envptr
  12.  
  13. ;
  14. ;    VIDELAY pauses for the number of milliseconds indicated by the A
  15. ; register.  VIDELAY assumes a ZCPR3 environment and uses it to determine
  16. ; processor speed.
  17. ;
  18. videlay::
  19.     push    psw    ;save regs
  20.     push    b
  21.     push    d
  22.     push    h
  23.     mov    c,a    ;save count in C
  24.     ora    a    ;no delay?
  25.     jz    done
  26.     lhld    envptr    ;pt to environment
  27.     lxi    d,2Bh    ;offset to processor speed
  28.     dad    d
  29.     mov    a,m    ;get processor speed
  30.     ora    a    ;zero?
  31.     jnz    vid1
  32.     mvi    a,4    ;assume 4 MHz
  33. vid1:
  34.     mov    b,a    ;processor speed in B
  35. vid2:
  36.     push    b    ;delay 1 ms
  37.     call    delay
  38.     pop    b
  39.     dcr    c    ;count down
  40.     jnz    vid2
  41. done:
  42.     pop    h    ;restore regs
  43.     pop    d
  44.     pop    b
  45.     pop    psw
  46.     ret
  47. ;
  48. ;  Delay 1 ms at Clock speed
  49. ;
  50. delay:
  51.     call    del1    ;delay 1 ms at 1MHz
  52.     dcr    b    ;count down clock speed
  53.     jnz    delay
  54.     ret
  55. ;
  56. ;  Delay 1 ms at 1MHz
  57. ;
  58. del1:
  59.     mvi    c,20    ;20 loops of 51 cycles each ~ 1000 cycles
  60. del1a:
  61.     xthl        ;18 cycles
  62.     xthl        ;+18 = 36 cycles
  63.     dcr    c    ;+ 5 = 41 cycles
  64.     jnz    del1a    ;+10 = 51 cycles
  65.     ret
  66.  
  67.     end
  68.