1 REM Ins{nd av Kristoffer Eriksson <5357> 1986-05-10 22.07.50 Kod-tabell f|r BASIC-instruktioner i ABC-800. Uppgifternas korrekthet garanteras EJ. _ BASIC-KODER _ _Instruktioner _ Koder fr}n 128-164, |vrigt {r uttrycks-funktioner 128 nn GOTO nn = avst}nd till utpekad rad relativt andra byten i nn om fixed up, annars radnumret 129 nn GOTO (osynlig) -"- 130 nn GOSUB -"- 131 nn RESTORE (med radnummer) -"- 132 nn RESUME (med radnummer) -"- 133 nn ON ERROR GOTO (med radnummer) -"- 134 n XSTM Anger att "utbyggnads-instruktion" med kod n f|ljer. Se XSTM-listan. 135 l nn radnummer Inleder varje programrad (om ej krympt). l = hela radens l{ngd i antal bytes. (1 betyder att programkoden {r slut.) nn = radnumret. 136 : Instruktions-}tskiljaren ":" {r ocks} en instruktion, men utf|r inget. 137 slut Sist i programmet 138 n ELSE n = avst}nd till f|rsta instruktion som inte ber|rs av ELSE, relativt n. 139 l ? Samma som REM och !, men genererar felmeddelande om den exekveras. l = antal tecken som f|ljer som kommentar inkl l. 140 DEF FN 140 pp mm nn a rr... (182 b qq(ll)...) pp = avst}nd till pp i n{sta DEF FN, relativt andra byten i pp. mm = funktionens namn. nn = avst}nd till f|rsta instruktion efter FNEND. a = antal parametrar till funktionen. rr = variabelnamn, upprepas f|r varje parameter. 182= LOCAL, ej obligatorisk. b = antal lokala variabler qq = variabelnamn, upprepas f|r varje lokal var. ll = str{ngdimensionering, anges bara f|r lokala str{ngvariabler. 141 FNEND Utf|r inget. 142 nn l DATA nn = positon f|r n{sta DATA-sats (som GOTO) l = antal tecken i data i DATA-satsen inkl l. 143 l REM l = antal tecken i kommentarer inklusive l. 144 l ! Samma som REM. 145 LET Har ingen effekt vid exekvering. Tilldelning {r egentligen en funktion. 146 END 147 PRINT 148 ; 149 IF Utf|r inget. Det {r THEN och ELSE det h{nger p}. 150 INPUT 151 INPUT LINE 152 FOR 152 tilldelningsuttryck 189 uttryck (190 uttryck) 188 nn 189= TO 190= STEP, ej obligatorisk. 188= osynlig nn = pekare till f|rsta instruktionen efter NEXT relativt andra byten i nn. Till skillnad fr}n GOTO saknar nn h{r betydelse innan programmet {r "fixed up". 153 nn NEXT Utf|r en GOTO till FOR. nn = pekare till FOR, p} samma s{tt som nn i FOR. 154 nn WHILE nn = pekare till f|rsta instruktionen efter WEND, anv{nds om det efterf|ljande villkoret {r falskt. 155 nn WEND Samma som NEXT. Utf|r en GOTO till WHILE. 156 READ 157 RESTORE (utan radnummer) 158 RESUME (utan radnummer) 159 ON ERROR GOTO (utan radnummer) 160 RETURN Kan f|ljas av uttryck. 161 ON 161 uttryck 191 n v mm... 191= osynlig avskiljare f|r uttrycket. n = antal alternativa hoppadresser. v = en kod 128-133 f|r GOTO - ON ERROR GOTO. mm = hoppadress p} samma s{tt som i GOTO, upprepas f|r varje alternativ. 162 MID$ 163 SINGLE 164 DOUBLE _XSTM-instruktioner _ F|reg}s alltid av koden 134 = XSTM 134 0 DIM 134 1 COMMON 134 2 POKE 134 3 OUT 134 4 OPEN 134 5 PREPARE 134 6 CLOSE 134 7 RANDOMIZE 134 8 STOP 134 9 TXPOINT 134 10 GET 134 11 CHAIN 134 12 TRACE 134 13 NO TRACE 134 14 PUT 134 15 INTEGER 134 16 FLOAT 134 17 EXTEND 134 18 NO EXTEND 134 19 DIGITS 134 20 OPTION BASE 134 21 POSIT 134 22 SET DOT 134 23 CLR DOT 134 24 Reserverad 134 25 Reserverad 134 26-127 Oanv{ndbara f|r instruktions-utbyggnad _Kristoffer Erikssons <5357> SETDOT-utbyggnad _ 134 128 SET DOT 134 129 CLR DOT _DOS-instruktioner _ 134 160 BYE 134 161 KILL 134 162 NAME 134 163 AS (i NAME "..." AS "...") 134 164 CD LUX-NET 134 165 FILESTAT LUX-NET ({ven f|rkortningen FS) _Grafik-instruktioner _ 134 192 FGPOINT 134 193 FGLINE 134 194 FGFILL 134 195 FGCTL 134 196 FGPAINT 134 197 FGPICTURE Endast ABC 806. _ISAM-utbyggnad _ 134 200 ISAM OPEN 134 201 ISAM READ 134 202 ISAM WRITE 134 203 ISAM UPDATE 134 204 ISAM DELETE 134 205 KEY Nyckelord i ISAM READ, om dessa anv{nds som 134 206 INDEX instruktion genererar den error 200. 134 207 FIRST -"- 134 208 LAST -"- 134 209 NEXT -"- 134 210 PREV -"- _Kristoffers Erikssons <5357> KEY-utbyggnad _ 134 247 KEYMODE 134 248 KEY _ABC 806-till{gg _ 134 249 0 WIDTH Endast ABC 806 134 249 1 ATTRIBUTE Endast ABC 806 _Funktioner _ Koder 0-53, 126, F|reg}s av en kod 208-212 0 FN Anv{ndar-definierad funktion, se osynlig funktion 207. 1 FIX 2 INT 28 NUM$ 3 SIN 29 TAB 4 COS 30 SUB$ 5 TAN 31 CUR 6 ATN 32 MUL$ 7 SQR 33 TXPOINT 8 PI 34 DIV$ 9 RND 35 EXP 10 SGN 36 LOG 11 ASC 37 LOG10 12 CHR$ 38 COMP% 13 LEFT$ 39 VAL 14 RIGHT$ 40 samma som MID$, men osynlig. 15 MID$ 41 TIME$ 16 LEN 42 POSIT 17 INSTR 43 VARPTR 18 SPACE$ 44 VAROOT 19 STRING$ 45 PEEK2 20 SWAP% 46 MOD 21 PEEK 47 CVT%$ 22 INP 48 CVT$% 23 CALL 49 CVTF$ 24 ERRCODE 50 CVT$F 25 SYS 51 HEX$ 26 ABS 52 OCT$ 27 ADD$ 53 DOT 126 n XFN Anger liksom 134 att en "utbyggnads-funktion" med koden n f|ljer. Se XFN-listan. _XFN-funktioner _ F|reg}s av en kod 208-212 och 126 Funktionerna 128-159 ger str{ngar med ett tecken med samma kod som instruktionen. 126 128 BLK Endast ABC 806 126 129 RED 126 130 GRN 126 131 YEL 126 132 BLU 126 133 MAG 126 134 CYA 126 135 WHT 126 136 FLSH 126 137 STDY 126 138 ULN Endast ABC 806 126 139 NULN Endast ABC 806 126 140 NRML 126 141 DBLE 126 142 EL Endast ABC 806 126 143 Anv{nds ej, men skulle motsvara CHR$(143). 126 144 GBLK Endast ABC 806 126 145 GRED 126 146 GGRN 126 147 GYEL 126 148 GBLU 126 149 GMAG 126 150 GCYA 126 151 GWHT 126 152 HIDE 126 153 GCON 126 154 GSEP 126 155 Anv{nds ej, men skulle motsvara CHR$(155). 126 156 BLBG 126 157 NWBG 126 158 GHOL 126 159 GREL 126 192 FGPOINT 126 160 Kristoffers Erikssons <5357> DOT _"Osynliga" funktioner _ Koder 128-255, delvis parallellt med instrukt. Dessa funtkioner anv{nds av BASIC-tolken f|r tilldelning, tal, variabler, indexber{kning, och {ven vanliga matematiska uttryck. M}nga av funktionerna f|rekommer i tre varianter, flyttal (l{gst kod), heltal, och str{ng. Denna lista {r s{rskilt op}litlig. 129 Omvandling, flyttal -> heltal. 130 Omvandling, heltal -> flyttal. 131 132 EQV 133 IMP 134 OR 135 XOR 136 AND 137-139 = Flyttals-, heltals- och (?)str{ng-variant. 140-142 <> 143-145 < 146-148 >= 149-151 > 152-154 <= 155-157 + 158-159 - 160-161 * 162-163 / 164-165 ^ [ven ** 166 167 ( Parentes. Startar ny uttrycksber{kning. Motsvarar ENTER-knappen p} HP-r{knare. 168 - Negativa flyttal. St{ller teckenbiten i ett flyttal p} stacken till negativ. 169 - Negativa heltal. Byter tecken p} ett tal p} stack 170-172 n Ingen effekt. 173 n Omvandling Flyttal -> heltal. 174 n Omvandling Heltal -> flyttal. 175 NOT 176 L{gg aktuellt OPTION BASE-v{rde n{st |verst p} stacken. 177-179 Tilldelning V{rdet |verst p} stacken l{ggs i den variabel som utpekas av variabelpekaren d{runder (f|r str{ng- ar ligger varoot-pekaren p} stacken. Avslutar uttrycksber{kning. 180-182 mm Tilldelning V{rdet p} stacken l{ggs i variabeln mm. Avslutar sedan p} samma s{tt som motsvarande 186-188. 183-185 Slut Avsluta uttryck med att h{mta resultatet fr}n stacken till CPU:ns HL-register (pekare f|r str{ngar). 186-188 Slut Avsluta uttryck med att st{lla CPU:ns register B till resultat- typen, och TRCVAR enligt v{rdet |verst p} stacken. 189 n THEN n = avst}ndet till f|rsta instruktionen relativt n som inte ber|rs av THEN, dvs n{rmast efter ELSE om det finns, annars n{sta rad. 190 n osynlig THEN 191 Slut Slut p} uttryck (=parentes). Ingen }tg{rd. 192-194 mm L{gger variabeln mm:s v{rde p} stacken (str{ngar f}r str{ngpekarna p} stacken). 195 Heltalet 0 (osynligt) L{gger talet noll p} stacken. 196-198 mm Adress L{gger adressen till variabeln mm p} stacken, identisk f|r alla variabeltyper (str{ngar f}r allts} adressen till str{ngpekarna). 199 nn Heltalet 2 byte Talet kopieras till stacken. 200-202 n mm Indexber{kning ({ven DIM) n=antal index, mm=variabelnamn. 203 n ttt... Str{ng inom citationstecken ("), n=antal tecken. 204 n ttt... Str{ng inom apostrofer ('), n=antal tecken. 205-206 Anv{nds i DIM och COMMON 207 nn FN Detsamma som funktionskod 0. nn = pekare till funktionens definition om prog- rammet {r fixed up, annars funktionens namn. 208 k Synlig funktion 0 parametrar med koden k, se s{rskild lista. 209 k Synlig funktion 1 parameter Parametrarna har ber{knats i 210 k Synlig funktion 2 parametrar f|rv{g, och ligger p} stacken. 211 k Synlig funktion 3 parametrar 212 n k Synlig funktion n-208 parametrar 213 n Flyttal 1 byte 214 nn Flyttal 2 byte 215 nnn Flyttal 3 byte ... 220 nnnnnnnn Flyttal 8 byte 221-255 heltal Heltal enligt kod-221. _\vriga koder _ Anv{nds av vissa instruktioner 182 LOCAL 184 USING 185 COUNT 187 AS FILE 188 Anv{nds i FOR, osynlig. 189 TO 190 STEP 191 Anv{nds i ON..., osynlig. 44 , ASCII-koden f|r kommatecknet betecknar {ven kom- man i instruktionerna. 35 # F|reg}r filnummer i PRINT, INPUT, INPUT LINE, GET, PUT och POSIT. 59 ; Skiljetecken i PRINT. _Variabelnamn _ [ven funktionsnamn, p} de flesta st{llen (ej DEF FN) byts detta ut mot en pekare (VAROOT) n{r programmet g|rs i ordning f|r exekvering (blir "fixed up"). F|rsta byten: b1-b0 Variabeltyp 0=Flyttal, 1=Heltal, 2=Str{ng, 4=Anv{nds ej b2 Indexering 0=Skal{r variabel, 1=Indexerad variabel. b6-b3 Suffix (korta namn) V{rdena 0-9=suffix-siffran, 15=ej suffix b7-b3 Namnoffset (l}nga namn) Andra byten: Bokstav V{rdena 1-29 anger att det {r ett kort variabel- namn med bokstaven CHR$(kod+64). \vriga v{rden anger att det {r ett l}ngt varia- belnamn, Namnpekaren = (kod-32)*32+Namnoffset. _\vrigt _ Str{ngar lagras i allmenhet p} stacken med en pekare till inneh}llet (VARPTR), aktuell l{ngd, och ett v{rde som anger hur mycket plats str{ngens inneh}ll (eller annat skr{p fr}n tidigare ber{kningar) tar p} stacken n{r dessa v{rden har eliminerats. Om str{ngens inneh}ll inte ligger p} stacken (kan vara kons- tant i programkoden, eller kvar i variabeln) tar det f|rst}s upp 0 bytes. Ibland lagras str{ngen (str{ng-variabeln) som en enda pekare till de ovan n{mnda v{rdena (VAROOT). Flyttal lagras p} stacken med (Y.PREC) bytes (st{lls av SINGLE/DOUBLE) obe- roende av antalet bytes de lagras med i programkoden. En kod kan betyda olika saker beroende p} var i program-sekvensen den f|rekom- mer. Man m}ste allts} l{sa programmet fr}n b|rjan f|r att veta vad en viss byte har f|r betydelse. Ointressanta rader kan |verhoppas snabbt eftersom "rad-instruktionen" anger hur l}ng den aktuella raden {r. Programmet (och varje rad) b|rjar med en instruktionskod (128-164) eller even- tuellt ett uttryck (kan vara tilldelning utan LET) (|vriga koder = Osynliga funktioner). Vissa instruktioner inneh}ller speciella data som anges i tabel- lerna h{r, d{rut|ver kan de inneh}lla ett eller flera uttryck som ska ber{k- nas. Uttrycken inneh}ller osynliga funktionskoder som bland annat kan ge mate- matiska funktioner (+,- osv) och synliga funktioner (SYS, NUM$ osv), och avslutas av speciella avslutningskoder.