Retour
Appendice au manuel BASIC
[Commandes] [Caractère cachés] [structure des lignes] [Les variables] [Token]

ce qui suit s'applique à toutes les machines des séries 12xx, 13xx et 14xx. Exception faite pour les machines à CPU 4 bits qui ne permettent pas l'acces au langage machine où donc CALL n'existe pas.

Les commandes BASIC cachées

Les instructions qui donnent accès au langage machine et à la gestion de la mémoire ne sont pas présentes dans le manuel :

Malheureusement, LOAD M and SAVE M ne semblent pas exister.

Caractère cachés

PC-1350

Le PC-1350 n'a pas à proprement parler de caractères cachés. Simplement, un POKE &6F16, PEEK &6F16 OR 128 permet d'afficher les caractères KATANA. [SML] passe le clavier en mode japonnais, alors que [SHIFT][SML] donne accès aux minuscules.

PC-1401/02

Le PC-1401 posseide 2 caractéres accessibles uniquement par POKE : 253 correspond au caractéres d'insertion et 254 au curseur.

Structure des lignes de basic

4 octets sont réservés au codage d'une ligne de basic : elle débute par son numéro (2 octets) suivit de la longueur (1 octet). On trouve ensuite le codage des commandes BASIC elles-mêmes. Enfin elle se termine par un &0d ou 13 qui indique que cette ligne est finie.
-1 &0d de la ligne précédente.
0 poids fort du numéro de ligne (si 255, le programme est fini)
1 poids faible du numéro de ligne
2 longueur de la ligne (@dresse de cet octet + sa valeur donne l'adresse du &0d finissant cette ligne).
... Codage de la ligne (jusqu'à 79 octets)
fin &0d indiquant la fin de la ligne

Les variables du basic

Les variables fixes (A -> Z)

Elles sont stockées dans une zone mémoire de 208 octets qui leur est réservée (à ma connaissance, toujours à la fin de la mémoire du BASIC). Elles font toujours 8 octets.
Si le premier octet contient 245 s'il s'agit d'une variable alphanumérique.

Les variables allouées dynamiquemement

Les autres variables sont allouées à la volée par le BASIC. La mémoire utilisateur est gérée par 3 pointeurs :

Lorsque l'on ajoute des lignes à un programme BASIC, le pointeur « Fin de Programme » augmente en fonction de la longueur de cette ligne. Lorsque l'on crée une nouvelle variable, le pointeur de « début des variables » décroît en fonction de la taille de cette variable.
MEM renvoie la différence entre ces 2 pointeurs.

Les variables automatiques (par exemple A(27) sans qu'il n'y eu de DIM sur A) sont codées comme des variables simples, hormis le fait qu'elles ont forcement une longueur de 8 octets et que chaque variable a son propre type.

La structure suivante permet de renseigner la variable créée : elle comporte 7 octets

  Octet 0
Code ASCII du premier caractère du nom.
Octet 1
2eme caractère du nom + code d'identification
Octet 2
Poids fort de la taille de l'objet alloué +3
Octet 3
Poids faible de la taille de l'objet alloué +3
Octet 4
Dimension des tableaux
Octet 5
Dimension des tableaux
Octet 6
Taille d'un objet de tableau
AB
ou
A1
'A' 'B'

'1'
0 11 0 0 8
AB$
ou
A1$
'A' 'B' + 64
(130)
0 19 0 0 16
DIM AB(5)
ou
DIM A1(5)
'A' 'B' + 128
(194)
0 51 5 0 8
DIM AB$(5)*20
'A' 'B' - 64
(2)
0 123 5 0 20
DIM AB(8,9)
'A' 'B' + 128
(194)
2 211 9 8 8
DIM AB$(8,9)
'A' 'B' - 64
(2)
5 163 9 8 16
DIM A1$(5)
'A' '1' + 192
(241)
0 99 5 0 16
DIM A1$(8,9)
'A' '1' + 192
(241)
5 163 9 8 16
A(30) sans DIM (variables automatiques) 'A' '@'
(64)
0 35 0 0 8

Table des tokens des commandes BASIC

Voici la table de codage des mots clefs du BASIC.
Elle s'applique à tous les PC de la game 12?? (hormis les machines 4 bits, 1211, 1212, 1245, 1251, ...), 13??, 14?? et 2500. Les PC-1500, PC-1600 et PC-E500 ont une table totalement differente.

Les instructions du BASIC utilisent les codes &80 (128) à &FE (239)
Ces codes sont aussi utilisés pour les caractères KATANA. Pour les différentier des token BASIC, ces derniers sont préfixés par un &FE (254).
Par exemple, sur PC-1350, après avoir bien sur validé les KATANA,
POKE &6C38, &FE, &DB, 0 donne Y$ = READ alors que
POKE &6C38, &FE, &FE, &DB, 0 donne Y$ = carré vide

8 9 A B C D E
0 FACT RND RUN RANDOM TO GOSUB
1 REC LN AND NEW DEGREE STEP AREAD
2 POL LOG OR CONT RADIAN THEN LPRINT
3 ROT EXP NOT PASS GRAD ON RETURN
4 DECI SQR ASC LIST BEEP IF RESTORE
5 HEX SIN VAL LLIST WAIT FOR CHAIN
6 TEN COS LEN CSAVE GOTO LET GCURSOR
7 RCP TAN PEEK CLOAD TRON REM GPRINT
8 SQU INT CHR$ MERGE TROFF END LINE
9 CUR ABS STR$ CLEAR NEXT POINT
A HSN SGN MID$ USING STOP PSET
B HCS DEG LEFT$ OPEN DIM READ PRESET
C HTN DMS RIGHT$ CLOSE CALL DATA BASIC
D AHS ASN INKEY$ SAVE POKE PAUSE TEXT
E AHC ACS PI LOAD CLS PRINT OPEN$
F AHT ATN MEM CONSOLE CURSOR INPUT

Le PC les plus récents (1360, 1403, 1475, ...) ont un basic étendu : ils utilisent en plus, une seconde table d'instruction dont la valeur est préfixées d'un &FE.
Je n'ai pas fait de table pour ces instructions mais vous les trouverez dans les sources de WAV2BIN (un grand merci à Pocket).