Text content (OCR)
La revue francophone indépendante pour les utilisateurs d'Apple
ae 7 i
=== KW -F
Stricto Sensu,
accessoire Mac
|
Macros
AppleWorks
wii
045005
Universal Disk Controller
me Sn BRO ot
...LA solution pour relier aux Apple //e et ]I+ :
un “Apple 3.5 GS Platinum’ 800Ko
un lecteur Macintosh 800Ko
un lecteur Macintosh 400Ko
un lecteur Chinon 800Ko
un Unidisk 5,25” 140Ko
Connectée a n’importe quel port, elle pilote deux lecteurs (méme
différents, pouvant totaliser 1,6 méga). Elle permet le travail bit a
bit avec tous les lecteurs d’aujourd’hui (ce travail était impos-
sible avec l'Unidisk 3.5”).
Carte UDC : 1 050,00 F TTC franco
Tarif carte Pom’s Joker : 945,00 F TTC
Logma S.A. — 12, rue d’Anjou — 78000 Versailles — Tél : 39 51 24 43
Numéro 44
septembre-octobre 1989
Graphisme et son :
DPA 23, 24, 25, 26
= Page 40
Jean-Yves Bourdin
Editorial e: Page 7 [ice]
Hervé Thiriez
ESE}
GS-Init
Un accessoire Mac :
Stricto Sensu
Page 8 Jean-Luc Bazanegue
Page 42
Les nouveaux
TimeOut dee A essai :
imitri Geystor
re] ConcertWare
== Fess es Christian Piard
= =
Programmation AppleWorks
Des Ascii et des @ ProCommand
Dimitri Geystor :
[ Tre] a = Ice Pierre Demblon
a) ples ee) Pee 18 as) ctemly [eeeSe! © Page 36
Un nouveau CDA : Macintosh: *
Ram.Use
Patrice Neveu Les News
Ics Ariel Sebban
el. Page 23 Page 51
Une commande externe :
ShortP
Giséle Perreault
Jean-Yves Bourdin
[J] & [Ze] Page 58
(==) Beas fee
Ze] (ss BN) + rave 29
= wee
GS & fenétres : 3 Petites annonces
° Page 74
Scrolling
Patrick Desnoues Mots croisés
aS Page 32 Joélle Piard page 74
Les annonceurs : Apple : pages 4 & 5 ; Bréjoux : page 25 ; Logitech : page 76.
Editions MEV - 12, rue d’Anjou - 78000 Versailles. Tél. : (1) 39 51 24 43. Directeur de la publication : Hervé Thiriez
Pom’s n° 44
Pour savoir si la créativité a
vraiment quelque chose a voir avec la
productivité, venez 4 Apple Expo
retrouver Apple et tous ses
partenaires. Installée au CNIT, le plus
grand centre de communication et
d’échanges du monde, Apple Expo
vous présente tous les moyens de
des mearques Jéposées de Appl
- Un jour, on te parlera de la créativité
N’écoute pas. Ca n’a vraiment rien a
développer la créativité et donc la
productivité des hommes.
Cest l'occasion ou jamais de venir
découvrir ou redécouvrir le «monde
Macintosh ~. Les nouveaux Macintosh
vous seront présentés en exclusivité
ainsi que les derniéres applications et
matériels périphériques vous
ner Inc
permettant de développer toutes les
facettes de votre créativité quel que
soit votre domaine : traitements de
texte et tableurs bien sir, mais aussi
par ordinateur ou enco
Enfin, vous verrez qu’il est tres facile
de mettre Macintosh en réseau ainsi
au service de la productivité.
voir.
mhésitez pas a lui en toucher deux
mots. Ca ne peut que |
Pour recevoir votre invitation ou
vous désirez de plus is connaitre le calendrier des
informations, venez donc nous voir : conférences, tapez sur votre Minitel
Apple Expo a lieu du 27 au 30 3614 Code Apple.
EXTRAFONTS
Deux APPLICATIONS, CoLorFonts
ET EpiFonts, QUI DONNERONT A
voTRE AppLeWorks/TiImMEOuT
ENCORE PLUS DE SOUPLESSE ET DE
PUISSANCE
- ColorFonts donne 4 TimeOut SuperFonts la
couleur.
- EdiFonts est un éditeur de polices qui dépasse
de loin les possibilités d’Edipol et FontViewer
réunis.
CotorFonts
Votre SuperFonts monochrome (version frangaise
Pom’s) est transformé en ColorFonts, permettant
désormais l'impression dans les sept couleurs de
I'Imagewriter II (noir, jaune, rouge, bleu, orange,
vert et violet), en conservant bien sur toutes les
possibilités de SuperFonts (polices ct stylcs variés,
justification 4 droite, tabulations, impression
d'images).
Les changements de couleurs peuvent, comme les
changements de polices ou de styles, intervenir 4
tout endroit, méme au milieu d'un mol. Vous
pouvez aussi imprimer une image dans la couleur
souhaitée.
En bonus, ColorFonts vous donne aussi accés aux
caractéres normalement inaccessibles par Super-
Fonts (codes 0 a4 31).
Bien entendu, les commandes habituelles restent
inchangées.
ColorFonts est compatible avec les autres impri-
mantes, mais imprime alors en monochrome.
de DanieL Luror
EpIronTs
Une nouvelle application TimeOut
Avec EdiFonts, vous pourrez visualiser, modifier et
imprimer vos polices de caracléres, mais aussi en
créer de nouvelles (en partant de zéro), copier des
caractéres d'une police vers une autre. Tout ceci
sans quitter AppleWorks !
Avec a4 votre disposition un index des polices
(analogue a l'index des fichiers AppleWorks) per-
mettant de travailler sur plusieurs polices (jusqu’a
sept a la fois).
Affichage de la police page par page. commandes
ergonomiques
Accés rapide aux caractéres désirés
Copie d'écran graphique
Impression de la police compléte
Visualisation individuelle et modification des
caractéres
Edition rapide grace A des commandes puis
santes : insertion au effacement de colonnes ou
de lignes — déplacement du caraclére loul
entier dans les quatre directions — effacement
de la grille d’édition — modification des ‘width’ et
‘offset”
Création de nouveaux caractéres
Copie de caractéres interne, vers le presse-papiers,
du presse-papicrs
Suppression de caractéres
Visualisation, impression et modification des
paramétres globaux de la police — firstC —
lastC — leading et kernMax — ascent — descent
— nom de la police
La disquette ExtraFonts existe en 5,25"/140Ko et 3,5"/800Ko. ExtraFonts est compatible avec les Apple
//e 128Ko, //c, IGS.
ColorFonts nécessite AppleWorks, une ImageWriter II et TimeOut SuperFonts en version francaise.
EdiFonts nécessite AppleWorks et au moins un TimeOut en version frangaise.
ExtraFonts : 500,00 F — Carte Joker : 450,00 F — Bon de commande page 70
Ont collaboré & ce numéro
Jean-Luc Bazanegue - Jean-Yves Bourdin
Pierre Demblon - Patrick Desnoues
Dimitri Geystor - Olivier Herz
Nathalie Laudat - Daniel Lurot
Gérard Michel - Patrice Neveu
Gistle Perreault - Christian Piard
Joélle Piard - Ariel Sebban
Hervé Thiriez
Directeur de la publication
rédacteur en chef
Hervé Thiriez
Rédacteurs
Jean-Luc Bazanegue - Christian Piard
Siege social
Editions MEY — 12, rue d’Anjou
78000 Versailles — t (1) 3951 24 43
Serveur Minitel (1) 39 53 04 40
Publicité
Editions MEV
Diffusion
N.MP.P.
Impression
MAME — 49, boulevard Preuilly
BP 1701 —37017 Tours Cedex
@ 47.37.08.08
Photos
CP&ILB
Dessins
Gilles Coursicr
Photogravure
Graphotec — 21, chemin de la Tour
92350 Le Plessis-Robinson
= (1) 46 3044.49
Pom's est une revue indépendante non
rattachée & Apple Computer, Inc. ni
4 Apple Computer France S.A.R.L.
Apple, le logo Apple, Mac et le
logo Macintosh sont des
marques déposées
d’Apple Computer, Inc.
IBM est une marque déposée de
International Business Machine.
PC et AT sont des marques déposées
de la Société IBM.
@Editions MEV 1989
Toute reproduction intégrale ou partielle,
effectuée par quelque procédé que ce soit,
sans l'accord écrit d’Editions MEV,
constitue une contrefagon.
Loi du 11 mars 1957, articles 425 et
suivants du Code Pénal.
Droits de traduction, de reproduction et
d'adaptation réservés pour tous pays.
Editorial |
Apple Expo
200 exposants, dont Pom’s, attendent 50 000 visiteurs cette
année dans le nouveau CNIT de La Défense. Apple
n’organise pas moins de 25 conférences sur des thémes aussi
variés que la programmation d'HyperCard, la Musique, les
handicapés, Unix, Numéris ou encore I'intelligence
artificielle et bien d'autres encore. Ce sera l'occasion
d'entendre John Sculley, Michael Spindler d'Apple Europe,
Jean-Louis Gassée ou Alan Kay I'un des trois ‘penseurs’
d'Apple.
Pour ce numéro d’Apple Expo, Pom’s met le GS 4 I'honneur:
une application au look Mac, un accessoire de bureau, un
programme d’initialisation et un nouveau lot de disquettes
freeware et shareware.
Pour tous les Apple //, Pom’s a traduit ProCommand de Glen
Bredon que vous étiez nombreux a nous demander. Bel
ensemble pour un Applesoft toujours jeune. Une commande
externe ProDOS par |’une des rares auteuses de la revue et les
toujours astucieuses macro-commandes AppleWorks de
notre spécialiste Dimitri Geystor.
Cété Mac, un accessoire de bureau indispensable écrit en C,
un essai de ConcertWare et des infos, d'autant plus
séduisantes qu'Apple annonce une baisse sensible des prix
Mac: de -27 % sur le Macintosh Plus 4-10 % sur le Mac SE
30. A 10 900,00 F le Mac Plus... qui résiste ?
Hervé Thiriez
Pom’s n° 44
Iss
aaa
Jean-Yves Bourdin
Le programme ci-dessous est une
extension du programme “Bram
Master” publié dans Pom’s n° 41 :
son but est de mettre en un seul
programme les routines
initialisation ou de réinitialisation de
la machine dont je me sers le plus
fréquemment.
Je n’ai en effet pas seulement a
rétablir ma configuration de Bram : je
me suis également apercu que j’avais
fréquemment a “purger” la mémoire du
GS. Sans quoi certaines applications,
ou bien refusaient de se charger, ou
bien plantaient, malgré mes 2,3
Mégas de mémoire en ligne. Il
apparait en effet que certaines
applications gérent de fagon pour Ic
moins cavaliére (fautive, en fait) les
appels au gestionnaire de mémoire du
GS, le Memory Manager. Parmi
celles-ci, AppleWorks, PaintWorks
Gold, et le Linker d’APW...
Au départ, ce programme incluait une
routine de configuration du port série
pour lui donner un buffer de 64Ko,
inspirée de celle de Gary Little. La
routine marchait, mais le buffer
interne du GS est top bugué : il vaut
mieux ne pas s’en servir du tout.
En revanche, j’ai ajouté quatre
sous-routines pour configurer la carte
accélérateur Trans Warp GS, d*Applied
Engineering, de fagon que je puisse
lancer Thexder sans me faire ridiculiser
ensuite.
Bram Master, suite :
GS-Init
—
OE VOL, It VIENT Di
Co
Oo
16]
19}
°
o
. Cok CESTLE PROBANN
—
TOUT EFFACER |
4
o
Oo
oO
zy, ’
Oo
oO
°
Confier votre Tableau de Bord a J.-Y. Bourdin,
est-ce bien raisonnable...
Obéir au Bureau
Politique
Les “bidouilles” avec le Memory
Manager et les outils GS ne sont plus
de saison. Avec GS/OS, le niveau de
maturité du systtme du GS interdit
désormais les fantaisies. Quoi que
nous en ayons, il est temps désormais
de nous plier, serait-ce en maugréant,
aux directives du Bureau Politique.
Sans quoi, c’est l’utilisateur qui paye.
par des “plantages” intempestifs,
V'indiscipline ou l’impatience des
programmeurs.
C’est d’ailleurs pourquoi je préche
d’exemple en m’y soumettant
moi-méme. Le “noyau” de GS.INIT
est composé du lancement de trois
outils (Tool Locator, Miscellaneous
Toolset et Memory Manager), puis de
Icur fermeture, dans I’ ordre spécifié par
le Bureau Politique.
«Que d’octets inutiles !», dira le
programmcur formé a la chasse aux
octets sur Apple //. Effectivement, je
n’ai encore jamais vu de situation od
cette “bande des trois” ne soit pas déja
active : ils sont toujours 1a. Mais
Pom’s n° 44
Apple nous demande de le faire,
faisons-le. Ceci dit, si vous ne le
faites pas dans le programme que vous
taperez pour vous, c’est votre affaire...
De la méme facon, le programme
Passe son temps & alterner entre mode
16 bits et mode 8 bits (je préfre cette
formule a la formule “mode
natif/mode émulation” : en mode 8
bits, toutes les instructions du 65816
fonctionnent, il ne se comporte pas
comme une “émulation” qui ne
reconnaitrait que les instructions du
6502).
Il fallait choisir un “standard” pour les
sous-routines, j’ai choisi le huit bits.
La aussi, que d’octets inutiles : mais
que de plantages évités si on fait
constamment attention a bien préciser
au 65816, et a notre assembleur, cn
quel mode il doit étre.
Un programme GS, il faut s’y faire,
est toujours un peu verbeux, et gache
quelques octets. C’est la condition
pour s’y repérer, et puis on compte la
RAM en Mégas, désormais.
Attention, j’ai dit “un peu” verbeux,
et “quelques” octets : cela n’excuse pas
les abus “A la PaintWorks Gold” !
Purger la mémoire
Précisons, pour ceux qui ne le savent
pas, ce qu’est la purge mémoire : une
application comme le Finder, par
exemple, a besoin de certains outils
qui sont sur la disquette syst@me, et il
les charge en mémoire. Quand on
quitte le Finder, en langant un
Programme par exemple, celui-ci
devrait dire au systéme de libérer
Vespace mémoire occupé par ces
outils, et par le Finder lui-méme.
Oui, mais !’application suivante va
peut-étre avoir besoin des mémes
outils, qu’il va falloir alors recharger &
nouveau du disque. De plus, en
quittant l’application suivante, on va
retourner au Finder, qu’il va falloir
encore recharger du disque.
Le Memory Manager permet donc de
laisser certains segments de
programme, certaines ressources
systéme, chargés en mémoire, mais
VersionSoft, ca plante !
Exemple parfait de ce qu’il ne faut pas faire avec le Memory Manager du GS :
OO/1FA4 :A9 03 00 LVA #0003 # charge la valeur 03/0000
00/1FA7 :8F FA8 0A 00 STA O00AF@ ; dans une variable
00/1FAB :A9 00 00 LDA #0000
OO/IFAR :8F F6 0A 00 = STA O00AF6
OO/1FB2 :48 PHA # démarre appel 4 NewHandle
OO/1FB3 :48 PHA
00/1FB4 :F4 0A 00 PEA 000A # longueur du bloc demande
00/1FB7 :F4 00 00 PFA 0000 2 = 640Ko
00/1FBA :AD 82 C5 LDA C582 # pour mon identiticateur
OO/1FBD :48 PHA
OO/1FBE :F4 02 80 PEA #%10000000 00000010 ; attributs :
verrouillé, adresse fixe
LDA UOUAF8 ; 4 créer a partir de
i‘adresse fixe
03/0000 (début du banc 3)
OO/1FC1 :AF F8 0A 00
OO/1FCS 348 PHA ¥
OO/1FC6 :AF F6 OA 00 LDA OOOAFE
OO/1FCA 348 PHA
00/1FCB :A? 02 09 IDX #0902 + appel 4
UO/1FCE :22 00 00 El JSL $£10000 ; NewHandle
00/1FD2 BCC 1FE6 # si ok, passe d la suite
OO/1FD4 PLA
00/1FD5 PLA
00/1FD6 :AF F& 0A 00 LDA OOOAF8 ; sinon incrémente partie
OO/1FDA :1A INC ; haute de l’adresse du banc
mémoire demandé
00/1FDB STA OOOAF@ ; pour le début de mon bloc
00/1FDF CMP #0008 =; mais on ne peut pas
occuper au-dessus
00/1FE2 BNE 1FB2 ¢ de $03 + $OA + $ 07 = $15.
00/1FE4 BRK 4c # Sinon, BREAK : Lu plantes
la machine!!!
OO/1FEG :68 PLA # il doit rester ue la place
pour charger
00/1FE? :8F FA 0A 00 STA OOOAFA ; les outils et le systéme.
00/1FEB 8 PLA
O0/1FEC :8F FC 0A 00 STA O00AFC
00/1FFO ‘4 00 00 PEA 0000
OO/1FF3 :F4 A6 OA PEA OAA6
00/1FF6 01 OF LDX #0F01
O0/1FF9 00 00 El USL £10000 ; LoadTools
Ce qui se trouve ci-dessus est le désassemblage commenté de ce que j’ai pu
trouver, suite 4 une remarque d’Yvan Koenig, a l’octet $1FA4 dans ma version
de PaintWorks Gold. Une conjonction exemplaire de deux énormes erreurs
volontaires :
1° Faire comme si il ne pouvait pas y avoir d’extension mémoire supéricurc &
1,2 Mégas pour le GS (!)
2? En cas d’insuffisance de mémoire libre en-dessous de ce 1,2 Méga, ne pas
quitter proprement, ne rien dire 4 l'utilisateur, méme pas renvoyer a une
erreur ProDOS : planter, tout simplement. Ca plante : c’est étudié pour !
Et je ne parlerai pas de la pratique qui consiste 4 demander un bloc de 640Ko,
d'un seul tenant, commengant a une adresse fixe, au Memory Manager, en lui
interdisant méme de déplacer ce bloc cn mémoire ensuite... Voir “Le
mange-mémoire” dans Pom’s 37 page 59.
Vous avez donc bougrement intérét, si vous utilisez des logiciels VersionSoft, &
les lancer par GS.INIT, avec la routine de purge et de compactage préalables
de la mémoire. Mais PaintWorks Gold est un excellent logiciel par ailleurs.
‘Vous trouverez un patch pour corriger son erreur dans Pom’s 42 page 64.
Pom’s n° 44
10
dans un état “purgcable” : si
V'application suivante n’a pas besoin
de toute la mémoire disponible, elle
trouvera scs outils déja chargés en
mémoire. Et l’on pourra retourner
quasi-instantanément au Finder en
sortant.
Si en revanche elle a besoin de toute
la mémoire, le Memory Manager
“purgera” ces segments purgeables et
rangera (“compactera”) la mémoire
disponible pour faire de la place. Le
Memory Manager raffinc méme, en
fixant 3 niveaux différents de purge, ce
qui permet de fixer des priorités dans
la purge.
Toutes ces subtilités permettent d’aller
le plus vite possible avec un espace
mémoire restreint. Elles signifient que
plus vous aurez de mémoire, plus le
GS tournera vite, et moins il fera
dace’s disque. Ce sont ces subtilités
qu’ignorent les applications
“primaires”, comme AppleWorks ou
PaintWorks Gold, dont Ic seul souci
est de manger pour elles-mémes le
plus de mémoire possible. Il faut done
purger nous-mémes, avant et/ou aprés
elles.
Comment purger ?
Jutilisais auparavant la routine de
purge mémoirc de Glen Bredon dans
Merlin 16 Plus et de Mike Westerfield
dans Call Apple d’ Avril 89, mais j’y
ai renoncé. Cette routine purge la
mémoire bloc par bloc, en cherchant
pour chacun des “handles” concernés
s'il cst purgeable ou non.
Cette routine marche, et elle a
l’avantage de permettre si on le veut
d’afficher 4 chaque fois quel bloc on
libére. Mais elle utilise la
connaissance des enregistrements du
Memory Manager : or cette structure
n’est absolument pas garantie par
Apple, ct il est possible que cette
routine ne marche plus dans les
versions ultéricures des outils.
Toujours le soumission au Bureau
Politique...
Bientét d’ailleurs, je l’espére, nous
n’aurons plus a purger la mémoire :
les dernitres versions du Memory
Manager ont en effet un appel
“RealMem”, distinct du classique
“FreeMem”, qui renvoic non
seulement l’espace mémoire libre,
mais l’espace mémoire libérable au
total aprés purge et compactage. Une
application pourra donc savoir
exactement sur combien de mémoire
elle peut compter.
J’ai donc choisi pour purger la
mémoire une formule qui devrait rester
compatible, tout en restant
évidemment dans une certaine mesure
une bidouille (nous sommes sur
Apple //, n’est-ce pas).
Au lieu que le programme purge
lui-méme, bloc aprés bloc, mon idée a
été de demander au Memory Manager
de m’allouer un bloc mémoire de... 16
Mégas ! Bien entendu, le Memory
GS.INIT
1
2
3
4 4 Gs INIT.
5 ou
6
7
a
9
Ly ee
23 4
24 teeeesens
25
26
-eF00 27) MEI sou
=E10000 28 TOOLBOX EQU
29
30 ox
2”
32 ong
33
35
36 DSK
37 1p
38
ouzvvy : zu sure 39 usr
40
002003 : 38 41 VERIFGS SEC
002004 : 201F FE 42 ISR
202007 : 90 03 -200c 43 Bec
o02009 : 4c 64 20044 ome
45
gozo0c : 18 46 INTRO cLe
002000 : FB 47 XCF
202008 : ¢2 30 40 REP
vozvly : az 0102-49 1x
002013 : 00 00 E1 50 Jsb
002017 00 00 51 PEA
00201A z A2 02 02 $2 Lox
0201p : 22 00 00 B1 53 Js
ooz02! : 68 a4 PLA
002022 : 8D 62 20 55 STA
002025 : A2 03 02 56 Lox
002028 : 22 00 00 E1 57 Jst
58
o0202¢ : 38 oy sec
002020 : FB 60 XCE
61
62
Ce programm se charge de mettre ou remettre le
GS dans 1a configuration choisie par
Itutilisateur.
Il comprend un noyau standard qui lance et ferme
Jes outils, et un choix des différentes formes
de guit possibles sous Prodos &. I1 incorpore
pour le moment trois sous-routines :
~ PORGE.MEN :
~ MODDRAM : Reconfiguration automatique de la
mémoire sauvegardée
= Trois sous-routines de configuration de la
carte Transwarp GS Applied.
Assembleur Merlin 16 Pluo.
22 * J.¥, Bourdin,
Purge et compacte 1a mémoire *
Pon's 44.
$BF00
$E20000
11 7 on démarre en mode
+ é@milation (8 bits)
62000
GS. INIT
SP
sFcse 7 Home
7 vérifie qu'on est sur
SFRIF 2 GS
INTRO
peguit =; sinun quitte
7 passage en 16 bits
900110000
#30201 ¢ ThStartup : démarce le
TOOLBOX ; Tool Locator
#80000
480202 + MNStartp : démarre Te
TOOLBOX + Memory Manager
MYID
#80203 ; MTStartup : démarre le
TOOLBOX —; Misc Toolset
repasse en 8 bits, car
les sous-routines
démarrent en & bits
Pom’s n° 44
Manager n’est pas prés de pouvoir me
le donner. Mais, avant de me le
refuser, il commence par tout “Lasser”
(purger et compacter) de lui-méme.
C’est seulement ensuite qu’il
s’apercoit qu’il n’a pas assez de
mémoire : mais la purge est faite.
Au cas oi le Memory Manager, un
jour, aurait 16 Mégas a m’allouer (!),
le programme les lui redonne
aussitét : dans ce cas donc, tout ne
serait pas purgé, mais on aurait 16
Mégas de libres, ce qui devrait suffire
pour nos applications...
L’inconvénient de ce choix, c’est que
Vutilisateur de la routine ne voit rien
du tout, il n’y a pas d’affichage des
blocs libérés. Mais c’est précisément
ce dont j’avais besoin : on purge et on
quitte, c’est tout, pas besoin de
raconter sa vic.
Un bug
d’AppleWorks
Qucelqu’un (peut-étre votre serviteur ?)
a signalé un jour que quand on langait
AppleWorks deux fois de suite sous
ProDOS 16, on gagnait environ
100Ko pour le bureau. AppleWorks
avail apparemment trouvé un truc
pour augmenter “RealFreeMem” (qui
s’accroit de 100Ko aprés le passage
d’AppleWorks). C'est vrai, mais
ensuite... le plantage guette.
AppleWorks fait en effet une bétise
“de débutant” dans la gestion de la
mémoire du GS : quand une
application démarre le Memory
Manager (voir les lignes 50 a 54
ci-dessous), celui-ci répond en lui
accordant un numéro d’identification
(Userld). Et AppleWorks a
parfaitement raison, en quittant, de
dire au Memory Manager qu’il peut
disposer de la mémoire qu’il avait
accordée a l’application (DisposeAll),
avant de clore le Memory Manager.
Oui, mais AppleWorks est une
application ProDOS 8, et non
ProDOS 16. Si on a démarré sous
GS/OS par exemple, le Memory
Manager attribue systématiquement
aux applications ProDOS 8 qui font
un MMStartup l’identificateur de
ProDOS lui-méme ($3001).
ooz0zE :
002031 :
002034 :
002037 :
00203A :
oz0sp :
ooz04o +
002041 +
ooz0s2 :
oozvsa :
002047 :
o0704R +
oozoee
oozoer :
20
20
ooz0s2 : 2
002056
002059 :
00205D :
902055 :
o020sF :
002062 +
902064 :
092067 :
002088 +
00206A :
oozg6c :
002060 :
a0706F +
00206F
002071
902072
002074 :
002077 :
002078 :
902072 :
90207¢ :
00207D :
002075
00207F
092081
002082
002084 +
002088 :
902090 :
002096
002098
002080
0020a8
ooz080 :
oo202 :
902083 :
ooz0B4 :
002086 :
2 00
100
35
75
8D
ag
BC
00
20
oo
00
oo
20
90
20
00
2P
59
41
gy
cA
EA
30
20
21
20
-206C
BE
=207¢
53 2E
52 54
63
64
65
66
‘67
68
69
70
1
72
73
74
75
76
77
9
80
92
83
84
8s
86
87
as
89
90
a
92
93
94
95
on
97
98
99
100
101
102
103
104
105
106
107
108
109
110
11t
112
113
114
115
116
117
1s
ng
120
121
122
45 40
123
124
125
FA EA
ER EA
EA EA
126
127
128
129
130
131
Ios
JSR PURGEMEM
JSR MODBRAM
JSR TWEAST
JSR TWSLOW
JSR IRQFAST
JSR TROSLOW
FIN one 7 passage en 16 bits
XCE
REF 400110000
wx #90303 7 Mrshucuown
JSL TOOLBOX
LDA MYID
PHA
Lox #9302 7 MuShutDown
JSL TOOLBOX
LOX = #80301 # TLShutDown
JSL TOOLBOX
SEC 7 retour en 8 bite
XCE
JMP LAUNCH 7 ou P8QUIT ou HRDRBT
# ow APLRB?
MyTD ps
* Choix du Quit
MK IT 7 assemblage @ bits
PaQUIT JSR MLI ¢ Quit Prodos 8 erdinaire
DEB #365
DA: PARM
BCs :ERR
ERR BRK
:PARM DPB «#804
DFB #800
DA $0000
DFS #300
pA ssvg00
LAUNCH TSR + Quit Prados &
DEB 7 “Enhanced”
DA
BCS
ERR BRE
:PARM DEB 404
DEB OHSEE
DA ZNAME
DEB #500
DA —- $0000
:NAME STR '*/S/SYSTEM/START’ ;mettre le chemin
2F 53
7 d’accés complet du
3 fichier 4 lancer
DS «30, ASEA
BABA
EA EA
EA EAR
HRDRBT CLO. 7 passage en 16 bits
XCE
REP #00110000
IDA #80051 + Hard Reboot de Bill
Pom’s n° 44
11
Tos
Quand une application dit au Memory
Manager de libérer la mémoire
occupée par ProDOS, il nettoie tout
Vespace mémoire occupé par le
systtme, y compris l’espace mémoire
en page zéro occupé par ProDOS &
lui-méme. Le Memory Manager pense
par exemple que la page 00/BFO00 est
libre, et l’attribue au deuxitme
lancement d’ AppleWorks, comme tout
le reste de la mémoire, au bureau
d’AppleWorks ! Faites une
carte-mémoire du GS sous
AppleWorks lancé pour la seconde
fois, et vous aurez. des surprises... On
gagne 100Ko, mais a quel prix !
Une application Systtme 16 n’a pas
ce probléme, son identificateur n’étant
pas celui de ProDOS. Mais, dans tous
les cas, le mieux est bien de suivre la
procédure recommandée par le Bureau
Politique (Toolbox Reference, vol 1) :
avant toute demande de mémoire par
un appel NewHandle, commencer par
modifier le champ auxiliaire du
numéro d’ identification, ou demander
un nouvel identificateur par
lV'intermédiaire du Miscellaneous
Toolset (GctNewld).
Au fait, oui, un mot de la solution : il
faudrait sans doute patcher
AppleWorks, plus exactement réécrire
toute la partie de gestion de® la
mémoire du GS, pour la mettre en
conformité avec les régles Apple. Je
crois que cela a été fait avec la version
3.0.
Pour ma part, je m’en tire en langant
AppleWorks depuis un fichier $16 qui
s’installe cn mémoire, ct auquel
AppleWorks renvoie donc
obligatoirement en sortie. Etant un
fichier $16, il relance le syst&me dés
qu’ AppleWorks quitte. Si vous lancez
AppleWorks depuis le Finder ou
depuis Prosel 16, ou tout autre lanceur
$16, ca ira aussi. Mais ¢a n’ira pas si
vous le lancez directement depuis
Prosel 8.
oozoss =
uz0BB :
0020BE
0020¢1
anz0ce +
oo20c7
oaz0ca :
0020CE :
9020CF +
02000
902001 :
902003 :
002006 :
902009
oozovc :
9020DE :
902081
002083 =
oo20re :
002059 :
oo20Ec
0020ED
00208
oozoro
002063
ooz0r6
0020F9
o020FD
o0z0FE
02102
002107
002208 :
0210D
002110
oo2111
002114 :
002117 +
002114
o0211D
002121
007123 :
02124
ooziz5 :
02128
002129
85
Fa
Fa
Pa
Fa
a2
2
18
FB
2
8D
74
ooz10¢ :
07120 :
002130 ;
902131 :
002132 :
002133
ra
Fa
F4
46
ra
Fa
re
a2
22
30
00
oz
00
00
oa
09
oc
68
a7
41
39
30
09
00
03
00
33
00
00
FF
FF
33
00
00
02
oo
09
33
02
00
00
oo
00
00
00
09
oo
co
co
03
rr
oo
10
20
00 Ft
21
oo
oo
oo
21
00 et
-2123
11
0 FI
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
163
166
STA $00 7 Basham pas du tout
rea $0002 7 garanti par Apple
PEA $0000
PEA $0000
PEA $0008
Lox #50909
JS TOOLBOX
SEC 7 retour en 8 bits
xCE
APLRBT SEI 7 Reboot reconmandé par
LDA #50C ¢ Apple sur GS
STA $c068 7 StateReg
STZ $co47 2 ClrVblInt
sT2 $c041 + IntEa
LOA #809
STA $039 # SccaReg
LDA #80
STA $C039
DEC $03F4
ume (SEFFC)
sperersertvereerccer irr tererrreererereee ceri rr rie)
* ROUTINE PURCE.MEM *
* Force le Memory Manager 4 purger les blocs .
* purgeables et 4 compacter la mémoire .
* en Iui demandant un bloc mémoire supérieur *
* a ce qu'il peut attribuer. *
m (ttl 7 sous-routines démarrent
sen 8 bits
PURGEMEM CLO 7 pagse en 16 bite
aE
Ree $00110000
* demande un
PER
PEA
1x
ISt.
PLA
* demande un
ERROR
ast.
END
sMYID DS
nouvel identificateur
#50900
##00010000_00000000 ; idTag : applic
#82003 + GetNewld
roor.Aax
# range 1’ identificateur
sep
bloc de 16 Méaas
#s0000
#80000
#S008F ¢ taille du bloc :
#SEEFE #16 Mégas !
2MYID 2 etre identificateur
##00010011_00001000 ; application
+ niveau de purge 3
#$0000 + LecationPtr : sans
#50000 + importance ict
#80902 7 Newhandle
TOOLBOX
ERROR 7 erreur : toujours
7 laisser la pile propre
:MYID 7 désalloue 1a mémolre
7 de cet identificateur
#81102 7 Disposeall
rooLROx
7 retour en 6 bits
2,4800
SARA ARADA REA AR AREARERARARARRAN ANA AR ERA RA RARE EERE
* RECONFICURATION DE LA BRAM. .
* Cecte routine reconfigure la Ram Batterie *
12
Pom’s n° 44
A propos de la
Transwarp
Les sous-routines utilisées pour
configurer la carte sont celles ouvées
dans la documentation.
J’ai du méme coup trouvé un bug
sérieux du “firmware” de ma carte : la
sous-routine “ResetTW”, qui est
censée remettre la TransWarp dans la
configuration indiquée par |’ utilisateur
dans Ie tableau de bord de la
TransWarp, plante purement et
simplement.
Pour voir si votre Transwarp a le
méme bug, passez sous Basic System
et tapez :
SCALL~151
*<CTRL-N> (pour avoir des registres
16 bits)
*BC/FFOCK
En revanche, je m'étais laissé dire que
la routine d’identification de la
Transwarp proposée par AE était
fausse : elle marche impeccablement.
A mon avis, certains doivent utiliser
un assembleur qui n’est pas le bon...
Vous trouverez les explications
concemant loption dite “Appletalk/
IRQ” de la Transwarp dans Pom’s 43
pages 62-63.
Présentation
du listing
La partie concernant les différents Quit
en sortie n’a pas changé depuis Pom’s
41, pritre donc de se reporter & ce
numéro pour toutes explications.
En revanche la partie “ModBram” qui
modifie les réglages du tableau de
bord, a subi quelques modifications du
fait de son passage en sous-routine.
Mais les explications de Pom’s 41
suffisent.
Le “noyau” central du programme est
congu de telle fagon qu’on puisse lui
rajouter d’autres sous-routines cn
fonction des besoins, ou supprimer ce
qui n’est pas souhaité. Il suffit de
supprimer les JSR correspondants, ou
de les transformer en BIT.
On peut patcher le code objet avec des
$2C a la place des $20 en $202E et
suivants. Pour un programme a
002135
002136
002137
ouzi39
00213¢
00213F :
002142
ooz146 :
002148 :
00214A =
00214D
o0214F
vuzisz
002154 :
002157 :
002159 +
vuzisc :
00215E :
002161 :
002164 :
002167
002168
00216
oozi6e :
002172 :
002173
002176 :
vozirs :
6
002271 :
002275 :
002276 :
002277
o0z279 :
002270 :
002280
002262 :
002286
00228A :
002268 :
oozzec :
202
:e8
24
#22
£2
ag
8D
6D
ay
aD
6D
222
282
218
ar
cy
: DO
38
'B
60
oo
75
03
00
30
00
7A
00
6r
or
90
oF
91
iF 3g
00
75
03
00
vg
54
08
10
24
oo
21
oa
00 BI
00
21
09
00 E2
00 £1
EA EAR
FF BC
57
=228R
FF BC
FF BC
2u4
215
216
217
218
219
220
221
222
223
224
225
226
227
228
zey
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
234
255
256
257
258
259
260
261
262
263
264
Ics
sans passer par le tableau de bord du GS, *
et fait prendre en compte 1a modification par *
Je GS. Pour que Prades 16 et & recanfignrent *
leur liste de “devices” auseitét, lancer .
4
*
*
ensuite un programme de type ~start~ de P16
* (voir I*étiquette Launch). Cf Poms 41,
*
PYeUESECT eter eres rererererertrtertrerererei ri st te?
Mx GIL # sous-routines démarrent
en mode 8 bits
MODBRAM CLC passage en 16 bits
XCE
REP 400110000
IREAUBKM PEA $0000
PEA :BRAMBUF
EDX #80403 2 Lie la Bram
JSL TOOLBOX
ICHGHRM SEP suU1100U0 ¢_registres ¥ bits
LDA #800 + pas de buffer sur le
STA :BRAMBUF+$05 ; port 1
LDA #800 ¢ met 1'affichage en
STA :BRAMBUF+S1A ; “écran Mac”
wa #808
STA :BRAMBUF+$1B
LOA SOF
STA: BRAMBUF+$1C
IWKrBKM KEP $00110000 7 registres 16 bits
PEA $0000
PEA :BRAMBUF
Lox 480907 2 Berit la Bram
JSL TOOLBOX
:SETBRM SEP 400110000 ; registres ¥ bits
cle 7 avec CLC, reconfigure
7 les slots
UsL 6810094 ~—¢_ vecteur ToBramSetup
3END SEC 7 repasse en 8 bits
XCE
Rrs
BRAMBUF DS 236, 432A
AU AUAAAARARARAD ADA EERE AERA RE RE EER RERERA REEL ELE A EA
* TRANSWARP FAST 1 cette routine reconfigure la
* carte accélérateur Transwarp GS d’Applied
* Engineering pour tourner 4 sa vitesse maximum
* *
REARARA RARE AERP AEA EEERAAA RARER ARE AURA EASES HELE
aK 411 7 Assemblage 8 bits
TWEAST CLC 7 passage en 16 bits
XCE
REP 900110000
EDA >SBCFFOO ; vérifie la présence de
cup 4” THY 7 1a carte Transwarp
ANE :END
JSL SBCFFIO —;_ GetMaxspeed
JSL SBCFF24 ~—;_ SetCurSpeed
END SEC fo repasse en & bits
KOE
Pom’s n° 44
13
Ics
publicr dans une revue, cette formule
me semble préférable & celle des “DO”
a l'assemblage.
C’est volontairement que ce
programme-source n’inclut pas de
macros : j'aime bien savoir ce que je
fais, et cela le rend plus lisible.
Utilisateurs, attention : ce que fait le
programme est parfaitement invisible,
tout se passe “dans la téte” de la
machine. Scul le passage (a
supprimer) en “écran Mac” donne un
indice qu'il se passe quelque chose. Ce
programme n’cst pas & utiliser tel
quel, mais A ajuster en fonction de
votre configuration et de vos besvins.
Et si vous y rajoutez d’autres
sous-routines, envoyez-les nous...
Le programme-objet correspondant au
listing ci-contre... n’existe pas ! Il
serait absurde, puisqu’ il consisterait &
défaire ce qu’il vient de faire. A la
place, sur la disquette Pom’s, vous
trouverez six fichiers correspondant
aux six fonctions du programme,
(PURGE. MEM, MODBRAM, TRANSWARP
FAST, TRANSWARP SLOW, TW.IRQ
. FAST, TW. TRO. SLOW).
Références
+ Sur la partie “ModBram” et les
divers Quit, voir Pom’s 41.
+ Sur le Memory Manager et le
Miscellaneous ToolSet, voir
Toolbox Reference, volume 1, et
la mise & jour Apple IIG S$
Toolbox Reference Update (pour
RealFrecMem par exemple ; un
indispensable).
NB pour avoir une synthése
compléte et rapide des appels outils,
plutét que les deux volumes Apple de
Quick Reference (C et Assembleur), je
conseille le Programmer's OnLine
Companion pour le C et le Pascal,
Merlin 16 et ses ToolHelp (qu'on peut
adapter pour APW) pour I’ assembleur.
* Sur la carte Transwarp GS : voir le
“Programmer’s Reference”, inclus
dans la documentation francaise.
2.
oozz8o
00226
00226F :
02291 :
ovzz9s
002298 :
092292 :
002290 +
oozzat :
0022a5 :
002206 :
0022A7 +
0022A8 :
0022A9 :
00228A :
oozzac :
002280 :
002283 :
002285 :
002289 :
9022BA :
0022BB :
0022B¢ :
002280
00zzBE :
0022c0 :
oo22c4 +
ooz2c7 :
9022¢9 :
oo22co :
0022cE :
oo2z2cr :
a2
22
22
38
FB
60
18
FB
c2
ar
D0
22
38
FB
60
ar
co
22
38
FB
60
00
a4
0B
or
ic
oo
54
04
00
54
o4
38
Fe BC
57
=22B9
FF ac
FF OBC
57
-22c0
FF BC
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
U6
317
ous
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
252
323
354
355
356
357
358
359
360
361
362
363
364
365
366
367
4 TRANSWARP SLOW : cette routine reconfigure la *
* carte accélérateur Transwarp GS d’Applied *
4 Engineering pour tourner 4 2,6 MHz (vitesse *
+ “rapide du CS). é
PO RER AH AP AREA HE RARER RA AERA RA RHEE ED
wx att + Assemblage 8 bits
TWSLOW CL 7 passage en 16 bits
XCE
REP $00110000
LDA >$BCFFOO + vérifie la présence de
cme | #eTHe ¢ la carte Transwacp
BNE :END
wx Hn + vitesse 2,6 MHz
ISL SBCFFIC + Index2Freq
vst BCFF24 —_SetCurSpeed
END SEC + repasse en 8 bits
XCE
RIS
* IRQFAST : cette routine reconfigure la
4 carte accélérateur Transwarp GS d’Applied
Engineering pour ne pas se ralentir durant les
Inteccuptions.
Pprrrrest rier eri tte tree ee eee ee
Mx 411 7 Assemblage & bits
IRQFAST CLC 7 passage en 16 bits
XCE
REP 400710000
LDA >S$BCFFOQ ; vérifie ta présence de
cup ON’ TH" + la carte Transwarp
BNE :END
JSL $BCFF34 + _supprime le ralentisse-
¢ ment de la Transwarp
durant les interruptions
END SEC + repasse en 8 bits
xCE
RIS
PALA EAA AAEM RA AUER ARAN ERAEHA AAAS AAAS AERO AU ADEE EE
IRQSLOW : cette routine reconfigure la .
carte accélérateur Transwarp GS d’Applied ‘
Engineering pour se ralentir durant les .
interruptions. .
Povrsrrreererrrerrrerrerreti titi tet erestri rrr a
MK 11 ¢ Assemblage 8 bits
IRQSLOW CLC + passage en 16 bits
XCE
REP 400110000
LDA >SBCFFOQ ; vérifie la présence de
one aT + la carte Transwarp
BNE END
JsL SBCFF38 = ;_ rétablit le ralentisse~
+ ment de la Transwarp
sdurant les interruptions
END SEC 7 repasse en # bits
XCE
RTS
14
Pom’s n° 44
eS eee a...
Les nouveaux.
TimeOut
Comme le dit la sagesse populaire, un
bonheur n’arrive jamais seul...
Pom’s vous propose un joli doublé pour la
rentrée 1989 : MacroTools.I et
DeskTools.II dans leur version
frangaise, qui viennent compléter une
panoplie déja impressionnante d’appli-
cations TimeOut. Deux disquettes truffées
de morceaux de choix. En voici un survol,
a l’intention de tous les adeptes
d’ AppleWorks.
MacroTools.II
Une vingtaine de macros fort diverses feront la joie des
programmeurs, mais aussi de tous ceux qui se préoccupent
moins du “comment ga marche” et souhaitent plus
prosaiquement s’équiper d’ outils “préts a l'emploi”.
Pour les premiers (par prédilection), deux macros tout & fait
inédites :
— une macro “Désassembleur”, qui traduit automati-
quement n’importe quelle petite routine écrite en
langage machine en “pokes” compréhensibles pour
UltraMactos ;
— une macro “Clavierlnterdit”, qui détourne Ja fonction
habituelle des macros <ato> pour en faire des
sous-routines inaccessibles a partir du clavier et
uniquement “appelables” par une autre macro, d’od un
double avantage : aucun risque de déclencher par
inadvertance une sous-routine malencontreuse, et
disponibilité d’un jeu complet de définitions pour les
sous-routines (qui ne feront jamais double emploi avec
les macros a “part entiére”).
Pour les deuxiémes (mais non exclusivement, bien sfir),
une macro d’impression de Traitement de textes sur deux
colonnes, une macro de chainage de Bases de données “en
paralléle”, histoire de disposer de “pseudo-fiches” de 60,
voire de 90 catégories...
Dimitri Geystor
Pour tout le monde, sans ostracisme, des macros pour caler
la date et l'heure d’ AppleWorks, avec et sans horloge. Et
pour les possesseurs de GS, la saisie de l’heure 4 la seconde
pres.
Des macros encore pour :
— copier l’écran dans le presse-papiers ;
— envoyer des codes a votre imprimante ;
— utiliser l'imprimante comme une vulgaire machine &
écrire ;
— charger d’un coup toutes vos applications TimeOut
méme s’il y en a plus de 30, trouver sans douleur et
précisément les coordonnées de tout point de l’écran.
Parmi les fichiers de la disquette, vous trouverez aussi un
tableau récapitulatif de toutes les macros UltraMacros déja
publiées dans Pom’s.
Et -je réservais la bonne surprise pour Ic dessert- il n’y a
pas que des macros sur cette disquette. Vous y trouverez
aussi quatre mini-applications TimeOut inédites :
@ Avec “Changer BIP” vous pourrez. modifier rapidement
et précisément le BIP d’ AppleWorks.
®@ Grice a “Lister.Type” vons saurez lister sélectivement,
avec AppleWorks, n'importe quel type de fichier (au
lieu de vous heurter & la dénomination “autres” dont il
affuble globalement tout ce qui n’est pas TdT, BdD ou
Tableur).
® La mini-application “Références” vous donnera instan-
tanément une “photographie” du statut actuel
d’AppleWorks : lecteur actuel, nom d’accés ProDOS actuel,
fichier actuel, nombre de fichiers sur le Bureau, occupation
et type du Presse-papiers.
® L’application “Noms d’accés” est modeste par la
place-mémoire qu’elle occupe, mais elle m’est vite
devenue tout a fait indispensable : elle se présente sous la
forme d’un écran, appelable par C-Escape, oi vous pouvez
inclure & l’avance (et en permanence par configuration, si
vous le souhaitez), jusqu’a 12 noms d’accés ProDOS
prédéterminés. Pour changer le “chemin actuel”
d’ AppleWorks, pointez et cliquez : imbattable en simplicité
et en rapidité.
Pom’s n° 44
15
een |
I3.4
DeskTools.II
Il faut le dire tout de suite, le titre anglais “Accessoires de
bureau” me semble pécher par excés de modestie. La
calculatrice scientifique/financiére “Calculator+” est un
authentique programme & part entitre (méme s’il cst
appelable & tout moment directement 4 partir
d@ AppleWorks, avec lequel il sait échanger ses données).
Quant aux autres applications, il serait plus exact de les
traiter de prolongements naturels d’ AppleWorks, plutét que
d’accessoires, vu la connotation de futilité qui accompagne
généralement ce demier vocable.
Mais jugez plutot par vous-mémes :
Accés direct
Vous avez des disques a forte capacité (3,5 pouces, ou
disque dur), et malgré tout Ie soin que vous apportez 4 vos
classements vous ne retrouvez pas toujours facilement tcl
ou tel fichier ? Vos soucis appartiennent désormais au
passé : “Accés direct” se charge de tout.
® “Accés direct” vous demande d’abord quel lecteur, ou
quel catalogue vous voulez examiner.
@ I demande ensuite si vous voulez voir :
— les fichiers AppleWorks seuls ;
— tous les fichiers ;
— les fichiers dont le nom contient une chaine de
caractéres déterminéc.
Ces informations enregistrées, “Accés direct” fait son
travail : il lit tout le catalogue avec tous ses sous-
catalogues et affiche un superhe tableau de tons les fichiers
désignés. Les fichiers des sous-catalogues sont indentés, et
précédés d’un, de deux ou de plusieurs points correspondant
aux “niveaux” de leurs sous-catalogues.
Ce super-catalogue est imprimable, en entier ou par écrans.
On peut aussi le faire défiler 4 l’écran avec la souris, vers le
haut ou vers le bas, autant de fois qu’on le désire.
De plus, les fichiers spécifiquement AppleWorks (TdT,
BdD ou Tableur) sont signalés en marge par une petite
pomme. II suffit de cliquer dessus, et aussit6t le fichier
sélectionné est chargé sur le Bureau, tandis que son préfixe
devient le “chemin actuel” d’ AppleWorks !
Je n’en dis pas plus, c’est tout bonnement magique.
Calculator+
Si vous voulez faire vos comptes d’épicerie sur cette
calculette, ce n’est certes pas interdit, mais 1A n’est pas sa
véritable vocation.
Il s’agit d’une calculette scientifique et financiére a
Notation Polonaise Inverse (NPI). Les opérations et les
formules les plus complexes s’écrivent au moyen d’une
petite pile de 4 variables. On met des données dans les
variables, on leur applique une opération ; le résultat passe
au sommet de la pile tandis que les variables (dont on n’a
plus besoin) sont purgées. Et ainsi de suite. Cela ne vous
rappelle rien ? Ce n’est pas autrement que procédaicnt nos
grands-parents sur leurs bouliers.
Sauf qu’ici, nous travaillons avec tout le confort de
L’électronique, que nous pouvons chaisir la base (décimale,
hexadécimale), le format (jusqu’a 16 chiffres significatifs,
nombre de chiffres aprés la virgule, notation scientifique),
les fonctions (trigonométriques, exponentielle, logarith-
mique, etc.), les options financitres (amortissement, verse-
ments, dépét périodique ou global, valeur actuelle ou
acquise).
Les valours peuvent étre introduites & la main, prélevées
dans une cellule de Tableur, et “exportées” dans toute
application AppleWorks. Les connaisseurs apprécicront.
Chronométres
Cette application donne le meilleur d’elle-méme sur le
IIGS, car elle chronomtwe & la seconde pres. Elle
fonctionnera aussi sur tout autre Apple // muni d’une
horloge, avec un précision d’une minute. Vous n’avez pas
d’horluge ? Désolé, attendez-moi un instant, on se retrouve
4 l’application suivante.
® Vous disposez non pas d’un mais de cing chronomttres,
et pouvez mesurer jusqu’a cing événements distincts.
Chaque chrono donne |’heure du début, de la fin et le temps
écoulé.
@® Vous pouvez méme ajouter & chaque événement, une
note explicative. Une fois les chronos démarrés, vous
pouvez revenir 4 AppleWorks, et continuer ce que vous
aviez a faire : le chronométrage continue. Vous pouvez,
bien entendu, consulter 4 nouveau le chronométre - ou
l’arréter a votre gré : il suffit de revenir a |’application par
G-Escape.
Eteindre écran
L’écran s’obscurcit aprés un compte a rebours de quelques
secondes. Pour le réactiver, appuyer sur une touche.
Ah oui, il y a un petit “extra” : on peut configurer cette
application pour que 1’écran ne revienne que si vous tapez
un code secret de votre choix. Tant pis pour les petits
16
Pom’s n° 44
curieux qui voudraient ausculter le travail en cours pendant
que vous vous étes momentanément absenté,
Gérer imprimantes
Avec cette application, vous pouvez envoyer tous les codes
que vous voulez directement aux imprimantes définies dans
AppleWorks.
La configuration est trés riche en possibilités. Vous
décrivez les commandes (14 par imprimante), et leur
attribuez Ics codcs 4 envoyer (jusqu’a 10 octets par
commande).
A I'appel de l’application, il suffit ensuite de donner le
numéro de la commande pour que celle-ci soit immédia-
tement exécutée, c’est-a-dire transmise a l’imprimante en
ligne.
Ceci permet l’envoi & volonté de tous les codes simples
(caractéres gras, souligné, caractéres par pouce, appel du jeu
de caractéres spéciaux, etc.), mais aussi une gestion
complexe du travail de l'imprimante si vous en connaissez
un peu les principes.
La configuration est ts simple a faire, et je me suis
apergu que cette application est un outil idéal pour tous les
“travaux pratiques” indispensables quand on veut
perfectionner sa propre compréhension du manuel d’une
imprimante.
Imprimer écran
Une application toute simple mais exuémement utile. En
fait, elle permet d’imprimer (avec l’imprimante G-H)
n’importe quelle partie de l’écran. On définit un bloc de
texte avec les fléches (ou Ja souris), en le mettant en
inverse vidéo. On valide : le bloc sélectionné est
immédiatement imprimé.
D’un emploi ultra-facile et intuitif.
Prospecter fichier
Voila un outil trés incisif : il permet la recherche d’une
séquence de caractéres dans des fichiers AppleWorks sur
disque.
Vous avez bien lu : la recherche porte sur le contenu des
fichiers. L’application est donc d'une grande puissance, &
vous de savoir bicn la manicr. La prospection se fait
d’ailleurs a une vitesse surprenante, si l’on tient compte du
fait que le contenu entier du fichier est passé en revue.
La recherche en cours peut étre nuancée : comme pour la
fonction -L d’AppleWorks, vous pouvez choisir “Texte
brut” ou “Image exacte”; de plus, la chaine indiquée peut
tre limitée —ou non— aux seuls mots entiers. Par
exemple, si vous choisissez la chaine “PAS”, l’application
ec
654)
eH
retrouvera selon le cas uniquement le mot “pas”, ou aussi
“passablement”, “dépassé”, etc.
En cours de recherche, une fenétre d’information s’affiche
au milieu de 1’écran. Elle indique le déroulement de la
Pprospection : nom du fichier prospecté, type de ce fichicr,
chaine cherchée, emplacement de. chaque chaine trouvée (le
contexte est affiché). On peut a tout moment poursuivre,
charger le fichier sur le Bureau, ou arréter. En fin de
recherche, un petit bilan s’affiche dans la fenétre : nombre
de fichiers prospectés, et nombre de correspondances
trouvées,
La grande classe, quoi. Et le grand confort !
Vérifier disque
Cette application wavaille en deux modes : Lecture simple,
ou Lecture/Ecriture. Elle lit un disque entier bloc par bloc
(et le réécrit au fur et A mesure dans la deuxiéme option).
Vous pouvez l’interrompre & tout moment par Escape.
Si elle rencontre un bloc défectueux, elle le signale et fait
une pause avant de continuer.
A employer si vous n’arrivez pas a charger un fichier
AppleWorks. Si aucune erreur n’est détectée, l’erreur est
dans le libellé du fichier ou du catalogue. Si une erreur est
détectée, le défaut est dans la disquette elle-méme, ou dans
les données du bloc. De toute fagon, ce n’est pas dréle,
mais un homme prévenu en vaut deux...
Voir Presse-papiers
Indique le type des données du presse-papiers, et montre son
contenu 8 !’écran,
Particulitrement utile si vous employez l'application
Triple Presse-papiers de Randy Brandt, et n’étes plus tout &
fait sfir du contenu de I’un des presse-papiers : maintenant
vous pouvez vous en assurer sans avoir a essayer de le
copier dans un fichier (avec toutes les manipulations et
fausses manceuvres qui vous menacent si vous tentez. de
copiez un presse-papiers dans un fichier de type
différent...).
Non seulement le contenu du presse-papiers peut étre
consulté, mais il peut étre sélectivement effacé (ligne &
ligne pour du TAT, fiche a fiche pour une BdD, ligne ou
colonne pour un Tableur).
Pom’s n° 44
17
18
Programmation AppleWorks
Des Ascii et des pommes
Je vous propose aujourd’hui d’explorer certains compor-
tements d’ AppleWorks, et d’UltraMacros.
Il sera question surtout de lecture ct d’affichage de caracttres
al’écran, dans le traitement de textes.
A titre d’illustration, je montrerai comment !’on peut, sans
trop de peine, créer avec UluaMacros de jolies fenétres de
messages a l’écran, avec caractéres normaux, MouseText et
méme en inverse vidéo. (La disquette d'accompagnement
optionnelle Pom’s 44 comporte le fichier Macro. Fenétre
prét a l’emploi).
Pour travailler & l’aise je vous recommande d’avoir sous la
main le fichier de macros SuperP rint . um de Daniel Lurot
(Pom’s, n° 42), la disquette PathFinder de Randy Brandt (et
plus précisément l’application TimeOut “Valeurs ASCII”
qu'elle contient), Ceci n’a rien d’obligatoire mais, 4 moins
d’étre masochiste, pourquoi travailler, comme on dit, avec
“une main attachée derriére le dos” ?
En cours d’article, j’expliquerai aussi pas-&-pas comment
utiliser l’utilitaire Block. Warden de ProSel — a l’intention
de ceux d’entre vous qui possédent ProSel, |’emploient
pour lancer des programmes, mais n’ont jamais osé s’en
servir pour “€diter” un fichier. Il n’y a rien de sorcier
1-dedans.
Je vous recommande enfin de transformer vos fichiers
SuperPrint.um en fichier Task, selon la méthode décrite
dans mon précédent article, au moyen de |’application
Macro Options. Ainsi, vous pourrez y accéder instan-
tanément en cas de besoin. Quant aux petites macros qui
émaillent l’article, avant le macro-programme proprement
dit, vous pouvez soit les compiler toutes d'un coup (aucune
ne porte le méme nom), soit les compiler au fur et &
mesure de votre lecture.
Bon, j’en viens & mon propos. Faisons un peu d’explo-
ration, en commengant par le plus banal.
Le clavier
Quand vous appuyez sur une touche, ou une combinaison
de touches, un signal est envoyé a votre ordinateur sous la
forme d’un code, dit code ASCII. C’est un nombre, de 0 a
255 en notation décimale, ou de $00 a SFF en notation
hexadécimale.
Dimitri Geystor
Le manuel d’UltraMacros conticnt, cn derniére partie, une
table des valeurs ASCII qu’il est commode de consulter
d’un seul coup d’ceil. Vous constaterez tout de suite que les
caracttres sont au nombre de 128 sculcment, deux valeurs
étant attribuées & chacun d’entre eux, une valeur “basse”, et
une valeur “haute”. La différence entre I"une et I’autre est
toujours de 128, ce qui correspond justement 4 la valeur du
huitiéme bit d’un octet.
Si vous avez “Valeurs ASCII” sur votre menu TimeOut,
appelez-le, et parcourez les divers codes en promenant la
souris de gauche & droite. Puis faites “Return” deux fois, et
tapez sur une touche ou une combinaison de touches : les
codes correspondant s’afficheront aussit6t.
2
L’écran
Votre Apple II profite de cette double attribution de codes
pour afficher les caractéres de deux facons différentes : le
mode “ordinaire” et le mode “inverse”. Si, de plus, votre
Apple dispose des ROMS qui accompagnent le processeur
65C02 (c’est le cas de toutes les machines récentes) il vous
est possible d’afficher A I’écran un jeu de caractéres
supplémentaires “MouseText”. Si vous programmez en
Basic Applesoft vous savez qu’il faut, pour activer ct
désactiver ce jeu de caracttres, envoyer des codes de contréle
spéciaux.
Les choses se passent autrement avec AppleWorks.
Comment AppleWorks interpréte-t-il le code envoyé par le
clavier ? Et qu’affiche-t-il & l’écran ? AppleWorks fait un
double filtrage A sa maniére, de telle sorte qu’il est
impossible a l'utilisateur de taper directement des caracttres
en Inverse ou MouseText. Ces caractéres ne sont
accessibles qu’a travers des routines internes.
Pour toutes les valeurs ASCII basses comprises entre 32
(Espace) et 126 (Tréma), AppleWorks affichera & I’écran le
caractére “normal” correspondant a (ASCII + 128). La
valeur 127 correspond au “Delete”.
Les valeurs “hautes” sont, pour AppleWorks, des
commandes “G-". Il y réagira s’il les reconnait, ou enverra
un “BIP” si cllcs lui sont inconnues.
Pom’s n° 44
Les commandes UltraMacros
liées aux codes ASCII
Key
UltraMacros posséde une commande qui permet de lire la
touche qui a été enfoncée. C’est la commande <key>.
Exemple :
ki<awp
msg “ Appuyez sur une touche ou un
e combinaison de touches ”:
k=key (attend qu’on appuie sur
une touche)
msg k>! (la valeur de la touche
est dans la variable k)
Quand vous actionnez cette macro, et que vous appuyez
ensuite sur une touche ou une combinaison de touches, elle
vous renvoie en message de bas de ligne le code ASCII
correspondant, tel qu’envoyé par le clavier et regu par
AppleWorks. Essayez par exemple de taper “M”, et la
valeur renvoyée sera 77 en décimal. C’est la valeur ASCII
basse, ou valeur ASCII avec le huititme bit a zéro. Essayez
maintenant la macro avec “ G-M”, La valeur renvoyée sera
205 , soit 77 + 128. C’est la valeur ASCII haute, ou la
valeur ASCII avec le huitiéme bit a 1 (le huitiéme bit vaut
128).
Compte-tenu de ce qui précéde, vous voyez que <key> lit la
touche telle qu’AppleWorks |’ interpréte.
Print
Au lieu de taper un caractére au clavier, on peut l’envoyer &
AppleWorks par la commande <print>. Exemple :
P:<awp
print "M”>! (élémentaire,
Watson)
mon cher
On peut aussi d’abord définir une chaine, puis imprimer la
chaine :
q:<awp
$1="M" (on définit la chaine)
print $1>! (on 1’imprime)
Chr$, Asc $, Str$
Dans la macro ci-dessus, on aurait pu définir la chaine &
partir d’une valeur ASCII. L’intérét d’une telle définition
est qu’on peut envoyer 8 AppleWorks des commandes
“-quelque-chose” :
ri<awp
$l=chr$ 177 (177 = code ASCII pou
x oa-1)
print $1>! (on envoie la command
e a AppleWorks)
Elle permet aussi de transmettre des touches. En général,
on ne change pas la valeur de k. Mais si l'on s’amuse, par
exemple, a incrémenter k d'une unité, cela donne :
f:<awp (Clavier fou. Quitter avec Esc)
begin
k=key ifnot k=27
k=k+1 print chr$ k:
else stop >!
Actionnez cette macro, et essayez de taper du texte...
xrpt
Revenons & la macro sa-r, et compliquons-la un peu, en lui
faisant donner le code ASCII du caractére imprimé (la
commande <ase $> lit la valeur ASCII du premier
caractére d’une chaine) :
S:<awp
$1="M” (on définit la chaine)
print $1 (on 1’imprime)
k=ase $1 (la variable k contien
t le code ASCII de $1)
msg k >! (k est imprimé en mess
age de bas de ligne)
La commande <str$>, quant a elle, transforme une variable
numérique en chaine de caractéres. La macro ci-aprés
imprime la caractére M et sa valeur ASCII :
t:<awp
$1-"M”" (on définit la chaine)
k=asc $1 (la variable k lit le
code ASCII de $1)
$2 = str$ k (on transforme la vari
able numérique en chaine)
print $1 + “ =” + $2>! (on imprim
e 3 chaines “concaténées”)
Peek $10f5
Cette commande analyse le caractére sous le curseur (dont
AppleWorks conserve le code a l’adresse hexadécimale
$10f5) et renvoie la valeur de ce code ASCII dans la
variable numérique désignée. Exemple :
c:<awp
k=peek $10f5 (envoie le contenu de
$10£5 dans la variable k)
msg k>! (affich k en bas de ligne)
Si le curseur était sur un “M”, surprisc, cc n’cst pas 77
mais 205 (77 + 128) qu’affiche le message. Eh oui, c’est
ainsi, autant le savoir : la commande <peek $10f5>
renvoic la valcur haute du code ASCII du caractére sous le
curseur.
Poke $10f5,x
La, nous nous aventurons un peu. L’hypothése étant : si
<peek $10£5> lit la valeur du caractére sous le curseur,
pourquoi ne pas bluffer AppleWorks en mettant une
quelconque valeur ASCII dans cette mémoire ? Essayons :
m:<awp
k=193 (valeur haute de “A”)
poke $10£5,k>!
Pom’s n° 44
19
20
Ah, mais ca a l’air de marcher ! On actionne-la macro, et
un “A” apparait sous le curscur. Hélas, c’ciit été op beau.
On a bien mis un caractére & |’écran, mais en prenant un
raccourci, et AppleWorks n’est malheureusement pas au
courant. A la premitre occasion, il réécrira par-dessus ce
que lui, AppleWorks, est censé mettre a cet endroit. Faites
Escape deux fois de suite, et pfuiit ! votre caractére de
contrebande cst cnvolé,
Ne nous décourageons pas, et poursuivons notre
exploration : du moment que <peek ¢10£5> envoic la
valeur haute du code ASCII, que se passera-t-il si nous
faisons un <poke $10f5> avec la valeur BASSE ?
Essayons :
vis<awp
k=65 (valeur basse de
poke $10£5,k>!
“a”)
Et voila une jolie pomme. On ne peut pas |’effacer par
Delete, mais elle disparait si l’on écrit par dessus (méme en
mode insertion) et, comme tout a I*heure, elle s’évanouit
définitivement au moindre “rafraichissement” d’écran (par
Escape ou défilement).
Essayons de la capturer en la mettant dans la macro zéro
($0) avec la commande G-/ : aie, c’est “A” qui nous
revient, bien permanent cette fois, mais ce n’est pas ce que
nous voulions.
Essayons de la copier avec G-C : elle s’envole aussitét,
avant méme qu’on ait pu la saisir.
Et pourtant, n’y a-t-il pas quelque chose & tirer de cette
nature fugace ? Si seulement, au lieu d’afficher un seul
caractére, on pouvait en afficher plusieurs, on tiendrait 12
une fagon de mettre & I’écran (a l’endroit du curscur) des
messages “propres”, qui disparaitraient ensuite sans laisser
de traces en restituant le texte qu’ils auraient
éventuellement oblitéré.
Eh bien, ca marche sans probléme. Par exemple :
u:<awp
k=64
begin
poke $10£5,k right
k=k+1 ifnot k=96 rpt else slop>!
Mettez le curseur en début de ligne, et tapez sa-u pour voir
s‘afficher les caracttres MouseText.
De 1a, cependant, 4 pouvoir afficher commodément un
message dans une fenétre, avec la possibilité de modifier
facilement et le message, et la position de la fenétre, il y
avait plus qu’un pas a franchir. C’est ce que fait le
macro-programme que je vous présente en fin d’article.
Mais avant de l’aborder je ferai un détour par Block. Warden,
Péditeur d’octets de ProSel, et pour ceux qui ne I’auraient
Pas, par SuperPrint. um (les macros de Daniel Lurot du
n° 42 de Pom’s). Enfin, ceux qui n’ont méme pas les
macros SuperPrint.um trouveront quand-méme en fin
d’article la macro sa-$ de Daniel Lurot, qu’ils pourront
recopicr soigncusement a la main, compiler ct utiliser pour
introduire de fagon permanente des caractéres spéciaux
(MouseText ou Inverse) dans un fichier de traitement de
textes AppleWorks,
En effet, s’il fallait par la méthode des <poke $10£5> créer
une fenétre (cadre composé en partie de caractéres
MouseText, et en partie de caractéres ordinaires), et y
mettre un texte qui contienne au choix des caractéres
ordinaires, MouseText ou inverses, la tache serait fort
laborieuse. De plus, il serait tres difficile de modifier le
texte du message.
Or nous savons (depuis le n° 42 de Pom’s), que des
caractéres spéciaux peuvent étre introduits de fagon
permanente dans un fichier TdT AppleWorks, et qu’alors ils
sont copiables 4 volonté par la commande G-C. J’ai
constaté en outre qu’ils étaient lus correctement dans tous
les cas par la commande <asc $>. Il est donc possible de
créer d’avance des chaines composées de caracttres mixtes,
qui serviraient de modéle a celles du message afficher ; il
suffirait ensuite d’écrire une routine qui les lirait, caractére
par caractére, avec la commande <ase $>. Créer ces
caractéres avec SuperPrint.um est un jeu d’enfant, je n’y
reviendrai pas. Je dirai quelques mots par contre de l'emploi
de Block. Warden, de ProSel. Si vous vivez (heureux ?) sans
ProSel, sautez la partie qui lui est consacrée.
Tant que yous étes dans AppleWorks, créez un petit fichier
de Tdt que vous nommerez Essai. Tapez-y trois fois de
Suite la ligne suivante, en changeant le numéro du début :
(4) 4aABCD
EFGHTIKILMNOPQRST
UVNXY ec J*
(avec un espace entre chaque caracttre, et une ligne vide
entre chaque ligne).
Sauvez Essai, quittez AppleWorks. Vous étes maintenant
dans 1’écran s€lecteur ProScl,
ProSel : A partir de l’écran de sélection principal, tapez les
deux chiffres qui correspondent au Port et au Lecteur oi se
trouve la disquette qui contient le fichier Block. Warden. Par
exemple 51 pour le Port 5, Lecteur 1.
Vous verrez. s’afficher une liste de fichiers-programmes (en
majuscules) et de sous-catalogues (en minuscules). Si
Block.Warden n’est pas visible, sélectionnez le sous-
catalogue qui le contient (probablement “util”).
Sélectionnez et validez Block.Warden. I] faut maintenant
lui indiquer oii est votre fichier Essai. Changez au besoin
de disquette (Block. Warden reste en mémoire), et indiquez le
préfixe ProDOS. Pour cela tapez sur la touche “P” : une
fenétre apparait, avec un préfixe par défaut qui n’est sans
Pom’s n° 44
doute pas Ie bon. Tapez Ic préfixc voulu, cn commengant
bien par une barre oblique (/).
Par exemple /traveil/tdt /. Faites Return, et le préfixe
actuel s’inscrira & gauche en haut de I’écran. Maintenant,
tapez “F” pour appeler le fichier. Une fenétre s’ouvre, avec
“Follow/Info pathname”. Tapez le nom du fichier, sans
barre oblique. Par exemple “Essai”. Faites Retum.
L’écran change aussitét, et vous devriez y voir déja des
choses familiéres. Cet écran est divisé en deux parties : 4
gauche, les valeurs hexadécimales de tous les octets du
fichier, & droite leurs équivalents en caractéres ASCII. En
haut 4 droite de I’écran, la mention “R/W mode”, c’est &
dire mode Lecture/Ecriture. On circule écran par écran, avec
les fléches haut/bas. Un bloc occupe deux écrans.
Tapez sur la touche “E”. En haut & droite, la mention est
maintenant “Edit mode”. On circule caractére par caractére
avec les fléches haut/bas et droite/gauche, et l'on fait passer
le curseur au choix dans la partie droite ou gauche de l’écran
avec la touche TAB. On ne peut éditer qu’un bloc a la fois
(deux écrans). Pour revenir au mode R/W, taper Escape.
Pour sauver les changements, taper W pour “write” suivi de
Retum, et valider avec la touche “Y”.
Repérez, dans la partie droite de l’écran, les trois lignes de
caractéres que vous aviez tapées dans AppleWorks. Mettez
Je curseur sur le “a” de la premitre ligne, et faites TAB : le
curseur saute & gauche sur le code hexadécimal
correspondant, qui doit étre 40. ‘apez cO (c'est a dire unc a
la place du 4 ct aussit6t aprés un zéro). Le curseur est
maintenant sur la valeur 20, qui est le code hexadécimal de
Pespace. Avec la fléche a droite, allez sur la valeur suivante
qui est 41, et tapez cl. Continuez ainsi, en remplagant les
4 par des c, et les 5 par des d, jusqu’au demier caractére de
cette ligne du fichier AppleWorks, qui est Sf, et qui doit
devenir df. Faites Esc pour revenir au mode R/W, tapez W
et Return, suivi de Y. Le disque tourne, les modifications
que vous avez apportées ont été enregistrées.
Revenez au mode “Edit” avec la touche “FE”, et modifiez les
deuxitme et toisitme lignes de la méme manitre, mais en
remplagant les 4 et 5 par des e et f dans la 28me ligne, et
par des a et b dans la 3éme (donc, de e0 a ff, et de a0 a bf).
Sauvez, el quittez Block.Warden en tapant “Q” suivi de “Y”
pour confirmer.
Lancez AppleWorks, chargez le fichier Essai, et admirez
votre ceuvre. Si vous n’avez pas fait de faute, les trois
lignes sont devenues :
®
BBEEABREHE
DHRU Oe
@ #¥44-L3H#8ca/eleF |
@ BEESRORORABEDees
@ BESSHOUNEABRDEeS
En dépit des apparences, les lignes (2) et (3) ne sont pas
identiques. Mais il est impossible de distinguer facilement,
a partir d’ AppleWorks, les caractéres des séries (2) et (3).
Une solution est de recopier le caractére & tester dans la
macro suivante, de la compiler et de l’exécuter ; elle
affichera le caractére spécial en inverse vidéo, et indiquera sa
valeur ASCII en bas d'écran.
w:<awp
$1="M@” (définition de la chaine)
vease $1 (lecture de la valeur ASC
IT du ler caractére)
n=v+128 (on inverse le 8éme bit)
aif n>255 n=n-256 elseofft
poke $10f5,n (on poke la nouvelle
valeur)
msg n>! (et on l’affiche aussi en
bas d’écran)
Voici les caractéres qui correspondent a la série (3) :
@G) !"#$%&?()*+,-./0123456789:;3<
=>?
Devant Ic point d’cxclamation, il y a un espace (non
visible).
Nous voici maintenant préts 4 construire notre
macro-programme.
La premiére tache est d’écrire les chaines qui formeront la
fenétre. Elles logeront dans la sous-routine ba-2. Tapez ces
chaines au clavier, directement pour les caracttres
“normaux”, et avec la macro sa-$ de Daniel Lurot (donnée
en fin d’article). Vous pouvez aussi copier caractére par
caracttre a partir des trois lignes obtenucs avec
Block.Warden. Si vous avez essayé I’un et l’autre, vous ne
douterez pas de la supériorité écrasante de la macro.
Pour changer le texte du message, il suffit de modifier les
chaines, Pour déplacer la fenétre, il suffit de changer les
coordonnées dans la macro ba-1.
La macro de démarrage ba-1 positionne le curseur au coin
supéricur gauche de la future fenétre, puis passe aux
sous-routines.
Note 1 : Les routines ba-3 et ba-4 utilisent la notation $(k)
pour désigner les chaines, ot k est une variable que |'on
incrémente : notation trés pratique quand une série de
chaines doivent subir le méme traitement.
Note 2 :Lapartieif n > 255 n = n - 256 elseoffde
la macro sa-v ci-dessus a été omise : on peut s'en
passer, AppleWorks rétablit la valeur ASCII dont il a
besoin. Dans la routine ba-4 on peut aussi mettre
v=v-128, le résultat est le méme.
Pom’s n° 44
21
22
Macro.Fenétre
START
Macro principale :
<ba-1>:<awp (repérages et mise en place
du curseur)
insert (mode insertion pour un cur
seur moins voyant)
G-up ba-left (curseur en haut a ga
uche de 1’écran)
posn x,y (on note sa position)
x=x+25 (coordonnées du coin supéri
eur gauche...)
y=y+6 (...de la future fenétre)
begin posn a,b down b=bt+1 ifnot b=
y rpt else (on descend de 6)
begin posn a,b right a=at+l ifnot a
=x rpt else (on avance de 25)
ba-2 (lecture des chaines qui cons
tituent la fenétre)
ba-3>! (exécution de la fenétre)
Routines :
<ba-left>:<awp (renvoi du curseur en dé
but de ligne)
c=0
begin G-tab c=c+1 ifnot c=18 rpt>!
<ba-2>:<awp (Définition des chaines qui
feront la fenétre)
$1=" ”
$2="/ Exemple : Message j#
$3="/ en caractéres ag
$4="/ normaux, MouseText f*
$5="/ et INVERSE lig
$6="/ ka
>! (Fermons la macro)
<ba-3>:<awp (boucle d’appel des chaines
successives)
k=1 (k=1 pour la premiére chaine)
begin
ba-4 down ba-5 k=kt1 ifnol k-7 rpt
else down stop>!
<ba-4>:<awp (boucle d’affichage tempora
ire d‘’une chaine)
L=len $(k) (longueur de la chaine)
v-asc $(k) (lit la valeur ASCII du
premier caractére)
v=vtl28(on rétablit le 8éme bit)
poke $10£5,v right (on poke ct on
avance)
L=L-1 ifnot L=0 $(k)=right $(k),L
(on fait sauter le premier ca
ractére de la chaine)
xpt>! (et on recommence la boucle)
<ba-5>:<awp (curseur a la ligne, et au
bord gauche)
left posn x,y if x>a rpt>!
Macros de saisie de
caractéres spéciaux
(Daniel Lurot, Pom’s n°42)
$:<awp msg ‘Tapez le caractére désiré’:
A = key msg ’’:
if A<32 then A=32+A elseoff
print chr$ A><
left:goto ba-M>!
<esc>:<awp>;<left:goto ba-M>!
<etrl-v>:<awp>6<left:goto ba-M>!
<ba-M>:<awp><
poke $800,$8d:poke $801,$08:poke $
802, $c0:
poke $803,$20:poke $804, $ld:poke
805, $6f:
poke $806,$c9:poke $807,$81:
poke $808, $d0:poke $809, $12:
poke $80a,$a5:poke $80b, $82:
poke $80c,$38:
poke $80d,$ed:poke $80e, $00:poke
80£,$7c:
poke $810, $a8:
poke $811,$b9:poke $812,$02:poke $
813,$7c:
poke $814,$49:poke $815, $80:
poke $816,$99:poke $817,$02:poke $
818,$7e:
poke $819,$20:poke $81la,$17:poke $
81b, $6£:
poke $81c,$8d:poke $81d,$09:poke $
8le, $c0:
poke $81£, $60:
call $800><oa-Z oa-7>!
%
a
Pom’s n° 44
Un nouveau CDA GS :
Ram.Use
Seize millions sept cent soixante-dix sept mille deux cent
seize octets, c’est ce que le 65SC816 de votre Apple IIGS
peut adresser, soit 256 fois plus que cc dont était capable
Pancestral 6502. Pour gérer ces 16 Mo, le GS est doté
d’une gestion de mémoire perfurmante appelée Rom Tool
02, ou Memory Manager.
Le Memory Manager
Dans le principe, le rdle principal du Memory Manager est
de comptabiliser la mémoire de telle fagon qu’en I’ utilisant,
un programme peut allouer ou désallouer des blocs de
mémoire ainsi que changer leur taille pour satisfaire ses
besoins. Le Memory Manager prend note de chaque
utilisateur de chaque bloc de mémoire, afin de ne jamais
donner plus d’une fois une zone de mémoire.
Pratiquement, pour connaitre a chaque instant l’état de la
mémoire, le Memory Manager entretient une liste lui
indiquant pour chaque bloc :
* adresse de début du bloc ;
* le statut du bloc, (s’il est dynamique, effacable...) ;
+ Putilisateur du bloc ;
* lataille du bloc.
C’est cette liste que peuvent vous donner le Memory
Mangler, CDA fourni avec la Documentation Développeur,
ct le Memory Peeker, CDA installé dans les ROMs version
01 (voir Pom’s 35 page 63).
L’ID Tag Manager
Pour étre capable de reconnaiure chaque utilisateur, le
Memory Manager travaille avec I'ID Tag Manager, qui fait
partie des Miscellaneous Tools (Tool 03). L’ID Tag
Manager est utilisé pour assigner un identificateur (ID) &
chaque programme en fonction de son type. Cet ID est
composé de trois champs :
@® Champ Type, 4 bits indiquant le type d'utilisateur :
0 = Memory Manager (Systtme, E/S, Affichage,
RamDisk...)
Application (GS.Paint, APW...)
Programme de contréle
SOS (ProDOS 8, 16 ou GS.OS...)
Tool (RamTools essentiellement)
Accessoire de bureau (CDA, NDA)
Uwe
oon oon
Ics
Patrice Neveu
6 Bibliothéque (fichier RTL)
7 System Loader
8 Fonction du Firmware ou du Systéme
9 = Tool Locator (RomTool 01)
A = Mise & jour (fichier STR)
B a F = Non-défini
Champ Type Auxiliaire, 4 bits définis par I’utilisateur.
Champ d’identification, 8 bits assignés par I"ID Tag
Manager,
Bank
FF Bloc indiqué par le
ROM du I+, //e dernier handle de
bo $FFFOOO ~~~] | Ja liste. Regroupe
le complément sur
gre |__ROM, 128Ko 32 bits, les ROMs,
AS i] la RAM existante,
ees et $4000 octets
inexistante du bank $E1 que le
Memory Manager
$E1 $EVCOOO wnnnn| 7 ne gere pas.
RAM systéme, E/S
iatrien ane et libre
wee $£02000 ------|, Bloc contenant
$EO $2000 octets du
i Foo Bank $£0 non
j RAM inexistante gérés par le MM
$12 | pour un GS 1,25Mo || et la RAM inexis-
$11 { tante
RAM pour un
GS 1,25Mo
4 ROMs sur
; RAMpourun ; O carte-mére
go2 | GS512K0
$01 Puces sur car-
RAM systéme, E/S te d'extension
affichage, et libre
ile du systéme Puces sur
goo L? 2 carte-mére
Schéma simplifié de l'utilisation
de la mémoire du GS
Pom’s n° 44
23
En pratique
Question : Comment se répartissent tous ces éléments dans
ma mémoire ?
Réponse : Faites C-Cirl-Escape, selectionnez le CDA
“Répartition de la Mev", et conformez-vous aux
indications inscrites en bas de I' €cran du CDA.
Question : Jen suis a I’ affichage en pourcentage. Qu'en
est-il ?
Réponse : Les lignes ‘MEV utilisée’ et ‘MEV libre’ sont
en poucentage de la Mev Totale. Les lignes Memory
Manager, Applications jusqu’a Non-Défini sont en
pourcentage de la MEV utilisée. La ligne RAM
Disk est en pourcentage du Memory Manager.
Au premier coup d’ceil sur le schéma simplifié de la
mémoire du GS, on a l’impression que tout est bien
organisé, Certes, mais en fait, il ne faut pas oublier que ce
schéma est simplifié 4 l’extréme et qu’en outre, deux
particulatités, signalées par les accolades y sont
remarquables.
Pour expliquer le schéma, il faut dire qu’il y a une
importante zone vide en plein dans la MEV, ainsi qu’entre
Ics banks $E0- E1 ct la ROM. Pour ne pas allouer le trou
an milien de la MEV a un utilisateur, le Memory Manager
considére qu’il Iutilise. Il fait de méme pour les ROMs et
Vespace les séparant du bank $E1. Allez-voir avec le
Memory Peeker : vous trouverez deux handles
correspondants & des blocs énormes.
Malheureusement, pour ce faire le Memory Manager
n’utilise pas un bloc fictif allant de la fin de la MEV
€tendue jusqu’au début du Bank $EO, mais un bloc allant de
Ja fin de la MEV étenduc jusqu’a la page $20 du Bank $EO
(SE02000), car les $20 premiéres pages du bank $E0 sont
réservées au sysitme, et ne sont ainsi pas gérées par le
Memory Manager. En conséquence, ce dernier mélange
allégrement de la MEV réelle et de la MEV inexistante.
De méme, parce qu’il est impossible d’allouer une zone en
ROM ou dans l’espace actuellement vide situé entre le bank
SE1 et la ROM, le Memory Manager crée non pas un bloc
allant de la fin du bank $E1 jusqu’en $FFFFFF (24 bits),
mais un bloc partant de $00E1C000 jusqu’en SFFFFFFFF
(32 bits), car la zone $E1C000 & SE1FFTF est elle aussi
réservée au systéme (E/S et carte langage).
Remarquez qu’cn considérant que la mémoire se termine en
SFFFFFFFF, Apple se réserve ainsi une porte facile vers
la compatibilité avec un processeur adressant 32 bits.
Ces deux trous dans la mémoire sont bien évidemment pris
en compte par le présent CDA, ainsi que les $6000
($2000+S4000) octets réels ‘mélangés’ @ la mémoire
absente.
Amusez-vous
Il est ues intéressant d’utiliser ce CDA sous différents
environnements tels que APW, AppleWorks, GSPaint, un
Quit ProDOS (8 et 16), I’AppleSoft, ProDOS 8, ProDOS
16, GS.OS...
GO
Source RAM.USE.ASM
Asm 0¥.Us0.COA heap RAH.Use
Filetype RAM.Use COA
exit
Source MAKE.RAM.MAC
macgen RAM.Use.COA RAM.Macros /RAMS/Macroa/=
RAM. Use. ASH
Exit
Source RAM.USE.CDA
pawsune v1.6
+ Dermot dafticher I"vtilisation de Ja menoize geree par le memory Manager, *
+ welon les 10s definis dane 12 1D Tag Manager des ttiscellanevue Touls. .
+ Pour Iassenblege / linkage é
oopy RAM.Macros
Reep kaw.use
# Bloc d'identitication de CDA .
WAUee Info Start
ate 'Repartition de Ia Mev’
de 14°RAM_Use_startup'
de 14"RAM_Use_ShutDown*
* Segnent principal du GUA .
AAM_Use_Starttp start
ming RAM tine_naen
Weate equ $20
Koad eqe $21
wedtop eqs $22
wedsem equ $23
Fizst_Hondle gequ $00811600
Pushlong £0
_retaives
Furiiong ma totale
Joe RAY totale
Jdy Aa Tocales?
te Panam
dey Retire len blocks KO £ Rl, pour savoir
cay Se trouve Je trou en RAN
sty BORae2
Purhtong £0 Demande conbien de RAM est Libre
Frectien
Polltong RM tibce
ae say rotate nav ovate — 10m Libre = HAM vtiLieee
the RA tibee
24
Pom’s n° 44
ata RAY UeL1is08
Pince pour Ie resuitar
Mode video de In Battery RAM
ora £$0014
videoto sta >$0020
+ Actichage du
imatop= 6 & WndBem= 21
Jey cer12-4
dae 0
ata sinen.y
any
ey
bp! Clear sires
clear_sizes
aumier a 0
ate aumiak_sive
ate RUDIah_Sizer?
ate Mode Mode 0 aftichage des tallies on octers
de ceFizet_Handt
dey erricar i
atx msaie
acy sandler
Passe le ler handle
Puantong Handle Franefome Je handle en adsosse
jer mndlTohde
Poll) Adreseest
shoren
ple Depile Ie fene octet (nul)
Joogn
Depile Iadrerse
Next_Mailion lay £6 Index pour Lire 110
jer Read Maillon
te
st indexation pour 1a table dex taiiien
aed £47000
ders
Garde te Type Field (nibbie 4)
Passe Le dane te nibble 9 (4221)
dere
dare
dara
xe
exp 8B
bes Indoxe
Jde es8
ele
asia
cae
Indexe
* cae apecial du Type 0 Memory Manager) qui pevt etce: *
2 . Memory Manager type $Oxxx / Statut Sux ¢
2 . fosiak : $0001 soo +
Fi . False RM $0000 sco
7 sere}
‘bre Read Length
tee 0
beg FULL Me
exp es0001
oe head Lengce
aamiek
+ can oe Rolex
lity 80
Jar Read Maillon
emp £80008
be Full
Statut des blocs du RaaDisk
dey 058
jar Read Maition
ale
acc RUMDLek Size
sca namwian_s:
ve
‘ay 2a
for Mead Meition
pip
de maenint_stvee?
fee muwDisk_siees2
bea Read Length
st Tester si l'on a atteind 1a Linite de 1a Ran situee avant Je bask $62
ruse sey 00
Jer Read aition
op onan
bee Read Length
day 2
Jer Road Maillon
op Bares?
bee Read tangth
beg Tey Next
Lit adresse du bloc
ca peut etre 1a fin de RAM ?
Fin de RAM, alors passe
Ady £8
jer Read Maillon
ele
ade Sir
ata sizes,
Pip conserve a retenue
ddy 44
Jor Road Maliton
Read Length Index pour lise 1a longeur
Aecupere Ja retenve
ss passe ay prochain meillon..
idy £810
jar Read Maillon
Tey Next
( APPLE EXPO STAND 118 >
VOS APPLE TIC
VOS APPLE IIE
VOS APPLE II GS.
N'EN REVIENDRONT PAS !
IIGS: Extensions mémoire (GS Ram et GS Ram Plus),
Alimentation permanente (RamKeeper)
Accélérateur 6.25 Mhz (TransWarp GS)
Compatibilité MS-DOS avec PC-Transporter,
Disque Dur interne 20/40/100 Mo Vulcan
Co-processeur mathématique (FastMath) ...
TIE: Extensivn mémvire, Alimentation permanente
Disque Dur interne 20/40/100 Mo Vulcan
Disque dur winchester 3.5" externe 20 Mo
Accélérateur 3,6 Mhz (TransWarp) ete ...
TIC: Extension mémoire avec ou sans horluge et
CP/AM, UniDisk 800K et kit de mise a niveau,
TOUT LE MATERIEL APPLE II sur mesure:
Apple Il GS, LaserWriter, ImageWriter 1,
LES MEILLEURS LOGICIELS pour Apple II a
des prix U.S.A dont en exclusivité:
AppleWorks GS, HyperStudio, AppleWorks 3.0
BREJOUX.AE
29 A rue Montribloud 69009 LYON
& Tel: 78.36.52.69 Fax: 78.25.50.84 wy
Pom’s n° 44
tp US,wlog
ferree) eaney erazed ef errdeg
arzzne Boot un sued
+300 p euep 2u0f2 01x OW 91 mnMTxOE OY
‘oor #20320
worsrarp ef ep e2eez or asta
eubre op wee
eozexo8ze2 §
sox op syue3@
cesar ve or evorssy
gas" 2uers0n07 Suoryens
pearsuor™
07 prowuena
47 Pronyeng
a7zas"auer10007 ouoryend
sprapoteer—
auerzonp SuoTyene
aoxkg SueTyens
017 Buotysng
eoxka BuoTueng
(07 Buotyang
07 Suoryeng
4 ue eteyorzzeP
oo
erg
era
Deyz3s263T2N—
2s" aeersonas Suorysne
pegeteor
03 preven:
$3 prongeng
ass" seersenoy Seoryene
sprarotuer™
peore Avoryens
yerke Rooryend
07 Beorvenz
09 buoreeng
a 20 ofeyor779,P,
Far aerse 909
carer seyza Dog
oretes er
ears"aurza af
02Kg‘eoertr30 Hee BuCTeAOK
oepryan Mve er eTag
ye0r3000
ones» azecus and 300, ue 72
rave) exaze ‘9 aneedap uo re
ama 30h
orrtss =r
30n Wne SueTeAON
Corr serza
suranozsnos +
oe er3erza
auranozenos +
ors" are
oxys"aurzg 20
soxkg'x ‘20135 DucTeAOK
ere
wr
oxle 138
@s7
yerouny exeeut vo 200 eedtr oun exnoty errs axon
aueysocg "eeerrraa wwe BeoTesen — eortres z7¥
eerrtes ear arr +
zeyoe2ta4~
saiow? promvend
ereze3 wey vr eezenur ue oyorsz¥
A oe ereses hee eT eed oyerzz9.¥ 40.
sseampes op azrou epsed er sump sezenuy opow ve eTwi02 ME ET ewTIY
Arag | est verze
4 29 =z epON *
ox ue =1 epoH :
#20220 ve =9 poy fepuewep epow oT #uNp BDRYOITZY +
exeaeen"iny Buren
Seeae weuraeow nea ie
jomeesBozg-en05
ae arstez
verszes wae
eavorazeres 97g
eaerT aerzg 29
FIC eba04D
abeysrzz0.p 2
19 nesedex
erazes Beg
zea3rnp wedvorg 187 do
Pax peee xf eusorzoeTes.
shez TT no erryaBye 3° ‘eyose op eagezz aT peasy eae
yaweFIEAa Top werazeres +
wodks op exer er oyrrsz¥ everr aera ref frre oN
reonss it
‘Razea"at
one et
000987
ve zeleuey Azouey of 7d 0%
oss werpesn ay
ssenart nee wt 20 evesiyan wet ef ab yaure eorrtea
NOTITE aee
norrren vem rq TrTeN Wie e9
wed been tiv Dea
7 de
worrren poey 26f
er
jepecesd eonbsewez set 270/
# ebueys sab xrd an seg
SorryeN peoy 280 ez7ess0omy
ourmres
wortren pew zat
2187 fr
L@
vy .US,WOg
wvzborg rorsu09
sv0rs0orrddy
Bas
i
1008 8>
‘
100.0%.e" 2
©
00.8
2
>
>
>
z
z
oP
na
2
©
2
»
”
©
”
”
”
ow
”
sone
EN "MOSS “ANE 1
MOON HOR, TF", HIVE. TTC AOSD ‘ANE. TT', 42 2
RION eean ‘EVE "ENSD"ANT, TT 2P
pebeyorz7¥ edeowe 12022700 ,2 2p.
MReON MREOKD ‘EVE. TE 2P
$4, LEE" meUN EON “EL 2e
eve ‘ant *uo0s9.1¥ ©)
‘ezart anit
anton HONDO "neve VE ANE Wo0ED, TT 2P
a oeerrran AoW 2 28
ARGON RRIONO "OVE "ONE "EROSD“ANT, TT, £5, TFA 2
s2ue8 '£0082.08*,
LAO WE op werseerrran .2,sMOM ‘barons ‘ouve 'wnos9 ‘Akt, EF
Len i20e%, 2 NRtOH *saNON 2, TF
essezp © azz0q
‘3ney se ezzeq
eapesp © exeaoere
evened © aney
ap300
xnwuzou
azzeq (66 =258)
je mecrne oy ovews ¢
ove ‘ove ‘Ant "én0S9, TF 2P
~_Fayzeq-uoy ,2 2p
WRIOH "RONDE "DEVE "ANT "40089. TF
has) anor 9 eevin yo
Rtn ONS "CONE EVE ANE “2083.07
caer ene oe
Haven ‘snyono "ove ‘ouve ‘aut 'un069.17
‘auasele/arenmrys euarianeg 2
sen N09 neve IVE ANT "COED. TF
—————soprot woaeds ,2
HRIORRROND "OVE “DAVE “ANT "40089. TF
(rae) seeboyzor rare 2
IRVOH “RRIOND “CVE "VE “ANT “40082, 17
~Aagesng ep sezTosse22y ,2
IRIOM ‘RONDO eve “ANE “ANT "0082,7F
———{8T0ek ROX/HRE) ETT3RO 4.2
SPRL ARON UN "RENAN "HLIDSD, UT
anvae ‘ROD "eve "OUVE ARE "400ED. IT
—ararwag ap sawmztorg 2
WRLOH "RRND "OEE AYE “ANT *H0059.1T
t ) yergwey auop >
#8tCH ‘RON "eve “DEVE ’ANT "40089, TT
———————ebeuey Azoue 2
HREON RON "OEE. TT
ene anes, p88 eM
pa0n 2 4anretE
SHR FE SPSL IS Ss ss esssssssssssses
+
fos vss) 27
(90 ons) T+
po soerden +
t
gezerzeze9 ¢
ons
ferys
re ear03
waa" sa0rz000
aas"eeske
seks
aweq2000
erpuey
reue
one
a eratrome
serzse,t 2 ea ezednooy
erroxpe,t 9p 2n0y Of 27
jexpe,T 9p seq 8T 357
quewesoerrp err zerTe 200g
1 ezaertex or ep erpovg rp sney at sees
erpery np aneH
ersrpow esse en rab gq eanos
Beer ve “eryd er eu
rab erpuew op zrazed y
aeoesc ae
azsag ar
‘errenaze eusoreo vr 020739
evan ‘even 1v0rs)
a
Pens exo
cozsst Poe
ye008¢ WT
Feve ne
Eazag wun
qt +
X erednome
red eepwe.e anya pe ane £ ue eBoxeper.7
392 enbrareusKB 03300 exter 3100 ©
expred avd yo0y ou T3,nD x eaner
ore
wcezette opr
fsuua
xa
oo
Azz vortsen pene
worryee us,p 023207 +
ezesceseo or eadem
er ateozan rouapeny
Suemenarnadrow 702 #2 euw0o 3103 0
osueaae
se tpan op emaren
“zeraer> ae ectfexz oun,
deooe7 poe
anepave "er
pay pew rde
pax wer
‘Aa30g por"peoy
or02s abe ner
00028 abe Pot
‘ZOTABID Mp o703207 ¢
worerAyp ef op eamez of extiey
ez
re
ore
bupaaszetan
ast Proves
ae ood sccstaneses Mga
sé kon Time Libraries Bn: Be 07
ae Syren iowdes 9F 02 60
ae Pesiace 7 dyoten fonction coun ae
Pay ja tates, F4 00 00
| aoe Undefined A2 0¢ 20
' 00 F4 00
parwish size de taille ds RAWDisk ue ae
pu rotale ds ¢ Seldte ae 2340:F4 05 00 F4
eS! ie ton dasciee co 07 12
BasUtilinee de Taille de 1a RY isi 2360:F4 00 00 Fa
ses F4 00 00
07 68 8p
* 24 F400 00
ed iain ; BC 07 48
: : F407 60
: Mandlen nont enregistres dass une Liste chainee. Lo oremier —* BERe OF
+ aandie est on $811600, to fomeat dee saillon eat te au : snide
+ $00..03: Adresse dv bloc nenoize ‘ 11 FA 60
* $04.05: attribute 2 aF 24°00
Rea a : 03 24 22
* $0C..0F: Handle precedent (nul pour le premier maillon) 0a OB E2 20
+ $10,113: Handle suivant (ou! pour 1e dernier mailice) ‘ Pere
oF 20 SF SF
SF SF SF
Récapitulation RAM.USE ee
2 69 6C 69
4D 65 56
Apres avoir saisi ce code sous moniteur, vous le sauvegarderez par : 2480:20 20 20 20
create Ram.Use, $b9 2490:4¢ 4¢ 4C 40
bsave Ram Use, a$2000,1$c00, 1869 24n0:40 4c 4c 4c
248 @ OF 20 4D
2000:06 00 00 00 00 00 00 00 23 08 00 00 00 OA 04 01 24C0:72 SF SF SF
2010:00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 24D0:20 20 20 20
00 01 00 00 00 00 00 2 00 40 00 20 20 20 20 24E0:20 20 20 64
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24F0:28 20 20 20
DE 07 00 00 15 52 65 70 61 72 74 69 74 69 OF 2500:20 20 20 20
20 64 65 20 6C 61 20 4D 65 56 1F 00 00 00 Ee 2510363 61 74 £9
2060:03 00 00 6B 4B AB F4 00 00 F4 00 00 Az 02 1D 22 2520:5F SP SP SF
2070:00 00 E1 68 8D 13 08 68 8D 15 08 AE 13 08 AC 15 2930:1B OF SF 58
2080:08 8£ 17 08 88 88 BC 19 08 F4 00 00 F4 00 00 Az 2540:73 20 64 65
2090:02 1B 22 00 00 El 68 8D 1B 08 68 8D 1D 08 AD 13 2551 iF SF 20 20
2080:08 38 ED 1B 08 8D 1F 08 AD 15 08 ED 1D 08 8D 21 2560:18 OE 20 53
20B0:08 F4 00 00 F4 19 00 A2 03 OC 22 00 00 E1 A9 00 2570:6C 6F 69 74
20C0:28 FR FO 0209 14 00 AF 20 00 00 F400 00 Fa RO 25R80:20 20 20 20
20D0:03 AZ OC 20 22 00 00 El EZ 20 A9 26 OF 21 00 00 2590:75 74 69 6c
20E0:AF 20 00 OO 1A 8F 20 OU 00 AY US BF 22 OU UO AY 25A0:6F 6F 6C 73
20F0:15 8F 23 00 00 C2 20 AO 2C 00 A9 00 00 99 DF 07 20 20 20
2100:88 88 10 F9 9c OF 08 9C 11 08 9c B2 07 A2 00 16 6F 69:72
aii 0 El 00 BE B& 07 &C BA 07 AD BA 07 46 AD BE 07 SF SF SF
2120:48 20 C7 03 E2 20 68 8D 9A 03 C2 20 68 8D 9B 03 OF SF SA
2130:2 20 68 C? 20 AD 46 O00 20 97 03 AD RO 07 79 00 75 65 72
2140:F0 4A 4A 4A 4A EB C9 OB 00 90 03 AI OB 00 OA OA 2600:5F SF 20 20
2150:AA DU 4A AD BU U/ FU 2D C¥ U2 OU DU 4U AU U4 UO 261 8 OE 20 53
2160:20 97 03 C9 08 00 DO 1D AO 08 00 20 97 03 18 6D 2620:5F SF SF SF
OF 08 08 AO OA 00 20 97 03 28 6D 11 08 2630:20 20 20 20
80 18 AO 00 00 20 97 03 cD 17 08 DO OD 2640:68 6E 63 74
20 97 03 CD 19 08 DO 02 FO 1B AO 08 00 2650:65 2F 53 79
18 7D DF 07 9D DF 07 08 AO OA 00 20 97 2660:20 20 20 20
£1 07 9D £1 07 AO 10 00 20 97 03 AA AO 2670:4C 6F 63 61
97 03 E2 20 8D 9C 03 C2 20 BE 9A 03 AD 2680:5F 5F SF SF
97 03 C9 90 00 DO 0B AO 12 00 20 97 03 2690:18 OF SF 5A
00 FO 03 82 4D FF AD DF 07 18 69 00 60 8D 2620:6F 75 72 20
90 03 EE E1 07 20 D7 01 20 89 03 C9 1B 00 2680:5F SF 20 20
C9 20 00 DO F3 EE B2 07 AD B2 07 C9 03 00 '26C0:18 OE 20 4E
9C R2 07 20 07 O01 80 £0 AR 6B AD B2 07 C9 26D0:5F SF SF SF
29 A9 1D 01 20 AC 03 F4 OF 00 Az OC 18 26£0:20 20 20 20
UU El AD 13 U8 8D CU U7 AD 15 08 BD C2 07 26F0:1C 1¢ 1¢ 1¢
02 F4 OE 00 A2 OC 18 22 00 00 El AD IF 08 2700:1¢ 1¢ 1¢ 1¢
AD 21 08 8D BE 07 AS OB 00 8D B4 07 1A
03 00 EB 09 1D 00 20 AC 03 AL B4 07 OA OA
DF 07 8D CO 07 BD El 07 8D C2 07 20 9F 02
2280:CE B4 07 AD B4 07 30 04 DO DS FO D4 AD 13 08 8D 2740:1D OF SF 5A
| 2290:BC 07 AD 15 0@ @D BE 07 A9 1D 11 20 AC 03 AD IF 2750:58 SF SF SF
| 22A0:08 8D CO 07 AD 21 08 BD C2 07 20 SF 02 AJ 1D 12 2760:5F SF 20 20
22B0:20 AC 03 AD 1B 08 8D CO 07 AD 1D 08 8D C2 07 20 2770:18 OF 1¢ 1¢
04
aD
aD
AD
a2
22
00
0B
00
oc
00
Fa
2
aD
a2
Fa
a2
AF
ap
00
48
0B
SF
SF
SE
73
20
20
4c
ae
65
SE
20
20
1B
SF
18
20
20
739
61
20
73
23
1B
65
SE
18
20
20
79
SF
20
73
1B
74
oF
18
28
20
OF
SE
20
1c
oF
73
SF
18
SE
20
ic
20
oF
B2
co
36
43
aR
6E
SE
20
1c
1B
ac
co
SF
52
SF
ic
oF
65
20
20
SF
20
1c
03
2D
FO
48
22
Et
07
00
0B
09
00
a2
68
22
a2
22
54
1c
co
07
ra
00
60
00
27
00
0B
Fa
aD
00
0B
29
24
48
68
2B
SF
oF
20
OF
oF
4c
4c
4c
13
69
ac
20
6D
SF
20
65
18
SF
20
69
29
20
65
SE
1B
1¢
1c
18
SF
20
65
SE
20
1¢
DF
07
7)
00
Fa
El
22
EI
oc
4a
20
oF
72
20
65
SF
4D
oF
29
46
ie
20
56
SF
20
1¢
07
El
00
48
68
00
FA
1B
20
SF
20
oy
oF
20
20
SF
SF S
20
20
62
20
6c
SF
20
4c
SF
SE
69
20
20
SF
20
65
Sr
20
69
SF
SF
1c
1¢
20
20
20
SF
20
1c
1
00
ra
ra
00
07
00
00
68
07
00
Fe
408
Fa
00
68
60
29
ae
60
53
28
SF
oF
20
SF S
52
20
41
75
20
SF
20
OF
SF
SA
20
sa
SE
20
SE
20
SF
SA
1¢
1
4D
SF
20
6c
oF
20
1¢
BC
08
FO
ca
090
Fa
48
00
£1
60
48
00
00
aD
oo
00
68
DA
00
4a
og
09
60
oF
SE
18
65
20
18
1B
18
40
2
63
72
20
OF
SF
61
SF
18
6D
20
oF
oF
20
20
18
69
SF
18
Ic
1¢
SF
20
SF
1B
16.
07
o7
£1
FE
65
SF
OE
4D
2)
63
20
4
SF
oF
64
SF
37
20
oF
oF
20
61
SE
oF
SF
SF
OE
1¢
1¢
56
SF
20
oF
OF
1¢
aD
c2
Do
ra
Fa
00
00
cD
00
00
co
68
ra
07
Fa
SF
78
20
20
20
20
65
61
20
68
SF
SF
65
20
20
a1
20
6c
oF
20
20
SF
Se
SF
20
1c
1c
1¢
20
20
72
SF
SF
1¢
SF
12
20
Za
20
20
SF
aa
SF
SF
20
ic
1¢
75
oF
20
65
SF
Ic
Pom’s n° 44
2780:1C
2790:1C
27A0:75
2780:20
270: 61
27D0:4¢
2760:4¢
27F0:4C
2800:00
2810:00
2820:00
2830:04
2840:36
2850:15
2860:F5
2870:00
2280:00
2890:08
28A0:02
2830:C0
2800: B2
28D0:F5
28E0:00
28F0:00
2900:07
2960:01
2970:03
2980:02
2990:83
2920:97
2980:F5
29€0:00
2900:01
2980:07
29F0:02
2A00:F3
2a10:¢2
2A20:F5
2A30:00
2A40:02
2A50:07
2A60:02
2A70:3C
2A80:13
2A90:F5
2AA0:00
2ARO:02
2Ac0:02
2AD0:02
2AE0:78
2AFO:AC
2B00:F5
2B10:00
2B20:02
2B30:02
2B40:02
2850:B7
2B60:C4
280,
2BB0:02
pre
2BD0:D6
2BEO:FS
2BF0:00
1¢
1c
69
20
63
4c
4c
4c
00
oo
01
12
ac
FS
90
1c
1c
74
41
65
4c
4c
18
oo
25
1A
15
FS
FS
02
07
02
53
co
F5
oo
02
03
oz
08
c2
Fs
00
03
07
02
54
00
00
1c
1c
66
20
4c
OE
00
v1
oz
03
27
FS
oo
OL
07
02
oc
BE
Fs
00
02
07
oF
FS
00
02
07
1c
1c
65
66
oF
4c
4c
00
00
00
45
£8
FS
00
00
02
cE
37
FS
00
o1
or
02
DI
ac
FS
oo
oz
07
02
30
2
FS
oo
02
08
02
6c
co
FS
00
oz
oe
02
a0
co
F5
00
02
07
02
38
co
FS
FO
03
00
1c
1c
69
1B
4c
00
oo
02
Fe
Bc
F5
so
oz
07
oo
1c
ic
63
SF
4c
00
07
07
03
1¢
1¢
20
ow
18
4c
37
YS
02
C7
c2
00
03
07
02
67
D6
00
1c
oF
65
61
OE
ac
ac
00
43
Fo
00
00
08
02
SE
15
FD
00
00
07
53
97
5
90
5 01
oz
5c
DF
F5
00
or
oz
18
FS
00
07
02
5D
2
FS
00
02
07
02
93
c2
FS
FO
0?
07
o2
oc
co
5
00
03
07
02
00
Ic
1B
73
o7
20
4c
4c
00
00
oF
04
30
13
FS
00
00
oz
59
11
FS
00
00
03
oz
28
97
PS
oo
01
07
oz
9A
FS
vu
01
07
o2
15
FS
07
07
Ba
ca
FS
00
03
0?
58
D6
FS
00
00
1c
SF
00
03
4
FS
02
02
07
Fg
cD
FS
oo
03
07
02
00
4c
16
13
ic
oF
FS
1
03
02
7
37
FS
00
on
03
02
De
13
00
02
07
02
33
oF
F5
00
o2
07
02
or
1D
FS
00
02
07
02
ac
ca
FS
02
07
02
BE
FS
00
03
00
02
42
1D
FS
00
oo
07
02
D2
BB
00
00
or
08
02
09
21
F5
00
oz
02
02
4B
ac
00
02
08
02
87
BE
F5
00
02
07
02
ES
FS
00
03
07
02
7D
Be
00
1E
BS
00
00
08
0?
67
Eg
FS
00
07
02
F7
a7
FS
00
01
03
02
6A
Et
00
o1
oy
ce
B2
F5
02
08
92
EL
F5
02
2
FS
a0
02
07
02
3B
c2
FS
oo
03
07
oo
Ic
02
19
F5
00
00
o3
02
ce
FS
09
07
02
Fo
IF
Fs
00
02
o7
48
00
03
07
02
cy
Dé
00
FS
Une commande externe: — | Iss§
G. Perreault
L’objet de la présente commande est de simplifier l'usage
des préfixes ProDOS sous Basic.System. Le probléme est
le suivant :
Le programme Basic sur le disque dur se situe dans le
dossier /Ddur20M/En.Cours/Compta/Version.2, dossier qui
contient le sous-catalogue Donnees. Pour travailler dans ce
dernier dossier, il suffit de taper Prefix donnees, mais pour
revenir au niveau précédent, il faudra taper Prefix
/Ddur20M/En.Cours/ComptalVersion.2...
Les stakhanovistes du clavier apprécient, les autres, dont je
fais partie, taperont simplement shortp. Moins
imprcssionnant mais plus élégant...
En pratique
Vous rendrez cette commande externe ProDOS disponible
en tapant au Clavier sous Bz
- shortp ou brun shortp
Vous pourrez également I’activer depuis un programme
Basic par :
10 print chr$(4) "- shortp
Dés lors pour raccourcir un préfixe, tapez au clavier :
shortp , ou dans un programme Basic :
705 print chr$(4) "shortp
Pour contréler I’effet de la commande, demandez a
Basic.System le préfixe courant en tapant : prefix
Source Shortp.src
Assembleur ORCA/M
err on
65816 off
65002 off
absadds on
keep shortp
org $2000
main START
+ EQUATES:
Pom’s n° 44
rdecode
Jength gequ $2F Jongueur de 1*instruction
pel gequ $3A adresse de la ligne désassenblée
al gem $3¢ adresse de départ pour move
22 gequ $35 adresse de fin "ot
a4 gequ $42 adresse d'errivée * *
age gequ $Fc pointeur tenporaire
ptr gequ $FE v >
+ sous-programmes moniteur et adresses systéme:
wutdo — gequ $0B5C
insdsp2 gequ sreec désassembie 1a ligne (pcl)
move gequ S$FE2C conme son nom 1"indique
2 Panos et RASTC. SYSTEM:
pe =
mit gequ $aF00 point dentsée de Propos
extrnemd gequ $BE6 saut vers commande externe
errout gequ $BE09 affiche erreur et fin
badcall gequ $BE8B convertit erreur MLI en BASIC.S
getbufr gequ SREFS réserve (A) pages sous BASIC SYS.
xtrnaddr gequ $8550 adresse commande externe
xlen —.gequ S$BESZ Jongueur de 12 commande
xcnum —gequ $BE53 n® de 1a commande
pbits gequ $BES4 paramétres autorisés
vpath1 gequ S$BE6C vecteur vers la commande entrée
xreturn gequ $BE9E un RIS qui gagne 4 etre conny nomi
opencnt gequ $BE4D nonbre fichiers ouverts
Jong gequ fin-debut+$100 longueur du programme 4 reloger
; relogeur
- —— annaannennes rsuivant
7 Relogeur nonteusement copié sur celui de Sylvie GALLET, qui
7 a elle-meme copié celui de POM's n° 26
+ initialisation
; 4
intt Ida mit
comp #$4C est-ce un JNP ?
beq init1 out
Idy nonactif non -> affiche message et fin
nabel Ida nonactif,y
jax outdo
dey
bne nabel rfin
rts test
init! Ida openent y act-il des fichiers ouverts 7
beq init2 non
dda #915 oul -> impossible placer la comma
nde message FILE(S) STLLL OPEN
imp errout fi
inft? Ida extrnemd+2 sauve adresse de 1a premiére
sta preemd+2 commande oxterne out
Ida extzncmdtt
sta precmd+1 non
Ida #>long demande d'un buffer de (A) pages
Jer getbufr calcul
emp #S0C erreur ?
bne gothen non
jmp errout oul -> affiche ‘NO BUPFERS AVAILA
BLE" et tin
gothen sta adresse n® de la I-ére page accordée par
sta adel Prop0s
ata extenemd+2
dda #odebut
sta al+l
Ida #<fin-1
sta a2 ;
Ida #>fin-1
sta zit
lay #0
sty a¢ Jes adresses depart et arrivée
sty al sont alignées -> poids faible = 0
sty extrnemd+1 none
jer move déplace le progranme
jax reloge adresse
rts
retoge ida adresse adresse de relogement
sta pel+l e ;
Ida 40 .
ata pel :
Idx #0 névessalze pour tnsdsp2
Ida (pel, x)
beq rfin si 00 séparant progrmm et données
Ssr insdsp2
dy length ¥ = Longueur instruction = 1
epy #2 inotruction sur 3 octets ?
bne rsulvant non > pas de changement
Ida (pcl),y ous
emp #omli est-ce un appel au MLI ?
bne nomlt non
doy pevt-erre...
ida (pel),
emp #<mii
bne nomli non
dey
Ida (peli.y
emp #820 est-co un jer ?
baw nomi non
ida pel oui -> avance pel de 3 octets et
ele traite les 3 octets suivant jsr $
BFOO
ade #3 comme une instruction 4 reloger
(1'adresse du buffer n'a pas beso
in d'etre relogée)
sta pel
bee nomli
ine pel+!
Ida pel passage de paramétres pour catcn!
ste ade
dda peut
sta adrel
ddy length
jar calevl
Ida length on passe & inotruction suivante:
sec avec pel = pel + length
ade pel
sta pol
Ida pele?
ade 40
ste pelel
sec distance (pel) - adresse stockée
sbe adresse dans A (MSB) et X (LSB)
ddx pet
gsr test distance >= long du programme ?
bea rfin oul => on a fink
Jmp rdecode non
rts
cmp #fin-debst A < nbre de pages du progranme ?
bee out ous
bne nen non et A> nhre de pages -> en de
hore du programme
px #<rin-debut on est dany 1a dexniere page:
X < poids faible ae tin
bes non non -> en dehors du programme
cle dans les limites
ets
sec
rts
dey
Ida (adr),y partie basse de 1'opérande
tax
tay
Ida (adr),y partie haute de I *upézande
sec
she #>debut écart (en pages) entre adresse et
début
bee none écart <0 -> opérande en dehars d
es adresses 4 modifi
jsr test écart >= 0 -> écart > longueur du
programme ?
bes none non
ade adresse out -> on reloge
sta (adr),y
cle
rts
sec
rs
dst adresse début du programme rologé
ds SPF-(adzesse-init) debut sera égale 3 $2100
30
Pom’s n° 44
7 programme 4 reloger
debut ida vpath?
sta ptr
da vpathi+1
sta ptr+]
ddy #1
compare Ida (ptr),y
comp conmande-1,y
bne nocad
iny
copy #7
bee compare
ida (ptri.y
emp #900
beq emdok
sr 3DAFB
ida #$10
imp errout
andak — dey
dey
sty xlen
Jaa #0
sta xcnum
sta pbits
sta pbits-1
dda xsuite
daa versuite+!
sta xtrnaddr
Ida versuite+2
eta xtrnaddr/I
cle
rts
precmd jmp xreturn
7 Lecture du préfixe:
xsnt Ida boffer
dda xsuite+t
sta table+i
Tda xenite+?
eta table?
Jsc mit
dc £2°3u7-
dc i2*tabie*
hee ok
errcur jor badeall
Jmp errout
ok Idy buffer
beg end
boucle dey
da butter,
cmp #1/*
bne boucle
sty buffer
jar ali
de 11°$c6"
de iz*tabie*
bee end
mp erreur
ond rts
rien dol
7 Table de paramétres et message.
vpathI pointe sur la commande
entrée
analyse de 1a commande tapée
pas “shortp™
Jongueur “shortp" + 1
envoie un retour chariot
code de "SYNTAX ERROR*
n° conmande externe
aucun paramétre autorisé
utile au relogeur seulement
adresse de retour de ProD0S aprés
examen
des paramétres
retour 4 ProoDs pour analyse des
paramétres
suivant éventuellement 1a command
@ tapée
utile si notre cde est Ia seule
ou Ja deride your siynaler Ler
reur
saut 4 la commande externe
précédente
utile pour le relogeur (permet de
reloger I'adresse buffer utilisé
pour lize préfixe)
GuTEREE IX
table des paramétres utilisés pou
© GETPREFIX
affichage de I'erreur
Jongueur du préfixe actuel
si longueur = 0 inutile de raccou
reir le
préfixe
Je derailer caractére est */* donc
inutile de le relire
Jongueur du nouveau préfixe
SETPREFIX
Ja meme table que pour GETPREFIX
en principe “PATH NOT FOUND"
Je relogeur 1*apprécie
table de £2"1"
de 42‘buffer*
buffer ds 64
commande de c'SHORTP*
nonactif de 11'25,13,13,7'
1 soul paramétre
zone de stockaye du prélixe
de et## PITCA NON SODORP +4!
fin anop
END
Récapitulation Shortp
Apres avoir saisi ces codes sous
moniteur, vous les sauvegarderez par :
bsave shortp, A$2000,L$1E8
2000:AD 00 BF C9 4c FO OD AC
2008:CE 21 B9 CE 21 20 5c DB
2010:88 DO F7 60 AD 4D BE FO
2018:05 A9 15 4¢ 09 BE AD 08
8D 4A 21 AD 07 BE 8D
21 A9 01 20 F5 BE C9
DO 03 4C 09 BE 6D E2
85 43 8D 08 BE A9 21
3D A9 B7 85 3B AD 21
SF AQ 00 84 42 84 3C
07 BE 20 2C FE 20 5A
60 AD E2 20 @5 3B Ag
85 3A A2 00 Al 3A FO
20 8C F8 Ad 2F CO 02
2C #1 3A C9 BF DU 19
BI 3A C9 00 DO 12 88
2080:31 3A C9 20 DO OB AS 3A
2088:18 69 03 85 3A 90 02 EE
2090:38 AS 3A 85 FC AS 3B 85
2098:FD A4 2F 20 C& 20 AS 2k
20A0:38 65 3A 85 3A A5 3B 69
20A8:00 85 3B 38 ED E2 20 A6
20B0:3A 20 BA 20 BO 03 4C 63
20B8:20 60 C9 00 90 06 DO 06
20C0:£0 £8 BO 02 18 60 38 6D
20C8@:88 Bl FC AA C8 Bl FC 38
20D0:E9 21 90 0c 20 BA 20 BO
20D8:07 6D E2 20 91 FC 18 60
20R0:38 60 00 00 00 00 00 00
20£8:00 90 00 00 00 00 00 00
20F0:00 00 00 00 00 00 00 00
20F8:00 90 00 00 00 00 00 00
2100:AD 6C BE 85 FE AD 6D BE
2108:85 FF AO 01 Bl FE D9 C7
2110:21 DO 34 ca co 07 90 F4
2118:B1 FE C9 OD FO 08 20 FB
2120:DA A9 10 4C 09 BE 88 88
2128:8C 52 BE A9 00 8D 53 BE
2130:8D 54 BE 8D 55 BE AD 4B
2138:21 AD 37 21 8D 50 BE AD
2140:38 21 aD 51 BE 18 60 38
2140:4C 2E BE AD 88 21 AD 4c
2150:21 8D 86 21 AD 4D 21 aD
2158:87 21 20 00 BF C7 85 21
2160:90 06 20 8B BE 4C 09 BE
2168:AC 88 21 FO 16 88 BS 88
2170:21 C9 2F DO F@ 8C 88 21
2178:20 00 BF C6 85 21 90 03
2180:4C 62 21 60 00 01 88 21
2188:00 00 00 00 00 00 00 00
2190:00 00 00 00 00 00 00 00
2198:00 00 00 00 00 00 00 00
21A0:00 00 00 00 00 00 00 00
21A8:00 00 00 90 00 00 90 00
21B0:00 09 00 00 00 00 00 00
21B8:00 00 00 00 00 00 00 90
21C0:00 00 00 00 00 00 00 00
2108:53 48 4F 52 54 50 19 OD
21D0:0D 07 24 2A 20 46 49 54
21D8:43 41 20 4E 4F 4E 20 53
21E0:4F 44 4F 52 50 20 2a 2a
Pom’s n° 44
31
Voici quelques considérations sur la mise
4 jour des fenétres des programmes
typiquement GS et une routine bien utile a
Vécriture des applications.
A titre de démonstration, une application
GS figure sur la disquette qui accompagne
optionnellement ce numéro : elle vous
permettra de lire les sources et fichiers de
type TEXT.
Programmant depuis quelques temps sur Apple ITGS, je me
suis heurté sur le fait de faire défiler du texte rapidement
dans une fenétre graphique. Beaucoup de programmes
d’amateurs sont désespérement lents, et je pensais cet état de
chose normal, jusqu’au jour oi j'ai vu ce que pouvaient
faire les professionnels...
Je me suis donc penché sur le probléme et aprés avoir
décortiqué le déroulement des mises 4 jour, j’ai écrit cette
routine qui pourra rendre service a un certain nombre de
lecteurs programmeurs, oii leur donner des idées pour faire
mieux.
Défilement rapide de texte
dans une fenétre
La mise a jour d'une fenétre (Update Event) survient dans
plusieurs cas :
* clic dans une barre de défilement horizontal ou vertical ;
* changement de la taille d'une fenéure (avec une
exception) ;
« — fermeture d’une fenétre sur la fenétre 4 mettre jour (par
exemple, fermeture d'un accessoire de bureau).
Une procédure de Quickdraw nous permet de connaitre la
taille du rectangle 4 mettre a jour, c’est Get PortRect.
Dans notre procédure, il faut donc :
1 Sauvegarder les valeurs du rectangle telles qu’ elles
nous avaient été retournés par Get Pox tRect la
mise & jour précédente ;
2 Récupérer les nouvelles valeurs de Get PortRect ;
Faire une analyse des changements intervenus ;
4 Redessiner uniquement ce qui a pu étre effacé.
w
“(EGS & FENEIRES :
Scrolling
Patrick Desnoues
La fenétre n’est pas active
|)
b fenétre q
| active 1
——-
Tl faut la redessiner de al acl.
La fenétre est active
‘» Si la taille de la fenétre n’a pas
changé
X Cestun clic sur
circ di=d
al>a bi=b
- Le texte monte ;
- Ie Window manager déroule vers le haut ce qui est a
V'intérieur.
- al 2c: redessiner tout l’écran de al acl ;
- al<c:redessinerdecacl.
Pom’s n° 44
X Cest un cli
al<a bil=b el <e di=d
- Le texte descend ;
- le Window manager déroule vers le bas ce qui est a
lintérieur.
al
Liga aN}
b d
L >
- cl <a:redessiner tout I’écran de al acl ;
- ¢l2a:redessiner deal aa.
X Cestun clic sur¢ ou >
alma bi=b el=c di=
i ¢d ' ‘
Fléche > :
- soit redessiner de a/b1 4 b/cl (le plus rapide) ;
- Soit redessiner de a ac (le plus simple).
al
cy el
Fléche « :
- — soit redessiner de a1/d 4 d1/cl (le plus rapide) ;
- suit redessiner de aac (le plus simple).
» La fenétre a changé de taille
X lercas
al=a [ b1=» el<e di<d
e Soi ‘AOL Gee ago
cs UNE FENETRE AVEC DE’
(ASCENSEURS SANS Ne
a . gs ‘EST sh RIDICULE
b q
[ee |
Le rétrécissement complet de la fenétre est le seul cas qui
n’entraine pas de mise & jour. Ce qui est contenu dans la
Plus petite fenétre tenait forcément dans la grande et n’a pas
pu étre effacé.
X 2éme cas
[ a=. bi=b e1>de di¢d
Tl faut redessiner de c acl.
X 3éme cas
al=a bi=b el <e diod
Pom’s n° 44
33
- Redessiner de al/dacl/dl ;
- ou, plus simple, de al/b1 a cl/d1.
X deme cas
ala bi=b cl rc diod
La fenétre a été agrandie. Il faut :
- soit redessiner de al/d a c/dl et de b/c &c1/dl ;
- soit, plus simple, de al/bl cl/dl.
C’est tout...
a = AncienHaut al = NouveauHaut
b = AncienGauche bl = NouveauGauche
c = AncienBas cl = NouveauBas
d = AncienDroit dl = NouveauDroit
On peut encore optimiser la vitesse en calculant uniquement
les mises a jour des scrolling horizontaux (comme cela est
défini ci-dessus, mais non traité), mais pour l’affichage d’un
texte standard, le jeu ne vaut guére le coat.
Une application
Sur le disque Pom’s, vous trouverez l’application 16 bits
‘Turbo.Scroll’ & titre de démonstration.
Le programme a été écrit sous APW. II permet de charger a
partir d’un disque ProDOS des fichiers de type Text (TS04)
ou Sources (T$B0). Aprés la wansformation des minuscules
accentuécs adaptéc & la langue frangaise, le texte apparait
dans une fenétre graphique avec une vitesse de défilement
Programmation défiant pratiquement toute concurrence...
Les fichiers sur disque :
TiS Oe Ep ge Odea ou 1c ZETO 5
- — eréer une fenéue avec des barres de défilement ; Data données et stag de ace Ges :
- dans les paramétres de la fenétre indiquer ‘dc MainPoms initialisation, boucle principale ferme-
i4’ Procedure’ dans le paramétre concemé ; ture ct Quit i. :
- stocker le numéro de la fenétre retourné par New Scrolli
Showing the first 100000 of 268213 characters.