Skip to main content

Full text of "poms03"

See other formats


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