Text content (OCR)
La revue francophone indépendante pour les utilisateurs d’ Apple
Transferts couleurs
Apple IIcs .
4
i
PROCMD
LE BASIC
wean”
POUR LES
APPLE
EN 8 BITS
ProCommann, c'est la
boite a outils du
programmeur 8 bits, sur
Apple Ile, IIc, IIs.
PROCOMMAND, cest un
ensemble de modules
cohérent pour enrichir le
Basic, et simplifier la
réalisation des logiciels.
Un Basie enrichi; Print
formaté, Type, Date, Tri,
Rnd, formatage
scientifique, Input formaté,
Clock, Hexdec, Pop.
De nouvelles
commandes disques,
Online, Dump, Copy,
Format, Eject, Setinfo,
Path, Compare, Paste.
De nouvelles
commandes utilitaires,
Varlst, Vartrc, Renumber,
Hold, Merge, XRef.
Des commandes
d'édition, Find, Edit,
Auto, Macro, Lyst, Onekey.
De puissantes commandes
graphiques Dhgr, &hagy,
&hgr2, &hcolor=, &hplot,
&plot, &draw, &xdraw,
| &fill, &print, hload, hsave.
| Des commandes souris,
&int, &let, &store at, &pos,
&wait, &end.
Et pour aller plus loin, une
documentation en francais
précisant le protocole a
respecter pour intégrer vos
propres modules a
PROCOMMAND.
~2 PROCOMMAND en
=~ 5,25" ou35",500F
| (tarif abonnés : 450,00 P).
Editions MEV * Pom's ¢ 12, rue d’Anjou 78000 Versailles * Tél : (1) 395124 43 « Minitel : (1) 39 53 04 40 » Fax : (1) 39 49 54 65
Numéro 49
juillet-aotit 1990 Au sommaire. a
Les infos, les rubriques
Editorial par Hervé Thiriez 5
Bibliographie par M. Godefroid et C. Piard 29
Les News Macintosh par Ariel Sebban 60
Applemania par René-Jean Anderson 65
Petites annonces 74
Mots croisés par Joélle Piard 74
Rees Le Macintosh
Les transferts Mac/GS par Emile Schwarz 13
Intarnview * ACI nar Arial Sohhan an
6éme sens par Hervé Thiriez 34
Une Init : Fortune par Thierry Charles 51
TOPS par Marcelle Godefroid 55
TypeStyler par Marcelle Godefroid 58
Nouveautés 59
Le Monde des Apple |
Une gestion de fichiers (2) par René-Jean Anderson 6
SuperFonts : les polices par Jean Ollion 24
Budget facile par Dimitri Geystor 25
AppleWorks : le chargement par D. Geystor, R. Brandt 26
Gee Le Monde des lias
Les transferts Mac/GS par Emile Schwarz 13
Un formateur en CDA par Patrice Neveu 15
7 Utilitaires 16 bits par Patrick Desnoues 35
Editions MEV
12, rue d’Anjou
78000 Versailles
Tél. : (1) 39 51 24 43 En couverture
Minitel : (1) 39 5304.40 | Apres de multiples programmes de transmission de données entre Apple II,
Fax : (1) 39 49 54 65 Macintosh, IBM et Minitel, voici la présentation de programmes en shareware tout
. a fait étonnants : la récupération d'images super-haute résolution entre Apple ITGS
Directeur de la publication: | et Macintosh II...
Hervé Thiriez
Pom’s n° 49
Com.V1.0 pour
Apple //
La disquette ‘communication’ que nous vous
proposons aujourd'hui a été congue par
Dominique Ottello, auteur de programmes
parus dans Pom’s et animateur de la Cité
Apple II de CalvaCom. Un bonheur n'arrivant
jamais seul, une deuxiéme disquette dont on
vous dévoile le contenu dans ces lignes, est
livrée avec...
Com.V 1.0
La disquette Com. V.01 (uniquement en format 3,5") regroupe un
ensemble de programmes et fichiers permettant la communication,
particulitrement avec CalvaCom, mais pas uniquement. En voici le
détail :
Blu Programme de compactage et décompactage d'une grande
partie des programmes de la biblioth¢que Apple II. Ce programme est
accompagné d'une documentation en anglais. Pour tous les Apple //.
Bib.Liste ti s'agit de ta liste des programmes de la biblio-
théque de la cité Apple II sur Calvacom.
IIGS.Minitel 1 S'agit de la configuration du tableau de
bord (Modem) dans le cas d’utilisation du IIGS avec cable Minitel,
plus un ensemble de questions et réponses diverses sur l'utilisation du
NIGS et de VSCom,
Kermit Ce logiciel de communication, un classique, permet &
l'aide d’un Minitel relié a 1'Apple II de télécharger des programmes
(plus de 600 sont disponibles sur Calvacom). Une documentation en
anglais accompagne ce soft doté de nombreux drivers : modem
intégré IGS, Hayes Micromodem, cartes AppleCom, CCS770,
Promotheus, Super Série et Apple IIc, Microtek $V622. Pour tous les
Apple //.
Pile Hyperstudio Il s‘agit d'une présentation des
possibilités, tarifs, moyens d’accés de Calvacom. Et pour ceux qui
n’auraient pas Hyperstudio, une version simplifiée en est livrée sur le
méme disque. Pour GS, bien sir.
Shrinkit La dernigre version de ce programme de
compactage et décompactage de fichiers et disquettes. Il est plus
performant que BLU et permet de compacter des disquettes entitres
qui ne sont pas au format ProDOS standard. Pour tous les Apple //,
documentation en anglais.
Talk Is Cheap Ce programme de communication
fonctionnant sur tous les Apple II avec sa documentation en anglais
est doté d'un syst&me de macro-commandes. En plus de l'Apple //,
TIC permet d’émuler les terminaux DataMedia, VT52, Heath.H19,
Hazeltine.1510, IBM3101, ADM.3A, Dow Jones, Soroc, TVI.912,
ADM.31, Hazeltine.1500, Adds Regent, Viewpoint, Tandy Laptop.
Pour tous les Apple //.
Téléphone Quelques détails concernant le cablage de la
prise téléphonique américaine et de son homologue frangaise ainsi
que des informations en anglais sur les procédures de téléchargement
avec protocole Xmodem ou Ymodem,
Et Plus...
Le deuxiéme disque 3,5” qui vous sera livrée comporte :
Bram Test Cet anti-virus est & metire dans le répertoire
System.Setup. Au premier démarrage, il crée un fichier donnant
l'image de la Bram. Lors des démarrages suivants, il compare ce
fichier avec le contenu de la Bram et prévient des éventuelles
modifications. Il est alors possible de restituer le contenu du fichier en
Bram ou de sauvegarder le nouveau contenu dans le fichier.
Boot Modif Futé, ce fichier est & metire a la place du
fichier ProDOS du répertoire principal du disque dur : lors du
démarrage, en appuyant sur la pomme, vous pourrez choisir le
periphérique a activer : disque dur, disquette, Rom ou Ram.
Init'Master Ce Céev est A mettre dans /System/CDevs ; il
permet de valider ou dévalider les TIF, PIF, NDA et CDA qui seront
chargés lors du démarrage. On y accéde par le NDA Control-Panel.
Transwarp Un autre Cdev qui contréle les vitesse et IRQ
de la Transwarp depuis le NDA Control-Panel.
Faz Il File Auribute Zapper V 2.6 permet d'éditer les attributs
de fichiers, le bit de backup par exemple. Tous les sources de la
version 2.4 en Merlin 16 accompagnent cet utilitaire (les différences
entre 2.4 et 2.6 se situent uniquement au niveau du tableau de
dénomination des types de fichiers, La documentation est fournie
également. Pour tous les Apple //.
OneArmBattle wn peu de délassement avec ce jeu de
machine a sous sonore et parlant anglais. Une belle application GS.
Utilitaires texte
Imprime.TXT, pour l'impression de tout fichier TXT avec tout un
tas de paramétres pour I'ImageWriter. Pour GS.
Binscii, conversion de fichier ProDOS en TXT et vice-versa. Pour
tous les Apple //.
FileChopper, pour séparer un gros fichier en plusieurs plus petits.
Utile pour fichiers TXT trop longs pour étre chargés en une seule
partie dans un traitement de texte. Pour tous les Apple //.
Tex qui, entre autres, fait l’inverse du précédent c’est-a-dire, met bout
A bout, en un seul fichier, plusieurs fichiers TXT.
Pour tous les Apple //.
Disquette Com. V.1.0 + disquette goodies : 100,00 F franco
Ont collaboré & ce numéro:
René-Jean Anderson - Randy Brandt
Thierry Charles - Patrick Desnoues
Dimitri Geystor - Marcelle Godefroid
Olivier Herz - Nathalie Laudat
Daniel Lurot - Gérard Michel
Patrice Neveu - Christian Piard
Joélle Piard - Emile Schwarz
Ariel Sebban - Hervé Thiriez
Directeur de la publication
rédacteur en chef
Hervé Thitisz
Rédacteurs
Marcelle Godefroid - Christian Piard
Siége social
Editions MEV — 12, rue d’Anjou
78000 Versailles — (1) 39 51 2443
Serveur Minitel (1) 39 53 04.40
Télécopie : (1) 39 49 54 65
Publicité
Editions MEV
Diffusion
N.M.P.P..
Impression
Mame — 49, boulevard Preuilly
BP 1701 — 37017 Tours Cedex
47.37.08.08
Photos
CP & MG
Photogravure
Graphotec ~ 21, chemin de la Tour
92350 Le Plessis-Robinson
B (1) 46 30.44 49
Pom's est une revue indépendante non
rattachée & Apple Computer, Inc. ni &
Apple Computer France $.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. Diagram-
Maker est une marque déposée de MEV.
@£ditions MEV 1990
Toute reproduction intégrale ou particlle,
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
Dans ce numéro d’été, Emile Schwarz nous présente I’art et la
manieére de transférer des images en couleurs depuis I’A pple IIGS
vers le Macintosh II, et réciproquement. Vous aurez maintenant
le nécessaire pour travailler vos euvres impérissables sur I’une et
l’autre machine. Et, si yous aimez programmer sur cette mer-
veilleuse machine qu’ est le IIGS, Patrick Desnoues vous a concocté
quelques outils dont vous apprécierez vite l’aide précieuse.
Si vous étes plutét un utilisateur qui aime avant tout la transpa-
rence de l’interface du GS, alors profitez de deux CDA, Format et
Eraser, dont la simplicité et l’efficacité est tout a ’honneur de leur
jeune auteur.
Cété Mac, des bancs d’essais, et de l’humour avec Fortune, une
astucieuse adaptation en Pascal pour une Init qui vous réserve
quelques kilo-octets de surprises ; une affaire a suivre...
Puisque l’époque est au changement, Pom’s ne fait pas exception.
Christian Piard, auteur et rédacteur depuis de nombreuses
années, part exercer ses talents dans le sud de la France. Du soleil
malgré cela dans ce numéro puisque Maryléne Delbourg Delphis,
interviewée par Ariel Sebban, nous livre ses impressions en direct.
Le meilleur pour la fin bien sir, avec la nouvelle rubrique des
news Apple // préparée par René-Jean Anderson : Applemania.
Quel bel été...
Hervé Thiriez
Imprimé en France - Dépét légal juillet 1990
Pom’s n° 49
Gestion de fichiers (2
R,-J. Anderson
Dans notre précédent article, nous avons
longuement étudié un systéme structuré
de gestion de fichiers. Pour pouvoir
profiter de certains automatismes
procurés par ce systéme structuré, nous
avons vu qu’il était nécessaire de
conserver des valeurs essentielles dans le
premier enregistrement du fichier de
rang zéro, celui que nous avons appelé,
par simplification, “record-zéro”.
Dans l’exemple du fichier des dictons, application de base,
nous avions utilisé trois variahles numériques : le nombre
nous avions utilisé trois variables numéniques : le nombre
d’enregistrements, la longueur de la clé et la longueur de
l’enregistrement. Nous revenons aujourd’hui sur ces valeurs
essentielles pour proposer une solution au probléme que
peut poser leur maintenance et régler en méme temps
quelques questions annexes pour ne plus avoir a y revenir.
avoir un risque de débordement de I’enregistrement zéro sur
lenregistrement un. Rappelons que nous travaillons avec
des enregistrements de longueur fixe.
Enregistrer des nombres sans avoir défini dans quelles
“plages” ces nombres peuvent varier ne va pas, non plus,
dans le sens d’une rationalisation des choses. Une autre
contrainte concerne les techniques d’indexation que nous
mettrons ultéricurement en ceuvre sur nos fichiers. La
encore, nous serons appelés a conserver des valeurs es-
sentielles dans le record-zéro.
On congoit, dés lors, qu'il devient trés utile de disposer d’un
“outil” adapté pour résoudre ces problémes. C’est cet outil
que nous proposons aujourd’hui sous forme du programme
MNTRZERO (MaiNTenance des Record-ZERO) réalisant une
gestion complete du record-zéro. Ce programme reprend,
bien entendu, la philosophie du systéme structuré. Le
lecteur, s’il a étudié I’application de base constituée par la
gestion du fichier des dictons, se retrouvera sans difficulté
gesuon du fichier des dictons, se retrouvera’sdns anucuie
dans le programme mNTRZERO qui permet de créer des
fichiers adaptés au systéme structuré mais aussi de revenir
sur les fichiers existants pour restaurer des valeurs détruites,
pour en modifier d'autres ou pour étendre le fichier par
exemple en lui définissant un nouvel index.
Au commencement...
Mettre a l’index
Le simple fait que des variables doivent étre présentes dans
Venregisirement 26r, avant de metize en roiité le
programme de Mise 4 Jour, induit tout de suite l’idée que
le fichier doit étre créé de fagon indépendante. C’est
qa’ ailleurs ce que nous icati
oe oe gear ee
programme qui réalisait donc deux choses :
création du
fichier et enregistrement de valeurs dans le record-zéro.
Une premiére observation découlant de cette opération est
qu’il est évident que les variables enregistrées vont prendre
plus ou moins de place selon les valeurs contenues &
l’origine appelées a évoluer. Si nous nous contentons
d’enregistrer des valeurs au gré de notre fantaisie ou de nos
besoins, il nous sera impossible de définir certaines autres
valeurs, par exemple la plus petite longueur d’enre-
gistrement possible pour les fichiers 4 gérer. En effet, si la
longueur d’enregistrement déclarée est réduite, il peut y
Pour mieux comprendre la portée du programme, au niveau
dui record-26r6, @n €@ qui concemé indexation, disons tout
de suite quelques mots & ce sujet. Une indexation, dans sa
forme la plus simple, consiste 4 réaliser un index a partir
a une zone définie sur les enregistrements du fichier: de
programme(s) pour accéder aux données selon la séquence
fournie par cet index. La zone a indexer doit, bien entendu,
étre toujours au méme endroit relatif sur chaque
enregistrement, Prenons un exemple concret :
Nous disposons d’un fichier d’adresses et nous voulons
indexer ce fichier sur le nom des personnes qu’il contient.
Pour mener & bien cette tache, nous avons besoin de
connaitre au moins trois valeurs indispensables :
> lerang, sur l’enregistrement, du premier octet de la zone
“nom” ;
Pom’s n° 49
> la longueur de cette zone “nom” ;
> le nombre de postes nécessaires pour contenir I’index
tant entendu que nous générons, fondamentalement,
UN poste pour UN enregistrement.
Ce sont ces valeurs que nous enregistrerons dans le record-
zéro des fichiers qui seront indexés. En pratique, le
programme proposé est prévu pour enregistrer les valeurs de
deux index différents sur le méme fichier de données. Disons
bien qu’ici, un index est, physiquement, un fichier
indépendant du fichier des données, bien qu’il lui soit
rattaché en ce qui concerne la gestion des données. Les
valeurs essentielles d’un index sont enregistrées dans le
record-zéro du fichier des données et non dans celui de
Tindex.
Il est également nécessaire de connaitre d’autres valeurs.
Citons les noms des index se rapportant & un fichier de
données. Pour simplifier et rationnaliser notre systéme,
nous utilisons simplement les dispositions suivantes :
> Le nom d'un fichier de données ne peut excéder neuf
caractéres,
> Le nom d’un index est obtenu en suffixant le nom du
fichier par “x2” pour le premier index et par “x2” pour
le second.
Autrement dit, un fichier corenr peut avoir CLIENTX1
comme premier index et cLrenTx2 comme deuxitme index.
Cette disposition nous évite d’avoir & enregistrer et
conserver des noms d’ index.
Deux autres informations sont également intéressantes. II
s’agit de la plus haute clé possible pour un fichier et
l'existence ou non d’un tableau des enregistrements occupés
dans le cas d’une indexation automatique. Ce dernier tableau
est appelé ici record-map. Nous verrons plus loin
comment introduire ces valeurs facultatives sans trop
perturber l’agencement du record-zéro.
Décisions et fourchettes
Au stade ol nous en sommes, nous avons répertorié a peu
prés toutes les valeurs essentielles que nous voulons
enregistrer dans le record-zéro. En voici la liste :
foo Nom Nom | Longueur
Designation Variable | ftendu | mini maxi
Nomibre dlenregistrements| FI Kyi | i | 5
Longueur de la clé cl KEYLI 1 6
Longueur de l'enregistrement Fim | REcLI| 2 | 4
Rang ler octet index 1 n ROWXI 1 4
Longueur zone indexée 1 ux | mpxi] 1 | 4
Nombre de postes index 1 xl POSX1 2 5
Rang ler octet index 2 Rn ROWX2 1 4
‘Longueur zone indexée 2 Re FLDX2 1 4
Nombre de postes index 2 x2 posx2 | 2 | 5
Retours-chariot © 9
eS
Totaux | 21 | 50
Figure 1: Le Record-zéro et ses valeurs minima et maxima
DU 19 AU 22 SEPTEMBRE
Apple Expo Stand 1 D 6
Nous y serons ...
Les Apple Ic, Ie, lcs aussi
Ile GS Ram et GS Ram Plus extensions mémoire,
TransWarp GS accélérateur 7 Mhz
Vulcan disque Dur interne 20/40/100 Mo
PC-Transporter pour la compatibilité MS-DOS
Sonic Blaster, Audio Animator pour le son...
Ile RamFactor, RamWorks extensions mémoire
RamCharger alimentation permanente
Vulcan disque Dur interne 20/40/100 Mo ...
lic Extension mémoire avec/sans horloge et CP/AM,
UniDisk 800K, kit de mise a niveau etc ...
Le tout nouvel Apple IGS Révision 3,
Scanner 4 main QuicKie, Carte SCSI DMA
AppleWorks GS 1.1 et 3.0 US, GS.OS 5.0 F
HyperStudio 2.1, GraphicWriter II,ProSel 16
les utilitaires Guardian et Renaissance ...
BREJOUX.A
29 rue Montribloud 69009 LYON
Tél, 78.36.5269 Fax. 78.25.5084
Boutique. 16 rue d'Aguesseau 92100 BOULOGNE
Tél. 47.12.09.50 Fax. 47.12.09.59
Mardi au vendredi: 17h & 20h. Samedi: 10h a 12h30 -14h a 17h
Soit en tout 9 variables... Cela est, certes, un peu encom-
brant, surtout que ProDOS a la délicate attention de déposer
un retour-chariot entre chaque variable enregistrée.
Heureusement, un peu de réflexion et de sens pratique nous
montre que tout cela peut tenir sans trop nous géner au
niveau de la longueur minimum des enregistrements.
Prenons le cas du fichier des dictons présenté dans le
numéro précédent. Nous avons vu qu’il était limité a 99
enregistrements puisque la clé ne peut avoir plus de 2 chif-
fres, La premitre variable ne dépassera donc pas 3 octets sur
l’enregistrement zéro (2 chiffres et un retour-chariot). La
longueur de la clé occupe 2 octets et la longueur d’enre-
gistrement 3, Le fichier n’étant pas indexé, chaque groupe
d'information d’index occupe 6 octets (3 zéros et 3 retours-
chariot). En tout, nous avons besoin de 20 octets exac-
tement pour tout enregistrer. Le fichier des dictons ayant
une longueur d’enregistrement de 75 octets (sans le retour-
chariot), il y a donc de la marge.
Il est peu fréquent de définir des fichiers dont la longueur
d’enregistrement soit vraiment petite et puisse poser des
problémes de valeurs essentielles sur le record-zéro. Si ce
cas se pose néammoins, il est toujours possible de s’en
sortir, d’une maniére ou d’une autre, par quelques astuces de
programmation appliquées a un cas précis.
Pom’s n° 49
Pour que notre “outil” de gestion des records-zéro fonctionne
dans les meilleures conditions possibles, il est préférable de
fixer des limites entre lesquelles les valeurs essentielles
pourront varier. Dans notre systéme structuré (et donc dans
le programme proposé) ces limites sont les suivantes :
> longueur de la clé : variable, de 2 4 5 chiffres. Une clé a
un seul chiffre supposerait un fichier ne pouvant avoir
plus de neuf enregistrements... Avec 5 chiffres nous
pouvons aller jusqu’a 99999 enregistrements ;
> longueur d’enregistrement : ProDOS permet d’aller jus-
qu’a 32 768 octets. Nous nous sommes limités 4 8 192
octets soit 4 chiffres.
Pour les index, le bornage sera identique dans les deux cas,
soit
> rang du ler octet : en accord avec la longueur maximum
de l’enregistrement et de la zone & indexer, la valeur
variera de 1 48190 (14 chiffres) ;
> longueur de la zone a indexer : elle variera entre 2 et 99
octets (1 ou 2 chiffres) ;
> nombre de postes : suivant les valeurs possibles de la
clé, les bornes se situent entre 99 et 99999 (2a 5
chiffres).
Tout cela est résumé dans le tableau de la figure 1. Nous
connaissons maintenant les limites dans lesquelles nous
pourrons évoluer. Les formules de calcul et de contréle
mises en ceuvre dans le programme de gestion des records-
zéro en tiennent compte. Le lecteur pourra éventuellement
les modifier pour les mettre en conformité avec les travaux
qu’il envisage.
Le programme mn7Rzero peut calculer le nombre de postes
pour chacun des index précisés. Pour cela, il suffit de ne pas
informer les zones “Nombre de postes” (ou de les effacer).
Dans le calcul mis en place dans le programme publié, le
premier index est toujours privilégié au regard de la capacité
mémoire allouée au calcul, ici 24 576 octets, mais
l'utilisateur pourra faire intervenir des modifications. En
changeant plusieurs fois les grandeurs introduites, on peut
aussi affiner progressivement le résultat des calculs en
tenant compte des paramétres du fichier de données. Lorsque
le résultat souhaité sera obtenu, le déclenchement de la
touche de fonction 3 autorisera la création du fichier ou la
modification du record-zéro.
Un peu de mathématiques
L’un des problémes rencontrés concernait la possibilité
d’introduire des variables non obligatoires. Or, l’absence
d'une variable suffit 4 “planter” un programme au niveau de
linstruction de lecture de ces variables. Pourtant, il nous a
paru nécessaire d’introduire la notion de plus haute clé
possible pour un fichier, ne fut-ce que pour pouvoir bloquer
la numérotation 4 une valeur que l’on ne souhaite pas
dépasser. Imaginons un catalogue prévu pour 300 articles
maximum. La longueur de clé nécessaire, soit 3 chiffres per-
mettrait de numéroter jusqu’a 999. En fixant la plus haute
clé possible 4 350 par exemple, on est sir que le fichier ne
dépassera jamais cette limite et que les programmes con-
serveront de bonnes performances, surtout au niveau des
balayages. Pour arriver a cette fin, la converiiion suivante a
été mise en ceuvre :
> si une plus haute clé possible est spécifiée, elle est
combinée avec la longueur de clé ;
> si aucune plus haute clé possible n’est spécifiée, il est
considéré que les enregistrements peuvent aller jusqu’au
maxima permis par la longueur de la clé et seule cette
longucur de clé est enregistrée.
La formule de combinaison de la longueur de clé avec la
plus haute clé possible est la suivante :
Chiffre = (Plus Hte Clé * 5) + Long clé - 1
Et les formules d’extraction des valeurs d’origine sont les
suivantes :
Plus Haute Clé = INT(Chiffre / 5)
Long.clé = (Chiffre - (Plus Hte Clé*5)) + 1
La valeur critique permettant de savoir si une plus haute clé
possible est combinée avec la longueur de clé est 5, ce qui
correspond au maximum de la longueur autorisée pour la
clé, Dans nos programmes nous mettrons en ceuvre une
comparaison entre la longueur de clé lue et la valeur 5. Sila
valeur lue est supérieure, il y a une plus haute clé possible
et on extrait les valeurs combinées. Dans le cas contraire, la
valeur lue est la vraie longueur de clé.
Une autre astuce concerne la notion de “record-map”. Il
s'agit d’enregistrer, dans les index, la chaine qui indique la
présence ou l’absence d’enregistrements dans le cas of un
fichier est indexé automatiquement c’est a dire sans que
Vutilisateur ait @ intervenir au niveau du rang des
enregistrements. Ces “record-maps” sont de simples chaines
de 100 octets (on peut faire mieux !) enregistrées avec les
index. On génére autant de chaines que de centaines
d’enregistrements possibles, cela sur commande et si les
programmes ont été prévus pour gérer ces chaines.
Plus de Copy II
Central Point SoftWare nous annonce que de récents
changements de lois dans différents pays a propos de la
protection des logiciels interdisent a partir de
maintenant toutes ventes hors U.S.A. des logiciels
Copy II Plus et Copy I Mac.
Pom'’s vendra donc Copy I jusqu’& €puisement de son
stock, mais ne sera malheureusement pas en mesure
d'effectuer de mise & niveau.
Pom’s n° 49
Le nombre de chaines existantes est enregistré en
(TI$))) - (We * 2)
340 TIS = LEFTS (WBS,W%) + TIS + LEFTS (WBS,We +
combinaison avec la longueur de la zone indexée qui n’est ww)
jamais supérieure 4 99. Si ce nombre est supérieur 4.100, 350 WNS(1) = "01012TF -> I=Aide 3-Ecriture R-
alors le chiffre des centaines indique le nombre de “record- eezot = Baesor WVeMalents®
maps” existantes, et le nombre en dessous de 100 la 76 WNS(2) = "02012": FOR W = 1 TO B0:HNS(2) =
longueur de la zone indexée. MN LAY tn Ae NEAR
8 370 WN$(3) = "03012" + WD$ + TIS + PGS
380 WNS(4) = "04092" + LEFT$ (WBS,Wt) + WS
400 WN$(05) = "06017Nom du Fichier 4 traiter...."
Pour terminer 410 WNS(06) = "06300:"
420 WN$(07) = "06462Préfixe :
430 WNS$ (08) = "08010 Quantum du Fichier...... _
440 WN$(09) = "09010 Longueur de clé nunéeique.,
Nous espérons que le lecteur nous aura suivi sans trop de 450 WNS(10) = "10010 Valeur maxi de la clé......
problémes tout au long de ces laborieuses explications et 469 WNS(11) = "11010 Longueur d'enregistrement..
que la mise en cuvre du programme mvrrzeRo lui ap- 472 WNS(12) = "13010Nom du ler FRAG: winnie neisinsis
portera des facilités au niveau de la création et de la pe ei TEAR) Rane Lex eae es deritager
i 4 oa (14) = "15010 Longueur zone ler Index....
maintenance des fichiers. Certaines modifications pourront 559 wys(15) = "16010 Nombre de postes ler Index
avantageusement étre faites sur ce programme pour le 570 wns(16) = "15460 Record-Map (O/N). "
mettre en harmonie avec les applications que chacun pourra 530 wNS(17) = "16460 Nombre de chaines *
envisager. 540 WN$(18) = "18010Nom du 2éme Index.... ,
550 WN$(19) = "19010 Rang ler octet 2éme Index.
Dans un prochain article, nous présenterons une application 6° #NS (20) = wenn? Longueur zone 2éme tne
en vraie grandeur de gestion d’une petite bibliothéque avec es ee ae 7 ene hier aise Eiimel —
double index permettant la liste alphabétique des livres par 599 wys(23) = "22460 Nombre ae acre, eceeee dt
titre et par auteur, ainsi qu’une recherche rapide par mots- 99 wws(24) = "06550 "
cle, 650 WNS(29) = "2312" + RIGHT (WNS (2), 00)
660 W2S(1,01) = "0632092":W2$(2,01) = LEFTS$ (WBS, 9)
670 W2$(1,18) = "0656242":W2$ (2,18) = WX$
680 WARGS = "":AARGS = "":WMES$ = "01 "
CG 690 REM
700 W2$(1,2) = "0832051":W2Z$ (1,3) =
"0932013":WZ$ (1,4) = "1032053"
Programme Mntrzero 720 W2$(1,5) 1132043":W2$ (1,6) =
"1332111": W2$ (1,7) = "1432043"
10 REM *hRRRRNANEHER RAR RREE RRR RARE EHR 780 W2$(1,8) = "1532023":WZS (1,9) = "1632053"
20 REM * MNTRZERO - Maintenance des Records-Zéro 800 W2$(1,10) = "1575012":WZ$(1,11) =
30 REM * Auteur : R-J Anderson "1675023": W2$ (1,12) = "1832111"
40 REM AARARARARRHH HR RRR OREM E HERR R HONE 820 W2$ (1,13) = "1932043":W2S$(1,14) =
50 REM "2032023":WZ$ (1,15) = "2132053"
60 PRINT CHR$ (4); “PRE3” 840 W2$(1,16) = "2075012":WZ$(1,17) = "2175023"
100 TEXT : NORMAL : CLEAR :D$ = CHR (4) 880 GOSUB 900: GOTO 1000
120 FOR W = 1 TO 080:wBS = WBS +" "; NEXT 900 FORW= 2 TO WZ - 1:W2S$(2,W) = LEFT$ (WBS, VAL
130 RMS = "*$$*": FOR W = 1 TO 100:RM$ = RMS + " ( MIDS (W2$(1,W),5,2))): NEXT
NEXT 910 W2$(2,10) = "N":W2$(2,16) = "N”
140 WN = 25: DIM WNS(WN): REM Tableau des Libellés $20 RETURN
Ecran 1000 REM TAG --~
150 WZ = 18: DIM WZ$(2,WZ): REM Tableau des champs Point-retour et affichage de l'écran
160 FOR W= 1 TO 9:LV$ = LVS + "O":HV$ = HVS + "9": 1050 HOME :W=0
NEXT 1210 FOR WW = 1 TO WN:WV = VAL ( MID$
180 VG = 768:PG$ = "MNTRZERO":F1$ = "" (WNS (WH) ,1,2)): VTAB WV
200 REM ----~ 1220 WH = VAL ( MID$ (WNS(WW),3,2)):WT = VAL (
210 REM Saisie du Préfixe et de la Date MIDS (WN$ (WW), 5,1))
220 Clt = PRINT D$; "PREFIX": INPUT WX$: PRINT D$ 1230 POKE 1403,WH - IF WY > 4 THEN WT = WT -
230 W= INT ( PEEK (49041) / 2):WD$ = STRS (W) POKE 50, 63
240 WD$ = RIGHTS ("0" + STRS (( PEEK (49041) - W * 1250 PRINT MIDS (WN$(WH),6, LEN (WNS(WH)) ~ 5);
2) * 8+ INT ( PEEK (49040) / 32)),2) + "/" + POKE 50,255
wos 1260 IF WE > 1 GOTO 1290
250 WD$ = RIGHTS ("0" + STR$ ( PEEK (49040) - INT 1270 W = W+ 1: POKE 1403, ( VAL ( MIDS
( PEEK (49040) / 32) * 32),2) + "/" + WDS (W2$(1,W),3,2)) ~ 1)
300 REM ~~ 1260 IF MID$ (W2S(1,W),7,1) < "6" THEN PRINT
Définition Ecran et Zones W2S (2,W)¢
310 TI$ = "GESTION DES RECORDS ZERO" 1290 NEXT WW
320 WS = "": FOR W= 1 TO LEN (TI$):WS = WS + "-"; 1300 WM = VAL ( LEFTS$ (WMESS,2)) - 1
NEXT 1310 VYAB 24: POKE 1403,0: CALL - 868
330 WS = (64 - ( LEN (TIS))) / 2:WW = (64 - (LEN 1320 PRINT RIGHTS (WMES$, LEN (WMESS$) - 3);
Pom’s n° 49
10
1330 IF MID$ (WMES$,3,1)
1500 REM TAG ------:
Entrée Argument et Données
1510 WO$ = "":WM = WM + 1: IF WM > WZ THEN WM = 1
1520 IF WM <1 THEN WM = Wz
1530 WO = O:WENT$ = W2$(2,WM):WL =
(W2$ (1,WM),5,2))
1540 WV = VAL ( MIDS (WZ$(1,WM),1,2)) :WH =
MIDS (WZ$(1,WM),3,2)) - 2
"E" THEN CALL - 198
VAL ( MIDS
VAL (
1550 WT = VAL ( MIDS (WZ$(1,WM),7,1))
1560 IF WI = 1 AND WK = 27 THEN WM = WM ~ 2: GOTO
1500
1570 IF Wr = 1 GoTo 1500
1600 WO = WO + 1: IF WO > WL GOTO 2000
1610 VTAB WV: POKE 1403,WH + WO: POKE 50,127
1620 PRINT MID$ (WENT$,WO,1);: POKE 50,255
1630 WAIT 49152,128: POKE 49168,0:WK = PEEK
(49152)
1640 IF WK = 10 OR WK = 11 OR WK = 124 THEN 1630
1650 IF WK = 24 THEN IF WM > 1 THEN WZ$(2,WM) =
LEFTS (WB$,WL + 2): VTAB WV: POKE 1403,WH + WO:
PRINT WZ$(2,WM);: GOTO 1530
1660 IF WI = 2 AND WK > 96 AND WK < 123 THEN WK =
WK ~ 32
1680 WKS = CHRS$ (WK):WO$ = ""; IF PEEK (49249) >
127 THEN WO$ = WKS
1690 POKE 1403,WH + WO: IF WK = 13 GoTo 2000
1710 IF WK = 9 THEN PRINT MIDS (WENT$,WO,1);:
Goro 2000
1720 IF WK = 27 THEN POKE 1403,WH + 1: PRINT
W2$ (2,WM)7:WM = WM - Goro 1500
1740 IF WK = 21 THEN PRINT MID$ (WENT$,WO,1);:
FOR K = 1 10 48: NEXT : GOTO 1600
1770 IF WK = 8 AND WO < 2 THEN WO = 0: GOTO 1600
1780 IF WK = 8 THEN PRINT MID$ (WENT$,WO,1);:WO =
WO - 2: GOTO 1600
1810 IF WK < > 127 THEN 1900
1820 IF WO = WL THEN WENTS = LEFT$ (WENT$,WL ~ 1)
+" ": GOTO 1860
1830 IF WO = 1 THEN WENT$ = RIGHTS (WENT$,WL - 1)
+" ": GOTO 1860
1840 WENT$ = LEFT$ (WENT$,WO - 1) +
(WENT$,WL - WO) +
1860 W2$(2,WM) = WENTS: POKE 1403,WH + 1: PRINT
WENT$: GOTO 1610
RIGHTS
1900 IF WoS < > "" GoTo 2000
1920 IF WT = 3 AND (WK < 47 OR WK > 57) AND WK < >
32 GOTO 1630
1960 PRINT WK$;: IF WL = 1 THEN WENT$ = WK$: GOTO
1600
1970 IF WO = 1 THEN WENT$ = WK$ + RIGHTS (WENTS, WL
- WO): GOTO 1600
1980 IF WO = WL THEN WENTS = LEFT$ (WENT$,WO ~ 1)
+ WKS: GOTO 1600
1990 WENT$ = LEFTS (WENTS,WO - 1) + WKS +
(WENTS,WL - WO): GOTO 1600
RIGHTS
2000 POKE 1403,WH + WO: PRINT MID$ (WENT$,WO,1);
2010 W2$(2,WM) = WENTS: IF WOS = "" AND WK < > 13
GOTO 1500
2030 VTAB 24: POKE 1403,0
2500 REM -:
Saisie du Préfixe
2520 IF W2$(2,18) < > LEFT$ (WBS,
(W2$(1,18),5,2))) GOTO 2600
2530 PRINT D$;"PREFIX"; INPUT WX$: PRINT D$
2550 WZ$(2,18) = LEFT$ (WX$ + WBS, VAL ( MIDS
(W2$ (1,18),5,2)))
2600 REM ne
VAL ( MID$
Construction de 1'argument
2620 WX$ = "": FOR W = 1 TO 24
2630 IF MIDS (WZ$(2,18),W,1) < >" " THEN WX$ =
WXS + MIDS (WZ$(2,18),W,1)
2640 NEXT W: IF LEFT$ (WX$,1) < > "/" THEN WX$ =
7" + WKS
2650 IF LEN (WXS$) > 24 THEN WX$ =
2660 WZS(2,18) = LEFT$ (WXS + WBS, 24)
2670 IF RIGHTS (WX$,1) < > "/" THEN WX$ = WX$ +
nye
2700 Fl$ = "": FOR W = 1 70 clt
2710 IF MID$ (WZ$(2,1),W,1) <
F1I$ + MID$ (W2$(2,1),W,1)
2720 NEXT W:WARGS = WX$ + F1$
2800 WMES$ = "00 ":WPS = "":
3000 REM ~~~:
Test des Touches de Fonction
3050 IF WO$ < > "1" AND WK < > 38 GOTO 3250
3100 FOR W= 1 T0 5: HOME : PRINT "PANEL D'AIDE"
SPC( 60)PG$;
3120 PRINT MID$ (WN$(2),6,80);: FOR WW = 1 TO 20
3130 READ WS: IF WS = "**" THEN WS = "":WW = 21:W =
5
3150 PRINT W$: NEXT WW: VTAB 23: POKE 1403,0
3170 PRINT MID$ (WN$(2),6,80);: PRINT
Touche ";
3180 GET WS:
3190 PRINT :
LEFT$ (WX$,24)
>" " THEN F1$ =
IF WOS = "" THEN 4000
"Pressez une
IF WS = "" GOTO 3180
NEXT W: RESTORE
3200 WMES$ = LEFTS ("0" + STRS (WM),2) +
terminée": GOTO 9000
3250 IF WO$ = "3" OR WK = 34 GOTO 4000
3270 IF wos = OR WK = 39 THEN NEW :
3310 IF WOS = "V" OR WO$ = "v" GOTO 4000
3410 WMESS = LEFT$ ("0" + STR (WM),2) +
3420 WMES$ = WMES$ + "Touche de Fonction non
définie": Goro 9000
4000 REM ~ --
Traitement selon arguments
4010 IF F1$ = “" THEN WMESS =
absent": GOTO 9000
4020 IF WARG$ = AARG$ GOTO 5000
4030 GOSUB 900:R1% = O:WF = 0:WZ$(2,2) = "
4050 ONERR GOTO 4080
4060 PRINT D$;"PREFIX";WX$
4070 PRINT D. GOTO 4100
4080 WMES$ = "18APréfixe " + WxXS + "
4090 PRINT D$: GOTO 9000
4100 ONERR GOTO 4150
4110 PRINT D$; "VERIFY"; WAS
4120 PRINT D$: GOTO 4200
4150 WMES$ = "O3AFichier inexistant,
possible"
4160 PRINT D$: POKE 216,0: GOTO 9000
4200 WF = 1
4210 PRINT D$; "OPEN"; WAS
4220 ONERR GOTO 4350
4230 PRINT D$;"READ";WAS
4250 INPUT FO,CO,FO%,1I1,11%,X1,12,12%,X2
4260 PRINT D$; "CLOSE": PRINT DS
4270 R1* = 1: GOTO 4400
4350 FO = O:W2$(2,2) = LEFT$ ("0" + WBS, 5)
4360 W = PEEK (222) :WMES$ = "03AAnomalie sur record
zéro, mais"
4370 IFW 5 THEN WMESS = "03APas de record zéro,"
4380 WMES$ = WMESS + “ création possible”
4390 PRINT D$;"CLOSE";WA$: PRINT D$: POKE 216,0:
Goro 9000
4400 FO = FOR ~ 1:
les valeurs lues
"AAide
END
“O1ENOm fichier
introuvable"
création
REM Remplissage des zones par
Pom’s n° 49
4480 W2$(2,2) = LEFT$ ( STR$ (FO) + WB$,5)
4490 HO = 0: IF CO > 56 THEN HO = INT (CO / 5):CO =
(CO - (HO * 5)) +1
4510 W2$(2,3) = STR$ (CO)
4520 WZ$(2,4) = STR$ (HO)
4530 W2$(2,5) = LEFTS ( STR$ (FO%) + WBS, 4)
4600 IF I1 = 0 GOTO 4700
4610 WZ$(2,10) = "N": IF I1% < 100 GOTO 4650
4620 W2$(2,10) = "O":W = INT (11% / 100)
4640 W2$(2,11) = LEFTS ( STRS (W) + WBS,2)
4650 WZ$(2,6) = F1$ + "XI"
4670 W2$(2,7) = LEFTS ( STR$ (I1) + WBS, 4)
4680 W2$(2,8) = LEFTS ( STR$ (11%) + WBS, 2)
4690 W2$(2,9) = LEFTS ( STR$ (X1) + WBS,5)
4700 IF 12 = 0 GOTO 4900
4710 W2$(2,16) = "N": IF I1¢ < 100 GOTO 4650
4720 W2$(2,16) = "O":W = INT (118 / 100)
4740 W2$(2,17) = LEFTS ( STRS (W) + WBS, 2)
4750 W2$(2,12) = F1$ + "x2"
4760 W2$(2,13) = LEFTS ( STRS (I2) + WBS, 4)
4770 W2$(2,14) = LEFTS ( STR$ (I2%) + WBS, 2)
4780 W2$(2,15) = LEFTS ( STRS (x2) + WB$,5)
4900 REM
4970 WMES$ = "02ARecord-Zé6ro existant. Modifications
possibles"
4990 Goro 9000
5000 REM TAG -~
Controle de validité des zones
5030 CO® = VAL (W2$(2,3)):CO = CO
5040 HO = VAL (WZ$(2,4)):FO% = VAL (W2$(2,5))
5050 IF CO& > 0 THEN C9 = VAL ( LEFTS$ (HV$,CO%))
5060 IF CO’ <1 OR CO% > 5 THEN WMES$ =
"03ELongueur de clé incorrecte": GOTO 9000
5080 IF FOt = 0 THEN WMES$ = "05ELongueur
enregistrement absente": GOTO 9000
5090 IF FO® < 41 THEN WMES$ = "05ELongueur mini 41
octets": GOTO 9000
5100 IF HO > C9 THEN WMES$ = "O4EValeur maxi hors
limite": GoTo 9000
5110 IF HO = 0 THEN HO = C9:W2$(2,4) =
STR$ (HO) + WB$,5)
LEFT$ (
5120 IF HO > 0 AND HO < C9 THEN CO = (HO * 5) + CO®
-1
5150 REM
$160 I1$ = LEFT$ (WB$,9):12$ = I1$
5170 M1$ = W2$(2,10):M2$ = WZ (2,16)
5190 W = 24576: RE Mémoire réservée aux Index
5200 REM =~ --
Traitement premier Index
5220 I1# = VAL (WZ2$(2,8)):I1 = VAL (W2$(2,7))
5230 IF I1* = 0 AND Ii = 0 GOTO 5600
5240 IF I1% = 0 THEN WMES$ = "O8ELongueur zone
Index 1 absente”
5260 IF I1 = 0 THEN WMES$ = "O7ERang ler octet
Index 1 absent”
5270 IF (I1¢ + I1) > FO& THEN WMES$ = "07EValeur
incorrecte"
5280 IF LEFT$ (WMES$,2) < > "00" GoTo 9000
5290 I1$ = F1$ + "X1":WZ$(2,6) = LEFTS$ (I1$ +
WB$,11)
5310 X1 = VAL (W2$(2,9))
$320 IF X1 = 0 THEN X1 = INT (W / 118)
5330 IF (X1 * 11%) > W THEN WMES$ = "09EIndex 1
trop gros": GOTO 9000
5350 IF X1 > HO THEN X1 = HO
5360 W2$(2,9) = LEFTS ( STRS (X1) + WBS, 5)
record-map": GOTO 9000
$440 M1 = VAL (W2$(2,11)):WW = I1€:I1% = (M1 * 100)
+11
5450 IF Ml < 1 OR Ml > 10 THEN WMES$ = "11ENombre
de chaines incorrect"
5600 REM
Traitement deuxiéme Index
5620 12% = VAL (WZ$(2,14)):I12 = VAL (WZ$(2,13))
5630 IF I2% = 0 AND I2 = 0 GOTO 6000
5640 IF 12% = 0 THEN WMES$ = "14ELongueur zone
Index 2 absente”
5660 IF I2 = 0 THEN WMES$ = "13ERang ler octet
Index 2 absent"
5670 IF (I2% + 12) > FO THEN WMES$ = "13EValeur
incorrecte"
5680 IF LEFT$ (WMES$,2) < > "00" GOTO 9000
5690 I2$ = F1$ + "X2":W2$(2,12) = LEFT$ (12$ +
WBS, 11)
5700 W = W - (X1 * WW)
5710 X2 = VAL (W2$(2,15))
5720 IF X2 = 0 THEN X2 = INT (W / I2%)
5730 IF (X2 * 12%) > W THEN WMESS = "15EIndex 2
trop gros" + STR$ (W): GOTO 9000
5750 IF X2 > HO THEN X2 = HO
5760 W2$(2,15) = LEFT$ ( STR$ (X2) + WBS,5)
5800 IF M2$ = "N" GOTO 6000
5820 IF M2$ < > "O" THEN WMES$ = "16EO/N pour la
record-map": GOTO 9000
5840 M2 = VAL (WZ$(2,17)):12% = (M2 * 100) + 12%
5850 IF M2 <1 OR M2 > 10 THEN WMES$ = "17ENombre
de chaines incorrect": GOTO 9000
6000 REM Fin traitement Index
6020 IF LEFT$ (WMES$,2) < > "00"
7000 REM ~~ -
Visualisation des Valeurs essentielles
7020 IF Wo$ < > "V" AND WOS$ < > "v" GOTO 7500
7050 HOME : PRINT "VALEURS ESSENTIELLES" SPC(
52) PGS;
7060 PRINT MID$ (WNS(2), 6,80);
7080 VTAB 4: PRINT "Nom Fichier = ";F1$;
7100 PRINT TAB( 28)"Préfixe = ";WX$: PRINT
7110 PRINT " Long, Clé = ";CO%; TAB( 28);"P.H.
clé = ";HO;
7120 PRINT TAB( 47);"Long. Enregistrement =
7130 PRINT "| Enregistré = ";CO
7200 VTAB 09: PRINT "Nom Index 1
7210 PRINT " Rang ler octet
40) "Record-Map = ";M1$
7220 PRINT " Longueur de zone = ";I1% TAB(
40) "Chaines = "3M
7230 PRINT " Nombre de postes = ";X1
7300 VTAB 15: PRINT "Nom Index 2 ";12$: PRINT
Goro 9000
"7FO8
";I1$: PRINT
= ";T1; TAB(
7310 PRINT " Rang ler octet = ";12; TAB/
40)"Record-Map = ";M2$
7320 PRINT " Longueur de zone = ";12¢ TAB(
40) "Chaines = "2M2
7330 PRINT " Nombre de postes = ";X2
7340 VTAB 23: POKE 1403,0: PRINT MID$
(WNS (2), 6, 80);
7350 PRINT “Pressez une Touche ";:W$ = ""
7360 GET W$: IF WS = "" GOTO 3970
7430 WMESS = LEFTS ("0" + STRS (WM),2) +
"AAffichage terminé”
7450 GOTO 9000
7500 REM
7520 IF WO$ < > "3" AND WO$ < >
WMES$ = "01ADonnées correctes.
CHR$ (34) THEN
1F3 écrit le
5400 IF M1$ = "N" GOTO 5600 Record-Zéro": GOTO 9000
5420 IF Mi$ < > "O" THEN WMES$ = "10EO/N pour la 8000 REM ---: a a
:
Pom’s n° 49
11
Mise a Jour du Record Zéro
8020 FO = VAL (WZ$(2,2))
8050 WMES$ = "Création fichier "
8060 IF WF = 1 THEN WMES$ = "Modification fichier "
8070 WMESS = WMESS + F1$ + " en cours...": GOSUB
8900
8120 FOt = FOt + 1: PRINT D$;"OPEN"; WAS; ",L";FO%
8130 PRINT D$;"WRITE";WA$;",RO"
@140 PRINT FO: PRINT CO: PRINT FO*
8150 PRINT Il: PRINT I1%: PRINT X1
8160 PRINT 12: PRINT I2¢: PRINT X2
8170 PRINT D$;"CLOSE";WAS
8180 PRINT D$:FO¢ = FOt - 1
8200 IF Il = 0 AND I1# = 0 GOTO 8400
8210 WMES$ = "Création Index " + I1$ + " en
cours...": GOSUB 8900
8220 WWS = WXS + I1$
8230 PRINT D$;"OPEN"; WHS
8240 PRINT D$; "WRITE"; WWS
8250 IF M1$ = "O" THEN FOR W = 1 TO M1:
NEXT W
8260 FOR W = 1 TO Xl: PRINT " ": NEXT W
8270 PRINT D$;"CLOSE";WWS$: PRINT D$
8400 IF I2 = 0 AND I2¢ = 0 GOTO 8500
8410 WMES$ = "Création Index " + I2$ + " en
cours...": GOSUB 8900
8420 WWS = WXS + I2$
8430 PRINT D$; "OPEN"; WWS
8440 PRINT D$; "WRITE"; WWS
PRINT RMS:
8450 IF M2$ = "0" THEN FOR W = 1 TO M2: PRINT RM$:
NEXT W
8460 FOR W= 1 TO X2: PRINT " ": NEXT W
8470 PRINT D$;"CLOSE";WW$: PRINT D$
8500 REM
8510 PRINT D$;"FRE";WW$: PRINT D$
8600 WMES$ = "01ACréation Fichier " + WAS +"
terminée."
8880 GOTO 9000
8900 VTAB 24: POKE 1403, 0:
WMES$;: RETURN
9000 REM TAG -
Point d'aboutissement général
9010 AARGS = WARG$: IF MID$ (WMES$,3,1) =
1000
9020 GoTo 1300
9050 DATA “Nom du Fichier :
9060 DATA “Le nom du Fichier ne doit pas excéder
NEUF caractéres."
9070 DATA "I1 doit étre entré sans le Préfixe qui
est 4 indiquer dans”
9080 DATA “la zone spécifique. Le Préfixe est
facultatif si le fichier"
CALL
- 868: PRINT
"A" GOTO
DATA
9090 DATA “est créé sur le préfixe en cours.",
9100 DATA "Quantum :": DATA "=~
9110 DATA "C'est le nombre d'enregistrements
existants dans le fichier en"
9120 DATA “cours de traitement.
n'existe pas ou s'il n'a pas”
9130 DATA “encore été mis 4 jour, cette valeur est
zéro. Le programme"
Si ce fichier
9140 DATA “ne peut la modifier.",
9150 DATA "“Longueur de Clé :": DATA "-
9160 DATA "Donner la longueur réelle de la clé
numérique qui sera utilisée”
9170 DATA “c'est a dire, la longueur du chiffre de
l'enregistrement de plus"
9180 DATA “haut rang du fichier. Les limites sont
2 et: 53%,
9200 DATA “Plus Haute Clé :": DATA "
9210 DATA "La plus haute clé est facultative.
C'est une valeur qui sera"
9220 DATA "combinée avec la longueur de la clé, i
pour limiter la numérotation"
9230 DATA “des enregistrements au rang voulu.",
9250 DATA “Longueur d'enregistrement :": DATA "~~
9260 DATA “La longueur d'enregistrement peut
varier entre 41 et 8192 octets."
9270 DATA "Donner la vraie longueur des données.
Le retour-chariot sera"
9280 DATA “ajouté automatiquement par le
programme.",
9300 DATA "“Indexation :": DATA
9310 DATA “Les valeurs pour les index et record-
map sont identiques pour"
9320 DATA “chaque index possible. Les index sont
calculés selon une place"
9330 DATA "en mémoire conventionnelle de 24.576
octets. Les valeurs limites"
9340 DATA “sont spécifiées sur les écrans
suivant. aoe j
9350 DATA “Rang du ler octet DATA *
9360 DATA "C'est la position du ler octet de la i
zone a indexer, par rapport"
9370 DATA "au ler octet de l'enregistrement. Le
ler octet de l'enregistrement"
9380 DATA "porte le numéro 1.
9400 DATA “Longueur de Zone :": DATA "
9410 DATA “Donner la longueur, en octets, de la
zone 4 indexer. Cette valeur"
9420 DATA ‘peut varier entre 2 et 99 octets
9450 DATA “Nombre de postes : DATA: fa0=
9460 DATA “Spécifier le nombre de postes désirés
pour l'index. Le programme"
9470 DATA “peut calculer cette valeur
automatiquement. Il suffit de ne rien”
9480 DATA "“spécifier dans cette zone ou de
l'effacer.",++,
9700 DATA "Record-map DATA ".
9710 DATA "Spécifier par O ou N si un tableau
d'assignation d'enregistrements"
9720 DATA “est désiré, dans le cas d'une
indexation automatique. Les tableaux"
9730 DATA "“d'enregistrements sont écrits au début
des index sous forme de"
9740 DATA "chaines de 100 octets commencant par le
code *MAP*.",
9750 DATA "Nombre de chaines :": DATA "
9760 DATA "La record-map est constituée de chaines
de 100 octets.”
9770 DATA “Donner le nombre de chaines nécessaires
au traitement,"
9780 DATA "“compte-tenu de la valeur maximum de la
clé.",
9800 DATA **,**
9900 END
Pom’s n° 49
Les transferts Mac/GS
Avant toute chose, dressons la liste du
matériel indispensable pour réaliser
cette opération.
Giffer 1.06
Un Macintosh ; ¥,
Un Apple IIGs ;
Le logiciel shareware Giffer sur
Macintosh ;
Le logiciel shareware
Shreonvert
SHRConvert sur Apple IGS ;
Les logiciels systtmes MacOS 6.0.5 et GS/OS 5.0.2
ou ultérieurs ;
Le logiciel ResEdit sur Macintosh .
XS 8S SSN
S
Transfert d’images
couleurs Apple IIGS vers
Macintosh
+ Lancez SHR Convert sur |’ Apple IIGS,
* Sélectionnez dans la
Select picture type to convert liste supérieure de
Apple TI fomily oO) l'image ci-contre le
Apple Ilgs specific a
Atari ST type d’image a
Commodore 64/128 charger .
Macintosh f .
Computer-independent |_|* Sélectionnez ensuite
3] le sous-type
/\ Computer tupe ~~ spécifique de
Specific type V | l'image a charger.
Type $C (PNT) compressed
Type $C1 (PIC) non-compressed
PS I1gs color graphic
PS IIgs built-in (GRAPHIC.C6TO-7)
a. Utilisez l'aide en
ligne si vous désirez
en savoir plus sur le
type de fichier
ny image Apple II ou
GIF.
Cliquez & Pintéricur
pict
Select format for saved pictures de la fenétre
Emile Schwarz
Cliquez ensuite dans le bouton Save et sélectionnez la
taille de l'image. II faut presser Return ou bien cliquer dans
un bouton.
L’interface standard Apple pour l’enregistrement des
fichiers apparait et vous demande sous quel nom vous
désirez enregistrer cette image. Donnez donc un nom ou
conservez le nom par défaut, puis pressez Rtn ou sur Save.
Un nouveau dialogue apparait et affiche un texte informatif
ainsi qu’un thermométre montrant I’avancement de la
sauvegarde.
If this file is to be uploaded toa
computer service or BBS, please
include the fol lowing dota in its
description:
ONO x 200 x 167 N09
information (the picture's
zontal & vertical size, number of
Une fois l’enregistrement
terminé, un bouton le
signalant s'affiché a la
place du thermométre.
L’image ainsi sauvegardée
est du type $06 (BIN),
auxtype $0000,
1 turn out on their porticulor
srophics hardware,
tee
Apple File Exchange
Lancez Apple File Exchange sur
Macintosh, Transférez l'image GIF
puis quittez et lancez ResEdit.
Sélectionnez l'image transférée. Puis ouvrez une fenétre
d'information a I'’aide de l’option Get Info du menu File.
Lisez le manuel d’accompagnement de
ResEdit pour la description du
fonctionnement de ResEdit.
Attention, ResEdit est un produit a utiliser
avec précautions. En effet, mal utilisé, il
peut détruire des fichiers. wo
Il faut maintenant modifier le type et le créateur afin que
Giffer puisse charger cette image. Pour ce faire :
Preterencar.
W sélectionnez la case Type et remplacez 06 par GIFf ;
Sove représentée ci- WV sélectionnez maintenant la case Creator et remplacez
$C0,0PointWorks+ 1.0 (obsolete) [O) contre pdos par GIFf.
$C0,1 PackBytes (obsolete) Sél ‘
$C0,2 Apple Preferred ectonnez . :
C1 non-compressed screen Voption GIF (CIS Lorsque le type et le créateur du fichier GIF a été modifié
GIF (CIS Graphics Interchange) Graphics comme sur l'image ci-aprés, enregistrez les modifications
ty Interchange). ou bien fermez la fenétre.
Pom’s n° 49
13
14
Creator [Bit Si vous n’avez pas
Ries Biekee pee enregistré les
snares ONo Inits modifications, le
Elmo suntcn unc Mislogus Cleese
vous demande si vous
désirez le faire.
ove “Info for Mie SCAEEN.6IF™
Defers cisting?
Pressez Return ou cliquez sur =
Yes.
Quittez ResEdit par @-Q ou bien en sélectionnant l’option
Quit du menu File, Vous pouvez maintenant lancer Giffer
en ouvrant le menu File, et sélectionnant l'option Open
GIF file.
A l'aide de l'interface standard Apple de sélection de
fichiers, choisissez une image.
Aprés quelques secondes, une fenétre contenant l'image
transférée apparait. Un détail cependant : comme vous
pouvez le constater sur votre écran, l'image est distordue.
Pas de panique !
ba we Ouvrez le menu
Zoom... oA Tk hU lide:
Shift Scan Line... 3H reesaeey eama
Use Default Palette #1 Toption Zoom...
La résolution affichée est de 640 x 200, celle de l'Apple
IIGs,
Now width: [eo]
New height:
Modifiez donc la valeur
verticale pour afficher
400 lignes au lieu de
Greslae egies ie) 200 et pressez Retour
{F3 or emi ou cliquez dans le
Sélectionnez l'option Memorize Picture du menu
ImageStorage, puis utilisez l'une des options de
sauvegarde du menu File afin de sauver l'image.
Transfert d’images
couleurs Macintosh vers
Apple lIGS
Lancez Giffer sur Macintosh, puis chargez une image a
l'aide de l'une des options Ouvrir du menu File.
WY Sélectionnez l'option Save as GIF file... et
sauvegardez l'image.
vA aide d'AFE, transférez l'image Mac sauvegardée
au format GIF sur une disquette Apple II.
Lancez SHRConvert.
Utilisez l'option Changing: /VIDE/NOC SIF
Change File Métiietwe: OCT — ew filetave: [ET]
attributes du menu 1d oox_tape: S008 oo wxx.tovw: [0000 ]
File. Modifiez le type Detetwte
et donnez lui la valeur Kees chee
Fj Weitesble
$06 (BIN), puis teetaite —— _toneel_)
passez le sous-type &
la valeur $0000.
Sélectionnez le type Apple II fomily rn
d’image a charger & Apple 119s specific ry
partir de la fenétre Atari ST
Select picture type to Merial Wi
convert. Computer-indépendént is
Cliqueidans 16 Cin orfaee Si ait Vv.
H et
boa ton Load, puis, GIF Chraphics Interchange Format) [>
Taide de l'interface ALE (Run Length Encoding) ry
standard de sélection
de fichier, chargez une
image GIF, |_|
oy
Pronesstny BIFE7 las
Un dialogue de sélection aster widt
Hie Raster height: 200
apparait et vous Propose 1 Color map size: 16
Plusieurs choix. Palette range: 4096
@ Calculated palette
A vous d'effectuer le bon |} C) Default color palette
choix en fonction de la
définition d'origine de
l'image et des couleurs
présentes.
} © 6royscale palette
Ou trouver les produits ?
‘= Giffer pour Macintosh : sur la disquette Pom's n°49 ;
‘= SHRConvert pour Apple IIGS : CalvaCom, GS Club et
Pom’s (DPA 007) ;
ResEdit pour Macintosh : APDA France et CalvaCom ;
im Les logiciels systtme MacOS 6.0.5 et GS/OS 5.0.2 :
revendeurs Apple.
Erratum
L’adresse du revendeur de Keylock (Pom's 48, encadré
page 43) est: MACTIQUE
Box 965.
S-801 33 Gavl, Suéde
Télécopie : (46) 26 17 24 02
Pom’s n° 49
GS:
Ics
Un CDA formateur
Format
Dans le Pom’s n° 35, Pierre Demblon
se lamente : on ne dispose toujours
pas d'une commande Format univer-
selle, permettant de formater tout
disque ProDOS. C’était vrai, mais il
se trompait en avangant qu’une telle
commande n’existerait qu’a partir de la
future version 2.0 du ProDOS 16. En
effet, dans les ProDOS 16 v1.1
Release Notes and Documentation
Updates du 15 décembre 1986, la
ProDOS Team annonce que ce
formatage existe dans ProDOS.
Oui, il s’agit bien de l’appel $24,
expliqué et commenté dans le source
APW du CDA qui suit et, qui permet,
selon Apple, de formater tous les
lecteurs pouvant supporter ProDOS,
dont ceux se branchant sur le Smart-
Port, et les Disk II. Je peux d’ores et
déja vous dire que cela fonctionne tres
bien sur le vieux Disk II, les 3.5” ou
le Ramdisk. Le tout était donc de
l’utiliser. La version actuelle de ce
CDA est comme l’appel $24 (For-
mat) : elle ne supporte actuellement
que ProDOS. Mais plus tard, elle
devrait pouvoir formater les autres
systémes d’exploitation d’Apple, du
DOS 3.1 aux systémes du Mac, en
passant par CP/M ou le Pascal
UCSD, Tout dépendra de ce qu’Apple
mettra dans sa commande Format.
Testez déja les CDAs sous un vieux
ProDOS 16 et sous GS/OS, vous
m’en direz des nouvelles.
Mieux encore, avec le source de
Format, vous pouvez obtenir un autre
CDA : l’Effaceur, qui vous sera utile
si vous voulez supprimer rapidement
le contenu de votre disque, sans
attendre, sans avoir & le reformater,
sans avoir a effacer un A un les
fichiers, et sans avoir & charger un
autre logiciel. C’est ce qu’on trouve de
plus rapide quelle que soit la capacité
du disque, puisque ce CDA se contente
d’effacer les blocs servant & booter et
de vider le répertoire et la Bitmap
d’occupation des blocs.
Pour modifier le source de Format afin
d’obtenir celui de l’Effaceur, il suffit de
remplacer l'appel & Format par un
appel a l'une des derniéres commandes
ProDOS décrites dans les Release
Notes for System Disk 2.0 du 4 mars
1987, l’appel $25 (Erase Disk), quia
exactement les mémes paraméires qué
Format. Vous changez l’en-téte du
CDA situé dans le segment Data, et il
n’y a plus qu’a assembler.
Sous APW
Pour ne pas se casser la téte et
automatiser un peu l’assemblage /
linkage des CDAs, nous avons deux
fichiers. Pour utiliser vos CDAs, il ne
vous reste plus qu’a les mettre dans le
sous-directory /System/Desk.Accs
puis de relancer le systéme, ou encore
de les charger a l’aide du NDA de
Frédéric Rozay.
Utilisation
C’est simple comme un bon CDA.
Installés dans le menu Desk
Accessories (6-Ctrl-Esc), ces deux
outils tiennent compte du mode vidéo
40 ou 80 colonnes, et des lecteurs
ProDOS installés. Sous GS/OS par
exemple, vous pouvez appeler le
disque a traiter de multiples fagons :
@ par son nom de volume s’il a déja
16 formaté (donc commengant par
un /);
Patrice Neveu
@ pat ile nom du _ lecteur
(.AppleDisk3.5A, OU .DEV3 par
exemple) ;
@ = parle nom abrégé du lecteur (. D2
par exemple).
Ensuite, tapez le nouveau nom du
volume. Si vous ne tapez rien, le
disque sera nommé /Disque. Vide.
Bibliographie ; n'oubliez jamais,
amis programmeurs, de foulner dans
les System Disk Release régulié-
rement imprimées. Elles contiennent
bien souvent les réponses a vos
questions aussi bien aii niveaii des
nouveaux appels qui vous font
cruellement défaut, qu'au niveau des
bugs connus des développeurs Apple.
A signaler
Au fait, puisqu’on en est a rectifier
quelques erreurs, en voici deux qui
m’ont fait tout dréle :
@ Pom’s 35, page 29: sous APW,
1 280Ko de RAM (dont une partie
en Ramdisk) et 1 080Ko d’espace
disque (plus le Ramdisk) suffisent &
programmer d'assez grosses appli-
cations en assembleur (plus de 200Ko
de source), quoi qu’en dise Apple.
@ Pom’s 37, page 63 : pour ceux qui
font de la programmation Multi-
Langages, il existe un troisitme
choix : APW (eh oui), avec lequel
vous pouvez assembler vos segments
séparément et les linker plus tard, avec
ou sans bibliothéque. D’ailleurs un
exemple de passage de paramétres entre
un segment écrit en C et un autre en
Assembleur est donné dans la
documentation développeur.
Pom’s n° 49
16
Erase.Edline
JEDI III ISIGOIIUI III IIIT ISIS III IOI
* Edbine v2.1 Patrice Neveu - Joliciel 90. *
* *
* Editeur de ligne aux fonctions reduites: *
* *
* Possibilite de coder l'affichage *
*[Delete], Fleches gauche et droite, [Return],*
* [Escape] *
* Chaine de caracteres precedee par sa taille *
* *
* Appel: 1dx #Nbr_Car_Max Nombre de caract max*
* Ilda #Buffer_Adr_@ Adresse 8 bits du buffer *
% c= 1 code l'affichage par des X
* jsr EdLine
*
*
*bec Bonne Saisie c= 1 si eu esc pour sortir *
* *
*
UO OE EOD OneR RHI Le 20/02/90 *hHKR EERE
Edbine anop
Buffer anop
Kbdstb gequ $00C010
teeeeneoeee
Seeeeeeeeeeeeeeseenneeeeeeseeet
* Utilisation: %
* *
* Appeler ainsi: -
* *
* jsr EdLine D'affichage du debut de la chaine*
*
* Les Codes lus sont tous avec le bit 7 a1. La
routine de lecture clavier 8
*l'annule. Ainsi, on a: Les ConTRoLes [00..1F)*
*La ponctuation [20..2F] U (3A..3F] U [5B..60]*
*
* Les chiffres [30..39] *
* Les majuscules [41..5A] *
« Les minuscules [61..7D] U [40] *
* .
wee Le 18/03/89 =asemnnnant
* Initialisation et attente d'une touche *
+
php Empile
pour garder carry
ldy #$FFFF
sty Masque_AND
stz Masque _ORA
plp Recupere carry
bee No_Code Sic=1
alors on doit proteger
ldy #$58 Code de 'X'
sty Masque_ORA Met un
X a chaque caractere tape
stz Masque_AND Efface
le caractere
No_Code anop
stx Max_Length
sta Buff Add_1+1
sta Buff Add_2+1
sta Buff Add_3+1
stz Char Ptr
Position du curseur
stz Line Length Nombre
de caracteres tapes
Get_Char lda >KBd
d'une frappe au clavier
bmi YATouche
Attente
Il y a eu touche
*** Dans l'attente d'une touche, fait clignoter
LO CUFSOUL. cee eeeeeeeeeccreceee
Curseur_Norm da #'_' Affiche le curseur
pha
_WriteChar
PushWord #8 Revient
en arriere pour que le caractere
_WriteChar Soit au
meme endroit
jsr WaitAMoment
idy Char_Ptr Prend
le caractere qui est en dessous
iny
shortm
lda Buffer,y
longm
and Masque_AND
ora Masque_ORA
pha
_WriteChar Affiche le caractere
PushWord #8 Revient
en arriere pour que le caractere
_WriteChar Soit au meme endroit
Buff_Add_1
jsxr WaitAMoment
bee Get_Char
a eu touche depuis
stily
YATouche lida >KBdstb
_ReadChar derange les valeurs de Wnd...
ton.
* Quel type de touche est-ce ? *
Key Pressed — longm
and #$7F —- Filtre: bit 8 a zero
sta Pressed_Key
cmp #$1F En
dessous, c'est un CTRL
bee Control _Key
omp #$7F
L'unique cas, c'est [Delete]
beq Control_Key
*** Touche normale: affiche le caractere a
ltecran, ajoute le dans le buffer...
FEM cwanew nies see. puis retourne attendre
lda Pressed_Key
and Masque_AND
ora Masque_ORA
pha
_WriteChar Affiche le caractere
lda Pressed_Key Stocke
Pom’s n° 49
le caractere dans la ligne
ldy Char_Ptr
iny
ltoctet de longueur
shortm
stocke que le caractere
Buff_Add_2 sta Buffer,y
cpy Max_Length
beq EOL
longm
ine Line_Length
caractere a ete accepte, la
Not_Larger ine Char_Ptr
Go_Get_Char _ brl Get_Char
Control _Key cmp _#$1B
beq Escapade
cmp #$0D
beq EOL
cmp #$08
beq Left_Arrow
cmp #$15
beq Right_Arrow
cmp #$7F
beq Delete
bne Go_Get_Char
menu
Escapade sec Signale qu
rts
* Fin de ligne signalee par un
EOL lda Char_Ptr
la fin de ligne
shortm
Buff_Add_3 sta Buffer
longueur pour String
longm
cle La
rts
caractere
Left_Arrow ldy Char_Ptr
est deja en debut de chaine
beq Go_Get_Char
on ne peut aller au dela...
dec Char_Ptr
d'un caractere a gauche
Deplace Curs da Pressed_Key
le caractere en question
pha
_WriteChar
le quand meme
Saute
Le
ligne
S'allonge
*** Controle: agit de facon adapte@.....+eeeeee
Escape ?
Delete?
Si ce
ntest rien de tout cela, frappe
* Escape, alors on ne sauve rien et on va au
‘on a fait escape
retour chariot
Signale
Met la
chaine est bonne
* Fleche a gauche, pour revenir en arriere d'un
Si on
Alors
Revient
Prend
Affiche
bra Go_Get_Char Et
retourne attendre une frappe
* Fleche a droite, pour avancer d'un caractere
Right_Arrow ldy Char_Ptr Si on
est a la fin de la ligne, une
cpy Line_Length Fleche
a droite bippe
bee Avance Sinon,
elle avance dans la chaine
_SysBeep
bra Go_Get_Char
Avance inc Char_Ptr Avance
dans la chaine
Ida #28 Forward
Space
sta Pressed_Key
bra Deplace_Curs Va
deplacer le curseur a droite
* Pour l'instant, delete agit comme la fleche a
gauche (n'efface rien)
Delete Ida #8 Simule
une fleche a gauche
sta Pressed_Key
bra Left_Arrow
* Sous-Routines de l'editeur de ligne i
ae
WaitAMoment Entry
sec Pas defaut
phy Sauvegarde ¥
ldy #$C000
WAL lda >KBd Ilya
eu une touche de frappee
bmi Pas Attendre
dey
bne WAL
cle Si on a bien attendu
Pas_Attendre ply Recupere ¥
rts
mateeemenernmnmeieeemenm rem midsole aes animes
* Donnees utiles a l'editeur de ligne *
fe eananeeaeasaesasessss5==:
Pressed Key ds 2 Code de la touche
Char_Ptr ds 2
Position du curseur dans la ligne
Max_Length ds 2 Nombre
maximum de caracteres
Line_Length ds 2 Taille
de la ligne
Masque_AND ds 2 Masque
pour coder ou non 1‘affichage
Masque_ORA ds 2
Pom’s n° 49
17
|
|
Eraser.Macros
MACRO
lab pushlong éaddr, soffset
&élab ANOP
LCLC 6C
LCLC 6REST
&C AMID éaddr, 1,1
AIF "éC"="#", , immediate
AIF "6C"="[", .zeropage
AIF C:60ffset=0, .nooffset
AIF "soffset"="s", .stack
pushword éaddr+2, éof fset
pushword éaddr, soffset
MEXIT
snooffset
pushword &addr+2
pushword addr
MEXIT
-immediate
‘REST AMID addr, 2,L:6addr-1
de I1'$F4', 12" (6REST) |-16"
de I1'$F4',12'6REST'
| Mexrr
| . stack
pushword saddr+2,s
pushword saddr+2,s
MEXIT
.zeropage
| ldy #soffset+2
| pushword saddr, y
ldy #6offset
pushword saddr, y
MEND
MACRO
lab pushword &SYSOPR
lab ANOP
AIF c:6SYSOPR=0, .b
LCLC &C
&C AMID "&SYSOPR", 1,1
AIF
("6C"="4#") AND. (S:LONGA), .imme
diate
ida &SYSOPR
pha
MEXIT
-b
pha
MEXIT
simmediate
LCLC &REST
LCLA &BL
BL ASEARCH "&SYSOPR"," ", 1
AIF &BL>0, .a
BL SETA L:&SYSOPR+1
+a
REST AMID "SSYSOPR", 2, 6BL~2
de I1'$F4',12'6REST'
MEND
MACRO
élab str éstring
lab de
il'l:éstring',c'sstring'
MEND
MACRO
élab movelong &from, 6tol, 6to2
&lab ANOP
LCLC &C
LCLC GREST
&C AMID &from,1,1
&REST AMID &from, 2, L:¢from-1
AIF "6C"="[", .zeropage
AIF C:6to2=0,.a
AIF
("etol"="s") or. ("Etol"="x") .o
F. ("6tol"="y"), . indexed
moveword &from, &tol, 6to2
AGO .b
a
moveword &from, 6tol
-b
AIF "6C"="#", immediate
AIF C:6t02=0, .c
moveword
&fromt2, 6tol+2, 6to2+2
MEXIT
e
moveword &from+2, 6tol+2
MEXIT
. immediate
AIF C:6to2=0, .d
moveword
#°GREST, 6tol+2, 6to2+2
MEXIT
a
moveword #*6REST, 6tol+2
MEXIT
- zeropage
moveword &from, 6tol, 6to2
idy #étol+2
Ida &from,y
sta 6to2+2
MEXIT
- indexed
da &from, 6tol
sta @to2
Ida &from+2, stol
sta 6to2+2
MEND
MACRO
&lab moveword &from, étol, 6to2
&lab ANOP
LCLe &C
&C AMID &from,1,1
ALF "6C"="(", .2eropage
Ida &from
sta étol
AIF C:6t02=0,.a
sta &to2
.a
MEXIT
-Zeropage
AIF "6tol"="0", .b
Idy #stol
Ida &from,y
sta &to2
MEXIT
-b
ida &from
sta &to2
‘MEND
‘MACRO
lab longm
&lab ANOP
rep #%00100000
longa on
MEND
MACRO
lab shortm
&lab ANOP
sep #800100000
longa off
‘MEND
MACRO
élab _FWEntry
lab ldx #$2403
js1 $£10000
MEND
MACRO
élab _ReadBParam
lab ldx #$0C03
jsl $£10000
‘MEND
MACRO
&lab _SysBeep
Slab ldx #$2C03
jsl $£10000
MEND
MACRO
&lab _GET DEV_NUM sparams
élab js1 $£100A8
de 12"$20"
de i4"sparams"
MEND
‘MACRO
élab _ERASE_DISK sparams
lab jsl $E100A8
de 12"$25"
de i4"éparams"
MEND
MACRO
Slab _GET_VERSION sparams
Slab Jsl $£100A8
de 12"$2a"
de i4"éparams"
MEND
MACRO
$lab _D_INFO sparams
Slab js $£100A8
de i2"$2c"
de i4"6params"
MEND
MACRO
lab _ReadChar
6lab ldx #$220¢
js1 $£10000
jam
MACRO
lab _SetOutGlobals
lab ldx #$0A0c
js1 $£10000
‘MEND
MACRO
élab _WriteChar
flab ldx #$180C
jsl $£10000
‘MEND
MACRO
élab _WriteCstring
lab ldx #§200C
js1 $£10000
MEND
MACRO
Slab _Int2Dec
élab ldx #$260B
jsl $£10000
MEND
‘MACRO
&lab _Int2Hex
Slab ldx #2208
js1 $£10000
MEND
18
Pom’s n° 49
Erase.CDA
FEIT RRR RARER RE
* Effaceur v2.0 *
*
* (c) Patrice Neveu, le 14 mars 1990. .
* *
FOI IO ICICI SIS IIOIU SIUC IIOR IOI IOI oe
keep Eraser
mcopy Eraser.Macros
* Bloc d'identification du CDA *
Eraser_Info Start
str 'Effacage' Nom du
CDA
de i4'Eraser Init’ Adresse
d'ouverture du CDA
de i4'Eraser ShutDown' Adresse
de fermeture du CDA
End
* Point d'entree du CDA *
sia ic ea ia eel cba aganioabaaucarea W
Eraser Init Start
using Eraser Data
ZPage gequ $0000
KBD gequ $c000
KBDSTRB gequ $C010
phb Ne pas
oublier de le depiler en sortant
phk Data Bank = Program
Bank
plb Sans deranger la
pile
* Teste la version de ProDOS (8/16) .
* Demande quelle version de ProDOS 16 est appellee *
OS_Kind equ $E100BC
lda >0S_Kind
and #S00FF Ne
garde que l'octet interessant
bne Kind_OK
PushLong #ProDOs_Err
Write Err _Writecstring
PushWord #0 Attend
une frappe au clavier
PushWord #0
_ReadChar
pla
brl Quitte
Kind_OK _Get_Version GetVersion_Pm
ida GetVersion_Pm
and #$7FFF
emp #$0101 si
c'est inferieur, alors Eraser ne
bes Good_vs
pas dans ProDOs.
Sera
PushLong #Version_Err
bra Write Err
Good_Vs pha
xba
and #$00FF
pha
PushLong #Major_Vs
PushWord #1
PushWord #0
_Int2Dec
pla
and #$00FF
pha
PushLong #Minor_Vs
PushWord #1
PushWord #0
_Int2Dec
lda GetVersion_Pm
and #$8000
bne Prototype
Ida #$20 Version
finale --> espace
bra Proto
Prototype Ida #80 Version proto -->
P
Proto shortm
sta Minor_Vs+1
longm
* Affichage du cadre CDA *
ae
Open_CDA PushWord #0 Place
pour le resultat
PushWord #$19 Mode
video de la Battery RAM
_ReadBParam
ida #$2800
plx
beq Video4o
ora #$0014
Video4o sta >$0020
PushWord #$FF And
Mask
PushWord #$80 Ora
Mask
_SetOutGlobals Pour GS/0S
5.0
PushLong #En_Tete
_Writecstring
PushLong #Bords
_WritecString
PushLong #En_Queue
_Writecstring
ldy #0 Des
espaces pour blanchir les buffers
Ida #$2020
Poms 49
19
Clear Path sta
sta
iny
iny
ey
bee
ida
jsr
idx
Device Name, y
Volume_Name, y
fae
Clear Path
#$0302
Tab
#16
Longueur maximale d'un volume
Ida #Device_Name
ele
jsr Edbine
bes Quitte
Ida #$0801
jsr Tab
PushLong #Ask_For_Volume
_Writecstring
Ida #$0402
jsr Tab
Idx #16
lda #Volume_Name
ele
jsr Edbine .
bes Quitte
1da Volume_Name
_D_Info DInfo_Pm
_Erase_Disk Eraser_Pm
bee Quitte
jsr Erreur
* Quitte le CDA
Quitte plb
qu‘on a empile en entrant
rtl
* Sous-routines
Erreur
bee No_Err
pha
PushLong #ASCII_Code
PushWord #4
_Int2Hex
lda #§0602
MoveLong #Blank_Name,New_Name
and #$00FF Ne garde que la
taille
beq NewName_Ok
MoveLong #Volume_Name,New_Name
NewName_Ok _Get_Dev_Num GetDevNum_Pm
jsr Tab
PushLong #£rreur_Msg
_Writecstring
PushLong #0
frappe au clavier
_ReadChar
pla
Attente d'une
Retour au
No_Err rts
fautif
Tab sta >$0024
Ida #$FC22
pha
pha
pha
pha
pha
pha
pha
pha
_FwEntry
pla
pla
pla
pla
rts
* Copie ici l'editeur de ligne *
Eraser_ShutDown Start
rtl
End
* Donnees *
Eraser_Data Data
Device _Name ds 16 Commence par un '.' ou '/'
Volume_Name ds 16 Nom donne par l'utilisateur
Blank_Name str '/Disque.Vide' Nom par defaut
GetDevNum_Pm anop
de i4'Device_Name' |
Parametres de GetDevNum
DInfo_Pm anop I
ds 2 to
Eraser_Pm anop !
Parametres de DInfo
de i4'Device Name’ ro
New_Name dc i4'Blank_Name' |
de iit !
Parametres de Eraser
GetVersion Pm ds 2 Byte 0: Minor Release
! Byte 1: Major Release
20
Pom’s n° 49
al
! dont MSB= 1 for prototype releases
CNORM equ 24 ¢ caracteres normaux
CSOUR equ 27 ? souris
NORM equ 14 ¢ normal
INV equ 15 7 inverse
FF equ 12 + equivalent de HOME
Fs equ 28 F3
deplace d'un caractere a droite
BARH equ 76 ; L ($4C= 76) barre en haut
RC equ 77 7M
($4D= 77) retour chariot
BARD equ 90 72
($5A= 90) barre a droite
BARG equ 95 ;
($5F= 95) barre a gauche
En_Tete de il'FF,CNORM,NORM',c' ',38c'_',c'
dc
il ' INV, CSOUR, BARD, CNORM, NORM',c' Effacage
v2.0
de il'INv’
de 10c' '
de e'ProDos v'
Ma jor_Vs dec’ .!
. Minor_Vs dect ¢
de i1'CSOUR', i1'BARG'
de 11'BARD', 3811'BARH', 11'BARG'
de h'00"
bords de
il ‘INV, CSOUR, BARD’, 3811'FS', i1'BARG'
de
il 'INV, CSOUR, BARD', 3811'FS', 11'BARG'
de
il ‘INV, CSOUR, BARD', 38i1'FS', 11'BARG'
de
i1' INV, CSOUR, BARD', 3811'FS', i1'BARG'
dc
11 "INV, CSOUR, BARD', 3811'FS', i1'BARG'
de h‘o0'
En_Queue de il 'BARD,CNORM, NORM’
de c' Nom de Device ou de Volume puis
de i1'INV,CSOUR, RC'
de 4i1'FS',i1'BARG'
dco i1'CNORM, NORM',c!
+, 41 INV, CSOUR', 3811'BARH!
de il'CNORM,NORM',h'00'
Erreur_Msg de c'Errevr $'
ASCII_Code ds 4
de h‘00"
ProDOS_Err dc h'0C',c' Desole, il me faut
ProDOS 16.',h'00'
Version Err de h'0C',c' ProDOS 16 v1.1 ou
apres.',h'00'
Ask_For_Volume de c' Nouveau nom de Volume puis
de il'INV,CSOUR, RC’
de il'CNORM,NORM',c!
de h'00'
End
Erase.Récap
Aprés avoir saisi ces codes sous moniteur,
vous les sauvegarderez par :
Create Erase,T$b9
Bsave Erase,A$2000,L2560,T$B9
Ce fichier est 4 mettre dans votre dossier :
/Desk.aces
00/2000:05
00/2008:5F
00/2010:00
00/2018:00
00/2020:00
00/2028:2C
00/2030:20
00/2038:20
00/2040:F2
00/2048:66
00/2050:00
00/2058:AB
00/2060:b0
00/2068:A2
00/2070:00
00
00
00
00
00
20
20
SF
00/2080:22
00/2088:00
00/2090:C9
00/2098:F4
00/20A0:FF
00/20A8:03
00/20B0:0B
00/20B8:FF
00/20C0:03
00/20C8: 0B
00/20D0:03
00/20D8:00
00/20E0:8D
00/20E8:F4
00/20F0:00
00/20F8:09
00/2100:FF
00/2108:22
00/2110:3D
00/2118:E1
00/2120:0C
00/2128:00
00/2130:00
00/2188:03
00/219 IC
00/2198:00
00/21A' 1
00/21A8:Aa8
00/21Bi
19
26
00
Fa
26
29
80
92
19
El
14
00
00
03
4
20
Fa
00
AD
Ag
00
20
00
00
ol
00
01
40
20
20
0s
63
FD
BC
Fa
20
Fa
00
00
AD
01
0s
48
01
22
48
Ol
22
00
03
03
00
Ag
00
4
00
A2
00
22
92
El
FE
10
B2
18
08
34
£l
10
01
03
OE
OE
8D
00
El
ag
00
00
00
00
00
00
20
20
00
61
02
00
00
22
00
El
El
3B
BO
80
F4
00
00
Fa
00
00
80
Ag
c2
A2
00
8F
80
£1
oc
00
00
04
AO
02
00
01
20
20
05
Ag
00
BO
AQ
03
03
37
2B
2
00
00
00
00
00
00
20
20
20
00
67
00
El
00
00
00
68
2A
03
08
cB
00
Fa
00
00
Fa
00
po
50
20
03
28
20
00
Fa
20
F4
00
A2
00
99
90
A2
cp
B2
A2
02
Ag
43
00
a2
8D
03
03
00
El
00
0A
00
00
00
20
20
20
08
65
00
29
Fa
00
A2
82
00
29.
Fa
48
00
00
El
00
00
El
05
00
F4
oc
FA
00
A2
00
22
BF
El
oc
00
OE
F3
10
01
01
oc
04
OE
Ag
00
Po)
35
22
00
2F
25
00
04
00
00
00
20
20
20
45
11
8B
FF
F9
£1
oc
40
3B
FF
00
EB
F4
00
68
Fa
00
AD
Ag
£2
00
22
FO
00
oc
00
00
03
Fa
20
Ag
03
Ag
00
BO
Fa
20
20
03
1E
8D
00
03
Ag
00
03
00
00
01
00
00
00
20
20
66
00
4B
00
04
F4
ee
ol
03
7F
00
29
OF
29
91
A2
3B
20
20
00
00
03
Fa
0A
Fa
00
A2
00
22
20
ce
02
Ag
68
00
22
B2
18
03
37
FO
Ag
22
00
31
Pom’s n° 49
PAL
22
00/21B8:03 00 00 90 03 20 7D 01 00/23C0:20 OF 20 20 20 20 20 20 00/25C8:02 00 46 00 3B 03 F5 02
00/21C0:AB 6B 90 32 48 F4 00 00 00/23C8:20 20 20 20 50 72 6F 44 00/25D0:F0 51 00 19 05 F5 02 00
00/21C8:F4 F4 04 F4 04 00 A2 0B 00/23D0:4F 53 20 76 20 2E 20 20 00/25D8:54 00 19 05 F5 02 FO SF
00/21D0:22 22 00 00 El A9 02 06 00/23D8:20 1B 5F 5A 4C 4C 4C 4C_ 00/25E0:00 8F 03 F5 02 00 62 00
00/21D8:20 BZ 01 F4 00 00 F4 EC 00/23E0:4C 4C 4¢ 4C 4C¢ 4C 4C 4C 00/25E8:8F 03 F5 02 FO 77 00 91
00/21E0:04 A2 OC 20 22 00 00 E1 00/23E8:4C 4C 4C 4C 4C 4C 4C 4C ©00/25F0:03 FS 02 00 7A 00 91 03
00/21E8:F4 00 00 F4 00 00 A2 0C 00/23F0:4C 4C 4C 4C 4C 4C 4C 4C ©00/25F8:F5 02 00 8A 00 3B 03 FS
00/21F0:22 22 00 00 El 68 60 8F 00/23F8:4C 4C 4C 4C 4C 4C 4C 4C —00/2600:02 00 9C 00 92 03 F5 02
00/21F8:24 00 00 A9 22 FC 48 48 00/2400:4C 4C SF 00 OF 1B 5A 1C 00/2608:FO C8 00 3D 03 F5 02 00
00/2200:48 48 48 48 48 48 A203 00/2408:1C 1¢ 1C 1¢ 1¢ 1C 1C 1C 00/2610:CB 00 3D 03 F5 02 FO DS
00/2208:24 22 00 00 El 68 68 68 00/2410:1C 1c IC IC IC 1C 1C 1C © 00/2618:00 BF 03 FS 02 00 DB 00
00/2210:68 60 08 AO FF FF 8C F9 00/2418:1C 1¢ 1C IC IC 1C IC 1c 00/2620: BF 03 F5 02 FO E2 00 92
00/2218:02 9C FB 02 28 90 09 AO 00/2420:1C 1¢ 1¢ 1¢ 1¢ 1 1¢ 1¢ ©=00/2628:04 F5 02 00 E5 00 92 04
00/2220:58 00 8C FB 02 9C F9 02 00/2428:1C 1¢ 1¢ 1¢ 1C 5F OF 1B 90/2630:F5 02 00 F5 00 FE 02 F5
00/2228:8E FS 02 8D 1A 02 8D 6C 00/2430:5A 1C 1¢ 1C 1¢ 1C 1C 1C =: 90/2638:02 00 FB 00 OE 03 FS 02
00/2230:02 8D Al 02 9C F3 02 9C 00/2438:1C IC 1¢ 1C 16 1C IC IC —00/2640:00 05 01 B2 01 FS 02 00
00/2238:F7 02 AF 00 CO 00 30 40 00/2440:1C 1¢ 1¢ IC 1¢ 1¢ 1C 1C 00/2648:0B 01 FE 02 F5 02 00 OF
00/2240:A9 5F 00 48 A2 0C 18 22 00/2448:1C 1¢ 1¢ 1¢ 1¢ 1¢ 1C 1C 00/2650:01 CD 01 F5 02 00 17 01
00/2248:00 00 E1 F4 08 00 A2 OC 00/2450:1C 1¢ 1¢ 1C IC IC 1C 5F 00/2658:B2 01 F5 02 FO 1A 01 34
00/2250:18 22 00 00 El 20 E0 02 00/2458:0F 1B SA 1C 1C 1¢ 1C 1¢ 00/2660:05 FS 02 00 1D 01 34 05
00/2258:AC F3 02 C8 E2 20 B9 CD 00/2460:1C 1¢ 1¢ IC 1C 1¢ 1C 1C 00/2668: FS 02 00 2A 01 B2 O1 FS
00/2260:01 C2 20 2D F9 02 0D FB 00/2468:1C 1¢ 1¢ 1¢ 1¢ 1C IC 1¢ 00/2670:02 00 30 01 OF 03 FS 02
00/2268:02 48 A2 0C 18 22 00 00 00/2470:1C 1¢ 1¢ 1¢ 1¢ 1¢ 1C 1C_ 00/2678:00 34 01 CD 01 FS 02 00
00/2270:E1 F4 08 00 A2 0C 18 22 00/2478:1C 1C IC 1¢C 1C. 1C IC 1C © 90/2680:39 01 1E 03 F5 02 00 3C
00/2278:00 00 El 20 £0 02 90 BA 00/2480:1C 5F OF 1B SA1C 1C 1C 00/2688:01 35 03 FS 02 FO 3F 01
00/2280:AF 10 CO 00 C2 20 29 7F = 00/2488:1C IC 10 16 1¢ 16 1C 1C 00/2690:1E 03 FS 02 00 42 01 37
00/2288:00 8D Fl 02 C9 1F 00 90 00/2490:1C 1¢ 1 1¢ 1C 1C 1C 1C_ 00/2698:03 F5 02 00 45 01 OE 03
00/2290:32 C9 7F 00 FO 2D AD Fl 90/2498:1C 1¢ 1¢ 1¢ 1C 1C 1C 1C © 00/26A0:FS 02 00 4D O01 OE 03 FS
00/2298:02 2D F9 02 OD FB 02 48 00/24A0:1C 1C 1¢ 16 1C 1C 1C IC 00/26A8:02 00 50 01 35 03 FS 02
00/22A0:A2 0C 18 22 00 00 El AD 00/24A8:1C 1C 1C SF OF 1B 5A 1C 00/26B0:FO 53 01 OE 03 F5 02 00
00/22A8:F1 02 AC F3 02 C8 E220 00/24B0:1C 1¢ 1C 1C 1C 1C 1C 1C 00/26B8:56 01 37 03 FS 04 00 SE
00/22B0:99 CD 01 CC F5 02 FO 28 00/24B8:1C 1¢ 1¢ 1C 1C 1C 1C 1C —00/26C0:01 2B 03 F5 04 00 68 01
00/22B8:C2 20 EEF? 02 EE F3 02 00/24C0:1C 1¢ IC 1C 1C 1¢ 1C IC 00/26C8:2F 03 F5 04 00 72 O1 31
00/22C0:82 77 FF C9 1B 00 FO 16 = 00/24C8:1C 1¢C 1¢ 1¢ 1¢ 1¢ 1C 1C_ §=00/26D0:03 F5 02 00 79 01 7D 01
00/22C8:C9 0D 00 FO 13. C9 08 00 = 90/24D0:1C 1¢ 1C 1C 1C SF 00 5A 00/26D8:F5 02 FO 81 01 F4 04 FS
00/22D0:FO 1A C9 15 00 FO 2A C9 00/24D8:18 OF 20 4E 6F 6D 20 64 00/26E0:02 00 84 01 F4 04 FS 02
00/22D8:7F 00 FO 41 DO E2 38 60 00/26E8:00 94 01 B2 01 F5 02 FO
ID F3 02 E2 20 8D CD O01 00/26F0:97 01 EC 04 F5 02 00 9A
2 20 18 60 AC F3 02 FO 00/26F8:01 EC 04 F5 02 00 D2 O1
F CE F3 02 AD Fl 02 48 00/2700:F9 02 F5 02 00 D5 01 FB
2 OC 18 22 00 00 El 80 00/2708:02 F5 02 00 DE 01 FB 02
FAC F3 02 CCF? 02 90 00/2508:4C 4¢ 4 4C 4C 4C 4C 4C 00/2710:F5 02 00 E1 01 F9 02 F5
9 A2 03 2C 22 00 00 E1 00/2510:4C 4 4c 4C 4C 4C 40 4C_ 00/2718:02 00 £4 01 F5 02 F5 02
0 AE EE F3 02 A9 1C 00 00/2518:4C 4¢ 4C 4C 4c 4C 4C 4C 00/2720:00 E7 01 1A 02 F5 02 00
ID F1 02 80 D7 A¥ 08 00 00/2728:EA 01 6C 02 F5 02 00 ED
1D F1 02 80 C7 38 5A AO 00/2730:01 Al 02 F5 02 00 FO 01
0 CO AF 00 CO 00 30 04 00/2738:F3 02 F5 02 00 F3 01 F7
00/2330:88 DO F7 18 7A 60 00 00 00/2538:24 00 00 00 00 00 0C 20 00/2740:02 F5 02 00 11 02 EO 02
00/2338:00 00 00 00 00 00 00 00 00/2540:44 65 73 6F 6C 65 2C 20 00/2748:F5 02 00 14 02 F3 02 F5
00/2340:00 00 6B 00 00 00 00 00 00/2548:69 6C 20 6D 65 20 66 61 00/2750:02 00 1A 02 CD 01 F5 02
00/2348:00 00 00 00 00 00 00 00 00/2550:75 74 20 50 72 6F 44 4F 90/2758:00 1F 02 F9 02 F5 02 00
00/2350:00 00 00 00 00 00 00 00 00/2558:53 20 31 36 2E 00 0C 20 90/2760:22 02 FB 02 F5 02 00 37
00/2358:00 00 00 00 00 00 00 00 00/2560:50 72 6F 44 4F 53 20 31 00/2768:02 EO 02 F5 02 00 45 02
00/2360:00 00 00 OC 2F 44 69 73 00/2568:36 20 76 31 2E 31 20 6F 00/2770:F1 02 F5 02 00 52 02 Fl
00/2368:71 75 65 2E 56 69 64 65 00/2570:75 20 61 70 72 65 73 2E 90/2778:02 F5 02 00 55 02 F9 02
00/2370:FE 02 00 00 00 00 FE 02 00/2578:00 20 4E 6F 75 76 65 61 00/2780:F5 02 00 58 02 FB 02 F5
00/2378:00 00 1E 03 00 00 01 00 00/2580:75 20 6E 6F 6D 20 64 65 90/2788:02 00 63 02 Fl 02 F5 02
00/2380:00 00 0C 18 OF 20 5F 5F 00/2588:20 56 6F 6C 75 6D 65 20 00/2790:00 66 02 F3 02 FS 02 00
00/2388:5F 5F 5F 5F 5F 5F 5F 5F 00/2590:70 75 69 73 20 OF 18 4D 90/2798:6C 02 CD 01 F5 02 00 6F
00/2390:5F SF SF 5F SF SF 5F 5F 00/2598:18 OE 20 20 20 20 20 20 0/27A0:02 F5 02 F5 02 00 76 02
00/2398:5F 5F SF SF 5F SF 5F SF 00/25A0:20 20 20 00 F5 04 00 09 g0/27Aa:F7 02 F5 02 00 79 02 F3
00/23A0:5F 5F 5F SF 5F 5F 5F 5F 00/25A8:00 11 00 F5 04 00 0D 00 90/27B0:02 F5 02 00 9C 02 F3 02
00/23A8:5F 5F 5F 5F 20 OF 1B 5A 00/25B0:FD 02 F5 02 FO 1B 00 F9 00/27B8:F5 02 00 Al 02 CD 01 FS
00/23B0:18 OF 20 45 66 66 61 63 00/25B8:04 00/27C0:02 00 A8 02 F3 02 FS 02
00/23B8:61 67 65 20 76 32 2E 30 00/25 00/27C8:00 AD 02 F3 02 F5 02 00
Pom’s n° 49
00/27D0:BO 02 Fl 02 FS
00/27D8:02 F3 02 F5 02
00/275:
00/27F8:04 00 2B 03 FE
00/2800:00 31 03 FE 02
00/2808:35 03 1E 03 00
00/2810:00 00 00 00 00
00/281
00/2820:00 00 00 00 00
00/2828:00 00 00 00 00
00/2830:00 00 00 00 00
00/283
00/284
00/284
00/2880:00 00 00 00 00
BD 00/2888:00 00 00
02 00/2890:00 00 00
00/2898:00 00 00
00/28A0:00 00 00
00/28A8:00 00 00
04 00/28B0:00 00 00
00 00/28B8:00 00 00
00 00/28C0:00 00 00
00 00/28C8:00 00 00
00/28D0:00 00 00
00 00/28D8:00 00 00
00 00/28E0:00 00 00
00 00/2888:00 00 00
00/28F0:00 00 00
00/28F8:00 00 00
00/2900:00 00 00
00/2908:00 00 00
00/2910:00 00 00
00/2918:00 00 00
00/2920:00 00 00
00/2928:00 00 00
00/2930:00 00 00
00 00/2938:00 00 00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00 00 00 00/2940:00 00 00 00 00
00 00 00 00/2948:00 00 00 00 00
00 00 00 ©00/2950:00 00 00 00 00
00 00 00 00/2958:00 00 00 00 00
00 00 00 © 00/2960:00 00 00 0c 00
00 00 00 00/2968:00 00 00 00 00
00 00 00 ©90/2970:00 00 00 00 00
00 00 00 00/2978:00 00 00 00 00
00 00 00 ©00/2980:00 00 00 00 00
00 00 00 00/2988:00 90 00 00 00
00 00 00 00/2990:00 00 00 00 00
00 00 00 00/2998:00 00 00 00 00
00 00 00 00/29A0:00 00 00 00 00
00 00 00 00/29A8:00 00 00 00 00
00 00 00 00/29B0:00 00 00 00 00
00 00 00 00/29B8:00 00 00 00 00
00 00 00 00/29C0:00 00 00 00 00
00 00 00 00/29C8:00 00 00 00 00
00 00 00 00/29D0:00 00 00 00 00
00 00 00 00/29D8:00 00 00 00 00
00 00 00 00/29E0:00 00 00 00 00
00 00 00 00/29E8:00 00 00 00 00
00 00 00 00/29F0:00 00 00 00 00
00/29F8:00 00 00 00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00 00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
Format
Les sources de
Format.CDA étant
quasiment iden-
tiques aux sources
d’Erase.CDA,
nous avons préféré
ne pas les publier
pour consacrer nos
colonnes a d’au-
tres programmes
ou articles.
Vous trouverez
donc les fichiers,
ressource.S, Edline
et Format.CDA
ainsi que l’objet
exécutable dans le
sous-catalogue
/Format de la dis-
quette Pom’s 49.
Les fichiers corres-
pondants pour
Erase seront, eux,
placés dans le
sous-catalogue
/Erase.
CG
Frappe au kilometre, rapidité d'écriture, souplesse de correction.
Ooriboullle
Traitement de texte francais
Pour Apple //e, Apple //c, Apple GS.
Glossaire puissant, recherche - remplacement.
Creation de caractéres téléchargeables sur Image Writer
Impression rapide, pilotage précis de mise en page.
Coupure correcte des mots, justification en proportionnel,
condensé et expansé,
(notation mathématique, alphabets étrangers etc...)
Gribouille, une valeur sdre pour un public averti.
Pour recevoir Gribouille, envoyez ce bon de commande a:
Humblot
Gribouille SARL. 5, Tue HUNG 77
75015 PARIS - Tel: (1) 4
Je vous prie de m'envoyer a l'adresse ci-dessous:
Nomi...
le logiciel Gribouille
* version GS
Ci-joint un cheque de..
Prix (port compris)
* version //e - //c pour lecteur de disquettes 5 1/4 S99 frH.T. 710 fr T.T.C.
* version //e - //c pour lecteur de disquettes 3 1/2 632 frH.1. 750{r T.T.C.
835 fr H.T, 990 fr T.T.C.
...francs libellé a l'ordre de GRIBOUILLE SARL
Pom’s n° 49
2
24
SuperFonts :
Jean Ollion
les polices
Font.Codes.1 est destiné aux utilisateurs du tandem-logiciel
AppleWorks et TO.SuperFonts perdus dans le dédale des codes &
insérer au texte pour obtenir un caractére qui sort un tant soit peu de
Vordinaire.
Font.Codes.1 est un fichier texte
AppleWorks qui, imprimé avec TO.
SuperFonts, permet de voir les
caractéres d’une police donnée en
référence sous la forme d’un tableau,
oii chaque caractére est présenté associé
a son code ASCII, décimal, hexa-
décimal, et au caractére a utiliser dans
AppleWorks, en l’associant aux
commandes <x2> ou <x3> de
TO.SuperFonts, pour pouvoir impri-
mer le caractére de référence.
Il est intéressant de se “personnaliser”
quelques polices en les complétant, au-
dessus du code 128, par des caractéres,
symboles, logos ou icénes, dont on a
souvent besoin. Cela permet d’avoir
moins de polices 4 charger. Mais le
nombre de ces caractéres nouveaux
augmentant, les moyens mnémo-
techniques pour se les remémorer
diminuent.
Imprimer Font.Codes.1 avec ces
quelques fontes vous permettra d’avoir
les équivalences clavier completes
sous les yeux.
Comment s’en
servir ?
Une fois imprimé ce tableau (sur la
disquette n° 49), on repére facilement
Vic6ne “Gertrude” et l’on voit que
pour I’imprimer il faudra insérer dans
le texte la séquence <x3>g<x1>.
D’autre part, lorsqu’on veut compléter
une police avec un éditeur, pour la
franciser par exemple, il est trés facile
de repérer & la place de quel code il faut
placer tel caractére accentué.
Exemple : pour éditer un “é”, on
trouvera tout de suite que c’est a la
place du caractére dont le code décimal
est “142” qu’il faut copier le “e” pour
le compléter. Faute de quoi, un Trai-
tement de textes doué de la capacité de
franciser, comme TO.SuperFonts,
risque de ne pas s’y retrouver.
Le tableau
Sous chaque caractére, on trouvera :
@ = lere ligne, le code ASCII dé-
cimal ;
@ 28 me ligne, le code ASCII hexa-
décimal ;
@ = 3eme ligne, le caractére a utiliser
avec AppleWorks.
Note : sur cette troisiéme ligne,
certains caractéres sont suivis
d'une barre de division et d'un ou
deux autres caractéres, signifiant
que l'on pourra utiliser, soit le
caractére situé a gauche du / en
l'associant aux commandes <x2>
ou <x3>, soit le caractére situé a
droite, en l'associant a la
commande de “francisation" <td>
de TO.SuperF onts.
Comment
procéder ?
@ = Inscrire tout en haut du fichier
Font.Codes.1, en police nu-
méro 1, la police utilisée pour les
codes (dans l’exemple : SHASTON,
FIX.08).
Note : n'utilisez pas une police trop
large (maximum 12 points). Une po-
lice non proportionnelle, dont la
largeur des caractéres est constante,
donnera une meilleure présentation.
@ = Inscrire en police numéro 2 la
police de référence (dans |’exem-
ple : VENICE.28).
Note : il est recommandé de ne pas
dépasser une largeur maximum de
37 points. Toutefois lorsqu’un
caractére dépasse cette limite, il sera
imprimé, mais le suivant lui
“marchera dessus” ; cependant, cela
ne géne pas forcément la lisibilité du
tableau. En revanche, si ce caractére
trop large se trouve en bout de ligne,
il sera imprimé “a la ligne” et la mise
en page du tableau sera détruite.
Dans la police BASEL.48, par
exemple, si le “O” n’avait fait que 37
points de large au licu de 40, il serait
resté & sa place, au lieu de passer a la
ligne. Les autres sont correctement
imprimés, méme étant plus larges (le
“M” fait 49 points).
@ = Inscrire éventuellement le titre de
la fonte de référence, La mise en
page est libre dans le sens de la
hauteur, c’est--dire quelle est a orga-
niser en fonction des désirs, de la
longueur des pages et de la hautcur des
polices, Mais il ne faut rien changer
dans le sens de la largeur, a savoir la
largeur du chariot (= 8) et les marges
gauches et droites (= 0).
D’aucuns remarqueront dans le texte
(passionnant) quelques répétitions ou
espaces inutiles. Ils permettent
seulement de ne pas couper en fin de
ligne une commande de tabulation de
To.SuperFonts, ce qui en général
donne de mauvais résultats.
Pour finir, un truc
Pour faire tenir l’ensemble d’un
tableau sur une page 21 x 29,7, uti-
liser une police de référence taille 24 et
une police de code taille 7.
Exemple : TIMES.24 et COURIER.7
en demandant la qualité supérieure a
lV’'impression, avec COURIER.14 “en
ligne”.
Remarque : Etant donnée la longueur
des tableaux, nous n' avons pas pu les
publier en exemple. Vous les
trouverez donc sur la disquette
d’accompagnement de la revue n° 49
sous les noms /FONT.CODES.1 et
/FONT. CODES.2.
Pom’s n° 49
Budget facile 3.0 Ee
Dimitri Geystor
Voici aujourd’hui un programme, Budget Facile, qui pourrait grandement
simplifier la vie aux personnes qui n’adorent pas consacrer le dimanche aux
comptes familiaux. Et, pour tirer pleinement parti des nouvelles qualités
d’AppleWorks 3.0, un “micro-programme” destiné au traitement de texte et un
TimeOut, To.Debug, offrent un complément naturel a UltraMacros 3.
Les ensembles de macros correspondants pour AppleWorks 1.4
sont déja parus dans des numéros précédents de Pom’s, et vous
pourrez vous y reporter si la comparaison vous intéresse. Les
macros que Pom’s vous propose aujourd’hui tirent parti des
nouvelles commandes des versions 3, elles ne sont donc plus
compatibles avec AppleWorks 1.4.
Budget.Facile
C’est une version entiérement revue. Elle tire largement parti
des nouvelles possibilités d’ AppleWorks 3.0, en particulier
pour ce qui est des menus et de la facilité d'emploi. Etant
donné l’importance de cette application, les fichiers qui la
composent sont rassemblés dans le dossier BUDGET.
Le programme est géré automatiquement par deux fichiers
Task, supGerT et BuD.8rs. Recopiez-les sur votre disque de
démarrage AppleWorks, celui qui contient le fichier
ULTRA, system. Recopiez sur votre disque de données —celui
ot AppleWorks lit/sauve habituellement ses fichiers— les
fichiers MENU, MODELE, LIVRE, LISTE et survr. En cing
minutes, c'est fait, et Budget.Facile est prét & fonctionner. Il
peut tre lancé depuis AppleWorks en passant par |’option
Macros Options du menu TimeOut, ou directement a partir
d’un sélecteur. Le programme charge de lui-méme tous les
fichiers dont il a besoin, et en assure automatiquement la
sauvegarde une fois que vous avez fini d’y travailler.
Budget.Facile justifie pleinement son nom : cing autres
minutes pour lire le début de la documentation (incluse sur la
disquette), et vous étes paré pour commencer & travailler. Les
opérations sont pilotées par deux menus, et sur chaque écran
apparait un message pour indiquer les gestes 4 faire.
Budget.Facile permet de gérer 6 comptes (banques, cartes de
crédit, especes), 7 catégories de revenus et 23 catégories de
dépenses. Des noms de catégories directement utilisables sont
proposés par défaut sur le fichier MopzLe, mais vous pouvez
facilement attribuer d’autres noms qui conviendraient micux &
vos besoins, une petite macro utilitaire est 14 pour vous aider.
L’écran de travail od vous faites la saisie des opérations
contient dans sa partie supérieure une fenétre od s’affichent en
permanence les 36 soldes courants de vos comptes dépenses et
revenus, plus le total des avoirs et le revenu net. C’est la
principale originalité de Budget.Facile : vous pouvez en
quelque sorte surveiller l’évolution de vos finances en “temps
réel”, Le fichier de travail est un fichier mensuel, et il vous
donne la “photographie” de vos dépenses et de vos revenus du
mois courant ; étant donné que le report des avoirs se fait
automatiquement d'un mois sur l'autre, les soldes des comptes
affichés sont constamment tenus & jour.
Pour que la “photographie” soit fidéle, Budget.Facile sait non
seulement transcrire des opérations simples, mais aussi
ventiler une opération entre divers postes. Avez-vous payé dans
une grande surface —avec un seul chéque-|’achat d'un manteau,
d'un disque et de vos courses alimentaires ? Qu’a cela ne
tienne : en une seule opération Budget.Facile débitera
globalement votre compte en banque, mais répartira les
dépenses entre les postes Vétements, Loisirs et Aliments. I
suffit de pointer et cliquer avec la souris sur les catégories en
question, il est inutile de retaper chaque nom de catégorie.
Dans le nouveau Budget.Facile, la saisie des montants ventilés
est encore plus souple que dans la version précédente : pour
terminer la saisie, il est inutile de calculer le dernier montant
particl ; on se contente de valider le Reste qui est affiché a
l'écran. Dans l’exemple précédent, on tapera le montant du
chéque, le montant du manteau et le montant du disque ;
Budget.Facile attribuera automatiquement le reste au poste
Aliments.
A tout moment, un message guide I’utilisateur. Les
commandes sont ultra-simples et consistent & taper sur la
touche suggérée : Return pour commencer la saisie, K pour
recalculer, P pour imprimer, S pour sauver, Esc pour revenir
au Menu.
Souhaitez-vous consulter ou supprimer des écritures ? La liste
des écritures du mois courant est immédiatement accessible &
partir du Menu. On peut la consulter en y promenant la souris,
imprimer un écran ou toute la liste, éventuellement supprimer
des lignes d’écriture et sauvegarder le fichier.
Le passage du mois courant 4 un nouveau mois est automa-
tisé : Budget.Facile se charge du report de soldes des comptes.
Si vous le lui demandez, il fera aussi A votre place le report des
écritures du mois dans une Base de données générale LIvRE, et
dans un tableau annuel suzvz. Ce tableau annuel calcule
automatiquement les valeurs moyennes et les valeurs cumulées
de chaque catégorie. Une colonne voisine est réservée (@ cété
des moyennes) pour vos estimations budgétaires, Le tableau
est imprimable sur double page, c’est une nouveauté
AppleWorks 3.0.
Pom’s n° 49 25
26
La Base générale LIVRE sert & faire des pointages. Il existe
aussi une Base de données “de travail”, oh vous pouvez copier
totalité ou partie des écritures d’un mois.
Le tout est géré sans souci et automatiquement. Entre autres
choses, Budget.Facile offre de grandes facilités d’impression. I]
suffit d’appuyer sur quelques touches —clairement indiquées sur
des menus successifs~ pour imprimer les données de LIVRE et
Liste 4 1’écran ou sur papier. Vous avez le choix entre une
liste générale, ou des sélections par catégories : c'est
Budget.Facile qui fait le travail, et vous n’avez besoin de
recourir 4 aucune commande d’ AppleWorks.
Les utilisateurs de I’ancienne version de Budget.Facile seront
agréablement surpris par les innovations de la version AW.3.
En particulier, le nouveau format du fichier MopELE permet des
reports plus rapides (ne plus utiliser les fichiers de I’ancien
BUDGET, bien entendu !), et le Presse-papiers d’AppleWorks
3.0 n’est plus limité 4 250 lignes.
Budget-Facile dans votre Apple //, c’est l’assurance, au prix de
quelques minutes d’attention quotidienne, d’avoir toujours des
finances claires et & jour...
Un nouveau jeu de
macros pour
Traitement de Texte
Comme promis, voici les macro-commandes pour Traitement
de Texte, revues et adaptées pour le nouvel AppleWorks 3.0.
La disquette Pom’s contient 3 fichiers :
=+ le fichier source Macros. ro1T3, format TdT AppleWorks ;
=+ le fichier Task rpr3, ce sont les mémes macros sous
forme compilée, et prétes a lancer ;
=+ une application TimeOut ro. Arpe. ror. aw3, & copier
dans le dossier des applications TimeOut pour pouvoir la
consulter —quand les macros sont actives— en tapant
Option-?.
TO.Debug
version francaise
TO.Debug est indispensable pour vous faciliter la vie lors de
l’écriture de macro-programmes. Elle donne a tout moment les
indications suivantes :
Fiche signalétique
Voir variables numériques
Voir variables chaines
Voir noms des macros actuelles
Ftant donné que le nouvel UltraMacros permet de disposer de
huit jeux distincts de variables que vous stockez ou appelez
avec les instructions <putvar NUM> et <getvar NUM>, le
nouveau Debug indique aussi le numéro du jeu de variables
actif.
AppleWorks :
Randy Brandt, Dimitri Geystor
Les lecteurs de Pom’s connaissent bien
Randy Brandt. Créateur de
SuperMacroWorks et d’UltraMacros, il est
aussi l’un des co-auteurs du nouvel
AppleWorks 3.0.
Dans le numéro de juin 90 d’AppleWorks
Forum, Randy publiait un premier article
dans lequel il décrivait les mécanismes de
démarrage d’AppleWorks 3.0, A la
demande de ses lecteurs, Pom’s en
propose ici une adaptation frangaise.
Nagutre, pour écrire ses macro-langages, il avait fallu que
Randy désassemble et décrypte par lui-méme le code
d’AppleWorks, qui était un secret jalousement gardé, Ce
tour de force n'est pas a Ja portée du premier venu. D'autres
pourtant ont fait comme lui, en particulier Daniel Lurot,
auteur de la version francisée d’ AppleWorks 3.0, auquel les
lecteurs de Pom’s doivent toutes les versions frangaises de
ces compléments intégrés 4 AppleWorks que sont les
logiciels de la série TimeOut.
Ainsi, petit & petit, le voile s’est levé sur la face cachée
d’AppleWorks. La maison Claris a désormais mis dans le
domaine public des “Notes techniques sur AppleWorks” qui
énumérent les adresses d’accés aux diverses routines internes
d’AppleWorks 3.0 ainsi qu'une note qui décrit la structure
sur disque des fichiers AppleWorks. Ceux que ces notes
intéressent peuvent les commander auprés d'AppleWorks
Forum, l'association américaine des utilisateurs
d’AppleWorks pour le prix modique de 12 $ US (voir
Vencadré, page 17 du n° 48 de Pom’s).
Sur la disquette n° 49
Dans le dossier /AppleWorks, vous trouverez :
2+ BUDGET. FACILE, version AW 3.0;
=* Un fichier de macros format TdT AW 3.0:
MACROS, TDT3, accompagné du fichier Task
TDT3, qui sont les mémes macros sous formes
compilée ;
=+ Le TimeOut T0.AIDE.TDT.AW3 ;
= TO.DEBUG AW 3.0,
Pom’s n° 49
Le chargement
Le démarrage
Ily atrois fagons différentes de démarrer AppleWorks :
lancer la disquette “Startup” d’ AppleWorks ;
~ utiliser un “sélecteur” (c’est-A-dire un logiciel lanceur de
programmes plus ou moins sophistiqué) ;
taper la commande voulue a partir du Basic Applesoft.
Mais quelle que soit votre méthode, AppleWorks suivra
toujours la méme procédure pour activer le programme. Le
présent article décrit ce qui se passe entre le moment ot
vous donnez l’ordre de démarrage, et celui ob Apple-
Works, apres s’étre chargé en mémoire, affiche son premier
menu al’écran,
ProDOS 8 est le systtme d’exploitation de votre Apple en
mode 8 bits. Lorsque vous démarrez a partir d’une disquette
qui contient ProDOS, celui-ci se charge d’abord lui-méme
en mémoire (c’est le fameux “boot”, raccourci de “to lift
oneself by one’s boot-straps”, littéralement “se soulever du
sol en tirant sur ses lacets de chaussure”), puis ProDOS re-
cherche le premier fichier du catalogue dont le nom se
termine par . sys T=, et le démarre A son tour.
Dans le cas d’une disquette AppleWorks non modifiée, ce
fichier se nomme Aplworks.System.
Quand vous ajoutez UltraMacros a votre AppleWorks, celui-
ci débaptise Aplworks.System eM Aplworks.Sys, et
installe un nouveau fichier nommé viTRA.sysTEM ; c'est
donc ce dernier que ProDOS fera démarrer en priorité, et
Ultra.System a son tour démarrera Aplworks.Sys.
Si vous démarrez a partir d’un sélecteur de programmes ou
avec une commande Applesoft, cela signifie que :
® ProDOS est déja installé en mémoire ;
@ c’est vous qui décidez quel fichier sera lancé ; par
exemple, vous pourrez soit lancer Aplworks .Sys
—ce qui aura pour effet de démarrer un AppleWorks
normal— soit lancer vitra.system (qui démarrera
UltraMacros, puis AppleWorks).
Des utilitaires de démarrage complexes comme ProSel vous
permettent de lancer en chapelet plusieurs programmes
différents : par exemple configurer d’abord un RAM disque
avant de lancer AppleWorks.
Le fichier aplworks.System contient le code de démarrage
d’ AppleWorks, mais aussi une bonne partie des principales
instructions internes de controle d’AppleWorks, y compris
les routines liées au clavier et & l’affichage écran utilisées
par les divers modules du programme.
En effet, AppleWorks est un programme d’une telle ampleur
qu'il est hors de question de le faire tenir en entier dans la
mémoire d’une machine de 128Ko. Il recourt donc a la
technique des “overlays”, c’est-4-dire qu’il charge a tour de
role —et selon les besoins— telle ou telle partie du
programme principal. Ces fractions de programme sont
appelées “segments” ; AppleWorks en compte plus de
trente. C’est la partie d’ AppleWorks surnommée “Host” (le
Maitre des lieux) qui se charge de gérer le va-et-vient des
divers segments. Mais n’anticipons pas trop, et revenons au
démarrage.
La premiére des taches d’aplworks «System est de
s’assurer que votre Apple dispose d’au moins 128Ko. Ceci
fait, il s’installe lui-méme en mémoire de telle sorte que
élément de programme appelé “Host” soit présent en
permanence pour gérer AppleWorks. Puis, AppleWorks
organise son environnement de travail : tout d’abord, il
déconnecte /ram (vous savez, ce petit disque virtuel que
crée ProDOS, et qui utilise la deuxitme banque de 64Ko
présente sur tous les Apple de 128Ko). En effet, Apple-
Works a besoin de cet espace mémoire pour y entreposer les
informations relatives aux fichiers du Bureau. Autant
déconnecter /RaM tout de suite, pour que personne ne soit
tenté d’y mettre autre chose.
Ceci fait, AppleWorks met a I’abri le nom d’accés utilisé
lors du démarrage d’apiworks.system. AppleWorks
utilisera ce nom d’accés chaque fois qu’il ira chercher
d'autres fichiers AppleWorks, quel que soit le préfixe en
vigueur lors du lancement du programme. Par exemple, si
vous choisissez le préfixe /our mais que vous lanciez
AppleWorks avec la commande en Basic Applesoft
»—/DUR/AW/Aplworks.System”, AppleWorks ira quand
méme chercher ses fichiers dans /pur/AW.
Les gestionnaires de
mémoire
Il y ena quatre sur la disquette, et AppleWorks choisit celui
qui convient A votre machine. Le gestionnaire de mémoire a
pour réle de mémoriser et de rappeler au moment opportun
les informations relatives au Bureau. Grace a ces quatre
gestionnaires différents, AppleWorks sait utiliser au mieux
les diverses configurations de mémoire pouvant exister dans
différents systémes Apple //.
Pom’s n° 49
27
28
Voici comment AppleWorks choisit le gestionnaire
approprié :
@® le programme vérifie tout d’abord s’il est en présence
d’un Apple IIGS. Dans 1’affirmative, il charge le
segment SEG. RM. Sinon, il passe a |’étape suivante ;
@ maintenant qu’AppleWorks est sfir qu’il n’a pas affaire
a un IGS, il vérifie si votre Apple est équipé d’une
carte de mémoire auxiliaire du type RamWorks, Z-RAM ou
MultiRam. Si AppleWorks repére une carte dotée d’au
moins deux fois 64Ko, le programme charge szc.am.
Sinon, il passe a la suite ;
® Acette étape, AppleWorks vérifie si votre Apple est
équipé d’une carte de mémoire périphérique (dite
“slinky”) du type RamFactor, RamExpress ou carte mé-
moire Apple. S’il trouve une telle carte, AppleWorks charge
SEG.XM et crée un fichier disque virtuel a utiliser pour
l’espace mémoire du Bureau.
Note : la carte mémoire auxiliaire est prioritaire par rapport
Qune carte “slinky” ; de la sorte, si votre Apple est doté de
l'un et de l'autre type de carte, il vous est loisible d' utiliser
la carte périphérique comme RAM-disque, tandis qu' Apple-
Works utilise la carte auxiliaire pour son espace Bureau.
Si AppleWorks ne décéle pas de carte périphérique, il passe
4 l’étape suivante :
® dans cette 4°™® et demitre hypoth’se, vous n’avez pas
de IIGS, pas de carte auxiliaire ni périphérique... Bref,
vous étes propriétaire d’un //e ou //c “minimum” de 128Ko.
AppleWorks charge donc sec.00. Vous ne disposerez, une
fois le programme et ses fichiers en place, que de 40
maigres Kilo-octets pour le Bureau.
A ce stade, AppleWorks demande au gestionnaire de mé-
moire de répartir et d’attribuer la mémoire disponible, puis
de calculer l’espace Bureau.
Il est & noter qu’AppleWorks n’utilise & chaque fois qu’un
seul gestionnaire de mémoire ; si vous connaissez celui
dont votre machine a besoin, vous pouvez enlever les autres
de votre disque de travail, si cela vous arrange.
L’environnement de travail
L’étape suivante est le chargement du fichier sec. 21. Ce
fichier contient les fonctions arithmétiques élémentaires
SANE (Standard Apple Numerics Environment). Le
gestionnaire de mémoire copie le sec. £1 dans la zone de
mémoire de la carte langage, ow il fournira les routines
mathématiques qu’utiliseront les modules Tableur et Base de
données.
Ceci fait, AppleWorks passe en revue les “slots” de votre
Apple //, afin d’identifier ceux attribués aux lecteurs et a
Vimprimante. Il enregistre cette information pour en
disposer par la suite.
Puis, AppleWorks charge le sec.er. C’est le fichier ot
sont regroupées les informations relatives aux divers
réglages que vous définissez au moyen du menu Valeurs
Standard. Ce fichier se souvient de la configuration de dé-
marrage de votre choix, des options du vérificateur
d’orthographe, des formats date/heure, de la désignation du
disque de données standard, et des drivers d’imprimante.
Note : bien que les drivers d'imprimante eux-mémes soient
contenus dans le fichier sec.pR, AppleWorks ne |’ appelle
qu'une seule fois, quand vous changez les valeurs standard.
Une fois qu' AppleWorks est configuré, il n'a plus besoin
que de SEG.ER et vous pouvez enlever SEG.PR du disque de
travail.
Aprés avoir chargé sec.er en mémoire, AppleWorks
s’adresse a ProDOS pour demander si vous avez une
horloge. Si oui, AppleWorks reléve la date dans l’horloge ;
sinon, le programme vous demande de taper la date.
AppleWorks enregistre la date dans le fichier sec. £R.
Préchargement
Il est temps de charger en mémoire les modules que vous
avez spécifiés. AppleWorks vérifie si la mémoire est
suffisante, puis charge les modules spécifiés dans l’espace
Bureau oi il pourra les retrouver rapidement.
C’est l’élément “Host” (chargé dés le début avec
Aplworks. System) qui s’occupe d’appeler selon les besoins
les multiples segments (plus de 30) qui composent
AppleWorks. Chaque fois qu’AppleWorks a besoin d’un
segment, le “Host” vérifie si celui-ci est déja sur le Bureau.
Sil y est, le “Host” le charge instantanément.
Si le segment n’est pas déja en mémoire, le “Host” le
charge a partir du disque. C’est pourquoi, durant la méme
opération, le disque peut tourner une premiére fois, mais
pas la fois suivante, En effet, quand un segment est chargé a
partir du disque, le “Host” essaye de le conserver en mé-
moire en vue d’un éventuel appel ultérieur du méme
segment. Si AppleWorks n’arrive pas a trouver le segment
voulu sur disque, il vous en informe en demandant de placer
le disque approprié dans le lecteur. A ce stade, les choses
sont en place, les segments nécessaires ont été chargés et
l’environnement de travail est défini. AppleWorks va donc
appeler le segment Organiseur qui affichera le Menu
principal.
Randy Brandt nous promet un prochain article oi il décrira
le rdle de l’Organiseur.
Pom’s n° 49
Bibliographie
Marcelle Godefroid, Christian Piard
Macintosh Toolbox, Programmation en C,
de Frédéric A, Huxham, David Burnard, Jim Takatsuka.
Editions Sybex, 520 pages, 328 F.
Il est rare que nous soyons aussi séduits par un livre mais
1a, nous avons une bible. Sybex nous a toujours proposé
des livres de qualité et celui-ci fait partie de la série des
parfaits. Ce n’est pas “Inside Macintosh” car c’est
transportable, c’est en frangais et c’est didactique. Ce livre
est destiné au programmeur en C qui se met au Macintosh ;
on commence par les régles de base de l’interface Macintosh
pour arriver & une application compléte en fin d’ouvrage.
L’ensemble est réellement progressif, commengant bien
entendu par la gestion des événements, masquage, priorité,
etc. Puis sont passés en revue les gestionnaires de fenétres,
de menus, le dessin avec QuickDraw, le gestionnaire de
mémoire, les problémes de multi-fenétrage, TextEdit, les
ressources, les contréles, les dialogues, la gestion de disque.
On y ajoute l’art et la manitre de faire une véritable
application avec les problémes liés au passage des
événements aux accessoires de bureau.
Ce n’est pas tout a fait un roman mais, on n’abandonne pas
la lecture en cours de route, on est impatient de poursuivre.
Test réellement accessible au débutant en C qui refermera ce
livre avec
Showing the first 100000 of 275524 characters.