Full text of "poms03"
ISSN : 0294-6068
Sommaire
Editorial
Apprentissage de I'assembleur (I)
Controlez le nettoyage-memoire
Un exemple de HELLO
Analyse du directory Pascal (II)
Notions de base
Conversion Pascal/BASIC/Pascal
Communication grace a I'APPLE
Copie d'ecran-texte
Routine de presentation graphique
Les fichiers EXEC
Personnalisez vos disquettes
Les clubs ont la parole
Courrier des lecteurs
3
Jean-Louis Meillaud
5
Guy Mathieu
17
Guy Mathieu
19
Michel Crimont
21
Gerard Michel
32
Gilles Mauffrey
35
Bruno Estrangin
44
Christian Guerin
51
Jean-Francois Duvivier
53
Bruno Rives
55
Pierre Boutreux
61
63
64
Numero 3 - Mars 1982 - 35 Francs
58 rue Notre-Dome-de-Lorette - 75009 PARIS
Tel. ( 282.19.80 - Telex i 290350 F
Boutique
Tous materiels annonces disponibles d I'essai.
A PP1£ .
Apple II + 48 K + floppy
+ contr6leur + moniteur 12'
syy _ i u .
APPU
Ordinateur Apple /// 128 K
Disque dur 5 M.O. profile en option,
moniteur S.O.S. 4- basic + 1 soft au choix
nsemble Apple/// ********
28.000nc
Un veritable service avant et apres-vente.
• Les conseils du specialiste
pour le materiel et le
logiciel.
# Depannages rapides par
notre service apres-vente
integre.
• Une garantie 1 an pieces
et M.O. sur tous les
produits.
Des micro-prix sur tous les micros.
Extrait de notre tarif. Prix TTC
MATERIELS
LOGICIELS
APPLE II
APPLE II i
APPLE III
APPLE II + 48K
8950,00 F
CARTE IEEE 488
2895,00 F
DOS TOOLKIT
540,00 F
VISICALC III
1 700,00 F
DISK II + CONTROLEUR DOS 3.3
4720,00 F
TABLETTE GRAPHIQUE
6000,00 F
APPLE PILOT
11 80,00 F
APPLE WRITER III
1500,00 F
DISK II SANS CONTROLEUR
3375,00 F
CARTE PROTOTYPE
1 45,00 F
VISICALC 1 6 SECTEURS
1 620,00 F
ACCESS III
1000,00 F
SILDISK 8" 2 X 256K
191 50,00 F
CARTE TIMER CCS
11 50,00 F
VISITREND + VISIPLOT
* 21 70,00 F
SCRIPT III
850,00 F
MODULATEUR N/BEN KIT
150,00 F
CARTE 80 COL. BIT3 FULL VIEW
2750,00 F
DESKTOP PLAN II
1 620,00 F
PASCAL III
1 700,00 F
CARTE COULEUR SECAM
1 050,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
1 350,00 F
VISIDEX
1 620,00 F
-MAIL LIST MANAGER
1 000,00 F
CARTE COULEUR RVB
SILENTYPE II
2800,00 F
VISIPLOT
1 500,00 F
COMPTABILITE PL/ DISQUE DUR
4700,00 F
CHAT MAUVE
1 400,00 F
APPLE III 128K + SOS
26000,00 F
VISITERM
1 260,00 F
FICHIER PFS
1 200,00 F
CARTE COULEUR RVB ISTC
1 550,00 F
DISK III ADDITIONNEL
4400,00 F
FICHIER PFS
760,00 F
FICHIER PFS REPORT
1 050,00 F
INTERFACE PARALLELE
11 50,00 F
MONITEUR III
2500,00 F
FICHIER PFS REPORT
760,00 F
INTERFACE SERIE V24 RS 232
1 300,00 F
DISK DUR PROFILE 5 MEGA
26000,00 F
COMPTA SAARI
31 00,00 F
CARTE INTEGER
1 250,00 F
SILENTYPE III
2500,00 F
PAIE SAARI
2350,00 F
CARTE APPLESOFT
1 1 250,00 F
CARTE PROTO APPLE III
375,00 F
APPLE WRITER
530,00 F
CARTE LANGAGE 16KRAM
1 280,00 F
INTERFACE PARALLELE APPLE III
1500,00 F
APPLE PLOT
520,00 F
SYSTEM PASCAL
3050,00 F
CARTE MICROSOFT Z80 CP/M
2430,00 F
DOCUMENTATION GENERALE SUR DEMANDE.
E
E
S
B
□
B
En roison des fluctuations monetaires ce$ prix jont susceptible* d'etre modifies sons preavis. Nous consulter pour confirmation.
JCR, Pinformatique service compris.
EDITORIAL
De nombreux lecteurs nous telephonent ou nous ecrivent pour nous poser des questions sur 1' Apple et ses
utilisations possibles. II ne nous est malheureusement pas possible de repondre a tous. D'une part, cela demande
souvent du temps, et il s'agit la 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'equipement nous fait defaut. Les questions les plus frequentes ou les plus
interessantes peuvent aussi trouver leur reponse 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 numero. Tout d'abord, Particle d'initiation a l'Assembleur, de
Jean-Louis Meillaud, annonce des le numero 1... Ensuite, la seconde partie de l'analyse du directory, de Michel
Crimont. Enfin, le programme de transfert BASIC-Pascal-BASIC realise 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 completer ce numero 3, y compris (et c'est la une premiere pour nous) des
contributions de lecteurs. N'hesitez pas a poursuivre dans cette voie : le proselytisme et la participation sont les cles
de la reussite 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 numero 1, ou si Ton peut acquerir les
disquettes separement. La reponse est affirmative dans les deux cas. N'hesitez pas non plus a nous faire parvenir des
petites annonces. Elles seront gratuites, sous reserve qu'il s'agisse effectivement d'annonces de particuliers. La
periodicite trimestrielle est en effet quelque peu un frein pour les annonces, mais cela n'empeche pas le rapport
performance/prix d'etre excellent...
Personne n'ayant trouve la bonne reponse a notre concours publie dans Pom's N° 2, nous vous donnons page 60 une
seconde chance de prouver votre sagacite et de gagner ainsi un abonnement d'un an.
Nous vous donnons rendez-vous au salon Micro-Expo, qui se tiendra a Paris du 14 au 19 juin 1982. Nous y
partagerons un stand avec les revues La Commode (Commodore) et Trace (TRS-80).
Herve Thiriez
Directeur de la publication - redacteur en chef : Herve Thi riez - Siege social : Editions MEV - 49, rue Lamartine - 78000 i
Versailles - Redaction et abonnements : 59, bd de Glatigny - 78000 Versailles - Tel. (3) 918.13.07 - Regie publicitaire : Force 7 - |
41, rue de la Grange-aux-Belles - 75483 Paris Cedex 10 - Tel. (1) 238.66.10 - Diffusion aupres des boutiques informatiques et )
librairies : Editions du PSI - 41-51, rue Jacquard - BP 86 - 77400 Lagny - Tel. (6) 007.59.31.
Ont collabore a ce numero : Pierre Boutreux, Michel Crimont, Jean-Frangois Duvivier, Bruno Estrangin, Christian Guerin, Guy
Mathieu, Gilles Mauffrey, Jean-Louis Meillaud, Gerard Michel, Bruno Rives - Dessin : Jean Mourot.
Pom's No 3
3
Tome' lrrtl *S=" rt8n
posees , M pages - ■
Bene ve — ^
flies i^"*" 6SM)F F
**f (nWO»u supe" 5 , a s«s:
a vima» he " a o U e P<° rt 0a nu(" e -
\
\
-\
nom .— -
rue
\
\
C0 deP 0Si> uA
Apprentissage de I'assembleur (I)
Jean-Louis Meillaud
IL N'Y A PAS DE LANGAGE UNIVERSEL
Le possesseur d T un Apple qui veut se lancer dans la programmation est tout de
suite sollicite par une pleiade de langages, BASIC, Pascal, Forth etc, sans parler
de quelques " vieilleries TT comme le Cobol et le Fortran . Ces langages ont sans
doute beaucoup d'attrait pour ceux qui disposent a la f ois du temps et du budget
necessaires! Mon propos n T est pas d T entamer une polemique avec ceux qui vantent
les merites de Pascal et du pari qu T il represente... A mon niveau, que je pense
etre celui de nombreux utilisateurs, 1 ! Apple, tel qu T il est livre, avec son BASIC
et son MONITEUR, a de quoi contenter les plus exigeants. Les softs, je devrais
dire les logiciels, proposes par les societes specialisees (une bonne centaine
rien qu T aux Etat-Unis) sont ecrits a 99% dans un melange de BASIC et de
lang age-machine, et ils marchent en eff et tres bien .
Prenons comme reference 1 T Apple 11+ avec Applesoft et Autostart, qui represente le
Standard actuel. Ce BASIC est un langage d T une souplesse et d r une facilite
d T emploi inegalees. Le fait que le BASIC Applesoft soit interprets et soumis a un
controle syntaxique au moment de cette interpretation rend nos programmes
immediatement operationnels ; ce n T est pas le cas avec des langages compiles.
Les limitations memes de 1 T Applesoft me paraissent plutot un avantage. II est
facile, quand le besoin s T en fait sentir, de trouver des sous-programmes simulant
le PRINT USING (voir POM T S numero 4, en juin) ou les instructions de traitement de
matrices qu T on trouve generalement dans les BASICs plus "etendus" . Sans gout
immodere pour le paradoxe, je dirais que 1 T Applesoft est ef f icace en proportion de
sa simplicite .
LES VRAIES LIMITES
Le BASIC, quelque soit son parf urn, Applesoft ou Integer, se montre invivable dans
certaines applications. Pour des calculs tres repetitifs, sa lenteur devient
exasperante. Qui n ! a jamais "pique une crise rT devant son ecran a attendre qu T une
boucle en BASIC finisse de s'executer, ou encore qu T un segment de programme soit
charge ? Ceux qui ont essaye d'utiliser un Mailing List tel qu T APPLEPOST me
comprendront . Et pourtant ce prcgiciel a ete ecrit par les gens de PERSONAL
SOFTWARE, les auteurs de VISICALC. Certaines solutions employees sont certes
ingenieuses et de nature a inspirer le programmeur en quete de routines elegantes.
Mais, en la circonstance, le BASIC se montre d T une telle gourmandise qu T il a fallu
segmenter le programme et que la majeure partie du temps d T execution se passe en
appel de ces segments de programme.
LA SOLUTION HARMONIEUSE
Le BASIC est irremplagable pour les petites taches qui s'executent en une f ois,
comme les affichages d T ecran. II faut le completer par des sous-programmes en
lang age-machine pour tous les travaux repetitifs tels que les conversions de
codes .
II faut remarquer que le langage-machine, comme le fait d T ailleurs le BASIC, peut
utiliser des sous-programmes fort efficaces qui se trouvent dans le Moniteur.
D T autre part il n T est pas interdit de brancher un programme en langage-machine sur
Pom T s No 3
5
une fonction Applesoft dont on connait le point d T entree.
L T ARTICULATION
La communication entre Applesoft et lang age-machine est prevue dans 1 T Applesoft
grace aux quatre instructions CALL, PEEK, POKE et USR. Eh outre, differentes
techniques sont repertoriees pour effectuer ces mixages (cf S.H.LAM Routine,
expliquee dans POM'S numero 2).
LES OUTILS DE TRAVAIL
La "Bible", c T est le " REFERENCE MANUAL" , le bouquin que vous avez soigneusement
mis de cote le jour ou vous avez pris livraison de votre Apple ! II est grand
temps de le f aire sortir de sa cachette et de se familiariser avec les commandes
du Moniteur; les exercices sont obligatoires pour une bonne comprehension. II vous
faut egalement un manuel de programmation en assembleur et . . . un assembleur.
L T ASSEMBLEUR
Je commence par lui car il constitue une option f ondamentale . Son choix entraine
en partie celui du manuel.
PREMIERE HYPOTHESE ; Vous avez un ancien APPLE II, que nous appelerons APPLE II
MOINS. Vous etes vernis car vous disposez du " MINI- ASSEMBLER" ; le "Vieux" Moniteur
et le BASIC Entier, moins voraces que 1 T Applesoft Autostart, laissent la place a
ce petit bijou, ainsi qu T aux sous-programmes Step et Trace, bien utiles pour les
mises au point .
DEUXIEME HYPOTHESE : Vous avez un APPLE II +. Vous n T avez plus ni Trace ni Step et
le MINI- ASSEMBLER a egalement disparu. Pour le recuperer, il faut que votre APPLE
soit muni soit de la carte "Integer", (TRACE et STEP reapparaissent dans la
foulee), soit, (plus normalement, car l'interet de 1 T INTEGER en PROM est limite),
de la Carte Langage qui vous redonne le Mini-Assembleur , mais cette f ois sans le
pas-a-pas ni le tragage.
Si vous etes reduit a 1 T APPLE II + sans plus... pas de mini-assembleur, ce qui est
bien genant car meme si un "grand" Assembleur est pratiquement indispensable, le
"mini" rend bien des services pour les programmes courts et les modifications
rapides. Le mini est tres pratique car il vous permet de voir ce que vous f aites
au fur et a mesure que vous ecrivez votre programme. Aussitot ecrite, votre
instruction est assemblee, a l T endroit meme ou elle devra etre executee.
L'ecriture est particulierement simplifiee et rapide. II est par contre impossible
d T assortir vos lignes de commentaires, pourtant bien pratiques pour savoir ce que
vous aviez voulu faire, quand vous redecouvrez votre programme quelque temps plus
tard .
LES GRANDS ASSEMBLEURS
L T inconvenient majeur du mini-assembleur pour les programmes importants est que, a
la difference des grands, il ne permet pas les etiquettes symboliques. Ces
etiquettes (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 T HERCULE" , ou plus exactement sur "TVXDHERC", car il y a quand
meme une limite dans le nombre de caracteres permis (4 a 8 suivant les modeless-
pendant la phase d T assemblage, le programme assembleur ira chercher l T adresse de
votre routine TRAVAUX D T HERCULE quand celle-ci sera definitive . Le Programme
d T assemblage, qui a pour mission de transformer votre programme source (langage
6
Pom T s No 3
assembleur) en programme objet ( lang age-machine) determinera automatiquement cette
adresse en debut d T execution lors du premier passage. C T est quand meme une bonne
maniere de s ! affranchir du GOTO X du BASIC, qui vous obligera a mettre
imperativement votre routine en ligne X, ou si vous changez d T avis, a modifier
toutes vos references a X dans les GOTOs et autres GOSUBs .
Ces etiquettes symboliques et bien d T autres merveilles ne sont disponibles que sur
les assembleurs complets. II y en a une demi-douzaine de connus sur le marche et
il n ! est pas toujours facile de les departager. lis sont en pleine crise de
croissance et chaque nouvelle version represente un progres sur la derniere
version du concurrent... Dans un etat larvaire il y a deux ans, d T aspect encore
tres "bricole" il y a seulement un an, ils s T ameliorent de trimestre en trimestre
et on peut considerer aujourd T hui qu T ils ne sont pas loin d T atteindre leur
majorite. Eh outre les assembleurs actuels s 1 accompagnent d T une foule
d 1 utilitaires : desassembleur pour transformer un programme en lang age-machine en
programme en assembleur, tragage pour aide a la mise au point et table de
references pour retrouver toutes les instructions qui utilisent une etiquette
donnee. L T existence de ces utilitaires vous simplif ie la vie.
Nous prendrons comme assembleur de reference le LISA car, d T une part, c T est le
plus repandu en France et, d T autre part, son auteur, Randy Hyde, est bourre
d T idees qu f il a le bon gout de nous faire partager, non seulement en les
incorporant dans ses logiciels, mais aussi en nous les commentant dans differentes
publications (revue Applesauce et livre de programmation du 6502) et meme a
l'interieur des listings-source de ses programmes.
LISA - prononce n Lailleza n comme Minelli- Interactive Assembleur est un assembleur
conversationnel de format libre. II a le grand avantage, comme 1 T INTEGER, de
signaler vos erreurs de syntaxe au fur et a mesure de l'ecriture sans avoir a
attendre le premier passage. En outre il met a votre disposition un large eventail
de "pseudo-codes", commandes qui s'executent pendant 1 ! assemblage. II y en a pour
chaque situation !
MANUELS DE PROGRAMMATION EN ASSEMBLEUR
Dans ce domaine egalement, devolution est rapide. II y a encore un an nous
n T avions a nous mettre sous la dent que des livres sur 1 T assembleur pour le
microprocesseur 6502 en general, ce qui permet de programmer 1 T Apple mais ne tient
aucun compte de la mine de programmes tout faits que sont le Moniteur et le DOS,
sans parler de 1 T Interpreteur BASIC. Toutes les routines de gestion de l T ecran, du
clavier et des autres peripheriques existent deja. II convient simplement d T avoir
la cle d T acces .
Ces livres sur le 6502 sont d T ailleurs excellents. Eh dehors du Rodnay Zaks, que
je ne connais que de reputation (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 T Apple-o-mane (ou Pommolatre) frangais est desormais comble . II peut apprendre
l T assembleur specifique de son P.S.I, favori et dans sa propre langue . Eh effet,
Nicole Breaud-Pouliquen a publie son Tome III de la Pratique de l f Apple (Edition
du P S I ) . En collaboration avec Daniel-Jean David, elle nous disseque le
lang age-machine et 1 T assembleur du 6502. II est important d T avoir un livre
specialement oriente APPLE, car le programmeur est souvent appele a utiliser
directement des routines du Moniteur. II serait titanesque d T avoir a les
re-ecrire, sans compter qu f il serait difficile de faire aussi bien que Steve
Wozniac. Comme le disent (aussi) les Americains a tout bout d T article : "II est
inutile de reinventer la roue!".
Pom T s No 3
7
Le Don & Kurt Inman , "Apple Machine Language" edite par Res ton /Prentice Hall est
lui aussi specif ique. Le pas-a-pas tres "enseignement programme" est agreable a
suivre - Pour les amateurs de sons et de graphiques, il est fait de larges
incursions dans ces domaines. Malheureusement le livre s ! arrete au moment ou qa
devient vraiment interessant, c T est a dire au moment d T aborder le veritable
assembleur, avec etiquettes symboliques et pseudo-codes. A conseiller neanmoins au
debutant, s T il lit 1 ! Anglais.
Le bouquin que j T attend ais personnellement avec le plus d T impatience, le Randall
Hyde, est enfin sorti . II s T agit de "How anyone can program the Apple II - Using
6502 assembly Language". II est parf ait pour les utilisateurs de LISA, car il
donne un tas de tuyaux complementaires (utilisation des pseudo-codes LISA et du
TRACE 65 pour la mise au point des programmes). Mais bien qu T il s T intitule de
lui-meme "Best Seller", son manque d 1 universalite empeche de le recommander a des
gens qui n T auraient pas 1 T intention d T utiliser le LISA. Ces derniers par contre ne
pourront s T empecher d T avoir l T eau a la bouche a l T annonce des f uturs volumes de la
collection "Advanced 6502 L/M programming (Graphics, Disk I/O...)" et "Z80 and
6809 programming on Apple".
Ehfin, pour rester dans les nouvelles allechantes, signalons la sortie aux U.S. de
"Everyone T s Guide to Assembly Language". C T est la reunion des exceptionnelles
chroniques parues dans Soft Talk depuis plus d T un an. Elles sont signees Roger
Wagner, auteur d T Appledoc (voir Pom T s numero 2) et patron de la societe de
Software S D S . Ce livre constitue 1 T initiation la plus progressive et la plus
complete au lang age -machine de 1 T Apple et a 1 T assembleur .
LES SOFTS UTILES
L T amateur est noye sous les logiciels mis a sa disposition . C T est peut-etre cette
multiplicity qui lui a fait pref erer 1 T APPLE . Mais ces lcgiciels, ainsi que les
dispositifs "hardware" mis sur le marche, ne sont pas tous d T une egale utilite .
Dans chaque numero de Pom T s, des articles nous permettrons d ! y voir plus clair et
de selectionner, par exemple, les aides a la programmation les plus efficaces.
Des qu T il nous faut ecrire, a titre prof essionnel ou prive, un systeme de
traitement de texte est le premier pas vers la rentabilisation de notre "micro".
Personnellement, j T ai un gros f aible pour "Applewriter" . C T est un bon soft, dont
1 ! acquisition est peu onereuse. Attention a Applewriter II, annonce par Apple
Computer 1 II parait qu T il "tire dans les coins". Mais il sortira en version
protegee... et il ne sera pas donne. Notre Applewriter actuel, s T il est un peu
frustre, en ce sens qu T il lui manque un certain nombre d ! options, disponibles sur
SUPER SCRIBE et autres MAGIC WINDOWS, est perfectible. La plupart des options ou
gadgets qui lui font defaut peuvent lui etre greffes. II suffit pour cela de
parler sa langue, le lang age-machine .
A mes yeux, la plus belle qualite d 1 Applewriter est d T etre un systeme ouvert . II
existe nombre de "softs sophistiques" qui vous rendent malade. Aussi perf ectionnes
soient-ils, ils ne peuvent toujours correspondre a ce que vous en attendez et il
arrive fatalement qu T un jour ou 1 T autre vous souhaitiez leur f aire subir une
petite operation de chirurgie esthetique. II y a un true en trop, une commande
dont 1 T execution vous parait exasperante, ou un true qui manque, une idee a vous
qui vous parait geniale et dont la mise en oeuvre vous simplif ierait bien la vie.
Bref, vous voulez apporter des modifications. Helas pas de "modif" possible. Ces
softs sont generalement cadenasses et leurs auteurs se sont evertues, par psychose
du piratage, a vous empecher d T en trouver la cle .
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 T s No 3
Text Formatter pour les Centronics 737/9 de Micro-Media, dont les produits n ! ont
pas l T air d T etre tres diffuses, ou encore n Go-Between n , un prcgramme qui, d T apres
Apple-Europe, serait disponible en Angleterre), mais encore n T importe qui peut
s T ecrire les modifs, a condition de posseder suf f isamment le langage-machine .
C T est meme la meilleure maniere de se f amiliariser avec le langage-machine, (cf .
la modification qu ! a ecrite Sheila Widnall pour utiliser son adaptateur de
minuscules "Paymar Chip" avec 1 1 Apple-Writer ( Call-A.P.P.L.E. de Septembre 80),
alors qu T un mois auparavant elle ignorait 1 T existence du LDA et les joies de la
gestion de pile ! ) .
Je suis resolument hostile aux adaptateurs de minuscules qui donnent de bien
vilains caracteres. De meme je pense que les cartes 80 colonnes ont un interet
tres limite . Je me satisf ais parfaitement de ce que 1 T Apple affiche sur l T ecran.
Par contre je tiens a ce que mon imprimante ecrive en frangais.
La modification que je vous propose aujourd'hui et qui nous servira de tremplin
pour nous f amiliariser avec le langage assembleur permet de disposer de la
quasi-totalite des lettres frangaises accentuees que 1 T imprimante est capable de
produire. II faut bien entendu que lMmprimante dispose d f un jeu de caracteres
frangais, mais c T est le cas le plus repandu et c'est le cas en particulier des
Centronics 730-2 et 737/739. Les seuls caracteres pour lesquels nous n ! apportons
pas de solution immediate sont le trema ^et l T accent circonflexe, ces caracteres
qu T Applewriter sait editer, mais ne sait pas positionner sur les lettres
correspond antes . Pour le moment, nous non plus , nous ne savons pas les imprimer
et nous ne saurons pas le f aire avant d T avoir resolu le delicat probleme de
l T espacement arriere sur les imprimantes a lignes. Rassurez-vous, la solution
existe et elle fera l T objet d'un prochain article.
CARACTERES FRANCAIS
Sans la moindre modification il est possible d T obtenir (manuel Apple Writer,
extraordinary characters, p. 31 ) les caracteres suivants:
e , , e , s , , a, t
e CTRL N
• ESC CTRL N * CRTL SHIFT P
e SHIFT M a ESC CTRL SHIFT P
§ ESC SHIFT M A ESC SHIFT N
c * SHIFT N
La modification que nous proposons est directement inspiree du "patch" propose
par Lou Rivas pour utiliser le dispositif "Lower Case Adaptor" avec AppleWriter
(Apple Orchard, Automne 1980). Cette modification permet d T imprimer le u, le q et
le trait mode soulignage, en appuyant simultanement sur trois touches (CTRL A et,
suivant le cas, la touche Barre oblique ou la touche Moins):
u CTRL A /
q ESC CTRL A /
ESC CTRL A -
Apres cette modification, la totalite des caracteres ASCII 224 a 255 peut etre
affichee sur l T ecran ( 11 faudra se familiariser avec les nouveaux symboles ! ) .
Plus important, il est desormais possible de produire sur 1 T imprimante la
quasi-totalite des lettres frangaises accentuees.
II est imperatif que le programme modifie soit appelle TEDITOR car apres
1 T impression (par "PRINTER") le retour a l T editeur se fait par "BRUN TEDITOR" (en
langage-machine — of course). Si vous desirez conserver le programme original sur
Pom T s No 3
9
la meme disquette (on ne sait jamais!), prenez le soin, avant toute modification,
de changer son nom.
MODE D'EMPLOI
II f aut commencer par ecrire le "patch" (moins frangais, mais plus joli que
"verrue") en lang age-machine . Nous allohs utiliser LISA. Tout autre Assembleur
fera l f affaire. Si on utilise le Mini-Assembleur il faut prendre particulierement
soin des adresses ou doivent s T executer les branchements . Mais en 1 T occurence, la
tache est grand ement facilitee par la presence du listing d 'assemblage LISA.
II 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 T a
pas encore d T assembleur .
Nous prendrons comme origine $1848, qui se trouve en dehors du programme TEDITOR.
Le pseudocode "ORG" s T occupera de tout. Uhe f ois le programme assemble, il
convient de le sauver sur disquette. Pour cela f aire "BSAVE
CARFRAN. OBJ, A$ 1848, L$50" . Le patch fait moins de 80 octets, mais il vaut mieux
prevoir trop large que trop juste. N T oubliez pas que sur la disquette vous
enregistrez par multiples de 256 octets (100 en hexadecimal) et qu T en consequence
l T avarice n T est pas payante! Tellement peu payante que, entre membres
d T Apple-holic Anonymous, je peux bien vous confesser qu T il m T est arrive de perdre
trois heures a rechercher une erreur dans un programme en langage-machine, que
j T avais tout simplement ampute du dernier octet. Eh effet, pour calculer la
longueur de mon "BSAVE", j T avais retranche l T adresse d T origine de l T adresse de fin
et j T avais ainsi escamote un octet... C T est un grand classique, moins grave que
d T oublier d T eteindre quand on retire une carte... mais tout aussi populaire !
Le cote farce de cette panne ne vous echappera pas quand je vous aurai dit que,
aux premiers essais, mon programme "marchait comme sur des roulettes". Pour le
tester, j T avais en effet fait suivre mon BSAVE d T un BRUN, sans prendre la
precaution de vider la memoire et du coup j T avais recupere mon octet final,
sagement reste a sa place en la circonstance .
PRECAUTIONS ET SPINS
Pour vous eviter une pareille mesaventure, je vous conseille la manoeuvre
prophylactique suivante : avant de recharger un programme a tester, utilisez le
"MOVE MEMORY" du Monitor pour mettre a zero une zone aussi grande que possible.
Par exemple, en supposant que votre programme de quelques centaines d T octets
debute en $800, passez en Moniteur (CALL-151). Puis tapez :
800:0
80K800.2000M
Le TEDITOR prend chaque caractere du texte que l T on est en train d T editer et lui
fait subir un certain nombre de traitements pour voir de quoi il retourne ( Lettre
Majuscule, si precedee d T un Escape, minuscule, ou caractere de controle
correspondant a une commande du programme). Puis, s T il s T agit d T un caractere du
texte proprement dit, il lui fait subir un changement radical de code. L T Apple II
modifie legerement le code ASCII pour son usage interne. II lui ajoute un bit a la
position la plus significative de 1 T octet (on parle alors d T ASCII negatif).
Applewriter le secoue bien davantage : les majuscules sont descendues dans la zone
des caracteres 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 ($A1 a $BF) .
10
Pom T s No 3
Quand Applewriter a fini de tester le caractere a ecrire (au moyen d T 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 depart se trouve dans la memoire $28 et
qu T il fait progresser en incrementant le registre -Y. II s T agit de l T adressage
indirect post-indexe par Y que nous retrouverons plus loin.
Les Modes d T adressage tres varies sont un des points forts du 6502, mais aussi un
sujet de perplexite pour le neophyte. Pour s T y retrouver, il suffit d T appliquer
les conventions classiques suivantes:
$ renvoie a l T adresse
, ajoute a l T adresse la valeur du registre nomme apres la virgule
() donne l T adresse de l T adresse. C T est une boite aux lettres.
£$ n T indique pas une adresse, mais une constante a utiliser immediatement .
( Ne vous etonnez pas si, sur certaines imprimantes, le jeu de caracteres frangais
change le signe T! pound" -notre signe mathematique sensiblement egal- en signe
Livre Sterling ) .
MISE EN OEUVRE
A l ! aide de l ! assembleur de votre choix vous avez prepare sur une disquette le
fichier Dinaire CARFRAN.OBJ, ou encore vous possedez la disquette Pom T s qui
contient ce fichier.
Vous disposez egalement d T une copie d 1 Applewriter . II est recommande de ne pas
utiliser 1 T original ...
1) Vous chargez la Modif :
BLOAD CARFRAN.OBJ
2) Vous mettez votre disquette Applewriter et vous chargez 1 T Editeur:
BLOAD. TEDITOR
Pour garder une copie de securite, vous changez le nom :
UNLOCK TEDITOR
RENAME TEDITOR, VIEUX TEDITOR
LOCK VIEUX TEDITOR
3) Vous passez en Moniteur (CALL- 151) et vous utilisez 1 1 instruction pour changer
la memoire (Reference Manual p. 44), af in d T introduire les nouvelles valeurs
suivantes :
* 8 1 1 : 8D 10 CO 4C 48 18
*3D0G ou 9DBFG (retour a 1 T Applesoft)
4) Vous enregistrez votre nouvel Editeur sur disquette:
BSAVE TEDITOR, A$803, L$186C
5) Apres 1 T avoir essaye, vous verrouillez le nouvel editeur :
LOCK TEDITOR
REMARQUE: Si vous ne disposez ni d T un assembleur ni de la disquette Pom T s, vous
pouvez encore vous en sortir : vous commencez directement au pas 2) et quand vous
arrivez au pas 3) vous enregistrez egalement la modif en HEXA a partir de * 18.48:
Bien entendu vous vous limitez au code objet qui est dans la partie gauche du
listing d T assemblage .
Pom T s No 3
LIGNES SOURCE POUR ASSEMBLAGE AVEC LISA
TTL "CARACTERES FRANCAIS"
ORG $1848
Le pseudocode TTL permet, en LISA Version 2.5, d T imprimer le titre au debut de
chaque page de 1 T Assemblage . En outre, si vous disposez d T une Horloge Temps Reel,
du type Mountain Computers (nee Mountain Hardware), la date et l T heure
s 1 imprimeront a cote du titre, ce qui est une f a<?on agreable d T assurer la
pagination d T un long listing.
Le pseudocode ORG est lui indispensable; il permet a l T Assembleur de calculer
l T adresse des branchements . II est de la responsabilite du programmeur de placer
son programme objet a l ! adresse indiquee au moment de l T execution (a moins que son
programme ne soit ecrit de fa<?on a pouvoir etre deplace -"relocatable" disent les
anglophiles-, c T est-a-dire ne comporte aucun saut a une adresse absolue. Si ce
n T est le cas, il f aut f aire appel a un programme de deplacement- (cf . J.-F.
Duvivier Deplacement des programmes en Assembleur, Pom T s N 1)
C T est une bonne habitude que d T ecrire, autant que faire se peut, des programmes
recasables ("relocatable"). II n T en est evidemment pas question dans notre exemple
puisqu T il s T agit d T une modification qui doit se raccorder a une adresse bien
definie (par JMP $1848 que nous avons place en $814 dans AppleWriter) .
Le pseudocode OBJ, qui indique 1 T adresse de depart de 1 T Assemblage du code-objet
est inutile ici car, a moins d T en decider autrement et de le specifier
expressement avec OBJ, ORG genere automatiquement un OBJ a la meme adresse (en
LISA) .
2. EQUATE
Le pseudocode Equate (EQU) permet d T affecter une etiquette a une cellule de
memoire ou se trouve une valeur ou un debut de programme. S T il s T agit d T un
programme, il suff ira par la suite 'de faire un saut inconditionnel (JMP) ou un
branchement conditionnel (BEQ) a cette etiquette. C T est beaucoup plus gai que la
solution du BASIC, qui consiste a definir un numero de ligne fixe au point
d ! entree du sous-programme.
Les "equates" servent beaucoup pour les sous-programmes du Moniteur. Si le
sous-programme est en ligne (a l f interieur du programme principal), vous f aites
figurer simplement l T etiquette avant la premiere instruction (cf . BAROBL infra).
L T Assembleur LISA sait qu T il s T agit d T une etiquette parce que vous ne la f aites
pas preceder d T un espace, alors qu T il en faut au moins un avant un code
instruction . .
Dans le dialecte specif ique a LISA, un equate a une memoire en page zero ($00 a
$FF) s'ecrit EPZ (equate page zero) et ne sera suivi, bien entendu, que de deux
chiffres hexa au maximum.
3. TEXTE EPZ $0028
II s T agit de la memoire ou le programme va chercher 1 T adresse de la chaine de
caracteres qu T il est en train de constituer a partir des entrees au clavier.
4. CLAVIER EQU $C000
Quand le caractere preleve par un LDA a cette adresse est "negatif" (bit 7, le
plus signif icatif , positionne), c T est qu T une touche du clavier a ete enfoncee. Cet
12
Pom T s No 3
etat sera constate par l T echec du test BPL.
5. STROBE EQU $C010
Remet le bit le plus significatif a zero pour pouvoir accepter une nouvelle entree
clavier. Le programme va eff ectuer une serie de tests af in de voir si les touches
qui nous interessent ont ete activees, pour se rebrancher finalement au point d T ou
est partie la derivation (au moyen d T un RTS) . Si les caracteres testes sont bien
ceux que nous recherchons, ils doivent etre stockes entre temps dans la chaine de
caracteres qu T utilise A/W. Ceci est eff ectue par STA ($28), Y suivi d T un INY pour
mettre a jour le pointeur.
6. VALEUR IMMEDIATE - ADRESSE - ADRESSE DE L T ADRESSE
LDA : Load Accumulateur permet de placer une valeur dans 1 T accumulateur .
Cette valeur peut etre contenue dans 1 ! instruction : LDA £$Valeur en hexa, indique
qu T il n T y a pas a chercher loin l T adresse de la valeur puisqu T il faut prendre
litteralement la valeur contenue dans 1 1 instruction . On parle alors d f adressage
immediat .
La valeur peut etre recherchee directement dans une cellule de memoire dont
l T adresse est contenue dans 1 T instruction : LDA $ adresse (en Hexa). C ! est
l T adressage direct.
On peut encore indiquer dans 1 1 instruction 1 T adresse de la cellule oil se trouve
1'adresse de la valeur : LDA ($ adresse de l T adresse oil se trouve la valeur). Ce
systeme de boite aux lettres s T appelle l T adressage indirect. II permet d ! utiliser
la meme instruction pour toute une serie de valeurs. L T adresse de la boite aux
lettres est fixe, seul son contenu varie.
Ihe autre maniere de f aire varier l T adresse consiste a associer un registre (X ou
Y) dont le contenu vient s T ajouter a l T adresse. II s T agit de l T adressage indexe.
L f adresse indiquee dans 1 T instruction ne varie pas, mais on fait progresser le
registre .
Si on marie l T indexage avec l T adressage indirect on obtient l T adressage indirect
indexe. On peut de la sorte faire varier 1 T adresse de la "boite aux lettres",
adressage indirect pre-indexe par X, ou faire varier 1 T adresse trouvee dans la
boite aux lettres, adressage indirect post-indexe par Y. Ici le role des deux
registres d T index est nettement differencie, ce qui est bien agreable pour eviter
les confusions ! Ainsi LDA ($28), Y permet de charger 1 T accumulateur avec le
contenu de 1 ! adresse A+Y, A etant 1 T adresse contenue dans la memoire 40 (28 en
hexadecimal). Les beautes de l T adressage indirect post-indexe par Y resident dans
le fait qu T il n T a pas besoin de toucher au contenu de la cellule 40 et qu T il
suff it d T incrementer le registre- Y (INY) pour faire progresser 1 T adresse oil l T on
va lire ou stocker le caractere suivant.
7. LIGNES 9 A 1 1
CMP £$81 ; TOUCHES CTRL-A?
BEQ BAROBL
RTS
Les branchements conditionnels se font en deux temps. D T abord, on met en presence
les quantites a comparer. Ici 1 T accumulateur et la valeur 129 (81 en hexa).
Ehsuite, on indique la condition et la branche a prendre si cette condition est
remplie .
Pom 1 s No 3
13
Eh BASIC cela donnerait:
10 LET A = ACCUMULATED : LET B = 129 : REM 129=$81
20 IF A = B THEN GOTO 1000
30 REM SO US- PROGRAMME BAROBL COMMENCE EN LIGNE 1000
40 RETURN
Remarque ; la comparaison n T est pas a proprement parler une comparaison, mais une
soustraction : avec CMP (et ses variant.es) on soustrait la valeur a comparer' de
1 T accumulateur (ou du registre concerne). Ih indicateur est positionne selon le
resultat de cette soustraction :
C - pour Carry - s T il est positif
Z - pour Zero - s T il est nul
N - pour Negative - s T il est negatif
Tous ces indicate'urs (flags) sont combines dans un meme registre, le Mot d T Etat
(Status Word). L T instruction suivante de branchement conditionnel examine ensuite
l'etat de 1 T indicateur qui l'interesse.
BEQ (Branch if equal), par exemple, eff ectuera le branchement si la soustraction a
donne pour resultat 0, c T est-a-dire si 1 T indicateur Z = 1. Par contre le
branchement ne sera pas eff ectue si l T indicateur Z = 0. Surprenant, mais
lcgique Surtout si 1 T on considere que ,T ,T veut dire Faux et que "1" veut dire
Si la comparaison ne donne pas l T egalite c T est qu ! il ne s ! agit pas de CTRL-A.
Retour au programme principal (RTS). Par contre si c T est un CTRL-A il convient de
determiner si celui-ci est accompagne d T une barre oblique ou d T un moins.
Chaque fois que la bonne sequence de touches aura ete decelee, nous transf ormerons
le code ASCII dans le code qui donnera le caractere desire a 1 T impression . Cela
est eff ectue par . un LDA avec adressage immediat, c T est a dire que l T on charge
directement 1 f accumulateur avec la valeur ASCII qui servira au programme PRINTER.
La diff erenciation provoquee par l ! emploi prealable de la touche ESC (majuscules)
sera ef f ectuee dans le tronc commun du programme principal (TEDITOR classique).
8. SOUS- PROGRAMME
BAROBL:
LDA CLAVIER
Vrai .
BPL
CMP
BNE
LDA
BAROBL
£$AF
TIRET?
£$DC
; RIEN! RELIRE CLAVIER.
; TOUCHE »/"?
ACCEPTE:
STA
RTS
STROBE
; LE CLAVIER EST PRET A
; ACCEPTER UN CARACTERE
TIRET?:
CMP
BNE
LDA
BNE
STA
INY
RTS
£$AD
ACCEPTE
£$DF
ACCEPTE
( TEXTE), Y
TOUCHE »-»?
RIEN AU NUMERO.FAITES VOS JEUX!
SOULIGNERA A L T IMPRESSION
STROBE MET BIT7 A POUR LIRE
RANGE LE CARACTERE TRAITE
DANS LA ZONE- TAMPON
END
14
Pom T s No 3
JSR (Jump to subroutine) execute un branchement inconditionnel . II est au JMP ce
que le GOSUB est au GOTO. C T est-a-dire qu T il s T attend a trouver ulterieurement un
RTS (Return from subroutine), 1 T equivalent du RETURN du BASIC.
BNE (Branch if not equal) ne doit guere poser de probleme si on a compris le BEQ.
Le branchement sera effectue si I'indicateur Z (dans le Mot d T Etat) est egal a
zero .
STA (Store accumulateur) est la manoeuvre inverse de LDA. II transf ere le contenu
de 1 1 accumulateur dans la memoire specif iee. Ici nous utilisons done l T adressage
indirect post-indexe par Y. Nous rang eons le contenu de 1* accumulateur a 1 T adresse
obtenue en ajoutant le contenu de la boite aux lettres etiquetee "TEXTE" (d'apres
1 T EPZ on salt qu T il s T agit de la cellule $28 en hexa, soit 40 en decimal, qui
indique le point de depart de la chain e de caracteres) au contenu du registre Y
(qui, lui, prcgressera d T une unite au prochain INY) .
LISA 2*5 CARACTERES FRANCAIS
0800
1
TTL.
"CARACTERES
FRANCAIS"
1848
2
ORG
$1848
1848
3
t
0028
4
TEXTE
EF'Z
*0 028
15 01
5
DISQUE
EQU
$1501
cooo
6
CLAVIER
EQU
*C000
CO 10
7
STROBE
EQU
*C010
1848
C9
81
8
CMP
#$81
i TOUCHES CTRL-A?
184A
F0
01
9
BEQ
BAROBL
184C
60
10
RTS
184D
11
BAROBL *
184D
AD
00 CO
12
LDA
CLAVIER
1850
10
FB
13
BF'L
BAROBL
t RIEN ! RELIRE CLAVIER.
1852
C9
AF
14
CMP
#f AF
♦TOUCHE "/"?
1854.
DO
06
15
BNE
TIRET?
1856
A9
DC
16
LDA
**DC
1858
17
accepte:
1858
8D
10 CO
18
STA
STROBE
♦le clavier est pret a
1858
60
19
RTS
J ACCEPTER UN CARACTERE
185C
20
TIRET?*
18 5C
C9
AD
21
CMP
#*AD
* TOUCHE "--"?
185E
DO
F8
22
BNE
ACCEPTE
JRIEN AU NUMERO* A VOS MISES !
1860
A9
DF
23
LDA
#*DF
} SOULIGNERA A L' IMPRESSION
1862
DO
F4
24
BNE
ACCEPTE
J STROBE MET BIT? A POUR LIRE
1864
91
28
25
STA
(TEXTE) ,Y
t RANGE LE CARACTERE TRAITE
1866
C8
26
INY
J DANS LA ZONE-TAMPON
1867
60
27
RTS
1868
28
END
3CALL-
-151
*1848,1868
1848-
C9 81 F0
01
60
AD
00
CO
1850-
10 FB C9
AF
DO
06
A9
DC
1858-
8D 10 CO
60
C9
AD
DO
F8
1860-
A9 DF DO
F4
91
28
C8
60
1868™
00
Pom' s
No
3
Afin de mieux
tirer profit de toutes
les possibility
d'APPLE,
et de ses extensions.
Loin des contacts
anonymes,
pour un rapport
plus humain,
des revendeurs
reqionaux specialises
vous proposent
des logiciels sur mesure,
standards, ou
d'apprentissage.
Dn service technique
avant et apres-vente.
N'hcsitcz pas a contacter le
rcvcndcur le plus proche
pour un conseil
ou un renseignement
cippkz
en province
Annecy/Faverges
74210
Bayonne
64100
Bordeaux
33000
Clermont-Ferrand
63000
Epernay
51200
Lyon
69003
Marseille 1
13000
Montpellier
34000
Nancy/Laxou
54250
Orleans
45000
Perpignan
66000
Rouen
76100
Strasbourg
67000
Toulon
83100
Valenciennes
59300
EUROPROCESS
Si&ge social : Doussard
(50) 44.31.12
LE CALCUL INTEGRAL
3, rue Aristide-Briand
(59) 55.43.47
BOUTISOFT 33
9, rue de la Lande
(56) 91.55.08
NEYRIAL
5, Bd Desaix
(73) 35.02.70
MAGENTA GESTION
7, av. A.-Thevenet Magenta
(26) 53.19.93
CIRCE
9, rue P.-Florenoe
(78) 54.31.95
ORDITEL
Siege social : BELCODEN
(42) 04.44.00
IFI-MICRO INFORMATIQUE
9-12, rue Castilhon CENTER
(67) 58.58.28
SEMITEC
69, rue Mareville
(8) 340.43.38
AMC
13, rue des Minimes
(38) 62.62.58
MAB
2, place de Catalogne
(68) 34.04.46
CONSEIL COMPUTER
20, quai Cavelier-de-la-Salle
(35) 63.36.06
CILEC
18, quai Saint-Nicolas
(88) 37.31.61
S I A
Lepaillon, avenue de Brunet
(94) 23.74.30
MICROMEGA
38, rue de Famars
(27) 46.89.22
Si cette publicite vous interesse, contactez le
CALCUL INTEGRAL
Contrdlez le nettoyage memoire
Guy Mathieu
Lh article de Gerard MICHEL paru dans le numero 2 de POM T S etudie l T effet de
differentes methodes de "Garbage Collection" pour nettoyer la memoire centrale des
vieilles chaines qu T elle contient :
- "garbage" automatique par Applesoft,
- FRE (0) qui force le "garbage",
- d T autres "FRE", par exemple FRE (16) avec un programme approprie en langage
machine .
II peut etre interessant de voir de plus pres comment f onctionne le "garbage
collection", en vue de choisir la methode la plus convaincante pour un programme
donne. Uhe f agon de le f aire est de visualiser sur ecran graphique les stades
successifs de 1 T occupation memoire, ce que fait le programme liste ci-apres.
L T image ecran dont le fac-simile est reproduit ici montre que le "garbage"
automatique par Applesoft est fait au dernier moment, quand de la place doit
eff ectivement etre degagee : il necessite alors un certain temps d T attente (selon
les programmes, ce temps, souvent chiffre en secondes, peut depasser la minute).
Lh "garbage" force regularise le processus et ne demande que des temps unitaires
faibles. Mais bien souvent, la somme de ces temps unitaires atteint, et depasse
meme, parfois notablement, le temps total exige par le "garbage collection"
automatique .
Le choix entre diverses f agons de nettoyer la memoire se pose par consequent en
des termes differents, car on ne peut plus parler d T optimum general .
En mode conversationnel, on pref erera generalement des attentes courtes, meme si
le temps total est plus long : psychologiquement, c T est une solution mieux
acceptee; techniquement, le temps le plus long est de toute fagon celui qui depend
de l T operateur.
II n f en va pas de meme pour les travaux en temps d if fere ou semi-differe (par ex.
: chargement en memoire centrale d T un gros f ichier d T index).
Quelques commentaires sur le programme
Les instructions 60 a 67 etudient la composition et la position sur ecran de la
chaine de caracteres destinee a former les nombres de l T echelle.
- Les instructions 50 a 59 constituent un sous-programme de dessin de chiffres.
Les instructions 1500 a 1530 visent a mettre a egalite les 3 cas etudies : un
"LOMEM" remet a la zone de point eurs cependant que la memoire 40185
(indestructible par le DOS) contient les valeurs successives d T une variable Z
destinee a reinitialiser la "boucle J".
Enfin, chacun connait les vertus des memoires 111 et 112 (instruction 81) qui
contiennent la valeur decimale de la plus basse memoire occupee a chaque instant
par un tableau de "strings".
Pom T s No 3
17
HOME
5 D* * CHR* (4)
10 REM INITIALISATION
11 LOMEMi 16385: REM PROTECTION
ZONE HGR
13 POKE 40115,50
15 DIM A*<150)
20 REM DESSIN DU CADRE
21 HGR t HCOLOR* 2
22 HPLOT 50,0 TO 50,150 TO 270,1
50 TO 270,0
23 HPLOT 86,145 TO 86,150
24 HPLOT 186,145 TO 186,150
25 FOR Y m TO 15 STEP 50 t HPLOT
50, Y TO 55, Y: NEXT
26 REM ECHELLES
27 FOR J = TO 3
2? ZY% = 50 x J + 8
30 ZXZ = 36 - J I 8! IF ZXZ < 20 THEN
ZXZ ■ 20
31 ZA$ = STR* (J * 50)
32 GOSUB 60
33 NEXT J
34 ZXZ ■ 70JZY7. ~ 159tZA* - "2000
0"t GOSUB 6
35 ZXZ * 170: ZYZ •» 159 t ZA* * "30
00" ♦ GOSUB 60
36 HCOLOR= 3: VTAB 23: PRINT "NB
ITER.: " OCCUR. MEM.
♦ II
37 GOTO 1000
50 HPLOT ZXZ - 2,ZYZ TO ZXZ + 2,
ZYZ TO ZXZ + 2, ZYZ ~ 6 TO ZX
Z - 2, ZYZ - 6 TO ZXZ ~ 2, ZYZ
: RETURN
51 HPLOT ZXZ, ZYZ TO ZXZ, ZYZ - 6 TO
ZXZ - 2, ZYZ - 4: RETURN
52 HPLOT ZXZ - 2, ZYZ - 6 TO ZXZ +
2, ZYZ » 6 TO ZXZ + 2, ZYZ - 4
TO ZXZ - 2, ZYZ TO ZXZ + 2,Z
YZ: RETURN
53 HPLOT ZXZ - 2, ZYZ TO ZXZ + 2,
ZYZ TO ZXZ + 2, ZYZ - 6 TO ZX
Z - 2, ZYZ - 6: HPLOT ZXZ - 2
,ZYZ - 3 TO ZXZ + 2, ZYZ ~ 3:
RETURN
54 HPLOT ZXZ - 2, ZYZ - 6 TO ZXZ -
2, ZYZ - 2 TO ZXZ + 2, ZYZ - 2
: HPLOT ZXZ, ZYZ - 4 TO ZXZ,Z
YZ: RETURN
55 HPLOT ZXZ ~ 2, ZYZ TO ZXZ + 2,
ZYZ TO ZXZ + 2, ZYZ - 3 TO ZX
Z - 2, ZYZ - 3 TO ZXZ - 2, ZYZ
- 6 TO ZXZ + 2, ZYZ - 6: RETURN
56 HPLOT ZXZ - 2, ZYZ - 6 TO ZXZ -
2, ZYZ TO ZXZ + 2, ZYZ TO ZXZ +
2, ZYZ - 3 TO ZXZ - 2, ZYZ - 3
: RETURN
57 HPLOT ZXZ - 2, ZYZ TO ZXZ + 2,
ZYZ - 6 TO ZXZ ~ 2, ZYZ - 6: RETURN
58 HPLOT ZXZ - 2, ZYZ TO ZXZ - 2,
ZYZ - 6 TO ZXZ + 2, ZYZ - 6 TO
ZXZ + 2, ZYZ TO ZXZ - 2,ZYZ: HPLOT
ZXZ - 2, ZYZ - 3 TO ZXZ + 2,Z
YZ - 3: RETURN
59 HPLOT ZXZ + 2, ZYZ TO ZXZ + 2,
ZYZ - 6 TO ZXZ - 2, ZYZ - 6 TO
ZXZ - 2, ZYZ ~ 3 TO ZXZ + 2,2
YZ - 3: RETURN
60 REM ECRITURE SUR ECRAN H.R.
61 Z2Z * LEN (ZA*): FOR I == 1 TO
Z2Z
63 Z3Z « ASC ( MID* (ZA*,I,1>) -
47
64 ON Z3Z GOSUB 50,51,52,53,54,5
5,56,57,58,59
65 ZXZ » ZXZ + 8
66 NEXT I
67 RETURN
80 REM TRACE CARTE MEMOIRE
81 MM « PEEK (112) * 256 + PEEK
(111)
82 X = 50 + (MM - 16385) / 100
83 HPLOT X,J TO 270, J
84 VTAB 23: HTAB 12: PRINT J: VTAB
23: HTAB 33: PRINT MM
85 RETURN
1000 REM CONSTITUTION DE STRINGS
1010 FOR J = + Z TO 49 + Z
1020 A* (I) « ""
1030 FOR I » 1 TO 10
10^*0 A$(I) - A* (I) + "A"
1050 NEXT I
1060 IF J < 5 THEN VTAB 22: PRINT
" ' GARBAGE COLLECTION' AUTOMA
TIQUE" : GOSUB 80: GOTO 1500
1070 VTAB 1
1080 IF J > 99 THEN 1110
1090 IF J / 4 » INT (J / 4) THEN
PRINT FRE (0): VTAB 22: PRINT
"'FRE(O)' TOUTES LES 4 BOUCL
ES
110 GOSUB 80 : GOTO 150
11.10 PRINT FRE (0): VTAB 22: PRINT
"'FRE(O) A CHAQUE BOUCLE ,
ii
1120 GOSUB 80
150 NEXT J
1510 LOMEM: 16385
152 DIM A* (101)
1530 Z « PEEK (40185): POKE 4018
5,Z + 50 : IF Z < =100 THEN
100
18
Pom's No 3
J. J..
Un exemple de HELLO
Guy Mathieu
Rien n T est aussi triste que le programme "HELLO" dont sont affligees tant de
disquettes !
Un bon programme "HELLO" doit avoir deux caracteristiques :
- dire de quoi il s T agit (et ceci qu T il s'agisse d T un programme sophistique
destine a votre publicite, ou d T une simple disquette de travail utilisee chaque
jour) .
permettre de f aire en suite . . . ce qu T il est logique de f aire : un "RUN" sur un
programme, ou 1 f obtention du catalogue .
Accessoirement, il n T est pas desagreable que le programme "HELLO" soit
extremement simple a mettre au point .
Eh voici un exemple,
Le cadre est valable pour tous vos programmes : votre nom ou celui de votre
societe, un copyright, un sigle,
Dans le corps du programme, 2 instructions seulement servent a personnaliser .
L f instruction 11 definira tous les titres :
DATA X$, N,XI$, X2$,...N[de 1 a 3]
Dans 1 T exemple numero 1 ci-dessous :
X$ - "DISQUE DE TRAVAIL"
N = 2
XI$ = "PRESSES LA BARRE D f ESPACEMENT"
X2$ = "POUR OBTENIR LE CATALOGUE"
L T instruction 300 lance la suite. Ici PRINT D$ "CATALOG": END
Les choses ayant evolue, les programmes en cours de mise au point sont devenus
operationnels . Votre disquette est prete a etre utilisee ( peut-etre a etre
commercialisee _ Pourquoi pas ?) .
L T instruction 11 devient :
DATA MON PROGRAMME, 3, PROGRAMME DESTINE, A MONTRER A TOUS, A QUEL POINT JE
SAIS PROGRAMMER.
L T instruction 300 devient, elle :
PRINT D$ "RUN MON PROGRAMME".
Pom T s No 3
19
I D $ = C H R $ (4)
10 REM DATA DANS L ' ORDREJ NOM DE
CODE DU PROGRAMME, NOMBRE DE
LIGNES DE TEXTE,LIGNES DE TE
XTE
II DATA DISQUE DE TRAVAIL f 2 ♦ PRE
SSEZ LA BARRE D ' ESPACEMENT , P
OUR OBTENIR LE CATALOG
20 REM LECTURE DATA
21 READ Tl*
22 LI » LEN (Tl*)
23 HT « INT (18 - LI / 2)
24 Tl* » " " + Tl* + " "
25 TO* - LEFT* ("
",L1 +
30 READ NT
31 FOR I - 1 TO NT i READ T*(I): NEXT
50 EC = 3 J IF NT - '» THEN EC = 2
51 VT = 8 J IF NT < >= 2 THEN VT
10
100 HOME
110 INVERSE i FOR I - 1 TO 3 STEP
2 * VTAB It HTAB HT: PRINT TO
*: NEXT
120 VTAB 2\ HTAB HT » INVERSE i PRINT
Tl*
130 NORMAL
140 FOR I = 1 TO NT
15 VTAB VT: PRINT T*(I)
160 VT » VT + EC
170 NEXT
210 FOR I = 1 TO 4! PRINT t NEXT
220 VTAB 20 t INVERSE i PRINT "CO
PIC"
240 NORMAL
250 PRINT "GROUPE"
26 PRINT "EUREQUIP
-- > BARRE D'ESPAC."
27 PRINT "VAUCRESSON
POUR CONTINUER"
28 IF PEEK ( - 16384) < = 127
THEN 280
300 HOME : PRINT D*"CATALOG"
qppkzlleHII
TOO Wl 2 D'EXPOSITIOIM
SOUBIRON S.A.
En plein cceur de TOULOUSE
c'est :
100 m 2 d'exposition specialisee
Une equipe de techniciens
a votre service pour :
- Etudes
- Programmes
- Mise en place
- Formation
- Service apres-vente
SOUBIRON S.A.
BOUTIQUE MICRO IIMFORMATIQUE LIBRAIRIE IN FOR M ATI QUE
Tel.: (61) 21.64.39 - 21.04.57 . Telex LPS INF 521075J
9, rue Kennedy . 3 1 0OO TOULOUSE
CONTRAT D'EIMTRETIEN : S.A.V. DEPANNAGE RAPIDE
20
Pom's No 3
Analyse du directory Pascal (II)
Michel Crimont
A, Presentation generale
Nous avons vu dans le precedent numero comment lire directement le repertoire du
disque Pascal sans passer par le "FILER". Nous allons voir maintenant comment
tirer parti de ces procedures pour placer automatiquement dans un fichier unique
tous les repertoires de nos disques Pascal, ce qui permettra une recherche
beaucoup plus aisee; 1 T article du prochain numero montrera en complement comment
realiser les procedures de selection dans le catalogue.
Les types et variables precedemment definis restent valables, ainsi que les
procedures et fonctions, excepte ECRIREP et LIREREP que nous n T utiliserons pas
ici.
II convient d T ajouter le type ELEMENT qui est une ligne du catalogue definie comme
un RECORD comprenant :
GENRE : deux caracteres servant a definir 1 T utilisation et le type de programme;
par exemple J : Jeux, G : Graphisme, U : Utilitaire, M : Mathematiques -pour
l T utilisation- et P : Programme, L : Librairie, U : Unit, etc. - pour le type
NOMFILE : nom du fichier.
NOMDISK : nom du disque comportant le fichier.
NUMBOITE : numero de la boite contenant le disque.
DATEFILE : date de creation du fichier.
Les ELEMENTS sont places dans un fichier nomme GARDE. L'item NUMBOITE de la fiche
zero conserve le nombre de f iches du fichier.
PAPIER : nom du fichier d 1 impression .
QUIT : Booleen d T arret du programme.
IMP : impression si Vrai .
NUMCAT : nombre de f iches du catalogue.
NUMLINE : numero de la ligne courante sur l T ecran.
Afin de rendre le programme tres fiable, il est fait usage de diverses procedures
filtrant tout ce qui est entre par 1 T utilisateur au clavier; par ailleurs,
quelques procedures facilitent les affichages d ! ecran. C T est ainsi que :
MESSAGE : aff iche une chaine de caracteres a la ligne Y et efface la fin de la •
ligne .
ALARME : efface l'ecran, sonne, aff iche un message d T erreur et attend un [Return].
PRENCHAINE et ENTIER : permettent de prendre au clavier en toute securite et avec
correction eventuelle par la fleche arriere une chaine de caracteres ou un entier;
enf in un [Return] a la place d T une entree clavier renvoie la chaine ou 1 T entier
donne en Variable, ce qui permet de garder une valeur par defaut.
TRAIT et TRAITFIN : permettent l f ouverture et la f ermeture du fichier impression
avec edition d T un trait.
CONTINUE : permet la lecture d ! un ecran et attend un [Return] pour afficher la
suite .
ZEROELEM : donne une valeur par defaut a Element.
DECODATE ; renvoie une chaine de caracteres standard correspondant au type
Pom T s No 3
21
d T entree "Date" .
AFFICHE : place a l ! ecran une ligne du catalogue avec le numero de la fiche.
IMPRIME : imprime une ligne du catalogue.
RAPPEL : rappelle a la fin du programme qu T il f aut replacer le disque systeme dans
le lecteur 1 [£4:] .
TITRE : af f iche ou imprime les tetes de colonne.
Le f onctionnement du programme est le suivant : une fois le programme charge
apparaissent 4 options :
E(nregistrer, L(ire, M(odifier, F(in.
Si l T on demande 1 T enregistrement, le disque dont le repertoire sera enregistre
dans le catalogue sera place dans le lecteur 1 [£4:], le disque contenant le
catalogue general dans le lecteur 2 [£5:].
Afin d T eviter toute erreur, le disque du lecteur 2 devra porter un nom
particulier, ici "CARNET", le plus simple etant de prendre un disque Pascal
formate, de lui donner le nom de "CARNET" et de placer dessus CATALOG . Code, si
bien qu T il suffira lorsqu f on voudra ajouter un repertoire au catalogue de f aire
eX(ecute £5:CATAL0G, le disque "CARNET" contenant ainsi a la fois le programme et
le catalogue general .
La Lecture ne permet aujourd T hui que la lecture du catalogue general. Elle sera
perf ectionnee, pour permettre toutes les selections imaginables, dans le prochain
numero .
La Modification permet de modifier les elements d T une fiche; cette fiche apparait
a l T ecran. Si un item ne doit pas etre modifie, il suffit de taper le [Return]
pour garder la meme valeur, sinon on entre d T autres donnees.
B. Les procedures.
1. OUVERTURE
ouvre le fichier GARDE s T il existe et attribue a NUMCAT sa valeur (nombre de
fiches du catalogue). Si le fichier n T existe pas, il est cree et la premiere fiche
enregistree (fiche non utilisee en dehors de NUMBOITE qui contient NUMCAT).
2. REMPLIR
est charge de constituer une fiche a partir du repertoire du disque du £4: et des
donnees complementaires entrees au clavier. II faut d T abord lire le repertoire
avec LIREREP (4). Si ce repertoire ne peut etre lu, la procedure envoit un message
d T erreur .
S T il est lu, on prepare une fiche vierge avec ZEROELEM, puis avec ENTETE on place
le nom du disque et l T on demande le numero de la boite ou se range ce disque. Ces
valeurs sont ensuite gardees dans LM pour tous les f ichiers de ce disque, puis on
fait appel a la procedure FILES qui propose un par un les f ichiers et demande s T il
faut les inclure dans le catalogue (ce qui permet d T inclure seulement les nouveaux
f ichiers d T un disque sans reprendre les anciens deja enregistres ) .
Si l T on garde un fichier, on garde son nom, sa date et l T on demande son type et
son genre, puis on l T enregistre en place et l T on avance NUMCAT de 1. Quand le
disque ne possede plus d T autre fichier, on ferme le catalogue pour se mettre a
l T abri d T une coupure de courant ou d'un incident et on 1 T ouvre a nouveau.
3. ENREGISTRE
appelle simplement s de f agon iterative la procedure REMPLIR et donne les messages
d T ecran necessaires pour les manipulations.
4. LIRE et TRI
permettent simplement d T editer le catalogue soit a l T ecran, soit sur 1 T imprimante ;
22
Pom T s No 3
ces deux procedures seront par la suite developpees pour permettre des selections
dans le catalogue.
5. MODIFIE
aff iche un numero quelconque du catalogue qu'il faudra done noter auparavant par
une lecture et permet de modifier un item quelconque dans le cas par exemple oil
l T on change un disque de boite ou un fichier de disque, ou encore si un programme
a ete transforme en UNIT.
C. Le programme principal.
Le programme principal est tres simple :
PRINFO : attribue les caracteres de controle cPecran.
OUVERTURE : controle 1 T existence du disque "CARNET" dans le lecteur 2 et ouvre ou
cree le fichier "DONNEES".
Ehsuite, aff ichage 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 f iche zero de GARDE - f ermeture du fichier
et rappel d'inserer le disque systeme au cas ou l T on aurait place dans le lecteur
1 un autre disque .
Quelques perf ectionnements sont possibles au gre des lecteurs :
1. II est possible de placer dans le lecteur 2 un -disque simplement formate sans
nom particulier, auquel cas, lors de l T ouverture, le programme demande un nom pour
ce disque (avec PRENCHAINE et 7 caracteres maximum); grace a la procedure ECRIREP,
ce nom pourra etre place sur le repertoire du disque du lecteur 2. Le nom peut
egalement etre prealablement declare en constante dans le programme, mais
attention si vous f aites demarrer aceidentellement votre programme avec un disque
quelconque dans le lecteur 2 !
2. A la f in du programme, il est possible d T essayer d T ouvrir un fichier systeme du
lecteur 1. Si IORESULT=0, le disque systeme est dans le lecteur 1, sinon 1 T on
passe a RAPPEL.
□BRAIRIE LA NACELLE
INFORMATIQUE • ELECTRONIQUE • AUTOMATISME • MICROPROCESSEUR
TOUS OUVRAGES ET ABONNEMENTS
FRANQAIS ET ETRANGERS
Tous les ouvrages frangais ou etrangers signales dans cette revue peuvent etre obtenus ou commandes a La Nacelle
2, rue Campagne-Premiere 75014 PARIS - Tel. 322 56 46
Metro Raspail - Parking a la hauteur du 120 bd du Montparnasse
ouvert tous les jours lundi compris, sans interruption de 9 h 30 a 18 h 50, samedi fermeture a 17 h 50.
Pom T s No 3
23
PROGRAM CATALOG*
CONST MAXFILE =77;
TYPE CRTCOMMAND
CHOIDECA
DATE
■ ( EFEOS , EFEOL , INVERSE , NORMAL , DROIT , GAUCHE , TETE ) J
==SET OF char;
RECORD
* i ♦ ♦ 3 1 ;
u«.99
DISQUE
^PACKED
MOIS
JOUR
AN
end;
-RECORD
NOMDISQUE
B
NBRFICHE
C
datedisque;date;
:arrayco. ♦
;STRINGC7]
* integer;
; integer;
; integer;
OF INTEGER:
INTEGER
FICHIER
;integer;
; integer;
D,E
end;
=RECORD
debfichier
finfichier
typefichier;o. .7;
nomfichier ;stringc153;
dernbloc ;integer;
datefichier:date
end;
ELEMENT
VAR REPERTOIRE
==RECORD
GENRE
NOMFILE
NOMDISK
numboite
datefile
end;
;record
VOL
CATALOG
;arrayhi . .23
♦ STRINGC 153 ;
;stringc7d;
; integer;
:date;
of char;
end;
numlecteur ; integer;
home , bs , efl , efb , son , inv , norm , cr ; char ;
ch.com :char;
papier ;text;
garde tfile of element ;
numcat,numligne,i, j , k , l ; integer j
lm ; element;
quit, imp ; boolean;
;disque;
♦array ci ♦ .maxfile 3 of fichier
<* ! *>
(* PROCEDURES DIVERSES *)
<x*x)
FUNCTION LIREREP < NUM ; INTEGER ) ; BOOLEAN ;
BEGIN
<**I-X)
UNITREAD<NUM, REPERTOIRE, SIZEOF(REPERTOIRE) ,2) J
LIREREP J=IORESULT=0
<*$:i+*)
end;
PROCEDURE PRINFO;
BEGIN
24
Pom's No 3
home j==chr( 12) j efl * ~chr ( 29 ) ; bs :=chr(8); cr ;=chr(13);
son j==chr(7)j inv:=chr( 18) j norm * =chr ( 20 ) i efb:=chr(11)
end;
procedure prenreturnj
VAR SORT :char;
BEGIN
REPEAT
read (keyboard, sort)
until eol.n < keyboard )
end;
function prencar ( bonset ♦ choideca ) ; char j
var ch :char;
bon : boolean;
BEGIN
REPEAT
READ ( KEYBOARD, CH ) ;
IF EOLN ( KEYBOARD ) THEN CH;=CRJ
bon;=ch IN BONSET ;
if not bon then write(son)
else if ch in t ' '..' a '] then write (ch)
until bon;
prencar ;=ch
end;
function oui;boolean;
begin
oui * -prencar ( c ' ' > ' n ' ] ) in co 'j
end;
procedure message<y;integer;s;string) ;
BEGIN
gotoxy(0,y) ; write (s, efl)
end;
procedure alarme(s;string) ;
BEGIN
gotoxy (0,1); write ( son , efb ) j
message ( 1 0,s ) ;
message ( 12 ,' faites <return> ');
prenreturn
end;
procedure prenchaine(longmax;integer;bonset;choideca;var s;string) ;
var si ;stringc13;
cont ;string;
BEGIN
si;=' ';
cont;=' ' ;
REPEAT
IF LENGTH ( CONT ) = THEN SI C 1 ] *♦ =PRENCAR ( BONSET+CCRU )
ELSE IF LENGTH ( CONT )=LONGMAX THEN SI C 1 1 X =PRENCAR ( CCR , BS1 )
ELSE S1C1]:=PRENCAR(B0NSET+CCR,BS]) ;
IF S1C1] IN BONSET THEN CONT ; =CONCAT ( CONT , SI )
ELSE IF S1C1]=BS THEN
BEGIN
write (bs,' ',bs)j
delete (cont, length ( cont ) , 1 )
end;
until s1c1]=crj
if length ( cont )<>0 then s:=cont
Pom's No 3
25
ELSE WRITE(S)
END i
procedure entier (longm ax ♦ integer 1 var s .integer) i
var si :stringc13j
i 'integer j
cont .strings
okset :choideca;
BEGIN
OKSET i«C'0 / .. , 9 , 3JSi:* / '\ CONT : « ' ' ;
REPEAT
IF LENGTH ( CONT )=0 THEN SI HI 3 ♦ =PRENCAR ( OKSET+HCR3 )
ELSE IF LENGTH ( CONT ) =LONGMAX THEN SI L 1 3 : =PRENCAR ( CCR , BS3 )
ELSE SI CI 3 *~PRENCAR(OKSET+CCR,BS3 > J
IF S1C13 IN OKSET THEN CONT X =CONCAT ( CONT , SI )
ELSE IF Sim=BS THEN
BEGIN
write (bs,' ',bs)j
delete(cont,length(cont) ,1)
end;
until s1c13=crj
if length (cont )<>0 then
BEGIN
sj=o;
for ij=1 to length(cont) do
BEGIN
S:=S>tclO;S:=S + (ORD(CONTCI3)-ORD( '0' ) )
END \
end else write(s)
end;
procedure trait}
VAR I t INTEGER J
BEGIN
REWRITE (PAPIER, 'PRINTER? ' ) \
FOR TO 79 DO WRITE ( PAPIER , ' = ') \
WRITELN ( PAPIER )
END I
PROCEDURE TRAITFINJ
VAR I {INTEGER »
BEGIN
WRITELN ( PAPIER ) I
FOR It=l TO 79 DO WRITE ( PAPIER , ' = ') J
for ij=1 to 6 do writeln (papier) i
close ( papier ) t imp j -false
end;
procedure continue
BEGIN
message (22, 'pour continuer tapez <return> ')j
prenreturn j
numligne:=6;
GOTOXY ( 0,5) t WRITE (EFB)
end;
( x • xc)
(* PROCEDURES GENERALES SPECIFIQUES DE MASTER CATALOGUE *)
(***)
PROCEDURE ZEROELEM( VAR L ♦ ELEMENT ) J
BEGIN
WITH L DO
26
Pom's No 3
BEGIN
GENREC1D t~'Z' ; GENREC2] « = 'Z' i
NOMFILE : = NOMDISK J = " J NUMBOITE ; =0 ;
WITH DATEFILE DO
BEGIN
mois;=i; jour;=i;an;=i
END
END
end;
procedure decodate ( dt « date; var stdatetstring) }
var st : string;
procedure faitstring(ijinteger»var s ♦ string ) j
BEGIN
s: = " J
str<i,s> ;
if length ( s ) =1 then s;=concat( '0' ,s)
end;
BEGIN
stdate; = ' ' ;st; = " ;
with dt do
BEGIN
FAITSTRING ( JOUR , ST ) ;
STDATE ♦ =CONCAT ( STDATE , ST , '/' ) ;
FAITSTRING(MOIS,ST> J
stdate;=concat(stdate,st, v > ;
FAITSTRING ( AN , ST ) ;
STDATE ; =CONCAT < STDATE , ST )
END
end;
procedure affiche(index;integer;var elm;element> ;
var s ; string;
BEGIN
IF NUMLIGNE=21 THEN CONTINUJ
GOTOXY < , NUMLIGNE ) J
WITH ELM DO
BEGIN
write < index ; 4, genre el ik 2, genre c 2], nomfile; 16 ,nomdisk { 8 , numboite m > ;
decodate (datefile»s) ;write(s;9)
end;
numligne;=numligne+i
end;
procedure imprime(index;integer;var elm;ele:ment> ;
var s ; string;
BEGIN
WITH ELM DO
BEGIN
WRITE (PAPIER, INDEX; 4, GENREC 11 ;2,GENREC 23, NOMFILE ; 16, NOMDISK; 8, NUMBOITEM) ;
DECODATE ( DATEFILE, S) JWRITELN ( PAPIER , S ; 9 >
END
end;
procedure rappel;
BEGIN
GOTOXY (0,3); WRITE ( EFB ) J
MESSAGE ( 1 , ' LE CATALOGUE A ETE PLACE DANS LE *5i')}
WRITE (INV, SON ) ;
MESSAGE (12, 'REMETTRE LE DISQUE SYSTEME DANS *4;'>;
Pom's No 3
27
write ( norm ) j
message (14, 'faites <return> ' ) j prenreturn
end;
procedure titrej
var s ; string;
BEGIN
s;=' enr gt nom disque bt date';
if imp then writeln( papier, s> else message ( 4, s)
end;
(* ! *)
<* PROCEDURES PROPRES AU PROGRAMME CATALOGUE *)
(*•#* )
(* u v e r t u r e *>
(* ouvre le catalogue ou le cre£ /1non *>
procedure ouverture;
var bon ; boolean;
BEGIN
REPEAT
bon;==false;
(x$I~x )
RESET < GARDE , ' CARNET ; DONNEES ' ) ;
IF IORESULT==0 THEN
BEGIN
numcat;=garde a «numboite;
bon;==true
END ELSE
BEGIN
rewrite ( garde , ' carnet ; donnees ' ) j
zeroelem ( garde a ) ;
garde a »numboite;=i ;numcat;=i ;
put < garde) ;
close ( garde * lock ) ;
resekgarde, ' carnet ♦ donnees ' ) ;
bon;=(ioresult=0)
end;
if not ( bon ) then alarme (' placer "carnet" dans le *5;'>
until bon
<x*I+*)
end;
<* R E M P L I R *>
(* TRANSFERS LE REPERTOIRE DANS LE CATALOGUE *>
PROCEDURE REMPLIRJ
PROCEDURE ENTETEJ
BEGIN
L; -LENGTH (REPERTOIRE, VOL ♦NOMDISGUE) }
IF L>0 THEN
BEGIN
lm ♦ nomdisk ♦ : =repertoire ♦ vol ♦ nomdisquej
message ( 7 ,' nom du disque ; ' ) ; write ( lm ♦ nomdisk ) \
l;==o;
28
Pom's No 3
MESSAGE(8> 'NUMERO DE LA BOITE ? ' ) J ENTIER ( 4 , LM ♦ NUMBOITE ) ;
END
end;
procedure files?
mar temp ;element;
procedure enregistre<l; element) j
BEGIN
<**I-*)
seek ( garde » numcat ) j
garde* ;==l;
put ( garde ) j
numcat :==numcat+1 ;
if ioresultoo then
BEGIN
ALARME< 'ERREUR A LA COPIE...MJ
EXIT(FILES)
END
(**I+*>
end;
BEGIN
IF REPERTOIRE ♦VOL, NBRFICHE>0 THEN
BEGIN
FOR i;=l TO REPERTOIRE . VOL ♦ NBRFICHE DO
BEGIN
temp;=lm;
with repertoire ♦ catalog ci] do
BEGIN
GOTOXY<0,9> J WRITE (EFB) J
MESSAGE ( 12 » ' INCLURE LE FICHIER ' ) J WRITE ( NOMFICHIER, ' (O/N) ? '>;
IF OUI THEN
BEGIN
TEMP ♦ NOMFILE * =NOMFICHIER ;
TEMF'tDATEFILE;~DATEFICHIER;
MESSAGE( 13» 'TYPE (A..Y) ? ' ) ; TEMP . GENRE C 1 ] ; : =PRENCAR < E ' A ' . ♦ ' Y ' D ) J
MESSAGE < 16 » ' GENRE (A.»Y> ? ' ) ; TEMP ♦ GENRE C 2] ♦ =PRENCAR (['A'./Y'])!
ENREGISTRE(TEMP)
END
end;
END
end else alarme ( ' pas de fichier !')
end;
3egin ( * remplir *>
if lirerep^) then
BEGIN
zeroelem(lm) ;
entete;
files;
close(garde,lock> ;reset<garde, 'carnet;donnees' >
end else alarme( 'erreur lecteur 1.')
end;
procedure enregistre;
3EGIN
quit;==false;
while not quit do
Pom ' s No 3
29
BEGIN
gotoxy( 0,2) * write (efb) *
messageo, 'placer la disguette a inclure dans');
message ( 4 , ' le catalogue dans le lecteur 1 (*v. )')*
message ( 6, 'guand tout est pret > faites <return> ' ) * prenreturn *
gotoxy (0,5)j write ( efb ) ;
remplir;
message(22, 'continuer ? (o/n) ')}
guit:==not oui
END
END >
ULIRE&TRI *)
(* PROCEDURES A AMELIORER *)
PROCEDURE TRI*
VAR I ♦ INTEGER J
BEGIN
GOTOXY < 0,3) * WRITE (EFB) *
MESSAGE ( 3 , ' EDITION DU CATALOGUE GENERAL ' ) *
IF IMP THEN
BEGIN
MESSAGE (10,' ***** SUR L ' ' IMPRIMANTE *****')♦
WRITELN( PAPIER, 'EDITION DU CATALOGUE GENERAL ' 1 55 )} WRITELN ( PAPIER )
END *
titre*
for 11=1 to numcat-1 do
BEGIN
GET ( GARDE ) *
IF IMP THEN IMPRIME ( I , GARDE A ) ELSE AFFICHE ( I , GARDE A )
END t
message ( 22, 'c "est termine, tapez <return> ' ) * prenreturn
end;
procedure lire*,
var choix :char*
BEGIN
guit:==false*
gotoxy ( 0,2) j write ( efb ) *
message ( 3 , ' le catalogue doit etre dans le drive 2 ' ) j
while not quit do
BEGIN
GOTOXY ( ,4) J WRITE (EFB) * NUMLIGNE * ~6 *
MESSAGE (4, 'EDITION COMPLETE')*
MESSAGE(6, ' VOULEZ-VOUS IMPRIMER ? ')*IMP*=OUI*
IF IMP THEN TRAIT*
SEEK (GARDE , 1 ) *
TRI*
IF IMP THEN TRAITFIN *
MESSAGE (22, 'UNE AUTRE RECHERCHE (O/N) ? ' ) *GUIT *=NOT OUI
END
END*
( *$* )
y++ y+* ^+ »•# >^ w ixf ixf TAf \
/R ^Tw /
(*MODIFIE *)
(* MISE A JOUR D'UN NUMERO DU CATALOGUE*)
30
Pom ' s No 3
PROCEDURE MODIFIE;
VAR N : integer;
CH i CHAR t
BEGIN
GOTOXY (0,-1) J WRITE ( EFB ) J N ; = ;
REPEAT
MESSAGE ( 4, 'NUMERO DU CATALOGUE A MODIFIER ♦ ' ) J
ENTIER < ^ , N ) ;
UNTIL ( N<NUMCAT ) J
IF N = THEN EXIKMODIFIE) J
SEEK < GARDE , N ) JGEKGARDE) JLM*~GARDE A ;
NUMLIGNE : =6 J TITRE J AFFICHE ( N , LM > J
MESSAGE ( 8 , ' MODIFIEZ OU <RETURN> ' ) ;
MESSAGE (9, 'TYPE : ' ) } CH ; : =PRENCAR ( C ' A ' ♦ . ' Y ' , CR] ) J
IF(CHOCR) THEN LM. GENRE CI 3 t=CH
ELSE BEGIN GOTOXY ( 7 , 9 ) J WRITE ( LM ♦ GENREC 1 1 ) END;
MESSAGE ( 10, 'GENRE; ' > ; CH ; ==PRENCAR < C ' A ' ♦ ♦ ' Y ' , CR] ) ;
IF (CHOCR) THEN LM . GENRE C 2] ; =CH
ELSE BEGIN GOTOXY < 7 , 1 ) J WRITE ( LM ♦ GENREC2] ) END J
MESSAGE ( 1 1 > ' NOM DU FICHIER ;'>;
<X$V~X>
PRENCHAINE ( 15 , ( C ' A ' ♦ ♦ ' Z ' , ' ' . ♦ ' 9 ' , ' ♦ ' ] ) , LM ♦ NOMFILE ) ;
MESSAGE < 12 , ' NOM DU DISQUE X')\
PRENCHAINE ( 7 , ( C ' A ' ♦ ♦ ' Z ' , ' ' ♦ . ' 9 ' , ' ♦ ' 3 ) , LM ♦ NOMDISK ) ;
<X*V+X)
messageu3, 'numero de la boite;')?
entier ( 4 , lm . numboite ) ;
garde a ; ~lm j seek ( garde , n ) j put < garde ) ;
close ( garde » lock ) ; reset ( garde , ' carnet ; donnees ' ) ;
end;
(a******************* PROGRAMME PRINCIPAL XXXXXXXXXXXXXXXXXXXXX )
BEGIN
prinfo;
ouverture;
REPEAT
PAGE < OUTPUT > J WRITE ( INV ) ;
MESSAGE < » ' xxx SUPER CATALOGUE xxx')}
write < norm ) j
message < 5,' '>;write('il y a < ' , numcat-1 , ' > titres disponibles ♦ ' ) j
message(22, 'e (nregistrer , l ( ire , m< odifier , f(in ');
com;=prencar(ce' , 'ls'ms'F'])}
case com of
'E' ;enregistre;
' l ' ; lire ;
' m ' ; modifie
end;
until com='F' ;
seek < garde , ) ; garde a . numboite ; =numcat ; put ( garde ) ;
close < garde , lock ) ;
RAPPEL
END.
Pom's No 3
31
Notions de base
Gerard Michel
Depuis la parution du premier numero de POM'S, de nombreux lecteurs ont pris
contact avec la redaction pour exprimer leur embarras face au decalage (provisoire
...) existant parfois entre le niveau de leurs connaissances et celui de certains
articles publies dans la revue. Fort logiquement, ils ont aussi formule un souhait
: trouver dans POM T S quelques informations de base susceptibles de les guider dans
1 1 exploration de leur APPLE et de faciliter 1 T exploitation des articles
"techniques" .
Cette revendication est legitime ! S'etant donne pour objectif d r informer, si
possible, TOUS les utilisateurs d T APPLE, votre revue ne pouvait y rester
insensible. Aussi tenterons nous desormais d T assurer une rubrique destinee a
repondre aux questions f ondamentales posees par les lecteurs dans cette optique.
Nous prions simplement les "experts" de bien vouloir sauter allegrement ces
quelques lignes, temoignages d T une epoque pour eux revolue ...
Pour ce coup d T essai, nous traiterons des problemes touchant a la saisie des
programmes en lang age-machine et a la manipulation des f ichiers correspondants .
Vous avez ete nombreux, en effet, a rogretter de ne pouvoir utiliser les
programmes de ce type listes dans la revue, faute de pouvoir les rentrer en
machine. Pour clarifier la suite de 1 T expose, il peut etre utile de rappeler ici
quelques notions (tres elementaires ) concernant le systeme numerique a base 16 (le
f ameux HEXAdecimal ! ) .
En fait, il nous suffit de savoir que :
1) II comporte 16 'chiffres' : 0, 1 , . . 9, A( 1 ) , B( 11 ) , C( 1 2) , D( 1 3) , E( 1 4) , F( 1 5) -
2) WXYZ en Hexa est egal a : (W* 4096 )+(X* 256 )+( Y* 16)+Z en Decimal (exemple :
927C en Hexa egale 37500 en Decimal).
3) A l f inverse, 37500 en Decimal vaut en Hexa :
. INT( 37500/4096) = 9
. INT(( 37500 - (9*4096))/256) = 2
- INT(( 37500 - (9*4096) - (2*256))/l6) = 7
. 37500 - (9*4096) - ( 2*256) - ( 7* 16) = 12, soit C
4) Par convention, les nombres HEXA sont precedes d T un "$" .
1. Saisie d*un programme en lang age-machine (codes hexadecimaux) .
Prenons l'exemple du petit programme presente par J.-L. Meillaud . La marche a
suivre se decompose ainsi :
a) Sortir du BASIC pour rentrer dans le moniteur. Pour cela, tapez CALL- 151
[Return]. Une "*" apparait, vous etes en mode moniteur. Attention, cet animal
etrange ne comprend que 1 T Hexadecimal !
b) Pour saisir les instructions, la sequence est "Adresse (en HEXA, bien sur! )"
puis ":" puis "codes hexadecimaux des instructions". Vous taperez ainsi ;
1848: C9 81 F0 01 60 AD 00 CO [Return]
1850: 10 FB
1860: A9 DF 60 [Return]
32
Pom T s No 3
L'ORDINATEUR PERSONNEL
DE M" LE DIRECTEURDES VENTES.
Apple, c'est d'abord un nouveau concept. Celui
de la relation individuelle et directe entre I'homme et sa
machine. Un concept qui ouvre une troisieme voie entre
rien du tout et I'informatique de millionnaire. Apple,
c'est un outil personnel aussi facile a utiliser qu'une voi-
ture, aussi leger et peu encombrant qu'une simple
machine a ecrire et aussi peu coOteux qu'une photo-
copieuse. Un outil qui vous simplifie la vie en diminuant
la paperasse qui vous encombre, efficace et rapide
des qu'une decision s'impose.
Apple vous aide a repondre a des questions de
type "qu'arriverait-il si ?", traite vos problemes de ges-
tionlplanification, previsions, budget let 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 medecin, respon-
sabledes ventes ou du marketing, comptable ou financier.
pppHa
L'ordinateur personnel
Interesse, un peu sceptique ou dubitatif... Lorsque
votre revendeur Apple local aura resolu devant vous
quelques-uns de vos problemes, ou vous aura fait utiliser
vous-meme un programme de planification ou une
analyse sous forme de graphique couleur, vous aurez
compris I'interet d'avoir a portee de la main la puissance
de I'ordinateur personnel.
Etvous commencerez a penser a votre Apple.
Pour obtenir une information complete sur les systemes
d'ordinateur Apple II et Apple III, veuillez s'il vous plait
retourner ce coupon a : SEEDRIN SARL.
Avenue de l'Oceanie, Z.I. de Courtaboeuf, 91940 Les Ulis
Nom . . ..
Societe ..
Fonction
Adresse _.
Telephone
I
Si vous voulez lister votre programme, tapez :
1848.186? [Return] (de fa<?on generale, adresse debut .adresse fin).
c) Pour retourner au BASIC, tapez 3D0G [Return]. Le "prompt" du BASIC reapparait .
2. Sauvegarde d T un programme s ur disquette apres retour au BASIC.
La syntaxe est alors la suivante :
- BSAVE NOM, A$X, L$Y ou X designe l 1 adresse de depart du programme en HEXA, Y la
longueur du programme (nombre d T octets) exprimee en HEXA, et NOM tout simplement
le nom que vous desirez donner au programme.
. ou encore BSAVE NOM, AX, LY ou X et Y sont ex-primes en decimal.
L T adresse de depart ne pose pas de probleme; seule la longueur reclame quelque
attention. Si vous ne voulez pas vous livrer aux joies de 1 ' arithmetique
hexadecimale, le plus simple est encore de raisonner en decimal. Ainsi, dans notre
exemple (trivial) :
. Adresse de depart : 1848 HEXA = 6216 en decimal
. Adresse de fin : 1867 HEXA = 6247 en decimal
Longueur : 6247-6216+1=32 (vous pouvez aussi compter les octets ligne a ligne
...-). N T oubliez pas de rajouter un a la difference : c T est le fameux probleme des
intervalles entre les arbres
. Sauvegarde : BSAVE NOM, A6216, L32
3- Chargement d T un programme a partir de la disquette.
II vous sufflt de taper BLOAD NOM. L T adresse de depart et la longueur ont ete
memorisees au moment de la sauvegarde. Si vous desirez les retrouver, tapez, apres
le BLOAD :
. Pour l f adresse : PRINT PEEK( 43634) + 256 * PEEK( 43635)
. Pour la longueur : PRINT PEEK( 43616) + 256 * PEEK( 436 17)
Les deux valeurs vous seront donnees en decimal.
De meme, BRUN NOM permet de charger le programme NOM en memoire et de lancer son
execution (comme le RUN du BASIC).
Lhe f ois le programme charge, si vous voulez verifiez les codes hexadecimaux,
entrez dans le moniteur et tapez, comme ci-dessus, "adresse debut .adresse fin"
(adresses hexadecimales toujours).
Ehfin, supposons que vous ayez sur disquette un programme NOM en lang age-machine
(routine de nettoyage memoire, routine de tri ), commengant a 1 T adresse 37000
(en decimal), et que vous souhaitiez l T utiliser dans le cours d'un programme
BASIC. Les choses pourraient se presenter ainsi :
10 D$=CHR$(4)
20 HIMEM: 36500 (pour proteger la routine en lang age-machine )
30 PRINT D$" BLOAD NOM, S6,D1"
1000 CALL 37000 (execution de la routine en lang age-machine)
Suite du programme BASIC
Pom T s No 3
Conversion Pascal/BASIC/Pascal
Gilles Mauffrey
1. Principes generaux.
II etait utile de pouvoir regrouper sur une meme disquette pour les lecteurs de
Pom's des programmes d ! origines diverses : Pascal ou BASIC. Le programme presente
ici repond a cet objectif . Avant de decrire brievement le programme, nous allons
mettre en evidence les principales differences entre le DOS 3.3 et le Pascal
Operating System (P.O.S.).
Tout d f abord le DOS raisonne en piste et secteur, tandis que le POS ne connait
theoriquement que les blocs de 512 octets. Uh bloc correspond en fait a deux
secteurs consecutifs. De plus la sectorisation soft des pistes est differente
(voir "Beneath Apple DOS n ) :
- pour le DOS 3.3, les secteurs sont numerotes 0, 13, 11, 9, 7, 5, 3, 1, 14, 12,
10, 8, 6, 4, 2, 15.
- pour le POS, la numerotation est 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11,
13, 15.
Toutefois, le DOS 3.3 permet de lire une disquette Pascal, puisque la table de
sectorisation se trouve aux adresses $BFB8 et suivantes.
L T implantation des "directorys" est egalement differente. Sur une disquette
Pascal, le directory commence au bloc 2 et se termine au bloc 6; chaque
enregistrement (fichier ou en-tete) occupant 26 octets. Pour le DOS 3-3 le
directory debute en piste 17 secteur 0, chaque fichier occupant 35 octets.
Une autre difference fondamentale concerne 1 T implementation des fichiers eux-
memes. Eh DOS 3-3, les fichiers ne sont pas necessairement sur des secteurs
consecutifs, tandis que le POS ecrit les fichiers sur des blocs consecutifs, ce
qui slmplifie beaucoup la lecture de ces fichiers en assembleur .
2. Description des enregistrements "f ichier" du directory Pascal.
Comme il a ete dit plus haut, chaque enregistrement du directory comprend 26
octets; nous ne decrirons ici que les enregistrements concernant les fichiers.
Traduisant la description de M. Crimont (Pom T s 2), nous obtenons:
- Bloc de debut de fichier : 2 octets (exemple bloc 6 : 06 00)
Bloc de "fin" de fichier : 2 octets (en fait c T est le bloc de debut du fichier
suivant )
- Type du fichier : 2 octets
Norn du fichier : 16 octets (1 octet pour la longueur du nom et 15 octets pour le
nom)
Nombre d* octets inutilises dans le dernier bloc: 2 octets (toujours 00 02 car ce
bloc est le debut du fichier suivant)
Date de creation du fichier : 3 octets ( 1 octet pour la longueur 02 et 2 octets
pour la date elle-meme 01 02)
annee - jour imois
| | L , 1 fc 1 I 1„l, r> j j > 1 j 7 bits v pour 1 T annee, 5 pour le jour et 4 pour le mois
02 01
Pom T s No 3
35
3- Deroulement du programme.
Pour simplif ier l'ecriture du fichier sur la disquette BASIC, nous avons utilise
la commande BSAVE du DOS. Ceci a pour inconvenient de limiter la longueur des
fichiers transportables par ce programme; cependant ceci ne s T est pas avere genant
pour l T utilisation que nous en avons f aite .
Apres avoir demande le nom du fichier Pascal a transferer et le nom du fichier
"BASIC" transfere, le programme verif ie 1 T existence du fichier sur la disquette
Pascal; en cas de fichier inexistant, le programme s ! arrete. Uhe f ois trouve, le
fichier est charge en memoire a partir de l T adresse $2000, puis charge sur la
disquette "BASIC".
Quatre sous-programmes sont utilises :
- Le sous-programme PRERWT est appele 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 transf orme le numero de bloc en numeros de piste et de
secteur .
Nous n T analyserons pas ici le programme permettant de transferer le fichier
"BASIC" sur une disquette Pascal dans la mesure oil la demarche suivie est
pratiquement la meme . Les lecteurs courageux pourront cependant l ! amelorier en
permettant d T introduire la date, puisque ce programme prend la date du dernier
fichier existant sur la disquette Pascal, ce qui peut poser des problemes en cas
de diquette vierge.
source file: pascbas
next object file name is pascbas ♦ ob jo
090 o:
i
ORG
$900
fdse:
2
CROUT
EQU
*FD8E *
<RETURN>
FDEDi
3
COUT
EQU
*FDED *
ECRITURE ECRAN
FD35 ♦
4
RDCHAR
EQU
$FD35 *
LECTURE CLAVIER
FC9C *
5
CLREOL
EQU
*FC9C
FC58:
6
HOME
EQU
*FC58
03F2:
7
RESET
EQU
*3F2
0900 :
8
*
09oo:
9
* PARAMETRES
POUR RWTS
09 i
10
*
oo o o :
11
DSECT
00 J
12
RPLIOB
DS
oo or.
13
RF'LSLT
DS
0002:
14
RPLDRV
DS
oo 03:
15
RPLVOL
DS
0004:
16
RPLTRK
DS
0005:
17
RPLSEC
DS
0006:
18
RPLDCT
DS
2
0008:
19
RPLBUF
DS
2
oooa:
20
RPLSIZ
DS
2
oooc:
21
RPLCMD
DS
1
oooi:
22
READ
EQU
$01
0002:
23
WRIT
EQU
$02
oo od:
24
RPLCRD
DS
1
oo oe:
25
RPLTVL
DS
1
ooof:
26
RPLPSL
DS
1
0010:
27
RPLPDR
DS
1
0900 :
28
DEND
09 o o :
29
0900:
30
* UTILISATION DE LA PAGE
ZERO
Pom T s No 3
0900J
oo o o :
0002:
0003:
0004:
ooos:
0007:
ooos:
oo^8:
0900:
o?oo:
31 *
32 PTR EQU
33 PISTE EQU
34 SECTEUR EQU
35 CMD EQU
36 DRIVE EQU
37 HBUF EQU
38 TEMP EQU
39 PREG EQU
40 *
41 * AUTRES ADRESSES
*0
*2
*3
$4
$5
$7
*8
*48
* POINTEUR GENERAL
0900 :
42
%
20 ♦
43
BUFFER
EQU
*20
ISE3*
n n
44
1 r\ r*i r*i 1
LOCF RL
EQU
$3E3
D3D9*
45
RWTS
EQU
*3D9
3h B8*
46
bLLUtb
EQU
*BFB8
3900 ♦
48
%
090 *
49
w r\ cr c* 1 1 t
* Dfc.fc.UI
PROGRAMME
1)9 J
5
090 ♦ 20
58
FC
51
CONvER
ICD
JbK
nunc.
)903i A9
**> a
20
52
! HA
* ••. c» u r r c. v\
J905J85
07
53
CTA
Li p 1 1 cr
rl d u r
)907i A2
00
54
L.U A
♦ U U
)9 09*fc!D
16
oc
55
rnr.T
ECRI
rifc.00 f A
190CJC9
E«E«
56
Lrlr
* / ♦
)90E*h
06
57
c« c*
fc»fc.U
1 Kfct
)91 ♦ 20
ED
FD
58
ICC'
rn 1 it
)913:E8
59
T XI V
IN a
1914* DO
F3
60
O M CT
fc«Nfc.
cr r-ciT
fc. L K i.
I916J A2
61
EN I REE
LUa
iF U
1918: 20
35
FD
62
MAJF
JoK
IMJUrirlrV
I91B:C9
88
63
CMP
t*88
!9id: do
0B
64
BNE
INBUF
19 1 F i E0
65
CPX
#00
1921 * F0
F5
66
BEQ
MAJF
1923:20
ED
FD
67
JSR
COUT
I92A:CA
68
DEX
1927: 4C
18
09
69
JMP
MAJF
i92A:C9
8D
70
INBUF
CMP
t*8D
i92C:F0
18
71
BEQ
FINF
92EJC9
E0
72
CMP
t*E0
1930:90
02
73
BCC
ADDBUF
932:29
DF
74
AND
t*DF
934:49
80
75
ADDBUF
EOR
#*80
936:9D
F0
OC
76
STA
FICH,X
939:49
80
77
EOR
t*80
93B:20
ED
FD
78
JSR
COUT
93E:E8
79
INX
93f:eo
OF
80
CPX
#15
941:00
D5
81
BNE
MAJF
943:4c
73
0B
82
JMP
ERR1
946:8A
83
FINF
TXA
947:8D
FF
OC
84
STA
LFIC
94A:20
9C
FC
85
JSR
CLREOL
94D:20
8E
FD
86
JSR
CROUT
950:A2
00
87
LDX
to
952JBD
2F
OC
88
SUIDO
LDA
MEDO,X
* A REMETTRE A APRES RWTS
*CHERCHE L'ADRESSE DE LA TABLE POUR RW
^DEFINITION "SOFT" DES SECTEURS DOS 3.
0955;
:C9
BB
89
CMP
#' *,
0957!
!F0
07
90
BEQ
SADO
09591
{ 20
ED
FD
91
JSR
COUT
09 sc;
!E8
92
INX
09 5D!
!4C
52
09
93
JMP
SUIDO
0960!
:A2
00
94
SADO
LDX
to
0962!
!20
35
FD
95
ENDOS
JSR
RDCHAR
09651
:C9
88
96
CMP
t*88
0967!
f D0
0B
97
BNE
ACDOS
0969!
tEO
00
98
CPX
t*0
09 6B!
:fo
F5
99
BEQ
ENDOS
09 6D!
t 20
ED
FD
100
JSR
COUT
0970!
CA
101
DEX
0971!
:4C
62
09
102
JMP
ENDOS
0974!
!C9
8D
103
ACDOS
CMP
t*8D
0976!
F0
14
104
BEQ
FINDO
0978!
»C9
EO
105
CMP
t*E0
097A!
!90
02
106
BCC
ADDOF
097C!
29
DF
107
AND
t*DF
097E!
9D
00
0D
108
ADDOF
STA
FIDQ,X
0981!
20
ED
FD
109
JSR
COUT
0984!
E8
110
INX
0985!
:eo
IE
111
CPX
t30
09875
DO
D9
112
BNE
ENDOS
0989!
!4C
73
0B
113
JMP
ERR1
09 8C!
!8A
114
FINDO
TXA
098D!
t8D
IF
0D
115
STA
LFID
0990!
20
9C
FC
116
JSR
CLREOL
0993!
120
8E
FD
117
JSR
CROUT
0996!
!A2
00
118
LDX
to
0998!
! BD
59
OC
119
ECRMO
LDA
MODEMP,X
099B!
tC9
BB
120
CMP
t' t
099D!
tFO
07
121
BEQ
FINDE
099F!
20
ED
FD
122
JSR
COUT
09 A2!
E8
123
INX
09A3!
t4C
98
09
124
JMP
ECRMO
09A6!
20
8E
FD
125
FINDE
JSR
CROUT
09A9!
A 9
00
126
FIN2
LDA
to
09 AB!
20
35
FD
127
JSR
RDCHAR
09 AE !
C9
8D
128
CMP
t*8D
09B0!
DO
F7
129
BNE
FIN2
09 B2!
130
Pom's No 3
37
09 B 2
131
X SAUVEGARDE
DE LA TABLE DOS
09B2J
132
09132
I A2
133
LDX
to
09B4!
> BD
B8
BF
134
LOOP L DA
SECDES f X
09 B7!
(9D
35
OD
135
STA
DOSTAB,X
09 BA!
(E8
136
INX
09 BB J
(EO
10
137
CPX
*16
09 BD !
EDO
F5
138
BNE
LOOP
09 BF!
139
*
09BF
140
x RECHERCHE
DES POINTEURS PASCAL
09 bf;
141
X
09 BF
♦ 20
C5
OB
142
JSR
TABPS
09C2!
t A9
00
143
LDA
10
09C4J
1 85
02
144
STA
PISTE
09C6!
( A9
04
145
LDA
*4
09C8!
(85
03
146
STA
SECTEUR
09CA!
[ A9
01
147
LDA
#1
09CC!
(85
05
148
STA
DRIVE
09ce;
; A9
01
149
LDA
♦READ
09D0!
!85
04
150
STA
CMD
09D2!
120
94
OB
151
JSR
PRERWT
09D5!
152
X
09 D5
153
x TRAITEMENT
DU CATALOG
PAS
CAL.
09D5!
154
X
09 D5
$20
E3
03
155
JSR
LOCPRL
AO
00
190
LP 2
LDY
♦
09D8!
1 20
D9
03
156
JSR
RWTS
18
191
CLC
09DB J
(A9
00
157
LDA
#0
A9
1A
192
LDA
♦26
09DD!
!85
48
158
STA
PREG
65
06
193
ADC
HBUF-1
09DFJ
! AD
02
20
159
LDA
BUFFER+2
85
06
194
STA
HBUF-1
09E2!
; oa
160
ASL
A
90
02
195
BCC
CNF
09E3:
(85
08
161
STA
TEMP
E6
07
196
INC
HBUF
09E5!
;E6
03
162
LOOF'l INC
SECTEUR
Bl
06
197
CNF
LDA
(HBUF-1 ) ,1
09E7J
:as
03
163
LDA
SECTEUR
CD
FF
OC
198
CMP
LFIC
09E9J
tC9
10
164
CMP
#*10
DO
13
199
BNE
PASTR
09EBJ
EDO
06
165
BNE
PLBU
AD
FF
OC
200
LDA
LFIC
09ED!
! A9
00
166
LDA
*0
85
00
201
STA
PTR
09EFJ
!85
03
167
STA
SECTEUR
C8
202
LP3
INY
09F1!
\E6
02
168
INC
PISTE
Bl
06
203
LDA
(HBUF-1 )
09F3!
!E6
07
169
PLBU INC
HBUF
D9
EF
OC
204
CMP
FICH-1 ,Y
09F5J
tA9
01
170
LDA
♦ READ
DO
06
205
BNE
PASTR
09F71
(85
04
171
STA
CMD
C6
00
206
DEC
PTR
09F9J
(20
94
OB
172
JSR
PRERWT
FO
IE
2 07
BEG.
TROUVE
09FC
(20
E3
03
173
JSR
LOCPRL
DO
F2
208
BNE
LP3
09FF1
!20
D9
03
174
JSR
RWTS
CA
209
PASTR
DEX
0A02J
(A9
00
175
LDA
♦
DO
D6
210
BNE
LP2
0AO4)
(85
48
176
STA
PREG
20
8E
FD
211
JSR
CROUT
0AO6!
(C6
08
177
DEC
TEMP
A2
00
212
LDX
♦
0AO8i
!A5
08
178
LDA
TEMP
BD
CS
OC
213
ECPA
LDA
PASFI, X
oaoa;
(DO
D9
179
BNE
LOOP1
C9
BB
214
CMP
♦ ' i
oaoc;
! A9
20
180
LDA
♦<BUFFER
FO
OA
215
BEQ
FIN1
OAOE!
(85
07
181
STA
HBUF
20
ED
FD
216
JSR
COUT
(A9
00
182
LDA
*>BUFFER
E8
217
INX
0A121
85
06
183
STA
HBUF-1
4C
4E
OA
218
JMP
ECPA
:ae
10
20
184
LDX
BUFFER+$10
20
D3
OB
219
JSR
TABDO
OA 17 J
(8A
185
TXA
6C
F2
03
220
FIN1
JMP
(RESET)
0A18!
(18
186
CLC
38
221
TROUVE
SEC
0A19J
(AS
06
187
LDA
HBUF-1
A5
06
222
LDA
HBUF-1
OA IB)
(69
06
188
ADC
♦ 06
E9
06
223
SBC
♦ 6
0A1DJ
(85
06
189
STA
HBUF-1
85
06
224
STA
HBUF-1
38
Porn ' s No 3
0A69!
:bo
02
225
BCS
ADR1
0A6B:
!C6
07
226
DEC
HBUF
oa6d:
t AO
00
227
ADR1 LDY
to
0A6FJ
:ei
06
228
LDA
(HBUF-l ) ,Y
0A71!
!8D
21
OD
229
STA
DEFPA
0A74J
!C8
230
INY
0A75J
IB1
06
231
LDA
(HBUF-l) ,Y
0A77J
!8D
22
OD
232
STA
DEFPA+1
0A7AJ
!C8
233
INY
0A7BJ
:bi
06
234
LDA
< HBUF-l ) ,Y
0A7DJ
!8D
23
OD
235
STA
FIFPA
0A80!
!C8
236
INY
0A81J
:bi
06
237
LDA
(HBUF-l) ,Y
0A83J
!8D
24
OD
238
STA
FIFPA+1
0A86J
239
0A86
24
* LES POINTEURS DE DEBUT ET FIN DE FICHIERS
0A86)
241
*
0A86I
(18
242
CLC
0A87i
1&5
06
243
LDA
HBUF-l
0A89J
169
16
244
ADC
#22
0A8B!
!85
06
245
STA
HBUF-l
0A8D)
!90
02
246
BCC
REST
0A8Fi
IE6
07
247
INC
HBUF
0A91i
!AO
00
248
REST LDY
#0
0A93)
!B1
06
249
LDA
( HBUF-l ) f Y
0A95J
,8D
45
OD
250
STA
RESPA
0A98!
!C8
251
INY
0A99J
;bi
06
252
LDA
(HBUF-l ) ,Y
0A9BJ
!8D
46
OD
253
STA
RESPA+1
0A9EJ
254
0A9E!
255
* CALCUL DES
SECTEURS ET PISTES
0A9Ei
256
X
0A9Ei
tA2
00
257
LDX
to
OA AO !
!20
El
OB
258
JSR
CALPSE
0AA3 \
IA2
02
259
LDX
#2
OAA5!
;20
El
OB
260
JSR
CALPSE
OAA8!
t38
261
SEC
OAA9!
(AD
23
OD
262
LDA
FIFPA
OAAC)
! ED
46
OD
263
SBC
RESPA+1
OAAF)
!8D
23
OD
264
STA
FIFPA
OAB2 i
;bo
OB
265
BCS
PLULO
OAB4J
ICE
24
OD
266
DEC
FIFPA+1
OAB7 J
!A9
OF
267
LDA
t*OF
OAB9 <
!2D
23
OD
268
AND
FIFPA
OABC)
!8D
23
OD
269
STA
FIFPA
OABFi
270
X
OABF
271
x ECRITURE DU PROGRAMME A PARTIR DE *20
OABFi
272
X
OABF J
, A9
20
273
PLULO LDA
t<BUFFER
OAC1!
!85
07
274
STA
HBUF
OAC31
AD
21
OD
275
LDA
DEFPA
OAC61
85
03
276
STA
SECTEUR
0AC8J
AD
22
OD
277
LDA
DEFPA+1
OACB \
85
02
278
STA
PISTE
OACD J
A 9
01
279
L003 LDA
*READ
OACFJ
85
04
280
STA
CMD
oadi;
!20
94
OB
281
JSR
PRERWT
OAD41
; 20
E3
03
282
JSR
LOCPRL
0AD71
!20
D9
03
283
JSR
RWTS
OADA J
!A9
00
284
LDA
to
CONSERVES
Pom's No 3
39
OADC!
!85
48
285
OADE \
iE6
03
286
OAEO!
tA5
03
287
oaez;
!C9
OF
288
OAE4!
f DO
06
289
OAE6!
tA9
00
290
OAE81
1 85
03
291
OAEA!
tE6
02
292
oaec;
!A5
02
293
LABA
OAEEi
tCD
24
OD
294
OAF1
£90
OD
295
OAF3!
tFO
02
296
OAFS!
,B0
OF
297
OAF7!
! A5
03
298
VERSEC
OAF9!
CD
23
OD
299
OAFCJ
!90
02
300
OAFEI
J BO
06
301
OBOO
:e6
07
302
PREFI1
OB 2
!90
C9
303
OB 04
► BO
C7
304
OB 06 J
!20
D3
OB
305
PREBAS
OB 09!
1 20
8E
FD
306
OBOC
tA2
00
307
OBOE!
! BD
47
OD
308
L.005
OBlli
tC9
BB
309
0B13!
tFO
07
310
0B15!
(20
ED
FD
311
0B18!
!E8
312
OB 19 J
t4C
OE
OB
313
0B1C!
!A2
00
314
SUI1
OB IE!
» BD
00
OD
315
L006
0B21!
!20
ED
FD
316
OB 24!
IE8
317
, OB 25!
:eo
IE
318
OB 27!
190
F5
319
OB 29!
!A9
AC
320
0B2B!
:20
ED
FD
321
0B2E!
!A9
CI
322
0B30!
t 20
ED
FD
323
OB 33!
!A9
A4
324
OB 35!
J 20
ED
FD
325
0B38!
: A9
20
326
0B3A!
!20
DA
FD
327
OB 3D!
!A9
00
328
0B3F!
t 20
DA
FD
329
0B42!
:A9
AC
330
0B44!
!20
ED
FD
331
OB 47!
:A9
CC
332
OB 49!
{ 20
ED
FD
333
0B4C!
i A9
A4
334
0B4E!
1 20
ED
FD
335
0B51!
!38
336
OB 52!
IA5
07
337
0B54!
!E9
20
338
0B56!
1 20
DA
FD
339
OB 59)
:A9
FF
340
OB SB)
20
DA
FD
341
0B5E)
:A9
AC
342
0B60)
;20
ED
FD
343
STA
PREG
0B63J A9
C^
INC
SECTEUR
tip. as i *? n
U P O vJ ♦ x~ u
pn
pn
LDA
SECTEUR
n F! A P ♦ A 9
F;9
P x~
CMP
**0F
U P O ri ♦ x- U
pn
pn
BNE
LABA
np* ah ♦ n
U DOU ♦ x~ U
PP
pn
LDA
10
Up/ U ♦ OL
p r>
r x'
U o
STA
SECTEUR
INC
PISTE
U D / O ♦
LDA
PISTE
UP/ O ♦
CMP
FIFPA+l
UP/ O ♦
BCC
PREFIl
U P / %3 ♦ H x~
u u
BEQ
VERSEC
ft p 'j «=: ♦ '? n
U D / %J ♦ x~ U
pp
rn
BCS
PREBAS
U P / O ♦ x~ U
PP
OC
pn
r v
LDA
SECTEUR
(1P7P ♦ AO
o /
CMP
FIFPA
UP/ V ♦ x~U
pn
XL. V
pn
r u
BCC
PREFIl
ftp p n ♦ c»n
4A
n r
u u
BCS
PREBAS
ftp pp ♦ro
Updo ♦ LY
t ii n
INC
Ht!UF
0B85 *F0
7
BCC
L003
0B87J20
pn
XL U
F*n
BCS
L003
ft p q a ♦ p p
JSR
TABDO
ftp pp ♦ 4P
p n
o u
fl F!
U D
JSR
CROUT
ftp, pp ♦ n n
UP OL ♦ x- U
pp
O XL
pn
r \j
LDX
to
0BV 1 ♦ 6C
r Z
03
LDA
BLO,X
fl Pi 9 4 1
CMP
*' t
BEQ
SUI1
flFi94 1
JSR
COUT
0R94 1
INX
ftp 04 * on
UP 7 *t ♦ X~U
CO
XL O
fl ^
U >3
JMP
LOOS
ftp 07 ♦ Pxl
UP 7/
u u
LDX
10
UP 77 ♦ O %J
n 1
u X
LDA
FIDO,*
ft P» O p ♦ A
UD7D + H \ J
U x~
JSR
COUT
U D / V ♦ rl U
n 4
U i
INX
ftCi op ♦ Q 1
up / r ♦ / J.
n n
u u
CPX
*30
n P! A 1 ♦ A s
U D l"l J. ♦ H vJ
fl ^
BCC
L006
OF! 1 A fl
ul 1 no ♦ n w
05
LDA
#' ,
OF! AS 1 91
n n
JSR
COUT
ftp A7 ♦ A n
U P l"l / ♦ rl U
fl p
LDA
# ' A
0.F! A9 t A 9
U P ri / ♦ 1*1 /
fl fl
u u
JSR
COUT
OF! AR i 9 1
fl fl
LDA
#'*
u p ri 1/ ♦ uo
fl'7
JSR
COUT
fiFi AF IAS
LDA
*<BUFFER
n F! p. n ♦ 9 1
U P U ♦ 71
fl fl
u u
JSR
*FDDA
ft DP? ♦ AKT
U P P JL. ♦ M \J
fl 4
LDA
#>BUFFER
n pp: 4 jAn
U P l..» ~ ♦ ri U
flr
JSR
$FDDA
HP: P. A 191
U D O ♦ 7 J.
fl fl
u u
LDA
*' f
ftPp'Q ♦ AO
U P O ♦ ri 7
fl fl
u u
JSR
COU 1
OBEiAt AO
03
LDA
# L
obbc:91
00
JSR
nni it
COUT
OB BE ♦ A5
05
LDA
OBCO : AO
02
JSR
COUT
0BC2* 91
V K«' \*f T w *!•
SEC
0BC4i60
LDA
HBUF
SBC
#<BUFFER
JSR
*FDDA
LDA
#*FF
JSR
*FDDA
LDA
#' *
JSR
COUT
344
LDA
#'D
345
JSR
COUT
346
LDA
# z
3^7
JSR
COUT
348
JSR
CROUT
3^9
JMP
(RESET)
351
%
« i- n
352
* SOUS
ROUTINE ERREUP
353
o in* yi
354
i~* r*i r*i «i
ERR1
LDX
*U
355
JSR
CROUT
356
JSR
CROUT
357
LDA
#*87
358
JSR
COUT
359
ERRC
LDA
ERMES t X
360
CMP
*' i
361
BEQ
FINER
362
JSR
COUT
363
INX
364
JMP
ERRC
365
FINER
JSR
CROUT
366
JMP
(RESET)
o z o
Joo
o z o
007
* PREPARATION DE RWTf.
o/ U
371
PRERWT
JSR
LOCPRL
372
STY
PTR
373
STA
PTR+1
374
LDA
PISTE
O T KT
375
LDY
♦RPLTRK
376
STA
(PTR) ,Y
o **y **y
377
LDA
SECTEUR
J/O
LDY
♦RPLSEC
37V
STA
(PTR) ,Y
380
LDY
♦RPLBUF
38 1
LDA
#>BUFFEf
o o r>
382
STA
(PTR) ,Y
o o o
383
INY
38^
LDA
HBUF
385
STA
(PTR) ,Y
386
LDA
CMD
387
LDY
♦RPLCMD
o o o
388
STA
(PTR) ,Y
o o o
38V
LDA
to
39
LDY
#RPLVOL
391
STA
(PTR) ,Y
392
LDA
DRIVE
393
LDY
♦RPLDRV
394
STA
(PTR) f Y
395
RTS
40
Pom's No 3
obcs:
0BC5J
0BC5tA2
0BC7JBD
obca:9d
0BCD+E8
OBCEtEO
OBDOtDO
00
25
B8
10
F5
OD
BF
397 *
398 * MISE EN PLACE DE LA SECTORISATION PASCAL
LDX #0
PASTAB,X
SECDES,X
399 TABPS
400 Bl
401
402
403
404
LDA
STA
INX
CPX
BNE
RTS
#16
Bl
0BD3:
0BD3:
0BD3t
0BD3 ♦ A2
0BD5 : BD
0BD8:9D
0BDBJE8
obdc:eo
OBDEJDO
0BE0J6O
407 *
408 * MISE
409 *
00 410 TABDO
35 OD 411 B2
B8 BF 412
413
10 414
F5 415
416
EN PLACE DE LA SECTORISATION DOS 3*3
LDX
LDA
STA
INX
CPX
BNE
RTS
#0
DOSTAB,X
SECDES,X
#16
B2
obei:
418
X
OB El «
419
* CONVERSION
SECTEUR-B
obei:
420
X
OBEI J AO
00
421
CALPSE
LDY
#0
0BE3U8
422
CLC
0BE4JA9
02
423
LDA
#02
0BE6J7D
21
OD
424
ADC
DEFPA,X
0BE9:9D
21
OD
425
STA
DEFPA t X
0BEC:9O
03
426
BCC
BOUCO
OBEEtFE
22
OD
427
INC
DEFPA+1,X
OBFlilE
22
OD
428
BOUCO
ASL
DEFPA+1 ,X
0BF4:iE
21
OD
429
ASL
DEFPA ,X
0BF7:9O
03
430
BCC
BOUC1
obf9:fe
22
OD
431
INC
DEFPA+1 ,X
obfc:bd
21
OD
432
B0UC1
LDA
DEFPA ,X
0BFFJ29
FO
433
AND
**F0
OC 1 { 1 8
434
CLC
0CO2:6A
435
ROR
A
0CO3:6A
436
ROR
A
0CO4:6A
437
ROR
A
0C05t6A
438
ROR
A
0CO6U8
439
CLC
0CO7J7D
22
OD
440
ADC
DEFPA+1 ,X
0C0At9D
22
OD
441
STA
DEFPA+1 ,X
ocod:bd
21
OD
442
LDA
DEFPA ,X
OC10}29
OF
443
AND
**0F
0C12:9D
21
OD
444
STA
DEFPA, X
0C15:6O
445
RTS
0C16J
'B7
X
oci6:
448
x MESSAGES ET CONSTANT
0C16J
449
X
Pom's No 3
41
450 MESS ASC T NOM DU FICHIER PASCAL : ;
451 MEDO ASC T NOM DU FICHIER "NORMAL" : ;
452 ERMES ASC T NOM TROP LONG;
453 MODEMP ASC T INSERER LA DISQUETTE PASCAL DANS LE DRIVE 1, LA
DISQUETTE BASIC DANS LE DRIVE 2, PUIS APPUYER SUR "RETURN" ;
454 PASFI ASC T CE FICHIER N EST PAS SUR CETTE DISQUETTE ;
455 FICH ASC T
456 LFIC DFB
457 FIDO ASC T
458 LFID DFB
459 NFPAS DFB
460 DEFPA DFB 0,
461 FIFPA DFB 0,
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,
465 BLO ASC T BSAVE;
*900 ♦D^D
RECAP'tTulAYieN
0A30-
OC
DO
13
AD
FF
OC
85
00
0A38-
C8
Bl
06
D9
EF
OC
DO
06
090 0-
20
58
FC
A9
20
85
07
A2
0A4O-
C6
00
FO
IE
DO
F2
CA
DO
0908-
BD
16
OC
C9
B E'
FO
06
0A48-
D6
20
8E
FD
A2
00
BD
C5
0910-
20
ED
FD
E8
DO
F3
A2
00
0A53-
OC
C9
BB
FIT
OA
20
ED
FD
0918-
20
35
FD
C9
88
DO
OB
EO
0A58-
E8
4C
4E
OA
20
D3
OB
6C
0920-
F0
F
5
20
ED
FD
CA
4C
0A60-
F2
03
38
A5
06
E9
06
85
0928-
18
09
C9
8D
FO
18
C9
EO
0A68-
06
BO
02
C6
07
AO
00
Bl
0930-
90
02
29
DF
49
80
9D
FO
0A70-
06
80
21
OD
C8
Bl
06
8D
0938-
OC
49
80
20
ED
FD
E8
EO
0A78-
22
OD
C8
Bl
06
8D
23
OD
09^0-
OF
DO
D5
4C
73
OB
8A
8D
0A80-
C8
Bl
06
8D
24
OD
18
A5
09^8-
FF
OC
20
9C
FC
20
8E
FD
0A88-
06
69
16
85
06
90
"02
E6
0950-
A2
00
BD
2F
OC
C9
BB
FO
0A9O-
07
AO
00
Bl
06
8D
45
OD
U 7 kJ O —
U/
20
ED
r V
to
ap
*tu
jZ
09
0A98-
C8
Bl
06
8D
46
OD
A2
00
0960-
A2
2
!0
35
FD
C9
88
DO
0AA0-
20
El
OB
A2
02
20
El
OB
0968-
0B
EO
00
FO
F5
20
ED
FD
0AA8-
38
AD
23
OD
ED
46
OD
8D
0970-
CA
4C
6
>2
09
C9
8D
FO
14
0AB0-
23
OD
BO
OB
CE
24
OD
A9
0978-
C9
EO
90
02
29
DF
9D
00
0AB8-
OF
2D
23
OD
8D
23
OD
A9
0980-
0D
20
ED
FD
E8
EO
IE
DO
0AC0-
20
85
07
AD
21
OD
85
03
0988-
D9
4C
73
OB
8A
8D
IF
OD
0AC8-
AD
22
OD
85
02
A9
01
85
0990-
20
9C
FC
20
8E
FD
A2
00
OADO-
04
20
94
OB
20
E3
03
20
0998-
BD
59
OC
C9
BB
FO
07
20
0AD8-
D9
03
A9
00
85
48
E6
03
09A0-
ED
FD
E8
4C
98
09
20
8E
0AE0-
A5
03
C9
OF
DO
06
A9
00
09A8-
FD
A9
00
20
35
FD
C9
8D
0AE8-
85
03
E6
02
A5
02
CD
24
09B0-
DO
F7
A2
00
BD
B8
BF
9D
OAFO-
OD
90
OD
FO
02
BO
OF
A5
09B8-
35
OD
E8
EO
10
DO
F5
20
0AF8-
03
CD
23
OD
90
02
BO
06
09C0-
C5
OB
A9
00
85
02
A9
04
0BO0-
E6
07
90
C9
BO
C7
20
D3
09C8-
85
03
A9
01
85
05
A9
01
0B0 8-
OB
20
8E
FD
A2
00
BD
47
09D0-
85
04
2
:o
94
OB
20
E3
03
0B10-
OD
C9
BB
FO
07
20
ED
FD
09D8-
20
D9
03
A9
00
85
48
AD
0B18-
E8
4C
OE
OB
A2
00
BD
00
09E0-
02
20
OA
85
08
E6
03
AS
0B20-
OD
20
ED
FD
E8
EO
IE
90
09E8-
03
C9
10
DO
06
A9
00
85
0B28-
F5
A9
AC
20
ED
FD
A9
CI
09F0-
03
E6
2
E6
07
A9
01
85
0B30-
20
ED
FD
A 9
A4
20
ED
FD
09F8-
04
20
94
OB
20
E3
03
20
0B38-
A9
20
20
DA
FD
A9
00
20
0A00-
D9
03
A9
00
85
48
C6
08
0B40-
DA
FD
A9
AC
20
ED
FD
A9
0A08-
A 5
08
DO
D9
A9
20
85
07
0B48-
CC
20
ED
FD
A9
A4
20
ED
0A10-
A9
00
85
06
AE
10
20
8A
0B50-
FD
38
A5
07
E9
20
20
DA
0A18-
18
A5
06
69
06
85
06
AO
0B58-
FD
A9
FF
20
DA
FD
A9
AC
0A20-
00
18
A9
1A
65
06
85
06
0B60-
20
ED
FD
A9
C4
20
ED
FD
0A28-
90
02
E6
07
Bl
06
CD
FF
0B68-
A9
B2
20
ED
FD
20
8E
FD
42
Pom's No 3
0B70-
6G
F2
03
A2
00
20
8E
FD
0C60-
AO
CC
CI
AO
C4
C9
D3
Dl
0B78-
20
8E
FD
A9
87
20
ED
FD
0C68-
D5
C5
D4
D4
C5
AO
DO
CI
0B80-
BD
4A
OC
C9
BB
FO
07
20
0C70-
D3
C3
CI
CC
AO
C4
CI
CE
0B88-
ED
FD
E8
80
OB
20
8E
0C78-
D3
AO
CC
C5
AO
C4
D2
C9
0B9O-
FD
6C
F2
03
20
E3
03
84
0C80-
D6
C5
AO
Bl
AC
AO
CC
CI
0B98-
00
85
01
A5
02
AO
04
91
0C88-
AO
C4
C9
D3
Dl
D5
C5
D4
OBAO-
00
A5
03
AO
05
91
00
AO
0C90-
D4
C5
AO
C2
CI
D3
C9
C3
OBA8-
08
A9
00
91
00
C8
A5
07
0C98-
AO
C4
CI
CE
D3
AO
CC
C5
OB BO-
91
00
A5
04
AO
OC
91
00
OCAO-
AO
C4
D2
C9
D6
C5
AO
B2
OB B8~
A9
00
AO
03
91
00
A5
05
0CA8-
AC
AO
DO
D5
C9
D3
AO
CI
OBCO-
AO
02
91
00
60
A2
00
BD
0CI30-
DO
DO
D5
D9
C5
D2
AO
D3
OBC8-
25
OD
9D
B8
BF
E8
EO
10
0CB8-
D5
D2
AO
A2
D2
C5
D4
D5
OBDO-
DO
F5
60
A2
00
BD
35
OD
OCCO-
D2
CE
A2
AO
BB
C3
C5
AO
OBD8-
9D
B8
BF
E8
EO
10
DO
F5
0CC8-
C6
C9
C3
C8
C9
C5
D2
AO
OBEO-
60
AO
00
18
A9
02
7D
21
OCDO-
CE
AO
C5
D3
D4
AO
DO
CI
OBE8-
OD
9D
21
OD
90
03
FE
22
0CD8-
D3
AO
D3
D5
D2
AO
C3
C5
OBFO-
OD
IE
22
OD
IE
21
OD
90
OCEO-
D4
D4
C5
AO
C4
C9
D3
Dl
OBF8-
03
FE
22
OD
BD
21
OD
29
0CE8-
D5
C5
D4
D4
C5
AO
BB
AO
OCOO-
FO
18
6A
6A
6A
6A
18
7D
OCFO-
AO
AO
AO
AO
AO
AO
AO
AO
OC08-
22
OD
9D
22
OD
BD
21
OD
0CF8-
AO
AO
AO
AO
AO
AO
AO
00
OCIO-
29
OF
9D
21
OD
60
CE
CF
ODOO-
AO
AO
AO
AO
AO
AO
AO
AO
OC18-
CD
AO
C4
D5
AO
C6
C9
C3
0DO8-
AO
AO
AO
AO
AO
AO
AO
AO
0C2O-
C8
C9
C5
D2
AO
DO
CI
D3
0D10 -
AO
AO
AO
AO
AO
AO
AO
AO
OC28-
C3
CI
CC
AO
BA
AO
BB
CE
0D18-
AO
AO
AO
AO
AO
AO
AO
00
OC30-
CF
CD
AO
C4
D5
AO
C6
C9
0D20-
00
00
00
00
00
00
02
04
OC38-
C3
C8
C9
C5
D2
AO
A2
CE
0D28-
06
08
OA
OC
OE
01
03
05
OC^O-
CF
D2
CD
CI
CC
A2
AO
BA
0D3O-
07
09
OB
OD
OF
00
00
OC48-
AO
BB
CE
CF
CD
AO
D4
D2
0D38-
00
00
00
00
00
00
00
00
OC50-
CF
DO
AO
CC
CF
CE
C7
BB
0D40 -
00
00
00
00
00
00-
00
84
OC58-
AO
C9
CE
D3
C5
D2
C5
D2
0D48-
C2
D3
CI
D6
C5
BB
locunci
^1
Un<
}. inform?
w ^0 mm W
ilion adeiptt?^ nux besoins des gestionn aires Gt re^
\\\se.e par des gGstionnaires,
• opportunite d'utilisation de Toutil micro-inf ormatique
• integration entre informatique traditionnelle et personnelle
• politique de la communication dans Tentreprise
ETUDIE
FORME • formation a Tutilisation de la micro-inf ormatique
REALISE • realisation de programmes a la demande
LIVRE • livraison de systemes cles en main, avec des progiciels de
GESTION DE STOCK, PAYE, COMPTABILITE.
Nous sommes gestionnaires avant d'etre informaticiens. L'informatique doit s' adapter a l'homme, et non 1' inverse.
L'outil micro-informatique repond particulierement bien a ce souci de qualite et d'efficacite du travail,
dans des conditions conviviales.
Nombreuses references e n informatique traditionnelle - divers materiels - et en informatique individuelle - principalement
Apple - aupres des PME et des groupes industriels.
logmo
s.a. Centre La Chataigneraie - 29, avenue de Versailles - 78170 La-Celle-St-Cloud - Tel. : (3) 918.13.07
Pom f s No 3 ^3
Communication grace a I'Apple
Bruno Estrangin
1- Introduction
Nouveau venu a 1 T inf ormatique, mais ancien radio-amateur, j f ai ete tres vite tente
par les possibilites de communication de 1 T APPLE. Parmi des ob jectif s varies :
acceder a des moyens inf ormatiques supplementaires, echanger des textes ou des
programmes, interroger des banques de donnees , ce qui m f interesse le plus
vivement est la perspective d'eviter toute reprise manuelle af in de prof iter de
toute la souplesse de 1 T inf ormatique .
D T un point de vue non technique, communiquer avec un micro-ordinateur, c T est aussi
experimenter de nouvelles relations sociales. Ainsi, avec une certane naivete de
neophyte, j T ai entrepris de communiquer. C T est passionnant et ga marche ! J'espere
que les inf ormaticiens specialistes f eront connaitre ce domaine avec autant de
moyens que pour le BASIC, le Pascal...
Je presente ci-dessous les realisations suivantes :
echange de textes en environnement Pascal entre un APPLE et une machine
bureautique RANK XEROX 850 pleine page,
utilisation de la meme machine bureautique en tant que terminal, 1 T APPLE servant
d T ordinateur,
acces a un reseau de temps partage et au reseau MICRODIAL.
Je n T ai pas eu 1 T occasion de communiquer directement avec un autre APPLE, mais
cela ne presente a priori aucune diff iculte (entre APPLE, il est plus facile de se
comprendre ! ) .
2- Materiel utilise
2-1 Cote APPLE
- Apple II, 48K avec carte langage,
- deux drives (il est possible de n T en utiliser qu'un),
- carte de communication : APPLE II COMMUNICATIONS INTERFACE CARD [A2B0003X],
- modem Anderson Jackobson AJ 311.
2-2 Cote bureautique
- Rank Xerox 850 pleine page,
- modem Anderson Jackobson AJ 211.
Une explication sur les MODEMS :
La transmission s T effectue par modulation de part et d T autre d T un canal (+/-
100hz). Par convention, le modem appelant emet dans le canal inferieur (1080 hz)
et le modem appele emet dans le canal superieur (1750 hz ).
44
Pom T s No 3
Le modem AJ 211 ne fonctionne qu'en mode "APPEL" (ORIGINATE) : il "ecoute" sur le
canal superieur et "emet" dans le canal inferieur. Le second modem utilise devra
done "ecouter" sur le canal inferieur et emettre dans le canal superieur : on dit
qu T il doit etre en mode "REPONSE" (ANSWER).
Pour communiquer avec une machine munie d T 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 procedures sont disponibles. J T utilise une procedure dissymetrique du
cote de 1 T APPLE :
emission sans logiciel particulier, en utilisant la f onction TRANSFER du FILER
du POS de 1 T APPLE Pascal,
reception au moyen d T un logiciel de communication ecrit 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 procedure utilisee :
preparation du texte a l ! aide de 1 1 EDITOR de 1 T APPLE Pascal, et stockage sur
disquette en notant son titre (facile a retrouver avec le FILER)
preparation de 1 T 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 telephonique de la machine bureautique pour verifier que tout est
egalement pret du cote bureautique.
- II suffit ensuite de passer au niveau du FILER les commandes :
— TRANSFER (nom du f ichier)
— a la question TO WHERE, repondre "REMOUT:"; ceci envoie le f ichier par la
carte de communication au modem.
Durant la transmission, rien n T apparait sur l'ecran; les commandes au clavier
sont sans effet. A la fin de la transmission du f ichier, on voit sur l'ecran la
fleche habituelle a 1 T issue d T un transf ert .
Avec 1 T APPLE Pascal, la transmission d T un f ichier n 1 est done pas plus difficile
que sa copie entre deux disquettes.
La preparation de la machine bureautique a la reception est specifique de cette
machine. J T indique ci-dessous la gamme operatoire propre a la machine RANK XEROX
850 pleine page.
Pom ! s No 3
45
xOUTIQUE nuweroJ 003 REVISION nuneroJOl du 21/10/81 *
* *
* * OBJECTIFtRECEVOIR SUR LA RANK 85 P xx
* * POUR IMPRESSION DE QUALITE xx
* * LE CONTENU D'UN FICHIER EMIS xx
* x DEPUIS UN APPLE SOUS OS PASCAL xx
xx xx
X X XX
XX XX
1^ \^ VJ^ 1^ IXf ^/ ^/ »y «^ *^ «^ «^
/rw w^N
% X
* configuration: apple: ii, pascal, com *
* rank 850 page + com 5-1 *
* x
*CREE LEtH/iO/Bl DIFFICULTE J FACILE *
x x
^APPLICATION ♦ transfer t de tableaux comme celui-ci# composes sur 1 ' APPLE *
*3vec impression respectant la mise en page *
X' *
X *
xVCJR ♦ ESTRANGIN *
X *
Xzzzzzzzzzzzzzzzzzzvzzzvzzzzzzzzzvz ~ = = :=:=: == = = :=:=::=: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ = = :=: ~ ~ = = :=: = = :=::=::=: =: =: rsrsrsrsX
X X
xGAMME ♦ 1-Mettre le disque COM de la RANK dans le lecteur de droite x
x x
* 2-Mettre le disque de saisie dans le lecteur de gauche *
* X
* 3-Mettre en route la RANK *
* *
* 4-Changer la station de travail avec <PARA> ♦ lecture du disque , *
* COM ' x
* X
* 5-A <MODE COM 1>, repondre! <4>, <ACCEPT> - sit
* *
* 6-A <RETIRER DISQUE COM>, executer *
* x
* 7-Faire <CODE PROGR> et choisir les options suivantes* *
* -30 (bit/s) *
* -QUI (Mode duplex) *
* -0 (parite) *
* -x (ligne feed local) *
* -x (inhiber) *
» -4x (Mode COM) )k
* 8-Faire <ACCEPT>J l'ecran indique <COM PRET> x
* 9-AlluMer le ModeM de la RANK *
* *
* 10-Si l'ecran indique <PROBLEME LIAISON TRANSMISSIOM> : appuyer *
* sur <STOP>; l'ecran doit alors indiquer <COM PRET> *
* x
* il-Changer de station pour acceder au disque de saisie ♦ *
* touche <PARA> x
* 12-Faire apparaitre le forMat qui sera celui du document recu! x
x -Marge: 7-79 (correspond a RIGHT MARGIN 6, LEFT MARGIN 79) x
* -echappeMent ♦ 10 x
* x
* Pour faire apparaitre ce forMat qui sera autoMat iquenent *
* celui du document recu, on peut creer un nouveau document! *
46
Pom T s No 3
*OUTIQUE r.UMero:QQ3 REVISION nunerotQl du 21/10/81 FOLIO: 2/2 x
x x
x -fa ire <CODE PRGR> *
x -en lever <4 MODE COM> x
x -Mettre <LOCAL> x
x -faire <ACCEPT> x
x -creer un docuMent (titre propose} FORMATCOM) x
* -renplacer le format standard par le format ci-dessus x
x -stocker le document x
* -revenir en MODE COM! x
* ~<CODE PRGR> x
* -ef facer <LOCAL>J Mettre: <4 MODE C0M> x
x -touche <ACCEPT> *
x *
* On peut aussi appeler un docunent coMportant ce format, fairex
x apparaitre ce fornat sur l'ecran, puis re-stocker le docuMentx
x Ce for Mat sera ensuite Mis sur tout nouveau docuMent x
X X
x 13-Creer un nouveau docuMent qui recevra la coMMunicat ion x
x -dormer un titre* <TITRE> x
x -faire 2 fois <ACCEPT>J le curseur se Met apres le for Mat J x
x l'ecran indique <COM PRET> x
X X
x 1^-Appeler le poste distant x
X x
x 15-Disposer le coMbine sur le ModeMt cordon du cote de CORD x
x x
x 16-Verifier la reception de la porteuse} laMpe verte allunee x
x x
x 17~En cas de <PROBLEME TRANSMISSIONS- f appuyer sur la touche STOP x
x x
x 18-A la fin de la tr ansMission ♦ stocker le docuMent* touche STOCKx
x x
x 19-Pour iMpriMer le docuMent* x
x -depuis le soMMaire disque, Mettre le curseur sur le docuMentx
x -Mettre le curseur qui est sur <TITRE>* sur <IMPRIMER> x
x (par la touche M0T> x
x -touche <ACCEPT>, une nouvelle ligne ap par ait x
x -avec la touche <MQT>, venir sur <ECHAPPEMENT> x
x -touche <ACCEPT>, faire apparaitre <10> x
x x
x 20-Touche <CARAC>» acceder au soMMaire de travail? le docunent x
x est indique sous <IMPRIMANTE> x
x x
x 21-Lancer 1 ' iMpr ession par les touches <CODE PARA>> x
x x
Pom T s No 3
47
Cette procedure me permet d T imprimer les majuscules et minuscules et de garder la
presentation du texte tel que je l T ai ecrit sous 1 T EDITOR. Pour cela, il f aut que
la 850 P mette un code "LINE FEED" apres chaque retour marge. Eh effet, la carte
COMMUNICATION ne transmet pas les codes LINE FEED.
Si l T on transmet ce code (ASCII 10) au moyen d T un programme de communication comme
le programme LIAISON, on observe sur la 850 P des effets inattendus : par exemple
le code ASCII 10 (ou code J) est utilise par la 850 P comme prefixe aux
instructions de mise en page. Ainsi, la 850 P comprend (ASCII 10, E) comme
signifiant un "retour marge code" et non comme un LINE FEED suivi de la lettre E.
La communication avec une machine bureautique, necessite par consequent que l'on
s T informe sur les conventions utilisees.
Je prends une autre precaution en disposant les marges sur la 850 P : le chiffre
indiquant la marge de gauche pour la 850 P est augmente d T une unite par rapport a
celui donne par SET ENVIRONNEMENT a RIGHT MARGIN.
Ehfin, pour garder sur la 850 P son aspect au texte ecrit sur I 1 APPLE, je dois
supprimer 1 1 "espacement proportionnel" de la 850 P en choisissant comme
"echappement" sur la 850 P : 10 (pour memoire, ceci signifie que les caracteres
seront separes par 1/10 de pouce).
Toutes les surprises sont-elles evitees ? Oui, tant que l T on ne transmet que des
lettres, des chiff res et des signes de ponctuation . J T indique ci-dessous les
signes de 1 T APPLE qui sont interpretes differemment par la 850 P :
APPLE (Pascal)
850 P
( FRANC AIS)
M = Majuscule
m =
minuscule
S = Schif t +
C =
Ctrl +
E = Esc +
R = Rept
CR =
retl
M+S+3
. . . * .
£ .
m+S+3
£ .
M+S+:
*
*
M+S+p
. . , <B .
M+S+p
... e .
M+R
P .
M+S+R
m+R
P .
m+S+R
M+S+M
... ] ..
§ .
m+S+M
... ]
CR .
M+S+
. . . < . <
M+S+
A
A
Recuperation du texte sur 1 T APPLE
48
Pom T s No 3
1- Du cote de la machine bureautique, il faut la preparer a l T emission en suivant
les etapes 1 a 11 ci-dessus. Ehsuite ? on deplace le curseur a l T aide de la touche
PARA pour surligner TRANSMISSION . Avec la touche LIGNE, on surligne le titre du
document a transmettre, puis touche ACCEPT. Le titre du texte apparait avec la
mention EMISSION.
II faut creer un f ichier provisoire qui contiendra toute la communication :
donner un titre
ACCEPT, ACCEPT
On est devant une page blanche et il est possible de transmettre des caracteres
directement du clavier (l T ecran indique "emission"). On lance Remission du texte
par la touche PAGE.
II est indispensable d'emettre depuis la machine bureautique le code qui indiquera
la fin de Remission : code D pour le programme LIAISON, code C pour une reception
sous la fonction TRANSFER du FILER.
2- Du cote de 1 T APPLE, il suffit de faire executer le programme LIAISON et de
suivre les explications qu T il donne.
3- Uhe autre method e de reception peut etre utilisee en 1 T absence du programme
LIAISON :
proceder comme ci-dessus pour la machine bureautique
sur 1 T APPLE, utiliser la fonction TRANSFER DU FILER ainsi :
~ TRANSFER
— FROM REMIN:
— TO WHERE: nom de fichier
le transfert est clos a la reception de CTRL-C
Toutefois, je ne sais pas actuellement saisir ce fichier avec le FILER : les
informations contenues dans les deux premiers BLOCKS sont absentes. Ce fichier
peut etre transmis a l'imprimante (TRANSFER TO PRINTER:) et a l'ecran (TRANSFER TO
CONSOLE: ) .
4. Utilisation d T une machine bureautique comme t e rminal d T un APPLE
CONVERSATION TEMPS REEL ENTRE MACHINES
Du cote de 1 ! APPLE, on se met en environnement BASIC et on suit les indications du
manuel de la carte de communication. Plusieurs combinaisons sont possibles :
4- 1 Conversation entre machines :
sur 1 T APPLE :
— IN£2
— CTRL A, CTRL F
sur la 850 P : suivre les etapes 1a 18 de la procedure en encadre.
Tout ce qui est frappe sur un clavier apparait sur l T ecran de la machine emettrice
ainsi que de la machine receptrice; il n'y a aucune manoeuvre a faire pour passer
du role d ! emetteur a celui de recepteur.
4-2 Commande par la 850 P d T un programme execute par 1 T APPLE ;
sur 1 ! APPLE
— PR£0
Pom T s No 3
49
— IN£2
~ CTRL A, CTRL F
sur la 850 P
— CODE R pour acceder a 1 T unite centrale de 1 T APPLE et CODE T pour la liberer
- L T APPLE reprend la main par CTRL A, CTRL X.
La 850 P peut ainsi f aire executer tout programme sur 1 T APPLE (EN BASIC), a
condition de ne pas utiliser de fonction graphique. L T aff ichage s T effectue a la
fois sur les deux ecrans.
4- 3 Montrer sur la 850 P le deroulement d T un programme commande de 1 ! APPLE :
sur 1 f APPLE :
— PR£2
sur la 850 P : rien
Uh programme execute sur 1 T APPLE est visualise sur les deux machines.
5. Acces a un reseau
5- 1 Cas d T un reseau de temps partage :
On prepare 1 T APPLE par :
- IN£2
- CTRL A
- CTRL F
II n ! y a plus qu T a appeler le reseau, et a suivre la procedure de connection
propre a ce reseau (identification, mot de passe, nom du projet...). L T APPLE
f onctiofine comme un terminal. Toutefois, je ne sais pas encore garder une trace
ecrite des informations apparaissant sur I'ecran.
5-2 Cas de MICRODIAL :
MICRODIAL est un ensemble de services pour micro-ordinateurs implante sur le
reseau EURODIAL de TELESYSTEME.
On peut se renseigner :
9 rue Huisman - 75006 - tel : 544 70 23
MICRODIAL est ouvert aux prof essionnels, mais egalement aux "hobbystes" pour la
somme de 30F/heure de connexion, tout compris. Les services sont en cours de
developpement . II est deja possible d 'utiliser la MESSAGERIE pour recevoir et
emettre des messages ^vec un autre membre du reseau. Autres f onctions implantees :
petites annonces
fichiers et edition de textes - jeux
bibliotheque de logiciels - annuaire
the caracteristique tres interessante est de pouvoir envoyer sur MICRODIAL un
fichier provenant d T une disquette d T un APPLE et reciproquement de receptionner sur
1 T APPLE un fichier provenant de MICRODIAL. II est ainsi possible de communiquer
entre des micros differents ( APPLE, TRS, G0UPIL) .
La connexion se fait par TRANSPAC en utilisant un logiciel de communication fourni
par MICRODIAL. Les utilisations de ce type de reseau ne sont limitees que par
1 1 imagination des utilisateurs . Pour les lecteurs de POM 1 S actuels ou futurs
"hobby stes n sur MICRODIAL, mon numero est : ECB 15086. A bientot !
50
Pom ! s No 3
Copie d'ecran-texte
Christian Guerin
Le programme en assembleur presente ici vous permettra de faire de la copie
d'ecran-texte sur imprimante . II transforme egalement les caracteres INVERSE et
FLASH pour 1 T impression, mais ne peut etre utilise avec une carte-imprimante qui
affiche en meme temps les donnees a l'ecran.
Le petit programme BASIC ci- joint donne un exemple d 1 utilisation .
0800
1
♦
08
2
♦
t
00
3
ORG
$0000
0000
4
OBJ
$0800
00 00
5
*
00
6
*
00
7
*
00
8
^flC 3tC
00
9
X X
00 00
10
x PROGRAMME DE HARD COPIE TEXTE *
0000
11
X X
00 00
12
SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC SIC
0000
13
00
14
00 00
15
ADL
EPZ
$6 } ADRESSE DE DEBUT DE LIGNE
0000
16
LIGNE
EPZ
$8 JNUMERO DE LIGNE
oooo
17
00 00
18
OUT
EQU
$FDED i ECRITURE D'UN CARACTERE
0000
19
00 00
20
00 00
21
00
22
00 00
23
DEBUT DU HARD COPIE
0000
24
00 00
25
00
A900
26
HCT
LDA
#0 » DEBUT HARD COPIE LIGNE
0002
48
27
HCT.l
PHA
JSAUVEGARDE NUMERO LIGNE
00 03
28
00 03
29
0003
30
! CALCUL DE L'ADRESSE DE DEBUT DE LA LIGNE
0003
31
0003
32
00 03
48
33
PHA
0004
4A
34
LSR
00 05
2903
35
AND
#$3
0007
0904
36
ORA
#$4 {ROUTINE VTAB
0009
8507
37
STA
ADL+1
000B
68
38
PLA
oooc
2918
39
AND
**18
00OE
9002
40
BCC
HCT. 2
0010
697F
41
ADC
#*7F
0012
8506
42
HCT. 2
STA
ADL
0014
OA
43
ASL
0015
OA
44
ASL
Pom's No 3
51
001<S
0018
00 1A
001 A
001A
001A
001A
001A
001C
001E
0020
0022
0024
0026
0028
00 28
002A
002D
002E
0030
0032
0032
0032
00 32
0032
00 32
0034
0037
00 37
0038
0039
3A
003B
003D
003F
003F
0040
0040
0040
0506
8506
AOOO
B106
3008
293F
C920
B002
0940
0980
20EDFD
C8
C028
DOEA
A98D
20EDFD
68
A8
C8
98
C918
D0C3
60
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
45
46
47
48
49
50
51
53 HCT.3
56
57
58
59
60
61
62
63
64
ORA ADL
STA ADL
ECRITURE D'UNE LIGNE
HCT.4
LDY #0
LDA ( ADL ) t Y
BMI HCT.4
AND #*3F
CMP **20
BCS HCT.4
ORA #*40
ORA **80
JSR OUT
INY
CPY #!40
BNE HCT ♦ 3
JY POINTE DANS LA LIGNE
SI LE CARACTERE EST EN
INVERSE OU EN FLASHANT
ON LE TRANSFORME
JECRITURE SUR L'IMPRIMANTE
; CARACTERE SUIVANT
t TEST SI FIN DE LA LIGNE
FIN D'UNE LIGNE
LDA #"M"~*40
JSR OUT
PL A
TAY
INY
TYA
CMP #!24
BNE HCT.l
RTS
END
JENVOIE DE 'RETURN'
^PASSAGE LIGNE SUIVANTE
J TEST SI FIN DE LA PAGE
080 0-
A9
00
48
48 ,4A
29
03
09
0808-
04
85
07
68
29
18
90
02
0810-
69
7F
85
06
OA
OA
05
06
0818-
85
06
AO
00
Bl
06
30
08
0820-
29
3F
C9
20
B0
02
09
40
0828-
09
80
20
ED
FD
C8
CO
28
0830-
DO
EA
A9
8D
20
ED
FD
68
0838-
A8
C8
98
C9
18
DO
C3
60
. 1
(pIU&MMHE G>:HCT)
20
30
40
100
110
120
13
14
150
20
210
22
230
24
250
D* ~ CHR* (4)
y —• JPfc A A m A A- m A m ff - -ff ^ m- m m- -m m m m A A
)K 3(C )K )K )K 5IC )K )K JK )K )K )K )K ' '
PRINT D* t "BLOAD B:HCT,A*30 0"
TEXT : HOME
PRINT A* i
FOR I = 1 TO 21
PRINT "xx" J } HTAB 40
NEXT I
PRINT A* I "xx" i
VTAB 4: HTAB 7% INVERSE
PRINT "POM'S"
VTAB 11 : HTAB 13t FLASH
PRINT "HARD COPIE TEXT"
VTAB 18: HTAB 4: NORMAL
PRINT "METTEZ VOTRE IMPRIMAN
TE EN MARCHE"
26 VTAB 20 : HTAB 8
27 PRINT "PUIS TAPEZ SUR UNE TO
UCHE"
30 WAIT - 16384,1281 POKE - 1
6368 ,
310 PRINT D*r'PR#l"
320 CALL 768
330 PRINT D*J"PR#0"
34 HOME
52
Pom's No 3
Routine de presentation graphique
Jean-Francois Duvivier
Si vous etes passe sur notre stand au Sicob l T an dernier, ou si vous etes abonne a
nos disquettes, vous avez certainement remarque la presentation de la disquette
Pom f s N 1 .
Pour ceux qui ne l T on pas vue, disons qu T il s f agit d f un dedoublement d f image HGR
et d r un "scrolling" d T une des deux images dedoublees. Le resultat est
particulierement esthetique pour des images peu chargees ou des logos, comme dans
le cas de la disquette Pom T s N 1.
Apres de multiples ameliorations, nous vous proposons ici un programme qui vous
permettra de definir vous-meme les effets que vous souhaitez. Ecrit en Assembleur,
pour des raisons evidentes de rapidite, il occupe environ 150 octets.
Avant d T executer ce programme, il f aut lui definir la page-ecran sur laquelle il
va travailler et dans laquelle vous avez charge votre image, cette variable doit
etre placee en $303 (771) et sa valeur est :
$20 ( 32) pour la page 1
$40 (64) pour la page 2
II f aut ensuite definir le sequencement du programme grace a une zone situee entre
$304 (772) et $317 (791). La sequence definie peut avoir une longueur quelconque
(mais dans les limites de la zone prevue), paire puisque chaque "action"
elementaire est definie par deux octets. La sequence est terminee par un zero.
Le premier octet definit le nombre de deplacements effectues. Le second indique
Pampleur du deplacement.
Vite, un exemple, car je sens que ce n T est pas clair ! Lhe paire $05-$02 indique
que le programme va f aire 5 fois un deplacement de l f ecran d T une ligne sur deux,
ce qui correspond a un dedoublement parf ait de l f image. Si, au lieu de $02, vous
mettez $FE, c ! est-a-dire son complement, le deplacement s f effectuera tou jours une
ligne sur deux, mais dans l f autre sens.
A noter qu T une paire $XX-$01 ou $XX-$FF fait un deplacement de XX lignes, 1 ligne
sur 1, c T est-a-dire de toute 1 T image.
Vous pouvez essayer diverses valeurs pour obtenir le meilleur effet, mais vous
avez toujours interet apres un mouvement dans un sens a effectuer le mouvement
complementaire dans 1 T autre sens, du meme nombre de lignes af in de retrouver le
dessin original.
0800
1
0800
2
i *
0800
3
GRAPHIQUE *
08
; x
X
0800
5
t *
COPYLEFT x
0800
6
i X
X
0800
7
POM'S x
0800
8
i X
X
0800
9
0800
10
0800
11
NOLIGN
EPZ *00
08
12
NB
EPZ
$01
0800
13
LIGNP
EPZ
*02
0800
14
SAVX
EPZ
*04
08
15
SENS
EPZ
$05
08
16
LIGN
EPZ
$26
08
17
HLIGN
EPZ
$E2
08
18
HPAG
EPZ
$E6
08
19
HPOSN
EGU
$F411
08
20
HIRES1
EGU
$C050
080
21
HIRES2
EGU
$C052
08
22
HIRES3
EQU
$C057
Pom ' s No 3
53
no n n
*70
x-O
rRbtl tKU
Udox.
86 }
no n n
Oo U U
°xl
pArro poll
* p ft cr cr
no a i
207303
87 TOUR
IOC* PI TPXI
JSK CLIGN
no n n
Uo U U
*)C!
JLsJ
♦
ft o A cr
0365
88 t
no n n
Uo U U
OA
Zo
npp
voU U
no zc
AO 27
89
1 rv w a. j¥ o **y
LDY #*2/
no ft n
UoUU
xl/
nc» i
UDu
(ton n
ft O Z *7
036/
B12A
90 T0UR1
i r\ a y i *t* o xiv v/
LDA (LIGN) t Y
no ft n
UoUU
oo
xlo
ft O i o
036V
9102
91
STA (LIGNP)-Y
no n n
UoUU
°o
xl 7
♦ nc*c»iiT nil
p p n P P A M M P
r rvuurvHnnc.
ft O Z. Ci
036B
88
92
rv r~ w
DEY
no ft n
UoUU
O ft
O U
*
AO X r*
036C
10F9
93
EsPL T0UR1
no ft n
UoUU
O 1
o X
no x tr*
036E
94 ;
uo u u
XiP 1 Q ft O
*tt* loud
oo
Oxl
IMP
unr
n F P; 1 1 T
ULDU 1
a o x r*
036E
A500
95
l rv a vim t n vi
LDA NOLIGN
uo u o
oo
oo
ft O "7 ft
03/0
D0F0
96
BNE TOUR
no no
Uo U o
O Xl
o*t
t UUINlNt.t.O
A O "T O
03/2
60
97
RTS
hq ft o.
Uo u o
ocr
O vJ
ft O *7 O
03/3
98 *
nQ n q
uo u o
OO
ft O *7 O
Oo/ 3
99 ;
CALCUL DE LA LIGNE
nQ ft *a
Uo u O
**? ft
x~ U
07
o/
PAGE HEX
20
ft O "7 O
03/3
100 ;
np 1 q
uo x o
OQ
OO
SEQU DFS
20
03/ J
101 J
no 1 q
Uo Xo
Q O
OT
ft O "7 O
03/3
A
526
102 CLIGN
i r\ a i Tnn
LDA LIGN
no 4 o
Uo 1 o
xl ft
*t U
; PROGRAMME
03/5
8502
103
f*» T* A 1 *tf rs V 1 1***
STA LIGNP
no 1 o
Uo X o
Xl 1
*t X
03//
A
527
104
1 rv A ■ #*\ VI «i
LDA LIGN+1
no 1 o
03 X o
XlO
fto *7
03/ V
8
503
105
«T A 1 T n VI ft * 4
STA LIGNP+1
no 1 o
03 X o
Anc; n p ft
RUjU l u
xl Q
*t o
ULdU 1 LUfl
UTDCC1
n JLKLo X
ft Q *7 p
3/ b
106 ;
noi P
Uo X D
a n ■*•*. ° p n
l~ vj ri
1 1 JL 1 \ l~. w X~
ft Q *7 Ct
3 / b
A500
107
i r\ a vioi Tf*u
LUA NOLIGN
Uo X fc.
Ar\c;7r ft
RUj/ t»U
xi«=:
*tvJ
1 rv a
LUA
HlKLbo
ftQ*7r\
03/ U
18
108
CLC
no *•? 1
Uo X
Xl A
t
fto *7 r*
03 / b.
6
505
109
ADC SENS
UJ x.. X
AO ft ft
Hxl U U
i /
LU a
t?U U
ft o o n
03bU
8500
110
STA NOLIGN
no ° o
Q Z ft xl
OO U *t
4Q
*to
SI X
5AVX
UJoZ
C9C0
111
CMP *!192
no ° cr.
XlO
J
ft O O Xl
D004
112
BNE LIGN1
noocr
UO x.. vJ
AHRxlP ft
RUj *tb U
cr n
%J U
i rs a
LU A
Pi APT H
r Abe. 1
ft O O Xl
03oo
A900
113
LDA #*00
nooo
03x1
An ft *a ft o
flu u o U o
%J X
LuA
r Abfc.
ftO oo
8500
114
STA NOLIGN
U JxT. b
POXl ft
uy*t u
cr o
%J xl
O XX Ci
CMP
JL A A ft
#f ^tO
ft Q Q A
115 *
noon
03x1 U
UU Uo
cr O
JO
Ci Kl C*
b U U L L L
A o o A
03oA
AD0303
116 LIGN1
LDA PAGE
no *?c
Uo Zr
Ar\c|Bir ft
RU«JDL U
cr xl
LDA
Ci a p r o
r AGEZ
n o nr\
03 oD
8
5E6
117
STA HPAG
ft o o o
033/
is* cr
dOULLE ♦
038F
A500
118
LDA NOLIGN
ft OQO
UooZ
AO ft ft
fly u u
cr x
JO
1 pv a
LUA
♦ ^ U U
o 3 y x
85E2
119
STA HLIGN
no.04
o JU U
cry
OTA
b 1 A
vi ni TOKI
NULlbN
03 V 3
2
011F4
120
JSR HPOSN
nQ
uo oo
crp
JO
OTA
b 1 fl
Ml T P Kl
nLJLbN
ft O O L
03V 6
60
121
RTS
uo oo
x- U X X I ~
cr q
J7
JbK
Hr UbN
AO o 7
03 V/
122 }
no op
UO OD
a n
o U
ftOO*7
03 V/
123 I
FIN
no od
Uo ob
AZ ft xl
A *l
61
LDX
O A 1 1 \X
SAVX
ft O O 7
03 V/
124 ;
U O w 1/
CO U i
Ox..
ING
SAVX
(I-OQ7
U»3 7 /
125 }
ft o oc
03 Jr
C Z ft Xl
/ /•)
OO
INC
SAVX
A O ^**i T
0397
60
126 FIN
RTS
Uo^x
orv ft /i ft o
X XI
LDA
SEQU»X
127
END
ft O n n
C* ft IS* 4
r 051
z cr
65
BEG
FIN
03^6
nc A H
850 1
* *
66
STA
NB
«n /in
t*** o
E8
X T
67
INX
0300-
4C 18
03
20
00 00 00 00
Uo^V
■**• Pk ft XI ft O
BD04Q3
/ o
68
LDA
SEGU,X
0308-
00 00
00
00
00 00 00 00
Uo^C
8505
X o
69
STA
SENS
0310-
00 00
00
00
00 00 00 00
Art
Uo^E
**y ft
70
♦
0318-
AD 50
CO
AD
52 CO AD 57
Uo^t
A IS* ft IS*
A505
71
B0UCL2 LDA
SENS
0320-
CO A2
00
86
04 AD 54 CO
AO IS* A
03 DO
•1 ft ft XI
**y o
72
BPL
B0UCL.3
0328-
AD 03
03
C9
40 DO 03 AD
03 uZ
AVCO
73
LDA
*!192
0330-
55 CO
A9
00
85 00 85 E2
ft O IS" Xl
OCT ft ft
85 U
7^
STA
NOLIGN
0338-
20 11
F4
A6
04 E6 04 E6
A O IS* Z
03 bo
75
*
t
03^0-
04 BD
04
03
F0 51 85 01
A O 12* /
0356
Oft f O ft o
206203
76
B0UCL3 JSR
TOUR
0348-
E8 BD
04
03
85 05 A5 05
035?
C60 1
77
DEC
NB
0350-
10 04
A9
CO
85 2 62
no in* Ci
03 Do
A. IS" ft H
A5U 1
78
LDA
NB
0358-
03 C6
01
A5
01 DO EF 4C
ao is* r\
035D
r\ ft i*** r**
D0EF
79
BNE
B0UCL2
0360-
32 03
20
73
03 AO 27 Bl
AO 1ST
03 Dr
O ft
80
♦
03 68-
26 91
02
88
10 F9 A5
a o is* tr
Anno ft o
81
JMP
BOUCLE
03 70-
DO F0
60
A5
26 85 02 A5
0362
82
*
t
0378-
27 85
03
A5
00 18 65 05
0362
83
*, REALISATION D'UN TOUR DE
0380-
85 00
C9
CO
DO 04 A9 00
0362
81
? L'ECRAN SUIVANT LE
SENS
0388™
85
AD
03
03 85 E6 A5
0362
85
0390-
00 85
E2
20
11 F4 60 60
Pom T s No 3
Les fichiers EXEC
Bruno Rives
INTRODUCTION
Sur APPLE II et APPLE ///, les langages BASIC et Pascal donnent la possibility a
1 T utilisateur d T employer des fichiers d T un type un peu particulier,. les fichiers
EXEC ; ces fichiers sont EXECutables.
Un fichier EXEC consiste en une liste de commandes sauvees en format ASCII (ou
TEXT). Quand un tel fichier est execute, chaque commande qu f il contient est prise
en compte par le systeme comme si elle avait ete tapee au clavier par
1 T utilisateur . Ne marcheront done que les commandes que 1 T utilisateur peut donner
en direct. 1 au clavier et non celles qui ne peuvent s T utiliser qu T a l T interieur
d T un programme : les instructions de gestion de fichiers, les GOTO ...
L T utilisation la plus rationnelle est comparable a celle que l f on trouve sur les
gros systemes sous 1 T appellation de J.C.L. (Job Control Language) et qui consiste
a enchainer plusieurs programmes en y melant des donnees. On cree une suite de
RUNS de programmes suivis chacun des donnees dont ils ont besoin . On gagne ainsi
du temps en langant une serie de travaux sans devoir executer un par un chacun des
programmes et attendre parfois la fin d f impressions interminables pour lancer les
programmes suivants. Cela permet aussi de faire tourner un meme programme avec
plusieurs jeux de donnees differents sans avoir a les lancer chaque fois.
Sur APPLE, on peut non seulement lier 1 ! execution de programmes que l T on tient a
garder separes les uns des autres, mais aussi et surtout rendre automatique toute
une suite de commandes et d T ordres que 1 T on tape generalement un a un au clavier :
fabrication et modification automatiques de programmes, copie et formatage de
disquettes, demonstrations automatiques . . ,
UTILISATION DES FICHIERS EXEC EN BASIC. .
th fichier EXEC est done une suite de commandes BASIC saisies dans un fichier de
type TEXT. Ce fichier est ensuite executable par la commande EXEC suivie du nom du
fichier. Plusieurs moyens sont envisageables pour le creer, le meilleur etant
d T utiliser un programme de traitement de texte dont les fichiers sont sous forme
TEXT (APPLEWRITER n r en fait pas partie, par contre APPLEWRITER II et /// sont
utilisables ) . Pour ceux qui n ' en disposent pas, voici un petit programme BASIC
pqur APPLE II qui fait tres bien 1 T affaire :
D$ = CHR$(4) : REM CTRL-D
10 HOME'
20 PRINT "DONNEZ LE NOM DU FICHIER EXEC A CREER"
30 INPUT N$
40 PRINT D$ ; "OPEN" ; N$.
50 PRINT
60 PRINT "DONNEZ LES COMMANDES QUE V0US V0ULEZ EXECUTER"
70 PRINT "QUIT POUR TERMINER"
80 PRINT
90 INPUT C$
100 IF C$="QUIT" THEN 200
1 10 PRINT D$ ; "WRITE" ;N$
120 PRINT G$
130 PRINT D$
Pom f s No 3
55
140 GOTO 80
200 PRINT D$ ; Tl CLOSE" ; N$
210 PRINT
220 PRINT "VOULEZ VOUS TESTER CE FICHIER EXEC (0/N)"
230 GET A$:IF A$ = Tl N TI THEN 260
240 PRINT
250 PRINT D$;"EXEC";N$
260 END
Sauvez ce programme sous le nom TEST, par exemple, et executez le. Amusez vous a
donner les ordres les plus varies possibles (en evitant l T ordre INIT . ..) :
CATALOG
LOAD TEST
SPEED = 100
LIST
SPEED = 255
NEW
10 HOME
20 FOR 1=1 TO 100
30 PRINT I
40 NEXT I
50 END
RUN
RUN TEST
QUIT
Pour APPLE ///, le principe est exactement le meme; seuls quelques ordres BASIC
sont differents. Si vous terminez votre serie par RUN TEST, cela permet de
retourner au programme initial de creation.
Eh partant de ce mode d T emploi, il est possible d T utiliser les f ichiers EXEC pour
une foule d T applications differentes.
UTILISATION PES FICHIERS EXEC EN BASIC
1) Liste des command es usuelles.
C T est 1 utilisation la plus courante du fichier EXEC. Lorsqu ! on programme en
BASIC, il arrive tres souvent que l T on ait a rentrer des suites de commandes
toujours identiques et il est beaucoup plus facile de taper EXEC qu T une suite de
commandes, meme si l f on n T a que deux ou trois ordres a donner. On peut se creer un
veritable catalogue de groupes de commandes que l T on utilise frequemment. Par
exemple :
EXEC P ou P contient : PR£1
CTRL-I 80N
POKE 36,80
LIST
POKE 36, 40
PR£0
EXEC Lou L contient : OPEN £ 1, " .PRINTER"
OUTPUT £1
LIST
EXEC C ou C contient : CATALOG S6,D1
CATALOG S6,D2 ...
EXEC M oil M contient ; CALL -151
300L
3D0G
56
Pom T s No 3
II f aut noter que l T ordre ! EXEC nom de fichier 1 peut etre donne a l T interieur d T un
fichier EXEC.
2) La capture d T un programme BASIC.
Cette manipulation est tres interessante car elle donne la possibility, en
saisissant un programme BASIC sous forme TEXT, de lui f aire subir de nombreuses
transformations :
- Par 1 T intermediate d ! un traitement de texte comme APPLEWRITER II ou ///, il
est possible de f aire des modifications rapides en se promenant dans le programme
comme dans un texte continu ou en procedant a la recherche et au remplacement
automatique ou non. II est done possible de remplacer tous les noms de variables
par d T autres, une certaine categorie de lignes par d T autres
- Par 1 1 intermediaire d T un programme BASIC qui lit ce fichier EXEC comme un
fichier sequentiel classique, on peut aussi faire des modifications automatiques,
compter les variables, changer les numeros de lignes, produire un listing sur
imprimante qui separe automatiquement les boucles, les sous-programmes ...
- A l'aide de TEXT FILE CONVERTER ou de APPLEWRITER /// FILE CONVERTER, il est
facile de faire passer un programme BASIC d T APPLE II sur APPLE /// et
reciproquement .
On peut egalement realiser un traducteur BASIC permettant de passer de
INTEGER a APPLESOFT et a BUSINESS BASIC.
- On peut tres simplement transmettre ce fichier EXEC avec un programme de
communication tel que VISITERM ou ACCES ///.
Pour ! capturer T un programme BASIC, rien de plus facile ! Tout d T abord, faire un
LOAD du programme en memoire centrale et reperer les numeros de la premiere et de
la derniere ligne (par exemple, le programme va de 10 a 2000). Ajouter ensuite en
debut de programme les lignes suivantes :
D$ = CHR$(4) : REM CTRL-D
1 PRINT D$;"0PEN EX"
2 PRINT D$ ; "WRITE EX"
3 POKE 33, 30 : REM PERMET DE COMPACTER LE PROGRAMME
4 LIST 10, 2000
5 POKE 33,40
6 PRINT D$ ; " CLOSE"
7 END
Apres execution, le programme initial sera saisi en mode TEXT sous le nom EX. Pour
le retrouver, il suffit de taper EXEC EX, et il sera de nouveau en memoire
centrale . Essayez ! ! !
(Pour APPLE ///, seuls changent les ordres BASIC).
3) La generation automatique de programmes BASIC.
II s T agit la de 1 T utilisation la plus performante, mais aussi la plus delicate,
des f ichiers EXEC. Elle est employee par des concepteurs de logiciel qui doivent
theoriquement ecrire des programmes differents pour chacun de leurs clients. lis
ont ef f ectivement commence par adapter chacun des programmes, mais se sont vite
apercus que certaines parties etaient toujours les memes : ouverture, lecture et
ecriture, fermeture de f ichiers, editions, traitement de chaines de caracteres ...
Alors, plutot que de retaper a chaque fois tous les programmes, il est plus
efficace de se conf ectionner un generateur de programmes !
Tout d T abord il f aut organiser un peu ses programmes de telle maniere que les
ordres courants soient toujours a la meme place : par exemple, les ouvertures de
f ichiers a partir de la ligne 2000, les f ermetures a partir de 3000 et en
Pom ! s No 3
57
utilisant les memes noms de variables pour recevoir les memes types d T information
(par exemple, F1$ sera le nom du premier f ichier, R1$ a Rn$ pour les reponses des
utilisateurs . ..). Ehsuite il f aut creer des petit s programmes re pond ant a ces
fonctions, susceptibles d T etre inclus dans le programme principal final, et saisis
sous forme de fichiers EXEC, comme indique precedemment . Ehfin, il f aut creer un
programme generateur de programmes qui, en fonction des traitements choisis, va
engendrer un programme particulier compose d T un certain nombre de sous-programmes
differents, appeles par EXEC et lies entre eux par des lignes BASIC toujours
identiques . .
4) La saisie d T un programme en lang age-machine.
II est des cas ou l T on veut implanter un programme en lang age-machine directement
a. partir du BASIC sans passer par 1 1 intermediaire de BSAVE et BLOAD et en evitant
de rentrer des lignes de POKEs difficiles a controler et a taper. Les fichiers
EXEC permettent aussi^de faire cela.
Imaginez que vous ayez construit un programme en lang age-machine qui se trouve aux
adresses 768 a 900 en decimal, et que vous vouliez l T implanter a partir d T un
programme BASIC a l T aide de POKES. Le programme BASIC suivant le permet :
10 D$ = CHR$(4) : REM CTRL-D
20 PRINT D$;"0PEN EX"
30 PRINT D$ ; "WRITE EX"
40 FOR 1=768 TO 900
50 PRINT "10"; I;" POKE " ; I;", " ; PEEK( I)
60 NEXT I
70 PRINT "10910 RETURN"
'80 PRINT D$;" CLOSE"
Pour rajouter a votre programme cette phase d 1 implementation du sous-programme en
lang age-machine, f aites un LOAD de votre programme, puis un EXEC EX qui rajoutera
les lignes 10768 a 10910, ajoutez ensuite une ligne 1 G0SUB 10768' pour initialiser
la routine, et re-sauvez le tout.
5) Les demonstrations et executions automatiques .
Cette utilisation des fichiers EXEC permet de faire executer un programme qui
demande des -donnees exterieures sans aucune intervention, sans modifier le
programme, et meme de f aire tourner une meme application avec plusieurs jeux
d T essais definis a l T avance.
Prenons 1 T exemple d ! un prt^ramme DATE qui demande a 1 T utilisateur son nom, puis
son prenom, enf in sa date de naissance. Pour 1 T executer sans toucher au clavier,
il suf f it de creer un f ichier EXEC comportant :
- RUN DATE
- DURAND
- BERNARD
- 23 JANVIER 1952
Ceci peut servir a des versions de demonstration de programmes dont on ne veut
pas modifier toutes les lignes INPUT pour en rend re 1 ! execution automat ique.
UTILISATION DES FICHIERS EXEC EN PASCAL. '
Eh Pascal APPLE II ou APPLE ///, un f ichier EXEC est egalement un f ichier de type
ASCII comprenant une liste de commandes que l T on donne habituellement au clavier.
Comme en BASIC, on peut creer ce f ichier par un programme Pascal* La marche a
58
Pom ! s No 3
suivre est alors la meme et nous ne la decrirons pas ici.
Ce que 1 T on peut f aire de plus, c T est declarer au niveau du systeme Pascal que
tout ce que l f on va taper au clavier sera desormais enregistre dans un fichier
prealablement defini. La difference est de taille car il suffit de taper une fois
la serie de commandes pour la ref aire ensuite autant de fois que l T on veut de
maniere automatique . Cela veut dire aussi qu T il f audra executer TOUTES les
commandes que l T on veut avoir sous le fichier EXEC, ce qui n T est pas le cas
lorsqu T on le cree a partir d T un programme.
La marche a suivre est alors la suivante :
- Au niveau du systeme, taper M pour MAKE EXEC.
II est alors demande un nom de fichier et un signe qui, tape deux fois par la
suite, arretera 1 T enregistrement sur le fichier EXEC.
A partir de ce moment la, TOUT ce que vous tapez est enregistre sous le nom
que vous avez donne, et cela jusqu'a ce que vous tapiez deux fois de suite le
caractere de fin d T enregistrement .
- Pour executer le fichier, tapez EXEC//, suivi du nom du fichier.
Par exemple,
- M
(au niveau systeme Pascal)
- TEST
(nom du fichier EXEC)
- %
(acceptation de % comme caractere de fin)
- F
(FILER)
- L
(catalogue)
(du disque courant)
- Q
(retour au niveau general)
-%%
(fin de 1 f enregistrement )
L T execution de ce fichier par EXEC/ /TEST va automatiquement dans le FILER et donne
le directory du volume courant. Cette execution peut aussi etre lancee a partir
d T un autre programme Pascal a l T aide de CHAINSTUFF (comme le programme execute
lors du BOOT) .
Les utilisations sont exactement les memes que celles precedemment definies pour
le langage BASIC, a part celles qui ont trait a la modification et au transfert
des programmes, puisque les programmes source Pascal sont deja en format TEXT. De
meme, la saisie de programmes en assembleur est inutile.
Par contre, la fabrication de programmes generateurs de programmes et
l T utilisation de toutes les commandes de gestion de fichiers et de volumes est
tres puissante. La partie de programme decrite ci-apres montre 1 utilisation des
fichiers EXEC a partir d T un programme Pascal APPLE II pour formater des
disquettes. II est generalement inclu dans un programme principal sous forme de
procedure mais ce petit exemple vous permettra de le tester immediatement :
PROGRAM FORMAT;
$ USES CHAINSTUFF;
BEGIN
WRITELN
( 1 PLACEZ UNE DISQUETTE VIERGE DANS LE LECTEUR 5 ET TAPEZ RETURN T ) ;
READ( KEYBOARD, REPONSE) ;
IF REPONSE = CHR(13) THEN SETCHAIN( ! EXEC/ /EXFORMAT T ) ;
END
Le fichier EXEC EXFORMAT contient : - X
- FORMATTER
- 5
- ( Return )
Pom T s No 3
59
- X
- FORMAT
La derniere instruction, X FORMAT, permet de retourner au programme principal.
Attention, comme toutes les instructions que vous entrez sous f ichier EXEC doivent
etre executees une premiere fois, vous serez oblige de faire un faux programme
FORMAT pour pouvoir stopper 1 T enregistrement, f aute de quoi 1 T EXEC repetera
fid element ou le formatage continu ou 1 T arret du programme.
Les f ichiers EXEC ne sont generalement connus que de nom sur APPLE. lis font
pourtant partie des petites caracteristiques d 1 APPLE qui off rent de multiples
ressources . Si 1* accent n ! a pas ete mis dessus, c T est parce que ses concepteurs
ont sans doute pense que tout inf ormaticien devait connaitre ce genre de
possibilites . Mais nous ne sommes pas tous des inf ormaticiens ...
Enseignement Assiste par Ordinateur pour Ordinateurs
IflOPPE D'ANPICO
- SILEZ
COURS
APPLESOFT
• ITT 2020 - APPLE II - APPLE II +
EN PRANCAIS H^^HH
de BASIC
PALSOPT
SILROK
( 5-jt DISQUETTES 5 1/4 Pouces
- APPLE II ( + Carte APPLESOFT )
- APPLE II +
- APPLE III
- MOPPE D'ANPICO, ( + APPLESOFT en ROK )
|- ITT 2020 ( + Carte PALSOFT )
|- SILEZ ( de Leanord )
DOS = DOS 3.3
Kemoire = 48 K. )
1/ CCUMJ.^ BASIC ) - En JraagaiE
TRES PROGRESSIF - Ne necessite aucune connaissance prealable en
inf oraatique.
Pour debutants et non debutant s TOUT Y EST EXPLIQUE.
20 Legons - Environ 10 a 12 Heures de cours.
80 Exercices commentes, expliques, re solus, execute s»
140 Questions notees sur 20, par groupes - Reponses aux questions.
GRAPHISLCE BASSE et HAUTE RESOLUTION.,
Defilement automatique du Cours avec arrets et reprises possibles
' en cours de legon.
De nombreux exercices peuvent etre reexecutes autant de fois que
vous le souhaitez. Ainsi, vous pouvez obtenir les memes resultats
ou des resultats differents en faisant varier les donnses d'entree.
VOUS SAUREZ PR0GRA1,IT,1ER. I
o
B A LA FIN DE CE COURS,
2/ COURS 2 [ BASIC + ) - En Fra-^ai
. Philosophie generale identique a celle du COURS 1 ( BASIC ).
. 2$ Legons - 12 Heures de cours minimum,
o 120 Exercices commentes, expliques, resolus, executes.
. 160 Questions notees sur 20, par groupes - Reponses aux questions.
3/ CONTRATS-LCCATION du COURS BASIC uo^rt
. Etablissements d 'Enseignement.
o Etablissements de Formation payante.
. Centre de Recherches, Laboratoires, Centre d'Es
PRIX ( T.V.A. comprise )
. COURS 2 ( BASIC + ) 350 FF '
Prix donnes a titre indicatif, pouvant
etre modifies sans preavis.
N D E U R S,
iNDKi: F, FINCT
8 Alice ^"JF^Ji
gioco evry-courcdurcn::e3
Ne ratez pas la cible !
Le premier lecteur qui nous fera
parvenir 1 ' explication complete de ce
que fait le programme suivant gagnera
un abonnement a quatre numeros de
Pom' s. Ce programme requiert le BASIC
Integer en ROM, c'est-a-dire la carte
Integer ou la carte langage.
>LIST
20733
20734
:073J
CALL. -936} TAB 19 J VTAB 13
DEVINETTE= ASC( "POMS" )x PEEK
(-1823)/ PEEK <~1595>*P0MS A
POMS
PEEK (-7782), 12: POKE
(-4710) ,184
2069, PEEK ( RND (4096
POKE
PEEK
20736 POKE
) )
2 0737 PRINT "POMS"
20738 POKE POMS, POMS
20739 POP
60
Pom's No 3
Personnalisez vos disquettes
Pierre Boutreux
Vous souhaitez peut-etre pouvoir personnaliser vos disquettes en faisant
apparaitre votre nom, par exemple, lors du CATALOG... Pour cela, il suffit de
remplacer la mention "DISK VOLUME" affichee en tete du catalogue par un titre a
votre convenance .
Eh effet, si vous examinez le contenu des adresses $B3B0 a $B3BA, vous trouverez :
B3B0- C5 GD D5 CC CF D6 AO CB
B3B8- D3 C9 C4
Eh vous reportant a la page 7 du "APPLE II Reference Manual", vous constatez que
ces codes sont les codes-ecran (ou ASCII etendu) des caracteres suivants :
B3B0- E M U L V K
B3B8- SID
soit DISK VOLUME a l T envers. II faut done charger dans les memoires $B3B0 a $B3BA
les codes-ecran de votre titre en sens inverse, dans la limite des 11 caracteres
disponibles. C T est ce que fait le programme BASIC liste ci-apres, avec quelques
variantes selon que vous desirez un affichage normal, INVERSE ou clignotant.
Pour sauver le DOS contenant votre modification, il suffit ensuite d T initialiser
une nouvelle disquette.
Remarque : si C=ASC(C$), le code ecran du caractere C$ est :
. C+128 en mode NORMAL, C-64 en mode INVERSE, C en mode FLASH, si C>64.
. C+128 en mode NORMAL, C en mode INVERSE, C+64 en mode FLASH, si C< 64.
10
20
60
65
70
72
75
80
90
HOME
i*^ d«
X X
x PERSONNALISEZ x
X X
x VOTRE DISQUETTE x
x x
5(C 5(C ^fC ^IC ^fC ^IC ^IC ^fC ^fC 5IC 5IC 5(C 5(C
REM
REM COPYRIGHT P. BOUTREUX
REM ET POM'S
REM
HTAB 10 t GOTO 90
HTAB 20 - LEN <Z$)
Z*t RETURN
A* ■
"X
x'
PRINT
:z* » A*
100
15
I GOSUB 80 JZ* « B*J GOSUB 80
JZ* « "xPERSONNALISATION*":
80 JZ* ~ B*t GOSUB 80 :z* - "*
D'UNE DISQUETTE*"
GOSUB 80 iZ* ■ B${ GOSUB 80 12
* ■ A* J GOSUB 80
PRINT
160
170
18
190
20
210
22
PRINT " CE PROGRAMME VOUS PE
RMETTRA DE PERSON-' 1
PRINT "NALISER VOS DISQUETTE
S EN REMPLACANT"
PRINT "L' INFORMATION DISK VO
LUME PAR CELLE DE"
PRINT "VOTRE CHOIX.IL FONCTI
ONNE PAR MODIFICA-"
PRINT "TION DU DOS.IL FAUDRA
DONC SAUVER LE NOUVEAU DOS
AINSI MODIFIE EN INITXALISAN
T UNE NOUVELLc DISQUETTE AV
EC LE PROGRAMME HELLO DE VOT
RE CHOIX»"
PRINT "L'INFORMATION AURA UN
E LONGUEUR MAXIMA-"
PRINT "LE DE 11 CARACTERES."
Pom's No 3
61
informotique
vous apporte
ASSISTANCE et CONSEIL
pour la
MISE EN SERVICE
de votre
1 er MICR0-0RDINATEUR
• Realisation de logiciels specif iques
• Organisation de sessions d'initiation a
I'ordinateur et de formation a I'utilisation
des programmes sur APPLE II et Goupil
• Location de materiel
courte ou moyenne duree
Configuration
Week-end
1 re Semaine
Semaine sup.
Apple II 48 K/ Floppy /mon.
Apple II 48 K/2 Floppy/mon.
Apple II Pascal 2 Floppy
I m prim antes
350FH.T.
450FH.T.
550FH.T.
700FH.T.
900FH.T.
1 100FH.T.
5%duP.Vte
400FH.T.
500FH.T.
600FH.T.
3%duP. Vte
Contrats d'entretien de materiel
[apple « goupil 2
* Aide au choix de logiciels standards
Dernandez une demonstration de nos Logiciels Stan-
dards Interactifs « Serie S » pour APPLE :
(Tous compatibles entre eux et avec VISICALC)
* SUPER-GENEFICHE version PRO {65% de capacite supple-
mentaire sur un APPLE 64 K, et de nombreuses extensions
nouvelles}
• S/FACTURE (pour la facturation) • S/ETIQUETTE (pour ]e
mailing)
* S/COURRIER (pour le courrier personnalfse et le traitement
de texte)
• MODIFJCHE (utilitaire de transformation desfichiers)
Zmaaai
informotique
1 a 5, rue Gutenberg
75015 PARIS (M° Javel)
tel. : (1)577-59-39
240
250
260
270
28
29
£7 D
30
310
32
330
35
36
37
380
390
395
40
410
420
430
44
45
46
47
480
485
490
50
50 5
510
52
53
54
545
550
56
570
58
59
PRINT " L'AFFICHAGE PEUT SE
FAIREJ "
HTAB 10 J PRINT " 1-EN VIDEO
NORMALE"
HTAB 10 J PRINT " 2 -EN VIDEO
INVERSE"
HTAB 10 : PRINT " 3-EN MODE C
LIGNOTANT "
PRINT
PRINT "ENTREZ VOTRE CHOIX Jl
,2,3"iX HTAB 30 ♦ INPUT " ? "
*A%JA == A%
PRINT X PRINT * PRINT
IF A < 1 OR A > 3 THEN 29
PRINT X PRINT
PRINT "ENTREZ VOTRE MODIFICA
TION"
PRINT " (MAXIMUM 11 CARACTERE
S)"} t HTAB 27 * INPUT A*
X == LEN (A*)
IF X > 11 THEN 320
B ==11 X
IF A «* 1 OR A ==== 3 THEN B$ ~
II II
IF A - 2 THEN B* ==
IF B THEN 430
FOR I == 1 TO B
A* ~ B* + A*
NEXT I
FOR J » 1 TO 11
B* - MID* (A*,J»1)
IF A = 1 THEN
J, ASC <B*> +
IF A = 2 THEN
ASC CB*) -
> = 64)
3 THEN
(B*) +
II A"
POKE
128
POKE
64 *
46011 -
46011 -
ASC <B*
POKE 46011 -
64 * ( ASC (B*
J,
) > =
IF A =
J ♦ ASC
) < 64)
NEXT J
HOME
D* » "": REM CTRL-D
PRINT D$ J "CATALOG"
PRINT i PRINT
PRINT "LA MODIFICATION VOUS
PLAIT -ELLE ?"
HTAB 10 J PRINT "1-OUI"
HTAB 10 J PRINT "2=N0N"j: HTAB
30 : INPUT Zt PRINT t PRINT
HOME
2 THEN 510
IF Z < 1 OR Z
IF Z * 2 THEN 240
PRINT "POUR SAUVEGARDER CETT
E MODIFICATION, CHARGER L
E PROGRAMME HELLO DE VOTRE"
PRINT "CHOIX ET INITIALISER
UNE NOUVELLE "
PRINT "DISQUETTE"
PRINT t PRINT X PRINT "
AU REVOIR"
62
Pom ' s No 3
Les clubs ont la parole
ASSOCIATION DE MICRO- INFO RMATIQUE
A.M.I. 76
BOITE POSTALE 4059
76022 ROUEN CEDEX
TEL : 16 ( 35) 89 49 1 8
Creee en aout 1 98 1 , cette association a but non lucratif se donne pour objectif de
regrouper des utilisateurs et utilisatrices de micro-ordinateurs .
J^._Pr^emiers axes d ? act i vite
- Etudes comparatives des materiels et logiciels presentes sur le marche .
- Essais et demonstrations de programmes prof essionnels .
Initiation et formation a 1 f utilisation des micro-ordinateurs, a 1 T analyse et a
la structuration des informations.
- Assistance et conseil, mutuels, entre les membres de 1 T association .
2. Projets en cours
- Etude comparative de plusieurs logiciels de comptabilite .
- Experimentation en controle de processus, sur APPLE.
Travail a long terme de reflexion sur la micro-inf ormatique, avec des
f ormateurs .
- Constitution d T une bibliotheque micro-inf ormatique (deja assez importante).
Nous avons deja permis a des utilisateurs d* horizons tres differents de se
rencontrer : commerce, ophtalmologie, travail social, biologie, electronique,
recherche en intelligence artif icielle, marketing...
REJOIGNEZ-NOUS AU PLUS VITE, ECHANGEONS NOS EXPERIENCES !
MA POMME
6, rue Sauniere - 75016 - Paris
La premiere Assemblee Generale a eu lieu recemment . II y a ete decide de fixer la
cotisation annuelle a 30.0 francs, les membres de moins de 18 ans beneficiant d T une
reduction de 50%. Le club tiendra une reunion les troisiemes mardis de chaque mois
a 19H30, dans un local restant a determiner.
Prochaines reunions : Visicalc le 20/4, les bases de donnees le 18/5 et CPM le
15/6. Pour tous renseignements, telephoner tous les jours de 20H a 24H au (1) 558
0578.
NANTES APPLE CLUB
21 A, bd Gabriel GUIST'HAU
44000 NANTES
Personne a contacter ; Monsieur BACHELIER
TEL : (40) 47 53 09
Ce club a pour but de mettre en relation les utilisateurs d T APPLE de la region
nantaise, utilisateurs (ou f uturs utilisateurs), prof essionnels ou personnels...
Pom T s No 3
63
Courrier des lecteurs
Monsieur,
J T ai bien regu le numero 2 de POM r S avec pas mal de choses interessantes .
Lhe idee : ne pourriez-vous pas a chaque numero joindre dans la disquette 2 ou 3
graphiques H.R* utiles pour toute la famille, par exemple :
- carte de France avec departements
- carte de France avec voies navigables
- carte de 1 ! Europe etc
Gela montrerait a certaines families que l T ordinateur peut etre utile a tous *
Par ailleurs, pourriez-vous f aire un article sur les multiples emplois de
l 1 instruction EXEC ? Merci et bon courage
Docteur Pierre- Yves GOURIOU
08600 Givet
REPONSE :
1- Nous attend ons les contributions graphiques (et autres) de la part de nos
lecteurs .
2- Bruno RIVES vous off re justement dans le present numero un article sur EXEC.
Vous etes comble \
pom's
BULLETIN D'ABONNEMENT
Je desire recevoirle IST^de POM'S
□ avec disquette
□ sans disquette
Je desire m 'abonner pour 4 numeros
a partir du N° ,_■
□ avec disquette
□ sans disquette
Norn ._ __ ... _
Adresse ..........
Ces tarifs comprennent renvoi postal en France Metropolitaine et CEE (voie aerienne exceptee)
Envoyez ce bon de commande et votre reglement a :
Editions MEV - 49 rue Lamartine - 78000 Versailles
85FTTC
35FTTC
295FTTC
120FTTC
64
Pom's No 3
C'est avec impatience que j T attendais le numero 2 de POM T S, et dans 1 T ensemble je
n T ai pas ete degu ! Quel bonheur d T avoir enfin une revue en langue frangaise
consacree a 1 T APPLE II ! Bravo !
Cependant, le dicton dit : "Qui aime bien chatie bien !". Aussi, apres mes
encouragements les plus sinceres, me permettrai- je de f aire quelques critiques !
1- La parution trimestrielle ne pourrait-elle pas etre ramenee a une parution
bimestrielle ?
2- Beaucoup d T articles de fond que vous presentez proviennent de la revue "CALL
A.P.P.L.E.". II est vrai que vous l T avouez, mais tout de meme, c T est un peu
decevant pour ceux de vos lecteurs qui lisent "NIBBLE" ou "CALL A.P.P.L.E" !
3- Les programmes BASIC proposes sont d T un interet tres restreint (AGENDA ou
MULTIPLICATION). Pourquoi ne pas f aire un article de fond sur un sujet (par
exemple : f Ichier a acces sequentiel indexe) et proposer un programme BASIC
illustrant cette etude ?
A present, a titre de participation, je vous propose un petit programme BASIC
pouvant servir de "MENU" et qui utilise les possibilites tres completes de
tabulation sur l T ecran. L T exemple propose permet 12 options, mais il peut etre
etendu a l T infini.
Au niveau des possibilites meconnues de 1 T Applesoft, savez-vous qu T il est possible
d T utiliser des donnees n T importe ou dans un DATA a l T aide de POKE en page 0. Les
pointeurs DATA sont : POKE 125, N : POKE 126, P
N : valeur decimale du Bit de poids f aible de l T adresse DATA,
P : valeur decimale du Bit de poids haut de l T adresse DATA.
EX : 8 18... HEX 8 = DEC 8 HEX 18 = DEC 24
On tapera : POKE 125,24 : POKE 126,8.
Seules contraintes :
1- Posseder un utilitaire de DUMP, par exemple CRAE.
2- Placer les DATA en debut de programme, de fagon qu T aucune modification ne
change l T adresse du DATA.
3- On ne peut placer le pointeur qu T en debut de ligne BASIC d T ou la necessite
d T une ligne par type de DATA.
Cette f agon de proceder est plus simple que le "RESTORE NNN" propose dans 1 T 0I il
y a quelque temps
Maintenant une question pratique : enseignant, j T aimerais utiliser les programmes
de 1 T Education Nationale en LSE. Je possede un APPLE II + avec carte langage et
carte Z80. Existe-t-il un LSE pour APPLE ? Y a-t-il moyen d T utiliser un LSE d T un
autre MICRO moyennant quelques modifications minimes ?
Edmond AUGIER
MONACO
REPONSE :
1 -Helas, ce n T est pas encore possible
2 -Nous ne pouvons pas nous taire sur tous les sujets evoques par les revues
americaines. Sinon, que pourrions-nous dire ? Notez que nous ameliorons toujours
ce dont nous avons eu l T idee en lisant les classiques. Vous pouvez constater
qu T avec la conversion Pascal-BASIC de Gilles MAUFFREY, mise au point en novembre
1981, nous avons eu l T idee en meme temps que "CALL A.P.P.L.E".
3 -Avec l T article sur EXEC, vous avez deja un article de fond. Eh epluchant le
programme aide-memoire (Pom T s N 1),vous avez une excellente occasion d T analyser
1 utilisation de fichiers sequentiel et a acces direct.
4 -Malheureusement, il n T existe pas de LSE pour APPLE, et il n T est pas simple de
modifier un LSE d T un autre micro. Par contre, il existe d T autres logiciels pour
APPLE destines a 1 T enseignement .
Pom T s No 3
65
* EXEMPLE DE MENU *
* *
W V W W W W W W W W W W Sfcf %|/ W W W W V
w*t\
70 POKE 214,255? TEXT J HOME : REM
POKE=PAS DE LIST
80 DATA OPTION 1 , OPTION 2,0PTI0
N 3, OPTION 4 , OPTION 5, OPTION
6 > SUITE MENU
90 DATA OPTION 7, OPTION 8, OPT
ION 9, OPTION 10, OPTION 11,
OPTION 12,RET0UR DEBUT MENU
100 DIM M*(14>
110 FOR I = 1 TO H! READ M*(I)t
NEXT
120 REM xxxxxxxxxxxxxxxxxxx
x x
x PAGE 1 DU MENU x
X X
170 V - li GOSUB 690 : FOR V = 1 TO
22 J HTAB li PRINT "x"}: HTAB
39 * PRINT "x"J NEXT VJ GOSUB
69
180 VTAB 2 J HTAB 2 J INVERSE : PRINT
" DEMONSTRATION D'UN LOGICIE
L DE MENU "J NORMAL.
19 VTAB 3: FOR I » 2 TO 39 J PRINT
"x" } : NEXT I
20 FOR I - 1 TO 7! HTAB 3i VTAB
4 + 2 x I J PRINT I}",,"|H*(I
) J NEXT I
210 HTAB 4: VTAB 18: PRINT "»"
22 VTAB 21 : HTAB 15: PRINT "VOT
RE CHOIX " J CHR* (91) J" " J CHR*
(93): VTAB 21 : HTAB 28: GET
C$: PRINT C*: IF C* = "@" THEN
670 : REM @ » FIN DE PROGR
AMME
230 V = VAL <C*): IF V « THEN
220
240 FOR I ■ TO 7 - VS VTAB 18 -
2 x I J HTAB 4: PRINT "»"S IF
I > THEN VTAB 2 - 2 x I J
HTAB 4: PRINT
25 NEXT i: IF V * 6 THEN FOR I
= 1 TO 200 : NEXT
26 VTAB 4 + 2 x V: HTAB 6: INVERSE
: PRINT M*(V): NORMAL
27 FOR I « 1 TO 1000 : NEXT I
280 ON V GOTO 590,600,610,620,63
0,640,340
290 REM xxxxxxxxxxxxxxxxxxx
X x
x PAGE 2 DU MENU x
X X
340 HOME :V - i: GOSUB 690 : FOR
V = 1 TO 22: HTAB li PRINT "
x";: HTAB 39: PRINT "x": NEXT
V: GOSUB 690
35 VTAB 2: HTAB 2: INVERSE : PRINT
DEMONSTRATION-PAGE 2
": NORMAL
36 VTAB 3: FOR I = 2 TO 39: PRINT
"x"} : NEXT I
370 FOR V ~ 8 TO 14 : VTAB 2 x V -
10 : HTAB 3: PRINT (V - 7)\"*
, m :m*<v) : next v
38 HTAB 4: VTAB 18: PRINT "»"
390 VTAB 21 : HTAB 15: PRINT "VOT
RE CHOIX "J CHR* (91);',' "J CHR*
(93): VTAB 21 : HTAB 28: GET
c*: print c*:v a VAL (C*)
40 IF C* » "@" THEN POKE 214,0
: END : REM @=FIN DU VERRO
UILLAGE DE LIST
410 IF V » THEN 390
42 FOR I « TO 7 - V: VTAB 18 -
2 x i: HTAB 4: PRINT ">>"t IF
I > THEN VTAB 20 - 2 x It
HTAB 4} PRINT
43 NEXT i: IF V ~ 7 THEN FOR I
- 1 TO 30 : NEXT
44 VTAB 4 •♦• 2 x V: HTAB 6: INVERSE
: PRINT M*(V + 7)X NORMAL
450 FOR I » O TO 100 : NEXT I
460 ON V GOTO 520,530,540,550,56
0,570,580
470 REM xxxxxxxxxxxxxxxxxxx
x x
x APPEL OPTIONS x
X X
52
GOTO
650 :
REM
OPTION
7
53
GOTO
650 :
REM
OPTION
8
540
GOTO
650 :
REM
0PTI0N9
55
GOTO
650 :
REM
OPTION
10
56
GOTO
650:
REM
OPTION
11
57
GOTO
650 :
REM
OPTION
12
58
HOME
: GOTO 170
59
GOTO
650 :
REM
OPTION
1
60
GOTO
650 :
REM
OPTION
2
610
GOTO
650 :
REM
OPTION
3
62
GOTO
650:
REM
OPTION
4
63
GOTO
650 :
REM
OPTION
5
64
REM
OPTION 6
65
HOME
: VTAB 12: A* » "DEB
E VOTRE OPTION": HTAB 20 - LEN
(A*) / 2: PRINT A*: VTAB 20 :
HTAB 25: INPUT "TAPEZ 'RETU
RN' "JR*: IF R* < > "" THEN
650
660 HOME : GOTO 170
67 HOME : VTAB 12% HTAB 12 i PRINT
"AU MOIS PROCHAIN !"
680 NORMAL : VTAB 23: NEW
69 VTAB V: FOR H - 1 TO 3 \ P
"x»; ; NEXT H*. RETURN
22 FOR I « 1 TO 71 HTAB 3
4 + 2 x I : PRINT I J " . ♦ "
)«. NEXT I
Imprimerie Laballery, 58500 Clamecy, imprime en
depot legal : 1 er
France. Directeur de la publication Herve Thiriez
trimestre 1982.
ESPACE ELECTttONIQUE
ILLEL CENTER PARIS IS': 143, av. Felix-Faure - 75015 Paris, Tel. 554.97.48, Metro : Balard.
ILLEL CENTER PARIS 10° : 86 bd Magenta 75010 Paris, Tel. 201.94.68, Metro : Gore de ('Est, Parking : Magenta.
fcippkz
APPLE II
Un des micro-ordinateurs les plus
fiables de sa generation, Apple II
est utilise dans de nombreux
domaines : gestion, comptabilite,
enseignement, utilisations scienti-
fiques et industrielles, applications
domestiques.
D'une tres grande robustesse
(garantie totale 1 an) Apple II n'ex-
cede pas 5 kg et sa facilite *e trans-
port renforce encore sa souplesse
cTutilisation.
Son extensibilite est remarquable :
Apple II etant compatible avec la
plupart des peripheriques actuels,
il beneficie d'un large eventail de
possibilites.
CONFIGURATION DE
DEVELOPPEMENT
Langage
Materiel
Systeme
Memoire
utilisateur
(RAM)
Micro-programmation
Unites
Disk II
BASIC
PILOT
PASCAL
FORTRAN
II Plus
II Plus
II Plus
II Plus
32 K
48 K
48 K
48 K
Cartes
BASIC
1
Cartes
BASIC
1 ou2
Carte
Langage
1
Carte
Langage
1
APPLE III
L' Apple III est un systeme d'orcli-
nateur de bureau puissant, faisant
partie d'ensembles etudies surme-
sure et concus pour resoudre vos
besoins complexes en application.
Pour les managers, les financiers-,
les analystes et tous ceux qui ont
besoin i'organiser des faits et des
chiffres, il existe le systeme
cTAnalyse cle Pinformation Ap-
ple III.
Option A : 33.330 F TTC visi-
cale 3 - S.O.S. buissness Basic -
Moniteur3 12"
Option B: 38.100 F TTC.
Idem A + Floppy supplemental
Option C ;
41.100 FTTC t
Idem B +
Imprimante
thermique
graphique.
LES L0GICIELS
Pour APPLE II
PHANTOMS FIVE 48 K (DOS 3.3) 260,00 F TTC
SPACE EG r.S 48 K (DOS 3.2 ou 3.3) 260,00 F TTC
RASTER BLASTER 48 K 295 ,00 F TTC
APPLE PANIC 48 K 380,00 F TTC
COMPUTER BISMARCK 48 K 395,00 F TTC
COMPUTER NAPOLEONICS 48 K 450,00 F TTC
COMPUTER AIR COMBAT 48 K 495,00 FTrC
VISICALC (DOS 3.3) 16 secteurs 1 764,00 F TTC
VISITREND + VISIPLOT 2363,76 F TTC
VISIDEX 1 764,00 F TTC
VISIPLOT 1640,52 FTrC
VISITERM 1375,92 FTrC
DESK TOP PLAN II 1 764,00 F TTC
CCA/DMS (Gestion de Fichier) .'. 1 105,44 FTTC
APPLE WRITER, j 576,24 F TTC
APPLE POST 352,80 FTTC
APPLE PILOT 1 293,60 FTTC
MINI-ASSEMBLEUR APPLE SOFT 235,20 F TrC
PROGRAMME
COMPTABILITE GENERALE (SAARI) 3410,40 FTTC
PROGRAMME PA YE (GIPSI) . ... 2 587,20 F TTC
5>S
BON DE COMMANDE
EXPRESS
ILLEL
A retourner 6 : ILLEL Center Informatique :
service vente par correspondance
143, avenue Felix Faure 75015 Paris.
MODE DE RtGLEMENT CHOISI
□ a la commande paiement comptant
□ a credit* a partir de 2000 F.
Je verse 20 % du montant total de mon achat : ,
ci-joint : Cheque bancaire □ C.C.P. □ Mandat carte □
* Conditions de credit CREG : • litre salarief
• 20 % minimum ou comptant, solde arrondi 6 la centaine superieure.
Je soussigne : Nom
N° Rue_
Code postal
. Prenom .
. Ville
. Tel. .
commande fermeet|desire recevoir d'urgence
Quantite Prix unitaire
Signature :
Montant net
Frais'de port
pour envoi postal
TOTAL A PAYER
Prix total
j — J—
3 0.0
■ 1 1 1 1
Pour mieux choisir
"votre" ordinateur
et pour mieux I'utiliser.
^^x\x^ ^^^^ '*&
?
I'l L ORDINATEUR
IL— ij IIMDI VIDUEL
Vous y trouverez :
L'actualite et les tendances de I'informatique individuelle • des galops et des bancs
d'essai des principaux materiels . des panoramas et des tests comparatifs . le point
des grandes manifestations internationales • des articles d'initiation • des syntheses
• des programmes • des interviews "exemplaires" • des conseils • des idees
• des astuces.
I'l l: ordinateur
II— Jj IIMDIVIDUEL
chez votre marchand de journaux
41 rue de la Grange aux Belles - 75010 Paris