SORD Creative Computer $$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$ $$ $$$$$$$ $$ $$ $$ $$$$$$$ $$$$$$ $$$$$$ $$ $$$$$$$$$$$$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$ $$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$ $$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$ $$ $$$$$$$ $$$$$$$$$ $$$$$$$$ $$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ -------------------------------------------------- | | | BASIC - MSX | | | -------------------------------------------------- BASIC-MSX - 1 - OBSAH ===== 1. Uvod ............................................................. 2 2. Rezimy prace ..................................................... 2 2.1. Format radky ..................................................... 2 2.2. Konstanty ........................................................ 2 2.3. Promenne ......................................................... 2 2.4. Vyrazy a operatory ............................................... 3 3. Klavesnice ....................................................... 3 3.1. Ridici klavesy obrazovkoveho editoru ............................. 3 3.2. Funkcni klavesy .................................................. 4 3.3. Kurzor ........................................................... 4 4. Prikazy a funkce MSX-BASIC ....................................... 5 4.1. Prikazy .......................................................... 5 4.2. Funkce ........................................................... 9 4.3. Specialni povely ................................................. 10 4.3.1. Prikazy .......................................................... 10 4.3.2. Funkce ........................................................... 10 5. Parametry nekterych prikazu a funkci ............................. 10 5.1. BASE ............................................................. 10 5.2. COLOR ............................................................ 10 5.3. DEFUSR, USR ...................................................... 11 5.4. DRAW ............................................................. 11 5.5. OPEN ............................................................. 12 5.6. PLAY ............................................................. 12 5.7. PRINT USING ...................................................... 12 5.8. SCREEN ........................................................... 13 5.9. Ovladace ......................................................... 13 5.9.1. STICK ............................................................ 13 5.9.2. STRIG ............................................................ 13 6. Chybova hlaseni .................................................. 14 7. Mechanismus zaznamu na magnetofon ................................ 15 8. Operacni system MSX, emulator verze 1.C .......................... 16 8.1. Klavesnice ....................................................... 16 8.1.1. Specialni klavesy ................................................ 16 8.1.2. Joystick 0 ....................................................... 16 8.2. Magnetofon ....................................................... 16 ---------------------------------------- | | | SORD COMPUTER CORPORATION | | | | SAITO BLDG.2F, 14-16, | | KYOBASHI 3-CHOME | | CHUO-KU, TOKYO 104, JAPAN | | PHONE: (03)562-6061 | | TELEX: 2522745 ( SORD J ) | | | ---------------------------------------- BASIC-MSX - 2 - 1. Uvod ************* MSX-BASIC je rozsirenou verzi standardniho Microsoft basiku verze 4.5, obsahu- je podporu pro grafiku, pro hudbu a pro ruzne periferie pripojitelne k osobni- mu pocitaci standardu MSX. Tento basic byl navrzen jako naslednik "GW-BASICu", ktery jako jeden ze standardu bezi na 16ti bitovych pocitacich. Behem vytvare- ni tohoto basiku byl kladen jako hlavni pozadavek vznik pruzneho a snadno roz- siritelneho systemu. MSX-BASIC je charakterizovan BCD aritmetickymi funkcemi s presnosti vypoctu az na 14 platnych cislic v tzv. dvojite presnosti ( double-precision ).Aritmetic- ke operace take nevytvareji behove chyby, ktere maji tendenci mast nezkusene programatory. Vsechny vybrane funkce jsou pocitany s presnosti na 14 platnych cislic. 2. Rezimy prace ********************* Je-li basic pripraven prijmout novy prikaz, zobrazi prompt "Ok". Textem "Ok" basic oznamuje, ze je v povelovem modu. Nyni muze byt pouzit dvojim zpusobem: v primem nebo neprimem modu. V primem modu zadaveme prikazy bez cisla radky a ty se ihned vykonavaji.V neprimem modu zacina radek cislem, za kterym nasledu- ji prikazy navzajem od sebe oddelene dvojteckou.Takovy radek je po stisku kla- vesy ulozen do pameti. Takto zapsane radky tvori basicky program, ktery lze zpetne zobrazit prikazem LIST a spustit prikazem RUN. 2.1. Format radky ===================== MSX-BASIC vyzaduje programovy radek v nasledujicim tvar. V hranatych zavorkach je uveden volitelny udaj. nnnnn BASICky prikaz[:BASICky prikaz ...] Radek zacina cislem a jeho editace je ukoncena stiskem klavesy . Cislo radku musi byt v rozsahu 0 az 65529. Delka radku nesmi presahnout 255 znaku. Behem editovani muze byt pouzita tecka v prikazech LIST, AUTO a DELETE pro oz- naceni aktualni radky. 2.2. Konstanty ================== MSX-BASIC rozeznava tyto typy konstant: 1. string - retezec o maximalni delce 255 znaku 2. integer - cela cisla v rozsahu -32768 az 32767 3. fixed-point - realne kladne nebo zaporne cislo, ktere obsahuje desetin- nou tecku 4. floating-point - realne kladne nebo zaporne cislo, vyjadrene v exponencial- nim tvaru 5. hex - sesctactkove cele cislo, zacinajici prefixem &H 6. octal - osmickove cele cislo zacinajici prefixem &O 7. binary - dvojkove integer cislo zacinajici prefixem &B Realna cisla jsou delena na cisla v jednoduche presnosti ( single-precision, max. 6 cislic, zapis: 22.5!, nebo -1.09E-06 ) a ve dvojite presnosti ( double- -precision, max. 14 cislic, zapis: 3489, 345692811, -1.09432D-06, 3489.00264#, 7643578.37863 ). 2.3. Promenne ================ MSX-BASIC rozeznava tyto typy promennych: Promenna integer konci znakem procenta "%". Promenna single-precision konci znakem vykricnik "!". Promenna double-precision konci znakem maltezsky kriz "#". BASIC-MSX - 3 - Retezcova promenna konci znakem dolar "$". Tyto promenne mohou byt jak jednoducheho typu, tak typu pole. Promenna typu pole muze mit maximalne 255 dimenzi, pricemz pocet prvku pole je omezen pouze kapacitou pameti. 2.4. Vyrazy a operatory ========================== MSX-BASIC rozeznava tyto matematicke a relacni operatory: ^ mocneni > vetsi nez - negace, odcitani <= mensi nebo rovno + pricitani >= vetsi nebo rovno * nasobeni NOT negace / deleni AND soucin MOD zbytek po deleni OR soucet = rovnost XOR exkluzivni soucet <> nerovnost EQV negace XOR < mensi nez IMP implikace, X=>Y nebo (NOT X) OR Y 3. Klavesnice ******************* 3.1. Ridici klavesy obrazovkoveho editoru ============================================= hex CTRL specialni strucna kod klavesa klavesa charakteristika 01 A ignorovano 02 * B premisti kurzor na predchozi slovo 03 * C preruseni vstupu ( konec AUTO a pod. ) 04 * D ignorovano 05 * E smaze text od kurzoru do konce radku 06 * F premisti kurzor na nasledujici slovo 07 * G pipnuti 08 H Back Space smaze znak pred kurzorem 09 I Tab Umisti kurzor na nejblizsi tabulacni pozici vpravo 0A * J line feed 0B * K Home umisti kurzor na pozici 0,0 0C * L CLS smaze obrazovku a umisti kurzor na pozici 0,0 0D * M Return ukoncovac vstupu, odesilaci klavesa 0E * N kurzor na konec radku 0F * O ignorovano 10 * P ignorovano 11 * Q ignorovano 12 * R INS nastaveni rezimu vkladani 13 * S ignorovano 14 * T ignorovano 15 * U smaze cely radek a umisti kurzor na jeho zacatek 16 * V ignorovano 17 * W ignorovano 18 * X Select ignorovano 19 * Y ignorovano 1A * Z ignorovano 1B [ ESC ignorovano 1C * \ --> posune kurzor o jeden znak vpravo 1D * ] <-- posune kurzor o jeden znak vlevo 1E * ^ ^| posune kurzor o jeden znak nahoru 1F * _ v| posune kurzor o jeden znak dolu 7F * DEL DEL smaze znak na kterem je kurzor Funkce oznacene hvezdickou ukoncuji rezim vkladani ( insert ). BASIC-MSX - 4 - 3.2. Funkcni klavesy ======================== F1 color[b] [b] - mezera F2 auto[b] [cr] - return F3 goto[b] [u] - kurzor nahoru F4 list[b] [cls] - smazani obrazovky F5 run[cr] F6 color 15,4,7[cr] F7 cload" F8 cont[cr] F9 list.[cr][u][u] F10 [cls]run[cr] 3.3. Kurzor =============== Kurzorem lze pohybovat volne vsemi ctyrmi smery. Urcita omezeni plati pro krajni situace. Je-li kurzor na konci radku, pohybem vpravo prejde na zacatek nasledujici radky. Avsak je-li kurzor na konci obrazovky, tzn. na konci pos- ledniho radku, je pohyb vpravo a pohyb dolu ignorovan. Je-li kurzor na zacatku radku, pohybem vlevo prejde na konec predchoziho radku. Avsak je-li kurzor na zacatku obrazovky, tzn. na pozici 0,0 ( HOME ), t.j. na zacatku prvniho radku, je pohyb vlevo a pohyb nahoru ignorovan. Je-li kurzor na prvnim radku, je po- hyb nahoru ignorovan a totez plati i opacne pro posledni radek, kde je ignoro- van pohyb dolu. Na konci obrazovky zpusobi stisk rolovani obrazovky. Prikazy CLS a CTRL/L smazou celou obrazovku, bez ohledu na prikazem WIDTH nas- tavenou siri obrazovky. Funkcni klavesy jsou zobrazeny na poslednim radku obrazovky, na ktery neni mozne najet kurzorem. Smazani obrazovky nesmaze funkcni klavesy. Zobrazeni funkcni klaves se zrusi prikazem KEY OFF, cimz se i zpristupni posledni radek obrazovky. Pri zmene zobrazovaciho rezimu prikazem SCREEN a pri zmene sire obrazovky pri- kazem WIDTH se obrazovka smaze. Prechodem mezi zobrazovacimi rezimy se nemeni prikazem COLOR nastavene barvy a prechodem mezi rezimy TEXT a GI se neinicializuje znakovy generator. BASIC-MSX - 5 - 4. Prikazy a funkce MSX-BASIC *********************************** 4.1. Prikazy ================ AUTO radek,krok automaticke cislovani, ukoncuje se CTRL/C BEEP pipnuti, stejne s CTRL/G BLOAD "{CAS:}jmeno",r nacte program ve strojovem kodu a spusti, je-li uveden paramert "r" BSAVE "{CAS:}jmeno",zacatek,konec,start zapise program nebo data ve strojovem kodu, vynecha-li se startovaci adresa, dosadi se pocatecni CALL jmeno slotu(argumenty) zavola rozsirujici slot a preda mu parametry CIRCLE {STEP}(x,y),polomer,barva,pocatecni uhel,koncovy uhel,pomer elipsy nakresli kruznici, elipsu nebo mnohouhelnik CLEAR prostor pro retezce,nejvyssi adresa vymezi prostor pro ukladani retezcu a nastavi zasobnik CLOAD "jmeno" nacte basicky program z magnetofonu CLOAD? "jmeno" porovna basicky program ulozeny na pasce s programem v pameti CLOSE #kanal uzavre kanal CLS smaze obrazovku COLOR fcol,backcol,bordcol nastavi barvu inkoustu, barvu pozadi znaku a barvu pozadi obrazovky CONT pokracovani po BREAK nebo STOP CSAVE "jmeno",ratefactor zapise basicky program na magnetofon, ratefactor urcuje zaznamovou rychlost( 1=1200 Bd, 2=2400 Bd ) DATA polozky data pro cteni prikazem READ DEF FN jmeno(parametry)=funkce definovani uzivatelske funkce DEFDBL rozsah znaku urceni prvniho pismene pro promenne typu "#" DEFINT rozsah znaku urceni prvniho pismene pro promenne typu "%" DEFSNG rozsah znaku urceni prvniho pismene pro promenne typu "!" DEFSTR rozsah znaku urceni prvniho pismene pro promenne typu "$" DEFUSR cislo=adresa nastaveni adresy podprogramu, cislo je v rozsahu 0 az 9 DELETE radek-radek smazani programovych radku DIM seznam poli deklarovani promennych typu pole DRAW retezec nakresli obrazec podle parametru END ukonceni programu ERASE seznam poli smaze promenne typu pole ERROR vyraz% definovani cisla chyby ( v rozsahu 60 az 255 ) BASIC-MSX - 6 - FOR promenna=od TO do STEP krok zacatek cyklu FOR NEXT promenna konec cyklu FOR GOSUB radek volani podprogramu GOTO radek skok na programovy radek IF vyraz podminka THEN prikazy pokracovani, je-li podminka splnena GOTO radek pokracovani, je-li podminka splnena ELSE prikazy pokracovani, neni-li podminka splnena podminene vetveni programu INPUT {"text";/#kanal,}promenne vstup, data se oddeluji carkou, ukoncuji stiskem INTERVAL ON/OFF/STOP periodicky odskakovat/neodskakovat na podprogram KEY cislo fukcni klavesy,retezec definuje text pro funkcni klavesu KEY LIST zobrazi seznam vsech funkcnich klaves KEY ON/OFF povoli/zakaze zobrazovani funkcnich klaves v T a GI KEY (cislo fukcni klavesy) ON/OFF/STOP pri stisku funkcni klavesy skakat/neskakat na podprogram [LET] promenna=vyraz prirazovaci prikaz LINE {STEP}(x_od,y_od)-{STEP}(x_do,y_do),barva,{B/BF} nakresli primku LINE INPUT {"text";/#kanal,} promenna$ nacteni retezce vcetne carek LIST radek-radek vypsani casti basickeho programu LLIST radek-radek vypsani casti basickeho programu na tiskarnu LOAD "{CAS:}jmeno",r nacte basicky program zapsany ve forme ASCII souboru a spusti, je-li uveden paramert "r" LOCATE x,y,prepinac kurzoru umisti kurzor na pozici a zakaze/povoli ho zobrazovat LPRINT {USING retezec;}vyrazy {formatovany} tisk na tiskarnu MAXFILES=vyraz% specifikuje, kolik souboru muze byt otevreno najednou MERGE "{CAS:}jmeno",r nacte basicky program zaznamenany ve forme ASCII souboru, pripoji jej ke stavajicimu programu a spusti, je-li uveden paramert "r" MID$(1.vyraz$),n,m)=2.vyraz$ ulozeni druheho retezce do prvniho MOTOR {ON/OFF} zapne/vypne motor, neni-li uveden parametr ON/OFF,zmeni stav na opacny NEW smaze program a promenne ON ERROR GOTO radek odskok pri chybe, pokud radek=0, tak se vypise bezne chybove hlaseni ON vyraz GOTO seznam skok podle vysledku ON INTERVAL=cas GOSUB radek periodicky odskok na podprogram ON KEY GOSUB radky odskok na podprogramy podle stisku funkcni klavesy BASIC-MSX - 7 - ON SPRITE GOSUB radek odskok na podprogram pri stretu spritu ON STOP GOSUB radek odskok na podprogram pri stisku CTRL/STOP ON STRIG GOSUB radky odskok na podprogramy pri stisku akcniho tlacitka na joysticku ON vyraz GOSUB seznam skok na podprogram podle vysledku vyrazu OPEN "{CAS:/CRT:/GRP:/LPT:}{jmeno}" FOR {INPUT/OUTPUT/APPEND} AS #kanal otevre soubor na danem zarizeni OUT port,vyraz% zapisa data na vystupni port PAINT {STEP}(x,y),barva inkoustu,barva pozadi vybarvi ohranicenou plochu od {relativni} pozice, barva pozadi je pro multicolor, hranicni barva musi byt shodna s barvou kreslici PLAY retezec,retezec,retezec zahraje podle notove osnovy v retezci POKE adresa,vyraz% ulozeni dat do RAM PRESET {STEP}(x,y),barva nastavi graficky kurzor na {relativni} pozici PRINT {#kanal,} {USING retezec;}vyrazy {formatovany} tisk na obrazovku nebo do zarizeni PSET {STEP}(x,y),barva nastavi graficky kurzor na {relativni} pozici PUT SPRITE sprite,{STEP}(x,y),barva,predloha umisti sprite na {relativni} pozici, obarvi ho a urci jeho tvar READ promenne nacteni polozek za prikazy DATA REM komentar komentar v programu RENUM nove,stare,krok precislovani radku RESTORE radek nastavi ukazatel cteni polozek za prikazem DATA na uvedeny radek RESUME nebo RESUME 0 program po chybe pokracuje opet prikazem, ve kterem nastala chyba RESUME NEXT program po chybe pokracuje za prikazem, ve kterem nastala chyba RESUME radek program po chybe pokracuje od uvedeneho radku RETURN {radek} navrat z podprogramu, je-li uveden radek, tak na uvedeny radek RUN {radek/"{CAS:}jmeno"} spusteni programu/nahrani a spusteni programu SAVE "{CAS:}jmeno" zapise basicky program ve forme ASCII souboru SCREEN mode,mag,keyclick,ratefactor,printer option nastavi rezim obrazovky, velikost spritu, pipnuti pri stisku klavesy, nahravaci rychlost a urci je-li pripojen MSX-printer SOUND registr,vyraz% zapise data do PSG SPRITE$(sprite)=vyraz$ zapise do VRAM 32 bajtu informaci o spritech SPRITE ON/OFF/STOP pri stretu spritu skakat/neskakat na podprogram STOP zastavi provadeni programu STOP ON/OFF/STOP pri stisku CTRL/STOP skakat/neskakat na podprogram STRIG (cislo joy) ON/OFF/STOP pri stisku akcniho tlacitka na joysticku skakat/neskakat na podprogram BASIC-MSX - 8 - SWAP promenna,promenna zameni obsah promennych TRON/TROFF zapnuti/vypnuti trasovani VPOKE adresa,vyraz% zapise data do VRAM WAIT port,x,y ceka dokud nenastane ((INP(port) XOR J) AND I) WIDTH vyraz% nastavi siri obrazovky ? {#kanal,} {USING retezec;}vyrazy {formatovany} tisk na obrazovku nebo do zarizeni BASIC-MSX - 9 - 4.2. Funkce =============== ABS(X) vraci absolutni hodnotu X ASC(X$) vraci ascii hodnotu X$ ATN(X) vraci arcus tangents hodnotu X BIN$(N) vraci retezec binarnich cislic cisla N CDBL(X) prevadi X na # CHR$(I) vraci ascii znak I CINT(X) prevadi X na % ( nezaokrouhluje ) COS(X) vraci cosinus X CSNG(X) prevadi X na ! CSRLIN vraci vertikalni souradnici kurzoru EOF(kanal) vraci stav pri cteni ze souboru, 0=konec dat ERL vraci cislo radky, na kterem nastala chyba ERR vraci cislo chyby EXP(X) vraci mocninu e^X FIX(X) vraci SGN(X)*INT(ABS(X)) FRE(0) vraci pocet bajtu pro program FRE("") vraci pocet bajtu pro retezce HEX$(N) vraci retezec hexadecimalnich cislic cisla N INP(X) cte data z portu X INKEY$ vraci znak z klavesnice INPUT$(X{,#kanal}) vraci X nactenych znaku INSTR(I,X$,Y$) hleda prvni vyskyt retezce Y$ v retezci X$ od pozice I a vraci pozici vyskytu INT(X) vraci vetsi % <=X LEFT$(X$,I) vraci levou cast retezce X$ od pozice I LEN(X$) vraci delku retezce LOG(X) vraci logaritmus X LPOS(X) vraci pozici tiskove hlavy, X je prazdny argument MID$(X$,I,J) vraci cast retezce X$ od pozice I v delce J OCT$(N) vraci retezec oktalovych cislic cisla N PAD(cislo paddle) vraci stav touch pad PDL(cislo paddle) vraci stav padlle PEEK(X) vraci bajt z adresy X PLAY(kanal) vraci stav hudebni fronty POINT(x,y) vraci barvu pixelu POS(X) vraci pozici kurzoru, X je prazdny argument RIGHT$(X$,I) vraci pravou cast retezce X$ od pozice I RND(X) vraci nahodne cislo v rozsahu 0 az 1 SGN(X) vraci 1 pri X>0, 0 pri X=0 a -1 pri X<0 SIN(X) vraci sinus X SPACE$(X) vraci retezec mezer v delce X SPC(I) tiskne I mezer,muze byt pouzito pouze v PRINT a LPRINT SQR(X) vraci odmocninu X STICK(cislo joy) vraci smer joysticku STR$(X) vraci znakovou reprezentaci cisla X STRIG(cislo joy) vraci stav akcniho tlacitka joysticku STRING$(I,J) vraci retezec delky I ascii kodu J STRING$(I,X$) vraci retezec delky I z prvniho znaku retezce X$ TAB(I) tiskne mezery do pozice I, muze byt pouzito pouze v PRINT a LPRINT TAN(X) vraci tangents X USR cislo(vyraz%$!#) vola program ve strojovem kodu s predanim parametru VAL(X$) vraci ciselnou hodnotu retezce X$ VARPTR(X) vraci adresu ulozeni promenne VARPTR(#kanal) vraci pocatecni adresu FCB ( file control block ) VPEEK(adresa) cte data z VRAM Vyraz {parametr1/parametr2/parametr3} znamena, ze muze byt zadan jeden nebo take zadny z uvedenych parametru. BASIC-MSX - 10 - 4.3. Specialni povely ========================= 4.3.1. Prikazy ---------------- BASE(cislo)=vyraz% nastavi danou bazovou adresu VDP TIME=vyraz nastavi cas v desetinach sekundy VDP(registr)=vyraz% zapisuje do stavovych registru VDP ( registr: 0 - 7 ) 4.3.2. Funkce --------------- BASE(cislo) vraci hodnotu dane bazove adresy VDP TIME vraci cas v desetinach sekundy VDP(8) vraci status registr VDP 5. Parametry nekterych prikazu a funkci ********************************************* 5.1. BASE ============= mode 0 0 -obrazovka 1 -nic 2 -znakovy generator 3 -nic 4 -nic mode 1 5 -obrazovka 6 -tabulka barev 7 -znakovy generator 8 -tabulka spritu 9 -generator tvaru spritu mode 2 10 -obrazovka 11 -barvy 12 -tvary 13 -tabulka spritu 14 -generator tvaru spritu mode 3 15 -obrazovka 16 -nic 17 -tvary 18 -tabulka spritu 19 -generator tvaru spritu 5.2. COLOR ============== 0 -pruhledna 1 -cerna 2 -zelena 3 -svetle zelena 4 -tmave modra 5 -modra 6 -tmave cervena 7 -svetle modra 8 -cervena 9 -svetle cervena 10 -tmave zluta 11 -svetle zluta 12 -tmave zelena 13 -fialova 14 -seda 15 -bila BASIC-MSX - 11 - 5.3. DEFUSR, USR ==================== adresy se zadavaji jako integer cislo: DEFUSR0=&HE000 nebo jen DEFUSR=&HE000 DEFUSR1=35289% DEFUSR3=ADRESA% volani programu: A=USR0(12) nebo jen A=USR(12) TEST%=USR1(I%) PRINT USR2("ABCD") predavani parametru obema smery: typ integer (%): 0F663H DB 2 0F7F8H DW parametr% 0F7FAH ... typ string ($): 0F663H DB 3 0F7F8H DW $descr 0F7FAH ... $descr DB delka DW adresa$ typ single-precision (!): 0F663H DB 4 0F7F6H DB parametr! 0F7FAH ... typ double-precision (#): 0F663H DB 8 0F7F6H DB parametr# 0F7FEH ... 5.4. DRAW ============= U n -vzhuru o n bodu D n -dolu L n -vlevo R n -vpravo E n -vpravo a vzhuru F n -vpravo a dolu G n -vlevo a dolu H n -vlevo a vzhuru M x,y -pozice (+,-) relativni nebo absolutni ( "M+=var1;,-=var2" ) B -posun bez malovani N -po nasledujicim posunu se vrati do vychozi polohy A n -nastavi uhel n ( 0-3 pro 0, 90, 180 a 270 stupnu ) C n -nastavi barvu n S n -nastavi scale factor X retezec -provede retezec BASIC-MSX - 12 - 5.5. OPEN ============= OPEN "jmeno zarizeni:jmeno souboru" FOR pristup AS #kanal Jmeno zarizeni -------------- neuvedene nebo CAS: - magnetofon CRT: - textova obrazovka GRP: - graficka obrazovka LPT: - tiskarna Pristup ------- INPUT - ze zarizeni se bude cist OUTPUT - do zarizeni se bude psat APPEND - u souboru se bude menit jeho obsah i delka Kanal ----- Cislo 0 az 15, vyzaduje-li soubor I/O bafr, tak cislo volneho bafru. 5.6. PLAY ============= A B C D E F G -noty #, + - krizek - - becko O n -oktava N n -nota L n -delka R n -pomlka T n -tempo V n -hlasitost M n -modulace S n -prubeh X retezec -provede retezec 5.7. PRINT USING ==================== ! - tiskne jen prvni znak vyrazu$ # - pocet # urcuje pocet platnych cislic k tisku , - formatuje cislo po tisicich, za "." zaokrouhluje, napr: ##########,.,## - - minus urcuje, ze se bude tisknout znamenko minus + - plus urcuje, ze se bude pred cislo tisknout znamenko ** - misto mezer budou mezi cislicemi hvezdicky ^^^^ - vyhrazuje misto pro mantisu E+xx Je-li vytisknut pred cislem znak %, znamena to, ze bud bylo cislo zaokrouhleno nebo ze nebyl vyhrazen dostatek mista pro cisla pred desetinnou teckou. Nasledujici parametry plati pouze pro verzi 5.4 a vyse: ------------------------------------------------------- & n mezer & - bude se tisknout n+2 znaku vyrazu$ text1 @ text2 - bude se tisknout text1, pak vyraz a pak text2 \\ - pred cislo se vytiskne \ **\ - pred cislo se vytiskne *\ Prikaldy: PRINT USING "+#######,.##";1000.55 > +1,000.55 A$="Japan":PRINT USING "I Love @ Machine";A$ > I Love Japan Machine BASIC-MSX - 13 - 5.8. SCREEN =============== mode 0 -TEXT 1 -GI 2 -GII 3 -MULTICOLOR mag 0 -8x8 1 -8x8 zvetseno 2 -16x16 3 -16x16 zvetseno keyclick 0 -nepipat <>0 -pipat ratefactor 1 -1200 Bd 2 -2400 Bd 5.9. Ovladace ================= 5.9.1. STICK -------------- joy 0 -kurzorove sipky 1 -joy 1 2 -joy 2 1 8 | 2 \ | / \|/ 7 ---0--- 3 /|\ / | \ 6 | 4 5 5.9.2. STRIG -------------- joy 0 -klavesa space 1 -joy 1, akcni tlacitko A 2 -joy 2, akcni tlacitko A 3 -joy 1, akcni tlacitko B 4 -joy 2, akcni tlacitko B BASIC-MSX - 14 - 6. Chybova hlaseni ************************ Funkce ERR vraci cislo chyby, interpreter vypisuje hlaseni: 1 - NEXT without FOR -NEXT bez FOR 2 - Syntax error -chyba syntaxe nebo neznamy prikaz 3 - RETURN without GOSUB -RETURN bez GOSUB 4 - Out of DATA -nejsou DATA pro READ 5 - Illegal function call -spatne pouziti funkce 6 - Overflow -preteceni 7 - Out of memory -neni pamet 8 - Undefined line number -neexistujici cislo radku 9 - Subscript out of range -mimo dimenze 10 - Redimensioned array -dimenzovani jiz nadimenzovaneho 11 - Division by zero -deleni nulou 12 - Illegal direct -neplatny prikaz, jen pro primy mod 13 - Type mismatch -je ocekavan jiny typ vyrazu 14 - Out of string space -jiz neni prostor pro retezce 15 - String too long -retezec je delsi nez 255 znaku 16 - String formula too complex -retezecova formule je delsi nez 255 znaku 17 - Can't continue -nelze pokracovat prikazem CONT 18 - Undefined user function -neznama uzivatelska funkce 19 - Device I/O error -I/O chyba 20 - Verify error -chyba pri verify 21 - No RESUME -neni RESUME 22 - RESUME without error -nelze pouzit RESUME, nebyla chyba 23 - Unprintable error -netisknutelna chyba 24 - Missing operand -chybejici operand 25 - Line buffer overflow -radkovy bafr pretekl 26 - Unprintable errors -netisknutelne chyby, nejsou definovany ... -a jsou rezervovany budouci rozsirovani 49 - Unprintable error -basiku o nove prikazy 50 - FIELD overflow -preteceni pole zaznamu, chyba record 51 - Internal error -vnitrni chyba 52 - Bad file number -spatne cislo souboru 53 - File not found -soubor nenalezen 54 - File already open -soubor je jiz otevren 55 - Input past end -cteni za koncem souboru 56 - Bad file name -spatne jmeno souboru 57 - Direct statement in file -pri cteni LOADem nebo MERGEm nalezen prikaz urceny pouze pro primy mod 58 - Sequential I/O only -pouze sekvencni I/O pristup 59 - File not OPEN -soubor neni otevren 60 - Unprintable errors -netisknutelne chyby, nejsou definovany ... -a jsou volne pro uzivatele 255- Unprintable error BASIC-MSX - 15 - 7. Mechanismus zaznamu na magnetofon ****************************************** 1200 Bd ------- 0 - 1200 Hz, 1 - 2400 Hz uvodni pisk pred hlavickou ( long header ) - 16000x2400 Hz uvodni pisk pred telem ( short header ) - 4000x2400 Hz 2400 Bd ------- 0 - 2400 Hz, 1 - 4800 Hz uvodni pisk pred hlavickou ( long header ) - 32000x4800 Hz uvodni pisk pred telem ( short header ) - 8000x4800 Hz data ---- 0 - start bit xxxxxxxx - bajt 1 - stop bit format CSAVE/CLOAD - tokenized ------------------------------ long header, 10x0D3H, 6 bajtu jmena - hlavicka programu short header, tokenizovany BASIC text, 7x00H - telo programu format SAVE/LOAD/OPEN - ASCII text ---------------------------------- long header, 10x0EAH, 6 bajtu jmena - hlavicka souboru short header, 256xdata, short header, 256xdata, ... short header, 256xdata ktera obsahuji CTRL/Z - telo souboru format BSAVE/BLOAD - binary --------------------------- long header, 10x0D0H, 6 bajtu jmena - hlavicka souboru short header, pocatecni adresa 2 bajty, koncova adresa 2 bajty, startovaci adresa 2 bajty, data - telo souboru BASIC-MSX - 16 - 8. Operacni system MSX, emulator verze 1.C ************************************************ V teto casti jsou popsany rozdily mezi originalem pocitace MSX a emulatorem. Podstatne rozdily jsou v klavesnici. Neexistujici klavesy jsou nahrazeny kom- binaci stisku nekolika jinych klaves, vyznam nekterych klaves byl zcela zmenen. 8.1. Klavesnice =================== 8.1.1. Specialni klavesy -------------------------- F1 az F5 / CTRL/1 az CTRL/5 F6 az F10 / CTRL/levy SHIFT/1 az CTRL/levy SHIFT/5 GRAPH / CTRL/6 - navrat do LETTER modu stiskem RESET CODE / CTRL/7 - navrat do LETTER modu stiskem RESET INS / CTRL/P HOME / CTRL/K BACKSPACE / CTRL/H DEL / CTRL/DEL BREAK / CTRL/RESET STOP / SHIFT/RESET CAPSLOCK / pravy SHIFT ESC / FUNC Na funkcnich klavesach jsou nadefinovana jina klicova slova. 8.1.2. Joystick 0 ------------------- smerove sipky / B N M , SPACE / Z SEL / X 8.2. Magnetofon =================== Basicky prikaz "MOTOR" v originalu MSX pri neuvedeni dalsiho parametru motor zapne, byl-li vypnut a vypne, byl-li zapnut. V emulatoru motor vzdy vypne. Ve verzi 1.C byl opusten puvodni MSX format zaznamu souboru na magnetofon a byl nahrazen formatem SORD m.5, cimz se znacne usnadnila manipulace se sou- bory. S tim byla castecne pozmenena i syntaxe nekterych prikazu. Jmeno souboru se i nadale zadava jako 6ti pismenne, ale interpretr jej doplni o prislusnou priponu. Pro basic je to "jmeno.MX", pro strojovy kod "jmeno.BN" a pro format ASCII "jmeno.AS". Attribut je 01 pro spojity a 04 pro nespojity soubor. Pri nacitani se kontroluje attribut a ve jmenu souboru tecka a prvni znak pripony. Zmeny s tim spojene: -zarizeni "CAS:" bylo nahrazeno zarizenim "CMT:". -Skip a Found se vypisovalo pouze tehdy, kdyz byla nalezena hlavicka spravneho typu souboru. Nyni vypisuje Skip i kdyz je nalezena hlavicka jineho typu sou- boru, cimz se usnadnuje hledani. -prikaz CLOAD/CLOAD?/CSAVE pracoval pouze s magnetofonem. Uvedeni jmena jineho zarizeni melo za nasledek pouze to, ze se jmeno zpracovalo i s timto nazvem, napriklad CSAVE "CAS:POKUS" zaznamenalo na pasek soubor se jmenem "CAS:PO". Nyni se pri vynechani jmena zarizeni a nebo pri uvedeni jmena zarizeni "CMT:" pracuje se zarizenim "CMT:", jehoz jmeno je ze specifikace souboru odseparo- vano. Pri uvedeni jineho jmena ( musi mit 3 znaky ) se skoci na hacek HDEVN na adrese 0FEC1H ( tzv. hook ), kde je RET a po navratu se jde na chybu "Bad file name". To umoznuje programatorum napsat program i pro jina zarizeni a "povesenim" se na hacek je aktivizovat. -prikaz CLOAD? jde pri neshode dat na "Verify error". Protoze MONITOR ROM ta- kovouto chybu negeneruje, jde se v emulatoru na "Device I/O error". -zaznamova rychlost se v prikazech CSAVE a SCREEN zadavala pouze cislem 1 nebo 2. Nyni se zadava jako v m.5 cislem 0 az 255. Pokud se zada hodnota mensi nez &H14, je to stejne, jako kdyby se zadala hodnota &H14. Rychlost lze samozrej- me zadat i prikazem POKE &H7019,cislo. BASIC-MSX - 17 - B A S I C - M S X Podle ruznych materialu a na zaklade vlastnich zku- senosti sestavil a napsal LZR Soft. V Kladne 1991. Vydani prvni,pocet vytisku dle potreby. Vytisteno na tiskarne LA120 firmy DEC. 22-JAN-91