readfile(fp,eofu) /* definovanie readfile */
int fp, eofu;
{ int c;
printf("\nCitanie...\n");
while (c=getc(4))!=eofu) /* citaj znaky z kanala 4 */
if (c!=0) /* pokial nepride koncovy znak. Ak c< >0 */
{ /* potom znak uloz do suboru */
putc(c,fp);
if (c=='\n') /* zameni LF za CR */
c = '\r';
putchar(c); /* echo na obrazovku */
}
printf("\nSubor je nacitany.\n");
} /* koniec readfile */1.8 Bibliografia
The C Programing Language
Brian Kernighan & Dennis Ritchie Prentice-Hall 1978
Learning to Program in C
Thomas Plum Prentice-Hall 1983
The Complete Spectrum ROM Disassembly
Ian Logan & Frank O'Hara Melbourne House 1983
Ak chces volat ROM rutiny tak je dobre mat tuto knihu.
2. EDITOR
2.1. UVOD DO EDITORA
Editor, ktory sa dodava spolocne s kompilatorom HISOFT-C je
jednoduchy riadkovy editor, navrhnuty tak aby bol jednoduchy pri
pouziti a aby poskytoval moznost rychleho a efektivneho
editovania programu.
Editor Vam umoznuje pracovat na programe bez pouzivania kazety
(pripadne Microdrivu) okrem situacie, ked chcete program
zaznamenat na kazetu. Znamena to, ze mozete s pomocou editora
napisat program, potom tento program skompilovat a otestovat, s
navratmi do editora pri opravach alebo pridavani dalsich
riadkov, az pokial nebude program ukonceny. Editor udrziava text
Vasho programu v pamati a umoznuje Vam pridavat nieco naviac,
pripadne zmenit nieco co uz v pamati je alebo nieco vymazat.
Kompilator moze potom precitat a skompilovat text (s pouzitim
"*include"). Editor tak isto dokaze vydat text na zaznam na
kazetu alebo Microdrive (pomocou "p") a nacitat tento text
naspat (pomocou "g"). Kompilator takisto dokaze nacitat tieto
subory z pasky alebo Microdrivu (pomocou "#include nazov
suboru").
Ak chcete pristupit k pouzitiu editora potom, ako ste kompilator
uz pouzili, musite stlacit sucasne klavesy CAPS-SHIFT a 1
(pripadne EDIT na Spectrum +), a potom klavesu ENTER. Po
stlaceni klavesy EDIT uvidite zvisly blok , a po stlaceni
klavesy ENTER spravu "edit:", za ktorou nasleduje znak editora
">".
Existuje specialny sposob vstupu do editoru po hlaseni chyby (
ERROR ), pomocou ktoreho sa lahsie opravuju chyby. Potom ako
kompilator vytlacil chybove hlasenie a zastavil sa bude ocakavat
pokial stlacite klavesu. Ak stlacite EDIT vykona editor prikaz E
( editovat riadok) pre posledny kompilovany riadok. Mozete
opravu vykonat okamzite a pokracovat. Ak po chybovom hlaseni
stlacite akukolvek inu klavesu vratite sa naspat do kompilatora.
Ako odpoved na znak editora ">" mozete zadat prikazovy riadok na
sledovneho formatu:
C N1, N2, S1, S2 za ktorym nasleduje ENTER.
Tak napriklad ak chcete nahradit slovo "fred" slovom "tom" v
riadkoch 1-50 suboru, mali by ste napisat:
F1,50,fred,tom(ENTER)
C je prikaz, ktory ma byt vykonany
N1 je cislo v rozsahu 1-32767 vratane
N2 je cislo v rozsahu 1-32767 vratane
S1 je retazec znakov o maximalnej dlzke 20
S2 je retazec znakov o maximalnej dlzke 20.
Iba velmi maly pocet prikazov editora potrebuje alebo ocakava
vsetkych pat casti prikazoveho riadku a v niektorych pripadoch
bude vacsina z nich aj tak nevhodna.
Pre navrat do kompilatora C musite zadat "C", za ktorym
nasleduje ENTER. Takisto mate moznost vratit sa do BASIC-u tak,
za zadate "B", za ktorym nasleduje ENTER.
Editor v mnohych svojich prikazoch pouziva cisla riadkov. Tieto
cisla riadkov pouziva iba editor a v suboroch na magnetickej
paske alebo na Microdrive nie su uschovane a ani kompilator ich
nepouziva. Cisla riadkov vydava automaticky editor ak sa subor
nacitava z pasky alebo ak ich zadavate prostrednictvom prikazu
"I". Z tohoto dovodu bude najlepsie ak tieto cisla riadkov
budete povazovat iba za informacne, ktore sa vydavaju iba pre
Vas uzitok ak pouzivate editor.
Ciarka sa pouziva ako oddelovac rozlicnych parametrov (i ked
moze byt zmeneny - vid prikaz "S") a medzery su ignorovane,
okrem pripadu ak sa vyskytytuju v retazcoch. Ziadny z tychto
parametrov nie je povinny i ked niektore prikazy (napriklad
prikaz "D"elete) nebudu vykonane ak nezadate N1 a N2. EDITOR si
pamata predchadzajuce cisla a retazce, ktore ste predtym
zadavali, a pouziva tieto predchadzajuce hodnoty ak su
pouzitelne, a ak v ramci prikazoveho riadku nezadate konkretny
argument. Hodnoty N1 a N2 su inicializovane najprv na 10 a
retazce su prazdne.
Ak zadate nedovoleny prikazovy riadok, ako povedzme
F-1,100,HELLO bude riadok ignorovany a zobrazi sa hlasenie
"Pardon?" - potom by ste mali prepisat riadok spravne, t.j.
F1,100,HELLO. Toto chybove hlasenie bude takisto zobrazene ak
prekroci dlzka S2 hodnotu 20; ak je dlzka S1 vacsia ako 20 budu
vsetky nadbytocne znaky ignorovane.
Prikazy mozu byt zadavane velkymi aj malymi pismenami.
Jednotlive prikazy, ktore su v ramci editora k dispozicii, sa
opisuju v dalsom texte - vsimnite si ze vzdy, ak je argument
uzavrety do znakov "< >" musi byt tento argument uvedeny aby sa
prikaz mohol vykonat.
Text moze byt do textoveho suboru zadavany bud zadanim cisla
riadku, medzery a pozadovaneho textu, alebo prikazom "I".
Pripominame, ze ak zadate cislo riadku, za ktorym nasleduje
ENTER (t.j. bez textu), sposobi to vymazanie riadku z textu ak
riadok predtym existoval.
Text sa zadava v riadkoch a kazdy riadok moze mat maximalne 80
znakov. Ak sa dostanete na koniec riadku obrazovky potom sa
obrazovka posunie o jeden riadok nahor a mozete pokracovat na
nasledujucom riadku obrazovky.
Prikaz DELETE (CAPS-SHIFT 0) sa moze pouzivat na vymazanie
znaku, ktory sa nachadza nalavo od kurzora a moze sa opakovane
stlacat pri vymazavani vacsieho poctu znakov (avsak nie za
zaciatkom textoveho riadku).
Text sa uschovava v pamati a je teda mozne, ze sa pamat
preplni. Ak sa to stane vyda kompilator normalne chybove
hlasenie:
ERROR 60
LIMIT: no more memory
Ak chcete usporit pamat mozete uschovat (PUT) urcity text na
kazete alebo na Microdrive, alebo mozete vyuzit moznost
kompilatora *error na potlacenie chybovych hlaseni a potom
opatovne prejst do editora.
Po zostaveni textu urcite bude potrebne editovat niektore
riadky. Na opravovanie, vymazavanie, presuny a precislovanie
riadkov mame rozlicne prikazy. Vacsina prikazov sa vykonava
okamzite, avsak prikaz EDIT "E" vyvola urcity riadok, ktory sa
potom moze editovat s pouzitim dalsich editovaich prikazov:
2.2. INSERT TEXT (zadavat text) Prikaz: I m,n
Editor bude zobrazovat cisla riadkov a Vy mozete zadavat text.
Cisla riadkov zacinaju od m a pokracuju s krokom n. Za
zobrazenym cislom riadku zadavajte pozadovany text, pouzivajuc
rozlicne riadiace kody ak to je potrebne. Riadok textu ukoncite
stlacenim ENTER.
Ak ste napisali vsetky riadky, ktore ste chceli napisat, stlacte
EDIT (CAPS-SHIFT 1) a potom ENTER.
Ak zadate riadok s cislom riadku, ktore uz v texte existuje,
bude existujuci riadok vymazany a nahradeny novym riadkom po
stlaceni ENTER. Ak automaticka inkrementacia cisiel riadkov
povedie k cislu riadku vacsiemu ako 32767 bude automaticky
zruseny rezim Insert.
2.3. LISTING TEXTU NA OBRAZOVKE Prikaz: L m,n
Zobrazi sa listing textu, ktory je prave v pamati od riadku s
cislom m po riadok s cislom n, vratane. Vzdy ak neudame hodnotu
m bude dosadena hodnota 1 a namiesto neuvedenej hodnoty n zasa
32767, t.j. tieto hodnoty nie su dosadzovane podla
predchadzajucich zadanych hodnot. Ak chcete zobrazit listing
celeho textoveho suboru jednoducho pouzite "L" bez argumentov.
Po zobrazeni listingu urciteho poctu riadkov sa listing prerusi
a ak chcete ukoncit listing predcasne, stlacte EDIT. Po stlaceni
ktorejkolvek inej klavesy listing pokracuje. Pocet sucasne
zobrazovanych riadkov listingu moze byt zadany pomocou prikazu
K, ktory sa uvadza v dalsom texte.
2.4. OVLADANIE DLZKY LISTINGU Prikaz: K n
"K" nastavuje pocet riadkov obrazovky, na ktorych bude zobrazeny
listing pred prerusenim listingu ako sa to popisovalo pre prikaz
"L". Tak napriklad, pouzite K 5 ak chcete aby nasledujuci prikaz
"L" vydaval sucasne 5 riadkov listingu na obrazovku. Editor sa
inicializuje s hodnotou K rovnou 5. Hodnota K nemoze byt vacsia
ako 255.
2.5. VYPIS TEXTU NA TLACIAREN Prikaz: W m,n
Prikaz "W" vydava na tlaciaren cast textu medzi riadkami m a n,
vratane. Ak sa m ani n neuvedie, bude vytlaceny cely textovy
subor. Tlac mozete prerusit stlacenim klavesy BREAK (CAPS-SHIFT
a SPACE) a vratite sa do editora.
2.6. ZOBRAZENIE DOSADZOVANYCH HODNOT Prikaz: V
Prikaz "V" zobrazuje aktualny oddelovac, aktualne hodnoty dvoch
dosadzovanych cisiel riadkov a dosadzovanych retazcov N1, N2,
S1, S2. Je to uzitocne pred zadanim akehokolvek prikazu v ktorom
chcete pouzit dosadzovane hodnoty na kontrolu, ci su tieto
hodnoty spravne.
Prikazom sa takisto zobrazi startovacia a konecna adresa
textoveho suboru v dekadickej sustave. Je to uzitocne pre
pripad, ze chcete uschovat text na mediu z BASICU, pripadne ak
sa chcete pozriet kolko pamate Vam zostava za textovym suborom.
2.7. ZADAT ODDELOVAC Prikaz: S,,d
Tento prikaz Vam umoznuje zmenit oddelovac, ktory sa pouziva na
oddelovanie argumentov v prikazovom riadku. Pri vstupe do
editora sa ako oddelovac pouziva ciarka ","; toto moze byt
zmenene pouzitim prikazu "S" s prvym znakom retazca d. Pamatajte
si ze po nadefinovani noveho oddelovaca musite tento pouzivat
(dokonca aj s prikazom "S") az dokial nezadate novy oddelovac.
Na zobrazenie aktualneho oddelovaca pouite prikaz "V".
Pripominame, ze oddelovacom nemoze byt medzera.
2.8. NAVRAT DO KOMPILATORA C Prikaz: C
Ak chcete po ukonceni editovania skompilovat Vas text, staci ak
stlacite "C" a ENTER.
2.9. NAVRAT DO BASICU Prikaz: B
Mozete sa vratit do BASICU ak stlacite "B" a ENTER. Moze to byt
uzitocne ak chcete otvorit alebo uzavriet stream (povedzme na
seriovy kanal), pripadne nacitat alebo zaznamenat urcite data.
Ak potom chcete prejst naspat do kompilatora C treba zadat:
RANDOMIZE USR 25200
Ak sa nechcete vratit naspat, ale namiesto toho chcete pouzivat
BASIC, budete musiet RESETovat Vase Spectrum (Pripadne vid
Low-Level Interface).
2.10. VYMAZAT RIADKY Prikaz: D <m,n>
Vsetky riadky od m do n, vratane, budu vymazane z textoveho
suboru. Ak je m > n, pripadne ak sa nezadaju oba parametre,
nebude vykonana ziadna cinnost. Jediny riadok sa da vymazat tak,
ze zadame D m,m ENTER. Jeden riadok sa da vymazat tak, ze
napiseme iba jeho cislo a stlacime ENTER.
2.11. PRESUNUT RIADOK Prikaz: M m,n
Text, zadany na riadku m bude presunuty na riadok n a vymaze
akykolvek text, ktory tu predtym bol. Pripominame, ze riadok m
zostava prazdny. To znamena, ze prikaz "M"ove umoznuje presunut
textovy riadok na ine miesto textoveho suboru. Ak riadok s
cislom m neexistuje, nebude vykonana ziadna cinnost.
2.12 PRECISLOVAT TEXT Prikaz: N <m,n>
Ak pouzijete prikaz "N", bude precislovany cely textovy subor s
cislom prveho riadku m a krokom n. Musi sa zadat m aj n a ak by
precislovanie sposobilo, ze dostaneme riadok s cislom vacsim ako
32767, zostane zachovane povodne cislovanie.
2.13. EDITOVAT RIADOK Prikaz: E n
Editovat riadok s cislom n. Ak n neexistuje, nebude vykonana
ziadna cinnost; v opacnom pripade bude riadok zobrazeny na
obrazovke (aj s cislom riadku) a cislo riadku bude zobrazene
opat pod riadkom. Za cislom riadku sa objavi kurzor a potom sa
mozu pouzit specialne editovacie prikazy na editovanie tohoto
riadku:
=> (CAPS-SHIFT 8 - nie SYMBOL-SHIFT E!) krok na dalsi
znak riadku. Nie je mozne dostat sa za koniec riadku.<= (CAPS-SHIFT 5 - nie SYMBOL-SHIFT Q!) krok naspat na
predchadzajuci znak riadku. Za zaciatok riadku nie je
mozne sa dostat.
ENTER Ukonci editovanie tohoto riadku s ponechanim vsetkych
uskutocnenych zmien.