home *** CD-ROM | disk | FTP | other *** search
- ;
- ; VLIB Module Name: VID9
- ; Author: Richard Conn
- ; VLIB Version Number: 1.0
- ; Module Version Number: 1.0
- ; Module Entry Points:
- ; VIDELAY
- ; Module External References:
- ; ENVPTR
- ;
- ext envptr
-
- ;
- ; VIDELAY pauses for the number of milliseconds indicated by the A
- ; register. VIDELAY assumes a ZCPR3 environment and uses it to determine
- ; processor speed.
- ;
- videlay::
- push psw ;save regs
- push b
- push d
- push h
- mov c,a ;save count in C
- ora a ;no delay?
- jz done
- lhld envptr ;pt to environment
- lxi d,2Bh ;offset to processor speed
- dad d
- mov a,m ;get processor speed
- ora a ;zero?
- jnz vid1
- mvi a,4 ;assume 4 MHz
- vid1:
- mov b,a ;processor speed in B
- vid2:
- push b ;delay 1 ms
- call delay
- pop b
- dcr c ;count down
- jnz vid2
- done:
- pop h ;restore regs
- pop d
- pop b
- pop psw
- ret
- ;
- ; Delay 1 ms at Clock speed
- ;
- delay:
- call del1 ;delay 1 ms at 1MHz
- dcr b ;count down clock speed
- jnz delay
- ret
- ;
- ; Delay 1 ms at 1MHz
- ;
- del1:
- mvi c,20 ;20 loops of 51 cycles each ~ 1000 cycles
- del1a:
- xthl ;18 cycles
- xthl ;+18 = 36 cycles
- dcr c ;+ 5 = 41 cycles
- jnz del1a ;+10 = 51 cycles
- ret
-
- end
-