L'Ordinateur Individuel n°45 février 1983
L'Ordinateur Individuel n°45 février 1983
  • Prix facial : 20 F

  • Parution : n°45 de février 1983

  • Périodicité : mensuel

  • Editeur : Groupe Tests

  • Format : (202 x 281) mm

  • Nombre de pages : 254

  • Taille du fichier PDF : 257 Mo

  • Dans ce numéro : création artistique et informatique... tout un programme !

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 168 - 169  |  Aller à la page   OK
Pages suivantes >
168 169
on peut obtenir les caractères graphiques par SHIFT, les caractères spéciaux 4,t (SHIFT —>) (SHIFT 4—) et le caractère curseur (SHIFT4). La commande ENTER provoque un saut de ligne et le code scape (SHIFT) joue le même rôle que le BREAK de Basic, en restant en « Forth-Tran » (ou un autre nom ?) La touche CLEAR affiche un code graphique (191). Les codes instructions ❑ et Dm sont obtenus par SHIFT 0 (comme OUTPUT) et SHIFT M (comme Mince alors, c'est un code ASCII !). Les autres caractères sont inchangés. Les commandes utilisables sbnt : A,C, D, F, R, I,L,M, S, T, +, DC, DR, Dl, DL, DS, DT, D+. Les commandesC, R, I, S, (DC, DR, Dl, DC) doivent être suivies d'une chaîne, les commandes + et - d'un nombre. La commande A ((A)JOUTER) ou A(PPEND) pour les anglicistes) permet d'écrire le programme, en ajoutant des caractères à la fin du programme précédent (s'il y en a un), et donc d'enrichir le dictionnaire. Pour entrer un programme, il faut donc taper A sous éditeur, puis taper le programme en utilisant pour le saut de ligne, —pour effacer un caractère, —pour la tabulation ; ES- CAPE (SHIFT) arrête le service et repasse le contrôle à l'EDITEUR. Pour les autres commandes, il faut savoir que l'éditeur comporte un curseur qui peut être déplacé dans le texte du programme. Les commandes suivantes le manipulent : D,R, DR, S, DS, +, —, D+. D (début) : le positionne au L'Ordinateur Individuel OY SLOVO NEZ KOMOTZOV début du programme (commande ED:B). (R (DR ( recherche la chaîne spécifiée dans le programme et positionne devant elle le curseur. La chaîne est recherchée à partir de la position courante du curseur (R) ou du début du texte (DR) (commandes ED : F et BF). S 1DS a la même action que R et DR, avec suppression de la chaîne, une fois celle-ci trouvée. + n D+n déplace le curseur de n caractères vers la droite à partir du début (D+) ou de la position courante (+). Les commandes suivantes ne déplacent pas le curseur : I, T,L,C. I  : insère une chaîne à partir de l'emplacement courant du curseur. Peut être concaténé avec D : DI et le curseur est renvoyé en début de programme. C  : si on pose n = len () alors ( supprime n caractères et insère chaîne (on peut aussi utiliser DC < chaîne). La commande L liste le programme et indique par un "—>", la position du curseur. Elle liste également des numéros de lignes bidons (gadget). Toujours vérifier par L la position du curseur avant une modification importante. Remarque : ne pas faire DL ! C'est sans intérêt. On peut connaître la mémoire programme protégée disponible La commande T (Tuer) est la raison d'être de la commande 1 RECUP. Elle détruit toute la fin du programme à partir de l'emplacement du curseur. DT tue tout. RECUP sauve les pots cassés, comme son nom l'indique. Enfin, un gadget utile, la commande M (mémoire) donne la capacité de la mémoire programme protégée encore disponible. Voilà pour l'éditeur de texte... sans oublier la commande F pour revenir au moniteur. 168 Ce programme interpréteur utilise pour stocker les variables six tableaux :. une zone mémoire RE ! (cent nombres) où sont stockées les variables réelles une zone mémoire EN où sont stockés les entiers (cent places) un « tas » TM !, réel de cinquante places où la machine range les variables globales ; ce tas pose un problème que l'on examinera plus loin une pile SU (cinquante places), qui est la pile que l'utilisateur manipule.. une pile SM (deux cent cinquante-cinq places) où le programme empile les adresses de retour lors des sauts (sous-programmes, tests, boucles, etc.) une table des variables comprenant deux tableaux de deux cent cinquante-cinq places ; NV$ : noms des variables, TV : type et localisation mémoire des variables. Compacter le programme améliorera la vitesse d'exécution Les autres variables sont : DP adresse de début de programme, FP adresse dernier octet de programme +1, MP adresse maximale permise (dépendant de la configuration), PP pointeur programme pour l'éditeur et l'interpréteur, DV numéro (index) première variable du programme en cours, FV dernière variable du (sous —) programme en cours, VC variable courante (index), VI pointeur sur le tas EN, VR pointeur sur le tas RE !, MM pointeur sur le tas TM !, MA pointeur pile machine, PU pointeur pile utilisateur, FL drapeau pour les codes d'erreurs. Toutes les autres variables sont des variables de travail temporaires qui ne sont pas assignées à un usage fixe. Bien entendu, pour améliorer un peu la vitesse d'exécution, le programme ci-après doit être « compacté ». Il est divisé en blocs. 10-40 : initialisation. 100-140 : « pilote » clavier de l'éditeur. 200-320 : sous-programmes de lecture de l'interpréteur. 400-430 : sous-programmes de manipulation pile/variables. 510-560 : moniteur. n°45 Février 83
610-795 : éditeur de texte. 800-980 : sous-programmes de l'éditeur. 1010-1080 : interpréteur (première partie : démarrage d'une routine). 1090-1190 : analyse des instructions et aiguillages vers routines. 1210-2050 : bibliothèque de sous-programmes de l'interpréteur. 3000-3170 : messages d'erreur ()3500-3550 : aide à la programmation (**). (*) Tous les cas d'erreurs possibles n'ont pas été testés. Si le programme tombe sur une erreur imprévue, il s'arrête (ligne 3170) et donne n'importe quoi. (**) L'aide à la programmation (debugging) se fait grâce à) EDIT et sa commandeL, car le curseur se place exactement à l'endroit où s'est produite l'erreur. La commande IDUMP vide successivement la table des variables avec leur numéro d'index, leur nom, leur valeur, puis la pile utilisateur et la pile machine. « Shift @ » stoppe provisoirement le programme et A fait passer directement d'une page de « vidage » à l'autre ; enfin IDUMP donne les valeurs des pointeurs les plus importants. Et maintenant voyons le commentaire détaillé du programme Il s'agit de l'interpréteur version 2.2. pour TRS-80. Initialisation 10 : on fixe une zone mémoire protégée par un « MEMORY SIZE » (voir rubrique « Trucs » du TRS-80, L'01 n°33 de décembre 81). Si vous trouvez cette zone (765 octets) un peu juste, modifiez cette ligne et la ligne 20. 15 : branchement en 3000 après erreur. 20 : on fixe les pointeurs-programme. 30 : dimensionnement des tableaux (voir liste des variables). Le moniteur 510 : message d'accueil. 520 : attente d'une commande. 522 : suppreSsion des blancs de début de commande (non significatifs) et test de chaîne vide. 525 : s'il ne s'agit pas d'une commande, caractérisée par « I » : vers l'interpréteur (sous-programme 1000). 530-535 : aiguillage vers les ri° 45 Février 83 5 REM INTERPRETEUR VERSION 2.2 6 REM POUR TRS 80 7 REM AUTEUR : BERNARD PINON 8 REM COPYRIGHT L'ORDINATEUR INDIVIDUEL ET L'AUTEUR 9 REH*********************************************************** 10 POKE 16561,32000 AND 255:POKE 16562,INT(32000/256):CLEPR 1000 15 ON ERROR GOTO 3000 20 DEFINT A —Z:MP=32767:DP=32002:FP=DP:PP=DP 30 DIM TV(255),NV$(255),SU(50),SM(255),RE, (100),EN(100),TW(50) 40 CLS:GOTO 500 99 REM ==============))) SOUS—PROGRAMMES (((====—== 100 110 120 130 REM) DRIVER CLAVIER < PRINT CHR$(14) ; P$=INKEYS IF A$="" THEN 120 ELSE IF 11$(="Z" AND A$)=" " PRINT CHR$(15)RETURN X=ASC(Ple) IF X=10 A$=CHR$(92) ELSE IF X)96 A$=CHR$(X+32) ELSE IF X=24 A$=CHR$(93) ELSE IF X=25 A$=CHR$(94) ELSE IF X=26 P$=CHR$(95) ELSE IF X=31 P$=CHR$(191) 140 PRINT CHRS(15)RETURN 199 REM) LIRE UN CPRACTERE SIGNIFICATIF 200 X=PEEK(PP):PP=PP+1:IF PP)FP ERROR4 210 IF X=45 AND PEEK(PP)=45 THEN 230 220 IF X=10 OR X=32 THEN 200 ELSE RETURN 230 X=PEEK(PP):PP=PP+1:IF PP)FP ERROR4 240 00T0230 250 REM 299 REM > LIRE UN MOT (300 GOSUB 200:PP=PP-1:A$="" 310 X=PEEK(PP):PP=PP+1:IF PP)FP ERROR15 320 IF X=32 OR X=33 OR X=44 OR X=4E OR X=58 THEN PP=PP-1:RETURN ELSE Ale=R$+CHR$(X):00TO 310 350 REM 399 REM) EMPILER/DEPILER UNE 400 RU=PU-1:Y=SU(PU) IF INT(Y/256)=1 THEN Y'=EN(Y AND 255):RETURN ELSE IF INT(Y/256)=2 Y'=RE'(Y AND 255):RETURN ELSE Y'=TM'(Y AND 255):RETURN 410 TW(MM)=Y':SU(PU)=MM:MM=MM+1:PU=PU+1:RETURN 412 REM 415 REM) CONVERSION ADRESSE/VALEUR (420 IF INT(TV(VC)/256)=1 THEN Y'=EN(TV(VC) AND 255):RETURN ELSE IF INT(TV(VC)/256)=2 THEN Y'=RE'(TV(VC)AND255):RETURN ELSE Y'=0:RETURN 430 X=INT(TV(VC)/256) IF X=1 THEN EN(TV(VC)AND 255)=INT(Y'):RETURN ELSE RE 1 (TV(VC)AND 255)=Y':RETURN 500 REM =====-==))) MONITEUR (« 510 PRINT:PRINT"MONITEUR VERS.1.2":PRINT"PRET" 520 X$="":INPUT"#" ; X$ 522 IF LEFT$(X$,1)=" "THEN X$=RIGHT$(X$,LEN(X$)-1):GOTO 522 ELSE IF X$="" THEN 520 525 IF LEFT$(X$,1)(>")" GOSUB 1000:PRINT:GOTO 520 530 IF X$=")EDIT"THEN 600 ELSE IF X$=")LIST" GOSUB 940:GOTO 520 535 IF X$=")DUMP" THEN 3500 540 IF LEFT$(X$,6)=")RECUP" THEN X=VAL(RIGHT$(X$,LEN(X$)-6)) : FP=DP+X : IF FP)MP THEN FP=MP:GOTO 500 ELSE 500 560 PRINT"COMMANDE INVALIDE.":GOT0520 600 REM ============== » > EDITEUR DE TEXTES ((< 610 PRINT"EDITEUR VERS.1.2" 620 PRINT"*":X$="" 630 GOSUB 100 IF A$=CHR$(13) THEN 655 ELSE IF X=10 THEN 200 ADRESSE OR X=59 = = ELSE IF P$=CHR$(8) IF LEN(X$))0 X$=LEFT$(X$,LEN(X$)-1) : PRINT A$GOTO 630 ELSE GOTO 630 640 IF A$=CHR$(27) PRINT CHR$(10):"BREAK — 0.K.":GOTO 620 650 X$=X$+A$:PRINT P$GOTO 630 655 PRINT 660 X=LEN(X$) IF X=0 THEN 620 ELSE IF X)1 IF LEFTS(X$,1)=" " THEN X$=RIGHT$(X$,X-1) : GOTO 660 ELSE ($=RIGHT$(X$,X-1):X$=LEFT$(X$,1) suite page 170 169 L'Ordinateur Individuel



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


L'Ordinateur Individuel numéro 45 février 1983 Page 1L'Ordinateur Individuel numéro 45 février 1983 Page 2-3L'Ordinateur Individuel numéro 45 février 1983 Page 4-5L'Ordinateur Individuel numéro 45 février 1983 Page 6-7L'Ordinateur Individuel numéro 45 février 1983 Page 8-9L'Ordinateur Individuel numéro 45 février 1983 Page 10-11L'Ordinateur Individuel numéro 45 février 1983 Page 12-13L'Ordinateur Individuel numéro 45 février 1983 Page 14-15L'Ordinateur Individuel numéro 45 février 1983 Page 16-17L'Ordinateur Individuel numéro 45 février 1983 Page 18-19L'Ordinateur Individuel numéro 45 février 1983 Page 20-21L'Ordinateur Individuel numéro 45 février 1983 Page 22-23L'Ordinateur Individuel numéro 45 février 1983 Page 24-25L'Ordinateur Individuel numéro 45 février 1983 Page 26-27L'Ordinateur Individuel numéro 45 février 1983 Page 28-29L'Ordinateur Individuel numéro 45 février 1983 Page 30-31L'Ordinateur Individuel numéro 45 février 1983 Page 32-33L'Ordinateur Individuel numéro 45 février 1983 Page 34-35L'Ordinateur Individuel numéro 45 février 1983 Page 36-37L'Ordinateur Individuel numéro 45 février 1983 Page 38-39L'Ordinateur Individuel numéro 45 février 1983 Page 40-41L'Ordinateur Individuel numéro 45 février 1983 Page 42-43L'Ordinateur Individuel numéro 45 février 1983 Page 44-45L'Ordinateur Individuel numéro 45 février 1983 Page 46-47L'Ordinateur Individuel numéro 45 février 1983 Page 48-49L'Ordinateur Individuel numéro 45 février 1983 Page 50-51L'Ordinateur Individuel numéro 45 février 1983 Page 52-53L'Ordinateur Individuel numéro 45 février 1983 Page 54-55L'Ordinateur Individuel numéro 45 février 1983 Page 56-57L'Ordinateur Individuel numéro 45 février 1983 Page 58-59L'Ordinateur Individuel numéro 45 février 1983 Page 60-61L'Ordinateur Individuel numéro 45 février 1983 Page 62-63L'Ordinateur Individuel numéro 45 février 1983 Page 64-65L'Ordinateur Individuel numéro 45 février 1983 Page 66-67L'Ordinateur Individuel numéro 45 février 1983 Page 68-69L'Ordinateur Individuel numéro 45 février 1983 Page 70-71L'Ordinateur Individuel numéro 45 février 1983 Page 72-73L'Ordinateur Individuel numéro 45 février 1983 Page 74-75L'Ordinateur Individuel numéro 45 février 1983 Page 76-77L'Ordinateur Individuel numéro 45 février 1983 Page 78-79L'Ordinateur Individuel numéro 45 février 1983 Page 80-81L'Ordinateur Individuel numéro 45 février 1983 Page 82-83L'Ordinateur Individuel numéro 45 février 1983 Page 84-85L'Ordinateur Individuel numéro 45 février 1983 Page 86-87L'Ordinateur Individuel numéro 45 février 1983 Page 88-89L'Ordinateur Individuel numéro 45 février 1983 Page 90-91L'Ordinateur Individuel numéro 45 février 1983 Page 92-93L'Ordinateur Individuel numéro 45 février 1983 Page 94-95L'Ordinateur Individuel numéro 45 février 1983 Page 96-97L'Ordinateur Individuel numéro 45 février 1983 Page 98-99L'Ordinateur Individuel numéro 45 février 1983 Page 100-101L'Ordinateur Individuel numéro 45 février 1983 Page 102-103L'Ordinateur Individuel numéro 45 février 1983 Page 104-105L'Ordinateur Individuel numéro 45 février 1983 Page 106-107L'Ordinateur Individuel numéro 45 février 1983 Page 108-109L'Ordinateur Individuel numéro 45 février 1983 Page 110-111L'Ordinateur Individuel numéro 45 février 1983 Page 112-113L'Ordinateur Individuel numéro 45 février 1983 Page 114-115L'Ordinateur Individuel numéro 45 février 1983 Page 116-117L'Ordinateur Individuel numéro 45 février 1983 Page 118-119L'Ordinateur Individuel numéro 45 février 1983 Page 120-121L'Ordinateur Individuel numéro 45 février 1983 Page 122-123L'Ordinateur Individuel numéro 45 février 1983 Page 124-125L'Ordinateur Individuel numéro 45 février 1983 Page 126-127L'Ordinateur Individuel numéro 45 février 1983 Page 128-129L'Ordinateur Individuel numéro 45 février 1983 Page 130-131L'Ordinateur Individuel numéro 45 février 1983 Page 132-133L'Ordinateur Individuel numéro 45 février 1983 Page 134-135L'Ordinateur Individuel numéro 45 février 1983 Page 136-137L'Ordinateur Individuel numéro 45 février 1983 Page 138-139L'Ordinateur Individuel numéro 45 février 1983 Page 140-141L'Ordinateur Individuel numéro 45 février 1983 Page 142-143L'Ordinateur Individuel numéro 45 février 1983 Page 144-145L'Ordinateur Individuel numéro 45 février 1983 Page 146-147L'Ordinateur Individuel numéro 45 février 1983 Page 148-149L'Ordinateur Individuel numéro 45 février 1983 Page 150-151L'Ordinateur Individuel numéro 45 février 1983 Page 152-153L'Ordinateur Individuel numéro 45 février 1983 Page 154-155L'Ordinateur Individuel numéro 45 février 1983 Page 156-157L'Ordinateur Individuel numéro 45 février 1983 Page 158-159L'Ordinateur Individuel numéro 45 février 1983 Page 160-161L'Ordinateur Individuel numéro 45 février 1983 Page 162-163L'Ordinateur Individuel numéro 45 février 1983 Page 164-165L'Ordinateur Individuel numéro 45 février 1983 Page 166-167L'Ordinateur Individuel numéro 45 février 1983 Page 168-169L'Ordinateur Individuel numéro 45 février 1983 Page 170-171L'Ordinateur Individuel numéro 45 février 1983 Page 172-173L'Ordinateur Individuel numéro 45 février 1983 Page 174-175L'Ordinateur Individuel numéro 45 février 1983 Page 176-177L'Ordinateur Individuel numéro 45 février 1983 Page 178-179L'Ordinateur Individuel numéro 45 février 1983 Page 180-181L'Ordinateur Individuel numéro 45 février 1983 Page 182-183L'Ordinateur Individuel numéro 45 février 1983 Page 184-185L'Ordinateur Individuel numéro 45 février 1983 Page 186-187L'Ordinateur Individuel numéro 45 février 1983 Page 188-189L'Ordinateur Individuel numéro 45 février 1983 Page 190-191L'Ordinateur Individuel numéro 45 février 1983 Page 192-193L'Ordinateur Individuel numéro 45 février 1983 Page 194-195L'Ordinateur Individuel numéro 45 février 1983 Page 196-197L'Ordinateur Individuel numéro 45 février 1983 Page 198-199L'Ordinateur Individuel numéro 45 février 1983 Page 200-201L'Ordinateur Individuel numéro 45 février 1983 Page 202-203L'Ordinateur Individuel numéro 45 février 1983 Page 204-205L'Ordinateur Individuel numéro 45 février 1983 Page 206-207L'Ordinateur Individuel numéro 45 février 1983 Page 208-209L'Ordinateur Individuel numéro 45 février 1983 Page 210-211L'Ordinateur Individuel numéro 45 février 1983 Page 212-213L'Ordinateur Individuel numéro 45 février 1983 Page 214-215L'Ordinateur Individuel numéro 45 février 1983 Page 216-217L'Ordinateur Individuel numéro 45 février 1983 Page 218-219L'Ordinateur Individuel numéro 45 février 1983 Page 220-221L'Ordinateur Individuel numéro 45 février 1983 Page 222-223L'Ordinateur Individuel numéro 45 février 1983 Page 224-225L'Ordinateur Individuel numéro 45 février 1983 Page 226-227L'Ordinateur Individuel numéro 45 février 1983 Page 228-229L'Ordinateur Individuel numéro 45 février 1983 Page 230-231L'Ordinateur Individuel numéro 45 février 1983 Page 232-233L'Ordinateur Individuel numéro 45 février 1983 Page 234-235L'Ordinateur Individuel numéro 45 février 1983 Page 236-237L'Ordinateur Individuel numéro 45 février 1983 Page 238-239L'Ordinateur Individuel numéro 45 février 1983 Page 240-241L'Ordinateur Individuel numéro 45 février 1983 Page 242-243L'Ordinateur Individuel numéro 45 février 1983 Page 244-245L'Ordinateur Individuel numéro 45 février 1983 Page 246-247L'Ordinateur Individuel numéro 45 février 1983 Page 248-249L'Ordinateur Individuel numéro 45 février 1983 Page 250-251L'Ordinateur Individuel numéro 45 février 1983 Page 252-253L'Ordinateur Individuel numéro 45 février 1983 Page 254