Text content (OCR)
ouverture des Apple a la
communication dans les
pages de Pom's se
poursuit par un
programme qui allie au «savoir
communiquer» de CalyaCom
l'indispensable liaison 4
l'ordinateur.
CalvaCom
Pour les lecteurs non encore au fait des
possibilités de CalvaCom, une
présentation sommaire s'impose. I] se
différencie des serveurs habituellement
consultés & l'aide du Minitel par
plusieurs points :
* on y accéde par le 36 13 (ou
36 00 36 O1, une unité toutes les 6
mn moins réduction d'horaires), le coat
de connexion étant réglé directement 4
CalvaCom (prélévement ou carte
bancaire) ;
* la consultation se fait sans caractére
graphique : seuls les caractéres ASCII
arrivent au modem ou au Minitel. Ce
dernier affiche les messages en mode
“rouleau” tel une imprimante ;
+ passer de menus en menus est bien
plus simple et efficace que sur les
serveurs kiosque, 'acc’s & l'information
est particuligrement rapide ;
+ il a €té congu dans l'optique de la
connexion a l'ordinateur : les
informations disponibles sont réellement
exploitables par le micro.
CalvaCom met & la disposition des
abonnés :
+ une messagerie électronique qui
permet 4 chacun de classer ses
messages, de répondre simplement, de
recevoir des messages directement de
Yordinateur de l'abonné pour éviter de
perdre du temps 4 les composer en
direct ;
+ le service TELEX, en émission et
réception ;
des forums électroniques ;
un systéme de téléconférence (convi-
vialité) ;
* un systéme de petites annonces ;
* des magazines électroniques ;
+ des biblioth¢ques de programmes
1éléchargeables ;
* les dépéches de l'Agence France
Presse ;
* les cours de la bourse avec possibilité
Apple //, Macintosh.
Le programme
CLV_POMS
Proposé en version Apple // et en
version Macintosh, CLV_POMS donne
les possibilités suivantes :
* enregistrement de consultations
CalvaCom. Les fichiers constitués
sont récupérables par votre traitement de
texte, votre tableur... et ils ne sont
limités en dimension que par la capacité
de votre support disque ;
+ mode téléscripteur : impression au
fur et 4 mesure de la réception, mode
particuligrement efficace lors de
Iécoute” des dépéches AFP (qui
tombent au fur et 4 mesure de I'actualité)
‘ou des cours de la bourse ;
* exportation de fichiers vers
CalvaCom : vous voulez passer une
petite annonce, nous laisser un message
(le code de Pom’s est EMP11),
participer 4 un forum, constituer un
fichier sur le serveur pour utilisation
ultérieure ? Préparez-le en traitement de
textes et envoyez-le par cette option : il
sera transmis sans protocole mais au
bon débit, en respectant la mini-pause de
fin de ligne ;
+ procédures : c'est une utilisation
particuligre du mode précédent. Ill est
possible de préparer un texte
comprenant les options choisies pour
une consultation habituelle et de
lenvoyer & CalvaCom pour atteindre
plus rapidement et sans erreur les
informations. Pour consulter
automatiquement les publicités du forum
Macintosh, la procédure pourrait étre la
suivante :
N°_abonné
Mot_de_passe
ci
facintosh
mac
fo pub
Des pauses peuvent étre incluses dans le
fichier pour tenir compte du temps
daffichage des nouveautés aprés le mot
de passe par exemple.
* impression d'un fichier de textes sur
disque : il s'agira souvent du résultat
de votre derniére connexion ou d'une
demiére vérification de votre texte avant
exportation.
Bien entendu, les programmes
CLV_POMS recodent les minuscules
accentuées tant en émission qu'en
réception, tant sur le Mac que sur
l'Apple //, tant avec un Minitel 40
colonnes que sur le 80 colonnes.
Configuration
CLV_POMS fonctionne sur :
Apple ][+ avec ROM minuscules,
carte langage et carte Super Série Apple ;
Apple //e avec carte Super Série
Apple ;
Apple //e;
Apple IIGS sur son port modem
intégré ou avec une carte SSC ;
Macintosh 128, 512, Plus ou SE.
Il nécessite :
- un modem ou un Minitel (les modéles
80 colonnes sont bien plus
agréables),
un cable de liaison disponible a la
revue.
La disquette
CLV_POMS, écrit en assembleur, est
livré sur une disquette 3'5 pour
Macintosh et au choix 5'25 ou 3'S pour
T'Apple //.
La version Apple // fonctionne sous
ProDOS avec tous les volumes
(disquettes 140Ko, 800Ko, disque
/RAM, Speedisk, disques durs...).
La version Mac fonctionne avec tous les
supports, tant en MFS qu'en HFS.
CLV_POMS : 200,00 F TTC, cable de
liaison 225,00 F, bon de commande
page 74,
Peeks et Pokes
Numéro 31 Décompacteur de
juillet-aoiit 1987 programmes Basic
Julien Thomas
Editorial es: = 8 Page 43
Hervé Thiriez Page 5 _ es
Disquette Pom’s 31 Mac Page 45
longs sur GS
Un accessoire ‘minimum’
CAUET
(it+]} [Ze We]
es oes fase | |g} Page 9
Christian Piard Page 6 MinAcc fra: Page 46
Le Basic et l'heure Page 8 Alain Boer —— es)
Graphes et fonctions Claude- Kino & fas Page 47
Lucien Alain Bohee =D)
GOGO ‘Newt
HC Gr) He Page 22
5 =| | aaa
Les nouvelles version
d'InterPom’s Page 52
Ics We PC};
icteee
Disquette Pom’s 31 Apple // page 26
Serge Cattan
Le voyageur
Essai ; une nouvelle carte :
Alexandre
Speedisk Duback Page 27
IE] I+] [e]]| Page 55
eee | (ES | (ee |
Turbo-Pascal : Graphisme,
Essai ; une carte vocale : suite... Michel de Crémoux &
. Nicolas Martin
Valentine P Ue} [e}! 7 pace 5
age 28 Bes Page 59
ag (| ( 3 | | eg
Ecriture proportionelle en
DHGR
Frédéric
[Hes ]} _ Rosay
WHC f oo% He — Page 31
ee | | CSS || ES | Eas
Bibliographie Cs
Alexandre Duback Page 62
Un nouveau produit Pom’s :
Editeur Vidéotex Page 37
LeMouse : souris &
menus Tie Le Pham Hiep
Page 63
Essai Macintosh: =) &
Writer + —
Philippe Mathieu Page 40
Ll-informations %
Jean-Michel Gourévitch Page 67
Les annonceurs ; Apple : pages 38 et 39 ; LOGMA S.A. : page 76 ; mak fan : page 4; Q.S.I. : page 44.
Editions MEV - 12, rue d’Anjou - 78000 Versailles. Tél. : (1) 39 51 24 43. Directeur de la publication : Hervé Thiriez
Pom's n° 31
LA NOUVELLE REVUE
DES FANAS DU
MACINTOSH
C'est LA NOUVELLE REVUE de [utilisateur pointu de "Macintosh".
Crest l'espace ou les utilisateurs de 4D, Excel, Writer +, Jazz et TK Solver se retrouvent.
C'est le magazine de celui qui veut se dégourdir les doigts et les neurones sur le Clavier,
avec les "tutorials" en Pascal, Assembleur, "C", Lisp et Modula.
C'est la revue ou vous pouvez écrire si vous avez une belle réalisation d'application a votre actif,
c'est Votre revue disponible dans les kiosques.
mak fan Bp 33, 94471 - BOISSY Cédex Tél. : 45 99 02 10
SOMMAIRE DU N° 4 (64 pages)
actuellement dans les kiosques
MAC WORLD WRITER PLUS
DESKTOP PUBLISHING TUTORIAL : ASSEMBLEUR 68000
INFOS PRESSE ALOOaH RES
MACROS D'EXCEL L'HOMME DU MOIS (UN GRAPHISTE)
INTRODUCTION A 48 DIMENSION RECREATIONS ALGORITHMIQUES
BASEGEST (48D) CALCULS EN MULTI-PRECISION
bulletin d'abonnement (suetin a recopier ou 4 photocopier)
aretourner a: Mak fan BP 33, 94471 - BOISSY Cédex
Q Oui, je m'abonne pour 1 an [8 numéros] a partir du N°
au prix de 260 F au lieu de 280 F
Q Abonnement de soutien : 350 F (8 numéros)
Frais de port inclus - Etranger : 45 F le numéro.
VENTE AU NUMERO. G N13 G N2_— auprixunitaire de 30 F (40 F pour I'Etranger)
(@ NP3_— au prix unitaire de 35 F ( 45 F pour I'Etranger).
ci-joint un cheque de. . .FF a l'ordre de mak fan
Adresse :
Ville :
Prénom :
Code postal : .
. Profession
Ont collaboré 4 ce numéro
Alexandre Avrane — Jean-Luc Bazanegue
Alain Bohec — Serge Cattan
Claude-Lucien Cauet
Michel de Crémoux
Alexandre Duback
Jean-Michel Gourévitch
Olivier Herz - Le Pham Hiep
Nicolas Martin — Philippe Mathieu
Gérard Michel — Patrice Neveu
Christian Piard — Frédéric Rosay
Hervé Thiriez — Julien Thomas
Directeur de la publication
rédacteur en chef
Hervé Thiriez
Rédacteurs
Alexandre Avrane — Olivier Herz
Siege social
Editions MEV
12, rue d'Anjou
78000 Versailles
® (1) 39.51.24.43
Publicité
Editions MEV
Diffusion
N.M.P.P.
Impression
Berger-Levrault
18, rue des Glacis
54000 Nancy
@ 83.35.61.44
Photos de couverture
CP & JLB
Photogravure
Graphotec
21, chemin de la Tour
92350 Le Plessis-Robinson
® (1) 4630.44.49
Pom's est une revue indépendante non
rattachée a Apple Computer, Inc. ni
a Apple Computer France S.A.R.L.
Apple, le logo Apple, Mac et le
logo Macintosh sont des
marques déposées
d'Apple Computer, Inc.
IBM est une marque déposée de
International Business Machine.
PC et AT sont des marques déposée
de la Société IBM.
Editorial
Une fois n'est pas coutume, voici en couverture — et sur
fond de loisirs estivaux - une illustration du
fonctionnement de deux programmes que vous pourrez
trouver dans ce numéro : Schémateur, volumineux,
dans le domaine de la création graphique et Peeks /Pokes
longs qui en fait voir de toutes les couleurs — ou presque
— sur l’Apple lcs et derriére le logo “Pom's”.
Pom’s poursuit sa lancée dans l'exploration des voies
communicantes en vous proposant trois disquettes
éditées en dehors des pages de la revue :
InterPom’s — le programme qui, depuis le numéro 28,
relie vos Apple // et/ou Macintosh par téléphone via
Minitel - a recu de nombreuses améliorations dans la
version 2, version capable de communiquer de la méme
maniére avec les micros IBM® et compatibles.
CLV_Pom’s vous est proposé pour répondre aux besoins
de nombre de lecteurs abonnés & CalvaCom. Que se soit
pour Apple // ou Macintosh, CLV_Pom’s se _ présente
sous la forme d'une application autonome et est
compatible ‘toutes configurations’.
Enfin, un éditeur vidéotex en CP/M, pour les Apple |/
munis d'une carte 80 colonnes ainsi que d'une carte Z80.
Communiquer n'a pas été facile pour tous nos lecteurs ;
vous étes nombreux a avoir attendu longtemps — parfois
un mois — la réception de votre cable Apple/Minitel
décrit dans les numéros 27 et 28. En effet, nous avions
envisagé la distribution de ce type de cable comme un
service aux lecteurs qui n‘avaient pas la possibilité
d'effectuer la réalisation eux-méme, or, la parution
d’articles dithyrambiques dans d'autres pages que celles
de Pom's nous a valu un afflux de commandes auquel
nous ne nous attendions pas. Tout est désormais rentré
dans l'ordre et nous prions ceux d’entre-vous qui ont
attendu de bien vouloir nous excuser de ce retard
regrettable.
Pour revenir au numéro 31 proprement dit, et sans aller
jusqu'a décrire chaque article (il y en a beaucoup et ce
serait trop long pour un éditorial !), on peut signaler la
présence de trois bancs d’essais dont deux ‘hard’ pour
l’Apple // : la carte vocale Valentine et le ‘disque-RAM’
Speedisk. Le banc d’essai ‘soft’ est celui de Writer +,
traitement de textes pour Macintosh.
Hervé Thiriez
Pom’'s n° 31
sur Apple IIGS
-)Applesoft semble
bien perdu devant
254 des 255 bancs
= de 64Ko du IIGS.
En effet, comment accéder
depuis le Basic 4la ROM en
page 255, a la page Super
Haute Résolution en page
225 (adresses 14 753 792 a
14 778 367) par exemple ?
La petite routine présentée ici dote
le Basic de PEEK et POKE
longs, c'est-a-dire accédant a
l'ensemble de la mémoire. Deux
programmes de démonstration en
illustrent les possibilités.
Mode d'emploi
La routine s'installe a l'adresse
$300, mais ne demande qu'a étre
assemblée ailleurs en cas de
besoin.
L'initialisation se fait en mode
direct par :
- PIC.POC
et dans un programme par :
PRINT CHR$(4)"-PIC.POC"
Voici la syntaxe des commandes
disponibles :
& PEEK page, adresse, var%
Page est le numéro en décimal du
banc oi la lecture se fera.
Adresse est l'adresse en décimal
dans ladite page.
Var% est la variable entiére qui
recevra la valeur de l'octet
souhaité.
Par exemple :
& PEEK 255,
65535, GF
affectera 4 GF% la valeur de la
demiére adresse mémoire.
& PEEK 1-1,MLI,A1#(2)
affectera 4 la 3éme variable du
tableau A1% la valeur 76 si on a
définit MLI=48896 ($BFO0) et
que ProDOS est actif.
Page supérieure 4 255 et adresse
supérieure 4 65535 conduisent 4
un «Illegal quantity error» mérité.
Si la variable réceptrice n'est pas
entiére (%), l'utilisateur sera
gratifié du «Type mismatch
error».
& POKE page, adresse, valeur
Méme principe pour Page et
Adresse ; Valeur sera comprise
entre 0 et 255 sous peine de
message d'erreur.
Des exemples
Le programme LIT.MESS.GS
est une illustration du PEEK : il
lit et affiche les messages stockés
en page 255 (ROM),
particuliérement ceux affichés par
le tableau de bord.
Cette zone est visée par un
pointeur dont l'adresse est
donnée en $E100C0/E100C2.
Sous réserve de bien respecter les
conventions “poids fort a 1,
poids fort a 0”, il suffit de
changer cette adresse et le GS
affichera votre table de message
en francais par exemple.
Le programme GSCOLOR ne fait
qu'un dégradé de couleurs en
page Super Haute Résolution,
semblable a celui de la couverture
de ce numéro. II prend son temps
(9 minutes en mode rapide...)
mais illustre le fonctionnement du
Peeks et Pokes longs
Christian Piard
&POKE par 64000 points 4
l'écran. On peut rappeler
succinctement la structure d'une
page SHGR.
La SHGR
Une telle page se situe dans la
page $E1 (225) entre $2000 et
SOFFF.
de $9E00 4 $9FFF
16 palettes de 16 couleurs
chacune composée de 2 octets ou
32 bits :
4 bits pour le vert
4 bits pour le bleu
4 bits 20
4 bits pour le rouge
On obtient un jaune vif avec :
FOOF c'est-a-dire seize 16mes
de vert, zéro 16éme de bleu et
seize 16émes de rouge.
de $9D00 a $9DC7
200 octets (1 par ligne a I'écran)
dont les 4 bits de poids faible
donnent le numéro de la palette
qui sera utilisée par la ligne
concemée.
Le bit 7 sera a 0 si la ligne
comprend 320 point, c'est le cas
dans notre exemple.
Le bit 6 a 1 provoquerait une
interruption en fin de ligne pour
changer une couleur de la palette
avant affichage de la ligne
suivante par exemple.
de $2000 4 $9CFF
32000 octets pour les 64000
points a l'écran (200 lignes de
320 pixels). Chaque point est
représenté par un demi octet qui
indique, de 0 a 15 le numéro de
sa couleur dans la palette réservée
pour la ligne considéré
Pom's n° 31
Source PIC.POC.S
Assembleur ProCODE
54 JsR FRNUM
a + 2éme paramétre sur deux octets
2 die _ 55 JSR GETADR —; c'est l'adresse
3. duppen-4pone=LONGS“SURCAPPLE|2I6S 56 1x $50 7 on prépare l'adresse du Peek
a de = 37 STX ADRESSE; ow du Poke
ri 58 STX ADRESSE
5 sk pre.poc 59 STA ADRESSE+1
3 60 ‘STA ADRESSE1+1
7 ANPERV = $385 pavecteurse 61 BIT DP_PEEK ; est-ce Peek ?
8 FRNUM = $DD67 4 calcule une formule ee BAT, (Sc REER:
9 CHKCOM = $DEBE ¢ virgule ? ee
a0 cerape: “mw SE78E PTAC» ectier 64 JSR GETBYTC —; 3éme paramétre : octet 4 poker
11 GETBYTC SE6FS 4 formule sur un octet a5. Sue, ROMA
12) PTRGET $DFE3 y recherche d'une variable 66
13° MIsmatcH ‘$0076 ; message type mismatch 67 Me LPOKE 7 on poke
14 VARNAM $81 ; nom de la variable Gs
15 VARPNT $43 { pointeur sur sa valeur 69 5 PEEK JSR cHKcoM —; virgule ?
Pe 70 JSR PTRGET |; cherche pointeur sur variable
a7 eS 5506 1 STA VARPNT — ; le sauve
t8 72 STY VARPNT+1
oy) IDK AMBBAVe? - veceur Aji Install’ 2 73 LDA VARNAM la varfable doit étre entlére
20 Gis. pebEsth ” AND VARNAM#1 7 C8, CAB ou DE(4) par exemple
21 BNE INIT ce ANT: Jt
2 Goa MEAS: 76 JMP MISMATCH ; sinon Type mismatch error
23 CMP = #>DEBUT ay
24 BEQ INITOK 78 jt JSR LPEEK + 0n va chercher I "octet
25 INIT LDA AMPERV+1 ; non, on sauvegarde 1'éventuel 73 wy + et on le stocke 4 J'adresse
26 BPA GAUCVEC ancien vecteut #0 STA (VARPNT),Y ; de 1a vartable cholsie
27 LDA AMPERV+2 1 DEY
26 STA ANCVEC+1 82 TYA
29 LDA #$4c + et on Installe le nouveau 83 STA (VARPNT), ¥
30 ‘STA AMPERV a4 RTS
31 LDA #<DEBUT 85 .
32 STA AMPERV+1 86 AUTRE SMP (ANCVEC) ; saute a I'ancien vecteur
33 LDA #>DEBUT a7
34 STA AMPERV+2 88 LPOKE FB $18 2 cle
35 INITOK RTS a9 Des SFB 4 XCE passage en 16 bits
36 90 Dra $A9 5 LDA #donnée
27 peau cap #gB9 + est-ce POKE 91 APOKER DFB O
3e BEQ POKE 92 Dra sar + STA $000000
39 CMP #SE2 ; est-ce PEEK 93 ADRESSE DFB 0,0
to BNE AUTRE 94 N_PAGE DFB 0 :
a 95 FIN DPA $38 3 SEC Retour au 6502
42 PEEK © LOX SPF + elest PEEK 96 DPB SFB 7 XCE
a STX DP_PEEK ; on positionne un drapeau 97 DrB $60 RTS
“4 BMI POKE1 98
45 99 LPEEK DPB $18 7 cue
46 POKE = «LD 40 7 clest POKE 100 Dre $FB 7 XCE
7 STX DP_PEEK 101 DEB SAP + LDA $000000
48 POKE] JSR GETAYTC ; ler paramatre = 1 octet 102 ADRESSE] DFB 0,0
49 STX NPAGE ; c'est le n® de page de 64Ko 103 NAGE! DPB 0
50 STX N_PAGEI 104 DEB $80,$F5 —; BRA FIN
51 105
52 JSR CHKCOM —; virgule ? 106 ANCVEC DA $rFS8 + RTS par défaut
53 107 DP PEEK DS 1 Iigs
Programme LIT.MESS.GS Efface l'ensemble SHGR, routine
SHLAM
17 FOR I=1 TO LEN (A$): POKE 511 + I, A
2 PRINT CHR$ (4)"-PIC.POC SC ( MID$ (A$,I,1)) + 128: NEXT : POKE
O FOR I 35374 TO 37261: & PEEK 255,1,G 72,0: CALL - 144
$:G$ = G& - 128 * (G& > 127): ON NOTG 20 REM Construction des palettes
% GOSUB 100: IF G& > 31 THEN PRINT CH 30 FOR TI O TO 30: & POKE 225,40448 + I,
RS (G8); 240:1 = I + 1: & POKE 225,40448 + I,
20 NEXT / 2: NEXT
30 END
40 FOR I = 0 TO 30: & POKE 225,40448 + I
100 PRINT : RETURN ProDOS + 32,(30 - I) * = I+ 1:-& POKE 22
5,40448 + I + 32,15: NEXT
50 FOR I = 0 TO 30: & POKE 225,40448 + I
Programme GSCOLOR "eee Cae 1: & POKE 225,40448
Temps d'exécution : 9 mn... 60 FOR I = 0 TO 30: & POKE 225,40448 + I
1 PRINT CHR$ (4)"-PIC.POC + 96,15:I = I + 1: & POKE 225,40448 +
10 U = PEEK (49204): POKE 49204,0: REM 96, (31 - I) / 2: NEXT
Sauvegarde de la couleur des 70 FOR I = 0 TO 30: & POKE 225,40448 + I
bords, puis mise au noir + 128,15 +I * 8:I =I + 1: & POKE 225
15 POKE 49193,161 740448 + I + 128,0; NEXT
16 AS = "E1/9 N 0<2000.9FFFZ N 5<9D60.9DC7Z 72 FOR I = 0 TO 30: & POKE 225,40448 + I
N 0<9ECO.9EDFZ N 0/9 N D823G" : REM + 160,240 + (30-1) f 2: =I+1:6
Pom's n° 31
225,40448 + I + 128,0: NEXT 40448 + I
73 = 0 70 30: & POKE 225,40448 + I, 78 FOR I = 0 & POKE 225,40448 +
& POKE 225,40448 + I + 192,240:1 + 160,246 I) / 2: & POKE 225,4
= I+ 1: & POKE 225,40448 + I,I / 2: & 18 + 192,240 + (30 - I) / 2
POKE 225,40448 + I + 192,I / 2: Me POKE 225,40448 + I
74 FOR I = 0 TO 30: & POKE 225,404 I 225,40448 + I + 126 +
+ 32, (30 - I) * 8: & POKE 225,40448 +
I + 32 + 192,(30- 1) * 8:2 =T +1: 6 1 Installation des pointeurs
POKE 225,40448 + I + 32, & POKE 22 1 = 40192 TO 40192 + 176 STEP 16:
5,40448 + I + 32 + 192,1 0 70 15: & POKE 225,1 + J, (i -
75 FOR I = 0 TO 30: & POKE 225,40448 + I 40192) / 16: NEXT : NEXT
+ 64,1 / 2: & POKE 225,40448 + REM Remplissage de la page
+ 192,I / 2:1 = 1 + 1: & POKE A = 8192 TO £192 + 5 * 2560 ST
8+ 1 + 64,15: & POKE 225,4044 560
64 + 192,15: NEXT 220 FOR B= 0 TO 15
76 FOR I = 0 T0 30: & POKE 225,40448 + I 230 FOR C = 0 TO 159
+ 96,15: & POKE 225,40448 + I + 96 + 1 240 AD =A +B * 160 + C: & POKE 225,AD,B
92,15:I = I + 1: & POKE 225,40 7 +B* 16
+ 96, (31 - I) / 2: & POKE 225,40448 + 245 & POKE 225,AD + 15360,B + B * 16
I + 96 + 192, (31 - I) / EXT 250 NEXT : NEXT : NEX’
77 FOR I = 0 TO 30: & POKE 40448 + I 999 PRINT CHR$ (7): GET R$: POKE 49193,65
+ 128,15 + I * 8: & 40448 + I 1000 POKE 49204,U: REM Restaure la
+ 128 + 192,15 + I +1: & couleur des bords
OKE 225,40448 + I + POKE 225,
Récapitulation 03 C9 03 FO 1B AD F6 8D 9D
8D Al 03 AD F? 03 @D 20 FS E
PIC. POC 03 A9 4C 8D F5 03 AS 03 20
m 8D F6 03 A9 03 8D F7 83 84
60 C9 BO FO OB C9 E2 03 4C 76 DD 20
Apres avoir saisi cette récapitulation 59 A2 FF 8E A3 03 30 01 91 83 88 98
sous moniteur, vous la sauvegarderez A2 00 8E AZ 03 20 FS 291 83 60 6C Al 03 18 FB
Par: BSAVE PIC. POC, A$300, LSA4 8E 95 03 8E 9E 03 20 0390:A9 00 8F 00 00 00 38 FB
DE 20 67 DD 20 52 E? 0398:60 18 FB AF 00 00 00 80
0300:AD F6 03 C9 2A DO 07 aD 50 8B 93 03 BE 9C 03 03A0:F5 58 FF 00
Le Basic et l'heure
En Basic sous ProDOS, il
existe un moyen simple
d'obtenir l'heure dans le but de
mesurer un temps d'exécution
par exemple. Nul besoin
d'appeler une commande
externe ou d'écrire la
mini-routine qui appellerait
GET_TIME et remettrait a
l'heure les octets $BF90 a
$BF93.
Il suffit d'utiliser la routine de
fermeture des fichiers du
Basic. Interpreter 1.1 qui se chargera
du travail :
ProDOS
Un conseil ?
faire CLOSE ; l'octet 49043 donne
alors l'heure, et le 49042 les
minutes.
Par exemple, le programme :
10 HOME
20 PRINT CHR$ (4) "CLOSE
30 VTAB 10: PRINT PEEK(4
9043)" heures "PEEK (
4904 2)" minutes
40 GOTO 20
affiche l'heure en permanence.
Bien sir, il faut une carte horloge
dans l'appareil ; celle intégrée au
las ne sera activée qu'avec
ProDOS 1.2 et suivants. GC
Un probleme ?
Un souhait ?...
...24 heures sur
24, laissez
votre
message sur
CalvaCom.
Le code
diabonné de
votre revue,
c'est “emp11”.
Pom's n° 31
Gra
Claude-Lucien CAUET
Ce programme se compose de
deux parties :
+ le programme SCHEMATEUR
permet de dessiner des figures
en haute résolution (rectangles,
cercles, ellipses...) avec des
textes incorporés (y compris un
jeu de caractéres mathématiques).
Par ailleurs, il est possible de
remplir les surfaces avec des
motifs variés, de déplacer l'image
(ou une partie) dans toutes les
directions : centrage, mixage,
image géante de trois écrans. On
peut enfin travailler simulta-
nément avec deux images
superposées, les mettre en
réserve (jusqu'a cing en mémoire
auxiliaire), inverser la couleur...
Bref, un programme ambitieux.
* le programme FONCTION
permet de tracer le graphe de
fonctions mathématiques de tous
types, ou leur dérivée, en
choisissant 4 loisir I'échelle et la
fenétre de visualisation. Les
tracés sont continus ou pointillés,
et leur création peut étre
accélérée. Trois écrans gra-
phiques sont disponibles, dont
deux superposables. Enfin, une
fonction est acceptée méme dans
un domaine ot elle n'est pas
définie.
Ces deux programmes
communiquent sans probléme
leurs images graphiques, qui
peuvent étre imprimées
directement sur ImageWriter
grace a l'utilitaire GRAVURE.
Configuration
Un minimum de 64Ko de
mémoire est nécessaire ; par
ailleurs, une paire de ‘paddles’
(ou un joystick) est recomman-
dée. Le programme est
initialement congu pour un Apple
//le ou //c mais doit pouvoir
tourer sans modification sur un
I[+.
L'essentiel des modules sont
écrits en Applesoft et donc
facilement modifiables. Plusieurs
fichiers en assembleur completent
l'ensemble pour assurer les
fonctions délicates ou qui
nécessitent une grande vitesse.
GRAPHISME fonctionne sous
DOS 3.3 ; son adaptation a
ProDOS nécessiterait de revoir
les fonctions de gestion des
images en mémoire (actuellement
conservées dans la carte langage
et l'éventuelle mémoire auxiliaire
de la carte 80 colonnes étendues).
Le démarrage de GRAPHISME
s'effectue par un simple :
RUN GRAPHISME
qui améne sur un premier menu
proposant l'accés aux deux
principaux programmes, ainsi
qu'une option de configuration :
existence de paddles et nombre de
lecteurs de disquettes.
Utilisation
En langant le programme, on se
trouve placé en mode graphique
et un point lumineux apparait au
centre de I'écran.
Strophoide
RCT =-€ COSC 24T
wv qT
-Ecrcd
=f
29/COSC 1
Pom's n° 31
La touche Q permet d'accéder au
menu principal permettant la
lecture/écriture d'une image
graphique, le catalogue d'une
disquette et de quitter
SCHEMATEUR.
Ctrl-Q permet d'obtenir a I'écran
un rappel des fonctions
disponibles.
Déplacement du curseur
Le curseur graphique se déplace
sans tracer grace aux fléches du
clavier, par saut de douze
positions. En appuyant
simultanément sur @ (ou le
bouton adéquat du joystick), le
déplacement s'effectue point par
point, donc beaucoup plus
lentement. A l'inverse, l'appui de
G permet de se déplacer par saut
de quart d'écran.
La touche TAB (Ctrl-I) permet
d'activer (ou de désactiver) le
mode joystick. Le déplacement
peut alors étre effectué beaucoup
plus rapidement vers la position
voulue, mais avec moins de
précision. I] sera donc commode
d'utiliser alternativement ces deux
modes.
Commandes globales
DEL efface l'écran graphique.
K_ définit une couleur : 0 47 si
vous utilisez réellement la
couleur, ou N,B,G pour
noir, blanc et gris respec-
tivement avec un moniteur
monochrome.
I _ inverse totalement la couleur
de l'écran.
W échange le dessin courant
avec un dessin stocké en
carte langage.
U_ superpose le deuxiéme dessin
au dessin courant.
Commandes de
positionnement
et de tracé
X = marque la position du point,
comme étant le début du
tracé. Par suite, le dernier
point du tracé deviendra le
nouveau point de départ.
Z marque de maniére perma-
nente le point courant comme
étant le point de départ de
tous les tracés suivants. Utile
pour tracer des cercles
concentriques ou des droites
concourantes.
ESPACE trace un segment de
droite entre le point de départ
défini et le point actuel.
H_ trace un segment horizontal
entre le point de départ et la
verticale passant par le point
courant.
V_ idem mais trace un segment
vertical.
R_ trace un rectangle dont les
points opposés sont le point
de départ et le point courant.
C_ trace un cercle centré sur le
point de départ et dont la
circonférence passe par le
point mobile.
D_ idem mais trace un disque
plein.
A trace lentement un cercle dans
le sens des aiguilles d'une
montre, interruptible par une
touche quelconque afin
d'obtenir un arc de cercle. Le
tracé est définitivement arrété
par RETURN.
E idem mais trace lentement
une ellipse centrée sur le
point de départ et dont les
demi-axes sont donnés par la
position du point courant.
Commandes de
remplissage
S remplit une surface de forme
quelconque, définie par la
position du point courant et
délimitée par des limites
pleines (pas de pointillé). Le
remplissage peut étre
interrompu par une touche
quelconque.
précise le
remplissage :
(remplissage complet),
(lignes verticales),
(lignes horizontales),
(points réguliérement espa-
cés),
(quadrillage),
mode de
oO wWE<TQ FT
(hachures penchées a droite),
(idem 4 gauche),
(losange).
Le pas peut également étre
défini, ainsi que I'épaisseur
des traits.
L_indique si le remplissage est
limité par des points allumés
ou éteints, ainsi que le mode
de superposition (par la
commande U).
bad
On peut gommer par les touches
‘G (gomme horizontale) ou Y
(gomme verticale), jusqu’a la fin
de ce mode par RETURN.
Commandes de texte
On entre en mode texte par la
touche T, et un curseur apparait.
Celui-ci se déplace avec les
Heches ainsi qu'avec les touches
On peut superposer deux
caractéres en revenant en arriére
aprés le premier caractére (accent
circonflexe, tréma).
L'appui simultané de G fournit
un jeu de caractéres mathéma-
tiques et grecs.
DEL efface un caractére. ESC
donne un curseur mort : il
n'avance pas (utile pour le
pivotement),
Ctrl-A agrandit le caractére,
Ctrl-Z le réduira (s'il a été
agrandit).
Enfin, Ctrl-W fait pivoter le
caractére d'un quart de tour. On
sort de ce mode texte par
RETURN.
Déplacements du dessin
La touche M active le mode
déplacement les fléches
permettent alors de déplacer le
dessin, de huit points en huit
points.
L'appui simultanée de la touche
@ permet d'enrouler le dessin :
horizontalement, il roule sur une
largeur égale & deux écrans ;
verticalement, sur une hauteur
d'un écran et demi. Soit un total
de trois écrans. La touche W
reste bien sir opérationnelle pour
observer la seconde partie de
l'image horizontale. On ressort de
10
Pom's n° 31
ce mode par Return.
Définition de fenétre
F permet de définir le coin d'une
fenétre dont le coin opposé a été
défini par la touche X.
Plusieurs options sont alors
possibles :
+ — effacer la fenétre (touche G) ;
+ laremplir uniformément (R) ;
+ effacer l'extérieur (D) ou
* — encadrer la fenétre (E).
La touche M permet de déplacer
la fenétre en superposition sur le
dessin en cours ; la barre
d'espace permet ensuite de figer
le résultat. Dans ce mode, il est
tgcommandé d'utiliser la touche
Stockage d'images en
mémoire
La touche B échange le dessin
courant avec un dessin stocké en
mémoire.
Les fonctions suivantes sont
disponibles si l'on dispose d'une
carte 80 colonnes étendues
(128Ko) :
O permet d'observer les dessins
stockés (jusqu'a 5) ; Return
permet de sortir de ce mode
d'observation.
N échange le dessin courant avec
le demier dessin visualisé par O.
J permet de fixer le nombre
d'images stockées.
Le programme
FONCTION
Trois types de définitions de
fonction sont disponibles :
- fonction cartésienne : y = f
(x)
- fonction polaire : R = f (T)
ou T est la variable angulaire
en radians, et R le rayon
vecteur correspondant
- fonction paramétrique : x = f
(t) et y = g (t) of x et y sont
fonctions d'une variable t.
Il est possible d'incorporer un
paramétre M dans les équations,
afin de tracer une famille de
courbes sans ne faisant varier que
ce paramétre.
Programmation des
fonctions
Les symboles suivants sont
disponibles :
+,-,*,/et* (élévation a la
puissance) ; ABS, INT, SQR,
LOG,EXP,SIN,COS,
TAN, ATN sont semblables a
leur définition en Applesoft.
FNLD (logarithme décimal),
FNSH,FNCH et FNTH
(sinus, cosinus, tangente hyper-
boliques) sont par ailleurs
disponibles.
N'oubliez pas d'utiliser les
parenthéses selon les régles
habituelles de l'algébre.
Par la suite, il est seulement
nécessaire de définir les bornes
du graphe (en utilisant
éventuellement les valeurs par
défaut proposées).
Options disponibles au
menu
P permet d'obtenir la courbe en
pointillé
D pour tracer la dérivée de la
fonction
S évite de dessiner les axes
C encadre le graphe et
RETURN visualise I'écran.
Ensuite, les touches suivantes
déclenchent I'opération :
1 trace le graphe aprés avoir
effacé l'écran,
2 évite l'effacement,
3 autorise la modification des
valeurs,
4 permet de changer de
fonction,
5 sauve le graphe sur disque
(par exemple pour le
teprendre sous SCHEMA-
TEUR),
6 charge un graphe du disque,
7 donne le catalogue,
8 retourne au menu.
Options disponibles au
graphe
Pendant le cycle de création du
graphe, les touches disponibles
sont :
Return interrompt le tracé,
C_ poursuit le tracé,
ESC saute dix points de calcul
et permet ainsi un tracé plus
rapide,
TAB revient en arriére de vingt
points (corrige l'effet
d'ESC).
Une fois le tracé terminé, on
dispose de :
Return revient au menu initial,
W échange I'écran courant avec
un deuxiéme écran
mémorisé,
U_ superpose ces deux écrans,
B_ échange I'écran courant avec
un écran en
secondaire
T inscrit du texte sur l'écran:
pratiquement toutes les
sous-options disponibles
avec SCHEMATEUR sont
disponibles ici. De plus
Ctrl-F affiche I'équation sous
la position du curseur.
mémoire
Le programme
GRAVURE
Le programme GRAVURE
permet d'imprimer, sur
ImageWriter, les images
graphiques créées par
SCHEMATEUR ou FONC-
TION.
Deux hauteurs d'image sont
disponibles, ainsi que I'inversion
des couleurs. On peut également
jouer avec un jeu de déformations
horizontales et le positionnement
de la feuille de papier et de la téte
d'écriture.
Fichiers sur la disquette
Pom’s
Un grand nombre de modules
forment l'ensemble de
GRAPHISME.
Seuls les sources qui n'ont jamais
été publiés se trouvent sur la
disquette.
GRAPHISME initialisation du
logiciel, gestion de la
configuration
Pom's n° 31
11
CONF.C module de configu-
ration (manuel de la carte 80
colonnes)
HEL.C module de nettoyage de la
mémoire auxiliaire
T.HEL source de HEL.C
MENU programme général de
menu (ne doit pas étre
verrouillé car il peut
s'auto-modifier)
SCHEMATEUR le programme
SHEM.C module assembleur
d'édition des graphiques
T.SHEM source de SHEM.C
CARAC.SH table des jeux de
CHARGE.OBJ module de
chargement rapide (Pom's 4
modifié par Pom's 19)
FONCTION
FONC.C module assembleur de
tracé de courbes
T.FONC source de FONC.C
(adapté de G.Mauffrey dans
Pom's 11)
ERREUR module classique de
gestion d'erreur en Applesoft
GRAVURE
GRAV.C module d'impression
T.GRAV source de GRAV.C
(adapté de l'ImageWriter
EXEMPLE.PIC image graphique
exemple illustrant le jeu
alterné de caractéres
Conclusion
GRAPHISME se veut étre un
logiciel complet, 4 vocation
quasi-professionnelle ; il devrait
rendre de grands services 4 tous
ceux qui manipulent fréquemment
A la fois des graphiques et des
fonctions mathématiques, et ont
toujours regretté de ne pouvoir
caractéres ToolKit) Jes manipuler simultanément.
Programme DOS 3. 3
FONCTION : % del issance
10 oer wre = x: as + 2: naw 1600 | f+ Renartit ion MondiSie eh“ 1s88"
=X * 2): REM REM taresvaneresesaee
DEF FN G(T) = T: REM : REM ): REM T
: REM * 2): REM * T: REM 2: REM ***
2
30 FOR I = 1 TO 3: READ IN$(I): NEXT
40 DS = CHRS (4)
50 IP PEEK (103) + 256 *
60 POKE 103,1: POKE 104,96:
70 PRINT D$"RUN FONCTION"
80 IF PEEK (236) GOTO 140
90 AL = 6000: POKE 233, INT (AL / 256):
256 * ( INT (AL / 256))
100 PRINT D$"BLOAD FONC.C"
110 PRINT D$"BLOAD CARAC. SH, A"AL
120 PRINT D$"BLOAD ERREUR, A931"
130 POKE 236,1
PEEK (104) =
POKE 24576,
140 Al = 776:A2 = 769:A3 = 921:A4 = 853:A5 = 878 AB HT: PRINT V: RETURN
150 SC = 1: SCALE= SC:RO = 0: ROT= RO: HCOLOR= 3 480 V = VAL (V$): RETURN
160 VP = 7:VN = 10:VF = 12:VM = 17:VO = 18:NP = 280:X1 = ~14:x 490 REM ** TABLEAU DONNEES **
2=14:Yl = - 9.6:¥2 = 9.6:7D = ~ 10:TF = 10 500 VTAB VP + 1: IF REP = 2 THEN PRINT “ANGLE ->": GOTO 520
170 S = O:AX = 1:IM = 0:CO = 0:MM = 0:M = 1:WW = O:NL = 1 510 PRINT "PARAMETRE =>"
180 PL = 0: If PEEK (214) THEN PL = 1 520 VTAB VP + 1: HTAB 14: PRINT "T minima: "TD: HTAB 14: PRINT *
190 ONERR GOTO 2470 T maxima: "TF
200 GOSUB 2000: GOTO 1010 530 VTAB VN: PRINT "NOMBRE DE POINTS: "NP
210 REM ** CALCUL DES COORDONNEES** 540 VTAB VF: PRINT *ENETRE:
220 T4 = T: GOTO 250 VTAB VM: CALL ~ 958: FOR K = 1 TO 40: HTAB K: PRINT "=";
230 W = W+1: IF W> 2" WW +1 THEN W = O:WW = 1 - WW EXT
240 IF WW = 0 THEN T = T + INC: POP : GOTO 1610 550 VTAB VF + 1: PRINT "X minima: "X1;: HTAB 20: PRINT "Y minima
250 IF PEEK (49152) > 127 THEN SS = PEEK (49152) - 128: POKE EMYL: PRINT "X maxima: "K2;: HTAB 20: PRINT "Y maxima: "Y2
49168, 0: GOTO 400 560 RETURN
260 ON REP GOTO 270, 320, 360 570 REM ** ENTREE DONNEES **
270 X= x1 + (T+ 1) / EX
280 Y = EN F(X)
290 IF NOT DE Goro 310
300 X = X + (x2 - XI) / 10000:YA =
7 (k2 ~ x1)
HOT = Tio = (¥~ Yt) * EY = 1:
320 2 = EN F(T)
RETURN
330 IF DE THEN T= T+ (12 ~ Tl) / 10000:ZA =
~ 2) * 10000 / (12 - T1)
340 X = 2 * COS (T):1 = EX * (X ~ XI):
POP : GOTO 1630
350 Y= 2% SIN (T):J = BY * (Y ~ Y1); RETURN
360 X= FN F(T):¥ = FN G(T)
370 IF DE THEN T = T + (T2 ~ 71) / 10000:xA =
G(T):¥ = (YA ~ ¥) / (XA ~ X)
360 I = EX * (X ~ XI); IF I < 0 OR I > 280 THEN POP :
390 J = EY * (¥ - Y1) ~ 1: RETURN
400 IF SS = 13 THEN TS = T ~ INC: POP ::
410 IF SS = 27 THEN T= T +10 * INC: GOTO 430
420 IF SS = 9 THEN T
430 IF T > 72 THEN T = 12
440 IFT < Tl THEN T = TI
450 POP : GOTO 1610
- 20 * INC
FN P(X):¥ = (YA = ¥) * 10000
//e
//e+
//c
IIgs
EUROPE EST
AUTRES
24577 GOTO 80
°
POKE 232, AL =
CEE dont REA 2%.
RANCE 55%
24,5) ROVAUNECUNT 4 ‘34
16: usa
JAPON
(Valeur des productions minié@res et manuPac~
turiéres additionnées>
460 REM
** SAISIE DES DONNEES **
470 VTAB VT: HTAB HT: INPUT "";V$:
1: GOSUB 470:7D =
= 23:V = TF: GOSUB 470:TF = V:Tl = 1D:T2 = TF
600 INC = (T2
610 POKE 33,1
= VE + 22H!
PN P(T):2 = (2A <
IF I <0 ORI > 280 THEN
FN F(T) :YA = EN 3: CALL
18:V = NP: GOSUB 470:NP = V:
Goro 610
11) / we
vr
VE + 2:HT = 10:V = x1:
POKE 33,40
IK = UX / 10: GOTO 640
GosuB 470:¥1 =
HTAB 1: CALL
INT (10 * YM + 0.5)
coro 1630
ror<
Goro 1700
660 VE = VE + 2:HT = 29:V = Y2: GOSUB 470:Y2 = V:CY = Y2 ~ YI:
= 0 GoTo 650
670 EY = 191 / Cy:UY =1
680 IF CY > 40 THEN CY = CY / 10:UY = UY * 10: GOTO 680
690 IF CY < 4 THEN CY = CY * 10:UY = UY / 10: GOTO 690
700 HTAB 1: VTAB
VE + 3: CALL
"0X: PRINT "Unité en ordonnée:";UY
710 RETURN
IF V$ = "" THEN VTAB VT: HT
IVD = VB + 2:HT
IF REP = 1 THEN IN
GosuB 470:x1 = V:vT
10:V = X2: GOSUB 470:X2 = V:CX = X2 ~ X1:
= 0 coro 610
620 EX = 279 / CK:UX = 1:
630 IF CX > 40 THEN CX = CX / 10:UX = UX * 10: GOTO 630
640 IF CX < 4 THEN CX = CX * 1
650 VT = VF + 2:HT = 29:V = YI:
x1) * 192 / 280: VTAB VE + 4:
- 868: PRINT
IF Cx
LYM = YL + (X2 =
= 868: VTAB VE +
pour la meme échelle:Y maxima=";0.1 *
~ 868: PRINT "Unité en abscisse:
12
Pom's n° 31
720 REM ** TABLEAU OPTIONS **
730 VIAB VM: CALL ~ 958: FORK = 1 TO 4
To"2";: NEXT
749 VIAB VO: PRINT "I~ EFFACER ET TRACER".
ACER SANS EFPACER
750 VIAB 21: HTAB 1:
TAB K: PRIN
PRINT "2 TR
PRINT "3- MODIFIER LES VALEURS"
PRINT "4~ CHANGER DE FONCTION": PR
IND "5~ ENREGISTRER 6- CHARGER": PRINT "7~ IMPRI
MER 8- CATALOGUE": PRINT "9- QUITTER LE PROGR
AME";
760 RETURN
Ty
770 REM ** PARAMETRE **
780 VIAB VP: PRINT "SI VOUS VOULEZ UTILISER UN PARAMETR
© M TAPEZ M (SINON UNE AUTRE TOUCHE): ";: GET PRS: IF
PRS < > "M" AND PRS < > "nm" THEN MM = 0: GOTO 795
790 m4 =
795 VTAB VP: HTAB 1: CALL ~ 958: RETURN
800 GOSUB 855: VTAB VP: HTAB 1: PRINT "I~ FAMILLE DE CO
URBES": PRINT "2— PARAMETRE A LA DEMANDE": PRINT "CHO
IX:2: GET PR$:PR = VAL (PR$) ~ 1: IF PR < 0 OR PR >
1 Goro 800
610 IF PR = 0 GoTo 830
620 VIAB VP: HTAB 1: CALL - 958: INPUT "PREMIERE VALEU
RODE 'M':";M: GOTO 850
930 GOSUB 855: VTAB VP: HTAB I: PRINT "M minima:"M1: VT
Développement limité ae la Fonction:
5s 7
_ xt 5 xe xt xe x
sine 37 #87 > aT Sy 7 Sr
Wie
AB VP: HTAB 16: PRINT "M maxima: "M2: VTAB VP: HTAB 31
: PRINT "Pas: "PM
840 POKE 33,15:VT = VP:HT = 10:V = Mi:
GOSUB 470:M1 =
POKE 3
3,30:VT = VP:HT = 25:V = M2: GOSUB 470:M2 = V: POKE 33,40:VP
ve:HT = 35:V = PM: GOSUB 470:PM = V
850 RETURN
855 FOR II = vP TO VP + 3: VTAB II: HTAB 1: CALL - 868: NEXT
RETURN
860 REM ** MESSAGE DEFILANT **
870 SPEED= 245:AX = 1:CA = 0:P0 = 0:DE = 0:DF = 1:T$ = A$ (DF):
$ FOR J = 1 70 20:N$ = NS +" ": NEXT
seo'us ns + 18 ene
990 INVERSE : FOR K = 1 TO LEN (MS): VTAB VM: HTAB 5: PRINT M
IDS. (48, K, 30)
900 TC = PEEK (49152): IF TC > 127 THEN POKE 49168,0: SPEED= 2
55: NORMAL : GOTO 930
910 NEXT :DF = 1 + DP: IF DF = DM + 1 THEN DF = 1
920 T$ = AS(DF): GOTO 880
930 IF TC = 196 THEN DE = 1: GoTo 890
940 IF TC = 208 THEN PO = 1: GOTO 890
950 IF TC = 211 THEN AX = 0: GoTo 890
955 IF TC = 195 THEN CA = 1
POKE 49232, 0: POKE 49234,0: POKE 49236, 0:
: Goro 1760
970 IF TC > 176 AND TC < 186 THEN R = TC - 176: GoTO 990
980 GOTO 690
990 FOR K = 1 TO 40: VTAB VM: HTAB K: PRINT "=":
1000 REM ** DEBUT ** MENU *#
1010 HOME : VTAB 2: HTAB 4: PRINT "GRAPHES DE FONCTIONS": VTAB
3: HTAB 4: FORT = 1 70 18: PRINT "";: NEXT : PRINT "_"
1020 FOR I = 1 TO 3: GOSUB 1100: NEXT
1030 I = 1; INVERSE : GOSUB 1100: NORMAL,
1040 VTAB 20: PRINT “FLECHES -> CHOISIR
1050 VIAB 21: GET CARS:CH = ASC (CARS)
NEXT : RETURN
RETURN -> VALIDER"
1060 IF CH = 10 OR CH = 8 THEN GOSUB 1100:I = I + 1: INVERSE :
GOSUB 1100: NORMAL
1070 IF CH = 11 OR CH = 21 THEN COSUB 1100:I = I ~ 1: INVERSE
GOSUB 1100: NORMAL
1080 IF CH = 13 THEN HOME :
1090 GoTo 1050
1100 IF = 4 TENT =1
1110 IF I= 0 THEN I = 3
1120 VTAB I + 6: HTAB 4: PRINT INS(I):
1130 REP = I: ON I GOTO 1150, 1180, 1210
1140 REM ** ENTREE DES FONCTIONS **
1150 HOME : HTAB 9: INVERSE : PRINT " FONCTION CARTESIENNE": NO
RMAL : VTAB 3: PRINT "Y(x)=": GOSUB 780
1160 HTAB 1: VTAB 3: PRINT "Y(X)=";: CALL Al:
Goro 1130
RETURN
IP MM THEN GosuB
1170 GOSUB 530: GOSUB 590: GoTo 1240
1180 HOME : HTAB 12: INVERSE : PRINT " FONCTION POLAIRE ": NORM
AL : PRINT "(La variable T est l'angle en radians)": VTAB 3:
PRINT "R(T)=": GOSUB 780
1190 HTAB 1: VTAB 3: PRINT "R(T)
800
1200 GoTo 1230
1210 INVERSE : HOME : HTAB 9: PRINT " FONCTION PARAMETRIQUE "
NORMAL : PRINT "(La variable T est le paramétre courant)": VP
AB 3: PRINT "X(T)="; VTAB 5: PRINT "Y(T)=": GOSUB 780: HTAB 1
2 VIAB 3: PRINT "X(T)=";: CALL Al
1220 VIAB 5: PRINT "Y(T)=";: CALL A2:
1230 GOSUB $00: GosuB 580
1240 GOsUB 730
1250 GOSUB 870: ON R GOTO 1350, 1260, 1265, 1300, 1890, 1890, 1290,19
50,1320
1260 POKE 49232,0: POKE 49234,0: POKE 49236, 0: POKE 49239,0: GO
TO 1360
1265 IF MM = 0 GoTo 1270
1266 GOSUB 800: IF REP = 1 GOTO 1170
1267 GoTo 1230
7 CALL Al: IF MM THEN GOSUB
IF M4 THEN GOSUB 600
1270 IF REP = 1 THEN GOSUB 590: GOTO 1240
1280 GoSsUB 580: GOTO 1240
1290 PRINT D$"RUN GRAVURE, D1"
1300 HOME : GOTO 1010
1310 REM ** PIN **
1320 HOME : PRINT
1330 PRINT D$"RUN MENU, DI"
1340 REM ** DEBUT DU GRAPHE **
1350 HGR : HCOLOR= 3: POKE 49234,0
1360 IF AX = 0 GOTO 1565
1370 REM **TRACE DES AXES**
1390 10 = INT ( ~ X1 * EX)
1400 JO= INT ( ~ Yl * EY)
1410 IF JO < 0 OR JO > 191 THEN 1490
1420 HPLOT 0,191 ~ JO TO 279,191 - Jo
1430 IF JO < 2 THEN C = J0:D = 2: GOTO 1460
1440 IF JO > 189 THEN C = 2:D = 191 - JO: Goro 1460
1450
1460
2
INT (X1 / UX) TO INT (X2 / UX):
Ux <0 OR 10 +I * EX * UX > 279 THEN 1460
1470 HPLOT 10 + I * EX * UX,191 + C - JO TO 10 +1 * EX * UX,19
1-D~-J0
1480 NEXT
1490 IF 10 < 0 OR 10 > 279 THEN 1570
1500 HPLOT 10,0 TO 10,191
1510 IF 10 < 2 THEN A = 10:B Goro 1540
1520 IF I0 > 277 THEN A = 2:B = 279 ~ 10: GoTo 1540
1530 A = 2:8 = 2
1540 FOR J = INT (Yl / UY) TO INT (Y2 / UY):
uy > 191 OR Jo +o * EY * UY < 0 THEN 1560
1550 HPLOT 10 - A,191 - JO~ J * EY * UY TO 10+ B,191 - JO- 9
* BY * oY
1560 NEXT
1565 IF CA
0,0
1570 REM **TRACE DE LA FONCTION**
1580 IF MM = 1 AND PR = 0 THEN M = MI
1590 IF REP = 1 THEN TI = 1:72 = 279
1600 T = TI
1610 GosuB 220
1620 IF J> = 0 AND J< = 191 THEN HPLOT 1,191 -
0
1630 XDRAW 98 AT 10,10: XDRAW 98 AT 10,10
1640 T= 7 + INC: IF T < 72 GOTO 1610
1650 GoTo 1700
1660 GosUB 220 |
1670 IE J < 0 OR J > 191 Goro 1640
1675 IF PO THEN HPLOT 1,191 ~ J: GOTO 1690
1680 MPLOT TO 1,191 - J
1690 T= T + INC: IF T < T2 GOTO 1660
1700 IF M4 = 0 GoTo 1750
1710 IF Nor PR Goro 1740
1720 POKE 49235,0: VTAB 21: HTAB 1: CALL ~ 958: VTAB 22: INPUT
"NOUVEAU PARAMETRE (SINON RETURN): ";PR$: IF PRS = "" THEN GO
SUB 750: POKE 49234,0: GOTO 1750
1730 M = VAL (PR$): GOSUB 750: POKE 49234,0:T1 = TD: GOTO 1590
1740 IF T > = 12 THEN Tl = TD:M = M+ PM: IF M = < M2 GoTo 15
90
1750 PRINT CHRS (7);
1760 IF PEEK (49152) < 128 GOTO 1760
1770 RR = PEEK (49152) ~ 128: POKE 49168, 0
Goro 1760
1780 IF RR = 85 THEN CALL A4: GOTO 1760
1790 IF RR = 66 THEN CALL AS: GOTO 1760
1800 IF RR = 84 THEN GOSUB 2190: GOTO 1760
1810 IF RR = 13 THEN POKE 49233,0: GOTO 1250
1620 IF RR = 67 THEN T = TS: GOTO 1610
1830 GoTo 1760
IE IO+#1*Ex*
IF JO+ 0 * BY *
1 THEN HPLOT 0,0 TO 279,0 TO 279,191 TO 0,191 TO
IF RR = 87 THEN CA
Pom's n° 31
13
1840 REM ** ENREGISTRER-CHARGER **
1850 IF NOT PL THEN RETURN
1860 VTAB VO: HTAB 1: CALL ~- 958: PRIN
T : PRINT "LECTEUR N°:";: INVERSE : P
RINT NL;: NORMAL : CALL - 1008: GET
CARS: IF CARS = CHRS (13) THEN RETO
RN
1870 IF CAR$ < > "I" AND CARS < > "2"
Goro 1850
1880 NL = VAL (CARS): INVERSE : PRINT N
L: NORMAL : RETURN
1890 GOSUB 1850
1900 HTAB 1: VTAB VO + 3: INPUT "NOM DE
LUIMAGE: "J IM$: IF IM$ = "" GOTO 1940
1910 PG = ASC ( LEFT$ (IM$,1)): IF PG <
65 OR PG > 90 GOTO 1900
1920 IF R= 5 THEN PRINT D$"BSAVE"IMS"
1A$2000, L$2000,D";NL: GOTO 1940
1930 PRINT D$"BLOAD"IM$", AS2000, D*NL
1940 GOTO 1240
1950 POKE 34, VP ~
PRINT
1960 PRINT DS$"CATALOG, D*NL.
RINT "FIN": NORMAL
1970 GET CARS: HOME : POKE 34,0: IF REP
= 1 THEN GOSUB 530: GOTO 1240
1980 GosuB 500: GOTO 1240
1990 REM **FONCTIONS SPECIALES**
HOME : GOSUB 1850:
INVERSE : PB
2000 DEF FN SH(x) = ( EXP (X) ~ EXP (
x) 72
2010 DEF FN CH(X) = ( EXP (xX) + EXP (
=x) 72
2020 DEF FN TH(X) = - EXP (~ x) /
EXP (X) + EXP (=X) * 241
2030 DEF FN LD(X) = LOG (x) / LOG (1
o
2040 DM = 3: REM **NB DE MESSAGES **
2050 AS (1) = "TAPEZ VOTRE OPTION DE 1 A
9...'B" POUR COURBE EN POINTILLE...'D
' POUR DERIVEE...'S' SANS AXES...'Ct
CADRE... 'RETURN' VOIR L'ECRAN"
2060 AS(2) = "UNE SONNETTE ANNONCERA LA
FIN DU GRAPHE...ON PEUT L'INTERROMPRE
PAR 'RETURN' ET LE CONTINUER PAR 'C'
+. "ESC" SAUTE 10 POINTS... *TAB' REVI
ENT DE 20 POINTS”
2070 A$(3) = "QUAND LE GRAPHE EST INTERR
oMPU ' T ' MODE TEXTE...‘ W ' PASSE
DI'UN ECRAN A UN AUTRE... 'U' PUSIONNE
LES DEUX ECRANS...'B' BANQUE ...'RETU
RN' RAMENE A CETTE PAGE"
2080 PI = 3.1416:E = EXP (1)
2090 RETURN
2100 REM ** TEXTE **
2110 VX wes
2120 IF PEBK (49250) > 127 THEN VX = 1
iweed
2130 IF PEEK (49249) > 127 THEN Vx = 7
o:vy = 48
2140 IF R= 21 THEN Xt =X + VX: IF Xt
> 279 THEN Xt = 279
2150 IF R= 8 THEN X®
< 0 THEN Xt = 0
2160 IF R= 10 THEN Yt = Ye + VY: IF Yt
> 191 THEN Yt = 191
2170 IF R = 11 THEN Yt
<0 THEN Y# = 0
2180 RETURN
2190 PT = 1:CT = 98:KK = 0:CR = CT:S =
S:Yt = 5: XDRAW CT AT X#,Ye
PEEK (49152) - 128: IFC < 0G
oro 2200
2210 POKE 49168,0:S = C - 29: IF C = 27
THEN TT = 1 - TT: XDRAW CT AT Xt, Yt:
cr = 34% (Tr = 1) + CR* (IT = 0): X
DRAW CT AT X$, Yb: GOTO 2200
2230 IF C < > 32 OR TT = 0 GoTO 2250
2240 KK = 1: GOTO 2200
2250 IF C < 32 OR C = 127 GoTO 2330
2260 IF PEEK (49249) > 127 AND C > 47
AND C < 91 THEN S = S + 80
2270 XDRAW CT AT X*, Yt: DRAW S AT Xt, Y#
2280 IF TT = 0 THEN CT = CR:KK = 0: GOT
0 2310
2290 CT = 5
2300 GOTO 2200
2310 Kb = X84 7
2320 XDRAW CT AT Xt,Y4: GOTO 2200
2330 IF KK = 1 THEN KK = 0: DRAW CT AT
X4,¥#: GOTO 2350
2340 XDRAW CT AT Xt, Y8
2350 IF C= 13 THEN RO = 0: ROT= RO:CT
CR:TT = 0:KK = 0: RETURN
2360 IF C = 23 THEN RO = (RO = 56) * 0
Xe UK: IF Xe
- vy: IF ye
+ (RO < 56) * (RO + 8): ROT= RO
2370 IF C = 127 THEN DRAW CT AT Xt, Y8:
XDRAW CT AT Xt, Yt
2380 IFC < > 6 GOTO 2450
2390 LD = 1260: GoSUB 2410: IF REP = 3 T
HEN LD = 1536:X¢ = Xt - 7 * FF:Y8 = ¥
$+ 8: GosuB 2410
2400 GoTo 2450
2410 FF = 0
2420 S = PEEK (LD + FF) ~ 157: IF S =
THEN RETURN
2430 XDRAW S AT X¢,Y8:X8 = X8 + 7:EF =
FF +1: IF X¥> 277 THEN RETURN
2440 GoTo 2420
2450 R = C: GOSUB 2110: GOTO 2320
2460 REM ** TRAITEMENT D'ERREUR **
2470 CALL 931
2480 POP
2490 XDRAW 34 AT 10,10
2500 ER = PEEK (222)
2510 IF ER < > 53 AND ER <
2540
2520 XDRAW 34 AT 10,10
2530 T = T4: GOTO 1640
2540 IF ER = 6 THEN PRINT : PRINT "PAS
DI'IMAGE DE CE NOM (RETURN) ": GET CAR
$
2550 IF BR = 16 THEN POKE 49233,0: VTA
BVM +1: CALL - 958: PRINT "ERREUR
DE SYNTAXE": PRINT "VERIFIER L'ECRITU
RE DE LA FONCTION": PRINT "RETURN";
GET CARS
2560 GOTO 1240
2570 DATA FONCTION CARTESIENNE, FONCTIO
N POLAIRE, FONCTION PARAMETRIQUE
> 133 Goro
Programme
SCHEMATEUR
5 HIMEM: 36863
10 REM ** SCHEMATEUR **
20 REM ** M.CAUET ~ NOV 86 **
30 IF PEEK (103) + 256 * PEEK (104)
24577 GoTo 2240
40 REM ** IMPLANTATION DU PROGRAMME AU
-DESSUS DE HGR2 **
50 POKE 103,1: POKE 104,96.
0
60 PRINT CHR$ (4) "RUN SCHEMATEUR"
70 REM ** COORDONNEES DU POINT **
80 IF ME AND R= 9 THEN MN = 1 - MN
90 IF MN = 0 GoTo 110
100 X8= PDL (0) / 255 * 279:Y8 = PDL
(QQ) / 255 * 191: RETURN
110 VK = 12:v¥ = 12
120 IF PEEK (49250) > 127 THEN VX = 1:
wel
130 IF PBEK (49249) > 127 THEN Vx = 70
ivy = 48
140 IF R = 21 THEN X= X8 + VX IF Xt
> 279 THEN X¥ = 279
150 IF R= 8 THEN Xb
0 THEN xt = 0
160 IF R= 10 THEN Y# = Ye + vY: IF Yé
> 191 THEN Yt = 191
170 IF R= 11 THEN Ys
< 0 THEN Yt = 0
POKE 24576,
Xb VK IF XA <
ye — vy: IF yt
180 RETURN
190 REM ** ANALYSE DE LA COMMANDE **
200 IF DP AND NOT DH THEN X18 = xezY1t
ye
210 DH = 0
220 IF PEEK (49152) > 127 THEN R = PE
EK (49152) ~ 128: POKE 49168,0: IF MN
OR NOT MN AND (R > 31 OR R= 13 OR
R = 17) Goro 250
230 GOSUB 80: IF NOT PT THEN XDRAW CU
AT X08, YO®
240 X08 = X#:YO8 = YB: XDRAW CU AT x08,
o#:Pr = = 0: Goro 220
250 FOR I = 1 10 2¢: IF R = R(I) THEN
ON I GOSUB 290,310, 1030, 350, 400, 420, 4
40, 490, 440, 550,570, 690, 950, 2160, 1070,
1210, 1250, 1580, 1580, 1580, 1580, 1920,19
20,1090, 1130, 980, 810,1150, 510: GOTO 2
00
260 NEXT : IF R > 96 AND R < 123 THEN
POKE 49235,0: HOME : VTAB 22: PRINT "
PASSEZ EN MAJUSCULES S.V.P. ET RETURN
.": GET CARS: POKE 49234,0:R = R ~ 32
Goro 250
270 GOTO 200
280 REM ** 9 4*
290 POP : RETURN
300 REM ** DEL **
310 POKE 49235,0: HOME : VTAB 23: PRINT
"PERTE DU DESSIN (O/N)?: "7: GET CARS
IF CARS < > "0" AND CARS < > "o"
Goro 330
320 HGR :PT = 1:B = 0:CL = 3: HCOLOR= C
Lb: POKE AA + 8,B
330 POKE 49234,0: RETURN
340 REM 8 Le
350 POKE 49235,0: HOME : VTAB 21: PRINT
"LIMITE ET FUSION PAR POINTS ";: IF
B= 0 THEN PRINT "ALLUMES.": GOTO 37
360 PRINT "ETEINTS."
370 PRINT "TAPEZ C POUR CHANGER": GET C
ARS: IP CARS = "C" THEN B = 1 - B: PO
KE AA + 8,5
380 POKE 49234, 0: RETURN
390 REM ot ZF
400 GOSUB 420:DP = 0: RETURN
410 REM o** Xx #F
420 HPLOT X08, YO#:X18 = XO8:Y18 = YOU:D
P= 1:Pf = 1: RETURN
430 REM #* HeV *®
440 IF R= 86 GOTO 460
450 HPLOT Xb, Y18 TO X18, YI8:X16 =
oro 470
460 HPLOT X1%,Y¢ TO X18, YIS:Y18 = Yt
470 DH = 1: RETURN
480 REM ** ESPACE **
490 HPLOT X¥,Y# TO XIb,YI8:PT = 1:
RN
500 REM o** M +e
510 XDRAW CU AT Xt,Y8
520 CALL AG
530 XDRAW CU AT X$,Y8: RETURN
540 REM 77 RF
550 HPLOT X8,Y6 TO X18, Yt TO X14, YI8 TO
X4, YI TO x8, Y8seT RETURN
RETU
560 REM ** Fe
570 PT = 1: POKE 49235,0: HOME : VTAB 22
: PRINT * G- Gomme -R~ REM
PLIT": PRINT " D- DECOUPE ©
~ ENCADR Mo MOBIL
VIAB 21: HTAB 1: PRINT "FENETRE:
222 GET CARS
580 POKE 49234,0: IF CARS
THEN RETURN
590 SP = -CL+3+8* (CL > 3): IF CA
"G" OR CARS = "D" OR CARS = "M"
HCOLOR= ST
CARS = "G" OR CARS = "R" THEN G
cHRs (13)
OR CARS = "E" THEN G
CL: RETURN
CARS = "M" THEN POKE 49235,0: #
OME : VTAB 23: PRINT "UN INSTANT S.V.
P.": CALL AP: GOSUB 640: CALL AE: GOS
UB 670: HCOLOR= CL: POKE 49234, 0: CAL
L AV: RETURN
630 GoTo 570
640 IF X18 > X* THEN WH = X18:XI8 = Xt:
xt = WW
650 IF YIt > Y# THEN Ww = Y1e:YI8 = Ys
ye = WW
660 FOR I = 0 70 X18: HPLOT I,0 TO 1,19
1: NEXT : FOR I = X18 TO x8: HPLOT I,
0 TO I,¥1%: HPLOT I,Y* TO 1,191: NEXT
: FOR I = X$ TO 279: HPLOT I,0 TO I,
191: NEXT : RETURN
670 FOR I = Y# TO Y1# STEP 2 * (Y1#>¥
4) = 2: MPLOT X4,I TO X18, I: NEXT :PT
= 1: RETURN
660 REM ** KK ¥#
690 cc = 78 * (CL
a * (CL
C= 0 THEN CL$
700 POKE 49235,0: HOME : VTAB 21: PRINT
"COULEUR (047,0u B blanc, N noir,G gr
fs): "CL$;: CALL ~ 1008: GET CLS
710 CB = (CLS = "N") +2 * (CL$ = "G") +
4% (CLS = "BM) - 1: IF CB
0) + 66 * (cL = 3) +
CHRS (CC): IF C
VAL (CLS)
720 IF CB= ~ 1 GoTo 740
730 CL = cB
740 HCOLOR™ CL: POKE 49234,0: RETURN
750 REM ** P ##
760 INVERSE : PRINT DI;: FOR I = 1 TO
LEN ( STR$ (DI)): CALL ~ 1008: NEXT
GET R1$: IF RIS =
: CHRS (17) THEN C
H = 17: GoTo 870
14
Pom's n° 31
770 IF RIS < "0" OR RI$ > "9" THEN DF = DI: NORMAL :
YOR)
ou:
YeX+MNI-X2
CEllipses>
X+MNXSQRC1-X*29
PRINT
wm: RETURN
780 PRINT R1$;:D1 = VAL (R1$): GET R2$: IF R2$ = CHRS (1
7) ‘THEN CH = 17: GOTO 870
790 IF R2$ < "0" OR R2$ > "9" THEN PRINT " ":DF = D1: NOR
MAL : RETURN
800 PRINT R2$:DF = D1 * 10 + VAL (R2$): NORMAL : RETURN
810 POKE 49235,0: HOME : VTAB 21: PRINT "MODE: CV HPQ G
DL (AIDE: "Ctrl gt)": = MD
815 HTAB 1: VTAB 23: PRINT "FLECHES -> CHOISIR RETURN ->
VALIDER™
820 IF I = 8 THEN I = 0
630 IF I= ~1 THEN =7
840 VIAB 21: HTAB 7 + 2 * I: GET CARS:CH = ASC (CARS)
850 IF CH = 21 OR CH = 10 THEN I = I + 1: GOTO 20
860 IF CH = 8 OR CH = 11 THEN I = I - 1: GOTO 830
870 IF CH = 17 THEN TEXT : HOME : NORMAL : PRINT INS (24):
PRINT : FOR I = 25 TO 32: PRINT IN$(I): NEXT : PRINT :
PRINT INS (33): PRINT : PRINT IN$(34): GET CARS: POKE 492
32,0: GOTO 810
875 IF CH < > 13 GoTo 840
880 MD = I: POKE AA + 1,MD
890 IF I = 0 GOTO 930
900 HTAB 1: VTAB 22: CALL ~ 958: PRINT "PAS:";:DI = PA: G
OSUB 760:PA = DP: IF PA < = 0 GOTO 900
910 POKE AA + 2,PA
920 PRINT “EPAISSEUR:";:DI = EP: GOSUB 760:EP = DF: POKE AA, EP
-1
930 POKE 49234,0: RETURN
940 REM #* 0 ¥#
950 IF MA * NI = 0 THEN RETURN
960 CALL AO: RETURN
970 REM ** Bee
960 HOME : IF MA = 0 THEN XDRAW CU AT X8,Y#: CALL AE:PT = 1: R
TURN
990 IF NI > 4 THEN POKE 49235,0: HOME : VTAB 21: PRINT "SATURA
TION": GET CAR$: GOTO 1010
1000 XDRAW CU AT X4,Y#:NI = NI + 1: POKE AA + 3,NI: POKE AA +1
5,NI * 32: CALL AB:PT = 1:B = 0:CL = 3: HCOLOR= Cb: POKE AA +
8,8: HOR
1010 POKE 49234,0: RETURN
1020 REM o** N te
1030 IF MA = 0 THEN RETURN
1040 NU = PEEK (AA + 16): XDRAW CU AT X#, Yt: POKE AA + 15,NU *
32: CALL AB:PT = 1:B = 0:CL = 3: HCOLOR= CL: POKE AA + 6,B: C
ALL AE
1050 POKE 49234,0: RETURN
1060 REM o** Hote
1070 XDRAW CU AT Xt, Y%: CALL AF:PT = 1: RETURN
1060 REM #8 uote
1090 POKE 49235,0: HOME : VTAB 23: PRINT "SUPERPOSITION CONFIRM
EE? (O/N)";: GET CAR$: IF CARS < > "O" AND CARS < > "o" GOT
0 1110
1100 XDRAW CU AT x4, Y#: CALL AU
1110 POKE 49234,0:PT = 1: RETURN
1120 REM ott Tote
1130 CALL AI:CL =~ CL +34 8 * (CL > 3):B = 1 ~ B: HCOLOR=
L: POKE AA + 8,5: RETURN
1140 REM tt
1150 IF MA = 0 THEN RETURN
1160 POKE 49235,0: HOME : VTAB 23: PRINT "NOMBRE D'IMAGES EN BA
NQUE: "NI;: CALL - 1008: GET NI$: IF NIS < "0" OR NIS > "5"
Goro 1190
1170 PRINT NI$:NI
1180 POKE AA + 3,NI
1190 POKE 49234,0: RETURN
1200 REM #* Se
1210 XH = INT (X® / 256):XB = Kb ~ XH * 256
1220 POKE AA + 4,XB: POKE AA + 12,XB: POKE AA + 5,XH: POKE AA +
13,XH: POKE AA + 6,Y4: POKE AA + 7,Y8: POKE AA + 9,0
1230 PT = 1: XDRAW CU AT X%, Yb: CALL AS: RETURN
1240 REM st Toe
1250 PT = 1:¢R = cr:s
VAL (NIS)
CT: XDRAW CU AT X*, Yb: XDRAW CT AT Xt, Yt
1260 C = PEEK (49152) - 128: IF C < 0 GoTO 1260
1270 POKE 49168,0:S = C ~ 29: IF C = 27 THEN TT = 1 ~ TT: XDRAW
CT AT xt, Ye:cP = 34 * (TT = 1) + CR * (TT = 0): XDRAW CT AT
X4,Yt: GOTO 1260
1280 IF C= 17 THEN TEXT : HOME : FOR I = 41 TO 51: PRINT INS(
I): NEXT : GET CARS: POKE 49232,0: GOTO 1260
1284 IF MB AND C = 9 THEN MN = 1 ~ MN
1290 IFC < > 32 OR TT = 0 Goro 1310
1292 IF MN = 0 GoTO 1300
1293 DRAW CT AT X%, 8: GOSUB 100: XDRAW CT AT Xt,Yt
1294 IF PEEK (49152) > 127 GOTO 1260
1296 XX8 = XB:YYt = Yt: GOSUB 100: IF X® = XX$ AND Y8 = YY# GOTO
1294
1297 XDRAW CT AT XX%,YY%: XDRAW CT AT X4,Y#: GOTO 1294
1300 KK = 1: GOTO 1260
1310 IF ¢ < 32 OR C = 127 Goro 1430
1320 IF PEEK (49249) > 127 AND C > 47 AND C < 91 THENS = $+
80
1330 XDRAW CT AT X4,Y6: DRAW S AT Xt,Y8
1340 IF TT = 0 THEN CT = CR:KK = 0: GOTO 1370
1350 CT = S: IF MN GoTO 1294
1360 GoTo 1260
1370 X= Xb +7
1380 IF X8 > 277 THEN Yb = Y8 + 8:X8 = XB - 273: IF X¥ > 8 THEN
fe xe- 7
1390 IE X8 <2 THEN Y8 = Ye - 8:X8 = X8 + 273: IP XB < 271 THEN
w= xe e 7
1400 IF Ye < 4 THEN Ye = 186
1410 IF Y& > 186 THEN Yt = 4
1420 XDRAW CT AT X%,Y$: GoTo 1260
1430 IF KK = 1 THEN KK = 0: DRAW CT AT Xt, Yb: GOTO 1450
1440 XDRAW CT AT x4, Y¢
1450 IF C = 13 THEN RO = 0: ROT= RO:CT = CR:TT SCAL
B= SC:KK = 0: RETURN
1460 IF (C = 1 AND SC < 51) OR (C = 26 AND SC > 1) THEN SC = SC
+ (C= 1) ~ (C = 26): SCALE= sc
1470 IF C = 23 THEN RO = (RO = 56) * 0 + (RO < 56) * (RO + 8)
ROT= RO
1480 IF C = 127 THEN DRAW CT AT X$,Y4: XDRAW CT AT X¥,Y4:C = 8
1485 1 AND MN = 1 THEN XDRAW CT AT X$,Y#: GOTO 1294
1490 a
1500 IF PEEK (49250) > 127 THEN Vx = I:vY = 1
1510 IF PEEK (49249) > 127 THEN VX = 70:VY = 48
1520 IF C = 21 THEN X# = X# + UX
1530 IF C = 8 THEN Xt = x8 - Ux
1540 IF C = 10 THEN Yt = Yt + vY
1550 IF C = 11 THEN Yt = Ye ~ vY
1560 GOTO 1380
1570 REM ** C,D,A,E **
1580 PP = 1:RX = X08 ~ XI8:RY = YI8 - YOR:RA = INT ( SOR (RX *
2+ RY *2) + .5)
1590 IF RA = 0 THEN RETURN
1600 XDRAW CU AT X08, YOs
1610 IF R = 65 OR R = 69 GoTO 1750
1620 XH = INT (X18 / 256):XB = X18 ~ XH * 256: POKE AA + 4,XB
POKE AA + 5,XH: POKE AA + 6,YI18
1630
1640
1650
1660
27 THEN POKE 49168,0: RETURN
1662
1670
1680
1690
1700
1710
192 THEN HPLOT X1% - 1,¥1¢ + I TO X18 + 1,YI8 + 1
1720
1730
HEN HPLOT X14, YI8 + I
1740
1750
1760
1770
1780
°
1790
1800
1810
1820
1830
1840
1850
49168,0: GOTO 1870
1860
1870
1880
1890
IF RA > 255 THEN RETURN
IF R = 68 GOTO 1660
POKE AA + 9,RA: CALL AC: RETURN
RM = RA: FOR RA = 1 TO RM: GOSUB 1650: IF
PEEK (49152) >1 |
NEXT
IF RA < 64 GOTO 1730
FOR I= = RA TO ~ 64: GOSUB 1710: NEXT
FOR I = 64 TO RA: GOSUB 1710: NEXT
RA = 64: GOTO 1730
Ip YIt+ I> ~ 1 AND YI# + I < 192 AND X1¥ > 1 AND X18 <
RETURN
FORI = ~ RA TO RA: IF YIt+ I> - 1 AND YIt+ 1192 T
NEXT :
D= .02
IF R = 65 THEN X = XO8:Y = YOR:EX = 1:EY
IF RX = 0 OR RY = 0 THEN RETURN
IF ABS (RX) > = ABS (RY) THEN X
1800
X= Xltey = yIe - RY
EX = ABS (RX / RY) :BY =
HPLOT X,Y
Y= Y + EY *D* (xX ~ xIb):K =X - EX *D* (¥ ~ IE)
IF X < 0 OR X > 279 OR Y < 0 OR ¥ > 191 GOTO 1820
HPLOT 10 X,¥
IF PEEK (49152) > 127 THEN TH =
RETURN
1: GOTO 1810
X18 + RX:Y = YI8: Cor
ABS (RY / RX)
PEEK (49152) ~ 128: POKE
GoTo 1820
IF TH = 13 Goro 1900
GET CARS: IF CARS =
Goro 1820
CHRS (13) GoTO 1900
Pom's n° 31
15
1900 Xt = X:¥8 = ¥: RETURN
1910 REM ** GY **
1920 XO8 = Xt:Y0% = Yt: DRAW CG AT xO8,Y
oF
1930 IF MN THEN MR = 1:MN = 0
1940 GoTo 1970
1950 IF PEEK (49152) > 127 THEN R = P
EEK (49152) - 128: POKE 49168, 0
1960 GOSUB 80: XDRAW CG AT X08, YO#:XO8
X#:Y08 = Yk: DRAW CG AT X08, YO
1970 IF R = 89 THEN XDRAW CG AT xOk,YO
%: ROT= 16: DRAW CG AT X08, YO8
1980 IF R= 71 THEN XDRAW CG AT x08, YO
4: ROT= 0: DRAW CG AT XO, You
1990 IF R= 13 THEN XDRAW CG AT x08, ¥0
$2 DRAW CU AT X08, Y0%: ROT= O:MN = MR
:MR = 0: RETURN
2000 R = 0: GOTO 1950
2010 REM ** CHARGER, ENREGISTRER, CATALO
Gath
2020 IF NOT PL THEN RETURN
2030 HTAB 1: VTAB 14: PRINT "LECTEUR N°
"2 INVERSE : PRINT NL;: NORMAL : CA
LL ~ 1008: GET CARS: IF CARS = CHRS
(23) THEN RETURN
2040 IF CARS < > "I" AND CARS < > "2"
Goro 2020
2050 NL = VAL (CARS): INVERSE : PRINT N
L: NORMAL : RETURN
2060 GosuB 2020
2070 PRINT : PRINT D$"CATALOG,D"NL: PRI
NT : INPUT "NOM DE L'IMAGE:";IM$: IF
IM$ = "" GOTO 2110
2080 PG = ASC ( LEFTS (IM$,1)): IF PG <
65 OR PG > 90 THEN VTAB 9: GOTO 207
°
2090 IF I = 2 THEN XDRAW CU AT X4,Y¢:
PRINT DS "BSAVE"IMS",A$2000, L$2000, D'
NL: GOTO 2110
2100 PRINT D$"BRUN CHARGE.OBJ,A$9000"
2105 & IMS, 8192
2110 RETURN
2120 HOME : GOSUB 2020: HOME : PRINT
2130 PRINT D$"CATALOG,D"NL: INVERSE : P
RINT "EIN": NORMAL
2140 GET CARS: HOME : RETURN
2150 REM ** INFORMATIONS **
2160 TEXT : HOME : FOR I = 1 70 22
2170 IF (I = 4 OR I = 5) AND ME = 0 GOT
0 2200
2180 IF I = 21 AND MA = 0 THEN I = 25::
PRINT "B -> ECHANGE BIS": GOTO 2200
2190 PRINT INS (F)
2200 NEXT
2210 PRINT INS (23);
2220 GET CARS: POKE 49232, 0: POKE 49239
10: POKE 49236, 0: RETURN
2230 REM ** DEBUT **
2240 HOME : VTAB 8: HTAB 12: INVERSE :
PRINT " SCHEMATEUR ": NORMAL : VTAB 1
4: PRINT "TOUCHE 'Q' POUR ACCEDER AU
MENU": VTAB 19: PRINT "TOUCHE ‘Ctrl
Q' POUR AIDE-MEMOIRE™
2250 ZC = 29:IN = SI:N = 6
2260 0: IF PEEK (207) THEN ME = 1
2270 PL = 0: IF PEEK (214) THEN PL = 1
2280 MA = 0: IF PEEK (215) THEN MA = 1
2290 AA = 2817:AL = 6000:AE = AA + 17
2300 DIM R(ZC), INS (IN)
2310 CU 98:KK = 0:5C = 1
RO = utr = 0
2320 DE = 3:MN = O:MR = 0:x8 = 13
9:Y4 = 95:X08 = X¥:Y08 = Ye:PT = 0:DP
0:87 = 1:NL = 1:B = 0:DH = O:NT
O:VX = 12:VY = 12:MD = 0:PA = 3:EP
2330 C = 0:5 = 0:PG = 0:RX = 0:RY = 0:RA
= 0:D = O:EX = 1:EY = 1:TH = 0:R = 0
H= 0
2340 IMS = "":CARS
HRS (4)
2350 FOR T
“Des 6
1-70 IN: READ IN$ (I): NEXT
2360 FOR I = 1 TO ZC: READ R(I): NEXT
2370 IF PEEK (235) GOTO 2420
2380 POKE 233, INT (AL / 256): POKE 232
AL = 256 * ( INT (AL / 256))
2390 PRINT D$"BRUN CHARGE.0BJ,A$9000"
2400 & "CARAC.SH",AL: & "SCHEM.C*,AA
2410 POKE 235,1
2420 AF = AE + 3:AB = AE + 6:20 = AE + 9
IAI = AE + 12:AU = AE + 15:AC = AB +
18:AG = AE + 21:AV = AE + 24:AP = AE
+ 27:AW = AB + 30:AS = AE + 33
2430 POKE AA + 16,1: POKE AA + 3,NI: PO
KE AA + 8,5
2440 POKE AA + 1,MD: POKE AA + 2,PA: PO
KE AA, EP - 1
2450 ONERR GOTO 2710
2460 POKE 49232,2: POKE 49239,0: POKE 4
9236, 0: POKE 49234,0
2470 HCOLOR= CL: ROT= RO: SCA
2480 DRAW CU AT X08, YO
2490 GOSUB 200: TEXT : HOME
2500 REM ** MENU **
2510 FOR I = 1 TO N: GOSUB 2670: NEXT
2520 I = 1: INVERSE : GOSUB 2670: NORMAL
2530 VTAB 22: PRINT "FLECHES -> CHOISIR
RETURN -> VALIDER"
2540 VTAB 23: GET CAR$:CH = ASC (CARS)
2550 IF CH = 10 OR CH = 8 THEN GOSUB 2
670:1 = 1 + 1: INVERSE : GOsUB 2670:
NORMAL
2560 IF CH= 11 OR CH = 21 THEN GosUB
2670:1 = I = 1; INVERSE ; GOsuB 2670
NORMAL
2570 IF CH = 13 THEN HOME : GOTO 2590
2580 GOTO 2540
2590 ON I GOTO 2600, 2610, 2620, 2660, 2630
12640
2600 POKE 49232,0: POKE 49239,0: POKE 4
9236,0: GOTO 2490
2610 GOSUB 2060: GOTO 2600
2620 GOSUB 2060:PT = 1: GOTO 2600
2630 GOSUB 2120: GOTO 2510
2640 XDRAW 1 AT X$,Y8: TEXT :
Int
2650 PRINT D$"RUN MENU, DI": REM
Nor
2660 PRINT : PRINT DS$"RUN GRAVURE, D1"
2670 IFI=N+1 THEN I =1
2680 IF I = 0 THENI = N
2690 VTAB I + DE: HTAB 4: PRINT INS(34
+ I): RETURN
2700 REM ** ERREUR **
2710 ER = PEEK (222): IF ER = 6 THEN T
EXT : HOME : VTAB 10: PRINT "FICHIER
ABSENT": GET CARS
2720 HOME : GOTO 2510
2730 DATA LES FLECHES DEPLACENT LE POI
NT, POMME BLANCHE -> RAPIDE, POMME NOIR
E ->LENT, Tab -> MANETTES, Tab -> FLEC
HES, Del -> EFFACE
2740 DATA K -> COULEUR 1 > IWE
RSION,X > POINT DE DEPART, Z -> DEPAR
1 PERMANENT, BARRE ESPACE -> RELIE DEU
X POINTS, H -> RELIE HORIZONTALEMENT, V
=> RELIE VERTICALEMENT
2750 DATA R -> RECTANGLE, C -> CERC
LE D -> DISQUE,F -> FENETRES
‘M -> MOUVEMENT, A -> ARC DE CERCLE
E -> ELLIPSE,G -> GOMME HORIZONTA
LEY ~>VERTICALE
2760 DATA S -> REMPLIT UNE SURFACE,
P -> MODE REMPLISSAGE L -> LIMITES,
W -> ECHANGE DESSINS — U -> UNION,B
=> METTRE EN BANQUE 0 -> OBSERVER, N
-> REMPLACER EN BANQUE J -> NOMBRES
+T -> TEXTE Ctrl Q -> INFORMATIO
HOME : PR
PT
NS
2770 DATA MODE DE REMPLISSAGE DES SUR
FACES, C -> REMPLISSAGE COMPLET, V -> L
IGNES VERTICALES,H -> LIGNES HORIZONT
ALES,P ~> POINTILLES,Q -> QUADRILLAGE
/D ~> HACHURES PENCHEES A DROTE,G ->
HACHURES PENCHEES A GAUCHE, 1 -> LOSAN
cs
2780 DATA L'OPTION 'PAS' DONNE L'ECART
ENTRE LES MOTIFS, L'OPTION 'EPAISSEU
R' DONNE L'EPAISSEUR DES TRAITS
2790 DATA RETOUR A L' IMAGE, ENREGISTRER
L'IMAGE, CHARGER UNE IMAGE, IMPRIMER, C
ATALOGUE, QUITTER LE PROGRAMME
2800 DATA VOUS ETES EN MODE TEXTE, T
OUT LE CLAVIER AZERTY EST OPERATIONNE
L, LES FLECHES DEPLACENT LE CURSEUR, De
1 -> EFPACE,Ctrl A -> AGRANDIT, Ctrl Z
-> RAPETISSE, Ctrl W -> FAIT TOURNER
2810 DATA -,Esc -> AFFICHE CARACTERE
OU SHAPE, DEPLACEMENT COMME EN MODE GR
APHIQUE, BARRE ESPACE -> MARQUE
2820 DATA 81, 127, 78, 76, 90, 88, 86, 32, 72
182, 10, 75, 79,17, 87, 83, 84, 67, 68, 65, 63,
71, 89, 85, 73, 66, 80, 74,77
Programme GRAVURE
5 HIMEM: 36863
10 REM **# GRAVURE *#*
20 DS = CHRS (4):DM = 1
30 ONERR GOTO 890
40 IF PEEK (103) + 256 *
24577 GoTo 70
50 POKE 103,1: POKE 104,96: POKE 24576,
°
60 PRINT DS$*RUN GRAVURE"
70 HOME : VTAB 10: HTAB 6: INVERSE : PR
INT " PROGRAMME GRAVURE ": NORMAL :
VTAB 15: HTAB 6: PRINT "SORTIE SUR IM
PRIMANTE": HTAB 11: PRINT "IMAGEWRITE
PEEK (104) =
80 DIM c(a),D(14)
90 FOR I = 1 TO 8: READ C(I): NEXT : FO
R I= 1 70 14: READ D(1): NEXT
100 FOR I = 0 T0 3: READ FRS(I): NEXT
FOR I= 1 TO 3: READ IN$(I): NEXT
110 TH = 48:18 = 48:MB = 48:MH = 46
120 NL = 1:PL = 0: IF PEEK (214) THEN P
bal
130 AG = 2049:AC = 206: REM **ADRESSES
DU PROGRAMME COUT ET DU CARACTERE EN
vore**
140 AP = AG + 6: REM
AMME GRAV.C##
150 IF PEEK (237) GOTO 180
*ADRESSE DU PROGR
160 PRINT : PRINT D$"BLOAD GRAV.C,A"AG
170 POKE 237,1
180 HOME : VTAB 9: PRINT "RETURN POUR I
MAGE BN COURS": PRINT "AUTRE TOUCHE P
OUR NOUVELLE IMAGE™;: GET CARS: IF CA
R$ < > CHR$ (13) GOTO 210
200 POKE 49232,0: POKE 49234,0: POKE 49
236,0: POKE 49239,0: GOTO 270
210 IF NOT PL GOTO 250
220 HTAB 1: VTAB 13: PRINT "LECTEUR N°:
INVERSE : PRINT NL;: NORMAL : CAL
L = 1008: GET CARS: PRINT CARS: IF C
ARS = CHR$ (13) GOTO 250
230 IF CARS < "1" OR CARS > "2" GOTO 22
0
240 NL = VAL (CARS)
250 PRINT : PRINT D$"CATALOG,D"NL: PRIN
T : INPUT "NOM DE L'IMAGE:";IM$: IF I
MS = "" GOTO 180
260 HGR : POKE 49234,0: PRINT : PRINT D
S"BRUN CHARGE.OBJ,A$9000": & IMS, 8192
270 GET CARS: TEXT
280 HOME : PRINT "L'IMPRIMANTE EST-ELLE
PRETE (0/N)?:";: INVERSE : PRINT "OM;
: NORMAL : CALL ~ 1008: GET CARS: PR
INT CARS: IF CARS = "N OR CARS = "n"
coro 760
290 TAB 3: PRINT "NOUVELLES DISPOSITIO
NS(O/N)?:%;: INVERSE : PRINT "0";: NO
RMAL : CALL ~- 1008: GET CARS: PRINT
CARS: IF CARS < > "N" AND CARS < >
"n" GOTO 310
300 GOTO 560
310 IC = 0: HOME : VTAB 3: PRINT "INVERS
ER NORMALEMENT LA COULEUR(O/N) 2",
NVERSE : PRINT "O";: NORMAL : CALL ~
IF CARS
CHRS (
13) THEN IC = 1
320 HOME : VTAB 2: PRINT "L'image peut
s'imprimer en deux hauteursHauteur si
mple(6.7cm) ou double(13.4cm)"
330 HI = 1: VTAB 5: PRINT "IMAGE DE HAUT
EUR SIMPLE(O/N) ?:";: INVERSE : PRINT
"ON; : NORMAL : CALL ~ 1008: GET CARS
: PRINT CARS: IF CARS = "O" OR CARS
"o" OR CAR$ = CHR$ (13) THEN HI = 0
340 DM = IC +2 * HI
350 IF DM > 1 AND D(1) = 4.4 THEN FOR
I= 1 70 8:D(I) = 2 * DI): NEXT
360 IF DM < 2 AND D(1) = 8.8 THEN FOR
I= 1 70 8:D(I) = D(I) / 2: NEXT
370 HOME ; VTAB 3: PRINT FRS (DM): VTAB
5: PRINT "DEFORMATION HORIZONTALE(O/N
222%: INVERSE : PRINT "N*;: NORMAL :
CALL ~ 1008: GET CARS: PRINT CARS
380 IF CAR$ = "N" OR CARS = "n" OR CARS
CHRS (13) THEN DO = 14:D = DUB,
I= 2: Goro 480
390 IT = 14: IF DM > 1 THEN II = 8
400 VTAB 7: PRINT "LARGEUR DE L'IMAGE: "
FOR I = 1 TO II: PRINT CHRS (64 +
1) "= (D1) " om)": NEXT : VTAB 15: HT
AB 12: INVERSE ; PRINT "NORMAL": NORM
Pom's n° 31
AL
410 IF pm > 1 GoTo 460
420 VTAB 23: PRINT "CHOIX(A & N): "2: GE
T CARS:DI = ASC (CARS) ~ 64: IF DI <
1 OR DI > 14 GoTo 420
430 DO = 15: IF DI > 6 THEN DO = 14
440 D = D(DI): IF DI > 6 THEN DI = DI ~
6
450 GoTo 480
460 VTAB 17: PRINT “CHOIX(A 4H): "7: GE
T CAR$:DI = ASC (CARS) ~ 64: IF DI <
1 OR DI > 8 GoTo 460
470 DO = 15:D = D(DI)
480 HTAB 1: VTAB 5: CALL ~ 958:cI = c¢
DI): PRINT : PRINT "LARGEUR DE L'IMAG
E: "D" cm 6.7 * (DM < 2) + 13.4
* (DM > 1); PRINT "HAUTEUR DE L' IMAGE
*H" em
490 VTAB 10: HTAB 1: PRINT "POSITIONNEM
ENT DU COIN SUPERIEUR GAUCHE DE L'ECR
AN CONTENANT L'IMAGE:"
$00 VTAB 13: HTAB 1: PRINT "MARGE HAUTE
(DE 0A 24 cm):";: INVERSE : PRINT ™
0"; : NORMAL : CALL - 1008: INPUT "™;
Y$: IF Y$ = "" THEN VTAB 13: HTAB 29
2 PRINT "O":¥ = 0: GOTO 520
$10 Y= VAL (YS): IF ¥ < 0 ORY > 24 GO
$20 IL = 3.85 * ¥:IH = INT (IL / 10):18
INT (IL = 10 * Ih) + 48:1H = TH +
48
530 VTAB 15: HTAB 1: PRINT "(10.1 pour
raccorder une image simple)"
540 VTAB 14: HTAB 1: PRINT "MARGE GAUCH
E (DE 0.3 A 16.S5cm):";: INVERSE : PRI
NORMAL : CALL ~ 1008: CAL
L = 1008: CALL ~ 1008: INPUT "™:x$:
IF X$ = "" THEN VTAB 14: HTAB 32: P
RINT "0.3%:X = 0.3: GOTO 560
550 X = VAL (XS): IF X < 0.3 OR X > 16.
5 coro 540
560 MG = 3.6 * (X ~ 0.3):MH = INT (MG /
20):MB = INT (MG - 10 * MH) + 48:MH
Mi + 48
570 VTAB 18: PRINT "EST-CE EXACT (O/N)?:
"ys INVERSE : PRINT "O";: NORMAL : CA
LL ~ 1008: GET CAR$: PRINT CARS: IF
CARS = "N" OR CARS = "n™ GOTO 760
560 PRINT ; PRINT D$"PREI"
$90 PRINT CHR$ (27); "n™
600 POKE 6,1: POKE 7,DM
610 POKE AG + 15, CI
620 POKE AC, 27: CALL AG: POKE AC, 114:
ALL AG
630 POKE AC, 27: CALL AG: POKE AC, 84: CA
LL AG: POKE AC, 50: CALL AG: POKE AC, 5
5: CALL AG: POKE AC,31: CALL AG: POKE
AC, 49: CALL AG
640 POKE AC, 27: CALL AG: POKE AC, 102:
ALL AG
650 IF IH = 48 AND IB = 48 GoTo 680
660 POKE AG, 27: CALL AG: POKE AC, 84: CA
LL AG: POKE AC, IH: CALL AG: POKE AC, 1
B: CALL AG
670 POKE AC, 31: CALL AG: POKE AC, 63: CA
LL AG
680 POKE AC, 27: CALL AG: POKE AC, 110: ¢
ALL AG
690 POKE AC, 27: CALL AG: POKE AC, 76: CA
LL AG: POKE AC, 48: CALL AG: POKE AC,M
H: CALL AG: POKE AC,MB: CALL AG
700 POKE AC, DO: CALL AG
710 POKE 49239,0: POKE 49234,0: POKE 49
232,0
720 POKE 6,1: POKE 7,DM
730 CALL AP
740 PRINT : PRINT DS"PREO"
750 POKE 49233,0
760 HOME : FOR I = 1 TO 3: GOSUB 770: N
EXT
761 I = 1: INVERSE : GOSUB 770: NORMAL
762 VTAB 22: PRINT "FLECHES -> CHOISIR
RETURN -> VALIDER™
763 VTAB 23: GET CAR$:CH = ASC (CARS)
764 IF CH = 10 OR CH = 8 THEN GOSUB 77
0:1 = I 4 1: INVERSE : GOSUB 770: NOR
MAL
765 IF CH = 11 OR CH = 21 THEN GosuB 7
70:1 = I ~ 1: INVERSE : GOSUB 770: NO
RMAL
766 IF CH = 13 THEN HOME : GOTO 775
767 Goro 763
770 IF I= 4 ORI = 0 THEN = aps (I
-3)
772 VTAB I + 8: HTAB 4:
ETURN
775 ON I GOTO 790,790, 780
780 PRINT : PRINT D$"RUN MENU, D1"
790 HOME : VTAB 10: PRINT "REVENIR AU N
IVEAU PRECEDENT (0/N): "7: INVERSE : P
RINT "N";: NORMAL : CALL ~- 1008: GET
RMS: PRINT RMS: IF RMS = "0" OR RMS
= "o" THEN GOSUB 820
600 IF I= 1 THEN HOME :
810 GoTo 210
820 PRINT : PRINT D$*PREI"
830 POKE AC, 27: CALL AG: POKE AC, 114: C
ALL AG
840 POKE AC,27: CALL AG: POKE AC, 84: CA
PRINT INS (I): R
coro 290
LL AG: POKE AC, 55: CALL AG: POKE AC, 5
4: CALL AG
850 POKE AC, 31: CALL AG: POKE AC, 53: CA
LL AG
855 POKE AC,27: CALL AG: POKE AC, 84: CA
LL AG: POKE AC, 48: CALL AG: POKE AC, 4
9: CALL AG: POKE AC,31: CALL AG: POKE
AC, 49: CALL AG
860 POKE AC, 27: CALL AG: POKE AC,102: C
ALL AG
870 PRINT :
880 RETURN
890 ER = PEEK (222)
900 IF ER = 6 THEN TEXT : HOME : VTAB
10: PRINT "PAS D'IMAGE DE CE NOM.": P
RINT "TAPEZ UNE TOUCHE.": GET CARS: H
OME : GOTO 760
910 Goro 760
920 DATA 80,112, 81,113,101, 69, 78,110
930 DATA 4.4, 5,5.3,5-8, 6.6, 7.5, 8-8, 10,
10.6, 11.6, 13.2, 15,17. 6,20
940 DATA HAUTEUR SIMPLE ~ PAS D'INVERS
ION, HAUTEUR SIMPLE - INVERSION NORMAL
E, HAUTEUR DOUBLE ~ PAS D' INVERSION, HA
UTEUR DOUBLE - INVERSION NORMALE
950 DATA IMPRESSION DE LA MEME IMAGE, A
UTRE IMAGE, QUITTER LE PROGRAMME
PRINT DS$"PREO™
300 IF 1=N+1 THEN I = ND
310 IF I= ND~1 THEN I =N
320 VTAB I + DE ~ 1: PRINT I;"-":R$(1)
RETURN
330 REM ** CONFIGURATION *
340 HOME : VTAB 10: PRINT "CONFIGURATIO
WN ACTUELLE: "
350 VTAB 12: HTAB 1: PRINT "PAS DE MANE
TES": IF PEEK (207) THEN VTAB 12.
HTAB 1: CALL = 868: PRINT "MANETTES”
360 VTAB 13: HTAB 1: PRINT "1 LECTEUR"
IF PEEK (214) THEN VTAB 13: HTAB 1
PRINT "2 LECTEURS*
370 VTAB 14: HTAB 1: PRINT "PAS DE MEMO
IRE AUXILIAIRE": IF PEEK (215) THEN
VTAB 14: HTAB 1: CALL ~ 868: PRINT
"MEMOIRE AUXILIAIRE™
380 VTAB 18: HTAB 1: PRINT "RETURN POUR
CONFIRMER.": PRINT "'C' POUR MODIFIE
RY: GET CARS: IF CARS < > "C" AND CA
RS < > "e™ GOTO 150
390 HOME : VTAB 10: PRINT "AVEZ-VoUS DE
S MANETTES? (O/N):";: GET MES: PRINT M
ES:ME = ((MES = "N") + (MES = "0Om) *
2) - 1: IF ME = ~ 1 Goro 390
400 VTAB 12: PRINT "AVEZ-VOUS DEUX LECT
EURS?(O/N):";: GET PLS: PRINT PL$:PL
(PLS = "N") + (PLS = "0") #2) - 1
IF PL = ~ 1 GOTO 400
410 VTAB 14: PRINT "MEMOIRE AUXILIAIRE?
(O/m) 2": : GET MAS: PRINT MAS:MA = ((M
AS = "N") + (MAS = OM) * 2) = 22 IF
MA = ~ 1 GOTO 410
420 POKE 24613,ME + 48: POKE 24620,PL +
48: POKE 24627,MA + 48
430 PRINT CHRS (13); CHRS (4) "SAVE MEN
un
440 PRINT CHRS (13); CHRS (4) "RUN MENU
Programme MENU
10 REM ** PROGRAMME MENU **
20 POKE 207,1: POKE 214,1: POKE 215,1:
REM *MANETTES, LECTEURS, MEMOIRE AUXIL
IAIRE*
30 N= 3: REM
40 REM ** TITRES DU MENU: **
50 DATA PROGRAMME SCHEMATEUR, GRAPHES
DE FONCTIONS, IMPRESSION SUR IMAGEWRI
TER
6ON=N+3
70 DATA CONFIGURATION, CATALOGUE DE LA
DISQUETTE, QUITTER
** NOMBRE DE PROGRAMMES
80 REM ** NOMS DES PROGRAMMES: **
90 DATA — SCHEMATEUR, FONCTION, GRAVURE
100 REM ** DISPOSITION DU MENU: **
110 ND = 1:DE = 12:D$ = CHRS (4)
120 DIM R$(N),FS(N)
130 FOR I = 1 TO N: READ R$(I): NEXT
140 FOR I = 1 TON ~ 3: READ F$(I): NEX
¥
150 HOME : VTAB 4: PRINT "M.CAUET": PRI
NT "OCTOBRE 1986"
160 GosuB 220
170 IF I = .N THEN HOME : END
180 IF I= N-1 THEN PRINT : PRINT DS
"CATALOG": PRINT : INVERSE : PRINT "R
ETURN": NORMAL : GET CARS: GOTO 150
190 IF I = N- 2 THEN GoTO 340
200 PRINT : PRINT DS*"RUN"FS (1)
210 REM ** APPICHAGE MENU **
220 FOR J, = ND TO N: GOSUB 300: NEXT :I
ND: INVERSE : GOSUB 300: NORMAL
230 VIAB 22: PRINT "FLECHES POUR CHOISI
R-RETURN POUR VALIDER"
240 VIAB 23: GET ME$:ME = ASC (MES)
250 IF ME = 10 OR ME = 21 THEN GOSUB 3
00:1 = I + 1: INVERSE : GOSUB 300: NO
RMAL
260 IF ME = 11 OR ME = 8 THEN GOSUB 30
0:1 = I~ 1: INVERSE : GOSUB 300: NOR
MAL
270 IF MB = 13 THEN HOME : RETURN
280 IF ME > 48 AND ME < 49 +N THEN I =
ME ~ 48: HOME : RETURN
290 Goro 240
YOR DSSINC KX O/K
et sa dérivée en
pointillé
Programme GRAPHISME
10 REM
20 HOME
30 HGR2
40 HGR
50 TEXT
60 REM ** NETTOIE MEV COMMUTEE **
70 PRINT CHRS (4) "BLOAD HEL.C™
80 CALL 768
90 REM ** POINTEURS PROG.MACHINE: SCHE
M/CARAC ~ FONC ~ GRAV **
100 FOR I = 235 TO 237: POKE 1,0: NEXT
110 REM ** PLACE LES PROGRAMMES AU-DES
SUS DE HOR2 **
120 POKE 103,1: POKE 104,96: POKE 24576
** HELLO **
10
130 PRINT CHRS (13); CHRS (4) "RUN MENU
140 END
Pom's n° 31
17
41D0:00 38 27 2C 2D F5 AA 36
41D8:1E 3F 1C 04 00 AD F6 3F
Récapitulation 41£0:1¢ 24 25 0C oC 35 00 OC
CARAC.SH 41E8:0C 3C 3F 77 92 36 05 00
41F0:E7 64 2D 15 BE 15 F6 3F
BO 36 36 1E E7 04 00
41F8:1C 2C 00 E? 64 2D 15 36
4200:77 1E 17 3F 04 00 08 16
4208:06 00 08 16 BE 05 00 91
4210:E2 1C 1C OC OC OC 06 00
49218:38 67 89 BS 3F 3F 04 00
Aprés avoir saisi ce code sous
moniteur, vous le sauvegarderez
par:
BSAVE CARAC.SH, A$4000,LS$6C1
4000:8D 00 1C 01 1E 01 23 02 4220:93 62 0C 0C 1C 1C 1C 06 1C 96 36504 (00 41.aF
4008:25 01 2C 01 30 01 3C 01 4228:00 0C 0C 1C 3F 17 95 0A 15 2D 15 1B 3F 27 00
| 4010:49 01 54 01 60 01 64 Ot 4230:16 05 00 43 2B 2D 38 70 BF 67 34.12 36 15 65
| 4018:6C 01 74 01 81 01 89 01 4238:12 36 3E 3F 1C 45 2B 25 00 41 36 36 47 F3 ET
| 4020:8D 01 92 01 95 01 9C 01 4240:00 3A 37 6E 09 24 67 E4 24 00 41 36 18 1B 1¢
| 4028:AA 01 B2 01 BC 01 C7 01 4248:1C 1E 1E 2E 00 3F 24 2c 24 04 00 41 36 36 E7
| 4030:01 02 DD 01 £7 01 FO 01 4250:2D 15 BE OE BE 3F 27 2C 1A 27 24 24 00 41 1E
| 01 06 02 OA 02 OF 02 4258:00 89 F2 3F 1C 24 24 0C 1B 1E 4D El 1¢ 18 1¢
| 02 20 02 29 02 33 02 4260:2D 15 06 00 09 36 1E 3F 00 41 36 36 1E 3F 4c
| 02 4D 02 59 02 64 02 4268:27 24 24 2C 2D 15 3E 00 E7 24 04 00 1B 28 2D
02 7D 02 87 02 92 02 4270:39 B7 3A 24 24 24 2D 2D 1E 1E 1E 2D 2D 04 00
02 A? 02 AF 02 BC 02 4278:96 92 3F 04 00 39 B7 1A 2D 25 1C 44 F3 3E 1E
02 D1 02 DD 02 E9 02 4280:24 24 24 2D 2D 06 00 11 15 2D 25 00 40 £3 9B
02 FF 02 0c 03 17 03 4288:35 3E 3F 1C 24 24 0C 2D AE 65 35 44 23 24 00
| 03 2B 03 36 03 42 03 4290:35 00 2B 2D 24 FC 1B 36 2D 25 1C 27 1C 16 1E
| 03 57 03 62 03 67 03 4298:36 36 4D 21 24 00 52 3A 15 2D 25 00 40 C3 OD
| 03 83 03 88 03 8F 03 42A0:67 24 24 3C OD 06 00 9B 00 92 4A 24 24 24 3C
| 03 AO 03 AB 03 B3 03 42R8:72 2D 0C 24 24 3C 00 73 36 36 3E 24 24 24 3C
03 C9 03 D2 03 DD 03 42B0:0E 15 DF 23 24 24 6C 09 36 36 3E 24 24 24 24
03 EF 03 F8 03 04 04 42B8:1E 1E 06 00 89 12 3F 3F 1E 45 23 £4 F7 36 OF
04 15 04 1 04 28 04 42C0:24 24 24 05 00 E0 1C 36 00 2B ES 24 BC 04 00
| 04 3B 04 46 04 50 04 42C8:36 36 4D 21 24 24 BC 06 3F 0C 45 2B EO BF 04
| 04 63 04 6C 04 76 04 42D0:00 OE 56 24 24 24 DF 33 E7 4D 1C 45 23 3F 27
| 40B8:82 04 8D 04 98 04 AS 04 42D8:2E 18 36 2E 00 92 E7 24 24 24 1F 36 6D 04 00
| 40C0:B0 04 BD 04 C2 04 DA 04 42B0:24 0C 2D 15 36 36 17 05 2D 45 E3 5F 27 2C 2D
40C8:E2 04 E8 04 F1 04 F9 04 42E8:00 65 3C 38 3F 36 2E 1E 00 3F 68 B1 3F 64 2D
40D0:00 05 0A 05 12 05 18 05 42F0:36 05 00 AA 15 1F 3F 20 00 24 45 23 3F 27 00
| 40D8:20 05 29 05 35 05 44 05 42F8:24 64 2D 15 36 36 00 77 4D 1C £7 OC AD 04 00
| 4080:4D 05 61 05 6C 05 7A 05 4300:15 15 DF 23 24 24 2C 2D 2D 45 23 E4 F7 OE 25
40E8:86 05 93 05 A6 05 BS 05 4308:15 BE 06 00 E7 64 2D 15 9B 2D OE 15 40 2B EO
40F0:C2 05 CB 05 D9 05 E7 05 4310:97 15 F6 3F 1C 04 00 24 BB 3F 04 00 1B 15 15
40F8:F8 05 09 06 18 06 24 06 4318:1F 28 2D F5 92 33 2E 00 15 24 24 24 24 2D 2d
| 4100:2D 06 39 06 44 06 4E 06 4320:92 B7 24 24 6C 09 36 36 2D 04 00 92 2A E5 23
| 4108:56 06 62 06 6D 06 76 06 4328:BE 05 00 92 1C 1C 24 24 24 2C 25 00 1B 45 63
| 4110:80 06 88 06 92 06 9D 06 4330:4D 31 36 BE 06 00 F6 1E AB 0C 2D 2D 75 0C 0c
| 4118:A8 06 BS 06 04 00 1B 2D 4338:24 24 24 4D 31 36 BE 35 47°73 1B SF 3F 3F 04
4120:2D 04 00 03 00 40 43 33 4340:07 00 OC OC FC 1B 76 16 89 92 3F 4D 43 23 24
4128:36 B6 04 00 CO 6C 26 00 4348:17 6E 09 £4 04 00 1¢ 1C¢ 3C 27 00 36 F6 1E 27
4130:40 43 3F 1E 36 6F 1E F6 4350:6C 09 F6 D6 36 05 00 OC 43 43 43 09 24 0C OC
4138:0D 2D 25 00 E7 9C 25 15 17 2E 2D 00 40 43 43 43 FB 2B
4140:F5 AB 15 1F 15 3F 77 29 04 00 4B 6D 1C 16 04 00 2A 28
| 4148:00 0c 0C DC 3B 2E 96 17 2D F5 1B 12 1C 1F 1E 24 24 10
| 4150:4D 2E 24 00 60 1C BF AE 3F 1B OB 04 00 28 OF 1E 15 1B
4158:17 76 65 1C 0D 16 07 00 B3 2A 2D 27 24 0C 96 D2 aF 44
4160:08 24 05 00 92 1C 1C 24 1E 04 00 43 43 11 04 00 45 2B
4168:0C 0C 06 00 92 0C 0c 24 25 00 40 1B 15 16 1B 15 AS 5A
4170:1C 1C 06 00 3C 1C 4¢ 6E 43 2B AD 63 1C 04 00 40 43 2B
4178:1E 16 3F 17 OD OD DE 07 2D 04 90 19 36 3F F715 2D OC
4180:00 20 8D 3A 3F 77 31 05 BF 27 24 00 28 FD F315 F5 AB
4188:00 89 F6 04 00 3F 4c 11 BF 36 15 25 00 B8 15 65 1c D6
4190:35 00 12 05 00 0C 0c D6 BF 36 15 76 1F 40 43 43 23 04
| 4198:DA 1E 06 00 0c 25 1c 3F 00 1A 2D 40 AB 15 DF 63 96 D8
41A0:17 36 2E 1E OE 2D 0c 24 15 2D 25 49 18 3F 3F 04 00 24
41A8:07 00 24 BC 96 31 17 2D 36 FS 36 AB F6 3F 1C 64 56 16
41B0:04 00 65 E4 3F 17 95 BA 2C 28 AD 40 43 43 43 43 23 00
41B8:2E 2D 25 00 25 0C 3C 3F 28:15 36 2C 28 15 15 1B 1E E7
41C0:B7 92 15 2D 0C 24 00 3A 24 00 18 49 73 65 24 1C F7 04
| 4108:27 0C OC 0C 36 36 F5 3E 21 00 58 100 40 43 2B 3D 1B 77 15
18 Pom's n° 31
4610:
4618:
4620:
4628:
4630:
4638:
4640:
4648:
4650:
4658:
4660:
4668:
4670:
4678:
4680:
4688:
4690:
4698:
HB
4628:
1B
46A0
4680
46B8:
46C0:
34
16
F8
1E
BS
27
20
AB
04
23
24
3F
D2
36
2B
20
13
AD
38
E4
36
15
1E
27
27
Récapitulation
SCHEM.C
Aprés avoir saisi ce code sous
moniteur,
par:
BSAVE SOURIS.C,
oBo1
oBo8:
oB10
oB1e:
0B20:
0B28
0B30:
0B38:
0B40:
oB4a:
OB50:
OB58:
oB60:
oB6a:
0B70:
0B78:
oBe0:
opee:
0B90:
0B98:
OBAO:
OBAB:
OBBO:
OBBE:
OBCO:
OBCE:
OBDO:
oBDe:
OBEO:
OBES:
OBFO:
OBF 8:
ocoo
1EA
EA
EA
4c
op
:F9
4c
OB
OB
06
EA
EA
EA
BF
4c
OE
42
20
20
oc
oB
oB
20
oc
cE
20
20
FO
EA
EA
ac
op
De
4c
OE
12
06
20
20
OB
5E
Do
07
FD
06
20
oB
05
AD
cD
ED
oB
OE
20
60
oB
OB
Fe
07
07
EE
EA
EA
55
4c
op
Al
20
oc
oc
12
FD
AD
oc
27
oB
OB
oc
06
EE
oB
OA
08
07
AD
oB
4E
20
20
20
20
oB
oB
06
EA
EA
OE
54
4c
OE
FL
Do
20
oc
op
06
20
AD
20
20
EE
oc
07
AD
0B
OB
oB
op
aD
oc
12
12
06
FD
20
60
oB
EA
EA
4c
2c
4c
OB
Fl
bo
AD
0B
FD
02
12
12
07
EE
op
oc
Do
90
ap
oB
06
cD
oc
oc
oc
12
EE
60
EA
EA
FE
4c
14
80
20
4c
oB
03
05
8D
oB
oB
oc
oc
oB
07
AD
OB
23
24
07
ep
oB
08
FO
Do
20
4c
oc
05
AD
vous le sauvegarderez
A$BO1,LS9CE
20
DO
4c
oB
ap
AD
Ag
oB
05
4c
oB
oB
Fe
12
55
FO
oB
:D0
:A9
:€0
78D
DO
E6
AD
a5
Ag
cl
09
EE
Do
El
20
AD
oF
Bl
03
AD
20
co
oB
38
Fa
30
60
07
AD
03
cg
co
c9
20
EF
FO
AC
AD
oF
AE
oc
DO
Ag
4c
oF
FO
02
a5
1E
Ag
07
20
op
op
oD
AD
65
85
a3
oB
06
a5 ;
06
co
oc
26
07
ES
02
BF
0B
£2
FO
FO
FO
oc
FO
60
oc
3D
05
AE
25
op
oB
8D
oB
57
AD
* 20
op
ED
BO
00
ag
ag
11
85
oB
ag
Ag
20
30
20
04
05
68
Ag
A2
91
AD
06
09
06
ii
07
co
Ag
AO
8B
OA
10
cg
AE
£0
00
Bl
Ag
60
38
60
oc
21
2A
4E
4c
54
20
FO
20
op
o1
CE
ac
05
18
OF
AC
Fa
05
08
20
03
60
F8
40
cz:
3D
85
20
o1
92
F3
eB
20
oB
0A
10
8D
00
08
cA
83
Ag
A2
Bl
06
E6
60
10
00
co
oB
AD
AD
oc
AD
07
E6
20
aD
10
OE
09
Aq
11
8A
co
20
53
co
ce
AO
AO
06
oA
07
Ag
85
4c
06
oF
oB
£6
Ag
4c
50
06
AG
a5
A2
OB
co
oF
00
00
AD
oB
cA
00
07
DB
ag
A2
oB
91
09
08
20
08
E6
OE
cg
10
c9
10
03
Ag
10
aD
co
DO
co
Fg
10
20
DO
8D
EO
E0
EO
AZ
A2
A2
A2
27
Do
co
ce
27
co
AD
oB
a3
88
AD
60
Do
AD
06
8A
Og
4c
53
06
10
80
AB
Do
AO
B?
AO
AO
co
91
OF
A2
co
06
D6
Ag
DO
20
bo
cg
Fg
oF
20
co
20
20
20
20
20
20
20
20
20
co
11
28
DF
08
00
06
FS
OB
co
AO
08
FS
co
00
06
FS
00
co
27
AD
08
00
AD
88
co
06
FE
80
AB
AD
27
88
AD
£6
AD
Bl
AD
Bl
AD
91
83
ce
91
20
83
Do
06
09
85
Ag
Bl
08
EF
60
40
20
Do
FO
00
20
AO
co
20
OE
aD
DO
03
Ag
10
11
20
DO
cg
Fg
op
E0
£0
£0
Do
11
11
11
11
11
11
01
F6
oA
09
BE
06
31
62
06
83
91
OF
07
8B
06
91
83
08
8B
06
co
co
08
2F
Pom's n° 31
1048:11
1050:
1058:
1060
1068:
1070:
1078:
1080:E5
1088:0A
1090:09
1098:
10A0:
10A8:
10B0:
10B8:
100:
10C8:
10D0:
10D8:
10B0:09
10B8:AD
10F0:0F
10F8:88
1100:CO
1108:AD
1110:0B
1118:AD
1120:C8
1128:0B
1130:37
1138:08
1140:0F
1148:1F
1150:1F
1158:1F
1160:DE
1168:E0
1170:E0
1178:E0
1180:E3
1188:40
1190:40
1198:40
11A0:D0
11A8:E3
11B0:E3
11B8:E3
11C0:E0
11€8:20
11D0:13
11D8:13
11£0:13
11E8:13
11F0:13
11F8:13
1200:09
1208:13
1210:A2
1218:A2
1220:A2
1228:AD
1230:20
1238:20
1240:20
1248:20
1250:20
1258:20
1260:20
E6
co
AO
Ag
20
20
o7
09
60
AO
CF
ao
Bl
AO
AD
0B
DO
co
88
F7
27
co
00
co
06
06
85
39
20
20
20
bc
1E
E3
E3
DD
oF
3F
3F
D1
1E
£0
£0
Do
BA
55
55
9B
55
80
AD
20
20
20
co
13
13
13
13
13
13
AD
28
20
20
20
20
20
06
27
04
69
EO
85
AD
06
83
08
91
06
Ao
88
E6
BI
00
AB
AD
20
AO
27
DO
BD
AZ
120
120
28
a2
AD
13
13
13
13
13
09
A2
20
a1
20
20
1488:6D OC OB BO 12 AC 06
1490:F0 04 C9 18 BO 19 AA
1498:48 20 57 F4 4C AF 14
14A0:06 OB DO 0B C9 18 BO
14A8:AA C8 68 48 20 57 F4
14B0:AD 05 0B ED OC 0B 90
14B8:AC 06 OB AA 68 20 57
14C0:4C CE 14 AA 68 AC 06
14C8:FO 04 88 20 57 F4 60
Récapitulation
GRAV.C
Aprés avoir saisi ce code
moniteur, vous le sauvegarderez
par:
BSAVE GRAV.C, A$801,L$25F
0801:A5 CE 20 ED FD 60 20
0808:93 09 A9 1B 20 @1 09
0810:6E 20 81 09 AS 07 29
0818:FO 03 4C 3C 0A AS 07
0820:6A 6A 29 CO 85 07 AD
0828:90 02 A9 40 85 1B AO
0830:84 1A 84 09 A9 OD 20
0838:09 AJ 1B 20 81 09 A
0840:20 81 09 A9 00 20 81
0848:A9 20 20 81 09 A9 1B
0850:81 09 A9 54 20 81 09
0858:31 20 81 09 A9 36 20
0860:09 A9 1B 20 81 09 Ad
0868:20 81 09 AY FF 85 19
0870:1B A4 1A DO OC BA 29
0878:D0 07 66 07 BO 62 38
0880:07 8A 48 98 48 A9 1B
0888:81 09 A9 47 20 81 09
0890:30 20 81 09 24 07 10
0898:A9 35 20 81 09 AY 36
08A0:81 09 38 BO 0A AY 32
08A8:81 09 A9 38 20 81 09
08B0:30 20 81 09 A9 O1 85
08B8:E6 19 A4 19 CO 28 90
08C0:A9 OD 20 81 09 Ag OA
08C8:81 09 68 68 10 9D 68
08D0:85 1A 68 85 1B 48 8A
08D8:A9 00 85 06 A2 08 DO
08E0:B0 74 30 DO 10 £8 Aa
0888:B1 1A 25 08 C9 01 66
08F0:CA 24 07 10 08 AS 09
08F8:01 85 09 DO E9 18 AS
0900:69 04 AO 1C 84 09 24
0908:D0 25 06 1A 90 1D 69
0910:18 AO 04 84 09 24 09
0918:14 AS 1A 69 50 49 FO
0920:02 49 FO 85 1A AS 1B
0928:E0 90 02 69 EO 66 1A
0930:1B AY 00 85 09 EO 00
0938:AD AS 06 24 07 70 02
0940:FF 20 81 09 24 07 10
0948:A5 09 49 01 85 09 DO
08 30 E 10 8E 85
1B 20 81 09 A 41
09 AQ OD 20 81 09
20 81 09 A9 1B 20
AQ 44 20 81 09 A
81 09 A9 20 20 EA
sous
20
OE
£0
Ag
20
Pom's n° 31
A6 1C 6C FA 00 90E0:A9 11 8D EC B7 20 B6 SC
B9 84 CO 29 80 FO 46 20 CB 9C
AE AA AD AE AA
Ag 80 AE AA C9 Récapitulation
SS aa bo we 2 FONC.C
1E DO FO B9 9C B3
po 15 Aprés avoir saisi ce
: AA B9 B9 B3 8D ED code sous moniteur,
B@ B3 30 C7 8D EC vous le sauvegarderez
OE A2 06 8E 5C AA par:
9138:20 F5 9C 20 93 FE 4c DS BSAVE SOURIS.C, A$301,LSA2
9140:A6 8D AF AA 20 CB 9C A2
9148:0C AS 1E A4 1F 20 EE 9c 0301:A9 FO 85 06 4C 0C 03
0308:A9 0B 85 06 A9 60 85 07
0310:A5 B@ 48 AS B9 48 20 2c
0318:D5 AE 00 02 FO 19 A2 00
0320:86 13 20 6D D5 A¥ B2 91
B4 £9 04 85 1E 8D 0328:06 88 AJ 3A 91 06 88 BS
AD BC B4 £9 00 85 0330:FC 01 91 06 88 DO F8 68
Fl B7 AS 04 8D DA 0338:85 B9 68 85 BB 60 AD 83
6D BD B4 8D AB AA 0340:CO AD 83 CO A9 00 85 08
8D E2 9C 8D AF AA 0348:85 06 A9 EO 85 07 AY 20
B3 FO 22 20 D9 9C 0350:85 09 A2 20 60 20 3E 03
AA EE Fl B? E6 1F 0358:A0 00 Bl 08 11 06 91 08
E0 FE BO 1D BD BD B3 0360:88 DO F? E6 07 E6 09 CA
20 EA 9C 20 BB 9C 0368:D0 EE AD 81 CO 60 A9 00
85 48 8D DA 9C AD 85 07
8D E2 9C 20 D9 9C AO 00
AD BC B3 FO E3 20 06 91
AD BD B3 8D ED B? 88 DO
5 ii ji * 20 E6 $C AD BC B3 DO £6
Recapitulation B7 4C 19 9C BD BB E03 AD
CHARGE.OBJ
Aprés avoir saisi ce code sous
moniteur, vous le sauvegarderez
par:
BSAVE CHARGE. OBJ, A$9000,L$22B
EC B7 E8 BD BB B3
B7 BE AE AA A9 B7
20 BS B7 90 11 A2
0A 9C AO 00 B9 BB
1E C8 CO 00 DO Fé
33 D0 02 a0 Ba Ad Récapitulation
FO B7 8C Fl B7 60 DHEL.C
AA 85 1E AD AD AA
9000:A9 00 8D F6 03 AG 9B BD
9008:F7 03 A9 4C 8D F5 03 A2 60 . .
9010:00 BD 2B 90 9D 00 9B £8 Aptesnavels Bates .ce
9018:D0 F7 BD 2B 91 9D 00 9¢ Gods yeous: mont teur,
9020:E8 DO F7 A9 9A BD 01 9D ie 5 . vouside sauvegarderes
9028:4C D4 A? AS 1B 8D AC AA Récapitulation cave HeL.c, aS300,1$36
9030:A5 1F 8D AD AA AO 00 8&C ERREUR vee ’
9038:EB B7 20 B7 00 C9 22 DO S300TKS BO FF.OVRY BO BSL08
9040:23 A9 06 85 Cl 20 B1 00 7
9048:C9 22 FO OC 09 80 99 75 Aprés avoir saisi ce code sous O3082A2 120.AD:.BE:.60 AD; 8BiCO
9050:AA C8 CO 1E 90 EF BO 34 moniteur, vous le sauvegarderez 0320220 27 ORAS DO 85 08:09
9058:A9 EF 85 Cl 20 B1 00 co par: 0918.00 Bo O8iA2'30 AD 81 :C0
9060:00 DO 4c 60 AS Be 48 AS BSAVE ERREUR, A$3A3,L10 0320:AD 81 CO 20 27 03 60 AS
9068:B9 48 20 7B DD 24 11 30 0328:00 AO 00 91 08 88 DO FB
9070:08 A2 AZ 20 FS 9C 4C 12 03A3:68 A& 68 A6 DF QA30iBe 09 CA DOS 00
9078:D4 68 85 B9 68 85 B& 20 03A8:9A 48 98 48 60
9080:E3 DF 85 1E 84 1F AO 00
9088:B1 1B DO 05 AZ OB 4c OA La qualité de ce programme et son volume le destinaient & étre
eee ee eu ee ABLAANG Et ae vendu par Pom’s en “produits édités a part”.
sonono a0 ke sn ob ap oye Nous avons préféré vous faire profiter de ses nombreuses
GORB-AA.CB COAB-AA DO Fava Possibilités en l'insérant dans ces pages ; la place nous
90B0:A0 99 75 AA C8 CO 1E DO manquant pour les sources, seuls les fichiers nécessaires au
90B8:F8 8D BO AA 20 F5 9c 20 fonctionnement sont listés ici.
90C0:B7 00 FO 12 20 BE DE 20 Les lecteurs qui souhaitent approfondir la programmation ou
90C8:67 DD 20 52 E7 AS 51 C9
90D0:02 90 B9 4E BO AA AG 01
90D8:8D F4 B7 A9 10 8D ED B7
adapter le logiciel 4 leurs besoins trouveront cette fois les
sources sur la disquette d'accompagnement.
Pom's n° 31 21
22
OGO:
es sauts du Basic
ui n'a jamais eu de
probléme 4 relire
un programme
complexe, constitué
nombreuses sous-
routines et donc truffé de
GOTOs et GOSUBs, voire de
RuNs ? En effet, si beaucoup
de Basics autorisent les sauts
vers des routines précédées
d'un nom, d'une étiquette,
l'Applesoft n'accepte que les
sauts spécifiés par numéros
de ligne, d'ot des listings
souvent trés hermétiques.
de
Le but de cet article est donc de
modifier les commandes Goro,
GOSUB et RUN par l'intermédiaire
de l'ampersand («), afin d'obtenir
une plus grande facilité pour
réaliser et maintenir les
programmes.
Fonctionnement
Bien que le listing soit
entiérement commenté, il est
nécessaire de présenter certains
sous-programmes de la ROM
Applesoft :
CHRGET : positionne TXTPTR
sur le caractére suivant, puis va le
lire. Lorsque c'est un espace, il
recommence. On peut donc faire
précéder le début du Rem d'autant
de blancs que l'on voudra, sans
pour autant devoir les remettre
dans l'étiquette qui suit le coro
ou le GosuB. D'autre part,
CHRGET sSignale les fins
d'instruction et donc aussi les
fins de ligne de programme en
mettant la retenue (carry) a 1.
DATA : se place 4 la fin de
l'instruction en cours. Si on fait
un ump, il permet d'exécuter la
prochaine instruction. Ainsi, on
obtient coucou dans l'exemple
suivant avec un saut & GOTO
"TRUC :
100 PRINT "SALUT": REM TRU
c
110 PRINT "CoucouU"
GOTO: va tout d'abord lire le
numéro de ligne pointé par
TXTPTR, le range en LINNUM, puis
continue par GOTOBIS, qui
recherche la ligne stockée en
LinnuM. GOGO se branche donc
automatiquement en GOTOBIS,
aprés avoir stocké en LINNUM le
numéro de la ligne suivant le REM
voulu.
GOSUB : place d'abord sur la
pile du 6502 la valeur de rxrPrR
(2 octets) puis de cuRLIN (2
octets) qui est le numéro de la
ligne en cours d’exécution et
enfin le type de commande ($B0
pour Gosus). Puis Gosus appelle
Goro et exécute la ligne par
NEwsTT ($D7D2). Le RETURN
reprendra les informations de la
pile pour savoir ot il faut
reprendre le programme. Pop les
supprimera tout simplement, sans
les utiliser.
Utilisation
Il suffit de modifier légérement
vos lignes de fagon a répondre a
Ja syntaxe suivante :
10 & GOSUB "ROUTINE"
20 & GOTO "FIN
100 REM ROUTINE
110...
Patrice Neveu
120 RETURN
500 REM FIN DU PROGRAMME
Attention, aprés GOTO, GOSUB OU
RUN, il est indispensable
d'inscrire les étiquettes a
l'intérieur des guillemets (ou, au
minimum, de les faire précéder
d'un guillemet) car l'Applesoft le
décomposerait (par exemple car
enc ar, ar étant un mot-clé).
Toutefois, la routine offre de la
souplesse a l'utilisation puisqu'il
est possible d'appeler un :
REM Routine d'ouverture
par un:
& GOSUB Routine
ou méme par un :
& GOSUB Rout.
Le retour d'un sous-programme
se fait par le RETURN courant, ce
qui permet aussi I'application de
POP.
Bien entendu, ce qui est valable
pour la commande Gosus l'est
également pour les GoTos et les
RUNs.
Ces trois commandes sont aussi
utilisables depuis le clavier vers le
programme directement.
Dans cas ow la syntaxe ne serait
pas respectée peut s'afficher l'un
des message suivant :
UNDEF'D STATEMENT ERROR
(l'‘ampersand est omis)
IL FAUT UN GOTO, GOSUB ou
RUN (aprés I'ampersand)
IL FAUT UN GUILLEMET (avant
Je label appelé)
LE LABEL N'EXISTE PAS
(aucun REM ne commence par
le label)
Enfin, le programme source
Pom's n° 31
T.GOGO se trouve sur la disquette .
Pom’s au format TEXT,
assemblable directement par
Merlin/Big Mac.
Pour conclure ce mode d'emploi,
deux remarques :
Afin d'éviter des catastrophes
avec le Compacteur de Sylvie
Gallet, (Pom's 22), il est
nécessaire de supprimer les
lignes 287 et 288. En effet, le
Compacteur détruit tout ce qui
suit le REM, ce qui nuirait
naturellement au bon fonction-
nement de GOGO ;
¢ GOGO est opérationnel aussi
bien sous DOS 3.3 que sous
ProDOS. 4
Programme GOGO.DEMO
10 PRINT CHR$ (4) "BRUN GOGO
1000 REM INITIALISATION
1010 TEXT : NORMAL : HOME
1020 INVERSE PRINT " DES SAUTS A GOGO,
PROGRAMME DE DEMO. ": NORMAL : POKE
34,2
1030 VTAB 10
1040 PRINT " 1) LISTING DU PROGRAMME
1050 PRINT : PRINT " 2) CATALOGUE DU DISK
1060 PRINT : PRINT " 3) QUITTER
2000 REM CHOIX DU MENU
2010 GET A$:R = VAL (A$): IF R = 0 THEN
& GOTO "CHOIX
2020 & R GOSUB "LIST", "CAT", "QUIT"
2025 GET R$
2030 & RUN "INIT
3000 REM LISTING
3010 HOME LIST : RETURN
4000 REM CATALOG
4010 HOME PRINT
4020 IF PEEK (48896) = 76 THEN PRINT C
AR$ (4) "CAT": RETURN
4030 PRINT CHRS$ (4) "CATALOG": RETURN
5000 REM QUIT
5010 END
Source T.GOGO
Assembleur Big Mac
En format TEXT sur la disquette Pom's pour récupération par tout assembleur
onc $8000
rene $07 + Stockage temporaire
PoNuM scr > Pointeur dans 1a table des pages 4 protéger
BUFFER = $0280 2 Buffer pour copier I'instruction aprés &
CHRGETI $0300 Adresse de CHRGETO relogée
RELOCER $0319 Message d'erreur lors du relogement
ERROR $033F Message d'erreur de commande
ERRORO $0350 age de manque de guillemet
ERROR2 $0375 2 Message de label inconnu
ow 50388 2 Tokens de GOTO Gasus RUN
LENGTH $039¢ 2 Longueur de 1a commande &
TxTPTR2 $0390 ? Sauvegarde de TXTPTR pour Jes GOSUB
COMMANDE $039F + GOTO GOSUB ou RUN
PLACE =~ $0380, 2 Emplacement du label dans le Ligne
INDEX = —S03AL
basic = ~— $0300 + Retour au Basic
AMPERY = S03F5 + Vecteur de "6.
cersurR = $BEFS 2 Pour déplacer les buffers
BITMAP = SBFSB 2 Bitmap en Provos
cLEARC s066¢ ; Mise 4 zero de 1a pile et des variables.
Newstr $0702 Execute une nouvelle instruction Basic.
corosrs $0955 Partie de GOTO ($0935): pas de LINGET (SDA0C)
para $0995 Met TXTPTR 4 la fin de I'instruction Basic
TROUT $50B3A Routine de sortie de chaine de caractéres
GETADR $2752 2 LINWOM (entier 4 2 octets) < FAC
MOVIN = SEAFS 2 FAC < (YAP
TEXT $8539
Home SFCS8
coro = sa + Token de Goro
RUN sac > Token de RUN
cosua $20 > Token de Gosua
EM $82 2 Token de REM
* cette routine ¢ ‘environnement qu'elle trouve:
S4 le Systeme d'Exploitation du Disque est le DOS 3.3, elle
reste en $9400, 14 ot elle a été chargée.
54 le SED est le ProvOs elle abaisse les buffers de deux
pages et s'installe entre eux et le Basic.system, puis
+ protége ces pages.
yans les deux cas, 1a page 3 est occupée par des routines
jes tables et des messages pour des problemes de
logeabilité. Ell a protégée
+ On se trouve sous ProDos ?
pesur LDA $8F00 2 Clest Le vecteur IMP du MII
cM Esc
BEQ. BUFF
MP AMPERSET
* On se place entre le Basic.system et les buffers de Provos.
ooUFF LDA 63
JSR GETBUFR
Bcc MOVER
J Descend les buffers du DOS de 3 pages
2 Pour qu'on putsse se protéger
2 Le réserve de place s'est faite sans pb
‘ Conmandes disponibles .
+ §00T0 “Label” 2 Saute aprés la ligne REM qui *
" contient le label E
+ gc0sUB “label” 2 Va au sous-programme commengant *
. aprés 1a Ligne REM qui contient *
. Je label. *
* GRON “Label” : Execute le programme 14 0d se *
. situe le label. *
* & vR coro : Saute au label d'ordre vR +
+ vR cosua 1u sous-progranme d'ordre VR *
+ 6 VR RUN 2 Run indexé d'ordre VR *
LINNUM $50 4 Numéro de la Ligne 08 1'on vi
TxTTAR 367 3 Adresse du début du texte Basic.
LOMEM 369 2 Adresse de la fin du texte Basic.
ARYTAB 368 + Fin des vartables simples
HIMEM $73 ) Plus haute adresse disponible, buffer Propos
cuRLIN 375 4 Numéro de 1a ligne en cours d'execut ion.
LASTVAR $01 + Nom de 1a variable @ rechercher (Sndex)
vaRPNr $83 : Adresse de la valeur de la variable (index)
cuRcEr $81 + Sous-routine de prise de caractére.
curcor $87 2 Prend le caractére actuel.
rererR = $88 ) Pointe sur le caractére 4 prendre.
+ erreur lors d'un des déplacement
eReLoc usr TEXT
JSR HOME
LDA &<RELOCER
LDY @>RELOCER
JSR sTROUT
war MP owAIT
MoveR FQU *
STA PROGADR+2
STA. pRotect+1
STA AMPINIT+
Tax
INK
STX PROTECT+2
TNX
STX PROTECT+3
2 Prépare le déménagement de 1a routine
Pom's n° 31
23
moves
STA
Tay
LDA
arr
ona
STA
£0
PROGADR+i
coco
SEPEF :
move! ;
moveo
over?
Moves?
FIN
Chargement de I'octet pour le
remettre 4 lendroit désigné par Props
Passe au prochain octet
Vérifie si on a termine
Moves
MOVEHI
<FIN
Move1
Moves
PROGADR+
wove
PROGADR+2
Move
Ja page $03 et celles du programme relogé.
vz] s IL y a 4 pages 4 provéger
PoNuM Fon se sert d'un compteur
PONUM 2 Quel est le numéro de la page 4 protéger ?
PROTECT,Y ; 11 est dans la table
2 Sauvegarde tesporaire
on divise par huie pour déterminer I'octet
00 se trouve le bit de 1a page recherchée
4 Dang X pour aller dans 1a table du Probos
BITMAP, ( page 16 du pom's 22)
TEMP 2 On le sauve pour usage ultérieur
Reprise du n° de page
rz) 2 Dont on ne garde que le bit de position
2 Qui sert a chercher le masque
AITMASK,Y ; Pour mettre a1 le bit de la page occupée
TEMP 2 Verifie se clest déje occupe
ERELOC
TEMP
BITMAP,X ; Puls on met a Jour Ja AitMap
PoNuM 2 BE on passe @ la prochaine page
wxrec
+ Déplacenent d'une sous-routine du programme pour rester
+ relogeable en
MovertN
Loy
LDA
STA
DEY
ceY
BNE
+ Inttsalise
AMP INIT
Loa
Loy
STA
sty
ars
environnement ProDOs
eae J Nombre d'octets 4 mettre en $0300
CHRGETO,¥ ; Ce sont essentiellenent des tables
CHRGETI,Y¥ : et des messages, plus deux routines
2 appelées par JSR et donc non-relogeables.
SSF
MoveRTN
le vecteur ampersand sous ProDos
SPF 7 Liampersand ira au début du buffer donné
£0 2 par Probos
AMPERV+2
AMPERV+1
+ Initialise le vecteur ampersand sous DOS 3.3
AMPERSET LDA (GOGO:
bY
STA
sty
LDA
wy
STA
sry
Maintenant, 1'6 ira directement & GoteGosub.
<coGo
AMPERY+2
AMPERV+1
woesur
cevesT
HIMEM®
BIMEM
Fixe HIMEM sous DOS 3.9 pour éviter les
variables intenpéstives
+ péplacement d'une sous-routine du programme en DOS 3.3
MOvERTNI
ooo
cere
Loy
LDA
sm
bey
cer
BNE
verification de
14a 4 Nombre dioctets & mettre en $0300
CHRGETO,¥ ; Ce sont essentiellenent des tables
CHRGET!,Y ; et des messages, plus deux routines
» appelées par JSR et donc non-relogeables.
asFF
MovERTNI
2 Retour au Basic.
Ja syntaxe des conmandes
a
cuncot —; Necessaire pour prendre le ler caractére
BUFFER; suivant 1's. On stocke le résultat en SUFFER.
cuRGET —; Boucle pour Iire et stocker 1a suite de 1a
IDENTIFY 7 commande. A=0 si fin d'instruction.
STA
INK
BNE
IDENTIFY £00
Dex
s1x
1x
IDENTIFY LOA
cM
BNE
oMe
IDENTIFY2 EQU
DEX
APL
10x
ISINDEX
+ Lecture de
YAINDEX FOU
PHA
TxA
SNOLET
STA
SRCHVAR FOU
cupvar
SRCHVAR! EQU
NxTVAR
vREvEov
VAREND
VARFOUND EQU
Loy
INK
BUFFER, x
cero
ener
2
cM, x
SUFFER
IDENTIFY?
LEGAL
IDENTIFY!
£0
BUFFER, x
E070
YAINDEX
ecosus
YAINDEX
RUN
YAINDEX
LENorH
ISINDEX
E>ERROR
E<ERROR
sTROUT
BASIC
J index
£0
BUFFER, ¥
LASTVAR
a
SNDLET
£0
LASTVAR+
SRCHVAR
BUEFER, ¥
LASTVAR+
LOMEM
LOMEM?2
vaRENT
VARPNT+
£0
(WARPNT) ȴ
LASTVAR
nxrvar
VARPNT
SRCHVARL
VARPNT+
(arent), ¥
LASTVARY
VAREND
VARPNT
£6
ARENT
vRFYEOV
VARPNT+1
VARPNT+2
ARYTABY
CMPVAR
NOvAR
VARPNT
aRYTAB
cMPVAR
£0
INDEX
VARFOUND
VARPNT?
vARPNT
Pour identifier la commande envoyée.
On décremente 1a longueur de 1a commande de &
> pols on 1a range pour usage ultérieur.
7 IL ¥ a trois conmandes possibles. On commence
> par la derniére.
2 EE on compare au token rangé dans le buffer.
St clest autorisé, d'accord...
Sinon, passe 4 1a prochaine !
PBC Ul n'y ena que 3...
2 On a peut etre un saut indexé
Alors sachant que 1a variable est au début,
5 on recherche Je GOTO,cOSUB, RUN
2 C’est bien un saut indexé
+ Recherche d'un saut quelconque sur toute
2 Ia longueur de ta Ligne
2 SL clest 1'Incennu,
2 de command
alors signale I'erreur
2 Bt retourne au basic.
4 Lecture de 1a lére lettre de la variable
IL y a une ov plusieur lettre dans le nom ?
2 Va prendre la 2nd
2 On se place au début de la zone des
2 variables simples afin de rechercher
2 notre index
+ Et on compare 1a variable étudiée avec celle
2 quion a trouvé aprés I'anpersand
+ On rajoute 6 ou ? celen ce que Ia lere lettre
> était convenable ou non
) Va vérifier si on a vu toutes les variables
+ Acton terminé 1a zone des variables simples
2 La variable n'existe pas, donc 0
2 Pour indiquer 4 FAC 8 se trouve Ja valeur
2 de 1 index
24
Pom's n° 31
PUTINFAC
LEGAL
LEGAL
NosurLe
TESTINOX
SEEKCOMA
coma
READY
BNE PUTINFAC
any
no *
JSR MOVE
JSR GETADR
equ *
LDA LINNUM
STA INDEX
Pua
PLA
ANE LEGALL
Fou *
Lx £0
STX INDEX
‘STA COMMANDE
INK
LDA BUFFER, X
cup £522
EQ. TESTINDX
mu *
LOY £>ERRORO
LDA &£<ERRORO
Usk stRour
oMP BASIC
Teste #!1
qu *
Loy INDEX
cer «2
cc READY
mu *
LDA BUFFER, X
cM gt,"
BEQ. COMA
INK
eX LENGTH
BNE SEEKCOMA
RTS
INK
LDA BUFFER, x
cme £522
BNE NOGUILL
Dey
ceY fl
BNE SEEKCOMA
zou *
INK
STX PLACE
faut
Puls converti¢ FAC en entier dans
la variable en FAC
LINNUM
on a un index
Clest bon,
IL n'y a pas d'index
Alors range le type de commande qu'on a eu.
Puls verifie I'existence du guilienet avant
le labet-
522 est le code de”
S71 y est, on peut aller chercher Je label
apréa le REM.
Sinon,
clest raté, on doit tout arreter.
Indexer et si oul alors allens-y
On n'indexe que si on doit Iire aprés le ler
Sinon, on est déja pret...
on recherche Jes virgules car elles marquent
2a fin d'un label a rechercher: c'est un
séparateur dans 1a liste de label
Mais 41 faut quand mene rester dang les
limites de la ligne # étudier
St Lindex > nombre de labels, alors on sort
Aprés une virgule, on doit trouver un ”
Sinon c'est une erreur
Passe ay prochain de 1a
et sf on est au bon, alors 11 faut
y aller
on est pret 4 rechercher le label
Sauve le début du label
+ Recherche d'une instruction REM dans le texte.
SEEKREM
SBERREM2
READLINE
PINLAB
READREM
usr
ome
EQ
use
BNE
cM
EO
BNE
Fou
rxrprR
TATPTRE
TxTPTRE
TXTPTR2+1
TxTTAB
Txrrag+1
rxTPTR
TXTPTRO
cunceTy
curcert
curcer1
LINwuM
cuRGET!
LINNOM?2
curser
curoer1
READLINE
£00
SEERREM
SEERREM2
burrER, x
Regarde bien ol on en est dans le texte.
puls sauve pour plus tard peut-etre.
Fixe le pointeur au début du progranme.
(moins 1)
Va lize les 2 octets qui
de 1a prochaine ligne.
donnent I ‘adresse
Passe aussi
et en passant,
les 2 octets du numéro de ligne.
on stocke.
Puts on 14t le début de I ‘instruction.
Est-ce un REM?
oui ! alors on va aller Je lire.
Non alors on pagse a la prochaine instruction
Fin de ligne ?
oul, va sauter ce qu'il y a avant Je texte.
Non alors teste un REM.
Le début du label
cOMPREM JSR
BEQ
wy
cey
BEO
cey
BEQ
ow
BNE
Nx
cex
bee
+ Execute ce!
EXECLIN EQU
LDA
cue
EO
cue
BEQ
LDA
sR
oe
EXECRUN EU
BO
EXECRUN2 JSR
aNE
EXECRUNI QU
JSR
ome
ExECGOTO FOU
Me
» curcer qui
cHRGETO EU
oooer
PRNTEND LOY
LDA
JSR
Me
cuRoETI
FINLAB
BUFFER, X
BUFFER, X
READLINE
LENGTH
COMP REM
tte Ligne 1
cOMMANDE
fo0T0
ExECoOTO
RON
EXECRUN
vz)
$0306
TXTPTR2+1
revere
CORLINGL
cuRLIN
coMmanoe
curcor
coroais
NewsTT
curcor
EXECRUNI
cuRceT1
PXECRUN2
Newsrr
pata
controle 1
TXTPIRe!
LOMEM!1
coer
TxrPTR
Lome
PRNTEND
cuRcer
E>ERRORZ
E<ERROR2
sTROUT
BASIC
+ Messages divers
41 faut le comparer avec ce qui suit le REM
> Fin da REM ?
2 Dans une liste, une virgule ou des
2 guillemets signifient une fin de label 4
2 rechercher-
2 Mais clest différent, donc...
) Si clest identique, essaye plus loin !
? Mass ce n'est pas la peine d'en faire trop.
4
2 Selon ce que c'est, on n'agit pas paresi:
2 Clest un GOSUB qu'il faut executer,
2 Ceci est le début de Ia routine Gosus, mais
y la difference est qu'on ne va pas lire Ie n*
2 de ligne qui suit puisqu'on 1'a remplacé par
2 un label.
2 Dans ia pile, renarquez qu'on place.
2 TXTPTR d’od on part,
2 CURLIN qui stexecute encore,
> COMMANDE pour signaler que ce qui se trouve
+ dans 1a pile vient d'un GOSUB par exemple.
4 Ca y eat au lieu d’aller en GOTO ob on aurait
Iu un n° de ligne, on ne le fait pas:
on se branche aprés (GOTOBIS)
2 Est-on déja en fin de ligne ?
2 Si out, alors fait le RUN...
: Sinon, i] faut se placer en fin de ligne.
Mise 4 zero de la pile et des variables
> Execution de la prochaine instruct fon.
2 Crest
2 au but
un GOTO, et comme on a déja fixe TxTPTR
du saut, on execute...
a fin au texte.
Avant de lize un caractere du prog., on doit
) stassurer qu'on est toujours d
Showing the first 100000 of 260796 characters.