Obsah této stránky: |
MZ - 700 BASIC 1Z-013B v1.0A
Tato část knihy se zabývá interpretem BASICu MZ-700.
Speciálně půjde o kazetovou verzi BASICu, která se od Q-disk
verze BASICu liší hlavně tím, že adresy přesně neodpovídají. K mikropočítači MZ-800 patří dvě různé verze BASICu. jedna
z nich je MZ-700 BASIC, který sice ponechává více volného místa
v paměti, ale nepodporuje zvláštní možnosti grafiky a generování
tónů. Proto se zvlášť hodí pro psaní programů, které tyto
zvláštnosti nepotřebují jako například práce s daty. MZ-700 BASIC se vždy hlásí bílou barvou na modrém pozadí a
tím se dá snadno rozeznat od MZ-800. BASIC se nahrává z kazety nebo disku a potom se sám spustí.
Nyní můžete vkládat vlastní programy, nebo je nahrát z kazety,
nebo disku. Některé příkazy v manuálu nejsou uvedeny, ale BASIC jim
přesto rozumí.
TRON Tento příkaz vypisuje čísla řádků, které jsou interpretem právě zpracováván. Tento příkaz je užitečný zejména při hledání chyb nebo tvoření programu.
TROFF Vypíná příkaz TRON
POKE O tomto příkazu je sice v manuálu zmínka, ale je zamlčeno, že může být použit také s několika parametry např.
POKE 53248, 65,66,67 je stejné jako
POKE 53248, 65
POKE 53248, 66
POKE 53248, 67
JOY Tento příkaz kontroluje Joystick. V MZ-800 jsou ale definovány nové programy pro Joystick takže tento příkaz by mohl být bez účinku. (Blíže neznámá činnost, parametry 0 - 7 vrací log hodnotu)
CLS Příkaz maže obrazovku a přesouvá kursor do levého horního rohu.
HEX$ Převádí dekadické číslo na hexadecimální, např.: PRINT HEX$ (255) dává FF.
Organizace řádků BASICu v paměti
Programový řádek se do paměti neukládá tak, jak se objevuje
na obrazovce nebo jak se zadává, ale v kódech. Každému příkazu
se přiřadí hexadecimální kód (číslo), který je dlouhý jeden nebo
dva byty. To má tu výhodu, že každý příkaz potřebuje maximálně
jen dva byty, většina povelů se dokonce obejde s jedním bytem. Např.: Příkaz RESTORE má kód 85h místo 7 znaků. Program v MZ-700 BASICu začíná vždy od adresy 6BCFh.
Struktura programového řádku je následující:
1. První dva znaky určují počet znaků v program. řádku. Může mýt maximálně 255 bytů. To vychází z podmínek, že druhý byt (High byte) musí být vždy 00H.
2. Třetí a čtvrtý byt tvoří číslo programové řádky BASICu.
3. Následující byty až po koncový byt 00H jsou kódy, ASCII kódy, proměnné nebo řetězce.
4. Koncový byt 00H. Ten ukazuje konec programové řádky.
Je-li počet znaků 00, číslo řádky 00, je to konec celého programu v BASICu.
Příklad uložení programu v paměti:
Abychom ještě jednou zdůraznili celý postup ukládání řádků do paměti, vylistujeme si krátký program.
10 REM BBG-DEMO
20 FORA=1TO255
25 PRINTCHR$(A);:NEXT
30 PRINT"Info BASIC"
40 GOTO10
60 END
Výpis paměti:
adresa obsah význam
--------------------------------------------------------
6BCF 0F počet Bytů v řádce (low Byte)
6CD0 00 (high Byte)
6CD1 0A 10 - číslo řádky (low Byte)
6CD2 00 (high Byte)
6CD3 97 REM
6CD4 20 SPACE (mezera)
6CD5 42 B
6CD6 42 B
6CD7 47 G
6CD8 2D -
6CD9 44 D
6CDA 45 E
6CDB 4D M
6CDC 4F O
6CDD 00 konec řádky
6CDE 15 počet Bytů v řádce (low Byte)
6CDF 00 (high Byte)
6CE0 14 20 - číslo řádky (low Byte)
6CE1 00 (high Byte)
6CE2 8D FOR
6CE3 41 A
6CE4 F4 =
6CE5 15 tento Byt znamená, že následuje velká konstanta
6CE6 81 konstanta (ve vnitřním kódu)
6CE7 00 skok na adresu 1581h
6CE8 00 -/-
6CE9 00 -/-
6CEA 00 -/-
6CEB E0 TO
6CEC 15 následuje velká konstanta
6CED 88 konstanta (ve vnitřním kódu)
6CEE 7F skok na adresu 1500h
6CEF 00 -/-
6CF0 00 -/-
6CF1 00 -/-
6CF2 00 konec řádky
6CF3 0E počet Bytů v řádce (low Byte)
6CF4 00 (high Byte)
6CF5 19 25 - číslo řádky (low Byte)
6CF6 00 (high Byte)
6CF7 8F PRINT
6CF8 FF 1. Token CHR$
6CF9 A0 2. Token CHR$
6CFA 28 (
6CFB 41 A
6CFC 29 )
6CFD 3B ;
6CFE 3A :
6CFF 8E NEXT
6D00 00 konec řádky
6D01 12 počet Bytů v řádce (low Byte)
6D02 00 (high Byte)
6D03 1E 30 - číslo řádky (low Byte)
6D04 00 (high Byte)
6D05 8F PRINT
6D06 22 "
6D07 49 I
6D08 B0 n
6D09 AA f
6D0A B7 o
6D0B 20 SPACE (mezera)
6D0C 42 B
6D0D A1 a
6D0E A4 s
6D0F A6 i
6D10 9F c
6D11 22 "
6D12 00 konec řádky
6D13 09 počet Bytů v řádce (low Byte)
6D14 00 (high Byte)
6D15 28 40 - číslo řádky (low Byte)
6D16 00 (high Byte)
6D17 80 GOTO
6D18 0C
6D19 CF 1. Byt adresa skoku
6D1A 6B 2. Byt adresa skoku (6BCF)
6D1B 00 konec řádky
6D1C 06 počet Bytů v řádce (low Byte)
6D1D 00 (high Byte)
6D1E 3C 60 - číslo řádky (low Byte)
6D1F 00 (high Byte)
6D20 98 END
6D21 00 konec řádků v BASICu
6D22 00 konec číslování řádků
6D23 00 konec číslování
Příkazy BASICu, adresy a kódy (TOKEN)
Zde je ještě jednou vypsáno postavení všech povelů BASICu, jejich kódů a
odpovídajících adres programů. Některé příkazy jsou sice obsaženy v tabulce
kódů, ale vedou k hlášení Syntax Error. Příkazy jsou v seznamu odpovídajícím
způsobem označeny. Tyto příkazy jsou převážně pro disketu, a proto z důvodu
šetřením místa nejsou definovány pro kazetovou verzi BASICu, která je zde
probírána.
příkaz TOKEN adresa poznámka
--------------------------------------------------------
GOTO 80 3807
GOSUB 81 36CD
RUN 83 1C6E
RETURN 84 3694
RESTORE 85 25A8
RESUME 86 36FB
LIST 87 4102
DELETE 89 3456
RENUM 8A 3471
AUTO 8B 21D5
FOR 8D 1CBF
NEXT 8E 1D6F
PRINT 8F 1E6A
INPUT 91 22CA
IF 93 383F
DATA 94 3323 viz REM
READ 95 25E3
DIM 96 5AEA
REM 97 3323 viz DATA
END 98 21B7
STOP 99 2071
CONT 9A 209F
CLS 9B 38CE
ON 9D 3792
LET 9E 1959
NEW 9F 2248
POKE A0 33D7
OFF A1 20FE ERROR
MODE A2 4DD0
SKIP A3 4E2C
PLOT A4 3A31
LINE A5 4E8C
RLINE A6 4EFE
MOVE A7 4F05
RMOVE A8 4F14
TRON A9 227E
TROFF AA 2282
INP AB 3350
GET AD 3389
PCOLOR AE 4F1B
PHOME AF 4F50
HSET B0 4F64
GPRINT B1 4F76
KEY B2 4321
AXIS B3 4FFC
LOAD B4 41D1
SAVE B5 42A4
MERGE B6 41AB
CONSOLE B8 39CB
OUT BA 3339
CIRCLE BB 5050
TEST BC 5227
PAGE BD 523B
ERASE CD 20FE ERROR
ERROR C1 2105
USR C3 3305
BYE C4 13C2
DEF C7 251B
WOPEN CE 46A3
CLOSE CF 4545
ROPEN D0 46DF
KILL D9 20FE ERROR
TO E0 FOR program
STEP E1 -/-
THEN E2 IF program
USING E3 PRINT program
TAB E6 PRINT -/-
SPC E7 PRINT -/-
OR E8 20FE ERROR
AND EC 20FE ERROR
> < EE MATEMAT. program
< > EF -/-
= < F0 -/-
< = F1 -/-
= > F2 -/-
> = F3 -/-
= F4 -/-
> F5 -/-
< F6 -/-
+ F7 -/-
- F8 -/-
/ F8 -/-
* FC -/-
EXP(^) FD -/-
SET FE 81 3902
RESET FE 82 3935
COLOR FE 83 4473
MUSIC FE A2 443C
TEMPO FE A3 4463
CURSOR FE A4 336C
VERIFY FE A5 42D1
CLR FE A6 224E
LIMIT FE A7 340B
BOOT FE AE 3A6A skok na 0000H
INT FE 80 6277
ABS FF 81 6272
SIN FF 82 63C6
COS FF 83 63B0
TAN FF 84 648D
LN FF 85 6736
EXP FF 86 6615
SQR FF 87 62D0
RND FF 88 65D0
PEEK FF 89 65B5
ATN FF 8A 62EE
SGN FF 8B 657A
LOG FF 8C 672A
PIA FF 8E 65A2
RAD FF 8F 659D
EOF FF 95 20FE
JOY FF 9E 39A3
STR$ FF A1 5677
HEX$ FF A2 55EC
ASC FF AB 56A0
LEN FF AC 56AC
VAL FF AD 56B4
ERN FF B3 5562
ERL FF B4 556A
SIZE FF B5 5548
LEFT$ FF BA 56C7
RIGHT$ FF BB 56E4
MID$ FF BC 5702
TI$ FF C4 573F
FN FF C7 5CF7
Manipulace s PEEK a POKE
Tato část knihy se zabývá BASIC monitorem MZ-700, který leží v oblasti 0000h až
0FFFh. Jsou zde udány specielní adresy, jejichž změna může sloužit k vytváření
efektů. Tato paměťová místa mohou být měněna pomocí POKE nebo USR. Adresy v
paměti jsou udány jednak v dekadickém, jednak v hexadecimální tvar.
hexa
dekad význam
--------------------------------------------------------
0015 21 Zobrazení řetězce na obrazovce.
USR(21,A$) A$ - vypíše od pozice kursoru
0030 48 Zahraje hudební řetězec
003E 62 Vyvolá se pomocí USR. Vytvoří krátký tón.
USR (62), USR ($003E)
0044 68 USR (68) zapíná frekvenci tónového generátoru, řiditelná přes 2717
a 2718
0047 71 USR (71) vypíná tónový generátor
004D 77 Plotter zap/vyp. Když je oblast této paměťové buňky 1 zapíná, 0
vypíná
004E 78 CONSOLE zap/vyp. Když je obsah 1, jsou parametry zadány, když je 0
nejsou
0054
84 Tato adresa obsahuje momentální sloupec, ve kterém je kursor.
0055 85 Tato adresa obsahuje momentální řádek, na které se nachází kursor.
0056
86 Zde je první argument příkazu Console.
0057 87 Zde je poslední řádek oblasti přetáčení obrazu pro příkaz Console.
0059 89 Pomocí této adresy může být vytvořen autorepeat. Klávesa potom může
zůstat stisknuta a nemusí se opětovně mačkat. To se dosáhne pomocí POKE 89,240.
Původní nastavení POKE 89,83
005B 91 Tato adresa obsahuje počáteční sloupec oblasti přetáčení obrazu.
005C 92 Tato adresa obsahuje poslední sloupec oblasti přetáčení obrazu.
005D 93 Zde jsou uschovány informace o barvách. POKE 93,39 by změnilo barvu
popředí na černou a barvu pozadí na bílou. Jestliže se k 39 přičte ještě 128,
pak následuje výpis ve 2. sadě znaků. např. POKE 93,39+128:PRINT"BBG BUCH" 005F
95 Tato buňka obsahuje ASCII hodnotu napo sledy stisknuté klávesy.
0060 96 Tato adresa obsahuje znak kursoru v zobrazovacím kódu. Základní
nastavení je 239 POKE 96,73 by změnilo kursor na ?
0064
100 AM/PM (dopol./odpol.) přepínání vnitřních hodin. Jestliže je TI$ méně než
12.00 hod. dopol., je tato buňka 0, jinak 1. POKE 100,1 by nastavilo TI$ z
164312 na 044312.
0124 292 Při POKE 292,1 se při každém stisknuti klávesy CR vytvoří krátký
tón. POKE 292,4 písknutí vypíná.
0288 648 V této buňce může být měněna rychlost, kterou se pohybuje kursor při
trvalém testování klávesnice. Základní nastavení je 10. Větší než 10 je
rychlejší, menší než 10 je pomalejší.
04B3 1203 Jestliže se během provádění programu stiskne klávesa BREAK, provádění
programu se na krátký čas přeruší. Tomu se může zamezit POKE 1203,201. Základní
nastavení je POKE 1203,216.
0655 1621 Přetáčení obrazu nahoru. USR(1621) má stejný efekt, jako stisknutí
klávesy SHIFT+cursor nahoru.
067D 1661 Přetáčení obrazu dolů. Stejně jako nahoru.
07F9 2041 Tím se může měnit vzhled Alfa-módového kursoru. Změna se ale provede
až po návratu z grafického módu.
0A32 2610 Obsahuje hodnotu tempa pro muziku. Když je tempo 1, je zde 7, když
je tempo 6, je zde 2 atd.
0A39 2617 Byty 2617 a 2618 řídí tónový generátor. Generátor se zap. USR(68) a
vyp. USR(71).
0FFC 4092 Zde je kód (File code) souboru, naposledy nahraného programu.
0FFD 4093 Zde začíná jméno naposledy nahraného programu. Délka může mýt
maximálně 16 znaků.
1010
4112 Na této a následující adrese je zapsaná délka naposledy nahraného
programu.
RAM monitor
Ještě jednou si zopakujeme nejdůležitější standardní programy, které jsou k
dispozici v BASIC-monitoru a následně i v RAM monitoru. Tento monitor je značně
kompatibilní s MZ-700 ROM monitorem. Tabulka skoků na začátku až po 0066h je s
ROM-monitorem identické.
adresa obsah mnemonic
význam
--------------------------------------------------------
0000 C3DA00 JP 00DA Začátek a do 1819h je 0
0003 C32001 JP 0120 Vstup řádky - nepoužit
0006 C3FE04 JP 04FE Nová řádka 2
0009 C3FA04 JP 04FA Nová řád., když kursor není na nové
řádce
000C C33105 JP 0531 Print Space
000F C30205 JP 0502 Print Tab 0,10,20,30,....
0012 C33305 JP 0533 Print Chr. (ASCII)
0015 C3DA04 JP 04DA Print zprávy není použit
0018 C3DA04 JP 04DA Print zpráva siehe 0051h
0018 C3F002 JP 02F0 Vstup klávesy není použit
001E C3A004 JP 04A0 BREAK
0021 C33B0A JP 0A3B Zápis záhlaví
0024 C33F0A JP 0A3F Zápis programu
0027 C37A0A JP 0A7A Čtení záhlaví
002A C37E0A JP 0A7E Čtení programu
002D C3940A JP 0A94 Kontrola
0030 C3E408 JP 08E4 Melody od 'DE' konec 0Dh
0033 C35A0D JP 0D5A Nastavení času
0036 0000 NOP NOP žádný
příkaz
0038 C3E40D JP 0DE4 program přerušení
003B C3E40D JP 0DA7 čtení času, Akumulátor obsahuje 0=AM,
1=PM DE obsahuje sekundy.
003E C3130A JP 0A13 Beep. Krátký tón
0041 C3040A JP 0A04 Tempo. Regostr A (1-7)
0044 C3B709 JP 09B7 Začátek melodie
0047 C3D209 JP 09D2 Konec melodie
004A C32001 JP 0120 Vstu řádky (0003)
004D 00
Plot Flag 1=zap, 2=vyp
004E 00
Console Flag 1=zap, 2=vyp
004F FF
Basicflag FF=Basic, 64=Monitor
0050 00
Použit při nahrávání CMT
0051 C3DA04 JP 04DA Tisk zprávy
0054 00
Kursor sloupec
0055 00
Kursor řádek
0056 00
Console start. řádek
0057 18
Console - počet řádek
0058 C35303 JP 0253 Vstup klávesy, bez opak.
005B 00
Console Start Spalte
005C 27
Console ANzahl der Spalten
005D 71
Barva obrazovky, 71=bílá-modrá
005E 00
005F 00
ASCII kód naposledy stisknuté klávesy
0060 00
Zobrazovací kód kursoru
0061 C36A0E JP 0E6A Program Joystick
0064 00
AM/PM Flag. 0=AM, 1=PM
0065 00
Pro Joystick
0066 00
-/-
Dále sou uvedeny, adresy kde začínají jednotlivé standardní programy, které jsou
k dispozici v RAM-monitoru MZ-700. Jsou udány vstupní adresy v hexadecimálním
tvaru
1443 SAVE
1469 LOAD
14A9 VERIFY
14B0 RETURN
15BD MEMORY SET
1545 GOTO
15F4 FIND
154A DUMP
165A TRANSPER
Užitecné adresy v S-BASICu.
Následující seznam S-BASIC monitoru a BASICu podává přehled o užitečných
adresách a podprogramech a o struktuře a organizaci BASICu. Všechny údaje o
adresách jsou v hexadecimálním kódu.
0067 až po 00A6 jsou adresy CTRL (řídící). Ty určují adresy skoků po ?CHR$
(příkazu nebo CTR klávesy společně s jinou klávesou.
00EA Tento standardní program je vyvolán příkazem PEEK pro přístup na VIDEORAM
00F2 Tento standardní příkaz je zapotřebí na VIDEORAM pomocí příkazu POKE.
04A0 Příkaz testuje, zda byla stisknuta klávesa BREAK, nebo SHIFT+BREAK.
04CD Zde se převádí ASCII kód do zobrazovacího kódu (Display kód)
0EFC Tabulka pro přepočítávání z ASCII kódu do zobrazovacího kódu.
0FFC Na této adrese je uložen kód souboru naposledy nahraného programu.
0FFD Od této adresy je jméno naposledy nalezeného programu.
100E Zde je délka naposledy nahraného programu. Na prvním místě je nižší
slabika (low Byte) a potom vyšší (high Byte).
1010 Na tomto místě je adresa autostartu. V BASICu je ale bez významu
110F Vyrovnávací paměť (Buffer). Zde je poslední řádka, která byla vložena
klávesnicí.
1132 Odtud jsou povely, kterými jsou obsazeny klávesy funkcí. Tabulka sahá až
po 13C1H.
1832 Sem skáče BASIC po nahrátí. Tento program také maže paměť až do konce. Na
adrese 182EH je vyšší byt. Jestliže se sem vloží např. A0H, paměť se vymaže jen
po A000H. Zde je také text hlášení po startu.
1848 Sem skáčou všechny skoky z ROM-monitoru do BASICu.
1869 Z této adresy vychází READY.
1872 Od této adresy leží standardní program pro vkládání měnění řádků programu
BASICu.
18FE Zde začíná prováděcí program RUN.
19B9
Odtud začíná startovací program, který převádí programy MZ-80 K na MZ-700.
20C7 Zde jsou ERROR tabulky a příslušná čísla.
21A7 Tato adresa obsahuje právě aktuální čísla řádky programu v BASICu.
2287 Od této adresy je standardní program TRON.
242F Až po adresu 245BH jsou nesmyslné věci.
2AF5 Odtud až po 2CA8H je první tabulka klíčových slov.
2CA9 Odtud až po 30A8H je nevyužita paměť. Sem se mohou zavést vlastní
programy.
30A9 Odtud je druhá tabulka klíčových slov.
3147
Zde jsou adresy jednotlivých klíčových slov. Jsou vyhledávány analogicky k
tabulkám.
38D5 Stack Pointer
38D9 RUN přepínač 1=Stop 0=RUN
38DD TRON přepínač 1=TRON 0=TROFF
38E6 Tato a následující adresa obsahuje aktuální číslo řádky.
3D86 Odtud je standardní program přepočtu z binárních do dekadických hodnot v
paměti.
4795 Odtud je standardní program, který převádí řádky v BASICu na kódy. V tomto
způsobu zápisu (kódech), je program též uložen v paměti.
49CD Působí právě opačně než standardní program na adrese 4795H.
4B72 Zde jsou chybová hlášení ve srozumitelné řeči. Tabulka sahá až po 4D4FH.
528B Zde se zkoumá správnost matematických programů.
6AB3 Konec programu v BASICu.
6AB5 Ukazatel proměnných
6AB7 Ukazatel zásobníku pro BASIC.
6ABD Konec paměti, která je k dispozici pro BASIC.
6ABF Začátek programu v BASICu.
Paměť barev a druhá sada znaků.
Při zobrazování znaků a barev mějte vždy na paměti následující! Paměť znaků leží
v oblasti D000H - D3E7H. To odpovídá přesně 1000 znakům a odpovídá to 25 řádkům
po 40 znacích. V této oblasti jsou uloženy pouze znaky. Příslušné informace o
barvě leží přesně o 2048 Bytů výše. Leží tedy v oblasti D800H - DBE7H.
Pozn.: BASIC MZ-700 používá celkem 50 řádků ve kterých lze editovat
(SHIFT+nahoru,dolů nebo USR).
Příklad: Jak může být vytvořen znak s barvou. Znak se objeví v levém horním
rohu.
10 POKE 53248, 83:REM Vytvoření znaku
20 POKE 53248+2048, 64:REM Přebarvení ze zelené na černou
Druhá sada znaků je aktivována vždy, když je v paměti barev více než 128 (80H).
Proto musí být k barvě v našem příkladu přičteno 128.
Příklad: Přepnutí celého obsahu obrazovky na druhou sadu znaků a nastavení barvy
na zelenou.
FOR
X=55296 TO 55295:POKE X,64+128:NEXT
Ale také příkazy PRINT mohou být zobrazeny přímo ve 2. sadě znaků. K tomu slouží
místo v paměti 93 (5DH).
Příklad:
POKE 93,PEEK(93)+128:?"700 Příklad"
Převod programů z MZ-80 K K tomu slouží místo v paměti 93 (5DH).
Příklad:
POKE 93,PEEK(93)+128:?"700 Příklad"
Převod programů z MZ-80 K
S-BASIC má standardní program, který převádí programy z MZ-80 K do MZ-700. Tento
program umí překládat pouze kódy. Především příkazy POKE, PEEK a USR by měli být
před spouštěním překontrolovány ještě jednou. Všechny POKE mezi 53248 až 54217
sahají do oblasti Videa a nemusí se měnit.
Ostatní POKE většinou přímo ovlivňují BASIC a proto by měly být používány
opatrně. Následuje výpis POKE, které by měli být změněny v každém případě.
Adresy 4465 a 4466 řídí v MZ-80 K kursor(4465 je sloupec, 4466 je řádka). To
může být změněno tím, že se oba argumenty napíší za příkaz CURSOR. 17828 je u MZ-80
K adresa pro trvalé testování kláves. Nová adresa je nyní 89.
Adresy 4513 a 4514 jsou u MZ-80 K určeny pro řízení tónového generátoru. Tyto
adresy jsou u MZ-800 (v módu MZ-700) 2617 a 2618. POKE 4464, 1 přeřazuje u MZ-80
K klávesnici na malá písmena. Též může být zadáno PRINT CHR$(5). Přeřazení zpět
na velká písmena bylo u MZ-80 K pomocí POKE 4464, 0. Tento příkaz může být
proveden pomocí PRINT CHR$(6).
To jsou v podstatě všechny důležité POKE, které se musí změnit. U všech
ostatních POKE se musí postupovat s nejvyšší opatrností, protože by mohlo dojít
ke smazání BASICu i celého programu. Pro jistotu by měly být všechny neznámé POKE
nejprve opatřeny REM, dokud Vám nebude jasný jejich význam.
Adresy jako 10167,10680,10682 a 7125 můžete v každém případě bez náhrady
vymazat.
Logické operace AND / OR
V mnoha časopisech a výpisech programů se vyskytují příkazy AND a OR. S-BASIC
těmito příkazy ale nedisponuje. To by však nemělo být problémem, protože tyto
příkazy se dávají snadno nahradit. (Pouze v podmínce, ne v logických operacích)
znak " * " se použije pro AND
Znak " + " se použije pro OR
Příklad:
1) místo IF A=1 AND B=2 THEN
lze psát IF (A=1) * (B=2) THEN
2)
místo IF A= 1 OR B=2 THEN
lze psát IF (A=1) + (B=2) TFEN
Je důležité sledovat, aby všechny takto použuté argumenty byly v závorkách
Vyloučení činnosti klávesy BREAK a SHIFT+BREAK
Zde bude uvedeno, jak se dá program zajistit proti přerušení nebo zastavení
klávesou SHIFT+BREAK. Stisknutí samotné klávesy BREAK nepřeruší běžící program,
ale na krátkou dobu ho zastavit.
POKE 1203, 201 - zastavení zakázané
POKE 1203, 216 - zastavení povoleno
Při zabránění přerušení pomocí SHIFT+BREAK se musí změnit více paměťových míst.
POKE 6452, 54,25 přerušení zakázané
POKE 6452, 113,32 přerušení povoleno
Nyní může být program přerušen příkazem INPUT. Tomu zabráníme pomocí těchto POKE
POKE 8987, 29,35 přerušení zakázané
POKE 9056, 98,35
POKE 8987, 105,32 přerušení dovoleno
POKE 9056, 105,32
Změna barev bez vymazání obrazovky
Normálně v S-BASICu není žádná možnost přiřadit celé obrazovce jinou barvu bez
její vymazání. To právě může mýt velký význam pro vytvoření několika efektů.
Proto zde ukážeme možnost, která to dovoluje. Může být změněna jak barva pozadí,
tak barva popředí. To může být programátorem v programu velice efektně využito.
COLOR,,6,1:USR($072D)
Tímto příkazem se provádí změna barvy. Je ale třeba dát pozor, protože se kursor
přesune do levého horního rohu
Odvozené funkce
MZ-700 BASIC má množství matematických funkcí, ale mnoho funkcí nemá v sadě
příkazů obsaženo. Tyto funkce mohou být velmi užitečné především v matematických
programech. Tyto funkce mohou být odvozeny z funkcí, které jsou k dispozici a
dají se též psát v MZ-800 BASICu. Proto zde uvádíme sestavu dalších důležitých a
užitečných funkcí.
Secans SEC(X)=1/COS(X)
Cosecans CSC(X)=1/SIN(X)
Cotangens COT(X)=1/TAN(X)
Arcussinus ARCSIN(X)=ATN(X/SQR(-X*X+1))
Arcuscosinus ARCCOS(X)=ATN(X/SQR(-X*X+1))*PI/2
Arcussecans ARCSEK(X)=ATN(SQR(X*X-1))+(SGN(X)-1)*PI/2
Arcuscosecans ARCCSC(X)=ATN(1/SQR(X*X-1))+(SGN(X)-1)*PI/2
Arcuscotangens ARCCOT(X)=-ATN(X)*PI/2
Hyperbelsinus SINH(X)=(EXP(X)-EXP(-X))/2
Hyperbelcosinus COSH(X)=(EXP(X)+EXP(-X))/2
Hyperbeltangens TANH(X)=-EXP(-X)/(EXP(-X))*2+1
Hyperbelsecasns SECH(X)=2/(EXP(X)+EXP(-X))
Hyperbelcosecans CSCH(X)=2/(EXP(X)-EXP(-X))
Hyperbelcotangens COTH(X)=EXP(-X)/(EXP(X)-EXP(-X))*2+1
Areasinus ARSINH(X)=LN(X)+SQR(X*X+1))
Areacosinus ARCOSH(H)=LN(X+SQR(X*X-1))
Areatangens ARTANH(X)=LN((1+X)/(1-X))/2
Areasecans ARSECH(X)=LN((SQR(-X*X+1)+1)/X)
Areacosecans ARCSCH(X)=LN((SGN(X)*SQR(X*X+1)+1)/X)
Areacotangans ARCOTH(X)=LN((X+1)/(X-1))/2
Pořízení bezpečnostní kopie S-BASICu
Doporučuje se pořídit si bezpečnostní kopii S-BASICu a tuto také potom používat
k denní potřebě, protože originální kazeta by
mohla být náhodou vymazána nebo přehrána. Dejte ale pozor na to, že je dovoleno
udělat pouze jednu kopii a tu jen pro osobní použití
Pro vytvoření této kopie postupujte takto:
- zapnout počítač
- stisknout klávesu M, tím se dostanete do monitoru
- vložit J00AD a stisknout CR
- MC000 CR
- CD CR
- 27 CR
- 00 CR
- CD CR
- 2A CR
- 00 CR
- C3 CR
- 08 CR
- 11 CR
- stisknout SHIFT+BREAK
- vložit originál kazetu a přetočit na začátek
- vložit JC000 a stisknout CR
- stisknout PLAY na magnetofonu
- program je nahraný po objevení "HIT ANY KEY"
- vyndat originál kazetu
- vložit prázdnou kazetu
- stisknout libovolnou klávesu
- stisknout klávesu RECORD PLAY na magnetofonu
- čekat asi 7 minut
- vyndat nahranou kazetu s kopii BASICu
Rozšíření sady příkazů S-BASICu
Zde budou ukázána některá rozšíření pro kazetovou verzi S-BASICu. Všechny
následující rozšíření nepotřebují žádné další místo v paměti, protože používají
prázdnou paměť uvnitř BASICu. Pro vložení standardních programů a rozšíření
nejprve nahrajte S-BASIC z kazety do počítače a potom vložte všechny řádky, před
kterými je uvedeno číslo řádky. Texty mezi řádky programu jsou pouze pro
vysvětlení a slouží jako komentář.
1) READY s tónem
Následující standardní program vytvoří při každém READY krátký tón. Toto
umožňuje, aby po LOAD nebo jiných dlouhých procedurách byl jejich konec vnímán i
akusticky.
100 REM READY TON
110 POKE 6256,129,48:POKE 12417,175,205,62,0,205,6,0,201
2) Hudba při ERROR
Při každé chybě se pomocí tohoto programu vytvoří krátký hluboký tón. Tím se
chyba neobjeví jen na obrazovce, ale je provázen hlubokým tónem.
120 REM Hudba při ERROR
130 POKE 8561,137,48
140 POKE 12425,205,81,0,229,17,149,48,205,48,0,225,201,45,65,13
3) Zastavení LIST pomocí SPACE
Tento program umožňuje při listování programu listování zastavit klávesou SPACE,
aby jste mohli např. dělat poznámky. Při každém dalším stlačením SPACE se
listuje řádka po řádce. Při stisknutí libovolné jiné klávesy probíhá listování
dále.
150 REM Zastavení LIST
160 POKE 16786,77,36,204,83,2,0:POKE 9293,205,27,0,254,32,201
4) Zlepšený příkaz TRON
Při tomto zlepšení příkazu TRON se bude číslo právě zpracovávané řádky zobrazeno
v levém horním rohu obrazovky, místo na aktuálním pozici kursoru. Toto zlepšuje
přehlednost. Příkaz TROFF ruší příkaz TRON.
170 REM Nový TRON
180 POKE 8841,42,230,56,205,167,33,33,0,208,6,5,26,205,205,4
190 POKE 8856,205,242,0,35,19,16,245,225,241,201
5) Zobrazení ROPEN a WOPEN
U předcházejících modelů MZ-700 bylo při ROPEN nebo WOPEN definována výzva pro
PLAY nebo RECORD PLAY. V S-BASICu pracuje tato výzva pouze v přímém způsobu a na
v programu. Dá se to však snadno realizovat i v programu. K tomu slouží
následující program.
200 REM PLAY/RECORD PLAY při ROPEN/WOPEN
210 POKE 18442,205:POKE 18252,175
S tímto rozšířením ale stále ještě není zobrazeno, zda byla data nalezena a
nahrána. Následující program vypíše jméno souboru dat před jejich nahráním na
obrazovku.
220 REM ROPEN se zobrazením jména
230 POKE 18167,205,153,48
240 POKE 12441,17,11,67,33,252,15,205,200,22,58,252,15,201
6) Speciální LIST
Tato pozměnění standardního programu LIST způsobí, že po každé řádce programu v
BASICu je vynechaná řádka. To usnadňuje přehled především u delších programů.
Toto rozšíření platí pro obrazovku i pro tiskárnu.
250 REM Speciální LIST
260 POKE 12410,205,249,23,205,249,23,201
270 REM Zapnuto:POKE 16781,122,48
280 REM Vypnuto:POKE 16781,249,23
7)
Ochrana programů
Chránění programů proti LIST nebo SAVE může být provedeno, jestliže byl program
spuštěn pomocí RUN. Proto není možné program 100% chránit.
Přesto vám zde ukážeme,jak může být program chráněn proti různým povelům.
ochrana proti původní stav
----------------------------------------------
POKE 16642,201 LIST POKE 16642,175
POKE 17060,201 SAVE POKE 17060,205
POKE 26037,201 PEEK POKE 26037,254
POKE 5058,201 BYE POKE
5058,229
Výše uvedené řádky vložíme do počítače. Nyní máme basický program, který by po
odstartování způsobil změny. Uživatel by si mě jenom zapamatovat adresy příkazů
POKE, které jsou na řádcích 270 a 280, aby mohl zapínat a vypínat speciální
LIST. Toto rozšíření by se mělo po vložení do počítače nahrát. Podle potřeby
potom může být vždy přehrána. Jestliže byl program jednou odstartován, může být
smazán příkazem NEW. Změny zůstanou zachovány až do vypnutí počítače.