PROFISOFT - 1 - SPECTRUM M-CODER
================================================================
K cemu potrebujeme M-Coder?
---------------------------
Jednoducha odpoved spociva v tom,ze strojovy kod je mnohem
rychlejsi nez Basic,pricemz je mozno pocitat se zrychlenim az
50x. Pomoci M-Coderu je mozno kompilovat Basicove programy do
strojoveho kodu.M-Coder...16k a 48k.
--------------------
Na kazete se nachazeji dve verse M-Coderu. Z jedne strany je
puvodni verse pro 16k a z druhe strany je vylepsena verse
"M-Coder II",ktera muze byt pouzita jen pro 48k versi.
M-Coder je kompilator,ktery pracuje s celymi cisly v rozsahu
od -32768 do 32767 a dosahuje vetsi rychlosti kompilovanych
programu.
Ackoliv je M-Coder uzitecny pomocny program,neocekavejte od
nej zadne zazraky. Budete se muset se systemem nejprve naucit
pracovat,aby vase vysledky byly co nejlepsi. To plati predevsim
pro obejiti prikazu,ktere M-Coderem nejdou primo kompilovat.
Jakekoliv adresove a pracovni udaje,ktere plati pro 48k
M-Coder jsou uvedeny v zavorkach za hodnotami pro 16k versi.
Nektere rozdily,ktere jsou pro M-Coder II vyznamne jsou popsany
samostatne.Nahravani M-Coderu.
-------------------
Kompilator musi zasadne byt v pracovni pameti Spectra drive,
nez s nim zacnete pracovat. Nahrajte ho normalne LOAD "".Prace s programem M-Coder.
--------------------------
Muzete pracovat dvema ruznymi zpusoby,jakmile je M-Coder v
pameti.1.a) Programujete normalne v Basicu,pouze na konec programu
musite dat prikaz STOP,protoze M-Coder pracuje pouze k tomuto
prikazu. To ovsem take znamena,ze v Basicovem programu smite mit
PROFISOFT - 2 - SPECTRUM M-CODER
================================================================
pouze jeden prikaz STOP. U M-Coderu II to vsak neni nutne.
Jestlize vsak pracujete s 16k versi,pamatujte,ze kompiler
pracuje pouze k prikazu STOP (viz dalsi poznamky u prikazu
STOP). Jestlize je program v Basicu hotov,nechte jej probehnout,
aby bylo mozno odstranit pripadne chyby.
1.b) Jestlize jste s Vasim programem spokojeni,aktivujte
kompilator prikazem RANDOMIZE USR 29000 (60000). Kazdy prelozeny
programovy radek se se ukaze na obrazovce jeste jednou. Jestlize
se vyskytne Basicovy prikaz,ktery nemuze byt prelozen,ukaze
blikajici kursor a program se vrati zpet do Basicu. Jestlize
bylo vse v poradku,je prvni prubeh kompilatoru uzavren a program
ceka v pause tak dlouho,dokud nestisknete nejake tlacitko. Druhy
prubeh kompilatoru opet ukaze vsechny programove radky na
obrazovce a skonci hlasenim OK a znovu se nachazite v Basicu.
Nyni je tedy prace kompilatoru skoncena. U M-Coderu II oba
prubehy prekladu projdou bez preruseni a na obrazovce se objevi
dodatkove informace: 1.delka zkompilovaneho strojoveho kodu
2.pocatecni - vyvolavaci adresa.2.) Je mozne kompilovat jiz hotove programy,ulozene na
kazete jednoduse tim,ze je prihrajete do pameti po M-Coderu.
Pravdepodobne ale budete muset provest zmeny v Basicovem
programu jeste pred nasazenim kompileru tak,aby vas program mohl
byt bezchybne prelozen.
Vyvolani zkompilovaneho programu.
---------------------------------
Zkompilovany program se vzdy nachazi za RAMTOP,nezavisle na
tom,na jakou adresu byl ulozen. M-Coder nastavuje RAMTOP na
26500 (40000). Strojovy program tedy muze byt spusten pomoci
RANDOMIZE (PRINT nebo LET L=) USR 26500 (40000).Je mozno M-Coderem sestavovat nekolik programu za sebou ?
---------------------------------------------------------
Ano,muzete. Ale k tomu musite posouvat RAMTOP prikazem CLEAR
n,pricemz n muze nabyvat hodnot mezi 24000 a 28000 (24000 a
59000). Nejdrive nastavite RAMTOP vyse,napr. na 27000,potom sePROFISOFT - 3 - SPECTRUM M-CODER
================================================================
nahraje nebo napise Basicovy program,zkompiluje a tak se dostane
primo za RAMTOP. Nyni muzete tento program spustit prikazem
RANDOMIZE USR 27000 a dale pak RAMTOP presunout na 25000 (CLEAR
25000). Nyni muze byt prelozen dalsi program a ulozen mezi
RAMTOP a zacatek predesleho programu. Dejte pozor,aby tento
druhy program neprepsal predesly. V tom vam pomaha citac,ktery
je umistem v pravem hornim rohu obrazovky a vzdy ukazuje
konecnou adresu prave zkompilovaneho programu a behem kompilace
cita jednotlive byty kompilovaneho programu. Obe prelozene
rutiny mohou byt vyvolany samostatne,ovsem promenne stejnych
jmen nejsou pro oba programy spolecne,nelze je pouzivat v obou
programech najednou.
Jake se mohou vyskytnout chyby ?
--------------------------------
Pokud se RAMTOP nastavi prilis vysoko,dojde k chybe "out of
memory". Jestlize se objevi nejaka chyba vlevo od prikazu LET
nebo INPUT je nutno snizit pocet promennych,protoze M-Coder si
zaklada svoji tabulku promennych,ktera je v omezenem rozsahu.
Chybove hlaseni u 16k verse nastane take tehdy,jestlize na konci
Basicoveho programu neni prikaz STOP.Optimalni pomoc pri hledani chyb.
----------------------------------
Mate moznost pracovat se tremi stupni rychlosti programu a s
ruznymi specialitami pomoci vlozeni zvlastnich radek ve forme
REM # n.REM # 0: Funkce BREAK je pouzita jen pri dotazu "scroll?" a v
prikazech INPUT. V tomto modu je nejrychlejsi prubeh
programu.REM # 1: BREAK je mozno pouzit kdykoliv. Tento mod je
inicialisovan na zacatku a jeho rychlost je polovicni.REM # 2: Funkce BREAK funguje normalne a krome toho se vpravo
nahore na obrazovce objevuje prave provadeny radek.PROFISOFT - 4 - SPECTRUM M-CODER
================================================================
Nasledujici odstavec plati pouze pro M-Coder II.
------------------------------------------------
Pristup k tabulce promennych M-Coderu.
--------------------------------------
Adresy pouzitych promennych muzeme dostat pomoci
nasledujiciho prikazu:
PRINT USR 65240;"Nazev promenne"
Pro dimensovana pole nebo pro retezce mohou byt jmena
promennych dlouha jen dva znaky,napr. A$ nebo b(. Tim se vam
zobrazi dve hodnoty,prvni ukazuje na adresu,kde je definovana
promenna v zkompilovanem programu (P-pointer) a druha hodnota
ukazuje pocatecni adresu tabulky promennych.Poznamka:Pole M-Coderu obsahuji jeden nulovy prvek navic (oproti
Basicu). Na tento prvek ukazuje prvni adresa,ackoliv vytisknuta
adresa - viz vyse - je zmenena a ukazuje na prvek prvni.
Prikazy M-Coderu.
-----------------
Jmena promennych se mohou skladat z velkych i malych pismen
a cislic. Vyrazy,ktere se sestavaji z vice funkci,mohou byt
pouzity kdekoliv,ale ve spojeni s prikazem LET vsak musi byt
vyraz uzavren do zavorek.
Prikazy a funkce,ktere plati pouze pro M-Coder II jsou v
nasledujicim prehledu oznaceny dvema krizky (++).Prikazy.
--------
AND ++ Da se pouzit jen jako Booleovska funkce uvnitr
prikazu IF.
ABS
ATTR
BEEP x,y Pro M-Coder II nepouzivejte zadne zavorky,jestlize
ton ma byt kratsi nez 1 sekundu : napr.BEEP 1/3,5
a nikoliv BEEP (1/3),5
BORDER
BRIGHTPROFISOFT - 5 - SPECTRUM M-CODER
================================================================
CIRCLE
CHR$ ++
CLS
CLEAR
CODE e e="a" nebo INKEY$. Neomezene plati pro M-Coder II
COPY
DATA list list muze byt rada celych cisel (u M-Coderu mohou
byt pouzity retezce nebo retezce znaku).
DIM Z (x) Tato podminka neplati pro M-Coder II:maze pole
jmenem Z a nastavuje vsechny jeho prvky na nulovou
hodnotu. Existuje jenom jedno pole,ktere je
M-Coderem (16k) kompilovano a to je pole Z.
DIM a (v) ++ Pro M-Coder II mohou byt definovana a kompilovana
jeste dalsi jednorozmerna pole. Jestlize je
program zpracovan musi byt vsak k disposici misto
2 krat v bytu,protoze se neprovadi zadna kontrola
na existenci tohoto mista navic,ujistete se,ze je
program v Basicu skutecne schopen chodu. Jestlize
ve zkompilovanem programu provadite novou dimensi
jiz existujiciho pole,je toto brano v uvahu a
provadi se,ale stare pole se nemaze,t.zn.ze pro
novych definicich retezcu muze nastat chybove
hlaseni "out of memory". Misto v pameti pro
retezce a pole se nachazi od 100 bytu nad STKEND
do 256 bytu pod RAMTOP. Vsechny promenne,pole a
retezce jsou vymazany,jestlize kompilujete novy
program. Neni mozno zadavat pole retezcu.
DRAW x,y
DRAW z,y,z
FLASH
FOR a=x TO y STEP je vzdy +1.
GOSUB n
GO TO a
UF x THEN s
IN
INK
INKEY$PROFISOFT - 6 - SPECTRUM M-CODER
================================================================
INPUT Komentar pro INPUT je stejny jako u PRINT. Znaky
jejichz kody jsou mensi nez 22 a vetsi nez 164
nejsou brany v uvahu.
INT Tato funkce zustala zachovana abyste mohli ve
svych programech testovat podminky.
INVERSE
LET
LEN A$ ++ Jako v Basicu,avsak retezce nemohou byt uvnitr
funkce zpracovany.
LPRINT
NEXT a
NEW ++
OUT m,n
OR ++ Jako AND.
OVER
PAPER
PAUSE n Zastavi program na n/50 sec. Jestlize se stiskne
nejaka klavesa,pokracuje M-Coder v provadeni
dalsiho prikazu,pokud je zadano n=0,ceka program
tak dlouho,dokud se nestiskne nejake tlacitko.
PEEK ++
PLOT m,n
POINT
POKE m,n
PRINT (i) "......."
(ii) Cislo
(iii) CHR$ n
(iv) AT m,n
(v) TAB n
(vi) Barevny parametr
(vii) Jen pro M-Coder II: retezcova promenna
RANDOMIZE
READ
REM
RESTORE n
RETURN
RND Dava cele cislo v rozsahu od 0 do 32767. Tentyz
efekt v Basicu dostanete pomoci USR 59997.PROFISOFT - 7 - SPECTRUM M-CODER
================================================================
SGN
SQR celociselna odmocnina
STOP Posledni Basicovy prikaz,ktery ma byt prelozen. U
M-Coderu II nemusi tento prikaz na konci byt.
Jestlize narazi kompiler behem programu na prikaz
STOP,konci v tomto miste svoji praci. Jestlize
chcete uprostred nejakeho programu zastavit,musite
pouzit prikaz LET L=USR 7406.
STRINGS ++ Za normalnich okolnosti lze prekladat max.delku
retezce 32,jestlize toto prekrocite,jsou byty nad
32 prepsany. Abyste mohli max delku zmenit,musite
v programu POKE-ovat adresu 60200 cislem,ktere se
rovna delce (1 az 255). Toto nastaveni musite
provest drive,nez tuto retezcovou promennou
definujete.
TO ++ Pri pouziti pro zpracovani retezcu se musi pouzit
obecna forma A$ (m) nebo A$ (n TO m),nikoliv vy-
nechavani napr. A$( TO m).Priklad programu.
-----------------
Jestlize zadate nasledujici priklad a nechate jej bezet v
puvodni a potom ve zkompilovane forme,dostanete prehled o
tom,jak je M-Coder vykonny. 10 LET P=0:INK P
12 FOR F=1 TO 20
13 BEEP 1/(2*F),F
14 NEXT F
20 LET A=0:LET B=255:LET C=175:LET D=0:CLS
30 FOR I=0 TO 255:PLOT OVER 1;I,A:NEXT I
40 FOR I=0 TO 175:PLOT OVER 1;B,I:NEXT I
50 FOR I=0 TO 255:PLOT OVER 1;(255-I),C:NEXT I
60 FOR I=0 TO 175:PLOT OVER 1;D,(175-I):NEXT I
70 LET A=A+1:LET B=B-1:LET C=C-1:LET D=D+1
80 LET P=P+1:IF P=7 THEN P=0
81 PRINT AT 10,12;"SPECTRUM"
82 PRINT AT 11,13;"MCODER"PROFISOFT - 8 - SPECTRUM M-CODER
================================================================
85 INK P
90 IF A>175 THEN GO TO 10
100 GO TO 30
9000 STOPUlozeni zkompilovanych programu.
--------------------------------
Vas strojovy program muzete ulozit pomoci SAVE "Jmeno" CODE
m,n normalnim zpusobem,pricemz m je pocatecni adresa vaseho
strojoveho programu. Je treba poznamenat,ze spolu s vasim
strojovym programen musi byt ulozen i M-Coder,protoze
kompilovany program pouziva nektere jeho rutiny. Kompilator
obsazuje oblast pameti od 28990 do 32590 (59990 do 65368),takze
kompletni prikaz by mel znit : SAVE "jmeno" CODE 26500 (40000),
6000 (25368). Pracovnici Profisoftu doufaji,ze se brzy naucite s M-Coderem
pracovat a preji vam mnoho uspechu.
----------------------------------------------------------------