Amstradova sistemska ura kaže čas v tristotinkah sekunde. Deluje po tem principu, da šteje prekinitve, ki nastajajo prav tristokrat na sekundo. Kadar nastane prekinitev, procesor prekine delo in skoči na naslov 56 ali 38H. Na tem naslovu je tudi program, ki med drugimi funkcijami, kot je pregledovanje tipkovnice. povečuje uro (natančneje: števec prekinitev) za 1. Kako izkoristiti to uro. da bo kazala realni čas. ko boste kaj delali? Tu sta dva problema: 1. Sistemska ura je organizirana kot 32-bitno število, iz katerega je v premoru med prekinitvama težavno izločiti sekunde, minute in ure. 2. Nepreciznost, ker prekinitve ne nastajajo natančno tristokrat na sekundo oziroma ker frekvenca, pri kateri dela procesor, ni natančno 4 MHz. Oba problema je mogoče odpraviti. Računalnik prestavimo v prekinitveni način 2 (IM 2) in spremenimo prekinitveni vektor tako. da bo kazal na kakšno našo rutino. V tej rutini bomo registrirali prekinitve in na vsako tristoto povečali število sekund za eno. Ko število sekund doseže 60. postavimo sekunde na ničlo in povečujemo minute; ko pridejo minute do 60. jih resetiramo in povečujemo ure... Kar zadeva organizacijo ure. smo tako odpravili problem. Ura pa še vedno ni natančna. ker se tako kot sistemska opira na periodičnost prekinitev. Zdaj lahko vsake toliko kompenziramo napako. Ker ura (vsaj pri meni) prehiteva. mi je prišlo na misel, da bi po določenem številu prekinitev zmanjšal števec prekinitev za 1. tako da bi med povečevanjem sekund za 1/300 sekunde oziroma za eno prekinitev nastal premor. Eksperimentiral sem z različnimi vrednostmi in prišel do številke 661 (po 661. prekinitvi naredimo premor). Tako se ura na 1 uro dela zmoti za 0.2-0.3 sekunde. Če pri vas ne bo tako natančna, poskusite spremeniti vrednost na naslovu 40070. vendar mislim, da ni potreben kakšen velik popravek. Ko naša rutina opravi delo. moramo samo še skočiti na 38H. kamor bi procesor v normalnem načinu skočil sam. Ko program poveča sekunde. v spodnjem Ifevem kotu izpiše čas. Če bi radi prestavili izpisovanje na kakšno drugo lokacijo, vpišite koordinato X na naslov 40163. Y pa na 40162. Program pretipkajte in ga posnemite s SAVE "CLOCK", B, 40000, 236. Kadar ga boste potrebovali, vpišite MEMORY 39999: LOAD "CLOCK.BIN", 40000 Program poženete in hkrati določite čas S CALL 40000, Č, Č, M, M, S, S. Pomanjkljivost te in vseh drugih ur. ki temeljijo na prekinitvah, je v tem. da med nalaganjem in snemanjem začasno prekine delo. ker operacijski sistem prepoveduje prekinitve. Po takih operacijah ura zao staja, zato jo je treba znova naravnati. kot sem opisal. Moj Micro ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 262 millisecondes et consultée 623 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|
|