Text content (OCR)
Se ES)
Un logiciel complet
de dessin sur Apple
‘Le prix
du coup de fil
3791631033006 00150
Applet et PraD05 sont des marques déposées por Apple Computer lnc.
een
tremplin | SOMMAIRE
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
La Petite 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éellement au service du Lecteur,
en ne l'obligeant pas & glaner,
dans plusieurs magazines, les
renseignements concernant sa
machine, ne bénéficient pas du
numéro de Commission Paritaire,
et pas davantage des tarifs pos-
taux réduits.
TREMPLIN MICRO — Bimestriel — Crest
une publication des Editions JIBENA, 4,
tue de la Cour-des-Noves, 75020 PARIS
— S.A. au capitol de 3600000 F —
Imprimé par CITE-PRESS/PARIS —
Dépat légal & la date de porution — Ins-
cription & la Commission Poritaire des
Publications et Agences de Presse : en
cours — Directeur de la Publication :
Guy-Clément COGNE — Diffusion
NPP,
Avec la collaboration de :
ARGOS, Claude AUBRY, Nicole BREAUD-POULIQUEN, Marc BROCHA,
Yves BUONO, Maurice CHAVELLI, Marcel COTTINI, Francois GALLET
et Thierry FILLAUT, NESTOR, Pierre PRIVAT et Clément RENARD,
GS, MON BEAU SOUCI 2
MINUPHONE (Combien codte une communication ?) .... 3
SPECIAL tr Basic APPLESOFT
cs PARLE AUX OUTILS DU GS ........000.s0ccscsecseeesseeseees 7
¢ TRES SIMPLE Clovde AuBRY poursvit son amusante initiation VW
(langage C sure GS) — Et Nestor améliore LE BON NOMBRE ............. 15
CATAVISU (Petit utilitaire ProDOS permettant de visualiser
l'occupation de la disquette) .........6.0.c cece cece cece eee e eens 7
POKE, COMMANDE APPLESOFT (Tout ce qu'il faut savoi 21
D'UN BASIC A UN AUTRE (DE L'APPLESOFT AU GWBASIC) . . 28
STARTUP (Intéressant utilitaire ProDOS) 31
SPECIAL cs RAMETGsRAMPLUS (extensions mémoire pour Apple lIGS) .... 39
¢s HORLOGE GS (Attention ! il faut ProDOS 8 en mémoire !) ......... 40
GUIDES DE FORMATION
(Comment découvrir Excel ou PageMaker ?) ............000020005 44
GRAPHISME Logiciel de dessin mis au point par I'un de nos lecteurs,
Yves BUONO ARc.tN.ciel mérite de retenir votre attention ........ 45
EDUCATION ET JEUX 53
GRAPH.EXPRESS (Routine en mode TEXT) . 54
LA SOURIS ET L'ASSEMBLEUR ((troisisme portie) ............ 55
LE TRAITEMENT DE TEXTE DU COTE DES COMPATIBLES 60
YVAN KOENIG REPOND A NOS LECTEURS .........00.00000000 0008 63
METTEZ UN GS DANS VOTRE APPLE II vax 169)
NESTOR (SAGESSE OBLIGE !) ...... 71
QUESTIONS et MEA CULPA (n°14) 72
QUOI EST OW? cciseaies evacuees 73
QUESTIONS... REPONSES (suite) 74
BULLETIN D‘ABONNEMENT 75
LES LIVRES 27,30,70,76
TREMPLIN MICRO
MON BEAU
SsSOoOUCI
Nos lectrices et lecteurs sont perplexes.
Certains (peu, eu égard au nombre considé-
rable de machines vendues en France) ont
choisi de troquer leur vieil Apple contre un
GS flambant neuf. D’autres ont opté pour un
MACINTOSH ou pour un compatible IBM.
Combien ? je l'ignore. Par contre, je sais que la plupart des lectrices
et lecteurs de Tremplin Micro ont préféré conserver leur Apple //+
ou /le, en attendant d‘autres offres, plus alléchantes. On ne saurait
leur donner tort.
Il est possible, actuellement, sur le marché de l'occasion, de s‘offrir
une configuration compléte pour une somme relativement modique.
Par ailleurs, grace @ des cartes comme la TRANSWARP d’Applied
Engineering, un Apple Ile devient instantanément un Apple Turbo,
capable — le son et le graphique en moins, bien sor — de rivaliser
avec un GS de la premiére couvée.
Les gens qui programment (ils sont nombreux parmi nos correspon-
dants) ou désirent s'initier 4 ce jeu captivant qu‘est la “domestication”
d'un microprocesseur, prennent autant de plaisir 4 tapoter sur le cla-
vier d'un Apple /le ou d'un Apple //c que sur celui d'un GS.
Et puis, avouons-le, il est plus agréable de travailler sous ProDOS 8
que sous ProDOS 16 — certes plus performant (on ne saurait raison-
nablement le nier), mais terriblement gourmand en temps de
chargement.
Enfin, une fois de plus, Apple mise surtout sur les nouveaux MAC
(oh ! les belles machines !) parce que la firme de Cupertino espére
pénétrer en force dans les entreprises. Comme nous aimons bien la
pomme, nous lui souhaitons de réussir, mais en regrettant qu'il ne
reste plus, pour les vieux de la vieille, que de rares pépins... concé-
dés aux prix des pépites.
Bonnes vacances et profitez donc d'icelles pour vous adonner &
l'étude passionnante de l’assembleur !
Guy-HACHETTE.
2 GUY-HACHETTE
Pierre PRIVAT
OICI un petit programme qui pourra rendre d’éminents services aux plus bavards utilisa-
V teurs du téléphone. Vous en connaissez sérement dans votre entourage ! Gageons que
Pierre Privat et son Minuphone vous aideront a réduire trés sensiblement le montant de
vos factures téléphoniques. En attendant, suez donc un peu sur la frappe du programme !
Rappelons qu'il ne faut sur- 110 DS = CHRS (4):BIP$ = CHR$ (7): TEXT 840F
tout pas taper les valeurs 115 ONERR GOTO 805 é6CED
indiquées en couleur : elles 120 PRINT D$;"PR£3": PRINT : HOME A25E
permettent aux heureux 125: 003A
possesseurs de notre dis- 130 REM ** LECTURE TAXE DE BASE **
quette SIGNATURE (une 135 : 003A
idée d’Yvan KOENIG) de 140 PRINT D$;"OPEN TAXE": PRINT D$;"READ TAXE": 1
coniiélen’ ‘éhécune | des NPUT T: PRINT D$;"CLOSE TAXE": PRINT 3117
lignes de leur programme. 1453 003A
150 REM *#* MENU GENERAL #*
155 : 003A
160 HOME : GOSUB 400 3C15
165 VTAB 6: HTAB 28: PRINT “1 --> “Lundi au Vendr
edi" E416
170 PRINT : HTAB 28: PRINT "2 --> "Samedi" oso?
175 PRINT : HTAB 28: PRINT "3 --> “Dimanches et F
étes” F36B
est indispensable. Ce logi- 180 PRINT : HTAB 28: PRINT "4 --> “Changer le pri
ciel fait gagner un temps ai des 18s taxe- . . 4500
précieux en évitant a nos 185 PRINT : HTAB 28: PRINT "5S --> “Terminer" BBBF
lectrices et lecteurs de fasti- 190 MX = 5: GOSUB 430 6E28
dieuses recherches en cas 195 ON R GOTO 215,280,345,805,785 DB70
d'erreur (et qui n’en com- 200 + 003A
met jamais ?). 205 REM ** TARIF SEMAINE **
210 : 003A
215 HOME : GOSUB 400 3015
220 VTAB 5: HTAB 30: INVERSE : PRINT " LUNDI au V
ENDREDI ": NORMAL : PRINT oBcs
225 PRINT "TARIF EN VIGUEUR:" ocas
230 PRINT : HTAB 20: PRINT "1 --> “ROUGE ‘8h00-12
h30 et 13h30-18h00)" 3F81
SIGNATURE 235 PRINT : HTAB 20: PRINT "2 --> “BLANC (12h30-1
* . 3h30 et 18h00-21h30)" BB8E
ceeetenie 240 PRINT : HTAB 20: PRINT "3 --> “BLEU <sh00-8hO
0 et 21h30-22h30)" FIFS
(suite page 4) 245 PRINT : HTAB 20: PRINT "4 --> “BLEU NUIT (22h
Salalah a al aaah aaa hed ah ele ed
TREMPLIN MICRO 3
250
255
260
265
270
275
280
285
290
295
300
305
310
315
320
325
330
335
340
345
350
355
360
365
370
375
380
385
390
395
400
405
410
415
420
425
430
435
440
445
450
30-sh00)"
MX = 4: GOSUB 430
ON R GOSUB 475,480,485, 490
GOTO 510
REM ** TARIF SAMEDI #**
HOME : GOSUB 400
VTAB 5: HTAB 36: INVERSE : PRINT " SAMEDI ":
NORMAL : PRINT
PRINT "TARIF EN VIGUEUR:"
PRINT : HTAB 20: PRINT "1 --> “ROUGE (8h00-12
h30>"
PRINT : HTAB 20: PRINT "2 --> “BLANC (12h30-1
3h30)"
PRINT : HTAB 20: PRINT "3 -->
0 et 13h30-22h30)"
PRINT : HTAB 20: PRINT "4 -->
30-6h00)"
MX = 4: GOSUB 430
ON R GOSUB 475,480,485,490
GOTO 510
REM ** TARIF DIMANCHE **
HOME : GOSUB 400
VTAB 5: HTAB 30: INVERSE : PRINT " DIMANCHES
et FETES ": NORMAL : PRINT
PRINT "TARIF EN VIGUEUR:"
PRINT : PRINT : HTAB 24: PRINT “1 --> “BLEU ¢
6h00-22h30)"
PRINT : PRINT : HTAB 24: PRINT "2 --> “BLEU N
UIT (22h30-6h00)"
MX = 2: GOSUB 430
ON R GOSUB 485,490
GOTO 510
REM ** AFFICHAGE HAUT **
VTAB 1: PRINT "Taxe: ";7;" F";: HTAB 22: PRIN
T "MINUPHONE - Pierre PRIVAT, Mars 1987"
FOR 1 = 1 TO 80: PRINT "="3: NEXT I: PRINT
RETURN
REM ** AFFICHAGE BAS **
VTAB 19: FOR I = 1 TO 80: PRINT “_";: NEXT I
VTAB 21: HTAB 26: PRINT "<ESC> pour retour au
menu"
VTAB 22: HTAB 33: PRINT “Votre choix ? “;: GE
T RS
IF R$ = CHR$ (27) OR R$ = CHR (3) THEN 160
R= VAL (R$): IF R < 1 OR R > MX THEN PRINT
BIP$: GOTO 440
“BLEU (6h00-8h0
“BLEU NUIT (22h
2163
512A
SSB4
0341
003A
003A
3C15
F3DE
OcAB
1158
3AS9
ACF7
2163
512A
S55B4
0341
003A
003A
3C15
£401
OcA8
B4F8
css9
9728
0c20
0341
003A
003A
co07
589D
63B1
003A
003A
4911
FA3C
4BC7
1A6E
7E97
= (suite)
LIGNE 115 (PAGE 3)
Utile lors de la premiére
utilisation (ou encore si le
fichier a été effacé par
erreur). Cet ONERR GOTO
envoie directement a la
création du fichier TXT:
TAXE.
LIGNE 140 (PAGE 3)
Lit la taxe de base PTT en
vigueur dans le fichier
TAXE.
LIGNE 190 (PAGE 3)
MX est une variable qui,
en fonction des différents
menus, limite le chiffre-
réponse au nombre de
réponses possibles.
LIGNES 2200375 et
LIGNES 475 @ 490
Bien sdr 4 modifier si
‘Administration décide de
changer l'actuel systéme
de tarification. Le coeffi-
cient TX est multiplicateur
de la durée en secondes
par unité de base (voir la
ligne 615).
4
GUY-HACHETTE
ed
LIGNES 560 4 590
A modifier si les PTT chan-
gent la durée des commu-
nications (UN correspond
au nombre de secondes).
LIGNE 670
ll est possible de régler la
précision en faisant varier
la valeur-limite de Z.
la touche «espace» a-t-
elle été pressée ?
LIGNES 820 @ 850
Uutilisation d'une instruc-
tion INPUT, évidemment
plus simple, aurait forcé-
ment conduit 4 des erreurs
de type “EXTRA IGNO-
RED", en raison du risque
dutilisation d'une virgule
a la place du point tradi-
tionnel (taxe souvent en
francs et centimes... et
utilisateurs plus ou moins
au courant de la syntaxe
Applesoft !).
(suite page 6)
455
460
465
470
475
480
485
490
495
500
sos
510
S15
520
525
530
535
540
545
550
S55
560
565
570
575
580
585
590
S95
600
605
610
615
620
625
630
635
640
645
650
655
RETURN
REM ** COEFFICIENTS TARIFS **
TX = 1:TX$ = "ROUGE": RETURN
TX = 1.5:TX$ = "BLANC": RETURN
TX = 2:TX$ = "BLEU": RETURN
= 3:TX$ = "BLEU NUIT": RETURN
REM ** MENU ZONES **
HOME : GOSUB 400
VTAB S: PRINT “Numéro de zone (voir carte ann
uaire) 3": PRINT
PRINT : HTAB 22: PRINT "1 --> “Communication
locale"
PRINT : HTAB 22: PRINT "2 --> “Communication
voisinage <A)"
PRINT : HTAB 22: PRINT "3 --> “Communication
voisinage (B)"
PRINT : HTAB 22: PRINT "4 --> “Communication
voisinage (C)"
PRINT : HTAB 22: PRINT "S --> “Communication
distante"
MX = 5: GOSUB 430
ON R GOTO 570,575,580 ,585,590
REM ** COEFFICIENTS ZONES **
360:UN$ = “LOCALE”: GOTO 610
72:UN$ = "VOISINAGE (A)": GOTO 610
45:UN$ = "VOISINAGE (B)": GOTO 610
24: UNS “VOISINAGE (C)": GOTO 610
12:UN$ = "DISTANTE": GOTO 610
“SS S55 ~
REM ** CALCULS ET AFFICHAGE HORLOGE #*
HE = O:MI = 0:SE = 0:SC = O:P = 0:U = 1: HOME
: GOSUB 400: GOSUB 710
UX = UN * TX
VTAB 4: PRINT "Communication: ";UN%;: HTAB 62
: PRINT “Tarif: "3TX%
PRINT : HTAB 22: PRINT "(Une unité toutes les
";UX;" secondes) PRINT :
PRINT "."3: NEXT I: PRINT
VTAB 20: FOR I = 1 TO 80: PRINT "_";: NEXT I
VTAB 22: HTAB 18: PRINT "<RET> pour démarrer
et <ESPACE> pour arréter “;: GET R$: IF RS ¢
> CHRS (13) THEN PRINT BIP$: GOTO 635
FOR I = 1 TO 80:
HES = STR$ (HE):MIS = STR (MI):SE% = STRS
{SE)
IF SE <¢ 10 THEN SES = "0" + SES
IF MI < 10 THEN MI "O" + MIS
IF HE ¢ 10 THEN HES = "0" + HES
003A
3015
7B21
ECFS
3F9D
7E9F
99AL
B4a5
6E2B
907B
003A
003A
454)
1104
S4C5
BFC3
C3c3
003A
003A
90EA
5896
2106
CAF?
4809
FB23
1065
62BF
44B9
S39E
TREMPLIN MICRO
660
665
670
675
680
685
690
695
700
705
710
715
720
725
730
735
740
745
750
755
760
765
770
775
780
785
790
795
800
805
810
815
820
825
830
835
840
845
850
855
860
865
VTAB 17: HTAB 8: PRINT HES;":";MI$;":";SES;:
HTAB 72: PRINT U
P = U * T: VTAB 12: HTAB 40: PRINT P
FOR 2 = 1 TO 67: REM ** Réglage horloge **
IF PEEK ¢ - 16368) = 160 THEN 705
NEXT 2:SE = SE + 1:SC = SC + 1:U = INT (SC /
UX) +1
IF SE = 60 THEN MI = MI + 1:SE=0
IF MI = 60 THEN HE = HE + 1:MI = 0
IF PEEK ¢ - 16368) = 160 THEN 705
GOTO 640
VTAB 22: CALL - 958: HTAB 21: PRINT "“Appuyer
sur une touche pour continuer “;: GET R$: PR
INT : GOTO 740
VTAB 17: HTAB 1: PRINT "Temps:
AB 63: PRINT "Unités :"0 “"
VTAB 12: HTAB 32: PRINT "Prix :7°"" "7" .
RETURN
REM ** MENU DE FIN #**
HOME : GOSUB 400: VTAB 8: PRINT
VTAB 10: HTAB 22: PRINT "1 -->
vec les mémes paramétres™
PRINT : HTAB 22: PRINT "2 -->
changeant les paramétres”
PRINT : HTAB 22: PRINT “3 -->
MX = 3: GOSUB 430
ON R GOTO 610,160,785
REM ** BYE BYE **
HOME
END
REM ** SAISIE/ENREGISTREMENT TAXE DE BASE **
HOME : GOSUB 400
VTAB 21: FOR I =
PRINT
VTAB 10: HTAB 25: PRINT
ase ? “";: CALL - 868
GET TAS: IF TAS = CHR (13) THEN 855
00:00:00";: HT
“Voulez-vous:"
“Recommencer a
“Recommencer en
“Quitter"
: VTAB 10: HTAB 36: PRINT
"Terming...":
1 TO 80: PRINT "_";: NEXT :
"Prix de la taxe de b
IF TAS = "," THEN TAS = ".": GOTO 845
IF TAS “." THEN 845
IF TAS CHR$ (8) OR TAS = CHRS (127) THEN
T2$ = "": GOTO 815
IF ASC (TAS) < 48 OR ASC (TAS) > 57 THEN 820
PRINT TAS;
T2$ = 12% + TAS: GOTO 820
T= VAL (726): IF T = 0 THEN 815
PRINT : PRINT D$;"OPEN TAXE": PRINT D$;"WRITE
TAXE": PRINT T: PRINT D$;"CLOSE TAXE": PRINT
GOTO 160
7302
724A
OBOA
BB78
A3C8
SB06
11F0
BB78
0345
9350
185E
FAEF
63B1
0034
003A
FAFA
BA26
8C2C
EE7F
9129
82DB
003A
003A
89D3
003A
003A
3C15
30BS
EESO
15€9
72EB
6700
9004
A731
CFAE
2524
FFAL
BABO
3942
— (suite)
Les programmes
paraissant dans
restent la propriété
de leurs auteurs.
Leur reproduction est
évidemment
autorisée, mais ils ne
peuvent étre
commercialisés.
Leurs auteurs sont
seuls habilités 4 en
autoriser |’éventuelle
publication dans un
recueil.
AVIS A NOS LECTEURS
TREMPLIN MICRO invite
ses Lectrices et Lecteurs 4
adopter ProDOS, systeéme
d'exploitation beaucoup
plus performant que le
DOS 3.3.
A propos de ProDOS, se
méfier des anciennes ver-
sions et utiliser, sinon la
plus récente, du moins
celle portant la référence
is es
6
GUY-HACHETTE
Nicole BREAUD-POULIQUEN
LE BASIC APPLESOFT
| == parle aux outils du GS =="
* Ge programmetion
Supposons que vous ne disposiez
pas du systéme de développement
APW pour pouvoir écrire efficace-
ment en assembleur — et avec des
macro-instructions — un pro-
gramme avec une __ interface-
utilisateur de type Mac (le Bureau
Electronique sur |'écran Super
Haute Résolution avec la Souris).
Avec APW, on écrirait cette applica-
tion en la décomposant en plusieurs
segments de programmes et de don-
nées, puis en une simple commande
ASML PG.SRC, on _ obtiendrait
l'assemblage et I'édition de liens de
ces segments sous forme d'un fichier
chargeable et relogeable automati-
quement sous le systéme d’exploita-
tion ProDOS 16.
Notre hypothése de développe-
ment ici est le BASIC.SYSTEM que
vous aurez mis sur une disquette
SYSTEM contenant au minimum les
fichiers suivants :
PRODOS SYS
SYSTEM DIR
BASIC.SYSTEM SYS
STARTUP BAS
Le sous-répertoire ou dossier
SYSTEM contenant au minimum :
P8 SYS
P16 $F9
START S16
SYSTEM.SETUP DIR
TOOLS DIR
DESK.ACCS DIR
FONTS DIR
ou on trouvera les Outils @ charger
en MEV 4 la demande de I'applica-
tion, une collection d'accessoires
de bureau et une collection de
polices de caractéres. Le pro-
gramme START est celui qui va
6tre exécuté au démarrage.
Il s'agit en général du lanceur
d'application (Apple System Laun-
cher). Avec une disquette systéme
MOUSE.DESK, vous mettrez BASIC.
SYSTEM en ceuvre en cliquant sur
son icéne.
En appelant BASIC.SYSTEM, on se
place automatiquement sous Pro-
DOS 8, grace au fichier P8 qui con-
tient la version ProDOS 1.1.1 déja
connue, mais que l'on appellera
dorénavant ProDOS 8.
Pour assembler un _sous-
programme en langage machine,
entrez dans le mini-assembleur
par le classique CALL - 151 suivi,
dés la sollicitation de I’* , par un !
Une fois les instructions mnémoni-
ques tapées, retournez au Moni-
teur en tapant simplement
‘Return’.
Pour sauvegarder sur disquette,
rappellez BASIC par Ctrl-C, puis
tapez BSAVE PG.OBJ,A$adr,
L$long.
Le fichier ainsi obtenu pourra étre
rechargé par un BLOAD PG.OBJ.
Il est prévu dans APW une com-
mande qui permet de trans-
former :
— un fichier relogeable et exécu-
table sous ProDOS 16 (type EXE
ou $16) en:
—un fichier équivalent en
adresse absolue exécutable
sous ProDOS 8 (donc chargea-
ble dans un programme en
BASIC). C'est la commande
MAKEBIN nom du fichier objet.
C'est pourquoi dans cet article
vous trouverez le listing du source
PG.SRC écrit sous APW ; la com-
mande ASML PG.SRC a généré
PG.OBJ grace 4 la directive KEEP
PG.OB)J ; puis la commande MAKE-
BIN PG.OBJ a généré le méme
code que celui obtenu grace au
mini-assembleur.
Le source PG.SRC a été écrit déli-
bérément sans macro-instructions
pour pouvoir le lire et le taper sous
la méme forme en mini-
assembleur. Le mini-assembleur
ne vous oblige pas 4 taper le signe
$ pour les données en hexadéci-
mal comme l'exige APW.
2. L'exemple
Nous avons choisi d'implanter le
programme BASIC 4 sa place
normale (& partir de $800) en
supposant qu'il n'ira pas au-dela
de $2000 pour son code et ses
données numériques. En $2000
nous chargeons PG.OBJ le sous-
programme de dialogue avec les
outils, en supposant qu'il n‘ira
pas au-deld de $3000 ; cette der-
niére adresse a été choisie arbi-
trairement comme début des
pages Zéro que réclament les
outils pour démarrer leur travail.
QuickDraw en utilise trois et
EventManager une. (suite page 8)
TREMPLIN MICRO
7
—— PG.OBJ
S§CALL-151
*0=x
*0=m
O=m = 0=x
00/2000:
00/2001:
00/2002:
00/2004:
00/2007:
00/200A:
00/2000:
00/200E:
00/200F:
00/2011:
00/2012:
00/2015:
00/2019:
00/201C:
00/201F:
00/2023:
00/2024:
00/2027:
00/202A:
00/2020:
00/2030:
00/2033:
00/2036:
00/2034:
00/2030:
00/2041:
00/2044:
00/2047;
00/2048:
00/2040:
00/204E:
00/2051:
00/2055:
00/2058:
00/2058:
00/205E:
00/2061:
00/2064:
00/2067:
00/2060:
00/2068:
00/206E:
PG.SRC oe
1=LCbank (0/1)
BRS
sss
SRAISSSSRas
3 3
22 00 00 El
48
A2 06 02
22 00 00 E1
cLe
XCE
REP £30
JSR 2012
JSR 207A
JSR 20B3
SEC
XCE
SEP £30
RTS
LOX £0201
JSL £10000
PEA 0000
LOX £0202
JSL £10000
PLA
STA 20E4
PEA 0000
PEA 0000
PEA O0E1
PEA 2000
LOX £1A02
JSL £10000
LOX £1002
JSL £10000
PEA 3000
PEA 0000
PEA 00A0
LDA 20E4
PHA
LOX £0204
JSL £10000
PEA 3300
PEA 0014
PEA 0000
PEA 0140
PEA 0000
PEA 00C8
LDA 20E4
PHA
LOX £0206
JSL £10000
PG
DEMARR
TITLE ’PG.SRC’
LIST ON
ABSADDR ON
SYMBOL ON
ORG $002000
KEEP PG.OBU
START
cLe
XCE
REP £$30
JSR DEMARR
JSR BOUCLE
JSR FERMER
SEC
XCE
SEP £$30
RTS
END
START
USING COMMUN
LOX £$201
JSL $E10000
PEA $0000
LOX £$202
JSL $€10000
PLA
STA ID
PEA $0000
PEA $0000
PEA $00E1
PEA $2000
LOX £$1A02
JSL $£10000
LOX £91002
JSL $E10000
PEA $3000
PEA $0080
PEA $00A0
LOA ID
PHA
LOX £3204
JSL $E10000
PEA $3300
PEA $0014
PEA $0000
PEA $0280
PEA $0000
PEA $00C8
LDA ID
PHA
LOX £$206
JSL $£10000
00/%
00/;
jmise en mode natif
. 00.
yavec les registres 00
ysur 16 bits 00
ydémarrage des Outils at
yboucle de gestion des événements at
jfermeture 0
jmise en mode émulation ;
yremise des registres 0
jen mode 8 bits t
¢
i
1
jTLStartup
sMMStartup
3FindHandle de $£10000
;DisposeHandle
jdébut des Pages 2éros QuickDraw
78CB:620 pixels/ligne
jnbre d’octets/ligne
;00Startup
jPage Zéro Event Manager
slong. maxi file d’événements
3X min
3X max du curseur
3Y min
7¥ min
gEMStartup
GUY-HACHETTE
Se on
00/2072:
00/2075:
00/2079:
00/2070:
00/2070:
00/2080:
00/2083:
00/2084;
00/2087:
00/2088:
00/2088:
00/208F :
00/2090:
00/2092:
00/2095:
00/2098:
00/209A:
00/2090:
00/20A0:
00/2004:
00/2087:
00/20AB:
00/20AD:
00/2080:
00/2062:
00/2083:
00/2086:
00/20BA:
00/2080:
00/2001:
00/2004:
00/2007:
00/20CA:
00/20CD:
00/2000:
00/2001:
00/2004:
00/2007:
00/20DA:
00/20DD:
00/20E1:
A2 04 9
22 00 00 El
60
F4 00 00
F4 FF FF
A? 00 00
48
A9 ES 20
48
A2 06 0A
22 00 00 Et
68
FO E8
AD E6 20
co 01 00
dO 13
F4 00 00
A2 04 86
22 00 00 Et
A2 04 15
22 00 00 £1
80 CD
C9 03 00
dO c8
60
A2 06 03
22:00 00 E1
A2 04 03
22 00 00 Ei
F400 00
F4 00 00
F4 00 00
F400 80
AD E4 20
48
F413 CO
F4 El 00
F4 00 20
A2 02 09
22 00 00 E1
68
LOX £9104
JSL £10000
RTS
PEA 0000
PEA FFFF
LOA £0000
PHA
LDA £20E6
PHA
LOX £0A06
JSL £10000
PLA
BEG 207A 6-188
LDA 20E6
CMP £0001
BNE 20AD é+138
PEA 0000
LOX £8604
JSL £10000
LOX £1504
JSL £10000
BRA 207A 6-33¢
CMP £0003
BNE 207A é-388
RTS
LOX £0306
JSL £10000
LOX £0304
JSL £10000
PEA 0000
PEA 0000
PEA 0000
PEA 8000
LDA 2064
PHA
PEA C013
PEA 00E1
PEA 2000
LOX £0902
JSL E10000
PLA
LOX £99104
JSL $£10000
RTS
END
BOUCLE START
USING COMMUN
PEA $0000
PEA $FFFF
LOA £90000
LOX £$A06
JSL $£10000
PLA
BEQ BOUCLE
LDA EVENT
CMP £$0001
BNE NOT!
yShowCursor
;tous les événements accessibles
jl’adresse de EVENT sur 4 octets
jGetNextEvent
jaucun événement?
ilequel?
sbouton-souris enfoncé?
ysimple exemple de traitement:
PEA $0000
LOX £$8604
JSL $E10000
LOX £$1504
JSL $£10000
BRA BOUCLE
NOTL CMP £0003
BNE BOUCLE
RTS
END
FERMER START
USING COMMUN
LOX £9306
JSL $E10000
LOX £3304
JSL $£10000
PEA $0000
PEA $0000
PEA $0000
PEA $8000
LOA ID
PHA
PEA $013
PEA $00E1
PEA $2000
LOX £8902
JSL $£10000
PLA
yRandom renvoie sur la pile
jun nombre aléatoire sur 2 octets
;ClearScreen met ce nombre dans
jtous les octets associés aux pixels
jtouche appuyée
jEMShutDown
yQDShutDown
itaille du bloc a réserver
3 $008000
fixe ,verrouillé,sur un seul banc
3 en $E12000
i
jNewHandle
(suite page 10)
ARCSTHISTT TERT OSn ERP OOe AS CaTA CR Rss eee es ee ss Ee E eee eee eee EES SST TeNsEseeseesEeeseeseEESeesAeEeeEOe
TREMPLIN MICRO
‘|
00/20E2: 68 PLA PLA
00/20E3: 60 RTS RTS
END
COMMUN DATA
Nous avons choisi cette pré- 1D 0S 2
sentation, peu orthodoxe il ;
est vrai, pour rendre ce pro- EVENT ps 2
gramme accessible 4 tous les
utilisateurs de I'APPLE IGS, y ae
compris ceux qui ne dispo-
sent pas du systeme APW ou DS 4
(relire [article de Nicole MODIFIER DS 2
BREAUD-POULIQUEN). END
ydonnées communes
jN*d’identité sous lequel le
Memory Manager connait ce programme
présultats de GetNExtEvent
10 PRINT "Le but de cette application est de montrer comment faire”
20 PRINT "appe) aux OUTILS du GS pour utiliser l’environnement type Mac”
30 PRINT "-le bureau electronique en page Super Haute Résolution"
40 PRINT “en restent COMPATIBLE avec BASIC APPLESOFT et ProDOS 8"
45 PRINT CHR$ (4)"BLOAD PG.OBJ"
50 PRINT "Le S/P est charoé en $002000"
60 PRINT "Les pages 2éro nécessaires aux Outils sont en $003000"
62 PRINT : INVERSE : PRINT" 620 OU 340 “3s NORMAL
63 SCB = 8261: REM $2045
64 MAXX = 8287: REM $205F-2060
65 INPUT N: IF N= 0 THEN END
66 IF N= 620 THEN POKE SCB.128: POKE MAXX + 1.2: POKE MAXX,128
67 IF N= 340 THEN POKE SCB,0: POKE MAXX + 1,1: POKE MAXX, 64
70 CALL 8192: REM $2000
75 1D = 8420: REM $20E4
80 PRINT “-démarrage du Too! Locator"
90 PRINT "-démarrage du Memory Manager”
100 TYPE = PEEK (ID + 1) / 16:MAINID = PEEK (ID)
110 PRINT "N* d’identification du bloc courant “;TYPE:"00" :MAINID
120 PRINT “ProDOS alias $3001 posséde 1a mémoire de 1’écran Super Haute
Résolution"
130 PRINT “dont GuickDraw devra se servir"
140 PRINT “on va chercher le handle de cette zone $£10000°
150 PRINT “puis le désallouer pour laisser QuickDraw s’en servirs:"
160 PRINT " -FindHandle"
170 PRINT " -DisposeHandle *
180 PRINT "-démarrage de QuickDraw"
190 PRINT "-démarrage de 1’EventManager"
220 PRINT “La boucle principale du S/P traite les événements par:
230 PRINT "-GetNextEvent pour les faire connaitre au proaramme"
240 PRINT “qui attend que le bouton-souris soit enfoncé pour "
250 PRINT “faire varier 1a couleur du fond"
260 PRINT "et qui termine la boucle dés qu’une touche est pressée”
290 PRINT "Le retour au programme BASIC appelant necessite:
292 PRINT " -fermeture des outils sauf le Memory Manager"
294 PRINT " -réallocation de 1a mémoire Super Haute Résolution par:*
296 PRINT " -NewHandle “
300 GOTO 62
10
3. Perspectives
Sachant qu'il faut
laisser aux outils des
zones de travail ou
Pages Zéro dans le
banc $00, qu’un pro-
gramme en BASIC
APPLESOFT ne s'exé-
cute que s'il est dans
le banc $00, que pour
le Memory Manager,
c'est ProDOS 8 qui est
propriétaire des
blocs :
$000800-$008800 et
$010800- 618800 puis
$E02000-$E06000 et
£12000-E1AG00,
le travail de recher-
che des meilleures
adresses d'implanta-
tion est ouvert.
Les outils seraient
donc tous utilisables
en cohabitation avec
du BASIC? A vous
maintenant de faire
travailler © Window
Manager, Menu
Manager, _— Control
Manager, Dialog
Manager, etc. ...
GUY-HACHETTE
Im
tic
to
pi
-_—_ in SBS
:
| ah Sane ae eee ae ame
© TRES SIMPLE! .....
Imaginez une course d’ordinateurs : un MOS sorti tout droit de chez Thomson et de |'Educa-
tion nationale, mon vieil APPLE //e tout vermoulu, avec PASCAL UCSD, mon tout-nouveau-
tout-beau GS équipé de son © de compétition.
Méme parcours pour tout le monde : calculer 10 fois (pour faire bonne mesure) les nombres
premiers apparaissant dans la suite d’entiers de 1 4 10 000.
Résultat des courses
MO5 + BASIC: &56 minutes, il a fallu abattre l'ordinateur : il souffrait trop.
APPLE Ile + PASCAL: 14 minutes, pas mal, I'APPLE /le !... on a quand méme di refaire la
peinture.
APPLEIIGS + € : 6secondes !
Des commentaires, des questions, oui, non, boff ! OK ! je vous sens plein de courage :
voici la saga des variables, |'6popée des objets informatiques.
Fini de s‘amuser ! aujourd'hui, on attaque les cho-
ses sérieuses et ceux qui liront cet article jusqu'au
bout ne seront plus jamais les mémes : une majesté
certaine illuminera leurs traits fatigués. Quant aux
ELUS qui auront tout compris, un € d'argent bril-
lera sur leur noble front.
Une facon élégante d'aborder sérieusement un lan-
gage consiste & définir les objets (les variables)
qu'il manipule et la facon dont il les manipule.
Le trés vénérable SAINT NIKLAUS WIRTH, auteur du
tres regretté PASCAL, nous apprend que ALGO-
RITHM + DATABASE = PROGRAM. Ce qui, en bon
francais, signifie @ peu prés : si tu sais écrire
PRINTF “HELLO” et que tu ne sais pas comment
STRUCTURER tes données, tes programmes font rire
ou pleurer, selon qu'on les regarde ou qu'on les
utilise.
C LA RENCONTRE DES QUATRE TYPES
La puissance d'un langage informatique est trés
liée & la fagon dont i! peut manipuler les objets (les
variables) qui lui sont confiés.
BASIC, lui, n'est pas méchant. Je rappelle aux
inconscients, & ceux qui se seraient aventurés sur
ces lignes bourbeuses sans repasser leur BASIC
ELEMENTAIRE, que ce langage délicieux posséde
en gros quatre types. prédéfinis : ENTIERS, REELS,
CHAINES DE CARACTERES, et un quatriéme discret
et caché comme une taupe, le type LOGIQUE.
Ces objets, Basic sait les organiser en tableau et en
fichier, donc en structures linéaires simples.
La déclaration du type d'un objet Basic se fait au
moment de son utilisation par la présence d'un suf-
fixe $,%, ou par une absence de suffixe selon que
l'on veut déclarer une chaine, un entier ou un réel.
Seule la structure TABLEAU échappe 4 la régle et
doit étre déclarée avant I'utilisation par |'instruc-
tion DIM.
Ce petit rappel ayant distrait les BASICOIS et les
BASICOISES, passons vite 4 € que je vais définir
par ses différences. (suite page 12)
sunosmssueousuossccsnsccaescerscerscnmsessecsenssssecsscssssssoesnsesecousonsecssareaseuausscssencoons
TREMPLIN MICRO
W
On pourrait dire que le langage est d’autant plus
puissant et efficace qu'il posséde de types d’objets
différents, et de possibilités d’organiser ces objets
en structures complexes.
C TYPE
C est un langage “typé” il permet |'utilisation
d'objets de types divers selon que l'on veut privilé-
gier la vitesse d’exécution, l’encombrement en
mémoire ou encore la puissance de calcul.
A la différence du BASIC, toute variable devant
étre utilisée dans le cours du programme, doit étre
déclarée 4 l’avance. Ceci permet une gestion effi-
cace de mémoire et un gain de temps appréciable
pour le compilateur.
En Basic nous écririons : tandis quenc :
10 X% int X;
20. :
80? ices
Remarquons au passage que l'instruction d'affecta-
tion (=) est la méme en BASIC et en € .. Elle se
prononce X recoit 5.
Uinconvénient de |'écriture © est qu'elle ne per-
met pas d'identifier immédiatement le type d'une
variable dans le cours d'un programme : il faut
remonter 4 sa déclaration et celle-ci est parfois
lointaine.
Son avantage principal est de pouvoir limiter la
durée de vie (on dit plutét la visibilité ou la portée)
d'une variable a la zone de programme strictement
nécessaire et de limiter ainsi les mélanges de
variables bien connus des programmeurs BASIC.
Dans le programme ci-dessous il existe deux varia-
bles x distinctes et elles possédent une valeur dif-
férente selon que Ion se trouve dans le bloc 1 ou 2.
main ()
é /* un premier bloc */
int x =5; /* on fobrique une variable entiére *
printf("%ed", x); /* etonléctit...*/
/* onreviendra sur la syntaxe*/
é /* undeuxiéme bloc */
intx = 7; /* une deuxiéme variable x */
print{("%od ", x); /* lapremiére n’est plus VISIBLE*/
é /* fin du deuxiéme bloc retour au 1*/
printf(‘%edgn’”,x); /* coucou la variable | est revenue */
é /* fin du bloc 1*/
En C les /* et */ délimitent les lignes de
commentaire.
A part la syntaxe farfelue de printf (farfelue, mais |
extrémement pratique), si vous avez exécuté ce
programme vous avez tout compris.
Il produit l'affichage 5 7 5.
On dit que les variables x sont des variables LOCA-
LES. On distingue en C€ les variables LOCALES et
les variables GLOBALES qui appartiennent 4 tout
un programme.
Malgré cela — ou peut-étre méme a cause de
cela —, les langages "typés” font toujours un
peu peur aux programmeurs BASIC. Ces derniers
considérent comme une injuste punition ces
déclarations "inutiles”.
Je vais essayer de leur prouver que, loin d’étre
pénalisante, cette nécessité permet une grande
souplesse dans les techniques de programmation.
LA DECLARATION DES VARIABLES EN C
Pour exister, dans la majorité des langages un
objet informatique (une variable par exemple) doit
étre défini par quatre éléments :
1. Un identificateur, le "nom de l'objet (a, b, toto).
2. Un type associé (nombre entier, réel, chaine de
caractéres).
3. Une valeur associée (10, 15, 12, “machin”.
4. Une “classe de mémorisation” définissant la
durée de vie.
(En Basic, la classe de mémorisation est une et indi-
visible puisqu'une variable est définie pour tout le
programme).
Cette structure quadri-parties correspond 4 la réa-
lité physique de l'organisation mémoire dans les
entrailles profondes de la machine (pouah !).
Langage de haut niveau
IDENTIFICATEUR
~N wo
ae (ET
DUREE DE VIE
TYPE
VALEUR
Niveau machine
ADRESSE PLACE EN MEMOIRE
“SS oper —
=a ~e
GESTION DE MEMOIRE CONTENU
12
GUY-HACHETTE
nn A See eee eee aero
+
+
Le langage € est pratiquement le seul 4 pouvoir
passer de l'un a l'autre niveau de représentation
sans probléme, ce qui lui a valu sa réputation
d‘assembleur haut niveau.
Nous allons passer en revue les différents consti-
tuants tels qu’ils existenten © APW.
LES IDENTIFICATEURS
Il faut bien le reconnaitre, on prend de mauvaises
habitudes en BASIC APPLESOFT. Comme ce lan-
gage ne considére que deux lettres significatives
pour nommer les variables, comme de plus il
n'apprécie pas tellement les identificateurs conte-
nant des mots réservés, on en vient trés vite 4 pro-
grammer avec des A$ des | et des N qui ne rappel-
lent en rien l'objet manipulé.
C lui, considére TOUS les caractéres de l'identifica-
teur comme significatifs et distingue méme majus-
cules et minuscules : Toto et toto sont des identifi-
cateurs différentsen € .
Il faut en profiter pour nommer intelligemment les
variables que |’on utilise. Nous verrons par la suite
que le type pointeur constitue 4 lui seul un outil
prodigieux pour rendre un programme totalement
incompréhensible ; raison de plus pour bien choisir
les identificateurs et écrire TVA plutét que Z.
LES TYPES PREDEFI
Le € de I'APPLE IIGS se distingue par une opulence
de types assez remarquable.
Les types numériques en particulier sont tres nom-
breux : alors que le type réel de Basic Applesoft
présente juste assez de précision pour me permet-
tre de calculer mes droits d'auteur sur ces articles,
C offre pour les types numériques une représenta-
tion entiére, signée, ou non-signée, courte, lon-
gue, étendue, flottante, double, énumération, etc.
‘en passe et des plus spécialisés. On doit pouvoir
calculer la distance de la Terre @ la Lune en
centimetres !
Le tableau ci-dessous résume les principaux types
de © APW je vous laisse la joie de les découvrir.
TYPE VALEURS Nb OCTETS
char - 128 + 128 ]
unsigned char 0 + 255 1
short - 32767 + 32767 2
unsigned short g + 65535 2
int - 32767 + 32767 2
unsigned int g + 65535 2
long ~ 2147483648 + 2147483647 4
unsigned long 0 + 4294967295 4
enum dépend de I’énumération 1,2,4
i pointeur vers une variable 4
float IEEE simple précision 4
double IEEE double précision 8
comp Valeur entiére format ROMTOOL 8
extended Valeur réelle format ROMTOOL 10
Certains d’entre vous ont dé le remarquer : pas de
type chaine de caractéres prédéfini en€ . En
fait, © considére qu'une chaine de caractéres res-
semble trop 4 un tableau de caractéres pour
s‘encombrer d'un type spécifique.
C nest pas trés regardant quant aux mélanges de
types : le type CHAR (caractére) s‘accommode par
exemple trés bien de transporter des valeurs
entiéres.
le programmeur en€ doit étre vigilant: s'il
recherche |'efficacité maximale et partant, le code
le plus court possible, il peut étre rapidement
amené a réaliser des programmes générateurs de
migraine.
A titre de démonstration le petit programme (que
vous trouverez en haut de la page 14) affiche les
lettres de A 4 Z et leur code ASCII en décimal et en
hexadécimal,. amusez-vous 4 changer le type char
en type int par exemple et voyez ce qui se passe.
Une petite explication pour ceux qui s’endorment
au fond de la salle : ce programme... (suite page 14)
PI TTT
13
TREMPLIN MICRO
Le
BUSHES SOSEST RSET SSOOSTTCTSAOSISTASOCTEST SRS TOU NET ETISTNS SS aRSoTTEANERSeaTeesTERAseAseTNANOREOTTT
/* Mélange de types */
main ()
unsigned char i;
for (i='A’';i = 'Z'; i++);
printl("%c %d %x ¢n",i,i, i);
é
utilise une instruction trés proche du FOR... NEXT
du Basic :
FOR (x=début ; x < = fin ; x++) é...bloc...é
Le bloc délimité par é et @ sera exécuté (fin -dé-
but) fois, x étant incrémenté a chaque boucle
grace 4 l'opérateur unaire ++.
Uinstruction printf que nous avons déja rencon-
trée permet un affichage formaté des données il
s‘agit d'une sorte de super PRINTUSING.
printf(contréle,arg],arg2,...);
arg est une variable dont le mode d’affichage
sera conditionné par les caractéres de conver-
sion contenus dans la chaine contréle.
| Garactéredeconversion | Affichage de arg
hd décimal
ho octal
%x hexadécimal
eu décimal non signé
wee caractére
hs chaine
he notation scientifique
%t notation décimale
%g choisit e ou f (la plus courte)
Le type pointeur fait les délices et les souffran-
ces du programmeur en C€ . Il provoque plus de
dégats que l’alcool et le tabac réunis dans notre
communauté élitiste : avec les pointeurs on peut
tout faire.
Un pointeur est un entier long désignant des
adresses de variables. Supposez |'existence
d'une variable de type entier nommée “Objet” et
déclarée par int Objet = 5;
L'opérateur & (ampersand) permet de détermi-
ner l'adresse de cette variable.
Po = &Objet affecte a la variable Po l’adresse de
Objet. On dit que Po est un pointeur sur la varia-
ble Objet.
U'opérateur * (astérisque) placé devant le nom
du pointeur donne la valeur de la variable poin-
tée : dans notre exemple *Po est égal 45 et peut
remplacer Objet dans toutes ses applications.
Nous reviendrons longuement sur les pointeurs
dans les articles suivants... Pour |'instant,
souvenez-vous seulement qu'un pointeur non ini-
tialisé sur une variable, pointe n‘importe ov et
que ¢a peut faire trés mal au ProDOS.
Dans notre prochain numéro :
Un pointeur fou a pu s‘introduire dans I'espace mémoire.
Tombera-t-il entre les griffes du trop célébre docteur MALLOC
ov pourra-t-il rejoindre TOPLEVEL dans le Kernel ?... Vous le
saurez en lisant le prochain article de :
C trés simple, mais ¢a se complique, dans TREMPLIN MICRO.
A bient6t... Claude AUBRY.
Le premier volet de cette série d’articles a paru dans le numéro 14 de TREMPLIN MICRO
(bulletin de commande a la fin de la revue).
4
GUY-HACHETTE
a cee ce cee cn
_—+
LANGAGE C SUR APPLE IIGS NESTOR — EXERCICE 2
Le bon nombre .......
Reprenons I’exercice n°1 (Tremplin Micro n°14), mais en essayant de l’améliorer sur 3 points :
© Ouverture du programme sur un écran vide (home) ;
* Modification de la fourchette en fonction des limites déterminées par les rentrées successi-
ves de nombres ;
* Limitation du nombre de coups.
EN BASIC 10 PRINTCHRS (4)"PRE3”: PRINT
= 15 X = 69:C = G:5 = 210:A = 1:2 = 100
Cela se traduirait par 20 HOME
les lignes suivantes: 95 § = § 1: IFS > @ THEN PRINT "___";: GOTO 25
30 PRINT: PRINT :S = 20:C =C +1
35 IF C = 10 THEN PRINT "VOUS AVEZ PERDU!”: END
4Q PRINT “TROUVEZ UN NOMBRE COMPRIS ENTRE "A" ET "2";
45. INPUT” ':N: PRINT
Micro-programme 50 IF N = X THEN PRINT "C'EST LE NOMBRE - TERMINE”: END
elémentaire. 55 IFN > X THEN 70
60 PRINT “IL EST TROP PETIT”: IF N >(A) THEN A = N +1:
GOTO 25
65 GOTO 75
70 PRINT “IL EST TROP GRAND": IF N<Z THEN Z = N - 1:
GOTO 25
75 C=C-1:GOTO25
REMARQUES La ligne 25* pourrait étre avantageusement remplacée par :
FOR S = 1TO 19: PRINT “___.";: NEXT
Mais la ressemblance avec le programme en € se révélerait moins
évidente. Pourquoi le C = C - 1 de la ligne 75 ? Simplement pour ne
pas comptabiliser un nombre sans influence sur la fourchette propo-
¢ ie ste if fois 4 pos sée. Si cette derniére est 65, 70 et que l'on rentre un nombre plus petit
comple (00. cartes)” ou égal 65... ou plus grand ou égal 75, on aboutira a Ia ligne 75 : un
foudhoit $ = 21. coup pour rien ! (suite page 16)
TREMPLIN MICRO 1s
EQUIVALENCE EN LANGAGE C
main( )
intx<; Nn; ¢,'s; G23 © €L: Nouvel écran.
= 69; * LG: Une ligne de soulignement
c=@; suivie par deux retours.
s = 20; © § est réinitialisé 4 20.
a=1; * € est incrémenté. Quand il est
z= 100; égal & 10, message et fin de
programme.
CL: * Choix du nombre
. Pt Hiei: * Si le nombre choisi est égal & x,
printf(“¢f"); C'est terminé !
* S'il est plus petit que x, on I'an-
LG: nonce.
--S; © Si, Sane ce oe le n est ps
; rand que a, on faita = n+ 1.
if(s>O)é Retour B LG.
printf(__ i * Si n est plus grand que x, on
goto LG; l'annonce.
* Si, dans ce cas-la, mn est plus
printf("gn¢n”); petit que z, on faitz = n-1.
s= 20: * Sinon, n = Get C = C-1, puis
" goto LG.
+e;
if (c == 10) é
printf(" VOUS AVEZ PERDU!¢n”);
exit (8);
é
printf("TROUVEZ UN NOMBRE COMPRIS ENTRE %d ET %d —> ", a, z);
scanf("%d", &n);
if (n == x)é
printf("C’EST LE NOMBRE - TERMINEcn”’);
exit (0);
é
if (n<x)é
printf(“IL EST TROP PETIT¢n”);
if(n>a)é
a=n+1;
é
goto LG;
é
if (n> x) é
printf("IL EST TROP GRAND¢n");
if(n<zé
z=n-l;
é
goto LG;
é printf("¢f"); vide I'écran.
n=@; =-S; signifieS = $-1.
--¢; + +; signifieC =C +1.
goto LG; §NM _indique un retour ligne.
é MEN en génére donc 2.
GUY-HACHETTE
q
Cet utilitaire permettra aux heureux utilisateurs
de ProDOS de visualiser l’occupation de la dis-
quette présente dans le lecteur (port n°6). Le pro-
gramme baptisé "CATAVISU" affiche 4 |'écran
une table d’occupation avec :
— Sur la ligne horizontale supérieure les pistes
numérotées de 00 4 $22 ce qui fait de 00 4 34
en décimal soit 35 pistes.
— Sur la colonne la plus & gauche les numéros
de blocs numérotés de @ 47 soit 8 blocs.
TABLE D‘OCCUPATION DE LA DISQUETTE
90000000000000001111111111111111222
9123456789ABCDEF@1 23456789ABCDEFO1 2
.«---- indique un bloc libre
NAURONnN—@Q
Francois GALLET et Thierry FILLAUT
CATAVISU
chage des lignes de présentation. Puis, grace au
MLI et & la commande READ BLOCK qui effectue la
lecture d'un bloc de 512 octets, le programme va
chercher sur la disquette le VTOC (ou BIT-MAP) la
piste 06 bloc 06. La, il trouve, sous la forme de 35
octets, l'occupation de la disquette avec pour
régle :
— Un bloc libre représenté par un 1 ;
— Un bloc occupé représenté par un G.
Il suffit donc de lire ces octets et de les transférer
dans une partie de la mémoire de I'APPLE ($2000)
pour les traiter. Ce traitement consiste 4 prendre
un octet et 4 l'analyser selon les régles ci-dessus,
puis 4 afficher un "." ou un “*” suivant le cas.
ATTENTION ! cet utilitaire ne fonctionne qu’avec
ProDOS. En effet la notion de blocs n'est utilisée
que par ce systéme d’exploitation (1 bloc = 2
pistes).
*«---- indique un bloc occupé Pour utiliser le programme, il suffit de taper :
— BRUN CATAVISU.C
— CALL 1013
—et diutiliser alors le "& pour appeler
L'utilitaire débute 4 l'adresse $9000 avec |'affi- l'utilitaire.
CATAVISU.S
ASSEMBLAGE 0 BASCALC EQU $FBCI
1 BLOCK EQU $80
2 CH EQU $24
par ProcODE 3 0 EQU $25
4 HOME EQU $FC58
S MLI EQU $BF00 jAdresse du MLI
6 PAGE1 EQU C054
7 STROUT EQU DB3A
8 VTAB EQU $FC22
SAUVEGARDE : 9 *
10 ORG $9000
BSAVE CATAVISU.C,A$9000, L300 11 * (suite page 18)
TREMPLIN MICRO
7
BageeaneenaseeRaesenesanesesonssreeeseesersseeoneseeaaE sess e sees REA Sees OC eNznEeeeeNERoeeAaeTTeSeASeeeS
7000:
9002:
9004:
9006:
9008:
900A:
900D:
GOOF:
9012:
9013:
9016:
9018:
9O1B:
901D:
9O1F:
9022:
9023:
9024:
9025:
9026:
9029:
902C:
902D:
9O2E:
9030:
9031:
9034:
9036:
9038:
903B:
903D:
903F:
9041:
9044:
9046:
9048:
904B:
904D:
904F:
9052:
9054:
9056:
9059:
905B:
Ag?
85
Ag
85
Ag
8D
Ag
8D
60
20
Ag?
8D
A2
Ag
2c
2A
4A
AB
SA
AD
20
7A
8A
a1
€8
AD
ce
Fo
EE
80
ag
A0
20
ar
Ao
20
AD
20
ag
A0
20
ay
AO
04
AE
co
v1
FB
a1
v1
DB
90
DEBUT
VERTIC
SUITE
LDA
STA
LDA
STA
LDA
STA
LDA
STA
RTS
JSR
STA
LDX
BIT
ROL
LSR
TAY
PHY
JSR
PLY
STA
INX
LDA
CMP
BEG
INC
BRA
LDA
LDY
JSR
LDA
LDY
JSR
LDA
LDY
JSR
LDA
LDY
JSR
LDA
LDY
£300
$73
£$94
$74
£<DEBUT
$3F6
£)DEBUT
$3F7
HOME
£407
LINDEP
£$B0
£$01
PAGE1
LINDEP
BASCALC
($28) ,Y
LINDEP
£$0E
SUITE
LINDEP
VERTIC
£402
£$04
Pos
£<CH3
£>CH3
STROUT
£305
£304
Pos
£<CH1
£>CH1
STROUT
£306
£304
Change HIMEM de valeur pour
protéger leprogramme.
Permet d’utiliser "&" pour
appeler
la fonction CATAVISU.
Efface 1’écran.
Ligne 7. Prép. l’affich. vert.
des nbrs représ. les blocs.
Stocke le caractére "0" dans X.
Colonne n"1.
Active la mém. princ. d’écran.
Divise par 2.
N* de ligne d’affic. dans A.
Affic. du carac. de A.
Prépare affic. carac. suivant.
Dern. ligne pour l’affichage ?
Qui, alors on affiche le titre.
Non: on descend d’une ligne...
et retour pour nouvel affic.
Positionne le curseur vert.
Positionne le curseur horiz.
Affiche la chaine de caractére.
"TABLE D’OCCUPATION DE LA DIS-
QUETTE"
On recommence avec de nouvelles
positions.
"000000000000000011111111111111
11222"
_BERSSURNZATINAS SE REAUNADES PERC ST OBERT SSNS sAPORSE COSA AEE SoU NTSECN AS SSHES NERA SESEE ATR AeeNsDeNNESASeeR wT
18
GUY-HACHETTE
ee
905D: 20
9060: AP
9062: AD
9064: 20
9067: 20
906A: 80
906B: Bé
906D: A2
906F: 86
9071: AP
9073; 85
9075: AS
9077: 85
9079: AS
907B: 1E
907E: 90
9080: 20
9083: AP
9085: AD
9087: 20
908A: 80
908C: 20
908F: AY
9091: AD
9093: 20
9096: E6
9098: AS
909A: C9
909C: DO
9O9E: ES
90A0: ES
90A2: AS
90A4: CP
90A6: FO
90A8: 80
90AA: AS
9OAC: A4
90AE: 85
90B0: 20
90B3: 84
AE
E4
90
3A
00
70
00
FE
04
4c
07
4D
FE
00
oc
AA
BE
90
3A
0A
pA
BC
90
3A
40
4D
OF
oB
FE
4c
4c
27
oD
cB
4D
4c
25
22
24
90
OB
20
90
DB
90
DB
FC
118
ENC
*
coucou
*
SUITE1
POS!
Pos
*
JSR
LDA
LDY
JSR
JSR
OFB
DA
LDX
STX
LDA
STA
LDA
STA
LDX
ASL
Pos
£<CH2
£>CH2
STROUT
MLI
BLOCK
PARAM
£300
$FE
£404
$4C
£307
$4D
$FE
$2000 ,X
SUITE!
POS1
£<CHS
£>CHS
STROUT
CONT
POS1
£<CH4
£>CH4
STROUT
$4D
$4D
£$F
coucou
SFE
$4C
$4C
£327
FIN
$4D
$4C
cy
VTAB
CH
"0123456789ABCDEFO 1 23456789ABCD
EFO12"
Appel du MLI.
Appel fonction READ BLOCK MLI.
Fournit les paramétres.
Prépare le compteur permettant
la lecture des blocs.
Positionne horizontalement le
curseur pour afficher.
Positionne vert. le curseur
pour l’affichage.
Stocke la valeur du pointeur
d’octets dans X.
Décale vers la gauche.
Si C=0: bloc occupé.
Sinon saut pour prép. l’affic.
Affiche...
alors
un *."
Opération suivant.e
Le bloc est occupé.
On prépare l’affichage.
d’un “#",
On incrémente la ligne
et compare avec la
derniére ligne possible.
<> on a d’autres blocs & affic.
sinon on incrémente pour
passer a la piste suivante.
Incr. pos. hor. du curseur
et comparaison avec
la derniére position possible
Si différent, on a d’autres
pistes a traduire.
(Suite page 20)
BEFDELEAIDIOSITRGEEI ODEO DGD FOI LI OLI PHI ITE OO IETEOTSUSLSES GLITCH OGL HLIAIHOLSRIRSSTLTASTHSSTOGSATSSSHUSIS TTT
TREMPLIN MICRO
9
90B5: 60 119 FIN RTS
120 *
121 *
90Bé: 03 122 PARAM HEX 03 ; I] faut 3 paramétres:
90B7: 60 123 UNIT HEX 60 ; N* du connecteur du drive
90B8;: 00 20 is BUFFER DA 02000 } Adr. du transfert des données
; du VTOC et numéro du
90BA: 04 00 126 BLOCS HEX 0600 ; bloc qui doit étre lu.
*
90BC: AA 128 CHa asc "x"
90BD: 00 129 HEX 00 TENE
90BE: AE 130 CHS asc "." 7 pyssi_THPER wT -15
90BF: 00 131 HEX 00 —_ygus POWELF accent POS 3e0F
90CO: BO BO BO es CODES 3 a0 Fe 03 69 “a s Lied
BO BO BO 994 05 749 Te gh 2 88 68 Os 78 08
BO BO BO a9 00 73 A et A 07 cy FB 7A A 978
BO BO BO pony 7 02 60 gp 0 BT 93 0 £8 A 20 S78
BO BO BO 9010: yy 08 05
“5a C0 9 oe FO ap 0B 9 ne 90
ei me ORG uan Suan awe
ei Bt Bi oad 04 20 AE Ty ag 90 20-20 og a a8 BF
B1 Bi BI 9050+ eee oo 20 28 O°
Bi BI BI 9060+
B1 Bi B2
B82 B2 132 CHI ASC "00000000000000001111111111111111222"
90E3: 00 133 HEX 00
90E4: 80 B1 B2 gn 20 90 06 a
B3 B4 BS 4 Fe ME 90 A?
86 B7 BB ac 09 07 85 ag 8 20. Cg FE BEAD
B9 Ci C2 ag 04 85 90 20 3A 9 OF 00 5 ECE?
+ FE BE AD ap C 95 2
9070: 90 9 ap AS p Ad aC 4927
fe oe DP som: ee ea gp a0 8 FS 4 op 00 AE OF 200
Cé BO Bt go90s BC AD Ye gc 9 27 FY lg gg 20 06 gap BO EDA no
B2 B3 Bd + 6 aC 4 60 0) go Bo 8 pi Bt
g0Ad: FC 94 2! po 80 pi Bi
BS Bé B7 ood: 20 22 FC oy gg Bd BOE oy gy Bl Bt
B8 BS CI ocd: Bo 80 FO, gy Bi BL 7
c2 c3 C4 ond: Bi Bt EY
c5 Cé BO
Bi B2 134 CH2 ASC "0123456789ABCDEFO! 234546789ABCDEFO! 2"
9107: 00 135 HEX 00
9108: D4 C1 C2
cc C5 AO 99A6
C4 A? CF gor OT ye
c3 C3 DS i 52 83 84 OS, gy BBFC osie
D0 Ci D4 _ gp 2 0200 80% ip aa OF BSE or co AO Oy cote
c9 CF CE pe re 4 05 08 BG ap DA CE Nog ca C5 AO F908
At C4 cs ea oa 8 06 cy oa os 00 00
Ad CC C1 :
a0 C4 ce guide OF © TS gg pi 05 08
D3 D1 DS 9120:
cS D4 D4
cs 136 CH3 ASC "TABLE D’ OCCUPATION DE LA DISQUETTE"
912A: 00 137 HEX 00
912B: 00 138 LINDEP HEX 00
*
20 GUY-HACHETTE
NAITRE L’APPLESOFT Marcel COTTINI
POKE, COMMANDE APPLESOFT
L'INSTRUCTION POKE DU BASIC APPLESOFT
POKE est une instruction faisant partie de |'inter- £783 - RTS Retour au — sous-programme
préteur du Basic AppleSoft. L'adresse $D072 pointe appelant.
SE77A qui est l'entrée (adresse-1) de la routine
POKE. C'est une instruction qui permet de placer a
Remarques :
eect toe
partir d'un programme Basic par exemple, une
Joe pe ane on tun a © Une adresse négative est |'équivalent d'une
Nee peg ee oe . adresse positive obtenue en lui additionnant la
revient sélectionner une adresse correspondant a valeur 65536
un emplacement mémoire et 4 y placer une valeur
déterminée. L'instruction POKE posséde par ail-
leurs la caractéristique de sélection d'un commuta-
© L'équivalent du POKE en langage machine est
STA (STore Accumulator).
teur logique du systéme. Si l'adresse déclarée © En programmation Basic, les valeurs déclarées
aprés le POKE n’existe pas, |'instruction sera igno- aprés POKE devront étre en base 10, tandis que
rée. POKE peut étre déclaré en mode direct (cla- le langage machine requiert les valeurs en base
vier) ou en mode indirect (programme Basic). 16.
; © POKE place dans |'adresse indiquée un nombre
Syntaxe: POKE ADRESSE, VALEUR ou binaire codé sur 8 bits, équivalent au nombre
ADRESSE est une expression décimal déclaré.
arithmétique comprise entre 0
et 65535 inclus, et VALEUR une expression arithmé-
tique comprise entre @ et 255 inclus.
© Si l'adresse déclarée ne correspond pas 4 une
adresse mémoire valide, alors l'instruction sera
ignorée. Si le POKE est adressé 4 une mémoire
morte (ROM), celui-ci restera sans effet.
APPLESOFT ROUTINE POKE : © Si les paramétres déclarés aprés POKE sont
hors des limites fixées par l'AppleSoft, un mes-
sage d’erreur sera retourné : ILLEGAL QUAN-
E77B- JSR $E746 — Transfert de l'adresse du POKE
dans $50-$51.
Au retour du sous-programme, la TITY ERROR.
valeur du POKE se trouvera dans © POKE peut modifier le contenu d'une adresse
le registre X. ou commuter des switchs, encore appelés com-
E77E- TXA Copie la valeur du POKE dans A. mutateurs logiques. Ce dernier mode est sélec-
E77F - LDY £$00 Initialise le registre Y, tionné en écrivant ou en lisant, a certaines
E781 - STA ($50),Y et copie la valeur du POKE a adresses servant de point d’entrée a ces com-
l'emplacement mémoire spécifié. mutateurs logiques.
La page zéro contient un certain nombre de valeurs et pointeurs utilisés soit par l'interpréteur AppleSoft, soit
par le systéme d'exploitation. Une totale maitrise et une manipulation astucieuse de ces vecteurs... (svite page 22)
TREMPLIN MICRO =
peut dans bien des cas simplifier la programma-
tion. La suite des pokes n'est nullement exhaus-
tive, mais permet au débutant d’avoir 4 sa portée
un outil de travail non négligeable.
Transmission du pointeur pour l'appel du USR
Avec la fonction AppleSoft USR, qui appelle un
sous-programme en langage machine, l’argument
doit étre transmis 4 travers |‘accumulateur flottant.
Il est alors nécessaire de sauvegarder |'adresse
d'appel en page zéro, adresses $000B-$000C, avec
un JMP (4C) dans $000A. Le résultat est, par la
suite, placé dans |'accumulateur flottant. Cette
transmission de paramétres peut se faire par une
série de pokes aux adresses précitées, de la page
z6ro :
POKE 10,76: POKE 12,ADR/256 : POKE 11,ADR
- PEEK (12) * 256 ob ADR est la valeur de
l'adresse mémoire.
Code couleur en graphique GR
La valeur de la couleur en mode GR est stockée a
l'adresse $0030 (48 - COLOR). Cette valeur peut
étre modifiée en changeant le code de la couleur :
POKE 48,COLOR * 17 ot Color équivaut au code
couleur choisi.
Mode d'affichage AppleSoft
Le mode d’atfichage vidéo est sous contréle de la
fonction INVFLG, qui conditionne le mode d'affi-
chage de |'Apple. D'aprés la valeur contenue dans
l'adresse $32 (50), l'affichage passe en mode nor-
mal (£$FF), inverse (£$3F) ou clignotant (£$7F).
POKE 50,255 Mode NORMAL
POKE 50,63 Mode INVERSE
POKE 50,127 Mode FLASH
Instructions interdites en mode direct
Certaines des commandes AppleSoft comme
OPEN, READ, WRITE, APPEND ou POSITION, ne
peuvent étre adressées en mode direct (clavier)
sans rencontrer le message d’erreur NOT DIRECT
COMMAND. Pour modifier cette situation imposée,
placez en mode direct, avant un ordre GOTO ou
GOSUB et sur la méme ligne, a |'emplacement ou
le programme contient une des instructions préci-
tée : POKE 51,128.
Par la suite, l'Apple se positionne de lui-méme
dans le mode initial par I'intermédiaire du Monitor.
Sauvegarde des registres PC, A, XetY
Lorsqu’il est nécessaire de sauvegarder des adres-
ses du compteur ordinal (registre PC) et des regis-
tres A, X et Y, avant l'appel d'un sous-programme
du Monitor, il faudra effectuer la série suivante de
pokes :
POKE 58,Adr1 : POKE 59,Adr2 : POKE 69,Adr3 :
POKE 70,Adr4 : POKE 71,Adr5
Les adresses 58,59 désignent le pointeur de
l'adresse de sauvegarde du PC, sous la forme PC
octet poids faible, et PC octet poids fort. Les adres-
ses 69,70 et 71 sont respectivement destinées 4 la
sauvegarde de l'accumulateur (A), du registre X, et
du registre Y.
Paramétres avant I'appel d'une routine du Monitor
Les adresses $3C-$43 (60 4 67) sont utilisées pour
transmettre des paramétres 4 une routine du Moni-
tor, pour déplacer ou vérifier un espace mémoire
par exemple (MOVE, VERIFY etc.). Avant l’exécu-
tion de la routine, il sera nécessaire de mettre le
registre d'index Y 4 zéro. L'instruction CALL - 610
effectue cette mise 4 zéro. Exemple de transmis-
sion de paramétres et de mise 4 zéro préalable du
registre Y :
CALL - 610 : POKE 60... 67, Valeur : CALL - 468
ov CALL - 468 est l'appel au sous-programme
MOVE ($FE2C) pour déplacer une zone mémoire
vers une autre.
Mise @ zéro du registre d'état (PS)
L'adresse $48 (72), status du registre d'état PS, est
utilisée pour annuler le registre d'état PS au retour
d'un sous-programme du Monitor par exemple.
Avec l'utilisation de la routine de S.H.Lam, il sera
nécessaire par la suite de mettre a zéro le registre
d'état du microprocesseur : POKE 72,0.
Début du programme Basic
TXTTAB est I'adresse de début du programme
AppleSoft, fixée 4 la valeur $0801 par défaut. Pour
l'utilisation d'une adresse autre, placez en début
de votre programme AppleSoft Ia ligne suivante :
POKE 103,1 : POKE 104,Adr/256 : POKE Adr,0
Votre programme AppleSoft sera ainsi logé a
l'adresse Adr.
Modification de LOMEM
LOMEM, adresse de début de la zone des variables
simples et fin du programme Basic, se laisse facile-
ment déplacer. Pour ce faire, modifiez les adresses
$69 et $6A (105 et 106).
POKE 106,Adr/256
POKE 105,Adr-PEEK (106) * 256
Fixe la valeur de LOMEM a I'adresse décimale Adr.
Ce
eS Se
+
oe
Modification de HIMEM
HIMEM, adresse de début de la zone des variables
de chaines de caractéres et fin du DOS 3.3, se
laisse facilement déplacer. || faudra modifier les
adresses $73 et $74 (115 et 116):
POKE 116,Adr/256
POKE 115,Adr-PEEK (116) * 256
Fixe la valeur de HIMEM 4 |adresse décimale Adr.
Mode direct
CURLIN se trouve aux adresses $75-$76 et contient
la valeur $FF en mode direct (4 partir du clavier).
Pendant I’exécution d'un programme Basic Apple-
Soft, le numéro de la ligne courante en exécution
se trouve réactualisé 4 cette adresse. En modifiant
le contenu de cette adresse, il devient alors possi-
ble d'exécuter en mode direct, des instructions tel-
les que INPUT ou GET. En adressant un POKE 118,0
sur la méme ligne que l'instruction & transmettre
en mode direct, |'Apple ne retournera pas de mes-
sage d'erreur :
POKE 118, : INPUT "ESSAI !! "ES
Fin du programme Applesoft
Pour modifier le pointeur de la fin du programme
Basic, lors d'un ajout d'un programme en langage
machine par exemple, il faudra modifier les adres-
ses $AF et $B0 (175 et 176) :
La page 2 occupe les adresses $6200-$02FF, et sert
de tampon d'entrée de caractéres frappés au cla-
vier. La routine de $.H.Lam utilise le tampon cla-
vier par l'intermédiaire de pokes pour installer en
mémoire des sous-programmes en langage
machine. Cette méme routine s'utilise aussi 4 par-
tir d'un programme Basic pour rentrer des instruc-
tions via le Monitor :
10 Y$ = EXEMPLES
20 Y$ = Y$ +" ND9C6G"
30 FOR | = 1 TO LEN (Y$) : POKE 511,ASC (MIDS
(Y$,1,1)) + 128 : NEXT
40 POKE 72,0: CALL - 144
ov EXEMPLE$ pourrait étre "2000 < 6000.7FFFM",
et copie la page graphique fictive débutant a partir
POKE 176,Adr/256
POKE 175,Adr-PEEK (176) * 256
Fixe la fin du programme Basic 4 sa nouvelle
valeur décimale Adr.
Annule ONERR
POKE 216, annule I'instruction ONERR déclarée au
début d'un programme Basic.
HGR ou HGR2 ?
En mode graphique haute résolution, il est intéres-
sant de pouvoir utiliser l'une ou l'autre des deux
pages graphiques, sans pour autant devoir |'affi-
cher. Si un programme doit modifier une partie
d'une image, sans pour autant I'afficher, il est pos-
sible d'intervenir directement sur la page graphi-
que en modifiant le contenu de l'adresse $E6.
L'adresse $E6 (230) est utilisée pour mémoriser le
numéro de la page graphique ot doivent agir les
tracés des instructions en cours :
POKE 230,32 sélectionne la page HGR ($2000)
POKE 230,64 sélectionne la page HGR2 ($4000)
POKE 230,96 sélectionne une page fictive 4
l'adresse $6000. Cette page ne
pourra étre affichée directement,
mais devra au préalable étre
déplacée en mémoire soit dant la
page HGR, soit dans la page
HGR2.
de l'adresse $6000 et se terminant a l'adresse
$7FFF, dans la page HGR (PAGE 1, adresses
$2000-$3FFF).
ou encore :
EXEMPLES = "CO8] N CO81 N D000 < DOQO.FFFFM"
copiera la ROM dans la carte d’extension mémoire.
ou encore :
EXEMPLES$ = "300: 20 3A FF 20 3A FF 20 3A FF 60"
copiera 4 l'adresse $0360 un sous-programme
quelconque. Dans l'exemple cité, CALL 768 exécute
le sous-programme, l'Apple émettra 3 bips.
La liste n'est pas exhaustive, et toute commande
du Monitor pourra étre exécutée par ce procédé.
Cette page réserve une partie de ses adresses au programmeur ($0300-$03CF), et l'autre partie... (suite page 24)
TREMPLIN MICRO
23
soaeneeeeoesresasesesecessosssnoeesenee see e eRe ee ee eReSR esos Ae eoAse sees sene ss seseasseeeEAeRs eS
se partage entre le DOS ($03D0-$03EF) et la ROM
Monitor ($03F0-$03FF).
Changement de I’adresse de branchement en cas
de BReakK du moniteur :
POKE 1009, Adr/256
POKE 1008,Adr-PEEK (1009) * 256
Changement de I'adresse de branchement en cas
d'un RESET:
POKE 1011,Adr/256
POKE 1010,Adr-PEEK (1011) * 256
ou encore: POKE 1012,0 qui provoque un démar-
rage 4 froid du systéme, aprés un RESET.
Les pages 4 47 sont réservées a l'espace mémoire
de la page | texte, tandis que les pages 8 4 11 sont
celles réservées 4 la page 2 texte. Elles représen-
tent l'affichage de |'écran vidéo. Il est possible
d'affecter un point quelconque de la surface de
I'écran, en adressant un POKE 4 la bonne adresse.
U'adressage se fait donc directement en page 1
texte aux points des coordonnées x et y. La valeur
x étant comprise entre 0 et 39 et y entre 0 et 23. Le
mode d’affichage pouvant lui-méme étre modifié
d'aprés la variable MOD dans notre exemple.
MOD entre @ et 63 = affichage INVERSE
Les valeurs données par la suite sont uniquement
valables pour un DOS 3.3 logé dans |'espace
mémoire d'un systéme de 64 Ko de RAM. Pour une
configuration différente, il suffit de retrancher
1024 octets aux adresses indiquées pour chaque Ko
en moins.
Par défaut, le systeme d’exploitation termine le
boot d'une disquette sur un fichier du type Basic
(A). En modifiant simplement un octet 4 |'adresse
40514 du DOS, on peut booter sur un fichier binaire
ou EXEC. Normalement, cet octet a comme valeur
06 pour un fichier Basic.
Pour initialiser sous DOS 3.3 une disquette avec un
fichier de boot différent, tapez 4 partir du clavier le
POKE POUR LE DOS 3.3
Branchement en cus du & ampersand
Modifier I'adresse de saut par le & ampersand est
possible en modifiant les pointeurs aux adresses
$03F6 et $03F7 (1014 et 1015). Normalement,
pointe l'adresse $FF58.
POKE 1015,Adr/256
POKE 1014,Adr-PEEK (1015) * 256
Touches Ctri-Y
U'association des touches CTRL-Y permet, lorsque
vous étes en mode Monitor de faire un saut au
sous-programme, dont l'adresse est stockée a
$03F9 et $3FA (1017 et 1018). Normalement, pointe
l'adresse $FF65.
POKE 1018,Adr/256
POKE 1017,Adr-PEEK (1018) * 256
MOD entre 64 et 127 = affichage FLASH
MOD entre 128 et 191 = affichage NORMAL
MOD entre 192 et 255 = affichage MINUSCULE
Dans le cas d'une écriture texte en page 2, il suffira
de remplacer 1024 ($400) par la valeur $2048
($800). Dans ce cas le programme AppleSoft devra
étre relogé, en modifiant les adresses 103 et 104
($67 et $68). Le début ne pourra pas se trouver
avant l'adresse $0C00, étant donné que la fin de la
page 2 texte débute a l'adresse $OBFF.
POKE 1024 + Adr + 128 * Y -984* INT (Y/8),MOD
poke en conséquence. Cette modification peut tres
bien se réaliser au niveau de la disquette méme 4
l'aide d'un utilitaire dans le genre DISKFIXER ou
autre. Pour ce faire, il faudra modifier le byte 4 la
position relative $42 (66), piste $00 secteur $0D de
ladite disquette.
POKE 40514,52 permet un boot du systéme sur
un fichier BINAIRE.
POKE 40514,20 permet un boot du systéme sur
un fichier EXEC.
POKE 43140,73 : POKE 43160,68 : POKE 43212,82
vous raméne 4 un DOS standard,
aprés modification de certains
pointeurs.
Pr rr Ee TTT TT Te
24
GUY-HACHETTE
AgguguanneseeoeesseesuesoesseoRne eens soe eenaee eee sees eee sees eee esse ee ease oe NERS eeEeEEEES
DRIVE et SLOT
POKE 43624,D —_Sélectionne le drive ayant la valeur
D(D = 1 pour le lecteur 1).
POKE 43624,3 - PEEK (43624) Change de lecteur de
disquettes.
POKE 43626,$ — Sélectionne le slot de l'Apple
(S = 6 pour slot 6).
TABLE DU DOS
POKE 44452,255 | Elimine la pause durant un catalogue (CATALOG).
POKE 44452,22 | Restaure la pause lors du CATALOG.
POKE 43149,96 | Annule la commande INIT du DOS.
POKE 43149,73 | Restaure la fonction INIT du DOS.
POKE 43160,96 | Annule la fonction DELETE du DOS.
POKE 43160,68 | Restaure lo fonction DELETE du DOS.
POKE 43212,96 | Annule la commande RENAME du DOS
POKE 49212,82 | Restaure la fonction RENAME du DOS.
POKE 43144,96 | Annule la fonction LOAD.
POKE 43144,76 | Restoure la fonction LOAD.
POKE 43148,96 | Annule la fonction SAVE.
POKE 43148,83 | Restaure la fonction SAVE.
POKE 43152,96 | Annule la fonction RUN.
POKE 43152,82 | Restaure la fonction RUN.
POKE 43166,96 | Annule la fonction LOCK.
POKE 43166,76 | Restaure la fonction LOCK.
POKE 43170,96 | Annule la fonction UNLOCK.
POKE 43170,85 | Restaure la fonction UNLOCK.
POKE 49218,96 | Annule la fonction CATALOG.
POKE 43218,67 | Restaure a fonction CATALOG.
POKE 43247,96 | Annule la fonction FP.
POKE 43247,70 | Restaure la fonction FP.
POKE 43249,96 | Annule la fonction INT.
POKE 43249,73 | Restoure la fonction INT.
POKE 43257,96 | Annule la fonction BLOAD.
POKE 49257,66 | Restaure la fonction BLOAD.
POKE 43262,96 | Annule la fonction BRUN.
POKE 43262,66 | Restaure la fonction BRUN.
POKE 43266,96 | Annule la fonction VERIFY.
POKE 43266,86 | Restaure la fonction VERIFY.
TABLE 1OB
La table IOB est utilisée par la routine RWTS pour
l'accés direct 4 un secteur donné de la disquette. La
table IOB se trouve par défaut 4 l'adresse 47080
($B7E8) pour un DOS booté sur une configuration
de 64 Ko. Ces paramétres peuvent étre modifiés
par la suite pour des besoins spécifiques.
1OB = 47080
POKE IOB+1,SLT * 16 modifie le numéro du Slot
actuel (modulo 16).
modifie le numéro du drive
actuel (Valeur de 1 4 2).
modifie le numéro du
volume actuel. Pour lire
n‘importe quel volume de
disquette, il faudra donner
4 Vol la valeur 6
(Valeur de @ a 254).
modifie le numéro de la
piste actuelle
(Valeur de 0 4 34).
modifie le numéro du sec-
teur actuel
(Valeur de @ 4 15).
modifie l'octet de poids fai-
ble de l'adresse de la table
des caractéristiques du
DOS (DCT).
modifie l'octet de poids
fort de l'adresse de la table
des caractéristiques du
DOs (DCT).
POKE 1OB+8,BUFFLW modifie l'octet de poids fai-
ble du tampon utilisé par le
bos.
POKE 1OB+9,BUFFHG modifie l'octet de poids
fort du tampon utilisé par
le DOS.
Sert 4 sélectionner le nom-
bre d'octets 4 modifier sur
un secteur. Prend comme
valeur $00 pour modifier
les 256 octets d'un secteur.
modifie le travail de la téte
de lecture :
Mode = 0 positionne la
téte de lecture.
POKE IOB+2,Dve
POKE 1OB+3,Vol
POKE |OB +4, Piste
POKE IOB+5, Secteur
POKE IOB+6,DCTLW
POKE IOB+7,DCTHG
POKE |OB+11,BYT
POKE IOB+12,Mode
Mode = 1 lecture.
Mode = 2 écriture.
Mode = 4 formatage.
QUELQUES TRUCS EN VRAC
Meilleure lisibilité en mode 80 colonnes
POKE - 16205,0 : POKE - 16203,0
Impression des minuseules
POKE 243,32 force l'imprimante 4 |'impression de
minuscules. Faire précéder le PRINT par POKE 243,32.
Aprés l'instruction PRINT 4 mettre en minuscules, tapez
NORMAL. L'adresse 243 ($F3) ou ORMASK sert a |'APPLE-
SOFT pour forcer le mode FLASH. (suite page 26)
Coal aalaahalalalaltattatalale alaalleale ee eEEE De
TREMPLIN MICRO
25
Sortie sur enregistrement cassette
POKE - 16352,0
POKE sur deux octets
POKE adresse +1,V / 256 : POKE adresse,V - 256 * PEEK
(adresse +1) o¥ adresse +1 est l'octet de poids fort,
adresse est l'octet de poids faible, et V est la valeur a
modifier.
POKE divers
POKE 44033,P — met la VTOC du disk avant initiali-
sation sur la piste numéro P
(P = 13, met la VTOC sur la piste
13, secteur @).
POKE 37656,X —_effectue un saut de X lignes dans
un programme.
durée diattente :
- six 128 augmente la durée.
- six 128 diminue la durée.
POKE 37658,X
Langage integer
Pour éviter lors d'un Boot a chaud de recharger a cha-
que fois le langage Integer dans la carte langage ou la
carte d'extension mémoire, il faudra effectuer au
préalable les trois POKE suivants :
POKE 49107,234 : POKE 40108,234 :
POKE 49109,234
Accés a une piste interdite
SI vous voulez pour une raison ou une autre, interdire
l'accés a certaines pistes de votre disquette, il suffira
de faire les POKE suivants :
POKE 44723,A * 4: POKE 44725,B * 4
ov les variables A et B représentent les limites
extrémes des pistes accessibles pour la sauve-
garde de vos fichiers.
Modifier 'empiacement de la VTOC
La VTOC se trouve normalement sur Ia piste $11 sec-
teur $00, et le Directory sur la piste $11 secteurs $15 4
$01 (DOS standard). Pour modifier cette disposition, il
sera nécessaire de faire les POKE suivants :
POKE 44033,3 : POKE 44723,16 : POKE 44741,12 :
POKE 44764,3 : POKE 46012,3
Dans notre exemple, la VTOC et le Directory seront
placés sur la piste $03, aprés initialisation d'une dis-
quette. Cette derniére ne pourra plus étre lue, ni boo-
tée par un DOS 3.3 standard. Les programmes de
copie usuels comme FID ou COPYA ne fonctionnent
plus. Les paramétres pour un DOS classique sont res-
pectivement 17, 12, 68, 17 et 17.
nouveau systéme d’exploitation : ProDOS.
* Familiarisation du lecteur avec ProDOS.
* Les vecteurs particuliers sous ProDOS.
© Systeme DOS 3.3 ou ProDOS ?
* Monitor, interpréteur Applesoft et ProDOS.
* Le boot d’une disquette ProDOS.
APPLE // ProDOS
GUIDE DU PROGRAMMEUR APPLESOFT
Paveeck@elniNi@ Vous ne tirerez pleinement profit de votre Apple que si vous
connaissez partaitement les multiples ressources de son
Apres avoir lu l’excellent ouvrage de Marcel COTTINI, vous trouverez en ProDOS |’un
de vos meilleurs alliés pour une programmation avancée.
Extrait de Ia table des matiéres :
© Occupation type d’une configuration Apple.
¢ Commandes typiques du Basic.System.
© La Basic System Global page.
* et bien d'autres sujets !
BULLETIN DE COMMANDE PAGE 75
26
GUY-HACHETTE
Vient de paraitre
Les Editeurs nous
communiquent :
© IMAGES NUMERIQUES
(Jean-Baptiste Touchard)
D'abord cantonnées 4 certains secteurs
de pointe, en raison de |'importance
des calculs nécessaires pour les mettre
en ceuvre, les images numériques
envahissent aujourd'hui les écrans des
téléviseurs, des cinémas... et des
micro-ordinateurs.
Ce livre se veut trés pragmatique,
voire terre @ terre face 4 ce phéno-
méne. Il a pour ambition de donner au
lecteur les éléments directement utili-
sables. Le panorama présenté dans ce
livre (vidéotex, petit formulaire de
géométrie, les trois dimensions, la
croisée des dimensions, les objets gra-
phiques, leur saisie, puis leur traite-
ment) n’a certes pas la prétention
d’étre exhaustif dans un domaine
extrémement vaste et mouvant. Il
tente cependant de faire ressortir le
fait que les algorithmes fondamen-
taux, utilisés en Infographie, font rare-
ment appel 4 des concepts trés élabo-
rés. Les exemples présentés dans le
livre, bien qu’étant écrits dans des lan-
gages divers, s'inscrivent dans des
syntaxes claires et facilement trans-
posables,
Un bagage mathématique de bachelier
scientifique permet de comprendre le
plus grand nombre des concepts pré-
Images
nymeriques
, ae ss
sentés. Bien que l’ouvrage présente
l'image de synthése de maniére appro-
fondie, il offre cependant différents
niveaux de lecture :
¢ de nombreuses illustrations et
légendes apportent, d'une part,
une meilleure compréhension pour
le débutant ;
¢ diautre part, de multiples ouvertu-
res vers des systémes plus sophis'
qués, comme les palettes graphi-
ques, sont proposées au lecteur
plus passionné.
CEDIC/NATHAN, 6-10, boulevard JOURDAN —
75014 PARIS. (336 pages — 240 F)
© INITIATION A
L'ALGORITHMIQUE ET AUX
STRUCTURES DE DONNEES
(J. Courtin et |. Kowarski)
1. Programmation structurée et struc-
tures de données élémentaires.
Ce premier tome est consacré 4 la
construction dalgorithmes fondamen-
taux sur les fichiers séquentiels et les
vecteurs (structures 4 accés direct). II
sadresse aux étudiants de premier
cycle (IUT, BTS, DEUG) et plus généra-
lement @ tous les lecteurs désirant
s‘initier 4 la construction d’algorithmes
corrects, qui sont la base de toute
bonne programmation.
Les algorithmes sont écrits dans un lan-
gage proche du Pascal et leur traduction
dans un langage classique (Pascal, For-
tran, Cobol, ...) est aisée. De trés nom-
breux exemples et exercices permettent
au lecteur de se familiariser avec la
démarche proposée et de vérifier que la
méthode a bien été assimilée.
le deuxigme tome (parution fin 1987)
oborde I'étude des structures des données
avancées que sont les listes chainées, les
piles, les tables et les arbres. Les auteurs y
mettent en évidence la notion de récursivité
qui constitue une bonne initiation 4 |'utilisa-
tion des langages de |'intelligence artifi-
cielle (Lisp, Prolog).
Coll. “Dunod Informatique”, 298 pages, broché, 120 F
© LA SECURITE DES RESEAUX
(J.-M. Lamére, Y. Leroux, J. Tourly)
Méthodes et techniques
Faisant suite & un premier ouvrage de
sensibilisation, /a Sécurité informati-
que, le présent titre fournit aux prati-
ciens tous les outils méthodologiques
aujourd'hui disponibles pour |'analyse
et la réduction des risques infor-
matiques.
Dans cet esprit, les auteurs dévelop-
pent les méthodes MARION-AP (sites
locaux et réseaux simples) et
MARION-RSX (réseaux d'ordinateurs)
avec l'ensemble des éléments quanti-
tatifs : ratios, questionnaire d'audit,
bases de référence, etc., permettant
une mise en ceuvre effective. Un
exemple illustre la démarche pratique
au travers de fiches méthodologiques.
Un chapitre important est consacré aux
moyens spécifiques de la sécurité des
télécommunications : _chiffrement,
authentification, signature...
Cet ouvrage s'adresse tous ceux qui
ont conscience de |'émergence d'une
nouvelle fonction liée @ la sécurité
informatique, aussi bien les utilisa-
teurs et les professionnels que les étu-
diants de l'enseignement supérieur.
Collection “Dunod Informatique”,
374 pages, broché, 290 F
DUNOD, 17, rue Rémy-Dumoncel, B.P. 50,
75661 PARIS CEDEX 14
la sécurité
des réseaux
méthodes et techniques
TREMPLIN MICRO
27
Clément RENARD
D'un Basie a un autre
UI ne connait pas le GWBASIC, langage employé sur la plupart des micros considérés
Q comme compatibles avec le modéle IBM ? Vous ? pas possible ! Je vous propose, a
titre d’exercice — et simplement pour le plaisir — de transformer un programme
écrit en GWBASIC... en routine APPLESOFT. Nous supposons, au départ, que vous disposez
d'un Apple récent, équipé d'une carte 80 colonnes et autorisant l'utilisation des caractéres
souris, mais ce détail n'est important que pour le cadre... et encore ! Il est toujours possible
d'afficher un cadre constitué par 204 astérisques.
C'est un peu simplet. On vous demande seule-
ment de taper votre nom et votre prénom. Tou-
tes les lettres de l'alphabet sont acceptées, ainsi
que l'espace, l'apostrophe et le tiret. Si une
erreur est commise, le caractére erroné apparait
en mode inverse et il faut renouveler la saisie.
Ensuite, si vous avez commis l'erreur de taper
votre nom en oubliant les majuscules, on vous
corrige gentiment... et c'est tout !
TRADUCTION
Seules sont expliquées les lignes posant un probléme.
100 En Applesoft, on n'est pas forcément en
80 colonnes, d’ou le libellé de cette ligne.
CLS est remplacé par HOME et BEEP par PRINT
CHR$ (7) ou CALL - 198. La REMarque doit étre
précédée par REM (en GWBASIC, on peut utiliser
la simple apostrophe).
105 = Applesoft, au contraire de GWBASIC, ne
reconnait pas les 4 676 Gi7et é... ce qui
est dommage.
110 LOCATE 5,14 est remplacé par VTAB 5 :
HTAB 14, COLOR @,7 par INVERSE et
COLOR 7,0 par NORMAL. Nous ne reviendrons
plus la-dessus.
Quelques textes ont été sensiblement modifiés,
mais c'est sans rapport avec la programmation.
185 Le programme en GWBASIC comporte un
200 bug. Celui-ci est semble-t-il éliminé dans
la routine Applesoft. Comparez les deux ver-
sions (c'est du Basic, classique !) et essayez de
comprendre !
220 ~APPLESOFT ne connait pas INKEY$, mais
la ligne d’attente habituelle fait parfaite-
ment notre affaire.
235 C'est évidemment le tracé du cadre qui
a différencie le plus les deux machines...
250 encore que ! nous disposons, sur le com-
patible IBM, de caractéres semi-
graphiques qui autorisent bien des acrobaties.
Sur Apple, les caractéres souris sont insuffisants
et on ne le déplorera jamais assez. On peut
néanmoins procéder comme nous Iavons fait ou
tracer un cadre classique, soit en utilisant
l'espace en mode inverse, soit un caractére
comme I'astérisque... On peut aussi passer par
une petite routine LM, mais cela nous éloigne du
Basic traditionnel !
Pour éviter le scrolling, il est en tout cas indis-
pensable de poquer le contenu de la case 2039
(HTAB 80, VTAB 24). Notez le POKE 33,78 de la
ligne 250, indispensable pour empécher |'efface-
ment du cadre, au moment de I'INPUT.
Les caractéres semi-graphiques
Voici les cinq caractéres permettant le tracé
(parfait) du cadre en GWBASIC :
201 F
200 &
187 ¥
188 4
205
28
GUY-HACHETTE
ee |
100
105
110
115
120
125
130
135
140
145
150
155
| 160
{465
170
175
180
185
190
195
200
ee ae
205
210
215
220
225
230
—
=
| 235
240
> 245
250
+
onlin
CLS : BEEP : GOSUB 235 'Tracé du ca
abcde fghi jk Imnopqrstuvwxyzaéeuaé
'¢ ABCDEFGHIJKLMNOPQRSTUVWXYZ-’"”
LOCATE 5,14: COLOR 0,7:PRINT” SAVEZ-—
VOUS ORTHOGRAPHIER VOTRE NOM ET VOTR
E PRENOM ? “:COLOR 7,0
LOCATE 10,5 : C=0: P=
INPUT “Indiquez-moi votre
O: BEEP
nom et votr
e prénom ";N$
N1$="":'’Nom corrigé (majuscules) éve
ntuellement
FOR I =1 TO LEN (N$): M$= MID$ (N$,I
71) : IF M$ = “ ” THEN C=I
IF M$="~" OR M$="""THEN P=I
FOR J = 1 TO LEN (V$) IF M$ = MID$
(V$,J,1) THEN 150
NEXT : LOCATE 10,45+I : COLOR 0,7 :
PRINT M$ : COLOR 7,0 : GOTO 115
IF (I-1 = C OR I-1=P) AND M$ > "Z" A
ND M$ < CHR$(123) THEN M$=CHR$(ASC(M
$)-32)
NIS=NI$+M$S
NEXT I
LOCATE 12,5 : IF C THEN 175
PRINT “J’avais pourtant précisé: nom
ET prénom!": GOTO 115
PRINT “Ainsi, vous vous nommez "; LE
FT$(N$,C-1); et votre prénom e
st"; MID$(N$,C,LEN(N$)+1-C)
LOCATE 14,5
IF LEFT$(N$,1) >» “Z" OR P « C THEN P
RINT “Une lettre capitale ne saurait
dévaluer votre NOM... la preuve:": L
OCATE 15,15: PRINT “— LEFT$(N1$,C
-1) :GOTO 195
PRINT “Votre NOM semble correctement
orthographié...”
LOCATE 17,5
IF MID$ (N$,C+1,1) >"Z" OR P >C THEN
PRINT"Votre prénom serait mieux orth
ographié ainsi: ":LOCATE 18,15: PRINT
“~";RIGHT$(N1$,LEN(N$)+1-C):GOTO 210
PRINT “Votre PRENOM ne parait pas po
ser de probléme...”
PRINT: PRINT: BEEP
GOSUB 220:CLS : END
N$=INKEY$ : IF LEN(N$)=0 THEN 220
RETURN
’tracé d’un cadre utilisant les cara
ctéres graphiques
PRINT CHR$(201);: FOR I = 2 TO 79 :
PRINT CHR$ (205);: NEXT : PRINT CHR$
(187)
FOR I = 2 TO 23 : LOCATE I,1: PRINT
CHR$(186): LOCATE I,80: PRINT CHR$(1
86): NEXT
LOCATE 24,1: PRINT CHR$(200);: FOR I
= 2 TO 79 : PRINT CHR$ (205) NEXT
: PRINT CHR$( 188);
RETURN
100
105
110
M5
120
125
130
135
140
15¢
155
160
165
170
175
180
185
195
200
205
210
215
220
225
230
235
240
SaUSGEUnSeeeseenssesweesen sass BaesSsaEaENEs ESTE sSSEEaE Ss OeeE eo TeeEEe eee eeeseesseeaessousEossTRsEUNORS
APPLESOFT
DS = CHR (4): PRINT D$"PRE3": PRINT
: HOME : PRINT CHR (7): GOSUB 235: R
—M Tracé du cadre
Vs = "“abcdefahi ik ImnopqrstuvwxyzaéeacA
BCDEFGHI JKLMNOPQRSTUVWXY2-" "
VTAB 5: HTAB 14: INVERSE : PRINT " SAV
EZ-VOUS ORTHOGRAPHIER VOTRE NOM ET VOT
RE PRENOM ? ": NORMAL
VTAB 10: HTAB 5:C = 0:P = 0: CALL - 1
98
INPUT "Nom et votre prénom sup: “:N¢
N1$ = “": REM Nom corrigé (ma iuscules)
éventuellement
FOR 1 = 1 TO LEN (N$):M$ =
1,4): IF M$ =" " THENC =1
IF M$ = "-" OR M$ = "’" THEN P = I
FOR J = 1 TO LEN (V$): IF M$ = MIDS
(V$,J.1) THEN 150
NEXT : PRINT : HTAB 29 + I: VTAB 10: I
NVERSE : PRINT M$: NORMAL : GOTO 115
IF (1 - 1=C ORI - 1 = P) AND MS > "
2" AND M$ < CHR$ (125) THEN M$ = CHR
$ ( ASC (M$) - 32)
N1IS = NIS + MS
NEXT I
VTAB 12: HTAB S: IF C THEN 175
PRINT "“J’avais pourtant précisé: nom e
t prénom!": GOTO 115
PRINT "Nom: "; LEFT® (N$,C - 123", pré
nom:"; MID$ (N$,C, LEN (N$) + 1 - C)
VTAB 14: HTAB S
R$ = LEFTS (NIS.C - 1): IF ROC DO OL
EFT$ (N$,C - 1) THEN PRINT "Une lettr
e capitale ne saurait dévaluer un NOM,
++ la preuve:": VTAB 15: HTAB 15: PRIN
T “= "R$: GOTO 195
PRINT "Votre NOM semble correctement o
rthooraphié..."
VTAB 17: HTAB S
R$ = RIGHTS (NIS, LEN (NS) + 1 - C)?
IF R$ ¢ > RIGHTS (NS, LEN (NS) + 1 -
C) THEN PRINT "Votre prénom serait mi
eux orthographié ainsi:": VTAB 18: HTA
B 1S: PRINT "-":R$: GOTO 210
PRINT "Votre PRENOM ne parait pas pose
r de probléme..."
PRINT : PRINT CHRS (7)
MIDS (NS.
GOSUB 220: TEXT : HOME : END
POKE 49168.0: WAIT 49152,128: POKE 491
68,0
RETURN
REM Tracé d’un cadre utilisant les car
actéres souris
INVERSE : PRINT CHR$ (27);: FOR I = 1
TO 80: PRINT "L":: NEXT
FOR I = 2 TO 23: VTAB I: POKE 1403,
PRINT "_";: POKE 1403,79: PRINT "2"
NEXT
POKE 1403.0: VTAB 24: FOR I = 1 TO 79:
NORMAL : VTAB 1: PRINT CHR$ (24): POK
E 2039.83: POKE 33,78: RETURN
SSESTUSTESSSE ESSE SA TD aUE RON RAsesseTEAsSTSEESSsos ES ese EET TENS UNST TOAST ANeseRsEsoeEseeESssEeUAeEZaeATOeeAe
TREMPLIN MICRO
29
| Votre bibliotheque
INFORMATIQUE
© CLEFS POUR C
(Francois Piette)
Au moment oi je rédige ces lignes, les
candidats l'apprentissage du langa-
ge C sur Apple IIGS restent sur leur
faim. Aucun ouvrage — 4 ma connais-
sance du moins — n'a traité la question,
fnais on connait l'une des grandes quali-
tés du C : son excellente portabilité.
les amateurs de € (ils se révélent de
plus en plus nombreux) tireront donc pro-
fit de ce nouveau volet de Ia collection
LANGAGES aux Editions du P.S.I.
En fait, CLEFS POUR € est un manuel de
référence capable de fournir de bonnes
informations & tout programmeur. Ses
exemples (nombreux) ont été écrits
en € standard. Ils sont en principe desti-
nés aux utilisateurs de PC et compatibles,
mais aussi & ceux de |'Atari ST et de
|'Amstrad PC. Notons au passage que les
programmeurs sur Atari ST ne sont pas
aussi démunis que les applemaniaques
armés d'un GS tout neuf.
Mais revenons aux CLEFS POURC.
Uauteur ne se contente pas, dans les 290
pages de son bouquin, d'une banale énu-
mération d'instructions que d'autres ont
déja explicitées. II étudie les deux ver-
sions les plus répandues du¢: le
LATTICE € (c'est, dans ses grandes
lignes, celui du GS) et le Digital
Research €, principal outil de program-
mation sous GEM, sur Atari ST. A noter
que les utilisateurs de Microsoft € peu-
vent Gussi se reporter au chapitre consa-
cré au Lattice €: ce sont des produits
identiques jusqu’a la version 3.0.
EDITIONS DU PSI, BP 86 77402 LAGNY-S/MARNE —
CEDEX (800 poges environ — 220F TTC)
© € ET SES FICHIERS
(J. Boisgontier et J.-P. Lagrange)
Cet ouvrage s'adresse aux utilisateurs
déja familiarisés avec le langage C ,
mais les auteurs ont tout de méme pris la
peine de revenir sur les principales
Notions et fonctions du C . Toute la pre-
miére partie du livre est consacrée a ce
rappel. C'est concis, clair et précis.
Machines concernées : PC et compati-
bles, Atari, Amiga, Macintosh, etc. La
deuxiéme partie, plus intéressante 4 mes
yeux parce que traitant un sujet moins
connu, nous aide 4 découvrir la gestion
de fichiers en € ... ou 4 approfondir nos
connaissances sur la question. Aprés
l'avoir lve, vous saurez (presque) tout sur
l'ouverture, la fermeture, |'écriture et la
lecture des fichiers & accés direct et a
accés séquentiel.
Les auteurs auraient pu en rester la, mais
ils n’ont pas voulu nous quitter sans abor-
der des sujets aussi intéressants que : les
méthodes de tri, I'allocation dynamique,
les bases de données, etc.
EDITIONS DU PSI — (170 pages, 170 F)
© ASTRONOMIE
ET ORDINATEUR
(Guy Sérane)
Si vous vous intéressez a |'astronomie,
gageons que le livre de Guy Sérane ne
vous laissera pas indifférent. Son objet
est le calcul des positions astronomiques
par NESTOR
par des méthodes simples, accompa-
gnées d'exemples numériques... une
simplicité qui ne nuit en rien a la
précision.
Uauteur traite des problémes fondamen-
taux de la mécanique céleste :
* Positions des étoiles et des planétes a
n'importe quelle date ;
* Positions et trajectoires des cométes
et des satellites artificiels.
* Prévision et calculs de phénoménes
astronomiques divers (éclipses, occul-
tations, élongations...).
* Navigation : point astronomique,
méridienne.
* Calculs de trajectoires de vaisseaux
spatiaux.
Uoriginalité de l'ouvrage réside dans le
fait que tous les sujets abordés au cours
des différents chapitres font l'objet
dopplications numériques et de pro-
grammes écrits en BASIC standard, mais
peuvent étre facilement adaptés 4 tout
micro-ordinateur. C'est dire que tout lec-
feur ayant 4 sa disposition un micro-
ordinateur peut utiliser ces programmes,
sans avoir 4 connaitre les démonstrations
et développements, d'aspect parfois com-
plexe, fournis dans le corps du livre.
DUNOD, 17, rue Rémy-Dumoncel, B.P 50, 75661 PARIS
CEDEX 14 (264 pages — 160F)
30
GUY-HACHETTE
Maurice CHAVELL|
STARTUP
Ce programme présente un double intérét :
utilitaire et didactique.
{. Aspect utilitaire :
Pour la réalisation de ce STARTUP, je suis parti
avec les objectifs suivants :
© Occupation d'un seul bloc sur la disquette.
© Rapidité d'exécution (rien n’est plus pénible
que ces “HELLO” qui n’en finissent plus de
charger le catalogue).
© Lecture des catalogues secondaires (type DIR).
© Possibilité de lancer un programme de type
BAS, BIN, REL, SYS, TXT (en tant que fichier
EXEC).
Le plus difficile a été de tout faire entrer dans les
512 octets impartis (ne vous attendez donc pas
trouver des fioritures !), pour le reste il n'y a pas
eu de gros problémes. Le programme sélec-
tionné est lancé avec le dash "-", pour un fichier
type TXT qui n'est pas un fichier EXEC, vous
aurez droit 4 une avalanche de SYNTAX ERROR.
2. Aspect didactique :
L'analyse du programme vous montrera les deux
types d’appel de ProDOS 4 partir de |l'assem-
bleur. Vous serez amené également 4 compren-
dre l'organisation des catalogues sur les disquet-
tes ProDOS. Vous pouvez aussi utiliser le pro-
gramme sans vous poser de question sur son
fonctionnement...
® Les fléches droite et gauche permettent de
sélectionner le fichier.
® La touche RETURN essaie de le lancer, dans le
cas d'un fichier DIR le PREFIX est mis 4 jour
(ne pas dépasser 40 caractéres pour éviter
les surprises !) et le nouveau catalogue est
affiché.
® La touche ESCAPE permet de relire le catalo-
gue principal et la touche ESC vous envoie
directement dans le BASIC.
J * HEE ESS EEE LE SERS EEE ESSE E SEES EE *
2 * * STARTUP par Maurice Chavelli * *
3 * pour Tremplin-Micro * *
4 REELS S EEE KE EEE EEE LEER EERE REESE *
Ss
6 PTR = $6 3 Pointeurs
7 ADD = $8
8 SCH = $13 3; Sauvegarde CH
3° COMPT = $1B 3; Compteur de fichiers
1@ WNDTOP = $22 ; Haut de la fenetre TEXTE
11 CH = $24 3; Pointeur horizontal du curseur
12 cv = $25 3 Pointeur vertical du curseur g
13° BASL = $238 3 Pointeur adresse ligne courante §
14 BASH = $29 a
15. IN = $260 3; Pointeur du buffer d’entrée g
16 DOSCMD = $BEG3 3; Entrée page globale BASIC-SYS 2
TREMPLIN MICRO 31
1? MLI = $BFOG } Entrée page globale de ProDOS
18 SETTXT = $FB39 3 équivalent du TEXT du BASIC
19 TABY = $FBSB 3 Positionne curseur ligne A
26 BASCALC = $FBC1 3; Calcule BASL et BASH ligne A
21 VTAB = $FC22 3 Positionne curseur ligne CV
22 HOME = $FC58 3 Equivalent du HOME du BASIC
23 CROUT = $FD8E 3 Envoie un retour chariot
24 COUT = $FDED 3 Envoie caractére code dans A
25 SELL = $FF3A 3 Un petit Bip!
26
ar ORG $7608
28
29 DEBUT LDA $C6BB 3 Affichage vert CHAT MAUVE
38 LDA £6 3 Initialisations
31 STA ADD
32 STA NBR+1
33 STA SCH
34 LDA £2 3 Le catalogue principal
35 STA NBR 3} commence au Block 2
36
37 * Chargement du catalogue en #7606. Le catalogue principal
38 * occupe les 4 blocs de 2 & 5. Les catalogues secondaires
39 * occupent 1 ou plusieurs blocs qui se situent n’importe
40 * of, mais qui sont chainés. On trouve d’abord, sur 2 oc-
41 * tets, le pointeur arriére, et sur les 2 octets suivants
42 * le pointeur avant.
43
44 CHARGE LDA £876 3; Buffer en $7686
45 STA BUF+I
46 CHARG JSR MLI 3 Appel standard du MLI
47 HEX 8@ 3} Code de la commande READ BLOCK
48 DA PARAM 3} Pointeur des paramétres
49 BEG CHI
5 JMP BELL 3; Impossible & lire!
Si CH LDA BUF+1 3; Lecture réussie
52 STA ADD+t
53 INC BUF+1 3} 1 bloc occupe 2 pages mémoire
54 INC BUF+1
SS LDY £2
56 LDA ‘¢ADD),Y 3; Récupére le pointeur avant
37 STA NBR 3} et le sauve en NBR et NBRt1
538 INY
5? LDA ‘ADD),Y
6B STA NBRt1
él BNE CHARG 3 S’il n’est pas nul on continue
62 LDA NBR
63 BNE CHARG
64
65 * Préparation commande PREFIX. C’est une deuxiéme maniére
66 * d’appeler ProDOS & partir de 1’Assembleur: elle exige
67 * 1a présence du BASIC.SYSTEM.
69 LDY £5 3 Inscrit PREFIX dans buffer IN
32 GUY-HACHETTE
"|
SS —
—
76 PREF LDA PREFIX,Y
a1 STA IN,Y
72 DEY
73 BPL PREF
74
75 * Affichage et commande PREFIX
76
77 JSR HOME 3 Efface la fenetre d’écran
78 JSR SETTXT 3 TEXT
79 LDA £8 3} Positionne curseur sur ligne @
80 JSR TABY
81 LDA £4 3 Pointe PTR sur le nom du Volume
82 STA PTR
83 LDA £876
84 STA PTR+1
85 LDA SCH 3 Ajuste CH pour écriture
86 STA CH 3} correcte du PREFIX
87 LDA £"7 3 Commence par afficher un /
88 JSR COUT
89 JSR COM 3 Affiche PREFIX et -> IN
90 JSR DOSCMD 3 Exécute commande dans buffer IN
v1 LDA £2 3 Diminue la fenetre
22 STA WNDTOP
93 LDA £8 3 Initialise compteur de fichiers
94 STA COMPT
95
96 * Affichage des noms de fichiers
97
98 TRAIT JSR HOME
bad LDX £22 3; C’est parti pour les 22 lignes
108 TI JSR PLUS 3 Avance d’un fichier
161 JSR ECRIT 3 Affiche le nom du fichier
102 LDA CV 3; Bas de la page?
163 CMP £23
164 BEQ T?7 3; Qui, on arrete
165 JSR CROUT 3 Non, passe & la ligne suivante
106 T7 LDA #7625 3; Récupére nombre total fichiers
167 CMP COMPT 3; Le compare avec COMPT
168 BEG T2 3 S’il est égal on arrete
169 DEX 3 Sinon on décrémente X
116 BNE Tt 3 S’il n’est pas nul on remet ¢a
411i sk2 LDA £1 3 Remet COMPT a 1
1t2 STA COMPT
113 LDA £%2B 3; Remet PTR sur $7600
114 STA PTR
115 LDA £876
116 STA PTR+t
5 rg LDA £2 3 Remet le curseur sur la ligne 2 =
118 T3 JSR TABV
119 $
126 * Traitement du clavier 2
121 3
122 T4 LDY £39 3 Affiche inverse fichier courant
TREMPLIN MICRO 33
123
124
125
126
127
128
129
138
131
132
133
134
135
136
137
138
139
146
141
142
143
144
145
146
147
148
149
158
151
153
154
155
156
157
158
159
168
161
162
163
164
165
166
167
168
169
178
171
172
173
174
175
TS LDA
Té6 LDA
T3 CMP
T18 JSR
TT? STA
JMP
(BASL) ,Y
£$3F
CBASL) ,Y
TS
$0608
Té
$CG16
£SAG
T38
DEBUT
£39B
Til
SETTXT
HOME
£S9S
BAS
£$88
HAUT
£$8D
TS
(PTR) ,Y
£$FO
£$D8
sous
HOOK
SETTXT
HOME
£SAB
£4
IN,Y
DOSCMD
* Lecture sous-cataloque
SOUS LDY
LDA
STA
INY
LDA
STA
JMP
* Traitement
BAS JSR
LDA
£17
(PTR) ,Y
NBR
(PTR) ,Y
NBR+1
CHARGE
vers le bas
NORM
COMPT
Masque pour 1’inversion
Attend une frappe de touche
Est-ce la barre d’espace?
Non
Oui, on recommence tout & zére
Est-ce la touche ESC?
Non
Oui, fenetre normale
on efface et on abandonne tout!
Est-ce la fléche & droite?
Oui
Est-ce la fléche & gauche?
Oui
Est-ce le touche RETURN?
Non, alors c’est une erreur!
Récupére le type de fichier
Type DIR?
Oui, lire nouveau catalogue
Vecteur extension éventuelle
TEXT
HOME
Code espace dans A
4 espaces dans le buffer
c’est pour utiliser le
meme sous-programme COM!
Inscrit le dash dans buffer
Affiche nom fichier -> IN
C’est parti pour ce fichier!
Récupére numéro Key-Block
du sous-catalogue et le
sauve dans PTR
C’est parti nouveau cataloque!
Affichage normal
Récupére numéro fichier
GUY-HACHETTE
a
oo
176
177
178
179
186
181
182
183
184
185
186
187
188
189
198
191
192
193
194
195
196
197
198
199
288
201
202
203
284
265
266
267
288
269
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
CMP
BEQ
JSR
INC
LDA
CMP
BNE
DEC
JSR
JSR
JMP
* Traitement
HAUT JSR
DEC
BNE
INC
BEQ
JMP
Hi JSR
DEC
LDA
CMP
BEQ
JMP
H2 LDA
STA
H3 DEC
DEC
BEQ
JSR
LDA
STA
LDA
STA
H4 LDA
HS INY
JMP
* Paramétres
vers le haut
NORM
COMPT
H5
UTAB
BASL
ADD
BASH
ADD+1
cu
UTAB
£39
CADD) ,¥
(BASL) ,Y
H4
H3
CH
£2
TABU
ECRIT
T4
Le compare total fichiers
Si égalité ne va pas plus loin
Incrémente PTR et COMPT
Incrémente CV
Sort de la page?
Non, alors tout va bien
Qui, alors on décrémente CV
On monte les fichiers d’un cran
On écrit nom du petit nouveau
Affichage normal
Un fichier plus "bas"
Si on est pas & @ on continue
Sinon il n’y a plus rien & voir
Décrémente PTR et COMPT
Décrémente CV
Ligne 1?
Qui, alors il faut réagir
Non, alors c’est parfait
Ici petit SCROLL inverse
Je vous laisse le découvrir
La sortie est ici!
Curseur sur premiére colonne
Curseur sur la ligne 2
Ecrit le nom du fichier
pour chargement de Bloc
(suite page 36)
TREMPLIN MICRO
229 PARAM HEX 63 3 3 paramétres
238 HEX 68 3 Slot 6 et Drive 1
231 BUF DA $7608 3 Buffer de réception
232 NBR DA C7) 3 Numéro du Bloc
233
234 * Routine avance d’un titre
235
236 PLUS INC COMPT 3 Incrémente COMPT
237 P@ e€Le 3 Effectue PTR+39, chaque fichier
238 LDA PTR 3 occupe 39 octets dans le
239 ADC £39 3 Volume Directory
248 STA PTR
241 Bcc Pl
242 INC PTR+tl
243 «PL CMP £$FF 3 Attention changement de Bloc!
244 BNE P2 3 Pas de changement
245 LDA £4 3 Changement de Bloc ajuste PTR
246 STA PTR
247 INC PTR+t1
248 P2 LDY £4 3 Fichier effacé?
249 LDA ¢PTR),Y
258 BEQ P@ 3 Oui, alors on passe au suivant
251 RTS 3; Non, alors tout va bien...
252
253 * Routine recule d’un titre
254
255 MOINS SEC 3 Effectue PTR-39
256 LDA PTR
257 sBC £39
258 STA PTR
259 Bcs Mi
268 DEC PTR+t1
261 Mi CMP £%$DD 3 Changement de Bloc?
262 BNE M2 3 Non
263 LDA £%D8 3 Oui, alors on ajuste PTR
264 STA PTR
265 M2 LDY £8 3 Fichier effacé?
266 LDA ¢PTRD,Y
267 BEQ MOINS ; Oui, alors on passe au suivant
268 RTS 3 Non, alors tout va bien...
269
270 * Routine d’écriture nom de fichier
271
272 ECRIT LDY £8 3 Récupére longueur nom fichier
273 LDA ¢PTR),Y
274 AND £$F
275 STA EC2+1 3 et la sauve dans EC2+1
276 ECi INY 3 Affiche le nom & 1’écran
277 LDA (¢PTR),Y
278 ORA £%88 ; Bit 7 & 1 pour affichage
279 JSR COUT
286 EC2 CPY £8
281 BNE EC1i
36 GUY-HACHETTE
a
ee
as
Lgoeiges
>t —~¢-
282 LDY CH 3 Récupére CH pour PREFIX
283 RTS
284
285 * Routine affichage normal
286
287 NORM LDY £39
288 Ni LDA <BASL),Y
289 ORA £988 3 Masque pour affichage normal
298 STA (BASL),Y
291 DEY
272 BPL Ni
293 RTS
294
295 * Routine pour commande
296
297 COM JSR ECRIT 3 Ecrit le nom
298 STY SCH 3 Sauvgarde CH pour le PREFIX
299 LDY £8 3 Inscrit le nom dans buffer IN
300 Ci LDA ¢BASL),Y
301 STA IN+5,Y
302 INY
363 CPY SCH 3 Jusqu’& SCH contient longueur
304 BNE Cl
305 LDA £%8D 3 Inscrit un retour chariot
346 STA IN+6,Y
307 RTS
308 Si vous ne possédez pas
d'Assembleur, passez 4 la page
309 * Textes suivante pour saisir les codes du
316 programme STARTUP de
Maurice CHAVELLI.
311 PREFIX ASC "PREFIX"
312
313 * Vecteur pour modification éventuelle, par exemple trai-
314 * tement complet pour les fichiers: RENAME, DELETE... mais
315 * le programme débordera du bloc.
316
317 HOOK JMP T18
facile des programmes (Basic et LM) insérés dans la revue.
Bon nombre de nos lecteurs I'utilisent déja et s‘en félicitent.
C'est a leur intention que nous publions le petit rectificatif ci-aprés, modification qui auto-
rise la vérification des fichiers binaires sur 24 octets par ligne (au lieu de 16).
Concerne BIN.CHECK.PRO et BIN.CHECK.DOS
515 NK = PEEK (ENTREE + 21): VTAB 12: PRINT "Nombre de colonnes — >"NK;: HTAB 26: INPUT "";X$: IF X$ >"
THEN X = VAL (X$): ONX < >16ANDX <> 24ANDX < > 32GOTO5I5: POKE ENTREE + 21,X
517 IFSLOT = 3ORNOT SLOT THEN RETURN
2022 HOME .
SIGN ATURE Cette disquette TREMPLIN MICRO permet une vérification
i onlieaeenniaimaniieniiiiacaeeeanemaanael
TREMPLIN MICRO
37
STARTUP (LES CODES)
/TMF/STAR/C ,A$7888 ,L$B1FC* BSAVE NOM,A$7000,L$01FC
7886: AD BB C8 AY 88 85 88 8D 7F 71 85 18 AY B2 BD 7E 71 AY 76 BD 7D 71 28 BB = =4B5F
7018: BF 8@ 7A 71 F® @3 4C 3A FF AD 7D 71 85 69 EE 7D 71 EE 7D 71 AB 62 B1 BB AFDE
7038: 8D 7E 71 C8 B1 68 8D 7F 71 DB DB AD 7E 71 DB Dé AB G5 BY F3 71 99 88 82 FBLA
7648: 88 18 F7 26 58 FC 2@ 39 FB AS 88 28 SB FB AS 84 85 846 AP 76 85 B87 AS 18 ERIS
7068: 85 24 A9 AF 28 ED FD 28 DC 71 26 83 BE AY G2 85 22 AP BB 85 1B 28 58 FC 2048
7078: A2 16 28 8@ 71 20 BB 71 AS 25 C9 17 FB 83 28 BE FD AD 25 76 C5 1B F@ 83 «1875
7898: CA D@ E7 AY 81 85 1B AY 2B 85 846 AY 76 85 87 AY B2 26 SB FB AG 27 BI 28 = —PDP6
70A8: 29 3F 91 28 88 1@ F7 AD @@ C@ 18 FB 8D 18 C8 C9 AB DE 83 4C BB 78 C9 9B OBAEL
70C@: D@ @6 28 39 FB 4C 58 FC C9 95 F@ 3F C9 88 FA SB C9 8D DG D2 C8 BI 66 27) «C593
7808: F@ C9 D@ F@ 1E 4C F9 71 20 39 FB 28 58 FC AY AB AB 84 99 BB 82 8B 18 FA = 982F
76F8: AY AD 8D 85 82 28 DC 71 4C 83 BE AB 11 Bi 86 8D 7E 71 C8 B1 86 8D 7F 71 BAM
7108: 4C 11 76 2@ D@ 71 AS 1B CD 25 76 F@ BF 28 88 71 ES 25 AS 2509 18 DB 81 = 73ED
7128: Cé 25 20 8E FD 28 B8 71 4C A4 78 28 DB 71 Cé 1B DB G7 ES 1B FB 83 4C AY 4630
7138: 76 28 9E 71 Cé 25 AS 25 C9 B1 FA 83 4C Al 78 AY 18 85 25 CS 25 C46 25 FO DBI
7158: 1B 28 22 FC AS 28 85 @8 AS 29 85 89 ES 25 28 22 FC AB 27 Bi 68 91 28 8B FLIP
7168: 18 F9 38 DF C8 84 24 AY 82 26 SB FB 26 BB 71 4C Ad 76 43 68 88 76 BG BB 866328
7188: E6 1B 18 AS 846 69 27 85 86 98 82 ES 87 C9 FF DB B46 AP 84 85 B46 ES B7 AB ADL
7198: @@ Bi 66 F@ ES 68 38 AS 86 EY 27 85 66 BB 82 Cé G7 CP DD DB G4 AP DB BS 5347
71B@: 86 A@ 88 B1 86 FB E7 68 AB BB Bi 86 29 BF 8D CA 71 CB Bi 86 9 86 28 ED 8700
71C8: FD C@ @@ DB F4 A4 24 68 AB 27 Bi 28 89 88 91 28 88 18 F7 68 20 BB 71 84) C547
71E8: 18 A@ 68 B1 28 99 86 82 CB C4 18 DB FS AP BD 99 B46 G2 6B DB DZ2C5 C6 CP FICF
71F8: D8 4C E@ 78 8874
* Cette référence concerne la disquette TREMPLIN MICRO, mais vous pouvez donner 4 cette routine le titre de
votre choix : STARTUP.C par exemple.
CONSEILS AUX DEBUTANTS :
Rappelons que, pour taper un programme en langage machine (sans assem-
bleur), il suffit d’accéder au Moniteur par un CALL - 151, puis de taper textuelle-
ment chacune des lignes ci-dessus. Lorsque cette tache — 6 combien épuisante
— est terminée, sortir du Moniteur par CTRL-C (touche CTRL + C), puis taper le
BSAVE NOM,A$7900,L$01FC indiqué en téte de programme.
PRECAUTION :
Avant de rentrer les codes d'un programme, s‘assurer que l’on a bien accés au DOS ou 4
ProDOS en essayant d'obtenir le catalogue de la disquette. Eventuellement (cela n'engage
arien !) essayer de sauver la routine avant méme de I’avoir tapée.
Rien n'est plus désagréable que de se retrouver devant un écran rempli de codes, aprés
vingt minutes de frappe laborieuse... sans le DOS !
Attention ! Ne tapez surtout pas les valeurs indiquées en couleur, 4 la fin de chaque ligne :
elles sont destinées aux utilisateurs de la disquette SIGNATURE et permettent de localiser trés
rapidement les éventuelles erreurs de saisie (lire, & ce sujet le bas de la page précédente).
SUCSRSSRHTN SAAS EA HHeeReeeAeEseNEeREs Reese eR eE AE ese ASE RAST SSeS SSeS OSE eL A AL ese AES ewoeseoeee ee
38 GUY-HACHETTE
MATERIEL
NESTOR
GS RAM et 5 RAM PLUS
=== extensions mémoire pour Apple IGS ===
Connaissez-vous les produits d‘Applied Engi-
neering ? et notamment GS RAM et GS RAM
PLUS, extensions mémoire pour Apple lIGS ?
Vous pensez sans doute que ces cartes sont
encore réservées au marché américain ?
Erreur : 'importateur existe et je Iai rencon-
tré. Cest la société lyonnaise BREJOUX.
Jajoute que le prix de vente de ces cartes est
raisonnable (si mes renseignements sont bons,
il correspond 4 un cours normal du dollar, ce
qui est assez rare pour mériter d’étre signalé).
Qui plus est, elles sont garanties 5 ans. Parfai-
tement : vous avez bien lu.
GS RAM PLUS OU GS RAM ?
La premiére supporte des DRAM Chips de 1MO,
permettant d’obtenir 6 MEGAS sur la carte prin-
cipale. La seconde supporte des RAM Chips de
256 K. Elle est disponible en différentes versions
(de 512 K 41,5 MEGA), mais une carte addition-
nelle "piggy back” peut, en venant s‘enficher sur
elle, étendre sa mémoire 4 8 MEGAS... reconnus
par I’Apple IIGS. Naturellement, GS RAM et GS
RAM PLUS sont compatibles avec tous les logi-
ciels du GS, AppleWorks inclus, tout comme le
Basic, ProDOS, DOS 3.3, PASCAL, C et CPM.
POUR QUOI FAIRE ?
Par exemple pour passer de 6900 4 25000 lignes
en traitement de texte. GS RAM repousse les
limites d'AppleWorks et vous offre, par-dessus
le marché, un buffer d'impression qui vous auto-
rise 4 continuer la saisie pendant |'impression.
Capacité mémoire oblige: GS RAM auto-
segmente vos fichiers importants pour les sauver
sur deux disquettes ou plus. Pratique, non ?
UN PATCH
Craignant un retard dans la diffusion de la ver-
sion AppleWorks 2.0 en Europe (ou sa non com-
mercialisation), la Société Bréjoux avait lancé
l'étude d'un patch sur la version frangaise 1.4.
La premiére monture de ce programme supporte
la version 2.0 américaine et la version francaise
1.4 ProDOS 8 et 16. Elle a la particularité de
reconnaitre l'ordinateur lors de la configuration,
ainsi que les diverses cartes d'extension : Ram-
Works pour le /le, RamFactor pour le // Plus, lle
et IIGS... GS RAM et GS RAM PLUS pour I’Apple
lIGS.
INSTALLATION
Une notice on ne peut plus claire (en frangais)
indique exactement la marche 4 suivre. A moins
de s‘obstiner a la lire la téte en bas et les yeux
fermés, il est impossible de se tromper.
Quand la carte est en place et le GS en marche,
il suffit de consulter le tableau de bord pour
savoir que l'on dispose d'une jolie réserve de
mémoire !
APPLEWORKS 2 EXPANDER
La encore, I'utilisateur dispose d'une documenta-
tion en francais... que je lui conseille de lire (ce
que je n’ai pas fait... d'ou un patch intempestif
de ma version d'AppleWorks... mais j'en possé-
dais heureusement une copie). II convient de sui-
vre exactement les instructions, mais c'est
enfantin. Précision utile : le support technique
de la Société Bréjoux n'est pas avare de préci-
sions éventuelles.
Documentation et renseignements : Société Bréjoux — J.-M. BRESARD
29, rue de Montribloud 69009 LYON — Tél. 78.36.52.69.
Threanr iar ace,
:
|
if
Cette routine en langage machine vous permettra de travailler avec la date et I'heure |
|
dans vos programmes en Basic. Pour qu'elle fonctionne correctement il est absolument
nécessaire d’avoir PRODOS 8 en mémoire.
Votre programme Basic devra contenir les lignes
suivantes :
5 PRINT CHR$ (4);"-HORLOGE.GS”
10 DA$="00/00/00": Rem Initialisation de la
variable qui contiendra la date
20 HE$="00:00": REM Initialisation de la varia-
ble qui contiendra l'heure
Marc BROCHA
30 Rem Ces deux réservations sont indis-
pensables
40 & DA$,HES
50 PRINT “Nous sommes le ";DA$
60 PRINT "HEURE = “;HE$
Vous pourrez répéter la ligne 40 autant de fois
que vous le désirerez dans votre programme.
COMMENT CA MARCHE ?
Le programme Assembleur retient les deux adresses des variables DA$ et HE$. Ensuite, appel est fait a
la routine GET TIME ($82) de PRODOS qui place la date et I'heure en mémoire de la maniére suivante :
DATE 49041 ($BF91)
7TLe6|{[5][4]3]2]{i1]Jo]
49040 ($BF90)
Lz ,e|[5|4|][3]2]1 |¢
Année
Mois Jour
TIME 49043 ($BF93)
7TLleo|[s5|[4]3]2]}]i fa
49042 ($BF92)
Flejslapalziilte
Heure
Le reste du programme n'est qu'un décodage de ces données et une conversion au format texte de
maniére 4 entrer dans DA$ et HES.
Remarque : II est primordial que DA$ ait au moins une longueur de 8 caractéres et HE$ une longueur de 5.
40
GUY-HACHETTE
i calatatahatiiadatatallal alata alee eee ell LE td
1 SHEE +
2 * *
3 * HORLOGE.GS (PRODOSB UNIQUEMENT) *
4 * *
5 tees SE SHH EEE
6 * *
z * Routine utilitaire permettant |‘utilisation *
8 * de I‘horloge interne du 2 GS. *
9 * Cette routine est appelable par Basic : *
10 * 10 DA$="00/00/00" :HES="00:00" *
ilo 20 & DA$ H
Showing the first 100000 of 199628 characters.