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 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 001E @BRK? + nastaví Z=1,je-li stisknut č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 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 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