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  se
PROFISOFT                    - 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
BRIGHT
PROFISOFT                    - 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 STOP
Ulozeni 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.
----------------------------------------------------------------