Text content (OCR)
Le 65C816_
deécortique
Ecrivez en HGR !
| Votre Apple connait la musique !
AU SOMMAIRE
PREMIERES ROUTINES POUR LE GS .............0c0c0eueueeues 2
ECRITURE EN MODE HGR ETENDUE ..................0000000 00 3
BT MAPS (D059 6) csicsscosninsisiernanseaniusninsmanciaiamosaneuiess N
L'INSTRUCTION BIT, utile et mal connue ............0..00 cere eee 14
ORGUESURIAPALE ausas cement capita ie 15
COMMUTATEURS: LOGIQUES <ss.cacreemenemcmneryeris 17
65C816 La suite et la fin de l'étude de Marcel COTTINI ... 21
HORLOGE 20.0.0... ccc cece ec eeseeeeeueeeees a 9
CREEZ VOS CARACTERES GRAPHIQUES 33
DU COQ ALANE, jeu de lettres 00.0.0... 0. 0c ce ceeeeeee ee eee 43
LES VARIABLES NUMERIQUES . 49
GARAGTERES SOURIS sm isicicouesi arises 52
PROTECTION SELECTIVE DANS /RAM ............0cceeeeeeeeeee 53
BRIGA-BRAG srarstiacisinenarmammmreTerTT 56
UN NOUVEAU! CERCIE sc scsecswsesnconcyossessemeanmanreeeess 57
INITIATION MEMO-VISU, jeu visuel ..........-.....0005 61
AU BASIC TROIS PETITS AIRS ceceeeeee 65
LES LIVRES 00.0... 0c cc cscs ec cee esse es eeeeseeeeeneeees
Yvan KOENIG REPOND A NOS LECTEURS
Avec la collaboration de: ARGOS, Marcel COTTINI, Michel DEVAUX, Francois GALLET,
Madeleine HODE, Roland JOST, Yvan KOENIG, Jean PERROT,
J.-P. PICHON, Clément RENARD. .
GUY-HACHETTE
Apple et ProDOS (noms et
logos) sont des marques dépo-
sées d'Apple Computer, Inc.
BIMEST L
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 lobligeant pas & glaner,
dans plusieurs magazines, les
renseignements concernant sa
machine, ne bénéficient pas du
numéro de Commission Paritaire,
et pas dovantoge des tarifs pos-
toux réduits.
TREMPLIN MICRO — Bimestrie! —
Cest une publication des Editions
JIBENA, 4, rue de la Cour-des-
Noves, 75020 PARIS — S.A. au
copital de 3600000 F — Imprimé
por CITE-PRESS/PARIS — Dépét
légal @ la date de parution — Ins-
cription a la Commission Paritaire
des Publications et Agences de
Presse : en cours — Directeur de
la Publication: Guy-Clément
COGNE — Diffusion N.M.P.P.
Ou est donc passe le GS ?
APPLE //GS existe. Tremplin Micro |'a méme essayé ; mieux : nous
rae avons testé, sur cette superbe édition de la formule Il, tous les pro-
grammes du présent numéro. Parfaitement : la compatibilité a été
vérifiée, en mode émulation bien sér, et je vous assure que ca mar-
che. Y compris I'HORLOGE de Francois Gallet, mais en tenant
compte des restrictions indiquées par l'auteur... et en sachant que
le GS n'a vraiment pas besoin de cette horloge d’appoint !
Quant & l'ORGUE de Roland Jost, il est superbe, mais en utilisant le tableau de
bord du GS pour le mettre en vitesse lente... comme le /le qu'il émule si bien,
mais parfois avec trop de brio. Mais oui: il est réellement tres agréable
d'observer la rapidité de l'affichage et l'accélération dont bénéficient certaines
routines de notre vieil Applesoft.
Je vous mets l'eau 4 la bouche, pas vrai ? Croyez bien que je le regrette. Si cet
aveu peut vous consoler, sachez que je ne suis pas mieux loti que vous : j‘ai
définitivement restitué son GS au service de Presse d’Apple... et j‘attends
maintenant le mien. Je comprends la déception de certains lecteurs de Trem-
plin Micro : commander un ordinateur personnel est une chose ; pouvoir s’en
servir quand bon vous semble en est une autre. Hélas ! dans le monde entier,
les constructeurs de centaines de matériels font les mémes annonces, puis ne
tiennent pas leurs promesses. On ne compte plus les clients qui, en désespoir
de cause, ont annulé une commande ici... pour en attendre une autre la !
Il faut reconnaitre qu’Apple n’avait rien promis du tout. On savait depuis le
premier jour que |'Apple //GS ne serait vraiment disponible (c'est-a-dire livra-
le dans les 48 heures) qu’au début de 1987. Convient-il de regretter que
l'annonce en ait été faite un peu trop tat ? Hum ! qu'auraient dit les incondi-
tionnels de la marque si on avait continué 4 leur cacher la sortie prochaine
d'une machine que tout le monde attendait ?
C'est pourtant ce qui se passe avec les imprimantes (Apple s'entend). Je vous
Gssure que nous ne savons rien. Officiellement. Comme certains de nos lec-
teurs, nous avons appris, dans des magazines édités outre-Atlantique, que
lusieurs imprimantes Apple — dont une laser "démocratique” — étaient sur
le point d’étre commercialisées. C'est récent... et c'est tout... du moins au
moment ot je rédige ces lignes, c’est-d-dire au début du mois de décembre.
En attendant d’en savoir davantage sur ces merveilles, souhaitons-nous une
bonne... une excelente année 1987. Merci de votre attention et rendez-vous
dans deux mois ! GUY-HACHETTE,
suunqeacauaaozsmsssseceseusssenssonssssssrsesascunsssersssosersnsasesnsseneennssseseeescsersoezeseseses
TREMPLIN MICRO
APPLE /ICS :
c’est parti!
Nenviez pos Nicole Bréaud-Pouliquen,
auteur du premier MEMENTO consacré a
VAPPLE 1/GS (au PSI) ; exploiter une
documentation, aussi compléte soit-elle,
et en extraire les adresses indispensa-
bles au programmeur amateur n'est pas
de tout repos... surtout quand il n’existe
aucun autre ouvrage permettant d’utiles
comparaisons. Je vous invite 4 découvrir
ces CLEFS POUR APPLE lIGS, Cette pre-
miére édition comporte certes des lacu-
nes, mais I’étude du GS n’en est qu’a
ses débuts ! Que l'on ne s'y trompe pas
si cet ouvrage s‘adresse d'abord et sur-
tout @ des programmeurs pratiquant
a f.
DEPLACEMENT DE L'ECRAN, TEXTE
0
16
15
20
30
40
50
60
70
80
85
90
95
*300.319
306:
308:
310:
318:
LES COULEURS DEL ECRAN. TEXTE
GS exclusivement
PRINT CHR$ (21): HOME
FOR | = 768 TO 793: READ R: POKE |,R: NEXT : POKE
2039,32
FOR | = 24 TO 1 STEP - 1: HTAB I: VTAB I: PRINT I;; NEXT
PRINT : CALL 768
POKE 778,96: POKE 781,04
GOSUB 90: HOME : GOSUB 90: CALL 768
X=X+1:1FX<9 THEN 50
POKE 778,04: POKE 781,96
VTAB 20: PRINT "(M)ENU ";: GET R$: PRINT R$: IF R$ =
“M" THEN PRINT CHR$ (4)"RUN MENU.GS
HOME : END
VTAB 22: INVERSE : PRINT "TOUCHE SVP ";: NORMAL :
GET R$: PRINT : RETURN
DATA 8,24,251,194,48,169,255,3,162,0,4,160,0,96,169,
255,3,84,0,0,56,251,226,48,40,96
-LALIGNESS —
G8 18 FB C2 306 A9 FF @3
A2 0G G4 AG GG 60 AD FF
03 54 GG GG 38 FB E2 30
28 60
GS exclusivement
' f 10 PRINT CHR$ (4)PRE3”: PRINT : HTAB 15: PRINT” LES
| bl (ou le | C), il four- "
tira i "i COULEURS DE L'ECRAN TEXTE DE VOTRE APPLE IIGS
fous les autres. 20 A = PEEK (49186): B = PEEK (49204): REM Couleur
On examinera avec curiosité le systeme actuelle (A=Fond / B=Cadre)
CPW, avec son moniteur, son éditeur et
son macro-assembleur, mais on s‘attar- 25 FORI = 236 TO 251: POKE 49186,1: GOSUB 90: NEXT
dera sur le répertoire détaillé des outils
du bureau électronique (QuickDraw, 30 CALL - 198
WindowManoger, MenuManager, etc.). 35 FORJ = 60 1075: POKE 49204,J: GOSUB 90: NEXT
Nicole Bréaud-Pouliquen a méme pous-
sé a gentlesejusqu's montrer dans un 40 POKE 49186,A: POKE 49204,8
prostareete_Soemciety: (commen VTAB 22: PRINT "(M)ENU ";: GET RS: IF R$ = "M" THEN
ajouter un accessoire de bureau & une : 4
application. Ce n'est pas d'une simplicité PRINT CHRS (4)RUN MENU.GS
évidente, mais je sais que bon nombre 80 END
d'Appl i éjoui it deja a
Ia pauike de pouvoir prochoinenanr 90 POKE - 16368,0: WAIT - 16384,128,127: POKE -16368,0:
dompter la béte ! Guy-Hachette RETURN .
GUY-HACHETTE
—_ —
bos ProDOS
ECRITURE EN MODE
Haute Résolution étendue ©
En dehors de logiciels fermés tels que PURPLESOFT, ARLEQUIN ou EXTA-
SIE, difficiles & modifier, il n'existe encore que peu d'utilitaires permet-
tant de gérer la double haute résolution de I'Apple /le 128 K ou de son
cousin I’Apple IIc. Dans le n°10 de Tremplin Micro, Thierry Gauthier a
présenté un programme d'inversion d'écran DHGR. Je vous propose
maintenant un utilitaire permeitant l’écriture en page DHGR.
ECRIT.DHGR est appelé par la fonction AMPERSAND et permet, 4 partir
d'un programme Applesoft, d’afficher du texte en page haute résolution
étendue. Les possibilités sont les suivantes :
* Alphabet frangais accentué, alphabet grec, indices et exposants (intéres-
sant pour les programmes de chimie, physique ou maths). Tous les caracté-
res peuvent étre écrits en gras, en double hauteur, en inverse. Enfin l’écri-
ture peut se faire horizontalement, vers le haut, vers le bas ou en oblique.
Routine LM et table de caractéres
Tremplin Micro ne publie pas le programme
source, mais celui-ci figure sur la disquette
n°12. Pour taper ECRIT.DHGR, procédez donc
de la maniére habituelle : CALL -151, puis les
différentes lignes de codes. Sauvez-le par :
BSAVE ECRIT.DHGR,A$4000 L465
Attaquez-vous ensuite 4 la table de caractéres
(ce n’est pas du gateau, mais elle vous rendra
de nombreux services !) :
4260 : 60 10 10 08 08 04 04 03...
et sauvez-la par :
BSAVE NEWSET2,A$4200 ,L2048
SIGNATURE (voir bulletin de commande) vous permettra un contréle facile de la saisie de ces
Un BLOAD ECRIT.DHGR vous permettra de
Vinstaller en mémoire. Votre programme
BASIC devra faire pointer la fonction Amper-
sand en $4000 (POKE 1013,76: POKE 1014,0:
POKE 1015,64) et afficher la page DHGR.
Pour afficher une variable alphanumérique, il
suffira de faire :
& PRINT “chaine” AT X,Y ou
& PRINT A$ AT X.Y avec la position horizontale X (entre 0
et 79) et la position verticale Y (entre 0 et 183)
routines... et, d'une maniére générale, de toutes celles 4 paraitre dans T.M.
Comment utiliser ECRIT.DHGR ?
Pour afficher une variable numérique, il! fau-
dra la transformer en chaine de caractéres par
la fonction STR$. Cela n‘est pas un handicap et
vous permettra d’ajouter un affichage formaté
(variables chaines).
Ecriture en double hauteur : faire SCALE = 2:
Pour revenir en mode normal : SCALE = @.
Ecriture dans différentes directions : la direc-
tion de l'affichage peut étre modifiée par I'ins-
truction ROT. (suite page 4)
Pe DLL lela
TREMPLIN MICRO
ee eieiaiaiaietaieraiareeaieeeaaeae
ROT=9 : affichage horizontal CTRL-N_ : Affichage normal (ni gras ni inverse).
ROT =7 : enoblique 4 45° vers le bas
ROT =8 : verticalement, de haut en bas Le source Assembleur est bien documenté et
ROT = 15 : enoblique vers le haut peut se passer d’explications supplémentaires.
ROT = 16 : verticalement, de bas en haut. Le programme Applesoft DEMO.ECRIT.DHGR
Les autres possibilités s‘obtiennent en insérant permet de se rendre compte des possi
des caractéres de contréle dans la chaine : d'ECRIT.DHGR et de la facon de l'utiliser.
CTRL-B : Le prochain caractére sera décalé vers le bas.
CTRL-E : Le prochain caractére sera mis en exposant. ATTENTION !
CTRL-F : Le prochain caractére sera en grec minuscule. Les chaines de caractéres renferment des
CTRL-G : Le caractére qui suit sera en grec majuscule. caractéres de contréle invisibles au listage
CTRL-I e caractére qui suit sera mis en indice. et qui se traduisent 4 l'impression par un
CTRL-O : Le caractére qui suit sera décalé vers le haut. comportement inquiétant de I'Imprimante.
CTRL-P : Tous les coractéres qui suivent seront impri- Un truc pour le lister est de capturer le pro-
més en gras jusqu’a la fin de la chaine ou la gramme en fichier TEXTE, de fe saisir dans
rencontre du CTRL-N. un traitement de texte et d’éliminer ces
CTRL-Z : Tous les caractéres qui suivent seront impri- caractéres avant impression. Une autre
més en INVERSE jusqu’d la fin de la chaine ou solution est apportée par le programme
la rencontre d'un CTRL-N. SIGNATURE d’Yvan KOENIG.
| el
18 REM TEST ECRIT.DHGR
to: 803A
20 DS = CHRE (4): PRINT D$"BLOAD ECRIT.DHGR": PRINT D$"BLOAD NEWSET2,
AS42608" 311
22 POKE 1813,76: POKE 1@14,0: POKE 1915,64: REM Revectorise |’ ampersan
d 2c7¢
36 ROT= @: SCALE= @ F9CB
34 3 9938
25 REM On positionne les “switches” de passage en double haute résolut
jon graphique
36: 983A
4@ POKE 49246,@: REM ANS (Annunciator? off @cic
42 POKE 49232,4: REM sélectionne le mode graphique «GR on) 3219
44 POKE 49239,4: REM selectionne ja haute résciution CHIRES on? 8728
46 POKE 49145,0: REM sélectionne le mode 8@ colonnes (86 cOL on) 151E
48 POKE 49234,0: REM sélectionne le mode pleine page 2618
56 POKE 49153,0: REM permet de stocker directement dans Ja page graphi
que auxiliaire (8@STORE on) OF1B
52 POKE 49154,8: REM Déconnecte RAMURT OF1E
54 POKE 49154,8: REM Déconnecte RAMRD FCICc
54 POKE 49224,6: REM commute la mémoire principale tAlDd
Ss? 3 8634
4@ REM On efface 1a page double haute résotution
61: 863A
65 HGR : REM Efface la page graphique principale 2391
66 POKE 49237,0: REM sélectionne 12 page graphique auxiliaire 381E
6? CALL 62450: REM efface 1a page HGR 4F30
68 POKE 49236,@: REM retour & la page HGR principele 1A1D
49 POKE 49234,@: REM pleine page graphique 261B
96: 883A
91 REM DEMONSTRATION
4 GUY-HACHETTE
eS ee ee
se
a
—a
165
118
115
128
125
127
128
138
135
146
145
147
156
155
166
165
166
178
190
226
58a
SCALE= 1: INVERSE : & PRINT "ECRIT-DHGR" AT 15,1: NORMAL : REM Ce
titre sera écrit en hauteur double et en noir sur fond blanc
GOSUB 586
AS = "permet d’écrire des textes en mode Double Haute Résolution.":
SCALE= @: & PRINT A% AT 5,20
GOSUB 560
AS = "EN MODE ctZINVERSEctN ou NORMAL": & PRINT A$ AT 10,30: REM 1
1 y a un CTRL-Z devant INVERSE et un CTRL-N aprés.
GOSUB 560
As = "ctP en caractéres GRAS : ctGABCDEFGHIJKL..."
& PRINT AS AT 20,58: GOSUB 506
AS = "VERTICALEMENT": ROT= 8: & PRINT At AT 70,20: ROT= 16: & PRI
NT At AT 72,138
GOSUB 588
AS = “EN OBLIQUE ": ROT= 1: & PRINT A$ AT 16,98: ROT= 9: & PRINT
AS AT 16,86: ROT= 8
GOSUB 500
AS = “en DOUBLE HAUTEUR": SCALE= 2: & PRINT AS AT 48,85: SCALE= @
AS = "“Formules mathématiques :°°Y = axctE2 + bxctE3 + cxctE4": & P
RINT AS AT 5,130: REM I] y a un CTRL-E avant lee caractéres & mettr
e en exposant
GOSUB 56a
At = "Equations chimiques : CHctI3CHctI120H + CHctI3CO0H --> CHctI3C
OOCctI2HctI5 + HctI20": REM il y a un CTRL-I devant les caractéres
a mettre en indice
& PRINT AS AT 5,156
GOSUB 588
AS = "Alphabet grec :°y = ctGSxctliyctli - ctFC‘x,y)": & PRINT AS
AT 5,170: REM 11 y a un CTRL-G devant $ , un CTRL-I devant chaque i
et un CTRL-F devant C
& PRINT “a vous d’utiliser toutes ces possibilités...” AT 15,188.
GET RS
REM on déconnecte 1a double haute résolution
POKE 49247,8: REM ANONCIATEUR off
POKE 49164,@: REM CLR8OVID : 86 COL off
POKE 49233,@: REM TXTSET : MODE TEXTE
POKE 49238,@: REM LORES :LO-RES off
POKE 497152,@: REM CLR8@COL : 8@ STORE off
POKE 49236,6: REM LOWSCR:PAGE 2 off
END
REM BOUCLE DE TEMPORISATION
FOR T = 1 TO 1688; NEXT : RETURN
5AB1
1B45
S564F
1B45
3C1F
1B45
331
cAgs
C7A4
3CED
DB34
6838
803A
FOF
Féid
cola
2B1F
BIIA
1A1D
61898
SFFF
Si vous manquez de temps
(ou de courage !) pour recopier
les polices de caractéres de notre
ami Roland JOST, offrez-vous
la disquette numéro 12 de
TREMPLIN MICRO!
TREMPLIN MICRO
A2 G8 86 1C Aé E7 FO 94 A2 10 856 BIDe
D@ G6 A2 FF 86 EF D@ 86 A2 66 B86 -7BFD
86 C9 22 DB G6 28 81 DE 38 BA 87) = AEGF
84 Al A® 89 B1 AB 85 FC C8 Bi AB afar
85 FE 20 B7 08 C9 CS Fé 81 66 28 4FF4
F5 Eé 86 ED AG 88 84 AB 84 6 B84 FEAL
Ad AB B1 FD C9 IF 16 66 26 56 41 ECF3
@6 85 CE Aé EB 84 88 18 66 BB AP = CO7F
80 54 C@ D8 63 8D 55 CB 18 AS ED EBIE
D8 46 AS F9 C9 88 DB BP AS ED 18 77IE
29 C9 18 08 GA 38 AS ED ES 1C 85) ESEF
68 38 BE 38 AS ED ES F9 18 69 68 = -2EFE
69 AS ED 18 65 F9 85 ED E6 EB E6 = scan
08 SE 66 26 1D 41 AY 88 85 BF ASB 4aBD
1A 84 1B E8 Ad OF BI CE AG FA CO £339
ECRIT
DHGR
Sauvez cette routine
par un: ¢ BA GS FB 45 EF Ed 89 Ad BB 971 1A Bada
BSAVE ECRIT.DHGR, GE 2@ 3B 41 85 1A 84 1B AS Al Ad 0774
AS$4000,1465 EE D@ C9 AP 42 85 CF 68 AS CE AZ B1BA
@2 £6 CF CA 0@ Fé 18 465 1D 96 62) = css
96 85 86 85 1D 68 8A 4A 4A 4A AB Dade
29 87 GA GA 18 79 BY 41 AB 68 68 Agar
ED 68 C9 65 DB 89 AD 8G 85 B86 AY = PADS
86 08 85 AY 46 85 46 68. C9 87 DO = aviC
66 C9 BF DB 83 Cé ED 686 C9 16 DB =_27ce
68 C9 69 DB G5 A 86 85 B46 48 CP = agar
85 EF 85 FA 68 C9 1A AY FF 85 EF 9258
80 88 88 88 28 AB 28 AB 28 AB 2B) Alfa
5@ D@ 5@ D@ 26 20 21 21 22 22 23 ~ECII
22 22 23 23 28 20 21 21 22 22 23” =«~FDI8
Le programme source
(bien commenté par
lauteur) figure sur la
disquette n°12 de
Tremplin Micro. 4623
permet d'écrire des textes en mode Double Haute Résolution. y
EN MODE ou NORMAL FY
H
en caractéres GRAS : ABCDEFGHIJKL... | ;
C
Ae
rN gpulaue :
EN opp on DOUBLE HAUTEUR At
Ty E }
N
Alphabet grec : y = Exiyi - y(x,y) T .
A yous de jouer maintenant ... \
Formules mathématiques : Y = ax? + bx} + cx!
6 _ GUY-HACHETTE
Yvan
KOENIG
répond @ vos
questions...
¢ M. D. a essayé d'utiliser PRO.TYPC sans lire
lorticle d'accompagnement. Ce n'est pas
grave, mais c'est frustrant pour lauteur & qui
lon pose alors des questions auxquelles il a
déja répondu.
Oui, PRO.TYPC est relogeable. C'est
dailleurs l'intérét principal de ce pro-
gramme qui montre comment mettre en
place une routine entre ProDOS et ses
buffers.
Par contre, MINIE que M. D. tente
d'accoupler @ PRO.TYPC (quel sera le
| fruit de cette union ?) ne dispose pas
d'un relogeur, mais d'un transporteur.
Claude AUBRY a préféré libérer de la
place pour son programme - a une
adresse donnée - et le copier a cette
adresse sans modification. Je vous
garantis que ce n'est pas par igno-
rance ! En fait, afin de permettre de
modifier quelques paramétres depuis le
BASIC, il était quasiment indispensable
que l'implantation de MINIE fit fixe.
Cela condamne simplement 4 mettre en
place MINIE, puis PRO.TYPC, mais
attention! ne faites pas 36 BRUN
PRO.TYPC consécutits sinon le message
IL N'Y A PLUS DE PLACE vous attend au
coin... de l'écran !
Le petit programme PRO.FP (page 60 de T.M. n°11)
permet de supprimer toutes les monipulations subies
par ProDOS (déplacement des buffers, interruptions,
reset...). ll permet d'éviter des déplacements de buf-
fers obusifs. Attention | PRO.FP supprime également
MINIE. C'est en gros l'équivalent du FP sous DOS 3.3,
mais SANS effacement du BASIC ce qui permet de
Vexécuter DANS un programme.
© M. D. demande aussi comment récupérer,
sous ProDOS, des informations souvées dons
un fichier TXT et contenant des virgules.
lly a la bonne vieille méthode GET, a
savoir :
1060 ONERR GOTO 1050 (suite poge 8)
suneuesseeesssersewecessssesasennenssoses
TREMPLIN MICRO
NEWSET2 _ 220110:
NWSE EA scimnsosr
18 68 08 64 84 83 88 BC 14 92 3E Al 63 68 S117
22 1E 22 22 1F 86 3F 22 82 62 82 82 83 OI
14 92 22 Al 7F 88 3F 22 82 GE 02 22 SF 68 BFSE
3E 68 3E 88 1C 68 3F 22 82 82 62 82 83 88 BALE
4240: B3 22 22 3€ 22 22 B3 86 SC 88 48 88 68 48 BC OB B40
425: OC 12 21 2F 21 12 OC 88 B3 12 BA B6 BA 12 B3 OB B46!
4268: 88 8C 14 92 22 Al 63 88 B3 36 2A 2A 22 2293 88 FIM
4278: B3 22 26 2A 32 22 B3 88 1C 22 Al Al Al 22 1C 6 E18B
4280: BF 22 22 22 22 22 83 88 3F 21 88 1E 88 21 3F 88 S7FA
4298: 1F 22 22 1E 02 62 83 88 3F 22 04 88 04 22 3)
4200; BF 88 68 68 88 88 BC 86 36 AD 88 48 88 6
4288: 63 Al 22 92 14 BC BB 8B IC 22 Al Al 22 9
4208: 83 22 14 88 14 22 B3 68 IC 88 4B 2A IC B
6 86
3
F 22 16 08 64 22 BF 88 3E 06 06 86 6
: 68 82 04 88 16 28 88 86 3E 38 38 38 30
42F0; 88 1C 2A 88 88 68 G8 88 88 8G 68 B68 68 66 08 BB FETE
4300: 08 06 80 88 08 88 86 08 68 88 A8 BB 48 Bd OB OB 2098
4310: 14 14 14 66 86 66 88 88 @8 88 88 88 68 48 88 BB D260
4328: 08 3C BA IC 28 1E 88 68 Bd 26 18 88 84 32 3
4338: 84 GA BA 84 2A 12 2C 86 68 88 08 80 86 B8 BB BB 7590
pes 88 84 82 42 82 64 08 88 88 18 28 28 28 18 68 88 CAE
8 2A 1C 88 1C 2A OB OB 88 88 88 3E 88
8 88 68 88 88 64 BB BB BO OB 3E 08 Bd 88 88 6752
8 OG 86 88 88 88 BB 88 26 1¢ BB 84 B2 86 8
2 32 2A 26 22 1C 88 68 BC 48 68 68 88 IC
2 28 18 84 62 3E BB SE 28 18 18 28 22 1
8 14 12 3E 10 18 68 3E 62 1E 28 28 22 1¢ 8 7E88
+ 38 04 82 1E 22 22 1C 88 3E 28 18 88 64 84 04 88 B49E
43C8: 1C 22 22 1C 22 22 1C 8B 1C 22 22 3C 20 18 BE 86 DAES
4300: 88 88 09 40 08 68 86 88 88 88 88 B6 68 88 64 BB 420
4360: 18 88 04 82 04 88 18 68 86 88 3E 08 3E 88 08 BB F306
488 18 28 18 88 84 BB IC 22 16 88 88 BB BB AB 428E
@ 28 1C 28 3C 22 3C 88 88 14 22 22 3E 22 22 08 BdED
: 1E 22 22 1€ 22 22 16 88 1€ 22 62 62 02 221
4420: 1E 22 22 22 22 22 1E 88 3E 82 82 1E 62 82 3E
4430: 3E 02 02 1E 82 02 82 88 3C 82 82 02 32 22 3C BB E738
2 22 22 3E 22 22 22 88
4450: 28 28 26 28 26 22 1C 68
4460: 02 82 82 82 82 82 3E 08
4478: 22 22 26 2A 32 22 22 08
: 1E 22 22 1E 82 62 62 86
1E 22 22 1£ 8A 12 22 68
E 88 88 88 88 88 88 BB 22 22 22 22 22 22 1C 8B 2156
4480: 22 22 22 22 22 14 88 86 22 22 22 2A 2A 36 22 BB 7808
QCAy 22 22 14 AA 14 22 22 WA 22 22 14 AR AA AA ARMA ETE
4408: 3E 20 10 88 84 82 3E 88 08 14 68 BB BB BA Ba Be 7EDE
448: 88 3C 82 82 82 3C 18 88 28 18 IC 22 3E 42 3C BO E88
44FO: 88 14 2A 08 88 88 88 08 BB 88 BB BB Ob BB BB 7F F2ED
4500: 68 82 64 68 18 26 88 68 1C 26 3C 22 3C 08 BAl4
Sso5ss
a
a
2
2
1
NEWSET2 uite)
04 68 12 24 68 18 98 88 @6 88 2E 11 19 B7 BB
: 88 BB AG 3C AZ 26 9D #1 GH G8 AG 28 98 18 88 06
118 84 08 GE 12 12 OC 98 88 08 9C 32 1E 42 BE 98
96 18 3C AA 2A 9E 84 64 O68 88 Ad 28 96 16 88 OP
: 6 86 36 Ad 24 92 16 98 98 OB 89 48 84 O4 BC 86
: 38 28 24 9E 12 GA B6 88 BB BB 24 BA B64 BF 31 OB
+ 06 $4 88 BC 14 92 22 86 66 68 Ad 24 92 2A BI OI
G8 86 A 24 14 OC 64 OG BH Be BC 92 22 92 BC Bb
+ 66 08 BF 15 14 14 92 88 88 38 84 9C B4 82 IC 18
2 06 G8 18 24 92 GE 81 @1 88 86 B6 BE 89 69 87 88
: 08 90 BF 89 84 84 82 80 98 8 AZ 24 92 BA 86 86
4684: @8 88 AZ 24 14 BC 64 BB O8 BB 48 23 29 20 9B OB
46C8: 88 88 91 14 BC BC 14 AZ BB 18 89 2A 95 BF 82 02
4608: €4 9C 44 82 82 84 84 Bé 38 BC OC Bd AC BC 38 86
46E8: 68 98 88 88 88 08 88 G2 BE 18 18 38 18 18 BE 68
46FQ: 88 88 2C 1A 88 3E BG 88 7F 7F 7F 7F 7F 7F IF 7F
4708: 08 06 88 86 98 88 84 46 48 08 43 a8 89 48 BB 88
4714: @@ 68 14 14 6B 68 68 G6 86 BG 18 3C 88 IE 84 88
4728: 86 06 88 1C 08 1C 68 86 58 BB 14 10 88 84 14
4738; 66 08 1C 14 1C 86 08 86 88 BB 88 88 88 88 a0
4740: 08 88 08 84 64 B4 88 88 88 GG BB 18 18 18 8
4758: 88 86 82 14 BB 14 68 86 66 BB 88 BB IC BB 8B
4768: 08 84 86 88 16 18 68 86 G8 68 98 88 IC 88 68
4778; 06 08 86 08 80 08 88 86 08 BB 18 16 68 A4 84 88
4788: 88 88 1C 14 14 14 1C 88 88 88 BC 88 88 88 IC 88
4798: 88 08 1C 1@ 1C 84 IC 68 O8 O6 IC 18 18 18 IC
47AB: 88 86 84 14 IC 18 10 68 96 48 1C 84 IC 18 IC
4786: 88 6 1C 84 1C 14 IC 88 GB BB IC 16 88 88 68 08
47C8: 86 88 1C 14 1C 14 1C 88 86 BB IC 14 IC 18 IC 88
4708: 06 82 B8 88 88 08 68 BI 66 88 88 88 86 08 64
4768: 08 08 16 08 84 88 14 & 48 1C 06 IC
47F8: 08 6 84 @8 18 G8 B4 88 G8 G8 IC 16 88 68 OB
4806: 88 86 88 34 49 49 36 88 84 BB IC 14 IC 14 14 88
4816: 66 88 BC 14 BC 14 BC B6 88 BB IC 84 04 B4 IC 08
4828: 08 8 14:14 14 OC 88 08 88 1C 4 BC 04 IC 88
4518: 62 82 1E 22 22 22 1E 88 88 OB 3C 42 G2 62 3C 8
4520: 26 28 3C 22 22 22 3C 88 08 48 IC 22 3E 82 3C 86
4530: 18 24 4 1E 64 64 84 86 8 BB IC 22 22 3C 26 IC
4540: 82 42 1E 22 22 22 22 86 88 88 OC 88 98 08 IC OB
4550; 16 86 18 18 10 18 12 6C 82 62 22 12 BE 12 22 8B
45468: 8C 32 98 88 88 88 1C 88 48 BB 36 2A 2A 2A 22 08
4578: 86 88 1E 22 22 22 22 8 88 88 IC 22 22 22 IC 88
4580: 08 88 1E 22 22 1£ 82 82 88 88 3C 22 22 3C 28 20
4598: B@ 88 3A 86 02 62 OZ HG OG AB 3C 82 IC 28 IE 88
4508: 04 84 1E 04 84 24 18 88 88 88 22 22 22 32 20 OB
46 2 36 08
22 20 1
3 3 88
2 3C 08
88 88
36FC
7E26
Q9DE
2026
8052
8782
FaBA
3cda
Yvan KOENIG
répond 4 vos questions... (suite)
1010 PRINT CHR$ (4)OPEN fichier” : PRINT
CHR$(4)"READ fichier”
1020 GET X$ : traitez X$ comme bon vous
semble
1040 GOTO 10620
1050 PRINT CHR$(4)"CLOSE”
On peut également prévoir, AVANT écriture,
de remplacer les virgules par un caractére
inemployé (le tréma par exemple) et faire
l'opération inverse en lecture.
Si l'on dispose d'une zone mémoire disponible
capable de contenir le fichier 4 lire, on peut
utiliser PRO.TYPY, version modifiée de
PRO.TYPC pour y déposer nos précieuses vir-
gules afin de les exploiter a loisir par la suite.
BLOAD PRO.TYPC
CALL - 151
610D : C8 Bl 48 D9 C3 61 DO 25 (bug déjamentionné)
6152: 20 AO 61
615D: 20 A9 61
617E: Ad 00
6180 : 98 20 AD 61 C8 DO FA B9
6188 : 00 02 EA EA EAEA EA EA
6190 : EAEA 20 AD 61 C8 CC DB
6198 : BE DO EC EE AF 61 DO BB
61A0: A9 60 8D AF 61 ADDO BE
61A8: 60 8C D9 BE 98 99 00 60
61B0 : 60
61C7 : 59
BSAVE PRO.TYPY,A$6037,L401
TYPY fichier déposera vos octets en $6000,
loctet haut de I’adresse de début du buffer se
trouve en $61A1, les NOPs correspondent 4 un
besoin précis de M. D. qui souhaite remplacer
les “return” par des “linefeed” ce qui se fait
avec la modification suivante :
618A: 09 80 C9 8D DG 02 AI8A
Nous transmettrons volontiers vos lettres &
Yvan KOENIG, mais n‘oubliez pas de joindre
une enveloppe timbrée pour la réponse et un
timbre pour la réexpédition de votre courrier.
Nous vous rappelons que, si le courrier de
TM est gratuit, nous ne pouvons répondre
qu‘aux demandes respectant la régle du jeu
fe t.
énoncée plus hau: Tremplin Micro
nnaucuencenanocazesensecseezezeueuenecse
GUY-HACHETTE
© Je posséde un APPLE Ile et une imprimante
PANASONIC KX-P1091. Tout fonctionne bien
avec une carte interface dans le slot 1, mais il
est impossible de faire démarrer I'imprimante
avec APPLEWORKS. J'ai modifié la configura-
tion, mais toujours rien...
Je ne connais pas particuliérement
votre imprimante, mais il me semble
qu'il s‘agit en fait de l'une des multiples
“compatibles EPSON” 4 liaison paral-
léle. Vous ne dites rien de I'interface
utilisée alors que c'est 1a que se trouve
presque toujours le probleme avec
APPLEWORKS. Avec la version 1.2 de ce
logiciel et les interfaces paralléles “type
EPSON", il n'y a pas de solution. II faut
essayer de remplacer |'interface par un
modele accepté par AW (GRAPPLER par
exemple). Je vous suggére une formule
de dépannage : utilisez l'option Ajoutez
Imprimante, Impression sur disque.
C'est gourmand en espace disque, mais
vous pouvez, le cas échéant, couper votre
texte en deux. Ensuite la version TYPE de
la routine PRO.TYPC de Tremplin Micro
n°9 vous permettra d’envoyer votre texte
formaté vers votre imprimante.
© Un petit probléme & vous soumettre : cer-
tains logiciels reconnaissent automatique-
ment la présence de deux lecteurs de disquet-
tes, et le programme ne se “plante" pas sur un
‘/O ERROR” si un seul lecteur est présent.
S‘agit-il dans tous les cas d'un essai de lecture
du D2 suivi d'un ONERR (etc.)... RESUME... ou
alors existe-t-il une adresse (du cété de
$60A...) qui permet, par un PEEK judicieux, de
savoir s'il y a un ou deux lecteurs dans le port
6? Une courte routine serait la bienvenue
pour les programmeurs en herbe que nous
sommes, désireux d'améliorer le contort et la
convivialité de nos programmes.
En BASIC votre probléme n'est pas difficile 4 régler.
xxx D$=CHR§(4)
100 NBD=2: REM 2 drives par défaut
110 ONERR GOTO 130
120 PRINT D$ "VERIFY XYZ,D2": GOTO 160:
REM Au cas ot XYZ existerait !
130 POKE 216,0: ER=PEEK(222): IF ER=6 THEN
150: REM Le fichier n’existe pos mais il y a
un disque en place
140 IF ER<ID8 THEN PRINT “Erreur N°’ER”
ligne "PEEK(218) + 256 * PEEK(219) : END
150 NBD=1: REM Un seul disque en place
160 REM Suite du programme
Attention ! un disque DOS 3.3 en lecteur 2 serait traité comme
une absence de disque sous ProDOS... et vice-versa. Y.K.
seneeenooncescnces,
TREMPLIN MICRO
do
NEWSET2 suite et fin)
SSS
4030; 06 BB 1C 84 BC 64 84 G8 BB 68 1C 84 G4 IC IC 8B
4840; 88 88 14 14 1C 14 14 88 86 88 IC 88 88 88 IC 68
4850; 08 68 16 10 18 14 IC 68 66 68 14 BC 84 BC 14 88
4866: 96 08 34 44 G4 G4 iC 80 06 BB 22 36 2A 22 22
4870: @@ 08 12 14 1E 16 12 68 BO BB IC 14 14 14 IC 88
4880: 66 46 1C 14 1C 84 A4 G8 46 OB IC 14 14 IC 1C 20
4896: 82 G2 1C 14 BC 14 14 BB AG BB IC 84 IC 16 IC 68
49A8: 88 86 1C 88 88 99 88 88 BB 68 14 14 14 14 IC 08
4888: 68 88 14 14 14 14 88 BB 88 BB 22 22 2A 36 22
4800: 88 86 14 14 63 14 14 88 66 08 14 14 88 88 88
4808: G2 G8 iC 14 68 B¢ 1C BB BB BB IC 4 B4 B4 IC
4850: 80 86 G4 44 49 19 16 08 GO OB IC 18 18 18 IC 08
4BF0: 68 G8 62 86 88 2A 14 2 86 08 BO Be GG 88 88 7F
4908: 28 28 28 28 28 28 28 88 G0 98 G8 IC 18 IC IC 88
4916: BB 88 64 1C 14 14 IC 68 BG 68 BE IC B4 84 IC 86
4928; 08 8B 18 1C 14 14 1C 8 O8 88 66 IC IC 84 IC 86
4930: 88 £2 18 88 OC OB OG 68 86 G8 BB tC 14 IC 18 IC
4940; 88 08 84 IC 14 14 14 66 B8 8 88 38 88 08 08 06
4958: 08 86 GE G2 68 08 B4 48 G2 Be A4 14 BC BC 14 8B
4968: 88 88 BC 48 88 88 IC 68 84 88 HO 3E 2A 2A 2A 08
4978: 06 88 GB 1C 14 14 14 66 06 88 68 IC 4 iC 08
4988 48 BB 1C 14 14 1C 64 08 88 86 IC 4 1C 10
88 88 1C 44 84 64 88 82 BA G8 18 @ OC ae
4900: 08 08 88 18 88 88 10 86 66 8 88 14 4 1C 86
4980: 68 86 62 14 14 14 BB BB BB BB BB 2A 2A 2A 14 06
141
141
a4 1
141
4908: G4 86 88 14 08 88 14 88 BB Bd B68 14 14 IC 18 18
4908: BG 88 88 IC 18 AC IC 68 86 BB 88 86 28 62 GO 80
4960: 04 88 88 66 80 08 B60 08 86 08 G6 48 08 80 08 88
49FO: BG 88 G8 G6 G8 GA BA B6 8 3E SE 3E 3E 3E 3E 7F
OF98
C406
S1SC
8008
FRF3
Votre bibliotheque
INFORMATIQUE
© ARBRES, TABLES ET
ALGORITHMES (Eyrolles)
les auteurs sont francais et ingé-
nieurs : Jacques Guyot est docteur en
analyse numérique et Christian Vial
docteur en informatique. Sans doute
en déduisez-vous qu'ils sont on ne peut
plus qualifiés pour traiter le sujet de
cet ouvrage, et vous avez raison. Il est
vrai que les auteurs sont également
enseignants-chercheurs... d’ou un livre
parfaitement structuré, constituant un
cours magistral sur des points souvent
négligés par les programmeurs en
herbe :
— Résolution informatique d'un pro-
bléme (analyse et modélisation) ;
— Langage algorithmique (schéma de
résolution) ;
— Structures des données (piles, files,
arbres, graphes) ;
— Diverses méthodes de tri ;
— Gestion de tables, etc.
Uexplication des diverses méthodes de
tri, notamment, est particuligrement
claire. Des schémas la rendent méme
attrayante. En conclusion : sujet(s)
aride(s), mais dont l'étude sérieuse
devrait permettre aux lecteurs de
mieux maitriser la programmation.
¢ EXERCICES DE BASIC
(Eyrolles)
Nous avons déja eu l'occasion de
parler des ouvrages de Claude
Delannoy, dont on connait notam-
ment Apprendre 4 programmer en
Basic et Initiation & la programma-
tion (méme éditeur).
Comme le rappelle fort justement
Vavant-propos de ce nouveau
recueil, la maitrise de la program-
mation ne s‘obtient que par la prati-
que. Je suis tenté d’ajouter : et par
\'étude d’exercices similaires 4 ceux
du livre de Claude Delannoy.
Certes, le Basic utilisé n'est pas
\'Applesoft, mais les lecteurs de
Tremplin Micro se retrouveront
néanmoins en terrain connu, méme
s'ils n’ont pas la possibilité d'utiliser
le “IF... THEN... ELSE” que connais-
sent actuellement la plupart des
Basic. Claude Delannoy leur montre
en effet comment remplacer cette
instruction par deux lignes.
J'ai beaucoup aimé !a présentation
de ces Exercices de Basic. Pour cha-
que exemple, l'auteur donne d’abord
Vénoncé du probleme a résoudre
(pardon : & programmer), les don-
par Clément RENARD
nées éventuelles, les résultats, un
tableau obtenu 4 Ia suite d'un run, le
programme lui-méme, un autre
tableau regroupant la liste des varia-
bles, puis une discussion du pro-
gramme avec des conseils pour modi-
fier ou remplacer telle ou telle instruc-
tion. A conseiller aux débutants,
© DEBUTER EN C
(Eyrolles)
Nous devons a Christian Le Bras cette
traduction francaise du livre du Califor-
nien F. Richard Moore. L'auteur nous
signale que son ouvrage ne devait
constituer, 4 l'origine, que I'un des
chapitres d'un. manuel de musique par
ordinateur... mais n'en déduisez pas
qu'il ne s‘adresse qu'a des lecteurs
musiciens. Par contre, pour réellement
en tirer profit, il est bon d’étre motive
pour la programmation et surtout
d'avoir accés 4 un ordinateur équipé
du systéme d'exploitation Unix.
Débuter en C ne concerne sous doute
qu'un petit nombre de lecteurs de
Tremplin Micro... encore que l'on
parle sérieusement d'un langage C sur
nouvel Apple //GS.
Pua oeeeAseserosssseREsSEEESeesseUaEeeRaeEEsENESOsEeaEeeeeree ses OseeeAEeeeEseeeeeeeeeeeeeesTeNE Eee
10
GUY-HACHETTE
Marcel COTTINI
UTILITAIRE EEE
PROGRAMME DEMANDE
PAR DE NOMBREUX LECTEURS,
TRES ATTACHES A LEUR VIEUX DOS 3.3 !
Sass
Visualiser l'occupation d'une disquette DOS 3.3 ne sera plus un probléme pour le lecteur |
de T.M. Le programme BIT MAP, écrit en langage Basic AppleSoft, occupe 15 secteurs
sur la disquette. II permet la visualisation de l'occupation des secteurs de chaque piste |
au niveau de la disquette, ainsi que du nombre de secteurs libres, donc disponibles 4
l'utilisateur. Ces renseignements sont fournis par I'intermédiaire d'un graphique simu-
lant la surface de la disquette 4 considérer. Les secteurs occupés seront matérialisés par
le symbole X, tandis que les secteurs libres seront laissés vierges. Au bas du graphe
sera inscrit le nombre total de secteurs libres. Certains modules composant le corps du
programme pourront étre intégrés dans vos réalisations futures comme sous-
programme appelé par un GOSUB par exemple.
utilisation méme du programme est trés simple. Aprés avoir lancé son exécution, |'uti-
lisateur pourra opter soit pour Ia lecture des instructions, soit poursuivre le déroulement
des opérations. Dans le premier cas, un certain nombre de renseignements seront four-
nis 4 l'utilisateur, afin de lui donner tous les moyens d'une utilisation rationnelle. Dans
le second cas, il vous sera offert d’étre renseigné sur l’occupation de la disquette venant
d'étre lue, ou sur une éventuelle disquette de votre choix.
A ropos du rogramme | Les lignes 760 4 800 implantent le sous-programme
Pp P Pp g | machine 4 partir de l’adresse $0300 par la routine
| de S.H. LAM qui mérite quelques explications. La
technique retenue consiste 4 placer dans une
Vodresse de la liste des poramatres pour la gestion chaine de caractéres des commandes 4 destination
‘i : moniteur. || sera alors possible d'installer en
des commandes, ainsi que l'adresse d’appel 4 du_monite Forcier pe
RWIS. A partir de I'adresse $0308 (776) débute la | mémoire un court programme en langage machine
table IOB interne au programme. | avec une relative facilité. L'installation en mémoire
P DA £803. Ch ; i is baled s‘effectue en trois étapes.
100: LDA £$03 Charge l'accumulateur avec le byte de a 1 silk ‘
poids fort dela table 0B, La chaine est d'abord scindée en caractéres qui sont
: . placés dans le tampon du clavier (IN - $0200) les
2 SOE ai celica pois uns @ la suite des autres. Cette opération occupe le
tampon clavier a partir de l'adresse $0206 (512 en
Le programme implante a partir de l'adresse $0300
un petit sous-programme pour la recherche de
Sianakts saneccg ae vcaromme oppelont en | d&cimal). Dans un deuxiéme temps, le CALL ~ 144
: I | prog Anh i appelle un sous-programme résident qui met en
CERT Ee ESO vs Ea ceuvre les routines examinant le tampon clavier et
Au retour du sous-programme machine (appel par vérifiant l'exécution des commandes inscrites dans
CALL 768) il sera nécessaire de mettre a zéro le con- la chaine de caractéres.
tenu du registre d'état (statut byte). Cette opération En dernier lieu, il faut revenir au langage Basic.
est effectuée a la ligne 240 (POKE 72,0). Pour ce faire, il suffit de se brancher 4 |'adresse
A chaque consultation d'une nouvelle disquette, $D9C6, ce qui correspond 4 un retour au mode RUN,
la VTOC (Volume Table Of Contents) sera lue, suite de I'exécution du programme Basic AppleSoft.
ome une conversion numérique réalisée aux Le POKE 72,0 a Ia ligne 800, met le registre d'état &
ignes 710 4730. zéro (statut byte -- adresse $48).
TREMPLIN MICRO W
13
148
158
16@ VTAB 16: HTAE 5S: PRINT " NUMERD SLOT:
178
18
198
208
218 POKE I0B + 4,17: REM PISTE @ LIRE
228
238
248
258
JER U EEE EEES
* SECTEURS LIBRES *
+ TRACE LA BITMAP *
* COPYRIGHT AVRIL 2S +
* MARCEL COTTINI (H-H) #
7 REM ctdctuctd
18 SOSUB 748: REM MET EN PLACE SOUS-PROG
RAMME MACHINE
INVERSE : PRINT ©
neon
48 VTAB 6: HTAB 16: PRINT " “DISH FREE &
PACE “""
66 VTAB 8: HTAB 1@: PRINT " AFFICHE LA B
IT MAP *
78 VIAB 9: HTAB 18: PRINT " “">>>™7>">™™
*: NORMAL
88 IF PR=1 THEN GOTO 156
98 VTAB 11: HTAB ts PRINT "VOULE2 YOUS L
ES INSTRUCTIONS (O/N) ";
188 GET A$: PRINT A$: IF AS = “O" THEN G
OSUB 828: GOTO 128
116 IF AS < > "N® GOTO 98
126 VTAB 13: PRINT "ESPACE LIBRE DU DISK
QUI VIENT*
VTAB 14: PRINT "D’ETRE LU PAR LE “DOS
72 OND 3;
GET A$: IF AS = "DO" THEN UTC = 46811:
GOTO 218: REM VTC = ADRESSE MéMOIRE 8
IT MAP
UTC = 26864: REM ADRESSE $9008
"3s GET A$: PRINT A$:S = YAL (AS):
IF § {1 OR S > 7 THEN GOTO 168
VTAB 18: HTAB S: PRINT “NUMERO DRIVE:
"3: GET A$: PRINT A$:D = VAL (AS):
IF BD ¢ 10RD) 2 THEN GOTO 178
10B = 776: REM TABLE i0B
POKE 10B + 1,S # 16: REM NUMERO DU SL
ft
POKE T0B + 2,D: REM NUMERO DU ORIVE
POKE 108 + 5,8: REM SECTEUR a LIRE
CALL 768: REM APPEL A RWTS
POKE 72,6: REM MET A @ REGISTRE D’ETA
TES
ER =
R
PEEK (IOB + 13>: REM CODE ERREU
268 IF ER = @ THEN VTC = 36844: GOTO 318
1B4D
1C5A
FaDA
BiC2
Fa13
S198
DCI
3136
E26A
82¢8
E348
£933
7C4E
713C
DSFD
1823
3cec
3331
Ad7E
CORR
3649
278
288
296
386
318
326
338
348
356
368
378
388
398
408
418
428
438
448
458
468
4768
528
536
546
558
578
588
598
VTAB 20: HTAB 5: PRINT "UNE ERREUR A
ETE RENCONTREE"
VTAB 21: HTAB 5:
CTURE DU DISK."
VTAB HTAB 5:
PRINT “PENDANT LA LE
PRINT "LE CODE ERREU
REM ctJctuctJECRITURE \TOCctUctuctd
HOME
SOSUB 410; REM CHARGE LA TABLE
EQSUB 78¢: REM CHARGE LA TABLE NUMERI
QUE
SOSUB 588: REM CODES INVERSES
FOR 1 = 8 0 34
X= VIC + 5é + 1 + 4: REM ADRESSE BIT
MAP PISTE I
X@= INT ¢ PEEK (X) / 160sXt = PEEK
(X) = XB # 16:X2 = INT ( PEEK (X #1
)/16X9 = PEER OX + 1) - x2 # 16
PSS = TTS(X8) + TTS(XE) + TTS(X2) + T
T$(X3)
FOR 11 = 150 @ STEP - 1
VTAB 26 - II: HTAB 4+ I: PRINT MIDS
(PS$,11 + 1,1)
NEXT IT
FS = FS + NNCXB) + NNCKL) + NN(X2) +
NNGX3)
NEXT I
VTAB 21: HTAB 4: INVERSE : PRINT * ~~
--) “"FS" SECTEURS “LIBRES*: NORMAL
VTAB 24: HTAB 25: INVERSE : PRINT “CO
NTINUER (O/N)*5: NORMAL
GET A$: IF A$ = "O" THEN CLEAR :PR =
1: GOTO 28
IF AS < > "N" THEN 468
HOME : END
VTAB 1: PRINT " ~""""~""PISTES*
NS = "SECTEURS*: FOR X = 1 TO 8: VTA
B é + X: HTAB 1: PRINT MIDS (NMS,X,!
ys NEXT X
CAS = " BBBBRGAGOGL111111111222222222
233333 "
VTAB 3: HTAB 3: INVERSE : PRINT CAS
CAS = " 812345678901234567898 1 2345678
901234 "
VTAB 4: HTAB 3: PRINT CAS
VTAB 5: FOR 1 = @ TO 9: HTAB 3:: PRIN
T CHR$ (48 + 1): NEXT I
VTAB 15: FOR I = @ TO 5: HTAB 3: PRIN
T CHRS (65 + 1): NEXT I
VTAB 5: FOR I = @ TO 16: HTAB 39: PRI
1289
C2FB
787E
4714
B3FC
90CB
ECAL
8777
B8ESt
5583
BESC
93D
ca7s
15c8
25¢c8
6CB2
GUY-HACHETTE
NT" ": NEXT Tr NORMAL PA7? | 94g
688 RETURN 6381
618 REM ctUctJCHARGE LA TABLEctuctJ 950
628 DIM TT$(15) 0689
$38 FOR 1 = 4 TG tS: READ TT$(1): NEXT I BALD | gga
648 RETURN 6381
658 REM c
668 DATA "Xx
678 DATA *X
DONNEES DE LA TABLEctJctJ 878
"OC OC XE HK“ 888
WX IX XB
688 DATA " XX", XK" K XH KH
698 DATA " “XK"." °X "8 Xa
986
58D?
BED 918
4381
928
7037 938
948
68 88 6@ @1 68 61 EF De” C76E 958
778 HEX$ = HEX$ + " ND9C6G": REM RE i
RUN’ PROCHAINE LIGNE 5499 968
788 FOR 1 = 1 TO LEN (HEX$): REM LONGUEU
R DE LA CHAINE bic 976
798 Pi Sil + 1, ASC ¢ MIDS CHEX$,1,1)) 988
REM STOCKE LA CHAINE DANS BUFF 996
ER CLAVIER
888 NEXT : POKE 72,0: CALL - 144: REM AP
PEL SOUS PROGRAMME BUFFER 7062 | 1008
818 RETURN 6381
828 J 10:8
8368 UT ae5 | 1028
comprend le mieux — est proprement stupéfiante.
Une edition a ne pas manquer !
N'attendez plus et plongez-vous dés maintenant dans
l'étude du langage machine. Ce n'est pas aussi difficile que
vous le pensez et l'on obtient rapidement, a partir de routi-
nes simples, mais efficaces, des résultats surprenants.
La rapidité du langage machine — celui que votre Apple ede Seca
PRINT "CE PROGRAMME LIT LA TABLE 0’0C
CURATION"
PRINT *(VTOC) OU DISK ET LA RESTITUE
A L’ECRAN"
PRINT “EN SECTEURS OCCUPES “MARQUES P
AR DES x)
PRINT
PRINT "LE PROGRAMME AFFICHE LES
$ (DE 6"
PRINT “A 34) ET LES SECTEURS DES PIST
ES (DE F*
PRINT "A @).LES SECTEURS OCCUPES SONT
sMATERTA~
PRINT °
LIBRES,
PRINT "PAR DES
PRINT
PRINT "POUR UNE
DE CELLE-
PRINT "CI, METTE2-LA D’ABORD EN PLACE
pyTS"
:
PRI REPONDE2 “N’ @ LA PROCHAINE QU
ESTION."
RETURN
VTAB 24: HTAB 1: INVERSE : PRINT " <C
ONTINUE OU <ESC> POUR QUITTER..... "
ISTE
S PAR DES ’X’ ,LES SECTEURS
ETTE DIFFERENTE
32 NORMAL
GET A: IF ASC (A$) = 27 THEN HOME
: NORMAL : END
UTAB 1: HTAB 1: CALL - 958
RETURN
488E
2021
ESE
6381
DE L'APPLE
grammes inédits. Une disquette est fournie avec
(utiliser le bulletin de commande, a la fin de la
CLINS D'OEIL au 6502 DE L'APPLE |
regroupe les principales routines publiées dans les premiers
numeéros de TREMPLIN MICRO, mais aussi plusieurs pro-
le livre
revue).
TREMPLIN MICRO
ASSEMBLEUR
1. Routine 4 plusieurs entrées. Si VAR prend,
selon l'entrée, les valeurs $00, $40, $80 et
$CG vous pouvez écrire :
ENTREE] LDA £$00
JMP COMMUN
ENTREE2 LDA £$40
JMP COMMUN
ENTREES LDA £$80
JMP COMMUN
ENTREES LDA £$C0
STA VAR
Vous gagnerez de la place en écrivant :
VAR EQU $810
ENTREE] LDA £$00
DFB $2C
ENTREE2 LDA £$40
DFB $2C
ENTREES LDA £$80
DFB $2C
ENTREES LDA £$CG
STA VAR
Une fois assemblé, ce code vous donnera (avec
vos entrées respectivement en $820, $823, $826
et $829) :
820: AY OO LDA £$00
822: 2C AY 40 BIT $40A9
825: 2C AY 80 BIT $80A9
828: 2C AI CO BIT $COGA9
82B: 8D 10 G8 STA $0810
820: AI GO 2C AY 40 2C AD 8G
828: 2C AY CO 8D 10 G8
INITIATION
LINSTRUCTION BIT
UTILE ET MAL CONNUE
Supposons une routine commune 4 4 parties de votre programme. Chacune de ces 4 parties
a une entrée particuliére, qui positionne une variable VAR. La routine se compose :
¢ de fonctions exécutées dans tous les cas ;
© de fonctions qui peuvent étre modifiées ou sautées pour certaines valeurs de VAR.
Il s‘agit la d'un schéma courant, que l'on trouve dans presque toutes les analyses. II
illustre deux utilisations simples et commodes de I'instruction BIT :
Aprés chaque entrée, sauf la derniére, une ou
plusieurs instructions BIT s'interposent. Elles
peuvent modifier la retenue ou le bit V du regis-
tre d'état. Mais comme vous ne testez immédia-
tement ni l'une ni l'autre, le déroulement de
votre programme n‘en sera pas perturbé.
2. Tester une variable sans modifier les va-
leurs de Ac, de X ou de Y.
Nous avons donné 4 VAR des valeurs qui prépa-
rent le test par l'instruction BIT. En effet, avec
ces valeurs, si vous écrivez BIT VAR, BMI vous
branche sur les deux valeurs négatives $80 et
$C (entrées 3 et 4). Entre elles, BVC vous bran-
che sur la valeur $80 (bit 6 clear, la valeur $80
s'écrit sur son octet avec le bit 7 41 et les autres
4 @). Parallélement, BPL vous branche sur les
deux valeurs positives $06 et $40, entre lesquel-
les BVC vous départage.
Le test complet de VAR, pour choisir par exem-
ple entre 4 sorties, s'écrira :
BIT VAR | (CCC *
BMI NEGATIF NEGATIF BVC SORTIE3
BVC SORTIE] JMP = SORTIE4
JMP SORTIE2 | .......
Recommandation importante : aprés le test
d'une variable par BIT, faites vos branchements
uniquement avec BMI, BPL, BVC et BVS. Si vous
avez des “bugs” pensez 4 vérifier que vous avez
bien tenu compte de cette recommandation.
Madeleine HODE, auteur de GRIBOUILLE
14
GUY-HACHETTE
NE
Roland JOST
sur Apple
Dans le numéro 6 de Tremplin Micro, un
lecteur demandait un programme trans-
formant le clavier de I'Apple en orgue. En
voici un pour tous les lecteurs qui n'ont
pas un ENSONIQ dans leur micro. La dis-
position des touches rappelle celle d’un
piano (cf. figure).
Le haut-parleur de l'Apple, s'il est mis sous tension a intervalles judicieux, permet de géné-
rer des notes sur plusieurs octaves :
FREQUENCE PROGRAMME :
300: 20 53 D5 AA EO OD DO O1
NOTE: | Seve? | Octavels 308: 60 AG 50 84 G7 BC 30 03
déc. | hexa. | déc. | hexa. | dec. | hexa. 310: FO EE 84 06 2C 30 CO 88
318 : DO 04 C6 O7 FO E2 CA DO
Sol 128 | $80 | 64 | $40 | 32 | $20 320: F6 A6 G6 4C 14 03 OO OO
Faf£/Solb 136 | $88 68 $44 34 $22 7
a Westen saat ae TABLE DES FREQUENCES :
Mi 152 | $98 | 76 | sac | 38 | $26 328 : 00 00 00 G0 G0 00 00 GO
- — + : | 330: 00 00 00 Go Go GG Go GG
Ref£/Mib 162 | $A2 81 $51 40 $28 338: 0G GG OO GG OO GO OO OG
= = ar 340: 00 00 00 0G GO 00 00 oO
|__Re W22i| SAG] SE | $58 | 48s | S28. 348 : 00 00 00 00 00 G0 00 GG
Do£/Reb -| 182 | $86 | 91 | $58 | 45 | $20 350: 00 36 5B 00 00 00 OG 51
Bree Bia biel 358: 00 28 19 00 66 00 72 66
Do 192 | $co 96 $60 48 $30 360: 2D 0G GO 5B 51 OO 44 3C
———S TT 368 : 36 00 56 60 CC 4C 00 00
= 204 | SCC | 102 | $66 | 51 | $93 370: 2D 66 80 98 A256 00 88
al eile | 378: 79 33 6C 00 5B 51 73 30
La£/Sib 2 8 108
aaah ee] S08, | AGE | 968 |. 4. 888 380: 2B GG 4c B6 48 39 91 CO
La 20 | se6 | 115 | $73 | 57 | $39 388: AC 40 60 28 00 44 26 OO
ai 390: 00 00 00 G0 GO GO Go oO
Sol£/Lab 242 | $F2 121 | $79 60 $3C 398 - G0 GO OG OO OO GG ad aa
: = ie 3A0: 0G 1B G0 1C 1D 1E G0 OG
Sol 255 | SFF 128 | $80 64 $40 3A8: 0G IF GO 00 20 3C 00 22
Ces valeurs se retrouvent dans la table des fréquences. | Sauvegarde par BSAVE ORGUE.0,AS300.L980
secenagenecsensansesesscesesscsssrenernnannsanesesssaeeeeseseseseeeneeseeesseneaceussscesseseneesorneEs
TREMPLIN MICRO 15
Comment utiliser ORGUE ?
Contentez-vous de taper le petit programme ci- 10
contre. Il se chargera d’appeler la routine en lan- 20
gage machine (ORGUE.@) et l'image du clavier... 30
si vous avez eu le bon godt de la composer. Vous 40
pouvez évidemment utiliser ORGUE sans le dessin
mais c'est moins facile. ORGUE.IM
figure sur la disquette Tremplin Micro (33 sec-
teurs). Notez que la frappe de RETURN décon- 60
necte immédiatement le clavier musical.
du clavier,
TEXT : HOME : PRINT CHR$ (21): HGR
POKE 49234,0: REM PAS DE TEXTE
PRINT CHRS (4)"BLOAD ORGUE.6"
PRINT CHR$ (4)"BLOAD ORGUE.IM,
A$2000"
50 CALL 768
TEXT : HOME
Extensions possibles pour programmeurs courageux :
Ce programme pourrait étre modifié ou amélioré de plusieurs fagons. Gageons que les Lectrices et
les Lecteurs de TM vont s'y essayer !
1. Changement d'octave par pression d'une 3.
touche POM ou TAB ;
2. Possibilité de changer de tempo ;
possibilité de rappel (intéressant) ;
Sauvegarde du morceau interprété avec
4. Affichage des notes en mode graphique.
@300: 26
83803: AA
6304: E@
6306: DB
@368: 48
8309: AG
@30B: 34
9360: BC
@310: FO
@312: 84
@314: 2C
6317: 88
6318: DB
831A: Cé
@31C: FG
@31E: CA
@31F: DB
@321: Aé
@323: 4C
53
@D
a1
56
a7
36
EE
a6
36
a4
E2
Fé
86
14
oS
43
ca
63
Dee ee ee te eee
SVCDVAMRWON-TVONRULYN®
NNNNNNN
NOUB ON
OWNN
-oun
Assemblage par ProCODE
* Source du programme de
*
* ORGUE
*
DUREE EQU $07
FREQU. EQU $06
*
INCHR EOU $0553
SPKR EOU $c830
*
ORG $300
*
ORGUE JSR INCHR
TAX
CPX £800
BNE 01
RTS
o1 Loy £950
STY DUREE
LDY $330,x
BEG ORGUE
STY FREQU.
02 BIT SPKR
03 DEY
04 BNE ORGUE2
DEC DUREE
BEQ ORGUE
ORGUE2 DEX
BNE 03
LOX FREOU.
UMP 02
génération de sons:
3 Entrée d’un caractére
Active le haut-parleur
saisie d’une touche
au clavier.
est-ce un <RETURN>?
non , on continue.
oui , retour au BASIC.
durée d’une note
recherche dans table
si 8 , attente touche.
active le haut-parleur
et on boucle
boucle obligée.
GUY-HACHETTE
Dos ProDOS
Marcel COTTINI
MMUTATEURS LOGIQU
Avertissement au lecteur
Le but de cet article est de lever le voile sur l'aspect souvent flou de la
programmation de la mémoire vive, principale ou auxiliaire. Tous les
ingrédients sont donnés pour que le programmeur averti puisse avoir
accés 4 ce type de programmation sans pour autant rentrer dans des
détails complexes et souvent mals acceptés par le lecteur.
Pourquoi une memoire
auxiliaire ?
UApple // dans sa version de
base intégre sur sa carte mére
des "chips" ayant une capacité de
mémoire vive de 64 Ko, disponi-
bles & l'utilisateur. Le micropro-
cesseur de la premiére généra-
tion, un 6502, ne permet d’adres-
ser que 65536 (2'*) adresses de la
mémoire, les 64 Ko se trouvant
sur la carte mére. Trés vite, le
concepteur s'est apercu que sa
“machine” manquait de place
pour implanter des programmes
devenant de plus en plus perfor-
mants. L'évolution dans le
domaine informatique s'effectue
suivant une courbe ascension-
nelle trés accentuée, par le fait
du boum technologique mis au
service du grand public. C'est
ainsi que l'on trouve des cartes
interfaces d'extension mémoire
de toutes les tailles (64 Ko, 128
Ko, 512 Ko, etc.).
Une question vient alors 4
lesprit: si le microprocesseur
6502 (ou le 65C02 de l’Apple /ic)
ne peut adresser que 64 Ko, a
quoi servent les 64 Ko de la
mémoire —auxiliaire? Une
deuxiéme question, plus perti-
nente que la précédente pose le
probléme du procédé devant étre
mis en place pour atteindre cette
mémoire auxiliaire.
Le mécanisme est en fait trés sim-
ple. Il suffit d'imaginer que les
deux mémoires sont alignées
l'une en face de l'autre et sépa-
rées par une ligne fictive et ima-
ginaire, comme deux rangées de
maisons séparées par une rue.
Pour passer d'une rangée de mai-
sons 4 celle d’en face, il suffit de
franchir la rue qui les sépare.
Pour permettre au processeur de
dialoguer soit avec la mémoire
principale, soit avec la mémoire
auxiliaire, il suffit d'actionner ce
qu'on appelle un commutateur
logique. Pour ceux qui pratiquent
Apple {1 depuis un certain
temps, ces commutateurs sont
souvent appelés des “switches”.
U'Apple II est pourvu, de par sa
conception d'origine, de toute
une série de commutateurs, dont
les différents aspects seront abor-
dés dans cet article. Ces commu-
tateurs sont implantés dans la
ROM (mémoire morte) et placés
en paralléle sur la RAM (mémoire
vive).
Un commutateur logique permet
de sélectionner ou commuter un
endroit déterminé de |'espace
mémoire (RAM — mémoire vive
— ou ROM — mémoire morte).
C'est ainsi que votre Apple Ile
avec une carte 80 colonnes éten-
due en place ou le /Ic, possédent
128 Ko de mémoire vive (RAM). La
RAM se répartit en 64 Ko de
mémoire principale et 64 Ko de
mémoire auxiliaire. Chaque zone
de cet espace peut étre program-
mée par |'utilisateur averti soit en
lecture, soit en écriture, ou
encore en lecture/écriture, par le
simple fait d'activer des commu-
tateurs logiques. Ces différents
modes sont sélectionnés en écri-
vant ou en lisant a certaines
adresses qui servent de point
d'entrée aux commutateurs
logiques.
La plupart de ces commutateurs
ont trois points d'entrées :
1. un pour les connecter ;
2. un autre pour les débrancher ;
3. un troisiéme pour lire |'état du
commutateur.
Ces commutateurs permettent de
“switcher” (commuter) la
mémoire principale ou la
mémoire auxiliaire partir d'une
interface qui pourra étre soit un
(suite page 18).
euseousnsnaennsesescessccesoansccenenunennassesesesssesesosnsnessnsseeeueesesessssescuseseeseesseseess
TREMPLIN MICRO 7
programme Basic, soit un pro-
gramme assembleur. Le fait
d'écrire (par POKE en Basic, STA
en binaire) ou de lire (par PEEK en
Basic, LDA en binaire) dans cer-
taines adresses mémoire, rensei-
gne le systéme sur ce qu'il doit
afficher @ |'écran et ot il doit lire
‘ou écrire les données qui lui sont
nécessaires : mémoire principale
et/ou mémoire auxiliaire.
Lutilisation de ces commutateurs
logiques est cependant réservée
aux programmeurs avertis. Cer-
tains logiciels du commerce ont
été développés et concus pour ce
genre de manipulation. Une mau-
vaise utilisation ou un manque de
pratique peut rendre |'exécution
d'un programme aléatoire et
méme lui faire perdre des
données.
Il existe deux types de commu-
tateurs :
1. les commutateurs d'affichage ;
2. les commutateurs affectant la
mémoire.
Ces différents modes de commu-
tation sont activés en lisant ou en
écrivant & certaines adresses de
la mémoire servant de point
d'entrée aux commutateurs logi-
ques. En temps normal, les com-
mutateurs sont gérés par les ins-
tructions et commandes 4 partir
‘dun programme implanté en
mémoire centrale ou @ partir de
la ROM résidente (AppleSoft ou
Moniteur). En effet, certaines rou-
tines internes de la mémoire
morte par exemple, utilisent ces
commutateurs pour leurs propres
besoins. Les sous-programmes
MLI de PRODOS, logés dans les 16
Ko de la mémoire haute, utilisent
ce mode de commutation pendant
l'exécution d'un programme, pour
écrire ou lire des données soit
dans la mémoire principale, soit
dans la mémoire auxiliaire.
Tableau des zones mémoire
Texte 40 colonnes 1 $0400 ou 1024 $Q7FF ou 2047
Graphique basse résolution 2 $0800 ou 2048 $08FF ov 3071
Texte 80 colonnes 1 $0400 ov 1024 $O7FF ou 2047
Graphique haute résolution 1 $2000 ou 8192 $3FFF ou 16383
- 8Ko 2 $4000 ou 16384 SSFFF ou 24575
Graphique haute résolution
- 16Ko 1 $2000 ov 8192 $3FFF ou 16383
Tableau des commutateurs d’affichage
TEXT Ecran texte $cos1 - 16303 | on
Ecran graphique $CO50 - 16304 | off
Lecture de I'état de TEXT SCOIA - 16358 lire
MIXED Texte au bas du graphique $cos3 - 16301 | on
Graphique pleine page $CO52 - 16302 | off
Lecture de MIXED $Cco1B - 16357 lire
PAGE2 Affichage de la page 2 $co5s - 16299 | on
Affichage de la page 1 $C054 - 16306 | off
Lecture de PAGE2 $COIC 16356 lire
HIRES Graphique haute résolution $CO57 - 16297 on
Graphique basse résolution $CO56 - 16298 | off
Lecture de HIRES $CO1D ~ 16255 lire
BoCcoL Texte 80 colonnes scoop - 16371 | on écrire
Texte 40 colonnes $COOC - 16372 | off écrire
Lecture de 88COL $COIF = 16353 lire
BOSTORE | Accés page 1 auxiliaire $coo1 - 16382 | on écrire
Retour mémoire principale $co00 - 16384 | off écrire
Lire l'état de 8USTORE $Co18 ~ 16360 lire
" GUY-HACHETTE
AU
Th
Tableau des commutateurs memoires
,
‘ RAMRD Lecture mémoire auxi $coo3 - 16381 on écrire
' Lecture mémoire principale $COO2 ~ 16382 off écrire
5 Lire le commutateur RAMRD $Co13 - 16365 lire
‘ RAMWRT | Ecriture en mémoire AUX $coas - 16379 on
i Ecriture en mémoire MAIN $COG4 ~ 16380 off
: Lire le commutateur RAMWRT $CO14 ~ 16354
j ALTZP Commute pile, page @ AUX $caa9 = 16373 on écrire
Commute pile, page @ MAIN $coos ~ 16374 off écrire
' Lire le commutateur ALTZP $CO16 ~ 16352 lire
r BGSTORE | Accés page 1 AUX $coo) - 16383 on écrire
1 Pour utiliser RAMRD/RAMWRT $CcoGo ~ 16384 off écrire
t Lire le commutateur 8STORE $CG18 - 16360 lire
PAGE2 Accés mémoire AUX $COs5s - 16299 on
Accés mémoire MAIN $CO54 = 16300 off
Lire le commutateur PAGE2 $CO1C - 16356 lire
HIRES Accés page 1 graphique AUX $CO57 ~ 16297 on
Pour utiliser RAMRD/RAMWRT $CO56 - 16298 off
Lire le commutateur HIRES $CO1D - 16355 lire
AUX = Mémoire auxiligire — MAIN = Mémoire principale.
Remarques
MIXED et HIRES n'ont d’effet sur la
visualisation que lorsque TEXT est
“off”. La fonction PAGE? est diffé-
rente si 8OSTORE est "on". Lors-
que 80STORE est connecté,
PAGE2 n‘a plus d'effet sur la
visualisation, il permet au proces-
seur d'adresser, soit la page 1 de
la mémoire principale (MAIN),
soit la page 1 de la mémoire auxi-
liaire (AUX),
Pour actionner PAGE2 et
80STORE, il est nécessaire de pas-
ser par un programme, car
Apple /I utilise ces commuta-
teurs logiques lorsque celui-ci est
en mode 80 colonnes.
La page 1 texte de la mémoire
principale (MAIN), a sa copie en
mémoire auxiliaire (AUX) aux
mémes adresses. Pour stocker
des informations en page 1 AUX,
il faut connecter 8GSTORE en écri-
vant @ I'adresse $CQQ1 (-16383),
puis actionner PAGE2 en écrivant
ou en lisant @ I'adresse $C055
(- 16299). Les premiers caractéres
qui apparaissent en colonnes
impaires sont en mémoire princi-
pale, les suivants, colonnes
paires, sont en mémoire auxi-
liaire aux mémes adresses.
Les commutateurs d’accés aux
pages d'écran ont priorité sur les
commutateurs RAMRD et
RAMWRT.
La ROM AppleSoft est en paral-
léle avec la Bank switched
memory. Son activation est indé-
pendante de la position des com-
mutateurs (voir le tableau des
commutateurs mémoires).
En mode graphique haute résolu-
tion 16 Ko (560 points horizon-
taux), on visualise 40 paires de 14
points par ligne de graphique, les
7 premiers de chaque paire étant
en mémoire auxiligire, les 7 sui-
vants en mémoire principale.
Ainsi les points 0 4 6, 14 4 20...
545 & 552 d'une méme ligne sont
implantés en page 1 AUX, tandis
que les points 7 4 13, 21 a 28...
553 & 560 d'une méme ligne sont
implantés en page 1 MAIN.
Pour placer des informations
directement dans la page | haute
résolution AUX, — branchez
BOSTORE et HIRES, puis PAGE2.
La haute résolution 8 Ko utilise la
visualisation normale, 4 savoir la
mémoire principale (HGR —
adresses $2000 $3FFF ou HGR2
— adresses $4000 a $5FFF).
Le texte 80 colonnes et la haute
résolution 16 Ko utilisent 4 la fois
la mémoire principale et la
mémoire auxiliaire. Ce type de
graphique désigne les cing modes
de visualisation avec |'utilisation
d'une carte couleur du type chat
mauve éve. En mode d’affichage
80 colonnes, les caractéres en
colonnes impaires sont inscrits en
mémoire principale et ceux des
colonnes paires en mémoire
auxiliaire.
Commutation de la
Bankswitch sous ProDOs
~ 16 Ko du haut de la mémoire (RAM)
Le fichier PRODOS, une fois la dis-
quette systéme bootée, se loge
dans la carte langage d'un Apple
Il, ou en haut de la mémoire vive
d'un Apple Ile ou Iic. Il occupe
alors les 16 Ko du haut de la
mémoire vive. Comme les adres-
ses $DQG0-SFFFF ne comptabili-
sent que 12 Ko, on pourrait se
(suite page 20).
aetna ladle allele lela
E TREMPLIN MICRO Ww
demander ot se logent les 4 Ko
manquants. C'est la bank 2 qui est
utilisée conjointement avec la
bank 1 par simple commutation
alternée des deux banks. L'action
des commutateurs logiques per- |
met, entre autres, deffectuer soit |
une lecture, soit une écriture, soit |
encore une lecture et écriture de
l'espace mémoire du haut de la
RAM.
ROM: $D0G0-SFFFF *
Bank 1 : $D000-$DFFF
Bank 2 : $D000-$DFFF
* (AppleSoft + Moniteur)
Situation typique de la
mémoire auxiliaire (64 Ko)
RAM: $DQ00-$FFFF *
Bank 1 : $D000-$DFFF*
Bank 2 : $DG00-$DFFF*
* (Disponible 4 I'utilisateur)
Activation des
commutateurs
$D000-SDFFF Bank | avec 4 Ko
$D0G0-SDFFF Bank 2 avec 4 Ko
$EGQO-SFFFF Bank | et 2avec8 Ko
Modes de commutation de la Memory Bank
Commutateurs | Bank! | Bank2 | ROM
2 LDA $cosB R/W
2x LDA $co83 R/W
2x LDA $ca89 w R
2 x LDA $c@81 w R
Légende : R/W = Lecture/écriture = Lecture W = Ecriture
Adresses de controle :
$C080 (- 16256) Sélectionne la RAM en lecture et commute la Bank 2.
Protége la RAM contre |’écriture.
$C081 (- 16255) Sélectionne la ROM en lecture et commute Ia Bank 2.
Autorise l'écriture sur la RAM si la commutation est
effectuée deux fois (Ex.: LDA $C081, LDA $C81).
$C082 (- 16254) Sélectionne la ROM en lecture et commute la Bank 2.
Protege la RAM contre I'écriture.
$C083 (- 16253) Sélectionne la RAM en lecture et commute la Bank 2.
Autorise |'écriture sur la RAM si la commutation est
effectuée deux fois.
$C088 (- 16248) Sélectionne la RAM en lecture et commute la Bank 1.
Protége la RAM contre l'écriture.
$C089 (- 16247) Sélectionne la ROM en lecture et commute la Bank 1.
Autorise |'écriture sur la RAM si la commutation est
effectuée deux fois.
$COBA (- 16246) Sélectionne la ROM en lecture et commute la Bank 1.
Protége contre l'écriture sur la RAM.
$CO8B (- 16245) Sélectionne la RAM en lecture et commute la Bank 1.
Autorise I'écriture sur la RAM si la commutation est
effectuée deux fois.
TRUCS et ASTUCES
PROGRAMME : |< Boite aux idées (Tremplin Micro n°8)
QUESTION : Comment imprimer les lignes dans lesquelles se trouve le mot cherche:?.
REPONSE : En gjoutant ces 3 lignes au programme. Pour obtenir Iimpression, taper
CTRL-I au lieu de l’option 2.
156 IM = @: IF R$ = CHR$ (9) THEN R$ = “2":IM = 1
541 IF IM THEN PRINT D$”PRE1”: PRINT : PRINT CHR$ (9)"96N":
PRINT CHR$ (27)"E"; CHR$ (27)"L010": PRINT
IF IM THEN PRINT : PRINT D$”PREG”: PRINT D$”PRE3": PRINT :
GOTO 125
Attention ! Supprimer deux lignes de REM (190 et 200) pour que la longueur du programme ne dépasse pas 5500.
546
saeneseesesesensessecussezerseennaannnsseeeesesoReeenesseseeEeaEAsaeeeRAneseeeEEecesEeeEoesEseEEEEEES =— awe
ad GUY-HACHETTE
TRE
Marcel COTTINI
LE 65€816
Nous publions, dans ce numéro, la suite et la fin de notre étude sur le
65C816, microprocesseur qui équipe |’APPLE //GS.
LES REGISTRES DU
MICROPROCESSEUR 65C816
Différentes fonctions du 65C816 | Unite decontrole temps
| (Timing Control Unit — TCU)
Généralités Le circuit horloge maintient en ligne chaque instruc-
Le 65C816 (ou 65C802) est un microprocesseur aux tion et lui attribue un certain temps évalué en cycles
possibilités trés variées. C'est ainsi qu'il permet la machine. C'est ainsi que linstruction RTS (retour de
gestion de regisires 16 bits tout en ayant la capacité Sous-programme) nécessite un temps de 6 cycles
diadresser 16 Mo de mémoire vive (compteur ordi- pour arriver & terme. Pour chaque instruction, le
nal sur 24 bits). Une configuration matérielle inté- facteur temps (TCU) est nul au départ, le code
grant ce type de processeur permet une program- machine est recherché puis exécuté suivant un cer-
mation plus rapide, tout en gardant l'accés aux pro- tain nombre de cycles temps. Un ou plusieurs cycles
grammes existants pour le 6502. La sélection entre machine sont requis pour chaque instruction
l'un ou l'autre mode (émulation ou native) s'effectue machine. Chaque transfert de données est lie d une
par l'adressage du bit E du registre d'état. Cette part au décodage de l'instruction, puis 4 son exécu-
opération est réalisée par |'instruction XCE, tion via un registre suivant une notion de temps
échange du bit de retenue (C) et du bit d'émulation (cycle machine).
(E). C'est en somme un excellent produit pour la
gamme des 16 bits grand public. Le bus de données Unité arithmétique et logique
est de 8 bits de large, tandis que les registres inter- (Arithmetic and Logic Unit — ALU)
nes sont de 16 bits. Toutes les opérations arithmétiques et logiques sont
traitées par l'intermédiaire d'un module interne du
Description des fonctions du 65816 microprocesseur, d'une taille de 16 bits (ALU — 16
Instructions relatives aux registres et décodage. Les bits). Lors d’opérations additionnelles de données,
instructions machine, suivant le mode d’adressage le module ALU calcule l'adresse effective pour les
requis, sont traitées en codes machine, avant d'étre adressages des modes relatifs et indexés. Le résul-
véhiculées vers l'entrée du microprocesseur. Plu- tat de cette opération sur ce type de données est
sieurs instructions sont reliées entre elles et rangé soit G une adresse mémoire spécitiée au
envoyées sur le bus de données par I'intermédiaire préalable, soit dans un registre interne du proces-
du registre concerné. Cette instruction est alors seur. La retenue, Carry Flag, sera positionnée sui-
décodée suivant une référence temps (horloge du vant le résultat de l'opération effectuée par le
processeur) et une référence de procédure (circuits module ALU. Elle pourra étre soit négative ou posi-
d'interruption du processeur). tive, soit déborder. (suite page 22)
TREMPLIN MICRO 21
Registres internes du 65C816
Registres internes (Internal Registers)
Ils se différencient du 6562 par leur nombre, leur
taille et leur organisation. On peut scinder la struc-
ture des registres en trois parties, chacune ayant
une taille de 8 bits de large. La taille équivalente de
chaque registre sera celle déterminée par le mode
actuel (native : E = 0, ou émulation : E = 1).
Le 65C816 comporte un registre supplémentaire par
rapport au 6502 (Direct Register). Il est du format 16
bits. Deux registres annexes, Program Bank Regis-
ter et Data Bank Register, autorisent respective-
ment une extension du registre compteur ordinal
(PC) et des registres d'index X et Y. Program Bank
Register, associé au compteur ordinal (PC) permet
alors de traiter une adresse mémoire sur 24 bits
($000000 4 $FFFFFF). Data Bank Register, associé
aux registres 16 bits X ou Y, permet de pointer une
zone mémoire sur 24 bits ($0000G0 4 $FFFFFF).
Registres de programmation
du 65€816 (ou 65802)
8 bits 8 bits 8 bits
Data Bonk Reg.
DBR
Registre X High ‘i Registre X Low
XH i | XL
>=
Registre Y High
tei , Registre Y Low
YH i YL
00 Pointour de pile i Pointeur de pile
SH | SL
Accumulate High I Accumulateur Low
AH (8) I ALIA)
Program Bonk Reg. || Compteur ordinal
RE Compteur ordinal
PRR | PCH PCL
00 Registre Direct di Registre Direct
DH | DL
(P) Registre d'état
Détail du registre d'état P du microprocesseur :
Status Register (P) 1/8 re |
x
[n[v[m[x[o]i]zfe
22
1 Toujours 41 siE = 1,
B Break : Remise 4G de la pile aprés interruption si
E=1.
E Mode émulation : @ = Native ou 1 = Emulation.
N_ Négative
Bit du signe = I sirésultat est négatif.
V_ Overflow = 1 si le résultat est celui
Débordement attendy.
M_ Mémory/Accumulator Select = 1 si commuté en mode 8
bits.
Sélection de la mémoire oude A = 0 si commuté en mode
16 bits.
X Index Reg. Select = 1sicommuté en 8 bits.
Sélection du registe dindex = 0 si commuté en 16 bits.
D_ Décimal Mode = 1 si commuté en mode
Mode décimal décimal.
1 IRQ Disable
Inhibition des interruptions = | si interruption inhibée,
Z léro
Résultat nul = Isile résultat est nul.
C Carry = 1 si le résultat est celui
Retenue attendu.
Accumulateur
(Accumulator —C(A + B))
Uaccumulateur est un registre & usage général uti-
lisé pour effectuer des opérations arithmétiques ou
logiques : charger (LDA), ou sauvegarder (STA) une
donnée ou comme opérante (ROL, ROR, etc.).
Mode native (E = @). Lorsque le bit M du registre
d'état, sélection de la mémoire (Memory Select) est
nul (M = Q), l'accumulateur travaille sur des don-
nées de 16 bits de large.
Mode émulation (E = 1). Lorsque le bit M du regis-
tre d'état a comme valeur un (M = 1), l'accumula-
teur travaille sur des données de 8 bits de large.
Dans ce dernier cas, la partie poids fort de |'accumula-
teur (Acc, High — B) sera sauvegardée momentané-
ment en liaison avec une instruction interne du proces-
seur (SWAP Accumulator — instruction SWA).
En mode 8 bits (émulation — A) I’accumulateur est
dénommé registre A. || est alors compatible avec le
mode du 6562. En mode 16 bits (native — C), c'est
sous registre C qu'on le retrouve, avec comme octet
de poids faible (A — Acc. Low) et comme octet de
poids fort (B — Acc. High).
Registre page de données
(Data Bank Register — DBR)
Cest un registre annexe d'une taille de 8 bits, utilisé
en association soit avec le registre d'index X (16
bits), soit avec le registre d'index Y (16 bits), pour
GUY-HACHETTE
oon
TRE
1si
elyi
elui
uti-
ou
une
itre
est
on-
gis-
dla-
ula-
iné-
res:
est
cle
‘est
ctet
de
lisé
(16
‘our
ome
TTE
adresser par multiplexage une page mémoire sur 24
bits. Dans ce cas, DBR contient l'octet de poids fort
(8 bits) et les registres X ou Y les 16 bits les plus a
droite (YH + YL pour le registre Y et XH + XL pour
le registre X).
U'adressage des 16 Mo de la mémoire vive (RAM)
disponible se fait d'une maniére similaire au micro-
processeur 8086, c'est-d-dire par fragmentation de
la RAM en zones de données appelées "Bank" ou
pages sur le 65C816. Chaque page (Bank) est for-
mée d'un bloc de 64 Ko dont I'adresse partielle,
codée sur 8 bits, se trouve dans le registre 8 bits
Data Bank. Cette adresse partielle représente le
poids fort de l'adresse complete sur 24 bits.
En mode native (E = @), le registre de page de don-
nées (DB) de 8 bits de large, mémorise l'adresse par
défaut de la page (bank address) pour le transfert
de la zone mémoire. L'adressage sur 24 bits se com-
pose alors des 16 bits de l'adresse effective (index X
ou Y) et des 8 bits du registre page de données
(DBR). Le contenu du registre DB est multiplexé avec
la valeur de la donnée se trouvant 4 une adresse
mémoire et a donc la possibilité de gérer simultané-
ment une donnée et |'adresse de ladite donnée.
Cette provesse de Ia technique est réalisée durant
la premiére phase du cycle de transfert de la don-
née vers la mémoire centrale. Le registre page de
données (Data Bank Register — DBR) est initialisé &
la valeur zéro pendant la phase du Reset.
Registre adressage direct
(Direct Register — D)
Le registre adressage direct 16 bits est pourvu d'une
structure lui permettant d'adresser toutes les ins-
tructions du processeur, en mode adressage direct,
Uadressage effectif de la page zéro est réalisé en
ajoutant le deuxiéme octet de |'instruction au regis-
tre direct.
Le registre direct est adressable soit en mode 8 bits
(émulation — DL), soit en mode 16 bits (native — D).
Cest un faux 24 bits dont les 8 bits les plus & gauche
sont toujours positionnés a zéro. Les 16 bits les plus
4 droite forment deux groupes. Les 8 bits les plus a
gauche font partie de l'octet de poids fort (DH), les 8
bits les plus droite représentant |'octet de poids
faible (DL). Ce registre autorise un accés plus rapide
@ la mémoire. C'est en somme une extension de la
page zéro du 6502. La page zéro peut étre placée ot
l'on veut avec les microprocesseurs 65C816 et
65C802. Le registre direct (D) est initialisé 4 la
valeur zéro pendant la phase du Reset.
Registres d'index X et Y
(Index — X and Y)
Le microprocesseur 65C816 intégre deux registres
d'index (X et Y) dont le réle est double : une utilisa-
tion générale et une utilisation comme index d'une
TREMPLIN MICRO
Sune euennemennosss senses eee e ees eeses ese Eas ee eeeEES ose eose sees EeE Pee soe eoeeeeseeneesansnaseecesEs
adresse effective de la mémoire par exemple. Dans
ce dernier cas plusieurs modes d'adressages
indexés sont offerts au programmeur. Les registres
d'index X et Y sont utilisés lors de l'exécution d'une
instruction relative & un adressage indexé. Le
microprocesseur recherche alors le code de |'ins-
truction et |'adresse de base, puis modifie l’adresse
initiale en lui additionnant la valeur de l'index du
registre concerné (X ou Y).
Uadressage indirect indexé comporte deux modes :
l'adressage préindexé et |'adressage postindexé. Ils
sont sélectionnés dans le mode native avec le bit E
du registre d'état égal 4 zéro. Pour effectuer des
opérations sur des adresses indexées sur 16 bits de
large, il est nécessaire de positioner le bit X du
tegistre d'état (Index Register Select) a la valeur
zéro (X = @). Dans le cas d'un calcul sur une adresse
partielle de 8 bits de large, le bit X du registre d'état
devra avoir comme valeur un (X = 1).
Le registre d'index X (X — Index Register X) est
adressable soit en mode 8 bits (émulation — XL),
soit en mode 16 bits (native — X). En mode 16 bits, il
se compose d'un octet de poids fort (XH) et d'un
octet de poids faible (XL). Le registre d'index Y (Y —
Index Register Y) est adressable soit en mode 8 bits
(émulation — YL), soit en mode 16 bits (native). II se
compose d'un octet de poids fort (YH) et d'un octet
de poids faible (YL).
Registre d'état du processeur
(Processor Status — P)
Le registre d'état du microprocesseur intégre 8 bits
destinés 4 renseigner le systéme (et le program-
meur) sur diverses situations (Status) lors des opé-
rations en cours. Ces différents bits sont des dra-
peaux (Flags) de situation et de modes (status flag
and mode flag).
La retenue (C), le bit du signe (N), le bit de déborde-
ment (V) et le bit du résultat nul (Z) sont des dra-
peaux (flags) de situation servant a effectuer un
report sur le module de I'unité arithmétique et logi-
que (ALU) du processeur. Les drapeaux de situation
effectuent un test de branchement pour la poursuite
éventuelle de l'instruction en cours d’exécution (si
la condition posée est remplie). Le bit du mode déci-
mal (D), le bit d'inhibition de l'interruption (I), le bit
de sélection de la mémoire/accumulateur (M) et le
bit de sélection du registre d'index (X) sont des dra-
peaux autorisant une sélection d'un mode déter-
miné. Ces bits flags sont utilisés pour annoncer au
microprocesseur un changement d'opération dans
\'exécution d'un programme en cours.
La sélection du mode émulation (E) et du Break (B)
est accessible en positionnant certains bits du regis-
tre d'état du processeur. Ce sont en somme des bits
fictifs dont |'état est conditionné par la valeur d'un
ou de plusieurs bits réels du registre d'état.
(suite page 24)
23
Le processeur gére et modifie ces bits internes (E et
B). Le mode émulation/native est sélectionné en
permutant les bits de la retenue (C) et de |'émula-
tion (E). Cette opération est effectuée grace @ une
instruction machine (XCE) propre au microproces-
seur (voir & cet effet la table de comparaison des
différents mode (native : E = 0 ou émulation : E =
1)). Les bits M et X sont toujours positionnés 4 la
valeur un (M/X = 1) en mode émulation (8 bits).
Lorsqu’une interruption survient pendant le mode
émulation, le bit B (Break flag) est sauvegardé sur
la pile comme valeur du bit 4 (X) du registre d'état
du microprocesseur.
Registre page programme
(Program Bank Register — PBR)
Le registre page programme (Program Bank) est de
8 bits de large. I! contient I'adresse partielle (High
Byte) lors de la recherche de chaque instruction au
niveau d'un programme. Le registre PB mémorise
Vadresse de E ligne oW I'instruction du programme
en cours d'exécution a été recherchée.
Uadresse de 24 bits de large consiste en une asso-
ciation de l'adresse 16 bits du compteur ordinal (ins-
truction en cours d’exécution) avec l'adresse de
poids fort sur 8 bits contenue dans le registre page
proamme (PBR). Le compteur ordinal (PC) contient
jes 16 bits les plus 4 droite de l'adresse de I'instruc-
tion en cours d'exécution. Le contenu du registre PB
est multiplexé avec les données du programme et a
donc la possibilité de gérer simultanément une ins-
truction et l'adresse de la ligne ou I'instruction en
cours d'exécution a été recherchée. Cette provesse
de la technique est réalisée durant la premiére
phase du cycle de lecture de la mémoire. C'est le
compteur ordinal (PC) qui gére les instructions pas-
4-pas (cycles machine) pendant la lecture des don-
nées du programme implanté en mémoire centrale.
Le registre page de données (PB) est initialisé 4 la
valeur zéro pendant la phase du Reset.
Comme pour le registre page de données (DB),
l'adressage des 16 Mo de la mémoire vive (RAM)
disponible se fait par fragmentation. C'est ainsi
qu'un programme implanté en mémoire centrale,
est vu par le processeur comme des pages (Bank).
Ce sont des blocs de 64 Ko dont I'adresse partielle (8
bits les plus @ gauche) est codée sur 8 bits. Cette
adresse partielle représente le poids fort de
l'adresse compléte. Le registre PB est complémen-
taire au registre PC. Associé avec le registre PC
comme octet de poids fort d'une adresse sur 24 bits,
ils forment ensemble le pointeur de la ligne de I'ins-
truction d'un programme en cours d’éxécution.
Compteur ordinal
(Program Counter — P¢)
Le registre du compteur ordinal gére une adresse
sur 16 bits de large au fur et 4 mesure de l'exécution
des instructions du microprocesseur. II renseigne ce
dernier, séquence par séquence, de l'adresse
actuelle durant toute la phase d'exécution d'une ins-
truction machine. Le registre est incrémenté au fur
et & mesure lors de chaque cycle machine (Timing)
de l'instruction en cours ou de l'opérante recher-
chée au niveau de la mémoire (programme).
Le compteur ordinal (PC) est adressable soit en
mode 8 bits (émulation — PCL), soit en mode 16 bits
(native — PC). Il se compose d'un octet de poids fort
(PCH) et d'un octet de poids faible (PCL). Associé au
registre PB, il permet de pointer une adresse sur 24
bits (adresses $000000 4 $FFFFFF) a l'intérieur d’un
programme. Dans ce cas, l'association des deux
registres forme une adresse sur trois octets.
En mode native (E = @), le pointeur de pile est un
registre de 16 bits de large et pointe la prochaine
adresse disponible sauvegardée dons l'espace
mémoire de la pile. A chaque fois qu'on empile, S
est décrémenté et, a tout moment, $ pointe vers le
prochain emplacement libre de la pile.
Uopération empiler (Push) permet de placer un élé-
ment au sommet de la pile. L'opération dépiler
(Pull) consiste en un transfert du contenu du som-
met de la pile vers le registre déclaré.
Le pointeur de pile a deux fonctions essentielles :
d'une part gérer des pointeurs pour mémoriser des
adresses de retour d'un sous-programme (RTS ou
GOSUB) ; d'autre part pointer vers une adresse
aprés une interruption. Le pointeur de pile pointe
simplement vers une adresse de retour de sous-
programme ou suivant le niveau d’interruption ren-
contré. Le registre pointeur de pile (S) est adressa-
ble soit en mode 8 bits (émulation — SL), soit en
mode 16 bits (native — $). C'est un faux 24 bits dont
les 8 bits les plus & gauche sont toujours 4 zéro. Les
16 bits les plus 4 droite forment deux groupes de 8
bits. Les 8 bits les plus 4 gauche font partie de l'octet
de poids fort (SH), les 8 bits les plus 4 droite repré-
sentent l'octet de poids faible (SL).
Registre pointeur de pile
en mode native (E = 0)
sits
FIE/DIC/BIA/9{/8/7/6/5/4/3/2) 1/0
*
x
=
x
x
*
x
*
x
ix
S = Stack Pointer Les bits marqués par des x
SH = Stack High Byte — sont disponibles comme bits
SL = Stack Low Byte du pointeur de pile.
GUY-HACHETTE
so ceeeconnansnasuusssenaeeseeE Esse EeEeRoeseseascEssseeesEenC NEE TseRseseseReseEesNSEeReESaNeeNeEES- ons | EET
En mode émulation (E = 1), l'octet de poids fort du pointeur de pile (SH) est toujours égal 4 1, ce qui le met au
méme niveau que le processeur 6502 : 8 bits disponibles (bits 0-7) avec le bit 8 toujours a1.
Registre pointeur de pile Bits
en mode émulation (E = 1) =
$= Stack Pointer SH = Stock High Byte SL = Stack Low Byte SH st
Les bits marqués par des x sont disponibles comme bits Flelpol|c|Blal9 716]514]3] 211 | 0
du pointeur de pile, le bit 8 étant alors a | tandis que viviele |
C
les bits F 49 sont nuls. ue
CODES OPERATIONS DU
MICROPROCESSEUR 65C816
Symboles et différents modes d’adressage
£ adressage immédiat
(a) adressage absolu indirect
(a,x) adressage absolu indexé indirect
(d) adressage direct indirect
(d),y adressage direct indirect indexé avec Y
(d.x) adressage direct indexé indirect
(rs),y adressage indirect indexé relativement 4 la pile
a adressage absolu
a,x adressage absolu indexé avec X
ay adressage absolu indexé avec Y
A opération effectuée sur l'accumulateur
al adressage absolu long
al,x adressage absolu indexé long
d adressage direct
dix adressage direct indexé avec X
dy adressage direct indexé avec Y
i adressage implicite
r adressage relatif au compteur ordinal
ns adressage relatif la pile
rl adressage long relatif au compteur ordinal
s adressage de la pile — empilement/dépilement
xyo adressage "block bank” source vers “bank” de destination
<d> adressage long direct indirect
<d>y adressage long direct indirect indexé avec Y
GG BRK implicite:i G6 ASL direct : d ou page zéro : 00
G1 ORA direct indexé avec le registre X : d,x 07 ORA direct indirect long :<d>
G2 COP implicite:i G8 PHP la pile (empilement/dépilement) : s
G3 ORA relatifalapile: r,s 09 ORA _ adressage immédiat : £
G4 TSB direct : dou page zéro : 00 QA ASL — accumulateur : A
G5 ORA direct : dou page zéro : 60 OB PHD la pile (empilement/dépilement) : s
seenanneeenecmmsneseeueaneosersnnEEseReeeseeoEeZsooeeeeaDoeseeensEnEsEEsAanseUsnauoEcenEsEEEETECeEES
TREMPLIN MICRO 25
oc TSB
GD ORA
GE ASL
10 «~BPL
11 ORA
12 ORA
13° ORA
14 TRB
15 ORA
16 ASL
17. ORA
18 CLC
19° ORA
1A INC
1B = =TCS
1C TRB
1D ORA
1E ASL
1F ORA
26 «JSR
21 AND
22 0 ISL
23> AND
24 BIT
25 AND
26 ROL
27 AND
28 =PLP
29 AND
2A ROL
2B «PLD
2C BIT
2D AND
2E ROL
2F AND
36 «BMI
31 AND
32 AND
33. AND
34 BIT
35 AND
36 = ROL
37° AND
38 = SEC
39 AND
3A DEA
3B TSC
3C_ OBIT
3D AND
3— ROL
3F AND
40-—sORTI
41 EOR
42. WDC
43 EOR
absolu : a
absolu : a
absolu : a
relatif au compteur ordinal : r
direct indirect indexé : (d),y
direct indirect : (d)
indirect indexé relativement la pile : (r,s),
direct : d
direct indexé avec X : d,x
direct indexé avec X : d,x
direct indirect long indexé :<d>y
implicite : |
absolu indexé avec Y: a,y
accumulateur : A
implicite : i
absolu : a
absolu indexé avec le registre X : a,x
absolu indexé avec le registre X : a,x
absolu long indexé avec X : al,x
absolu : a
direct indexé indirect : (d,x)
absolu long : al
relatif dla pile : r,s
direct : d, ou page zéro : 00
direct : d, ou page zéro : 00
direct : d, ou page zéro : 00
direct indirect long :<d>
la pile: s
immédiat : £
accumulateur : A
lapile:s
absolu : a
absolu : a
absolu : a
absolu long : al
relatif au compteur ordinal : r
direct indirect indexé : (d),y
direct indirect : (d)
indirect indexé relativement 4 la pile : (r.s),y
direct indexé avec le registre X : d,x
direct indexé avec le registre X : d,x
direct indexé avec le registre X : d,x
direct indirect long indexé :<d>y
implicite : i
absolu indexé avec le registre Y : a,y
accumulateur : A
implicite : i
absolu indexé avec le registre X : a,x
absolu indexé avec le registre X : a,x
absolu indexé avec le registre X : a,x
absolu long indexé avec le registre X : al,x
lapile:s
direct indexé indirect : (d,x)
implicite : i (utilisation future avec le 65€832)
relatif 4 la pile: r,s
MVP
EOR
LSR
EOR
PHA
EOR
LSR
PHK
JMP
EOR
LSR
EOR
BVC
EOR
EOR
EOR
MVN
EOR
LSR
EOR
CLI
EOR
PHY
TCD
JMP.
EOR
LSR
EOR
RTS
ADC
PER
ADC
STZ
ADC
ROR
ADC
PLA
ADC
ROR
RTL
JMP
ADC
ROR
ADC
BVS
ADC
ADC
ADC
STZ
ADC
ROR
ADC
SEI
block bank source vers banck de
desintation (Move) : xya
direct : d, ou page zéro : 06
direct : d, ou page zéro : 00
direct indirect long <d >
lapile:s
immeédiat : £
accumulateur : A
lapile:s
absolu : a
absolu : a
absolu : a
absolu long : al
relatif au compteur ordinal : r
direct indirect indexé Y : (d),y
direct indirect long :<d>
indirect indexé relativement 4 la pile : (r,s),y
block bank source vers bank des-
tination (Move) : xya
direct indexé avec X : d,x
direct indexé avec X : d,x
direct indirect long indexé : <d>,y
implicite : i
absolu indexé Y : a,y
lapile: s
implicite : i
absolu long : al
absolu indexé avec X : a,x
absolu indexé avec X : a,x
absolu long indexé avec X : al,x
la pile: s
direct indexé indirect : (d,x)
lapile: s
relatif ala pile: r,s
direct : d, ou page zéro : 00
direct : d, ou page zéro : 00
direct : d, ou page zéro : 00
direct : indirect long :<d >
lapile:s
immédiat : £
accumulateur : A
la pile: s
absolu indirect : (a)
absolu : a
absolu : a
absolu long : al
relatif au compteur ordinal : r
direct indirect indexé : (d),y
direct : d
indirect indexé relativement a la pile : (r,s),y
direct indexé avec X : d,x
direct indexé avec X : d,x
lexé avec X : d,x
direct indirect long indexé :<d>y
implicite : i
aan
Guy-HACHETTE = TRE
seuaneoeneesseora se ssosnossesesoeeses sess suns sassnescesessesssEaesEsoEsssSRaNsaANOANOnEeDEDeEeSSsoeeaeS
79 ADC absolu indexé avec Y : a,y BG BCS ___relatif au compteur ordinal : r
7A PLY lapile:s Bl LDA direct indirect indexé avec Y : (d),y
7B TDC _ implicite : i B2 LDA | direct indirect : (d)
7C JMP absolu indexé indirect : (a,x) B3 LDA __ indirect indexé relotivement @ la pile : (r.s),y
7D ADC absolu indexé avec X : a,x B4 LDY — direct indexé avec X : d,x
JE ROR absolu indexé avec X : a,x B5 LDA direct indexé avec X : d,x
7F ADC absolu long indexé avec X : al,x B6 LDX direct indexé avec Y: d,y
806 BRA relatif au compteur ordinal : r B7 LDA direct indirect long indexé avec Y :<d>y
81 STA direct indexé indirect : (d,x) BB CLV __implicite : i
82 BRL relatif au compteur ordinal, long : rl B9 LDA absolu indexé avec Y: a,y
83 STA relatifalapile: r,s BA TSX _ implicite :i
84 STY direct: d, ou page zéro : 00 BB TYX__ implicite :i
85 STA direct: d, ou page zéro : 00 BC LDY — absolu indexé avec X : a,x
86 STX direct: d, ov page zéro : 00 BD LDA _ absolu indexé avec X : a,x
87 STA _ direct indirect long :<d> BE LDX absolu indexé avec Y:a,y
88 DEY _ implicite : i BF LDA absolu long indexé avec X : al,x
89 BIT —immédiat : £ CQ CPY — immédiat : £
8A TXA _ implicite : i Cl CMP __ direct indexé indirect : (d,x)
8B PHB lapile:s C2. REP —immédiat : £
8C STY absolu:a C3. CMP — relatifalapile: r,s
8D STA absolu:a C4 CPY — direct: d, ou page zéro : 00
8E STX absolu:a C5 CMP direct: d, ou page zéro : 00
8F STA absolu long: al C6 DEC — direct: d, ou page zéro : 00
99 BCC relatif au compteur ordinal : r C7 CMP direct indirect long:<d>
91 STA _— direct indirect indexé avec Y : (d),y C8 = INY __ implicite : i
92 STA direct indirect : (d) C9 CMP _— immédiat: £
93 STA _ indirect indexé relativement a la pile : (r,s),y CA DEX _ implicite : i
94 STY — direct indexé avec X : d,x CB WAI __ implicite : i
95 STA direct indexé avec X : d,x CC CPY — absolu : a
96 STX direct indexé avec Y:d,y CD CMP absolu:a
97 STA direct indirect indexé avec Y : (d),y CE DEC absolu:a
98 TYA _ implicite : i CF CMP absolu long: al
99 STA absolu indexé avec Y : a,y DG BNE _ relatif au compteur ordinal : r
9A XS __ implicite:i D1 CMP __ direct indirect indexé avec Y : (d),y
9B TXY — implicite:i D2 CMP _ direct indirect : (d)
9C STZ absolu:a D3 CMP __ indirect indexé relativement 4 lo pile : (r.s),y
9D STA _ absolu indexé avec X : a,x D4 PEI lapile: s
9— STZ absolu indexé avec X : a,x D5 CMP direct indexé avec X : d,x
9F STA absolu long indexé avec X : al,x D6 DEC direct indexé avec X : d,x
AQ LDY — immédiat : £ D7 CMP direct indirect long indexé avec Y <d>y
Al LDA | direct indexé indriect : (d,x) D8 CLD __ implicite:i
A2 LDX __ immédiat: £ D9 CMP absolu indexé avec Y: a,y
A3 LDA relatifalapile: r,s DA PHX lapile:s
A4 LDY — direct: d, ou page zéro : 00 DB STP ___ implicite : i
AS LDA direct: d, ou page zéro : 00 DC JML — absolu indirect : (a)
A6é LDX direct: d, ou page zéro : 00 DD CMP _ absolu indexé avec X : a,x
A7 LDA. direct indirect long :<d> DE DEC _ absolu indexé avec X : a,x
A8 TAY _ implicite: i DF CMP absolu long indexé avec X : al,x
AQ LDA _ immédiat : £ —G CPX — immédiat: £
AA TAX _ implicite : i 61 SEC direct indexé indirect : (d,x)
AB PLB _iapile:s —2 SEP immédiat : £
AC LDY absolu:a —3 SBC __ relatifalapile:r,s
AD LDA absolu: a —4 CPX direct: d, ou page zéro : 00
AE LDX absolu:a —5 SEC direct: d, ou page zéro : 00
AF LDA _ absolu long: al —6 INC direct: d, ou page zéro : 60
TREMPLIN MICRO 27
———.
E7 SBC direct indirect long :<d> F4 PEA lapile:s |
E8 INX__ implicite : i F5 SEC direct indexé avec X : (d),x
E9 SEC _ immédiat : £ F6 INC direct indexé avec X : (d),x
EA NOP implicite : i F7 SBC direct indirect long indexé avec Y :<d>y
EB XBA__implicite: i F8 SED _ implicite:i
EC CPX absolu:a F9 SEC _ absolu indexé avec Y : a,y
ED SEC absolu:a FA PLX lapile:s
EE INC absolu:a FB XCE ___implicite : i
EF SBC _ absolu long: al FC JSR absolu indexé indirect : (a,x)
FG BEQ relatif au compteur ordinal ; r FD SBC __ absolu indexé avec X : a,x
Fl SEC _— direct indirect indexé avec Y : (d),y FE INC absolu indexé avec X : a,x
F2 SBC direct indirect : (d) FF SBC _ absolu long indexé avec X :
F3 SBC __ indirect indexé relativement a la pile : (r,s),y
ADRESSAGE SOMMAIRE
DU 65C816
Modes c’adressage 6502 65cC816
Cycles Bytes Cycles Bytes
1. Immédiat 2 2 2(3) 2 (3)
2. Absolu 4 (5) 3 4(3 +5) 3
3. | Absolu long vs _ 5 (3) 4
4. Direct 3 (5) 2 3(3+4+5) 2
5. Accumulateur 2 1 2 1 C
6. Implicite 2 1 2 1 -
7. Direct indirect indexé 5 (1) 2 5(1+344) 2
8. Direct indirect indexé long a se 6(3 + 4) 2
9. Direct indexé indirect 6 2 6(3 + 4) 2
19.| Direct indexé avec X 4(5) 2 4(3+4+5) 2
MW. Direct indexé avec Y 4 2 4(3 +4) 2
12. Absolu indexé avec X 4(1 +5) 3 4(1+34+5) 3
13. Absolu long indexé = ae 5 (3) 4
4, Absolu indexé avec Y 4(1) 3 4(1 +3) 3
1s. Relatif 2(1 + 2) 2 2 (2) 2
16.| Relatif long aes = 3(2) 3
17. Absolu indirect (JUMP) 5 3 5 3
18. Direct indirect = = 5(3 + 4) 2
19, Direct indirect long = ee 6(3 + 4) 2
20. Absolu indexé indirect i -_ 6 3
21. Pile 3-7 1-3 38 1-4
22. Relatif 4 la pile = = 4 (3) 2
23. Indirect indexé relativement 4 la pile —_ -—; 7 (3) 2
24.| Déplacement d'une page de données (X,Y,C)
— source/destination/longueur faa = 7 3
Légende des indices du tableau :
1 Ajouter 1 cycle si une limite de page mémoire est dépassée (bytes ou expression désignant une adresse).
2 Ajouter | cycle si le branchement est réalisé.
3 Ajouter 1 cycle et 1 byte pour l’adressage immédiat. Régle valable pour des opérations réalisées sur 16
bits avec M = G et X = G (Met X = bits du registre d'état).
4 Ajouter | cycle si le résultat est différent de zéro : Registre direct, octet de faible poids (DL) différent de zéro.
5 Ajouter 2 cycles si le bit M = 1 et 3 cycles si le bit M = @ (M = bit du registre d'état). Régle valable pour les
routines utilisant les fonctions Read/Modify/Write. .
oe
28 GUY-HACHETTE TR
UTILITAIRE
| Frooos | sours |
HORLOGE
Francois GALLET
Voici un utilitaire dont une premiére approche avait été réalisée par
Claude AUBRY dans le numéro 5 de Tremplin Micro et qui, j‘en suis cer-
tain, rendra un service inestimable aux heureux possesseurs de |'Apple
lic ou de |'Apple Ile avec 65C02 et carte souris.
Que fait donc ce programme ?
ll vous permettra d’avoir en permanence la
date et l'heure a |'écran (en 80 colonnes),
ainsi que la possibilité d’horodater vos
ceuvres. De plus, vous pourrez 4 tout
moment, modifier ces paramétres, en utili-
sant simplement l'Ampersand.
Comment fonctionne-t-il ?
Ce programme, utilisable sous ProDOS, prend
environ 1,4 K de mémoire et se loge 4 partir de
l'adresse $9000, juste sous les buffers CAT.E/S
débutant en $9600. HIMEM a été repositionné
& $9000, ce qui place les buffers d'ouverture
de fichiers sous HORLOGE (en protégeant ainsi
la routine et en vous permettant de disposer
d’environ 60 octets pour y apporter d’éventuel-
les modifications).
U'horloge proprement dite débute 4 l’adresse
$9390 par un SEI, qui inhibe toute nouvelle
interruption de type IRQ, ceci de maniére a
pouvoir initaliser le systeme. On teste bien sor
la présence de la carte SOURIS, et on place
‘adresse de saut effective en $3FE-$3FF,
adresse qui sera celle du comptage et du trai-
tement, débutant 4 $941D.
Pour vous permettre d'apprécier cet
utilitaire, voici un petit exercice :
* Tapez RUN HORLOGE.BAS puis (Return).
* Tapez & puis (Return)
Un cadre doit apparaitre au milieu de I’écran.
Indiquez la date puis répondez par :
* (Non, encasd'erreur. © (O)ui, pour continuer.
TREMPLIN MICRO
Enfin, si vous travaillez relativement tard et
qu'un jour nouveau vous surprenne, vous n‘aurez
pas 4 vous inquiéter du changement de date, car
celui-ci se fera automatiquement, méme s'il faut
pour cela changer d’année. Ainsi, vos fichiers
seront correctement horodatés.
Dans le cas d'une réponse affirmative, la date
s‘inscrit en haut 4 gauche, dans le cadre prévu
4 cet effet. Puis, la mention Mise a l'heure de
Vhorloge apparait. Réagissez de la méme
facgon que précédemment, mais en indiquant
l'heure actuelle, puis répondez 4 la question :
Etes-vous d'accord ?
Si vous tapez (O)ui, I'heure se met @ jour, le
cadre disparait et vous retrouvez |'écran tel
qu'il était avant cet exercice, 4 la différence
que vous disposez de la date courante et d'une
horloge.
Si vous tapez (N)on, le cadre reste, mais vous
retournez 4 la mention concernant la date. Le
fait de taper sur (FLECHE-BASSE) vous permet
de revenir 4 la partie Mise 4 I'heure de I'hor-
loge. Dans tous les cas, vous pouvez abandon-
ner en tapant sur la touche Esc.
Deuxiéme exercice :
* Faites CATALOG
* Mettez la date et l'heure 4 jour, par
exemple :
JJ/MM//AA ——» 31/12/85
HH:MMSS ——» 18:30 00 (Suite page 30)
29
seneeussseseneseseseseeeeoessesesseeeE sso se seeecomEToeTecereeTsEeosUessoseNEEesosSSEsoeTEsoEsesoeNeEoee
Le cadre a occulté une partie de I’écran, mais * Si vous déplacez HIMEM, il faut qu'il soit
vous retrouverez ce dernier dés que vous inférieur a l'adresse $9000, car c'est 14 que
aurez terminé la mise 4 jour. se loge HORLOGE.
© Tapez ce programme Basic : * HORLOGE na pas de calendrier perpétuel et
10 REM «** NUL «e« donc, ne gére pas le 29 février.
* Faites SAVE NUL, puis CATALOG. * Si vous exécutez un programme en page
Que constatez-vous ? texte, assurez-vous de placer des tabula-
Votre programme est maintenant horodaté. tions de ligne supérieures 4 2.
Vous remarquez une date identique dans les * N’essayez pas d'exécuter un programme uti-
deux rubriques CREATION et MODIFICATION. lisant les pages graphiques, mais rien ne
Ceci est di au fait que votre programme vient vous empéche de l'écrire. Si vous voulez
d'étre créé. l'horodater, faites la séquence suivante :
couche-tard. Ne chargez pas HORLOGE. -
Dernier exercice pour les — Ecrivez et testez votre programme, puis
* Faites & sauvegardez-le.
* Modifiez seulement l'heure en mettant — Chargez HORLOGE par RUN HOR-
23:59 50 LOGE.BAS et mettez a jour la date et
Dés que l'heure atteint 24:00 00, elle se remet 4 I'heure.
zéro (RAZ), et — 6 joie ! — la date passe du — Rechargez votre programme.
31/12/85 au 01/01/86. Essayez de retaire SAVE — Faites DELETE programme (permet
NUL puis CATALOG. Que constatez-vous ? | d'effacer le SANS DATE dans la rubrique
Voila | vous savez tout. Rien ne vous empé- CREATION).
chera, pour vos propres besoins, d’apporter — Sauvegardez & nouveau votre pro-
une touche personnelle 4 ce programme. Sree:
J'allais oublier : il existe quelques restrictions Aprés ces quelques remarques, je n‘ai plus
4 l'emploi de cet utilitaire : qu'une chose 4 vous souhaiter : bon travail !
© Un Reset le perturbera définitivement. Si
cela arrive, faites PRE3, sauvegardez votre
programme s'il y en a un, tapez RUN HOR-
i i P.S. : Ce programme est protégé contre toute entrée
patente puis rechargez le fruit de vos as pepscrsstony es 95/03/06 ew
OUHIAMORS: 24/24/86 ou encore 33/00/86 voire 31/11/86, ou une
* Si vous voulez effacer |'écran, faites HOME heure du type 25:00 00 ov 12:60 00 ov 12:00 60 etc
ou la séquence Esc Shift-4, et non pas PRE3. =
HORLOGE.BAS
10 REM *** HORLOGE.BAS ***
20 D$ = CHR$ (4) : REMCTRL-D
30 POKE 1014,132: POKE 115,144: REM $3FE-3FF ——» Saut en $9084
40 PRINT D$ ; "BLOAD HORLOGE.C”
50 CALL 37776
60 HOME: PRINT TAB (2); "Date "; TAB (9) ; “Aucune” ; TAB (61) ; “Horloge
70 PRINT CHR$ (27) : INVERSE : FOR C=@ TO 79 : PRINT CHR$ (76) ; : NEXT
80 VTAB1: HTAB 1 : PRINT CHR$ (95) ; : HTAB 18 : PRINT CHR$ (90) ; : HTAB 59 : PRINT
CHR$ (90) ; : HTAB 80 : PRINT CHR$ (90) : NORMAL : PRINT CHR$ (24)
90 POKE 34,2: VTAB2: HTAB 1: NEW
20 GUY-HACHETTE
snem ase ba Atami nden
TRE.
FOGG:
bi:
7020:
7030:
7040:
7058:
9058:
9876:
9088:
7098:
PGAG:
9GBa:
9OCa:
9GD6:
GEG:
FOF:
F100:
PIIG:
9120:
7130:
9140:
9150:
91568:
9170:
9180:
9198:
FLAG:
PiBG:
F1CO:
PLDG:
PLEO:
PIFO:
9206:
9216:
9220:
9236:
9248:
9250:
9260:
9270:
9280:
9290:
9206:
92B6:
92C8:
92D8:
92E6:
92FO:
9308:
9316:
9320:
9330:
9346:
Oemaoacn: F7T0O=
Le programme source se trouve sur la disquette
de Tremplin Micro n°12.
cD
ES
cD
FS
66
EF
CE
Ba
1£
8s
11
24
92
ca
Fa
98
a?
24
FF
20
98
ec
FF
94
99
85
ar
85
85
Ay
37
23
84
a5
37
57
FD
85
ec
BA
68
cy
FA
ce
ce
ag
86
45
4E
69
BF
F3
Eq @13E
cp BEF
EF E1BA
Aa AG AG = AFDE
FZ AD FS $042
AS CF AF F834
BG BG AG (7877
16 1F 1F 5682
93 a9 40 «~DDFF
85 43 28 «A474
ay 18 85 F24Aa
32 A? OC = —FPABL
DB 2@ 6D 0892
@1 30 19 8569
AD 74 96 3E4E
58 4c as) = (7 8BF
os 85.24 C83F
ag a9 2a FB7D
3A DB AG = =BCDA
1C A@ 9@ «83146
93 AD 76 «7 98F
ce 3c 10) «= 9885
78 20 3A) «2375
a9 Ba 99 =6DF7E
@5 a? AG OOF 6B
3D a9 43 «4ES6S
44.85°-3D 7475
FC A? 81 = =BSFC
FD AY 4C 3FBS
20 28 92 «~—B31é
85 19 Ay = 7ABD
22 48 A5 SE?
Ad 1F C8 D3FD
85 22 68 C38A
85 1C Aa «= FSEE
85 1£ 26 4 6SFO
19 20 Fe 8788
FO AS 1D ADS
AGB Bo AR DIES
ec FD ce) = EBC
07 7A FA 1AS8
4C 93 91 A246
Fo FD cg 7204
06 88 BS —B24F
64 98 C8 LDF
1B 84 24 FCEF
FC A2 35 C408
68 68 4c 480C
91 BF 26 11F6
AD 91 BF F49F
BF 8D 9@ =E873
ce es pe) = S218
68 A? 88 SAC?
(SUITE ET FIN PAGE 32)
TREMPLIN MICRO
31
8D 76 94 A2 BA 18 AD 76 94 79 64 99 BD 76 98 CA 2704
D@ F4 CS 79 64 98 28 88 8S 88 8D 76 94 68 AY 28 3CDD
85 42 85 3C AY @4 85 3D AP DB 85 3E AP O7 85 3F BCA7
60 AP 28 85 42 85 3C AP O4 85 43 AP DG 85 3E 4H 34CA
78 26 CS 93 AF 1D A2 94 BD FE G3 8E FF 83 AB 19 46BCS
é F287
4658
29EC
67 CA 30 20 AB GC B1 46 C9 26 DO F3 AG FB B1 a6 8882
C? Dé DB EB AS @7 8D C4 53 SD CO 93 BA BA GA BA = 84F2
8D C1 #3 60 20 5@ FC 20 3A FF AS BC 85 25 20 24 B2B1
FC A? 14 85 24 A OC AD 95 20 3A DB AP BC 85 25 Baza
26 24 FC AP 3A 85 24 20 OC FD 4C 88 C4 78 48 DA ASAI
54 Aa 13 20 AC 73 EE 85 95 AD 85 95 C9 3B DB 48° 6c57
A? 66 8D 85 95 A2 47 FE 94 95 BD 94 95 CS BA 9G) EAID
19 AY BA FD 94 95 CA FE 94 95 BD 94 95 C9 BS DB B4SE
9 A BB 9D 94 95 CA CA 19 DD AD 94 95 C9 B2 DB BicA
17 AD 95 95 CS B4 DG 10 AB G7 BF 8B 95 99 94 95 EBD
88 CO 66 18 FS 20 DF 94 42 63 AB G7 AD 54 CB 20 3AeD
B8 94 88 AD 55 CG 20 BB 94 88 CA 14 EF AD 54 CH E314
AG 66 BS 94 95 49 BB 99 86 95 C8 CO G5 DA FZ AQ GEIF
83 20 BF 94 AD 93 95 8D 92 BF 20 BF 94 AD 93 95 coa7t
8D 93 BF 7A FA 68 58 46 BY 94 95 9D 23 64 68 AP SFO2
9@ 8D 93 95 AZ BA 18 AD 93 95 79 86 95 8D 93 95 B297
CA D@ F4 C8 79 86 95 88 88 88 B88 8D 93 95 66 AG ASBF
07 BY 6D 96 49 BB 99 54 94 88 16 FS AB G3 26 4E aaeEt
73 AC 76 96 BP 77 98 48 AG 6 26 4E 93 EE 76 90 7EE2
68 38 ED 76 94 36 43 4C 44 95 AB 43 26 4E 93 EE 3F7D
76 98 AD 76 9G CP BD 16 83 40 3A 95 AB 6 26 4E cCiD1
7520: 93 EE 76 90 AD 76 96 C9 44 34 65 AP BO BD 76 90 B2DEs
7530: AB’ O7 26 6C 95 AS 1 BD 76 94 AB B4 20 6C 95 AP 7273
7540: 61 8D 76 94 AB 81 26 SC 95 24 32 93 AP BO 20 24 F428
755@: FC AP G8 85 24 AP 6D AB 9G 26 3A DB 20 63 93 AP F430
7560: 17 26 24 FC AP B1 85 24 26 FG FD 66 AZ 68 AD 76 BcDC
7570: 9@ 38 EP BA 34 63 ES 18 FS 19 69 BA 99 64 90 88 7D7E
7580: 84 99 64 94 60 86 BE BA AG BG BG BG BG BA BG BA >sA51 Lt
7590: AG BG BA BG BG BG BA BB BG AG BG BA DB E1 F3 AB AZEE —
75AG: E4 ES AG ES E1 F2 F4 ES AB D3 EF FS F2 E9 FZ AB SSBD
9586: AD AD BE A’ D2 ES E4 FB ED Ei F2 F2 E1 E7 ES AG 954D
75CO: Al 88 CAL
Pour terminer : BSAVE HORLOGE.C,A$9000,L$5C2
ic
(SUITE ET FIN DE LA PAGE 31)
Ne soyez pas en retard d'une génération...
INITIEZ-VOUS AU LANGAGE MACHINE
et offrez-vous les deux éditions de TREMPLIN MICRO :
° Le 6562 et le 65C@2 PAS & PAS
© CLINS D'CEIL AU 6502 DE L'APPLE (voir bulletin de commande)
32
oon
GUY-HACHETTE TRE
7 Dos ProDOs
Guy HACHETTE
Si vous avez déja essayé de concevoir vos propres caractéres graphi-
ques, vous avez pu constater qu'il s‘agit d'une ceuvre de longue haleine
— certes captivante, mais non moins fastidieuse. C'est pour vous que j'ai
mis au point cette éniéme version d'un utilitaire de création de caracté-
res. Son utilisation est simple, mais avant d’en arriver la, je vous pro-
pose de revenir sur quelques notions préliminaires indispensables.
La représentation d’un caractere
Chargez un set (ou police) classique de caractéres ASCII a
GO) OPE VIEL | Ste Todreese $4006 (on pest le trouver sur les disquettes TOOL KIT,
0} G/1|@0/a\a/ 1) a] $22 mais aussi sur bon nombre de disquettes francaises et américai-
nes... et vous en avez un exemple plus loin). Tapez CALL - 151,
GO} GO} 1] GO] a} o/ 1| a) $22 puis 4110.4117 et l'indispensable RETURN. Votre écran vous ren-
GO} G/G}1/1]1]1/G] SIE verra probablement la ligne suivante :
4110 - 1E 22 22 1E 22 22 1E 09
G9} G| 1} G/G/0/1| a) $22 Ce sont les huit octets capables d’afficher un B en mode graphi-
G} 0/1} a0\/G/0]1/ a] $22 que. En les représentant sous leur forme binaire, vous obtenez
le dessin matérialisé ci-contre. Il s'agit bien d'un B... mais
Oo] OO 111/71] 1] oO] SIE regardé dans une glace. Contrariant non ? D’ou la raison core
d'un utilitaire qui vous autorisera 4 tracer normalement chacun
| 9] G} O} GG} ola} a} $o9 de vos araciores !
_ Le programme travaille pour vous !
UNEMATRICE? x 8 Vous allez vous contenter d'une grille de 7 Ololololo
cases de large (on négligera le 8° bit, réservé
4 la couleur, et qui sera automatiquement mis 4 @) sur 8 de haut (8 lente) o|Oo
octets). A I’écran, le tracé sera matérialisé par des O majuscules et les olo olo
blancs par des accents circonflexes. Compatibilité oblige : je n’ai fait
que quelques clins d’ceil au langage machine et je n’ai pas utilisé les loukeonronrenre)
caractéres souris disponibles sur les derniéres machines, du moins olo olo
dans cette version (un programme plus élaboré figurera dans ROUTI-
NES LM pour 65C02 et 6502, ouvrage 4 paraitre au début de janvier). o|Oo o/|o
CARACTERES POUR LACOULEUR Si vous désirez créer une police (oR Tonren rene)
capable de donner de bons
résultats sur un
Showing the first 100000 of 194204 characters.