
NĚKTERÉ DŮLEŽITÉ ADRESY BASICu
==============================

1) Vektor skoků na základní služby
----------------------------------

0000  @RSTRT    horký start interpretu
0003  @GETLN    zadání řetězce z klávesnice na adrresy od (DE)
                (RST #18, služba 0CH)
0006  @CRLF     přechod na nový řádek (RST 18H,služba 01H)
0009  @CURX     přechod na nový řádek není-li kurzor na začátku
                řádku (RST 18H,služba 02)
000C  @SPACE    zobrazí mezeru pomocí @CRT1C
000F  @TAB      přechod na další tabelační pozici
0012  @CO       zobrazí ASCII z A pomocí @CRT1C (RST #18,sl.03)
0015  @MSG      zobrazí řetězec od (DE) do <NUL> pomocí @CRT1C
0018  @RST      volání služby podle hodnoty byte na návratové ad-
                rese
001B  @CI       nečekající sejmutí klávesnice, v A vrátí MZ-ASCII
                nebo <NUL>
001E  @BRK?     <SH>+<BREAK> nastaví Z=1,je-li stisknut <BREAK>
                čeká ve smyčce
0021  @WHEAD    zapíše hlavičku na pásku, v HL adresa 1. znaku,
                v BC délka
0024  @WBLK     uloží na pásku blok délky BC od (HL)
0027  @RHEAD    načte hlavičku délky BC na adr. od (HL)
002A  @RBLK     načte blok délky BC na adresy od (HL)
002D  @VFY      verifikace bloku od (HL) délky BC
0030  RET       nedělá nic
0033  @TIMST    nastavení systémových hodin, DE počet sekund,
                A=0 AM,A=1 PM (RST 18H,služba 26)
0036            sem RST 38H,nedělá nic
003B  @TIMRD    čtení systémových hodin: DE počet sekund,A=0 AM,
                A=1 PM (RST 18H,služba 25)
003E  @BELL     pípnutí (RST 18H, služba 20)
0041  @XTEMP    nastavení tempa pro melodii podle A (1-7)
0044  @MSTA     start tónu o aktuálních parametrech
0047  @MSTP     ukončení tónu
004A  @GETL1    totožné s 0003
004D  SYSSTA    DEFS 2 ;adresa základního cyklu
                pro BASIC 586FH BASNEX
                    monitor 15A8H NXMON
004F  ERRORP    DEFS 2 ;adresa pro zpracování chyby
                pro BASIC 6403H BASERR
                    monitor 15CEH ERRMON
0051  @MESGE    totožné s 0015
0058  @CINP     sejmutí klávesnice dle A (RST 18H,služba 0D)


2.Hlavní pracovní oblast BASIC
------------------------------

Parametry aktivního souboru

- hlavička

1000  FILMOD    DEFS 1; Typ souboru: 1 .OBJ
                                     2 BASIC text
                                     3 SOURCE
                                     4 RELOCATABLE
1001  FILNAM    DEFS 11H; jméno souboru, konec <CR>
1012  FLGOPE    DEFS 1 ;soubory s FILMOD>4 zde mají 80H

1014  LENGTH    DEFS 2 ;délka souboru
1016  STADR     DEFS 2 ;počáteční adresa
1018  EXCADR    DEFS 2 ;startovací adresa

101E  RAMDAT    DEFS 2 ;

- parametry souboru a zařízení

1040  CHNLAD    DEFS 2; adresa souboru ve FILES za (ofsetem)
1042  ZLOG      DEFS 1; logické číslo, systémová zařízení 80H CMT:
                                                          81h při LOAD
                                                          88H CRT:
                                                          89H LPT:
1043  OPETY     DEFS 1; typ otevření 1-RD,2-WR,4-X (nepovoleno)
1044  IBADR     DEFS 2; adresa tabulky fyzického zařízení
1046  PERNUM    DEFS 1; identifikační číslo zařízení (unit number)
1047            DEFS 1
1048            DEFS 2

- přenesená tabulka fyz.zařízení

104A  NXDEV     DEFS 2; adresa další tabulky
104C  DEVNAM    DEFS 4; ASCII jméno zařízení
1050  DEVFLG    DEFS 1; bity charakterizují vlastnosti zařízení
                        bit 2 1 driver čtení znakový
                              0 blokový
                        bit 3 1 driver zápisu znakový
                              0 blokový
                        bit 4 1 souborově organizované
                              0 není souborové
                        bit 5 1 (??disk-nepoužito)
                              0 všechna implementovaná zařízení
                        bit 6 1 lze prohledat
                              0 nelze
                        bit 7 1 bez bufferu
                              0 vyžaduje buffer
1051  DEVFL2    DEFS 1; bity 0 až 2 max.přípusné identifikační čís.
                        bit 5 ?
                        bit 6 1 otevřen
                              0 není otevřen
                        bit 7 1 jméno povinné
                              0 nepovinné
1052  MAXFIL    DEFS 1; maximální počet souborů (RAM: 20H,ostat.0)
1053  INISBR    DEFS 2; adresa podprogramu pro inicializaci
1055  RDOP      DEFS 2; podprogram otevření pro čtení
1057  WROP      DEFS 2; podprogram otevření pro zápis
1059  CLOSBR    DEFS 2; podprogram uzavření
105B  BUFLEN    DEFS 2; u bufferovaných zařízení délka bufferu, jinak
                        podprogram KILL
105D  INPSBR    DEFS 2; driver čtení
105F  OUTSBR    DEFS 2; driver zápisu
1061  OUTPOS    DEFS 2; určení pozice pro výstup
1063            DEFS 2
1065  FRETST    DEFS 2; určení volného prostoru u RAM:

Systémové proměnné BASIC

1067            DEFS 2
1069  DFLOGN    DEFS 1; logické číslo default zařízení
106A  DFTAB     DEFS 2; adresa tabulky default zařízení
106C            DEFS 2
106E  TABDRV    DEFS 2; tabulka driverů pro MZ1P50
1070  TXTBEG    DEFS 2; začátek zdroj.textu (A3FAH,9F9EH po NEWON)
1072  FILES     DEFS 2; začátek pole parametrů otevřených souborů
1074  VARS      DEFS 2; začátek proměnných
1076  STRING    DEFS 2; pole hodnot řetězcových proměnných
1078  FREE      DEFS 2; dno pracovní oblasti
107A  WSP       DEFS 2; adr. 1. volného byte v procovní oblasti
107C  BASSTK    DEFS 2; dno zásobníku BASIC
107E  BINAR     DEFS 2;
1080  RAMTOP    DEFS 2; konec paměti používané BASICem
1082  CRSCOL    DEFS 1; číslo sloupce v němž je kurzor
1083  CRSROW    DEFS 1; číslo řádku v němž je kurzor
1084  CRSED     DEFS 2; adresa kurzoru v editační straně od 2000H
1086  CRSVIR    DEFS 2; adresa kurzoru ve VIRAM od 8000H
1088  XCOOR     DEFS 2; x souřadnice ukazatele v grafickém poli
108A  YCOOR     DEFS 2; y souřadnice ukazatele v grafickém poli
108C  CURDIS    DEFS 1; příznak zobrazení kurzoru (1-není)
108D  CRSTYP    DEFS 1; typ kurzoru (0-norm,1-caps.lock,2-graf.)
108E  RUNFLG    DEFS 1; 0 v povelovém režimu,při běhu programu <>0
108F  LPCO      DEFS 1; 1 výstupy přes @CRT1C a @CRT1X jdou i
                        na LPT:
1090  COTYP     DEFS 1; výstup řídících kódů přes CHRCRT
                        0 provede, 1 zobrazí v inverzi
1091  FILOU     DEFS 1; 1 výstup znaků přes @1C,@1CX i na LPT:
                        xoruje povel P monitoru
1092  PTYP      DEFS 1; 1 MZ1P16,2 MZ80P5,4 ASCII,8 code through
1093  CRKOD     DEFS 1; náhrada kódu <CR> pro LPT:
1094  PTO       DEFS 1; délka time-out pro čekání na připravenost
                        LPT: (cca v sekundách)
1095  PPOZ      DEFS 1; čítač znaků na řádce tiskárny
1096
1097  LPENBL    DEFS 1; 1-tiskne,jinak Device mode error
1098  DMDR      DEFS 1; kopie DMD registru GDG:M1-0
                                               M2-2
                                               M3-4
                                               M4-6
1099  OPTVIR    DEFS 1; 0 VIRAM 16 kB,1 VIRAM 32 kB
109A  COLMOD    DEFS 1; mod překrývání barev
109B  COLOR     DEFS 1;implicitní barva (po startu=WFR,mění COLOR
                        povel
109C  WFR       DEFS 1; kopie WF registru GDG
109D  FORMAT    DEFS 1; kopie RF registru
109E  MASKA     DEFS 1;
109F  COLOR2    DEFS 2;
10F0  CMTHEA    DEFS 80H; pole pro hlavičku CMT:,struktura shodná
                        s ROM monitorem

Pracovní oblast ROM monitoru od 1170H do 11A3H BASIC nepoužívá
kromě pomocných parametrů pro CMT:,které používá stejně jako
ROM monitor:

1195  KEY       DEFS 2; klíč pro rozeznání hlavičky a dat
1197  CHKS      DEFS 2; kontrolní součet
1199  CHKS1     DEFS 2; kopie kontrol. součtu


Pokračování pracovní oblasti BASIC

11A4  LINBUF    DEFS 100H;buffer pro zadávání řádků a jiné
                        funkce interpretu (grfika v t   eto ob-
                        lasti uschovává pomocne hodnoty
11AA            DEFS 2; používá HCOPY
11AC  HCSIR     DEFS 1; povolení širokého tisku při HCOPY
12A8  ERRSP     DEFS 2; adresa pro návrat z ROM podprogramů po
                        chybě
12AA
12AC  PAMSP     DEFS 2; sem se ukládá SP
12AE  POMOC     DEFS 2; pro uložení pointeru

12B2  !DEFKY    DEFS 0A0H; pole definic funkčních kláves (po 10H)
1352  DFKBUF    DEFS 11H ;sem se přenesou znaky po stisknutí
                        funkční klávesy
1364            DEFS 1;
1365  LASCHR    DEFS 1; poslední znak zadaný z klávesnice
1366            DEFS 3;
1369  COLMIN    DEFS 1; levý okraj okna
136A  COLMAX    DEFS 1; pravý okraj okna
136B  CHRLIN    DEFS 1; ofset pro další byte znaku (na další
                        řádek grafiky
136C
136D  CHOFS     DEFS 2; ofset ve VIRAM na další řádek textu
                        (8*CHRLIN)
136F  ROWMIN    DEFS 1; horní řádek okna
1370  ROWMAX    DEFS 1; dolní řádek okna
1371  WNDWID    DEFS 1; počet řádků okna
1372  SCROFS    DEFS 2;
1374  SCRWI     DEFS 1; WNDWID*5
1375  SCRS      DEFS 1; číslo horního řádku okna *5
1376  SCREND    DEFS 1;
1377  WDT40     DEFS 2; šířka okna *40
1379  COLFLG    DEFS 1; příznak povoleného počtu barev:0-4 barvy
                                                       1-4 barvy
                                                       2-16 barev
137A  CRTM      DEFS 1; 1 až 4 podle modu inicializace CRT:
137B  PALC      DEFS 1; nastaví COLOR dle specifikace
137C  PAISP     DEFS 2; povel PAINT sem ukládá SP+FDF1H
137E  BLKCOD    DEFS 1; kód bloku palety z povelu INIT CRT:(1-4)
137F  BLKAD     DEFS 2; adresa bloku palety podle M z povelu INIT
                        CRT:1389H při modu M1
                            138DH při M2
                            1385H při M3
                            1389H při M4
1381  PAL0      DEFS 1; kopie palet registrů GDG
1382  PAL1      DEFS 1
1383  PAL2      DEFS 1
1384  PAL3      DEFS 1
1385  COLBL1    DEFS 4; blok barev
1389  COLBL2    DEFS 4;
138D  COLBL3    DEFS 4;
1391  CRSALP    DEFS 8; znakový generátor kurzoru ALPHA
1399  CRSSHA    DEFS 8; kurzor caps.lock
13A1  CRSGRA    DEFS 8; kurzor grafického modu
13A9  ROWFLD    DEFS 25; pole atributů spojování řádků (0 počá-
                        teční,1 pokračovací)
13C3  RAMFLG    DEFS 1; příznak užití RAM: 0 neinstalován
                        1 pouze pro soubory,2 pouze pro spooling,
                        3 spooling i data
13C4  LENADR    DEFS 2
13C6  BOTRAM    DEFS 2; dolní adresa RAM:
13C8  RAMFRE    DEFS 2; adresa volného prostoru na RAM:
13CA  PWFLG     DEFS 1; typ driveru LPT: 0 strobe čeká na RDA
                                         1 strobe nečeká
13CB  LOGSTB    DEFS 1; polarita strobe a IRT pro LPT:
13CC  MAXCH     DEFS 2; délka prostoru pro spooling na RAM:
13CE  POCCH     DEFS 2; počet znaků ve frontě pro spooling
13D0  FRONT1    DEFS 2; běžná adresa pro zápis spoolingu
13D2  FRONT2    DEFS 2; adresa pro čtení spoolingu z RAM:
13D4  PBUFF     DEFS 2; dno spooling. bufferu
13D6  LPTFLG    DEFS 1; bit 0:0 neběží tisk
                              1 tiskne
                        bit 1:1 v přerušení
                        bit 7:1 přes buffer
13D7  CITA11    DEFS 1; čítá znaky 0BH
13D8  MAXLPT    DEFS 1; max počet typů LPT:
13D9  ERRFLG    DEFS 1
13DA  KONVTB    DEFS 2; adresa tabulky konverze znaků pro LPT:
13DC  !KONV     DEFS 51H; tabulka pro konverzi MZ-ASCII<>ASCII
                        1.byte je počet párů


3.Horní pracovní oblast BASIC
-------------------------------

9DD4  NXRADR    DEFS 2; adresa dalšího řádku
9DD6  BASE      DEFS 2; pro LIST,AUTO základní číslo řádku
9DD8  INKREM    DEFS 2; přírustek pro AUTO
9DDA  ROWACT    DEFS 2; číslo prováděného řádku,přímý povel FFFFH
9DDC  ERRNUM    DEFS 1; číslo chyby
9DDD  RESFLG    DEFS 1; 2 zákaz RESUME
9DDE  ERRLOC    DEFS 2; číslo řádku kde došlo k chybě
9DE0  ERRNXR    DEFS 2; adresa řádku za řádkem s chybou
9DE2  ERRPTR    DEFS 2; adresa pointeru na níž interpret objevil chybu
9DE4  EROWAD    DEFS 2;
9DE6  DATFLG    DEFS 1; stav DATA:0 neinicializována
                                  1 vybrána
                                  2 připravena
9DE7  DATPOI    DEFS 2; pointer DATA
9DE9            DEFS 2
9DEB            DEFS 2
9DED  ERRSP     DEFS 2; úschova SP při chybě
9DEF  POINT     DEFS 2; adresa začátku povelu
9DF1            DEFS 1;
9DF3  POMBUF    DEFS 7; buffer pro konverzi integer
9DFA  KONVFL    DEFS 1
9DFB  KONBUF    DEFS 19H; buffer pro konverzi floating na ASCII
9E03  KONDP     EQU  9E03H ;poloha des.tečky
9E25  EXPTYP    DEFS 1; typ výrazu 3 string,5 numerický
9E26  EXPBUF    DEFS 5; pomocná paměť floating hodnoty

9E2E  INTBUF    DEFS 5

9E36  NUMBUF    DEFS 5

9E3E  TSFBUF    DEFS 100H; buffer pro překlad zadaného řádku
                        v LINBUF do vnítřního formátu,při startu
                        je zde uloženo úvodní hlášení

Kromě těchto pracovních oblastí má interpret další datové oblasti
u jednotlivých podprogramů.


4.Kódy klíčových slov a jejich prováděcí adresy
-----------------------------------------------

Klíčová slova ukládaná jako kódy bez prefixu
--------------------------------------------


Kod  Slovo   Adr  ! Kod  Slovo   Adr  ! Kod  Slovo   Adr  !
                  !                   !                   !
-----------------------------------------------------------
                  !                   !                   !
80  GOTO     69AF ! 90           6364*! A0  POKE     68A1 !
81  GOSUB    692A ! 91  INPUT    6DD4 ! A1  OFF      6364*!
82           6364*! 92           6364*! A2  PMODE    9F9E !
83  RUN      606E ! 93  IF       69C2 ! A3  PSKIP    A003 !
84  RETURN   68F9 ! 94  DATA     67FE ! A4  PLOT     A3B1 !
85  RESTORE  6E9E ! 95  READ     6DCD ! A5  PLINE    A045 !
86  RESUME   64B6 ! 96  DIM      8D55 ! A6  RLINE    A048 !
87  LIST     6A9D ! 97  REM      67FE ! A7  PMOVE    A04B !
88           6364*! 98  END      60B9 ! A8  RMOVE    A04E !
89  DELETE   620C ! 99  STOP     6468 ! A9  TRON     61CC !
8A  RENUM    62AB ! 9A  CONT     6499 ! AA  TROFF    61DF !
8B  AUTO     60CA ! 9B  CLS      78FB ! AB  INP@     681F !
8C  EDIT     6125 ! 9C           6364*! AC  DEFAULT  6F41 !
8D  FOR      6602 ! 9D  ON       6952 ! AD  GET      686C !
8E  NEXT     6699 ! 9E  LET      650D ! AE  PCOLOR   A0B3 !
8F  PRINT    6C9F ! 9F  NEW      618E ! AF  PHOME    A0E8 !
                  !                   !                   !
-----------------------------------------------------------
                  !                   !                   !
B0  HSET     A0EB ! C0           6364*! D0  ROPEN    6F56 !
B1  GPRINT   A0F6 ! C1  ERROR    63F8 ! D1  XOPEN    6F5C !
B2  KEY      6B84 ! C2  ELSE     69E4 ! D2           6364*!
B3  AXIS     A15E ! C3  USR      67A4 ! D3           6364*!
B4  LOAD     6FFD ! C4  BYE      6A59 ! D4           6364*!
B5  SAVE     733F ! C5           6364*! D5  DIR      73A3 !
B6  MERGE    7068 ! C6           6364*! D6           6364*!
B7  CHAIN    7053 ! C7  DEF      6C31 ! D7           6364*!
B8  CONSOLE  6A61 ! C8           6364*! D8  RENAME   73CA !
B9  SEARCH   6A9B ! C9           6364*! D9  KILL     6F8B !
BA  OUT@     680A ! CA  LABEL    67FE ! DA  LOCK     7397 !
BB  PCIRCLE  A19E ! CB           6364*! DB  UNLOCK   7395 !
BC  PTEST    A36C ! CC           6364*! DC  INIT     6F47 !
BD  PAGE     A37A ! CD           6364*! DD           6364*!
BE  WAIT     67EE ! CE  WOPEN    6F59 ! DE           6364*!
BF  SWAP     7425 ! CF  CLOSE    6F8A ! DF           6364*!
                  !                   !                   !
-----------------------------------------------------------
                  !                   !
E0  TO            ! F0  =<            !
E1  STEP          ! F1  <=            !
E2  THEN          ! F2  =>            !
E3  USING         ! F3  >=            !
E4  (PI)          ! F4  =             !
E5  ALL           ! F5  >             !
E6  TAB           ! F6  <             !
E7  SPC           ! F7  +             !
E8                ! F8  -             !
E9                ! F9  \             !
EA  .XOR          ! FA  .MOD          !
EB  .OR           ! FB  /             !
EC  .AND          ! FC  *             !
ED  .NOT          ! FD  ^             !
EE  ><            ! FE  prefix        !
EF  <>            ! FF  prefix        !
                  !                   !
---------------------------------------

* syntax error - tímto kódem nemůže začínat příkaz

Klíčová slova ukládaná jako kódy s prefixem FEH
-----------------------------------------------


Kod  Slovo   Adr  ! Kod  Slovo   Adr  ! Kod  Slovo   Adr  !
                  !                   !                   !
-----------------------------------------------------------
                  !                   !                   !
80           6364*! 90  COLOR    760B ! A0  SYMBOL   78A1 !
81  CSET     6364*! 91           6364*! A1           6364*!
82  CRESET   6364*! 92  SET      7528 ! A2  MUSIC    9B6F !
83  CCOLOR   6364*! 93  RESET    7529 ! A3  TEMPO    9B62 !
84           6364*! 94  LINE     7537 ! A4  CURSOR   683B !
85           6364*! 95  BLINE    7538 ! A5  VERIFY   7328 !
86           6364*! 96  PAL      75AF ! A6  CLR      619B !
87           6364*! 97  CIRCLE   76DE ! A7  LIMIT    68B5 !
88           6364*! 98  BOX      75DE ! A8           6364*!
89           6364*! 99  PAINT    768F ! A9           6364*!
8A  SOUND    9B35 ! 9A  POSITION 758B ! AA           6364*!
8B           6364*! 9B  PATTERN  755A ! AB           6364*!
8C  NOISE    9B6C ! 9C  HCOPY    78F1 ! AC           6364*!
8D  BEEP     6A56 ! 9D           6364*! AD           6364*!
8E           6364*! 9E           6364*! AE  BOOT     6A95 !
8F           6364*! 9F           6364*! AF           6364*!
                  !                   !                   !
-----------------------------------------------------------


Kódy funkcí ukládané s prefixem FFH
-----------------------------------


Kod  Slovo   Adr  ! Kod  Slovo   Adr  ! Kod  Slovo   Adr  !
                  !                   !                   !
-----------------------------------------------------------
                  !                   !                   !
80  INT      954B ! 90           6364*! A0  CHR$     6364*!
81  ABS      9546 ! 91           6364*! A1  STR$     88BA !
82  SIN      9692 ! 92           6364*! A2  HEX$     8879 !
83  COS      9682 ! 93           6364*! A3           6364*!
84  TAN      9771 ! 94           6364*! A4           6364*!
85  LN       99D8 ! 95           6364*! A5           6364*!
86  EXP      98B4 ! 96           6364*! A6           6364*!
87  SQR      95A8 ! 97           6364*! A7           6364*!
88  RND      986F ! 98           6364*! A8  SPACE$   889C !
89  PEEK     9863 ! 99           6364*! A9           6364*!
8A  ATN      95C6 ! 9A           6364*! AA           6364*!
8B  SGN      9829 ! 9B           6364*! AB  ASC      891B !
8C  LOG      99CC ! 9C  STICK    8FE9 ! AC  LEN      8925 !
8D  FRAC     9B79 ! 9D  STRIG    9008 ! AD  VAL      892D !
9E  PAI      9841 ! 9E           6364*! AE           6364*!
9F  RAD      983C ! 9F           6364*! AF           6364*!
                  !                   !                   !
-----------------------------------------------------------
                  !                   !
B0           6364*! C0           6364*!
B1           6364*! C1           6364*!
B2           6364*! C2           6364*!
B3  ERN      8803 ! C3           6364*!
B4  ERL      8811 ! C4  TI$      89CF !
B5  SIZE     87DB ! C5  POINT    88F5 !
B6  CSRH     87ED ! C6  EOF      88C8 !
B7  CSRV     87F2 ! C7  FN       8F48 !
B8  POSH     87F7 ! C8           6364*!
B9  POSV     87FD ! C9           6364*!
BA  LEFT$    893F ! CA           6364*!
BB  RIGHT$   895C ! CB           6364*!
BC  MID$     8979 ! CC           6364*!
BD           6364*! CD           6364*!
BE           6364*! CE           6364*!
BF           6364*! CF           6364*!
                  !                   !
---------------------------------------


(C) B.Votava 11.3.1988
