Text content (OCR)
‘tremplin
en double
haute résolutior '
SUF Epson
Une douzaine de routines
| pratiques LM @ utiliser
@ partir du Basic
NO 10- pitt el - Deu: nes
bre love’
1s déposées par Apple Computer Inc
VOTRE BIBLIOTHEQUE INFORMATIQUE
¢ LE MANUEL DE L’INTEL-
LIGENCE ARTIFICIELLE
(A. Barr & E.A. Feigenbaum)
Vaste et captivant sujet que celui traité
dans le Tome | de cet ouvrage collectif
(traduit de l'américain par D. Tauzin-
Raynaud). Si 'intelligence ortificielle —
IA pour les initiés — inquiéte quelque
peu certains esprits rétrogrades, elle
en passione beaucoup d'autres, heu-
reusement plus ouverts aux techniques
et théories nouvelles.
Avec un codt de |'informatique en chute
libre, de nombreuses applications, hier
réservées 4 la “grosse” informatique,
deviennent possibles sur des machines
plus modestes : la vatre... par exemple.
Que |'on ne s‘attende pourtant pas 4
trouver dans ce manuel des routines
permettant de mettre au point un pro-
gramme personnel. Nous sommes ici
en présence d'un ouvrage de réflexion,
d'une somme de connaissances résul-
tant du travail cohérent de plusieurs
dizaines de personnes : la recherche
avec Anne Gardner, la représentation
de la connaissance organisée par
Avron Barr et James Davidson, la com-
préhension de la parole préparée par
Lawrence Fagan, Paul Cohen et Avron
Borr, etc, (Editions Eyrolles, 320 pages)
¢ INITIATION A LA GENE-
RATION DE TEXTES EN
LANGUE NATURELLE
(Jean-Pierre Balpe)
Est-il possible de confier la production
de textes & des ordinateurs ? La
réponse vous est donnée dans cet
excellent livre de Jean-Pierre Balpe...
programmes en Basic @ l'appui. Sur
Apple ? Non, mais il s‘agit d'un Basic
Microsoft tout & fait conventionnel et
sans aucune fonction graphique, ce qui
vous permettra éventuellement de le
traduire facilement en Applesoft. A
noter que les programmes proposés
par l'auteur ont tous été développés sur
des machines dont la plus puissante
navait pas plus de 32 Ko disponibles.
Vous ne serez probablement pas sur-
pris en apprenant qu'il est néanmoins
préférable de disposer d'un lecteur de
disquette (nous préconisons I'Unidisk).
Nul doute que la lecture sérieuse
(jallais écrire “I’étude") de cette initia-
tion autorisera bon nombre d'amateurs
d'écrire des applications qui leur per-
mettront la génération en langue natu-
relle de leurs propres “textes”. Je ne
serais pas autrement surpris si Trem-
plin Micro recevait bientdt des exem-
ples aussi originaux qu'inédits. Pour ne
rien vous cacher, je le souhaite car il
s'agit la d'un sujet particuligrement
intéressant.
(Editions Eyrolles, 204 pages)
¢ PROGRAMMATION EN
ASSEMBLEUR 68000
(Louis Léon)
Je sais : votre Apple chéri n’est pas
équipé d'un 68006, mais d'un 6502 ou
encore d'un 65C02... en attendant le
fameux 65C816 qui lui permettra (la
nouvelle sera peut-étre devenue offi-
cielle ay moment od vous lirez ces
lignes !) de rivaliser avec le PC d'IBM
et ses innombrables copies. Mais cer-
tains de nos honorables Lecteurs (et
aussi des Lectrices : je ne vous oublie
pas Mesdames) utilisent un Mac et
révent de réécrire sur icelui les exira-
ordingires routines en langage
machine qui ont permis 4 leur Apple de
ne point paraitre obsoléte face 4 la
redoutable concurrence des Atari,
Amiga et autres machines géniales.
Il se trouve que Mac n'est plus le seul &
étre équipé d'un 68000, microproces-
seur auquel les augures promirent un
avenir beaucoup plus brillant que celui
réservé av 6800 du méme Motorola.
Lisa prouva que le 68000 disposait réel-
lement de possibilités extraordinaires,
mais Lisa fut un échec et nous avons dé
attendre l'arrivée du Mac pour que des
auteurs compétents s‘intéressent enfin
4 l'architecture et & la programmation
de la béte.
Voila qui est fait, et en frangais, par
Louis Léon. Celui-ci vous guidera dans
une approche prudente et logique du
68000 et vous prouvera que la pro-
grammation de ce microprocesseur
n'est pas aussi rébarbative que vous le
laisseront volontiers supposer certains
beaux esprits, soucieux de vendre des
machines... et des logiciels, mais ne
désirant surtout pas aiguiller leurs
clients vers la programmation.
(Editions Eyrolles, 380 pages)
PROGRAMMATION EN
ASSEMBLEUR
cp i:
Louis LEON
EYROLLES
GUY-HACHETTE
Apy
log
sée
tremplin
micro
pple et ProDOS (noms et
gos) sont des marques dépo-
jes d'Apple Computer, Inc.
IMESTRIEL
2 numéro : 33 F
bonnement d'un an 190 F
) numéros)
uy-HACHETTE
1 Petite Motte — Senillé
9100 CHATELLERAULT.
sléphone :
)-93-66-66
JBLICITE :
lle (m&me numéro)
ymmission paritaire ;
ne l'obligeont pos & glaner,
ns plusieurs magozines, les
iseignements concernant sa
chine, ne bénéficient pas du
méro de Commission Paritaire,
pas davantage des tarifs pos-
x réduits.
EMPLIN MICRO — Bimestriel —
st une publication des Editions
ENA, 4, rue de la Cour-des-
ues, 75020 PARIS — S.A. au
ital de 3600000 F — Imprimé
~ CITE-PRESS/PARIS — Dépat
al 4 la date de parution — Ins-
ation 4 la Commission Parit
blications et Agences
sse_: en cours — Directeur de
Publication: Guy-Clément
GNE — Diffusion N.M.P.P.
EMPLIN MICRO
Au-dessus de la mélée
OURQUOI vous obstinez-vous 4 éditer une revue dont le seul
objectif est assurément d'aider les utilisateurs d'un Apple lle ou
IIc & mieux connaitre leur machine ? C'est une question que
l'on me pose souvent dans les milieux dits professionnels. Et
c'est vrai que je n‘ai certes pas choisi la facilité en créant Trem-
plin Micro, puis en poursuivant I'édition de ce titre.
Autre fait singulier : ce bimestriel de programmes ne semble guére ouvert
& la publicité. D'ou une autre question, au moins aussi singuliére que la
premiére : Comment réussissez-vous @ équilibrer votre Badger ? Sans
doute bénéficiez-vous d'une aide invisible d’Apple ?
Est-il tellement invraisemblable, dans ce pays, qu'un directeur de publica-
tion soit suffisamment honnéte pour ne point accepter de telles compro-
missions ? Tremplin Micro n‘a rien 4 cacher et ne dispose pas de ressour-
ces occultes. Ses ventes lui suffisent et il peut méme se permettre de rétri-
buer convenablement ses auteurs.
Par ailleurs, notre revue est contrélée par |'OJD (c'est méme |'un des rares
titres de cette nature — publication dedige 4 une seule marque — a se
soumettre a une telle formalité). Jusqu’a maintenant, nous avons effecti-
vement refusé les pages de quelques annonceurs (tout en les remerciant
de leur confiance), trop peu nombreux pour justifier une augmentation de
notre pagination. En effet, s'il est possible que Tremplin Micro s'ouvre un
jour 4 la publicité (son directeur n‘est pas publiphobe !), celle-ci sera
regroupée dans un cahier spécial supplémentaire.
Lectrices et Lecteurs ont la presse qu'ils méritent. II est parfois facile, dans
notre pays, de réussir ce que, dans notre jargon professionnel, nous
appelons des “coups”. Je connais les recettes. II est plus difficile d'imposer
des publications dites "techniques et professionnelles”. Heureusement, la
France dispose, avec les Nouvelles Messageries de la Presse Parisienne et
plusieurs dizaines de milliers de Dépositaires et Diffuseurs de Presse, du
meilleur réseau de distribution du monde.
Tremplin Micro ne peut compter que sur ce réseau et sur ses Lectrices et
Lecteurs. Merci aux animateurs du premier et a la fidélité des seconds...
auxquels je promets de bons et nombreux moments en notre compagnie.
BONNE PROGRAMMATION ET A BIENTOT !
GUY-HACHETTE.
SOMMAIRE = 10
* Graphisme-démo (Maurice Chavelli) .
sce Wiese nines Sible Gieeainyeys sles siai ge Oewarainusiels 3
» Instructions Basic Applesoft
(NOHO) sxccsasiwcccarpanugesaseen 6
* Greffe-LM (Nestor) ................ 10
IMPRESSION EN DOUBLE HAUTE
RESOLUTION SUR EPSON
(Patrick Quettier et la collaboration d'Y. Koenig)... 12
* Sauveur de variables (Yvan Koenig) .
25
.
(G60) o.oo e cece eece cece eceeeee ees 28
* Unjeu de lettres : Treize (Géo) ...... 30
* Essai de logiciel : Version Liste
(Clément Renard) ................- 35
* Cadre avec les caractéres Souris
NNGSIOR) oscinssesesiesics tra menwaun 36
* Titre mystérieux (Michel Delacroix) .. 37
* Rideau (Clément Renard) ........... 38
* Effets spéciaux (Nestor) ............ 40
* Inversion d'écran DHR
(Thierry Gauthier) ................. 42
* Fenétre de texte en HGR2
(Clément Renard) ..............2.5 45
* Défilement d'une ligne (G-H) ....... 48
* Défilement de I’écran texte (G-H) ... 49
* Fenétre rapide sur 40 colonnes
(Argos), sasscaneeracawsesecs 50
* Minuscules transformées en capitales
(Clément Renard) ................. 52
* Affichage hexa (Nestor) ... 54
* Courrier des Lecteurs . 56
* Biblio I, 5, 8, 34, Il
* Essai de logiciel : ORCA/M......... 59
* Occupation de la page zéro
(Marcel Cottini)
* Bulletin de commande
et d'abonnement ...
* En souscription .
Un message de notre ami Yvan KOENIG
Le courrier de Tremplin Micro montre 4 I'évidence que la recopie
de programmes publiés en revue n'est pas chose aussi aisée qu'il
y parait au premier abord.
Les difficultés peuvent étre classées en deux catégories : les fau-
tes de frappe pures et les erreurs dues 4 des problémes de lecture
du listage imprimé (oublions les bogues et coquilles typo-
graphiques !).
Pour corriger ces erreurs il existe des utilitaires dont l'emploi est
fortement conseillé, Pour le BASIC, POM'S diffuse une nouvelle
version de son Editeur Plein Ecran (EPE) dont l'un des atouts est
d’étre un produit de conception francaise. On peut également uti-
liser PROCMD de CALL APPLE ou GALE de NIBBLE. Avec ces deux
utilitaires on dispose de multiples fonctions dont la RENUMERO-
TATION. Pour les routines en langage machine, NIBBLE a publié
(et commercialise toujours) un remarquable éditeur de code
HEXA sous le nom de MLE.
Il m‘a pourtant semblé utile de fournir au lecteur un maximum
d'éléments pour permettre une transcription plus sire des pro-
grammes et simplifier la recherche d’éventuelles erreurs. C'est
pourquoi Tremplin Micro (et pourquoi pas les autres revues ?)
publiera désormais la plupart des listages sous une forme
ENRICHIE *
La présentation 4 laquelle vous étes maintenant habitué(e) reste
globalement inchangée, mais viennent s'y greffer quelques
fioritures.
— Chaque ligne BASIC est accompagnée d'une SIGNATURE pre-
nant en compte les différents octets de ladite ligne, 4 I’exclu-
sion du numéro, du lien vers la ligne suivante et de tout ce qui
se rattache 4 une REM éventuelle (REM proprement dite et :
qui la précéde le cas échéant). Par ailleurs, les minuscules
non accentuées sont assimilées @ leurs homologues
majuscules.
— Les espaces parasites suivant REM ou DATA sont soigneuse-
ment filtrés. Dans une chaine, si l'on a plusieurs espaces adja-
cents, les espaces de rang supérieur 4 un sont remplacés lors
du listage par des trémas ce qui permet d’en contréler aisé-
ment le nombre. Les caractéres de contréle — qu'il vaut
mieux éviter (NIBBLE refuse carrément leur présence dans les
programmes publiés) — sont affichés sous la forme dévelop-
pée ‘ctX’. Sur écran 80 colonnes, ct s‘affiche en INVERSE, CT en
INVERSE remplace ct si 40 colonnes. Sur papier, sur IMW et
EPSON récente ct sera souligné.
— Pour les routines HEXA les listes seront publiées 4 raison de
16 octets par ligne suivis la encore d'une SIGNATURE de
contréle,
Afin de vous permettre de contréler votre travail de recopie,
Tremplin Micro met en vente une disquette regroupant les pro-
grammes utilisés pour générer ces listages au prix de 30 francs.
* Quelques programmes du présent numéro utilisent déja la formule
de contréle mise au point par Yvan KOENIG. Ce systéme se généra-
lisera & partir de notre prochain numéro (3 novembre).
GUY-HACHETTE
DIDACTIQUE
Maurice CHAVELLI
GRAPHISME.DEMO
| vous animez un club ou une classe de micro-informatique,
n‘hésitez pas 4 taper patiemment les 68 lignes de cette excel-
lente démonstration des possibilités graphiques de l’Apple. Le
méme conseil s‘adresse aux débutants et d'une maniére
générale, 4 celles et 4 ceux qui ne se sont pas encore intéres-
sés aux instructions graphiques de l'Applesoft.
1 REM
2 REM Un amper-interpréteur est caché 1a
3 REM -----------=---------------=------
4 DATA 201,80,240,30,201,84,240,36,201,7
6,.240.44,32,248.230 202, 134,36,32.183,
0,240, 10,32,245,230,202,138,133,37,32,
34,252,96,32,245
5 DATA 230,32,142,253,202,208,250,96,173
»@,192,16,251.141,16,192,32,177,0,96,3
2,245,230, 134,58,32,245,238,134,59,32,
245,230,138, 76,99, 254
6 FOR C = 768 TO 840: READ A%: POKE C,A%
: NEXT : POKE 1014,@: POKE 1015,3
7 POKE - 16197,0: TEXT : HOME : & 11.5:
PRINT "Petite démonstration *
8 & 11: PRINT "-------------------- <
9 & 20,11: PRINT "du": & 20: PRINT *--*
10 & 8,18: PRINT “Graphisme Haute Résolut
jion*
11 & 8: PRINT "--------------------------
": & T: & P16: HGR
12 & 5: PRINT "L’instruction BASIC HGR af
fiche"
13 & 5: PRINT “et efface la PAGE 1 en lai
ssant*
14 & 7: PRINT "4 lignes de texte en bas..
15 & 5: PRINT "<Pour |’assembleur:
F3E2>";: & T
16 & 4: PRINT “Pour couvrir la totalité d
e 1’écran"
JSR $
17 & 7: PRINT "il faut faire un POKE-1630
2,0"
18 & 3: PRINT "<Pour |’assembleur: BIT ou
LDA $C@52>"
19 & 4: PRINT “Pour revenir en mixte POK
E-16301,0";: & T
20 HOME : TEXT : PRINT “De la meme maniér
e l’instruction HGR2": & 11: PRINT “af
fiche la PAGE 2": & 5: PRINT "Celle-ci
n’a pas de mode mixte"
21 PRINT " (du moins pas avec la PAGE 1 d
u TEXTE)"
22 & 5: PRINT "<Pour |’assembleur: JSR $F
3D8>"
23 PRINT : PRINT " La page 1 occupe |’esp
ace mémoire:": PRINT : PRINT " $2000
/ $3FF7... 8192 / 16375"
24 PRINT : PRINT “ La page 2 occupe |’esp
ace mémoire:": PRINT : PRINT “ $4000
7 SSFF7... 16384 / 24567"
25 PRINT : PRINT “On peut afficher une PA
GE sans |’effacer": PRINT : PRINT " Po
ur la PAGE 1: POKE -16308,@ ($C054)":
PRINT " Pour la PAGE 2: POKE -16299,0
($C@55)": PRINT : & T: & P6
26 & S: PRINT “On peut aussi écrire sur |
a PAGE": & 1@: PRINT “qui n’est pas af
fichée*
27 & P2: PRINT "-> Ecriture PAGE 1: POKE2
30,32 ": & 6: PRINT “En assembleur: LD
—
TREMPLIN MICRO
sosusesazessunnnnauenanenennanunannanuaunnasesenssusuausnensuensensensssunsssosansseenennusnennsnssss
GRAPH.DEMO
A £920": & 21: PRINT "STA $E6"
28 PRINT : PRINT "-> Ecriture PAGE 2: POK
£230,64 ": & 6: PRINT "En assembleur:
LDA £840": & 21: PRINT "STA $E6": & PS
2 &T
29 HGR : & 6: PRINT "L’instruction HCOLOR
permet": & 10: PRINT “de fixer la cou
leur": & T
FOR C = @ TO 7: HCOLOR= C: HPLO
CALL - 3082: & 15,23: PRINT "HC
= "3Cz: & T: NEXT
31 GOSUB 68: & P2: PRINT "La routine HCOL
OR se situe en $F6F0": PRINT "Chargez
le code de la couleur dans X": & L240,
246,9: & P2
32 & 7: PRINT "Vous pouvez aussi charger"
: PRINT "directement $E4 pour gagner d
u temps...": & T
33 HGR : PRINT : & 8: PRINT "L’instructio
n HPLOT permet": & 12: PRINT “de trace
r un point"
34 HPLOT RND (1) * 280, RND (1) * 160: IF
PEEK ( - 16384) < 128 THEN 34
35 POKE - 16368,0: GOSUB 68
36 & P2: PRINT "La routine HPLOT se situe
en $F457": & L87,244,7: & P2
37 PRINT " En $F411 se trouve la routine
HPOSN": PRINT “qui calcule a partir de
l’abscisse Y,X": & 10: PRINT "et de |
‘ordonnée A:"
38 PRINT : PRINT "->L’adresse de début de
ligne ($26/$27)": PRINT "->HMASK ($30
)": PRINT "->HCOLOR1 ($1C)": PRINT "->
Le numéro d’OCTET dans la ligne ($E5)"
:&T
39 HOME : TEXT : HGR : PRINT "HPLOT perme
t aussi de tracer des lignes": PRINT :
& 9: PRINT “HPLOT X1,Y1 TO X2.Y2 TO..
4@ HCOLOR= RND (1) * 8: HPLOT RND (1) * 2
80, RND (1) * 160 TO RND (1) * 260, RN
D (1) * 160: IF PEEK ( - 16384) < 128
THEN 40
41 POKE - 16368,0: GOSUB 68
42 PRINT : & 5: PRINT "La routine HLIN es
t en SF53A": PRINT "Elle trace une lig
ne du dernier point": PRINT "“tragé (do
Ne qui est passé par HPOSN)": & 5: PRI
NT "au point:"
43 PRINT : PRINT : & 5: PRINT "-> ABSCISS
(suite)
E X,Y": & 5: PRINT "-> ORDONNEE A": &
P2
44 & 5: PRINT "Une autre adresse bien uti
le!": PRINT "HFIND en $FSCB est 1|’inve
rse de HPOSN": PRINT "I1 nous redonne
abscisse et ordonnée ": & P2: & 5: PRI
NT "-> ABSCISSE $E0,$Ei": & 5S: PRINT *
-> ORDONNEE $E2": & T
45 HOME : TEXT : HGR : HCOLOR= 7: PRINT *
HPLOT permet aussi de tracer n’ importe
“: PRINT "quelle courbe a partir de so
n équation."
46 FOR X = 0 TO 14 STEP .08: HPLOT X * 20
, SIN ( - X) * 50 + 100: NEXT : &T
4? TEXT : & P4: & 7: PRINT “Les formes ha
48 PRINT : & 3: PRINT "Une FORME est une
suite de vecteurs": & 5: PRINT "de dép
lacement dans les quatre “: & 5: PRINT
"directions avec ou sans tracé."
49 PRINT : PRINT " Chaque octet de la FO
RME est divisé": PRINT “en 3 sections,
chacune étant un vecteur": PRINT "Le
dernier octet ne contient que des 0."
50 PRINT : PRINT "Plusieurs formes peuven
t etre regroupées";: PRINT : & 8: PRIN
T “dans une TABLE DE FORMES."
PRINT : PRINT " Cette TABLE contient e
n tete le nombre": PRINT " de formes p
uis leurs adresses relatives": & 6: PR
INT "La TABLE est ainsi relogeable.*
52 PRINT : PRINT " Vous allez voir ce qu
‘on peut faire": & 6: PRINT “avec un Ss
imple petit carré...": & T
53 DATA 1,0.4,0,45,54,63,36,0: FOR C =
850 TO 858: READ D%: POKE C,D%: NEXT
54 POKE 232,82: POKE 233.3: HOME : TEXT :
HGR : HCOLOR= 7: SCALE= 1: ROT= 0: PR
INT " DRAW permet de tracer une forme
en X,Y": PRINT : & 7: PRINT "Exemple:
DRAW 1 AT 10@ , 50": DRAW 1 AT 100,50:
&T
55 PRINT : PRINT " SCALE donne la dimens
ion de la forme": PRINT : FOR D = 1 TO
40: & 10: PRINT "SCALE = ";D3: XDRAW
1 AT 100,50: SCALE= D: DRAW 1 AT 100,5
@: NEXT : & T: XDRAW 1 AT 100,50
56 & P2: PRINT " ROT permet de faire tou
rner la FORME": PRINT : SCALE= 24: FOR
D = 0 TO 64: & 10: PRINT "ROT = "sD3:
XDRAW 1 AT 100,70: ROT= D: DRAW 1 AT
100,70: NEXT : & T: XDRAW 1 AT 100,70
5
GUY-HACHETTE
Sv & P2: PRINT "Vous pouvez créer ainsi d
e jolis effets": PRINT : FOR C = 1 TO
2: HCOLOR= C: FOR D = @ TO 64: ROT= D:
DRAW 1 AT 130,70: NEXT D,C: & T
58 PRINT : PRINT " XDRAW dessine comme
DRAW mais avec": & 8: PRINT "la couleu
rc complémentaire*
59 FOR C = 1 TO 2: FOR D = @ TO 64: ROT=
D: XDRAW 1 AT 130,70: NEXT D,C: & T: G
OSUB 68
60 & P2: PRINT " XDRAW est en $F65D et DR
AW en $F601"
61 & P2: PRINT "I] faut mettre les coordo
nnées en:": PRINT : PRINT : & 5: PRINT
“-> ABSCISSE X,Y": & 5: PRINT "-> ORD
ONNEE A"
62 & P2: PRINT "Attention! Les coordonnée
s sont celles": PRINT : & 8: PRINT “de
la FORME concernée.": PRINT : PRINT :
&T
63 & P8: PRINT "Et pour terminer un petit
kaléidoscope": PRINT : PRINT : & 4: P
RINT "Toujours avec le petit carré!":
& P10: & T
64 HGR2 : SCALE= 16:H =
55 STEP 50: HCOLOR=
= 3 THENH=5
65 FOR C = 1 TO 250: DRAW 1 AT C,Y: NEXT
: FORY=5 TO1
=H+1: IFA
66 SCALE= RND (1) * 100: HCOLOR= RND (1)
* 7: DRAW 1 AT RND (1) * 280, RND (1)
%* 160: IF PEEK ¢ - 16384) < 128 THEN 6
6
67 HOME : TEXT : END
68 HOME : TEXT : & 12: PRINT "Pour |’asse
mbleur*: & 12: PRINT "----------------
~": RETURN
PROGRAMME DE MAURICE CHAVELLI
MICRO.BIBLIO
¢ Prolog (Dunod)
Llouvrage
par Clément RENARD
collectif que présente
d'abstraction en le replacant dans le
cadre plus général de la program-
mation en logique. A l'aide de nom-
breux exemples et applications qui
feront apprécier la fapidité de sa
programmation, la facilité de sa mise
On assiste dans les communautés
scientifiques et industrielles fran-
gaises G un engovement croissant
pour les langages de |I'intelligence
artificielle, les applications de sys-
témes experts et, de fagon générale,
les outils informatiques destinés,
d'une part, 4 la représentation et ala
manipulation de connaissances et,
d'autre part, & la simulation de rai-
sonnements.
En cing ans, le langage PROLOG
(PROgrammation LOGique) est passé
d'une curiosité de laboratoire 4 une
réalité industrielle et commerciale.
Langage de progammation pour des
applications d'intelligence _artifi-
cielle, PROLOG est aussi un outil
général pour la conception et
Vexploitation de systémes experts,
pour la gestion de bases de données,
le traitement des langues naturelles,
la C.A.O. ou le génie logiciel. Tras
utilisé tant dans les laboratoires de
recherche que dans les centres de
développements industriels, il fait
l'objet de nombreuses mises en
ceuvre destinées 4 la plupart des
ordinateurs en usage aujourd'hui.
Maryse Condillac décrit en pro-
fondeur le langage PROLOG et ses
fonctions et donne un panorama de
la grande variété de ses applications.
ll le présente @ plusieurs niveaux
DUNOD
au point et le naturel de son
expression, les auteurs expliquent
ainsi les fondements théoriques et
les concepts de base d'un langage en
pleine évolution.
314 pages, broché (environ 170 F)
e Les meilieurs logiciels
pour MO5, TO? et TOS
(Marabout)
Nos lecteurs enseignants travaillent
beaucoup. sur Thomson... ce qui ne
les empéche pas de continuer 4 tirer
le meilleur parti de leur Apple chéri.
lls trouveront, dans ce nouveau volu
-me de la collection Marabout Ser-
vice, une sélection des meilleurs (du
moins aux yeux de |’auteur) logiciels
pour apprendre, s’amuser, rire,
réfléchir, gérer, créer, dessiner, etc.
Il faut noter que la photocomposition
du bouquin a été réalisée par l’auteur
(Ilya Virgatchik) sur imprimante
laser... une méthode d’édition qui
tend & se généraliser !
TREMPLIN MICRO
NESTOR
Instructions Basic
APPLESOFT
OUS connaissez évidemment les 107 instruc-
tions du Basic Applesoft et vous savez qu’elles
correspondent plus ou moins (nous y revien-
drons plus loin) @ des routines installées 4
demeure dans une ROM (mémoire morte, si
vous préférez) de votre Apple. Le nom de cha-
que instruction est un mot réservé, c'est-d-dire que vous ne
pouvez pas I'utiliser comme nom de variable... et pas davan-
tage a l'intérieur d'un nom de variable (FOR=1 est interdit,
mais REFORME = 1 I'est aussi). Ces mots-clés du Basic Apple-
soft figurent tous dans une table qu'il est facile de lire 4 partir
de l'adresse $D9DO (jusqu’d $D25F). Détail amusant, cette
table commence par le mot... END. Et ce n’est pas une plai-
santerie ! Elle se termine par MIDS... et un beau zéro.
LE ROLE DE L'INTERPRETEUR
Cst I'interpréteur qui, par |'intermédiaire de la routine
PARSE ($D56D), attribue son numéro de code 4 chacune de
vos instructions Basic. Ce numéro ne peut étre inférieur 4 $80
(128) ou supérieur a $EA (234).
Comment procéde I'interpréteur ? II lit la table caractére par
caractére, non sans incrémenter son pointeur & chaque nou-
velle instruction... mais il y a un hic. Consultez plutat le début
de cette fameuse table :
EN DF OR N E
DOD@- 45 4E C4 46 4F D2 4E 45
DODS- 58 D4 44 41 54 C1 49 4E
Vous constatez que les caractéres s'y suivent sans aucune
interruption : END FORNE... sur quel critére l'interpréteur
se base-t-il pour savoir que la lecture d'un mot-clé est termi-
née... et que celle d'un autre va commencer ? Je suis sir que
vous auriez trouvé la solution sans explication !
Les lettres de chaque instruction sont toutes codées 4 partir
de la table ASCII normale (A=$41, B=$42, etc.), sauf la der-
niére qui est augmentée de $80 (128) et devient
donc ; A=$C1, B=$C2, etc. Ce renseignement suffit 4 notre
interpréteur pour s'y retrouver !
Quand le CODE de I'instruction (ou son numéro d’ordre, si
vous préférez) est connu, il est facile, pour I'interpréteur
(toujours lui !), de consulter une autre table (de $D000 4
$D0B1) pour y lire l'adresse de la routine Applesoft corres-
pondante, une adresse qu'il y trouve sur deux octets, comme
il se doit. Mais je suis persuadé que vous avez mentalement
fait un petit calcul dont le résultat vous chiffonne. Tenez ! je
parie que vous vous préparez déja 4 écrire 4 Tremplin Micro
pour prétendre (6 le vilain... ou l'affreuse Jojette) que Nestor
se moque de vous ?
Et oui : 2 octets multipliés par 107 instructions, cela nous
donne effectivement 214 octets ou $D6... or — voir plus haut
— la longueur de la table n'est apparemment que de 178
octets ou $B2... ce qui correspond 4 89 instructions. II existe
effectivement 18 instructions sans point d'entrée (de $C0 ou
192 & $D1 ov 209).
FAUSSE ET ADRESSE VRAIE
Mais ce n’est pas tout. Les adresses des 64 premiéres routi-
nes sont fausses. Comme je vous le dis. Elles ne deviennent
exactes qu’aprés leur avoir ajouté 1. Etrange, mais vrai.
Quant aux adresses des 25 derniéres, elles sont rigoureuse-
ment exactes. Nous n’allons pas nous en plaindre... et l'inter-
préteur pas davantage !
Tout cela n'est d’ailleurs pas bien grave puisque notre petit
programme va vous permettre, & partir du CODE HEXA ou
DEC de chaque mot réservé (n’oubliez pas, de $80 4 $EA) :
— d'afficher le nom de l'instruction (c’est le plus facile)
— son adresse positive... et négative (c'est parfois pratique)
— éventuellement de changer le mot-clé pour un autre de
méme longueur, a vos risques et périls bien entendu.
Je crois que vous voudrez tester la derniére "facilité” du pro-
gramme et je vous conseille, dans un premier temps (et
aprés avoir sauvegardé votre ceuvre sur disquette) de chan-
ger REM pour ***.
Lorsque ce sera chose faite, tapez un CTRL-C pour sortir du
programme sans RESET, puis un LIST qui vous prouvera que
tous vos REM sont bel et bien devenus des ***,.comme dans
le listage de Tremplin Micro. Attention ! un RESET rétablit
l'orthographe normale, sans aucune influence sur le pro-
gramme en mémoire d'ailleurs.
Et maintenant, suivez les explications données en regard du
listage. Amusez-vous bien ! NESTOR.
GUY-HACHETTE
sonangcnnvansesssencesersecoeseosssessessnnssscassuesrsessenaEs saeseecoeZsesesscescoeNeouRnoEeNeeeEenEe
ATTENTION !
Tapez un REM & la place de ***
Un simple RETURN vous don-
nera automatiquement la
valeur suivante (la premiére
étant $80 / 128).
Pour aller en avant, taper +
(plus) et ensuite des RETURN
successifs.
Pour revenir en arriére, taper
— (moins) et des RETURN.
Une valeur HEXA doit étre pré-
cédée du $ (dollar).
Une valeur DEC sera rentrée
sans signe particulier.
Pour remplacer un mot-clé par
un autre de méme longueur,
rentrer £MOT (ou diése-mot
avec un clavier QWERTY).
Le mot proposé doit compter le
méme nombre de caractéres
que le mot & remplacer.
seeecrasnnswanesecencoaneeD
TREMPLIN MICRO
10@ TEXT : PRINT CHR® (21): HOME
105 ONERR GOTO 340: ¥** Fin de programme avec CTRL-C
11@ GOTO 350: *%* Vers routines LM
115 INVERSE : PRINT " POINTS D’ENTREE DES ROUTINES APPLESOF
T ": NORMAL : POKE 34,3
120 PRINT "La table commence a |’adresse $D000 et le nu
méro de code de chaque routine est compris entre $80 &
SEA (128-234) ."
125 VTAB 18: FOR I = 1 TO 10: PRINT "___";: NEXT : PRINT
130 VTAB 20: PRINT " POUR UNE MODIFICATION: ":: INVERS
E : PRINT "£NOM": NORMAL
135 VTAB 22: PRINT " RETURN POUR VALEUR SUIVANTE"
140 R = 0:PM = 1
145 VTAB 8: INVERSE : PRINT "NUMERO DEMANDE";: NORMAL : INP
UT "> ";CODES
150 *** I] suffit de taper + ou - pour aller en AVANT ou en
ARRIERE
155 IF COS = "+" AND R < 107 THEN PM = 1:CO$ = “": GOTO 185
160 IF COS = "-" AND R > = 1 THEN PM = - 1:CO$ = “": GOTO 1
85
165 DI = 1: *#* Adresse + 1 pour les 63 premiers tokens
170 IF COS = "" THEN 185
175 *#% Si COS commence par £, changement de nom
180 IF ASC (CO$) = 35 AND LEN (CO$) - 2 = PEEK (24) THEN GO
TO 335
185 IF COS = "" THEN R= R + PM:D =R + 127: GOTO 225
190 IF LEN (CO$) < > 3 THEN 145
195 *** Si CO$ ne commence pas par un $ c’est une valeur dé
cimale (a priori)
200 IF ASC (COS) < > 36 THEN D = VAL (COS): GOTO 220
205 *#* Conversion valeur HEXA en valeur DEC
210 D = @:P = @: FOR I = 3 TO 2 STEP - 1:A% = MIDS (CO$,I.1
:A = VAL (AS): IF AS > "9" THEN A = ASC (AS) - 55
>
215 D
220 R
225 I
+ (A * 16 * P):P = P + 1: NEXT
D - 127: ##* R=rang (de 1 a 107...$80-EA...128-234)
FR < 1 THEN PM = 1:COS = "": GOTO 185: *#* PM forcé a
+1
IF R > 107 THEN PM = - 1:COS = "": GOTO 185: ¥%* PM for
céa-i
235 VTAB 8: HTAB 17: PRINT Ds: CALL - 868: HTAB 38: PRINT P
M;: IF PM = 1 THEN HTAB 37: PRINT "+"
*¥* 18 routines ne comportent pas de point d’entrée ($C
0-D1...191-209)
245 DR = D: IF D > 209 THEN DR = D - 18
250 *%* Ne plus ajouter 1 pour obtenir |’adresse des 25 der
niers points d’entrée (donc DI=0)
IF D > 191 AND D < 210 THEN DR = @:X = DR:Y = DR:DI = 0
: GOTO 270
260 ¥** Adresses des routines ($D000-SDOCF)
265 ADRESSE = 53248 + (2 * DR) - 256:X = PEEK (AD) + DI:Y =
PEEK (AD + 1): IF X > 255 THENX = 0@:Y=Y+1
270 POKE 7,X: POKE 6,Y
275 PRINT : VTAB 11: HTAB 8
230
240
255
=
7
ee
Routines Basic Applesoft (suite)
260 *** Liste des tokens ($D@D0-$D25F ou 53456-53855)
285 POKE 25,R: CALL 776:A2 = PEEK (9) * 256 + PEEK (8):Al =
A2 - PEEK (24)
298 ¥#%* Affichage du nom
295 FOR J = Ai TO A2: PRINT CHR® ¢ PEEK (J));: NEXT
300 x¥* Affichage de |’adresse décimale (+ ET -) et de l’ad
resse hexa
305 PRINT “ ";: IF NOT DR THEN INVERSE : PRINT “PAS DE POIN
T D’ENTREE";: NORMAL : GOTO 320
310 AF = PEEK (AD + 1) * 256 + PEEK (AD) + DI
315 PRINT AF" "AF - 65536" $";: CALL 768
320 CALL - 868
325 PRINT : GOTO 145
330 ¥¥*% Remplacement d’un mot-clé par celui de votre choix,
mais de longueur identique
335 P = 1: FOR J = Al TO A2 - 1:P = P + 1: POKE J, ASC ( MI
DS (CO$,P,1)): NEXT : POKE A2, ASC ( RIGHTS (CO$,1)) +
128: GOTO 220
340 TEXT : HOME : END
345 *#* Routines LM
350 FOR I = 768 TO 819: READ R: POKE I,R: NEXT
355 *%* Copie de $DQ@00-FFFF (ROM) en mémoire auxiliaire et
lecture de cette zone commutée sur 1a mémoire vive (ann
ulé par un RESET)
360 AS = "D000<DO00.FFFFM D823G": FOR X = 1 TO LEN (A$): PO
KE 511 + X, ASC ( MIDS (A$,X,1)) + 128: NEXT : POKE 72,
@: CALL - 144: POKE 49283,0: POKE 49283,0
365 ¥#* La ligne précédente est inutile si !’on supprime le
changement de nom
370 GOTO 115
375 DATA 165,6,166,7,32,65,249,96,162,0,134,24, 169,208,133,
8,133,9,160,0,161,8,201,128,144,14,230,24,165,24,197,25
240,15, 201,107,240,11, 160,255,200 ,230,8,208,2,230,9,20
8,227,132,24,96 e
La ligne 360 copie la mémoire
morte en mémoire vive et
commute la lecture de cette
zone sur la mémoire vive, ce
qui obligera l'interpréteur 4
lire vos éventuelles modifica-
tions... et @ en tenir compte.
Comme cela a été précisé
plus haut, un RESET rétablit la
lecture en mémoire morte.
*D@0@.D@B1 Dela 1’* dla 64°, adresse = adresse + 1 (exemple : $D86F = $D870... END).
DGGG- 6F DS 65 D7 FS DC 94 DP Da68- EB
Dee8- Bi DB 3@ F3 D8 DF El DB DO7G- 12
D@1G- SF F3 98 F3 E4 Fi DD Fi DO78- A4
DO18- D4 Fi 24 F2 31 F2 40 F2
D? 83 E7 C8 D8 AF DS
E3 7A E7 D4 DA 95 DS
Dé 69 Dé 9F DB 48 Dé
D@26- D7 F3 E1 F3 E8 Fé FD Fé De Ia 65° & la 89°, l'adresse est exacte
De28- 68 F7 6E F7 Eé F7 57 FC (TOKEN $D2 a SEA).
D@3@- 20 F7 26 F7 74 F7 6C F2 Dese- 96
DO38- SE F2 72 F2 76 F2 7F F2 bess- DE
D@40- 4£ F2 6A DY 55 F2 85 F2 DO9e- 8D
D@48- AS F2 CA F2 17 F3 BB F3 D@98- EA
DOS@- YE F3 61 F2 45 DA 3D D? D@AG- 64
D@S58- 11 DP C8 DF 48 DS F4 43 DeAB- ES
D@6@- 28 DP 6A DY DB DY 6D DB DeBe- 91
EB 23 EC AF EB @A 20
E2 12 D4 CD DF FF E2
EE AE EF 41. E9 69 EF
EF F1 EF 3A FO 9E FO
E7 Dé Eé CS E38 97 E7
Eé 46 E6 SA Eé 86 ES
sumunauasensenusosrcnonsunsunensoncesusoecesesensrsseeecoensesnssssesseonesssEesossesseosesseneensoERe
GUY-HACHETTE
Votre bibliotheéque
INFORMATIQUE
© Pratique des Apple, volume 4 (Editions Radio)*
Il m'a été impossible de vous annoncer la parution de cet
ouvrage dans le numéro 9 de Tremplin Micro et je le regrette : je
suis en effet persuadé qu'il aurait rendu d'immenses services 4
bon nombre de nos Lectrices et Lecteurs pendant les vacances
d'été.
Mais il n’est pas trop tard pour essayer de rattraper le temps
perdu. Ce quatriéme volet de la Pratique des Apple est consacré
au Basic compilé et au langage machine, et je vous assure qu'il
mérite de retenir votre attention. J.-C. Fantou, son auteur, sait y
expliquer, trés simplement, mais avec une rare maitrise, com-
ment court-circuiter l'interpréteur Basic pour accélérer les pro-
grammes et créer vos propres instructions Basic.
Vinitiation au langage machine est progressive et trés claire. Si
vous 6tes encore ignorant en la matiére, il est certain que vous
réaliserez, livre en main, de rapides progrés.
D'autres sujets retiendront également votre attention : les routi-
nes du mode graphique 4 double haute résolution, I'écriture en
page graphique de texte 80 colonnes. Quant au chapitre consa-
cré 4 l'apprentissage d'un assembleur tel que Toolkit, Lisa ou Big
Mag, il est évident qu'il satistera bien des curieux.
J’en aurai terminé quand j‘aurai précisé que J.-C. Fantou — qui
n‘en est pas 4 son coup d’essai puisque nous lui devons déja,
dans la méme excellente collection, Graphisme et Son — tient
évidemment compte des instructions du 65C@2. Chapeau !
par Guy HACHETTE
PRATIQUE
des
DU BASIC COMPILE AU LANGAGE MACHINE
* 226 pages /210 X 295 mm /150F
APPLE
Ho
To POOLE ° Manvel de l'utilisateur des Apple Ill (Editions Radio)*
MANU EL
155 % 240mm 7 240F
Ile
Si je vous dis que les louanges adressées au précédent conviennent
également 4 la méthode de Lon Poole (version francaise de J.-C. Fan-
tou... toujours lui !), vous allez probablement me soupconner d'avoir
recu d'icelui, pour prix de ma brosse 4 reluire, quelque ouvrage inter-
dit de la collection X. Détrompez-vous : je ne connais pas J.-C. Fantou
et pas davantage les responsables des Editions Radio, mais il se trouve
que je suis emballé par cette deuxiéme édition.
Pour ne rien vous cacher, j'ai commencé mon apprentissage avec la
premiere édition, il y ade cela quelques années. Elle m‘avait beaucoup
aidé, mais je me souviens avoir longuement séché sur certains de ses
chapitres.
Les actuels acheteurs d'un Apple, et notamment d'un Ilc ont beaucoup
de chance. Les meilleurs livres américains ont été traduits et il existe
de bons auteurs francais (il suffit de lire réguligrement cette rubrique
pour s’en convaincre).
Bref, je vous conseille ce Manuel de I'utilisateur. L'’éditeur prétend
que c'est une véritable “bible des Apple”. Je ne le démentirai pas.
D'abord parce qu'il traite — et fort bien — les points qui posent le plus
de problémes 4 nos Lectrices et Lecteurs : gestion des fichiers, pro-
grammation de la souris, son et musique, etc. Ensuite parce que, pour
une fois, 'imprimante n‘a pas été oubliée. Parfaitement : reconfigura-
tion du port numéro un, tabulation et mise en page, micro-
interrupteurs, définition de caractére 4 la demande... qui dit mieux ?
TREMPLIN MICRO
PRATIQ
GREFFE-LM
NESTOR
OMMENT dissimuler une courte routine LM en téte d'un programme en Basic ? Cette
question — 6 combien indiscréte ! — m‘a été posée par plusieurs Lectrices et Lecteurs de
Tremplin Micro. Voici une solution simple et amusante.
I s'agit ici de disposer d'un sous-programme capable de tracer rapidement un cadre (en
40 ou en 80 colonnes). Je me suis paresseusement contenté de reprendre celui paru dans
les pages 40 et 41 du numéro 7 de T.M. Commencez par le taper (encadré, en bas de la page)...
Marche @ sulwre : on ne peut plus simple !
© Connaitre la longueur exacte de la routine LM ; dans le cas pré-
sent, celle-ci est de 46 octets ($2E) ;
© Taper un NEW, puis le programme de la page 11, en veillant a
ce que le nombre d'astérisques de la ligne 100 soit rigoureuse-
ment égal a la longueur de la routine LM ;
© Passer en mode Moniteur par un CALL-151 ;
© Afficher le début du programme par 800.83F: normalement, s‘il
n'y a pas d’erreur de saisie dans les lignes 100 et 105, le résultat
doit étre identique 4 I'exemple donné ci-contre. Si ce n’est pas
le cas, vérifier le nombre d’astérisques ou rentrer une nouvelle
ligne en supprimant les espaces ;
© Sauver cette premigre mouture sur disquette (on ne sait
jamais !) ;
© Taper un BLOAD GREFCADRE, A$806 ;
© Refaire un CALL-151, puis 800.83F... et comparer au modéle ci-contre ;
© Lister le résultat... la ligne 105 aura changé d'aspect, comme le
montre mon exemple ;
© Run... et sigane marche pas, rerevérifier le tout car il y a forcé-
ment une erreur quelque part !
* Ne pas oublier de sauver cette ultime version et s‘offrir le luxe
de la soumettre a un copain (de préférence néophyte) qui
s‘interrogera longuement... et en pure perte sur le sens des
étranges instructions de la ligne 100 !. Votre toujours dévous : NESTOR
*800.83F AVANT BLOAD GREFCADRE
0800- 00 35 08 64 OO B2 2A 2A
@808- 2A 2A 2A 2A 2A 2A 2A 2A
@810- 2A 2A 2A 2A 2A 2A 2A 2A
@818- 2A 2A 2A 2A 2A 2A 2A 2A
0820- 2A 2A 2A 2A 2A 2A 2A 2A
0828- 2A 2A 2A 2A 2A 2A 2A 2A
@830- 2A 2A 2A 2A 0@ 47 08 69
0838- 08 BA E7 28 34 29 22 50
*
*800.83F APRES BLOAD GREFCADRE
0800- 00 35 08 64 00 B2 20 58
@808- FC AS @6 A2 51 20 ED FD
@810- CA D@ FA A2 16 20 62 FC
@818- 20 10 FC AS 06 20 ED FD
@820- 20 ED FD CA D@ EF A2 4E
0828- 20 ED FD CA D@ FA 86 25
0830- 8D F7 07 60 00 47 08 69
0838- @@ BA E7 28 34 29 22 50
x300.320 = GREFCADR
9300- 20 58 FC AS 06 AZ SI 20
@308- ED FD CA DO FA A2 16 20
@310- 62 FC 20 16 FC AS 06 20
@318- ED FD 20 ED FD CA DO EF
@320- A2 4E 26 ED FD CA Da FA
@328- 86 25 8D F7 07 60
BSAVE GREFCADRE, A$300, L$2E
Si vous étes débutant(e), rentrez cette courte
routine de la maniére suivante :
18 FOR I = 768 TO 813: READ R: POKE 1,R: NEXT
20 PRINT CHR$ (4)"BSAVE GREFCADRE ,A$380 ,L$2E”
38 DATA 32,88,252,165,6,162,81 ,32,237,253,202,2
08, 250, 162,22, 32,98, 252,32, 16,252,165,6,32,
237, 253,32, 237,253,202, 208,239,162, 78,32,23
7,253, 202,208,250 ,134,37,141 ,247,7,96
Terminez par un RUN
GUY-HACHETTE
sougugausquuneneconsenasunsuaueanescessensorsenenzsseseessssaeenaeconscensesseneaaceeenDeeceeswescuscen
Naturellement, le nombre
d'astérisques —_ pourrait
@tre supérieur 4 la lon-
gueur de la routine LM.
L'essentiel est qu'il ne soit
surtout pas plus petit !
QUESTION :
Le BLOAD GREFCADRE est-
il indispensable ?
Réponse : non. Quand la
routine LM est installée &
ladresse $309, il suffit de
passer en mode moniteur
par un CALL-151, puis de
réaliser un transfert de la
maniére suivante :
* 806 < 300. 32DM...
tour est joué !
et le
Vous constatez que votre
Apple se débrouille, plu-
t8t bien quand il s‘agit
d'afficher des inepties !
100 REM 9616369601600 GE HEHEHE
105 PRINT CHRS (4)"PR£3": PRINT
110 VTAB 10: HTAB 3: PRINT "<1> 40 COLONNES <2> 8@ COLONNES
“3: CALL - 198: GOSUB 150:N = PEEK ( - 16384) - 48
115 IF N <> 1 AND N < > 2 THEN 130
“120 POKE 6,160: CALL 2054: POKE 6,32: REM EFFACEMENT DU CADR
E ANTERIEUR EVENTUEL
125 PRINT N = N - 48: POKE 2060,1 + 40 * N: POKE 2087,(40 *
N) - 2: PRINT CHR$ (16 + ND: CALL 2054
130 IF N < > - 21 THEN 110
135 CALL 2054: VTAB 22: HTAB 3: PRINT "<1> MENU DE DISQUETTE
<2> TERMINE “:: CALL - 198: GET R$: PRINT : IF RB = "1"
THEN PRINT CHRS (4)"RUN MENU"
140 IF R$ = "2" THEN PRINT CHRS (21): HOME : END
145 GOTO 135
150 POKE - 16368,0: WAIT - 16384,128,127: POKE - 16368,0: PR
INT : RETURN
LA LIGNE 100 APRES LE BLOAD
100 REM X ERRORS ONERR § VTAB ) RETURN WITHOUT GOSUB h * = C
AN‘T CONTINUE VTAB § b ERRORS § ERRORS ONERR § RETURN WI
THOUT GOSUB h RETURN WITHOUT GOSUB h * = ILLEGAL QUANT
ITY VTAB & RETURN WITHOUT GOSUB h * = CAN’T CONTINUE DI
M % PLOT TYPE MISMATCH §*
Si vous examinez I'extrait de la mémoire de
votre Apple aprés le BLOAD... ou le TRANS-
FERT, vous constaterez que les octets $801-802
contiennent l’adresse de la ligne suivante, en
l'occurrence la ligne 105. Essayez donc de rem-
placer $35 (en $801), par $47 (lu & I’adresse
$835), puis listez votre programme : la ligne
105 a tout bonnement disparu, ce qui ne géne
en rien le fonctionnement de la routine. On ne
commencera plus par un PRE£3 et c'est tout !
Moralité : & la suite d'une ligne de REM, on
peut s‘offrir certaines libertés !
UN DERNIER CONSEIL
Vous serez peut étre tenté de supprimer le
REM... mais je vous promets que votre Apple
n‘aimera pas cela du tout. Par contre, si vous
désirez modifier le numéro de |'actuelle ligne
109, vous y étes autorisé. Il est contenu dans
l'adresse $803 ($64).
TREMPLIN MICRO
PROLONGEMENT...
A partir du méme programme, changez la ligne 100 pour :
100 TEXT : HOME
101 REM + 46 astérisques
Ajoutez un POKE 2049,61 a la ligne 105, et + 8 un peu par-
tout : CALL 2062 ; POKE 2068 ; POKE 2095... sans rien oublier
et surtout pas de taper un POKE 2049,61.
Ensuite : BLOAD GREFCADRE, A$80E Vous aurez ceci :
0806- 68 3D 88 64 06 89 3A 97
0808- 68 3D 68 65 86 B2 20 58
0810- FC AS 86 A2 29 28 ED FD
0818- CA DO FA A2 16 28 62 FC
8820- 28 18 FC AS 06 28 ED FD
In'y aplus de
ligne 101, mais le
programme
fonctionne.
Vous trouverez la
0828- 20 ED FD CA DO EF Az 26 igne 10! Por
0830- 20 ED FD CA Da FA 86 25 LOAD SIIIT,
0838- 8D F7 07 60 00 4F 08 89 Gsnrina de
0848-88 BA E7 28 34 29 22 50 nouveau aprés un
0848- 52 23 33 22 3A BA OB 9A RUN (le POKE de
8858- 08 la ligne 105 !).
W
ee
ILITAIRE
Patrick QUETTIER
Double haute résolution
sur imprimante EPSON
RAPPELS SUR LA DOUBLE RESOLUTION :
On obtient une définition de 560 points sur 192 points.
Elle occupe 8184 (=$IFF8) octets de 8192 (=$2000) a
16375 (=$3FF7) simultanément en RAM Apple (colonnes 7
413, 21 4 27, etc.), et en RAM carte 80 colonnes (colonnes
0 46, 144 20, etc.). Il est possible d'enregistrer sur dis-
quette un tel graphique. Un moyen trés simple est de le
stocker sous forme de deux fichiers binaires. Pour enre-
gistrer un graphique sous le nom N$= "DESSIN", par
exemple, il faut utiliser le petit programme suivant :
5 AS = "300 : 38 BO 01 18 A2 20 86 3D 86 43 A200 86 3C
86 42 CA 86 3E A2 3F 8D 00 CO 20 11 C3 8D 01 CO 60
ND7D2G"
6 FORI = 1 TO LEN(AS) : POKE 511 + 1, ASC(MIDS(AS,
1, 1)) + 128: NEXT: POKE 72,0: CALL—144
10 PRINT CHR$(4) "BSAVE"NS".IMP, A8192, L8184":.CALL
768 + 3: PRINT CHRS(4) “BSAVE"NS$".PAI,A8192,
18184"
On obtient ainsi deux fichiers binaires appelés DES-
SIN.IMP (colonnes 7 4 13, 21 & 27, etc.), et DESSIN.PAI
(colonnes 0 4 6, 14 4 20, etc.). De la méme facon, pour le
recharger en mémoire, il faut utiliser ce programme :
5 et 6 inchangées
20 PRINT CHR$(4) “BLOAD"NS".PAI,8192": CALL 768 :
PRINT CHRS(4) "BLOAD"N$".IMP,A8192"
Pour basculer I'affichage en mode graphique double hau-
tre résolution, il faut (le mode 80 colonnes étant déja mis)
utiliser la ligne suivante :
30 POKE 49246,0: POKE 49239,0: POKE 49234,0: POKE
49232,0
Pour avoir un mode mixte (4 lignes de texte en bas), il
faut remplacer 49234 par 49235.
Pour revenir au mode texte standard, il faut faire :
70 POKE 49233,0: POKE 49238,0: POKE 49247,0
L’Apple n‘a pas la possibilité de créer ses propres gra-
phiques (sous Basic) comme il le permet pour la haute
résolution standard (HPLOT, etc.)... Toutefois, les posses-
seurs d'une carte Chat Mauve, pourront utiliser le logiciel
ARLEQUIN (fourni avec FELINE) ou PURPLESOFT (fourni
avec la carte EVE) et travailler en double haute
résolution. Il faut remarquer que ces logiciels fonction-
nent aussi avec une carte 80 colonnes étendue (le DES-
SIN.1 de la disquette Tremplin Micro a été réalisé de cet-
te facon), mais que seul ARLEQUIN fonctionne sur le IIc !
UTILISATION DE LA ROUTINE DANS UN
PROGRAMME BASIC (précautions) :
Pour éviter tout conflit de mémoire entre le Basic, la
page graphique haute résolution et la routine en langage
machine, il est souhaitable de charger le Basic (par exem-
ple) au-dessus de la page graphique : c'est-d-dire & partir
de 16384 (=$4000). Sous DOS 3.3, cela laisse environ 21K
octets de libres pour le Basic et ses variables. On peut
obtenir ce résultat de 3 fagons :
— entrer au clavier POKE 103,1: POKE 104,64: POKE
16384,0 puis RUNer le programme basic.
— écrire un petit programme Basic qui lancera le pro-
gramme Basic principal (c'est le cas de DEMO.
LANCE).
10 POKE 103,1: POKE 104,64: POKE 16384,0: PRINT
CHRS(4) ; "RUN Programme principal”
— placer en téte du programme principal la ligne :
1 IF PEEK(104) <> 64 THEN POKE 103,1: POKE
104,64: POKE 16384,0: PRINT CHR$(4) "RUN
Programme".
UTILISATION DE LA ROUTINE DANS UN
PROGRAMME BASIC (mode d'emploi) :
La routine machine mise précédemment en place par
les lignes 5 et 6 est ici inutile car COPIE.HGRI6.EPS la con-
tient. Le programme Basic devra, dés le début, contenir la
ligne suivante (les numéros sont donnés 4 titre indicatif) :
10 PRINT CHRS$(4)"PRE3" : PRINT : PRINT CHR$(4) "BLOAD
COPIE.HGRI6.EPS”
Uobjet de cette ligne est d'initialiser la carte 80 colon-
nes et de charger en mémoire la routine en langage
machine. Il faut ensuite charger la page graphique 4
imprimer 4 partir d'une disquette. Voir plus haut l'exem-
ple de la ligne Basic numéro 20. On peut ensuite I’afficher
4 la vidéo (ligne numéro 30). Avant de lancer I'impres-
sion, il est nécessaire de régler deux paramétres de la
Sega saesenooesseenseernssseeneReseoo esses ONNOASeesTeRsCe Ese esaAE eee SECON ANT eeesoeseEEeTeeEeseeeeeeeneS
12
GUY-HACHETTE
routine binaire. On peut évidemment ne pas le faire et
laisser les valeurs par défaut déja présentes.
AQ POKE ENTREE + 13,X (avec X compris entre @ et 33).
Cela correspond 4 la tabulation horizontale du dessin
sur la feuille (0 = 4 gauche, 33 = @ droite). La valeur
prise par défaut est X = 0 (réglage |).
50 POKE ENTREE + 14, Y avec Y = 0 (dessin en positif)
ou Y = 255 (dessin en négatif). La valeur prise par
défaut est Y = 0 (réglage O).
Il faut alors lancer I'impression :
60 PRINT CHR$(4) "PREI" : PRINT : POKE 1657,80 : CALL
ENTREE : PRINT CHRS(4) "PRES"
On peut ensuite remettre la page texte 4 |'écran
(ligne numéro 70 page’12). En utilisant CALL ENTREE + 3
on exécute une copie d'écran 4 |’échelle deux.
Voici, comme exemple, un (mini) programme qui uti-
lise la routine pour imprimer un graphique appelé DESSIN
en négatif et a droite de la feuille :
1 comme ci-dessus
10 D$=CHRS(4) : PRINT D$"PR£3" : PRINT D$"BLOAD
COPIE.HGRI6.EPS"
15 N$="DESSIN" : ENTREE = 2048
20 PRINT D$"BLOAD"N$".PAI, A8192" : CALL ENTREE + 6
: PRINT D$"BLOAD"N$".IMP, A8192"
30 POKE 49246,0 : POKE 49239,0 : POKE 49234,0 : POKE
49232,0
40 POKE ENTREE + 13,33
50 POKE ENTREE + 14,255
60 PRINT D$"PRE1" : PRINT : POKE 1657,80 : CALL ENTREE
+ PRINT D$"PRE3"
70 POKE 49233,0 : POKE 49238,0 : POKE 49247,0
Aprés l'impression, |'imprimante se remet en interli-
gne 1/8° de pouce. Pour obtenir 1/6* de pouce, il faut
faire POKE ENTREE + 12, 178 avant de lancer la routine
(réglage G). On peut aussi choisir de loger la routine &
une autre adresse. Pour cela, il faut assembler le fichier
COPIE.HGRI6.EPS.S aprés avoir défini ORG avec la nou-
velle valeur choisie pour ENTREE.
NOTE DE YVAN KOENIG :
Tremplin ne possédant pas d'imprimante EPSON, j‘ai
616 amené 4 intervenir sur le programme de. Patrick
QUETTIER pour en contréler le bon fonctionnament.
Aucun probléme si ce n’est avec la routine de charge-
ment qui, chargeant directement DESSIN.PAI en mémoire
auxiliaire provoquait des bruits désagréables au niveau
du lecteur de disquettes ce qui m‘a conduit 4 introduire la
routine de transfert MAIN <—» AUX.
Il m‘a semblé intéressant de mettre en ceuvre quelques
modifications annexes :
* ajout de l'option taille 2
» change des positions des modules programme et
table d’adresses afin de permettre de coupler cette
routine avec un programme relogeur semblable 4
celui de PRO.TYPC (Tremplin Micro n°9) pour placer
la routine entre ProDOS et ses buffers.
Pour les lecteurs ne disposant pas de la disquette
Tremplin, j'ai ajouté deux programmes d'aide.
Si vous tapez directement le code objet, FAIT.
ADRESSE va générer pour vous la table d’adresses, il vous
suffira aprés avoir tapé la partie programme de faire
BLOAD ADRESSE puis BSAVE COPIE.DHGR.EPS, A$800,
L$300.
Si vous saisissez la source en assembleur c'est FAIT.
T.ADRESSE qu'il vous faut. Si vous travaillez avec MERLIN,
supprimez la ligne 125 puis faites RUN FAIT.T.ADRESSE.
Vous pourrez charger la source de la table sous MERLIN
en faisant appel 4 la commande R(ead) ADRESSE (ne pas
taper le préfixe T.). Si vous travaillez avec un LISA (1.5,
2.5, 2.6) la ligne 105 est pour vous. Créez votre ficher
T.ADRESSE par un run FAIT.T.ADRESSE. Sous LISA il vous
suffira de faire CTRLD EXEC T.ADRESSE pour voir le code
source se mettre en place automatiquement.
Pour les lecteurs qui souhaitent travailler avec la rou-
tine entre ProDOS et ses buffers nous publions un module
relogeur qui permet d'effectuer le déplacement de la rou-
tine en corrigeant les adresses qui doivent |'étre. Ce
module peut étre configuré en relogeur simple comme ici
ou en relogeur d'une commande externe comme
PRO.TYPC de Tremplin n°9.
Dans le but d’éviter la publication répétitive du méme
module, celui-ci a été concu de fagon 4 rendre son adap-
tation @ chaque cas aussi simple que possible. Aprés
avoir tapé le code faites BSAVE RELOPROI0, A$60D5,
1$12B. Pour utiliser avec un module commande externe, il
faudrait modifier la zone 612D-613B et faire 615D: 8D 07
BE (STA EXTRNCMD + 1). Par ailleurs :
60D6 contient le nombre de pages utilisées par la routine
6148 et 614C = ENDPROG-1 (octet bas/octet haut)
6150 et 6154 ENDALL-1
619D et 61Al ENDADRS-1 ...... serena
619A vaut 90 s'il y aune table d’adresses, BO sinon
61B5 vaut 90 s'il y aune table de données, BO sinon
61C0/61C) peut nécessiter une adaptation.
Le module actif nécessite quelques ajustements. Je
suppose que vous avez sauvé RELOPROIO et COPIE.
DHGR.EPS. Faites BLOAD RELOPROIO puis BLOAD
COPIE.DHGR. EPS, A$6200.
Maintenant attention, on ajuste :
Placez $62 en 6202. 6205, 6208, 620B, 6242, 624B, 624E,
6251, 625B, 6261, 626B, 62B9, 62BF, 62E2, 62F0, 6300
Placez $63 en 6268, 6272, 6278, 627D, 6282, 6299,
62BC, 62E7, 62FD, 6303, 6318, 631D, 632A
Placez $64 en 629E
$6257: 78 63
$62F1: 00 00 00 00 00 00 00 00
$6378: EA EA 26 FF 2F 62 30 63
BSAVE RELCOPYDHGREPS, A$60D5, 11067 qu'il faudra
transférer sous ProDOS avec le FILER.
$625D: 7C 63
Pr ela lalatelatatalatelataiaiedaaialalealalalalatal
TREMPLIN MICRO
13
JERI AE
*
* Copie double haute-résolution
*
Imprimante Epson paralléle
76190 Yvetot
x KK EK KK RK
*
*
* Patrick QUETTIER
*
*
*
JHE EE IEE
* Assembleur MERLIN BIG-MAC * Révision 25/04/86
HII HE
“Début : 2048 $08.00
*Fin: 2815 $O0A.FF
*Longueur: 768 $03.00
‘Table: 2432 $09.80
“Longtable: 384 $01.80
JH Ee
Wariables utilisées par le programme
* RAM MAIN = RAM carte mére
SSSRRPESSASVSLLLCLRRWWNNNNNNNNNNE EERE Ee eR EE OODYAMRONE
WDNAATRON=-SVDIAUBRWONE SVDIAGHRANK SQVBIATAON-O
* RAM AUX RAM carte 80 cols
Slot = 1
FLAG = 6 +1-RAM AUX (1) - RAM MAIN (0)
csw = $36 32-Adresse sortie caracteres
START = $3C
END = $3E
DEST = $42
SAUVTAB = 237 +1-Sauvegarde de VTAB
COBITVT = 239 +1-Compteur bits de COLONNE
HGR = 249 32-Adresse en page HGR de la RAM
VTAB = 251 +1-Tabulation verticale 0 a 191
COBITHT = 254 31-Compteur bits octet RAM HGR
COLONNE = 255 31-Colonne a imprimer
ENTREE = $800 + 2048 en décimal
STOR80OF = $C000
STORE80 = $C001 iUtilisation pages carte 80
TXTPAGE1 = $C054 sCommute RAM MAIN
Sivous TXTPAGE2 = $COSS sCommute RAM AUX
n‘utilisez LORES = $C0S6 ;Page texte
pas un HIRES = $C0S7 sPage HGR
assembleur, 59 crour «=~ SFDBE
vous n‘avez 51
rien 4 taper S21 EEE I
dans cette 53 ORG ENTREE
page... 54 JES E
14 GUY-HACHETTE
0800:
0803:
0806:
0809:
o80c:
osoD:
O80E:
O80F:
0810:
0812:
0813:
0815:
0817:
0819:
081B:
081D:
O81F:
0820:
0822:
0824:
0826:
0829:
082C:
082F:
0830:
0832:
0833:
0835:
0837:
0839:
083B:
083D:
O83E:
0840:
0843:
0845:
0847:
4c
4c
4c
4c
BO
00
00
88
RRSRRVS
ag
48
A2
AO
Ag
DO
Ag
48
Ag
8D
A2
AO
Ag
30
3B
oF
12
03
00
oD
04
60
04
08
08
08
888
08
*Début du programme - Appe! par le basic
JMP = TAILLE1 3 CALL ENTREE
JMP = TAILLE2 3 CALL ENTREE+3
JMP MAIN_AUX ; CALL ENTREE+6
JMP AUX_MAIN ; CALL ENTREE+9
* Table de 3 octets pouvant rester dans
* la zone programme en cas d’adjonction
* d’un module relogeur qui croirait
* y trouver un BCS ... suivi d’un BRK.
INTERLIG DFB "0"
MARGE DFB OO
MASQUE DFB 0
JH IIT IE
MAIN_AUX SEC
BCS MOVER ;Toujours
AUX_MAIN CLC
MOVER LDX £>$2000
STX START+1
STX DEST+1
LDX £<$2000
STX START
STX DEST
DEX sX=FF = £<S3FFF
STX END
LDX £>$3FFF
STX END+i
STA STORS0OF
JSR $C311 sCopie MAIN <-> AUX
STA STORES80
RTN RTS
JET IO
TAILLE1 LDA £2-1
PHA scompteur pour modif
LDX £8
LDY £<560
LDA = £>560
BNE AJUSTE sToujours
TAILLE2 LDA £4-1
PHA
LDA £0
STA MARGE sMarge nulle si double
LDX £4
LDY £<1120
LDA £>1120
(suite page 16)
sRéglage POKE ENTREE+i2, 176/178
sRéglage POKE ENTREE+i3.marge
sRéglage POKE ENTREE+14, 0/255
TREMPLIN MICRO
15
——~seseeeenensanenessssssseenennanenssesseneeneeensnenssensensnneeresensenanesennenetereseeeeeensess
108
0849: SE 92 08 109 AJUSTE STX LBL1+1 EPSON .
084C: BC 7A 08 110 STY LBL8B+1 (suite)
O84F: 8D 7F 08 111 STA LBL8H+1
0852: 68 112 PLA
0853: AA 113 TAX
0854: AO O01 114 LDY £2-1
0856: BD Fi 08 115 gL LDA VARITBL1,X
0859: 99 AD 08 116 STA LBL31,Y
Ossc: BD F5 08 117 LDA VARITBL2,X
O8SF: 99 BE 08 118 STA LBL32+1,Y
0862: CA 119 DEX
0863: 88 120 DEY
0864: 10 Fo 121 BPL §L
122
0866: 20 0A 09 123 JSR INITIMP
124
125 #-----~----------------_.
126 *Impression de la Page HGR
127
0D 08 128 LBLO LDX MARGE sMet la marge de début de ligne
08 129 BEG LBL8 3S1 marge nulle
AQ 130 LDA og"
2009 131 LBLO JSR PRINT2
132 DEX
FA 133 BNE LBL9
134
0876: 20 26 09 135 LBLe JSR ESC_L
0879: A9 30 136 LBL8B LDA £<560 $1120 si double (octet bas)
087B: 20 2D 09 137 JSR PRINT1
O87E: AY 02 138 LBL8H LDA = £>560 $1120 si double ‘octet haut)
0880: 20 2D 09 139 JSR -PRINT1 spour 560 aiguilles (1120)
140
0883: AS FB 141 LDA VTAB sSauvegarde VTAB
0885: 85 ED 142 STA SAUVTAB
0887: AO O1 143 LDY £1
0889: 84 FE 144 STY COBITHT sCOBITHT=1
O88B: 84 06 145 STY FLAG 3 FLAG=1
O88D: 88 146 DEY +Y=0 CHTAB par le registre)
O88E: 2C 55 CO 147 BIT TXTPAGE2 Commute RAM carte 80
148
0891: A? 08 149 LBL LDA £8 sCOBITVT=8 (4 si mode double)
0893: 85 EF 150 STA COBITVT
151
0895: AG FB 152 LBL2 LDX VTAB sHGR=adresse début ligne VTAB
0897: BD 80 09 153 LDA —GBAS_HI,X
O89A: 85 FA 154 STA HGR+1
089C: BD 40 0A 155 LDA GBAS_LO,X
O89F: 85 FO 156 STA HGR
157
O8A1: Bi FO 158 LDA CHGR),Y sA=octet page HGR en CHTAB, VTAB)
O8A3: A6 FE 159 LDX COBITHT *Récupére bit COBITHT de A
O8AS: 4A 160 LBL3 LSR A
O8AG: CA 161 DEX
16 ; GUY-HACHETTE
] O8A7: DO FC 162 BNE LBL3
| O8A9: 08 163 PHP
| O8AA: 26 FF 164 ROL COLONNE sAjoute ce bit a COLONNE
] O8AC: 28 165 PLP
| O8AD: EA EA 166 LBL31 HEX EA,EA +ROL COLONNE en mode double
O8AF: E6 FB 167 INC VTAB sCalcule prochain VTAB (+1)
O8B1: C6 EF 168 DEC COBITVT ;Continue pour COBITVT=8 a 1
08B3: DO EO 169 BNE LBL2
170
O8BS: AS FF 171 LDA COLONNE sEnvoie COLONNE a 1’ imprimante
08B7: 4D OE 08 172 EOR MASQUE :Réglage 0
O8BA: 20 2D 09 173 JSR PRINT1
O8BD: 20 2F 08 174 LBL32 JSR RIN 3JSR PRINT10 en mode double
175
O8CO: E6 FE 176 INC COBITHT ;COBITHT=COBITHT+1
08C2: AS FE 177 LDA COBITHT
08C4: C9 08 178 CMP £8
08C6: 90 OF 179 BCC LBL4 : COBITHT<8 continue meme octet
180
08C8: A? O1 181 LDA £1
O8CA: 85 FE 182 STA COBITHT
O8CC: ES 06 183 SBC FLAG
O8CE: 85 06 184 STA FLAG
° 185 ;O0n passe en RAM MAIN pour
O8D0: FO 0S 186 BEG LBL4 e meme HTAB si FLAG=0
187 :O0n passe en RAM AUX pour
08D2: ca 188 INY sHTAB=HTAB+1 si FLAG=1
08D3: CO 28 189 CPY £40
O8D5: FO 0c 190 BEQ LBLS 3Cas HTAB=40 ligne suivante
191
08D7: AS ED 192 LBL4 LDA SAUVTAB 3Cas continue meme ligne
O8D9: 85 FB 193 STA VTAB sRécupére VTAB
O8DB: A6 06 194 LDX FLAG :;Commute la page FLAG
O8DD: 9D 54 CO 195 STA TXTPAGE1,X
O8EO: 4C 91 08 196 IMP =LBLI
197
O8E3: A? 8D 198 LBLS LDA = £13+$80 3CR
OBES: 20 20 09 199 JSR PRINT2 sfin de la ligne
O8E8: AS FB 200 LDA VTAB ;Continue pour VTAB=0 a 191
O8EA: C9 CO 201 CMP £192
OBEC: FO OB 202 BEQ FIN
O8EE: 4C 69 08 203 JMP = LBLO
204
20S 1699898 EE EEE
206
O8F1: EA EA 207 VARITBLi HEX EA,EA + NOP NOP en mode simple
O8F3: 26 FF 208 ROL COLONNE + si mode double
209
O8FS: 2F 08 210 VARITBL2 DA RTN 3 JSR RTN en mode simple
O8F7?: 30 09 211 DA PRINT10 : JSR PRINT10 si mode double
212
2191 III IIE
214 * Tout ce qui suit fonctionne avec (suite page 18)
TREMPLIN MICRO 7
EE EEEEESSS'S'S;: S$»
“~-ensenernennneennrnnenenennnennnenensesenttentnestscesentererterenteeeeeeeeeeee
215 * IIE ou /e et Imprimante paralléle EPSON
216 * Il serait nécessaire de modi fier
217 * pour //c et imprimante série EPSON
218 ELLLLLLLLLILL TT TTT TT TTT ttt
219
220 Fin - Retour au basic
221
O8F9: AS 9B 222 FIN LDA £27+$80 sImprimante remise en interligne
O8FB: 20 20 09 223 JSR PRINT2 sstandard
O8FE: AD 0C 08 224 LDA —_INTERLIG
0901: 20 20 09 225 JSR PRINT2
0904: 2¢ 56 co 226 BIT LORES
0907: 4C 8E FD 297 JMP = CROUT
228
229 JES IIe
230
231 INITIMP
090A: A® O90 232 LDA £0 ;VTAB=0
090C: 85 FB 233 STA VTAB
O90E: 8D 01 co 234 STA STORE80
0911: 2C 57 co 295 BIT HIRES
0914: A 9B 236 LDA £27+880 sInitialisation de 1’ imprimante
0916: 20 20 09 297 JSR PRINT2 iInterligne m=8
0919: AO ci 238 LDA £"A"
091B: 20 20 09 239 JSR PRINT2
O91E: AO 88 240 LDA = £8+$80
241
0920: 2¢ 54. co 242 PRINT2 BIT TXTPAGE1
0923: 6C 36 00 249 JMP = (CSW)
244
245 ELE LLLLLLELELEL TT LT TTT TTT
246
0926: A? 1B 247 ESC_L LDA £27 sESC
0928: 20 2D 09 248 JSR PRINT1
092B: AS 4c 249 LDA £’L’ smode double densité
250
251 * Saut a 1’imprimante EPSON paral léle
252
092D: 2C 54 co 253 PRINT! BIT TXTPAGE1
0930: 2c c1 C1 254 PRINT1O BIT Slot%*$100+8C0C1
0933: 30 FB 255 BMI PRINT10
0935: 8D 90 co 256 STA Slot *$10+8C080
0938: 60 257 RTS
258
259 bbb LELELELLLLLELLL LLL TTT TTT)
260 «
261 « Logiquement, la carte EPSON NON graphique
262 * doit fonctionner également
263 *% cf: POM’S 17
264 * On laisse de la place pour les
265 * modifications pour sortie série
266 #*----------
0939: 00 00 00 267 DS $980-%
18 GUY-HACHETTE
098C: 00 00 00 00 00 00 00
0944: 00 00 00 00 00 00 00
094C: 00 00 00 00 00 00 00
0954: 00 00 00 00 00 00 00 00
095C: 00 00 00 00 00 00 00 00
0964: 00 00 00 00 00 00 00 00
O96C: 00 00 00 00 00 00 00 00
0974: 00 00 00 00 00 00 00 00
097C: 00 00 00 00
0 SUITE
° DELA
PAGE 18
i]
0
ti)
Et maintenant, suivant que vous utiliserez ou
non un assembleur, tapez l'un de ces deux
programmes d'aide (lire page 13).
FAIT.ADRESSE
1 REM "FAIT.ADRESSE
10 PRINT CHR (21) A455
20 TEXT : HOME 1C5A
30 HGR : TEXT 7854
40 VTAB 10: PRINT "PATIENCE, JE CO
NSTRUIS LA TABLE" 037E
50 Di = 2432:D2 = Di + 192 1E69
60 FOR I = 0 TO 191: HPLOT 0,1 4298
70 POKE Di + I, PEEK (39) AFOA
80 POKE D2 + 1, PEEK (38) 1D0A
90 NEXT 0582
100 PRINT CHRS (4)"BSAVE ADRESSE,A
$980 ,L384" D14B
FAIT.T.ADRESSE
1 REM "FAIT.T.ADRESSE
10 PRINT CHR (21) A455
20 TEXT : HOME 1C5A
30 HGR : POKE - 16302,0: POKE -
16303,0: REM “Retour en TEXT O1BA
40 VTAB 10: PRINT "PATIENCE, JE CO
NSTRUIS LA TABLE" 037E
50 Di = 16384:D2 = D1 + 192 65A4
60 FOR I = 0 TO 191: HPLOT 0,1 4298
70 POKE Di + I, PEEK (39) AFOA
80 POKE D2 + I, PEEK (38) 1D0A
90 NEXT 0582
100 POKE 768,169: POKE 770,76: POKE
771,218: POKE 772,253 CA06
110 Ci = 768:C2 = 769:D$ = CHR (4
) EDEC
115 PA = 0:X = Di: PRINT D$*MONCO" F684
120 PRINT D$"OPEN T.ADRESSE": PRINT
D$"WRITE T.ADRESSE" 4815
125 PRINT "INS": REM "Pour LISA, in
utile avec MERLIN 90E8
130 PRINT “GBAS_HI = x" EAB2
140 FOR I = 0 TO 23: PRINT “ HEX “; ED88
150 FOR J = 0 TO 7: POKE C2, PEEK (¢
X):X =X + 1: CALL Ci: NEXT OESB
160 PRINT : NEXT 6576
170 PA = PA + 1: IF PA= 1 THEN PR
INT "GBAS_LO = ¥": GOTO 140 BASE
210 PRINT D$"CLOSE* DBDC
220 PRINT D$"NOMONCO" 4B7F
DOUBLE HAUTE RESOLUTION SUR IMPRIMANTE EPSON continue page 20.
Offrez-vous 31 routines
Vous avez souvent besoin de routines en langage machine
pour compléter I’APPLESOFT, mais votre page 3 débor-
de? Ne vous énervez pas, AMPERELO est la avec ses 31
routines RELOGEABLES (plus de probleme d’im-
plantation !) ;
PRINT USING aux normes francaises, tri rapide, Input
contrdlé, recherche dans un tableau, position d’une sous-
chaine dans une chaine, remplacement d’une sous-chaine
par une autre dans une chaine, SWAP de variables ou de
tableaux, garnissage de tableaux, DIMDEL, IF THEN ELSE,
GET numérique contrdlé, PEEK et POKE sur deux octets,
mises au point par un spécialiste :
Yvan KOENIG
ils sont tous la. Et cela sans vous obliger a étudier le lan-
gage machine.
MOSAIQUE vous permettra en outre de couper-coller
les modules dont vous aurez besoin.
En prime, LECTURE.SOURCES vous servira a lire sans
assembleur, toutes les sources MERLIN/BIG/MAC. II
vous permettra également de transférer en mode TEXT
les sources binaires de MERLIN pour en autoriser le trai-
tement sous ProCODE.
Présentées en format DOS 3.3. les routines peuvent étre
converties pour tourner sous ProDOS.
TREMPLIN MICRO
EPSON aie:
LA ROUTINE DE PATRICK QUETTIER est destinée 4 étre incorporée, pour son utilisation,
dans un programme principal en Basic. Cette routine réalise une copie sur imprimante
d'une page graphique double haute résolution (560 points par 192 points).
Son fonctionnement nécessite la configuration suivante :
° Appel Ile équipé d'une carte 80 colonnes étendue (+ 64 K) ou d'une carte
“FELINE” ou "EVE" Le Chat Mauve (80 colonnes couleur + 64 K).
© Imprimante EPSON MX-8@ F/T type Il ou FX-80.
e Interface imprimante : carte graphique EPSON (ROM B.APL ou D.APL).
Avec une carte équipée d'une ROM E.APL ou YK.APL on peut utiliser PRINT
CHR(9) "80N" au lieu de POKE 1657,80 pour supprimer I’écho écran. II semble
que l'on puisse également utiliser la carte EPSON non graphique.
Remarque : les premiers Apple /le (révision A) ne peuvent travailler en double haute
résolution (consulter APPLE, il y avait une procédure d’échange lors de |'introduction
de la révision B). Moyennant quelques modifications des commandes imprimantes, la
routine fonctionnerait sur un Apple llc... & condition de I'équiper d'un adaptateur
série-paralléle pour I'imprimante EPSON !
Etvoici RELOPROI1G (mode d'utilisation page 13)
[ASL A EE SS
S005: A9 03 20 FS BE 9@ 4E AG 14 B9 ED £E5EBS Naturellement,
6GE: 61 26 ED FD 88 10 F7 4C 00 BE 84 15 44 28 BS 14 c£4ps9 Vous ne devez pas
SOF: G8 2A 16 15 64 2A 15 15 08 2A 04 15 G4 2A 15 14 FEC757 — recopier la signature
6100: 08 28 04 15 64 2A 15 15 08 2A 15 15 08 2A 15 15 ee4i5i de chaque ligne
$110: 68 2A 15 15 84 2A 85 15 @8 2A BS 15 84 2A 15 14 cea5q7 _ (derniére colonne).
6120: 08 28 05 15 64 2A 15 14 8G 28 85 43 85 FE AP 08 FE8AC9 Vous pourrer vérifier
6130: 85 FD FG 87 20 2C FE 40 EA EA EA A? 80 85 3C 85 FEEFDB rexaciitude
6140: 04 AP 62 85 3D 85 85 AI 7B 85 3E AP 63 85 SF A FEAREE go votre
6150: FF 85 06 AP 44 85 87 DB AY 84 85 42 EA EA EA 38 ££0341 programme
6160: E5 04 85 02 AS 43 E5 G5 85 03 AB 9 BI 3C 48 29 £69308 on ctilisant
$170: 03 AB 48 4A 4a AA BD EA 60 88 30 84 4A 4A DB FI £62771 la disquette
6180: 29 63 AA AG BG EO 02 96 85 CB 20 C2 61 88 B1 3C ££3A40 que Tremplin
$198: 91 42 20 B4 FC CA 18 Fé 90 D2 90 19 AP 7F 85 3E £61469 Micro met d votre
61A0: AP 63 85 SF 20 C2 61 A2 G1 B1 3C 91 42 20 B4 FC £ECE46 disposition
61B0: CA 10 Fé 90 EF 90 80 AS 06 85 3E AS 07 85 3F 4c ££D589 _(lisez ace propos
S1CO: 34 61 AS 06 D1 3C C8 AS 87 FI 3C 90 1A 8B AS B4 £64009 le message de notre
41D8: D1 3C C8 AS 45 F1 3C BG GE 88 B1 3C 65 62 91 3C ££1413 ami Yvan KOENIG,
S1E0: C8 B1 3C 65 43 91 3C BB 6¢ BD 87 C5 C3 CI CC DB FEDCCR page 2 du précédent
61F8: AB C5 C4 AB D3 C1 DB AG C1 AB D9 A? CE ABCC C9 c£9681 numéro).
BSAVE RELOPROIG, A$60D5, L$12B e
seusasnEeressnessnosEsasesouoseeeeeneecesEeseAsaesEEEeeDEesEEeneeseeRREseseEe Ss wAseTeDssRazesceoReeeeeS
20 GUY-HACHETTE
sasstecasseeessensensnencanunSEnEnsntneesnecanansssnanaanenasanesSeesseeecnnaesanseacaseneensntsnene
VERSION MODIFIEE (a a suite de RELOPROIG)
Si vous désirez 6200: 4C 38 62 4C 3B 62 4C OF 62 4C 12 62 BO 80 00 38 fe2a20
utiliser votre 6210: BO 81 18 AZ 20 86 3D 86 43 A2 BB Bd 3C Bd 42 CA ce2G00
routine de 6220: 86 3E A2 3F 86 3F 8D 08 CO 20 11 C3 BD 1 CO 68 feus9
recopie d'écran, $238: AI G1 48 AZ OB AB 30 AP G2 DO GE AP B3 48 AI 00 fr 4992
Vous serez sans. 9248 8D QD 62 A2 84 AB 60 AP 04 BE 92 42 BC 7A 62 BD éFiDcs
6250: 7F 62 68 AA AB B1 BD 78 63 99 AD 62 BD 7C 63 99 ce2ng9
doute amené 6260: BE 62 CA 88 18 FO 20 8A 63 AE OD 62 FO 88 AI AB eepasD
4 la reloger 6270: 20 20 63 CA D@ FA 20 26 63 A 30 20 2D 63 AI O2 f69714
grace a 6280: 26 2D 63 AS FB 85 ED AG 81 84 FE 84 @6 88 2C 55 feou7e
RELOPROIO. 6290: CO AI 68 85 EF Ad FB BD 88 63 85 FA BD 40 64 85 crp7a8
6200: F9 Bi F9 Aé FE 4A CA DO FC 08 26 FF 28 EA EA Eé £61296
lisexdlars 6280: FB Cé EF D@ E@ AS FF 4D GE 62 20 2D 63 20 2F 62 fe4e22
les explications 62C@: E6 FE AS FE C9 08 90 OF AP 81 85 FE ES 06 85 06 eer2%q
d'Yvan KOENIG, 6208: F@ 85 C8 C8 28 FO BC AS ED 85 FB AS 06 9D 54 CO ceria
E 62E@: 4C 91 62 AY BD 20 20 63 AS FB C9 CO FO OB 4C 69 eecDr!
page 13 et 62F8: 62 08 G8 G0 G8 BO BO BB OB AY 9B 20 20 63 AD OC f62702
moubliez pas que 439g: 62 20 20 63 2C 56 CO 4C BE FD AI 00 85 FB BD O1 ecoans
cette version . 6310: CO 2C 57 CO AI 9B 26 26 63 AY C1 20 20 63 AP BB ecdE2s
travaille sous 6320: 2C 54 C@ 6C 36 68 AY 1B 20 2D 63 AP 4C 2C 54 CO eeesan
ProDOS. 6330: 2C C1 C1 30 FB 8D 98 CO 48 0 00 00 G0 00 G0 G0 ccosis
6340: 80 00 08 04 00 86 00 28 0 0 a2 0 B0 0 00 OB ccoce0
Pour vous aider $358: 80 06 00 82 G0 G8 G8 88 00 BO GB 20 BO 0G 00,00 scon00
voici lo routine. 63608 88 88 06 28 06 08 G0 G0 00 Gd 00 G0 a0 ae a0 Ge coc00
6370: 00 80 68 48 G8 00 BA BG EA EA 26 FF 2F 62 30 63 cen91D
COPIE.DHGREPS 359; 20 24 28 2C 30 34 38 3C 20 24 28 2C 30 34 38 3C 61 4c0
avec les . 6398: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D ccarre
modifications 63A0: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A BE ce2000
indiquées 63B0: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F ce0si9
page 13... 63C0: 20 24 28 2C 30 34 38 3C 20 24 28 2C 30 34 38 3C cci4ce
et les signatures 63D6: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D eea7re
de contréle. 63E8: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A 3E fe 2ane
63F@: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F feadia
6400: 28 24 28 2C 38 34 38 3C 20 24 28 2C 3@ 34 38 3C Fei4ce
6410: 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D cearre
6420: 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A 3E fe2an0
6430: 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F feadio
6448: 06 68 00 88 68 00 20 00 80 88 88 8A 88 8B 8B BO FepNces
6450: 08 66 G0 60 86 00 80 48 8A 80 8@ 8A 8B 8A 80 BO FeDcED
6460; 06 88 00 00 00 8@ 00 06 8A 8A 8@ 86 80 8B 8A BO FeDceE
6470: 08 08 80 06 06 80 GO G8 84 88 86 88 8A 8A BA 8A FeDcee
6480: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB ff 2580
6490: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB fF 2500
64AG: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB £6 2500
64B0: 28 28 28 28 28 28 28 28 AB AB AB AB AB AB AB AB ff 25K0
64C0: 5@ 5@ 58 58 5@ 5S@ 5@ 5@ DA DBO DO DA DO DO DA-DO ceanee
6408: 5@ 5@ 5@ 5@ 5@ 5@ 50 5@ D@ DA DB DA DO DO DA DO Feanee
6460: 5@ 56 50 5@ 5@ 50 5@ 5@ D@ DO DA DA DO DO DO DO Keane
64F0: 5@ 50 5@ 56 5@ 5@ 5@ 5@ DA DO DB DA DO DO DO DO Feapee
Pour sauver le tout : BSAVE RELCOPYDHGEPS, A$60D5, L1067
TREMPLIN MICRO 21
S( R | B E Jean-Paul ARNAUD propose cette petite démonstration
aux amis qui possédent une SCRIBE.
1@ REM * SCRIBE DEMO * 318 PRINT 75BA
20: 803A 328 PRINT CHR$ (27)"z" A2F9
38 REM J-P ARNAUD JUIN 1986 330 PRINT "BROUILLON EN-TETE" 2AC6
/ 40: 003A 340 PRINT 758A
50: 6038 350 PRINT CHR$ (15) 7E58
60 TEXT : HOME 1C5A 360 PRINT CHR$ ¢27)"Q" DSFe
70 VTAB 4: HTAB 16: PRINT "x ~ 378 PRINT "BROUILLON COMPRESSE" 7685
< SCRIBE > “DEMO "x" S9EA 380 PRINT 758A
80 INVERSE : SPEED= 195 1€20 390 PRINT CHR$ ¢27)"y" 88Fe8
98 VTAB 23: FOR I = 6 TO 2 STE 400 PRINT "BROUILLON COMPRESSE
P - 1: HTAB 2: VTAB I: PRIN INDICE" 1FSt
T "x": NEXT 7280 410 PRINT 75BA
108 VTAB 2: HTAB 3: FOR I =1T 426 PRINT CHR$ (14) A457
0 37: PRINT "*"3: NEXT 4A68 430 PRINT "BROUILLON COMPRESSE
118 VTAB 2: FOR I = 1 TO 5: HTA MIXTE" 7B2C
B 39: PRINT "*": NEXT D129 448 PRINT 758A
120 POKE 34,6. 8082 450 PRINT CHR$ (27)"z" A2F9
138 VTAB 6: FOR I = 39 TO 3 STE 468 PRINT "BROUILLON COMPRESSE
P - 1: HTAB I: PRINT "#"3: EN-TETE" 9397
NEXT 7B3F 470 PRINT CHR* ¢27)"c" 45E2
148 SPEED= 255: VTAB 13: HTAB 9 480 PRINT CHR$ (27)"L008" EE83
: FLASH : PRINT "ctGctGctG 490 PRINT CHR$ ¢27)"m" S1EC
BRANCHEZ “L’IMPRIMANTE ": N 50@ PRINT "LETTRE" 2ECE
ORMAL 4ec1 518 PRINT 758A
15@ VTAB 23: GET A$ 5D64 520 PRINT CHR$ (27)"y" 88Fe8
168 HOME : INVERSE : VTAB 13: H 53@ PRINT "LETTRE INDICE" ADIA
TAB 7: PRINT " PROGRAMME DE 540 PRINT 75BA
DEMONSTRATION " A588 550 PRINT CHR$ (14) A457
170 VTAB 16: HTAB 12: PRINT " S 560 PRINT "LETTRE MIXTE" 2A75
UR L’IMPRIMANTE ": NORMAL = E98E 578 PRINT 758A
18 VTAB 22: HTAB 16: FLASH : P 580 PRINT CHR$ (27)"z" A2F9
RINT " <RETURN) ": NORMAL : 590 PRINT "LETTRE EN-TETE" 86E68
GET Ws 5732 680 PRINT 75BA
198 REM * TITRE ¥* 618 PRINT CHR$ ¢27)"c" 45E2
200 : 803A 628 PRINT CHR$ (27)"L@30" DI7E
218 PRINT CHR$ (13): PRINT CH 638 PRINT CHR$ ¢27)"X" 96F7
R$ (4)"PRE1": PRINT CHRS ¢ 640 PRINT "* “OPTIONS “#" 7686
27)"c": PRINT CHR$ (14): P 658 PRINT CHR$ ¢27)"L0@8" EE83
RINT CHR$ (27)"LO11" + CHR 668 PRINT 758A
$ (27)"X": PRINT "IMPRIMANT 670 PRINT "TEXTE SOULIGNE" GAGE
E SCRIBE" 815F 680 PRINT 758A
220 PRINT CHR$ (27)"c" 45E2 698 PRINT CHR$ (27)"Y" 88Fe
230 PRINT CHR$ (27)"L@08" EE83 708 PRINT CHRS (27)"D"5 CHRS ¢
240 PRINT "BROUILLON" 3984 @); CHRS (1) 4F 2A
250 PRINT 758A 71@ PRINT "ZEROS BARRES ~(800)" D591
268 PRINT CHR$ (27)"y" 88Fe8 728 PRINT CHR$ ¢27)"X" 96F7
270 PRINT "BROUILLON INDICE" 4188 730 PRINT "SOULIGNE ET ZEROS BA
280 PRINT 758A RRES ~(800)" BBD
290 PRINT CHR$ (14) A457 740 PRINT CHR$ (27)"c" 45E2
388 PRINT "BROUILLON MIXTE" 7858 758 PRINT CHR$ (4)"PREO" 815F
Clalit adalat ele ee ed
22 GUY-HACHETTE
UTILITAIRE
Yvan KOENIG
Sauveur de variables
E suis persuadé qu'un jour ou I‘autre
vous avez regretté de ne pouvoir sau-
ver un tableau de chaines sur disque
comme il est possible de le faire pour
un tableau numérique sous DOS 3.3.
Je vous propose un palliatif écrit en partant du pro-
gramme CHAIN de la disquette master DOS 3.3.
Vous savez tous que le stockage des variables se
fait en divers emplacements mémoire sous
APPLESOFT. Les variables numériques sont les
plus faciles 4 appréhender puisqu’elles sont sto-
ckées en une seule fois, entre (LOMEM) et (ARY-
TAB) pour des variables simples, entre (ARYTAB)
et (STREND) pour des tableaux.
Pour les variables. chaines, c'est plus varié.
APPLESOFT stocke un descripteur dans les zones
définies ci-dessus tandis que les chaines propre-
ment dites peuvent étre stockées en partie haute
de la mémoire disponible c’est-a-dire entre (FRE-
TOP) et (HIMEM) mais si elles sont définies par
CH$ = "xxxxxxxxx", le stockage reste dans la
zone programme 4 I'endroit ot la chaine est
définie.
Ajoutons que lorsqu’une chaine change de con-
tenu l’ancienne valeur est purement et simple-
ment abandonnée sur place, le descripteur poin-
tant désormais sur la nouvelle chaine. La routine
GARBAG que tout utilisateur APPLE a maudit un
jour ou l'autre a pour fonction de faire le ménage
de la mémoire en éliminant les chaines mortes.
Cette routine est hélas trés lente mais l’accélérer
n‘est pas au programme aujourdh'vi.
Le programme CHAIN qui permet de chainer
deux programmes effectue un ménage puis col-
lecte toutes les chaines “programme” pour les
reporter dans la zone de stockage normal des
chaines. Ensuite, le bloc descripteurs est déplacé
de fagon @ se retrouver juste sous les chaines.
ATTENTION, les fonctions FN sont maltraitées
(suite au verso).
TEST1.SAUVEUR1
: HOME 1CSA | 148 KB = 49152:KS = 49168 BI16
CHRS (4) B3A4 156 REM Collecte les chaines act
"APPLE": PRINT AS B444 ives
"TREMPLIN ": PRINT BS AISF | 16@ REM Regroupe descripteurs et
"SOUPLE": PRINT CS 31AE chaines
60 BCS = BS + C$: PRINT BCS 75AB | 17@ PRINT D$"BRUN SAUVEUR1" 6AL?
78 DIM C$¢15,2): FOR 1 = 8 TO 1 188 PRINT D$"MON C" FOB3
5 8D2D | 196 REM Sauve le fichier VARIABL
86 C$ = STR (1):CH(1,6) = "2" Es
+ C$:C$(1,1) = "U" + CH:CHCI 280 PRINT D$"BSAVE VARIABLES! ,A
D" + C$ E639 " PEEK (4) + 256 * PEEK (5
96 FOR J = @ TO 2: HTAB 1 + J * 28? gle " PEEK C8) £°254 9 PE
15: PRINT C#¢1,J)3;: NEXT : P EK ¢9) DFSE
RINT : NEXT 9613 | 210 REM Sauve le fichier OFFSET
1@@ PRINT 75BA | 228 PRINT D$"BSAVE OFFSET1 ,AQ ,
118 C$ = "MICRO": PRINT C% EDS@ Le" B89C
126 BCS = BS + C$: PRINT BCS 75AB. | 230 PRINT D$"NOMON C" 6458
130 DIM NM(12): FOR I = 1 TO 12: 248 PRINT : PRINT "FAITES MAINTE
NMCI) = I: NEXT CF42 “NANT “RUN TEST2.SAUVEURI‘" E73C
TREMPLIN MICRO #3
oe
cenessunsusscesauesrueannnunnoneaenEsereszossseeorsns seanenenasuREenneEENADOSSaRenaoRsaneuenenseoeuneny
puisque si leur descripteur est bien sauvé, leur
définition reste dans la zone programme ot vous
ne la retrouverez donc pas tout a I’heure.
Lorsque ces opérations sont terminées, CHAIN
charge le PROG2 puis rétablit les pointeurs indis-
pensables, descend le bloc descripteur et HOP, le
tour est joué, on exécute PROG2 avec les varia-
bles définies dans PROG}. En supprimant la fonc-
tion LOAD PROG2 et en ajoutant quelques opéra-
tions de stockage de pointeurs il était possible de
faire la méme chose mais, sans étre obligé d'utili-
ser PROG2 juste aprés PROG].
Aprés utilisation de PROG1 on sauve le bloc
variables sous forme d'un fichier binaire que l'on
pourra rappeler plus tard lorsque l'on en aura
besoin. Il vous sera désormais possible de garnir
vos tableaux stables une fois pour toutes, en
accés clavier ou par lecture LENTE de fichier(s)
TEXT et de sauver tout cela en fichier binaire.
Lorsque vous aurez besoin d'utiliser ces tableaux,
il vous suffira de faire un BLOAD VARIABLES or
vous savez qu'un bload est rapide (et peut étre
accéléré). La production littéraire n'étant pas
mon fort, je vous renvoie aux commentaires du
source pour le fonctionnement de la routine SAU-
VEUR et aux programmes TEST pour I'utilisation
mais, une fois encore, ATTENTION 4@ ne pas trans-
férer de fonction. Yvan KOENIG
TEST2.SAUVEUR!I
16 TEXT + HOME 1c5A | 110 CALL 926 3c2D
20 PRINT CHR$ (4)"MON C" 2087 | 120 PRINT A$: PRINT BS: PRINT C%
30 REM Charge le fichier VARIAB : PRINT BCS: FOR I = 1 TO 12
LES : PRINT NM(I): NEXT 897F
40 PRINT CHR$ (4)"BLOAD VARIAB 130 PRINT : PRINT "UNE TOUCHE PO
LES" 8786 UR CONTINUER" 49FF
50 REM Charge le fichier OFFSET 140 POKE KS,6: WAIT KB,128: POKE
68 PRINT CHR$ (4)"BLOAD OFFSET KS,@: PRINT FDD7
1" 12E4 | 150 FOR I = 6 TO 15: FOR J = 0 T
70 REM Place les descripteurs 0 2: HTAB 1 + 15 * Ji PRINT
80 REM Ajuste les pointeurs C$(1,J)3: NEXT : PRINT : NEX
90 PRINT CHR$ (4)"BLOAD SAUVEU T : PRINT 0732
Ri" 2p4g | 160 REM A$,B$,C$,D$,BC$,KB,KS,CS
108 PRINT CHR$ (4)"NOMON C": PR ©.) NMG.)
INT caag | 176 REM SONT BIEN RECUPERES.
0289: 20 84 E4 A9 G7 85 BF £LIB4C
0290: AS 69 AS 6A BS 9D 86 FE Ed 6C DO 4 C5 6B FO 05 £LA2AD SAUVEUR1
8200: 20 FC 82 FO F3 85 9F 86 AQ A? 83 85 BF AS 9F AS £eo3F5
@2B0: AQ E4 6E DO 87 C5 6D DO 03 4C 56 83 85 9D 86 YE £LIABP d
028: Ad 00 Bi 9D AA CB Bi 90 48 CB BI 9D 45 9F a5 9F cevira uandvous
0200: C8 B1 9D 65 AB 85 AO 28 18 D3 BA 30 DB CB BI 9D ce29EB AUrez termine,
@2EG: AB G0 GA 49 G5 65 9D 85 9D 98 B2 Ed EAS VE E4 £66674 —Moubliez pas
02FG: AO DB 04 C5 9F FO BA 26 06 03 FO F3 B1 9D 30 46 £eE252 de sauver
9308: C8 B1 9D 18 41 CB Bi 9D FB 3C CB B1 9D AA CB BI ££93E2 votre routine
0310: 9D 85 9C 86 9B C5 BO FO 02 BO 2B 88 88 BI 9D 48 £L0FC7 syr disquette
0320: 38 AS 6F 85 94 F1 9D C8 91 9D 85 6F CB AS 70 85 ££779F
6330: 95 E9 80 91 9D 85 70 68 18 65 9B 85 96 AS 9C 49 ce2EEs Porn
0340: 00 85 97 26 9A D3 AS GF 18 465 9D 85 9D 98 G2 ES cea791 —BSAVE SAUVEURI,
0350: 9E AS 9E AG OG 60 A2 BO 38 BS 6B ES 69 95 Ga EB ce4aa7 A$289, 1827
0360: BS 4B ES 6A 95 0G E8 EG 03 90 ED A2 G1 BS 469 95 feCOA2
@370: 9B B5 6D 95 96 BS 6F 95 06 95 94 CA FO EF 20 9A ££8139
0388: D3 AS 94 85 44 AS 95 ES 84 B5 38 AS 73 ES O4 AA £E7026
0398: AS 74 E5 05 AS EB 84 88 DO 41 CB 84 G9 4B AS O46 LEEIS2 PROGRAMME
O3A0: 85 3E 85 46F AS 07 85 3F 85 70 AZ 08 18 A5 469 85 ceFC49 SOURCE sur
@3B0: 42 75 06 95 6B E8 AS 6A 85 43 75 G6 95 6B EG EO £63489 la disquette
@3C8: 03 98 EA AS a4 85 3C AS 05 85 3D AB GB 4C 2C FE ££A269 TM Ihe
24
GUY-HACHETTE
UTILITAIRE
|
NESTOR
TRI RAPIDE
d'une liste de mots
UI n’a jamais eu besoin, dans un programme en Basic, de trier
rapidement une liste de mots ? Les routines classiques, non com-
pilées, se révélent d'une lenteur désespérante dés que le nombre
de données dépasse la cinquantaine.
TRI.’ (156 octets) vous propose une solution
simple et efficace. Cette routine en langage
machine trie tous les éléments d'un tableau
dimensionné en quelques secondes (moins de 10
pour 150 données). Elle est implantée 4 partir de
l'adresse $300 (768) et utilise quelques octets de
la page zéro (vérifier que ceux-ci ne sont pas déja
monopolisés par le programme général... ou par
d'autres sous-programmes en langage machine).
MODE D'EMPLO!: Pour trier les éléments d'un
tableau A$(, il suffit d'insérer dans votre pro-
gramme en Basic une ligne du type :
CALL 768, A$(@)
Les éventuelles variables de longueur @ seront
automatiquement classées en téte de liste.
100 IF PEEK (769) < > 190 THEN PRINT CHR
$ (4)"BLOAD TRI.1"
105 PRINT CHRS (4)"PR£3": PRINT : HOME
110 VTAB 12: PRINT “La machine va succes
sivement trier 15@ faux mots rangés
dans trois tableaux: - ASC, BSC,
C$(... puis elle vous invitera a fou
tnic le nombre de mots que vous alle
z vous-meme taper dans le désordre."
115 PRINT : PRINT “La cloche vous indiqu
era le début de chaque tri (quelques
secondes)."
125D=0
130 N = 150
135 DIM AS(N),BS(N) ,C$(N)
140 FOR I = D TO N:AS(I) = CHR® (65 + IN
T ( RND (1) * 26)) + "080": NEXT
145 FOR I = D TO N:BS(1) = CHRS (65 + IN
TRI.DEMO
PEUT-ON
D'UN RANG
Oui. Inclure un POKE 867, R — 1 (R=rang) avant
la ligne ci-contre. Ainsi, POKE 867,1 triera la liste
sans tenir compte du premier caractére.
COMMENT CLASSER A PARTIR DE LA DONNEE
LA PLUS GRANDE ? (ordre alphabétique inverse)
Par quelques pokes bien ajustés : POKE 869,7 : POKE
871,252 : POKE 887,144. Ne pas oublier de rétablir les
bonnes valeurs pour réaliser un tri normal.
TRIDEMO: Cette démonstration vous montre
comment utiliser TRI.1. Il n'est pas indispensable
de la taper. Vous pouvez aussi vous limiter aux
lignes 100-105, puis 210-240.
A Sad DU CARACTERE
T C RND (1) * 26)) + "100": NEXT
15@ FOR I = D TO N:C8(I) = CHR® (65 + IN
T C RND (1) * 26>) + "200": NEXT
155 CALL - 198
160 PRINT : HOME :X = X + 1: ON X GOTO 1
65,170,175
165 CALL 768,A$(@): GOTO 180
170 CALL 768,B$(@): GOTO 185
175 CALL 768,C$(@): GOTO 190
180 FOR I = D TO N: PRINT ASC(I)" ";: NEX
T : GOTO 195
185 FOR I = D TO N: PRINT BS(I>" ";: NEX
T : GOTO 195
190 FOR I = D TO N: PRINT C(I)" ";: NEX
i
195 VTAB 22: PRINT : INVERSE : PRINT "PR
ESSEZ UNE TOUCHE S.V.P";: NORMAL : P
RINT “> "3: GET R$: PRINT
(suite page 26)
TREMPLIN MICRO
allah eae ee eee eee EEE eee EEE rie
TRI.DEMO
200 IF RS = CHR$ (27) THEN PRINT : END
205 IF X < 3 THEN 155
(suite et fin)
235 CALL 768,M9(8)
240 FOR I = 1 TO N: PRINT M$(1): NEXT
245 PRINT : VTAB 23: PRINT "<1> ENCORE <
2> MENU DE LA DISQUETTE <3> TERMINE
210 HOME POUR AUJOURD’HUI $";: GET RS: VTAB 2
215 N = 50 @: PRINT RS
220 INPUT "NOMBRE ? ";N: DIM MS(N) 258 HOME : IF R$ = "1" THEN CLEAR : GOTO
225 PRINT : PRINT "SAISIE DE "N* MOTS": 100
PRINT 295 IF R$ = "2" THEN PRINT CHR (4)"RUN
230 FOR I = 1 TO N: INPUT "> ";M$(1I): NE MENU"
XT 260 IF R® < > "3" THEN 245 .
TRI.1 (esave tri.1, a$ 306, 1$9¢)
eunens
0300- 20 BE DE JSR $DEBE
0303- 20 E3 DF JSR $DFE3
0306- 38 SEC
0307- £9 OL SBC £801
0309-85 85 STA $85
O30B- 80 0} BCS $030E
030D- a8 DEY
O30E- 84 86 STY $86
0310- A200 LDX £900
0312- Al 85 LDA ($85,X)
0314- C9 02 CMP = £802
0316- = BO 0 BCS $0319
0318- 60 RTS
0319- 85 FA STA $FA
031B- AS 83 LDA $83 7
031D- 85 85 STA $85
O31F- AS 84 LDA $84
0321- 85 86 STA $86
0323- = =A2 00 LDX £900
0325- A? 00 LDA = £800 >
0327- 85 09 STA $09 wl
0329- AO 02 LDY £%02
032B- =BI 85 LDA ¢$85),Y
032D- 99 06 00 STA $0006,Y
0330- 88 DEY
0331- 10 F8 BPL $032B —
0333- EB INX
0334- £4 FA CPX $FA |
0336- = FO 56 BEG $038E
0338- AS 85 LDA $85 a
O33A- 85 18 STA $18
033C- 69 03 ADC £803
O33E- 85 85 STA $85
0340- AS 86 LDA $86
0342- 85 19 STA $19
CHKCOM : teste la virgule dans TXTPTR
PTRGET : recherche la variable par son nom
Au retour, A et Y contiennent la bonne adresse.
On lit la longueur du tableau & cette adresse moins un.
Ainsi, A = A—1...siA = FF,Y = Y—1
Le résultat est placé dans $85-86
et le contenu est lu grace a l’adressage indirect avec X
Si la longueur est inférieure 4 2, pas de TRI
Sinon on continue
RETOUR au Basic
Le nombre d’éléments 4 trier est placé dans $FA
REINITIALISATION
L'adresse de base est contenue dans $83-84 et il est
facile de la réinstaller dans $85-86
Sert de pointeur pour compter les éléments triés
Si9 = @, il n'y a pas eu d’échange.
Si9 = 1, ona modifié la liste.
SLeEMENT Oo
On écrit page @ :
— 6: longueur de I'élément
8: ‘| adresse ou il est implanté dans la mémoire
X = X + 1 pour ELEMENT 1 (le suivant)
Si X = $FA (nombre d’éléments 4 traiter)
GOTO $38E
Uadresse + 3 (élément suivant) est savvegardée dans
$18-19 (ov elle sera utilisée plus loin pour la permuta-
tion éventuelle) et placée dans $85-86
Suu a2 00000 SSeS RSRSeReRNseseesesensEosEs eee eee oT eoReeESseRSSeNERUEsEsERERePOReEEeREeeEeeeReReneoeesses
26
GUY-HACHETTE
|
; sgeuseescesesneroosneessesrosonrsconscenscoonessasssoneseonnonnesesonenscosensecensenersneacesssnesenn
0344- 69 00 ADC = £800 7
0346- 85 86 STA $86 al
0348- AS 06 LDA $06 “lS i
034A- FO DD BEQ $0329 | Si la longueur de V'ELEMENT @ est nulle, GOTO $329
eLeEMENT 1
034C- AO 02 LDY £02 Tl
034E- Bi 85 LDA ($85), $FB = longueur de I’élément 1
eam rd a oe Ones 5 sf5 ‘1 adresse ov il est implanté
0354- 10 F8 BPL $034E
0356- AS FB LDA SFB Fi _ Ree -
= ee oon aoe gy __| SiSFB = 0, permutation immédiate
09sC- * 02 foe ae Si la longueur de I'ELEMENT 1 est plus petite que celle
035E- AS 06 LDA $06 de IECEMENT G, le contenu de - est hon: einenon
P= tit if te FE
0360-85 FE STA SFE _| Pren ja plus petite longueur que l'on stocke dans
- CcCOMPARAISON
0362- AO 00 LDY £900 =
0364- Bi FC LDA (SFC),Y Caractére de I'ELEMENT 1 (de rang Y) comparé 4 celui
0366- DI 07 CHP cao7),y'_| SO VELEMENTC
0368- FO 04 BEQ $036E Si égalité, la boucle continue
O36A- BO 2A BCS $0396 Si plus grand, pas de permutation (GOTO $396)
036C- DO OB BNE $0379 Si plus petit, permutation immédiate (GOTO $379)
036E- C8 INY “]
O36F- C4 FE CPY $FE Comparaison terminée si Y est égal 4 $FE
0371- DO Fi BNE $0364 _|
a ee by ee | Silal de l'ELEMENT 1 est égal plus grande
0375- C5 06 CMP $06 EON GUS Sel SaaS: u
0377- BO 1D Bes $0396 | We celle de l'ELEMENT @, pas de PERMUTATION
0379- A? O1 LDA £801 "| govestinteat
037B- 85 09 STA $09 | Ee:
PERMUTATION
037D- AO 02 LDY £902 7]
O37F- Bi 85 LDA ($85) ,Y
0381- 48 PHA
0382- BI 18 LDA ($18),Y | L’adresse de IELEMENT 1
0384- 91 85 STA ($85),Y prend la place de celle
0386- 68 PLA de I'ELEMENT @... et vice-versa
0387-91 18 STA ($18),Y
0389- 88 DEY
O38A- 10 F3 BPL $037F _|
038C- 30 08 BMI $0396 GOTO $396
| O38E- AS 09 LDA $09 a ee "| A i
-— 0390- FO 03 BEQ $0395 | S'il n'y a eu aucune permutation, tri terminé
} 0392- 4C 1B 03 JMP = $031B Sinon on recommence
0395-60 RTS RETOUR AU BASIC
0396- E4 FA CPX $FA X est-il égal au nombre d’éléments & comparer ?
0396- BO F4 BCS $038E Egal ou supérieur, ultime vérification en $38E
O39A- 90 8D BCC $0329 Inférieur, affaire & suivre... .
:
‘gauneeeeoeesoeeeeees coos one o oR scene eeee esses eEesRs seas seceseenseNeeReoUeEeeoeesnennaREeseeaDEsEET
TREMPLIN MICRO
27
DRAW et XDRAW
en langage machine
A routine en langage machine peut
tre utilisée sans faire appel au pro-
gramme DEMO. Elle utilise la fonc-
tion XDRAW ($F65D) et elle tournera
aussi longtemps que vous n’aurez
pas pressé une touche.
Que fait I'instruction XDRAW ? Elle affiche une
forme avec la couleur inverse de celle qui se
trouve aux points od) est déja tracée la forme.
Ainsi, noir devient blanc et vice-versa. C'est
pourquoi avec XDRAW le programme fait et
défait indéfiniment I'écran.
La forme est réduite 4 un octet ($4) qui est placé
en page zéro a l'adresse $8 et terminée par un 0
en $9. Dans la démo, XDRAW devient DRAW
($F601)... ce qui modifie I'écran. Toutefois, com-
me DRAW se contente de tracer (sans effacer), on
stoppe le programme dés la fin de la boucle
(continuer’ ne modifierait pas l'affichage).
QUELQUES RAPPELS
En Basic, pour utiliser DRAW ou XDRAW, il est
indispensable d'indiquer le numéro de la forme
dans la table de formes et aussi de renseigner
l'Apple sur l’adresse de cette table. Ainsi, pour
notre mini-forme, nous aurions dé exécuter les
opérations suivantes : * FA: 104040 * E8: FAG
Le 1 indique le nombre de formes. Le premier 4 indique
la partie basse du nombre d'octots séparant le début de
la table de la premiére forme. Le or 4 (suivi du
x6ro) est la forme olle-méme (ici, il n'y en a qu'une).
Et ensuite, en Basic :
10 HCOLOR = 3: HGR: SCALE = 1:ROT =@:
X= 139:Y = 95
20 DRAW 1 AT X,Y
16@ PRINT CHR (21): HOME
116 PRINT CHR* ¢4)"BLOADXDRAW.L
M": CALL 768
128 CALL - 198: GET R$: PRINT :
POKE ~- 16301,0
138 VTAB 22: CALL - 958: PRINT
"Le meme avec DRAW au lieu d
e XDRAW "5: GET RS
140 POKE 865,01: POKE 826,3: CALL
768
158 CALL - 198: GET R$: PRINT :
POKE - 16301,0
160 VTAB 22: PRINT "<1> ENCORE ¢
2> MENU DISQUETTE <3> FIN ";
: GET Rd |
17@ PRINT : POKE 826,225: POKE 8
65,93: IF R$ = "1" THEN CALL
768: GOTO 120
180 IF R$ = "2" THEN PRINT CHRS
¢4)"RUN MENU"
196 IF R$ < > "3" THEN 160
208 TEXT : HOME e
Un RUN affichera un point. Puis, si vous tapez,
en mode direct :
SCALE = 10 : GOTO 20
vous afficherez, 10 points... qu'un XDRAW 1 AT
X,Y fera disparaitre. C.Q.F.D.
En langage machine, il est inutile de renseigner
les pointeurs $E8-E9 sur I'adresse de la table de
formes. Par contre, on devra placer dans X la
partie BASSE de l’adresse du premier octet de
la forme et dans Y la partie HAUTE de cette
méme adresse.
susuasenensseuzszezsesconensonssnnnsnsunesnmunsssoansssoussenenenasnssnsasensnssensssnennassasseenses
28
GUY-HACHETTE
— °°»
suapansusecescecsenesenenenaoeossnessesneuesssesucuseeenoesscosnsasersanercsecueesscecessenvazscensene
xXDRAW_LNE
300- AI 95 LDA £39
ee 2- 20 ED FD JSR ee CTRL-U (envoyé par COUT) va désactiver la carte 80 colonnes
@305- AP 28 LDA £928 ] On place $20 (valeur pour HGR) dans HPAG ($6).
@307- 85 ES STA ES | Cette adresse contient $40 pour HGR2
@309- AP 7F LDA = £$7F | Code de la couleur : $7F=3
@30B- 85 E4 STA $E4 (0=0, $2A=1, $55=2, $80=4, SAA=5, $D5=6, $FF =7)
o3er- es a8 an sa. 1 Ca, c'est notre forme (un point)
@311- 20 F2 F3 JSR F3F2 Efface I’écran (HCLR)
@314- 20 E2 F3 JSR $F3E2 Initialise la page HGR ($F3D8 pour HGR2)
@317- 2C 52 Ce BIT C852 C'est POKE — 16302, : plus de fenétre texte !
INITIALISATION
] @31A- AP BB LDA £400 Accumulateur chargé avec 0
@31C- 85 66 STA $06 .
| @31E- 985 67 STA 407 ‘| Pointeurs pour une boucle allant de 1 4 1024
6320- 85 89 STA #09 Dernier octet de la forme (on profite de A=@)
@322- 85 FP STA $F? ROT=6
|} 6324- AP O1 LDA £901 ie iy sas
0326-85 E? STA $E?7 al SCALE = 1 ($E7 =@ correspond & SCALE = 256)
BOuUCcLE
@328- £6 66 INC 06 Plus un pour la boucle
@32A- D8 13 BNE $033F Si le résultat est différent de 0, on saute
@32C- £6 87 INC $07 Sinon, il faut incrémenter la partie haute de l’adresse
el AS 87 LDA = $07 ~] Celle-ci est-elle égale 4 04 ? (autrement dit : est-on arrivé &
e- co? 04 CMP = £04 $400 ?)
@332- 08 8B BNE %833F _| Silaréponse est non, on continue
eSo47 G0 OE Ch LOR $00) ne tuche apt reste ?
nee Hd ti ce ee ee 2 Oui, on arréte, mais sans oublier un POKE — 16368,0
@33E- 40 RTS Retour au Basic
ON POSITIONNE LE CURSEUR
O33F- Ab ea LDY £368 ~~] X, position horizontale, est placé dans les registres Y (partie
@341- A2 8B LDX £%8B haute) et X (partie basse). Y, position verticale, est placée
8343- a9 SF LDA £$5F _] dans I’accumulateur.
@345- 26 11 Fa JSR $F411 HPOSN fait le reste.
xXDRAW OU DRAW — ————_
@348- AG 88 LDY £366 ~~) L'adresse de la forme est placée dans Y (partie haute) et X
@34A- A2 88 LDX £%68 _| (partie basse).
@34C- E6 F? INC $F9 =
| @34E- AS F9 LDA $F9 ROT ($F9) = ROT +1
6350- C? 41 CMP) «£41 Quand ROT = $41 (65), on remet la valeur 1 dans $F9
‘ @352- De BC BNE #6360 On en profite pour augmenter SCALE de 16 ($10)
| @354- A? Bl LDA £301 Notons que la valeur de ROT doit étre dans |'Accumulateur
| @6356- 85 F9 STA $F9 a
T | @358- 48 PHA On empile la valeur de ROT
@359- A 18 LDA £418 7
|} @35B- 65 E7 ADC E7 SCALE = SCALE + $10
. @35D- 85 E7 STA %E7 J
5 635F- 48 PLA Récupération de ROT sur la pile
x 0366- 28 SD Fé JSR F65D XDRAW ou DRAW ($F601)
NEXT
e
@363- 4C 28 83 UMP $6328 Et ca repart pour un autre tracé ! e
TREMPLIN MICRO
UI 9053 | Fano] cto
TREIZE ceterrees
DE LETTRES
APPLE choisit un mot parmi ceux d'une liste présentée sous forme de DATAs. Il en
mélange les lettres et les affiche sur l'écran graphique. Vous avez déja compris qu'il
s'agit ensuite de les placer, mais en bon ordre, dans les treize cases pévues 4 cet effet.
Pas de définition : si le mot est peu connu, c'est coton ! Heureusement, il suffit de taper
un 0 (zéro) pour obtenir un renseignement. Celui-ci codte un point, mais permet de placer exacte-
ment la premiére lettre (ou la suivante... si la premiére a déja été localisée, et ainsi de suite).
Quand on croit connaitre le mot, on tape seulement un T et on est invité a fournir la solution (atten-
tion ! en cas d’erreur, cela codte un point !). Ce petit programme est entiérement en Basic, mais
utilise une fonte spéciale de caractéres (voir plus loin).
NOTA : Vous pourrer contdler la slsie de TREIZE et de TREIZE.FONTE en ulisont a disquette VERIF de notre ami Yvan KOENIG (page 2.de couverture).
100 TEXT : PRINT CHRS (21): HOME : POKE 768 198 DRAW NAT D + E,B 3E66
8 3200 | 195 D =D + 21: NEXT ar
105 LOMEM: 16384 + 1476:A = 16384: GOSUB 545 208 : 8038
+ GOSUB 618 6B9E | 205 REM #x* ET MAINTENANT, JOUONS #4
116 HOME :NM = 7: REM NOMBRE DE MOTS EN DATA 8E73 210 + 8038
115 DIM L$(13) ,M6(13) M13) 0328 215 VIAB 21: HTAB 1: PRINT "Renseignement: *
128 GOSUB 480 FCAC 1 INVERSE : PRINT 03: NORMAL + INPUT *
125 HGR : HCOLOR= 3: SCALE= 1: ROT= 0 8096 (ou RANG + LETTREDctr16 ";R$ 3F27
130: 0028 | 220 IF R$ = "SOL" THEN PE = PE + 13 - TR: GO
195 REM #x* CASES POUR LE MOT #4 TO 430 72FA
140 : 882A | 225 IF Rb = "T" THEN 425 OCEA
145 X = 3:Y = 27 8627 230 IF R6 = "" THEN 215 2093
158 HPLOT 6,8 TO 279,0 TO 279,30 TO 0,30 TO 235 IF Ré < > "@" THEN 290 8196
6,8 F99D 240 IF RS = 13 THEN T$ = "PLUS DE RENSEIGNEM
155 HPLOT X,X TO 276,X TO 276,Y TO X,Y TO X, ENT": GOSUB 575: GOTO 215 OFBF
x 5C73 245 RS= RS + 1 6Al3
168 FOR I = 24 TO 265 STEP 21: HPLOT 1,X TO 250 FOR 1 = 1 TO 13: IF MSC) ¢ > LSCRS) TH
1,Y: HPLOT I + 2,X TO I + 2,Y: HCOLOR= @ EN 260 B944
: HPLOT I + 1,X TOI + 1,Ys HCOLOR= 3: N 255 IF M(I) THEN PE = PE + 1: GOTO 276 B97
ExT BEA® © 268 NEXT 0582
165 : 883A 265 GOTO 248 4B4l
178 REM ### LETTRES MELANGEES 270 IF I = RS THEN DR = 27 AFFE
175 3 803A 275 IF I) RS THEN DR = 28 83FE
188 D = 9:B = 80 Foes 280 IF I < RS THEN DR = 29 3881
185 FOR I = 1 TO 13:E = 8:N= ASC (MCI)? ~ 285 D = 21 #1 - 12: DRAW DR AT D,45:M(1) =
64: GOSUB 590 caca Os GOTO 215 0956
p:unnncnnenenescenovcennennnssennsenansunncusssusensnsnnssssssusnsensnsnasassennsnnannsensensnnsenesenen
30 GUY-HACHETTE
seaaceneeoeevssseseccoaeseoss cesses eeseensesosesaesencenenoseoeeoReseRsaenesoeeeeReseeeeeeeeeneeRee
290 IF LEN (R$) = 1 THEN 315 S7B5
295 L$ = RIGHTS (R$,1): IF L$ < "A" OR L$ >
"2° THEN 315 (882
300 NU = VAL ( LEFTS (R$, LEN (R$) - 1)): I
FNU < 1 OR NU > 13 THEN 315
305 IF L$(NU) = "" THEN T$ = “LETTRE DEJA TR
DBBS
QUVEE": GOSUB 575: GOTO 215 3CCB
310 GOTO 326 2040
315 T$ = "ERREUR DE SAISIE": GOSUB 575: GOTO
215 3CFO
328 FOR I = 1 TO 13: IF M8(I) = L$ THEN 338 AI7C
325 NEXT : GOTO 405 FEOO
330 IF M$(I) = L$(NU) THEN D = 21 * I ~ 12:N
= ASC (L$) - 64: GOSUB 598: XDRAW N AT
D + E,80:D = 21 * NU - 12: DRAWN AT D +
E,10:MS(1) = ""sL$(NU) = “":M(I) = 8:TR
= TR + ts IF TR ¢ 13 THEN 215 2589
335 IF TR < > 13 THEN 405 1584
348: 803A
345 REM ##* = FIN DE LA PARTIE ##*
358 : 0024
355 PT = 13 - PE 4B36
368 VTAB 21: CALL - 958: INVERSE : PRINT “S
CORE:";: NORMAL : PRINT “ "3: IF NOT PT
THEN PRINT " TRES MAUVAIS ("PT® POINT)"
: GOTO 385 ADD4
365 IF PT < = 18 AND PT ) = 6 THEN PRINT
PT" POINTS (BON RESULTAT)": GOTO 385 4965
376 IF PT > 18 THEN PRINT PT" POINTS (EXCEL
LENT RESULTAT)": GOTO 385 5a12
375 PRINT " A VOUS DE JUGER! ("PT" POINT";:
IF PT > 1 THEN PRINT “S"; 4723
388 PRINT ")" 7627
385 VIAB 23: PRINT "<1) ENCORE <8) TERMINE P
OUR CETTE FOIS ctriG";: GET RS 7468
390 IF R$ = "1" THEN CLEAR : GOTO 118 A968
395 IF R$ ¢ > "8" THEN VTAB 22: PRINT : GO
TO 385 6B7A
400 TEXT : HOME : END 5514
405 T$ = "MAUVAISE REPONSE": GOSUB 575:PE =
PE + 1: GOTO 215 8158
410: 603A
415 REM eee = =SOLUTION ###*
420: 803A
425 VTAB 21: CALL ~- 958: INPUT "MOT ENTIER
"31$: IF T$ < > M$ THEN GOTO 465 ICSE
438 GOSUB S15 EB4B
435 D = 9:B = 10 FOFA
440 FOR I = 1 TO 13:E = @:N= ASC (L8(I)) -
64: IF N= 9 THEN E = 4 SD86
445 DRAW N AT D + E,B 3E66
450 D = D + 21: NEXT 443F
455 GOTO 355 4948
460: 863A
“465 REM *** CHOIX ET TRAITEMENT *##*
470 REM *** DU MOT (13 LETTRES) #**
475: 8834
480 CH= 1+ INT ( RND (1) * NM) 843A
485 V = PEEK (768): IF ¥= NM OR NOT V THE
N POKE 768,1: POKE 769,CH: GOTO 580 1009
490 FOR K = 1 TOV: IF PEEK (768 + K) = CH
THEN 488 B371
495 NEXT : POKE 769 + V,CH: POKE 768,V +1 4383
500 RESTORE : FOR I = 1 TO CH: READ M$: NEXT 96ED
505 FOR I = 1 TO 13:L$¢1) = MIDS (M$,1,1):
NEXT CC3E
510 FOR 1 = 13701 STEP - 1: = INT ( RND
(1) #1 + 1)aMB(T) = LOCI) L8G) = LOCI)
: NEXT 6F8D
515 FOR I = 1 TO 13:L$(1) = MIDS (M$,1,1):M
(1) = Ls NEXT 6F68
520 RETURN 63B1
525 : 8034
538 REM *** INSTALLATION DE LA = ##*
535 REM *#* FONTE (38 CARACTERES) #**
540: 083A
545 PRINT CHR$ (4)"BLOAD TREIZE.FONTE,A",A AC43
558 POKE 232,A - INT (A / 256) * 256: POKE
233, INT (A / 256) OA3E
555 RETURN 63B1
568 : 003A
565 REM *** SOUS-PROGRAMMES = *##
578: 803A
575 VTAB 22: CALL - 958: VTAB 23: HTAB (41
~ LEN (T$)) / 2: INVERSE : PRINT T$: NOR
MAL : IF RV THEN RV = 0: RETURN E175
580 FOR K = 1 TO 2008: NEXT : VTAB 22: CALL
- 958: VTAB 23: HTAB 3: PRINT "Tapez <T)
si vous connaissez le mot” 0876
585 RETURN 6381
596 £ = 6: IF N= 9 THEN E = 4 6798
595 RETURN 63B1
608 : 063A
605 REM ##* PRESENTATION ee
610: 8634
615 HOME : INVERSE :T$ = "
AB 1: PRINT T$: VIAB 3: PRINT T$: VTAB 2
: PRINT" TRE IZ € "5: NORMAL : HTAB
29: PRINT “REGLE DU JEU": VTAB 3: HTAB 2
9: PRINT "=---------~~' i 3811
628 PRINT : PRINT “OBJET: Trouver un mot de
13 lettres qui -----~ est fourni dans le
désordre.* 8849
625 PRINT : PRINT : PRINT " - Tout renseigne
ment demandé fait per- “““dre un point" BDI7
630 PRINT : PRINT " - Pénalité identique pou
r toute erreur® COFL
(suite page 32).
oneaneeeseresseesssosaszsessesTerenesescerensseoasnsassaanssssoRoRsEEAEA eA eEAOsE RST ET EUSes TOSS ATEEETETs SS
TREMPLIN MICRO
31
EEE ''' re
“eeneuaneannnnnnenennnnesesnnnnnenensuaasnetentenenssnusssesteneninneseseseesenenaneveneeseesece
TREIZE uite) 650 CALL - 198: WAIT - 16384,128,127: POKE
— ~ 16368,0: HOME : RETURN SELI
635 PRINT : PRINT " - TAPER <SOL) pour annul 655 : 003
er la partie.* AEBE 668 REM #¥* MOTS DE 13 LETTRES xxx 0001
640 VTAB 20: FOR 1 = 1 TO 18: PRINT "__";: 665: 083%
NEXT : PRINT 99CA | 670 DATA INTERLOCUTEUR, CONFERENCIERE, DEMYSTI
645 VTAB 22:T$ = " PRESSEZ UNE TOUCHE SvP *: FIANTE, FRAGILISATION, GALEOPITHEQUE ,G1GAN
RV = 1: GOSUB 575 S7AF TOMACHIE , HELICI CULTURE C82
TREIZE.FONTE
ne alan
4000: 31 02 41 08 7C 00 BS G0 EO 00 LE a1 4E 01 71 01 Ce2n65 EXPLICATIONS
4010: AP O1 EL 81 F4 81 15 2 4a 62 69 2 AD 02 ES a2 f£EBCES DU PROGRAMME Basic
4020: 20 03 58 03 BE 03 C6 03 Fé 03 14 04 4B 04 82 84 FE14R
4030: C3 04 EC 04 1E 85 48 85 46 05 85 85 AB 85 C3 85 ££108C 100: Pourquoi POKE 768,60 ? expli-
4040: 60 68 2D 20 20 15 SF 3F 3F 3F 2E 4p 49 35 FF DB ££6B6B cation 4 la ligne 485.
4050: 3B 2E 4D 49 35 FF DB 3B 17 2D 2D 2 2p 35 3F 3F ££A3C7 105: LOMEM est placé au-dessus de
4060: 3F 3F 77 6D 49 29 3E DF DB 37 6D 49 29 3E DF DB ££4EDA la fonte de caractéres.
4078: 37 6D 49 29 3E DF DB B7 49 49 49 a1 80 29 2D 2D £e0724 115: L$(n) = lettres du mot
4080: AD 3F 3F 3F 37 6D 49 35 FF DB 37 4D 49 35 3F 3F £fFEO6 MS§(n) = lettres mélées
4090: 3F 3F 2E 2D 2D 2D 15 FF DB 37 4D 49 29 3E DF DB ££4230 M(n) = 1 au début du jeu
40AB: 37 6D 49 29 3E DF DB 37 2D 2D 2p 2p 1E 3F 3F 3F ££33D4 et 4 @ quand M§(n), la lettre
4080: B7 49 49 49 61 88 89 2D 2D 20 15 3F 3F 3F 3F 17 £87848
40C8: 2D 4D 49 FS DB DB 3B 2E 3E 26 36 2E 3E 2E 4D 49 £83481
40D8: 29 3E DF DB 3F GE 2D 2D 20 FS 3F 3F B7 49 49 49 £eAFFA
40E0: 88 29 2D 2D AD 3F 3F 3F 37 6D 49 29 15 FF DB 18 ££A1eD
40F0: 37 6D 49 09 35 FF DB 1B 37 6p 49 09 35 FF DB 1B ££3749
4100: 37 6D 49 89 35 FF DB 1B 37 4D 49 99 35 FF DB 1B ££3749
4118: 37 2D 2D 2D 2D 1E 3F 3F 3F B7 49 49 49 89 88 29 ££42BA
4120: 2D 2D 20 15 3F 3F 3F 3F 2E 4D 49 FS OB DB 37 35 ££0573
4130: 37 2D 2D 20 3E 3F 3F 37 35 37 4D 49 29 3E DF DB £6564
4140: 37 20 20 2D 20 1E 3F 3F 3F B7 49 49 49 01 86 29 £e3ie2
4150: 2D 2D 2 15 3F 3F 3F 3F 2E 4D 49 F5 DB DB 37 35 ££0573
4168: 37 2D 2D 35 3F 3F 37 35 37 35 37 35 B7 49 49 49 £8210
4170: 81 88 89 2D 2D 2D 15 3F 3F BF 3F 17 2D 4D 49 FS £e9D71
4180: DB DB 3B 2E 3E 2E 4D 49 89 3F FF DB 37 6D 49 2D £8530)
4190: 35 FF DB 1B 37 6D 49 9 35 FF DB 3B 77 2D 2D 2D £88168
41A0: 2D 1E 3F 3F 3F 56 49 49 09 00 29 4D 49 35 FF DB ££96¢7
4180: 3B 2E 4D 49 35 FF DB 3B 2E 4p 49 35 3F 3F 3F 3F £fAC3E
4108: 2E 2D 20 20 35 FF DB 3B 2E 4D 49 35 FF DB 3B 2E £fAcaB
4208+ 4D 49 35 FF DB 3B 2E 4D 49 35 FF DB 3B 56 49 49 £fE0D6
41E0: 49 88 2D FS 37 35 37 35 37 35 37 35 37 35 37 AD ££0168
41FO: SF B7 49 89 80 49 49 29 3E 2F 36 2E 3E 2E 3E 2E ££C9B3
4200: 3E DF DB 37 6D 49 29 3E FF DB 37 20 2D 2D FS 3F £8c718
4210: 3F B7 49 49 49 88 29 4 49 35 FF OB 3B 2E 4D 49 £8BF9E
4220: 35 FF DB 3B 2E 4D 49 F5 FF DB 37 6D 69 FS 3F 3F ££64FD
4230: 37 2D 2D 20 15 FF DB 37 6D 49 29 3E DF DB 37 6D ££385F
4240: 49 29 3E DF DB B7 49 49 49 01 99 29 3E 2E 3E 2E £f7EFE
4250: 3E 2E 3E 2E 3E 2E 4D 49 35 FF DB 3B 2E 2D 2D 2D £83409
4260: FS 3F 3F 3F B7 49 49 49 81 Ba 99 2D 4D AD 3F 3F ££05F3
4270: 3F 3F 17 6D 09 6D 29 3E DF FF 1B 37 6D 89 6D 29 ge7918
correspondante, a été utilisée,
La variable E est égale a 0...
sauf quand le caractére a affi-
cher est un | (a ce moment,
E=4... voir ligne 590). Le E=0
n’est pas utile (on le retrouve &
la ligne 590).
Notez la présence d'un CTRL-G
avant les guillemets de fin de
ligne (pour le placer, appuyez
simultanément sur les touches
CTRL et G).
RS totalise le nombre de ren-
seignements. Au début du jeu,
on donne un tuyau sur la lettre
n°l... et ainsi de suite.
Si L§(RS) ne contient plus rien
(c'est le cas quand la lettre a
déja été placée), on continue
la boucle.
PE totalise les points de péna-
lité (un par renseignement et
un par erreur manifeste). Si
Mi!) est égal 4 G, on continue.
Le renseignement n‘a pu 6étre
donné parce que la lettre n°RS
a déja été trouvée. RS va donc
6tre incrémenté pour donner
un renseignement sur le carac-
tere suivant... s'il existe.
32 GUY-HACHETTE
ee
I EIS SSS EFF
- ssunssnnanseunnenannansustnesusnnssusesensnsunenaensszaasaasenssnenaunassesessenernneenesasensrennons
270: DR est le numéro du caractére 4280: 3E DF FF 1B 37 6D 89 6D 29 3E DF FF 1B 37 6D 89 EEA75E
E de la fonte spéciale (celle-ci 4290: 6D 29 3E DF FF 18 37 6D 9 6D 29 3E DF FF 1B 37 £eFa7eE
4 somimencs. par a Ona: 42A0: 60 09 4D 29 SE DF FF 1B B7 49 49 49 49 00 09 20 Ee5154
Q = = et2= . 4280: 20 20 15 3F SF 3F 3F 2E 4D 49 35 FF OB 3B 2E 4D £eBIF4
A 290: Si on n’a qu'un caractére, la 4200: 49 35 FF DB 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 £EEFIA
réponse est forcément mav- 4200: FF DB 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 FF DB EEAGF6
vaise. A cet endroit du pro- 42E0: 3B 56 49 49 49 80 09 2D 2D AD 3F 3F 3F BF 4D 49 EFEDAE
9 gramme, on attend une 42F0: 09 35 FF DB 18 37 6D 49 89 35 FF DB 1B 37 6D 49 £67640
réponse de type 1A, 12T, etc. 4300: 09 35 FF DB 1B 37 6D 49 09 35 FF DB 1B 37 6D 49 £67640
330: XDRAW efface la lettre utili 4310: 09 35 FF DB 1B 77 2D 2D 20 F5 3F 3F B7 49 49 49 ££0936
sée, mais on laisse les fleches 4320: 88 29 2D 2D 2D 15 3F 3F 3F 3F 2E 4D 49 35 FF DB £EC394
correspondant aux renseigne- 4338: 3B 2E 4D 49 35 FF DB 3B 2E 4D 49 35 3F 3F 3F 3F SfAcae
ments clonnés (cela permet de 4340: 37 2D 2D 20 2D DE DB 3B 2E 3E 2E 3E 56 49 49 49 Fe17E8
elie i" nombre ‘de 4350: 80 09 20 2) AD 3F 3F 3F BF 20 4D 09 2D 3E DF DB ££c834
Benes i) ; 4368: 3B 2E 4) 49 29 3E DF DB 3B 2E 4D 49 29 3E DF DB E£E940
| 430: Avant d'afficher le mot entier, 4370: 3B 2E 4D 49 29 3E DF DB 3B 2E 4D 29 OD 35 3F FF Ee427F
en Salty Bin) ovee. ie We 4380: 1B 3F GE 2D 20 20 AD FF SF 3F 56 49 49 09 00 29 eeeD33
| ee Gosh ‘ Milluerlatenetion 4390: 2D 20 AD SF 3F 3
Showing the first 100000 of 188788 characters.