Re: Hello - and where to begin?
Nick Maroudas <[email protected]> Fri, 7 Mar 2008 15:16:06 +0200
| Newsgroups | gmane.comp.lang.forth.colorforth |
|---|---|
| Message-ID | <[email protected]> |
Having found that Howerd Oakford's CFDOS4 floppy boots reliably on my 3GHz 64bit PC, I think I have also found a use for the CF instruction "a" (the one that Chuck commented as "never used?"). It can be used to return the high 32 half of the 64 bit clock counter RDTSC, which is in EDX (same as the CF address register "a"). Chuck's assembly code for the CF word "time" returns only the low 32 half, which is in EAX (same as CF data stack). On a 3 GHz clock the lower half counter whizzes around 3 times per second, which upsets Howerd's code for time calibration "cal" and millisecond delay "ms" (block 28) and hence for sounds via the 16 bit timer PIT 2 (block 68). I have corrected this, and am willing to write it up in sordid detail if anyone is interested. Incidentally, I also changed the values that need to be written to PIT control register 43 in order to "tie" PIT2 to IRPort 61 and "untie" it. Howerd uses 4f and 4d; I use f and d, because Intel's book ICH7 says that bit 6 (40h) ought to be 0 when writing to IRPort 61. If you want to use the interrupts, Tie can be reduced to 3 and Untie to 1. Caritas, NickM