Text content (OCR)
Hh
ie Sea
| ne
rogrammez
ussi
—— i ge sp eee
tremplin | SOMMAIRE
micro 19
Apple et ProDOS (noms et
logos) sont des marques dépo-
sées d’Apple Computer, Inc.
BIMESTRIEL
Le numéro : 33 F
Abonnement d'un an : 190 F
(6 numéros)
Tous nos prix sont indiqués TTC.
EDITIONS JIBENA
Direction-Rédaction :
Editions JIBENA
Guy-HACHETTE
Lo Pesite Motte — Senillé —
86100 CHATELLERAULT
Téléphone :
49.93.66.66
PUBLICITE :
Raymond JULLIEN
(1) 45.75.41.81
Commission Paritaire :
Les revues qui choisissent d’étre réel-
Jement au service du Lecteur, en ne
Vobligeant pas & glaner, dons plu-
sieurs magazines, les renseigne-
ments concernant sa machine, ne
bénéficient pas du numéro de Com-
mission Poritaire, et pas d’avantage
des torifs postaux réduits
TREMPLIN MICRO — Bimestriel — Cest une
publication des Editions JIBENA, 4, rue de la
Cour-des-Noves, 75020 PARIS — S.A. ou
capitol de 3600000 F — Imprimé por
CITE-PRESS/PARIS — Service de vente
Presse-Promotion, tél, > 49.93.65,08. —
Dépat léga! & la date de parution — Inscrip-
tion & la Commission Poritaire des Publica
tions et Agences de Presse : en cours —
Directeur de Ja Publication : Guy-Clément
COGNE — Diffusion N.M.P.P.
lo disquette TREMPLIN MICRO
contient tous les programmes du
numéro, ainsi que les sources
trop longs pour étre publiés
dons les colonnes de la revue.
Avec la colla
collaboration de :
Claude AUBRY, Philippe BORDAS, Robert CAZENAVE,
Rofi DERYEGHIYAN, Marc FREFOYE, Guy-HACHETTE,
Yvan KOENIG, NESTOR, Hubert PELC, Emile SCHWARZ.
Heureusement, il y a l'Amérique | (Guy-HACHETTE) .............-. 2
FICHIER DIRECT INDEXE en Applesoft (Marc FREFOYE) .............. 3
LES NOUVELLES LASERWRITER sont arrivées ..................000. 8
CLASSEMENT-BUF (Langage machine, avec Nestor) .............005 10
LE RETOUR DU RETOUR DE LAM (Yvan KCENIG — APPLESOFT) VW
DISQUE DUR DE 20 MEGAS SUR GS (Nestor) .............0..000005 13
FRENCH-USING ET LE GS BASIC (Yvan KOENIG) ........... 00000000 15
LES ERREURS EN APPLESOFT, SOUS PRODOS (Emile SCHWARZ) ..... 7
STATISTIQUES (Rafi DERYEGHIYAN — APPLESOFT) ................ 19
ETICSOFT DISK (Philippe BORDAS — APPLESOFT) ............-..... 23
LANGAGE C ses Choines de caractéres, classification et
—_— conversion de types 33
avec C. AUBRY LEJEUDELAVIEEN C. 36
UAC ME cocncccnnomnncicumminasermntawamcanmnoneeive 38
RESOLUTION D'UN SYSTEME D'EQUATIONS
(Hubert PELC — APPLESOFT) SE Sasa te eRe eM CAT RULES 39
FREEZER (EXCLUSIVITE, Yvan KCENIG) 0 s:sssasernonsiverersnaens 4)
GSB.HELLO (Emile: SCHWARZ) 'svis:si0s0s.ssarcnuairasuncaswsincseaivne 45
GSB Super Haute Résolution (Emile SCHWARZ) ..............005 46
LE TURBO BASIC DE BORLAND ...... ick 48
PREMIERES SURPRISES AVEC LEGS BASIC ..............-00.0000005 49
Le MS-DOS sur votre APPLE
Nestor a essayé le PC Transporter ........... 52
APPRENTISSAGE DU CLAVIER (Robert CAZENAVE — APPLESOFT).... 55
LOUPE d'un lecteur, en Applesoft ...........000600ccce cece eee ee 60
US. DRAW GP EJECTION. « i0:cienscmriensinneensnncenmicmnmsrne sername 61
TRACE FLECHE (amusette L.M, por Nestor) .............00cc00eeees 62
CHERCHEZ UERREUR oo :ssnccoasncves 65
MORBO: PROLOG: sacpucissciosganeiese aa ttpeas as snaagaln deaues 67
BIBLIOTHEQUE INFORMATIQUE
6,7, 14, 22, 51, 64, 66
a a / paces f —
/ Guy HACHETTE—epITO /
Heureusement. ily a l'Amerique !
=
Que deviendraient les applemania-
ques sans I'apport américain ? oui,
je sais: la contribution frangaise
n'est pas négligeable. La preuve :
Jean-Louis Gassée et quelques
autres. Nous avons aussi un autre
exemple, significatif, personnifié
par Philippe Kahn, le fondateur et
animateur de Borland.
Reste que les applemaniaques heu-
reux possesseurs d’un Apple Il et
notamment d'un GS, se sentiraient
terriblement désemparés s'il n'y
avait pas les U.S.A.
Parce que |d-bas, amie Lectrice, ami
Lecteur, ‘Apple Il n'est pas mort et
le GS se porte plutét bien. Les logi-
ciels destinés au beau dernier se
multiplient, pour la plus grande
satisfaction des Fran¢gais comman-
dant directement leurs produits
outre-Atlantique.
Cété programmation, ¢a ne va pas
mal non plus. Merlin PRO-16 existe
et se révéle — 6 combien ! — plus
simple a utiliser que l'assembleur
officiel du GS. Cété Basic, en plus du
GS BASIC (que je vous conseille
d’acquérir sans plus tarder*), on
n’annonce pas moins de deux Basics
compilés (rassurez-vous : ils recon-
naitront vos programmes en GS
Basic... sauf erreur de ma part).
Bref, on se demande pourquoi le
réseau Apple frangais n‘en fait pas
plus pour vendre une machine qui
— fait nouveau (lire I’article de Nes-
tor) — peut méme se transformer
/ Pace2 /
en compatible ? Vous connaissez la
réponse : pour vendre du MAC et
rien que du MAC.
Moi, je veux bien. Je posséde un
MAC. Pour étre franc, je dois préci-
ser qu'il m‘a codté une fortune
puisqu’il provient d'un échange : un
Mac Plus contre un Lisa... et quel-
ques milliers de francs.
Cest effectivement une machine
agréable, sympathique, conviviale,
mais sans intérét (4 mes yeux du
moins) quand elle n'est pas dotée
d'un disque dur. J’ajoute que les
augures ne prétent au Mac Plus
qu'une durée de vie limitée: son
remplagant est déja dans les vitrines
et ne cote pas beaucoup plus cher.
Mais que font les bidouilleurs et
autres programmeurs d’un MAC ?
Or, n’en déplaise aux voyants
extra-lucides des Ulis, cette race
dutilisateurs n'est pas encore
éteinte. Ni le culte de la vieille
Pomme. Je me demande méme si,
demain, on ne reviendra pas 4 une
programmation plus simple, plus
proche du langage machine, sur de
géniales petites machines, capa-
bles, grace aux astuces des hom-
mes, de pédaler comme des
grandes. Cun.
= / Basic appiesorr / —
FICIND
La longueur des enregistre-
ments a volontairement été
limitée & 39 caractéres, mais
elle peut 6tre augmentée.
OBJET: Mémoriser, dans un fichier & accés direct, un certain nombre
d'enregistrements de 39 caractéres maximum, mais pouvoir les
retrouver rapidement grace 4 une recherche dans un index des mots-clés.
Le programme comprend donc deux fichiers :
* FIC qui constitue la base de données,
* IND qui est entigrement chargé en mémoire vive et contient la liste des
mots-clés et les numéros des enregistrements correspondants de FIC.
LIMITES : La mémoire de la machine... Il est évident que l'on n‘a pas intérét
4 multiplier le nombre des mots-clés. Marc FREFOYE.
TEXT : NORMAL : HOME : CLEAR
DS = CHRS (4): PRINT D$"PRE3": PRINT
HOME
DIM MO$¢500,1)
PRINT D$"OPEN IND": GOTO 560
ONERR GOTO 135
e IND (séquentiel) PRINT D$"OPEN FIC,L41": PRINT D$"READ FI
= c,Ro"
* FIC (direct) INPUT NE: GOTO 140
sont ouverts au début POKE 216,0: PRINT D$"WRITE FIC,RO": PRIN
du programme. On ne T NE
les refermera que lors- PRINT Dt
que loption 5 (FIN DE INVERSE : FOR I = 1 70 3: FORJ=1705
TRAVAIL) sera choisie. : PRINT * “"3: NEXT : PRINT : NEXT :
VTAB 2: PRINT “ “FICHIER DIRECT INDEXE "
: NORMAL
RESTORE :V = 10: TEXT
VTAB 7: PRINT “I] y a "NE" enregistr."
. DATA SAISIE,LECTURE ,MODIFICATION,MOTS-CL
Le PRINT D$ de la ligne ES,FIN DE TRAVAIL, ,
140 indique 4 ProDOS V = V + 2: READ R$: IF R$ = "" THEN 175
que l'on n’accéde plus INVERSE : VTAB V: PRINT (UV - 10) / 23: N
(provisoirement) — au ORMAL : PRINT "> “"R$: GOTO 165
fichier ouvert par VTAB V: PRINT " Choix: "z: GET R$: PR
PRINT D$"OPEN...”. INT : IF RS < "1" OR RF > STRE CCU - 12
Remarq
/ Paces /
/ Ficinn /
)» / 2) THEN 175
180 IF R$ = "5" THEN TEXT : GOTO 685
185 GOTO 405
190:
195 REM Saisie
200 :
205 PRINT “Longueur maximum de chaque donnée
: 39 caractéres “""""""" "(la ponctuation
est autorisée)"
210 EN = NE
215 FOR I = 1 TO 49: PRINT "-";: NEXT : PRIN
T
220e POKE 34,5:EN = EN + 1:E%
225 VTAB 12: HTAB 6: FOR I =
"-"s3 NEXT : PRINT
230 GOSUB 375
235 VTAB 12: HTAB 6: PRINT “";: CALL
="
240 FOR X = 512 TO 55i: IF PEEK (X) <¢ > 14
1 THEN ES = E$ + CHRS ¢ PEEK (X) - 128)
+ NEXT
245 IF E$ = "" THEN EN = EN - 1: GOTO 150
250 GOSUB 375
255 VTAB 22: PRINT "(C)ORRECTION <E)NREGISTR
EMENT ";: GET R&: PRINT
260 IF R$ = "C" OR RS = "c" THEN 230
265 IF R$ < > “"E"* AND R$ <¢ > "e" THEN 150
270 :
275 REM Ecriture d’un enregistrement
280 :
285 PRINT D$"WRITE FIC,R"EN: PRINT CHRS (34
) + ES: PRINT DS
290 IF EN > NE THEN NE = EN
295 IF CH = 3 THEN GOSUB 650
300 GOSUB 480
305 IF CH = 3 THEN NU = EN:EN = EM: GOTO 150
310 GOTO 220
315.3
320 REM Lecture des données
325 :
330 VTAB 3: INPUT "Numéro a lire ? ";R$:NU =
VAL (R$): IF NU > NE OR NU = 0 THEN HOM
E : GOTO 150
335 PRINT D$"READ FIC,R"NU
340 INPUT ES
345 PRINT DS
350 EM = EN:EN = NU: GOSUB 375:NU = EN:EN =
EM:EM = 0
355 GOTO 150
360 :
365 REM Affichage d’une donnée
370 :
375 VTAB 12
380 HTAB 1: PRINT EN;: HTAB 6: PRINT E$;: IF
ES < > "" THEN CALL - 958
/ paces /
1 TO 39: PRINT
- 657:
633E
3841
1944
003A
003A
ASDC
45F6
F349
CFé1
9ESD
234F
4866
E456
Secs?
234F
EBE1
OFSE
4812
003A
0034
C314
605C
3C4A
FC4C
3BAF
273F
003A
0034
4c4B
B4a9S
ACED
BF22
D2F9
3341
003A
003A
6605
6014
NE = Nombre de lignes
des données.
La routine utilisée per-
met de saisir la ponc-
tuation, mais elle ne
filtre pas les caractéres
de contréle.
Trois phases :
@ Saisie de Ia ligne.
© Enregistrement ou
correction.
© Choix des mots-
clés.
ll n'y a pas de contréle
proprement dit de la
longueur... mais on ne
lit que 40 caractéres
(39 + RETURN), ce qui
résout le probleme
(ligne 240).
Ne vous inquiétez pas
si votre lecteur de dis-
quette ne ronronne pas
a la suite de chaque
enregistrement. Les
données ne sont co-
piées sur la disquette
que lorsque le buffer
est plein.
INPUT normal. La ligne
est affichée et on
retourne aussitét au
menu général. Il suffi-
rait de modifier la ligne
355 pour éviter ce
“détour" :
355 GOTO 330
CH = Code du choix:
© = Saisie
@® = Lecture
® = Modification
@ = Mots-clés
© = Fin de travail.
option 5 est traitée
par la ligne 180.
En cas de modification
d'une donnée (il peut
s'agir d'un remplace-
ment radical !), les
mots-clés —_correspon-
dants sont effacés de la
mémoire... et rempla-
cés par ceux découlant
de Ia nouvelle ligne.
Le programme décom-
pose la phrase en M
mots (3 lettres et au-
dessus), affiche ces
derniers et vous pro-
pose de sélectionner
les numéros qui vous
conviennent. Il faut ter-
miner par @. Atten-
tion! on peut sélec-
tionner plusieurs fois le
méme numéro. Il est
facile de remédier 4 ce
défaut en modifiant
ainsi la ligne 535 :
535 1F M$(R)< > "” THEN
NM =NM+1:S=S
+ 1: MOS(NM,@)
MS(R) : MS(R) =":
MOS(NM,1) = STR$
(EN) : GOTO 525
385
390
395
400
405
410
415
420
425
430
435
440
445
450
455
460
465
470
475
480
485
490
495
S00
505
510
Sis
520
525
530
535
540
545
550
555
560
565
570
575
580
585
/ Basic appiesorr /
PRINT : RETURN
REM Affichage du choix
FOR I = 24 TO 1 STEP - 1: VTAB I: HTAB
27: PRINT CHR$ (255);: NEXT : PRINT
POKE 32,30: POKE 33,49:CH = VAL (R$): I
F CH < > 3 THEN HOME
RESTORE : FOR I = 1 TO CH: READ R$: NEXT
VTAB 1: FOR I = 1 TO 49: PRINT ""3: NEX
T : PRINT : VTAB 1
INVERSE : HTAB (49 -
NT R$: NORMAL
POKE 34,2: POKE 35,23: IF CH ¢
HOME
ON CH GOTO 205,330,455,585
LEN (R$)) / 2: PRI
> 1 THEN
REM MODIFICATION
IF NOT NU THEN 330
—M = EN:EN = NU: GOTO 230
REM Mots-clés
L = LEN (E$):1 = 13M = 0:3 = 0:S = 0: V
TAB 13: CALL - 958:K = 0
K = K + 1:R$ = MIDS (E$,K,1): IF RB < *
A“ OR R$ > "O" THEN R$ = " “: GOTO 495
IF K = L THEN J = J + 1: GOTO 500
IF R$ <¢ > " “ THEN 510
IF J > = 3 THENM =M + 1:M$(M) = MIDS
(E$,1,0)
1=K + 1:J = 0: GOTO 515
Jv=J+1
IF K < L THEN 485
VTAB 14: FOR I = 1 TOM: PRINT I") "MS(I
>: NEXT
VTAB 22: INPUT "Numéros retenus (0 pour
finird: ";R$: IF R$ = "O" THEN 540
R= VAL (R$): IF R ¢ 1 OR R > M THEN 52
5
NM = NM + 1:S
MO$(NM,1) =
RETURN
= S + 1:MO$(NM,0) = M$(R):
STR$ (EN): GOTO 525
REM Recherche par mot-clé
POKE 216,0: ONERR GOTO 570
PRINT D$"READ IND": FOR I = 1 TO 500: IN
PUT MO$(1,0): INPUT MO$¢I,1): NEXT
PRINT D$: POKE 216,0
NM = 1 - 1: IF NM < 1 THEN NM = 0
IF NOT CH THEN 120
HOME
FEAS
003A
003A
29C4
9180
FOF2
4FBS
5100
oB08
DDDB
003A
003A
7270
A7AF
0034
0034
81CF
9FD3
2881
/ Ficinp /
590
595
600
605
610
615
$20
625
630
635 :
640
645
650
655
660
665
670
675
680
685
690
691
695
700
VTAB 22: INPUT “Recherche sur le mot: ";
RS ac7?
VTAB 5 2607
IF R$ = "" THEN 150 5D91 ae
FOR J = 1 TO NM: IF MO$(J,0) < > R® THE
‘Se VAL (MOs¢J,1)) e33 rh ie oka
i D$"READ FIC,R"EN: INPUT E$: PRINT nant le mot défini par
GOSUB 380: PRINT ye Tunlisateuns Oni ‘peut
NEXT J aacc économiser de la place
GOTO 590 1349 en resserrant les li-
0034 gnes. Supprimer pour
REM Suppression de mots-clé cela le PRINT de la
: 003A ligne 620.
I= 0 6549
1 = 1 + 1: IF MO$(I,1) = STR$ (EN) THEN
FOR J = 1 TO NM:MOS(J,0) = MOS¢J + 1,0):
MOS(J,1) = MOS(J + 1,1): NEXT J:NM = NM
IF 1 ¢ NM THEN 655 1106
RETURN 63B1
: 003A En fin de travail, il faut
REM Mise & jour/fermeture des fichiers ars mettre @ jour le nom-
IF NM THEN PRINT D$"CLOSE IND": PRINT D “ heli gatoatelag
$"DELETE IND": PRINT D$"OPEN IND": PRINT ans: FIC (NE), enregis-
D$*WRITE IND": FOR I = 1 TO NM: PRINT MO trer la nouvelle liste
$(1,0): PRINT MO$(1,1): NEXT 3E96 des mots-clés et fermer
PRINT D$"WRITE FIC,RO": PRINT NE: PRINT les deux fichiers par un
D$"CLOSE" D42E seul :
PRINT NM 3955 PRINT D$" CLOSE”
HOME 2F97
PRINT D$"PREFIX/T19": PRINT D$"RUNMENU* DEB
/ LES LIVRES
Explorer
QuickBASIC
/rm /
EXPLORER QuickBASIC
(Christian Renard)
Les lecteurs de Tremplin Micro sont en majorité des
amateurs s‘intéressant 4 la programmation et aux langa-
ges. Nombreux sont ceux qui, dans leur travail, sont
amenés 4 utiliser le BASICA et le GWBasic.
Le QuickBASIC de Microsoft commence aussi 4 séduire
bon nombre d’adeptes du Basic, sans doute grace a son
caractére trés professionnel.
Ce livre belge fait le point et montre bien comment tirer
le maximum de profit du QuickBASIC... et notamment de
ses possibilités cachées.
Une disquette (contenant programmes et utilitaires) est
disponible.
BCM (Belgique) distribué en France par le PS! — 256 pages, 165 FF TTC.
|
_
/ pestvres / —
VOTRE BIBLIOTHEQUE INFORMATI
© EXPLORING
THE APPLE l/GS
(Gary B. Little)
Vous étes I'heureux possesseur d'un
Apple /GS tout neuf, mais un peu
mystérieux... et lo “littérature” concer-
nant la machine vous a laissé sur votre
faim ? Si vous pratiquez |'anglais,
offrez-vous cet ouvrage de Gary B.
Little et partez 4 la découverte de votre
GS en douze chopitres... complétés par
huit appendices renfermant un moxi-
mum d'informations. Je crois que la
simple énumération des sujets abordés
saura déjd vous mettre l'eau a la bou-
che : Explorer ‘Apple IGS, Program-
mer le 65816, Utiliser les outils,
Memory management, Event manage-
ment, Fenétres et Graphiques, Menus,
Accessoires de bureau, ProDOS 16,
Son et musique...
J'ai dé en oublier quelques-uns, mais
ce n'est pas grave, Le bouquin est bien
présenté, abondamment documenté,
et on y trouve évidemment des exem-
ples fort intéressants.
Je souhaite qu'il soit bientét traduit
en francais 4 l'intention des utilisa-
teurs qui restent allergiques
Vanglais. Etude attentive (et instruc-
tive) 6 conseiller aux autres !
‘Addison-Wesley Publishing Company
De Loiessestraot 9 1071 PJ AMSTERDAM Poys-Bos.
* SOS GW/PC BASIC
Vaste programme que de retenir les
230 instructions et fonctions de |'inter-
préteur GW BASIC de Microsoft.
Dans SOS GW/PC BASIC, toutes les
instructions et fonctions existantes
sont regroupées par familles. Chacune
est suivie des paramétres nécessaires.
Un court descriptif explique briéve-
ment l'action de l'instruction, ainsi que
les conseils sur son utilisation prati-
que. La recherche est facilitée par la
présence d'une table de référence et
d'un index.
Bien sdr, ce guide est destiné au pro-
grammeur ayant déja assimilé les
bases du langage BASIC ainsi que le
systéme d'exploitation MS/DOS.
150 poges, 99F TTC. EDITIONS MICRO APPLICATION
13, rue Sointe-Cécile 75009 PARIS — Tél. (1) 47.70.3244.
* SOS MS/DOS
Réalisé pour les utilisateurs du
systéme d'exploitation MS/DOS 3.3 et
‘antérieur, ce guide n'est pas un ma-
nuel de référence du MS/DOS, mais un
aide-mémoire DOS.
Complet, SOS MS/DOS présente por
ordre olphobétique toutes les comman-
des DOS. Méme les fichiers Batch et le
fichier CONFIG-SYS y sont détaillés.
Pour tous les programmeurs désireux
de conserver une certaine portabilité &
leurs logiciels, SOS MS/DOS donne
la liste des interruptions MS/DOS,
210 pages, 99 F ITC EDITIONS MICRO APPLICATION
13, rue Sainte-Cécile 75008 PARIS — Tel, - (1) 47.70.32.44.
* LES DISQUES DURS
DES PC & COMPATIBLES
(Jonathan Kamin)
Voici un ouvrage destiné a tous les infor-
‘maticiens travaillant dans un environne-
ment MS-DOS avec un disque dur. I pré-
sente les différentes strategies d’organi-
sation d'un systéme informatique avec
les points suivants :
— les disques durs ; comment les orga-
niser et les gérer
— la configuration et la maintenance du
systéme
— les procédures d'orchivage et de
souvegarde
— l'utilisation de la mémoire étendue
— l'utilisation de logiciels résidents en
RAM et Ia limitation des contlits
— organisation des menus systéme.
Des renseignements utiles apparaissent
tout au long de l'ouvrage, comme la mise
en ceuvre du fichier AUTOEXEC.BAT, la
définition d'un chemin d'accés, la cons-
truction de répertoires arborescents, la
mise en ceuvre des disques virtuels,
‘optimisation des temps de chargement
de fichiers, etc. Louvrage présente aussi
de nombreux programmes pour la plu-
part des fichiers Batch, mais aussi des
fichiers écrons et macro utilisés pour la
gestion du clavier. Bien qu'il soit fait rété-
rence a la version 3.2 du DOS, tous les
concepts présentés sont applicables a des
versions antérieures et les quelques cos
spécifiques 4 la version 3.2 sont toujours
précédés d'une mise en garde. Jonathan
Kamin est diplomé de l'Université de
Princeton. Il est l'auteur de nombreux
ouvrages parus aux éditions Sybex.
SYBEX, 6.8 Imposse du Curé, 75018 PARIS
Tel. - (1) 42.03,95.95. 430 pages, 278 F
————————————————————s / PACE? / —
a / materi /
LaserWriter Ii
les imprimantes LaserWriter
SC, LaserWriter IINT et Laser-
Writer IINTX remplacent le
modéle LaserWriter Plus. Elles
apportent de nouvelles possibili-
tes d'impression, une vitesse
accrue ainsi que d'importantes
capacités d’extension.
La conception modulaire de la nou-
velle famille LaserWriter II, cons-
truite autour du méme bloc moteur
Canon LPB-SX, permet de progres-
ser simplement et économique-
ment d'un modéle a un autre selon
_les besoins de l'utilisateur.
Une famille de trois imprimantes
Une imprimante LaserWriter II est
constituée d'une partie commune 4
toute Ia famille : la carrosserie con-
tenant le bloc moteur Canon LPB-SX
imprimant 8 pages par minute avec
une résolution de 300 points par
pouce, chaque modéle ayant une
carte contréleur qui en définit les
caractéristiques spécifiques.
L'imprimante _LaserWriter —IISC
(pour “interface SCSI") est le
modéle d’entrée de gamme, non
partageable. Le traitement des
textes et des graphiques est réa-
lisé par les routines internes de
Macintosh : QuickDraw.
L'imprimante LaserWriter _ INT
(pour "Ne Tworkable”) est fonc-
tionnellement équivalente 4 la
précédente LaserWriter Plus. La
mémoire vive a été augmentée de
25%, procurant ainsi un gain de
vitesse de 25 & 40 % suivant les
utilisations. Elle intégre la der-
niére version du langage de des-
cription de page PostScript.
Uimprimante LaserWriter lINTX
(pour "Ne Tworkable and eXpan-
lable”) est /a premiére impri-
monte laser du marché a étre
construite autour du microproces-
seur Motorola 68020.
La LaserWriter IINT est une impri-
mante de haute performance, 244
fois plus rapide que |'imprimante
LaserWriter Plus et bénéficiant
également d'importantes capaci-
tés d'extension (mémoire, polices
de caractéres...). Comme le
modéle LaserWriter IINT, |'impri-
mante LaserWriter IINTX est parta-
geable sur le réseau Apple Talk et
contient également la derniére
version de PostScript.
Les imprimantes LaserWriter II
sont destinées 4 la famille Macin-
tosh (Macintosh Plus, Macintosh SE
et Macintosh II) ainsi qu’é l’Apple
LaserwWriter isc
le modéle dientrée de gamme:
LaserWriter IISC, s‘adresse 4 I'utiliso-
teur indépendant pour de |'édition per-
sonnelle de base (correspondance
sophistiquée, mémo, présentations,
rapports, mise en page de base).
Uimprimante LaserWriter IISC est
idéale pour l'utilisateur qui, tout en
demandant une haute qualité
diimpression, ne recherche ni I'utili-
sation en réseau, ni l'impression de
textes et graphiques complexes.
impression pleine page est obtenue
par [l'utilisation du langage Quick-
Draw, résidant dans tout Macintosh.
Limprimante LaserWriter IISC est
construite autour du microproces-
seur 68000 Motorola et comprend
1Mo de RAM nécessaire pour une
résolution de 300-dpi tout en conser-
vant une grande vitesse de sortie.
Quatre polices 4 intégrer au systeme
de Macintosh sont livrées avec
Vimprimante : Times, Courrier, Hel-
vetica et Symbol, disponibles du
corps 9 au corps 24.
Une interface SCSI permet un trans-
fert de données accéléré pour une
impression rapide ainsi que la flexi-
bilité pour chainer jusqua 6
périphériques. .
UNE NOUVELLE
FAMILLE
D’IMPRIMANTES
NGS dans le cadre de certaines
applications.
Les utilisateurs MS-DOS et OS/2
peuvent également imprimer sur
LaserWriter IINTX ou LaserWriter
IINT, soit par l'intermédiaire de la
carte Apple Talk PC, soit grace aux
modes émulations qu‘autorisent
les deux imprimantes.
"Notre succés croissant dans les
Entreprises, |'Administration et
\'Education Universitaire ne tient
pas seulement & Macintosh mais
aussi aux imprimantes LaserWriter
et @ leur utilisation généralisée
comme outil universel de producti-
vité", rappelle Sébastien Sisom-
bat, Directeur du Marketing
d'Apple France. "L'arrivée de la
nouvelle famille de LaserWriter
souligne la volonté d‘Apple de res-
ter leader dans I'édition person-
nelle, tout en apportant une amé-
lioration constante de la qualité
d'impression et cela pour un plus
grand nombre d'utilisateurs.”
Un nouveau bloc moteur pour
la famille LaserWriter II
Construites autour du nouveau
moteur Canon LPB-SX, les impri-
mantes LaserWriter II impriment a
une vitesse d’entrainement de 8
pages par minute, avec une réso-
lution de 300 points par pouce
(dpi). Leur durée de vie de 300 000
pages représente le triple de celle
de Iimprimante LaserWriter Plus,
déja connue pour sa fiabilité. La
qualité des noirs et des aplats a
aussi été améliorée ainsi que la
durée de vie de leur cartouche
d’encre (+ 25%).
La contenance du bac 4 papier en
format A4 a été accrue, elle passe
206 feuilles. Un bac 4 papier pour
format américain (lettre US) ainsi
qu'un bac 4 papier 4 enveloppes
pouvant accepter jusqu’d 15 envelop-
pes sont également disponibles. Un
chargeur manuel réglable du format
lettre au format enveloppe est éga-
lement disponible.
— / aces | ———————— errr
LaserWriter lINT
Imprimante de haute _ perfor-
mance, 4 un codt inférieur 4 celui
de la LaserWriter Plus d’Apple,
limprimante LaserWriter IINT peut
&tre utilisée de fagons variées, de
la simple correspondance a des
Présentations complexes. Elle
tépond parfaitement aux attentes
de petits groupes de travail grace
4 ses possibilités de mise en
réseau.
Construite autour du microproces-
seur 68006 Motorola, I'imprimante
laserWriter IINT dispose de 35
polices de caractéres en standard
et d'une architecture Apple Talk
permettant le partage en réseau.
Une architecture mode émula-
tion Diablo 636 permet la compa-
tibilité avec les systemes MS-
DOS et OS/2 et un port série RS-
232 autorise la connection avec
d'autres ordinateurs.
Uimprimante LaserWriter IINT uti-
lise généralement la derniére ver-
sion de PostScript ; elle comporte 1
Mo de ROM et 2 Mo de RAM.
Ce gain de mémoire permet une
augmentation de la vitesse d'im-
Pression ainsi que le télécharge-
ment de polices de caractéres. =
Enfin, le bloc moteur est moins
volumineux et plus léger (20,5 kg)
que le modéle précédent (32 kg).
Une architecture modulaire
la principale caractéristique de la
famille LaserWriter II réside dans
son architecture modulaire. Les
trois imprimantes partagent une
plate-forme commune et peuvent
tre converties au modéle supé-
rieur par un concessionnaire Apple
por simple changement de la carte
contréleur, ce qui préserve ainsi
les investissements initiaux.
"Associées aux Macintosh, les
nouvelles LaserWriter Il amélio-
rent les possibilités d’intégration
de systéme donnant ainsi aux utili-
sateurs Apple une solution homo-
gene, qui est actuellement la plus
simple 4 utiliser et la plus perfor-
mante”, commente Jean-Louis
Gassée, Senior Vice Président
d'Apple, en charge de la Recher-
che et du Développement. “Apple
crée un nouveau standard dans
impression laser avec |'introduc-
tion de |'imprimante LaserWriter
IINTX basée sur le microproces-
seur Motorola 68020, tenant ainsi
une fois de plus ses promesses de
Proposer 4 ses utilisateurs des pro-
duits toujours plus performants.
Avec l'arrivée de lo LaserWriter Il,
Apple propose une large gamme
d'iimprimantes laser totalement
modulable”. .
Prix et disponibilité
Uimprimante LaserWriter IINT est
disponible au lancement et les
imprimantes LaserWriter IISC et
NTX le seront en mars.
LaserWriter IISC 19900 F HT
LaserWriter IINT 29900 F HT
LaserWriter IINTX 39900 F HT
La LaserWriter Plus n'est plus
livrée, mais Apple continue d’en
assurer le service Aprés-Vente.
Par la suite, cette base installée
bénéficiera de révisions du sys-
téme des drivers d'impression.
LaserWriter IINTX
alate
Uimprimante LaserWriter IINTX
répond aux besoins en rapidité et
en volume des groupes de travail.
Elle est également 4 méme de pro-
duire les textes et graphiques
sophistiqués qu’attendent les gra-
phistes professionnels.
Construite autour du microproces-
seur Motorola 68020, @ 16,5 Mhz,
cette imprimante est jusqu’d 4 fois
plus rapide que 'imprimante
LoserWriter Plus. _ L'imprimante
LaserWriter IINTX utilise PostScript
comme langage de description de
Page, ce qui permet d'imprimer des
textes et des graphiques sophisti-
qués et de trés haute qualité.
La configuration standard Laser-
Writer IINTX comprend 1 Mo de
ROM, 2 Mo de RAM, 35 polices de
caractéres. L'architecture Apple
Talk autorise le partage en réseau
de l'imprimante.
Uimprimante LaserWriter IINTX a
trois possibilités d’extension : addi-
tion de ROM, extensibilité de la RAM
jvsqu’d 12 Mo et possibilité de chai-
ner un ou plusieurs disques durs.
Des cartes d’extension de polices
de caractéres, proposées par des
partenaires, peuvent étre instal-
lées directement sur le connecteur
de la carte contréleur, augmentant
ainsi le nombre de polices de ca-
ractéres résidentes dans la ROM.
Les caractéres pouvant étre toute
forme de graphique, ces cartes
d'extension de polices peuvent
étre utilisées pour stocker les
logos ou des marques déposées.
La RAM interne peut étre étendde
de 2 4 12 Mo. Cette augmentation
de mémoire améliore la vitesse de
traitement de l'impression, la pos-
sibilité de téléchargement de poli-
ces de caractéres et permet de
conserver en mémoire sous forme
de bitmaps des polices de caracté-
res en prévision d'utilisations
futures.
Un ou plusieurs disques durs SCSI
peuvent étre chainés directement a
l'imprimante ;_ piloté par celle-ci,
l'utilisateur dispose d'une vaste
capacité de stockage pour des poli-
ces de caractéres supplémentaires,
tout en y accédant rapidement.
Uimprimante LaserWriter IINTX
josséde un port série RS-232 pour
la connection avec d'autres ordina-
teurs. Elle offre également la pos-
sibilité de travailler en mode ému-
lation Diablo 630 ainsi qu'en mode
émulation LaserJetPlus, assurant
de cette facgon l’ouverture avec
deux des imprimantes les plus uti-
lisées dans I'univers MS-DOS et
OS/2. .
Ls | PACES /—
— / NESTOR —LANGAGE MACHINE /
CLASSEMENT-BUF
QUESTION : Comment saisir un texte et le réafficher instantanément, mais avec tous
ses éléments triés, suivant leur valeur ASCII, en commengant par Ia plus
petite, et ainsi de suite ?
* VIDER L’'ECRAN (FACULTATIF)
00/6300 : FC58
* SAISIE
00/0363 : FD6F Saut a INPUT ($FD6F).
00/0306: 86 06 A la sortie, la longueur est dans X.
* DEBUT DU TRI
te ; 4 fag Y sert de pointeur pour le tri.
00/630C: BD G2060,X Valeur de rang X...
00/036F: DD GIFF,X comparée 4 valeur de rang X - 1.
00/0312: Bd 0320 6+@0Cé Siplus grande ou égale, saut.
* PERMUTATION ————
00/0314 : BC GIFF,X Valeur X - 1 dans Y.
00/0317 : 9D OIFF,X Valeur X dans X - 1.
GG/O31A: 98 Y dans A.
00/031B: 9D 0206,X Valeur X - 1 dans X.
Q0/G31E: E6 O7 07 Pointeur incrémenté.
00/0326: CA x=x-1.
00/0321: DG E9 @30C é6-17@ Six est différent de @, encore...
00/0323 : Aé G6 06 Sinon x retrouve sa valeur maxi.
00/0325: AS 07 07 —} Si le pointeur est 4G, pas de permuta-
00/0327: DG DF 0308 6-21e _! tion : tri terminé. Sinon ¢a repart.
- REAFFICHAGE
00/0329 : 9D Gi 0201,X @ ala suite du texte, dans le buffer.
00/032C: AG G2 £02 Partie haute de l’adresse dans Y.
@0/G32E: 4C 3A DB3A Affichage de la chaine pointée par Y et A.
Désossemblage sur GS BSAVE CLASSEMENT-BUF, A$300, L$31
UTILISATION: BRUN CLASSEMENT.BUF ou BLOAD, puis CALL 768 @ partir d'un pro-
gramme en Basic.
REMAROUE: $DBS3A affiche une chaine pointée A (partie basse) et Y (partie haute) et
terminée par @ (ou “).
EXEMPLE (les espaces — CHR$(32) — sont évidemment en téte) :
COMMENT ETRE CERTAIN d’etre le premier & 13 heures ?
*13?RACCEEEEIMMNNORRTTTdeeeeeeehi Imprrrrstu
= / 2690 ——————
/ Yvan KOENIG — APPLE Iie, lic, Gs / —
le retour du retour de LAM
Dans Tremplin Micro n°16, je vous avais proposé une formule permettant d’employer la
bonne vieille routine de LAM sur votre GS tout neuf. Ne croyez pas au Pére Noél, la nou-
velle Rom de la machine n‘a rien changé sur ce point. Par contre, j‘ai encore gratté mes
méninges et les entrailles de la béte (4 moins que je n‘aie fait I'inverse) et je vous apporte
une solution TOUT BASIC.
Regardons le programme listé ci-dessous :
Lorsque la ligne 40 a copié la chaine dans le tam-
| pon d'input, c'est la ligne 45 qui s‘exécute, puis
| la ligne 50. Or, celle-ci contient délibérément
Une simple démo ne me semble pas suffisante.
Je reprends le texte d'un article oublié dans les
tiroirs présentant un reméde & un vieux BUG du
BASIC.SYSTEM et vous offre la mise en place de
ce patch @ l'aide de la routine de LAM (pro-
gramme Basic PRO.LAM2).
Depuis plusieurs mois, le bug du BASIC.
SYSTEM 1.1 relatif aux fonctions CHAIN et
STORE fait l'objet de tentatives de corrections.
Je souhaite apporter ma contribution qui, me
semble-t-il, regle complétement le probléme.
Hélas ! cela me conduit 4 vous demander de
modifier légerement les patches que je fais
dans la disquette THGS.
@Modifications de mon patch
une erreur de syntaxe. Asoft nous envoie alors
en HANDLERR ($F2E9)... ot le pointeur de pile
(rangé par NEWSTT en $F8) est copié bien a l'abri
en $DF. Nous exécutons ensuite le CALL-144
puis CALL 62248 ($F328) récupére le pointeur de
pile sauvé en $DF. La classe non ?
Je dois remercier Open-APPLE qui m'a mis sur
la voie en signalant que la mise en place de la
sée par APPLE il y a bien longtemps était inutile
puisque CALL 62248 nous dispense d'implanter
ladite routine, et fait le travail a sa place. Rappe-
lons au passage que les possesseurs d'un
1TT2626 sont priés de s'abstenir de manipuler la
pile en cas d'erreur. L'instruction TXS omise dans
|
|
| bonne vieille routine de correction de pile propo-
|
|
f
|
I'APPLESOFT existe dans le PALSOFT.
1 REM
Py
3 REM
20 FOR PASS = 110 20
30 HEX$ = "1000:4C 58 FF”
31 GOSUB 49
32 PRINT "PASS: "PASS
33 NEXT : END
40 HEX$ = HEX$ + " ND823G": FOR! = 1 TOLEN
(HEX$): POKE 511 + 1, ASC ( MID$ (HEX$,1,1))
+ 128: NEXT : POKE 72,0
45 ONERR GOTO 70
50 HOM : REM faute d'orthographe délibérée !
70 CALL - 144
75 CALL 62248
80 POKE 126,0
100 RETURN Yvan KOENIC — 5 décembre 1987
Le catalogue de BASIC.SYSTEM n‘affichait
pas AuxType pour les fichiers de type '$xx’.
Avec un petit patch, cette lacune est com-
blée et vous pouvez identifier les fichiers
images lors du CATALOG.
BEDF : JSR A612, LDY £4E, LDA £D8, RTS
A4F2 : JSR BEDF, BNE A516
@Correction de CHAIN
AGID: 20 47 AG JSR $AQ47
A044: A9 07 LDA £307
AG46.: 2C (BIT) saute instruction
suivante
AG47:: AI 03 LDA £$03
AG49:: 20 E7 BE JSR $BEE7
AG4C: EA NOP
AG4D: EA NOP
(suite page 12)
ee — / Pr 1 | —
— / van keenic— apPicie, 16.168 [———————
@ Correction de CHAIN (suite)
BEE7 : 8D 83 A3 STA $A383
BEEA: A9 00 LDA £00
BEEC: 8D 83 BC STA £883
BEEF : A9 03 LDA £803
BEF]: 8D 7E BC STA $BC7E
BEF4 : 60 RTS
REM ¥#RHRHHRERE
REM * PRO.LAM2 *
REM ##¥#eRHRRRHEC TI
TEXT : HOME
Toutes mes excuses 4 APPLE : pour corriger ce
BUG exaspérant, j'ai pris la liberté de suppri-
mer un ‘COPYRIGHT APPLE, 1983’, mais il
n'était pas question que j‘aille dans le trou
connu du B.l ov Sandy Mossberg a déja
implanté un patch INDISPENSABLE de la com-
mande BSAVE (cf. NIBBLE V7, N8, p93).
PRINT "Utilisons 1a routine de LAM pour patcher BASIC.SYSTEM."
HEX = "A01D:20 47 AD N A044:A9 7 2C AY 3 20 E7 BE EA EA": GOSUB
200
HEX
HEX
HEX
HEX
D C9 BE 8D CA BE AY CE DO D9": GOSUB 200
HEXS
HEX
PRINT “J’ai fini, au revoir.": END
HEX$ = HEX$ + " ND7D2G": FOR I = 1 TO LEN ‘HEX$): POKE S11 + 1,1
28 +
ONERR GOTO 230
HOM
CALL
ASC ¢ MIDS (HEX$,1,1)): NEXT
- 144: CALL 62248: POKE 216,0: RETURN
QUAND ATARI FRANCE S’OFFRE LA TELEVISION...
ATARI étend son audience a un plus
large public avec la diffusion d'un
film publicitaire trés remarqué.
Ce film télé est dé au talent du célébre
réalisateur international Jean-Baptiste
MONDINO. II a pour but de présenter
les ordinateurs ATARI comme des
armes dans la compétition: “Au-
jourd’hui, la compétition commence
trés tt et ne s‘arréte jamais. Mais,
sans arme, pourrons-nous longtemps
faire face ?'".
Il traduit la volonté d’ATARI de
mieux faire connaitre ses produits et
de les imposer sur tous les marchés
de la micro-informatique.
ATARI renforce ainsi son action dans le
domaine professionnel avec la com-
mercialisation de sa configuration MEGA
LASER comprenant : ‘ATARI MEGA ST 2,
un écran monochrome haute résolution,
une imprimante laser et la garantie d'un
an avec maintenance sur site, au prix
révolutionnaire de 21900 F HT.
Le marché de la micro-édition laser est
peel 6 un trés fort développement
fans les prochaines années car le
niveau de qualité de I'impression laser
est tel que plus personne ne pourra
s‘en passer.
ATARI propose, dés aujourd'hui,
cette qualité 4 un prix particuliére-
ment compétitif et accessible.
Sur le theme : “Lo Révolution Laser,
c'est de faire d'une simple feuille de
papier une arme dans la compéti-
tion”, ATARI s‘attaque 4 Ia fois au
marché de la PAO et de la micro-
: POKE 72.0
“BEE7:8D 83 A3 AP 0 8D 83 BC AP 3 8D 7E BC 60": GOSUB 200
“B1D9:20 55 Bé": GOSUB 200
"B621:20 70 BE BO 5S AY FF 8D 44 BE 60": GOSUB 200
"Bé2C:A9 1 8D 4F BE AD 57 BE 29 1 18 FO ED A 0 8) CB BE 8B
"B648:0 0000000000 0 0": GOSUB 200
"B655:AC BB BC AD BA BC C9 FF DO 6 68 68": GOSUB 200
dition ainsi qu’au marché de la
bureautique ef du traitement de
texte avec impression laser. De cette
facon, ATARI s‘adresse, pour la pre-
miére fois, & tous les milieux profes-
sionnels, depuis les professions libé-
rales jusqu‘aux grandes sociétés, en
passant par les PME/PMI.
Rappelons que bénéficiant des der-
niéres innovations technologiques
en matiére d'impression laser,
limprimante laser ATARI est directe-
ment pilotée par le Mega ST auquel
elle emprunte la capacité mémoire
nécessaire a l'exécution des travaux
d'édition.
Sans s'encombrer d'aucune électroni-
ue covteuse, elle tire profit de toute
la puissance et de la rapidité de trans-
fert des données du Mega ST pour édi-
ter, dans un temps record, les pages
graphiques les plus complexes.
= | 12)... vn _—_c——
/ NESTOR —APPLENCS / —
J'ai gonfle mon Apple tics
avec un disque dur Winchester 3.5 de 20 Mo !
Figurant au nombre des applemaniaques confiants
qui ont acquis leur Apple //GS au prix fort, j‘ai eu
l'insigne avantage d'essuyer les platres. Le service
commercial de la firme prétendra sans doute que
les nouvelles versions des premiers logiciels
bogués ont été gratuitement mises 4 ma disposi-
tion. II ajoutera que la ROM 1987 figure aussi dans
la corbeille de cadeaux généreusement distribués
par Apple 4 tous les possesseurs de machines
défectueuses.
Peut-étre. Que mes compagnons d'infortune,
oubliés par la machine @ adresser d’Apple
France ou par celle de leur concessionnaire,
lévent la main ! J'irai plus loin : organisons un
défilé des plus satisfaits d’entre nous de l'auto-
route Al0 jusqu’aux Ulis. Je ne pense pas qu'il
soit dans ce cas nécessaire de déplacer un seul
représentant de la gendarmerie nationale :
aucun embouteillage 4 redouter. Ah ! s'il s‘agis-
sait de regrouper les décus...
Bref ! vous avez devant vous un “jeune” homme
peu enctin 4 desserrer les cordons de sa bourse
en faveur de sa danseuse en Technicolor :
Apple //GS.
N'empéche qu'il I’a fait. D'abord parce qu'il lit
Tremplin Micro, \a seule revue au monde 4 avoir
consacré, @ l'heure ov j’écris ces lignes, autant
de pages au GS. Eh oui! il y a la-bas des gens qui
ne désespérent pas de faire changer les mécon-
tents de camp, au grand désespoir d'Apple
France qui préférerait sans doute que l'on oublie
son enfant chéri d’hier, et au grand dam de cer-
tains concessionnaires, plus chauds pour vendre
un Mac que la bébéte qu'ils n‘ont méme pas pris
la peine d'apprivoiser.
J‘ai mon disque dur
Passons. Qu’est-ce que je dirais si j'avais acheté
un Lisa ! Lui, au moins, possédait un disque dur.
Mon GS aussi, mais c'est grace 4 |'initiative d'un
homme dont on ne dira jamais assez tout ce qu'il
fait pour les possesseurs d’Apple // : J.-M. Bré-
sard, de la Société Bréjoux.
Tiens ! ce nom-la vous dit quelque chose ? pas
étonnant : on vous a déja parlé de lui, ici et ail-
leurs, 4 propos de moult produits d'Applied En-
gineering U.S.A, et notamment de la fameuse
RAMFACTOR et de TRANSWARP, carte accéléra-
trice 3,6 MGz pour /k et Ik.
Il sévit @ Lyon, au 29 de la rue de Montribloud, dans
le 9° arrondissement. Si ca vous chante de lui télé-
phoner, appelez le 78.36.52.69 et gare dla note ! Il
vous parlera de votre machine et de ce que vous
pourriez en tirer comme nul autre, mais la commu-
nication sera longue, je vous le promets.
Seulement voila, ce n‘est pas un plaisantin : il
commercialise, en France, avec des notices en
francais, des produits garantis, non seulement
testés par des spécialistes, mais souvent (pour
ne pas dire toujours) accompagnés de logiciels
qui facilitent la vie des utilisateurs.
C'est le cas de mon DISQUE DUR WINCHESTER 3.5
partitionnable. Installé depuis un mois sur mon
GS, il me permet enfin de tirer efficacement
parti d'une machine dont je continue de penser
le plus grand bien, mais qui est encore handica-
pée par la lenteur du chargement de ses systé-
mes d'exploitation. Avec ce disque dur, utiliser
APW et APW.C devient un plaisir et il en va de
méme pour accéder au GSBasic.
Muilti-machines
Je vous parle sans cesse du GS, mais je vous
signale que le bijou de Bréjoux fonctionne aussi
sur Apple /le, avantage non négligeable quand
on connait le prix des lecteurs 3 pouces et demi.
En fait, pour le prix de deux lecteurs, on peut
s‘offrir 20 Mo et, par-dessus le marché, Ia ver-
sion 3.0 de ProSel, le fameux sélecteur de pro-
grammes de Glen Bredon, accompagné d'une
notice en francais. (suite page 14)
/ Pace13 / —
— / xestor— apes |
Vous aimeriez évidemment en savoir plus sur le
disque dur lui-méme, mais ¢a vous donnera quoi ?
Si vous disposez d'un Apple //e, vous installerez
la carte contréleur en slot 5, 6 ou 7. Si vous pos-
sédez un GS, vous n’aurez droit qu’au slot 6 (je
crois savoir que |'on travaille la-dessus et qu'il
sera plus tard possible de glisser la carte dans
une autre fente). Je vous signale au passage que
vous ne pourrez plus utiliser le lecteur 5.1/4 con-
necté sur un lecteur 3.5, mais rien ne vous inter-
dit de passer par une carte contrdleur 5.1/4 ins-
tallée dans un autre slot.
Votre fournisseur — M. Brésard — vous expli-
quera en quelques mots (par lettre et par télé-
phone si besoin est) comment configurer le
CONTROL PANEL du GS (élémentaire).
Votre disque dur sera reconnu en Slot 6, Volume
1, Drive 1 de la partition DOS 3.3 (parfaitement :
vous disposerez aussi de l’ancétre !), La Société
Bréjoux vous livrera un disque dur préenregistré
et vous ne serez donc pas obligé de passer par la
disquette d'initialisation PRODOS 1.9.
J'ai dit : Dos, ProDOS... mais ce n'est pas limita-
tif. Ca marchera aussi avec Pascal. Quant 4 Pro-
Sel (avec ou sans souris), il vous installera auto-
matiquement ses éditeurs, sélecteur et utilitai-
res, y compris le ProDOS 8 version 1.4B.
Rapidité et discrétion
Je m'attendais 4 recevoir un disque dur compact,
mais pas 4 ce point. Moins haut que deux lec-
teurs 3.5, mais de largeur identique, le BJX 20
se fait complétement oublier. Est-il bruyant ?
moins que celui du compatible qui chatouille
désagréablement mes oreilles. II n'est pas plus
génant que celui du ventilateur qui refroidit l'un
de mes radiateurs favoris : un Apple /le bourré
de diverses cartes.
Rapidité ? Chez Bréjoux, on vous affirmera qu'il
est super-rapide. Habitué 4 l'instantanéité de
chargement que permettent les cartes-mémoire
du méme fournisseur, je manque d'éléments de
comparaison. J'ai effectué quelques petits tests
par rapport au compatible cité plus haut, mais
les systémes d’exploitation n’étant pas les
mémes, les résultats ne sont pas significatifs.
Vous ne serez certainement pas décu si vous
devenez demain I'heureux possesseur de |'une
de ces unités de stockage et vous aurez enfin le
plaisir d’accéder RAPIDEMENT aux excellents
outils qui, ne l'oublions pas, sont bel et bien
fournis avec |'Apple //GS. NESTOR.
Japprends que la Société Bréjoux fera bénéficier les abon-
nés de Tremplin Micro (sur justification de leur numéro de
client) d'un prix spécial fort intéressant : environ 6000 F HT
au lieu de 6600 F HT (y compris ProSel de Glen Bredon).
449 pages — 199 F TTC — Couverture cartonnée.
EDITIONS MICRO APPLICATION
13, rve Sainte-Cécile 75009 PARIS — Tél. (1) 47.70.92.44
LE LIVRE DU TURBO BASIC
TURBO BASIC est le nouveau compilateur BASIC ultra rapide de BORLAND pour
1BM PC et Compatibles. Adopté rapidement par de nombreux programmeurs,
ce nouveau BASIC avait besoin d'étre détaillé. Véritable manuel d‘apprentis-
sage “LE LIVRE DU TURBO BASIC" a une vocation didactique.
S‘adressant tout particuliérement aux programmeurs débutants, il pré-
sente progressivement et par ordre de complexité, les commandes du
TURBO BASIC. Agrémenté de nombreux exemples qui illustrent les com-
mandes décrites et les algorithmes présentés, “LE LIVRE DU TURBO BASIC”
évite néanmoins les considérations trop techniques et constitue une intro-
duction pratique 4 ce nouveau compilateur BASIC.
Description de I’éditeur — Installation du TURBO BASIC — Les bases du
TURBO BASIC : boucles, gestion de données, variables, fonctions — Des
applications en TURBO BASIC : traitement de données, gestion de fichiers
— Quelques particularités de TURBO BASIC : liaison avec le langage
machine, gestion des interfaces... — Présentation de TURBO BASIC en
quelques pages : liste des fonctions avec leur syntoxe et une description
trés courte — Les différences entre TURBO BASIC et GW BASIC. .
— /acenu | ——_—_—_—_—_—_—_—_—_.. nea
/ Yvan KOENIG —GsBasic / —
French.Using
Le GSBASIC souffre, & mes yeux, d'une tare insi-
gne : son Print Using ne sait pas imprimer en
francais. Une fois encore, le passeport de J.-L.
Gassée ne lui a pas rappelé quelles sont les exi-
gences de sa langue maternelle.
Pendant que mon ami Emile SCHWARZ met la
derniére main & son guide du GSBASIC, il m'a
semblé utile de combler cette lacune déplorable.
Il s'agit, je l'espére, d'une formule provisoire,
car j‘ai demandé aux auteurs du GSBASIC d’ajou-
ter une option ‘F’ dans la syntaxe de leur Print
Using ('F' pour format Frangais).
Mon petit programme fait appel 4 des fonctions
qui, si elles sont nouvelles pour les habitués de
\'APPLESOFT, sont familigres aux adeptes du
BUSINESS BASIC de I'APPLE /i//.
* IMAGE permet de définir un format d'affichage.
* Structure ‘procédure’, localisée par le GS-
BASIC lors du chargement du programme, et
de ce fait accessible rapidement, alors
qu'une routine exige un balayage du pro-
gramme 4 chaque appel.
* Utilisation du fichier virtuel de 255 octets
‘MEMBUFR’. On initialise le pointeur sur ce
tampon en y écrivant un RETURN. Ensuite, on y
inscrit le nombre @ traiter selon le format
retenu. On extrait de ce tampon la chaine for-
matée et on utilise les commandes INSTR( et
SUB$ pour remplacer les caractéres incorrects.
Cette solution est sans doute pénalisante en
terme de vitesse d'exécution, mais la version
compilée par TML.BASIC devrait améliorer ses
performances. Afin de limiter autant que possi-
ble le ralentissement lié & la manipulation pro-
posée, j'ai choisi la formule ‘procédure’ dont
l'appel s'exécute plus rapidement que celui
d'une routine. En outre, le recours a
DO__WHILE_UNTIL m‘a permis d’exclure de la
‘procédure’ tout GOTO / GOSUB.
Il serait judicieux de commencer par saisir les
lignes de la procédure et de les ‘capturer’ dans
un fichier TXT (FRENCHU.PROC par exemple). A
l'avenir, chaque fois que vous aurez besoin
d'insérer cette procédure dans un programme, il
vous suffira de taper : EXEC FRENCHU.PROC.
|
Il serait possible de réduire le nombre de lignes
de la procédure en regroupant des instructions.
Si je ne I'ai pas fait, malgré mon godt pour les
programmes compacts, c'est 4 cause d'un bug
dans la routine d'indentation de la version
actuelle du GSBASIC.
Afin de faciliter la capture d'un programme GSB
sous forme de fichier texte, je vous propose le
fichier EXEC CAPTURE. La commande directe
EXEC CAPTURE,"PATHNAME listera dans le
fichier TXT PATHNAME le programme GSBasic
en mémoire.
Pour créer ces fichiers EXEC, Schwarz vous don-
nera une formule ‘tout GSB’. Personnellement,
j'ai eu recours au bon vieil APPLEWRITER qui me
donne toujours satisfaction.
REM exec CAPTURE, "'TXTfile
home
open é1é, filtyp=TXT for output as £29
outrec=@ : indent =2
output £29 : list : output £6
outrec=80
close £29
type élé
Une variante permet de spécifier le nom du pro-
gramme GSBasic 4 charger et le nom du fichier
TXT a créer dans une seule commande.
REM exec CAPTURE2,GSBfile, TXTfile
home
load é1é
open €28, filtyp=TXT for output as £29
outrec=@ : indent =2
output £29 : list : output £6
outrec = 80
close £29
type 628
(suite page 16)
es | PACES | —
— / wan xosnic—cssasie f. — A
Enfin, pour simplifier l'exécution des listages
papier, je vous propose PAPLIST, PAPLYST et
PAPTYPE.
REM exec PAPLIST
home
open ".PRINTER”, as £1
output £1 : list
close £1
|
REM exec PAPLYST,"lignDeb-lignFin ("- liste prog complet
home
open ".PRINTER”, as £1
output £1 : list 61é
close £1
REM exec PAPTYPE,"TXTfile
home
open ".PRINTER”, as £1
output £1 : type é1é
close £1
4 exécuter avant
la 1°* impression
REM exec CONFIGIMP atin de supprimer
home lajout systémati-
assign "PRINTER", -1 que d'un LineFeed
assign ".PRINTER”,1 aprés chaque
CarriageReturn.
Si vous oubliez la syntaxe d’appel, pas de pro-
bléme, un simple TYPE execCmd affichera le
contenu du fichier EXEC sur I’écran.
Yvan KOENIG — 12 décembre 1987.
\ A
10 REM * French Using
20 REM
30 HOME
49 SHOWDIGITS=9
56 FORMAT$="++78.2Z"
60 IMAGE 20R , 26A ,20A
70 NB=1234.53
75 FS="FEFF':N =789:PV% =345
76 PRINT "F F$,"N= "N,"PV% = ";PV%
80 FORI%=0TO1
90 PROC French(FORMATS$,NB)
100 NB$=STR$(NB)
110 PRINT ~USING 60;"£","formaté",”nor
mal”
126. PRINT USING 60;"Format américain”,
US$,NB$
130 PRINT USING 60;"Format francais”,
FRS$,NBS
140 NB=-PI * NB
150 NEXT
200 PRINT
210 PRINT "F$= "F$,"N= "N,"PV%= ";PV%
900 END
65263 REM ------------ F$= format, N=nombre
65264 DEF PROC French(F$,N)
65265 REM —-----_______ sortie FR$
65266 LOCAL PV%
65267 OPEN ".MEMBUFR”, AS£29
65268 PRINT£29
65269 +PRINT£29 USING F$;N
65270 INPUT£29;FR$
65271 US$=FR$:REM sortie US$ uniquement pour démo
65272 DO:PV% =INSTR(FR$,”,”)
65273 WHILE PV%:SUBS$(FR$,PV%)=" "
65274 ~UNTIL
65275 DO:PV% =INSTR(FRS,”.")
65276 WHILE PV%:SUB$(FR$,PV%)=","
65277. ‘UNTIL
65278 CLOSE£29
65279 END PROC
P.S. : J'ai cité APPLEWRITER; ceux qui souhaitent
continuer 4 utiliser ce programme peuvent con-
tacter le support technique APPLE qui pourra
leur fournir un ensemble de patches YK permet-
tant entre autres : la recopie d'images HGR ou
DHGR, Ia présence de 3 fontes personnalisées
en mémoire et, bien entendu, l'impression possi-
ble par le port série du GS.
0 a
/ Emile ScHwaRz—APPLESOFY / —
LES ERREURS 2 12010s0r.
sous ProDOs
i 0 ONERR GOTO 63600
} 10 GOTO 100: REM Erreur intentionnelle
63580 END
63585 REM -
63590 REM Sous-Programme de traitement d'erreur
63595 REM -
63600 POKE 216,0:E = PEEK (222): TEXT HOME PRINT "Erreur n° "
63610 PRINT "A la ligne: " PEEK (219) * 256 + PEEK (218)
63620 IF E = 0 THEN PRINT "Next without for"
63630 IF E = 2 THEN PRINT "Range error"
63640 IF E = 3 THEN PRINT "No device connected"
63650 IF E = 4 THEN PRINT "Write protected"
63660 IF E = 5 THEN PRINT "End of data"
63670 IFE 6 OR E = 7 THEN PRINT "Path not found"
63680 IF E = 8 THEN PRINT "I / O error"
63690 IF E = 9 THEN PRINT "Disk full"
| 63700 IF E = 10 THEN PRINT "File locked"
| T 63710 IF E = 11 THEN PRINT "Invalid option"
63720 IF E = 12 THEN PRINT "No buffer available" Un programme
| 63730 IF E = 13 THEN PRINT "File type mismatch" d'affichage de
| 63740 IF E = 14 THEN PRINT "Program too large" I" t
H 63750 IF E = 15 THEN PRINT "Not direct command" Grreur peut se
| 63760 IF E = 16 THEN PRINT “Syntax error" construire de cette
63770 IF E = 17 THEN PRINT “Directory full" sy V
|) 63780 IF E = 18 THEN PRINT "File not open" maniere: (VOUS
| 63790 IF E = 19 THEN PRINT "Duplicate file name" trouverez, au
1 63800 IF E = 20 THEN PRINT "File busy"
|ey 63810 IF E = 21 THEN PRINT “File(s) still open" verso, la
{J 63820 IF E = 22 THEN PRINT “Return without gosub error" traduction des
| 63830 IF E = 42 THEN PRINT “Out of data"
| 63840 IF E = 53 THEN PRINT "Illegal quantity" messages et des
63850 IF E = 69 THEN PRINT "Overflow" explications
63860 IF E = 77 THEN PRINT “Out of memory" Z .
\ 63870 IF E = 90 THEN PRINT "Undef'd statement" complémentaires.
| 63880 IF E = 107 THEN PRINT "Bad subscript"
i] 63890 IF E = 120 THEN PRINT "Redim'd array"
L 63900 IF E = 133 THEN PRINT "Division by zero"
| 63910 IF E = 163 THEN PRINT "Type mismatch"
af 63920 IF E 176 THEN PRINT "String too long"
4 63930 IF E = 191 THEN PRINT "Formula too complex"
i 63940 IF E = 224 THEN PRINT "Undef'd function"
| 63950 IF E = 254 THEN PRINT "Bad response to an INPUT statement"
} 63960 IF E = 255 THEN PRINT "CTRL-C interrupt attempted"
63970 VTAB 20: PRINT "<A> = Retour Applesoft": PRINT
1) 63980 PRINT "<B> = Re-exécuter le programme: ";
Ki) 63985 GET A$: IF AS = “A” THEN TEXT : HOME : END
: 63990 IF A$ = "B" THEN CLEAR : TEXT : HOME : GOTO 1
f 63995 GOTO 63970: REM Si A$ <> "A" ou AS <> "B" GOTO 63270 (suite page 18)
} —_—_——— / nc [| —
—f/eseeess ff ————
Tableau des différents messages d’erreur ProDOS 8 et Applesoft. Dans ce tableau vous trouverez :
1. Le numéro de I'erreur. | 3. A pour erreur Applesoft ou P pour erreur ProDOS.
2. Le texte anglais de l'erreur. 4. La signification en francais de l'erreur.
Ne Texte de erreur : * Signification :
0 | Next without for A Utilisation de NEXT sans FOR
2 Range error Pp Nombre trop grand
3 | No device connected Pp Ce périphérique n'est pas connecté
4 | Write protected P Ecriture interdite sur ce disque
5 | End of data PB Fin du fichier
6 | Path not found P Fichier inconnu
7 +| Path not found P Fichier inconnu
8 I / O error P Erreur d'entrée / sortie
9 Disk full Pp Ce disque est plein
10 | File locked P Ce fichier est verrouillé
13 Invalid option Pp Cette option n'existe pas
12 | No buffer available P Pas de mémoire disponnible
13 | File type mismatch Pp Type de fichier différent
14 | Program too large Pp Programme trop grand
15 | Not direct command PB Commande 4 utiliser dans un pgm
16 | Syntax error Ap | Erreur de syntaxe
17 | Directory full Pp Catalogue principal plein
18 | File not open P Ce fichier est fermé
19 | Duplicate file name Pp Nom de fichier en double
20 | File busy Pp Ce fichier est occupé
21 | File(s) still open Pp Fichier encore ouvert
22 | Return without gosub A Utilisation de RETURN sans GOSUB
42 | Out of data A Vous avez plus de variable aprés
READ que de DATA 4 lire
53 | Illegal quantity A Nombre trop grand
69 | Overflow A Résultat trop grand pour Applesoft
77 | Out of memory A Erreur afférente a la mémoire
90 | Undef'd statement A Numéro de ligne indéterminé
107 | Bad subscript A Numéro de dimension hors tableau
120 | Redim'd array A Tableau déja dimensionné
133 | Division by zero A Division par zéro impossible
163 | Type mismatch A Type de ces variables incompatible
176 | String too long A Chaine trop grande
191 | Formula too complex A Formule trop complexe
224 | Undef'd function A Fonction inconnue
254 | Bad response to an INPUT A La donnée n'est pas du type
statement demandé dans un INPUT
255 | Ctrl-C interrupt attempted A Vous avez pressé Ctrl-C
Vous devez débuter votre programme par : ONERR GOTO numéro de ligne du sous-programme de
traitement des erreurs. La premiére ligne de ce sous-programme DOIT IMPERATIVEMENT comporter
un POKE 216,0 pour rétablir le traitement d’erreur standard. Votre S.P. peut : corriger l’erreur, puis
reprendre I’exécution du programme avec I'instruction RESUME ; afficher le message d’erreur, puis
recommencer ou terminer le programme ; soit traiter toutes les erreurs possibles (hum !) ou
seulement quelques-unes (ce qui est plus raisonnable !).
—_— / 66628 ff — —
/ RAFI DERYEGHIVAN — APPLESOFT / ——=
| STATISTIQUES
Ce programme offre deux options : (6) \ étude par classe
® ua de données numériques Prenons tout de suite un exemple : la taille
des éléves de seconde. Supposons que :
2 éléves ont une taille comprise entre 145.5 et 154.5 cm
Vous pouvez traiter les notes d'un élave,
les Gges d'un groupe de personnes, etc. 9 " 154.5 et 159.5 cm
Prenons le premier exemple: des notes | 0" " 159.5 et 164.5cm
d'un éléve au cours d'un trimestre. Suppo- | “ur "164.5 et 169.5 cm
sons qu'il a successivement obtenu : 58 . 169.5 et 174.5 cm
trois 12 cing 11 Il y a cing intervalles. La borne inférieure
z un 8 un 18 du premier intervalle est 145.5. Il faut
| deux 15 trois 13 ensuite entrer /amplitude* de chaque
Le nombre de valeurs est égal 4 6. La | intervalle, ainsi que /‘effectif. Par exem-
premiére valeur est de 12 et a un effectif | ple, le premier intervalle a une amplitude
de trois. Quand vous lui aurez fourni toutes de 9 et un effectif de 2. Les intervalles sui-
les données, l'ordinateur calculera les vants ont une méme amplitude de 5, mais
caractéristiques de la série statistique et des effectifs différents. Une fois les don-
‘ vous en proposera une représentation gra- nées entrées, |'ordinateur calculera a nou-
phique haute résolution. Les effectifs | veau les éléments caractéristiques de la
seront portés en ordonnées, et les valeurs | série, et en proposera une représentation
en abscisses. Si l'effectif maximum est : graphique. Cette fois, pas de graduation
— inférieur & 10: l'amplitude des gradua- | verticale, car c'est la surface des rectan-
tions sera de 1. gles qui est proportionnelle aux effectifs.
— compris entre 10 et 50: elle sera de 5. ATTENTION ! le programme nécessite une carte 80 colonnes.
— supérieur 450 : elle sera de 10. * ompliade = diffrence entre lo file maximum et lo taille minimum, dans chaque cotégorie
CLEAR : TEXT
LOMEM: 17900
0S = CHR (4)
PRINT DS + “PRE3" + CHR (13)
1$ = DS + “PRE1" + CHRB (13)
= DS + "PREO" + CHRS (13)
sHT = 1403
POKE HT, 24: PRINT "“#####H HHH HRHHERAEE ERE EERE RRE EEE"
POKE HT,24: PRINT "* ~ “aes
POKE HT,24: PRINT “* ETUDE DE SERIES STATISTIQUES *"
POKE HT,24: PRINT "* 2 SEDI RS Nt a ttt aa
POKE HT, 24: PRINT “#4 4#HHRHHHR EHR RHRHE EE ERERE ERE"
PRINT : PRINT : PRINT
POKE HT,10: PRINT "1 - SERIES A UNE VARIABLE ": PRINT
POKE HT,10: PRINT "2 - ETUDE PAR CLASSE”
PRINT : PRINT : PRINT
POKE HT,20: PRINT "VOTRE CHOIX :°";
GET AS: PRINT At
/ statistiques /
190 IF AS < "1" OR AS > "2" THEN CALL ~ 198: GOTO 185
195 ON VAL (A$) GOTO 200,630 F351
200 HOME : GOSUB 205: GOTO 235 BB97
205 POKE HT,29: PRINT "EERE B7cO
210 POKE HT,29: PRINT "# “"~77 7" *" E9F8
215 POKE HT,29: PRINT "* SAISIE DES DONNEES *" 729E
220 POKE HT,29: PRINT "* 777777777 uM E9F8
225 POKE HT,29: PRINT "aaa HaeEHeeoHeeeaeaaee : PRINT : PRINT + PRINT CC9C
230 POKE 34,6: RETURN 076D
235 INPUT "NOMBRE DE VALEURS :°";N 3579
240 DIM X<N) ,N<N) CESS
245 PRINT : PRINT 15AE
250 FOR I = 1 TON E10A
255 INPUT "VALEUR :~"3X<¢1) AE3E
260 VTAB PEEK (37): POKE HT,40: INPUT “EFECTIF 2° "3N¢1) EEF3
265 NEXT 0582
270 TEXT : HOME : VTAB 11: POKE HT,31: INVERSE : PRINT "7°" 7T UU
275 POKE HT,31: PRINT “ CALCUL COURS " po70
280 POKE HT,31: PRINT " see NORMAL 6F14
285 FOR 1 = 1 TON E1DA
290 Vi = V1 + XI) * NOT) 37440
295 V2 = V2 + X¢1) * XC1) # NCI) £308
300 V3 = V3 + (X¢1)) * 3 * NCI) 3B9E
305 V4 = V4 + (X¢1)) * 4 * NCI) OAA1
310 V5 = V5 + N¢I) * LOG ¢X¢I)) 187F
315 V6 = V6 + NID / XK1D FSSS
320 M=™M + N(ID 1E1A
325 NEXT 0582
330 A=V1/M CBBO
335 FOR 1 = 1 TON:E = E + NCI) * ABS (A - X¢1)): NEXT Focs
340 G = EXP (VS 7 M) 1AE8
345 H=M / V6 6BBC
350 @ = SQR (V2 / M) EOEC
355 VA=V2/M-A#A FFIC
360 ET = SOR (VA) D628
365 EM=E/M O1BF
370 M2 = (V2-2* AVI tA AM 7M 4202
375 M3 = (V3 -3*ARV2+3 FAK ARV -A* 3M ZN E110
BD M4= (V4 - 4H ARVE+E RAHA RUZ-GHATIEVI TAT A
M) /M 5c70
385 AP = M4 / M2 / M2 4F76
390 AS = M3 / M2 * 1.5 DISE
395 HOME : GOSUB 415 2C1iB
400 PRINT : PRINT : PRINT "IMPRESSION DES RESULTATS ? "j? GET BS 40EA
405 IF BS = "0" THEN PRINT "QUI" » PRINT 1%: GOSUB 415: PRINT Es: GOT
0 495 27EE
410 PRINT "NON": GOTO 495 F170
415 PRINT “CARACTERISTIQUES DE LA SERIE :" F302
420 PRINT : PRINT : PRINT 74A2
425 POKE HT,10: PRINT "NOMBRE D’ELEMENTS....+ =; SM O3CF
430 POKE HT,10: PRINT "VARIANCE..+++eeees ;VA DpoSS
435 POKE HT,10: PRINT "ECART-TYPE . ser 6590
440 POKE HT,10: PRINT "ECART MOYEN..++++++++ "3EM
/ pacezo /
imme
/ RAFI DERYEGHIYAN — APPLESOFT /
445 POKE HT,10: PRINT "MOYENNE ARITHMETIQUE.
450 POKE HT,10: PRINT “MOYENNE GEOMETRIQUE..
455 POKE HT,10: PRINT "MOYENNE QUADRATIQUE..
460 POKE HT,10: PRINT "MOYENNE HARMONIQUE....
465 POKE HT,10: PRINT "MOMENT D’ORDRE 2........
470 POKE HT,10: PRINT "MOMENT D’ORDRE 3...
2 "5A cESB
"36 6F4a4
"30 8c4p
“3H 8A25
"3M2 O8AD
“3M3 COAF
475 POKE HT,10: PRINT "MOMENT D’ORDRE 4......eeee0008 "GM4 csBi
480 POKE HT,10: PRINT "COEFFICIENT D’APLATISSEMENT..: "jAP 6820
485 POKE HT,10: PRINT "COEFFICIENT D’ASSYMETRIE.....: "jAS 90D9
490 RETURN 6381
495 PRINT : PRINT "“YVOULEZ-VOUS UNE REPRESENTATION GRAPHIQUE DES RESUL
TATS ? "3: GET BS 956D
500 IF B& = "0" THEN PRINT "QUI": ON VAL (A$) GOTO 510,685 06BE
505 PRINT "NON": END Agda3
510 HOME : HGR : HCOLOR= 3 5Dé1
515 HPLOT 2,10 TO 2,159 TO 279,159 CC3E
520 NI = - 1: FORI = 1 TON 4775
525 IF NCI) > NI THEN NI = N(I):10 = I 8CDA
530 NEXT 0582
535 GY = 150 / NI 1D68
540 GX = 270 / N:X0 = 9:0 = 159 F61E
545 FOR I = 1 TON E108
550 YH = N¢I) * GY 54C3
555 HPLOT X0,Y0 TO X0,Y0 - YH TO XO + GX,YO - YH TO XO + GX,YO 296C
560 XO = X0 + GX: NEXT 4E03
565 HOME penisde
570 VTAB 21: PRINT "MODE DE LA SERIE :°";X¢10);: POKE HT,40: PRINT "E
FFECTIF :~*;N(I0) 41c2
575 YO = 159:X0 = 2 158C
580 P= 1 * (NI < = 10) + 5 * ((NI > 10) AND (NI ¢ = 50)) + 10 * (N
1 > 50) 92FF
585 FOR I = 0 TO NI STEP P 7€39
590 Y = YO - I * GY 8S2E
595 HPLOT XO - 2,¥ TO XO + 2,Y: NEXT 901F
600 PRINT : PRINT "VOULEZ-VOUS SAUVEGARDER L’ECRAN SUR DISQUETTE ? ";
: GET BS E4B0
605 IF BS = "N" THEN PRINT "NON": TEXT : HOME : END 8F70
610 PRINT “OUI" CSEB
615 INPUT "NOM DU FICHIER :~";NS 33AC
620 PRINT D$"BSAVE"NS" ,A$2000 ,L$1FFF* OFF
625 HOME : TEXT : END 7614
630 HOME : GOSUB 205 1618
635 INPUT "NOMBRE D’INTERVALLES :°"jN: PRINT F056
$40 INPUT "BORNE INFERIEURE DU PREMIER INTERVALLE :°";8:BI = B 8210
645 DIM X<N),N(ND ACN): PRINT : PRINT BEBA
650 FOR I = 1 TON E1DA
655 PRINT "INTERVALLE NUMERO “;1;" 3"; 67A2
660 POKE HT,30: INPUT “AMPLITUDE : 6E1B
665 VTAB PEEK (37): POKE HT,55: INPUT "EFFECTIF :~";N¢I) 123F
670 BO = B + ACI):X(1) = (B + BO) / 2:B = BO DéAB
675 NEXT 0582
680 GOTO 270 4544
685 HOME 2F97
690 HGR : HCOLOR= 3 F190
/ Pace 21 /
/ stamistigues /
695 HPLOT 2,10 TO 2,159 TO 279,159
700 =
705 270 / AM
710 - i:NI = - 1: FORI =
715 1) > NI THEN NI = N(I):10 =
720 (1) 7 ACID
725
730
735
740
745
750
755
760 XO = XO + X: NEXT
765 FORI = 17010 -1
770 BI = BI + ACI): NEXT
775 HOME : VTAB 21:
780
785
GOTO 600
PROGRAMMATION STRUCTUREE
+) ASSEMBLEUR
bo02
1 TO N:AM = AM + ACI): NEXT
1 TON
I
PRINT "CLASSE MODALE :~
POKE HT,50: PRINT “EFFECTIF :~";N¢10)
HPLOT X0,Y0 TO X0,Y TO XO + X,Y TO XO + X,YO
qB13" 3 “sBI + ACID 3"S"3
TROIS BONS OUVRAGES MASSON SUR L’ASSEMBLEUR
Quatre auteurs (J.-P. Malengé, S. Albertsen, P.
Collard et L. Andréani) pour une série d’ouvra-
ges* que je trouve remarquables : la program-
mation structurée en Assembleur 6502 (et
65C02), 68000 et 8086 (ou 80286). Le but des
auteurs était de montrer qu'il est tout 4 fait pos-
sible de normaliser la programmation en assem-
bleur. Ils y parviennent avec bonheur.
Evidemment, on s‘en doute, ma préférence va au
volume consacré au 6502, mais il est fort intéres-
sant de comparer, pour des exemples identi-
ques, les instructions utilisées par les trois mi-
— / Pace22 /
croprocesseurs. Je ferai néanmoins un léger
reproche aux auteurs : pourquoi avoir adopté
l'assembleur Lisa (dans le volume 6502), alors
qu'il existe un ProCODE frangais ?
Notez que le dernier chapitre de chaque cours
(c'est le mot qui convient) fournit au lecteur la
possibilité de concevoir un petit éditeur de texte
(attention ! ce n'est pas un logiciel, mais une
application élémentaire expliquée).
Un veeu : que MASSON poursuive cette politique
d'édition ! NESTOR.
* De 152 6 184 pages. format 17,5 X 24, broché !
/ Philippe BoRDAS — APPLEsoFT / —
ETICSOFT DISK
DISK est un éditeur d’étiquettes pour classement de disquettes. II fonctionne sous
PRODOS et utilise quatre polices de caractéres personnalisés. L'impression s'‘effec-
tue sur l'imprimante IMAGEWRITER, avec possibilité d'imprimer huit étiquettes iden-
tiques de format 89 X 36.
Le programme utilise la routine CARAC.CH, parue dans le n°6 de TREMPLIN MICRO,
qui permet I’envoi des caractéres personnalisés 4 |'imprimante.
DISK propose des petits catalogues permettant de limiter les entrées au clavier. C’est
par exemple le cas pour la catégorie du programme, le copieur et le DOS. L'affichage
des divers choix et la sélection s'effectuent en frappant respectivement sur la barre
d’espacement et sur la touche FGM. A ce sujet, l'utilisateur, s’il le désire, peut
compléter ces catalogues en incrémentant les variables TI ou PC ou DO des lignes
1360 ou 1560 ou 1700 en fonction du nombre d’éléments 4 ajouter.
pete C tLe Creer errrrrrrerer ere rrerrres Attention ! Philippe BORDAS stocke
% les fontes de caractéres & partir de
Vedresse $4000. Votre programme
ETICSOFT : DISQUETTES *
BORDAS Philippe * ne doit donc pas dépasser $3FFF.. ce
1987 * qui sera le cas si vous tapez toutes
* les lignes de REM.
*
REAR REEL EE EERE EEK RHEE AEA KERER ARE
DETECTION DES ERREURS
POKE 216,0: POKE 838,104: POKE 839,168: POKE 840,104: POKE 841,16
6: POKE 842,223: POKE 843,154: POKE 844,72: POKE 845,152: POKE 84
6,72: POKE 847,96
ONERR GOTO 4230
REM INITIALISATION DES VARIABLES
DS = CHRS (4): PRINT
PRINT DS"PRE3"
HOME : INVERSE
PRINT " “>>>>> ETICSOFT : DISQUETTES 1987
NORMAL N'oubliez pas de taper
POKE 34,1 lindispensable CARAC.CH
ES$ = CHR$ (27): HOME (c'est lui qui permet l'envoi
K = 1: PRINT des caractéres
PRINT D$"BLOAD CARAC.CH" personnalisés &
K=2 Vimprimante
GOSUB 1360 IMAGEWRITER)
REM LECTURE ET CONTROLE DE LA DATE
/ Pace23 /
/ evicsorr-pisk /
280 GOSUB 820
290 REM LECTURE ET CONTROLE D’UNE REPONSE
900 REM qq-<e8r a eee ene rerrr sas te
310 HOME
320 MESS$ = "VOULEZ-VOUS EDITER UNE ETIQUETTE ‘O/N) ? *
330 GOSUB 1280
340 REM POUR CHAQUE ETIQUETTE
360 IF REPS = "N" THEN GOTO 770
370 REM LECTURE ET CONTROLE DU No. DE LA DISQUETTE
380 REM ---------------------------------------0--
390 ER = 0
400 GOSUB 1800
410 REM GESTION DE LA FACE A ;
420 REM -------------------- io
430 FC$ = "A": GOSUB 2350 de vores RN)
440 Tas = TYPES n a
450 Cas = COPS : cal eTURN) infer on
460 DAS = DOSS + 69.8 se JOM ig lire
470 PAS = NMS Ne):
480 AA = ANNEE
490 REM GESTION DE LA FACE 8
510 HOME
520 MESS$ = " LA FACE B A T-ELLE LA MEME DESIGNATION QUE LA FACE A (0
ANY: 3? ©
530 GOSUB 1280
540 IF REPS = "Q" THEN GOTO 620
550 FCS = "B": GOSUB 2350
560 TBS = TYPES
570 CBS = COPS
580 DBS = DOSS
590 PBS = NMS
600 AB = ANNEE
610 GOTO 690
620 TBS = TAS
630 CBS = CAS
640 DBS = DAS
650 PBS = PAS
660 AB = AA
$70 REM LECTURE ET CONTROLE DU COMMENTAIRE
680. REM senene ss
690 GOSUB 2130
700 REM EDITION DE L’ETIQUETTE
710 REM s~osedesemeressenen—
720 GOSUB 3190
730 MESS$ = "VOULEZ2-VOUS EDITER UNE AUTRE ETIQUETTE “(O/N) 7? "
740 GOSUB 1280
750 IF REPS = "N" THEN GOTO 770
760 GOTO 400
770 HOME : ONERR
790 END
800 REM ROUTINE DE LECTURE ET CONTROLE DE LA DATE
810 REM = =a ==
/ pace2a /
2F9?
Bi4dA
6578
6E27
6297
6979
ESBS
CéEF
637E
5683
£644
3FB9
2°97
251C
6578
F322
F287
86F0
AB?7F
C884
9945
COBA
01448
E743
9221
E23
993B
1505
8776
807D
9B0B
6578
6E27
OF3F
4476
0180
/ Philippe BorDAS — APPLESOFT /
820 REM LECTURE DU JOUR
1F17
850 POKE 36,33: VTAB @: PRINT "ENTRER LA DATE :" 3F15
860 POKE 36,33: VTAB 9: PRINT " : AIFI
870 POKE 36,H: VTAB V 66c8
880 PRINT "../ 3370
890 POKE 36,H: VTAB V: GET AS A825
900 IF <A’ < "O") OR (AS > "3") THEN POKE 36,H: VTAB VU: GET As: GOTO
900 5209
910 PRINT As DIIF
920 URS = AS 4DF5
930 POKE 36,H + 1: VTAB V: GET As 421E
940 IF JR$ = "0" THEN IF (AS < "1") OR (AS > "9") THEN POKE 36,H +
1: UTAB Vi GET A$: GOTO 940 F352
950 IF JR$ = "3" THEN IF (AS < "O") OR (AS > "1") THEN POKE 36,H +
1: VTAB V: GET AS: GOTO 950 724D
960 IF JR$ < "3" THEN IF (AS < “O") OR CAS > "9") THEN POKE 36,H +
1: VTAB V: GET A$: GOTO 960 5F57
970 PRINT AS DIIF
980 DTES = "Date :°" + URS + AS 86462
990 REM LECTURE DU MOI
1000 REM - --
1010 POKE 36,H + 3: VTAB V: GET As 5020
1020 IF (AS < "O") OR (AS > "1") THEN POKE 36,H + 3: VTAB V: GET AS:
GOTO 1020 4EFC
1030 PRINT As DIIF
1040 MS$ = AS E2F9
1050 POKE 36,H + 4: UTAB V: GET As 3521
1060 IF MS$ = "0" THEN IF (AS < "1") OR (AS > "9") THEN POKE 36,H +
4: VTAB V: GET AS: GOTO 1060 5483
1070 IF MS$ = "1" THEN IF (AS < "O") OR (AS > "2") THEN POKE 36,H +
4: VTAB Vr GET A$: GOTO 1070 FF7D
1080 PRINT As DIF
1090 DTES = DTES + "/" + MSS + As 50cé
1100 REM LECTURE DE L’ANNEE
1110 REM ------------------
1120 POKE 36,H + 6: VTAB V: GET As co23
1130 IF (AS <¢ "S") OR (AS > "9") THEN POKE 36,H + 6: VTAB V: GET AS:
GOTO 1130 9211
1140 PRINT As DIF
1150 ANS = As 20€8
1160 POKE 36,H + 7: UTAB U: GET As 5724
1170 IF ANS = "8" THEN IF (AS ¢ "7") OR (AS > "9") THEN POKE 36,H +
7: VTAB V: GET A$: GOTO 1170 c08s
1180 IF ANS < "8" THEN IF (AS ¢ "0") OR (AS > "9") THEN POKE 36,H +
7: VTAB V: GET AS: GOTO 1180 7E80
1190 PRINT As DIIF
1200 DTES = DTES + "/" + ANS + AS AgBS
1210 VTAB 20: POKE 36,36: PRINT "OK (O/N) ? " 6183
1220 UTAB 20: POKE 36,47: GET REPS EIFA
1230 IF (REPS < > "O") AND (REPS < > “N") THEN GOTO 1220 AECB
1240 IF REPS = "N" THEN UTAB 20: POKE 36,1: PRINT SPC( 80):V = 13:H
= 37: GOTO 870 11E7
1250 RETURN 6381
/ Pace2s /
/ evicsorr-pisx /
1260 REM ROUTINE DE LECTURE ET CONTROLE D/UNE REPONSE
1270 REM ====: Sosa
1280 HOME 2F97
1290 H = (80 - LEN (MESS$)) / 2:V = 12 52EA
1300 VTAB 12: POKE 36,H: PRINT MESS$ pe2s5
1310 POKE 36,H + LEN (MESS$): VTAB V: GET REPS 9923
1320 IF (REP$ < > "0") AND (REPS < > "N") THEN POKE 36,H + LEN (ME
SS$): VTAB V: GET REP$: GOTO 1320 9429
1330 RETURN 63B1
1340 REM ROUTINE D’INITIALISATION DES VARIABLES
1360 TI = 19: DIM TIS<TI) B546 1570 224C
1370 T1$(1) = "GRAPHISME" 47F7 1580 SO4E
1380 TI$(2) = "TRAIT. TEXTE" 8BB4 1590 9850
1390 T1$¢3) = *LANGAGE" £048 1600 O9A0
1400 TI$(4) = "TABLEUR” OFS? 1610 A27E
1410 TI$(5) = "INTEGRE" C269 1620 0280
1420 T1$(6) = "SONORE" 3A32 1630 A182
1430 T1$(7) = "GESTION" 7076 1440 3100
1440 TI$(8) = "EDITEUR" 6F70 1650 OF BC
1450 TI$(9) = "UTILITAIRE" EESB 1660 PC$(10) = "DM2.0" O79
1460 TI$(10) = "COPIEUR" 149E 1670 PCS(11) = "II+ 4" 318F
1470 TI$(11) = "GRAPH. IMPR." 1BAE 1680 PC$(12) = "I1+ 6" BE92
1480 T1$(12) = "ARCADE" 7529 1690 PC$(13) = "II+ 7" 1094
1490 TI$(13) = "AVENTURE" 18F4 1700 DO = 6: DIM DOS<DO) 41F4
1500 TI$(14) = "ROLE" 528) 1710 DO$<1) = "3.3" SSE1
1510 TI$(15) = "SIMULATION" 0291 1720 DOs<2) = "3.2" E7E1
1520 TI$(16) = "EDUCATIF" 4E02 1730 DO$¢3) = "PRO" 2540
1530 T1$(17) = "ECHECS" 5C39 1740 DOs<4) = "Pas" 9934
1540 T1$(18) = "REFLEXION" 1838 1750 DO$<5) = "CPM" 8D31
1550 T1$(19) = "AUTRE" 3F11 1760 DO0$(6) = "SPE" 803A
1560 PC = 13: DIM PCS<PC) 6822 1770 RETURN 63B1
1780 REM ROUTINE DE LECTURE ET CONTROLE DU No. DE LA DISQUETTE
1790 REM ==ssssssssssss=====
1800 HOME :V = 13:H = 38:0K = 0 8BEC
1810 POKE 36,25: VTAB 8: PRINT "ENTRER LE No. DE LA DISQUETTE :" 63F5
1820 POKE 36,25: VTAB 9: PRINT “ a A583
1830 POKE 36,H: VTAB V: PRINT "...." AFBS
1840 REM LECTURE ler CARACTERE
1850 REM ---------------------
1860 POKE 36,H: VTAB V: GET At 4825
1870 IF OK = 1 THEN GOTO 1930 CAg4
1880 IF A$ < "0" THEN POKE 36,H: VTAB V: GET A$: GOTO 1920 EAF!
1890 IF (A$ > "9") AND (A$ < "A") THEN POKE 36,H: VTAB V: GET A$: GOT
0 1920 5522
1900 IF AS > "2" THEN POKE 36,H: VTAB VY: GET AS: GOTO 1920 EDI?
1910 OK = 1
1920 GOTO 1870
1930 PRINT AS
1940 NOS = AS
/ Philippe BorpaAS — apPLEsoFT /
1950 REM LECTURE CARACTERES SUIVANTS
1960 REM) —--—- nannies
1970 1 =1 6344
} 1980 IF I > = 4 THEN GOTO 2100 BOFB
1990 POKE 36,H + I: YTAB V: GET AS 8736
2000 IF A’ = CHR (8) THEN IF I = 1 THEN V = 13:H = 38:0K = 0: GOTO
1860 9SA0
2010 IF A’ = CHR$ (8) THEN IF I > 1 THEN I = I - 1:NO$ = LEFT$ (NOS
+1): POKE 36,H + I: YVTAB V: PRINT ".": GOTO 2090 ESF
2020 IF A’ = CHR (13) THEN LET I = 5: GOTO 2090 DAEA
4 2030 IF A’ < "0" THEN GOTO 2090 0691
| 2040 IF (A$ > "9") AND (AS < "A") THEN GOTO 2090 BAC2
2050 IF A’ > "2" THEN GOTO 2090 84B9
2060 1=1+4+1 8058
| 2070 NOS = NOS + AS 817F
2080 PRINT AS DIF
4 2090 GOTO 1980 $170
| 2100 RETURN 6381
2110 REM ROUTINE DE LECTURE ET CONTROLE D’UN | COMMENTATRE
2120
2130 MESS$ = "COMMENTAIRES <0/N) ? " 0263
2140 GOSUB 1280 6578
2150 IF REP$ = "0" THEN GOTO 2170 9054
2160 RETURN 63B1
2170 HOME :H = 15:V = 14: POKE 36,33: VTAB 9: PRINT “COMMENTAIRES :":
POKE 36,33: VTAB 10: PRINT "
2180 POKE 36,H: VTAB Vs PRINT “wosecseves de eeeweene eee ceeereceeeveees
Fécs
FAFC
2190 1 = 0:Cs aa A3FE
2200 IF I > = 50 THEN GOTO 2290 0136
2210 POKE 36,H + I: VTAB V: GET AS B736
2220 IF A$ = CHRS (13) THEN GOTO 2290 DIBA
2230 IF AS’ = CHRS (8) THEN GOTO 2300 F386
2240 IF (AS = CHR$ (100) OR (A$ = CHRS (11)) THEN GOTO 2280 FBFS
2250 IF A’ = CHRS (21) THEN AS = " "; GOTO 2260 7B89
2260 C$ = C$ + AS: PRINT A GA24
2270 1=1+4+1 80SB
2280 GOTO 2200 SS6F
2290 C$ = " Commentaires :°" + C$: RETURN 1EBS
2300 IF 1 = 0 THEN GOTO 2200 8B29
2310 IF I = 1 THEN I = O:C$ = "": POKE 36,H: VTAB V: PRINT ".": GOTO 2
200 c3CA
2320 IF 1 > 1 THEN I = I - 1:C$ = LEFT$ (C$,1): POKE 36,H + I: VTAB V
: PRINT ".": GOTO 2200 A7BE
2330 REM ROUTINE DE GESTION D’UNE FACE
2340 REM — ==
2350 REM TYPE
2360 REM ----
2370 HOME 2F97
2380 VTAB 4: POKE 36,25: PRINT "CARACTERISTIQUES DE LA FACE “;FC$;" :* FOIF
2390 VTAB S: POKE 36,25: PRINT " 7F
VTAB 9: POKE 36,28: PRINT “Catégorie : " 9849
/ Pace27 /
_
/ evicsorr-pisx /
2410
2420
2430
2440
2450
2460
2470
2480
2490
2500
2510
2520
2530
2540
2550
2560
2570
2580
2590
2600
2610
2620
2630
2640
2650
2660
2670
2680
2690
POKE 36,12: VTAB 22: INVERSE : PRINT ">>>
“LES ““DIVERS ““CHOIX “"""""<<<"
POKE 36,16: VTAB 23: PRINT ">>> ~~~"~”~<RETURN>
NER “>> >" <<<" 3 NORMAL
r2=1
VTAB 9: POKE 36,40: PRINT TI$(1); SPC¢ 10)
VUTAB POKE 36,39: GET AS
IF A¥ = CHRS (13) THEN GOTO 2500
IF AS < > CHRS (32) THEN GOTO 2450
T=1 + 1: IF 1 > TI THENI =1
GOTO 2440
TYPES = TIS(1)
IF LEFT$ ¢TYPE$,5) < > "AUTRE" THEN GOTO 2680
POKE 36,40: VTAB 9: PRINT “..cveccscoee”
1 = O:TYPES = "":H = 40:V = 9
IF I > = 12 THEN GOTO 2680
POKE 36,H + I: VTAB V: GET AS
IF A’ = CHR (13) THEN GOTO 2680
IF A$ = CHRS (8) THEN GOTO 2630
<ESPACE>
“POUR ~
~“ POUR
SELECTION
IF (AS = CHRS (10)) OR (AS = CHRS (11)) THEN GOTO 2620
IF AS CHR$ (21) THEN AS = " ": GOTO 2600
TYPES = TYPES + A$: PRINT AS
Ts1+1
GOTO 2540
IF I = 0 THEN GOTO 2540
IF I] = 1 THEN LET I = O:TYPE$ = "": POKE 36,H: VTAB V: PRINT "."
: GOTO 2540
IF 1 > 1 THEN LET I = 1 - 1:TYPES = LEFT® <TYPE$,1): POKE 36,H
+ 1: VIAB VY: PRINT ".": GOTO 2540
REM COPIEUR
REM -~-~----
VTAB 20: POKE 36,10: PRINT “ Copieur :°.....
o- aL) Fc
1=1
bos 3°.
2700 VTAB 20: POKE 36,21: PRINT PC8<I)
2710 VTAB 20: POKE 36,20: GET As
2720 IF A$ = CHR$ (13) THEN GOTO 2740
2730 IF A$’ < > CHR$ (32) THEN GOTO 2710
2740 1 = 1+ 4: IF I > PC THEN LET 1 =1
2750 GOTO 2790
2760 COPS = PCS(I)
2770 REM DOS
2780 REM ---
2790 1 = 1
2800 VTAB 20: POKE 36,46: PRINT DO$<1)
2810 VTAB 20: POKE 36,45: GET As
2820 IF A’ = CHR$ (13) THEN GOTO 2940
2830 IF A$ < > CHR (32) THEN GOTO 2810
2840 1 = 1+ 1: IF I > DO THEN I = 1
2850 GOTO 2800
2860 DOSS = DOI)
2870 REM ANNEE
2880 REM -----
2890 POKE 36,1: YTAB 22: PRINT SPC¢ @0): POKE 36,1: VTAB 23: PRINT $
PC 80)
/ Pacezs /
034C
711E
634A
869E
212C
DIB4
£789
$905
2A75
4691
9C51
C927
AgaC
2337
B736
F3BD
208C
CFF3
9EB7
bC22
8058
6B76
A930
0A7A
136D
c3co
634A
2134
2448
DIBC
£188
FEAS
3074
8527
63448
1E38
8152
2EBD
2789
43FB
4975
4E28
/ Philippe BorDAS — APPLESOFT /
2900 VTAB 20: POKE 36,69: GET AS ocss
2905 IF A$ = CHRS (13) THEN POKE 36,60: VTAB 20: PRINT " 7
":ANNEE = 0: GOTO 3010 5936
2910 IF {AS < "7") OR (AS > “9") THEN POKE 36,69: VTAB 20: GET A$: GO
TO 2910 cc4c
2920 PRINT AS D1iF
2930 ANNEE = VAL (AS) * 10 DOFD
2940 POKE 36,70: VTAB 20: GET AS 3050
2950 IF ANNEE = 70 THEN IF (AS < "7") GR (AS > "9") THEN POKE 36,70:
VTAB 20: GET A$: GOTO 2950 9057
2960 1F ANNEE > 70 THEN IF ‘AS < "O") OR (AS > "9") THEN POKE 36,70:
VTAB 20: GET A$: GOTO 2960 2450
2970 PRINT At DIIF
29780 ANNEE = ANNEE + VAL (A$): IF STR& (ANNEE) > RIGHTS (DTES,2) TH
EN VTAB 20: POKE 36,49: PRINT “..": GOTO 2900 S4EF
2990 REM NOM
3000 REM ---
3010 H = 30:4 = 14 cD40
3020 POKE 36,21: VTAB 14: PRINT “Face "jFCS3" ts” sccecsceseveveece seeee
oe 3F42
3030 pia DBSS
3040 1F 1 > = 28 THEN GOTO 3130 FE35
3050 POKE 36,H + I: VTAB V: GET AS B736
3060 IF A’ = CHRS (13) THEN GOTO 3130 D1B4
3070 IF AS = CHR (8) THEN GOTO 3140 2E89
3080 IF (A$ = CHRS (10)) OR (AS = CHRS (11)) THEN GOTO 3120 EBEF
3090 IF A$ = CHRS (21) THEN AS = " ": GOTO 3100 9683
3100 NM& = NMS + AS: PRINT AS ABD4
30 TST +1 8058
3120 GOTO 3040 5B72
3130 RETURN 6381
3140 IF I = 0 THEN GOTO 3040 bB2c
3150 IF 1 = 1 THEN I = O:NM% = "": POKE 36,H: VTAB V: PRINT ".": GOTO
3040 A625
3160 IF I > 1 THEN I = 1 - 1:NMS% = LEFT (NM$,I1): POKE 36,H + I: VTAB
Us PRINT ".": GOTO 3040 BA71
3170 REM ROUTINE D’EDITION DE L’ETIQUETTE
3180 REM =s=ss==sssss=ss=ss=s============
3190 HOME 2F97
3200 MESS$ = "ETIQUETTES POSITIONNEES (0/N) ? " E?F9
3210 GOSUB 1280 6578
3220 1F REPS = "N" THEN GOTO 4020 1FaF
3230 HOME : POKE 36,21: VTAB 12: PRINT "NOMBRE D’ETIQUETTES A EDITER ¢
0/8)?" ccig
3240 POKE 36,58: VTAB 12: GET AS E757
3250 IF (AS < "0") GR (AS > "8") THEN GOTO 3240 C3AF
3260 NE = VAL (AS) OCFE
3270 1F NE = 0 THEN GOTO 4010 OF74
3280 HOME : VTAB 11: POKE 36,27: INVERSE : PRINT "
s:": VTAB 12: POKE 36,27: PRINT ": EDITION “El
POKE 36,27: PRINT “:
3290 PRINT ES$; CHR$ ¢7)
3300 FOR P = 1 TO NE
3310 D$ = CHRS <4)
PRINT D$"BLOAD BYTE.SET,A$4000"
PRINT : PRINT : PRINT : PRINT
PRINT D$"PRE1"
PRINT ES$;"LO01";
PRINT CHR$ (24);
PRINT ES$"#";
PRINT ES$"TO1";
PRINT CHR$ (14) ;ES$"q";
GOSUB 4150
PRINT NO$;: PRINT CHR$ (15)
‘PRINT D$"PREO"
PRINT D$"BLOAD OUTLINE.SET,A$4000"
PRINT D$"PRE1"
GOSUB 4150
PRINT ES$"r";: PRINT : PRINT : PRINT : PRINT : PRINT : PRINT ;
eto a Tags = *S TBS
PRINT ESS"#";
PRINT ES$"T03";: PRINT : PRINT : PRINT
PRINT ES$"X";
PRINT ES$*TO1";
PRINT ES$"Y"
PRINT D$"PREO"
REM CORPS
PRINT D$"BLOAD BYTE.SET ,A$4000"
PRINT D$"PRE1"
PRINT ES$"TOS";
GOSUB 4150
PRINT ES$"T16";
PRINT ES$"e";
LA = 29 - LEN <PA$):LB = 29 - LEN (PBS)
PRINT ES$"X";"FACE A" ;ES$"Y";" :°"3PA$; SPC LA) ;ES$"Q";
IF AA = 0 THEN GOTO 3668
PRINT " (C) 19"5;AA;
PRINT ES$"TO1" ;ESS"e" ;ES$"T16";
PRINT ES$"X";"FACE BY ;ESS"Y";" :°";PB$; SPC¢ LB) ;ES$"Q";
IF AB = 0 THEN GOTO 3688
PRINT " (C) 19";AB;
PRINT ES$"T05"
PRINT ES$"N";
PRINT ES$"X";
PRINT
PRINT ES$"TO1";
PRINT " cooooo*
PRINT ES$"TO1";
PRINT ES$"Y"
PRINT DS"PREO"
PRINT D$"BLOAD BLIPPO.SET ,A$4000"
PRINT D$"PREi"
3810
3820
3830
3840
3850
3860
3870
3880
3890
3900
3910
3920
3930
3940
3950
3960
3970
3780
3990
4000
4010
4020
4030
4040
4050
4060
4070
4080
4090
4100
4110
4130
4140
4150
4160
4170
4180
4190
4200
4210
4220
4230
4240
4250
4260
4270
4280
4290
/ Philippe BorDAS — APPLESOFT /
PRINT ES$"T04"; 8FAD
GOSUB 4150 AI7A
PRINT ES$"O"; $946
PRINT " Copieur :°";CA$;"-";CBS;" ~~";"DOS :°";DA%;"-";DB$;" "°°"
;DTES 5090
PRINT DS"PREO" 3ASB
PRINT D$"BLOAD TM2.SET ,A$4000" SF2A
PRINT DS"PRE1" 3csc
PRINT ES$"T02"; 93AB
GOSUB 4150 AP7A
PRINT ESS"P"; S5B45
PRINT C%: PRINT : PRINT 6co?
PRINT ES$"c" B9FD
PRINT 75BA
PRINT DS"PREO" 3ASB
NEXT P AFD2
PRINT D$"PRE3" 305E
INVERSE 3D9E
PRINT " ~>>>>> “77 UT ~“ETICSOFT +” DISQUETTES 1987
_ ae SS RERES =O 11BF
NORMAL 3B9D
POKE 34,1 8A7D
RETURN 63B1
VTAB 15: POKE 36,20: PRINT "1- IMPRESSION DE L’ETIQUETTE" D4Aa7
VTAB 16: POKE 36,20: PRINT "2- EDITION D’UNE AUTRE ETIQUETTE" 2BA4
VTAB 17: POKE 36,20: PRINT "3- QUITTER LE PROGRAMME" 9355
VTAB 19: POKE 36,20: PRINT “VOTRE CHOIX :°" Fid3
VTAB 19: POKE 36,33: GET AS D257
IF (AS < "1") OR (AS > "3") THEN GOTO 4060 SCAC
PRINT AS D1IF
IF AS = "1" THEN GOTO 3230 E48E
IF At "2" THEN IF ER = 1 THEN GOTO 730 036A
IF A$ = "2" THEN RETURN BOCD
HOME : ONERR 4476
END 0180
REM ROUTINE DE CHARGEMENT D’UNE POLICE DE CARACTERES
PRINT ES$"N": PRINT CHR$ (9)"80N": PRINT CHR$ (15); CHR (9)"2" Dba
CALL 768: PRINT ES$"D 0" 51B9
PRINT D$: PRINT ES$"’"; 4378
RETURN $381
REM ROUTINE DE GESTION DES ERREURS
REM sosssessssssssssssssssss5==
CALL 838:ER = 1
IF PEEK (222)
IF PEEK (222)
END
HOME ; INVERSE : VTAB 9: POKE 36,29: PRINT “iis: prssrs 3
": YVTAB 10: POKE 36,29: PRINT ": ERREUR DE FICHIER :": VTAB 11: P
6 THEN GOTO 4270
3 THEN GOTO 4310
wou
OKE 36,29: PRINT ": NORMAL 5227
GOSUB 4350 7E7C
IF K = 1 THEN GOTO 220 25FC
/ evicsorr-pisx /
4300 HOME : GOTO 4020
4310 HOME : VTAB 8: POKE 36,27: INVERSE : PRINT “: wre $3
VTAB 9: POKE 36,27: PRINT ": PROBLEME DE DISQUETT! VTA
POKE 36,27: PRINT “seecesiceteisrssseieegede"s NORMAL.
4320 GOSUB 4350
4330 IF K = 1 THEN GOTO 220
4340 HOME : GOTO 4020
4350 VTAB 22: POKE 36,15: INVERSE : PRINT “ >>>> ““FRAPPER ~<RETURN> ~
POUR “CONTINUER ~~>>>> “: NORMAL
4360 GET AS
4370 IF AS < > CHRS (13) THEN GOTO 4360
4380 RETURN
CARAC.CH carac.ch,as0300,1$0033
LTE
: 0300: A9 FF 85 06 A9 3F 85 07 AD C8 BE 85 08 AD C9 BE
Routine 0310: 85 09 E46 06 AS 046 DO 02 ES 07 Cé 08 AS 08 CP FF
extraite de 0320: D0 06 AS 09 FO OC C4 09 AD 00 B1 06 20 ED FD 4C
TM n° 0330: 12 03 60
Deux exemples
réalisés avec
ETICSOFT-DISK
Logiciel intelligent, le programme
de notre ami Philippe BORDAS sait
faire la différence entre les capita-
les et les minuscules, comme vous
le révéle la premiére ligne de |'éti-
quette ci-dessus.
Comment réaliser des fontes* ?
Tout simplement en utilisant le programme paru dans le
numéro 6 de TREMPLIN MICRO. Grace aux divers program-
mes de ce numéro, vous pourrez, non seulement réaliser vos
propres polices de caractéres, mais en récupérer, 4 partir
des fontes graphiques (TOOL KIT APPLE et CHAT MAUVE).
* Sur la disquette 19. Philippe BORDAS vous en propose quelques-unes.
/ Paces2 /
2642
AANS
7E7C
25FC
2642
EEF2
9923
F88A
6381
9298
1027
B6FC
9675
/ Claude ausry —Lancacec / —
CLIB MEIN LIEBE
Sans vous en douter, avancant en visibilité minimum dans Ia jungle du pays de C , trébu-
chant sur des structures, vous enfoncant dans des flots de données, vous approchez péni-
blement de I’ilot de la connaissance supréme !
Aprés vous avoir fait franchir les derniers sables mouvants, je vais lacher votre petite
menotte, et sans crainte ni regard en arriére, vous partirez...
Vous vous en souvenez certainement, lecteur attentionné, dans le dernier numéro de cette revue presti-
gieuse, nous avons défini les instructions "internes" du langage C , celles qui sont comprises par le compila-
teur. Les plus futés d'entre vous en ont déduit que les autres instructions de C étaient “externes” et ils
avaient raison ! En effet, tout ce qui est entrée-sortie est décrit en € dans la bibliothéque standard, appelée
par le linker aprés compilation. Théoriquement cette librairie (nommée CLIB sur Apple, STDLIB ou CSLIB sur
d'autres systémes) implémente les mémes instructions d'une machine 4 l'autre ou d'un C 4 l'autre, instruc-
tions définies par la norme ANSI. Pratiquement, quelques différences subtiles entretiennent un taux d’adré-
naline nettement supérieur 4 la normale, chez les développeurs qui travaillent sur plusieurs systemes.
Si la liste des mots réservés de C est plutét modeste, il n’en est pas de méme en ce qui concerne la
bibliothéque standard : celle du TURBO C de BORLAND ne comprend pas moins de 300 mots, celle de
'Apple 130. Pour nous y retrouver dans cette forét vierge, nous allons essayer de regrouper ces instruc-
tions de maniére logique :
1. Manipulation de chaines de caractéres. 5. Manipulation de mémoire.
2. Classification de types de caractéres. 6. Systéme.
3. Conversion de types. 7. Entrées Sorties.
4. Mathématique.
LES CHAINES DE CARACTERES
La librairie standard de C permet toutes les manips que le plus masochiste des manipulateurs de
chaine peut souhaiter. Ces instructions débutent par STR (elles s‘appliquent alors 4 des chaines entiéres)
ou par STRN (elles s‘appliquent alors a n caractéres de la chaine concernée).
Par exemple streat(dest,source) effectue une concaténation de source 4 la suite de dest alors que
strncat(dest,source,n) effectue la concaténation de n caractéres de source 4 la suite de dest.
Ces fonctions renvoient soit un entier (par exemple strlen(s) renvoie le nombre de caractéres de la
chaine s) soit un pointeur vers la chaine destination. On peut écrire par exemple :
printf(streat("Claude ","Aubry")).
Voici une liste des fonctions de manipulation de chaines de caractéres. Je ne saurais trop vous conseiller
de vous entrainer a les utiliser :
STRCAT(s1,s2) STRNCAT(s1,s2,n) Concaténation s2 s1.
STRCMP(s1,s2) STRNCMP(s1,s2,n) Comparaison de s2 et s1.
STRCPY(s1,s2) STRNCPY(s1,s2,n) Copie de s2 dans s1.
STRCHR(s1,c) STRRCHR(s1,c) Renvoie un pointeur vers la premiére (derniére) occur-
rence dec dans s1. (suite poge 34)
/ pacess / —
— J cnn ce ff —<—< <_<
STRLEN(s1) Renvoie le nombre de caractéres de s1.
STRPBRK(s1,s2) Pointeur vers la premiére occurrence d'une des lettres de s2 dans s1.
STRSPN(s1,s2) Nombre de caractéres depuis le début de s] ne comportant que des
caractéres de s2.
STRCSPN(s1,s2) Nombre de caractéres depuis le début de s] et ne contenant pas de carac-
téres de s2.
STRTOK(s1,s2) Sert 4 décomposer une chaine de caractéres en ses divers composants
(tokens) séparés par un caractére de la chaine s2. Si un tel caractére est
rencontré, il est remplacé par un @. Un nouvel appel de STRTOK avec
NULL comme paramétre retourne un pointeur vers le second token.
Tenez, je vais étre sympa avec vous, voici un petit exemple d'utilisation de STRTOK, le moins
évident 4 utiliser :
£include<string.h>
£include<stdio.h>
main()
é
char *chaine="LUNDI,MARDI;MERCREDI ! JEUDI : VENDREDI-SAMEDI=DIMANCHE" ;
char *separateur=",;!:-=",*s,i;
puts(strtok(chaine,separateur) );
while(s) puts(s=strtok(NULL,separateur ) );
é
CLASSIFICATION DE TYPES DE CARACTERES
Ces fonctions débutent par IS suivit du type a tester et retournent la valeur 0 (faux) ou !0 (vrai).
Elles sont trés précieuses pour faire des saisies contrélées (et toutes les saisies devraient étre
contrélées). Selon les versions de C, les classifications de types de caractéres sont implémen-
tées en bibliotheque standard ou en macro (£include <ctype.h> ) ou les deux au choix.
ISALPHA(c) Vrai sic est une lettre.
ISUPPER(c) Vrai si ¢ est une majuscule.
ISLOWER(c) Vrai si c est une minuscule.
ISDIGIT(c) Vrai si c est un chiffre (0-9).
ISXDIGIT(c) Vrai sic est un chiffre hexadécimal (0-9, A-F ou a-f).
ISALNUM(c) Vrai sic est une lettre ou un chiffre.
ISSPACE(c) Vrai si c est un espace tab return LF CR tab vertical.
ISPUNCT(c) Vrai si ¢ est un caractére de ponctuation.
ISPRINT(c) Vrai si ¢ est un caractére imprimable (de l'espace au tilde).
ISGRAPH(c) Identique 4 isprint mais |'espace en moins.
ISCNTRL(c) Vrai si ¢ est un caractére de contréle.
ISASCII(c) Vrai sic est un caractére ASCII.
— | cese f
aan ec
oo / crave avery —cancacec / —
/* PETIT EXEMPLE DE RECONNAISSANCE DE TYPES s/f
#include <ctype.h>
#include <stdio.h>
main( )
é
char i=0,c=0,chaine[80]; /* Sur Apple GS [=° et ]=§ */
printf("Tapez une chaine comportant des lettres et des chiffres: ");
scanf("%s",chaine);
for (i=0;i<strlen(chaine);i++)
é
c=chaine[i];
if (isdigit(c)) printf("%c est un chiffre",c);
else
é
printf("%c est une lettre ",c);
if(isupper(c)) puts("majuscule" );
else puts( "minuscule" );
é
Il est parfois utile de forcer un type de caractére, lors de la saisie,de facon 4 éliminer les problemes de
minuscules/majuscules dans des zones de recherche. Les instructions de conversions de types de carac-
téres sont 1a pour résoudre ce genre de probléme. Ces instructions débutent par TO et permettent de
transformer une majuscule en minuscule et vice-versa. L'objet retourné est un entier.
toupper(c) Renvoie une majuscule correspondant ac.
tolower(c) — Renvoie une minuscule correspondant a c.
toascii(c) Renvoie un entier dont les bits de poids > 47 sont fixés a0.
La fonction ci-dessous permet de convertir une chaine de minuscules en majuscules, elle existe dans la
plupart des C, mais pas sur I'Apple.
char *strupr(str)
char *str;
é
char *p=str; /* crée un pointeur vers la chaine str*/
while((*str=toupper(*str))!=0) ++str;
return(p);
é
main()
é
printf(strupr("salut"));
é
Suffit pour aujourd'hui : Vous avez bien travaillé. La prochaine fois, des maths et des fichiers. (svite page 36)
—_e_e_—_—_—o—o—OoO— oO cess | —
— / ce MEIN LiEBE /
Pour nous distraire je vous propose de vous prendre quelque temps pour des dieux... Vous allez
voir naitre et disparaitre, devant vous, des civilisations entiéres dans le jeu de la vie.
Pour des raisons de lisibilité j'ai remplacé les caracétres ° et § de I'Apple par | et ]... Ne vous affolez
pas et surtout n'écrivez pas 4 Apple pour leur demander ou ils ont caché ces sacrés caractéres.
Edetine nb-co 80 Le jeu de la vie ou jeu de CONWAY
char on genes Sonne. | nb oo a
char next_generation[nb_li}[nb_co]:
PD =, ; Coy) a oe . Auteur Claude AUBRY
a al PROPRIO HEPAT BNO: Adaptation APPLE GS Emile SCHWARZ
** Création de la premiére génération aléatoire
me
void init_generation()
e.. . , Le mathématicien CONWAY a imaginé un
weaned char I.co.aleatowre: jeu dit de la vie : dans un univers modélisé,
for (li=1 ;li<cnb_lisli++) un certain nombre de cellules naissent,
for Keon :€o<nb_co;co++) vivent et meurent selon les régles de géné-
old_ generation[li][co] =0: tique simplifiées. Une cellule et ses 8 voisi-
next Feteciaerl| {co]=0; nes apparaissent ainsi :
8 s
I 123
i On fabrique les grands ancétres 4*5
for (roi ssnopuation. departs} 578
aleatoire=rand();
co=aleatoire*80/256;
aleatoire=rand();
lizaleatoire*24/256;
O17 generation {ty [co]=1;
é
I*
bay Calcule une nouvelle génération en fonction des régles de vie
ag calc_generation()
unsied Shar Hreoeaperance: Les régles sont les suivantes :
=1sli<i slit) - "
sas ha ont Osan co:co++) 1. si une cellule posséde deux ou trois voi-
~ oii sines elle survie
esperance= eneration|li-1}[co 9
es +old cereration i+1 co Ico} 2. si une cellule posséde plus de 3 voisines
soltgeneraton il co-1 elle meurt par surpopulation
+
Fordsocreration Weteoet 3. si une cellule posséde 1 ou pas de voisine
aeration Lae cor elle meurt par isolement
+old—generation|li+1 }{co- .
sok generation i+ ‘co+t}: 4. chaque emplacement adjacent 4 trois cel-
Sener (espétenice) lules donne naissance a | nouvelle cellule.
case 4:
incon [li] [co] :break;
generation |i] [co] :break:
ibreak;
case 0:
Case 1 :next_generation|li] [co
case 2 :next_generation|Ii] {co}
aces :next_generation|li][co!
é
é
/ Pacesc /
/ Claude ausRY —LANGAGEC /
i:
** Compte le nombre d'individus d'une génération
Vous pourriez vous amuser 4
changer méchamment les int nb_individus()
olihest — char li,co;
univers, en y prévoyant des intx :
épidémies, des guerres ov des for i )
baby-booms ! ==1) x++;
return(x)
Mais comme vous figurez au *
nombre peop = y 5 mise a jour de I'ancienne génération
universelle, non ? yout met_a_jour()
unsigned char |i,co;
for (li=1 ;li<nb_li;li++)
for (co=1;€o<nb_co;co++)
“ old_generation|li] [co] =next_generation|li] [co]:
I
*s Affichage de I'univers
yor affiche_univers()
ned char li,co;
orn “Generation : %3d Population :%3den".nb_generation++,nb )_individus());
lor ee sli<nb. ) lisli++)
rintf("En");
for {cont ;co<nb_co;co++)
if (old Seat ltcol= =0) printf("+"):
else print
, e
printf("¢n¢nRETURN pour prochaine génération ou 'q' pour quitter —> ");
e
iad |
7 PROGRAMME PRINCIPAL |
main(.
é
char c;
"
printf(“¢fPopulation de départ (inferieure 4 1000 -> ");
geant("7ec" & population separ); TREMPLIN MICRO
while(population_depart > 999); consacre un article &
srand(population depart); tous les ouvrages sur le
= langage C, et cela
init_generation(: depuis un an. Rares, en
do effet sont les langages
é ayant suscités, en si peu
affiche_univers(); de temps, un aussi grand
calc_géneration();
meta Jour): nombre de bouquins
prone jar(); traitant
ite remarquablement
whe (=a) loww oot
/ Pace37 /
—— / nesTor —pipacticie: /
BASICANIME
Qui n’‘a pas révé (comme vous, peut-étre ?) — chez les
enseignants... ou les parents — de pouvoir mettre un vrai
didacticiel entre les mains de ses éléves ou de ses enfants ?
Tenez ! personnellement, lorsque je fis mes débuts, en
Basic, sur un modeste — mais terrrrible — PC1210 de Sharp,
combien de fois ai-je pesté contre le manque d‘intérét des rares “méthodes” existant alors !
Je n’en suis que plus heureux de pouvoir vous
annoncer ; «Le Basicanimé existe et je l'ai
testé». C'est une réalisation des Productions
SNEIL, avec le label France-Logiciel, pour PC
compatibles. Précision inutile, quand on con-
nait un peu |’univers du MS.DOS ; le Basica-
nimé ne s'intéresse qu’au langage bien connu
des utilisateurs : le GWBasic ou le Basica.
VRAI ou FAUX ?
Peut-on réellement apprendre un langage en
visualisant la succession de legons animées
('adjectif n'est pas trop fort) d'un didacti-
ciel ? la réponse est oui... On en est d’ail-
leurs convaincu dés la premiére lecon. En
théorie, Basicanimé a été concu pour étre
facilement 4 la portée d’éléves d’au moins
13-14 ans (4 partir de la classe de 3°)... mais
sans limite supérieure.
y =
i
{ULLAL
wereeeer
— / Pacess /
Les auteurs prévoient un "apprentissage”
couvrant de 60 4 100 heures, selon le rythme
personnel d'acquisition, mais il est évident
que le temps ne compte plus lorsqu’on
atteint un certain niveau. Tous les program-
meurs savent que cette activité est une
grande “mangeuse” de loisirs... et s‘en
félicitent.
DES PEDAGOCGUES
Avec Basicanimé, on se trouve en présence
d'un bon produit, soigneusement mis au
point par des pédagogues. L’éditeur n’a pas
Iésiné sur le nombre de disquettes (10, trés
exactement) et si le fascicule d'utilisation est
mince, c'est tout simplement parce que
celle-ci se révéle on ne peut plus simple. Un
seul regret : on perd |'usage du disque dur
pendant la formation, ce qui empéche certai-
nement les copies, mais pénalise |'uti-
lisateur, un accés disque dur étant
plus agréable qu'un accés disquette.
Ce n'est la qu'un petit grief. Je sup-
pose que des accords pourront étre
conclus entre lI'éditeur et d'éventuels
multi-utilisateurs.
Productions SNEIL
14, rue Pergolése 75016 PARIS — Tél. : (1) 45.01.52.94
/ Hubert PELC— MATHEMATIQUES / —
RESOLUTION
d'un systeme de 2 équations
@ 2 inconnues
Il faut savoir que, dans un plan muni d'un
repére (celui du programme est orthonormé,
cest-a-dire formé d’axes perpendiculaires
d'origine 0, avec graduation identique), |’équa-
tion d'une droite est de la forme :
ax+by+c=0
ou a, b et c sont des réels
quelconques :
Vr ; - 2 ; etc.
3
Le programme RESO.EQ] permet de résoudre un
systeme de deux équations linéaires, et de trou-
ver ainsi leur point d'intersection dans le repére.
0
G
x+y +2
3x + 3y
Le programme donnera, pour ce systéme :
i
y=2
Ce couple (-2 ; 2) correspond aux coordonnées
du point commun aux deux droites, par rap-
port a l’origine 0 du repére.
TEXT : HOME
1
PRINT TAB 5)"RESOLUTION D’
UN SYSTEME DE": PRINT TAB‘
10)"2 EQUATIONS A 2 INCONNUE
s"
VTAB 6: PRINT “FORME DE L’EQ
UATION :°"
PRINT : PRINT TAB 10)"A x
+By+cC=0"
D1
D2
et M (- 2)
“Ta
Ces coordonnées vérifient aussi les deux équations de
droites, c'est-d-dire que les équations s'annulent en
remplacant x et y par leur valeur respectives :
2*(-2)+2+2=0
3%*(-2)+3+*2=0
Remearques : Pour supprimer le sous-programme tra-
cant les deux droites, il sutfit de suppri-
mer le GOSUB 430 de Ia ligne 260 et les lignes 430 4 560. Il est
possible de mémoriser l'image par BSAVE nom,A$4000,L$1FFF.
PRINT TAB 10)"A’x + B’y +
c’= 0" B197
POKE 34,12 FBAF
PRINT : PRINT : 7402
INPUT "Valeur 8819
INPUT “Valeur 991B
INPUT "Valeur 7010
GOSUB 300 F643
HOME 2F97
(suite page 40)
/ Pace39 /
/ Hubert PELC — MATHEMATIQUES /
— 340 IF ACI) < 0 THEN PRINT "-
140 INPUT "Valeur de A’ : 0341 3 ABS (ACI))5" x "G BC25
150 INPUT "Valeur de B’ : of43 | 350 IF B{I) = 1 THEN PRINT “+ y
160 INPUT "Valeur de C’ : 9A45 ";: GOTO 390 Socc
170 GOSUB 300 F643 | 360 IF BCI) = - 1 THEN PRINT "
180 HOME 2F97 - y "3: GOTO 390 0c97
185 : 0034 | 370 IF B¢I) > 0 THEN PRINT “+ *
186 REM CALCUL DE delta,X ET Y 3BC1D 3" ¥ "3 B3FF
187; 003q | 380 IF B(1) < 0 THEN PRINT "- *
190 D = (AC1) * BC2)) - (AC2) * 3 ABS (BCID) 5" y "G 9E28
B(1)) 1923 | 390 IF C¢1) < 0 THEN PRINT "- “
200 IF D = 0 THEN PRINT : PRINT 3 ABS (C(1)); 4D12
: PRINT "L’EQUATION N’A PAS 400 IF C¢1) > 0 THEN PRINT "+ "
DE SOLUTION.": GET A$: TEXT 3CC1); BEE?
: RUN 4FC8 | 410 PRINT "= 0 “""""7"""* a508
210 X = (¢BC(1) * C¢2)) - (BC2) * 420 RETURN 6381
C610) 4D 2298 | 425: 0034
220 Y = (¢C¢1) * AC2)) - (C(2) * 426 REM TRACE DES 2 DROITES
Av) 7D 159q | 427 : 003A
225: 003A | 430 HOME : HGR2 : HCOLOR= 3: FOR
226 REM IMPRESS" DES RESULTATS I= 170 2:H=0 FBDA
227 3 0034 | 440 HPLOT 139,189 TO 139,0: HPLO
230 PRINT : PRINT "DELTA VAUT :~ T 0,98 TO 279,98 ccs2
"3D péBs | 450 FOR A = 4 TO 274 STEP 15: HP
240 PRINT : PRINT TAB 5)"X = " LOT A,100 TO A,96: NEXT 6075
x 9578 | 460 FOR A = 8 TO 188 STEP 15: HP
250 PRINT TAB 5)"Y = ";¥ E186 LOT 137,A TO 141,A: NEXT 37AE
260 VTAB 24: HTAB 39: GET A$: GO 470 IF BCI) = 0 THEN HPLOT -C
SUB 430: GET AS 047F (1D) / ACID *# 15 + 139.0 TO
270 POKE 34,0 887C - CCI) / ACI) * 15 + 139,191
280 IF A$ = "F" THEN PRINT CHR : GOTO 550 1905
% (4)"RUN STARTUP" FSE2 | 480 FORX = - 9.2 TO 9.2 05465
290 RUN sac | 490 Y= ¢ - ACID *X - C61) 4B
295 : 003A aD 8D8D
296 REM IMPRESS" DES EQUATIONS 500 IF - Y * 15 + 98 > 189 OR
297: 0034 -¥ #15 + 98 ¢ 0 THEN 540 = 1440
300 1 = 1 + 1: VTAB 7 + I: HTAB 510 IF H = 0 THEN HPLOT X * 15
10 D1B0 + 139, - Y * 15 + 98 3BFO
310 IF ACI) = 1 THEN PRINT "x * 520 HPLOT TO X * 15 + 139, - Y
3: GOTO 350 SA7B #15 + 98 ASF
320 IF ACI) = - 1 THEN PRINT “ 530 H=1 5149
- x "3: GOTO 350 7E91 | 540 NEXT 0582
330 IF ACI) >) 0 THEN PRINT ACI) 550 NEXT 0582
yxy 0132 | 560 RETURN 6381
SS
Avez-vous commandé le quatriéme volet de nos petits recueils de
routines en langage machine ?
compatibles Apple //GS, bien str
/ paceso /
Avec disquette : 160 F
Une exclusivité
Tremplin Micro
Vous possédez un GS tout frais et vous vous
inquiétez, a juste titre, du devenir de la carte
mére, injustement martyrisée par des extinc-
tions/allumages répétés, pour cause de confi-
guration inadéquate du RAMdisk.
Vous avez en effet remarqué que la sélection
effectuée au tableau de bord ne prend effet
qu’a la suite d'une séquence extinction/allu-
mage de la machine. Aprés FREEZER, qui
venait 4 votre secours sous ProDOS8, voila
comme promis FREEZER.CDA.
Lors du démarrage, la fonction MMBootinit du
Memory Manager s'oriente vers un démar-
rage 4 froid ou 4 chaud, en fonction du contenu
d'un octet. Comme 4 peu prés tout ce qui est
dans le GS, cet octet peut se promener. II ne I’a
pas fait 4 l'occasion du changement de ROM,
mais ¢a nous pend au nez. J'ai donc choisi de
récupérer son adresse dans le code méme de
loutil en question, en respectant scrupuleuse-
ment les procédures d'approche réglementai-
res. Rich WILLIAMS n‘ayant pas répondu a mon
courrier (pourtant vieux de prés de trois mois),
je ne suis pas en mesure de garantir que le
MMBootInit commencera toujours de la méme
facon.. Il y ad’ailleurs déja un cas déviant.
Lorsque l'on démarre sous P16 avec la vieille
ROM (précipitez-vous chez votre concession-
naire pour la remplacer par la nouvelle), les
outils en ROM sont largement patchés et le
code MMBootinit est remplacé par un simple
RTL. C'est pourquoi j'ai été amené 4 introduire
une identification de ROM provoquant un trai-
tement en force dans le cas de la ROM.00.
Jiespére que les commentaires du source vous
permettront de comprendre le fonctionnement
de FREEZER.CDA. Celui-ci n'est pas publié
dans la revue 4 cause de sa longueur, mais
figure sur la disquette d'accompagnement.
Pour ceux qui ne veulent pas (ou ne peuvent
pas) s'offrir cette disquette, il est bien entendu
possible d'effectuer une saisie directe du code
HEXA, mais les caractéristiques du systeme
P16 compliquent les choses.
/ Yvan KoeNnic—apPLencs / ——
FREEZER
Je conseille d'effectuer la saisie en commen-
cant en $2000, de sauver en mode BIN par
BSAVE FRIZ,A$2000,E$27FF. \| vous sera alors
possible d’utiliser SIGNATURE pour contréler
votre saisie.
Lorsque tout sera d’aplomb, faites :
* BLOAD FRIZ
© CREATE FREEZER.CDA ,T$B9
* BSAVE FREEZER.CDA,A$2000 ,E$27FF,T$89
ATTENTION ! MERLIN 816 respecte les contra-
intes du LOADER P16, mais ne le fait pas exac-
tement comme APW. De ce fait, les fichiers
générés par ces assembleurs ne sont pas iden-
tiques. La disquette T.M. reprend les deux ver-
sions : APW et MERLIN.
Pour ceux qui ne maitrisent pas APW (ou qui
ont acquis, pour environ 150 francs, chez DDA
les seules disquettes APW, APW.U et DEBUG-
GER), je rappelle que les Clefs pour APPLE
NGS, malgré quelques coquilles, contiennent
une présentation d'APW et de l'assembleur.
Sous APW, il faut d’abord recopier FREE-
ZER.SRC sur une disquette de travail 3 p. 1/2.
Ensuite, depuis le SHELL taper :
* MACGEN FREEZER.SRC FREEZER.MACROS
2/AINCLUDE/M16 = afin de faire générer le
fichier Macros par APW.
* Faire ensuite ASML +E +T FREEZER.SRC
pour effectuer l’assemblage et le ‘linkage’.
Les paramétres employés sont bien agréables :
© +T provoquera un arrét de l'assemblage en
cas d'erreur (quelle qu’en soit la nature).
© +E vous renverra alors directement en
mode éditeur 4 I'emplacement de l'erreur.
Inutile de répéter ces paramétres 4 chaque
tentative : ils sont mémorisés (jusqu’d ce que
vous quittiez APW). Il est cependant possible
de les désactiver par -E ou -T. II existe d'autres
paramétres, mais ¢a suffira pour aujourd'hui.
(suite page 42)
_—_—_—_—_ ee / Pact ts | —
[a
— / FREEZER /
ll reste encore 4 taper depuis le SHELL :
FILETYPE FRE
Showing the first 100000 of 169125 characters.