Text content (OCR)
ISSN : 0294-6068
poms
Sommaire
Editorial 3
Apprentissage de |’assembleur (I) Jean-Louis Meillaud 5
Contrélez le nettoyage-mémoire Guy Mathieu 17
Un exemple de HELLO Guy Mathieu 19
Analyse du directory Pascal (I!) Michel Crimont 21
Notions de base Gérard Michel 32
Conversion Pascal/BASIC/Pascal Gilles Mauffrey 35
Communication grace a |’APPLE Bruno Estrangin 44
Copie d’écran-texte Christian Guérin 51
Routine de présentation graphique Jean-Francois Duvivier 53
Les fichiers EXEC Bruno Rives 55
Personnalisez vos disquettes Pierre Boutreux 61
Les clubs ont la parole 63
Courrier des lecteurs 64
Numéro 3 - Mars 1982 - 35 Francs
eN tre Dame Je-Lorette - 75009 PARIS
82.19.80 290350 F
eterect
ioe
eee
Ordinateur Apple // 128 K
Disque dur 5 M.O. profile en option,
moniteur $.O.S. + basic + 1 soft au choix!
Apple ll + 48 K + floppy
+ contréleur + moniteur 12°
13.800
Tensemble Apple M7 sons profile:
28.000.«
Honsemble
Ref prcissee:
Un véritable service avant et aprés-vente.
e 44 conseils du spécialiste e Dépannages rapides par e Une garantie 1 an piéces
pour le matériel et le notre service aprés-vente et M.O. sur tous les
logiciel. intégré. produits.
Des micro-prix sur tous les micros.
A“ Extrait de notre tarif. Prix TTC.
MATERIELS LOGICIELS
APPLE II APPLE Il 4 APPLE Ill
JAPPLE Il + 48K 8950,00 F | CARTE IEEE 488 2895,00 F |DOS TOOLKIT 540,00 F | VISICALC Hil 1700,00F
DISK il + CONTROLEUR DOS 3.3 4720,00 F | TABLETTE GRAPHIQUE 6000,00 F | APPLE PILOT 1180,00 F ] APPLE WRITER ill 1500,00 F
DISK 1! SANS esl yea 3375,00 F | CARTE PROTOTYPE 145,00F | VISICALC 16 SECT 1620,00 F | ACCESS ill 1000,00 F
ISILDISK 8° 2 X 256K 19150,00 F | CARTE TIMER CCS. 1150,00 F | VISITREND + vSrtOT 2170,00 F | SCRIPT lit 850,00 F
| MODULATEUR N/B EN KIT. 150,00 F | CARTE 80 COL. BIT3 FULL VIEW -2750,00 F | DESKTOP PLAN Il 1620,00 F | PASCAL Il 1700,00 F
|CARTE COULEUR SECAM 1050,00 F | CARTE 80 COL. SUPER TERM 2950,00 F | CCA DATA MANAGEMENT 1010,00 F | BUSINESS BASIC 850,00 F
[CARTE COULEUR RVB SONOTEC 920,00 F | CARTE DE COMMUNICATION 1350,00 F | VISIDEX. 1620,00 F |-MAIL LIST MANAGER 1000,00 F
CARTE COULEUR RVB ‘SILENTYPE Ih 2800,00 F | VISIPLOT 1500,00 F | COMPTABILITE PL/DISQUE DUR 4700,00 F
|CHAT MAUVE 140000 F | APPLE Ill 128K + SOS. 26000,00 F | VISITERM. 1260,00 F | FICHIER PFS 1200,00 F
CARTE COULEUR RVB ISTC 1550,00 F | DISK Ill ADDITIONNEL 4400,00 F | FICHIER PFS 760,00 F | FICHIER PFS REPORT 1050,00 F
INTERFACE PARALLELE 1150,00 F | MONITEUR Ill 2500,00 F | FICHIER PFS oe 760,00 F
INTERFACE SERIE V24 RS 232 1300,00 F | DISK DUR PROFILE 5 MEGA |26000,00 F |COMPTA SAAI 3100,00 F
CARTE INTEGER 1250,00 F | SILENTYPE lit 2500,00 F | PAIE SAARI 2350,00 F
\RTE APPLESOFT 1250,00 F | CARTE PROTO APPLE Ill 375,00 F | APPLE WRITER: 530,00 F
|CARTE LANGAGE 16K RAM. 1280,00 F | INTERFACE PARALLELE APPLE Ill 1500,00 F | APPLE PLOT 520,00F
Ps L 3050,00 F
|CARTE MICROSOFT 280 CP/M 2430,00 F
DOCUMENTATION GENERALE SUR DEMANDE.
En raison des fluctuations monétaires ces prix sont susceptibles d'étre modifiés sons préavis. Nous consulter pour confirmation.
JCR, Pinformatique service compris.
TIED communication
EDITORIAL
De nombreux lecteurs nous téléphonent ou nous écrivent pour nous poser des questions sur l’Apple et ses
utilisations possibles. I] ne nous est malheureusement pas possible de répondre 4 tous. D’une part, cela demande
souvent du temps, et il s’agit 14 de notre ressource la plus rare. D’autre part, il y a encore beaucoup de choses que
nous ne savons pas, ou pour lesquelles l’équipement nous fait défaut. Les questions les plus fréquentes ou les plus
intéressantes peuvent aussi trouver leur réponse dans le Courrier des Lecteurs. Nous vous prions de nous excuser de
ne pas pouvoir faire plus en ce moment, mais nos moyens ne nous permettent pas encore d’assurer ce genre de
service.
Nous vous offrons quatre longs articles dans ce numéro. Tout d’abord, l’article d’initiation 4 l’Assembleur, de
Jean-Louis Meillaud, annoncé dés le numéro 1... Ensuite, la seconde partie de l’analyse du directory, de Michel
Crimont. Enfin, le programme de transfert BASIC-Pascal-BASIC réalisé par Gilles Mauffrey pour la disquette
Pom’s N° 2, et un article de Bruno Estrangin sur les joies de la communication a l’aide d’un Apple.
De nombreux autres articles viennent compléter ce numéro 3, y compris (et c’est 14 une premiére pour nous) des
contributions de lecteurs. N’hésitez pas 4 poursuivre dans cette voie : le prosélytisme et la participation sont les clés
de la réussite de votre revue. C’est vous qui faites votre revue; nous ne sommes que des catalyseurs!
Les lecteurs nous demandent souvent s’il est encore possible de commander le numéro 1, ou sil’on peut acquérir les
disquettes séparément. La réponse est affirmative dans les deux cas. N’hésitez pas non plus a nous faire parvenir des
petites annonces. Elles seront gratuites, sous réserve qu’il s’agisse effectivement d’annonces de particuliers. La
périodicité trimestrielle est en effet quelque peu un frein pour les annonces, mais cela n’empéche pas le rapport
performance/prix d’étre excellent...
Personne n’ayant trouvé la bonne réponse a notre concours publié dans Pom’s N° 2, nous vous donnons page 60 une
seconde chance de prouver votre sagacité et de gagner ainsi un abonnement d’un an.
Nous vous donnons rendez-vous au salon Micro-Expo, qui se tiendra 4 Paris du 14 au 19 juin 1982. Nous y
partagerons un stand avec les revues La Commode (Commodore) et Trace (TRS-80).
Hervé Thiriez
Directeur de la publication - rédacteur en chef : Hervé Thiriez - Siége social : Editions MEV - 49, rue Lamartine - 78000 |
Versailles - Rédaction et abonnements : 59, bd de Glatigny - 78000 Versailles - Tél. (3) 918.13.07 - Régie publicitaire : Force 7- |
41, rue de la Grange-aux-Belles - 75483 Paris Cedex 10 - Tél. (1) 238.66.10 - Diffusion auprés des boutiques informatiques et |
librairies : Editions du PSI - 41-51, rue Jacquard - BP 86 - 77400 Lagny - Tél. (6) 007.59.31.
Ont collaboré 4 ce numéro : Pierre Boutreux, Michel Crimont, Jean-Francois Duvivier, Bruno Estrangin, Christian Guérin, Guy
Mathieu, Gilles Mauffrey, Jean-Louis Meillaud, Gérard Michel, Bruno Rives - Dessin : Jean Mourot.
Pom's No 3 3
gerie ve
La deo
“etn
par
22
Fre
nT
ore -Y
quverte de! ngptesalt
porte LEY -
Recueil ragtd
pat Mc!
destine a
wording
cull
pect
rend son.
et facie
agrarnMe
fur un 2
ca pratique 6°! Ap
Nelume
par Nicole
Le pratian'
volume?
ar nieve & g-powigv®!
220
Ge second YO ede
Ce pratique det ‘apple
ext consacre 22 wate OOK.
jiaitavon e yn des
foniers aux
tes,
vmprienant
mpprecio®DS aornexe8
"acu
gustren"eS
andes OF
108
jee
a
ry -sitnaroe
ier!
gn 71 Bosc 2010S
Les prix Sot yaxes>
ernnatlag® ver part cone
{par ev orfouter 5 FF pariivee)
pRENOM ——~
Apprentissage de Il’assembleur (I)
Jean-Louis Meillaud
IL N'Y A PAS DE LANGAGE UNIVERSEL
Le possesseur d'un Apple qui veut se lancer dans la programmation est tout de
suite sollicité par une pléiade de langages, BASIC, Pascal, Forth etc, sans parler
de quelques "vieilleries" comme le Cobol et le Fortran. Ces langages ont sans
doute beaucoup d'attrait pour ceux qui disposent 4 la fois du temps et du budget
nécessaires! Mon propos n'est pas d'entamer une polémique avec ceux qui vantent
les mérites de Pascal et du pari qu'il représente A mon niveau, que je pense
étre celui de nombreux utilisateurs, l'Apple, tel qu'il est livré, avec son BASIC
et son MONITEUR, a de quoi contenter les plus exigeants. Les softs, je devrais
dire les logiciels, proposés par les sociétés spécialisées (une bonne centaine
rien qu'aux Etat-Unis) sont écrits A 99% dans wun mélange de BASIC et de
langage-machine, et ils marchent en effet trés bien.
Prenons comme référence 1'Apple II+ avec Applesoft et Autostart, qui représente le
Standard actuel. Ce BASIC est un langage d'une souplesse et d'une facilité
d'emploi inégalées. Le fait que le BASIC Applesoft soit interprété et soumis a un
contréle syntaxique au moment de cette interprétation rend nos programmes
immédiatement opérationnels; ce n'est pas le cas avec des langages compilés.
Les limitations mémes de 1l'Applesoft me paraissent plutdt un avantage. Il est
facile, quand le besoin s'en fait sentir, de trouver des sous-programmes simulant
le PRINT USING (voir POM'S numéro 4, en juin) ou les instructions de traitement de
matrices qu'on trouve généralement dans les BASICs plus "étendus". Sans gotit
immodéré pour le paradoxe, je dirais que l'Applesoft est efficace en proportion de
sa simplicité.
LES VRAIES LIMITES
Le BASIC, quelque soit son parfum, Applesoft ou Integer, se montre invivable dans
certaines applications. Pour des calculs trés répétitifs, sa lenteur devient
exaspérante. Qui n'a jamais "piqué une crise" devant son écran A attendre qu'une
boucle en BASIC finisse de s'exécuter, ou encore qu'un segment de programme soit
chargé ? Ceux qui ont essayé d'utiliser un Mailing List tel qu'APPLEPOST me
comprendront. Et pourtant ce progiciel a été écrit par les gens de PERSONAL
SOFTWARE, les auteurs de VISICALC. Certaines solutions employées sont certes
ingénieuses et de nature A inspirer le programmeur en quéte de routines élégantes.
Mais, en la circonstance, le BASIC se montre d'une telle gourmandise qu'il a fallu
segmenter le programme et que la majeure partie du temps d'exécution se passe en
appel de ces segments de programme.
LA SOLUTION HARMONIEUSE
le BASIC est irremplacable pour les petites taches qui s'exécutent en une fois,
comme les affichages d'écran. I1 faut le compléter par des sous-programmes en
langage-machine pour tous les travaux répétitifs tels que les conversions de
codes.
Il faut remarquer que le langage-machine, comme le fait d'ailleurs le BASIC, peut
utiliser des sous-programmes fort efficaces qui se trouvent dans le Moniteur.
D'autre part il n'est pas interdit de brancher un programme en langage-machine sur
Pom's No 3 5
une fonction Applesoft dont on connait le point d'entrée.
L' ARTICULATION
La communication entre Applesoft et langage-machine est prévue dans 1'Applesoft
grace aux quatre instructions CALL, PEEK, POKE et USR. fh outre, différentes
techniaques sont répertoriées pour effectuer ces mixages (cf S.H.LAM Routine,
expliquée dans.POM'S numéro 2).
LES OUTILS DE TRAVAIL
La "Bible", c'est le "REFERENCE MANUAL" , le bouquin que vous avez soigneusement
mis de cdté le jour ot vous avez pris livraison de votre Apple ! Il est grand
temps de le faire sortir de sa cachette et de se familiariser avec les commandes
du Moniteur; les exercices sont obligatoires pour une bonne compréhension. Il vous
faut également un manuel de programmation en assembleur et ... un assembleur.
L' ASSEMBLEUR
Je commence par lui car il constitue une option fondamentale. Son choix entraine
en partie celui du manuel.
PREMIERE HYPOTHESE :; Vous avez un ancien APPLE II, que nous appelerons APPLE II
MOINS. Vous étes vernis car vous disposez du "MINI-ASSEMBLER"; le "Vieux" Moniteur
et le BASIC fntier, moins voraces que l'Applesoft Autostart, laissent la place a
ce petit bijou, ainsi qu'aux sous-programmes Step et Trace, bien utiles pour les
mises au point.
DEUXIEME HYPOTHESE : Vous avez un APPLE II +. Vous n'avez plus ni Trace ni Step et
le MINI-ASSEMBLER a également disparu. Pour le récupérer, il faut que votre APPLE
soit muni soit de la carte "Integer", (TRACE et STEP réapparaissent dans la
foulée), soit, (plus normalement, car l'intérét de 1' INTEGER en PROM est limité),
de la Carte Langage qui vous redonne le Mini-Assembleur, mais cette fois sans le
pas-a-pas ni le tracage.
Si vous @tes réduit A 1'APPLE II + sans plus... pas de mini-assembleur, ce qui est
bien génant car méme si un "grand" Assembleur est pratiquement indispensable, le
"mini" rend bien des services pour les programmes courts et les modifications
rapides. Le mini est trés pratique car il vous permet de voir ce que vous faites
au fur et A mesure que vous écrivez votre programme. Aussitét écrite, votre
instruction est assemblée, A l'endroit méme ot elle devra @tre exécutée.
L'écriture est particuliérement simplifiée et rapide. Il est par contre impossible
d'assortir vos lignes de commentaires, pourtant bien pratiques pour savoir ce que
vous aviez voulu faire, quand vous redécouvrez votre programme quelque temps plus
tard.
LES GRANDS ASSEMBLEURS
L'inconvénient majeur du mini-assembleur pour les programmes importants est que, a
la différence des grands, il ne permet pas les étiquettes symboliques. Ces
étiquettes (Symbolic Labels) sont le principal atout du langage assembleur . Elles
vont vous permettre, dans un assembleur adulte, de dire par exemple "Branchez-moi
sur les TRAVAUX D'HERCULE", ou plus exactement sur "TVXDHERC", car il y a quand
méme une limite dans le nombre de caractéres permis (4 a 8 suivant les modéles);
pendant la phase d'assemblage, le programme assembleur ira chercher l'adresse de
votre routine TRAVAUX D'HERCULE quand celle-ci sera définitive . Le Programme
d'assemblage, qui a pour mission de transformer votre programme source (langage
6 Pom's No 3
assembleur) en programme objet (langage-machine) déterminera automatiquement cette
adresse en début d'exécution lors du premier passage. C'est quand méme une bonne
maniére de s'affranchir du GOTO X du BASIC, qui vous obligera A mettre
impérativement votre routine en ligne X, ou si vous changez d'avis, A modifier
toutes vos références 4 X dans les GOTOs et autres GOSUBs.
Ces étiquettes symboliques et bien d'autres merveilles ne sont disponibles que sur
les assembleurs complets. Il y en a une demi-douzaine de connus sur le marché et
il n'est pas toujours facile de les départager. Ils sont en pleine crise de
croissance et chaque nouvelle version représente un progrés sur la derniére
version du concurrent... Dans un état larvaire il y a deux ans, d'aspect encore
trés "bricolé" il y a seulement un an, ils s'améliorent de trimestre en trimestre
et on peut considérer aujourd'hui qu'ils ne sont pas loin d'atteindre leur
majorité. mh outre les assembleurs actuels s'accompagnent d'une foule
d'utilitaires : désassembleur pour transformer un programme en langage-machine en
programme en assembleur, tracage pour aide A la mise au point et table de
références pour retrouver toutes les instructions qui utilisent une étiquette
donnée. L'existence de ces utilitaires vous simplifie la vie.
Nous prendrons comme assembleur de référence le LISA car, d'une part, c'est le
plus répandu en France et, d'autre part, son auteur, Randy Hyde, est bourré
dtidées qu'il a le bon goft de nous faire partager, non seulement en les
incorporant dans ses logiciels, mais aussi en-nous les commentant dans différentes
publications (revue Applesauce et livre de programmation du 6502) et méme a
l'intérieur des listings-source de ses programmes.
LISA - prononcé "Lailleza" comme Minelli- Interactive Assembleur est un assembleur
conversationnel de format libre. Il a le grand avantage, comme 1'INTEGER, de
signaler vos erreurs de syntaxe au fur et A mesure de l'écriture sans avoir a
attendre le premier passage. fh outre il met A votre disposition un large éventail
de "pseudo-codes", commandes qui s'exécutent pendant l'assemblage. Il y en a pour
chaque situation !
MANUELS DE PROGRAMMATION EN ASSEMBLEUR
Dans ce domaine également, 1'évolution est rapide. Il y a encore un an nous
n'avions A nous mettre sous la dent que des livres sur l'assembleur pour le
microprocesseur 6502 en général, ce qui permet de programmer 1'Apple mais ne tient
aucun compte de 1a mine de programmes tout faits que sont le Moniteur et le DOS,
sans parler de l'Interpréteur BASIC. Toutes les routines de gestion de l'écran, du
clavier et des autres périphériques existent déja. Il convient simplement d'avoir
la clé d'accés.
Ces livres sur le 6502 sont d'ailleurs excellents. In dehors du Rodnay Zaks, que
je ne connais que de réputation (bonne, merci et vous!), mon coeur balance entre
le R. Findley (6502 Software Cookbook, chez Scelbi) et le L.A. Leventhal (6502
Assembly Language Programming, Osborne/McGraw Hill).
L'Apple-o-mane (ou Pommolatre) francais est désormais comblé. Il peut apprendre
l'assembleur spécifique de son P.S.I. favori et dans sa propre langue . hm effet,
Nicole Bréaud-Pouliquen a publié son Tome III de la Pratique de l'Apple (Edition
du P S I). & collaboration avec Daniel-Jean David, elle nous disséque le
langage-machine et l'assembleur du 6502. Il est important d'avoir un livre
spécialement orienté APPLE, car le programmeur est souvent appelé 4 utiliser
directement des routines du Moniteur. Il serait titanesque d'avoir A les
ré-écrire, sans compter qu'il serait difficile de faire aussi bien que Steve
Wozniac. Comme le disent (aussi) les Américains 4 tout bout d'article : "Il est
inutile de réinventer la roue!".
Pom's No 3 “7
Le Don & Kurt Inman , "Apple Machine Language" édité par Reston/Prentice Hall est
lui aussi spécifique. Le pas-a-pas trés "enseignement programmé" est agréable a
suivre . Pour les amateurs de sons et de graphiques, il est fait de larges
incursions dans ces domaines. Malheureusement le livre s'arréte au moment ot ca
devient vraiment intéressant, c'est & dire au moment d'aborder le véritable
assembleur, avec étiquettes symboliques et pseudo-codes. A conseiller néanmoins au
débutant, s'il lit l'Anglais.
Le bouquin que j'attendais personnellement avec le plus d'impatience, le Randall
Hyde, est enfin sorti. Il s'agit de "How anyone can program the Apple II - Using
6502 assembly Language". Il est parfait pour les utilisateurs de LISA, car il
donne un tas de tuyaux complémentaires (utilisation des pseudo-codes LISA et du
TRACE 65 pour la mise au point des programmes). Mais bien qu'il s'intitule de
lui-méme "Best Seller", son manque d'universalité empéche de le recommander 4 des
gens qui n'auraient pas l'intention d'utiliser le LISA. Ces derniers par contre ne
pourront s'empécher d'avoir l'eau a la bouche a l'annonce des futurs volumes de la
collection "Advanced 6502 L/M programming (Graphics, Disk I/0...)" et "Z80 and
6809 programming on Apple".
Infin, pour rester dans les nouvelles alléchantes, signalons la sortie aux U.S. de
"Everyone's Guide to Assembly Language". C'est la réunion des exceptionnelles
chroniques parues dans SoftTalk depuis plus d'un an. Elles sont signées Roger
Wagner, auteur d'Appledoc (voir Pom's numéro 2) et patron de la société de
Software S D S_. Ce livre constitue l'initiation la plus progressive et la plus
compléte au langage-machine de l'Apple et 4 1'assembleur.
LES SOFTS UTILES
Ltamateur est noyé sous les logiciels mis A sa disposition . C'est peut-étre cette
multiplicité qui lui a fait préférer 1'APPLE . Mais ces logiciels, ainsi que les
dispositifs "hardware" mis sur le marché, ne sont pas tous d'une égale utilité.
Dans chaque numéro de Pom's, des articles nous permettrons d'y voir plus clair et
de sélectionner, par exemple, les aides 4 la programmation les plus efficaces.
Dés qu'il nous faut écrire, A titre professionnel ou privé, un systéme de
traitement de texte est le premier pas vers la rentabilisation de notre "micro".
Personnellement, j'ai un gros faible pour "Applewriter". C'est un bon soft, dont
l'acquisition est peu onéreuse. Attention A Applewriter II, annoncé par Apple
Computer ! Il parait qu'il "tire dans les coins". Mais il sortira en version
protégée... et il ne sera pas donné. Notre Applewriter actuel, s'il est un peu
frustre, en ce sens qu'il lui manque un certain nombre d'optios, disponibles sur
SUPER SCRIBE et autres MAGIC WINDOWs, est perfectible. La plupart des options ou
gadgets qui lui font défaut peuvent lui &étre greffés. Il suffit pour cela de
parler sa langue, le langage-machine.
A mes yeux, la plus belle qualité d'Applewriter est d'étre un systéme ouvert. Il
existe nombre de "softs sophistiqués" qui vous rendent malade. Aussi perfectionnés
soient-ils, ils ne peuvent toujours correspondre & ce que vous en attendez et il
arrive fatalement qu'un jour ou l'autre vous souhaitiez leur faire subir une
petite opération de chirurgie esthétique. Jl y a un truc en trop, une commande
dont l'texécution vous parait exaspérante, ou un truc qui manque, une idée A vous
qui vous parait géniale et dont la mise en oeuvre vous simplifierait bien la vie.
Bref, vous voulez apporter des modifications. Hélas pas de "modif" possible. Ces
softs sont généralement cadenassés et leurs auteurs se sont évertués, par psychose
du piratage, A vous empécher d'en trouver la clé.
Avec Applewriter, tout est possible ! Non seulement on trouve dans le commerce des
programmes tout faits ( AppleWriter Extended de chez Brillig Systems, Proportional
8 Pom's No 3
Text Formatter pour les Centronics 737/9 de Micro-Media, dont les produits n'ont
pas l'air d'étre trés diffusés, ou encore "Go-Between", un programme qui, d'aprés
Apple-Europe, serait disponible en Angleterre), mais encore n'importe qui peut
s'écrire les modifs, a condition de posséder suffisamment le langage-machine.
C'est méme la meilleure maniére de se familiariser avec le langage-machine, (cf.
la modification qu'a écrite Sheila Widnall pour utiliser son adaptateur de
minuscules "Paymar Chip" avec 1'Apple-Writer (Call-A.P.P.L.E. de Septembre 80),
alors qu'un mois auparavant elle ignorait l'existence du LDA et les joies de la
gestion de pile!).
Je suis résolument hostile aux adaptateurs de minuscules qui donnent de bien
vilains caractéres. De méme je pense que les cartes 80 colonnes ont un intérét
trés limité. Je me satisfais parfaitement de ce que l'Apple affiche sur l'écran.
Par contre je tiens A ce que mon imprimante écrive en francais.
La modification que je vous propose aujourd'hui et qui nous servira de tremplin
pour nous familiariser avec le langage assembleur permet de disposer de la
quasi-totalité des lettres francaises accentuées que l'imprimante est capable de
produire. Il faut bien entendu que l'imprimante dispose d'un jeu de caractéres
francais, mais c'est le cas le plus répandu et c'est le cas en particulier des
Centronics 730-2 et 737/739. Les seuls caractéres pour lesquels nous n'apportons
pas de solution immédiate sont le tréma et l'accent circonflexe, ces caractéres
qu'Applewriter sait éditer, mais ne sait pas positionner sur les lettres
correspondantes. Pour le moment, nous non plus , nous ne savons pas les imprimer
et nous ne saurons pas le faire avant d'avoir résolu le délicat probléme de
l'espacement arriére sur les imprimantes A lignes. Rassurez-vous, la solution
existe et elle fera l'objet d'un prochain article.
CARACTERES FRANCAIS
Sans la moindre modification il est possible d'obtenir (manuel Apple Writer,
extraordinary characters, p.31 ) les caractéres suivants:
é CTRL N
* ESC CTRL N * CRTL SHIFT P
@ SHIFT M a ESC CTRL SHIFT P
§ ESC SHIFT M “ ESC SHIFT N
¢* SHIFT N
La modification que nous proposons est directement inspirée du "patch" proposé
par Lou Rivas pour utiliser le dispositif "Lower Case Adaptor" avec AppleWriter
(Apple Orchard, Automne 1980). Cette modification permet d'imprimer le i, le ¢ et
le trait mode soulignage, en appuyant simultanément sur trois touches (CTRL A et,
suivant le cas, la touche Barre oblique ou la touche Moins):
a «CTRL A /
¢ ESC CTRL A /
- ESC CTRL A -
Aprés cette modification, la totalité des caractéres ASCII 224 a 255 peut &tre
affichée sur l'écran ( il faudra se familiariser avec les nouveaux symboles!).
Plus important, il est désormais possible de produire sur l'imprimante la
quasi-totalité des lettres francaises accentuées.
Il est impératif que le programme modifié soit appellé TEDITOR car aprés
l'impression (par "PRINTER") le retour a l'éditeur se fait par "BRUN TEDITOR" (en
langage-machine... of course). Si vous désirez conserver le programme original sur
Pom's No 3 9
la méme disquette (on ne sait jamais!), prenez le soin, avant toute modification,
de changer son nom.
MODE D'EMPLOT
Il faut commencer par écrire le "patch" (moins francais, mais plus joli que
"verrue") en langage-machine. Nous allons utiliser LISA. Tout autre Assembleur
fera l'affaire. Si on utilise le Mini-Assembleur il faut prendre particuliérement
soin des adresses ot doivent s'exécuter les branchements. Mais en l'occurence, la
tache est grandement facilitée par la présence du listing d'assemblage LISA.
Il reste encore la solution qui consiste A taper directement les instructions en
HEXA avec la fonction "CHANGE MEMORY" du Monitor, ultime recours de celui qui n'a
pas encore d'assembleur.
Nous prendrons comme origine $1848, qui se trouve en dehors du programme TEDITOR.
Le pseudocode "ORG" s'toccupera de tout. Une fois le programme assemblé, il
convient de le sauver sur disquette. Pour cela faire "BSAVE
CARFRAN.OBJ, A$ 1848, L$50". Le patch fait moins de 80 octets, mais il vaut mieux
prévoir trop large que trop juste. N'oubliez pas que sur la disquette vous
enregistrez par multiples de 256 octets (100 en hexadécimal) et qu'en conséquence
l'avarice n'est pas payante! Tellement peu payante que, entre membres
d'Apple-holic Anonymous, je peux bien vous confesser qu'il m'est arrivé de perdre
trois heures A rechercher une erreur dans un programme en langage-machine, que
j'avais tout simplement amputé du dernier octet. Ih effet, pour calculer la
longueur de mon "BSAVE", j'avais retranché l'adresse d'origine de l'adresse de fin
et j'avais ainsi escamoté un octet... C'est un grand classique, moins grave que
d'oublier d'éteindre quand on retire une carte... mais tout aussi populaire !
Le coté farce de cette panne ne vous échappera pas quand je vous aurai dit que,
aux premiers essais, mon programme "marchait comme sur des roulettes". Pour le
tester, j'avais en effet fait suivre mon BSAVE d'un BRUN, sans prendre la
précaution de vider la mémoire et du coup j'avais récupéré mon octet final,
sagement resté A sa place en la circonstance.
PRECAUTIONS ET SOINS
Pour vous éviter une pareille mésaventure, je vous conseille la manoeuvre
prophylactique suivante : avant de recharger un programme a tester, utilisez le
"MOVE MEMORY" du Monitor pour mettre A zéro une zone aussi grande que possible.
Par exemple, en supposant que votre programme de quelques centaines d'octets
débute en $800, passez en Moniteur (CALL-151). Puis tapez
800:0
801800 .2000M
Le TEDITOR prend chaque caractére du texte que l'on est en train d'éditer et lui
fait subir un certain nombre de traitements pour voir de quoi il retourne (Lettre
Ma juscule, si précédée d'un Escape, minuscule, ou caractére de contrdle
correspondant A une commande du programme). Puis, s'il s'agit d'un caractére du
texte proprement dit, il lui fait subir un changement radical de code. L'Apple II
modifie 1égérement le code ASCII pour son usage interne. Il lui ajoute un bit 4 la
position la plus significative de l'octet (on parle alors d'ASCII négatif).
Applewriter le secoue bien davantage : les majuscules sont descendues dans la zone
des caractéres en INVERSE ($01 A $1A), les minuscules prennent la place des
majuscules en NORMAL ($C1 A $DA), quant aux signes de ponctuation et aux chiffres,
ils viennent se placer avant les majuscules ($A1A $BF).
10 Pom's No 3
‘Quand Applewriter a fini de tester le caractére a écrire (au moyen d'instructions
CMP) et lui a fait subir les conversions voulues (avec des AND et des ORA), il le
range dans une chaine, dont l'adresse de départ se trouve dans la mémoire $28 et
qu'il fait progresser en incrémentant le registre -Y. Il s'agit de l'adressage
indirect post-indexé par Y que nous retrouverons plus loin.
Les Modes d'adressage trés variés sont un des points forts du 6502, mais aussi un
sujet de perplexité pour le néophyte. Pour s'y retrouver, il suffit d'appliquer
les conventions classiques suivantes:
$ renvoie A l'adresse
> ajoute a l'adresse la valeur du registre nommé aprés la virgule
() donne l'adresse de l'adresse. C'est une boite aux lettres.
£$ nt'tindique pas une adresse, mais une constante A utiliser immédiatement.
(| Ne vous étonnez pas si, sur certaines imprimantes, le jeu de caractéres francais
change le signe "pound" -notre signe mathématique sensiblement égal- en signe
Livre Sterling ).
MISE EN OEUVRE
A l'aide de l'assembleur de votre choix vous avez préparé sur une disquette le
fichier pinaire CARFRAN.OBJ, ou encore vous possédez la disquette Pom's qui
contient ce fichier.
Vous disposez également d'une copie d'Applewriter. Il est recommandé de ne pas
utiliser l'original ...
1) Vous chargez la Modif:
BLOAD CARFRAN.OBJ
2) Vous mettez votre disquette Applewriter et vous chargez 1'Editeur:
BLOAD. TEDITOR
Pour garder une copie de sécurité, vous changez le nom :
UNLOCK TEDITOR
RENAME TEDITOR, VIEUX TEDITOR
LOCK VIEUX TEDITOR
3) Vous passez en Moniteur (CALL-151) et vous utilisez l'instruction pour changer
la mémoire (Reference Manual p.44), afin d'introduire les nouvelles valeurs
suivantes :
*811: 8D 10 CO AC 48 18
*3D0G ou 9DBFG (retour 4 1'Applesoft)
4) Vous enregistrez votre nouvel Editeur sur disquette:
BSAVE TEDITOR, A$803, L$ 186C
5) Aprés l'avoir essayé, vous verrouillez le nouvel éditeur
LOCK TEDITOR
REMARQUE: Si vous ne disposez ni d'un assembleur ni de la disquette Pom's, vous
pouvez encore vous en sortir : vous commencez directement au pas 2) et quand vous
arrivez au pas 3) vous enregistrez également la modif en HEXA a partir de *1848:
Bien entendu vous vous limitez au code objet qui est dans la partie gauche du
listing d'assemblage.
Pom's No 3 11
LIGNES SOURCE POUR ASSEMBLAGE AVEC LISA
TTL "CARACTERES FRANCAIS"
ORG $1848
Le pseudocode TTL permet, en LISA Version 2.5, d'imprimer le titre au début de
chaque page de 1l'Assemblage. Ih outre, si vous disposez d'une Horloge Temps Réel,
du type Mountain Computers (née Mountain Hardware), la date et l'heure
stimprimeront A cdté du titre, ce qui est une facon agréable d'assurer la
pagination d'un long listing.
Le pseudocode ORG est lui indispensable; il permet A 1'Assembleur de calculer
l'adresse des branchements. Il est de la responsabilité du programmeur de placer
son programme objet 4 l'adresse indiquée au moment de l'exécution (4 moins que son
programme ne soit écrit de facon 4 pouvoir étre déplacé -"relocatable" disent les
anglophiles-, c'est-a-dire ne comporte aucun saut 4 une adresse absolue. Si ce
ntest le cas, il faut faire appel A un programme de déplacement (cf. J.-F.
Duvivier Déplacement des programmes en Assembleur, Pom's N 1)
C'est une bonne habitude que d'écrire, autant que faire se peut, des programmes
recasables ("relocatable"). Il n'en est évidemment pas question dans notre exemple
puisqu'il s'agit d'une modification qui doit se raccorder A une adresse bien
définie (par JMP $1848 que nous avons placé en $814 dans AppleWriter).
Le pseudocode OBJ, qui indique l'adresse de départ de 1'Assemblage du code-objet
est inutile ici car, A moins d'en décider autrement et de le spécifier
expressément avec OBJ, ORG génére automatiquement un OBJ & la méme adresse (en
LISA).
2. EQUATE
Le pseudocode Equate (EQU) permet d'affecter- une étiquette a une cellule de
mémoire ot se trouve une valeur ou un début de programme. S'il s'agit d'un
programme, il suffira par la suite de faire un saut inconditionnel (JMP) ou un
branchement conditionnel (BEQ) 4 cette étiquette. C'est beaucoup plus gai que la
solution du BASIC, qui consiste A définir un numéro de ligne fixe au point
d'tentrée du sous-programme.
Les "equates" servent beaucoup pour les sous-programmes du Moniteur. Si le
sous-programme est en ligne (A l'intérieur du programme principal), vous faites
figurer simplement 1'étiquette avant la premiére instruction (cf. BAROBL infra).
L'Assembleur LISA sait qu'il s'agit d'une étiquette parce que vous ne la faites
pas précéder d'un espace, alors qu'il en faut au moins un avant un code
instruction.
Dans le dialecte spécifique A LISA, un equate a une mémoire en page zéro ($00 A
$FF) s'écrit EPZ (equate page zero) et ne sera suivi, bien entendu, que de deux
chiffres hexa au maximum.
3. TEXTE EPZ $0028
Il stagit de la mémoire ot le programme va chercher 1'adresse de la chaine de
caractéres qu'il est en train de constituer 4 partir des entrées au clavier.
4. CLAVIER EQU $CO000
Quand le caractére prélevé par un LDA a cette adresse est "négatif" (bit 7, le
plus significatif, positionné), c'est qu'une touche du clavier a été enfoncée. Cet
12 Pom's No 3
état sera constaté par l'échec du test BPL.
5. STROBE EQU $C010
Remet le bit le plus significatif A zéro pour pouvoir accepter une nouvelle entrée
clavier. Le programme va effectuer une série de tests afin de voir si les touches
qui nous intéressent ont été activées, pour se rebrancher finalement au point d'ou
est partie la dérivation (au moyen d'un RTS). Si les caractéres testés sont bien
ceux que nous recherchons, ils doivent étre stockés entre temps dans la chaine de
caractéres qu'utilise A/W. Ceci est effectué par STA ($28), Y suivi d'un INY pour
mettre a jour le pointeur.
6. VALEUR IMMEDIATE - ADRESSE - ADRESSE DE L' ADRESSE
LDA : Load Accumulateur permet de placer une valeur dans 1'accumulateur.
Cette valeur peut étre contenue dans l'instruction : LDA £$Valeur en hexa, indique
qu'il n'y a pas aA chercher loin l'tadresse de la valeur puisqu'il faut prendre
littéralement la valeur contenue dans l'instruction. On parle alors d'adressage
immédiat.
La valeur peut étre recherchée directement dans une cellule de mémoire dont
l'adresse est contenue dans l'instruction: LDA $ adresse (en Hexa). C'est
l'adressage direct.
On peut encore indiquer dans l'instruction l'adresse de la cellule ot se trouve
ltadresse de la valeur : LDA ($ adresse de l'adresse ot se trouve la valeur). Ce
systéme de boite aux lettres s'appelle l'adressage indirect. Il permet d' utiliser
la méme instruction pour toute une série de valeurs. L'adresse de la boite aux
lettres est fixe, seul son contenu varie.
Une autre maniére de faire varier l'adresse consiste a associer un registre (X ou
Y) dont le contenu vient s'ajouter a l'adresse. Il s'agit de l'adressage indexé.
Ltadresse indiquée dans 1l'instruction ne varie pas, mais on fait progresser le
registre.
Sion marie l1'indexage avec l'adressage indirect on obtient l'adressage indirect
indexé. On peut de la sorte faire varier l'adresse de la "boite aux lettres",
adressage indirect pré-indexé par X, ou faire varier l'adresse trouvée dans la
boite aux lettres, adressage indirect post-indexé par Y. Ici le rdle des deux
registres d'index est nettement différencié, ce qui est bien agréable pour éviter
les confusions ! Ainsi LDA ($28),Y permet de charger l'accumulateur avec le
contenu de l'adresse A+Y, A étant l'adresse contenue dans la mémoiré 40 (28 en
hexadécimal). Les beautés de l'adressage indirect post-indexé par Y résident dans
le fait qu'il n'a pas besoin de toucher au contenu de la cellule 40 et qu'il
suffit d'incrémenter le registre-Y (INY) pour faire progresser l'adresse ot l'on
va lire ol stocker le caractére suivant.
7. LIGNES 9 A 11
CMP £$81 ; TOUCHES CTRL-A?
BEQ BAROBL
RTS
Les branchements conditionnels se font en deux temps. D'abord, on met en présence
les quantités A comparer. Ici l'accumulateur et la valeur 129 (81 en hexa).
Fnsuite, on indique la condition et la branche & prendre si cette condition est
remplie.
Pom's No 3 13
fh BASIC cela donnerait:
10 LET A = ACCUMULATEUR : LET B = 129 : REM 129=$81
20 IF A = B THEN GOTO 1000
30 REM SOUS-PROGRAMME BAROBL COMMENCE EN LIGNE 1000
40 RETURN
Remarque : 1a comparaison n'est pas a proprement parler une comparaison, mais une
soustraction : avec CMP (et ses variantes) on soustrait la valeur a comparer de
l'accumulateur (ou du registre concerné). th indicateur est positionné selon le
résultat de cette soustraction
C - pour Carry - s'il est positif
Z- pour Zero - s'il est nul
N - pour Negative - s'il est négatif
Tous ces indicateurs (flags) sont combinés dans un méme registre, le Mot d'Etat
(Status Word). L'instruction suivante de branchement conditionnel examine ensuite
l'état de l'indicateur qui l'intéresse.
BEQ (Branch if equal), par exemple, effectuera le branchement si la soustraction a
donné pour résultat 0, c'est-a-dire si l'indicateur Z = 1. Par contre le
branchement ne sera pas effectué si l'indicateur Z = 0. Surprenant, mais
logique... Surtout si l'on considére que "0" veut dire Faux et que "1" veut dire
Vrai.
Sila comparaison ne donne pas l'égalité c'est qu'il ne s'agit pas de CTRL-A.
Retour au programme principal (RTS). Par contre si c'est un CTRL-A il convient de
déterminer si celui-ci est accompagné d'une barre oblique ou d'un moins.
Chaque fois que la bonne séquence de touches aura été décelée, nous transformerons
le code ASCII dans le code qui donnera le caractére désiré a l'impression. Cela
est effectué par.un LDA avec adressage immédiat, c'est A dire que l'on charge
directement l'accumulateur avec la valeur ASCII qui servira au programme PRINTER.
La différenciation provoquée par l'emploi préalable de la touche ESC (majuscules)
sera effectuée dans le tronc commun du programme principal (TEDITOR classique).
8. SOUS-PROGRAMME
BAROBL:
. LDA CLAVIER
BPL BAROBL ; RIEN! RELIRE CLAVIER.
CMP £$AF ; TOUCHE "/"?
BNE TIRET?
LDA £$DC
ACCEPTE:
STA STROBE ; LE CLAVIER EST PRET A
RTS ;ACCEPTER UN CARACTERE
TIRET?:
CMP £$AD 3 TOUCHE "-"?
BNE ACCEPTE ; RIEN AU NUMERO.FAITES VOS JEUX!
LDA £$DF ; SOULIGNERA A L' IMPRESSION
BNE ACCEPTE ; STROBE MET BIT7 A O POUR LIRE
STA (TEXTE), Y ; RANGE LE CARACTERE TRAITE
INY ;DANS LA ZONE-TAMPON
RTS
END
14 Pom's No 3
JSR
que
(Jump to
subroutine) exécute un branchement inconditionnel. Il est au JMP ce
le GOSUB est au GOTO. C'est-a-dire qu' il s'attend a trouver ultérieurement un
RTS (Return from subroutine), 1'équivalent du RETURN du BASIC.
BNE (Branch
Le branchement
zéro.
sera effectué
STA
de
(Store
l'accumulateur dans
if not equal) ne doit guére poser de probléme si on a compris le BEQ.
si l'indicateur Z (dans le Mot d'Etat) est égal a
accumulateur) est la manoeuvre inverse de LDA. Tl transfére le contenu
la mémoire spécifiée. Ici nous utilisons done 1l'adressage
indirect post-indexé par Y. Nous rangeons le contenu de 1'accumulateur a l'adresse
obtenue en
1'EPZ on sait qu'il s'agit de
indique le point de
(qui, lui, progressera d'une unité au prochain INY).
ajoutant le contenu de la boite aux lettres étiquetée "TEXTE" (d'aprés
la cellule $28 en hexa.
départ de la chaine de caractéres) au contenu du registre Y
soit 40 en décimal, qui
LISA 2.5 CARACTERES FRANCAIS
0800 1 TTL "CARACTERES FRANCAIS"
1848 2 ORG $1848
1848 3 3
0028 4 TEXTE EFZ $0028
1501 S DISQUE EQU $1501
cooo 6 CLAVIER EQU $C000
co10 7 STROBE EQU $C010
1848 C9 81 8 CMF #$81 3TOUCHES CTRL -A?
184A FO 01 9 BEQ BAROEL.
184C 460 10 RTS
184D 11 BAROBL?
184D AD 00 CO 12Z LDA CLAVIER
1850 10 FE 13 BFL. BAROBL sRIEN! RELIRE CLAVIER,
1852 C9 AF 14 CMF #$AF $TOUCHE "/"?
1854. D0 06 15 BNE TIRET?
1856 AQ DC 16 LDA #$DC
1858 17) ACCEPTE?
1858 8D 10 CO 18 STA STROBE $LE CLAVIER EST FRET A
1856 60 19 RTS sACCEPTER UN CARACTERE
185C 20 TIRET??
185C C9 AD 21 CMP #$AD 3 TOUCHE “--"?
18SE DO F8 22 BNE ACCEFPTE $RIEN AU NUMERO.A VOS MISES!
1860 A9 DF 23 LDA #$DF 3SOULTIGNERA A L.’ IMPRESSION
1862 DO F4 24 BNE ACCEPTE 3STROBE MET BIT7 A O POUR LIRE
1864 91 28 25 STA (TEXTE),Y ;RANGE LE CARACTERE TRAITE
18466 C8 26 INY 3DANS LA ZONE-TAMFON
1847 60 27 RTS
1848 28 END
ICALL-151
*1848,1868
1848- C9 81 FO 01 60 AD 00 co
1850~- 10 FE C9 AF DO 06 Ag OC
1858~ 8D 10 CO 60 CF AD DO F8
1860- A? DF DO F4 91 28 CB 40
1868-- 00
Pom's No
Afin de mieux
tirer profit de toutes
les possibilités
dAPPLE,
et de ses extensions.
Loin des contacts
anonymes,
pour un rapport
plus humain,
des revendeurs
régionaux spécialisés
vous proposent
des logiciels sur mesure,
standards, ou
d‘apprentissage.
Un service technique
avant et aprés-vente.
N’hésitez pas a contacter le
revendeur le plus proche
pour un conseil
ou un renseignement
Pappic
en Ge
EUROPROCESS
Annecy/Faverges Siége social : Doussard
74210 (80) 44.31.12
LE CALCUL INTEGRAL
Bayonne 3, rue Aristide-Briand
64100 (69) 55.43.47
BOUTISOFT 33
Bordeaux 9, rue de la Lande
33000 (56) 91.55.08
NEYRIAL
Clermont-Ferrand 9 NEYRAY
63000 (73) 35.02.70
MAGENTA GESTION
Epernay 7, av. A.-Thévenet Magenta
51200 (26) 53.19.93
CIRCE
Lyon 9, rue P.-Florence
69003 (78) 54.31.95
ORDITEL
Marseille 2 Siége social : BELCODEN
13000 (42) 04.44.00
Montpelier MCROrorMamo
34000 (67) 58.58.28
SEMITEC
Nancy/Laxou 69, rue Mareville
54250 (8) 340.43.38
4 AMC
Orléans 13, rue des Minimes
45000 (38) 62.62.58
s MAB
Perpignan 2, place de Catalogne
66000 (68) 34.04.46
CONSEIL COMPUTER
Rouen 20, quai Cavelier-de-la-Salle
76100 (35) 63.36.06
CILEC
Strasbourg 18, quai Saint-Nicolas
67000 (88) 37.31.61
SIA
Toulon Lepaillon, avenue de Brunet
83100 (94) 23.74.30
H MICROMEGA
Valenciennes 38, rue de Famars
59300
(27) 46.89.22
Si cette publicité vous intéresse, contactez le
CALCUL INTEGRAL
Contr6élez le nettoyage mémoire
Guy Mathieu
Un article de Gérard MICHEL paru dans le numéro 2 de POM'S étudie l'effet de
différentes méthodes de "Garbage Collection" pour nettoyer la mémoire centrale des
vieilles chaines qu'elle contient :
- "garbage" automatique par Applesoft,
- FRE (0) qui force le "garbage",
- d'autres "FRE", par exemple FRE (16) avec un programme approprié en langage
machine.
Il peut étre intéressant de voir de plus prés comment fonctionne le "garbage
collection", en vue de choisir la méthode la plus convaincante pour un programme
donné. Une fagon de le faire est de visualiser sur écran graphique les stades
successifs de l'occupation mémoire, ce que fait le programme listé ci-aprés.
L'image écran dont le fac-similé est reproduit ici montre que le "garbage"
automatique par Applesoft est fait au dernier moment, quand de la place doit
effectivement étre dégagée : il nécessite alors un certain temps d'attente (selon
les programmes, ce temps, souvent chiffré en secondes, peut dépasser la minute).
Un "garbage" forcé régularise le processus et ne demande que des temps unitaires
faibles. Mais bien souvent, la somme de ces temps unitaires atteint, et dépasse
méme, parfois notablement, le temps total exigé par le "garbage collection"
automatique.
Le choix entre diverses facons de nettoyer la mémoire se pose par conséquent en
des termes différents, car on ne peut plus parler d'optimum général.
En mode conversationnel, on préférera généralement des attentes courtes, méme si
le temps total est plus long : psychologiquement, c'est une solution mieux
acceptée; techniquement, le temps le plus long est de toute facon celui qui dépend
de l'opérateur.
Ti nten va pas de méme pour les travaux en temps différé ou semi-différé (par ex.
: chargement en mémoire centrale d'un gros fichier d'index).
Quelques commentaires sur le programme
- Les instructions 60 4 67 étudient la composition et la position sur écran de la
chaine de caractéres destinée 4 former les nombres de 1'échelle.
- Les instructions 50 4 59 constituent un sous-programme de dessin de chiffres.
- Les instructions 1500 A 1530 visent A mettre A égalité les 3 cas étudiés : un
"LOMEM" remet A O la zone de pointeurs cependant que la mémoire 40185
(indestructible par le DOS) contient les valeurs successives d'une variable Z
destinée 4 réinitialiser la "boucle J".
- fin, chacun connait les vertus des mémoires 111 et 112 (instruction 81) qui
contiennent la valeur décimale de la plus basse mémoire occupée a chaque instant
par un tableau de "strings".
Pom's No 3 17
0
HOME
S DS = CHRS (4)
10
11
13
15
20
21
22
23
24
25
56
REM INITIALISATION
LOMEM: 163853 REM FROTECTION
ZONE HGR
POKE 40185,50
DIM A$(150)
REM DESSIN DU CADRE
HGR 3 HCOLOR= 2
HFLOT 50,0 TO 50,150 TO 270,14
50 TO 270,0
HPLOT 86,145 TO 86,150
HFLOT 186,145 TO 186,150
FOR Y = 0 TO 150 STEF 50% HFLOT
50,Y TO SS,Y¥% NEXT
REM ECHELLES
FOR J = 0 TO 3
3? IF ZX% < 20 THEN
ZX% = 708ZY% = 1593ZAS = "2000
0"3 GOSUB 60
2X% = U702ZY% = 1592ZA$ = "300
00"3 GOSUB 460
HCOLOR= 3% VTAE 233 PRINT "NE
ITER.? ~ OCCUF. MEM.
GOTO 1000
HFLOT ZX% - 2,ZY% TO ZX% + 2,
ZY% TO ZX% + 2,ZY% ~ & TO ZX
% ~- 2,ZY% - 6 TO ZX% - 2,ZY%
+ RETURN
HFLOT ZX%,ZY% TO ZX%,ZY% - & TO
ZX% - 2,ZY% - 4% RETURN
HFLOT ZX% - 2,ZY% - & TO ZX% +
2,ZY% ~ 6 TO ZX% + 2,Z2Y%X ~ 4
TO ZX% - 2,ZY% TO ZX% + 247
Ya? RETURN
HFLOT ZX% - 2,ZY% TO ZX% + 2,
ZY% TO ZX% + 2,ZY% - & TO ZX
% - 2,ZY% - 6% HPLOT ZX% ~- 2
+ZY% ~ 3 TO ZX% + 2,ZY% ~ 33
RETURN
HPLOT ZX% - 2,Z¥% - 6 TO ZX% ~
2,ZY% ~ 2 TO ZX% + 2,2Y% -
t HFLOT ZX%,ZY% - 4 TO ZX%,
Y%? RETURN
HPLOT ZX% - 2,ZY% TO ZX% + 2,
ZY% TO ZX% + 2,ZY% - 3 TO ZX
% - 2,ZY% - 3 TO ZX% - 252%
- 6 TO ZX% + 2,ZY% - 6% RETURN
2
Zz
HFLOT ZX% - 2,ZY% ~ 6 TO Z2X% ~-
2,ZY% TO ZX% + 2,ZY% TO ZX% +
2,ZY% - 3 TO Z2X% - 2,ZY% - 3
+ RETURN
59
60
61 %
63
64
HPLOT ZX% - 2,ZY% TO ZX% + 2,
2¥% - 6 TO Z2X% ~ 2,ZY% - 6% RETURN
HPLOT ZX% - 2,ZY% TO ZX% - 2, :
ZY% ~ & TO 2X% + 2,Z¥% - 6 TO
ZX% + 2,Z2Y% TO ZX% - 2,Z2Y%2 HPLOT
ZX% - 2,ZY% - 3:°TO 2X% + 2,2
Y%-~ 3% RETURN
HFLOT ZX% + 2,ZY% TO ZX% + 2,
ZY¥% - 6 TO 2X% - 2,ZY% - & TO
ZX% - 2,Z2Y% - 3 TO ZX% + 2,2
Y% ~ 3% RETURN
REM ECRITURE SUR ECRAN H.R.
LEN (ZA$)$ FOR I = 1 TO
ASC ( MIDS (ZA$,I,1)) -
ON 23% GOSUE 50,51,52,53,54,5
5,56,57,58,59
65 ZX% = ZX% + 8B
66 NEXT I
67 RETURN
80 REM TRACE CARTE MEMOIRE
81 MM = FEEK (112) x 256 + PEEK
(11D
82 X = 50 + (MM - 16385) / 100
83 HFPLOT X,J TO 270,u
84 VTAE 233 HTAB 12! PRINT Jt VTAB
23% HTAE 33% PRINT MM
85 RETURN
1000 REM CONSTITUTION DE STRINGS
1010 FOR J= 0 +270 49 + Z
1020 AS(T) uu
1030 FOR I 1 TO 100
1040 AS(T) = AS(T) + "AN
1050 NEXT TI
1060 IF J < 50 THEN VTAB 22:3 PRINT
"“GARBAGE COLLECTION’ AUTOMA
TIQUE": GOSUE 80: GOTO 1500
1070) VTAB 1
1080 IF J > 99 THEN 1110
1090 IF J / 4 = INT (J / 4) THEN
PRINT FRE (0)3 VTAB 22! PRINT
““FRECO)’ TOUTES LES 4 BOUCL
ES "
1100 GOSUE 80: GoTO 1500
1110 PRINT FRE (0)$ VTAB 22: PRINT
““FRECO) A CHAQUE BOUCLE ,
1120 GOSUE 80
1500 NEXT J
1510 LOMEM: 16385
1520 DIM A$(101)
1530 Z = FEEK (40185)! POKE 4018
18 Pom's No 3
S,Z + 50: IF Z = = 100 THEN
1000
wet
45h
Un exemple de HELLO
Guy Mathieu
Rien n'est aussi triste que le programme "HELLO" dont sont affligées tant de
disquettes !
Un bon programme "HELLO" doit avoir deux caractéristiques :
- dire de quoi il s'agit (et ceci qu'il s'agisse d'un programme sophistiqué
destiné & votre publicité, ou d'une simple disquette de travail utilisée chaque
jour).
- permettre de faire ensuite... ce qu'il est logique de faire : un "RUN" sur un
programme, ou ltobtention du catalogue.
Accessoirement, il n'est pas désagréable que le programme "HELLO" soit
extrémement simple a mettre au point.
Eh voici un exemple.
Le cadre est valable pour tous vos programmes : votre nom ou celui de votre
société, un copyright, un sigle,...
Dans le corps du programme, 2 instructions seulement servent 4 personnaliser.
L'instruction 11 définira tous les titres :
DATA X$, N,XI$, X2$,..-N[de 14 3]
Dans l'texemple numéro 1 ci-dessous :
X$ = "DISQUE DE TRAVAIL"
N=2
XI$ = "PRESSER LA BARRE D' ESPACEMENT"
X2$ = "POUR OBTENER LE CATALOGUE"
Ltinstruction 300 lance la suite. Ici PRINT D$ "CATALOG": END
Les choses ayant évolué, les programmes en cours de mise au point sont devenus
opérationnels. Votre disquette est préte A étre utilisée (peut-étre 4 @tre
commercialisée. Pourquoi pas ?).
L'instruction 11 devient :
DATA MON PROGRAMME, 3, PROGRAMME DESTINE, A MONTRER A TOUS, A QUEL POINT JE
SAIS PROGRAMMER.
L'instruction 300 devient, elle :
PRINT D$ "RUN MON PROGRAMME" .
Pom's No 3 19
1D$ = CHRS (4)
10 REM DATA DANS L
XTE
11 DATA DISQUE DE
SSEZ LA BARRE D‘ESFACEMENT,P
QUR OEBTENIR LE
20 REM LECTURE DATA
21 READ T1¢
22 L1 = LEN (T1$)
23 HT = INT (18 - Li / 2)
24 Tig =" " + T1S
25 Tos = LEFT$ ("
31 FOR IT = 1 TO NT
IF NT :
‘ORDRE?NOM DE
CODE DU FROGRAMME,NOMBRE DE
LIGNES DE TEXTE,LIGNES DE TE
IF NT = 4 THEN EC = 2
TRAVAIL, 2,PRE
CATALOG
uo
"JLab +
3} READ T$(1)t NEXT
= 2 THEN VT =
120
130
140
150
160
170
210
220
240
250
260
270
280
300
INVERSE $ FOR I = 1 TO 3 STEF
2% VTIAB IT? HTAE HT? PRINT TO
$2 NEXT
VTAB 23 HTAB HT? INVERSE ¢ FRINT
T1s
NORMAL
FOR I = 1 TO NT
VITAE VT? PRINT T$(T)
VT = VT + EC
NEXT
FOR I = 1 TO 4% PRINT ¢ NEXT
VTAB 20! INVERSE ¢ FRINT "CO
PIC"
NORMAL.
PRINT "GROUPE"
PRINT "EUREQUIF
= tARRE D’ESFAC."
FRINT "VAUCRESSON
POUR CONTINUER"
IF PEEK ¢( ~ 16384) =< = 127
THEN 280
HOME $ FRINT D¢"CATALOG"
XPOSITION
SOUBIRON S.A.
En plein coeur de TOULOUSE
cest:
- 100 m? d’exposition spécialisée
— Une équipe de techni
a votre service pour
Etudes
Programmes
Mise en place
Formation
Service aprés-vente
‘SOUBIRON S.A.
BOUTIQUE MICRO INFORMATIQUE LIBRAIRIE BD 107SF agai
Tél. : (61) 21.64.39 - 21.04.57 . Telex LPS INF 521075 F
9, rue Kennedy . 31000 TOULOUSE 5 ve
DE
CONTRAT D’ENTRETIEN
20
Pom's No 3
S.A.V. DEPANNAGE RAP!
Analyse du directory Pascal (II)
Michel Crimont
A. Présentation générale
Nous avons vu dans le précédent numéro comment lire directement le répertoire du
disque Pascal sans passer par le "FILER". Nous allons voir maintenant comment
tirer parti de ces procédures pour placer automatiquement dans un fichier unique
tous les répertoires de nos disques Pascal, ce qui permettra une recherche
beaucoup plus aisée; l'article du prochain numéro montrera en complément comment
réaliser les procédures de sélection dans le catalogue.
Les types et variables précédemment définis restent valables, ainsi que les
procédures et fonctions, excepté ECRIREP et LIREREP que nous n'utiliserons pas
ici.
Il convient d'ajouter le type ELEMENT qui est une ligne du catalogue définie comme
un RECORD comprenant
GENRE : deux caractéres servant A définir l'utilisation et le type de programme;
par exemple J : Jeux, G : Graphisme, U: Utilitaire, M : Mathématiques -pour
l'utilisation- et P : Programme, L : Librairie, U: Unit, etc. - pour le type -.
NOMFILE : nom du fichier.
NOMDISK : nom du disque comportant le fichier.
NUMBOITE : numéro de la boite contenant le disque.
DATEFILE : date de création du fichier.
Les ELEMENTS sont placés dans un fichier nommé GARDE. L'item NUMBOITE de la fiche
zéro conserve le nombre de fiches du fichier.
PAPIER : nom du fichier d'impression.
QUIT : Booléen d'arrét du programme.
IMP : impression si Vrai.
NUMCAT : nombre de fiches du catalogue.
NUMLINE : numéro de la ligne courante sur 1'écran.
Afin de rendre le programme trés fiable, il est fait usage de diverses procédures
filtrant tout ce qui est entré par l'utilisateur au clavier; par ailleurs,
quelques procédures facilitent les affichages d'écran. C'est ainsi que
MESSAGE : affiche une chaine de caractéres A la ligne Y et efface la fin de la
ligne.
ALARME : efface l'écran, sonne, affiche un message d'erreur et attend un [Return].
PRENCHAINE et ENTIER : permettent de prendre au clavier en toute sécurité et avec
correction éventuelle par la fléche arriére une chaine de caractéres ou un entier;
enfin un [Return] A la place d'une entrée clavier renvoie la chaine ou l'entier
donné en Variable, ce qui permet de garder une valeur par défaut.
TRAIT et TRAITFIN : permettent l'ouverture et la fermeture du fichier impression
avec édition d'un trait.
CONTINUE : permet la lecture d'un écran et attend un [Return] pour afficher la
suite.
ZEROELEM : donne une valeur par défaut Aa Elément.
DECODATE ; renvoie une chaine de caractéres standard correspondant au type
Pom's No 3 21
dtentrée "Date".
AFFICHE : place A l'écran une ligne du catalogue avec le numéro de la fiche.
IMPRIME : imprime une ligne du catalogue.
RAPPEL : rappelle a la fin du programme qu'il faut replacer le disque systéme dans
le lecteur 1 [£4:].
TITRE : affiche ou imprime les tétes de colonne.
Le fonctionnement du programme est le suivant : une fois le programme chargé
apparaissent 4 options
E(nregistrer, L(ire, M(odifier, F(in.
Si l'on demande l'enregistrement, le disque dont le répertoire sera enregistré
dans le catalogue sera placé dans le lecteur 1 [£4:], le disque contenant le
catalogue général dans le lecteur 2 [£5:].
Afin d'éviter toute erreur, le disque du lecteur 2 devra porter un nom
particulier, ici "CARNET", le plus simple étant de prendre un disque Pascal
formaté, de lui donner le nom de "CARNET" et de placer dessus CATALOG.Code, si
bien qu'il suffira lorsqu'on voudra ajouter un répertoire au catalogue de faire
eX(ecute £5:CATALOG, le disque "CARNET" contenant ainsi A la fois le programme et
le catalogue général.
La Lecture ne permet aujourd'hui que la lecture du catalogue général. Elle sera
perfectionnée, pour permettre toutes les sélections imaginables, dans le prochain
numéro.
La Modification permet de modifier les éléments d'une fiche; cette fiche apparait
A l'écran. Si un item ne doit pas étre modifié, il suffit de taper le [Return]
pour garder la méme valeur, sinon on entre d'autres données.
B. Les procédures.
1. OUVERTURE
ouvre le fichier GARDE s'il existe et attribue 4 NUMCAT sa valeur (nombre de
fiches du catalogue). Si le fichier n'existe pas, il est créé et la premiére fiche
enregistrée (fiche non utilisée en dehors de NUMBOITE qui contient NUMCAT).
2. REMPLIR
est chargé de constituer une fiche 4 partir du répertoire du disque du £4: et des
données complémentaires entrées au clavier. Il faut d'abord lire le répertoire
avec LIREREP (4). Si ce répertoire ne peut étre lu, la procédure envoit un message
d'erreur.
S'il est lu, on prépare une fiche vierge avec ZEROELEM, puis avec ENTETE on place
le nom du disque et l'on demande le numéro de la boite ow se range ce disque. Ces
valeurs sont ensuite gardées dans IM pour tous les fichiers de ce disque, puis on
fait appel a la procédure FILES qui propose un par un les fichiers et demande s'il
faut les inclure dans le catalogue (ce qui permet d'inclure seulement les nouveaux
fichiers d'un disque sans reprendre les anciens déja enregistrés).
Si l'on garde un fichier, on garde son nom, sa date et l'on demande son type et
son genre, puis on l'enregistre en place et l'on avance NUMCAT de 1. Quand le
disque ne posséde plus d'autre fichier, on ferme le catalogue pour se mettre a
l'abri d'une coupure de courant ou d'un incident et on l'ouvre A nouveau.
3. ENREGISTRE
appelle simplement de facon itérative la procédure REMPLIR et donne les messages
d'écran nécessaires pour les manipulations.
4. LIRE et TRI
permettent simplement d'éditer le catalogue soit A l'écran, soit sur 1'imprimante;
22 Pom's No 3
ces deux procédures seront par la suite développées pour permettre des sélections
dans le catalogue.
5. MODIFIE
affiche un numéro quelconque du catalogue qu'il faudra done noter auparavant par
une lecture et permet de modifier un item quelconque dans le cas par exemple ot
l'on change un disque de boite ou un fichier de disque, ou encore si un programme
a été transformé en UNIT.
C. Le programme principal.
Le programme principal est trés simple
PRINFO : attribue les caractéres de contréle d'écran.
OUVERTURE : contrédle l'existence du disque "CARNET" dans le lecteur 2 et ouvre ou
erée le fichier "DONNEES".
Fnsuite, affichage du titre du programme et du nombre de lignes du catalogue, et
attente des options.
A la fin, mise A jour de NUMCAT sur la fiche zéro de GARDE - fermeture du fichier
et rappel d'insérer le disque systéme au cas ol l'on aurait placé dans le lecteur
1 un autre disque.
Quelques perfectionnements sont possibles au gré des lecteurs :
1. Il est possible de placer dans le lecteur 2 un-disque simplement formaté sans
nom particulier, auquel cas, lors de l'ouverture, le programme demande un nom pour
ce disque (avec PRENCHAINE et 7 caractéres maximum); grace Aa la procédure ECRIREP,
ce nom pourra étre placé sur le répertoire du disque du lecteur 2. Le nom peut
également €tre préalablement déclaré en constante dans le programme, mais
attention si vous faites démarrer accidentellement votre programme avec un disque
quelconque dans le lecteur 2 !
2. A la fin du programme, il est possible d'essayer d'ouvrir un fichier systéme du
lecteur 1. Si IORESULT=0, le disque systéme est dans le lecteur 1, sinon l'on
passe & RAPPEL.
IBRAIRIE LA NACELLE
INFORMATIQUE e ELECTRONIQUE AUTOMATISME e MICROPROCESSEUR
TOUS OUVRAGES ET ABONNEMENTS
FRANCAIS ET ETRANGERS
Tous les ouvrages francais ou étrangers signalés dans cette revue peuvent étre obtenus ou commandés a La Nacelle
2, rue Campagne-Premiére 75014 PARIS - Tél. 322 56 46
Métro Raspail - Parking a la hauteur du 120 bd du Montparnasse
ouvert tous les jours lundi compris, sans interruption de 9 h 30 4 18 h 50, samedi fermeture 417 h 50.
Pom's No 3 23
PROGRAM CATALOG;
CONST MAXFILE =773
TYPE CRTCOMMAND =(EFEOS,EFEOL, INVERSE »NORMAL ,DROIT,GAUCHE, TETE) $
CHOIDECA =SET OF CHAR}
DATE =PACKED RECORD
MOIS 31..123
JOUR 31..313
AN $14+99
END}
DISQUE =RECORD
A SARRAYCO..2] OF INTEGER}
NOMDISQUE $STRINGL713
B tINTEGER}
NERFICHE INTEGER}
c SINTEGER$
DATEDISQUE $DATE$
D,E SINTEGER
END}
FICHIER =RECORD
DEBFICHIER : INTEGER}
FINFICHIER $INTEGER}
TYPEFICHIER? 0..73
NOMFICHIER {STRINGCIS]3
DERNELOC S INTEGER}
DATEFICHIER $DATE
END}
ELEMENT =RECORD
GENRE tARRAYC1..23 OF CHAR}
NOMFILE SSTRINGCASI3
NOMDISK SSTRINGL7I3
NUMBOITE SINTEGER$
DATEFILE SDATE$
END}
VAR REPERTOIRE +RECORD
VOL SDISQUE}$
CATALOG SARRAYC1.+MAXFILE] OF FICHIER
END}
NUMLECTEUR s INTEGER}
HOME,BS,EFL,EFE,SON,INV,NORM,CRi CHAR}
CH,COM 3S CHAR}
FAPIER 3 TEXTS
GARDE SFILE OF ELEMENT}
NUMCAT ,NUMLIGNE,I,J,K,L¢ INTEGERS
LM SELEMENT 3
QUIT, IMF SBOOLEAN}
OK Dx)
(xX PROCEDURES DIVERSES x)
ORB)
FUNCTION LIREREF (NUM? INTEGER) {BOOLEAN}
BEGIN
(x$I~-x)
UNITREAD (NUM, REPERTOIRE ,SIZEOF (REPERTOIRE) ,2)$
LIREREP $=IORESULT=0
CxS T+)
END}
PROCEDURE FRINFO}$
BEGIN
24 Pom's No 3
HOME ?=CHR(12) 3 EFL%=CHR(29) 3 BS %=CHR(8)}3 CR %=CHR(13)$
SON 3=CHR(7)$ INV?=CHR(18)3 NORM?=CHR(20)$ EFE?=CHR(11)
END}
PROCEDURE FRENRETURN}
VAR SORT {CHAR}
BEGIN
REPEAT
READ (KEYEOARD , SORT)
UNTIL EOLN( KEYBOARD)
END}
FUNCTION FRENCAR(BONSET $CHOIDECA) 3 CHAR}
VAR CH 3CHAR$
BON ‘BOOLEAN;
BEGIN
REPEAT
READ (KEYBOARD ,CH) $
IF EQLN(KEYBOARD) THEN CH?=CR}
BON?=CH IN BONSET}3
IF NOT BON THEN WRITE(SON)
ELSE IF CH IN CL’ ’4.°4/] THEN WRITE(CH)
UNTIL BON}
PRENCAR? =CH
END}
FUNCTION OULT$BOOLEAN}3
BEGIN
OUI?=FRENCAR(DC‘O’,’N‘]) IN £C’O79
END}
PROCEDURE MESSAGE (Y3INTEGER$S$STRING) 3
BEGIN
GOTOXY(0,Y)$WRITE(S,EFL)
END}
PROCEDURE ALARME(SiSTRING) $
BEGIN
GOTOXY (0,1) $WRITE(SON,EFB) 3
MESSAGE (10,S)3
MESSAGE (12,’FAITES <RETURN> ’)3
PRENRETURN
END}
PROCEDURE F'RENCHAINE (LONGMAX! INTEGER$BONSET?CHOIDECA;3VAR SiSTRING) $
VAR Si SSTRINGC1II3
CONT $STRING;
BEGIN
Slits’ ¢
CONT? =’
REPEAT
IF LENGTH(CONT)=0 THEN S1011%=PRENCAR( BONSET+CCRI)
ELSE IF LENGTH(CONT)=LONGMAX THEN S10113=FRENCAR(CCR,EBS1)
ELSE S1C1]3=PRENCAR(BONSET+CCR,ES1)$
IF $101] IN BONSET THEN CONT?=CONCAT(CONT,S1)
ELSE IF S1C1]=6S THEN
BEGIN
WRITE(ES,’ ’,BS)}
DELETE (CONT,LENGTH(CONT),1)
END}
UNTIL S101]=CR3
TIF LENGTH(CONT)<20 THEN S3=CONT
$
"3
Pom's No 3 25
ELSE WRITE(S)
END}
FROCEDURE ENTIER(LONGMAXSINTEGER$VAR SS INTEGER) $
VAR S1 SSTRINGC143
I SINTEGER}
CONT {STRING}
OKSET $CHOIDECA$;
BEGIN
OKSET?=0/0/../°9/T3S12=" “$CONTI=" 73
REPEAT
IF LENGTH(CONT)=0 THEN S10113=FRENCAR(OKSET+CCRI)
ELSE IF LENGTH(CONT)=LONGMAX THEN $1011$=FRENCAR(CCR,ES1)
ELSE S101]3=PRENCAR(OKSET+CCR,EBSI) }
IF S$1£11 IN OKSET THEN CONT?=CONCAT(CONT,S1)
ELSE IF S1f1 S THEN
BEGIN
WRITE(ES,’ ’,ES)3
DELETE (CONT,LENGTH(CONT) ,1)
END};
UNTIL S$1011=CR}
IF LENGTH(CONT)<>0 THEN
BEGIN
$3=03
FOR Ii=1 TO LENGTH(CONT) DO
BEGIN
$3=Sx103S%=S+(ORD(CONTECII)-ORD('0’))
END} .
END ELSE WRITE(S)
END}
PROCEDURE TRAIT}
VAR T SINTEGER}
BEGIN
REWRITE (FAPIER, “PRINTERS /)$
FOR Ii=1 TO 79 DO WRITE(PAFIER, ’=’)3
WRITELN(FAPIER)
END $
PROCEDURE TRAITFIN;
VAR IS INTEGER}
BEGIN
WRITELN(FAFIER) }
FOR It=1 TO 79 DO WRITECFAFPIER, ‘=’ )3
FOR Is=1 TO 6 DO WRITELN(FAFIER) $
CLOSE (PAPIER) } IMP 3=FALSE
END}
FROCEDURE CONTINU;
BEGIN .
MESSAGE(22,’FPOUR CONTINUER TAPEZ <RETURN> ’)3
FRENRETURN$
NUMLIGNE $=63
GOTOXY (0,5) $WRITE(EFB)
END}
Ok Ex)
(x FROCEDURES GENERALES SFECIFIQUES DE MASTER CATALOGUE x)
OEx )
PROCEDURE ZEROELEM(VAR Li ELEMENT);
BEGIN
WITH L DO
Pom's No 3
BEGIN
GENRECII$=/273 GENREC2]3 $
NOMFILE t=/°3 NOMDISK %=’'3 NUMBOITE 3 =03
WITH DATEFILE DO
BEGIN
MOIS3=13 JOURS =13AN=1
END
END
END}
PROCEDURE DECODATE(DT:DATE$VAR STDATES STRING) 3
VAR ST {STRING}
PROCEDURE FAITSTRING(ISINTEGER}VAR SiSTRING) 3
BEGIN
gels
STR(I,S)$
IF LENGTH(S)=1 THEN St=CONCAT(‘0’,S)
END}
BEGIN
STDATES=/73STt=/ "3
WITH DT DO
BEGIN
FAITSTRING (JOUR, ST) 3
STDATE$=CONCAT(STDATE,ST,’/7)$
FAITSTRING(MOIS,ST) 3
STDATE$=CONCAT(STDATE,ST,’/’)3
FAITSTRING(AN,ST)}
STDATE$=CONCAT(STDATE,ST)
END
END;
PROCEDURE AFFICHE (INDEX? INTEGER3 VAR ELMS ELEMENT) $
VAR S tSTRING}
BEGIN
IF NUMLIGNE=21 THEN CONTINU}
GOTOXY (0,NUMLIGNE ) $
WITH ELM DO
BEGIN
WRITE (INDEX? 4,GENREC11!$2,GENREC21],NOMFILE?16,NOMDISK!8,NUMEOITE: 4) $
DECODATE (DATEFILE,S) ;WRITE(S39)
END;
NUML.IGNE $ =NUMLIGNE+1
END}
PROCEDURE IMPRIME(INDEX?INTEGER$VAR ELMS ELEMENT) $3
VAR S tSTRING}
BEGIN
WITH ELM DO
BEGIN
WRITE (PFAFIER, INDEX? 4,GENREC1132,GENREC21,NOMFILE$16,NOMDISK38,NUMBOITE? 4) 3
DECODATE (DATEFILE,S) ;WRITELN(PAFIER, S29)
END
END};
PROCEDURE RAFFEL}$
BEGIN
GOTOXY (0,3) $WRITE(EFB) 3
MESSAGE (10,’LE CATALOGUE A ETE FLACE DANS LE #53/')3
WRITE CINV,SON) $
MESSAGE (12,’REMETTRE LE DISQUE SYSTEME DANS #43/)3
Pom's No 3 27
28
WRITE (NORM) 3
MESSAGE (14,’FAITES RETURN? ’) $F RENRETURN
END}
PROCEDURE TITRE}
VAR StSTRING}
BEGIN
t=’ ENR GT NOM DISQUE BT DATE’$
IF IMF THEN WRITELN(FAFIER,S) ELSE MESSAGE(4,S)
END}
OK Ex)
(xX PROCEDURES FROPRES AU PROGRAMME CATALOGUE x)
OxEX )
OOOO OOOO OOOO OOOO OK OKO COK KK )
(x* QOUVER TURE *)
(x OUVRE LE CATALOGUE OU LE CRE& JINON x)
GOO OOOO OOOO OOOO KOK OK KK KOK)
FROCEDURE OUVERTURE$
VAR EON sBOOLEAN$
BEGIN
REPEAT
BON? =FALSE}$
(K$I~* )
RESET (GARDE, ‘CARNET!DONNEES’ )3
IF IORESULT=0 THEN
BEGIN
NUMCAT?=GARDE*»NUMBOILTE 3
BON?=TRUE
END ELSE
BEGIN
REWRITE (GARDE, “CARNET 3 DONNEES’ ) 3
ZEROELEM(GARDE*) $
GARDE’ .NUMBOITE $=1 $NUMCAT3=13
PUT (GARDE) $
CLOSE (GARDE ,LOCK) 3
RESET (GARDE, ‘CARNETDONNEES“ ) $
BON? =(IORESULT=0)
END}
IF NOT(CEON) THEN ALARME( ‘PLACER ‘’CARNET’’ DANS LE #537)
UNTIL EON
CxS T+ )
END}
OOOO OOOO OOO OOO OOO OOOO KK KKK)
(xX REMPLIR *)
Ox TRANSFERE LE REFERTOIRE DANS LE CATALOGUE x)
OOOO OOOO OO OOOO COOK KK 1COCCCKCKOK KKK)
PROCEDURE REMFPLIR}
FROCEDURE ENTETE$
3IN
L3=LENGTH(REPERTOIRE. VOL «NOMDISQUE) $
IF L>0 THEN
BEGIN
LM. NOMDISK$=REPERTOIRE «VOL »NOMDISQUE}
MESSAGE(7, ‘NOM DU DISQUE 3 7) SWRITE(LM.«NOMDISK) }
Lt=03
Pom's No 3
MESSAGE(8,’NUMERO DE LA BOITE ? ’)$ENTIER(4,LM.NUMBOLTE) $
END
END}
FROCEDURE FILES}
VAR TEMF SELEMENT}3
PROCEDURE ENREGISTRE(L3ELEMENT) $
BEGIN
(x$I-x)
SEEK (GARDE ,NUMCAT ) 3
GARDE“? =L $
PUT (GARDE ) $
NUMCAT $=NUMCAT+13
IF IORESULT THEN
BEGIN
ALARME (’ERREUR A LA COFIE..+’)3
EXIT(FILES)
END
(x$I+x)
END}
BEGIN
IF REPERTOIRE.VOL.NERFICHE>0 THEN
BEGIN
FOR Ii=1 TO REPERTOIRE.VOL.NERFICHE DO
BEGIN
TEMP 3=LM}
WITH REFERTOIRE.CATALOGELII DO
BEGIN
GOTOXY (0,9) ;WRITECEFE) $
MESSAGE (12,’INCLURE LE FICHIER ’)$WRITE(NOMFICHIER,’ (O/N) ? /)3
IF OUI THEN
BEGIN
TEMF.NOMFILE %=NOMFICHIER}
TEMP .DATEFILE $=DATEFICHIER}
MESSAGE (13, “TYPE CAseY) ? 703
MESSAGE (16, ‘GENRE CAaeY) 2? 4)3
ENREGISTRE (TEMP)
END
END}
END
END ELSE ALARME(’FPAS DE FICHIER !’)
END}
RENCAR(E‘A‘..°Y41)3
RENCAR(DL ‘A’. .°Y7I)3
TEMF.GENREC11:
TEMF.GENREC2]
SEGIN(X REMFPLIR x)
IF LIREREF (4) THEN
BEGIN
ZEROELEM(LM) $
ENTETE$
FILES}
CLOSE (GARDE ,LOCK) ;RESET(GARDE, “CARNET?DONNEES’ )
END ELSE ALARME(’ERREUR LECTEUR 1.’)
IND}
*"ROCEDURE ENREGISTRE}
3EGIN
QUIT 3=FALSE}$
WHILE NOT QUIT DO
Pom's No 3 29
BEGIN
GOTOXY (0,2) $WRITE(EFE) 3
MESSAGE (3, ‘PLACER LA DISQUETTE A INCLURE DANS’) 3
MESSAGE (4,’LE CATALOGUE DANS LE LECTEUR 1 (#4%)')3
MESSAGE (46,’QUAND TOUT EST FRET, FAITES =RETURN>’ ) $}PRENRETURN}
GOTOXY (0,5) ;WRITECEFE) 3
REMPLIR}
MESSAGE (22,’CONTINUER ? (O/N) 7)3
QUIT3=NOT OUT
END
END}
COO OOOO OOOO OOK CCK OK KK)
(KLIRE & TRI *)
(x PROCEDURES A AMEL.IORER *)
OOOO OOOO OOOO OOK IOI KOK KKK KOK KOK KD,
FROCEDURE TRI}
VAR I SINTEGER}
BEGIN
GOTOXY (0,3); WRITE CEFE) §
MESSAGE (3, ’ EDITION DU CATALOGUE GENERAL’) 3
IF IMF THEN
BEGIN
MESSAGE (10,7 **XXXX SUR LL’ OIMPRIMANTE XXxxx’) 3
WRITELN(FAPIER, “EDITION DU CATALOGUE GENERAL‘ 255) ;WRITELN(PAFPIER)
END}
TITRE}
FOR Ii#1 TO NUMCAT~1 DO
BEGIN
GET (GARDE ) $
IF IMP THEN IMPRIME(I,GARDE*) ELSE AFFICHE(I,GARDE*)
END}
MESSAGE (22,’C’’EST TERMINE, TAPEZ <RETURN® /) }PRENRETURN
END}
PROCEDURE LIRE$
VAR CHOIX CHAR}
BEGIN
QUIT? =FALSE}$
GOTOXY (0,2) $WRITECEFE) $
MESSAGE(3,’LE CATALOGUE DOIT ETRE DANS LE DRIVE 2’)3
WHILE NOT QUIT DO
BEGIN
GOTOXY (0,4) $WRITE(EFE) } NUMLIGNE?=63
MESSAGE (4, EDITION COMPLETE’ )3
MESSAGE (6, ’VOULEZ~VOUS IMPRIMER ? ’) 3 IMF? =OUT}
IF IMF THEN TRAIT3
SEEK(GARDE,1)3
TRI}
IF IMF THEN TRAITFIN}
MESSAGE (22,’UNE AUTRE RECHERCHE (O/N) ? ’)$QUIT$=NOT OUT
END
END}
OkAEX )
OOOO OOOO OOOO KKK CKO)
(kK MODITIFITIE x)
(x MISE A JOUR D’UN NUMERO DU CATALOGUEx)
OO OOOOOIOOIOIOIOOIO OOK KKK KCK KKK KD
30 Pom's No 3
PROCEDURE MODIFIE}3
VAR N TINTEGER}
CH {CHAR}
BEGIN
GOTOXY (0,4) ;WRITECEFE) 3N3=03
REPEAT
MESSAGE (4,’NUMERO DU CATALOGUE A MODIFIER?’ )}$
ENTIER(4,N)$
UNTIL (N= NUMCAT) 3
IF N=0 THEN EXIT(MODIFIE)3
SEEK (GARDE ,N) $GET (GARDE) 3LM3=GARDE $
NUMLIGNE $=63 TITRE $AFFICHE(N,LM) }
MESSAGE (8,’MODIFIEZ OU “<RETURN=/) $
MESSAGE (9,’TYPE $’)$CHi=PRENCAR(L ‘A’ ++ ’Y’,CRI)$
IF(CH2>CR) THEN LM.GENREC113=CH
ELSE BEGIN GOTOXY(7,9) $WRITE(LM.GENREC1I) END}
MESSAGE (10, ‘GENRE!’ ) $CH3=FRENCAR(ED‘A’..’Y’,CRID3
IF (CH2>CR) THEN LM.GENREC213=CH
ELSE BEGIN GOTOXY(7,10) ;WRITE(LM.GENREC2]) END}
MESSAGE (11,’NOM DU FICHIER 33
Cx$V—% )
PRENCHAINE (15, (0°A%.+4°Z’ 5/0/46"
MESSAGE(12,’NOM DU DISQUE :
PRENCHAINE(7,(0/A%e44Z' 4/0/0479
CKSU4K)
MESSAGE (13,’NUMERO DE LA BOITE?’)}$
ENTIER(4,LM.NUMBOITE ) $
GARDE“? =} SEEK (GARDE ,N) }FUT (GARDE) 3
CLOSE (GARDE,LOCK) ;RESET (GARDE, ‘CARNET3DONNEES” ) $
END}
COO OOOOOOOOOOOOOOOX PROGRAMME FRIOINCT FAL 300000 KK )
BEGIN
47677) LM «NOMFILE)
3
;
'
+77),LM+NOMDISK) 3
PRINFO$
OQUVERTURE $
REPEAT
PAGE (OUTPUT) ;WRITE CINY)
MESSAGE (0, ’ xxx SUPER CATALOGUE *xx’)3
WRITE (NORM) $
MESSAGE (5S, ’ “YSWRITEC’IL Y A =’,NUMCAT~1,’> TITRES DISPONIBLES. ’)3
MESSAGE (22, ’E(NREGISTRER, L(IRE, MCODIFIER, FCIN ‘)$
COMS=FRENCAR(C/E’,/L4,°M’, SF 4ID$
CASE COM OF
“E’ SENREGISTRE}
‘LSLIRE$
‘M’ SMODIFIE
END}
UNTIL. COM=’F 3
SEEK (GARDE, 0) }GARDE*. NUMBOITE $ =NUMCAT $ FUT (GARDE) $
CLOSE (GARDE ,LOCK) 3
RAPFEL
END.
Pom's No 3 31
Notions de base
Gérard Michel
Depuis la parution du premier numéro de POM'S, de nombreux lecteurs ont pris
contact avec la rédaction pour exprimer leur embarras face au décalage (provisoire
.) existant parfois entre le niveau de leurs connaissances et celui de certains
articles publiés dans la revue. Fort logiquement, ils ont aussi formulé un souhait
trouver dans POM'S quelques informations de base susceptibles de les guider dans
1'exploration de leur APPLE et de faciliter l'exploitation des articles
"techniques".
Cette revendication est légitime ! S'étant donné pour objectif d'informer, si
possible, TOUS les utilisateurs d'APPLE, votre revue ne pouvait y rester
insensible. Aussi tenterons nous désormais d'assurer une rubrique destinée a
répondre aux questions fondamentales posées par les lecteurs dans cette optique.
Nous prions simplement les "experts" de bien vouloir sauter allégrement ces
quelques lignes, témoignages d'une époque pour eux révolue
Pour ce coup d'essai, nous traiterons des problémes touchant A la saisie des
programmes en langage-machine et A la manipulation des fichiers correspondants.
Vous avez été nombreux, en effet, A regretter de ne pouvoir utiliser les
programmes de ce type listés dans la revue, faute de pouvoir les rentrer en
machine. Pour clarifier la suite de l'exposé, il peut étre utile de rappeler ici
quelques notions (trés élémentaires) concernant le systéme numérique 4 base 16 (le
fameux HEXAdécimal !).
fr fait, il nous suffit de savoir que
1) Il comporte 16 'chiffres' : 0,1,..9,A(10),B(11),C(12),D(13), B( 14), F(15).
2) WXYZ en Hexa est égal a : (W*4096)+(X*256)+(Y*16)+Z en Décimal (exemple :
927C en Hexa égale 37500 en Décimal).
3) A l'inverse, 37500 en Décimal vaut en Hexa :
- INT(37500/4096) = 9
« INT(( 37500 - (9*4096))/256) = 2
- INT(( 37500 - (9*4096) - (2*256))/16) = 7
37500 - (9*4096) - (2*256) - (7*16) = 12, soit C
4) Par convention, les nombres HEXA sont précédés d'un "$".
1. Saisie d'un programme en langage-machine (codes hexadécimaux).
Prenons l'exemple du petit programme présenté par J.-L. Meillaud. La marche a
suivre se décompose ainsi
a) Sortir du BASIC pour rentrer dans le moniteur. Pour cela, tapez CALL-151
[Return]. Une "*" apparait, vous étes en mode moniteur. Attention, cet animal
étrange ne comprend que 1'Hexadécimal !
b) Pour saisir les instructions, la séquence est "Adresse (en HEXA, bien sar!)"
puis ":" puis "codes hexadécimaux des instructions". Vous taperez ainsi
1848: C9 81 FO 01 60 AD 00 CO [Return]
1850: 10 FB...
1860: AQ DF ......... 60 [Return]
32 Pom's No 3
VORDINATEUR PERSONNEL
DE M* LE DIRECTEUR DES VENTES.
Apple, c'est d'abord un nouveau concept. Celui
de la relation individuelle et directe entre homme et sa
machine. Un concept qui ouvre une troisiéme voie entre
rien du tout et l'informatique de millionnaire. Apple,
c'est un outil personnel aussi facile & utiliser qu'une voi-
ture, aussi léger et peu encombrant qu'une simple
machine a écrire et aussi peu cotteux qu'une photo-
copieuse. Un outil qui vous simplifie la vie en diminuant
la paperasse qui vous encombre, efficace et rapide
das qu'une décision s'impose.
Apple vous aide & répondre & des questions de
type “qu'arriverait-il si?”, traite vos problémes de ges-
tion |planification, prévisions, budget et met en forme et
imprime vos lettres et vos rapports. Apple est un outil
versatile qui fonctionne sur une vaste gamme de pro-
grammes que vous soyez avocat ou médecin, respon-
sable des ventes ou du marketing, comptable ou financier.
4
@erppice
L’ordinateur personnel
Intéressé, un peu sceptique ou dubitatif... Lorsque
votre revendeur Apple local aura résolu devant vous
quelques-uns de vos problémes, ou vous aura fait utiliser
vous-méme un programme de planification ou une
analyse sous forme de graphique couleur, vous aurez
compris l'intérét d'avoir & portée de la main la puissance
de l'ordinateur personnel.
Et vous commencerez 4 penser 4 votre Apple.
I Pour obtenir une information compléte sur les systtmes 1
| ordinateur Apple II et Apple III, veuillez s’il vous plait |
J fetourner ce coupon a : SEEDRIN SARL 1
J Avenue de l’Océanie, Z.1. de Courtabceuf, 91940 Les Ulis
| Nom ——__. swam fj
I Société I
1 Fonction : at
H Adresse i nA
| Téléphone __ I
EXNT
Si vous voulez lister votre programme, tapez
1848.1867 [Return] (de facon générale, adresse début.adresse fin).
ce) Pour retourner au BASIC, tapez 3D0G [Return]. Le "prompt" du BASIC réapparait.
2. Sauvegarde d'un programme sur disquette aprés retour au BASIC.
La syntaxe est alors la suivante :
- BSAVE NOM, A$X,L$Y ot X désigne l'adresse de départ du programme en HEXA, Y la
longueur du programme (nombre d'octets) exprimée en HEXA, et NOM tout simplement
le nom que vous désirez donner au programme.
. ou encore BSAVE NOM, AX, LY o& X et Y sont exprimés en décimal.
L'adresse de départ ne pose pas de probléme; seule la longueur réclame quelque
attention. Si vous ne voulez pas vous livrer aux joies de l'arithmétique
hexadécimale, le plus simple est encore de raisonner en décimal. Ainsi, dans notre
exemple (trivial)
- Adresse de départ : 1848 HEXA = 6216 en décimal
. Adresse de fin : 1867 HEXA = 6247 en décimal
. Longueur : 6247-6216+1=32 (vous pouvez aussi compter les octets ligne 4 ligne
---). Ntoubliez pas de rajouter un a la différence : c'est le fameux probléme des
intervalles entre les arbres...
. Sauvegarde : BSAVE NOM, A6216, L32
3. Chargement d'un programme & partir de la disquette.
Il vous suffit de taper BLOAD NOM. L'adresse de départ et la longueur ont été
mémorisées au moment de la sauvegarde. Si vous désirez les retrouver, tapez, aprés
le BLOAD :
- Pour l'adresse : PRINT PEEK( 43634) + 256 * PEEK(43635)
.- Pour la longueur : PRINT PEEK( 43616) + 256 * PEEK( 43617)
Les deux valeurs vous seront données en décimal.
De méme, BRUN NOM permet de charger le programme NOM en mémoire et de lancer son
exécution (comme le RUN du BASIC).
Une fois le programme chargé, si vous voulez vérifiez les codes hexadécimaux,
entrez dans le moniteur et tapez, comme ci-dessus, "adresse début.adresse fin"
(adresses hexadécimales toujours) .
Enfin, supposons que vous ayez sur disquette un programme NOM en langage-machine
(routine de nettoyage mémoire, routine de tri ...), commengant Aa l'adresse 37000
(en décimal), et que vous souhaitiez l'utiliser dans le cours d'un programme
BASIC. Les choses pourraient se présenter ainsi
10 D$=CHR$(4)
20 HIMEM: 36500 (pour protéger la routine en langage-machine)
30 PRINT D$"BLOAD NOM, S6, D1"
1000 CALL 37000 (exécution de la routine en langage-machine)
Suite du programme BASIC
34 Pom's No 3
Conversion Pascal/BASIC/Pascal
Gilles Mauffrey
1. Principes généraux.
Tl était utile de pouvoir regrouper sur une méme disquette pour les lecteurs de
Pom's des programmes d'origines diverses : Pascal ou BASIC. Le programme présenté
ici répond A cet objectif. Avant de décrire briévement le programme, nous allons
mettre en évidence les principales différences entre le DOS 3.3 et le Pascal
Operating System (P.0.S.).
Tout d'abord le DOS raisonne en piste et secteur, tandis que le POS ne connait
théoriquement que les blocs de 512 octets. Un bloc correspond en fait a deux
secteurs consécutifs. De plus la sectorisation soft des pistes est différente
(voir "Beneath Apple DOS"):
- pour le DOS 3.3, les secteurs sont numérotés 0, 13, 11, 9, 7, 5, 3, 1, 14, 12,
10, 8, 6, 4, 2, 15.
- pour le POS, la numérotation est 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11,
13% 156
Toutefois, le DOS 3.3 permet de lire une disquette Pascal, puisque la table de
sectorisation se trouve aux adresses $BFB8 et suivantes.
L'implantation des "directorys" est également différente. Sur une disquette
Pascal, le directory commence au bloc 2 et se termine au bloc 6; chaque
enregistrement (fichier ou en-téte) occupant 26 octets. Pour le DOS 3.3 le
directory débute en piste 17 secteur 0, chaque fichier occupant 35 octets.
Une autre différence fondamentale concerne l'implémentation des fichiers eux-
mémes. Eh DOS 3.3, ies fichiers ne sont pas nécessairement sur des secteurs
consécutifs, tandis que le POS écrit les fichiers sur des blocs consécutifs, ce
qui simplifie beaucoup la lecture de ces fichiers en assembleur.
2. Description des enregistrements "fichier" du directory Pascal.
Comme il a été dit plus haut, chaque enregistrement du directory comprend 26
octets; nous ne décrirons ici que les enregistrements concernant les fichiers.
Traduisant la description de M. Crimont (Pom's 2), nous obtenons:
- Bloc de début de fichier : 2 octets (exemple bloc 6 : 06 00)
- Bloc de "fin" de fichier : 2 octets (en fait c'est le bloc de début du fichier
suivant)
- Type du fichier : 2 octets
- Nom du fichier :16 octets (1 octet pour la longueur du nom et 15 octets pour le
nom)
- Nombre d'octets inutilisés dans le dernier bloc: 2 octets (toujours 00 02 car ce
bloc est le début du fichier suivant)
- Date de création du fichier : 3 octets (1 octet pour la longueur 02 et 2 octets
pour la date elle-méme 01 02)
année , jour jmois
‘iy 7 bits’ pour l'année, 5 pour le jour et 4 pour le mois
SL
02 01
Pom's No 3 35
3. Déroulement du programme.
Pour simplifier l'écriture du fichier sur la disquette BASIC, nous avons utilisé
la commande BSAVE du DOS. Ceci a pour inconvénient de limiter la longueur des
fichiers transportables par ce programme; cependant ceci ne s'est pas avéré génant
pour l'utilisation que nous en avons faite.
Aprés avoir demandé le nom du fichier Pascal a4 transférer et le nom du fichier
"BASIC" transféré, le programme vérifie l'existence du fichier sur la disquette
Pascal; en cas de fichier inexistant, le programme s'arréte. Une fois trouvé, le
fichier est chargé en mémoire a partir de l'adresse $2000, puis chargé sur la
disquette "BASIC".
Quatre sous-programmes sont utilisés :
- Le sous-programme PRERWT est appelé avant chaque appel a RWTS, pour initialiser
la table.
- Le sous-programme TABPS charge la sectorisation Pascal.
- Le sous-programme TABDO charge la sectorisation DOS.
- Le sous-programme CALPSE transforme le numéro de bloc en numéros de piste et de
secteur.
Nous n'analyserons pas ici le programme permettant de transférer le fichier
"BASIC" sur une disquette Pascal dans la mesure ot la démarche suivie est
pratiquement la méme. Les lecteurs courageux pourront cependant l'amélorier en
permettant d'introduire la date, puisque ce programme prend la date du dernier
fichier existant sur la disquette Pascal, ce qui peut poser des problémes en cas
de diquette vierge.
SOURCE FILE: FASCEAS
coeoe NEXT OBJECT FILE NAME IS FASCEAS.OBJ0
09003 1 ORG $900
FDSE3 2 CROUT EQU $FD8E x RETURN?
FDED? 3 COUT EQU $FDED x ECRITURE ECRAN
FD353 4 RDCHAR EQU $FD35 x LECTURE CLAVIER
FC9C3 S CLREOL EQU $FC9C
FCS83 6 HOME EQU) $FC58
O3F 23 7 RESET EQU $3F2
09003 8 x
09003 9 * PARAMETRES FOUR RWTS
09003 10 x
0000: 11 DSECT
00003 12 RFLIOB DS 1
0001: 13 RPLSLT DS 1
00023 14 RFLDRV DS 1
00033 15 RFLVOL DS 1
0004: 16 RFLTRK DS 1
00053 17 RFLSEC DS 1
00063 18 RFLDCT DS 2
00083 19 RFLBUF DS 2
OOOAS 20 RFLSIZ DS 2
OO00C: 21 RFLCMD DS 1
0001: 22 READ EQU $01
00023 23 WRIT EQU $02
000d: 24 RFLCRD DS 1
OOOE: 25 RFLTVL DS a
OOOF: 26 RFLFSL DS 1
00103 27 RFLFDR DS 1
09003 28 DEND
09003 29 x
09003 30 * UTILISATION DE LA FAGE ZERO
36 Pom's No 3
09003
o000:
0002:
00033
0004:
00053
00073
00083
00483
09003
09003
09003
20003
ISE3%
D3D9%
BF ES?
900%
09003
09003
0900320
I9032A9
1905385
WO72AZ
19 093BD
\9OCIC9
IPOESFO
1910%20
I13tEB
19143D0
W1SIAZ
1918320
IDABIC?
I91D3D0
PIF SEO
IO2Z13F0
1923320
I9Z63CA
I92734C
IPZAICP
92C3F0
\9ZEICP
930390
932329
934349
93639D
93949
93B320
93EE8
93FSE0
9413D0
94324
P4AbIBA
94738D
94A320
940320
9S03AZ
9S23BD
FC
oc
FD
FD
FD
09
oc
FD
OB
oc
FC
FD
oc
32
33
34
36
37
38
39
40
41
42
43
44
45
46
PTR EQu $0
FISTE EQU $2
SECTEUR EQU $3
CMD EQU $4
DRIVE EQU) $5
HEUF EQU $7
TEMF EQU $8
PREG EQU $48
x
x AUTRES ADRESSES
x
BUFFER EQU 2000
LOCPFRL EQU $3E3
RWTS EQU $3D9
SECDES EQU $BFE8
x
* DEBUT PROGRAMME
x
CONVER JSR HOME
LDA #<BUFFER
STA HEUF
LDX #00
ECRI LDA MESS,X
CMF #3
BEQ ENTREE
JSR COUT
INX
BNE ECRI
ENTREE LDX #0
MAJF JSR RDCHAR
CMF «#488
ENE INEUF
CPX #00
BEQ MAJF
JSR COUT
DEX
JMP MAJF
INBUF CMF =#$8D
BEQ FINF
CMF #¥$E0
BCC ADDBUF
AND #$DF
ADDEUF EOR #$80
STA FICH,X
EOR #$80
JSR COUT
INX
CPX #15
BENE MAJF
IMP ERRL
FINE TXA
STA LFIC
JSR CLREOL.
JSR CROUT
LDX #0
SUIDO LDA MEDO,X
* FOINTEUR GENERAL
x A REMETTRE A 0 AFRES RWTS
*xCHERCHE
XDEFINITION "SOFT"
L’ADRESSE DE LA TABLE FOUR RW
DES SECTEURS DOS 3.
09S5S3C9
09S73F0
0959320
0O9SCIE8
09SD24C
09602 AZ
0962320
0965209
09473D0
OF S93 E0
09 SBI FO
096D220
0970°CA
097124C
09743C9
09763F0
09783C9
097AI 90
0970329
097E3 9D
0981320
09843E8
098530
09872D0
098934C
09 8C38A
098D38D
0990320
0993220
09963 AZ
09 982ED
O99BICD
O99DIFO
O99F 320
IF AZIES
09A324C
09A6320
OPAPZAD
OF ABI 20
OP AE SCO
09E03D0
O9EZ3
Pom's No 3
BE
07
ED
52
00
35
88
OE
00
FS
ED
62
8D
14
EO
02
DF
00
ED
1E
D9?
73
1F
9C
8E
00
59
BE
07
ED
98
8E
00
35
8D
F7
FD
09
FD
FD
09
aod
FC
FD
oc
FD
09
FD
FD
89
90
91
92
93
94
95
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
SADO
ENDOS
ACDOS
ADDOF
FINDO
ECRMO
FINDE
FINZ
CMF
BEQ
JSR
INX
JMP
L.DX
JSR
CMF
ENE
CPX
BEQ
JSR
DEX
JMP
CMF
BEQ
CMF
ECC
AND
STA
JSR
INX
CPX
ENE
MP
TXA
STA
JSR
JSR
LDX
LDA
CMF
BEQ
JSR
INX
JMF
JSR
LDA
JSR
CMF
ENE
as
SADO
COUT
SUIDO
#0
RDCHAR
#388
ACDOS
#50
ENDOS
COUT
ENDOS
#$8D
FINDO
¥$E0
ADDOF
¥$DF
FIDO,X
COUT
#30
ENDOS
ERR1
LFID
CLREOL
CROUT
#0
MODEMP ,X
#3
FINDE
COUT
ECRMO
CROUT
#0
RDCHAR
#$8D
FIN2Z
37
OFEZ:
O9B23
O9EZ3AZ
OPB43ED
09B739D
OPBASES
OFEETE0
O9ED3D0
OO EF 3
OFEFS
OFEFS
OOF 320
O9C22A9
0904385
O9CS2A9
09C8285
O9CALAP
09CC385
O9CEZAP
09D0385
09D2:20
09DS3
09DS3
O9DSs
09DS320
09D8220
OODELAD
O9DD285
O9DF SAD
OVEZI0A
09E3%8S
OFESIES
O9E7IAS
OFE9IC9
O9EBSDO
OPED AD
O9EF?8S
OOF ISES
OOF 32ES6
OOFSSAP
O9F7385
O9F 9320
O9FC320
O9FF3 20
OA0ZIA9
0A04285
OA063CS
OA0B2AS
OADASDO
OAOCIAP
OADES85
OAL02A9
0A12385
OAL43AE
OA1L728A
0A18218
QDAL9IAS
OALBI 49
0A1D385
38
00
B8
35
10
FS
cs
00
02
04
03
o1
05
o1
04
oA
BF
oD
0B
OE
03
03
20
03
03
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
1546
157
158
159
160
161
162
1463
164
165
146
167
168
149
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
* SAUVEGARDE
x
LOOF
x
LDX
LDA
STA
INX
CPX
BNE
* RECHERCHE
x
x
* TRAITEMENT
x
LOOFL
FLEU
JSR
LDA
STA
L.DA
STA
LDA
STA
LDA
STA
JSR
JSK
JSR
LDA
STA
LDA
ASL
STA
INC
LDA
CMF
BNE
LDA
STA
INC
INC
LDA
STA
JSR
JSR
JSR
LDA
STA
DEC
LDA
BNE
LDA
STA
LDA
STA
L.DX
TXA
CLC
LDA
ADC
STA
DE LA TABLE DOS
#0
SECDES,X
DOSTAE,X
#16
LOOF
DES FOINTEURS FASCAL
TABFS
#0
PISTE
#4
SECTEUR
#1
DRIVE
#READ
CMD
PRERWT
DU CATALOG FASCAL.
LOCFRL Ao 00 190 LEZ
RWTS 18 191
¥0 a9 1a 192
PREG 65 06 193
BUFFER+2 85 06 194
A 90 02 195
TEMP ES 07 196
SECTEUR B1 06 197 CNF
SECTEUR CD FF 0C 198
#610 Do 13 199
PLBU AD FF 0C 200
+0 85 00 201
SECTEUR ce 202 LFS
PISTE Bi 06 203
HEUF D9 EF 0C 204
#READ DO 06 205
CMD cé 00 206
PRERWT Fo 1 207
LOCFRL DO F2 208
RWTS cA 209 FASTR
#0 DO DS 210
PREG 20 BE FD 211
TEMP Az 00 212
TEMF BD C5 0C 213 ECFA
LOOF. Cc? BE 214
#< BUFFER Fo 0A 215
HBUF 20 ED FD 216
#2BUF FER E8 217
HEUF~1 4c 4E 0A 218
BUFFER+$10 | 20 D3 OB 219
6C F203 220 FINI
38 221 TROUVE
HEUF~1 AS 06 222
#06 E9 06 223
HEUF ~1 85 06 224
Pom's No 3
#0
#26
HBUF~1
HBUF ~1
CNF
HEUF
CHBUF 1) ,)
LFIC
FASTR
LFIC
PTR
CHBUF 1),
FICH-1,Y
FASTR
FTR
TROUVE
LFS
LEZ
CROUT
#0
PASFI,X
#S
FINL
COUT
ECPA
TAEDO
(RESET)
HBUF~4
#6
HBUF~1
OAS9IE0 02 225 BCS ADRI
OASEICS 07 226 DEC HEUF
OASD?IA0 00 227 ADR1I LDY #0
OAGFIB1 06 228 LDA ‘HEUF~1),Y
0A7138D 21 0D 229 STA DEFFA
0A743C8 230 INY
OA7S2B1 06 231 LDA (HEUF~1),Y
0A7738D 22 0D 232 STA DEFFA+1
OA7AICE 233 INY
QA7EIB1 06 234 LDA (HEUF~1),Y
OA7D38D 23 0D 235 STA FIFFA
0A80:C8 236 INY
OAB1IIB1 06 237 LDA (HBUF-1),Y
0A8338D 24 0D 238 STA FIFFA+L
0A863 239 x
0ABéd: 240 * LES FOINTEURS DE DEBUT ET FIN DE FICHIERS SONT CONSERVES
0A863 24al x
0486218 242 cLe
OAB7IAS 06 243 LDA HBUF~1
0A893469 16 244 ADC #22
OASE?8S 06 245 STA HEUF-1
0ABD290 02 246 BCC REST
OASFIES 07 247 INC HEUF
OA913A0 00 248 REST LDY #0
OASSIE1 06 249 LDA (CHEUF-1),Y
0A9S38D 45 0D 250 STA RESFA
0A983C8 251 INY
OA99IB1 06 252 LDA (HBUF~-1),Y
OASB?8D 46 0D 253 STA RESFA+1
OA9E 254 x
OA9ES 255 * CALCUL DES SECTEURS ET FISTES
OASES 256 x
OASESAZ 00 257 LDX #0
OAA0?20 El OB 258 JSR CALPSE
QDAASIAZ 02 259 LDX #2
0OAAS?20 E1 OB 260 JSR CALFSE
0AA8 338 261 SEC
QAAMTAD 23 0D 262 LDA FIFFA
OAACTED 46 0D 263 SBC RESFA+1
QAAF{8D 23 0D 264 STA FIFFA
OAE:Z$B0 OB 265 BCS FLULO
OAB4:CE 24 0D 266 DEC FIFFA+1
OAB7%A9 OF 267 LDA #$0F
OAB922D 23 0D 268 AND FIFPFA
OAEC?8D 23 OD 249 STA FIFFA
OAEF 3 270 x
OAEFS 271 * ECRITURE DU PROGRAMME A FARTIR DE $2000
OAEF 3 272 x
OAEFZA9 20 273 FLULO LDA #<BUFFER
OACII85 07 274 STA HBUF
OAC3IAD 21 0D 275 LDA DEFFA
OAC6I85 03 276 STA SECTEUR
OACBIAD 22 OD 277 LDA DEFFA+1
OACBI85 02 278 STA FISTE
OACDIA9 O1 279 LOO3 LDA #READ
OACF?85 04 280 STA CMD
OAD1220 94 0B 281 JSR PRERWT
0AD4320 E3 03 282 JSR LOCFRL
0AD7?20 D9 03 283 JSR RWTS
DADASAP 00 284 LDA #0
Pom's No 3 39
OE632A9 C4 344 LDA #/D
vADC385 48 285 STA FREG ¢ 4 Y
DADESES 03 286 INC SECTEUR | 0B65320 ED FD 345 doe COUT
DAENTAS 03 287 LDA SECTEUR | [F48?A? B2 346 LDA #’2
OAEZzICe OF 288 CHE #40 0&4A:20 ED FD 347 JSR COUT
OAEdIDO 06 Sao ENE LABA 0640320 SE FD 348 JSR CROUT
OAESIAy 00 290 Loa #0 0B7036C F2 03 349 UMP (RESET)
0AES385 03 291 STA SECTEUR
DAEASES 02 292 INC PISTE 0873% 351 x
OAECEAS 02 293 LARA soLDA.stste— | 0873t 352 x SOUS ROUTINE ERREUR
QAEESCD 24 0D 294 CME FIFFA+1 | 0733 353 x
QAFiE90 OD 295 BCC FREFI1 | 0B73A2 00 354 ERRI LDX #0
DAFSIFO 02 296 EEO VERSEC | 0B75?20 8E FD 355 JSR CROUT
DAFSIE0 OF 297 BCS PREEAS | 0878120 BE FD 356 JSR CROUT
0AF72AS 03 298 VERSEC LDA SECTEUR | 0E7BiA9 87 357 LDA #987
OAFSICD 23 0D 299 CMe FIFRA | 0E7D320 ED FD 358 USR COUT
OAFCI90 02 300 ECC PREFT1 |0B801ED 44 0C 359 ERRC LDA ERMES,X
OAFESB0 06 3014 ECS FREEAS | 0E83:C9 BE 360 CMP OR’
OEO00TES 07 302 FREFI1 INC HEUF OBGStFO 07 361 BEQ FINER
0802390 C9 303 BCC L003 0287320 ED FD 362 JSR COUT
OE 04tE0 C7 304 ECS LOO3 OBSATES 363 ENX
0606:20 D3 0 305 FREEAS JSR TAEDO DESEI4C 80 0B 364 UMP ERRC
009120 SE FD 306 ‘isk crouT | 0E8Et20 8E FD 365 FINER JSR CROUT
OBOCtAz 00 307 Lox 40 0E91:6C FZ 03 366 UMP (RESET)
OBOE:ED 47 0D 308 Loos LDA BLO,X
OB113C9 BE 309 CMF O#’S 167) 368 %
DEL3iF0 07 310 REQ SUTL 0943 369 x PREPARATION DE RWTE
0B15:20 ED FD 311 JSR COUT 0B9 4% 370 x
te18iee 312 INX 0294320 £3 03 371 PRERWT JSR LOCPRL
E1924 OE OB 313 UMF -LOOS 0E:97 384 00 372 STY BTR
OB1ICtAZ 00 314 SUI1 LDX #0 0B99785 01 373 STA FTR+1
SIE: 2 OB9RIAS 02 374 LDA FISTE
teaiien te ge a £006 vee cag 0E9D3A0 04 375 LDY #RFLTRK
EZ 4768 317 NX ORSF391 00 376 STA (PTR) »Y
te2S1E0 4E Sis cRX #30 OBALIAS 03 377 LDA SECTEUR
0227290 FS 319 Ecc L006 OBASIA0 05 378 LDY #RPLSEC
MESetAd Ac 320 LDA 4’, OBAS391 00 379 STA (FTR),Y
0E2B:20 ED FD 321 JSR COUT 0EA73A0 08 380 LDY #RPLBUF
OEZELA? CI 322 LDA 4°A OBAIZA9 00 381 LDA #>BUFFEF
0630:20 ED FD 323 ish GOUT OBABS91 00 382 STA (PTR) +Y
0E332A9 A4 324 LDA #/$ OBADICE 383 INY
0E35:20 ED FD 325 JSK COUT akipinee 384 LDA HBUF
vB38tA9 20 326 LDA #<BUFFER $91 00 385 STA (PTR LY
OB3AIZ0 DA FD 327 JSR $FDDA As 04 386 EDA, CMD
OB3D3A9 00 - 328 LDA #>BUFFER ¢A0 OC 387 LDY #RFLCMD
0ESFI20 DA FD 329 JSR $FDDA | OBBSt91 00 388 STA (PTR) LY
haziae AC S50 LDA #43 OBES3A9 00 389 LDA #0
0644:20 ED FD 331 jee cour OREASAO 03 390 LDY #RPLVOL
OR472A9 CC 332 ipa 4'L 291 00 391 STA (FTR)+Y
0649320 ED FD 333 JSR COUT BESAS 0S 392 LDA DRIVE
CB4CIA9 A4 334 LpA 48 OBCOA0 02 393 LDY #RPLDRY
046220 ED FD 335 JSR COUT ORC2Z391 00 394 STA (FTR)+Y
0651238 336 SEC OEC4160 395 RTS
OES23AS 07 337 LDA
OBS43E9 20 338 SEC #<BUFFER'
0256320 DA FD 339 JSR $FDDA
OBS93A9 FF 340 LDA #$FF
0BSB:20 DA FD 341 USR $FDDA
OBSESA9 AC 342 LDA #’,
0240320 ED FD 343 JSR COUT
40 Pom's No 3
OBCS:
ORCS
OBCSIAZ
0EC7 SED
OBCAL9D
OBCDIES
OB CESE0
OEDO2DO
0OBDZ2360
OED3%
0OBD33
0OBD33
OED32AZ
OBDSIED
OBD83 9D
OBDESES
OEDCIEO
OE DEDO
OBE0?460
OBE1S
OBELS
OBE 43 Ag
OBE 67D
0BE9?9D
OBEC?90
$1E
OBF431E
OBF7390
OBFOSFE
OBFCSED
OBFF 329
0co1:18
0C02346A
0CO3%6A
0C04346A
0COSI6A
0006318
0C07%7D
OCOAL9D
OCODsBD
0C10:29
0C1239D
00153460
ocié:
0C163
0C163
00
25
B8
10
FS
00
35
B8
10
02
21
21
03
| 22
22
21
03
22
21
Fo
22
22
21
OF
21
oD
BF
i)
BF
oD
oD
oD
ne)
)
oD
oD
oD
oD
oD
oD
397 x
398 * MISE EN FLACE DE LA SECTORISATION FASCAL
399 TABFS
400 BL
401
402
403
404
405
407 x
LDX
LDA
STA
INX
CFX
BNE
RTS
#0
PASTAB,X
SECDES,X
#16
Bd
408 * MISE EN FLACE DE LA SECTORISATION DOS 3.3
409 *
410 TAEDO
411 B2
412
413
414
415
416
418 x
419 * CONVERSION
420 x
421 CALFSE
422
423
424
425
426
427
428 BOUCO
429
430
431
432 BOUCL
433
434
435
436
437
438
439
440
441
4az
443
444
445
447 xk
LDX
LDA
STA
INX
CPX
BNE
RTS
LDY
CLC
LDA
ADC
STA
BCC
INC
ASL
ASL
BCC
INC
LDA
AND
CLE
ROR
ROR
ROR
ROR
CLC
ADC
STA
LDA
AND
STA
RTS
#0
DOSTAEB,X
SECDES,X
#16
BZ
SECTEUR~BLOC
#0
#02
DEFPA,X
DEFFA,X
BOUCO
DEFPA+1,X
DEFFA+1,X
DEFF'A,X
BOUCL
DEFFA+1,X
DEFFA,X
¥$F0
DDPDD
DEFFA+1 ,X
DEFFA+1,X
DEFFA,X
¥$0F
DEFFA,X
448 x MESSAGES ET CONSTANTES
44D
Pom's No 3
M1
450 MESS ASC 'NOM DU FICHIER PASCAL : ;
451 MEDO ASC 'NOM DU FICHIER "NORMAL" ;
452 ERMES ASC 'NOM TROP LONG;
453 MODEMP ASC 'INSERER LA DISQUETTE PASCAL DANS LE DRIVE 1, La
DISQUETTE BASIC DANS LE DRIVE 2, PUIS APPUYER SUR "RETURN" ;
454 PASFI ASC 'CE FICHIER N EST PAS SUR CETTE DISQUETTE ;
455 FICH ASC '
456 LFIC DFB O
457 FIDO ASC !
458 LFID DFB O
459 NFPAS DFB 0
460 DEFPA DFB 0,0
461 FIFPA DFB 0,0
42
462 PASTAB DFB 0, 2,4, 6,8, 10, 12, 14, 1, 3,5, 7,9, 11, 13, 15
463 DOSTAB DFB 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0
464 RESPA DFB 0,0
465 BLO ASC 'BSAVE;
*900.D4D RECAP TULATION 0A30- OC DO 13 AD FF oc 85 00
ami 0A38~- C8 B1 06 D9 EF OC DO 06
0900- 20 58 FL AY 20 85 07 AZ 0A40~ CS 00 FO 1£ DO F2 CA DO
0908- 00 BD 14 0C C9 BE FO 04 0A48~ D6 20 BE FD AZ 00 BD CS
0910- 20 ED FD E8 DO F3 AZ 00 OASI~ OC C9 BE FO 0A 20 ED FD
0918- 20 35 FD C9 88 DO OE EO OAS8~ ES 4C 4E 0A 20 D3 OB 4c
0920- 00 FO FS 20 ED FD CA 4C 0AS0- F2 03 38 AS 06 EF 06 85
0928- 18 09 C9 8D FO 18 C9 ED 0AS8- 06 BO 02 CS 07 AD 00 B1
0930- 90 02 29 DF 49 80 9D FO 0A70~ 06 8D 21 0D C8 E1 04 8D
0938- 0C 49 80 20 ED FD E8 E0 0A78- 22 0D C8 B1 06 BD 23 OD
0940- OF DO DS 4C 73 OF 8A 8D 0AB0- C8 B1 06 BD 24 0D_18 AS
0948- FF 0C 20 9C Fe 20 8E FD OASB- 06 69 16 B5 06 90 02 ES
0950- A2 00 ED 2F 0C C9 BE FO 0A?0- 07 AD 00 B1 06 8D 45 oD
0958- 07 20 ED FD E8 4¢ 52 09 0A98~ C8 E1 06 BD 44 OD AZ 00
0940- AZ 00 20 35 FD C9 88 DD OAAO~ 20 E1 OB AZ 02 20 E1 OB
0948 OF EO 00 FO FS 20 ED FD 0AAB~ 38 AD 23 OD ED 46 OD 8D
0970 CA 4C 62 09 C9 BD FO 14 OABO- 23 0D BO 0B CE 24 0D Ag?
0978 C9 E0 90 02 29 DF 9D 00 OAES- OF 2D 23 0D 8D 23 OD Ag
0980- OD 20 ED FD ES EO iE DO OACO- 20 85 07 AD 21 OD 85 03
0988- D9 4C 73 OF 8A BD iF OD OAC8- AD 22 0D 85 02 AY O1 85
0990~- 20 9C FC 20 BE FD AZ 00 OADO- 04 20 94 0B 20 £3 03 20
0998- ED 59 0C C9 BE FO 07 20 OAD8- D9 03 AI 00 85 48 E46 03
09A0- ED FD E8 4C 98 09 20 BE 0AEO- AS 03 C9 OF DO 06 AD 00
09A8- FD AY 00 20 35 FD C9 8D QAES~ 85 03 ES 02 AS 02 CD 24
09E0- DO F7 AZ 00 BD B8 EF 9D OAFO- OD 90 OD FO 02 BO OF AS
09E8- 35 0D E8 E0 10 DO FS 20 OAFB~ 03 CD 23 OD 70 02 BO 06
09C0- CS OE A9 00 85 02 A9 04 0E00- ES 07 90 C9 BO C7 20 D3
09C8- 85 03 AI 01 85 05 AD O1 OBO8- OF 20 8E FD AZ 00 BD 47
09D0- 85 04 20 94 OF 20 E8 03 0B10- 0D C9 BE FO 07 20 ED FD
09D8- 20 D9 03 AP 00 85 48 AD OB18- E8 4C OE OF AZ 00 BD 00
0O9E0- 02 20 0A 85 08 ES 03 AS 0OB20- OD 20 ED FD E8 E0 1E 90
09E8- 03 CF 10 DO 04 A 00 85 OB28- FS A? AC 20 ED FD AQ C1
OOF0- 03 ES 02 ES 07 AD 01 85 OB30- 20 ED FD A? A4 20 ED FD
09F8- 04 20 94 0F 20 E3 03 20 0E38- AY 20 20 DA FD A9 00 20
0A00- D9 03 AP 00 BS 48 C4 08 0E40- DA FD AY AC 20 ED FD Ag
0A08- AS 08 DO D9 a9 20 85 07 0B48- CC 20 ED FD A? A4 20 ED
0A10- A? 00 85 06 AE 10 20 8A 0E50- FD 38 AS 07 E9 20 20 DA
0A18~- 18 AS 06 69 06 85 06 AD OBS8- FD A? FF 20 DA FD A9 AC
0A20- 00 18 A 1A 45 04 85 06 0£40- 20 ED FD A9 C4 20 ED FD
0A28- 90 02 ES 07 B1 06 CD FF 0ES8- AP BZ 20 ED FD 20 SE FD
Pom's No 3
A0 CC C1 AO C4 C9 D3 D1
DS CS D4 D4 CS AO DO C1
D3 C3 C1 CC AO C4 Ci CE
D3 A0 CC CS AO C4 D2 C9
Dé CS AO B1 AC AD CC C1
40 C4 C9 D3 D1 DS CS D4
D4 CS A0 C2 C1 -D3 C9 C3
40 C4 Ci CE D3 A0 CC C5
A0 C4 D2 C9 D6 CS AD B2
AC AO DO DS C9 D3 AD C1
DO DO DS D9 CS D2 AD DB
DS D2 AQ AZ D2 CS D4 DS
D2 CE AZ AO BE C3 CS Ad
Cé C9 C3 C8 CF CS D2 AD
CE A0 CS D3 D4 AD DO C1
D3 A0 D3 DS D2 AD C3 CS
D4 D4 CS AO C4 C9 D3 D1
DS CS D4 D4 CS AO BE AD
A0 AD AD AD AD AD AD AD
A0 A0 AD AD AD AD AD 00
Ad AD AD AD AD AD AD AD
AD AD AD AD AD AD AD AD
A0 AD AD AD AD AD AD AD
A0 AD AD AD AD AD AD 00
00 00 06 00 00 00 02 04
046 08 0A OC OE 01 03 05
07 09 OF OD OF 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00.00 84
C2 D3 C1 D6 CS BE
OB70- 6C FZ 03 AZ 00 20 BE FD
0B78- 20 8E FD A9 87 20 ED FD
OB80- BD 4A 0C C9 BE FO 07 20
OB88- ED FD E8 4C 80 0B 20 SE
OB90- FD 6C F2 03 20 £3 03 84
0OB98- 00 85 01 AS 02 AD 04 91
OBA0- 00 AS 03 AD 05 91 00 AD
OBA8- 08 AY 00 91 00 C8 AS 07
OBBO- 91 00 AS 04 AD OC 91 00
OBES8- AY 00 AD 03 91 00 AS 05
OBCO- AD 02 91 00 60 AZ 00 ED
OEC8- 25 0D 9D B8 BF EB EO 10
OEDO- DO FS 60 AZ 00 ED 35 0D
OBD8- 9D B8 BF E8 £0 10 DO FS
OBEO- 60 AD 00 18 AY O02 7D 21
OBE:8- 0D 9D 21 0D 90 03 FE 22
OBFO- OD 1£ 22 OD 1E 21 OD 90
OBF8- 03 FE 22 0D BD 21 0D 29
0COO- FO 18 6A 6A 6A 6A 18 7D
0cos- 22 0D 9D 22 0D BD 21 OD
0C10- 29 OF 9D 21 OD 60 CE CF
0C18- CD AD C4 DS AD C4 C9 C3
0C20- C8 C9 CS D2 AD DO C1 D3
0c28-:C3 Ci CC AO BA AO BE CE
0C30- CF CD A0 C4 DS AO C4 CP
0C38- C3 C8 C9 CS D2 AD AZ CE
0C40- CF D2 CD C1 CC AZ AD BA
0C48- AO BE CE CF CD A0 D4 D2
OCSO- CF DO AO CC CF CE C7 BE
0CS8- A0 C9 CE D3 CS D2 CS D2
Une informatique de gestion adaptée aux besoins des gestionnaires et ré
ETUDIE e opportunité d’ utilisation de l’outil micro-informatique
e intégration entre informatique traditionnelle et personnelle
e politique de la communication dans l’entreprise
FORME e formation a l'utilisation de la micro-informatique
REALISE e réalisation de programmes a la demande
LIVRE e livraison de systémes clés en main, avec des progiciels de
GESTION DE STOCK, PAYE, COMPTABILITE.
Nous sommes gestionnaires avant d’étre informaticiens. L’informatique doit s’adapter a l'homme, et non l’inverse.
L’outil micro-informatique répond particuliérement bien a ce souci de qualité et d’efficacité du travail,
dans des conditions conviviales.
Nombreuses références en informatique traditionnelle - divers matériels - et en informatique individuelle - principalement
Apple - auprés des PME et des groupes industriels.
\ log TAG «2. Centre La Chataigneraie - 29, avenue de Versailles - 78170 La-Celle-St-Cloud - Tal. : (3) oxsisor_ J
Pom's No 3. 43
Communication grace a l’Apple
Bruno Estrangin
1-Introduction
Nouveau venu A l'informatique, mais ancien radio-amateur, j'ai été trés vite tenté
par les possibilités de communication de 1'APPLE. Parmi des objectifs variés
accéder A des moyens informatiques supplémentaires, échanger des textes ou des
programmes, interroger des banques de données..., ce qui m'intéresse le plus
vivement est la perspective d'éviter toute reprise manuelle afin de profiter de
toute la souplesse de 1'informatique.
D'un point de vue non technique, communiquer avec un micro-ordinateur, c'est aussi
expérimenter de nouvelles relations sociales. Ainsi, avec une certane naiveté de
néophyte, j'ai entrepris de communiquer. C'est passionnant et ca marche ! J'espére
que les informaticiens spécialistes feront connaitre ce domaine avec autant de
moyens que pour le BASIC, le Pascal...
Je présente ci-dessous les réalisations suivantes :
échange de textes en environnement Pascal entre un APPLE et une machine
bureautique RANK XEROX 850 pleine page,
utilisation de la méme machine bureautique en tant que terminal, 1'APPLE servant
d'ordinateur,
accés a un réseau de temps partagé et au réseau MICRODIAL.
Je n'ai pas eu l'occasion de communiquer directement avec un autre APPLE, mais
cela ne présente a priori aucune difficulté (entre APPLE, il est plus facile de se
comprendre !).
2-Matériel utilisé
2-1 Coté APPLE
Apple II, 48K avec carte langage,
- deux drives (il est possible de n'en utiliser qu'un),
- carte de communication : APPLE II COMMUNICATIONS INTERFACE CARD [A2B0003X],
modem Anderson Jackobson AJ 311.
2-2 Coté bureautique
- Rank Xerox 850 pleine page,
- modem Anderson Jackobson AJ 211.
Une explication sur les MODEMS :
La transmission s'effectue par modulation de part et d'autre d'un canal (+/-
100hz). Par convention, le modem appelant émet dans le canal inférieur (1080 hz)
et le modem appelé émet dans le canal supérieur (1750 hz ).
yy Pom's No 3
Le modem AJ 211 ne fonctionne qu'en mode "APPEL" (ORIGINATE) : il "écoute" sur le
canal supérieur et "émet" dans le canal inférieur. Le second modem utilisé devra
done "écouter" sur le canal inférieur et émettre dans le canal supérieur : on dit
qu'il doit &tre en mode "REPONSE" (ANSWER).
Pour communiquer avec une machine munie d'un modem ne disposant que du mode
"APPEL" (ORIGINATE), il faudra mettre le modem AJ 311 en mode "REPONSE" (ANSWER),
soit :
- MODEM AJ 211 : mode "APPEL"
- MODEM AJ 311 : mode "REPONSE"
3-Echange de texte avec une machine bureautique
Plusieurs procédures sont disponibles. J'utilise une procédure dissymétrique du
coté de 1'APPLE :
émission sans logiciel particulier, en utilisant la fonction TRANSFER du FILER
du POS de 1'APPLE Pascal,
réception au moyen d'un logiciel de communication écrit en Pascal : le programme
LIAISON dont on trouve le listing dans "LE PASCAL PAR LA PRATIQUE", pages 516 a
518, Pierre LEBEUX et Henri TAVERNIER, SYBEX.
Voici la procédure utilisée
préparation du texte A l'aide de 1'EDITOR de 1'APPLE Pascal, et stockage sur
disquette en notant son titre (facile 4 retrouver avec le FILER)
préparation de 1'APPLE pour la communication
~- carte de communication dans le slot 2,
-- liaison selon la norme RS 232 avec le modem accoustique,
-- mise en service du modem, mode ORIGINATE, FULL DUPLEX.
appel du poste téléphonique de la machine bureautique pour vérifier que tout est
également prét du coté bureautique.
- Il suffit ensuite de passer au niveau du FILER les commandes :
--TRANSFER (nom du fichier)
-- A la question TO WHERE, répondre "REMOUT:"; ceci envoie le fichier par la
carte de communication au modem.
-~ Durant la transmission, rien n'apparait sur l'écran; les commandes au clavier
sont sans effet. A la fin de la transmission du fichier, on voit sur l'écran la
fléche habituelle a 1'issue d'un transfert.
Avec 1'APPLE Pascal, la transmission d'un fichier n'est donc pas plus difficile
que sa copie entre deux disquettes.
La préparation de la machine bureautique a la réception est spécifique de cette
machine. J'tindique ci-dessous la gamme opératoire propre 4 la machine RANK XEROX
850 pleine page.
Pom's No 3 45
XOUTIQUE rutmerot003 REVISION numeroi0ld du 21/10/81 *
* x
* SOOO OOOO OCC KK
x * OBJECTIFSRECEVOIR SUR LA RANK 850 F xx
* * FOUR IMPRESSION DE QUALITE *x
* * LE CONTENU D’UN FICHIER EMIS *x
* x DEFUIS UN APFFLE SOUS OS FASCAL xx
x *« xx
* «x *x
* x aK
* 2] OOOO
*
* CONFIGURATION‘ AFPLE IIT, PASCAL, COM
* RANK 850 FAGE + COM S-1
*
*XCREE LE214/10/81 DIFFICULTES FACILE
x
KAPPLICATIONi transfert de tableaux comme celui~ci, composes sur 1’APPLE
xavec impression respectant la mise en page
x
x
xVGTRSESTRANGIN
x
x=
x
xGAMMES1-Mettre le disque COM de la RANK dans le lecteur de droite
*
2-Mettre le disque de saisie dans le lecteur de gauche
3-Mettre en route la RANK
4-Changer la station de travail avec <PARA?! lecture du disque
com
S-A =<MODE COM 1+, repondre? <4, <ACCEFPT> -
6-A *RETIRER DISQUE COM>, executer
7-Faire “CODE FROGR> et choisir les options suivantes?
~300 (bit/s)
“QUI (mode duplex)
~0 (parite)
~x (ligne feed local)
-x Cinhiber)
~4x (mode COM)
8-Faire <ACCEFT>$ l’ecran indique <COM FRET>
9-Allumer le modem de la RANK
10-Si l’ecran indique <PROBLEME LIAISON TRANSMISSIOM?! appuyer
sur <STOF>$ l’ecran doit alors indiquer <COM FRET>
11-Changer de station pour acceder au disque de saisie?
touche <FARA>
12-Faire apparaitre le format qui sera celui du document recut
~marget 7-79 (correspond a RIGHT MARGIN 6, LEFT MARGIN 79)
~echappement? 10
Four faire apparaitre ce format qui sera automatiquement
uw document recu, on peut creer un rm uw document?
MK MM MR MM RMR MMM RM HM KR MM MMMM RM RM MX
He 3G 96 3E 3E HE HE 9 DE OEE EMM KR KR MMH MMM MMMM MMMM MH MM MMM MM KK MMM
46 Pom's No 3
Hi 3 9€ 9 3 2 9 2 2G HE EM MM MMM MM MMMM MM MMMM MMMM MMM MK MM HM
E ruimerot003 REVISION rmumeroi0l du 21/10/81 F
20-Touche <CARAC>, acceder au sommaire de travail} le document
21-Lancer l’impression par les touches «CODE FARA>};
-faire <CODE FRGR>
-enlever <4 MODE COM>
-mettre <LOCAL>
~faire <ACCEFT>
-creer wn document (titre propose! FORMATCOM)
-remplacer le format standard par le format ci-dessus
~stocker le document
-revenir ern MODE COM:
~<CODE FRGR
-effacer <LOCAL>3 mettre! <4 MODE COM>
-touche <ACCEFT>
HMMM MM MMMM MMM HK I
On peut aussi appeler wn document comportant ce format, fairex
apparaitre ce format sur l’ecram, puis re-stocker le documentx
Ce format sera ensuite mis sur tout nouveau document x
x
Showing the first 100000 of 148364 characters.