Normal quotes
This commit is contained in:
parent
5e10794a24
commit
18011c595a
352 changed files with 6040 additions and 6040 deletions
20
03-08.md
20
03-08.md
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
Moreover, because it uses an undocumented feature, the timer-stop
|
||||
approach could conceivably cause erratic 8253 operation, which could in
|
||||
turn seriously affect your computer’s operation until the next reboot.
|
||||
In non-8253-compatible systems, I’ve observed not only wildly incorrect
|
||||
turn seriously affect your computer's operation until the next reboot.
|
||||
In non-8253-compatible systems, I've observed not only wildly incorrect
|
||||
timing results, but also failure of a diskette drive to operate properly
|
||||
after the long-period Zen timer with **PS2** set to 0 has run, so be
|
||||
alert for signs of trouble if you do set **PS2** to 0.
|
||||
|
|
@ -17,7 +17,7 @@ each code-timing session.) You should *immediately* reboot and set the
|
|||
with the long-period Zen timer when **PS2** is set to 0. If you want to
|
||||
set **PS2** to 0, it would be a good idea to time a few of the listings
|
||||
in this book with **PS2** set first to 1 and then to 0, to make sure
|
||||
that the results match. If they’re consistently different, you should
|
||||
that the results match. If they're consistently different, you should
|
||||
set **PS2** to 1.
|
||||
|
||||
While the the non-PS/2 version is more dangerous than the PS/2 version,
|
||||
|
|
@ -29,15 +29,15 @@ If you do leave the **PS2** equate at 1 in Listing 3.5, you should
|
|||
repeat each code-timing run several times before relying on the results
|
||||
to be accurate to more than 54 ms, since variations may result from the
|
||||
possible lack of synchronization between the timer 0 count and the BIOS
|
||||
time-of-day count. In fact, it’s a good idea to time code more than once
|
||||
no matter which version of the long-period Zen timer you’re using, since
|
||||
time-of-day count. In fact, it's a good idea to time code more than once
|
||||
no matter which version of the long-period Zen timer you're using, since
|
||||
interrupts, which must be enabled in order for the long-period timer to
|
||||
work properly, may occur at any time and can alter execution time
|
||||
substantially.
|
||||
|
||||
Finally, please note that the *precision* Zen timer works perfectly well
|
||||
on both PS/2 and non-PS/2 computers. The PS/2 and 8253 considerations
|
||||
we’ve just discussed apply *only* to the longZen timer.
|
||||
we've just discussed apply *only* to the longZen timer.
|
||||
|
||||
### Example Use of the Long-Period Zen Timer {#Heading14}
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ the code being timed takes too long for the precision timer to handle,
|
|||
all you have to do is link in the long-period timer instead.
|
||||
|
||||
Listing 3.6 shows a test-bed program for the long-period Zen timer.
|
||||
While this program is similar to Listing 3.2, it’s worth noting that
|
||||
While this program is similar to Listing 3.2, it's worth noting that
|
||||
Listing 3.6 waits for a few seconds before calling **ZTimerOn**, thereby
|
||||
allowing any pending keyboard interrupts to be processed. Since
|
||||
interrupts must be left on in order to time periods longer than 54 ms,
|
||||
|
|
@ -72,11 +72,11 @@ timing.
|
|||
;
|
||||
; By Michael Abrash
|
||||
;
|
||||
mystack segment para stack ‘STACK’
|
||||
mystack segment para stack ‘STACK'
|
||||
db 512 dup(?)
|
||||
mystack ends
|
||||
;
|
||||
Code segment para public ‘CODE’
|
||||
Code segment para public ‘CODE'
|
||||
assume cs:Code, ds:Code
|
||||
extrn ZTimerOn:near, ZTimerOff:near, ZTimerReport:near
|
||||
Startproc near
|
||||
|
|
@ -102,7 +102,7 @@ timing.
|
|||
add dh,60 ;yes, a minute must have turned over,
|
||||
; so add one minute
|
||||
CheckDelayTime:
|
||||
sub dh,bh ;get time that’s passed
|
||||
sub dh,bh ;get time that's passed
|
||||
cmp dh,7 ;has it been more than 6 seconds yet?
|
||||
jb DelayLoop ;not yet
|
||||
;
|
||||
|
|
|
|||
Loading…
Reference in a new issue