2.6.
Funkcia USR, rutiny z ROM
V tejto krátkej časti sa budeme venovať niektorým zaujímavým
rutinám (podprogramom) z pamäti ROM, teda z operačného systému počítača, ktoré
by vám mohli uľahčiť vaše počiatočné kroky pri práci v strojovom kóde.
Na začiatok pripomeňme funkciu USR. Táto funkcia slúži na
volanie podprogramov v strojovom kóde. Pokiaľ jej argument ako x, tak x
môže byť ľubovoľný celočíselný výraz z intervalu 0 až 65535 (v prípade použitia
u udg môže byť argumentom znak uložený pod klávesom "A" až
"U". V tejto časti budeme uvažovať ako argument x a riadenie
je predané na adresu pamäti x.
Návrat zo strojového kódu musí byť zakončený inštrukciou RET a v
prípade, že bolo zakázané prerušenie inštrukciou DI, musí byť opäť pred
návratom do BASICu povolené inštrukciou EI.
Pri volaní funkcie USR je hodnota argumentu x predaná do
registrového páru BC a po návrate je výsledkom funkcie posledná hodnota tohto
registrového páru.
Počiatočnú prácu v strojovom kóde vám môžu uľahčiť nasledujúce
rutiny z ROM:
-
vymazanie celej obrazovky - okrem horných desiatich riadok
RANDOMIZE USR 3652
-
posun celej obrazovky o jeden riadok hore:
RANDOMIZE USR 3280
-
posun celej obrazovky o 22 riadkov smerom hore:
RANDOMIZE USR 3330
-
výpis dĺžky voľnej pamäti pre program v BASICu:
PRINT 65535 - USR 7962
-
reset počítača:
RANDOMIZE USR 0
-
čakanie na stlačenie ľubovoľného klávesu; po jeho stlačení sa
vypíše dĺžka čakania v 1/50 sek.:
PRINT USR 7997 - USR 7997
-
výpis textového reťazca - 203Ch (8252):
.
.
LD A,02h (kanál
pre výpis na obrazovku)
CALL 1601h (otvorenie
kanála)
LD DE,počiatočná adresa textu v pamäti
LD BC,dĺžka textu v bytoch
CALL 203Ch
.
.
-
pípnutie - 03B5h (949)
.
.
LD DE,dĺžka tónu
LD HL,výška tónu
CALL 0385h
.
.
-
save na pásku - O4C2h (1218):
.
.
LD IX,počiatočná adresa úseku pamäti pre
SAVE
LD DE,dĺžka úseku v bytoch
LD A,značkový byte (obvykle hlavička 0,
telo 255)
CALL 04C2h
.
-
load z pásky - 0556h (1366):
.
.
LD IX,počíatočná adresa
LD DE,dĺžka
LD A,značkový byte (obvykle hlavička 0,
telo 255)
SCF
CALL 0556h
.
.
-
zmena farby bordera - 2298h (8859):
.
.
LD A,farba borderu (môže byť z intervalu <0-7>)
CALL 2298H
.
.
-
vykreslenie bodu so súradnicami X, Y - 22E5h (8933):
.
.
LD B,Y (súradnica
môže byť z intervalu <0-175>)
LD C,X (súradnica môže byť z intervalu <0-255>)
CALL 22E5H
.
.
-
cls (vyčistenie obrazovky) - OD68h (3432):
.
.
LD A,02h (kanál
pre výpis na obrazovku)
CALL 1601h (otvorenie
kanála)
CALL OD68H
.
.
-
zistenie výskytu bodu so súradnicami X,Y - 22CEh (8910):
.
.
LD B,Y (súradnica
môže byť z intervalu <0-175>)
LD C,X (súradnica môže byť z intervalu <0-255>)
CALL 22CEH(v A reg. je výsledok: 1/0 - bod
je/nie je)
.
.
Veríme, že postupom času prídete na rad rozmanitých rutín z
pamäti ROM, ktoré budete s úspechom využívať v programoch.