2.3.2.5. Program v BASICu
Adresa začiatku programu v BASICu je uložená v systémovej premennej PROG a po zapnutí počítača je nastavený na hodnotu 23755 teda bezprostredne za tabuľku kanálových informácií. So zväčšením tabuľky kanálových informácií, popr. pri použití mikrodrivov sa začiatok programu posúva k vyšším adresám. Koniec oblasti je označený bytom s hodnotou 80h. Priestor pre program vyzerá takto:
<- VARS označenie konca programu <- PROG
80h |
program v BASICu |
Každý riadok programu je v pamäti uložený nasledovne:
číslo riadku |
dĺžka riadku |
riadok programu |
koncový znak |
2 byty |
2 byty |
x bytov |
1 byte = 0Dh |
Číslo riadku je uložené tak ako je napísané v programe. Teda riadok s číslom 10 má v prvom byte uloženú nulu a v druhom byte uložené číslo 10. Dĺžku riadku vypočíta po odoslaní riadku operačný systém a dosadí ju na vyhradené miesto za číslo riadku. Dĺžka riadku je počítaná mimo dva byty, určené pre číslo riadku. Dĺžka riadku je počítaná mimo dva byty, určené pre číslo riadku (obecne platí: dĺžka riadku (v bytoch) = 2 + X + 1 ).
Dĺžka je už uložená v pamäti štandardne, teda najskôr nižší byte a za ním vyšší byte. Potom nasleduje vlastný riadok programu, ktorý je zakončený znakom CR (Carriage Return - návrat vozíka) s kódom 0Dh=13. Za posledným riadkom programu (a teda i za posledným znakom CR) je ešte byte, ktorý obsahuje hodnotu 80h = 128 a označuje koniec programu v pamäti.
V ďalšom texte budeme používať značku obdĺžnika, ktorý nie je uzatvorený aspoň z jednej strany na znázornenie jedného bitu.
Riadok programu je v pamäti uložený v trochu inej forme, než ako ho zadáte na obrazovke. Predpokladajme, že ste zadali počítaču len jeden riadok a to:
10 LET A=32768
Tento riadok sa uloží do pamäti nasledovne (všetky čísla sú v desiatkovej sústave):
Uloženie riadku v pamäti začína číslom riadku, za ktorým nasleduje dĺžka riadku. Všetky kľúčové slová sú zakódované do jedného bytu, tzv. tokenu (priradenie kódu kľúčovým slovám (tokenom) je uvedené v prílohe C) a ostatné znaky v riadku sú uložené v kóde ASCII (viď príloha C). Za každým číslom v riadku nasleduje byte s hodnotou 14, ktorý označuje, že nasleduje zápis tohto čísla vo vnútornej forme v dĺžke piatich bytov. Koniec riadu je označený znakom CR.
Z uvedeného vyplýva, že za každým číslom, použitým v programe, nasleduje byte s hodnotou 14, ktorý označuje, že nasleduje zápis tohto čísla vo vnútornej forme v dĺžke piatich bytov. Koniec riadku je označený znakom CR.
Z uvedeného vyplýva, že za každým číslom, použitým v programe, nasleduje byte s hodnotou 14, označujúci výskyt čísla, a za ním päť bytov, na ktorých je uložené číslo vo vnútornej forme. Pri vykonávaní programu už BASIC pracuje len s číslami vo vnútornej forme.
Tento spôsob ukladania čísiel má jednu veľkú nevýhodu a tou je nepríjemné narastanie dĺžky programu pri používaní väčšieho množstva čísiel. Proti tomu sa však možno brániť. Stačí len ako päť bytov. Niekoľko výrazov vám ponúkame, na iné iste postupom času prídete sami:
miesto |
použite |
ušetríte |
0 1 3 32 255 |
NOT PI SGN PI INT PI CODE " " CODE"COPY" |
5 bytov 5 bytov 5 bytov 4 byty 5 bytov |
Namiesto akéhokoľvek čísla môžete použiť výraz VAL"cislo"
a tým ušetríte 3 byty. Ďalšia možnosť je používanie konštánt namiesto niektorých často sa vyskytujúcich čísiel vo vašom programe. Tak napr. do prvého riadku programu dáte príkaz:
LET K10=10
a všade v programe budete používať namiesto čísla 10 konštantu K10 a tým ušetríte pri každom jej použití 5 bytov. Nevýhoda použitia konštánt a výrazov je spomalenie vykonávanie programu.