Skip to main content

Full text of "magazine poms23"

See other formats


, La revue francophone independante pour les utilisateurs des 
3 Apple ][+, //e, //e+, //c™ et Macintosh™ 



^ Du graphique en Turbo Pascal sous CP/M 
Routines binaries et carte langage 

& Le Jeu de la Vie sur le Macintosh 

•fr Le lie composeur telephonique 

^ Vos listings Basic formates 

^ Routine de saisie sur Mac ^ 
Vos impots sur Multiplan iojg 

^ Desassembleur 65C02 iSs£p 

# Rubrique MacAstuces 

^ Marche arriere Basic 

m Patches au DOS 3.3 

« Une UNIT Pascal 



6^ 



* SoftCopie ProDOS 
ft Un decruncher 



NUMERO 23 



PRIX 40 F 



ISSN : 0294-6068 




J* 

La Re vue des Macintosh 



2 




P*2 





D£C£MBR£85 N° 3 



Editorial 

Herve Thiriez 



Page 5 



Le Turbo Pascal 

Nicolas Montsarrat 

m 

Page 6 



Un cornposeur sur 

lC 1 1 C Bernard Hoyez 
Jean-Luc Nail 
Bruno Fenart 



Page 9 



GENUTILE 

Jean-Claude Isngrand 



J 




//c 



Page 11 



Un formateur de 

listing BasiC SyhrieGaUet 

JH 



//e 



//c 

Page IT 



NaV e tte Jean-Paul Arbel 



m 



//c 



Page 24 



Un "Decruncher" 

Patrice Neveu 
Page 28 



DEL J2S 



77c~| 



Un Desassembleur 

65C02 Yvan Koenig 



Page 35 



Jeu de la vie 








Dominique Bernardi 


h 


mm 




Page 40 


Routine de saisie 


en Basic BJ 


Girard Michel 








D Page 48 



Mac 
Astuces 



Page 51 



lmpots sur Multiplan 

Christian Piard 




//e 



//c 



Page 53 



SoftCopie 



//e 



77c 



Bruno Fenart 
Page 57 



Retour dans le Basic 
Halte aux Scrolls cmes 

Curuux 



EES 



//c 



Page 61 



Patches au DOS 33 



03 DEI 



//c 



'atrice Neveu 
Page 66 



Courtier 
des Lecteurs 



a 

Page 69 



Micro- 
informations 



Page 70 



Les annonceure : 

Apple : pages 31, 38 et 39. IEF : page 75. Infomag : page 2. Ordinateur Individuel : Page 76. 



Editions MEV - 12, rue d'Anjou - 78O00 Versailles, Dlreeteur de la publication : Herve Thiriez 



Pom's; n° 23 



3 



Des le 20 Avril : 

LE RECUEIL 3 

im&ros 9 a 12 de Pom's 




Le recueil n° 3 : quatre nuperos de Pom's 
Le recueil n° 3 : listing^" LASER" 
Le recueil n°3 : plus de ci^uknte programmes 
Le recueil n°3 : une referenpej indispensable 




Recueil 3 (regroupant les nurfi4fos-9-a^T2 de Pom's) : 140,00 F TTC franco 
Disquettes d'accompagnement 9 a 12 (][+, //e, //e+,//c) : 190,00 F TTC franco 

Bon de commande page 74 



L'Editeur Plein Ecran 

ii^g w@ or© a OKI §□© 



Vous permet toujours de : 

1 lisier vos programmes Basic en avant et en arriere ; 
1 modifier, inserer, effacer des caracteres en plein ecran sans relire les lignes ; 
' rechercher toute chaine de caracteres ; 
■ choisir vous-meme les codes de controle d'EPE. 

\ mais il fonctionne maintenant : 

• sous DOS • en 40 colonnes • sur Apple ][+ • sur Apple //e+ 

• sous Prodos • en 80 colonnes • sur Apple lie • sur Apple lie 



EPE version 5.0 : 200,00 F TTC franco 
^change anciennc version contre version 5.0 : 80,00 F TTC franco 

hon de commande page 74 



4 



Pom's n° 23 



Editorial 



Ce numero de printemps, outre ses treize programmes, vous presente deux 
nouveautes : le recueil n °3 d'abord, qui regroupe les numeros 9 a 12 de Pom's. II 
vous seduira particulierement pour ses listings sortis sur la LaserWriter (toujours la 
communication entre Apple II et Mac !). Une soixantaine de programmes et plus de 200 
pages : une mine de renseignements a portee de main. 

Deuxieme nouveaute : E.P.E. 5.0. Nombre d'entre vous avail en effet pris la plume 
pour deplorer Vimpossibilite d'editer avec E.P.E, sous ProDOS en 80 colonnes. Des 
aujourd'hui, cette nouvelle version est disponible, et elle fonctionnera egalement sur 
votre lie. 

Vous n'avez pas E.P.E. ? au prix de 200,00 F, c f est un editeur sans egal. 

Vous avez E.P.E. ? retournez-nous la disquette originate, nous la mettrons a niveau au 

prixde80 f 00 F. 

Depuis plus de deux annees (Pom's n° 9), vous trouviez les disquettes 
d'accompagnement Apple II a 55,00 F oua 280,00 F par abonnement : elles resteront 
sans concurrence, mais nous devons avouer que nous etudions une 1 remise a jour 1 de ces 
prix. Ne tardez pas a renouveler votre abonnement ! 

Pascal et Turbo Pascal, CPIM, DOS et ProDOS, assembleur et Basic, 6502, 65C02 et 
68000 : vous trouverez certainement ce numero tres riche ; vos contributions nous 
montrent que vous etes particulierement actifs devant vos claviers. Dans le numero 24 
probablement, vous trouverez le tres beau fruit de cette activite sous la forme d'un 
programme en CPIM, CPIM que nous avions quelque peu delaisse. 

Nous vous donnons rendez-vous au Sicob Boutique, du 14 au 19 avril, stand 2A203 
et n'ouhliez pas notre petit questionnaire page 73 ! 

Herve Thiriez 



Ont collabore a ce numero : Jean-Paul Arfcel, Alexandre Avrane, Jean-Luc Bazanegue, Dominique Bernardi, Gilles 

Caraux, Gactan Dagron. Delphine Declercq, Alexandre Duback, Bruno Fenard, Sylvie Gallet, 
Jean-Michel Goiirevitch. Olivier Herz. Jacques Honorez, Bernard Hoyez, Yvan Koenig, Niels 
K0ge, Jean-Claude Lengrand. Gerard Michel, Nicolas Montsarrat, Jean-Luc Nail, Patrice 
Neveu, Christian Piard, Herve Thiriez. 

Directeur de la publication, redacteur en chef : Herve Thiriez. 

Redacteurs : Alexandre Avrane, Olivier Herz. 

Siege social : Editions MEV - 12, rue d'Anjou - 78000 Versailles. Tel. : (1) 39.51.24.43. 
Publicity : Editions MEV. 
Diffusion : N.M.P.P. 

Impression : Rosay - 47, avenue de Paris - 94300 Vincennes. Tfl- : (1) 43.28.18.63. 



Pom's est une revue ind£pendante non rattachee & Apple Computer, Inc. ni a Apple Computer France S.A.R.L. 
Apple, le logo Apple, Mac ct lc logo Macintosh soni des marques deposecs d'Applc Computci, Idc. 



Pom's n w 23 



5 




Nicolas Montsarral 



Commercialise en France 
par FRACIEL - 42, rue 
des Prebendes - 37000 
TOURS au prix de 
625,00 francs HT (soit 741,25 
francs TTC) dans sa version 
CP/M, le TURBO-PASCAL est 
un des meilleurs compilateurs 
Pascal disponibles sur Apple ][+, 
//e et fJc. Le systeme comporte le 
compilateur TURBO.COM resi- 
dant en memoire centrale, avec 
editeur incoipore, le programme 
d'installation TINST.COM, 
TLIST.COM qui lisle les 
fichiers-source, ainsi qu'un petit 
tableur de demonstration nomme 
"Microcalc". 



Le systfcme 
TURBO-PASCAL 

Aprfcs avoir appele TURBO 
.COM, le programme propose un 
menu permettant d'editer un 
fichier-souree, de le compiler, de 
1'executer, de le sauver. II 
propose quelques commandes de 
manipulation des disquettes 
(catalogue, appel dun programme 
extcricur, etc.), ct des commandes 
diverses (compilation en memoire 
centrale ou sur disquette, adresse 
de depart du programme 
objet,...). 



L'Editeur 

L'editeur reprend la majorite des 
commandes de WORDSTAR, le 
traiternent de texte bien connu 
tournant sous CP/M. Outre les 



commandes de controle du 
curscur, on y trouve des 
commandes de deplacements et de 
copie de blocs de texte, de 
recherche et de remplacernent, 
ainsi que de mise en place du 
syst&me de tabulation 
automatique. 

La place disponible pour les textes 
est d'environ 22 Ko sous CP/M 
60Ko et de 18 Ko sous CP/M 
56Ko. C'cst largcmcnt suffisant 
pour les programmes de taille 
rnoyenne, d'autant plus que le 
compilateur permet de compiler 
des programmes dont le source 
est compose de plusieurs fichiers 
("include files") 

Cet editeur est pratique U utiliser, 
rapide et puissant. Un petit defaut 
toutefois : pour les possesseurs 
d'Apple ][+, il y a des problemes 
de reconnaissance de la video 
inverse sur certaines cartes 80 
colonnes destinees au ][t (Par 
exemple la carte U-Term), en 
particulier le curscur n'est pas 
visible k l'ecran, ce qui n'est pas 
sans poser quelques problemes... 
Pour les cartes 80 colonnes des //e 
et //c, aucun probl&ne. 

Le Compilateur 

Le compilateur, resident en 
memoire centrale, est surement le 
compilateur Pascal le plus rapide 
disponible sur Apple : II compile 
les programmes en une seule 
passe, directement cn code 
machine (et non en code-P comme 
le Pascal UCSD). Deux options 
sont proposees : la compilation en 



memoire, ou le code et le source 
resident en memoire, et la 
compilation sur fichier COM, ou 
seul le source est en memoire. 
Cette deuxieme possibilite permet 
de compiler des programmes dont 
le source est trop important pour 
laisser de la place au code, ou 
simplement pour obtenir un 
fichier executable independant du 
systfcme TURBO-PASCAL. 

La vitesse d'execution des ficliiers 
objet est egalement impres- 
sionanle ; un petit peu plus d'une 
seconde pour une boucle de 1 & 
10000, contre 8 pour le Pascal 
UCSD, bien que le code genere 
soit du code Z80, plus lent que 
l'equivalent 6502. 

En conclusion, un compilateur 
simple a utiliser, dont les 

performances sont in6gal£es sur 
Apple. 

Le langage Pascal 
proprement dit 

Le TURBO-PASCAL reprend 
toutes les caracteristiques du 
Pascal standard, plus quelques 
extensions : 

Le type BYTE permet de definir 
des nombres entiers entre et 
255, n'occupant qu'un seul octet 
en memoire. Les conversions en 
INTEGER se font automa- 
tiquement, sans generer d'erreurs. 

Le type REAL definit les nombres 
reel entre 1 38 et r 38 sur une 
mantisse de 1 1 chiffres, on est 
loin des maigres 6 chiffres du 
Pascal UCSD. 



6 



Pom's n 23 



Les chalnes de caract&res sont 
presentes, avec le type STRING 
et les instructions DELETE, 
INSERT, STR, VAL et les 
fonctions COPY, CONCAT, 
LENGTH, POS. 

Les types enumeres (par exemple 
VAR HUMAIN : [HOMME, 
FEMME1) sont utilisables, 
contrairement au Pascal UCSD, 
sans ecrirc de routines de 
conversion : ainsi on peut ecrire 
WRITELN (HUMAIN) et on aura 
k l'ecran "HOMME" ou 
"FEMME" en toutes lettres. De 
meme pour READLN 
(HUMAIN), qui attend les 
caract&es HOMME ou FEMME. 

Les "TYPED CONSTANTS" 
permettent de forcer le type d'une 
constante. Ainsi on peut definir 
CONST CR ; CHAR - A M qui 
definit le caract&re l Rctour 
chariot'. On peut utiliser ces 
constantes comme param£tres de 
procedures de fonctions, 
contrairement a certaines 
constantes norm a les. On peut de 
mgme les utiliser pour initialiser 
des tableaux de constantes, 
permettant de simuler les 
READ/DATA du basic : on peut 
definir CONST DEUX : ARRAY 
[0..7] OF BYTE 
(1,2,4,8,16,32,64,128), et 
manipuler DEUX comme un 
tableau (voir programme 
GRAPHIC). 

La gestion des fichiers est 
comparable k la gestion UCSD, 
avec fichiers sequentiels et 
fichiers directs. Comme en Pascal 
UCSD, on accede aux 
peripheriques par des fichiers 
portant le nom des 'devices' 
CP/M : "CON:" pour l'ecran, 
"KBD:" pour le clavier sans echo, 
"LST:" pour l'imprimante, 
"AUX;" pour la carte serie, etc. 

On trouve egalement les 
UNTYPED FILES du Pascal 
UCSD, qui permettent d'acc€der & 
des fichiers CP/M par blocs de 
128 octets. 

Toutes les procedures de gestion 
de l'ecran sont presentes, avec 
video inverse (sur //e et lie) et 
controle du cuxseux. 



Dans la version CP/M, on peut 
definir des variables & une 
position absolue en m&noire 
(directive ABSOLUTE, voir 
programme GRAPHIC), chainer 
des programmes, et appelcr des 
sous programmes en assembleur : 
il suffit d'inserer les codes 
hexadecimaux de la routine. 

Quelques restrictions : pour 
optimiser la vitesse d'execution, 
le Turbo Pascal ne gen^re de code 
pour les appels recursif que sur 
dernande de 1'utilisatcur par 
Toption {$A+}, et n'effectue la 
verification des indices de tableau 
qu'avec Toption {$X+}. 

Les limites 

On peut faire au Turbo Pascal 
deux reproches principaux : 
• dans la version Apple CP/M, il 
n'y a aucune gestion possible 
des graphiques. On peut lever 
cette barrifere partiellement 
(voir programme GRAPHIC), 
mais les routines ne seraient 
trbs perform antes qu'en 
assembleur ; 



• il n'y a pas de possibility de 
creer des 'libraries' et des 

'unites' : la seule entity 

compilable est un PROGRAM. 
On ne peut done pas creer de 
gros programmes, scparcs cn 
modules d'une dizaine de Ko 
s'appelant les uns les autres. 



Conclusion 

On l'a vu, le TURBO-PASCAL 
possdde des performances 
epoustouflantes en compilation et 
en vitesse d'execution. Les 
debutants pourront l'utiliser de 
mani&re beaucoup plus pratique 
que le Pascal UCSD pour se 
former, le dialogue avec 
l'utilisateur 6tant tr£s interactif, et 
les attentes nettement moins 
longues... L'utilisateur chevronne 
pourra s'en scrvir pour executer 

des programmes plus rapidement, 
la conversion depuis le syst£me 
UCSD etant relativement aisee 
avec un programme comme 
UNIVERSAL FILE CONVER- 
SION. 

o 



Programme 'GRAPH. PAS' 

Le si%ne -i indique que le retour chariot precedent ne doit etre saisi. tl ne sert 
qu'a la misc cn page. 

PROGRAM GRAPHIC; 

{Pour executer ce programme, il faut le cumpiltsi en Option C 

OM et demander une START ADDRESS de 55000. apres nnmpi latin 
:t, yuitttsx turbo pascal et executer le programme sous CPU) 
{ATTENTION en mode graphique* il ne faut pas Fairede WRTTF. n 
L de WRITELN} 

CONST DEUX -.ARRAY 10. .?) OF BYTE- (1, 2, 4 , 8, 16, 32, 64, 128) ; 

TYPE PA-PACKED ARRAY [ 0, .1} OF 0..Z55; 
MAGIC=RECORD 

CASE BOOLEAN OF 

TRUE; (INT:INTEGER) ; 
FALSE: (PTR: "PA} ; 
END; 

VAR ECRAN : PACKED ARRAY [0 .. 8191] OF BYTE ABSOLUTE $3000; 
A, R: REAL; 

OX, OY, X, Y; INTEGER/ 

FUNCTION PEEK (X: INTEGER) ; INTEGER ; 

VAR CsMACIC; 

BEGIN 

C.INT:~X; 

PEEK: =C. PTR" [OJ 



Pom's n° 23 



£3©; 



Urn appfa&fi 



Pi? ocrr- v.-r z?afzxz*:; 
VAP. AUNTEjLP; 
BEGIN 

poke f$£z cc, 3; - PSKfi r$£399, ft ; a:=?5£*7$"£055; +pzek($e050) +p 

~,FFK(SF r jS7) +PEEK ' $E0$$) ; 
END; 

PROCEDURE TEXT; 
VAP A ; INTEGER; 
BEGIN 

A:=PEEK($EQ51) tPEEK(SE054) ; POKE (SEOOl, 0) ; POKE (SEOOD, Q) ; 

CLRSCRi 

END; 

PROCEDURE HGR; 
BEGIN 

GPAFIXONt 

FILLCHAR f ECRAN, 81 92, O) 
END; 

PROCEDURE PLOT (X f Y: INTEGER) ; 

VAR D, I: INTEGER; 

BEGIN 

D;=X MOD 64; 

T:=10?4*(D MOD 8)+l?8*(D DIV 8)+40*(Y DIV 64) + (XDIV 7); 
ECRAN [ I) : -ECRAN (I) OR DEUX ( X MOD 7 J 
END; 

PROCEDURE LINE (XI, Y1,X2, Y2 : INTEGER) ; 
VAR XT, TX, XX, X, Y:REAL; 

C. I : INTEGER r 
BEGIN 

IF X1>X2 THEN BEGIN 
C:=X1; X1;=X2; X2:-C; 
C;=Y1; Y1:*Y7; V?;=C 
END; 

IF X1=X2 THEN 

IF YKY2 THEN FOR I:=Y1 TO Y2 DO PLOT (XI r I) 
ELSE FOR I:=Y2 TO Yl DO PTS)T(X1 r T) 

ELSE IF Y1=Y2 THEN FOR I:=X1 TO X2 DO PLOT(I,Yl) 

ELSE BEGIN 

TX: = (Y2-Y1 ) / (X2-X1 ) ; XT: =AB5 (1 /TX) ; 

IF XT>1 THEN HTimXf X:=X1; Y:=Y7; XX:=TX 

-<*XT; 

REPEAT 

PLOrCVRUNU (XI , TRUNC(Y) ) ; 
X:=X+XT; Y:=Y*XX 
UNTIL X>X2 
END 

END; 
BEGIN 
HGR; 

R:°0.0; A:=0; QX:=14Q; 0Y:=95; 

REPEAT 

X : =TRUNC ( 140*R*C0S (A) ) ; Y : =TRUNC ( 95+R'SIN (A) ) / 
L INE (OX, Y, X, Y) ; OX : =X; CY:= Y,- 
R;=R+1.5; Az=A+l.bb33; 
UNTIL (R>95) OR KEYPRESSED; 
READLN; TEXT 
END. 



Une des limitations du 
TURBO-PASCAL est de 
ne pas permettre la 
gestion des graph iques. 
Ce petit programme y 
remedie, de facon 
rudimentaire car ses 
performances ne sont 
pas celles d*une routine 
cn asscmbleur. 

Pour transferer le programme de 
la disquette Pom's vers une 
disquette CP/M sous le nom 
GRAPH. PAS, il est n^cessaire 
d'avoir UNIVERSAL FILE 
CONVERSION (dans le cas 
contraire, a vos claviers !). 11 faut 
done transferer le fichier 
GRAPH. PAS puis passer sous 
CP/M et faire un REN 
GRAPH. PAS=GRAPHPAS. 
Ensuite, passer sous TURBO 
PASCAL, puis compiler le 
programme en option COM FILE 
en specifiant une START 
ADDRESS de $5000. 

Le programme lui-meme trace un 
petit dessin de demonstration, un 
carrc qui tourne. Les procedures 
utilisables sont : 

HGR passe en mode graph ique et 
efface l'eeran. 

GRAFIXON passe en mode 
graphique sans effacer l'eeran. 

TEXT passe cn mode texte. 

PLOT(X,Y) met un point en 
X,Y a l'eeran 

LINE(X1,Y1,X2,Y2) trace 
une ligne entreXl.Yl et X2,Y2. 

Attention, une restriction : il ne 
faut pas faire de WRITE ni de 
WR1TELN en mode graphique, 
sous peine de plantage. . . 



8 



Pom's n° 23 



copposeuf* 



Bernard Hoy ez, 
Jean-Luc Nail, 
Bruno Fenart 



Les proprietaires d'un 
Apple //c ont sans doute 
ete de^us en s'aperce- 
vant que le programme 
de Bernard Hoyez et Jean-luc Nail 
permettant de composer automati- 
quement un numero de telephone 
(Pom's ti° 22), ne pouvait pas 
fonctionner sur leur machine. 
Qu'ils se rejouissent, voici une 
version d'AGENDA et de 
COMPOSEUR qui permet de 
1'adapter a votre machine favorite. 



Pour ccla, on utiliscra lc port scric 
rf 2 "consacre" normalement an 
modem et plus particuli&rement le 
niveau logique DTR "Data 
Terminal Ready", qui se trouve 
sur la broche 1 du connecteur 
(voir schema). La valeur de cette 
sortie est soit -12V soit +12V. 
C'est cette sortie que Ton va 
utiliser a la place de ANO pour 
commander le relais, bien que les 
valeurs de ANO soienl el +5V. 



Pour proteger le transistor on 
rajoutera une diode en derivation. 

Pour l'alimentation, la meilleure 
solution est d'utiliser une pile (de 
4,5 ou 9 volts suivant le relais 
utilise). Le reste du schema est 
identique. 



Pour commander le niveau de la 
broche DTR, il faut utiliser le 
registre de commande du port 
considere (adresses : Port 1 = 
SC09A - Port 2 = SCOAA). 
Suivant la valeur de ce registre, 
DTR et par suite la tension de la 
broche 1, passe d'un niveau h 
l'autre (voir le tableau). 
Les modifications k apporter au 
programme AGENDA sont les 
suivantes : 

380 POKE 49322, A Prise de I igne 
550 POKE 49322,0 Coupe la ligne 



Connecteur 
Port s£rie n 2 




l,5kfl 

JWV\A 




Schema de branchement 



Broche 


Portl 


Portl 


Signification 




1 


DTR1 


DTR2 


Data Terminal Ready 


Sortie 


2 


TD1 


TD2 


Transmit Daia 


Sortie 


3 


GND 


GND 


Masse mecaniquei 'signal 


Enirte 


4 


RDl 


RDl 


Read Dm 


5 


DSR1 


DSR2 


Data Set Ready* 


Entree 




Les broche s 


du connecteur stric 





Portl 
Port 2 



Adresse 
hexadecimale 



SC09A 
$C0AA 



Adresse 
decimate 



49306 
49322 



Octet: 



1 7 


6 


5 


4 


3 


2 


1 






















Valeur du 




Tension 



Registre 




RTS 


Broche 1 


$00 





Haul 


-12 V 


$04 


01 


Bas 


+ 12V 


$08 


1 


Bas 


+ 12V 


$OE 


1 1 


Bas 


+ 12V 



Signification des bits du registre de commande 



Pom's n° 23 



Pour COMPOSEUR.S voir le 
listing du nouveau source. 
Remarque : on a utilise lc port 
n° 2, pour le port n" 1 il suffirait 
de changer l'adresse du regislrc 
de commande. 

Bibliographic : The Apple He 
Reference Manual • Volume ] . 



Programme 

'AGENDA' 



10 


REM 


**»COMPOSEUR DE NUMF.RO* * ' 


20 


REM 


* par * 


30 


REM 


* Bernard HOYEZ 


40 


REM 


* et Jean-Luc NAIL * 


50 


REM 


A************************ 


60 


HEM 


==>ENTRER LES NOMS ET LES NOM 



EROS EN DATA A LA SUITE DES AUTR 



ES 

70 REM 
80 HOME 



i/0 ONERR GOTO 5/U 

100 PRINT " COMPOSITION AUTOMAT 

I QUE DE" 

110 PRINT " NUMERO TELEPHON 

IQUE- 

120 PR TNT CURS (4) : SLOADCOMPOSEUR" 

130 DIM T$(100,2J 

140 N = 

150 N - N + 1 

2 60 FOR J - 1 TO 2 

170 READ T$(N,J) 

180 NEXT J 

190 GOTO 150 

200 VTAB (8) 

210 PRINT "UTILISEZ LES F LECHES "f t 
INVERSE t PRINT "=>";.' NORMAL : 
PRTNT " ET "/; INVERSE : PRINT " 
<-": NORMAL 

220 PRINT "POUR SELECT1 UNNEK LE NVM 
DE L'ABOSNE" 

230 PRINT : PRINT "VAT-TOF.?. AVFC U T 
OUCHE RETUKtf 

240 I - 

2S0 GET AS 

250 At - ASC {AS} 

270 IF At < > 13 AND At < > 21 AND 

At < > 8 THEN 260 
280 IF A* - 13 TURN Irffl 
290 IF At - 21 THEN 1-1*1 
300 IF A% = 8 THEN 1=1-1 
310 IF I > N - 1 THEN I = N - 1 
320 IF 1 < 1 THEN I - 3 
330 VTAB 15 



340 CALL - 868: PRINT T$ (I, 1) ,TS (I , 
2) 

3S0 GOTO 250 
360 X3 - TS (1,2) 

370 REM "COMPOSITION DU NUMERO* 

380 POKE 49322 e 8: REM Prise de Hone 

390 FOR I - 1 TO 700: NEXT I 

400 HUME 

410 PRINT : PRINT "JE COMPOSE LE NUM 
ERO 

420 FOR I - 1 TO LEN (XS) 

430 A - ASC ( MSD$ (X$,I,1)) t 128 

440 POKE 7, A 

450 CALL 7£8 

460 PRINT CHRS (A) ; 

470 FOR T = 1 TO 600: NEXT T 

480 NEXT I 

490 HTAB 1: VTAB 5: PRINT "DECROCHEZ 
LE COMBINE, MAINTENANT. . . ■ 

500 VTAB 8: PRINT " AVANT" 

S10 FOR I - 400 TO 1 STEP - 1 

520 VTAB (15): HTAB (11) 

530 PRINT TNT (I / 50J/" SECONDES" 

540 NEXT I 

550 POKE 49322,0; REM Coupe 

560 GOTO 580 

570 IF PEEK (222) - 42 THEN 200 

580 HOME : RESTORE 

590 PRINT ". . . fRET POUR UN AUTRE APP 

EL ... ": GOTO 140 

600 DATA RENSEIGNEMENTS, 3612 

620 DATA AUTRES RENSEIGNEMENTS, 361 1 

630 DATA JULIETTE, 12345678 



Source 


21 

22 


IDA 
CMP 


CHIFFRE 
i n 0"-l 


4 5 STY COMREG 
46 JSR WAIT 


'COMPOSEUR.S' 


23 


BCC 


ERROR 


4 7 LDA #1 08 


24 


CMP 




48 LDY 9$08 


Asscmblcur Big Mac 


25 
?G 


BeS 


EKKVR 


49 STY COMREG 

50 JSR WAIT 




27 


AND 


ttllll 


51 RTS 


2 * * 




: filtrage 






3 ' Composeur * 


28 


BNE 


COMPOSE 




4 * * 


29 


LDA 


410 




5 ************ ******** ****** 




i CHIFFRE" 


-> <A>-10 




6 

7*8 noi/embr*? 85 


30 
31 


COMPOSE TAX 




Recapitulation 
'COMPOSEUR 


a 

9 


32 
33 


BOUCLE 

JSR 


* 

PULSE 


10 * ADRES5E 


34 


DEX 






11 


35 


BNE 


BOUCLE 


Aprds avoir salsl ce code sous 


12 CONREG - $C0A\A ;Port 2. 


36 


RTS 




moniteur, vous l& sauvegarderez par 


SC09A pour le port 1 


37 






BSAVE COMPOSEUR,A$300,L$32 


13 WAIT = SFCA8 


38 


ERRCR 


* 




14 CHIFFRE = 7 




; ce n'etait 


pas un chiffre 


03O0- A5 07 C9 AF 90 12 C9 BA 


75 F.RRF.IIR = 8 


39 


im 


tSFF 


0308- BO OE 29 OF DO 02 A9 OA 


16 


40 


STA 


ERR EUR 


0310- AA 20 ID 03 CA DO FA 60 


1 1 ORG $300 


41 


RTS 




0318- A9 FF 85 08 60 A9 9F AO 


18 


42 






0320- 00 8C AA CO 20 A3 FC A9 


19 ENTREE = * 


43 


PULSE LDA 


0159 


0328- 6G AO 0& 8C AA CU 20 Ati 


20 


44 


LDY 


#$00 


0130- FC 60 



Des le 20 avril, dans votre bibliotheque : 

Le Recueil 3 



Pom's n° 23 



® 



Jean-Claude Lengrand 



4e5 u tilit aires indispensables dans une t MtU3m 



GENUTILE est un 
ensemble de PROCE- 
DURES et FUNC- 
TIONS d'imeret general 
constituant une INTRINSIC 
UNIT au sens du compilateur 
PASCAL, et qui est incorpore & la 
SYSTEM LIBRARY sous les 
numeros de SEGMENTS 16 
(programme) et 17 (donnees). 

GENUTILE definit un TYPE 
CHOIDECA:SET OF CHAR, et 
une variable ALFANUM de ce 
type. ALFANUM designe 
Tensemble des caract&res 
alphanumeriques depuis " " 
(cspacc) jusqu'S "~" (caret). 



Programme 'GENUTILE' 

(* LENGRAND, LE 9/12/82 *) 

("} 

CSS*') 

UNIT GENUTILE; INTRINSIC CODE 16 DATA 17/ 
INTERFACE 

TYPE CHOIDECA=SET OF CHAR; 

VAR BS, SON, EFL, EFB, INV, NORM, CR, ESC, FLD, HOME i CHAR; 
AI.FANUM :CHOTDF.CA; 

PROCEDURE PRENRETURN; 

t VNCTl ON PRENCAR (BONSET; CHOIDECA) CHAR/ 
FUNCTION OUI : BOOLEAN; 
PROCEDURE MESSAGE (X ; INTEGER; ? : STRING) ; 
PROCEDURE ALARME (S : STRING) f 

PROCEDURE PRENCUAINE (LONGMAX: INTECER; BONSET : CHOIDECA; VAR S : STRING) ; 
PROCEDURE ENTIEP (LONGMAX; INTEGER; VAR S: INTEGER) / 
PROCEDURE CONTINU ( Y : INi'EGEM.) / 

PROCEDURE Ah ITEXT (LONGMAX: INTEGER; S : STR ING) / 

PROCEDURE SA TS IE {X, Y, LONGMAX: INTEGER; BONSET : CHOIDECA ; LI BELLE : STR ING; 
VAR S: STRING}; 



GENUTILE definit diverses 
variables de TYPE CHAR qui, 
lorsqu'elles sont envoyees sur 
OUTPUT, ont l'effet suivant : 

SON emet un BIP 
BS recul du curse ur 

EFL efface la fin de ligne 

EFB efface le bas de l'ecran 
INV met Taffichage en mode 
inverse 

NORM met l'affichage en mode 
normal 

CR envoie le curseur a la 
ligne 

HOME efface l'ecran ou va h la 
page 



GENUTILE definit aussi ESC et 
FLD (fteche droite) de TYPE 
CHAR. Toutes ces variables sont 
dcfinics commc lc CHR( ) dc 7, 
8, 29, 11, 18, 20, 13, 12, 27, 21 
respectivement. 



FUNCTION PEEK (ADRESSE : INTEGER) t INTEGER J 
PROCEDURE POKE (ADRESSE, CONTENU: INTEGER) ; 

PROCEDURE ERROR (L: INTEGER; VAR SSs.STRTNG) / 
PROCEDURE VALBOOL(S:STRINC/VAR N :BO0 LEAN ) $ 
PROCEDURE VALREEL(S: STRING; VAR K:REAL); 
PROCEDURE VALENT (S:STRING;VAR K; INTEGER) ; 

PROCEDURE STRB00L (N : BOOLEAN; L : INTEGER; VAR S:STRING;VAR ERREUR: INTEGER) , 
PROCEDURE STPFIX(N :RFAT.;T. t r>: INTEGER; VAR S:STRING;VAR ERREUR ; INTEGER) ; 
PROCEDURE ETRFLOT (N : REAL ;L,Dl INTECER; VAR S : STRING; VAR ERREUR : INTEGER) ; 
PROCEDURE STRENT (N, L; INTEGER; VAR S .- STRING; VAR ERREUR ; INTEGER ) ; 

IMPLEMENTATION 

PROCEDURE P REN RETURN ; 
VAR SORT :CHAR; 
BEGIN 

REPEAT 

READ (KEYBOARD, SORT) 

UNTIL EOLN (KEYBOARD) 
END; 

FUNCTION PRENCAR; 
VAR CH ; CHAR; 

BON tBOOLEAN; 
BEGIN 
REPEAT 

READ (KEYBOARD, CH) f 

IF EOLN (KEYBOARD) THEN CH:=CR; 

BON:=CH IN BONSET; 

IF NOT BON THEN MR ITS (SON) 

ELSE IF CH IN (' •..•"] THEN HRITE(CH) 

UNTIL BON; 
PRENCAR r=CH 
END; 



PROCEDURE 
PRENRETURN 

Attend qu'un <RETURN> ait ete 
frappc au clavier. 



FUNCTION OUT; 
BEGIN 

OUI : -PRENCAR ( I r Y l , '0',^'}) IN f'Y','0'} 

END; 

PROCEDURE MESSAGE; 

BEGIN 



Pom's n° 23 



1 



FUNCTION PRENCAR 
(BONSET:CHOIDECA): 
CHAR 

Renvoie un caract&re frappe au 
clavier. Ce caractere doit faire 
partie de BONSET, defini 
prealablernent comme un SET OF 
CHAR, sinon, dmct un BIP et 
attend un autre caractere. 

FUNCTION 
OUI:BOOLEAN 

Attend un caractere au clavier et 
renvoie TRUE s'il s'agit de O ou 
de Y et renvoie FALSE s'il s'agit 
de N. fimet un BIP et attend un 
autre caractere dans tous les autres 
cas. 

PROCEDURE MESSAGE 
(Y:INTEGER;S:STRING) 

ficrit le message S 5 partir du 
debut de la ligne Y (0<Y<23) et 
efface la fin de la ligne. Le 
curseur reste imrnediaternent apres 
lc message. 

PROCEDURE 
ALARME(S:STRING) 

Efface 1'ecran sauf la lere ligne, 
affiche le message S et attend un 
<RETURN>. 

PROCEDURE 
PRENCHAINE 
(LONGMAX.'INTEGER; 
BONSET:CHOIDECA; 
VAR S:STRING) 

Saisit au clavier la chaine S, avec 
limitation % LONGMAX earac- 
hes choisis dans BONSET. Si 
Ton repond par un simple 
<RETURN>, la valeur precedente 
de S est conservde. La correction 
par la fleche gauche (BS) est 
permise. 

PROCEDURE 
ENTIER(LONGMAX: 
INTEGER; VAR 
SrINTEGER) 

Saisit an clavier 1'entter positif S, 
avec limitation h LONGMAX 
caracteres choisis dans , , .. , 9 t . 
Si Ton repond par un simple 
<RETURN>, la valeur precedente 



GOTOXr (0, Y) i WRITE (S, EFL) 

end; 

procedure alarms; 

BEGIN 

GQTOXY (0, l)j WRITE (SON, EFB) ; 
MESSAGE (1 0, S); 

MESSAGE (22, 'FAITES <RETURN> '); 
PRENRETURN 

END; 

PROCEDURE PRENCHAINE; 

!' SAISIT ONE CHAINE DE CARACTERES AVEC 
LONGUEUR MAX 7 F.T VAIF.UR PAR UKFAUT *) 

<**) 

VAR SI ; STRING 

CONT : STRING; 
BEGIN 

SJ: = ' tj 
CONT:'' V 
REPEAT 

TF LENGTH (CONT) -0 THEN SI f 1 ]: -PRENCAR (BONSET* [CHj J 

ELSE IF LENGTH (CONT) 'LONGMAX THEN Si ( 1 ] : -PRENCAR ( ICR, BS} ) 
ELSE SI fl 1 : =PRENCAR (BONSET* (CR, BSl); 
IF Sl[l] IN BONSET THEN CONT : = CONCAT (CONT, S2 ) 
ELSE IF S1[2]-DS THEN 
BEGIN 

WRITE (BS, • %BS) ; 
DELETE (CONT, LENGTH (CONT) 1 1 ) 
END; 
UNTIL S1{1]=CR; 
IF LENGTH (CONT) <>0 
THEM S:*GQNT 
ELSE t-miTE(S) 

END; 

PROCEDURE ENTIER; 
(") 

(' SAISIT UN NOMBRE ENTIER POSITIF •) 

VAR SI : STRING f 11; 

I : INTEGER; 

CONT : STRING; 

OKSET :choideca; 

BEGIN 

0KSET:= l'0'..'9 ■ 1;S1 := ' ';C0«7\' = * 

REPEAT 

IF LENGTH (CONT) ~0 THEN Si ( 1} : 'PRENCAR (OKSET I [CR] ) 

ELSE IF LENGTH (CONT) 'LONGMAX THEN 5 J J 1 }; -PRENCAH ( (CR, BS]) 

ELSE Sill/; =PRENCAR ( OKSET* / CR, BS]); 
IF SI [2] IN OKSET THEN CONT :=C0NC AT (CONT, Si ) 
ELSE IF Sl[l]~BS THEN 
BEGIN 

WRITE (BS, ' ' ,BS) ; 

DELETE (CUNT, LENGTH (CUNT) ,1) 

END; 
UNTIL Sl[l]=CR; 
IF LENGTH (CONT) <>0 THEN 
BEGIN 

S.-O; 

FOR I:«l TO LENGTH (CONT) DO 
BEGIN 

S | *S* 1 0; $ ! m$* (ORD (CONT (IJ) -ORD CO 1 )) 
END; 

END ELSE WRITE (S) 

END; 

PROCEDURE CONTTNU; 
(") 

(* INVITE L'OPERATEUR A CONTINUER ") 

BEGIN 

WRITE (INV) ; 

MESSAGE (23, 'FAIRE <RETURN>POUR CONTINUER ' ) ; 

WRITE (NORM) ; 

PRENRETURN; 

G0TOXY(0,Y); 
NRTTE(EFB) 

END; 
{**) 

PROCEDURE ALITEXT; 



Pom's n° 23 



dc S est conservee. La correction 
par la fl£che gauche (RS) est 
pennise. 

PROCEDURE 
CONTINU(Y:INTEGER) 

Affichc sur la demiire lignc dc 
l'ecran une invitation k trapper 
<RETURN> pour continucr, 
attend <RETURN>, envoie le 
curseur en (0,Y) et efface le bas 
de l'ecran. 

PROCEDURE 

ALITEXT(LONGMAX: 

INTEGER;S:STRING) 

Affiche le texte S cadre & gauche 
sur LONGMAX positions, apres 
troncature si necessaire. 

PROCEDURE 
SAISIE(X,Y,LONGMAX: 
INTEGER;BONSET: 
CHOIDECA;LIBELLE; 
STKING);VAR S:STRING) 

Meme fonction que PREN- 
CHAINE, mais avec ecriture de 
LIBELLE au point de l'ecran 
(X,Y), juste avant la saisie. La 
valcur par defaut est affichec 
pendant la saisie, elle est 
eventuellement tronquee a 
LONGMAX caractfcres. 

FUNCTION 

PEEK(ADRESSE: 

INTEGER) 

Renvoie le contenu decimal de la 
memoire ADRESSE. 



PROCEDURE 
POKE(ADRESSE, 
CONTENU: INTEGER) 

Met CONTENU dans la memoire 
ADRESSE. Aucun test n'est 
effectue sur la valeur des 
paramfetres. C'est une procedure a 
utiliscr avee precaution. 

PROCEDURE 

ERROR(L:INTEGER;VAR 

S:STRING) 

Remplit une chaine S de longueur 
L avec L asterisques. 



t**) 

(* EDITS UNE CHAINS CADREE A GAUCHE ') 

(**) 

BEGIN 

IF LENGTH (S) >LONGMAX THEN S ; =COPY (S, 1 , LONGMAX J > 
WRITE (S, • ' : LONGMAX-LENGTH (S) } 
END; 

PROCEDURE SAISIE; 
(") 

(* SAlSiT UNE CHAINE DE CARAC'l EKES EN UN POINT DUNNE 

DE L'ECRAN, AVEC LONGUEUR MAXI ET VALEUR PAR DEFAUT *) 

(**) 

BEGIN 

IF LENGTH (S) >LONGMAX THEN S : -COPY (S, 1 , LONGMAX) ; 
GOTOXX (x, r) ; WH1 TE (LIBELLE) ;alitext (LUNGMAX, SJ J 
GOTOXY (X* LENGTH (LIBELLE) , Y) ; 
PRZNCHAINE (LONGMAX, 3CNSET, S) ," 
WRITE ( ' ' : LONGMAX-LENGTH (S) ) 
END; 

FUNCTION PEEK; EXTERNAL; 
PROCEDURE POKE; EXTERNAL; 
(**) 

PROCEDURE ERROR; 

(* REMPLIT UNE CHAINE S DE L ASTERISOUES *) 
(**) 

VAR I; INTEGER; 
BEGIN S : - ' ' / 

FOR T;-J TO L DO S;-CONCAT f " ' r S) ; 



(**) 

PROCEDURE VALBOOL; 

t*v 

(* CONVERTIT UNE CHAINE EN BOOLEEN *) 

PEG IN 

IF LENGTH ( SJ OO THEN 
CASE S[1J OF 

'T', 'V, 'Y' t '0\ '1' :N:-TRUE; 

'F' f 'W, '0' :N:-FALSE 

END 
END; 
C) 

PROCEDURE VALREEL; 
(**) 

(' CONVERTIT UNE CHAINE EN REEL *) 
(**) 

TYPE PART IE" (BLK, SGN, ENT f DEC, SEXP, EXPO) f 

VAR REGION : PART IE; 

SIGNE, PUISS, J, L : INTEGER; 



FAC 
C 



:RFAl; 
: CHAR; 



PROCEDURE CALCULE; 
VAR I: INTEGER; 
BEGIN 

IF PUISS<r-37 
WEN K.—O.O 
ELSE IF PUISS>37 

THEN K:-1.01E37 
ELSE IF PUISS<0 

THEN FOR I :=1 
ELSE FOR I: 'I 

END; 



TO -PUISS DO K:=K/10.0 
TO PUISS DO K:-K*10.0 



BEGIN 

Kt-O. 0;SIGNE:-1;FAC:-1 - 0;PUISS: -0; 
REGION : -BLR; L .- -LENGTH (SJ / 
IF L-0 THEN EXIT (VALREEL) ; 
FOR I:-l TO L DO 
BEGIN C:-Stl]; 
CASE REGION OF 
BLK : BEGIN 

IF NOT( C IN f 'g 
CASE C OF 

' + REGION :-SGN ; 
BEGIN 



'0'. . ' 9 ' j ) THEN EXIT (VALREEL J J 



Pom's n° 23 



13 



PROCEDURE 

VALBOOL(S:STRING;VAR 
NrBOOLEAN) 

Si S commence par Y,0,T,V,1 3 

rend NegaU TRUE. 

Si S commence par N,F,0, rend 

N cgal i FALSE. 

I^aisse N inchange dans les autres 

cas. 

PROCEDURE 

VALREEL(S:STRING;VAR 

KtREAL) 

Renvoie dans K la valcur reelle 
representee par la chaine S. 
L'interpretalion s'arrSte dbs que la 
procedure trouve un caractfcre 
inattendu, comme la fonction 
VAL du BASIC. En particulier, 
elle s'arrSte sur le premier espace 
rencontre. La forme avec 
exposant est reconnue. I-e nombre 
peut Stre precede de 1 ou 
plusieurs espaces places avant 
Lout caract£re significatif. La 
forme de l'exposant est libre. II 
peut etre absent. Le point decimal 
peut etre absent. Le nombre peut 
etre precede de un ou plusieurs 
signed qui se combinent. Ex: 
+-+3.14E sera interprete comme 
-3.14 (exposant=0). S peut etre 
une chaine vide. K vaut alors 0. 
Une valeur absolue infdrieure a 
1E-37 est consideree comme 
nulle. Une valeur absolue 
superieure a 1E37 est prise egale a 
1.01E37, un test sur la valeur 
renvoyee peut permettre de 
detecter un depassement eventuel. 

PROCEDURE 
VALENT(S: STRING; VAR 
KrINTEGER) 

Remplit la meme fonction que 
VALREEL, notamment pour la 
reconnaissance d'un nombre sous 
n'importe quelle forme, mais 
renvoic la yaleur entifcre la plus 
proche du nombre represente. Les 
entiers dont la valeur absolue 
excfcde MAXINT, soit 32767, 
sont ramenes a +-32767. 

PROCEDURE 

STRBOOL(N:BOOLEAN; 

L:INTEGER;VAR 

S:STRING;VAR 

ERREUR:INTEGER) 



RECION.- -SON/ SICNE : —SICNE 
END; 

'0', 'i*, '2', * 3 ' , '4' f '5\ *6', '/', 'V, '9' -.BEGIN 
REGION; =ENT;K: -ORD (C) -ORD {'0') 
END; 
'. '.- REGION: -DEC; 
END; 
END; 
SGN .-BEGIN 

IF NOT ( C TN [ W f »V»; UM-v'S'Jj THEN F.XTT (VALXF.EL) ; 

CASE C OF 

' ; SIGNE i — SIGNS; 
•0\ '1', '2', *J', '4', '5', r 6', '7', '8' f '9 ' :BtlGlN 
REGION: =ENT;K; =SIGNE' (QRD (C) -QRD CO 9 )) 
END; 

' . ' : REGION I -DEC; 
END; 
END; 
ENT : BEGIN 

IF NOT( C IN ['. '£', 'CM.. '9']) THEN EXIT (VALREEL) ; 
CASE C OF 

' : REGION : -DEC; 
'E 1 : REGION : -SEXP; 

'0', 'I 1 , '2\ '3', '4', '5', *fi*, '7', '8', ' 9 ' : K:-K' 10 . O+SIGNE* (ORD (C) -ORD ( '0 ' ) J 
END; 
END; 
DEC :BFGTN 

IF NOT( C IN f'O 1 .. '!>•, 'E' ] ) THEN EXIT (VALREEL) / 
CASE C OF 

'E * : REGION : -SEXP; 

'0', '1 ', '2>, >3' f '4', '5', '6', »7', '8\ '$':B£GIN 

FA C : -FA C./ 1fl.fl;K: -K-tS TGNF *FAC (ORD (C) -ORD {'0' }) 
END; 

END; 
END; 
SEXP : BEGIN 

IF NOT/ C IN /'-', V, '0*.. '9']) THEN EXIT /VALREEL) ; 
IP C='-' THEN SIGNS I =—1 
ELSE SIGNE.'-l; 
IF C IN ['0'.. '9'} THEN PU1 SS :-SIGNE' (OHD (C} -ORD ('0 • ) ) ,* 
REGION: -EXPO 
END; 
F.XPO: BF.GTN 

IF (NOT/ C IN I'O'.. '9'})) OR (ABS (PUISSJ >MAXINT DIV 10) 

THEN BEGIN CALCULE; EXIT (VALREEL) END; 
PUISS:~PUJ$S'W+S1GNE' (ORD(C) ~ORD( 'U')) 
END; 
END t* CASE ') 

END; (* FOR *) 
CALCULE; 

end; 

procedure valent; 

(' convert it une chaine en entier ') 

i") 

VAR X-.REAL; 
BEGIN 

VALREEL (S,X) ; 
IF ADS(X)>KAXINT 

THEN IF X>0.0 THEN K'.-MAXINT 

ELSE K-.—MAXTNT 
ELSE K: -ROUND (X) 

FNH; 
("} 

PROCEDURE STRBOOL; 
(") 

{" CONVERT TT (TN ROOLFFN FN CHATNF. *) 
(**) 

VAR I : INTEGER; 
BEGIN ERREUR-.-O; 

IF N THEN S:-'VRA1' 
ELSE S:= 'FAUX 1 ; 

IF L<1 THEN BEGIN ERREUfH-l/Si- ' 1 /EXIT (STRBOOL) END; 

IF L>80 THEN L:-80; 

IF L>4 THEN FOR TO L DO S:*C0NCATC ',S); 

IF L<4 THEN S; -COPY tS, 1, L) 

END; 



14 



Pom's n° 23 



renvoie une chaine de longueur L 
contenant VRAI ou FAUX, 
eventuellement tronquee ou cadree 
a droite, scion la valcur de N. 
ERREUR prend la valeur 1 %\ 
L<1, et dans lcs autrcs cas. 

PROCEDURE 

STRFIX(N:REAL;L, 

D:INTEGER:VAR 

S:STRING;VAR 

ERREUR:INTEGER) 

Renvoie une chaTne S de longueur 
L representant le nombre reel N 
avec D decimates, en format 
FIXE : -xxx. yy 

Si L<3 ou D<0 ou L<D+2, on 
obtient ERREUR-1. 
Si le nombre est trop grand (M 
>32767), on obtient l'erreur 2. 
Si le nombre est trop grand pour 
le nombre de caractSres total 
impose, on obtient l'erreur 3. 
Dans les autres cas, ERREUR 
reste nut. 

Si L est superieur a 80, it est 
considere comme 6tant €gal & 80, 
sans que cela soit sigjiale. 
L-e nombre de decimales peut etre 
reduit d'office par la procedure si 
la partie decimale est representee 
par un entier superieur a 32767. 
Aucune erreur n'est alors 
signalee, et le nombre total de 
caract&res est respecte. 
Si l'on est sur que le nombre est 
positif, on peut ne pas prevoir dc 
place pour le signe. 

PROCEDURE 

STRFLOT(N;REAL; 

L,D:INTEGER;VAR 

S:STRING;VAR 

ERREUR:INTEGER) 

Meme fonction que STRFIX, 
mais la chaine contient le nombre 
en representation flottante : 
-1.2344E+03 avec un chiffre 
avant le point decimal et un 
exposant de 4 caracteres. 
L'erreur 2 de STRFIX ne pent 
pas se produire. Les conditions 
d'apparition de l'erreur 1 sont : 
L<7 ou D<0 ou L<D+6. 

PROCEDURE 

STRENT(N,L:INTEGER; 

VAR S:STR1NG; 

VAR ERREUR:INTEGER) 

Renvoie une chaine dc longueur L 



PROCEDURE STRFIX; 
f**J 

(* CONVERT IT UN REEL EN CHAINE DE TYPE -XXXX.XX *J 
VAR I, J -.INTEGER; 
NESA TIF : BOOLEAN/ 

ND,EX :REAL; 

SI :STRING; 
BEGIN 

ir L>80 THEN L.--80; 

IT (L<3) OR (D<0) OR (L<D*2) 

THEN BEGIN ERROR (L, 5} ; ERREUR : -I /EXIT (STRFIX) END 

ELSE ERREUR : — O; 
NEGATIF :-(N<0.0) /W.--A55 (N) ; 
IF N>32767.0 THEN 

BEGIN ERROR IL,S) /ERREUR: -2; EXIT (STRFIX) END; 
IF D-0 

THEN 
BEGIN 

STR (ROUND (N) ,Sll;S: = " 
END 
ELSE 
BEGIN 

STR ( TRUNC (N),S1); 
REPEAT 

F.X:=>1;FOR rr-J TO D DO EX:=EX*10.0; 

ND : -EX* (N-TRUNC (N) ) /D: =D~l / 
UNTIL ND<=32767 .0/ 
J:-ROUND (ND) J S'l'H (J, S) ;D:-D*1; 

FOR J:=LENGTH(S)+1 TO D DO S i =C0NCAT ( ' ' , S) ; 
END; 

£:=CONCAT(Sl, », \S); 

IF NEGATIF THEN S : -CONCAT ('-' ,S) / 

IB' LENGTH (S) >L THEN 

BEGIN ERROR (L, S) ; ERREUR: "3; EXIT (STRFIX) END; 
FOR J:-LENGTH(S)+1 TO L DO S:~CONCAT(' ',S); 

END; 

PROCEDURE STRFLOT; 
I**) 

(* CONVERT IT UN REEL EN CHAINE DE TYPE -XXXX.XXE*YY *) 
VAR 31 : STRING/ 

EX : INTEGER; 

NEC A TIF : BOOLEAN; 
BEGIN 

IP L>90 THEN L:=90; 

IF (L<7) OR (D<0) OR (L<D+6) 

THEN BEGIN ERROR (L, SJ ; ERREUR : s l; EXIT (STRFLOT) END 

ELSE ERREUR: '0; 
NEGATIF:* (N<0. 0) ;N :«ABS (N) ;EX:=0; 

TF NOO.O THFN 
BEGIN 

WHILE N>=10.0 DO 

BEGIN n:-N/10.0;EX:~EX+1 END; 
WHILE N<1.0 DO 

BEGIN N;~N*10.0;EX:=EX-1 END; 

END; 

STR (ABS (EX) , S) / 

IF ABS(EX) <10 THEN S t=CONCAT ( ' O ' , S) ; 
IF EX<0 THEN S :=CONCAT ( 'E- ' , S) 

ELSE Sr-CONCATCE+'rS); 
IF NEGATIF THEN N:—N; 
Li-L~4; 

STRFIX (N, L, D, Si , ERREUR) f 
S:*CONCAT(Sl r SJ 
END/ 

(*•) 

PROCEDURE STRENT; 
("/ 

{* CONVERTIT UN ENTIER EN CHAINE *) 
f**J 

VAR T,.7rTNTF.GF.R; 
BEGIN 

ir L>80 THEN L:-0; 

ERREUR : -0/ 

STR (N, S) ; I : =LENGTH (S) ; 

IF L>I THEN FOR J.**l TO L-I DO S:~CONCAT( ' ',S); 
IF L<I THEN DEGIN ERROR (L, D) ; ERREUR ;-i END 
END/ 

(* INITIALISATION »J 



Pom's n° 23 



15 



representant Tender N. L'crrcur 1 
se produit si L<1 ou si I ,>80. 

Les PROCEDURES PREN- 
CHAINE et SAISIE peuvent 
provoquer des diagnostics a la 
compilation si la parametre actuel 
S est une chaine de longueur 
declaree (STRING{xx}). II faut 
alors compiler le programme (ou 
la fraction de programme 
concernee) avec l'option (*$V-*) 
du compilateur pour eviter le 
diagnostic. 

En cas d'erreur dans les 
procedures STRxxxx, la chainc 
qui est renyoyee ne contient que 
dcs *** mais cela n'entraine pas 
d'erreur d'execution. 

En cas d'espace en trop dans ces 
procedures, les chaines sont 
cadrees a droite. 

La version PASCAL dc 
GENUTILE (obtenue aprSs 
transfert dc la disquette Pom's et 
nominee alors UTID1V.TEXT) 
declare PEEK et POKE comme 
etant EXTERNAL. PEEK et 
POKE ont 6t6 ecrits en 
assembleur (fichier PEEKPOKE. 
TEXT). On doit done 

• compiler UTIDIV.TEXT, 

• assembler PHHK POKE. 
TEXT, 

• linker PEEKPOKE. CODE 
dans UTIDIV.CODE pour 
obtenir GENUTILE.CODE, 

• placer GENUTILE.CODE 
dans SYSTEM.LIBRARY par 
l'utilitaire LIBRARY.CODE. 



BEGIN 

R.CME:-CHR(12); 
CP z~C.HR (11); 
NORM: -CHR (20 J i 
ALFANUM: = f ' ' . . 



ESC :=CHR(27); 
FLD:=CHR(21) ; 
EFB:-CHR(11)/ 



EFL:=CHR(29l : 

SON :=CHR{7); 



BS t^CHRfS), 
INV;=CHR(18) , 



Les identificateurs declares par GENUTILE sont 



ALFANUM 

CHOIDECA 

EFL 

HOME 

OUI 

PRENCHAINE 

STRBOOL 

VALBOOL 



ALARME 

CONTINU 

ENTIER 

INV 

PEEK 

PRENRETURN 

STRENT 

VALrENT 



ALITEXT 
CR 

ERROR 

MESSAGE 

POKE 

SAISIE 

STRFIX 

VALREEL . 



BS 

EFB 

ESC 

NORM 

PRENCAR 

SON 

STRFLOT 



Source 

'PEEKPOKE. TEXT 



PHA 
ETS 

.PROC POKE,?: 



. FUNC PEEK , 2 


RET .EQU 





.EQU 


ADR .EQU 


2 


.EQU 2 


VAL .EQU 


4 


FLA 


PLA 




STA RET 


STA 


RET 


PLA 


PLA 




STA RET+1 


STA 


RET+1 


PLA 


PLA 




PLA 


5TA 


VAL 


PTA 


PLA 




PLA 


PLA 




PLA 


STA 


ADR 


STA ADR 


PLA 




PLA 


STA 


ADR-fl 


STA ADR+1 


LDX 


I/O 


LDX §0 


LDA 


VAL 


TXA 


STA 


@ADR, X 


PHA 


LDA 


RET-f-1 


LDA t?ADK,X 


PHA 




PHA 


LDA 


RET 


LDA RET+1 


PHA 




PHA 


RTS 




LDA RET 


.END 





Accompagne d'une cinquantaine de pages de documentation, disk Manager perrnet de recreer 

les commandes du Dos, redefinir I 'organisation d'une disquette, grace a un jeu d'instructions qui 

en fait un langage simple d'acces a la disquette. II offre egalement un programme simple d' edition ' 

a I'aide de commandes evoluees. 4 utilitaires figurent aussi sur la disquette : / 

/ 

Utili-disque : reconstruction d'une disquette ditruite. Verification, Plan d'occupation * 

Uttra-copUz . pour un backup patticuHerenieiU rapide ^ 

Edicat ; Edition du catalogue, classemeni des fichiers. Titres... f 

Multi-disque . pour le ciasse/nerW de tous vos programmes (tri instantani). 

§isk Manager, le Dos en Kit \ 

de Dan Steerey f 

/ 

16 Pom's if 23 




Un formateur de listing Basic 



M Mu'est-ce qu'un formateur 
m m de programme Apple- 
<J soft ? C'est une routine 
Jt^^f qui affiche ou imprime 
un programme Basic pour en 
faciliter la lecture. La mise au 
point en sera done facilitee et, une 
fois terminee, on obtient une 
documentation d'allure profes- 
sionnelle. 

Inspire d'une routine ecrite 
elle-meme en Basic dans 
Call-Apple, FORMATEUR est 
realise entitlement en assembleur 
pour des raisons evidentes de 
rapidite. Une fois charge en 
mdmoire, il peut Stre utilise & tout 
moment. 

Le programme Applesoft est liste 
de la fagon suivante: 

• une seule instruction par ligne 
(les *:* excedentaires entre 
deux instructions sont 
ignores) ; 

• une ligne blanche entre deux 
lignes de programme ; 

• decalage de 4 caracteres dans 
les boucles FOR-NEXT; 
rcmplacement des NEXT 
X,Y,Z par NEXT X : NEXT 
Y : NEXTZ; 

• decalage de 4 caract5res apr£s 
THEN ; 

• decalage de 4 caracteres pour 
les instructions dont la 
longueur depasse une ligne 
(sauf cas de force majeure, les 
mots ne sont pas coupes) ; 

• en debut de ligne, on rajoute 
LET avant I'affectation d'une 
variable. 

Bien entendu, le programme liste 
n'est absolument pas modifie par 
FORMATEUR. 

Le format par defaut est 80 
colonnes sur 66 lignes, mats 
l'utilisateur a la possibility de 
modifier ccs valcurs. Lc saul dc 



Sylvle Gal let 



page et la pagination sont 
automatiques. Enfin, on peut 
egalement imprimer un titre et une 
date. 



Utilisation 

Le programme se charge par 
brun format. Les commandes 
disponibles sont : 



&L 

Liste l'ensemble du programme & 
l'ecran. Comme la commande 
LIST de l'Applesoft, on peut la 
faire suivre d'un numero dc 
ligne : 

&L 10 sont des 

&L 10,20 formats 
&L 10, acceptes 

&L ,10 
&LP 

Liste sur l'imprimante. Le format 
est identique que & L , 
L'imprimante est supposcc 
ennnectee en slot 1 . Notez que les 
instructions PR#n ne sont pas 
imprimees. 

&T 

Saisie du litre sur au plus 32 
caracteres. Le format est libre. 
Effectuer la sequence : 

&T <Relurn> litre <Return> 

On peut Egalement y inclure des 
codes de controle pour 
rimprimante (sauf ESC). 

&D 

Saisie de la date sur 32 caracteres 
en format libre. 

£P n 

n definit la longueur d'une page 
(de 21 a 127 sinon message 
d'erreur). 



&C n 

n definit la largcur d'une page (dc 
40 & 127 sinon message d'erreur). 

Le listing peut etre interrompu par 
CTRL-C. Utilisez CTRL-S pour 
une interruption temporaixe. 

Fonctionnement 

Sous DOS 3.3, le programme se 
charge en $90D1 et fixe Himem 3 
$9100. Le programme initialise 
l'Ampersand et les valeurs par 
defaut du format, puis rend la 
main. 

Lorsqu'il est appele pour une 
liste, il scanne le programme 
Basic en memoire en effectuant, 
d'une part le meme travail que la 
routine LIST de l'Applesoft 
(conversion des numeros de ligne 
slockes en binaire en valeurs 
affichables, traduction des tokens 
en mots-cles. etc.), d' autre part en 
ameliorant l'affichage comme 
decrit precedemment. 

FORMATEUR utilise un grand 
nombre d'adxesses inutilisees en 
page zero ; cela ne pose pas de 
probltmes car il est prevu pour 
etre activ6 en mode direct et non a 
l'interieur d'un programme. De 
plus, la zone $300-$33F sert h 
sauvegarder le titre et la date 
eventuellement saisis. 

N.D.L.R. : les routines d'acces 
aux piriphiriques du programme 
ont £.tg legerement modifiees afin 
de permettre un fonctionnement 
normal avec une carte 80 
colonnes r ainsi qu'une execution 
au choix sous DOS 3.3 ou 
ProDOS. 

Le programme T.FORMAT est le 
fichier source au format Big Mac, 
L'assemblage sous DOS 3.3 se 
fait simplement en mettant la 
variable PRODOS & 0. 



Pom's n° 23 



17 



Pour ProDOS, elle doit etre mise 
etletle source doit itre resauvi 
sur disque. L'assemblagc 
s'effectue en charge ant 
DARWIN. S (pour les details 
d'utilisation, voir Pom's 22) ; la 
der nitre ligne doit devenir "PUT 



FORMAT" et on assemble en 
dormant les pararnitres : 

DARWIN_D = $90D1 
DARWIN_F = $95FF 
VA_DEBUT = 1 

Le module objet peut alors etre 



chargi sow ProDOS par : 

BRUN FORMAT. PRODOS, A$ 6000 

(il se relogera au dessus des 
buffers de ProDOS). 



03 mars I9fl6 



Convert 



400 LET J - J * 1 

410 NEXT 

420 LET N2 - J - 1 

430 REM INCLUSION DES BRK 

4*0 ONERR GOTO 4 GO 

450 UI F$ - F$(3) : 

PRINT D S M BLOAD" FS ; 
GOTO 470 

460 CALL 768 : 

COSUB 1080 ; 

470 CAXL 37500 

4S0 fOR 1 - 1 TO Nl 

490 IF INT (I / 500) - I / 500 THEN 

PRINT 

PRINT "PATIENCE JE FAIS LE MEiiAGS \ " ; 

CALL 37500 ; 

PRINT "C'EST FIKI" 3 

PRINT 

500 FOR J » 1 TO t7 

510 IK MiUS (A$U)*J.U < > "J" THKIN 

670 

52 LET J - J t 1 ; 

IF M1DS (AS {I), J, 1 J < > M S" THEN 
550 

530 LET J • J t 1 : 

IF MIDS (AS(I),J f l) < => "R" THEN 
670 

540 LKT 23-215 : 

GOTO 590 

550 IF MIDS (A9<X),J«1) < > "M" THEN 

670 

560 LET J - J + 1 : 

IF MIDS <A${Z|,J f l) < > "p" THEN 
670 

570 LET 2$ - 22S 

580 REM ON A UN JSR OU JMP 



Un listing formate par 
'FORMAT 



Ce listing partiel de 'CONVERT pubtte dans ces 
pages, a 6t6 obtenu £ I'imprimante on faisant : 

• BRUN FORMAT 

• LOAD CONVERT 

• & T pour la saisie du litre 'Convert' 

• &D pour la date '03 mars 1986' 

• &LP 400,680 pour le listing proprement dit 

Note : sous ProDOS, il faut faire 
BRUN FORMAT.PRODOS,A$6000 
et il vous faut un Basic.System dont la 
version est supdrieure a 1.1. 



03 mars 1986 
590 



PAGE 2 



600 
610 

620 
630 
640 

650 



LET M - J + 2 



LET YS - «« 



660 



670 



680 



IF J > 4 THEM 

LET Y$ = LEFTS (AS (I) . J - 4) 

FOR X = 1 TO N2 

t.FT I. - T.F.N <ZS(K) J 

IF LEN (ASUJJ - M 4 1 < L THEN 
€60 

IF MID3 (A3(I),M,L) - ZS(K) THEN 
LET A$(IJ = YS * 2S + Z$(X) : 
PRINT AS(I>, "LIGNE N( °;I : 
PRINT t 
LET K - N2 

NF.XT K : 
LET J - 12 

NEXT J : 
N EXT T 

HOME : 

PRINT "SAUVER LE F2CHIER TRANSFORM E ?• : 
PRINT : 

PRINT SUR OISGUETTE? <0, N>"; 



18 



Pom's n° 23 



Source 'DARWIN.S' 

Assembleur BIG MAC 



43 
44 
45 



2 — Cople vers l'adcease G 'implantation 



20 
J J 
22 
23 
24 
25 
J 6 

2 7 
20 
IJ 
20 
2i 
22 
23 

24 

25 
26 
27 
28 
29 
30 
31 
32 

3 3 
34 
35 
36 
37 
38 
39 
40 
41 



DARWIN * 



* Routine d'lnitiallsation A ProDOS 

* d'un programme asseiobleur DOS 3.3 

* tC) 1985 Alexandre Avrane 

* Modi fit: 74/11/85 

* rrM: 1S/11/B5 

" Co soue&e AM*»hfA An r.nnjnnetion 

* avec Je programme i adaptor ProDOS 



DAFM1N_D KDD 
DARW1NF KDD 
VA DEBUT KBD 



jndrcaac etc dtfaut DOS 3.3 
.-adeease de fin DOS 3.3 
, -saute en alebut de ; :;- apris =harqc=icr.t f 



* Caicul den atfitraova auua PiuD03 

DARWINVl = DARHItt_r/$10Qrl 

DAHW1NV2 •= DARWIN_D/S10Q 

DARW1NVJ - UAKWINV£-DAB»INV2 

DARWINV4 = S100'DARW1NV2 

DARWINV5 ■ DARWIN_D-DARWINV4 

DARWINV6 ■ DARWINV3"$100-DAR#INVS 

DARWIN_A - $M00-DA/WJtfVfi ; adreaae de debut ProDOS 

DARWIN_L = DARWIN_F-DARWIN_D i iongueur ProDOS 

ORG DARWIN A-73 ; DARWIN peend 72 octets 



* J - Recherche de la place a&aoire 



IDA SBFFD 1 VERS I ON 

BEQ DARWIN10 Basic, System 2.0 

IDA t n-DARW 7NA/S I 00 * S 9fl 

JSR $BEFS GFTB!!FX 

BCC DARWIN1 1 

DABNIN1 LDA /J 4 PPOGPAM TOO LARGE 

JUT SDEOS 

DARWINU - • 



46 






47 


DARWIN20 JSR 


SFFbB eontient un hts 


48 


TSX 




49 


DEX 




50 


CLC 




si 


IDA 


SlOOfX recherche sui la pile 




ADC 


fDARffIN99-DAFMIN20-2 ;adresse debut 


53 


STA 


S3C Al 


94 
j» 


LDA 


S101.X 


55 


ADC 


to 


56 


STA 


S3C+1 


57 


LDA 


$3C adres se de fin 


58 


ADC 


0<DARWIN L 


59 


STA 


S3E A2 


• 


LDA 


S3C+1 


61 


ADC 


t>DARW!N L 


62 


STA 


S3E*2 


63 


LDA 


t<DARWTN_A adresae d'arrlvee 


64 


STA 


S42 *t 


65 


PHA 




66 


LDA 


0>DARWTN_A 


67 


STA 


$42*1 


68 


PHA 




69 


LDY 


to 


76 


JSR 


SFE2C d&plaoe 2e bjoe par MOVE 


71 
72 
73 
74 

73 






' 3 - Appel du module tft sortie 


fLA 




76 


STA 


S12*I 


77 


PLA 




75 


STA 


S42 



79 
80 
81 
82 
83 
84 
85 



sauce en debuC de programme. 
ou re tour & 1 'Applesoft 



DO VA_D£BUT 
JNP ($42) 
ELSE 
RTS 
NOP 
NOP 
FIN 

DARUJN99 = * 

B7 * inclut le 8<wi*m du programme 6 adapter (format TEXT) 
80 PPT FORMAT 

BP END 



Recapitulation 

en version ProDOS 

'FORMAT. 

PRODOS' 

Apres avoir saisi ce code 
sous moniteur, apartirde 
I'adresse $6000, vous le 
sauvegarderez par BSA VE 
FORMAT,A$6000,L$55E 



6000- 


AD 


FD 


BF 


FO 


07 


A9 


07 


20 


6008- 


F5 


BE 


90 


05 


A9 


0E 


4C 


09 


tuiu- 


BE 


20 


58 


FF 


BA 


CA 


18 BD 


6018- 


00 


01 


69 


36 


85 


3C 


BD 


01 


6020- 


01 


69 


00 


85 


3D 


A5 


3C 


69 


6028- 


20 


85 


3E 


A5 


3D 


69 


05 


85 


6030- 


3F 


A9 


00 


85 


42 


48 


A9 


94 


6028- 


85 


43 


48 


AO 


00 


20 


2C FE 


6040- 


66 


85 


43 


G8 


85 


42 


6C 


42 


6048- 


00 


A9 


4C 


8D 


F5 


03 


A9 


2B 


6050- 


8D 


F6 


03 


A9 


94 


8D 


F7 


03 


6058- 


Ay 


42 


85 


1 9 


A2 


50 


85 


IB 


60 60- 


A9 


07 


85 


09 


AO 


3F 


A9 


03 


60 68- 


85 


CF 


A9 


00 


85 


CE 


20 


1A 


6070- 


98 


85 


D6 


60 


C9 


40 


FO 


03 


60 78- 


4C 


C3 


97 


A9 


00 


85 


FB 


85 


6080- 


FC 


85 FD 


A9 


FF 


85 


FE 


85 



6088- 


FF 


20 


Bl 


00 


90 


2C 


C9 


50 


6090- 


FO 


07 


C9 


00 


DO 


11 


4C 


A9 


6098- 


94 


A5 


DC 


FO 


05 


C6 


D6 


4C 


60A0- 


C9 


DE 


E6 


D6 


4C 


40 


94 


C9 


60A8- 


2C 


FO 


03 


4C 


C9 


DE 


A5 


FB 


6030- 


FO 


03 


4C 


Ot- 


DE 


E6 


Fki 


4C 


60B8- 


40 


94 


20 


OC 


DA 


A 5 


PR 


nn 


60C0- 


OD 


A5 


50 


85 


FC 


A5 


51 


85 


60C8- 


FD 


20 


B7 


00 


DO 


BE 


A5 


50 


60D0- 


85 


FB 


A5 


51 


85 


FF 


20 


D7 


60D8- 


00 


FO 


03 


4C 


C9 


DE 


A5 


FD 


60EO 


C5 


FF 


90 


OE 


DO 


06 


A5 


FE 


60E8- 


C5 


FC 


BO 


06 


20 


F3 


98 


4C 


6OF0- 


00 


BE 


AD 


31 


BE 


49 


FD 


an 


60F8- 


14 


99 


FO 


05 


A9 


33 


8D 


14 


6100- 


99 


A5 


D6 


FO 


07 


A9 


31 


20 


6108- 


F6 


98 


C6 


06 


85 


FB 


85 


18 


6110- 


85 


1A 


85 


ID 


85 


1C 


85 


IE 


6118- 


95 


EC 


85 


D7 


AS 


FC 


85 


50 


6120- 


A5 


FD 


85 


51 


20 


1A 


D6 


AO 


6128- 


03 


BO 


OA 


AO 


CO 


FO 


OF 


4C 


6130- 


t'E 


94 


4C 


A3 


94 


20 


49 


97 


6138- 


20 


68 


97 


4C 


2B 


95 


20 


49 


6140- 


97 


20 


68 


97 


4C 


01 


95 


20 


6148- 


F8 


96 


20 


F8 


96 


FO 


9D 


AD 


6150- 


00 


CO 


10 


OA 


C9 


83 


DO 


06 


6158- 


AD 


10 


CO 


4C 


A3 


94 


20 


F8 


6160- 


96 


85 


50 


20 


F8 


96 


85 


51 


61 68- 


C5 


FF 


90 


08 


DO 


C4 


A5 


FE 


61 70- 


cs 


50 


90 


BE 


20 


49 


97 


20 


61 78- 


IS 


97 


A5 


51 


At 


50 


81 


07 



6100- 


20 


24 


ED 


84 


06 


A9 


00 


10 


6188- 


69 


07 


85 


1A 


38 


E5 


06 


A3 


61 90- 


88 


A9 


20 


20 


5C 


DB 


88 


DO 


6198- 


FA 


A9 


00 


85 


IE 


85 


ID 


85 


61A0- 


D7 


85 


EB 


A4 


07 


20 


F8 


96 


61A8- 


DO 


03 


4C 


FE 


94 


C9 


JA 


FO 


67R0- 


F4 


CQ 


R? 


nn 


?C 


A9 


m 


85 


61B8- 


EB 


36 


A5 


EC 


E9 


04 


10 


02 


61C0- 


A9 


00 


85 


EC 


AA 


F.8 


A9 


20 


61C8- 


20 


F2 


96 


CA 


DO 


FA 


A2 


00 


61D0- 


BD 


DO 


98 


FO 


06 


20 


F2 


96 


61D8- 


E8 


DO 


FS 


4C 


FE 


95 


4C 


£3 


61E0- 


96 


85 


07 


A6 


EC 


E8 


A9 


20 


61E8- 


20 


F2 


96 


CA 


DO 


FA 


A5 


07 


61F0- 


30 


EC 


C9 


30 


90 


32 


C9 


3A 


61F8- 


BO 


OD 


A9 


20 


20 


F2 


96 


A5 


$200- 


07 


20 


F2 


96 


4C 


FE 


95 


C9 


6208- 


41 


90 


ID 


C9 


5B 


BO 


19 


A2 


6210- 


00 


85 


07 


BD 


D7 


98 


FO 


06 


6218- 


20 


F2 


9b 


EB 


DO 


F5 


Ab 


\)l 


6220- 


20 


F2 


96 


4C 


FE 


95 


A5 


07 


6228- 


C9 


22 


FO 


03 


4C 


D4 


96 


A5 


6230- 


ID 


49 


01 


85 


ID 


A9 


20 


20 


6238- 


F2 


96 


A9 


22 


4C 


E9 


96 


A9 


6240- 


3A 


4C 


E9 


96 


4C 


FE 


94 


20 


6248 


F8 


96 


FO 


F8 


30 


5E 


A6 


FD 


6250- 


E0 


01 


DO 


OD 


A2 


00 


86 


FB 


6258- 


85 


07 


A9 


20 


20 


F2 


96 


A5 


6260- 


07 


C9 


22 


DO 


OB 


A5 


ID 


49 


6268- 


m 


85 


ID 


A 9 


22 


4C 


E9 


96 


6270- 


C9 


3A 


DO 


1A 


A5 


ID 


DO 


C7 



Pom's n° 23 



Source 'T.FORMAT' 

Assembleur BIG MAC 

S*u»oga'do tout format TEXT (voir texlo) 



9 V 
10 '! 
11 

12 - 

13 •- 



.' FOPMATEOP DE LISTINGS BASIC 
i 

I COPYLEFT Cisele PEPBEAULT ec 
SyiVle GALLKT 



14 •! Source pour DOS 3. 3/ProDOS 

13 ponoos = o 

16 *> f»*»rrr«» pnttr DOS 

17 ') otl I pour Pr«nOCJ 

ia v 

J9 *! Asaembl&blc dlrecteiaent pour 

20 *l DOS 3.3- utillser DAPWIN pour 

21 '! ProDOS: 

22 •/ avec lea parametrea; 

23 *! DAPHINJ2 - J9(300 
*! DAP)HIN~r • 59520 

' I va i/twr « 1 



£3 

* — 



;7 h 



tLP 



28 

29 

30 • ! tD 

31 * I tT 

32 '< tPn 

33 *! tCn 

34 SLOT 

35 * 

H 



synzaxc: » 
*L Hating i i'^ccan 

llwtinQ 4 2'iopiiM/itv / 

aalote dc J* date / 

smialm du eieae I 

tnr*gn*ur d'unm p»ff* / 

larffi^ur rf'un* p*o* / 
• *1 ' slot Imprtmantn 



37 
jfl 

' J9 



DO 

ORG 
OBJ SBOO 

FIN 



40 

<J TXTFTR 
H LTtMUM 
45 HI MEM 
IK 



£0«J 
roe; 



rcCOS 



■58 J 
5B7 

ffSO 
S 73 



pas d'OPG pour P 



- 


LA/rfit\ 


LsJiJ 


J ya 




J 1/1 
4 WW 


49 


STOCK 


£Q0 


SC£ 


'SCE-SCF 


J 01 


90 


NL 










5J 


DEC 


EOU 






i02 




MAX 


FOU 


fPi 
Jr/i 




J UJ 


33 


V£M BUB 


—V>l 


SFB 






54 


DF 




3FS 




J 04 


5S 


» 


e,QV 


«i. 




1 03 








act r 






5 1 






*r » 




1 Vt 








a J i a t • *■ 




107 


- 7 




FOU 


JCfi 




1 09 


- ■ 




ton 


rna 
3U!» 


'nuriJff "fluff/is 


i no 
i w» 


59 


NLKAX 


r^fi 
tyu 


C J 






SO 


NC 




5IA 


•Codpcouf cafacc 


I JO 


Bl 






SIB 






62 


PAGE 


£QU 


SIC 




J .* J 


63 


QUOTE 


EQU 


SID 


'Ofaptfau "* 


112 


64 


jf 


EQU 


S1E 


*D6c6l&Q si then 


113 


63 


PPT 


EQU 


SO 6 






66 


pj~ 


EQU 


SO? 




114 


6 7 


ttf 


EQU 


3EB 




4 J J 


SB 


FF 


EQU 


SEC 


*f»J ■ 1 ^ 


J J 5 


£4 

•j* 


(Sir e 


at u-lliarf par 


o IV C3J - au r fci 


2 J7 


rV 










118 


71 




roe 


SFDKA 




119 


72 


CSDO 


EOfJ 


SOAPS 




J 3D 


73 


AMP BP 


£0U 


S3FS 




121 


74 


BASIC 


£0t/ 


SFEB3 




122 


75 


STXERP 


£t?U 


SDEC9 




123 


76 


OVTVO 


£W 


SDB5C 




124 


77 


LIftGET 


£0U 


SDAOC 




125 


n 


LINPPNT 


rcw 


SED24 






79 


FNDLIN 


£oa 


SD61A 




126 


00 


PPBL3 


£(?c; 


5F94C 




127 


«j 










12B 


#7 










1JV 


a * 













94 

as 

86 ' 

87 

8* \ 

89 

90 

91 

92 

93 

94 

95 
9b 
97 
96 
99 



' INITIALISATION 



IDA IS4C 

STA AMPEP, 

IDA tDEBVT 

STA AMPER'l 

DO 1-PPOD0S pas touche pas A 

BiJOOSi sous ProDOS! 

STA BIHEK 
FIN 

LDA 4>UEBVT 

STA AMPEB *2 

DO 1-PHQOOS 

STA HIMEM-i 



FIN 

LDA 

STA 
LDA 

STA 
LDA 

STA 

LDY 

r/iA 
STA 



i$42 • Longuevr 66 li 

©nea par detaue 
NLHAX 

• Loegcur 80 par 



tSbO 
as taut 

NCMAX 

if 7 

gauche 
MAJJCE 
IP3F 
4S03 
STOCK* 1 



' Largeur marge 



* EffMKfi tnnm *t 
ockaao CiCre ot 
LDA tSO • date ($300 a S 

3ff) 

STA STOCK * 
JSB V2 ' 

STA PRT * Indicateur lap 

rimante 



COHNAB83B LIST 



131 
132 

133 ' 

134 L01 

135 1,02 
136 



CMP 
BEQ 
JMP 

LDA 
STA 
STA 
STA 
LUA 
STA 
STA 

JSP 

arc 
CMP 



0'L' 

L00 * 

TTTRF. * Si Usee le pr 

ograiax entter 

#io 

VIPGOLE 
M 

H*l 

4SFF 

H 

N+l 

CHPCET 
JAR ' 
4 'P' 



137 




BEQ 


L03 


13B 




CMP 


tso 


139 




BtiZ 


LOS 


140 




JMP 


LISTS 


141 


L03 


LDA 


PRT 


142 




BEQ 


L04 


143 




DEC 


PPT 


144 




JMP 


J.TJC&WH 


143 


Z.04 


ISC 


PHf 


146 




JMP 


L01 



62/6- 


Aa 


07 


DO 


C3 


85 


EB A9 


20 


6280- 


20 


5C 


DB 


A 9 


3A 


20 


F2 


96 


6288- 


20 


31 


97 


4C 


5C 


95 


C9 


2C 


6290- 


F0 


03 


4C 


D4 


96 


A 6 EB 


DO 


62 98- 


03 


4C 


D4 


96 


A3 


20 


20 


5C 


62A0- 


DB 


A9 


3A 


20 


F2 


96 


20 


31 


62 A3 


07 


4C 


6C 


95 


A2 


00 


86 


FD 


v?BQ- 


38 


ES 


IF 


AA 


85 


07 


C9 


33 


62B8- 


DO 


01 


A9 


01 


85 


D7 


4C 


A2 


62C0- 


96 


C9 


02 


DO 


uy AS 


EC 


69 


62C8- 


03 


85 


EC 


4C 


A2 


96 


C9 


45 


62D0- 


DO 


19 


A2 


00 


BD 


DD 


98 


F0 


6208- 


06 


20 


5C 


DB 


E8 


DO 


F5 


A5 


62E0 


IE 


69 


03 


85 


IE 


20 


31 


97 


62ZQ- 


4C 


5C 


95 


A5 


07 AA 


84 


06 


62F0- 


AO 


DO 


84 


9D 


AO 


CF 


84 


9E 


62F8- 


AO 


FF CA 


F0 


OA 


20 


00 


97 


6300- 


1 


FB 


30 


F6 


20 


08 


97 


A9 


6308- 


20 


20 


F2 


96 


20 


00 


97 


30 


6310- 


05 


20 


F? 


96 


DO 


F6 


70 


F2 


631 8- 


96 


A4 


06 


A9 


20 


C9 


OA 


DO 


6320- 


OA 


20 


40 


97 


A6 


1A A9 


AO 


6328- 


20 


4C 


F9 


C9 


08 


00 


03 


4C 


6330- 


FE 


95 


20 


F2 


96 20 


08 


97 


6338- 


4C 




95 


20 


5C 


DB 


E6 


1A 


6340- 


60 


ce 


DO 


02 


k!6 


9 V 


Bl 


9B 


6348- 


60 


C8 


DO 


02 


Ffi 


9F. 


Bl 


9D 


6350- 


60 


85 


07 


38 


A5 


IB 


E9 


0B 


6358- 


85 


FA 


A6 


1A 


E4 


FA 


90 


2D 


6360- 


A5 


07 


C9 


20 


F0 


OA 


C9 


2C 


6368- 


FO 


06 A6 


1A 


E4 


IB 


DO 


ID 



63 70- 


A9 


04 


65 


EC 


85 


FS AS 


01 


£3 75- 


85 


FB 


20 


49 


97 


A5 


09 


18 


6-380- 


65 


IE 


65 


F9 


85 


1A 


AA 


CA 


6388- 


A9 


AO 


20 


4C 


F9 


A9 


00 


85 


6390- 


F9 


60 


A9 


00 


85 


1A 


20 


FB 


6398- 


DA 


E6 


18 


A5 


18 


C5 


19 


90 


63A0- 


03 


20 


5C 


97 


60 


A5 


1C 


F0 


63A8- 


08 


A2 


04 


20 


F3 


DA 


CA 


DO 


63B0- 


FA 


84 


07 


E€ 


1C 


A9 


08 


85 


63H8- 


18 


A9 20 


85 


CE 


20 


B4 


9" 


63C0- 


84 


1A 


A5 


IB 


38 


E9 


OF 


£75 


63C8- 


1A 


10 


02 


A9 


02 


AA 


A9 


AU 


63D0- 


20 


4C 


F9 


A2 


00 


BD 


F.3 


98 


63D8- 


F0 


06 


20 


5C 


DB 


E8 


DO 


F5 


63E0- 


AS 


00 A6 


1C 


20 


24 


ED 


20 


63E8- 


FB 


DA 


20 


FB 


DA 


A9 


00 


85 


63F0- 


CE 


20 B4 


91 20 


FB 


DA 


20 


63F8- 


FB 


DA 


A4 


07 


60 


AO 


00 


Bl 


bAOO- 


CE 


F0 


08 


20 


bC 


DB 


C8 


CO 


6408- 


21 


90 


F4 


60 


C9 


54 


F0 


07 


6410- 


C9 


44 


F0 


11 


4C 


36 


98 


A9 


6418- 


00 


85 


CE A3 


03 


85 


CF 


20 


6420- 


16 


98 


4C 


E7 


97 


A9 


20 


85 


6428- 


CE 


A9 


03 


85 


CF 


20 


16 


98 


6430- 


A5 


38 


48 


A5 


39 


48 


A9 


FF 


6438- 


85 


38 


A9 


97 


85 


39 


20 


6A 


6440- 


FD 


E0 


21 


90 


03 


4C 


20 


98 


6448- 


AO 


00 


BS 


00 


02 


C9 


8D 


F0 


6450- 


05 


91 


CE 


C8 


DO 


F4 


68 


85 


6453- 


39 


68 


85 


38 


4C 


B3 


FE 


A9 


6460- 


00 


AO 


IF 


91 


CE 


88 


10 


FB 



6468- 


60 


20 


FB 


DA 


AH 


vv 


BD 


CI 


64 70- 


98 


F0 


(16 


20 


SC 


DB 


E8 


DO 


64 78- 


F5 


20 


FB 


DA 


4C 


B3 


FE 


C9 


6480- 


50 


FO 


03 


4C 


59 


98 


20 


Bl 


6408- 


00 


SO 


03 


4C 


A3 


94 


20 


OC 


6490- 


DA 


A5 


51 


DO 


30 


A5 


50 


30 


64 98- 


2C 


C9 


15 


90 


3B 


85 


19 


4C 


64AU- 


A3 


94 


C9 


43 


tv 


03 


4C 


C9 


64A8- 


DE 


20 


Bl 


00 


90 


03 


4C 


A3 


64B0- 


94 


20 


OC 


DA 


A5 


51 


DO 


00 


64R8- 


A 5 


50 


30 


09 


C9 


28 


90 


34 


64C0- 


85 


IB 


4C 


A3 


94 


20 


FB 


DA 


64C8- 


A2 


00 


BD 


E9 


98 


F0 


06 


20 


64D0- 


5C 


DB 


E8 


DO 


F5 


4C 


A3 


94 


64D8- 


20 


FB 


DA 


A2 


00 


BD 


A2 


98 


64E0- 


FO 


06 


20 


SC 


DB 


E8 


DO 


FS 


64E8- 


4C 


A3 


94 


07 


07 


4D 


49 


4E 


64FO- 


2E 


32 


31 


00 


20 


FB 


DA 


A2 


64F8- 


oo 


BD 


BE 


98 


F0 


06 


20 


5C 


6500- 


nn 


F.8 


no 


F5 


4C 


A3 


94 


07 


6508- 


07 


40 


49 


4E 


2E 


34 


30 


00 


6510- 


07 


07 


4D 


41 


58 


2E 


33 


32 


6518- 


00 


20 


4E 


45 


58 


54 


20 


00 


6520- 


20 


4C 


45 


54 


20 


00 


20 


54 


6528- 


48 


45 


4E 


00 


50 


11 


47 


45 


6530- 


20 


00 


07 


07 


4D 


41 


58 


2E 


6538- 


32 


32 


37 


00 


AD 


14 


99 


8D 


6540- 


11 


99 


A2 


00 


BD 


Ot: 


99 


F0 


6548- 


oe 


OS 


80 


3D 


OO 


02 


E8 


DO 


6550- 


F3 


20 


03 


BE 


A9 


00 


60 


50 


6558- 


52 


23 


31 


0D 


00 


31 







Pom's n° 23 



14? • 






301 


ELSE 






351 


BEQ 


RTS • Tin pt-e-oi-dm* 


140 LOS 


CUP 


4\ ■ 


707 




car 




M* 


IDA 


ScOOO * ArrSc du lla- 


740 




toe 


303 


FTN 






259 


BPL 


L25 * tino at Ctrl C 


150 


JMP 


STXERR 


304 ' 








260 


CMP 


4S83 


151 * 






205 ' 









tii 


BNE 


L25 


152 LOS 


LDA 


VIRGULE 


206 * 








242 


LDA 


SC01C 


153 


BEQ 


£07 


207 - LISTE 








Zil 


JMP 


RTS 


154 


JMP 


STXTRR 


208 ' 








244 L25 


JSR 


LIRE1 


155 L07 


INC 


VIPGULE 


209 ' 




— 





245 


STA 


LINNVM 


156 


JMP 


101 


210 » 








2 it 


JSR 


LIREl 


157 * 






211 LISTS 


■ 


* 




2t>7 


STA 


LINNVM-tl 


158 LQ8 


ush 




212 


DO 


l-PRODOS 




248 


CMP 


N+l 


159 


LDA 


VrttGVLE 


313 


LDA 


SAA54 




269 


sec 


L36 


160 


BNE 


L09 


214 


ELSE 






370 


BNE 


RTS1 


m 


WA 


LINffDM 


31S 


LDA 


fBC 31 




271 


LDA 


N 


162 


STA 


H 


216 


FIN 






373 


CMP 


LINNVH 


T63 


LDA 


IINWW'l 


917 


POP 


tSFD 


SFDFO 7 


777 


RTC 


RTS1 


164 


STA 


U*j 


218 


STA 


StDTSAVP. 




2 74 L26 


JSR 


CRDOl 


165 


JSR 


CHRGOT 


219 


SEO 


L20 




275 


JSR 


CRDOl 


166 


BNE 


L02 


220 


LDA 


9 '3' 


;ainon slot 3 


2 76 


LDA 


LINNVM*! 


167 • 






221 


STA 


SLOTS AVE 




277 


LDX 


LINNVM 


168 L09 


LDA 


LINNVM 


222 L20 


LDA 


PRT 




278 


STY 


AUX*1 


169 


STA 


N 


223 


B£Q 


L22 




279 


JSR 


LItipRNT * impress I wi <tu 


170 


LDA 


LINNVM*! 


224 


LDA 


ISLOT 








no de ligne 


171 


STA 


N*l 


225 


JSR 


GO PR2 




2 BO 


STY 


AUX 


172 


JSR 


CHRGOT 


tit) ui 


DEC 


PRT 




281 


LDA 


tso ■ 


17 J 


HEV 


LIU 


227 L22 


STA 


OF 




J*2 


LLC 


* 


174 


JMP 


STXERR 


226 


STA 


NL 




293 


ADC 


4S7 - 


its * 






229 


STA 


NC 




264 


STA 


NC ' Maifle aprej nu 


176 L10 


LDA 


H>3 


230 


STA 


QUOTE 








n4ro de - i - 


177 


CUP 


N'l 


331 


STA 


PAGE 




365 


SEC 




17B 


9CC 


LISTS 


233 


STA 


TF 




366 


SBC 


AUX * 


170 


BNE 


RTS 


233 


STA 


FF 




267 


TAY 


I 


180 


IDA 


u 


234 


STA 


RF 




268 


DEY 


ft 


181 


CMP 


M 


235 


LDA 


M 




289 


LDA 


t S20 


182 


3CS 


LISTS 


236 


STA 


LINNVM 




290 L27 


JSR 


OUTDO 


183 * 






237 


LDA 


M+l 




291 


DEY 




184 * 






238 


STA 


LINNVM*! 




292 


BNE 


L27 


185 ' 






239 


JSR 


FNDLIN 




293 


LDA 


450 


186 • FIN DC 


PROGRAMME 


240 


LDY 


4S3 




294 


5TA 


TF 


187 ' 






241 


BCS 


L23 




295 


STA 


QUOTE 


188 * 






212 


LDY 


4SG 




296 


STA 


RF 


189 ' 






243 


HfcU 


PREHLGH 




297 


STA 


NT 


190 firs 






241 


JMP 






298 


WY 


AUX+1 


191 


DO 


I-PKOOOS 


245 ' 








299 ' 






193 


LDA 


SLOTS AVE 


24C RTS1 


JMP 


RTS 




300 • 






193 


DEO 


LIS 


247 - 








301 • 






194 Lll 


LDA 


scooo 


348 L33 


JSR 


CPDQ1 




303 • LECTURE 1EP 


OCTET D 'D7JE LIGNE 


J 95 


DFL 


Lll aueole clavier 


340 


JSR 


EfJTETE 




303 * 










car PR03 pent e//acer 1'ic 


9S0 


.'fir 


Urn t 




301 ' 










rmr\ 


251 PPSMtGN 




■ 




7/15 • 






196 


LDA 


SCO 14 


252 


JSR 


CRDOl 




306 DEBLGN 


JSR 


LIREl 


297 


FIN 




W< 


JSB 


EfJTETE 




307 


BNE 


131 


198 L12 


JSR 


GO PR 




JMP 


L24 




308 


JMP 


CHAINAGE 


199 


DO 


1-PROOOS 


255 CHAINAGS 


JSR 


LZRE1 




309 L31 


CMP 


' Ellmlne lea m i 


200 


JMP 


BASIC 


256 L24 


JSR 


LIRE1 








■ en crop 



Recapitulation 
en version 
DOS 

FORMAT 

Apres avoir saisi c& code 
sous moniteur, vous 
Ig sauvegarderez par 
BSAVE FORMAT,A$90D1,L$527 



90m- 


A9 


4C 


an 


F5 


03 


A9 


00 




90D8- 


8D 


F6 


03 


85 


73 


A9 


91 


8D 


90EO- 


F7 


03 


85 


74 


A9 


42 


85 


19 


90EO- 


A9 


50 


05 


ID 


A9 


07 


05 


09 


90F0- 


AO 


3F 


A9 


03 


85 


CF 


A9 


00 


90F9- 


85 


CE 


20 


FC 


94 


85 


DS 


€0 


9100- 


C9 


4C 


FO 


03 


AC 


Ad 


34 


A3 


9108- 


00 


65 


FR 


SB 


FC 


85 


FD 


A9 


9110- 


rr 


85 


FE 


85 


FF 


20 


Bl 


00 


9118- 


90 


2C 


C9 


50 


FO 


07 


C9 


00 


9120- 


DO 


11 


AC 


OB 


91 


AS 


DC 


FO 


9128- 


05 


C6 


D6 


AC 


C9 


DE 


E6 


D6 


9130- 


4C 


15 


91 


C9 


2C 


FO 


03 


4C 


9138- 


C9 


DE 


A5 


FB 


FO 


03 


4L 


C9 


9)40- 


DP. 


F.fi 


FR 


4C. 


75 


97 


90 


nr 



9148- 


DA 


A5 


FB 


DO 


0D 


A5 


50 


85 


9150- 


FC 


A5 


51 


85 


FD 


20 


B7 


00 


91 58- 


DO 


BE 


A5 


50 


85 


FE 


A5 


51 


91 60- 


85 


FF 


20 


B7 


00 


FO 


03 


4C 


0168 


C9 


DE 


A5 


FD 


C5 


FF 


90 


IB 


91 70- 


DO 


06 


A5 


FE 


C5 


FC 


BO 


13 


91 78- 


AD 


F7 


95 


FO 


08 


AD 


00 


CO 


3180- 


10 


FB 


AD 


10 


cu 


20 


U5 


95 




AC 




FE 


AD 


54 


AA 


49 


FD 


92 30- 


3D 


F7 


95 


FO 


05 


A9 


33 


8D 


9198- 


F7 


95 


A5 


D6 


FO 


07 


A9 


31 


91A0- 


20 


D8 


35 


C6 


D6 


85 


FB 


85 


91A8- 


18 


85 


1A 


85 


ID 


85 


1C 


85 


91B0- 


IE 


85 


EC 


85 


D7 


AS 


FC 


85 


91B8- 


50 


A5 


FD 


85 


51 


20 


1A 


D6 


91C0- 


AO 


01 


BO 


OA 


AO 


no 


FO 


OF 


91C8- 


4C 


EO 


91 


4C 


78 


91 


20 


2B 


91 DO- 


94 


20 


4A 


94 


AC 


0D 


92 


20 


D1D8 


2B 


94 


20 


4A 


94 


4C 


E3 


91 


91E0- 


20 


DA 


93 


20 


DA 


93 


FO 


90 


91E8- 


AD 


00 


CO 


10 


OA 


C9 


83 


DO 


91F0- 


06 


AU 


10 


CO 


AC 


78 


91 


20 


91F8- 


DA 


13 


85 


50 


P0 


r>A 


93 


85 


9200- 


51 


C5 


FF 


90 


08 


DO 


C4 


A5 


9208- 


FE 


C5 


50 


90 


BE 


20 


2B 


94 


9210- 


20 


2B 


94 


A5 


52 


A6 


50 


84 


9218- 


07 


20 


24 


ED 


84 


06 


A9 


00 


9220- 


18 


69 


07 


85 


1A 


38 


E5 


06 


9228- 


Ati 


86 


A9 


20 


20 


bC 


DB 


88 




DO 


PA 


A9 


00 


85 


IE 


85 


ID 



$238- 


85 


D7 


85 


EB 


A4 


07 


20 


DA 


9240- 


93 


DO 


03 


4C 


EO 


91 


C9 


3A 


9248 


FO 


FA 


CD 


82 


DO 


2C 


A9 


01 


9250- 


85 


EB 


38 


A5 


EC 


E9 


04 


10 


9258- 


02 


A9 


oo 


85 


EC 


AA 


E8 


A9 


9260- 


20 


20 


D4 


93 


CA 


DO 


FA 


A2 


9?68- 


on 


nn 


n? 


95 


FO 


06 


20 


D4 


9270- 


93 


E8 


DO 


F5 


4C 


EO 


92 


4C 


9278- 


45 


S3 


85 


07 


A6 


EC 


F.8 


A9 


9280- 


20 


20 


D4 


93 


CA 


DO 


FA 


A5 


9288- 


07 


30 


EC 


C9 


30 


90 


32 


C9 


9290- 


3A 


BO 


0D 


A9 


20 


20 


D4 


93 


9298- 


Ab 


07 


20 


DA 


93 


4C 


EO 


92 


92A0- 


C9 


41 


90 


ID 


C9 


5B 


BO 


19 


92A8- 


A2 


00 


85 


07 


BD 


B9 


95 


FO 


92B0- 


06 


20 


D4 


93 


E8 


DO 


F5 


A5 


92B8- 


07 


20 


D4 


93 


AC 


EO 


92 


A5 


92C0- 


07 


C9 


22 


FO 


03 


4C 


B6 


93 


92C8- 


A5 


ID 


49 


01 


85 


ID 


A9 


20 


92D0- 


20 


D4 


93 


A9 


22 


4C 


CB 


93 


92D8- 


A9 


3A 


4C 


CB 


93 


4C 


EO 


91 


92E0- 


20 


DA 


93 


FO 


F8 


30 


bE 


A6 


92E8- 


FB 


F.Q 


01 


no 


On 


A? 


00 


86 


92F0- 


FB 


85 


07 


A9 


20 


20 


D4 


93 


92F8- 


A5 


07 


C9 


22 


DO 


OB 


A5 


ID 


9300- 


49 


01 


95 


ID 


A9 


22 


AC 


CB 


9308- 


93 


C9 


3A 


DO 


1A 


A5 


ID 


DO 


9310- 


C7 


A5 


D7 


DO 


C3 


85 


EB 


A9 


9318- 


20 


20 


5C 


DB 


A3 


3A 


20 


D4 




91 


20 


13 


94 


4C 


32 


92 


C9 



Pom's n° 23 



310 




arc 


DESIGN 




id 




rm> 


ASR? 




312 




BNE 


L41 




313 


NEXT 


LDA 


8 51 




314 




STA 


NF 




315 




SEC 


r 


BedulC lc decala 








ge et 




316 




IDA 


FT 


- NEXT 


317 




sac 


454 




JIB 




BPL 


L32 




319 




IMA 


150 




320 


L32 


STA 


rr 




321 




TAX 






322 




rsx 






323 




LDA 


1120 




33* 


1,33 


JSP 


OOTDOl 




325 




OEX 






326 




BNE 


L33 




321 




LDX 


450 




328 


134 


LDA 


NXT.X 




329 




BEQ 


L35 




330 




JSP 


OOTDOl 




331 




INX 






332 




BNE 


L34 




333 


L3S 


JMP 


LIRE 




334 


* 








335 


TOKEN 1 


JHP 


TOKEN 




33C 


* 








337 


L41 


STA 


AUX'l 


- W/ectue diem- 


33 B 




LDX 


ff 


* iagr~ for-ne*t 


330 




TNX 






"140 




CAK 






JO 


XA7 


JSR 


OUTDM 




342 




OEX 






343 




BNE 


L42 




344 


L43 


LDA 


AUX*1 




345 




BHI 


TOKEN 1 




346 




CMP 


fO' 


* Si nuu&ro de 


347 




sec 


L47 


* Lignc apres 


348 




CMP 


4 ■: 1 


• THEN dtcaltr 








d'l eapace en * 


349 




BCS 


L44 




350 




LDA 


4520 




351 




JSP 


OUTDOl 




3S2 




LDA 


AOXH 




353 




JSP 


OUTDOl 




354 




JMP 


LIRE 




355 


L44 


CMP 


4 'A ' 


• £i /ion vn- 


356 




BCC 


L47 










t tnxt 


runt Inn /nfir/m* TS.T 


357 




CMP 


IS5B 





358 




BCS 


L47 




359 




LDX 


ISO 




360 




STA 


AVXH 




361 


145 


LDA 


LET.X 




362 




BEQ 


146 





363 


JSP 


OOTDOl 


3f.4 


TNX 




545 


8NE 


L45 


366 L4 6 


LDA 


AUX+1 


367 


JSP 


~ - .' 


368 


JMP 


LIRE 


369 


LDA 


AUX+1 






u n *ea 


370 147 


CMP 


4"" 


37] 


BEQ 


148 


372 


JMP 


PRINT 


3/3 L48 


LDA 


VUVi'L 


374 


EOP 


851 


375 


STA 


QUOTE 


376 


LDA 


4510 


37? 


JSP 


OOTDOl 


378 


LDA 


**"' 


379 


JHP 


P0 W73 


380 • 






381 CHAINE 


LDA 


4'i ' 


382 


JMP 


PRIHT2 



383 « 

384 XX 

385 * 

386 LIRE 
387 

388 L51 

389 

390 

391 

392 

393 

394 

395 

396 



JSP 
BEQ 

an i 

LDX 
CPX 
BNE 
LDX 
STX 
STA 
LDA 



je ca.-actere i 



tjuillemeta 



JMP CPA TNAGE 



LIRE1 
XX 

gne Basic 

TOKEN 

OF 

451 

L52 

HO 

DF 

AMY*-! 
4S20 
P 1* 



de tin de 11 



• Dicsle de 1 u 
» aljihanunterlcjue 



ai ligne coupee 



3P7 




LDA 


AUX* 1 


39a 


L52 


CMP 




390 




BNE 


L53 


400 




LDA 


QUOTE 


401 




EOP 


4S01 


402 




STA 


0VOTE 


403 




LDA 


#'"* 


iVi 




JHF 


FHINT2 


405 


L33 


CftP 


4':' 


406 




BNE 


L54 


407 




LDA 


overs 


403 




BNE 


CHATNE 


409 




LDA 


RT 


410 




BWT 


CPATNF 


411 




STA 


NF 


412 




LDA 


4520 


413 




JSR 


OUTDO 



l" Separaccur 



414 




LDA 




A 1 G 

413 




JSR 


OOTDOl 


416 




JSR 


NT * Saut ligne pou 
c noimlle Inst, 


Alt 




Tun 

JHP 


UEBLCN 


428 


LSI 


CMP 


4 ' . ' 


419 




BEQ 


LZtZt 


420 




JHP 


PRINT 


421 




LDX 


NF 


422 




DUD 


LS6 


423 




JMP 


rn int 


434 


L56 


LDA 


IS20 


495 




JSP 


OtJTDO 


426 




LDA 


8' i ' 


427 




JSR 


OUTDOl 


WIS 




JSP 


NI 


429 




JMP 


NEXT 


tin 


» 






431 


* 












lie 


■ 






433 


* LECTURE ET IMPRESSION DES TOKENS 


431 








435 














436 








437 


TOKEN 


LDX 


430 ' A/iii u le Xjit/icaL 
• uj" ccupuc* da ILgnti 


438 








439 




STX 


DF 


a An 
11U 


, 






AS 1 
111 




SEC 




AA1 




SBC 


4S7F 


SI 7 




TAX 




AAA 

4 14 




STA 


AUX* 1 * 


445 




CMP 


451 


446 




BNE 


L60 


14 1 




LDA 


41 


110 




STA 


RT 


449 




JHP 


L64 


A CI 


L60 


CMP 


492 ' Debut FOP NEXT 


Is 1 




BSE 


LCI ' Augments cvoipt 
our dicolaga 


453 




LDA 


FF 


■ r] 

■3 i 




ADC 


4S1 


ACA 
1 Jl 




STA 


FF 






JMP 


L64 


Ate 
130 


L61 


CMP 


IS 45 


AC? 




BSE 


161 


At a 
430 




LDX 


tso 


A la 


L62 


LDA 


THEN, X 


460 




BEQ 


L63 


461 




JSR 


OUTDO 


462 




INX 




16J 




BNE 


U2 


461 


L63 


LOfi 


TF 


163 




ADC 


453 


466 




STA 


TF 



9328- 


2C 


FO 


03 


4C 


Bb 


93 


Ab 


KB 


9330- 


DO 


03 


4C 


B6 


93 


A9 


20 


20 






D>B 


A9 


3A 


20 


D4 


33 


20 


9140- 


13 


94 


4C 


4F. 


97 


A7 


00 


86 


9346- 


FB 


38 


E3 


IF 


AA 


65 


07 


C3 


9350- 


33 


DO 


07 


A9 


01 


85 


D7 


4C 


9358 


84 


93 


C5 


02 


DO 


09 


AS 


EC 


9360- 


69 


03 


85 


EC 


4C 


84 


93 


C9 


9368- 


45 


DO 


19 


A2 


00 


BD 


BF 


95 


93 70- 


FO 


06 


20 


5C 


DB 


E8 


DO 


F5 


93 7S- 


AS 


IE 


69 


03 


85 


IE 


20 


13 


9380- 


94 


4C 


3E 


92 


A5 


07 


AA 


84 


9368- 


06 


AO 


DO 


84 


9D 


AO 


CF 


84 


9390- 


9E 


AO 


FF 


CA 


FO 


OA 


20 


E2 


9398- 


93 


10 


FB 


30 


F6 


20 


EA 


93 


93A0 


A9 


20 


20 


D4 


93 


20 


E2 


93 


93A8- 


30 


05 


20 


D4 


93 


DO 


F6 


20 


93B0- 


D4 


93 


A4 


06 


A9 


20 


C9 


OA 


93tSti- 


M 


OA 


20 


2F 


94 


A6 


IA 


A9 


91C0- 


AO 


70 


4C 


F9 


C9 


08 


no 


03 


93C8- 


4C 


EO 


92 


20 


D4 


53 


20 


EA 


93D0- 


93 


4C 


EO 


92 


20 


5C 


DB 


E6 


93D8 


1A 


SO 


C8 


DO 


02 


E6 


9C 


Bl 


93E0- 


9B 


60 


Cfl 


DO 


02 


E6 


9E 


Bl 


93E8- 


9D 


60 


85 


0? 


38 


AS 


IB 


E9 


93F0- 


OB 


tfo 


FA 


At 


LA 


E4 


FA 


90 


91FB- 


?0 


AS 


07 


C9 


70 


FO 


OA 


C9 


9400- 


2C 


FO 


06 


A6 


1A 


E4 


IB 


DO 


9408- 


ID 


A9 


04 


65 


EC 


85 


F9 


A9 


9410- 


01 


95 


FB 


20 


2B 


94 


AS 


09 



9410- 


10 


65 


IE 


65 


F9 


85 


1A 


AA 


9420- 


CA 


A9 


AO 


20 


4C 


F9 


A9 


00 


9428- 


85 


F9 


60 


A9 


00 


85 


1A 


20 


9430- 


FB 


DA 


E6 


IB 


AS 


18 


C5 


19 


9438- 


90 


03 


20 


3E 


94 


60 


AS 


IC 


9440- 


FO 


08 


A2 


04 


20 


FB 


DA 


CA 


9448- 


DO 


FA 


84 


07 


E6 


IC 


A9 


08 


9450- 


85 


18 


A9 


20 


85 


CE 


20 


96 


9458- 


94 


84 


1A 


A5 


IB 


38 


E9 


OF 


9460- 


E5 


1A 


10 


02 


AO 


02 


AA 


A9 


9468- 


AO 


20 


4C 


F9 


A2 


00 


BD 


C5 


94 70- 


95 


FO 


06 


20 


SC 


DB 


E8 


DO 


94 78- 


F5 


A9 


00 


A6 


IC 


20 


24 


ED 


9480- 


70 


FH 


DA 


70 


FH 


DA 


A9 


00 


9488- 


85 


CE 


20 


96 


94 


20 


FB 


DA 


9490- 


20 


FB 


DA 


A4 


07 


60 


AO 


00 


9498- 


Bl 


CE 


FO 


08 


20 


5C 


DB 


C8 


94A0- 


CO 


21 


90 


F4 


60 


C9 


54 


FO 


94A8 


07 


C9 


44 


FO 


11 


4C 


18 


95 


94B0- 


A9 


00 


85 


CE 


A9 


03 


85 


CF 


94B8- 


20 


F8 


94 


4C 


C9 


94 


A9 


20 


94CQ- 


85 


CE 


A9 


03 


85 


CF 


20 


F8 


94C8- 


94 


A5 


38 


48 


A5 


39 


48 


A9 


94D0- 


El 


85 


38 


A9 


94 


85 


39 


20 


94D8- 


6A 


FD 


EO 


21 


90 


03 


4C 


02 


94E0- 


95 


AO 


00 


B$ 


00 


02 


C9 


8D 


94E8- 


FO 


05 


91 


CE 


C8 


DO 


F4 


68 


94F0- 


85 


39 


68 


85 


38 


4C 


S3 


FE 


94F8- 


A9 


00 


AO 


If 


91 


CE 


88 


10 


9500- 


FB 


to 


70 


Fh 


DA 


A7 


00 


m 



9508- 


A9 


95 


FO 


06 


20 


5C 


DB 


E8 


9510- 


DO 


F5 


20 


FB 


DA 


4C 


B3 


FE 


951 8- 


C9 


50 


FO 


03 


4C 


3B 


95 


20 


9520- 


Bl 


00 


90 


03 


4C 


78 


91 


20 


9528- 


OC 


DA 


A5 


51 


DO 


30 


A5 


50 


9530- 


30 


2C 


C9 


15 


30 


3B 


85 


19 


9538- 


4C 


78 


91 


C9 


43 


FO 


03 


4C 


9540 


C9 


DE 


20 


Bl 


00 


90 


03 


4C 


9548- 


78 


91 


20 


OC 


DA 


A5 


51 


DO 


9SS0- 


0D 


AS 


SO 


30 


09 


C9 


29 


90 


9558- 


34 


85 


IB 


4C 


18 


91 


20 


FB 


95 60- 


OA 


A7 


00 


RD 


CR 


95 


FO 


06 


9568- 


20 


5C 


DB 


E8 


DO 


F5 


4C 


78 


9570- 


91 


20 


FB 


DA 


A2 


00 


BD 


84 


95 78- 


95 


FO 


06 


20 


5C 


DB 


E8 


DO 


9580- 


P5 


4C 


78 


91 


07 


07 


40 


49 


9588- 


4E 


2E 


32 


31 


00 


20 


FB 


DA 


9590- 


A2 


00 


BD 


AO 


95 


FO 


06 


20 


9598- 


5C 


DB 


E8 


DO 


F5 


4C 


78 


91 


95A0- 


07 


07 


4D 


49 


4E 


2E 


34 


30 




00 


07 


07 


4D 


41 


58 


2E 


33 


95B0- 


32 


00 


20 


4E 


45 


58 


54 


20 


9538- 


00 


20 


4C 


45 


54 


20 


00 


20 


9SC0- 


54 


48 


45 


4E 


00 


50 


41 


47 


95C8- 


45 


20 


00 


07 


07 


4D 


41 


58 


95D0- 


2E 


31 


32 


37 


00 


AD 


F7 


95 


95D8- 


8D 


F4 


95 


20 


FB 


DA 


A9 


04 


9SE0- 


20 


5C 


DB 


A2 


00 


BD 


Fl 


95 


95E8- 


FO 


06 


20 


5C 


DB 


EB 


DO 


F5 


95F0- 


60 


50 


52 


23 


31 


OD 


00 


31 



22 



Pom's n° 23 



•4*7 


.JSR 


NT 




Hob Hr. illHN 




* 




6817 


CMP 


8S8D 


468 


JHP 


DE3LCN 




Cf7 

567 


LDA 


iso 


* Annaie dicalao 


6£8 


RPQ 


ST.67 


469 L64 


IDA 


AUXil 








e local 




669 


STA 


f STOCK} . Y 


• 7/1 


tAX 






era 

JC3 


irSfi 


mo 




670 


INY 




471 


STY 


AUX 




569 


RTS 






671 


BNE 


SL61 


■8 l£ 


LDY 


t>UU 




5/u LnlAJI 


" 






672 SL62 


PLA 




473 


STY 


FAQ 




571 


LDA 


NO 




673 


STA 


S39 


474 


ID Y 


8SCF 




572 


STA 


NC 




674 


PLA 




475 


STY 


FAC*l 




5/ J URDU* 


JSP 


CflDO 




675 


STA 


S38 


4/6 


LVI 


titM* 




5/4 


ISC 


HL 




676 


JHP 


BASIC 


477 L65 


UtX 






575 


LDA 


m, 




621 ' 






476 


BEQ 


L67 




e7« 


CMP 


NLtiAX 




678 VI UK 


~ 


w 


•479 L66 


JSR 


LI RE 2 




57? 


BCC 


SLU 




679 


LDA 


850 


ABO 


DPL 


L66 




579 


JSP 


SL12 




600 


LDY 


8S1F 


4BS 


BMI 


L65 




579 SL1 1 






Mfiwe page 


601 V2 


STA 


iSTQCK} , Y 


482 


JSP 


SAUTLGN 




580 SL '2 


LDA 


PACE 


» Pap* fuii'inC* 


682 


DEY 




mtt.< lib I 


TJ7A 






581 


or/7 
ar.{j 


entete 


* Si 1 ere page n 


AS 3 


BPL 


V2 


ID' 

4S4 


JSR 


OUTDO 1 








e fait dab de sauc 


£84 


RTs 




485 L68 


JSR 


LIRE2 




Dot 


I nv 


4S4 


■ de 4 I tones 


685 ' 






loo 


BMI 


r Co 




583 SL1 3 


JSR 






6B6 ERF 


JSR 


CRDO 


487 


JSP 


OUTDO 1 




Hi 
JO« 


DEX 






687 


LDX 


HO 


488 


BNE 


L68 




6 0S. 


our 


oljl J 




688 SL71 


LDA 


MX, X 


489 L69 


JSP 


OUTDO I 




c £ nf*rvr 
596 LNTktTt, 


STY 


nwA'i 




689 


BEQ 


SL72 


490 


LDY 


AUX 




58 1 


TNC 


PACE 




690 


JSP 


OUTDO 


491 


IDA 


i$2Q 




CBS 


LDA 


tS8 




691 


INX 




492 * 










St A 


in 




by j 


BNE 


SL71 


1»J rrllnl 








soil 


LDA 


8S2V 




693 SL72 


TCD 




494 


CMP 


8 SUA 




392 


STA 


STOCK 


" DATE 


SOS 


JMP 


BASIC 


495 


HNL 


L72 




eg; 


JSR 


PRTMS 










496 


JSH 


cmnfit 




59 J 


STY 


NC 




696 


CMP 


a tan 


197 


wx 


NC 




594 


IDA 


NCMAX 




€97 


BEQ 




498 


IDA 


8SAQ 




rgr 


SEC 






698 


JHP 


LARGFG 


499 


JSR 


PRBL3 




S9< 


SBC 


t$F 




699 SL80 


JSR 


CHPGET 


BOO L72 


CHT 


8S8 




597 


SRC 


fn. 




700 


BCC 


SL81 


SOI 


BNE 


PRINTS 




595 


BPL 


SL21 




701 


JMP 


RTS 


502 


JHP 


LIRE 




too 




in 




702 SL81 


JSB 


LINGET 


S03 PRINTS 


JSR 


OUTDOl 




tftf\ er a i 
ot/W 5L21 


■ IV 

TAX 






703 


IDA 


LINNL'N+1 


.504 


JSR 


SAVTIiCN 




DV4 


r r'A 
MJA 


4 SAO 




704 


RNP 


F.RRF.rm 


505 


JHP 


LIRE 






JSR 


PFBL3 




705 


LDA 


LINNXJM 


506 • 








£03 


LDX 


450 




706 


BMI 


ERREUR 


507 » 








604 SL22 


LDA 


NVMPAGE, X 


' Jraprime 'page 






3 


508 • 










BPft 

. - . 


SL23 




707 


CMP 


9S15 


509 • SOUS PROGRAMMES 




oyo 


JSR 


OUTDO 




705 


BCC 


MINL 


510 » 








60 7 


inx 






109 


STA 


NLMAX 


511 • 








DUO 


ot't 


SZJ2 




710 


JMP 


RTS 


a iz » 








6"09 SL23 


LDA 


8S0 




711 • 






5. J 9VJVCI1 


" 






01U 


LDX 


PAGE 




712 btWfftV 


" 


- 


314 


JSR 


OUTDO 




6i . 


JSR 


LINFRNT 




713 


CMP 


8 "C 


515 


INC 


NC 






JSP 


CPDC 








page 


516 


PTS 






SI 7 


ice 


CflDO 




714 


BEQ 


SL90 


SI 7 LTPE1 


- 








1TIA 


tso 




715 


JMP 


CTXEPiP 


518 


IN* 




LIT DA&S ktASIfT 


615 


STA 


STOCK 


' TITRE 


716 SL00 


JSR 


CHPCET 


510 


RNP 


SLJ 




bio 


JAR 


PPTMG 


* Ittoeioc eicre 


717 


BCC 


SL91 


520 


INC 


LOUTRtl 




617 


JSR 


CflDO 




718 


JMP 


UTS 


521 SL1 


LDA 


ILOUTRi . Y 




618 


JSR 


CflDO 




719 SL91 


JSP 


LINGET 


522 


RTS 






oj y 


t J1V 

MJi 


AOX*l 




720 


LDA 


LINNUM+1 


523 ' 








■CV 


avc 

fi i j 






721 


BNE 


ERPEUR 


524 LTRE2 


m 


1 




fi"7! ■ 

VAi 








722 


LDA 


LINNXJH 


525 


INY 


• 


LIT DANS LA TABL 










723 


BMI 


EPREOR 






£ DES MOTS CLSS 


62 J PRIMS 


LDY 


8 SO 




724 


CMP 


9S28 


526 


BNE 


SL2 




o*"1 pbu 


LDA 


(STVCKI , Y 




725 


BCC 


MINC 


527 


INC 


FAC+1 




Cf 4 


BEQ 


SL12 




726 


STA 


NCMAX 


328 SLJ 


LDA 


\KAC) , 1 




°* 


JSR 


OUTDO 




727 


JMP 


PTS 


329 


RTS 








INY 






/29 • 






530 ' 








628 


(spy 


4521 




729 ERREUR 


~ 




531 SAVTbSU 








62 B 


BCC 


SZ.41 




730 


J5B 


CRDO 


532 


OTA 


AUXi 1 




630 SL43 


PTS 






731 


LDX 


880 


S33 


SEC 






631 * 








732 SL101 


LDA 


MAXI, X 


534 


LftA 


WHAM 


'AU fmrnnt- A 










733 


BCQ 


SL103 






tt fin de 


1 lOTltf 


0JJ 1 1 1 tilt 




* 




734 


JSB 


OUTDO 


535 • coupe 










i-Mr 


fT- 


' Sals ie ou tier 


73S 


TNV 




536 ' ' U 


Hone 


ai " " ou ". " 






e ou de 


j date 


736 


n«r 


sr. ) 1 


537 


SBC 


4SB 




S35 


BEQ 


TTR 




737 SL102 


JMP 


PTS 


538 


STA 


MAX 




63« 


CUP 


I'D- 




738 ' 






539 


LDX 


NC 




fi37 


BEQ 


DTE 




739 MTtJL 


" 


' 


540 


CPX 


MAX 




£35 


JHP 


LONGPG 




740 


JSR 


CRDO 


541 


sec 


RE TORN 




639 • 








741 


LDX 


tso 


542 


LDA 


AUX+1 




6<o • 5eieccioB encrfe dace 


ou Eicre 


742 SL1 1 1 


LDA 


MNL, X 


54J 


CUP 


8' 




6"4I * 








743 


BEQ 


SL112 


544 


BEQ 


DEC ALE 




642 TTF 


LDA 


490 




744 


JSP 


OUTDO 


545 


CMP 


4% ' 




C43 


STA 


STOCK 




795 


INX 




546 


BEQ 


DBCAJD 




644 


LDA 


8503 




746 


BNC 


SLU1 


547 


LDX 


NC 




645 


STA 


STOCK* 1 




747 SL112 


JMP 


RTS 


548 


CPX 


NCHAX 




646 


JSR 


VIDE 




748 MNL 


HEX 


0707 


549 


BNE 


RETURN 




647 


.IWP 


&fl 




749 


ASC 


'MIN.21 • 


550 nrcAi.r 


> 


• 




648 DTE 


LDA 


IS20 




7S0 


HEX 


00 


55 J 


IDA 


4S4 




649 


STA 


STOCK 




751 • 






552 


ADC 


FF 




650 


LDA 


8S03 




752 M1HC 


" 


a 


553 


STA 


DEC 


* Mcalaoje a eff 


651 


STA 


STOCK* 1 




7 S3 


JSP 


CRDO 






eecucr 




652 


JSP 


VIDE 




754 


IJ)X 


isn 


554 


LDA 


8S1 


* Marquevr coupu 


653 SL5 


LDA 


S38 




755 SL121 


LDA 


MNC. X 






re de L Lgne 


654 


PHA 






756 


BEQ 


SLJ 2 2 


555 


STA 


DF 




655 


LDA 


S39 




757 


JSR 


obwo 


556 NT 


JSR 


CPDOl 


* Decalage en de 


636 


PHA 






758 


INX 








touc ^'instruction 


637 


LDA 


8 INPUT 




759 


BNE 


SL121 


557 


LDA 


MARUL 




658 


STA 


Sit 




760 SL122 


JMP 


RTS 


338 


CLC 






659 


LDA 


8 > INPUT 




761 MNC 


HEX 


0707 


359 


ADC 


TF 




660 


STA 


539 




762 


ASC 


'MIN. 40 ' 


560 


ADC 


DEC 




641 


JSR 


CCTZJJ 




/bj 


HEX 


00 


561 


STA 


NC 




662 


CPX 


8521 




764 • 


563 


TAX 






663 


per 


TNPUT 




7CS MX 


HEX 


0707 


«i*l 


DPJt 






664 


JMP 


ERR 




7S6 


ASC 


•MAX. 32 ' 


5*4 


IDA 


8SA0 




665 INPUT 


LDY 


tso 




7C7 


HEX 


00 


565 


JSR 


PRBU 




666 SL61 


LDA 


S200, y 


* Tranalert dans 


768 NXT 


ASC 


• NEXT ' 



lone de at ockage 



Pom's n° 23 



23 



L'Applesoft est un peu a I'etroit dans la 
zone memoire reservee a votre 
imagination debordante. Les 48Ko qui 
vous sont genereusernent alloues se 
revelent parfois insuffisants lorsque vos 
programmes Basic utilisent des images 
HGR et ou des routines en langage machine 
importantes. Si, de plus, votre programme 
utilise des tableaux alphanumeriques, il ne 
vous re.ste qu'unz pe.au de. . . pomme. 




Le programme NAVETTE va 
vous permettre d'utiliser les 16 
Ko de la carte langage pour placer 
l'ensemble des programmes 
binaires dom a besoin votre 
programme Basic. 



Les solutions 

Programmes binaires 
n'titilisant pas de 
routines Applesoft 

Le plus simple consiste k recopier 
le Moniteur de la ROM vers la 
RAM aux memes adresses (de 
$F800 a $FFFF). Tout appel au 
Moniteur & partir de la carte 
langage sera alors dirigc vers la 
RAM. Ainsi, i chaque utilisation 
de notre programme binaire, une 
routine en RAM principale (sous 
l'adresse $9600), se chargera de 
transferer le controle ^ la carte 
langage, puis de reprendre la main 
en finale en cornmutant vers la 
ROM avant de retourner au 
programme Basic. 

Programmes utilisant des 
routines Moniteur 
et Applesoft 

probl£me se complique car il y 
a conflit entre l'utilitairc en 



langage machine et la ROM 
Applesoft ; ceux-ci commencent 
en effet a la meme adresse (S 
partir de $D000). Comme dans le 
cas precedent, une routine fera la 
liaison entre le programme Basic 
et la carte langage, mais elle 
servira de plus d'aiguillage pour 
tout appel (et retour) de routine 
ROM (Applesoft ou Moniteur). 
C'est l'objet du programme 
NAVETTE. 



Principe 

Le programme NAVETTE va 
servir d'interface entre le 
programme en 'carte langage 1 et 
les sous-programmes en ROM. 
Son principe repose sur une 
utilisation de Instruction BRK 
pour passer le relais k NAVETTE. 
II suffit de placer, dans le 
programme destine i etre loge 
dans la RAM supcricurc, un 
BREAK (BRK:00) avant chaque 
appel d'une routine de la ROM. A 
la rencontre de ce code, le 
moniteur saute a l'adresse 
vectorisee par $FFFE et $FFFF, 
en 1'occurence, on saute & 
NAVETTE qui, comme sont nom 
1'indique, fera la navette entre la 
RAM et la ROM. 



MMAM 

Pratiquement.., 

Dans votre p rogra mme Basic, 
charger NAVETTE et l'utilitaire 
par une sequence telle que : 

10 DS= CHR$(4): PRINT D$"B 

RUN NAVETTE" 
20 A= PEEK (-16255) : A = 
PEEK (-16255): PRINT D$ 
"BLOAD UTILITAIRE": A = 

PEEK (-16254) 
L'utilitaire sera ensuite execute 
par l'instruction '&' dite 
ampersand. 



Modification 
de l'utilitaire 

Assembler le programme que Ton 
veut charger dans la carte langage, 
a partir de l'adresse $D000, en 
ayant pris soin de placer des BRK 
avaul chaque appel a la ROM par 
JSR ou JMP ou avant chaque 

instruction acc6dant & la ROM 
(par exernple LDA $FBB3 qui 
determine le type de la machine). 

II est k noter que tout programme 
existant peut Stre modifie et 
assemble de la sorte. Si ce 
programme utilise l'ampersand, il 
suffit de supprimer la partie 



Suite du source 'T.FORMAT' liste pages precedentes 



769 

770 LET 

771 

171 TUSH 
773 

774 SUMP AG F. 
??S 

776 HAX1 
777 
77* 
778 

7BQ GQ_PR 
7B1 

762 GO PR2 



HEX 
ASC 
HEX 
ASC 
HEX 
ASC 

hex 

HEX 
ASC 
HEX 



LDA 
STA 



' THEN' 
00 

'PACE 
00 
0707 

•MAX. 127' 
00 



SLOTS AVE 
PR_DA TA*3 
italre 



;acc=alot deszir. 



783 
784 
785 
7B6 
/B/ 
73$ 

789 GO! 

7*0 

791 

792 

793 

7U 

795 

796 

797 



DO 

JSP 

LDA 

JSP 

FIN 

LDX 

LDA 

BEQ 

DO 

JSP 

ELSE 

ORA 

STA 

FIN 

INX 



1- PRODOS 
CPDO 

94 ecrl-d 
OUTDO 

40 

PR_0ATA, X 
GO 3 

2- PPODOS 
OUTDO 

9580 

$200. X 



79B 

799 GO 3 

800 

001 



DO 
JSR 
LDA 
FIN 
PTS 



603 
804 

805 

BOG FIt__DATA ASC 

BO? HEX 

BOB SLOTSAVE ASC 

809 DO 

810 END 

811 FIN 



PRODOS 
SOLO 3 

to 



'PPtl ' 

OD00 



1-PROQOS 



24 



Pom's n° 23 



<&\ w»lf»t fat tontines hmms sur la carte laogage... 



relative h 1 'initialisation dc 
celui-ci. Far contre les 

instructions Basic utilisant cet 
artifice restent inchangccs. 
^utilisation de NAVETTE a 
l'interieur d'un programme Basic 
est entterement transparente. 

Facilites 

Le programme CONVERT permet 
d'ajouter les BRK dans les 
sources devant les instructions 
JSR et JMP appelant un sous- 
programme en ROM. 

Ce programme se charge 
d'identifier toutes les adresses en 
ROM, ddfinies par des labels 
g^ce * l'opcode "EQU" ou 
dun programme source ecrit avec 
BIG MAC, sauvegarde sous 
forme de fichier TEXT. II insere 
ensuite les BRK automa- 
tiquement ; il sauve enfin sur 
disquette, le programme modifid, 
en ajoutant le suffbee ".LC". 

II utilise les routines suiv antes : 

• INPUT : input generalise 
acceptant tous caracteres ; 

• DIM. VAR.OBJ ; routine 
publiee dans Pom's 12 ; 

• FRE (16) : routine de 'garba- 
ge' publiee dans Pom's 2, 

Techniquement . . . 

A chaque appel de l'ampersand le 
scenario est le suivant : 

11 NAVETTE commute sur la 
memoire superieure (carte 
langage) ; 

2J execution de l'utilitaire 
jusqu'ii la rencontre d'un BRK 
qui dirige sur NAVETTE ; 

3J les registres sont alors 

sauvegardis. On recherche 
ensuite l 1 instruction suivant BRK. 
On commute alors l'acc&s h la 
ROM ct cette instrution est 
executee ; 

4] enfin, NAVETTE commute de 

nouveau sur notre utilitaire ; 



5] le retour au Basic nc saurait sc 
realiser sans un petit passage (le 
dernier iusqu'au prochain) par 
NAVETTE, qui se charge de 
replacer correctement les 
commutateurs RAM/ROM, avant 
de rendre la main au programme 
Basic. 

NAVETTE a ete teste sur ICARE 
de P. CANTOT, version complete 
(SUPER PRINT et TORTUE 
inclus). Avec quelques amena- 
gements bien sur, il semble 
donner toute satisfaction. 

Precisions, limites 

• NAVETTE est assemble en 
page 3 i partir de l'adresse 
$300, l'utilitaire etant place 
au-dessus du DOS, HIMEM 
conserve sa valeur fixee par le 
DOS soit $9600 (38400) ; 

• NAVETTE est incompatible 
avec les DOS deplaces dans la 
carte langage, de meme 
qu'avec PRODOS qui utilise 
lui aussi cet espace memoire ; 

• NAVETTE commute sur le 
Banc 2 et la memoire commune 
de 8Ko. Pour commuter sur le 
Banc 1 voir la remarque 5. 
Pour plus de precisions voir 
l'article de Gerard Michel dans 
le numero 19 de Pom's, page 
29; 

• il ne faut pas que l'utilitaire 
fasse appel ii des interruptions 
(BRK), les vecteurs d'inter- 
ruptions etant modifies par 
NAVETTE ; 

• si vous voulez placer plusieurs 
utilitaires independents sur la 
carte langage, il vous suffit, 
avant 1 'appel dc 1'un d'eux, de 
POKer son adresse d'implan- 
tation en $3 IE (798) et $3 IF 
(799) dans 1'ordre habituel : 
adresse basse puis haute. Si 
vous voulez utilisez le BANC 
l.POKezOi la place de 128 
en $324 (804). 

a 



Programme 
'CONVERT 

10 REM 

I INSERTION DES BRK t 

! DANS PGM SOURCE BIG MAC ! 

I ! 

JEAN PAUL ARSEL I 

j / 

20 HIMEM: 3 74 90: HOME : TEXT 
30 REM AMPERSAND -> DIM.VAR 
40 POKE 1013,16; POKE 1014,124: POK 

E 1015,146 
50 DIM AS(1); DIM Z$(l): DIM FS (3) 
6U FS(1J - " INPUT" ;FS(Z) - -DIM.VAR. 

OBJ":FS(3) - -FREfl6)- 
10 US = CHRS (13) + CHRS (4) 
BO OMERR GOTO 100 

90 FOR I - J TO 2:FS * FS(I); PRINT 
DS"BLOAD"FS(I) ; NEXT : GOTO 110 
100 CALL 768: GOSUB IQUO: GOTO B0 
110 Z1S - " BRK- + CHRS (13) + " JS 
R " 

120 £29 - " BRK- + CHRS (13) f " JM 
P ■ 

130 REM LECTURE t'ICHIEK 
140 VT - 10 

150 VTAB VTi INVEXSE ; RS - "NUM DU 
FICHIER SOURCE A TRANSFORMER?" : 
GOSUB 1010 

160 VTAB VT + J; HTAB 3; CALL 782 T 
NPUT Fl$ 

170 ONERR GOTO 190 

1B0 PRINT DS-OPEN"FlS; GOTO 210 
190 E - PEEK (222/ : IF E - 4 THEN E 
- 7 

190 IF E < > 11 THEN PRINT DS~CLO 
SE-F19 

200 CALL 766; GOSUB 10 90; GOTO 150 
210 PRINT DS "READ "Fl 5 
220 ONERR GOTO 250 

230 HOME ;RC - " CHA RGEMEN T DU FICH1 
ER:-; GOSUB 102 0: VTAB 5; INVERS 
E :RS - F1S: GOSUB 1010 

240 FOR I - 1 TO 2000: CALL 782 INP- 
UT AS (I) : 6 AS i : NEXT 

250 CALL 768.-N1 - I 1:J - 2 
260 PRINT D$"CLOSE"Fl$ 

270 IF I < 2 THEN PRINT DS "DELETE" 

F1S:E - 7; GOTO 200 
290 REM RECHERCHE DES LABELS. . , 
290 REM ...APPLESOFT OU MONITEUR 
300 HOME :RS = -VOICI LA L1STE DES 

LABELS": GOSUB 1010: VTAB 3jR$ - 
"DE LA ROM APPLESOFT OU HONITEU 

Rf"; GOSUB 1010 
310 FOR I - 1 TO N1:K - LEN (AS (I) 

) -6: IF X < 3 THEN 410 
320 BS = MID$ (AS(1),X,4) :C$ - LEF 

TS (B$,l); IF C$ - OR CS - " 

U" THEN 340 
110 GOTO 410 
340 HS =• RTGHTS (R-S e 2) 
.150 TF AS ■ "SO" OR BS - "SE" OR 9S 

= "SF- THEN 370 
360 GOTO 4J0 

170 IF CS - THEN Z$(J} = LEFTS 

(AS(I),K -2): t ZS + .• GOTO 39 



390 IF CS - "11" THEN ?.S(J) - LEFTS 

(AS(T),K - 4): f t$ * 
390 PRINT ZSf.l) 
400 J m J + 1 
410 NEXT 
4?0 N2 - J - 1 
430 REM INCLUSION DES BRK 
440 ONERR GOTO 460 

450 FS - ES(3): PRINT DS"Bl,OAD"FS: G 
0T0 470 

460 CALL 768: GOSUR 1080: GOTO 440 

470 CALL 37500 

480 FOR 1 » 1 TO WJ 

490 IF INT (I / 500) - T / 500 THE 
N PRIHT : PRINT "PATIENCE JE FA 
IS LE MENAGE!-/: CALL 37500: PRI 
NT -C'EST FINI": PRINT 

500 FOR J - J TO 12 



Pom's n a 23 



25 



510 



IF MIDS (AS (II ,J, I) 

urn 670 

520 J - J i 1: IF MIDS (AS(I) f J,lJ 

< > "S" THEN 55 G 

530 J - J i 1: IF MIDS (A9(I),J,1) 

< > "R" THEN 610 
540 ZS - Zl$: GOTO S9G 

550 IF MIDS (A$(I),J,1) < > "W" T 
HEN 670 

560 J - J + 1: IF MIDS <AS(I) 

< > "P" THEN €70 
570 2$ - 12$ 

560 REM ON A UN JSR OU JMP 
530 M = J t 2 
600 Y9 - 

IF J > 4 THEN YS - LEFTS (AS (I 
i,J - 4) 
FOR K - 1 TO M2 
LEN (Z$(K1) 
IF LEN (AS (Iff - M * 1 < I THE 
N 660 

IF MIDS (AS (I) ,M, I) - ZS(K) TB 
£N AS <I) - YS i ZS i ZS (K) : PR1N 
T AS (1} , "LICNE N( "/I; PRINT :K 



610 



620 



630 I - 
640 



650 



1190 RS - "DISQUETTE PROTEGEE": GOSU 
B 1010: VTAB 10: RS = "VEUILLEZ 
EN LEVER LA PROTECTION ET" : COSU 

B 1010 

1200 COSUB 1020; GOSUB 1040: RETURN 

1510 RS - 'LE FICHIER ■ * FS * » EST 
ABSENT-: COSUB 1010 :RS = "VEUI 
LIES PLACER LA BONNE DISQUETTE 
ET": VTAB 7; COSUB 1010 
1220 GOSUB 1020; COSUB 1040: RETURN 
1250 RS - -NOM DE F1CHIER INCORRECT" 
: GOTO 1135 



Source 

'T.NAVETTE' 

Assembleur Big Mac 





_ mi 


1 








660 


fJPYT K'.J = IP 

JVDfM /\ * \J — A *1 


2 


»* 






610 


HFXT J* NFXT 7 


3 


*» 




»» 


660 


HOME ; PRINT "VOULEZ-VOUS SAUVE 


4 


»# 




** 




R LE FICHIER TRANSFORME " : PRINT 


5 


»» 


: NAVETTE : M 




: PRINT " SUR DISQUETTE 


6 


*» 








? <O f M>"; 


7 


** 




* » 


690 


GET RS 


8 


ma 


PAR Jean paui ARBEl 


700 


IF RS = "W" THEN END 


9 


»» 






710 


IF RS < > "O m THEN 690 


20 


»» 




* * 


120 


PRINT 


11 








730 


rpS - FJS ■* m .LC m 


12 








740 


ONERft GOTO 760 


13 




ORG 


$300 


750 


PRINT DS n OPEN m F2S: PRINT DS "DEL 


14 


AMPERV 


S3F5 




KTF-FPS: PRINT DS n nPEN"F?S; PRJN 


15 


UTIL 




SD000 




T DS»HRITE*F2$ : GOTO 770 


16 


RAMI 




SCOBB 


760 


CALL 768: GOSUB 1080: GOTO 740 


17 


RAM2 




SC083 


770 


FOR 2=1 TO Nl 


18 


RON 




SC082 


780 


PRINT AS (I) : NEXT 


19 


ROM1 




seas 9 


790 


PRINT DS"CL0SE"F2S 


20 


Rm? 




scasi 


800 


END 


? J 


TOQ 




SFFFE 


1000 


REM SOUS -PGM DE MESSAGES D 'ERR 
EUR 


22 
27 








1010 


HTAB 140 - LEN (RS) ) / 2: PR1 


24 


*" VECTOR THE 






NT RS: NORMAL : RETURN 


25 








1020 


VTAB 21 : PRINT "APPUYEZ SUR RE 


26 




LfSA 


SS4C 




TURN POUR UN NOUVEL ESSAI"; VTA 


77 




STA 


AMPERV 




B 23: PRINT ■ OU APPUYEZ SUR E 


78 




tOA 


4<-omT 




SCAPE POUR QUITTER";: RETURN 


29 




STA 


AMPEPV*! 


1030 


VTAB 19:RS -= "POUR VOIR LE CA.T 


u 




LOA 


9>DEBUT 




ALOGUE TAPEZ ?": GOSUB 1010: RE 


M 




STA 


AMPERV+3 




TURN 


32 




RTS 




1040 


VTAB 23: HTAB 38: GET RS: IF 


11 









1050 
1055 
1060 



1070 



1100 



1105 



ASC (RS) =13 THEN HOME :VT - 
10: RETURN 
IF ASC (RS) " 27 THEN END 
ONERR GOTO 190 

IF ASC (RS) - 63 THEN HOME : 
PRINT DSj "CATALOG": GET RS:VT 
= 23: RETURN 
GOTO 1040 
1080 E ' PEEK (222) 
1090 HOME : VTAB 5 

ON E GOTO 1150,1190,1190,1190, 
1210, 1210,1130,1170,1110,1150,1 
250,1150,1150 

PRINT CURS (7), -"BREAK IN "; P 
EEK (218) + PEEK (219) ' 256: 
END : RESUME 
1110 RS - "DISQUETTE PLEINE": GOSUB 
1010: VTAB 10:RS = "VEUILLEZ CH 
ANGER DE DISQUETTE": GOSUB 1010 
1120 GOSUB 1020: GOSUB 1040: RETURN 

1230 RS - "FICHIER NON TROUVE" 
1135 GOSUB 1010: VTAB 10:R$ - m VOUS 
AVEZ TAPE:": GOSUB 1010: VTAB 

12: INVERSE :RS - FJS; GOSUB 10 

10 

1140 GOSUB 1020: GOSUB 1030: GOSUB 

1040: RETURN 
UbO RS - "LE FICHIER SOURCE NE PEUT 
ETRE": GOSUB 1010: VTAB 7:RS = 
"QU'UN FICHIER DE rift TEXTS": 

GOSUB 1010: VTAB 1Q:R$ = "CKEE 
PAR L 'ASSEMBLEUR BIG MAC": COS 
Uti 1010 

1160 GUSUU 1020: GOSUB 1UJV; GOSUB 
1040: RETURN 

1170 K$ - -VERJFIEZ LA FEBMSTURE UE 
la Porte-: GOSUB 1010: vtau iz: 
k$ = »OU PLACEZ UNE DISQUETTE D 
ANS LE LECTEUR" : PRINT RS 

1180 GOSUB 1020; GOSUB 1040; RETURN 



VECTOR T SB LE BREAK 



39 



JSP COHMVT .-Commute J* B 

fV4 iff Bank J ou 2 

LDA ifCO .-Voeeori.e Jo 

RRK imrfl NAVF.TTF. 

STA IRQ 

U>A *>OT 

STA 1RQ*1 

JSR UTIL 
llltMlre 

BIT RON 
SIC 

RTS 

DFB $80 

Sim - Bank 2 



/ Execute 2*uE 
/ Rctour au BA 

- Bmnk 1 . 



4£ 
47 



SO 
51 



NAVETTE antra la PAH ot la ROH 



55 


Sauvegarde dice 


param6teoo 


S3 


CO STA 


SAVA 


j A 


54 


STY 


SAVY 


Y 


SS 


PLA 






S6 


STA 


SAVP 


iP 


57 


LDA 


$6 




SB 


STA 


SAV6 


.-R6 


SP 


LDA 


$7 




SO 


STA 


SAV7 


.-R7 


fil 


PLA 






62 


STA 


$6 


. ADRL BRK-tS 


63 


PLA 






64 


STA 


57 


; ADRti BRK+2 


66 








66 


• Recherche 

K 


I 'instruct! 


on apr&s Je BR 


C7 


LDA 


56 




GB 


BSE 


SAUT 





7J 
72 

73 
74 
75 
76 

77 
70 



DEC 97 

SAUT DEC ft 

LDY 4S2 

BQUCLS IDA (961, Y /Teajtenissivct 
de 1 ' instruction 

STA 2NSTR* Y 
DEY 

BPL BOUCLS 

CUP tS4C 



.-OPCODE- - JHP 



81 
82 
S3 

84 

85 
86 
97 
BB 
89 
90 

91 
92 

93 
94 

95 



BEQ JUMP 
CHP >StfC 

Indirect ? 
BEQ JUMP 
CHP 4S7C 

proindoxo ? 
BEO JUMP 



. OPCODE - JMP 



.-OPCODE - JHP 



' Calsul atfrajac d* recoyr en Corte L 
onyooe iaau! si JrW) 
CLC 

LDA 36 
ADC 452 
TAY 

LDA S7 
ADC 4$0 

P8A 

utllltaire - 1 

TYA 
PHA 

uLllltalie 



.ADRL BRK+3 



iADRH BRK*3 
.ADRJl Petour 



. ADRL Ret our 



- 1 



Reatauiatlon ttea param&trcs 



96 


JUMP 


BIT 


BANK 


.-Bank 1 ou 2 


97 




BPL 


Jl 




98 




BTT 


PON2 




99 




BIT 


BOM2 




100 




JMP 


J2 




101 


Jl 


BIT 


BOH I 




102 




BIT 


BOM1 




103 


32 


LDA 


SAV6 


?R6 


104 




STA 


56 




105 




LDA 


SAV7 


;R7 


106 




STA 


57 




107 




LDY 


SAVY 


;Y 


108 




LDA 


SAVP 


IP 


109 




PHA 






110 




LDA 


SAVA 


;A 


111 




PLP 






112 




JSR 


INS TP 




113 
114 


















115 


' cuhhutl la 


putts 


LANGAGE ' 


lib 










117 


CVtWVt' 


PHP 






118 




BIT 


HANK 


.■Bank 1 ou 2 


11V 




BPL 


CI 




121/ 




BIT 


HAM2 




121 




BIT 


MAM2 




122 




JMP 


C2 




123 


CI 


BIT 


RAMI 




124 




BIT 


KAMI 




125 


C2 


PLP 






12b 




KTS 






127 










128 










129 


« EXECUTE I 


'INSTRUCTION " 


130 










131 


INSTP 


OS 


3 


.•Instruction 



apces le BRK 



132 
133 
134 
135 
136 
137 
138 
139 
140 
141 



RTS 



SAUVECARDE PARA.HETPES 



SAVA 


DS 


J 


SAVY 


DS 


a 


SAVP 


DS 


i 


SAV6 


DS 


i 


SAV7 


OS 


j 



Routine TRE(16)' 

Aprds avoir saisi ce cvde sous 
monitttur, vous le sauvQgarderez par 
BSAVE FRE(16)>A$927C,L$ir9 

927C- 4C 86 92 E5 

9280- 6E C9 04 90 01 60 20 04 

9268- 94 A€ 13 AS 74 86 6F 85 



26 



Pom's n° 23 



9290- 


70 


A9 


55 


A2 


00 


85 


5E 


86 


9298- 


5P 


GS 


5? 


FO 


05 


20 


IF 


9.3 


92A0- 


FO 


F7 


A9 


07 


85 


OF 


A5 


69 


92A8- 


A6 


6A 


85 


5E 


86 


5F 


E4 


6C 


92B0- 


DO 


04 


C5 


6B 


FO 


05 


20 


12 


92B8- 


93 


FO 


F3 


85 


94 


86 


95 


A9 


92C0- 


03 


85 


8F 


AS 


94 


A6 


95 


E4 


92C8- 


SE 


DO 


07 


C5 


6D 


DO 


03 


4C 


92D0- 


BA 


93 


85 


5F. 


86 


5F 


AO 


00 


92D8- 


Bl 


5E 


AA 


C8 


Bl 


5E 


08 


C8 


92E0- 


Bl 


5E 


65 


94 


85 


94 


C8 


Bl 


92E8- 


5E 


65 


95 


85 


95 


28 


10 


D3 


92F0- 


BA 


30 


DO 


C8 


Bl 


5E 


AO 


00 


92F8- 


OA 


69 


05 


65 


5E 


95 


SE 


90 


9300- 


02 


E6 


5F 


A6 


5F 


E4 


95 


DO 


9308- 


04 


C5 


94 


FO 


BA 


20 


IF 


93 


9310- 


FO 


F3 


Bl 


5E 


30 


05 


ce 


Bl 


9318- 


5E 


30 


03 


4C 


A9 


93 


C8 


Bl 


0320 


SB 


FO 


F8 


85 


18 


C8 


Bl 


SE 


9328- 


85 


19 


C5 


6F 


C8 


Bl 


5E 


85 


9330- 


1A 


E5 


70 


BO 


E6 


A5 


19 


CD 


9338- 


14 


94 


A5 


IA 


ED 


15 


94 


90 


934 0- 


68 


A5 


7 9 


C5 


6D 


A5 


7A 


F.5 


93 A 8- 


BE 


90 


DO 


A2 


21 


CA 


CA 


A5 


9350- 


19 


DD 


13 


94 


A5 


1A 


FD 


14 


9358- 


94 


90 


F2 


86 


IB 


A2 


03 


BD 


9360- 


13 


94 


90 


11 


94 


BD 


14 


94 


9368- 


9D 


12 


94 


BD 


34 


94 


9D 


32 


93 70- 


94 


BD 


33 


94 


9D 


31 


94 


BD 


9378- 


54 


94 


9n 


52 


94 


nn 


53 


94 


9380- 


9D 


51 


94 


E4 


IB 


E8 


E8 


90 


9388- 


06 


A6 


IB 


A5 


19 


9D 


13 


94 


9390- 


A5 


1A 


9D 


14 


94 


A5 


18 


9D 


9398- 


34 


34 


A5 


5E 


3D 


53 


94 


A5 


93A0- 


5F 


9D 


54 


94 


A5 


9F 


9D 


33 


93A8- 


94 


A5 


8F 


18 


65 


5E 


85 


5E 


93B0- 


90 


02 


E6 


5F 


A6 


5F 


AO 


00 


93B8- 


60 


60 


A2 


IF 


BD 


34 


94 


A8 


93C0- 


FO 


F7 


38 


A5 


6F 


FD 


34 


94 


93C8- 


85 


6F 


A5 


70 


E9 


00 


85 


70 


93D0- 


3D 


13 


94 


85 


1C 


BD 


14 


94 


93D0- 


95 


ID 


88 


CO 


FF 


FO 


06 


Bl 


93E0- 


1C 


91 


6F 


90 


F5 


BD 


33 


94 


93E8- 


29 


04 


4A 


A8 


C8 


BD 


53 


94 


93F0- 


85 


1C 


BD 


54 


94 


85 


ID 


A5 


93F8- 


6F 


91 


1C 


A5 


70 


C8 


91 


1C 


9400- 


CA 


CA 


10 


B8 


A2 


IF 


A9 


00 


9408- 


9D 


34 


94 


9D 


14 


94 


CA 


10 


9410- 


F7 


AC 


n 


92 


FF 


FF 


FF 


FF 


9418- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9420- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9428- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9430 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9438- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9440- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9448- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9450- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9458- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9460- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9468- 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


FF 


9470- 


FF 


FF 


FF 


FF 


EA 









Routine 'INPUT 

Apras avoir saisi ce code sous 
moniteur, vous le sauvegarderez par : 
BSA VE INPUT AS300, LS23 



0300- A3 00 85 D8 68 A8 68 A6 
0308- DF 9A 4R 98 48 60 70 Rl 
0310- 00 20 E3 DF 85 85 84 86 
0318- 20 2C D5 C8 E8 20 E9 E3 
0320- 4C 9A DA 



E.P.E. 5.0 

Sous DOS, 
Sous ProDOS, 
en 40 colonnes, 
en 80 colonnes, 



Sur 

Apple ][+ 
Apple /le 
Apple //e+ 
Apple //c 



Vous le trouverez 
page 74. 
Vous avez d&ja 
E.P.E ? 
Nous le mettrons a 
niveau I 



Routine 

'DIM.VAR.OBJ' 



Apros saisJa de ce code sous moniteur, 

vous le sauvegarderez par : 

BSAVE DIM. VAR.OBJ,A$927C,L$18E 



927C- 


A4 


6B 


84 


18 










9280- 


A4 


6C 


84 


19 


AO 


05 


84 


08 


9288- 


A2 


00 


86 


7 


86 


IB 


86 


1C 


9290- 


86 


ID 


86 


09 


FO 


19 


20 


m 


3238- 


00 


DO 


OA 


E6 


IB 


DO 


35 


C9 


02 AO 


24 


FO 


21 


C9 


25 


FO 


33 


C9 


92A8- 


C8 


FO 


21 


C9 


C9 


FO 


20 


95 


9290- 


06 


E8 


DO 


E2 


E6 


ID 


A5 


07 


92B8- 


09 


80 


85 


01 


AU 


01 


Bl 


1S8 


92C0- 


20 


BA 


00 


FO 


OF 


20 


Bl 


00 


92C8- 


C9 


ce 


DO 


03 


4C 


50 


93 


E6 


9200- 


7C 


AC 


50 


93 


20 


E5 


92 


AC 


92D8- 


11 


93 


E6 


ID 


A5 


06 


09 


80 


92E0- 


85 


06 


4C 


B4 


92 


AO 


00 


Bl 


92E8- 


18 


C5 


06 


DO 


07 


C8 


Bl 


18 


92F0- 


C5 


07 


FO 


1C 


20 


00 


93 


85 



92F8- 


19 


A5 


1A 


85 


18 


4C 


E5 


92 


9300- 


AO 


02 


Bl 


ia 


18 


65 


18 


8.5 


93 08- 


1A 


C8 


Dl 


18 


65 


19 


85 


IE 


9310- 


60 


A5 


18 


85 


A2 


A5 


19 


85 


9318- 


A3 


C8 


Bl 


18 


85 


08 


C8 


Bl 


9320- 


18 


85 


09 


20 


00 


93 


A5 


1A 


9328- 


85 


3C 


A5 


IE 


85 


3D 


A5 


6D 


9330- 


85 


3E 


A5 


6E 


85 


3F 


AO 


00 


9338- 


20 


2C 


FE 


A5 


6D 


38 


F.5 


08 


9340- 


65 


6D 


A5 


6E 


E5 


09 


85 


6E 


9348- 


A6 


IB 


DO 


03 


20 


Bl 


00 


60 


9350- 


20 


E5 


92 


AO 


OA 


Bl 


18 


C9 


9358- 


01 


DO 


Fl 


20 


00 


93 


A5 


ID 


9360- 


FO 


09 


C6 


08 


A5 


08 


38 


E5 


93 68- 


ID 


35 


08 


A5 


1C 


FO 


38 


AO 


93 70- 


06 


Bl 


18 


38 


E9 


07 


97 


78 


93 76- 


86 


Bl 


18 


ES 


00 


31 


16 


AO 


9380- 


02 


Bl 


18 


38 


E5 


08 


91 


18 


9388- 


C8 


Bl 


IB 


E9 


00 


91 


18 


AS 


9390- 


1A 


48 


A5 


IE 


A8 


20 


00 


93 


9398- 


85 


43 


A5 


1A 


85 


42 


68 


85 


93AQ- 


3D 


68 


85 


3C 


flf 


2E 


93 


AO 


93A8- 


06 


Bl 


18 


18 


69 


01 


91 


18 


93B0- 


88 


Bl 


18 


69 


00 


91 


18 


AO 


93B8- 


02 


Bl 


18 


18 


65 


08 


91 


18 


93C0- 


C8 


Bl 


18 


69 


00 


91 


18 


A5 


93C8- 


6E 


95 


07 


85 


09 


A5 


6D 


85 


93D0- 


06 


18 


65 


08 


85 


6D 


85 


08 


93D8- 


90 


OA 


E6 


6E 


E6 


09 


AO 


00 


93EO- 


Bl 


06 


91 


08 


A5 


07 


C5 


IE 


9JE8- 


DO 


09 


AS 


06 


C5 


1A 


DO 


03 


93F0- 


4C 


4C 


93 


C6 


06 


A5 


06 


C9 


93F8- 


FF 


DO 


02 


C6 


07 


ce 


08 


A5 


9400- 


08 


C9 


FF 


DO 


DB 


C6 


09 


4C 


9408- 


E0 


93 















Recapitulation 

'NAVETTE' 



Aprds avoir saisi ce code sous 
moniteur, vous le sauvegarderez par 
BSAVE NAVETTE,A$300,L$B6 



0300- 


A9 


4C 


8D 


F5 


03 


A9 


10 


8D 


0308- 


F6 


03 


A9 


03 


8D 


F7 


03 


60 


0310- 


20 


96 


03 


A9 


25 


8D 


FE 


FF 


0318- 


A9 


03 


8D 


FF 


FF 


20 


00 


DO 


0320- 


2C 


82 


CO 


60 


80 


8D 


Bl 


03 


0328- 


8C 


32 


03 


68 


3D 


B3 


03 


A5 


0330- 


06 


8D 


B4 


03 


A5 


07 


3D 


B5 


0338- 


03 


68 


85 


06 


68 


85 


07 


A5 


0340- 


06 


DO 


02 


C6 


07 


C6 


06 


AO 


0348- 


02 


87 


06 


99 


AD 


03 


88 


10 


0350- 


F8 


C9 


4C 


FO 


15 


C9 


6C 


FO 


0358- 


11 


C9 


7C 


FO 


OD 


18 


A5 


06 


03 60- 


69 


02 


A3 


A5 


07 


69 


00 


48 


0368- 


98 


A8 


2C 


2A 


03 


10 


09 


2C 


0310- 


81 


CO 


2C 


81 


CO 


AC 


7E 


03 


0318- 


2C 


89 


CO 


2C 


89 


CO 


AD 


B4 


0380- 


03 


85 


06 


AD 


B5 


03 


85 


07 


0388- 


AC 


B2 


03 


AU 


B3 


03 


48 


AU 


0390- 


Bl 


03 


28 


20 


AD 


03 


08 


2C 


0396- 


24 


03 


10 


09 


2C 


83 


CO 


2C 


03A0- 


83 


CO 


AC 


AB 


03 


2C 


8B 


CO 


03A8- 


2C 


8B 


CO 


28 


60 


00 


00 


00 


03B0- 


60 


00 


00 


00 


00 


00 







Pom's n 23 





Patiiee 
Neveu 



/c doutc que personnc 
n'ai jamais eu de 
problemes de lecture on 
de correction sur une 
ligne malheureusement trop 
grosse pour ere claire ou encore 
pour que le curseur puisse la 
parcourir d'unc cxtrcmite h 
1'autre. D'autre part, certains 
poss£dent peut-etre un 
CRUNCHER (celui du Pom's 22 
par exemple...), programme qui 
installe sur une rneme ligne 
plusieurs autres consecutives en 
les separant avec les 'deux-points' 
(:) habituels. 

II est toutefois utile de pouvoir 
transformer son programme 
Applesoft afin qu'il n'y ait qu'une 
instruction par ligne car il est alors 
facile de lire un listing, de le 
comprendre et de le modifier. 
C'est ce que le DECRUNCHER 
est a meme de faire. 

Comment faire ? 

Pour l'utiliser, il suffit de charger 
par un LOAD le programme Basic 
comme vous le faites d'habitude, 
puis de taper : 

RRUN DECRUNCHER ou 

CALL^ 35072 s'il est deja en 
memoire. 

Les changcments que le 
DECK UNCHER effectue sont : 

• une instruction par ligne sauf 
aprfcs IF &ant donne que ce qui 
le suit est conditionne par le 
test ; 

• un renumcrotage de 1 en 1 
avec modification des GOTO, 
COSUB, DEL, des THEN, 
LIST, RUN lorsqu'ils sont 
suivis de numdros de ligne, et 
enfin, des ON XX GOTO/ 
GOSUB. 

II exisre toutefois quelques 



limitations : 

• le texte original ecrit en Basic 
ne peut prendre plus de 14336 
octets soit 14 Ko, auquel cas il 
affichera : TEXTE TROP 
LONG; 

• il ne doit pas avoir plus de 640 
lignes a 1'origine. (Le nombre 
de lignes qui resulte du 
decrunchagc n'est limite que 
par 1'AppIesoft lui-meme) ; 

• le programme decrunche ne 
doit pas pouvoir faire plus de 
18688 octets, soit 18,25 Ko. 
(Le programme decrunche 
etant g6n£ralement plus 
important que 1'original) ; 

• au cas ou le programme 
decouvre un GOTO, GOSUB, 
DEL, LIST, se referant a une 
ligne inexistante, il enverra ; 
PAS DE LIGNE X. 



Le principe 

II est tout d'abord necessaire, 
voire indispensable d'etudier 
rapidement la structure du texte 
d'un programme Applesoft en 
memoire. L'adresse de debut du 
lexte se trouve en TXTTAB 
($67.68) et la fin en PRGEND 
(SAF.BO). Ce sont done les octets 
situes cntrc ccs deux adresses 
qu'il s'agira de traiter. Ce 
traitement se deroulera globa- 
lement ainsi : 

• lire les 2 premiers octets qui 
representee l'adresse de la 
prochaine ligne ; 

• lire les 2 suivants qui ne sont 
autres que le numero de la 
ligne; 

• puis etudier la suite de la ligne 
afin de trouver V ; 

• si on les trouve, marquer la fin 
de la ligne actuelle par un octet 
nul puis commencer une 
nouvelle ligne sur laquclle on 
mettra la suite ; 



• sinon, passer I la prochaine 

ligne. 

En cours de route, a chaque fois 
qu'on lira une nouvelle ligne de 
l'original, on memorisera son 
numero ainsi que celui de celle qui 
suivra. (N'oublions pas qu'il y a 
reimmerotation !) Avec un tel 
processus, on obtient le 
programme decrunche, mais sans 
que les GOTO, GOSUB etc. 
soient modifies. Une deuxieme 
passe s'impose alors ; il faut : 

• lire la ligne comme 
precedemment mais en 
cherchant tous les mots-cle 
susceptibles d'etre suivis par 
un ou plusieurs numeros de 
ligne; 

• identifier ce ou ces numeros et 
les rechercher dans la table 
construite precedemmenl ; 

• si on a trouve, echanger 
l'ancien numdro par le nouveau 
qui est issu de la 
renumerotation ; 

• sinon, il y a une erreur et on 
s'arrete ; 

• puis, si tout va bien, on passe 
a la prochaine instruction. 



II est alors utilisable, mais mieux 
vaut le sauver avant car, s'il 
empi£te sur la page graphique 1 eL 
qu'il l'utilise, gare aux 
problfemes ! 

Enfin, a titre d'exemple, voici un 
listing et sa representation en 
memoire : 

ID TEXT : HOME 
20 GOTO 10 

oaoo- oo 09 08 oa ou ay ja 97 

0808- 00 11 08 14 00 AB 31 30 
0810- 00 00 OO 

$801,802 radresse de la 
prochaine ligne 



28 



Pom's n° 23 



S803.804 : numero de ligne 

$000A = 10 
$805: token de TEXT 
$806 : : 
$807 : HOME 
$808 : fin de ligne 
$809.80A : adresse de la 

prochaine ligne 
$80B.8OC : numero de ligne 

$0014 = 20 
$8QD; token de GOTO 
$80E.80F : codes ASCII de 1 

($31) et de0($30) 
$810: fin de ligne 
$811,812 : fin de programme 

Le meme programme mais 



decninche s'ecrira ainsi : 

TEXT 

1 HOME 

2 GOTO 

800- 00 07 08 00 00 89 00 0D 
808- 08 01 00 97 00 11 08 02 
810- 00 Ad 30 00 UU UG 

$801,802: adresse de la 

prochaine ligne 
$803,804 : numero de la ligne 
$805 : token de TEXT 
$806 : fin de ligne 
$807,808 : adresse de la 

prochaine ligne 

$8O9.80A : numero de la ligne 



$80B : token de HOME 
$80C : fin de ligne 
$80D.80E: adresse de la 

prochaine ligne 
S80F.810 : numero de la ligne 
$811 : token de GOTO 
$812 : code ASCII de ($30) 
$813: fin de ligne 
$814,815 : fin de programme 

Les adresses des lignes suivantes 
et les numeros de lignes sont 
inscrits avec l'octet has suivi de 
l'octet haut. 

a 



Programme 

'DECRUNCHER DEMO' 



Programme 

'DECRUNCHER. S ' 

Assembleur Big Mac 



10 TEXT : HUME : INVERSE Z PRINT * D 

EMONSTRATION DE DECRUNCHAGE ": NO 

RMAL ; POKE 34,1 
20 PRINT "VOICI LE LISTING DE CE PR0GRAMM 

E:": PRINT : LIST 
30 VTAB 22: FLASH : PRINT " FRAP FEZ UNE T 

OUCHE POUR LE DECRUNCHER PUIS FAITES 

LIST POUR VOIR LE RESULTAT" / : GET R$ : P 

RINT : NORMAL 
40 POKE 34, O: PRINT CHR$ (4) "BRUN DECRUN 

CHER" 



Le meme programme, 

mais 'decrunche' 

TEXT 

1 HOME 

2 INVERSE 

3 PRINT " DEMONSTRATION DE DECRUNCtFA 
GE 

A NORMA f. 

5 POKE 34,1 

6 PRINT "VOICI LE LISTING DE CE PROGRAMME 

7 PRINT 

8 LIST 

9 VTAB 22 

1 FLASH 
1 2 PRINT 

RUNCHEK 
RESULTAT"/ 
12 GET R$ 
23 PRINT 

1 4 NORMAL 

15 POKE 34,0 

Pfi PRTNT CHR$ (4) "BRUN DECRUNCHER" 



FRAPPEZ UNE TOUCHE POUR LE DEC 
PUIS FAITES LIST POUR VOIR LE 



1 
2 
3 
4 
5 
6 
7 



LST ON 



ORG $9900 
OBJ $3000 



************ *VATRl CE'NEVEU * * * 



g * **** **************************** 

9 * DECRUNCHER J - 3 * 

10 * * 

11 
12 
hi 

11 » 

UNE INSTRUCTION PAR LIGNE 
SAUF APRES 'IF' 
RENUMEROTA TI0N DE 1 EN 1 

AVEC LES GOTO/GOSUB/RUN 

LIST /ON /DEL REMIS A JOUR 



15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 

26 ********************************* 

77 
28 
29 
30 
31 



SOURCE MAXIMUM; 14K 

640 LIGNES 
RESULTAT MAX, ; 18,25K 

64000 LIGNES 



32 


BASIC 


EQU 


S03D0 


33 


STXTPT 


EQU 


SD69 7 


34 


S TROUT 


EQU 


SDB3A 


35 


GET ADR 


EQU 


9E/52 


36 


AXFAC 


EQU 


SEBA0 


37 


FIN 


F.QU 


SEC 4 A 


38 


LINPTR 


EQU 


SED24 


39 


FOUT 


ECU 


SED34 


40 


CROUT 


EQU 


SFC62 


41 


DELL 


EQU 


SFF3A 


42 








43 


LIMITE 


EQU 


54000 



RETOUR A L' APPLESOFT 

MET TXTPTR A LA VALEUR DE 

tTXTTAB) -1 
SOUS -PROGRAMME D'AFFICHAGE 

D'UNE CHAWE 
FAC — > 2 OCTETS EN LINNUM 
A&X — > FAC 

NOMBRE FLOTTANT — > FAC PA 
R CF1RGET 

CONVERT I R ET Ab'b'ICHER X, A 
EN DECIMAL 

FAC — > CHAINS TIE CHTFFRE 
RETOUR CHARIOT 
BIP SONORE 

LES DEUX ZONES: S08O0.3FFF 



Horn's n° 23 



44 ESPACE 
15 

46 

47 LINADR 

48 TXTPTRS 

49 MJMPTR 
bO L1NIEN 
51 ONFLAG 



EQU $3800 



EOU 506 
EQU $09 
EQU SIB 
EQU 511) 
EQU S1E 



52 LISTFLAC EQU $2F 

53 LINNUM EQU S50 



54 TXTTAB 

55 LOMBM 

56 ARYTAB 

57 ST REND 

58 HOHO 

59 MOH 

60 PGREND 



EQU $67 

EQU 569 

EQU S6B 

equ san 

EQU $9E 

EQU S9F 

EQU $AF 



61 CHRGET EQU 5D1 

62 CHRGOT EQU SB 7 



63 TXTPTR 

64 D ELF LAG 

65 TEMPI 
■66 CHAINPTR 

67 REMFLAG 

68 IFFLAG 

69 ACC 

70 GU1LWLAG 



EQU $B8 
EQU $CE 
EQU $E9 
EQU SEE 
EQU $FC 
EQU $FD 
EQU SFF. 
EQU SFF 



71 
72 
73 
74 
75 
76 
77 
18 

79 

80 

ai 

82 
83 
84 
85 
86 
87 
88 
89 



90 IN IT 



CUILL 

DEL 

GOTO 

RUN 

IF 

GOSUD 

HEM 

ON 

LIST 

THEN 



EQU ?22 
EQU 385 
EQU Wfl 
EQU SAC 
FQU SAD 
EQU $BQ 
EQU SB2 
EQU S84 
EQU SBC 
EQU SC4 



* INITIALISE 



91 

92 
93 
94 
95 
96 

91 
98 
99 
100 
101 
102 



/S4000.4900 

ETENDUE DE LA 1ERE ZONE 



ADRESSE LIGNE C DURANTE 
SaUVEGaRDZ DE TXTPTR 
POINTEUR 

LONGUEUR NOUVELLE LIGNE 
mli ON XX, >=2: ON XX GOTO 
, =0 SINON 

- 2 SI LIST (XXXX J, SI NO 
N 

REGISTRE CONTENANT LE NUME 
R0 DE LIGNE 
DEBUT DO TFXTF P.ASTC 
DEBUT DE LA ZONE DBS VARIA 
BLES SIMPLES 

DEBUT ZONE DES TABLEAUX 
FIN DES TABLEAUX, DEBUT DE 

ZONE LIBRE 
2EME OCTET DE FAC 
JEME OCTET DE FAC 
ADRESSE DE LA FIN DU TEXTE 

DU PROGRAMME 
PREND LE PRO-CHAIN CARACTER 
E DU TEXTE 

PREND LE CARACTERE POINTS 
ACTUELLEMENT 

POINTEUR DE CARACTERE DANS 

LE TEXTE 
= 1 SI DEL XXXXX (, XXXXX), 

-0 SINON 
4 OCTETS (SFR.F.F.) , PARTTE 
DE CHRGET 

POINTEUR DS LA CHAINE DU N 
DE LIGNE 

=1 SI OW F.ST DANS UN REM, 
SrNON 

=1 SI ON EST DANS UN IF, 
SINON 

SAUVEGARDE DE L' ACCUMULATE 
UR 

-2 SI ON E5T DANS UNE CNAI 
NE, SINON 



TOKENS APPLESOFT 



LDY 0>EA 
LDX $3 

LDA $BE,X 

STA TEMPI, X 

STY $BE,X 
DEX 

BPL IN IT 
INX 

5TX GUILLFLAG 
STX IFFLAG 
STX REMFLAG 
STX ONFLAG 
STX LISTFLAC 
STX UZLFLAG 



SEA = NOP 

ON VA DONC MODIFIER CHRGET 

(ET CHRGOT) 
EN Y METTANT 4 NOP AFIN D ' 
EVTTER DE 

SAUTEK LES ESPACES DANS UN 
REM OU UNE 
CHATNF DF. CARACTERES. 



REMETTRE X=0 POUR L'INITIA 
LI SAT I ON 

DU DRAPEAU A CUILLEMETS 

IF 

REMARQUES 

ON XXXXX GQTQ/GQSVB 
LIST (XXXX r XXXX) 
DELETE XXXX (,XXXXf 



103 
104 
105 
10b 
107 

108 

109 
110 
111 

112 

113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
13? 
133 
134 
135 
136 

137 
138 
139 
140 
141 

142 

143 
144 
145 
146 
147 
148 
149 
ISO 
151 

152 

153 

154 
155 
156 
157 
158 

159 
160 
161 
162 
163 

164 

165 

166 

167 
168 
169 
170 
171 



STX LTNLEN 
STX LINNUM 
STX LINNUM*! 

LDA t>TABLE 

STA TABPTR*2 

LDA t<TABLE 
STA TABPTR+1 

LDX t$Q 



DE LA LONGUEUR DE LA LIGNl 
ET DE SON NUMERQ 



PREPARE LA TABLE OU SERON1 
RANGES LES 
ANCIENS NUMEROS DE LIGNE \ 
UIVI5 DES 
NOUVEAUX. , . 



NATS IL FAUT LA REMPLIR Dfl 
SFF AVANT: 



CLR 



LDA 

STA 
LDA 
STA 
LDA 
LDY 
STA 
INY 
BNE 
INC 
INX 
CPX 
BNE 



0<TABLE 

CLR+1 

t>TABLE 

CLR+2 

tSFF 

0SOO 

TA RTF., Y 

CLR 
CLR+2 

910 

CLR 



* SAUVE LE TXTPTR 



LDA TXTPTR 

STA TXTPTRS 

LDA TXTPTR*! 

STA TXTPTRS* 1 



VERIFIE SI LE PROGRAMME PF.llT 
ETRE DECRUNCUE 



LDA PGREND +2 

CMP t> LIMITS 
BCC BEGIN 



C'EST LE HAUT DE LA FIN Dl 
PROGRAMME 
DEPASSE LA LIMITS FIXEE 
NUN, UN PEUT Y ALLER. . . 



* ERREUR, IMPOSSIBLE A DECRUNCUE R 



LDY #>LENMSG 

LDA t<LENMSG 

JSR STROUT 

JSR BELL 

JMP HAOU 



LENMSG 



HEX 8D 
ASC -TEXTE TROP LONG" 
HEX QD00 



AFFICHER LB CHAPMAN T MESS, 
GE QUI SUIT: 
SUIVI D'UN BIP DE MAUVAIS 
AUGURE 

REMETTRE TOUT EN ORDRE AVJ\ 
NT DE SORTIR 

REVENTR A LA LIGNE 



* COMMENCE A DFCRUNCHFR 



BEGIN 



JSR STXTPT 

LDY TXTTAB 

STY TXTPTR2*1 

STY LINADR 

LDA TXTTAB*! 
CLC 

ADC 0>ESPACE 

STA TXTPTR2+2 

STA LINADR*! 



FIXE TXTPTR AU UEti'JT DU Pi 
OGRAMME -1 
ADDITIONNF. LA LONGUEUR DE 
L' ESPACE 
DISPONIBLE A L 'ADRESSE DE 
DEBUT DU 
TEXTE -> TXTPTR2 POUR CHR 
UT 

-> LINADR 



30 



Pom's n° 23 



172 
173 

174 
175 
1?C 
177 
178 
179 



JSR CURGET 

JSR CHRPUT 

JSR CURGET 
CLC 

ADC t>ESPACE 

JSR CHRPUT 



FREND £ STORE L'ADRESSE DE 

LA PROCHAINE 
LIGNE 



190 


LIGNE 


JSR 


CURGET 


PREND LE WTMFMO f)K LA LIGN 
E 


181 




ST A 


NUMPTR 


A ME TIRE DAN 5 NUMPTR POUR 










CUE LINTAB ET 






TSB 
UJt\ 




TTNPtTT 'S'FN tFRVENT 


193 




STA 


NUMPTR*! 




181 




JSR 


LI NT Ad 




195 


LIN 


JSR 


LIN PUT 




186 










197 


LINCHR 


JSR 


CHRGET 


PRENDRE UN CARACTERE 


188 




STA 


ACC 




189 




BEQ 


EOT 


EOI~FIN D' INSTRUCTION: '; 










FIN DE LIGNE 


190 


LTNCHRS 


TJ1A 


ACC 




291 




JSR 


CHRPUT 


METTRE LE CARACTERE POUR I. 










E RESULTAT 


192 




CMP 


iREM 




193 




BNE 


LINCHR6 


MAIS CE N'EST PAS UN REM.. 


194 




IDA 


11 


SINON IL FAUT SE LE SIGNAL 










ER 






STA 


REMFLAG 




196 


I INCUR 6 


CMP 


HF 




197 




BNE 


L INCUR 4 


SI CE N'EST PAS UN IE. . . 


198 




IDA 


toi 


AUTREMENT, LE SIGNALER 


199 




STA 


IFF LAG 




200 


L INCUR 4 


CMP 


iGUILL 




201 




BNE 


L INCUR 1 


SI CE N'EST RIEN DE TOUT C 










ELA 


202 




IDA 


GUILLFLAG 


SI PAS DE GUILLEMET (0) AL 










ORS DEVIENT 1 


203 




EOR 


§$01 


SI ON EST DEJA DANS UNE CH 










AINE (1) CA 


204 




STA 


GUILLFLAG 


DOIT DONC DEVEN1R 


205 


LINCHR1 


JMP 


LINCHR 


PASSE AU PROCHAIN CARACTER 
F. 


206 


BOX 


LDA 


ACC 


CETTE FIN D ' INSTRUCTION C 










EST QUOI ? 


207 




BNE 


DECRUNCH 


C'EST UN : ALORS CREER UNE 










AUTRE LIGNE 


208 




JSR 


EOL 


SINON C'EST UNE FIN DE LIG 










NE (00) 


209 




JMP 


BOL 




210 










211 


DECRUNCH 


LDA 


GUILLFLAG 


ST CE : F.TATT DANS UNE CHA 










INE, UN REM 


212 




BNE 


LINCHR 5 


OU UN TEST (IF) ALORS ON N 










E DOIT PAS 


213 




IDA 


REMFLAG 


DECRUNCHER SOUS PEINE DE C 










ATASTROPHE ! 


214 




BNE 


LINCHR 5 




215 




LDA 


IFFLAG 




216 




BNE 


LINCHR 5 




217 




LDA 


to 




218 




JSR 


EOL 


CALCULER ADR ESSE DE LA PRO 










CHAINS LIGNE 


219 




LDA 


LINADR 


QU'tL FAUT STOKER EN DEBUT 










DE 1A LIGNE 


220 




JSR 


CHRPUT 


ACTUELLE ET AUSSI A LA FIN 










POUR LA 


221 




LDA 


LINADR* 1 


PROCHAINE. . . 


222 




JSR 


CHRPUT 




223 










224 




INC 


LINNUM 


INCREMENTE LE NUMERO DE LI 










GNE 


225 




BNE 


DC1 


POUR FAIRE LA PROCHAINE. .. 


226 




INC 


LINNUM* 1 




227 


DC1 


JMP 


LIN 


VA LE STOCKER PUIS LIT LA 










LIGNE 


228 










229 SOL 


JSR 


CHRGET 


IL FAUT PRENDRE LES 2 PROC 



230 
331 
232 

233 

235 
236 

237 

238 
239 

240 
241 

242 
243 
244 
245 
246 
247 
248 
249 
250 
251 

252 

253 
254 
255 

256 
257 
258 
259 



tSULl 
FINI 



JSR 


CHRGET 


BEQ 


FINI 


LDA 


LINADR 


JSR 


CHRPUT 


LDA 


r TNAnR+i 


JSR 


CHRPUT 


INC 


LINNUM 


BNE 


BOM 


INC 


LINNUM <1 




LIGNE 


LDA 


ISO 


JSR 


CHRPUT 


JSR 


CHRPUT 


JSR 


CHRPUT 


JMP 


AJIISTF. 



MAINS OCTETS 

POUR SAVOIR SI ON A FINI 
CP QtJT PUT LE CAS ST A=00 
SINON ON REMPLACE CES 2 OC 
TETS 



( EN FAIT ICI, ON EST EN D 
ECRUNChAGE 1 

( MAI5 ON FAIT PAREIL QUE 
PRECED EMENT) 



METTRE 3 OCTETS NULS POUR 
MARQUER LA 

FIN DU TEXTE DECRUNCHE 



* C'EST DECRUNCHE, RENUMEROTE 



moo 



LDA t$00 

JSR CHRPUT 

JSR CHRPUT 
JSR CHRPUT 
LDA TXTPTRS 

STA TXTPTR 
LDA TXTPTRS*! 
STA TXTPTR+1 
LDX §3 



MAINTENANT QUE LES GOTO ET 

GOSUB SUNT 
MIS A JOUR, ON MARQUE LA F 
IN DU PROGR. 

QUI EST DORENAVANT TERMINE 

REMET LE TXTPTR TEL QU'ON 

L'A TROUVE 

AVANT DE DECRUNCHER 



ET RETIRER LES NOP POOR RF. 
METTRE CHRGET 



if- 




APPLE COMPUTER FRANCE 
recherche pour 
devcloppcr son Service Clientele, des 



SUPPORTS TECHNIQUES 

• Possedant une rres bonne connaissantc de la 
micro-lnformatique. 

• Capables de proposer des solutions utilisant les produits 
APPLE. 

• Ayant le sens du service et de la communication. 

• Disponibles rapidemcnt pour rejomdre Apple Computer 
France au siege des ULIS. 

• Connaissance technique du materiel, langages de pro- 
srammation, telecommunications souhaitee. 



Merci d'adresser leure manuscrite, C.V. 

et pretentions (sous ret D 1231) a ; 

Jean-Luc FARAT 

APPLE COMPUTER FRANCE 

Avenue de POceanie 

Z.A. deCounabauf-B.P. 131 

91944 LES ULIS Cedex. 




Pom's n° 23 



31 



A JUSTE LES GOTO / GOSVB 



260 FIN I J 
261 
262 
26 3 
264 

265 
366 
267 
268 
269 
270 
271 
272 
273 
274 
275 
276 
277 

278 * 

779 

280 * 

281 

282 AJUSTE 

283 

281 

285 

286 

287 

288 
289 

290 
291 
2.92 
293 

294 COPY LIN 

295 

296 

297 
298 

299 

300 
301 
302 

303 
304 
305 
306 

307 CHRCHGO 

308 

309 

310 

311 

312 

313 

314 CHRCHGOO 



LDA 


TEMPI, X 


A SON ETAT D ' ORIGINE 


327 




CMP 


HIST 


STA 


SBE f X 




328 




BNE 


CHRCHG03 


DEX 






329 




INC 


LISTFLAG 


BPL 


FINI1 




330 




BNE 


CHRCHGO 


LDA 


TXTPTR2+1 


ET FIXE DIFFERENTS POINTEU 


331 


CHRCHG03 


CMP 


9DEL 






RS 


332 




RNF 


amtBG04 


STA 


PGPEND 




333 




INC 


D ELF LA C 


STA 


LOMEM 




334 




BNE 


CHRCHGO 


5TA 


ARYTAB 




335 


CHRCHG04 


CMP 


/THEN 



STA STREND 

LDA TXTPTR2+2 

STA PGREND*! 

STA LOMEMtl 

STA ARYTAB* I 

STA STREND* 1 
P7A 
PLA 

JMP BASIC 



HOP, C'EST FSN1 



LDX 00 

STX LINIJW 
STX TXTPTR 
TNX 

STX TXTPTR2*! 
STX h IN ADR 

LDA TXTTAD+1 
STA TXTPTR2*2 
STA LINADR+1 
LDA f>LIMITE 
STA TXTPTR*] 

JSR EOLO 

JSR CHRGET 

JSR CHRPUT 

JSR CHRGET 
BEQ UAOU 

SBC 

SBC §>ESPACE 
JSR CHRPUT 
JSR CHRGET 

JSR CHRPUT 
JSR CHRGFT 
JSR CHRPUT 



LDX 
CPX 
BCS 
LDX 
ONE 
LDX 
BNF. 
JSR 



ONFLAG 
92 

GOFOUND 

LISTFLAG 

TESTNUM 

DELFLAG 

GOFOUND T 

CHRCET 



315 CHRCHGO 1 JSR CHRPUT 



316 

Jl / 
318 
319 
320 
321 
322 

323 
324 
325 

326 



CHRCHG02 



BEQ COP Y LIN 

CMP iON 
BNE CHRCHG02 
INC ONE LAG 
BNE CHRCUGOO 
CMP tGVTV 
BEQ GOFOUND 

CMP 0GOSUB 
BEQ GOFOUND 
CMP tRVN 

BEG TESTNUM 



INITIALISE: 

IJ\ T.ONGUEUR DE LA LIGNE 
LE POINTEUR SOURCE 

LE POINTEUR RESULTAT 

L 'ADRESSE DE LA LIGNE EN C 

OURS 



CALCULE ADR. LIGNE QUE L'O 
N COMMENCE 

PRENDRE L 'ADRESSE DE LA LI 

GNE SUIVANTE 

ET LA STQCKER COMPSE RESULT 
AT 

SI LA PARTIE HAUTE EST NUL 
LE C'EST FIN1 

SINON CE RESULTAT COMMENCE 
EN 50800 



CE5T AU TOUR DU NUMERO DE 
LIGNE 
CONTENU EN 2 OCTETS 



ON RECOPIE LA LIGNE EN REC 
MERCHANT UN 

SAUT (GOTO / GOSUB OU THEN 
XXXXX) 

00 S1GN1FIE UNE FIN DE LIC 
NE 



GOTO: TRAITEMENT SPECIAL D 
E LA SUITE 

GOSUB EGALEMENT 

LE RUN (XXXXX) EST TRAITE 

CO/WE UN THEN 



316 



337 
JJ8 *- 



BNE CHRCHGO 



QUAND AU THEN, PEUT-ETRE . . 

CE N'EST RIEN DE TOUT CELA 
i CONTINUER 



339 * POUR LE THEN IL FAUT UN NUMF.RO 

3 40 * 

341 



342 TESTNUM JSR CHRGET 



CMP ISIfl 

BCC CHRCHG02 
CMP 053 A 
BCS CHRCHGOl 
BCC GETEND 



ON PREND LE CARACTERE SUIV 
ANT LE THEN 

ASCII INFERIEUR AU CODE DE 


AU QUEL C'Ai' UN CONTINUE DE 

COPIER. . . 
SINON PEUT-ETRF. F.ST-CF. SUP 
ERIBUR A 9 ? 

ET ALORS ON COPIE BETEMENT 

LA SUITE 
SINON ON TRITURE LE NUMERC 
DF LIGNE !! 



343 
344 
345 
346 
347 
348 

349 * 

350 ' POSIT IONNE SUR LE NUMERO 

351 * — 

352 

353 GOFOUND INC ONFLAG 

354 GOFOUND1 JSR CHRGET POUK LES GOTO / GOSUB (ET 

ASSIMILES) 

355 

357 * TRANSFORMS LA CHAINS EN 2 OCT. 
J5ff 

359 

360 GETEND EQU * 

36 1 JSR FIN GRACE A CHRGET ON CHARGE D 

ANS fAC LE NO 

3*2 JSR GET ADR PUIS ON LE TRANSFORMS EN 2 

OCTETS 

363 

364 * 

365 - FAIT L ' ECHANGE 

3S6 * 

367 



369 

370 



371 
J/2 

373 IDENTIFY LDY iO 



LDA §>TABLE 

STA NUMPTR+1 
LDA i STABLE 
STA NUMPTR 



ON SE PLACE AU DEBUT DE LA 

TABLE OU 
SONT RANGES LES ANCIENS NC 
MEROS DE 

LIGNES ET LEURS REMPLACANT 



174 

375 

376 

377 
378 

379 

380 

1R1 

382 



LDA (NUMPTR) , Y LE BAS DU VIEUX NUMERO DE 

LA TABLE EST 
CMP LINNUM COMPARE A CELUI QU'OhJ RECH 

ERCHE 

BNE NEXTIDO SI CE N'EST PAS LE MEME, A 
U SUFVANT • 

INT 

LDA (NUMPTR) , Y PUIS ON PASSE AU HAUT DU N 
UMERQ 

QUI DOIT ETRE INF. 249*256 
f255 - 63999 

SI C'EST PLUS ALORS ERREUR 



CMP 9250 
BCS GOERR 
CMP LINNUM*! 
BEQ CHANGE 



383 

384 NEXTIDO EQU " 



SINON ON COMPARE AU HAUT R 
ECHERCHE 

ET ON LE CHANGE 51 C'EST T 
ROUVE 

UN PASSE AU NUMERO 5UIVANT 



32 



Pom's n° 23 



385 
386 

387 NEXT ID 

389 

389 

390 
392 

392 

393 NEXTEND 



CMP tSFF 

BEQ GOERR 

LDA NUMPTR 

CLC 

ADC t4 

ST A NUMPTR 
BCC NEXTEND 

INC NUMPTR* 1 
JMP IDENTIFY 



DE LA TABLE 

DES SFF STCNALFNT LA FTN n 
E LA TABLE 

ALORS LE NUMERO N 'EST PAS 

TROUVE, ERR ! 

AUTREMENT, ON VA 4 OCTETS 
PLUS LOIN 

POUR TRQUVER UN NOUVEAU NU 
MERO 

I 2 POUR L'ANCIEN + 2 POUR 
LE NOUVEAU ) 

PAS DE RETENUE POUR L'ADDI 
TION 

5INON, EN TENIR COMPTE 

ET CA REPART POUR UN TOUR. 



394 

39b * 

396 * ERREUR, UN NUMERO DE LIGNE QUI 

397 * EST APPELF. N'EXTSTE PAS 

399 * 

399 

LDY t>GOMSG 



400 GOERR 

401 
402 
403 



LDA tfGCMSG 
JSR 5TROUT 
LDA LINNUMtl 



AFFICHER UN IGNOBLE MESSAG 
E D 'ERREUR 



UN PRENU LE NUMERO DE L1CN 
E RECHERCHE 



POUR L 'AFFICHER 

PUIS ON PASSE A LE LIGNE 

AVEC UN BIP AGACANT 



HEX BD 

ASC -PAS DE LIGNE 
HEX 00 



404 LDX L TNNIIM 

405 JSR LINPTR 

406 JSR CROUT 

407 JSR BELL 

408 JMP WAOU 
409 

410 GOMSG 
411 
412 
413 

414 * 

425 * ICI 3 ' EFFECTUE LE CHANGEMENT DE 
416 • NUMERO DE LIGNE 

427 * 

418 

410 CHANGE INY ON FQINTE DANS LA TABLE SU 

R LE NUMERO 

420 LDA (NUMPTR) , Y TROUVE APRES GOTO/GOSUB DO 

NC ON 

421 STA MOH POURSUIT EN PRENANT LE NOU 

VEAU QUI EST 

422 IN J 1SSU DE LA REN UME ROTATION 

ET ON LE MET 

423 LDA (NUMPTR) , Y DANS FAC. 

424 STA HOHO 
425 

426 * 

427 * TRANS FORME LE NUMERO EN CHAINE 

428 ' 

429 

430 LDX t$90 CECI EST PHESQUE UN LINPTR 

( SED24) 

431 SEC CAP CA COMMENCE PAREIL, 

432 JSR AXFAC 

433 JSR FOUT 

434 STY CHAINPTR*! MAIS CA N'AFEICHE PAS FAC 

i 

435 STA CHAINPTR 

436 LDY tO 

4J/ WRITENUM LDA (CHAINPTR) , YPRENDRE LA CHAINE REPRE5EN 

TANT LE 



438 
439 

440 

441 
442 

443 WK1 TEND 



BEQ WRIT END 
JSR CHRPUT 
INY 

BNE WRITENUM 
JSR CHRUUT 
JSR CHRPUT 



NOUVEAU NUMERO, ET L'TNCT.U 
RE DANS LE 

PROGRAMME DECRUNCHE APRES 
LE GOTO 

LE GOSUB OU ENCORE LE THEN 



PUIS IL t'AUT LIRE LE DERN1 
ER CARACTERE 

LU A PURS !£ NOMRftF. FT N? r 



44* 
446 

447 

448 
449 

450 
451 
452 
453 
454 

455 



BF.Q WRTTENDl 

JMP CHRCHGO 
WRIT END 1 EQU * 

JMP COPYLIN 



OPJER 

SI C'EST UN -> FIN DE LI 
GNE 

SINON, SUITE DE LIGNE, . - 



■ SOUS-PKUUKAMMEZ 



ECL 



EOL1 



456 FOT.O 

457 
458 
459 
460 
461 



462 

463 
464 
465 
466 
467 
469 

469 
470 
477 
472 
473 
474 
475 

47G 
477 

478 

4 79 
480 

481 
482 

483 
484 
485 
486 
487 
488 

489 

490 

491 

492 
493 
494 
495 

496 
497 
498 
499 
500 

501 

502 
503 
504 



EQU * 

JSR CHRPUT 

IDA LTNADR 

LDX LINADR* 1 
LDY tO 
CLC 

ADC LINLEN 
STA (LINADR) , Y 

BCC EOL1 

INX 
TXA 
INY 

STA (LIN ADR) , Y 

LDA (LINADR) , Y 

TAX 
DEY 

LDA (LINADR) r Y 
STA LINADR 
STX LINADR* 1 



LDY §0 

STY LINLEN 
STY ONFLAU 

STY LTSTFL AG- 
STY DELFLAG 
STY GOILLFLAG 

STY IF FLAG 
STY REMFLAG 



RTS 



LINPUT 



LDA LINNUM 

JSR CHRPUT 

LDA L1NNUM*1 
JSR CHRPUT 
PTS 



END OF LINE CALCULE L'ADRE 
SSE DE LA 

LIGNE SUIVANTE EN ADDITION 
NANT LA 

LONGUEUR DE LA LIGNE ACTUE 
LLE ET SON 
ADRE55E DE DEBUT 



LE RESULTAT EST REM IS DANS 

LE PROGRAMME 
POUR CONSERVER SA COHERENC 
E 



CECI SERVIRA A LA LIGNE SU 
IVANTE 



ON VA RECOMMENCER UNE LIGN 
E DONC: 

LONGUEUR DE LA LIGNE - 
ON XXXX GOTO/GOSUB EST TER 
MINE 

LIST XXXXX,XXXXX F.fZA TF.MF.NT 

, AINSI QUE 

DEL XXXXX,XXXXX 

LA CHAINE DE CARACTERE ENT 

RE GUILLEMETS 

LE TEST AVEC IF 

LE REM OU IL NE FALLAIT RI 

EN CHANGER 



CHRPUT EOU * 
CLC 

TXTPTR2 STA ?400O 
INC LINLEN 

INC TXTPTR2+1 
BNE CHRPUTEND 
INC TXTPTR2*2 
CHRPUTEND TAX 

RTS 



CETTE ROUTINE EFFECTUE LPi 

TACHE OPPOSEE 

A CELLE DE CHRCET, A SAVOI 
R REMETTRE UN 

OCTET PRIS PAR CHRCET, DAN 
S LE RESULTAT 

EN MET TANT A JOUR LA LONGU 

EUR DE LA 

LIGNE. 



CECI POUR CONSERVER LE REG 
ISTRE D'ETAT 



STOCKE LE NUMERO DE LA LIG 
NE ACTVELLE 

EN 2 OCTETS MIS EN LINNUM 
($50.51) 



Pom's n° 23 



bOb 
506 
507 

506 LI NT AD 
509 



510 
511 
512 
523 

514 

515 
516 



LDA NUMFTR 



JSR LINTOTAB 



LDA NUHPTR+1 
vJSR LINTOTAB 



lda li mm 



JSR LINTOTAB 



LDA LINNVM+1 
JSR LINTOTAB 



PRENDRE LE NUMERO DE LIGNE 

ORIGINAL POUR LE METTRE DA 
NS I A TABLE 



ET LE FAIRE SUIVRE DU NOUV 
EAU NUMERO 

QU'IMPLIQUE LA RENUMEROTAT 

TON LOR5 DU 

DECRUNCHAGE 



517 
513 

519 LINTOTAB 
570 TARPTR 
521 

522 
523 

524 LNTTABEND 
525 

526 '======== 

527 
526 
529 
530 
531 



RT2 

CLC 
STA 
INC 



TABLE 
TABPTR*! 



BNE LNTTABENU 
INC TABPTR+2 



IL FAUT BIEN-SUR FAIRE EVO 
LUER LE 

PU1NTEUR (TABPTR) 



TABLE DE CONVERSION DES LIGNES 
COMMENCE ICI 



TABLE, 



EQU 



Recapitulation 
'DE CRUNCHER 9 

Apr&s avoir saisi ce code sous 
moniteur, vous le sauvegarderez par 
BSA VE DECRUNCHER,A$890Q,L$2DD 



8900- 


A0 


EA 


A2 


03 


B5 


BE 


95 


EB 


8908- 


94 


BE 


CA 


10 


F7 


E8 


66 


FF 


8910- 


86 


FD 


86 


FC 


86 


IF 


fifi 


IF 


6918- 


86 


CE 


86 


ID 


86 


5 


66 


51 


8920- 


A9 


SB 


8D 


D3 


8B 


A9 


DD 


8D 


8920- 


D2 


8B 


A2 


00 


A9 


DD 


8D 


3B 


8930- 


89 


A9 


8B 


8D 


3C 


89 


A9 


FF 


8938- 


AO 


00 


99 


DD 


8B 


C8 


DO 


FA 


8940- 


EE 


JC 


89 


Eit 


E0 


OA 


DO 


F2 


8948- 


AS 


B8 


fl5 


Off 


AS 


B9 


85 


09 


8950- 


A5 


BO 


C9 


40 


90 


IF 


AO 


89 


8958- 


A9 


€3 


20 


3A 


DB 


20 


3A 


FF 


8960- 


4C 


28 


OA 


QD 


D4 


C5 


D8 


D4 


8968- 


C5 


AO 


D4 


D2 


CF 


DO 


AO 


CC 


8970- 


CF 


CE 


C7 


8D 


00 


20 


97 


D6 


89/8- 


A4 


67 


8C 


A2 


8B 


84 


06 


A5 


8980- 


68 


18 


69 


38 


8D 


A3 


8B 


85 


8988- 


07 


20 


Bl 


00 


20 


AO 


BB 


20 


8990- 


Bl 


00 


IB 


69 


38 


20 


AO 


8B 


0998- 


20 


Bl 


00 


85 


18 


20 


Bl 


00 


89A0- 


85 


19 


20 


BB 


8B 


20 


BO 


8B 


89A8- 


20 


Bl 


00 


85 


FE 


FO 


22 


A5 


89B0- 


FE 


20 


AO 


8B 


C9 


B2 


DO 


04 


8998- 


A9 


01 


85 


FC 


C9 


AD 


DO 


04 


89C0- 


A9 


01 


85 


FD 


C9 


22 


DO 


06 


89C8- 


A 5 


FF 


4 9 


01 


AS 


FF 


4C 


AS 



89D0- 


89 


A5 


FE 


DO 


06 


20 


70 


BB 


B9DB- 


4C 


FF 


89 


A5 


FF 


DO 


DO 


A5 


89E0- 


FC 


DO 


CC 


A 5 


FD 


DO 


C8 


A9 


G9E6- 


00 


20 


70 


SB 


A5 


06 


20 


AO 




8B 


A5 


07 


20 


AO 


8B 


E6 


50 


39F8- 


DO 


02 


E6 


51 


4C 


A5 


89 


20 


8A00- 


Bl 


00 


20 


Bl 


00 


FO 


13 


Ab 


8A08- 


06 


20 


AO 


8B 


A5 


07 


20 


AO 


8A10- 


8B 


E6 


50 


DO 


02 


E6 


51 


4C 


8A18- 


98 


89 


A9 


00 


20 AO 


8B 


20 


8A20- 


AO 


8B 


20 


AO 


BD 


4C 


5F 


8A 


8A28- 


A9 


00 


20 


AO 


8B 


20 


AO 


8B 


8A30 


20 


AO 


8B 


AS 


08 


85 


B3 


A5 


8A38- 


09 


85 


B9 


A2 


03 


B5 


EB 


95 


8A40- 


BE 


CA 


10 


F9 


AD 


A3 


8B 


85 


8A48- 


At' 


85 


69 


85 


6B 


85 


60 


AD 


8AS0- 


>V? 




85 


BO 


85 


6A 


85 


6C 


8A58- 


85 


6E 


68 


68 


4C 


DO 


03 


A2 


8A60- 


00 


86 


ID 


86 


B8 


E8 


8E 


A2 


8AC8- 


BB 


86 


06 


A5 


CO 


OD 


A3 


OB 


8A70- 


85 


07 


A9 


40 


85 


B9 


20 


73 


8A78- 


8B 


20 


Bl 


00 


20 


AO 


8B 


20 


8A80- 


Bl 


DO 


FO 


A4 


38 


E9 


38 


20 


8A88- 


AO 


8B 


20 


Bl 


oo 


20 


AO 


8B 


8A90- 


20 


Bl 


00 


20 


AO 


8B 


A6 


IE 


8A98- 


E0 


02 


BO 


45 


A6 


IF 


DO 


34 


8AA0- 


AC 


CE 


DO 


3F 


20 


Bl 


00 


20 


8AA8- 


AO 


8B 


FO 


CA 


C9 


B4 


DO 


04 


8AB0- 


E6 


IE 


DO 


FO 


C3 A3 


FO 


29 


8AB8- 


C9 


BO 


FO 


25 


C9 


AC 


FO 


14 


8AC0- 


C9 


BC 


DO 


04 


E6 


IF 


DO 


CE 


8AC8- 


C9 


8b 


DU 


04 


Eb 


CE 


DO 


Cb 


8ADO- 


C9 


C4 


no 


C? 


20 


RJ 


00 


C9 



8AD8- 


30 


90 


CC 


C9 


3A 


BO 


C8 


90 


8AE0- 


05 


E6 


IE 


20 


Bl 


00 


20 


4A 


8AE8- 


EC 


20 


52 


E7 


A9 


8B 


85 


19 


8AF0 


A9 


DD 


85 


18 


AO 


00 


Bl 


18 


8AF8- 


C5 


50 


DO 


OB 


C8 


Bl 


18 


C9 


8BO0- 


FA 


BO 


16 


C5 


51 


FO 


33 


C9 


8BV8- 


FF 


FO 


0E 


A5 


18 


18 


69 


04 


8B10- 


85 


18 


90 


02 


F.6 


19 


4C 


F4 


8B18- 


BA 


AO 


8B 


A9 


30 


20 


3A 


DB 


8B20- 


A5 


51 


AS 


50 


20 


24 


ED 


20 


8B28 


62 


FC 


20 


3A 


FF 


4C 


28 


8A 


8B30- 


8D 


DO 


CI 


D3 


AO 


C4 


C5 


AO 


8B38- 


CC 


C9 


C? 


CE 


C5 


AO 


OO 


C8 


8B40- 


Bl 


18 


85 


9F 


C8 


Bl 


IS 


85 


8B48- 


SE 


A2 


90 


38 


20 


AO 


EB 


20 


BB50- 


34 


ED 


84 


EF 


85 


EE 


AO 


00 


8B58- 


Bl 


EE 


FO 


06 


20 


AO 


8B 


C8 


BDC0- 


DO 


F6 


20 


D7 


00 


20 


AO 


8B 


8B68- 


FO 


03 


4C 


96 


8A 


4C 


76 


8A 


8B70- 


20 


AO 


83 


A5 


06 


A6 


07 


AO 


8B78- 


00 


18 


65 


ID 


91 


Ub 


90 


Ul 


8B80- 


E8 


8A 


ce 


91 


06 


R7 


06 


AA 


8B88- 


88 


Bl 


06 


85 


06 


66 


07 


AO 


5S90- 


00 


84 


ID 


84 


IE 


84 


IF 


84 


BD98- 


CE 


84 


FF 


84 


FD 


84 


FC 


60 


8BA0- 


18 


8D 


00 


40 


E6 


ID 


EE 


A2 


8BA8- 


BB 


DO 


03 


EE 


A3 


8B 


AA 


60 


8B&Q- 


A5 


50 


20 


AO 


8B 


A5 


51 


20 


8BBB- 


AO 


8B 


60 


AS 


18 


20 


no 


RP, 


8BC0- 


A5 


19 


20 


DO 


SB 


A5 


50 


20 




DO 


8B 


A5 


51 


20 


DO 


8B 


60 


8BD0- 


18 


8D 


DD 


8B 


EE 


D2 


OB 


DO 


8BD8- 


03 


EE 


D3 


8B 


60 










a 



o 
□ 




Jacques Supernant 



Apple J[+, //e, J/c 



Ce moniteur autorise un contrSle de TexScution des routines en langage machine 



Un 
par 



mode Trace et Pas a Pas tres cVoluds ct s61ectifs sont completes 
un acces direct aux regislres du 6502 (ou 65C02). 



I 



La gestion des fenetres d'dcran simplifie le mode trace. 
Une routine permel la recherche de suites d'octets. 



> 



Un mini-assembleur tres souple lait partie de Max. 

Une ligne de commande peui devenir une boucle avec l'ordre JUMP 




Disquette et 
documentation : 

150,00 FTTC 
franco . Bon de 

commande 
page74. 



Pom's n° 23 



YvanKoenig 



Un desassembleur 65C02 



Le problfcme : Vous 
disposez d'une routine 
binaire congue pour 
T Apple lie ou lc nouvel 
Apple //e. Pour l'adapter k votre 
machine, depourvu du 65C02, le 
listing disassemble est indis- 
pensable. Comment l'obtenir ? 

Jusqu'k present, nous ne 
disposions que du dcsassemblagc 
manuel & l'aide de la liste des 
codes, solution lente et source de 
nombreuses erreurs ; un nouveau 
desassembleur devenait done 
indispensable. 

Le programme ci-dessous vous 
permettra de franchir sans 
difficulte la premiere partie de 
votre travail : on copie en RAM le 
moniteur et on le modifie pour 
qu'il s'ouvre aux STZ, TRB et 
autres INA. Le fichier * CODEC 
n'est qu'un exernple. 

3 



Source 

'DESASM/RAM.S' 

Assembleur Big Mac 



2 ***»»»*«*J»ll»iHI»t**«.»*«t»»»»* 

3 * 

4 * APP1.F. rr nF-SASSEMBLEVR 65C02 

5 * 

6 » Version RAM. 

7 * 

8 * par Y.XOENIC 
* le 11/03/35 

10 * 

11 '■ 

12 ' 

13 ' 

14 ' 

15 * 

16 » 

17 ' 

18 ' 
29 « 

20 » 

21 * 

22 * 
?1 » 
24 
25 

2C ORQ S603 

27 

26 LOCO - SO 

29 LENGTH « S2F 

30 AIL = 



Ce programme cople le MONITEUR 
en RAM et le modlfle en 
s'lnsplrant du MONITEUR //c 
afln de permettte de 
disassembler Jes codes du 65C02 

Ctrl Y bascule d'un moniteur 

a 1 'autre. 
Le d&sassemblaoe se fait alors 

avec la syntax* hableuelle. 



• 1 
SJD 



31 


A2L 




f3E e3F 






106 




BPL 


LOOPS cople lc PA 


32 


A4L 




$42 S43 










TORE dano WHXTB 


33 


ACC 


_ 


445 






107 








34 


« 










108 




LDX 


9N>FAU6 miCADR- 1 


35 


CTRL YV 




33F8 






109 


LOOPC 


LDA 


HHEADR, X 


36 


4 










HQ 




STA 


HEADR, X 


37 


MS LOT 




S7F8 






111 




DEX 




38 












112 




BPL 


LOOPb cople la ca 


39 


FMT1 




SF962 










ble 


dans HEADR 


40 


FIXSEV 




SFA9B 






113 








41 


.VX79VT 




SFAC? 






114 




LDX 


4N3C2-NF8AF-1 


42 


RDSPl 


= 


SFAE4 






115 


LOOP7 


LDA 


NF8AF, X 


$$ 


DISK ZD 


m 


SFATF 






116 




STA 


SF8AF, X 


44 


HEADR 


m 


$FCC9 






117 




DEX 




45 


NNENOP 




HEADR* 1 






118 




BPL 


LOOP7 cople 2 Ins 


46 


PRBYTE 




SFDDA 










t ructions 


47 


MOVF. 




$ff?c 






119 








f| 


US TTF. 




SFF.rJi 






120 




BIT 


SC082 protege la 


40 
















RAM 




50 




BIT 


4C081 






121 








51 




BIT 


$C081 pour icrlre 


122 




LDA 


i<$3C2 






en 


RAM 






123 




STA 


CTRL YV ' 1 


52 




IDA 


4$FF 






124 




LDA 


4>$3C2 


53 




ST A 


A2L 






125 




STA 


CTRL YV*2 Initialise 


54 




ST A 


A2L*1 










Ctrl Y 


55 




LDA 


tPSDOOO 






126 




LDX 


4riN-N3C2~l 


56 




ST A 


AlL*l 






127 


LUUfB 


LDA 


H3C2, X 


5 / 




ST A 


A4L*1 






•28 




STA 


$3C2,X 


58 




LDY 


4<$D000 






129 




DEX 




59 




STY 


AIL 






130 




BPL 


LOOPS 


so 




STY 


A4L 






131 




JMP 


S3D0 jC'est flnl 


61 




JSR 


MOVE cople J 


& 


mo 














nlteur et applesoft en 


RAM 


132 








62 












133 


NFMT1 


HEX 


OF22FF33CB62FF730322FF 


63 




LDA 


i$C9 










33CB66FF77 


64 




ST A 


SFFF3 annule 


Nrlt 


134 




HEX 


0P2 0FF33CB 6 OFF 7 0F22FF 






f 












3QCR66FP7n 


65 




STA 


SFFFS annule 


Read 


135 




HEX 


0B22FF3 3 CBA 6FF 7311 22FF 


66 




LDA 


i$B2 










33CBA6FT87 


67 




STA 


Sftdc 






136 




HEX 


01 22FF33CB 60FF700122FF 


6B 




STA 


STTDE 










33CB60FF70 


69 












137 




HEX 


2431C570 


70 




LDA 


4$B9 






138 


FHT2 


HEX 


0Q218182594D9192664AB5 


71 




STA 


SF919 










9D495A 


72 




LDA 


4SB3 






139 


* ATTENTION, 


astuce Apple, CHAH2 com 


73 




STA 


SF91F 










pie 


Ce FMT2 


H 












140 


CHAR2 


ASC 


my* 


75 




LDX 


43 






141 




3RK 




76 




LDA 


4SEA 'NOP ' 






142 




ASC 


"KSS* 


77 LOOP1 


STA 


$F895 r X 






143 




BRK 




78 




DEX 








144 


CHARl 


ASC 


',),*($* 


79 




BP I 


LOOP I depose 


4 


NO 


145 












P 








146 MNEML 


HEX 


1C8A1C235D8B1BA19D8A1D 


80 
















?1<H)HRlnA\ 


81 




LDA 


44FC 






147 




HEX 


1C291 9AE69AS192324531B 


82 




STA 


SF6A6 










23245319A1 


83 












148 




HEX 


AD 1ASBSBAS 692424AEAEA8 


94 




LDX 


4HF9AF-HFAF4 - 1 










AD298A7C8B 


95 


LCOF2 


LDA 


NFAF4, X 






149 




HEX 


1S9C6D9CAS6929S3S41374 


86 




STA 


SFAF4, X 










11A 


f j6923A0 


87 
88 




DEX 
tifL 


LOOP2 






150 
151 


t 
t 






89 












252 MNEMR 


HEX 


D8 625A48266294885444C8 


90 




LDX 


4NFAF 4-NFAB b-1 










54 6844E894 


91 


LOOP3 


LDA 


NFAB6, X 






153 




HEX 


C4B4088474B4286E74F4CC 


92 




STA 


$FAB6, X 










4 A 72F2 


93 




DEX 








154 




HEX 


A4 8A06AAA2A27474 74 724 4 


94 




BPL 


LOOP 3 










68B232B272 


95 












155 




HEX 


22721A1A2626727288C8C4 


96 




LDX 


4NHRITE-NFMT1 










CA2 6484 444 


97 LOOP4 


LDA 


NFMTl-l,X 






156 




HEX 


A2C8 


98 




STA 


FMT1-1,X 






157 








99 




VEX 








158 








100 




BN£ 


LOOP4 copie la 


net 


159 


* A cecoplec 


en WRITE 






uvellc cable 






160 


WRITE 


RT3 




101 












161 


PATCHE 


AND 


43 


102 




LDX 


4NIIEADR ~ HhfR I TE 1 






162 




STA 


LENGTH 


103 


LOOPS 


LDA 


mmiTE,x 






163 


DECCBNEtt 


trA 




104 




3TA 


WRZTK , X 






164 




LDX 


422 


105 




DEX 








16$ 


QECOQU 


CMP 


toustm, x 



Pom's n° 23 



35 



166 


3EQ 


DECQD1 






i «;7 
10/ 


Utin 








1 DO 


BPL 


DECODO 






j Of 


f\ J Si 








i "7/1 nr/"in 7 




NNE HOP 4 HE WOP 0-HE 9fOP , X 


i /J 


LDY 


to 






I 77 
I M 


DTC 








i /J 










I ih NLr/tAt H 


LDA 


ACC*5i X 






? 7fl 


JftR 


PRR yrr 






27* 


INX 








177 


BUT 


-•;:,''t;: ; 






179 


RTS 








170 TORDSPl 


JHP 


RDSPl 






1BQ 










1B1 * A recoplec 


en tlElADP 






182 SHE ADR 


UTS 








1B5 NEWOP 


HEX 


** 






2S4 


HEX 


ii 


TRB 




105 


HEX 


in 


£HA 




186 


HEX 


1C 


TRB 


3DS 


18? 


HEX 


7? 

j£ 


s«m 
r\iiU 


z r 


188 


HEX 


34 


BIT 




189 


HEX 




DEA 




190 


HEX 


3C 


BIT 


abs, X 


191 


HEX 


52 


EOR 


fzp; 


192 


HEX 


5A 


PHY 




193 


HEX 


64 


STZ 


zp 


194 


HEX 


72 


ADC 


zp 


195 


HEX 


74 


STZ 


ZP,X 


f 96 


HEX 


7A 


PLY 




1 97 


HEX 


7C 


■IMP 


flhs (X) 


199 


HEX 


B9 


BIT 


Sim 


199 


HEX 


92 


STA 


Up) 


200 


HEX 


9C 


STZ 


jbs 



2U1 HEX VE STZ aOS, X 

202 HEX 82 IDA (zpf 

203 HEX D2 CMP (zpj 

204 HEX F2 SBC Up} 

205 HEX FC INVAL IDE -> 







JO 


207 


HEX 


FB 


208 


HEX 


3 " 


209 


HKX 


r H 


210 


HEX 


39 


211 


HEX 


21 


212 


HEX 


36 


213 


Il£X 


21 


214 


HEX 


3A 


21S 


HEX 




216 


HEX 


i"A 


217 


HEX 


3B 


218 


HEX 


FA 


219 


HEX 


F9 


220 


HEX 


22 


221 


HEX 


21 


222 


HEX 


3C 


223 


HEX 


FA 


224 


HEX 


FA 


225 


HEX 


3D 


226 


HEX 


3E 


227 


HEX 


3F 


228 


HEX 


FC 



229 

230 HEUSLCCP DEC LCCQ*-1 

231 LDA LOCC+1 

232 CMF t$CQ 

233 BEQ TOriXSEV 

234 STA tiSLOT 



235 




JMP 


HXTB YT 


11 £ 


TOriXSEV JMP 


FfXSEV 


ZJ l 








110 
£3 


* A recoplec 


en SFAB6 


ii a 


NFAB6 


BNE 


FABE 


7 A fi 




HEX 


8A8BA5AC00 ;Fln Cable 






MNEML 






HEX 


rn 


1A 1 


FABE 


STX 


LOCO 


24 J 




STA 


LOC0*l 


244 


SCLOOP 


LDY 


§7 


245 




JMP 


ItEADlil NEWS LOOP NHEADR 


246 


Ht/XTBYT 


IDA 


(LOCO J , r 


24 f 




CMP 


DISXSD-l t Y 


246 




BNE 


NSLOOe 










25 


* A recoplec 


en 5FAF4 


251 


NFAF4 


JMP 


WRITE+tIENFAF4-NWR ITE 


7(7 

252 




HEX 


DA 


253 




HEX 


747476C600 ;Fln de ta 






ie HNEHR 


254 








255 


HF8AF 


JSR 


WRITE +PA TCHE-NNR I TE 


£3 b 




BEQ 


**2 6 


2js 








lea 
£3C 


* A cecopler 


en S3C2 


*> c n 


N3C2 


LDA 


S3CD 


Sbtl 






i$8i 


261 




ORA 


0$8O 


262 




STA 


$3 CD 


2*3 




BIT 


$C081 


264 




RTS 




265 


FIN 




* 


266 




LST 


OFF 



Comment faire ? 

Pour disassembler les codes du 65C02, il siiffit de faire : 
- BRUN DESASMIRAM ; 

• charger un fichier binaire cornprenant les nouvelles instructions, It 
fichier 'CODEC par exemple ; 

• passer en moniteur (CALL -151 ). En utilisant alors la commande L 
du moniteur, vous obtiendriez de nombreux '???' ; 

• faire CTRL Y <RETURN> ; 

• utiliser alors la commande L (avec I' exemple CODEC, faire 300L). 
Vous obtenez : 



0300- 


DA 






PHX 




0301- 


80 


03 




BRA 


$0306 


0303- 


1A 






INC 




0304- 


3A 






DEC 




O305- 


5A 






PHY 




0306- 


FA 






PLX 




0307- 


7A 






PLY 




0308- 


9C 


03 


03 


STZ 


$0303 


030B- 


9E 


04 


04 


STZ 


$0404, X 


030E- 


64 


06 




STZ 


$06 


0310- 


74 


07 




STZ 


$07, X 


0312- 


1C 


02 


02 


TRB 


$0202 


0315- 


14 


09 




TRB 


$09 


0317- 


OC 


09 


09 


TSB 


$0909 


031A- 


04 


04 




TSB 


$04 


031C- 


89 


08 




BIT 


t$08 


031E- 


7C 


07 


07 


JMP 


($0707, X) 


0321- 


3C 


06 


06 


BIT 


$0606, X 


0324- 


12 


07 




ORA 


($07) 


0326- 


92 


05 




STA 


($05) 



Recapitulation 
'DES ASM/RAM' 

AprAs avoir saisi ce cods sous 
moniteur, vqv$ sauvQgarderez par 
BSA VE DESASWRAM,A$803,L$216 



CTRL Y vous permet de passer du desassembleur original au 
disassembler enrichi. 



0B03- 


2C 


81 


CO 


2C 


81 








08 09- 


CO 


A9 


FP 


85 


3E 


85 


3F 


A9 


umu- 


DO 


US 


3D 


as 


43 


AU 


I/O 


84 


0818- 


3C 


84 


42 


20 


2C 


FP. 


A 9 


C9 


0820- 


8D 


F3 


FF 


8D 


F5 


FF 


A9 


B2 


0828- 


8D 


DC 


FF 


8D 


DE 


FF 


A9 


B9 


0030- 


OD 


19 


F9 


A3 


B3 


8D 


IF 


F9 


0838- 


A2 


03 


A9 


EA 


9D 


95 


F8 


CA 


0840- 


10 


FA 


AS 


FC 


8D 


A6 


P8 


A2 


0848- 


08 


BD 


FD 


OS 


3D 


F4 


FA 


CA 


0850- 


10 


F7 


A2 


27 


BD 


ES 


09 


9D 




B6 


FA 


CA 


JO 


F7 


A2 


DE 


BD 


0860- 


A3 


08 


9D 


61 


F9 


CA 


DO 


F7 


0868- 


A2 


22 


BD 


82 


03 


3D 


CD 


FE 


08 70- 


CA 


10 


F7 


A2 


3F 


BD 


A5 


09 


08 78- 


9D 


C9 


FC 


CA 


10 


F7 


A2 


04 


0880- 


BD 


06 


OA 


9D 


AF 


F8 


CA 


10 


0888- 


F7 


2C 


82 


CO 


A9 


C2 


8D 


F9 


0890- 


03 


AS 


03 


8D 


FA 


03 


A2 


OD 


08 98- 


Rf) 


OR 


OA 


90 


C? 


0? 


CA 


10 


08A0- 


F7 


4C 


DO 


03 


OF 


22 


FF 


33 


08A8- 


CB 


62 


FF 


73 


03 


22 


FF 


33 


O8B0- 


CB 


66 


FF 


77 


OF 


20 


FF 


33 


08B8- 


CB 


60 


FF 


70 


OF 


22 


FF 


39 


08C0- 


CB 


66 


FF 


7D 


OB 


22 


FF 


33 


08C8- 


CB 


A6 


FF 


73 


11 


22 


FF 


33 


08D0- 


CB 


A6 


FF 


87 


01 


22 


FF 


33 


UtSUti- 


Cb 


to 


Ft' 


10 


01 


22 


FF 


33 


08F.0- 


CB 


60 


FF 


70 


24 


31 


65 


78 


08E8- 


00 


21 


81 


82 


59 


4D 


91 


92 


08F0- 


86 


4A 


85 


90 


49 


5A 


D9 


00 



36 



Pom's n° 23 



08F9- 


D8 


A4 


A4 


00 


AC 


A9 


AC 


A3 


0980- 


A2 


C8 


60 


29 


03 


85 


2F 


98 


0A08- FE FO 18 AD CD 03 49 81 


090O- 


A3 


A4 


ie 


SA 


1C 


23 


50 


8B 


0988- 


A2 


16 


on 


CA 


FC 


FO 


04 


CA 


QA10- 09 80 8D CD 03 2C 81 CO 


0903- 


IB 


Al 


9D 


8A 


ID 


23 


9D 


8B 


0990- 


10 


rs 


60 


BD 


El 


FC 


AO 


00 


UAla— oU 


0910- 
0913- 


ID 
19 


Al 
23 


1C 
24 


29 
53 


19 
IB 


AE 
23 


69 
24 


A8 
53 


0998- 
09A0 


60 
01 


B5 
60 


4A 
4C 


20 
E4 


DA 
FA 


FD 
60 


E8 

12 


30 
14 


Ffehier exemole 

# lUII'vl wAvlll^/lv 

f ^% OKk, ■% >■ <Ml 

CODEC 


0920- 


19 


Al 


AD 


1A 


5B 


5B A5 


69 


09A8- 


1A 


1C 


32 


34 


3A 


3C 


52 


5A 


0928- 


24 


24 


AE 


AE 


A8 


AO 


23 


8A 


09BO- 


64 


72 


74 


7A 


7C 


89 


92 


9C 




0930- 


7C 


8B 


15 


9C 


6D 


9C A5 


69 


09B8- 


9Z 


B2 


D2 


F2 


FC 


38 


FB 


37 


Aprbs avoir saisi ce code sous 


0939- 


29 


S3 


84 


13 


34 


11 


AS 


69 


Q9C0- 


FB 


39 


21 


36 


21 


3A 


F8 


FA 


moniteur. sauvegardez-le par 


0940- 


23 


AO 


08 


62 


5A 


48 


26 


62 


09C8- 


3B 


FA 


F9 


22 


21 


3C 


FA 


FA 


BSAVE CODEC, A$300,L$29 


094R- 


94 


88 


54 


44 


CR 


54 


68 


44 


09D0- 


3D 


3E 


3F FC 


C6 


01 


A5 


01 




0950- 


E8 


94 


C4 


B4 


08 


84 


74 


B4 


09D8 


C9 


CO 


FO 


06 


8D 


F8 


07 


AC 


0300- DA 80 03 1A 3A 5A FA 7A 


0958- 


28 


6E 


74 


F4 


CC 


4A 


72 


F2 


09E0- 


C7 


FA 


4C 


9B 


FA 


DO 


06 


8A 


0308- 9C 03 03 9E 04 04 64 06 


0960- 


A4 


8A 


06 AA 


A2 


AZ 


74 


74 


09E8- 


SB 


AS 


AC 


00 


EA 


86 


00 


85 


0310- 74 07 TC 0? 02 14 09 OC 


0968- 


74 


72 


44 


68 


B2 


32 


B2 


72 


09FO- 


01 


AO 


07 


4C 


FB 


FC 


Bl 


00 


0318- 09 09 04 04 89 08 7C 07 


0970- 


22 


72 


1A 


1A 


26 


26 


72 


72 


09F8- 


D9 


FE 


FA 


DO 


F4 


4C 


E4 


FE 


0320- 07 3C 06 06 12 07 92 05 


0978- 


88 


C8 


C4 


CA 


26 


48 


44 


44 


OAQO- 


DA 


74 


74 


76 


C6 


00 


20 


CE 


0328- 00 



Basicium... 
1& Basic 
enrich i 



I 



Get utilitaire vous permet de : 



i 







Imprimer 
Vecran 40 ou 80 colonnes 
par"]H". 



Nettoyer memoire tres 
rapidement par "]F". 



Gerer des messages, la 
reponse etant contrdlee. 



Gerard Michel 



Gerer des masques 40 ou 80 
colonnes. Ces ecrans t definis lors 
de la pro gr animation, s'affichent 
par la simple commande " ] A". 



Saisir toutes les variables d'un 
ecran en une seule comrnande "//" 
en contrdlant le type et la 
longueur. 



Mais aussi t ne saisir que Vune des 
variables affectees a un ecran, les 
afficher, les effacer, etc. . . 



Tous les fichiers source sont sur la disquette 
(exempte de demonstration dans le Pom's 13) 



Disquette et documentation : 150,00 TTC franco 
(bon de commande page 74) 



i 

J 



Pom's n° 23 



37 



Tant qu ? a faire 5 choses a la fois. 



i 
•: 



Que ccux qui 
aiment travailler en 
faisant deux on tfois 
choses a la fois ne 
changent ricn, au 
contraire, avec 
Apple el Jazz ils 
peuvent Jaire rnieux. 
Jazz dc Lotus, e'est un programme 
cree pour Macintosh 512 Ko. equipe d'un 
lecteur externe qui permet de devenir un 
parfait jongleur proiessionnel. 

Cinq programmes en concert, 
e'est-a-dire un tableur, un graph eur, un 
gestionnaire de fichier, un traitement de 
texte et un programme de 
communication reunis en un seul 
programme. Ou comment &tre a cinq 
sur la meme souris. 



Pouvoir gercr cinq applications a 
partir d'un seul ecran. modifier une 
donnee dans une application et quelle 
se modifie automatiquement dans les 
autres. pouvoir sauter d'un graphc a un 
traitement de texte sans attendre les 
seenndes qui durent une eternite pour 
changer de programme, e'est bieii... 

Quand on sapercoit que ccs cinq 
programmes sont individuellement 
excellents, e'est une revolution. 

Jazz, e'est I'outil ideal d'un directeur 
de sen-ice. 

Prenons un exemple qui exige beaucoup 
tie souplesse. de rapidite. et de doigte. la 
direction cfes services secrets ; 
- Avec un tableur capable dafflcher 
8 192 lignes sur 256 colonnes, la gestion 
devient beaucoup plus facile. Si un fait 



nouveau apparait rien n'est plus tacile 
que d etudier deux ou trois hypotheses 
afin de ne pas Btre pris dp court. 
- Quand un projet est fin prfit, il taut 
bien lc presenter a scs supericurs ct 
partois meme beaucoup plus haut; un 
grapheur permet de transformer toutes 
les doimees numeriques obscures en 
graphiqucs lumincux. 



3 



... 




/ 



- Si le projet est accepte, un traitement 
de texte est nCcessaire pour que chaque 
agent concerne soil au courant dans ses 
moindres details. Evidemment quand 
on travaille dans un tel service il vaut 
mieux pour Macintosh pouvoir copier, 
effacer. modifier, ou coller des dessins.a 
chaque instant. 



■Allll 




Apply Computer France Avenue tie I'Oofana 



autant les faire en meme temps. 



r 



« Fuhicr Edition | TJi^|jy^bta p h e Trace n«e Carat. Style 

flgr andir 



ESQ 



a 



Pressc-papiers 
Tableau des references 



I UENTES 



UENTES 



6 Ve ntes 



_7 Cout des pro ..... 
i3 Benefice brut 



_9 

10 
_U 

12 
11 

15 



16 
17 



Marche 

Marthe Cliuio 
Trj REPARTITION 

Directeurs Uentes 



Frai? 

Transports 



22 



Publicity j, 270, 

(Commissions ;j5. 



Divers 



i 



Total desrrais: 573 



1 Sup - 
1 000 - 
500 - 




Yentes 
Benefices 




"i r 
I'er trim Jemetnm Seme trim 







£1 



Rj/illt dt travail Jazz, 




Grace son gestionnaire de licliier. Jazz 
fait la fusion automatique entre un 
memo et une liste de correspondants a 
selectionner selon un critere special. 
Et avec un modem full duplex 1 200 bauds 
en un instant votre correspondant 
refoit toutes les informations precises a 
lautre bout du monde. 
Avecjazz lentreprise est rentable, 
rondement rnenfie. precise et discrete, 
inutile d'avoir 35 collaborateurs pour 
rediger fe projet. 

Jazz e'est cinq programmes lies 
entre eux si parfaitement que ['agent 
double est enfin entcrrc. place a Fagcnt 
quintuple. 




Apple 



21 

2< - 



if 

is 




eu de la Vie 



Dominique Bernardi 



C'est k ['imagination du 

mathematicien Conway que nous 
devons le Jeu de la Vie. II ne 
s'agit d'ailleurs pas reellement 
dun jeu puisqu'une fois la 
position de depart definie, 
I'utilisateur ne peut qu'assister a 
revolution de la 'population 1 , 
evolution qui ne laisse aucune 
place au hasard. 

L'hypothese 

Conway a con^u ce jeu sur les 
bases suivantes : 

La population est constitute de 
cellules qui seront representees 
par un point a l'ecran. 



presenterait ainsi a l'etape 
suivante : 



Chaque cellule peut avoir jusqu'a 
8 voisines et cet entourage en 
determine la survie : 

• ou 1 cellule adjacente : mort 
par isolenient ; 

• 2 cellules : survie ; 

• 3 cellules adjacentes a une 
position vide : naissance ; 

• plus de 4 cellules : mort par 
etouffement. 



Le programme 

Le present programme, ecrit en 
assembleur, respecte toutes les 
conventions du Macintosh, 
menus, fenetres, gestion des 
accessories... 

La cellule de base est un point 
Scran, ce qui represente 164864 
position k gerer. II est possible 
d'agrandir une zone de 46 * 64 
points, de la sauvegarder, de la 
recharger. 

Sur la disquette d'accompa- 
gnement Mac 23, vous trouverez 
des positions de depart 
particulifcres pretes k charger, 
positions qui genSrent toujours 
des naissances par exemple. 
La surface devolution de la 
population est 'torique* : la partie 
droite dc l'ecran louche la partie 
gauche. 11 en va de mfime pour le 
haul et le bas de l'ecran ; ainsi on 
ne touche jamais un bord de la 
surface. 



des menus vous trouverez 
facilement comment definir une 
position de depart, aldatoire ou 
non, observer les evolutions en 
pas a pas ou en continu, les 
compter, les interromprc etc. 



Un antecedent 

II est indispensable de signaler ici 
le programme de Bill Atkinson. 
La cellule de base est une petite 
bille inscrite dans un carre de 
8*8 points. Le nombre de 
cellule \ gerer est evidemment 
moindrc mais le resultat est alors 
d'une rapidife stupefiante. 



N.D.L.R. : le programme 
tourne indifferemment sur un Mac 
512Ko ou un Mac 128Ko. En 
revanche, le ckargement et 
Vidition des sources sont 
problematiques sur un 128Ko ; la 
disquette d'uecompagnement Mac 
23 contient done les fichiers 
sources en deux versions ; 

♦ celles dont les noms dibutent 
par 'Vie. 9 , listies page 
suivantes et destinies aux 
Macs512Ko; 

• celles dont les noms debutent 
par 'Viel28.', sauvegardees 
sans remarques et destinies, 
bien sur , aux Macs 128Ko. 



La position definie plus haut sc A l'aide des differentes options 



Fichier 'Vie. Job' 
(Exec) 



A<vn Vie.Asm 
Link Vkf.Unk 
RMaher Vh.R 



Exec Edt 
Exec Edit 
Rndor Edit 



Source 'Vie.Asm' Fichier 'Vie.Link' 



INCLUDE 
INCLUDE 
INCLUDE 

INCLUDE 
END 



VietAsm 
Vie2Asm 
Vie3Asm 

Vie4.Asm 



i 

Me 

/Output Vio.Code 
/Type TEMP 



40 



Pom's n° 23 



Source 'ViehAsm' 

; Le tableau principal occupy tout fecran sauf la bane 
; do monu. It oct foimo do 333 kgnoc do 613 pointe. 
; Cn /ok, il est torique, c'eat a dire que oe qui oort per Is 
j gauche reapparart a droite efc On pout ausoi 
; agrandk un rectangle 48 x 64 uxudit de c* tableau 
; (oasse resolution '), mais le cafaJ se last loujours sur 
; le tableau complex. Cast seulement cfans le mode 
; basse resolution que Ion peut changer letat du feu 
;encaquant sur les 'pixels' pour les nverser. La 
; procedure est la memo que sous la loupe de 
. MacPaint Jl y a quatre menus: le menu Pomme, le 
; menu Fichier, le menu Edition, et le menu Contrd/e. 
; Le menu Pomme presents las- accessokes de 
; bureau et C'est la Vie... Lbs accessories de bureau 
; devraient tons fonctionner, et le jeu peut toumer 
; avec I'horloge pour chronometrer, par exemple. 
; Tmrtelnis, mmma on ntt pant pas acinar Itt tableau 
; principal, raocessoire est normaiement actif et 
; intercepte tes equivalents clavier (I'horloge, par 
; oxomplo, loo rojotto ovoc un bip ddcapprobatour. Lo 
J eeul moyen de de'se'lecthnner tea accesaoirea aana 
; les former ost d'actrwr la fonetrc du comptour. Le 
; menu fichier perrnet de repartir a zero (nouveau), de 
; Ike ou deorre sur disque le oontenu du peot 
, rectangle etde quitter le programme. Le menu 
J Edition sen aux accessolres de bureau et pour eoTrter 
; le rectangle, copier et ooller echangent son contenu 
; avec ceiut dun tampon, etfacer agrt uniquement sur 
; ce rectangle contrairement a /'article nouveau du 
• menu Fichier. Le menu Contr6le permet de demarter 
; et rfarreter, ou oe caJculer una seule ou plusieurs 
; generations, de changer la resolution et de faJre 
lapparaltre le compteur. Ce dernier aJfiohe en 
; premiere Ikjne le ntAMta de la generation alienee et 

; en dauxieme ligno le nombre de celules vk/an/as. 
; EnKn, on pent rampHr le tableau de points 
; aleatokemenl noirs ou biancs, la probabiSti pour 
; chaque point d'etre noir dtant reglable (article 
: Probabm...) 



steiusRtry 


EOU 


D3 


, iKjmbftr de ge'ite'ratkjiKi 








;et flaps d-dee&ous 


runBtt 


EQU 


16 


; on court ? 


countBit 


EQU 


17 


; le compteur est wscte ? 


resBt 


EQU 


18 


; Name resolution ? 


oeterB* 


EQU 


19 


; La couleur du pixel a 








; mettre est comue 7 


colorBi 


EQU 


20 


;b£s 19el20- 1 <-> 








; c'est du noir 


auHBrt 


EQU 


21 


: Quitter a ete 








: s&ecfoma ? 


KiodfyRag 


EOU 


m 


; Mat du bouton. das 








; toirchee specia/es etc 


MenuReg 


EQU 


D6 


; ID du menu choisi 


MttemReg 


EQU 


dg 


;lDdeFariiohohoiei 


ApploHRog 


EQU 


07 


; handh vers le menu 








; Pomme 


Window 1 


EQU 


A3 


; A3 pokile vets ta 








; ten6tie printipeJe 


window2 


EQU 


A3 


; A3 porno vers la 



; f&ndtre du compteur 
- Equrralencee 



AppleMenu 


EQU 


1 


Aboutitem 


EQU 


1 


FileUonu 


EQU 


8 


NowHom 


EQU 


1 


Openltom 


EQU 


2 


Sarekem 


EQU 


3 


Quilk*n 


EQU 


5 


cdriMenu 


EQU 


3 


copyltem 


EQU 


4 


pastettem 


EQU 


5 


Ckaartem 


EQU 


6 


CUMenu 


EQU 


4 


Gotem 


EQU 


1 


Stopltem 


EQU 


2 


$Septtern 


EOU 


3 




EQU 


4 


Lottem 


EQU 


6 


-:nom 


EQU 


7 



Countltem EQU 9 

Probltem EOU 11 

Aieahem EOU 12 

AboutAJort EQU 1 

GenOiahg EQU 3 

PruuaDiakjy EQU 3 

OKttem EQU I 

edttText EQU 4 

prompt EQU 1 

; Dimensions du tableau : 

vMax EQU 321 

maxWord EQU 10303 

maxLong EQU 5151 



; roccourxxc ALFTT et 
, DLOG 



; Hem *1 dans bDITL 

;nemm 

; STR ressource 01 



nbde Sgnes - 1 
nb de mots - 1 
nb do mots tongs - 1 



NoGmwDocPmc EQU 4 



PlaknDBox 


EQU 3 




CmdKoy 


EQU 3 




DWindLer, 


EQU £AA 




WindowSize 


EQU S&C 




numToString 


EQU 




stringToNun 


EQU 1 




stPutFile 


ECU 1 




sfGeiFrle 


EQU 2 




.Trap 


_flddPt 


SA87E 


.Trap 


AddResMenu 


SA94D 


.Trap 


"_Aiert 


$A985 


.Trap 


BeginUpDale 


SA932 


.Trap 


BkOr 


SA85F 


.Trap 


_BrtSel 


SA8SE 


.Trap 


BHTst 


SA350 


Trap 




SAmi 


.Trap 


Close Dalog 


SA932 


.Trap 


CopyBie 


SABEC 


.Trap 


Croaio 


SA008 


.Trap 


JXsabhkem 


SA93A 


.Trap 


_DragGrmyRgn 


SA905 


Trap 


_DfegWiiOvw 


SA925 


.Trap 


_DrawMenuBar 


SA937 


.Trap 


DrawSotng 


SA884 


.Trap 


Enable Hem 


SA939 


.lnr> 


End Update 


$A923 


Trap 


^Erasefiect 


SA3A3 


Trap 


_ExiToShell 


SA9F4 


Trap 


r~ * J* _ -i _ . . . 

_FindWr>0ow 


$AB2G 


Trsp 


_FlushE vents 


SA032 


Trap 


Flush Vol 


SA0 13 


Trap 


_FrameRect 


SA8A1 


Trap 


_Ge (Cursor 


SA9B9 


Trap 


^GotDttwD 


SA9SD 


Trap 


Getkern 




Trap 


^GetlText 


$A99G 


.Trap 


_Ge(Mouee 


SA972 


.Trap 


_L*eiNewUiax>g 




. irap 


_ {zotrioxicvoni 




./rap 


_C»m/ 'Menu 




■ ltap 


^nf^iiri -i 




. fiap 


_ (jfVL-al 1 OLQCtM 




./rap 




t J O '? O 


Tran 


tnirC.i nw 




Trap 


JrvtLkatogs 


$A9/B 


Trap 


InilFonts 


SA8FE 


Trap 


_HtGraf 


SA86E 


Trap 


InHMenus 


SA330 


Trap 


In/Windows 


SA912 


Trap 


JnsertMenu 


SA935 


Trap 


InverFtect 


SABA4 


Trap 


_MenuKey 


SA93E 


Trap 


Uenu&eled 


$A93D 


Trap 


_K4oda£>iahg 


SA99f 


Trap 


MovoTo 


SA3&3 


Trap 


_NewPtr 


SA11E 


Trap 


Newftgn 


SA8D3 


.Trap 


NewWkiduw 


$A913 


Trap 


_OrfseiFioct 


SA8AB 


Trap 


.Open 


SAOOO 


.Trap 


OpenDeskAcc 


$A9B6 


.r* 


Pacta 


$A9EA 


Trap 


Pack? 


SA9EE 


Trap 


PenMode 


SA89C 


Trap 


_PUnRect 


SA8AD 


Trap 


Random 


SAset 


Trap 




SAOOQ 


Trap 


_RedRgn 


SASDF 


Trap 


_SelectWirrdow 


SA91F 


Trap 


_SendBohind 


SA93t 



trap 
/rap 
Trap 
Trap 
Trap 
Trap 
Trap 
Trap 
Trap 
Trap 
Trap 

.MACRO 
MOVEW 
%2 

.tNDM 

.MACHO 
PedCei 
.EN DM 

.MACRO 
^PadiGat 
ENDKi 

.MACRO 
_PackCaM 
.ENDM 

.MACRO 
__PackC*l 
.ENDM 



_SetCursor 
_SeU J or\ 
_SubPt 
_SysEdit 
_SyslemClck 
System Task 
_TEb» 
JTextFont 
_ TraokGoAway 
_Wa*MouseUp 
_Write 

_PackCai 

%1,-(SP) 



StnngToNum 
~#stringToNum^Pac*7 



_NumToString 
0numToStr'nq,_Pack7 



_SFGatfie 
MSFGetFile,_Pack3 



QFPutfUe 

MSFPutFih,_Pack9 



$A851 t — 

$A873 

SA87F ^ ' 

SA9C2 V — 

SA9B3 

SA9B4 

$A9CC ^ 
$AS87 
$A91F 
SAS77 
SA003 







Start 




BSR 


hiManagers 


BSR 


SetupMenu 


BSR 


SetupBoard 


BSR 


Create Windows 


CLRL 


statusReg 


EventLoop 




SyatemTaak 


BTST 


k*runBit,etatucReg 


BCQ.S 


<©f 


BSR 




BSR 


AftkJw 


BSR 


AttCompte 


m 

OR 


■m 


MOVE 


*$007F,-{SP) 


PEA 


EventRecord 


_G*tNextEvent 


1ST 


(&>>+ 


BEOS 


EvontLoop 


BSR 


HandteEvori 


BTST 


4tqurtBst l stalust^eg 


BEQ.S 


EventLoop 



FITS 



; Prepare le jeu 
; flags et 

; compteur a zero 



; Courons-nrMifi 7 

; Non, pas do 

;cak*J 

;nouveBo 

;gSni ration 

;amchage 

.aftkJiele 

.nouveau 

;compte 



; 7 premiers 
; 6venements 

lEvtinemenl 

:suvart 

.'Embfe-/-//? 
:RAS- On 
;boude 



;efrHale 
;oomrnedm 



• InkManagers • 



IrvkManagers 

PEA -4{AS) 
InitGrtf 
Jnltfont* 

MOVE! tSOOOOFFFF.DO 

_Flu*hEv»nt* 

JnitWIndowe 

JnltUenue 

CLRL <SP) 

InitDialoga 
ZTElnrt 

In 1 1 Cur bo r 
~RTS 



SetupMenu 

CLRL -(SP) 



-SettpMenu- 



MOVE 0AppfeMenu,-(SP, 



lespacepour 
; handle 



Pom's n° 23 



^GetRMenu 

P, NOVEL (SP),AppleHReg 
MOVEL (SP).-(SP) ;Copiepour 
:AddResM&nu 

L "fSPf 

S ~=S5$\_ln**rtUmnu 

' 0'ORVR\-(SP) ; Armssaras de 

* ; bure-au 

_AddPe»Umnu 
Ftchier: 

CLRL 1ST) 

MOVE 0FihMenu r (SP) 

_GelRUenu 

CLR JSP) 

_//?»• rtUenu 
Edition: 

CLRL iSP) 

MOvh ftdrtMenu, -(biH) 

_GetRUenu 

CLR JSP) 

_lnaertMonu 
Contfob: 

CLRL -(SP) 

MOVE 0CtlMenu,-<SP) 

_GetRUenu 

LEA CtlHanHlR.AO 

MOVE L (SP).(AO) 



; morions la 
; handb tie cAtA 



CLR JSP) 
_lneertMonu 
DrawMonuBar 

RTS 



- SecupBoad- 



SetupBoatTj 

,A TIE N RON: NewPtr utilise des regisves pour fas 
; arguments: 

; taiKe du bloc a reserve r en entree dans DO. en 
; sortie, le poinleur est dans AO, sail si DO content 
; un code d'erreur non nut 322' 64 pout le tableau, 
. ; 5 ' 516 pour les lignes. 322 pour le tableau oe 
; booteens indkjuant les tangoes non vkies enlin 2 
; oriels de 'bourrage' — > 23512 octets en tout 
MOVE L 023512.00 

_NowPtr ; Demandons de 

;taphco 

TST DO ;£iftH*? 

BEQ. G @1 ; Non, tout vo 

;bion. 

ExItToShell ;Feutede 



LEA 

MOVEL 

ADDA 

LEA 

MOVEL 

ADDA 

LEA 

MOVEL 

ADDA 

LEA 

MOVEL 

ADDA 

LCA 

MOVEL 

ADDA 

LEA 

MOVEL 

ADDA 

LEA 

MOVEL 



Board. Ai 

A0,(A1) 

02O6O6.AO 

moins2,A1 

AO,(A1) 

0516, AO 

moinst.AI 

AO.(Al) 

0516, AO 

pasO,Al 

AD,(A1) 

0516, AO 

peel, At 

A0,(A1) 

0516, AO 

PSS2.A1 

AO,(AI) 

051 6, AO 

changed, A 1 

A0,(A1) 



; Sauvons les 

iditietenis 

;pointeurs 



MOVE! Boaro.AC 
MOVE 05677. DO 



; Muttons tout a 
:ako 



• Ouvrons res l&nStrae 



CreateWindows 
Compteur: 
: FUNCTION N&wWtndow (wStorage: Ptr; 
; boundsRect: Rect: 

; title: Str26S; vieible: BOOLEAN; ptociD: 
■ INTEGER; 

i behind: WindowPtr; goAweyFlag: BOOLEAN: 
; rglCon. Longlnt) 
; : VftndowFv; 



CLRL 

PEA 

PEA 

PEA 

MOVEB 

MOVE 

MOVE! 

MOVEB 

CLRL 



iSP} 



,Pk*x pourle 
; results 

YiStoraee2(AS) 
counterRect 



01. -(SP) : Ws*te 

UNoGrowOocProc, -(SP) 
M,-fSP) 



01, -{SP) 
-(SP) 



HowWIndow 

MOVEL (SP),window2 



SetPort 



CLR 



-(SP) 



Text Font 



Fichier 



Ausommet 
: On vent pouvoir 
; la termer 
; RefCon - 0, 
; poutxjuoipas ? 
;Dessinonela 
: lenetre 
; Sairvnns son 
; adr&sse 
; point our sur la 

■ SysFont - 
.-Chicago 



Nouueau 


Ouurir... N 


Enregistrer 


sous.!* 


Quitter 


3€Q 



Source 'Vie2.Asm' 



Tabieau: 
CLRL 
PEA 
PEA 



WStorage T(A5) 
wbkJowRwJ 



CLRL i$P) 

MOVEB MIJSP) 

MOVE 0Pla»nDBox,-(SP) 

MOVEL 0-1, -(SP) 
CLR -(SP) 

CLRL -(SP) 

_Nfiw Window 

MOVEL (SP},Window1 

SetPort 
MOVE 010. (SP) 

PenUode 



L'tkxan mains 
lesmenus 
Pas de One 
Visible 
Juste un 
rectangle 
Ausommet 
On ne te termers 
pas 



; mode — patXor 



Rectangle; 
; FUNCTION Newftyn . fynHartte; 
CLRL -(SP) 
_NewRgn 

Tea RectHandle.AO 
MOVE! (SP)+,(AO) 



MOVEL 021344,00 
NewPtr 



;322x64 + 2x 
;46x8 



? 






TST 


DO 


CLRL 


(AO)* 




BEO.S 


en 


LIBRA 


D0.&2 




ExltToShell 


MOVEL 


Board.AO 


;Au depart, un 










; r pontomino 


LEA 


Gnte.Al 


ADDA 


010371, AO 


i 160 '64 f 31 


MOVEL 


AO. (At) 


MOVEB 


03,(AO) 


; au rniSeu de 


MOVE 


045,01 






; Heron 


<S* 




MOVEB 


06.64(AO) 




MOVE 


063. DO 


MOVEB 


02, 128(A0) 




K&VE 


0-1, D2 


MOVEL 


changed, AO 


; Cee iroie lignes 


&2 




St 


1GQ(AV) 


;$ont non-vtdes 


MOVEB 


D2,(A0)+ 


ST 


161(AQ) 








ST 


162(AO) 




DBRA 


D0,@2 


RTS 






MOVE 


0383, DO 








MOVEQ 


01.D2 



ivnerangee 
: noire 



; et six range os 
.deOOOOQOOf 



MOVEB D2,(A0)-h 
DBRA DO,@3 
DBRA Df.tS>4 



LEA 

MOVEL 

MOVE 

@6 
CLRL 
DBRA 
LEA 



Tampon Vide. A1 

AD.(A1) 

091.DO 



(AOfr 
DO,@5 
Tampon, A 1 



:46h e ->322 
;r angles 



.Vidons-le 

: eftoctivoment 



MOVEL AO,(A1) 



Curseur: 
ULHL 

MOVE 



iSP) 
#4,-(SP) 



Get Cursor 



LEA 



watchhanoh.Ati 



; recupefons la 

:monte 

; gut est dans is 

; fichier 

.System 



MOVE.L 


(SPh.(AG) 




RTS 




HondtoEvont 






MOVE 


Moddy, Motif yFteg 




MOVE 


What, DO 




ADD 


00,00 




MOVE 


EventTaole(DtJ),DO 




J*f> 


EvenlTaOe(DU) 




EvenlTable 






DC.W 


NextEvent-EventTabJe 


; Null Event 






: (inutiise-) 


DC.W 


MouseDown-E vent Table 




DC.W 


N&rtFvnnt-FventTabJB 


.Mouseup 






- (inted'nA) 


DC.W 


KeyDown-Event Tatio 




DC.W 


NextEvdht-EventTabte 


:Keyi)p 






; (inutiise) 


DC.W 


KeyDown-E YontTabte 


; Auto Key 


DC.W 


Update-EventTable 





: NormaiernenL la table est plus tongue, mars nous ne 
; taisane rien pour les artivata/dBactivatB 



■ Actions di w»c - 



Update 

MOVE.L masses, -(SP) 
_B»ginUpDate 

MOVEL message, DO 

CMP.L window f,D0 

BNES tSfl 

btSH AtlKhe 

@1 

CMP.L window2,D0 

BNES <&? 

BSR AffCompte 



MOVFl 
_FndUpdml» 

NexiEvont 
RTS 



KeyDomi 
BTST 



:rotourala 
;bouch 



0CmdKey,ModifyRtfg . Seutos les 
; commandos 
HtU Nextbvent :nous 

; interessenf 
.- FUNC VON MenuKey (ch :CHAR): Longlnt; 
CLRL -(SP) 
MOVE Message-*2.-(SP) 



_ MenuKey 

MOVE (SP)+,MenuR*g 
MOVE (SP),,Mtt e mRog 
BRA Chotoee 



: Le car adore est 

: est-ce une 
; commands ? 



: trototv-lB 



— Pot* - Mouse Down e'eet plus compJktue' 

Mousedown 

, FUNCTION FitKJWfndow (thePt: Point; 

, VAR whkXiWrndow: WindowPtr): INTEGER; 

CLR -(SP) ; place pour 



Pom's n° 23 



MOVEX PoinL-(SP) 

PEA WIMndow 
_FlndWlndow 
MOVE tSPh.DO 



ADD 



DO.DO 



cooroonnees de 

; la sows 
.Event Window 

: numerode 

: ntgbn 

; •Ppoit tahle 
; cfindox 



MOVE WindowTabie(DO),DO 
JIP WndowTabte(DOp 

•VindowTabto 

DC.W NextEvent- WindowTebb 

DC.W InMenu-WindowTable 

DC.W Systt/mEvwit-WiiKJowTablv Window 

DC.W Cvntent-WrrxtowTaiite 

DC.W DoDrag-WndowTable 

DC.W NexiEvenl- WinoowT&te 

CC.IV DoGoAway-Window labia 

SystemEvent 

; PROCEDURE SystemClk* (IheEvent: 

; EventRecord; 

; theWindow: WindowPtr); 

PEA EvenlRecord 

MOVEL \W/indow.-($P) 

_SymtamCHck 

BRA NextEvont 



Content 
MOVCL 
CMP.L 
BNES 
MOVEL 



Window, DO 
winJKJw2.DC 

wtndow2,-(SP) 



SelectWlndow 



BRA 



NexiEvenl 

MrvnBk.statusReg 
NexiEvenl 
WinetowlMSP) 



.sic'eetle 
icompleur 
; sele&tonner sa 
;l 'enetre 



BTST 
BNE 
MOVEL 
_S»tPort 

PEA Point 
GloDatloLocal 

BTSI 0res&t,statusReg 
BEQ FatBts 

DiagRect 

CLR -<SP) 

MOVE! Point JSP) 

PEA LoRed 
_Pttn fleet 

TST (SP>*- 

BEO NoxtEvent 

MOVEL redRandie,-(SP) 

PEA Lotted 
_R&otRgn 

LEA Smkes.AO 

MOVEL Point,(AO) 

MOVEL LuRtf<l,-(SP) 

Mm 



PEA 

_subPt 

LEA 
MOVE! 
MOVE! 
PEA 

_ Add PI 
PEA 



kmies.AD 
(AQ),4{AQ) 
0$O114O1CO,-(SP) 
SmHes*4 

LoR&d 



;y-276, x-448 



: preparation pour 

; Ofsat 

; FUNCTION DratjOrayRgnftheRgn : RgnHandie: 
; startPoint ; Point; SmhRect, 
r slopRect : Red; axis : INTEGER; acbonProc : 
ProcPtr) ; LONGJNT; 



, fe coil sn haut a 
.gauche 



CLTIL 


-(SP) 


MOVEL 


RectHandh.-(SP) 


MOVEL 


Point -(SP) 


PEA 


Brmres 


PEA 




CLR 


■(SP) 


CLRL 


JSP) 


_DragGrayRgn 


CMPi.L 


0S8 0008000. (SP) 


BNES 


@* 


ADDA 


m.sp 


BRA 


NoxtEvent 






PEA 


LoRect 



ipasde 
; conbairie 
; rti dactionProc 



; Renvoye sr ie 
;bouton est 
; nelarbA hnrs 



_Oft$etRect 

PEA LoHeCt 
_FrammRect 

BRA NextEvent 



FatBis: 
BCLR 

m 

CLRL 
MOVE 

avu 

MOVE 

ADD 

MOVEL 

ST 

MULU 

MOVEL 

ADDA 

MOVE 

ASR 

ADDA 

MULU 

LEA 

MOVE 

ADDO 

MOVE 

ASL 

MOVE 

ADD1 

MOVE 

CLR 

MOVEX 

MOVCX 

_BitTet 

TST 

BNES 

BTST 
BNES 
BSET 
BSET 
BRAS 
@e 

BTST 

BEQ.G 

DRAS 



BTST 
BNES 
BSET 
BCLH 
BRAS 
» 
BTST 
BNES 
BRAS 



tfeterBft.stalusR&o :cou1euT 

; indeterminate 

DO 

yCoor.OO 

07. DO 

D0,D2 

Top, 02 

ohangod,AO 

0fA0,D2) 

0512.D2 

D2.AG 

Leit.AQ 

xCoor.Dt 



03.D1 

D1.A6 

07. DO 

pit, AO 

DO.(AO) 

07. DO 

DQA(AQ) 

03.D1 

Df,?(AO) 

0S.D1 

D1,6(AD) 

<SP) 

BoGid.(SP) 



;bas 
: gauche 
; droit* 



:lebit4tai now 



toteterBit.statusHeg 

@6 ;onsaideja 

/tdeterBit.statusReo 

0cok>rBit,statusRea 



MoohrBit.ctatuoRog 

®10 .-blanceurbhnc 



*JelerBit,staluBReg 
PB 

0deierBit l siatusReg 
McolorBrt.statusHBQ 
t§6 

McolorBit.statusReg 

@10 inoirsur nor 



MOVE I Roard.jRP) 

MOVEL AG,-(SP) 

BitSet 

BRAS @6 



MOVEL Bottrd.idP) 
MOVEL AS.-(SP) 
BltClr 



PEA per 
_lnv9rRect 

CLP -(SP) 
JWalMouaaUp 



FrameRect 



TST 


(SPh 


BEQ 


AftGomple 


PEA 


Point 


Getktou 


90 


CLR 


<SP) 


MOVEL 


PoirtHSP) 


PEA 




PtlnRtCt 


TST 


(SPfr 


BEQ.S 




BRA 


m 


DoOmo 





; ie bouton a-l-9 

;etetache? 

; SI out, miee a 

;Jourdu 

; compteur oi 

;retout 



MOVEL Point,-(SP) ; coordonnees de 

;taaourm I — i 

HtA wtxtowRect ;iknttes<Ai 

; deptacernentr^ \ — ^ 

_DragWlndow V- 

BTST tCmdKey.ModfyReg ;cde? 

BNES &f 

MOVEL WlMnHnw,-(SP) 



; non. adJvons 
; fenMre 



SaleclWIndow 



01 



BFtA 



NoxtEvont 



DoGoAway 

.FUNCTION TrxkQyAwayitheWrtdow : 

i WindowPtr; 

issartPoint : Point) : BOOLEAN 
CLR -(SP) 
MOVEX WWindow,-(SP) 
PEA Pant 

JTrackQoAway 

TST (SPfr ; L'utiisateur 

;veut* 

BEQ.S (§2 ; vraiment termer 

MOVEL Vmndow.-iSP) 

MOVEL Wkidow1,-{SP) 

_SendBehind 

BCIR tcauntBit.statusReQ 



BRA 



N+xtEvent 
Art&eedeMon 



InMenu 

i FUNCTION MenuSebct (mWtPtftthQ •* Longtnt; 
CLRL -(SP) 
MOVEX Point, -(SP) 
_MenuSofect 
MOVE (SP)*,MenuReg 
MOVE (SP^MttomReQ 
GfabM 
CMP 
BEQ 
CfJP 
BEQ 
CkP 
BEQ 
CkP 
BEQ 



0AppleMenu, MenuR&g 
In Apple Menu 
MFHeMenu.MenuReQ 
InFileMem 
MEdHMenu. Men uReg 
InEdHMenu 
0CtlMonu,M0nuReg 
InCttMonu 



ChokxRetum 
CLR -(SP) 
_HILIteMenu 

BRA NextEvent 

InAppleMenu 

CMP 0AboutIt&m,MttemReg 
BNES Accessoire 

;FUNC DON AlertfAlertlD : INTEGER; Filer : 
: ProcPtr): INTEGER; 



CLR 

MOVE 

CLRL 

_Alert 

ADDO 

BRA 



-(SP) 
About AJert-(SP) 
-(SP) 

03, SP 

ChoiceRotum 



Accessor*: 

, PROCEDURE Get Hem (menu: Monul lendh; Hem: 
.INTEGER, 

VAR tBrnString: SB255), 
MOVEL AppteHFteQr(SP) 
MOVE MJtemR9g.-(SPf 
PEA ttie&nng 
_Ge litem 

.FUNCTION OpenD&skAoc(lheAcc :Str2S5) : 
: INTEGER: 



;jetone le rieuttat 



MOW I WW,r*tow,-(RP) 



CLR 


-(SP) 


PEA 


ttvtString 


_ OpenDeekA cc 


CLR 


(SPh 


BRA 


CrtoiceRetum 


InFileMenu 




CAP 


PNewltem, MttemReg 


BNES 


Open 


Stat; 




MOVEX 


Board, AO 


MOVE 


05877,00 


@>1 
CLRL 


(AOfr 


DBRA 


DQ.@1 



; til seer tout 



Pom's n° 23 




statusReg 
Affiche 
AftCompte 
ChotceReturn 



MOpenttem. MfemReg 
Save 



, PROCEDURE SFGelFHeftopLeft ; Point, 

; PtornptStrtng ; Str255; 

; laeFtter : ProcFv; num Types : INTEGER; typeLst 
;;SFIypeLtst; 

; dialogHook : ProcPU; VAH reply : SFHeply); 
MOVEL #$00540052, -(SP) ;r-82,y- TOO 
CLRL -(SP) 
CLRL -(SP) 

MOVE 0-1. -(SP) ;tauslestypes 
CLRL -(SP) ; pas de typebst 

CLRL -{SP) 
PEA rmpiy 
SFGelFltm 



LEA 
TST 
BEQ 

CLRL 
LEA 

MOVEL 

MOVE 

MOVE 

CLR 

CLRL 

LEA 
Open 
. TraJtement d 

MOVEL 

MOVEL 

MOVEL 

MOVE 

CLRL 

LEA 
Read 
;Traitement d 

LEA 
Close 

PEA 

PEA 

PEA 

PEA 

CLR 

CLRL 

_CopyBlh 

MOVEL 

ADDA 

MOVE 
<§»6 

ST 

DBRA 
BSR 
BSR 
BRA 



Good.AO 
(AO) 

ChotooRoturn 

ParamBhok+lS(A5) 
tt>e$tr$ng,AO 
AO.PasamBkKk* 1B(A5) 
VretNum.DO 
DO. Pa/amBlock+22(A5j 
ParamBkx*+?6(A5) 
ParamBhck*28(A5) 
ParamBk)Ck(A5),A0 

erreur... 
tampon. A 1 

A1.PaiamBkxk*32(AS) 
0368.ParamBiock+36<A5) 

01, Param Block +44{A5) 
PatamBkKk*4G(A5) 
ParamBkKk(A5) t AO 

erreur... 

ParamBtock(A5),AO 
Tampon 

Board 
TampRed 
LoRect 

-(SP) 
JSP) 

changed, AO 
Top. AO 
S4S.D0 

DO.&G 
Ailctie 
Atlcompte 
Chotc&Retum 



Saw: 
PEA 
PEA 
PEA 
PEA 
CLR 
CLRL 



Board 
Tampon 
LoRed 
TampRed 
4SP) 
JSP) 
__CopyBlta 

CMP aSavellem.MltemReg 
BNE Out 

PROCEDURE SFPutFileftopLelt : Point; 
PromptString ; Str255; 

InitTent . Sti255. diabghook : ProcPtr; VAR reply : 
, SF Reply); 

MOVEL 9$Q06*mtJ,-tSP) ;x. IW.y - 100 

CLRL -(SP) 

MOVE *prompt,-(SP) 

_GatStrlng 

MOVE! (SP).AO ; oetMrencons 

MOVEL (AO).(SP) 

PEA 

CLRL -(SP) 

PEA raply 
_SFPutFllm 

LEA Good,A0 

TST (AO) 

BEQ ChoiceReturn 

CLRL PwamBkx*+12{A5) 

LEA tttvString.AO 

MOVEL AO.ParamBlock* 18(AS) 

MOVE VretNurn,DO 



MUvfc 


LXJ, Fa/am biock +22( Ad} 


MOVEL 


CtJR 


Param Rlnck+Pfi(A5) 


ADDA 


LEA 


ParamBlock(A5).A0 


MOVE 


Creato 




@e 


CLRL 


PammBfock.28(A5) 


&r 


LEA 


PammBlockfAS^AO 


MM 


^Open 




BRA 


. Trartement demur.. . 




MOVEL 


tampon, A t 




MOVEJ. 


A I.ParamBtock+32(A5) 




MOVE! 


#368, ParamBtocX+36{A5) 


IfCtiMBnV 


MOVE 


rt I , Paiam Block+-44(Ab) 


ADD 


CLRL 


PammBlock*46(A5) 


MOVE 


LEA 


PaiBmBkxk(AS),AO 





_Wrtt0 

Jraitemenl d erreur... 

LEA ParamBlock(A5).A0 
_CIobb 

CIRl ParamBlock+18(A5) 
LEA Param&tock(A5),A0 
_FJuehVol 

BRA ChoiceReturn 



Edition 




Coller m 



Effacer >t | 



Source 'Vie3.Asm' 



Quit 

CMP MOuHltom.MltomReg 

BNE ChoiceReturn 

BSET /tquitBit.statusReg 

BRA CbouxRelutn 



InEdttMenu 
CLR 
MOVE 
SUBQ 



MtemReg,-(SP) 
01. (SP) 



Sv*Edlt 

TST.B (SP)* 

BNE ChoiceReturn 

CMP mciaarltem.MltemReg 

BNES Copier 



; decalage pour 
;SystemEdk 

;AA-iltaJtQQ&i ? 



Efface* 




PEA 


TamponVido 


PEA 


Board 


PEA 


TampVideRed 


PEA 


LoRed 


CLH 


-(SP) 


CLRL 


■(SP) 


_CopyBlta 


BSR 


Ati&n 


BSR 


AJtCompie 


BRA 


ChotceReturn 


Copier 




CMP 


Mmpyltam. Mrtet 


BNES 


CoMm 


PEA 


Board 


PEA 


Tampon 


PEA 


LoR&d 


PEA 


Tarnpftefl 


CLR 


iSP) 


CLRL 


JSP) 



; Tamponade > 
; fleet 



_CopyBlt» 



BRA 



CoSer 



CbotceRelurn 



CMP 


Mpi&tetlem.MxemReg 


BNE 


ChotceReturn 


PEA 


Tampon 


PEA 


Board 


PFA 


TamnRart 


PEA 


LoRed 


CLR 


■(SP) 


CLAL 


iSPf 


_CopyBlia 


BSR 


AUche 


BSR 


AftCompte 



Top, AO 
*45,D0 

(ACh 

ChotceReturn 



— Menu Controk} - 



D6.D6 

CtiMenuTabte(D6),D6 
CmenuTabkHD6) 



CtlMenuTable 
DOW 
CCW 
DCW 
DC.W 

DCW 
DC.W 

DC.W 
DCW 
DC.W 
DC.W 



DC.W 
DCW 

DCW 



Dummy -CU Menu Tabia * pas d r rtem O 
DoGo-CUMehuTable 
DoStop-CtlManuTabls 
DoSlep CtlMonuTablo ; une 

; generation 
DoNgen-CtlMenuTabfe j n generations 
DtMnmy-CtlMenuTable . une ligne do 

, n^onration 
DoLo-CUMenuTable ;LoRes 
Dof-H-CttMenuTaOle ;HRe& 

Oummy-GiMenuTabla ; une autre ftgne 
DoCounter CtlMenu Table ; Montrer le 
;Compteur 

Dummy-CtlMenuTabto 
DoProba-CUMenuTable ; changer la 

:pro6abite 
DoAlaa-Ct!Mf>ntiTahta ; RftmpHssage 

; ttttflfcfcp 



; handle vers to 
;mehu 
;duplfQue 
: tnpirius 

:etc 



DoCo 




BTST 


arunBrt.etatueReg 


BNE 


ChoiceRtiturn 


BSET 


arunBit.siatusReg 


MOVEL 


CilHanoie.-fSP} 


MOVEL 


(SP),iSP) 


MOVEL 


(SP),iSP) 


MOVEL 


(SPMSP) 


MOVE 


IfGolterrx-(SP) 


__DlBablellem 


MOVE 


nS:3pltem.-(SP) 


Dlaableliem 


MOVE 


ttStopttem,.(SP) 


Enabfeltem 


MOVE 


ImGenltom, (SP) 


Dleablellem 


Dummy 




BRA 


ChoiceRetum 


DoStop 




BTST 


ifrunBn.siatusReg 


BEQ 


ChoiceHeturn 


BCLR 


HrunBrt.siatusReg 


MOVEL 


CtJRandk9,-{SP) 


MOVEL 


(SPUSP) 


MOVEL 


(SP).-tSP) 


MOVEL 


(SPL-fSP) 


MOVE 


Mtlnham.-(SP) 


Enabfeltem 


MOVE 


*Stepltem,-($P) 


Enabfeltem 


MOVE 


MStopltom, (SP) 


Dleablellem 


MOVE 


0nGenHem r (SP} 


Enabfeltem 


MOVEL 


Windowl ,-(SP) 


SttPon 




BTST 


MresBrt.slatusHeg 


BEQ.S 




PEA 


LoRed 


Frame Red 


BRA 


ChoiceRelum 


@1 
PEA 


Game 


MOVEL 


Wkydowl ,-(SP) 


ADDI.L 


M2,(SP) 


PEA 


HiRect 


PEA 


lURed 


MOVE 


#A$P) 


CLRL 


iSP) 


_CopyBitt 




ChotceReturn 


DoSlep 




BSR 


Caicute 


BSR 


AUkhe 


BSR 


AtfCompte 


BRA 


ChoceReturn 



mode srcXor 



44 



Pom's n° 23 



_ ; Vgen 
CLRL 
MOVE 
PEA 
MOVEL 



■{SP> 

0GenDiabg,-(SP) 
DStorage 

9-1ASP) 



^GetNewDialog 

MOVEL (SPl-ISP) 
_SmtPort 

CLRL -(SP) 

PEA HemHk 
_UodnlDialog 
MOVE ttemHi.DO 
CMP HfOKhom.DO 
BEQ.S @1 
__ClosoDialog 



BRA 



@1 



MOVEL 
MOVE 
PEA 
PEA 
PEA 
GetDltem 



ChoiceRelurn 

(SPHSP) 
0editTexl,-(i>H) 
ism Type 
iemHardte 
dspRect 



, Co doi rk/e 

; annular 



PEA 


itemHt 








^ModaiDialog 




MUVt 


(SPfoDQ 


MOVE 


temHIDO 




OR 


D0,{A4)*- 


CMP 


MOKhem.DO 

&1 




DBRA 




BEQ.S 




@>7 




Cloa+Dialog 


• Ct* rkii Aim 


DBRA 


D4,@3 








MOVEM.L {SPU.D3-D5/A4 


BRA 


ChoiceRotiirn 




CLR 


StalusReg 








MOVEL 


changed, AO 


MOVEL 


(SP)ASP) 




MOVE 




MOVE 


0*ditToxt,-(SP) 








PEA 


kemTypo 




ST 


W* 


PEA 


iomHandkj 




DBRA 


D0,@9 


PEA 


dropReet 




InfCursof 




_CotDftem 


; r&af&ralk/n du 


BSR 


Affiche 


MOVEL 




, poutcentoge de 


BSR 


AftCompte 






; points nofrs 


BRA 


Cttuic&Rglum 




PEA IheString 
_CetlText 
_Cloae>Dialog 
LEA meString,AO 
_StringToNum 



; recuperation du 
: nombre de 



CMP 
ONE 



0100,00 

m 



;e%estdans 

;DOI 

100% € 



MOVE.L iemHandle.-{SP) 


: generations 




: rempiace par 




• demandaes 


MOVE 0255,00 


; 2567256 


PEA ttmString 




BRAS m 




_GmtlText 








_CloaeDialog 




MULU 064,00 


; PourcentaoG > 


LEA theString.AO 






; Octet 


_StrlngToNum 


; kr nb est dare 


DIVU 025,00 






;D0! 






TST DO 




LEA Proba,AO 




BEQ GhoiceRetufn 


;si nb»0,ne nen 


MOVES DO, (AO) 






; fears 


MOVEL Windowr.-(SP) 


; redessinons 


SUBQ 01, DO 


1 on va utiteer 




; lout de suite 


;DBRA 


_BaglnUpData 


;le rectangle 


MOVEL DO.-(SP) 


1 mettone ie a 




itaasseen 




;tabi 


BSR AJfiche 


;biancpar 


MOVEL WMowl.jRP) 


: radaasinons 




:Clo6&DiaJog 




; touf da site 


MOVEL WrdowfJSP) 




_BoglnUpDate 


;le rt*tf angle 


_EndUpdate> 


: et remplissone 




; latest on 




.aussitdL 


BSR Affhhe 


;btancpar 








; CtocoDabg 


; la probabilitc oct roprooorJoo sur un octot, coH huit 


MOVEL Window1,-{SP) 




; chiftres binaires. Cheque bi du mot renvoye par 


CndUpdsto 




i Random a una probability 1/2 d'etre po&Hionna. Un 


MOVEL n*toifH t *tdb,AO 




;bita ' vans is prvte »r Uaduk par un OR etunbttaO 




;attendre 


; par un AND. C'thsl ccmpkqua, meis 


MOVE.L (AO),iSP) 




, mnittvm*dkiuttmttrt umbU C'9 


st plus tapkkt uw do 


_SeiCursor 




; cafcufer bft par M en falsant appel a Random tons les 


~MOVt± (SP)+,DO 


; recuperons le 


; deux bits car toutes les manips se font au niveau du 




; nombre 


;moL U'3'jfr9 part, avec la proba par detaul de bO%, i 






; ny a quhn appel a Random pour 16 bits, ce que la 


BSR Ceioje 




;rn4thpde 'naturelle' ne permettrait pas. 


DBRA D0.@3 








In It Cursor 




DoAfea 




BSR Atficbe 




MOVE.B proba.DO 


; proba nulla : 


BSR AftCompte 


: actuations ie 




:edacer 




; comptaur 


BEO Eifacet 




BRA ChoicoRotum 




MOW I wa/chHandh. Atl 


* l\rtili&almr va 








; attandre 


DoLo 




MOVEL (AOMSP) 


; Dord/erencons 


BTST arosDit.statusReg 




SmtCuraor 




BEO CltoiceRetum 




MOVEM.L A4SD3DS,-(SP) 




BCLR 0ittt>Bil,6tntusRog 




MOVED proba,D3 


; proba aur 6 Ms 


BSR Atiktm 




MOVEQ 07,04 




BRA ChoiceRelurn 




<g>i 








ASR 0I.D3 


; elimination des 



DoHi 
BTST 
BNE 
BSET 
BSR 
BRA 

DoCountor 
MOVEL 



So loot Window 



0resBit,stahJaReg 

ChoiceReturn 

0resBit.6tatusReg 

ChoiceReturn 



window2,-(SP) 



uecs 

MOVEL 

MOVE 



CLR 

^Random 

MOVE 
DBRA 
BRAS 



D*,@1 

BoardM 

0maxWord,D5 

JSP) 
DS,@2 



; zeros 

; a drotie de proba 



BTST 


McountBrt, statualleg 


@3 




BNE 


ChoiceReturn 


MOVEL 


BoardM 


BSET 


0countBrt,statusReg 


MOVE 


0maxWofd,DS 


BSR 


AtlCvmpltt 


ASR 


01,03 


BRA 


ChoiceReturn 


BCS 








(S6 




DoProba 




CLR 




CLRL 


iSP) 


_Random 


MOVE 


tProbaDu*og.-(SP) 


MOVE 


(SPfr.DO 


PEA 


DStorage 


AFC 


D0,(A4) + 


MOVEL 


0-1 ASP) 


DBRA 


D5,(§>6 


_GatNewDlaloa 


BRAS 


@7 


MOVE! 


(SPl-iSP) 


@4 




Sat Port 




CLR 


ISP) 


CLRL 


■m 







Afticnage 

AtiKfm 

.PROCEDURE Copy&ts(FromB,toB : BHMap; 
;from,to;Rect; 

mode : INTEGER: dipTo : Ron Handle); 



MOVE.L 
_$aiPort 

BTST 
BEOS 
PEA 
MOVEL 

ADOt.L 
PEA 
PEA 
CLR 
CLRL 



Window!. -{SP) 

#resBit.sta!usReg 

@1 

Board 

Windowl, (SP) 

*2,(SP) 

HRect 

HRect 

-(SP) 

-(SP) 



_copyBlt$ 

BTST #TwBrr,statusReg 

BNES @e 
PEA LoRect 
_FrameRect 



BRAS 
@i 

PEA 
MOVE.L 

ADOi.L 
PEA 

PEA 
CLR 
CLRL 



Board 

Windowl, JSP) 

#2.(SP) 
LoRoot 

tifbet 

-(SP) 

■(SP) 



_CopyBlta 

BTST amjnBii.siaiusHGg 



BNES 
PEA 
MOVEL 
ADOI.L 
PEA 
PEA 
MOVE 
CLRL 
^CopyBlta 
@3 
RJS 



Griff 

WhdowUSP) 
*2.(SP) 
HiRed 

*?.-<SP) 



Offset 2 pour ie 

bimap 

d'une fone'tre 

fertvtro entiere 
mode copy 
pasdectpphg 
supplememaire 

ie rectangle 

n'est dessine 
qu'a rarret 



; Offset 2 pour la 

; bitmap 

; d'une fonStro 

; uno partio do la 

.-surface 

; fenetre onliere 

, mode copy 

; pas de clipping 

; supple' me rtaire 

; la griie n'ast 
; dessinee 
; qu'a tare! 



; morto srcXnr 



AtfGompte 
BTST 
BEO.S 
MOVEL 
_SatPort 
PEA 
_ Erase Red 
MOVE 0*,-{SP) 



fcountBit.statusReg 
@l 

wndow2.-(SP) 
cadran 



MOVE M13.iSP) 
_Mov0 To 



; We Sgne du 

; cadran 



; PROCEDURE NumToString(theNum rLONGINT; 
; VAR thoSlring ; StrSSS); 
; A TTENTION: Comme no llndrque pas I* Swede 
; ChemikoH, NumToSiitng utiliso les legieties AO et 
, DO en entree, taJeaant AO intact en sortie 



CLRL 
MOVE 

LtA 

_Num ToStrlng 



DO 

statusReg.DO 
theString,AO 



; lb bits de pods 
.far We 



Pom's n° 23 




MOVFL AO.-(SP) 
^OrMwRtrlne 

M4.JSP) ; une ligne plus 
;bas 

02S.JSP) 



D3,-(SP) 



CLRL 



MOVE.L 
MOVb 

@3 
TST.L 
BEOS 
MOVE! 
MOVE 

(36 
ASRL 
BCCS 
ADDOL 

DBRA 
&2 
DBRA 
LEA 



Board, AO 
0maxLong,D1 

m 

■4(A0).D2 
JQ1.D3 

Jf1.D2 

04 

Mi, DO 

Q3,@$ 

Dl,@3 
thoString,AO 



; Sauvona un 
.tegislie 
;aafcUdefe 
; population 



Controle | 


GO 




Stop 


m 


Une generation 




n generations... 




Basse resolution MS 


Haute resolution 


3€H 


^. 

Compteur 


MK 


Probability... 


3gP 


Remplissage aleatolre 


36A 



Source 'Vie4.Asm' 



Num ToStrlng 
MOVE.L AO.-(SP) 
^Drawstring 

MOVEL (SP}*,D3 

MOVE! Window 1,-fSP) 
_SetPort 

91 
RTS 



Cat 



; htecuperabon de 
;StatusReg 



CLR 
MOVE 



MOVb.L 

atcis 



I prod, act, surv et b 
i oorrooto on entr6o 
; Cole ne fee mod/to 
, moddu 03 DC 
D3 

031, D5 



(A1),D6 



BPLS <ge 



dorvent Sirs 
pas (AUA4), mate 



;encasde 

;bmnchment 

; juste apres 

; premier mot bng 

;s'iestnui mot 

.siJvant 

;Jh 1' bit est 



ADDO S 


02. 1(A4.DS) 




AD0O9 


eV.2lA2.DS) 




addo a 


0?.?(A3. DS) 




ADDQ.B 


02.2(A4,D5) 




@1Q 






ADDQ 


91,DS 




SU9Q 


01,04 




BtiE.S 






BTST 


D4.D6 




BEQ.S 






ADDQ.B 


02.O(A2,DS) 




ADDQ.B 


02.OIA3.D5) 




ADDO.B 


*2.0{M,Db) 




ADDQ.B 


02,1(A2,D5) 




ADDQ.B 


01 d 1(A3,D5) 




ADDQ.B 


02, 1(A4,D5) 




Annn fl 


MO (AO\ 

we 'jA*t 


OB pOCBI de 






.drorteades 


ADDQ.B 


*2.(A3) 


, ettets aussisur 






; toriot 


ADDQ.B 


02,(A4) 


• le plus a gauche 


KM 






st= 


S12(A2) 


; lee lignoc cant 
i babe' 


SF 


S12(A3) 




ST 


512(A4) 




RTS 




;Oufl 



Transfert ; la ligne vers laquette pred-A2 potnte 
; est parcourue. A chaque 0, I ou2 
; trouve, on aura un pixel 'vivant' a la 
; generation suivante. On met aunlebi 
;correspondant. La rangee ainei formee 
; est 6crite sur la rangee prec4dani celte 
; vers laquelie base points. En sortie, 
; ch-D7 vaut $FF si on a trouve au 
; mains un point vivant £ short 









i nuL bit survant 


mJvc 


0&4.D3 


. offset de la 




ADDQ.B 


w2R11IAP\ 


' affot ci r la 

, HUM ftIM IH 






;rangee 


, La rd OW U 






,* demioro case 


LJ rf 


07 


: ftagarim 


Ch^]nf rangee' du tableau ftel purmimti it Ut 


ADDQ.B 


02.5 T 1(A3) 


, d@s ttonsc 


CLR 


DS 


; premier element 


, I BITWCT* OS DMS M 1 jpi'oo k*TVd r )IS r^tsUI u HXJUW 


AnnoB 








;dolaBgno 


, LJti uouia, on &foui0 S3 cofiuiuuiiori au> tr 


ADDQ.B 




;ot our res 


&< 






J isorrospoftdont oux nouf ottoos d\j cstto 3x3 dont to 






, prtHniom 


MOVE 


03f,D4 


; bff do poids fort 


i pbtot oct to contro, otans toe 'lignoc ' ptocodonlo. 


ADDQ.B 


01 'A3) 






; (pixel gauche) 


i frtfV&VfiV PI t/Ui'OHIw 'cffpCTVt/i OiTrBilL i/PUP 


ADDO 8 






fit R 1 


DO 




i contribution vnut 1 pout te contnt ot 2 pec tous tos 


ADDQB 


it? 'A' 


, et secondes 


V** 






r lliff(<v f >tf r »CN i ,f* ! *f\/ B4 1 1 t-rv I t m4 L-t n u ft W f i*-lh ' 






.cases 




0fA2,D5),D0 


, Maone to veteur 


, L^UaiU ui rO lyiie a mo Ua/lo loo c'(/la ^KJolin/'E*, IWI 


ADDQB 


mc, 1 \r\Jj 




or t c 
.... .j 


<ao 






ADDQB 


It? MAA\ 
IK, 1 (r\t) 




rwp a 
l/W .a 


02, DO 




,' dans w tableau de la nouvate generation Comme Is 


@2 






BGTJS 


§0 




; ligne 6tait remplie au depart de -5, les pixels vrvants 


CLH 


05 


; modi ions I'octei 


BSET 


D4,D6 


; vivant aJO, lor 2 


; correspondent aux cases conlenant 0, t ou2, ce 






lie plus a gauche 


@3 






; ou'un rapide calcul permet de verifier. (L'mteeSt de 


MOVE 


030.04 


: le bit survant asi 


ADDQ 


01.D5 




; cette methode tordue par rapport a une methode 






:le03O 


DBRA 


D4.@5 


: mot ± lermne' 7 


; pbs 'natureh ' consistent par exemple a partir de 0. 


84 






MOVEL 


0&0(AUD3) 


: our. ecrivone-le 


: ajouter 1 ou 10 eta chercher les cases conlenant 3. 


BTST 


D4.D6 




BEQ.S 


@B 




: 12 ou f3 est de supprimer Sou 6 instructions a un 


BEO.S 




; branchement ei 


ST 


07 


I la rangae riant 


: anrtrnit rn trial ■ to gain fin tamp/! ac/ da J'nmYfi ria 






ibiaO 






; pas vide 


; 30°<,l I Cdo est lot par la routine TraneloA. Ilyados 


ADDQB 


02, 0( 'A3, DS) 




@6 






I C3S parOcvbors pour Joe prgmioros ot dofnioroe 


ADDQ.B 


02.O(A3,DS) 




ADDQ 


04,D3 


; fin do rangdo 


; rang/doc, ainsi quo pour loo promt ore ot dorniore bits 


ADDQ.B 


02,O(A4,DS) 








; atteinta 7 


J do chaque rangAo, porco quo jo wulaio un terrain 


ADDQ.B 


02. 1{A2,D5) 




BNES 


@1 


, non, mot suivant 


, toriqua : un glis&Bur dii/vtiiH a un bord r&appatait A 


ADDQ.B 


01, 1(A3,DS) 




RTS 






; rautre tjord au lieu de deg&noter en un miserable 


ADDQ.B 


02,t(A4,O5) 










, cane. 


ADDQ.B 


02,2{A2,DS) 




CalcxJe 






; NOTE : Javats dome dee noms symoottques aux 


ADDQ.B 


02,2[A3,DS) 




MOVEM.L 


fiOA4/DQ-U7,-{Sr>) 


; sauvons les 


; registres. mats I'assemDleur preiendan que tes 


ADDQ.B 


02,2(A4,D5) 








; registres 


; modes d'adressage complexes etatent titegauM. Jai 








MOVEL 


moins2,A0 


; done du rendre aux segistres leur nom ororigine, me 


ADDQ 


0105 


; inafrnenter h et 


MOVE 


0644,00 




; content ant de donner chdessous leur signification. 






: dect6menter 


@1 






DBRA 


D4,@4 


;ten'dubit. 


MOVEL 


0SFBFBFBFB. (AOh ; ana lignes a 


base EQU A 1 ; point e vers le debut (Tune 






: encore si -s-0 






: nettoyer 


irangee 








DBRA 


D0,@1 




prod ECU A2 ;'Sgne' prSctdente 


MOVF 


S3 1,04 




MOVE.L 


changed, chango 


; change EQU AO 


art EQLt A3 ; Hgne' prAsonte 








TST.B 


vMaxfAO) 


; domic fo rangdo 


simr EOLI A4 : 'ligne' suivante 


ADDQ 


M.D3 










chango EQU AO ; point o vors to booi&on qid 


CMP 


*60,D3 




BEQ.S 


@e 


; oui, passons 


; indiquo si une rangoo oet non 


BEQ.S 


<®7 




MOVE.L 


moins2,A2 


;vOe 


MOVEL 


0{A1.D3),D6 




MOVEL 


mo rial, A3 




temp EQU DO ; atockage tempo rains 


ONES 


<S* 




MOVEL 


pasO.M 




V EQU D2 ; coordonnoo rerti&oio (k 


ADDt 


402.05 






Board, At 


; adresse de base 


, 1'anvtfrs...) 


BRAS 










;dela 


m EQU 03 , ottsei au mot long dtudte (aot 


<S>7 






ADDA 


020544, A 1 


. derniero w<g9$ 


ideged) 


MOVBL 


0(A1,D3),D6 




BSR 


Cat 


H EQU 04 ; offset du bit (decrort de gauche 


BbQ.S 


m 




02 






;adtv4e) 


@9 






MOVE.L 


Board. At 




h EQU DS ; coordonnoe horizontale (emit 


BTST 


D4.D6 




TST.B 


(AO} 


.'premiere rangee 


;degad) 


BEOS 


@10 








:bknche? 


bkx EQU 06 ; le mot long parcouru ou 


ADDQ.B 


02.OfA2.D5) 




BEOS 


&3 




; constfut 


ADDQ.B 


*2.Q(A3,DS) 




MOVE I 


morvt 1.A? 




oh EQU 07 : la nouvetle ra/tgee a-t-ete un ' 


ADDQ.B 


02.O(A4.D5) 




MOVE.L 


pasO,A3 




;paet vivant 


ADDQB 


#2.1(A2,D5) 




MOVE.L 


pas1,A4 






ADDQB 


01, 1(A3,DS) 




BSR 


Cab 





46 



Pom's n 23 



£3 



KtOVEL pasO,A2 

MOVEL past, A3 

MOVEX pac9,A4 

MOVE 0vMax4,v 



5T2(A2) 



DC 



ADDA 


4/64.A1 


ADDO.L 


m.Ao 


TST.B 


512(A4) 


BNES 


m 


MOVE 


0128.DO 


ADDA 


051 6, A4 


5 

MO VEX 


0SFBFBFBFB, -(A4) 


DBRA 
4 


DO.@S 


TST.B 


(AO) 


BEQ.S 




BSR 


Cab 



TST.D 512(A2) 



BNES 
BSR 



Trnmmt 



;318rangooc 
; aembiobhs 



ta llgne suVsnte 

; eta utttsee ? 
;oui nettoyonsla 



; rangae blanch ? 
;oui savtonsJa 
; non, cstcul do sa 
; contribution 

; a-t-en Sent dans 

itaBgne 

, pm&fvntv 7 

, wji, udkul da ia 

.rangee 



TST.B 
BN£S 

MOVES d\-1(A0) 



Transfsrt 



MOVEX 
MOVEL 
ADDA 
ADDO.L 
TST.B 
BNE.S 
BSR 
MOVEB 
@10 
K40VEL 
ADDA 
ADDO.L 

TST.B 

BNE.S 
RSR 
MOVES 
@1 1 

MOVE ML 

ADDQ 

RTS 



A3.A2 

A4.A3 

0C4.A1 

0t,AO 

512(A2) 

<&IQ 

Transfer! 

cn,-i(AOj 

A3.A2 
064.A1 
01, AO 

512(A2) 
0ff 
Trarslert 
c*\-1(M> 

(SPh,AO-A4/D0-D7 
01,etatusRog 



- Donneoe refogtoabk 



MOVEB 


Ct%-1(A0) 


; qui est vide ou 












;non EventRecord 






Ranvoye' par 


@7 








GeiNextEvent 


MOVEL 


A2,-(SP) 


; rotation entie les What 


DC 





Nature de 




; tunes 






Tevenemant 


MOVE! 


A3.A2 


Message: 


DC.L 





precisions diverses 


MOVEL 


A4.A3 


When: 


DC.L 





nbde Ticks 


MOVE.L 


(SPU.A4 


Point: 






coordonnees de la 


DBRA 


v.<2>8 


;une autre 






sourie 






: rangae yCoot: 


DC 











xCoor: 


DC 







Encore deux 


; uno etiquette Modify: 


DC 


; Etai de commando. 






;ghboJo... 




; option... 


MOVEL 


monsS.M 










ADDA 


0O4.A1 




DC.L 





FUeuHatdh 


ADDO.L 


01, AO 








FhdWndow 


TST.B 


(AO) 










BEQ.S 


(26 


COHandte 


DC.L 







BSR 


Cab 


DStorage 


DCB.W 


DWtndLan.O . Dialogues 


&6 


TST.B 










S12(A2) 




reply 








BNES 


@7 


good: 


DC 







BSR 


Translert 


(Type: 


DC.L 







MOVEB 


<*\-t(AO) 


vFtetNuw; 


DC 







@7 




version 


DC 







MOVEL 


A3.A2 


theString: 


DCRW 64.0 


diverses chaines 


MOVEL 


A4.A3 






y mmpnt INama de 


MOVFI 


moins1.A4 






.SFRopty 


ADDA 


M64.A1 










ADDO.L 


M1.AO 


WindowRoct 


DC 


30,0,342,612 


TST.B 


(AO) 






; Tabh<*j do j&u 


BEO.S 


@e 


counter/Tact 


DC 


43,420,76,400 


BSR 


Cafe 






; compteur 



DC 
DC 



HemHi 
Horn Type 

ItemHandh DC L 

dapRect DC 



0.0.28.60 







0,0,0,0 




Board 


DC.L 





; bitmap (tabknai de 










rowoytes: 


DC 


64 


; comme screenbits 


hhbcv 


DC 


0,0.322,512 








; comme ponRea 


knifes 


DC 


0,0,276,448 








; pour dragGrayRgn 


GrMe 


DC.L 





; un autre bitmap 




DC 


64 






DC 


0.0.322.S12 


Tampon 


DC.L 





; tm troieiome 




DC 


8 




TampRoct DC 


0,0,46,64 


TmmponVde: 


OCX 











; sort A eftacer 






DC 


8 


TampVkbRed. 


DC 


0,0,40,64 


LoBea 


;46x 


64 centre (auamut) 


Top: 


DC 


138 




Lett: 


DC 


224 




Bottom: 


DC 


184 




Right: 


DC 


288 




Probe 


DC.B 


128 


; probe 1/2 au debut 


Pa 


DC 


0.0.0.0 


: gros 'poser 








: ractangiiake 


RoctHandle 


DC.L 





; Region rectangulajre 


wotohLtandlo 


DC.L 





; etrs&ur montm 


mains? 


DC.L 





; pcinteury de ligno 


iriuiaf 


DC.L 







pasO 


DC.L 







past 


DC.L 







part 


DC.L 







changed 


OCX 





; poiniB vets un tableau 



;de Dooleens 



; Donnees non reiogeables — — 

WStoragel DS.W WhdowSize 

: Fen&tre principaie 
WSlortQe2 DRW WrrlowSirn 

; Fenetra du comptfHrr 
ParwnBJock DS.W SO ; Pour lev 

; entrees/sorties 



Fichier 'Vie.R' 

Jeu de la Vie 
APPUDLV 

INCLUDE Vie.Code 

Type MENU 
.1 
M4 

Cast lave... 

(• 

FkJwi 

Nouveau 
Ouvrt... 

Enregtstrer sous... 
(' 

Cxitter/Q 

Edition 
Annuter/Z 

(■ 

Couper/X 
Copiar/C 



CoieoV 

Fffanor 
,4 

ContrAh 
GoC 
(StoprG 

Uiie gtnatatbnrV 

n gin6ietiorv. .JN 

(• 

Basse reeoiutiorvB 
Haute resotutton/H 

(■ 

Gompteur/K 

r- 

Probat)M..JP 
RempOssage aMatowa/A 

Type ALRT (32) 
,1 

100 50 210 450 

1 



TypoDtTL 
4 



Button 


4 


TypeDiTL 


80230 100 290 




3 


OK 


Button 


4 




40 40 60 120 




StaHcTaxt Disabied 


OK 


Button 


152036300 




40 40 60 120 


Jeu invents per J. Conway 


Button 


OK 




40 180 60 260 




StoticToxt Disabled 


Annuler 


Button 


35 20 56 380 




40 180 60 200 


O Dominique Bernard/ 


StabcToxt Disabled 


Annuler 




1530 36200 




SaticText Disabled 


Nombre de generations: 


StabcText Disabled 


5S2QT630Q 


153036200 


et Pom's 


EdrtText Disabled 


Pourcentage de vivants 




16220 31270 




TypeDLOG 


25 


EdrtText Disabled 


2 




1622031 270 




TypeDLOG 


50 



100 100 170 400 
Visible NoGoAway 
1 


2 

TypeDiTL 



100 100 170 400 
Vhibh NoGoAwoy 
1 

O 

3 



TypeSm 
,1 

Norn du nouveau Hchior: 



Pom's n° 23 



47 



Routine de Saisie 



En passant de l'Apple // au 
Macintosh, le Basic de Microsoft 
a conserve les caracteristiques de 
son instruction standard dc saisic 
au clavier ; de fait, rimrruction 
INPUT n'est pas plus 
performante aujourd'hui quelle 
ne r&ait jadis. 

Certes, les "evolutions Mac", du 
type EDIT FIELD ou autres 
EDITS, apportent un plus 
incontestable, mais nc pcrmettent 
pas de controler la saisie en 
fonction du type de donnees 
attendu. Par ailleurs, elles ne se 
patent gu£re aux operations de 
saisie "intensive", car toute 
correction de frappe impose une 
utilisation alternative de la souris 
et du clavier... 

Dans ses precedents numeros, 
Pom's vuus a souvent propose 
des solutions aux probl^mes de 
saisie en Basic, sous forme de 
routines en assembleur ou en 
Applesoft, k des niveaux de 
complexite varies. Dans ce meme 
esprit, nous vous presentons ici 
un exemple de routine Basic que 
vous pourriez integrer dans vos 
programmes dfcs lors que la 
frappe y joue un role important. 

Principes 
d'utilisation 

Les donnees sont saisies par 
sous-ensembles correspondant k 
des tableaux de variables (par 
exemple, un tableau pour toutes 
les informations a saisir en un 
meme ecran). L'affichage doit 
toujours se faire avec une police 
non proportionnelle afin de 
permettrc des deplacements 
corrects sur une ligne de saisie 
(voir plus loin). 

Chacune des donnees est en outre 
identifiee par : 

• un libelle precisant le contenu 
de rinformation k fournir et les 
coordonn^es horizontale et 
verticale du point k partir 
duquel doit cornmencer l'affi- 



chage du libelle (ces coordon- 
nees sont exploitees par une 
instruction MOVETO) ; 

• la position du point & partir 
duquel debutera la saisie 
(coordonnces horizontale et 
verticale) ; 

■ le nombre maximum de 
caracteres autorise pour la 
saisie de cette donnfe ; 

• le type de la donnee. 

Cc dernier parametre peut prendre 
les valeurs suivantes : 

• 1 pour indiquer une donnee 
alphanumerique. La routine 
acceptera alors la frappe de tout 
caractfcre de code ASCII 
superieur ou egal k 32, les 
guillemets, la virgule, les 
deux-points et le point-virgule 

etant toutefois remplaces par 

un point, afin d'eviter les 
probl&mes d'exploitation ulte- 
rieure des informations 
entrees. 

• 2 pour une donnee numerique. 
Ne sont alors acceptes que les 
chiffres, les signes V 1 et 

et le point decimal (la frappe 
d'une virgule est aussitot 
transform ee en point). 

• 3 pour indiquer une date. Ne 
sont alors acceples que les 
chiffres et la barre de fraction 
"/". La date doit normalement 
etre saisic sous la forme 
JJ/MM/AA mais, si vous 
rentrez 1/1/86, par exemple, la 
routine completera elle-rneme 
pour obtenir 01/01/86. De 
plus, un controle est effectue 
sur la valeur de JJ (inferieure a 
32) ct sur celle de MM 
(inferieure a 13). 

La routine utilise quatre touches 
pour permettre les deplacements 
sur une ligne de saisie ou d'une 
ligne a l'autre k 1'interieur d'un 
tableau. 

• RETURN permet de passer k 
la ligne suivante ou k la suite 

du programme s'il s'agit de la 
demiere ligne. En outre, cette 
touche valide la saisie en affectant 



a une chaine de caracteres tous les 
caract&res qui se trouvent k la 
gauche de Ten droit oil est entre 
RETURN (si vous tapez 
RETURN a 1'interieur d'une 
ligne de saisie, vous annulez la 
partie droite de la frappe). 
Par ailleurs, si RETURN est la 
seule touche que vous frappez en 
tSte de ligne, vous passez a la 
suivante tout en validant sans le 
modifier le contenu de la ligne. 
Cela vous sera notamment utile si 
vous vous deplacez k 1'interieur 
du tableau pour le modifier. 

• Lorsque vous etes au debut 
d'une ligne (sauf la premiere..) 

et que vous n'avez encore entre 
aucun caract&re, la frappe de 
ENTER (la touche qui se trouve 
juste k droite de la barre d'espace) 
vous permet de retourner au 
debut de la ligne precedente. Ceci 
reste valable meme lorsque des 
caracteres sont affiches sur la 
ligne (modification d'une saisie 
anterieure), car e'est l'absence de 
frappe et non l'absence d'affi- 
chage qui est testee. 

• Sur une ligne, la frappe de 
"Backspace" (en haut et k 

droite du clavier) permet de 
reculer le curseur (materialise par 
un signe _ ) d'un caractSre. Les 
caracteres situcs alors a droite du 
curseur ne sont pas perdus, 

meme si vous modifiez Tun de 
ccux qui les precedent, dds lors 
que vous ramenez le curseur a 
rextremile de la ligne, au moyen 
de la touche decrite ci-dessous, 
avant de taper RETURN. 

• Toujours sur une ligne, la 
frappe de la touche de 

tabulation permet de dcplacer le 
curseur vers la droite et de 
restituer les caracteres sur 
lesquels vous etiez prealablement 
passe avec la touche Backspace. 

Principales 
variables utilisees 
par la routine 

n d % : nombre de donnees 



48 



Pom's n° 23 



EN BASIC GmrdMichel 



(lignes) \ saisir. 

zc$(i) : ce tableau contient les 
donnees saisies en sortie de la 
routine. Chaquc clement du 
tableau correspond ii une ligne. 
tt% : si cettc variable vaut 0, elle 
indique une premiere saisie. Dans 
le cas contraire, il s'agit de 
modifier un tableau prece- 
demment entre. Les valeurs 
initiales doiyent alors ctrc 
basculees dans zc$(i) avant 
l'appel de la routine. 
li$(i) : contient les libelles a 
mettre en regard des donnees a 
saisir. 

Ih%(i) et Iv%(i) contiennent les 
coordonnees horizontales et 

verticales des libelles. 

zh%(i) et zv%(i) : coordonnees 
horizontales et verticales des 
points de depart de chaque ligne 
de saisie. 

1I%0) : longueurs maximales 
des donnees. 



ty%(i) : types des donnees. 
pc% : position du curseur sur la 
ligne (vaut 1 pour le debut de la 
ligne). 

1% : nombre de caract&res entres. 
te% : vaut si aucun caractfere 
n'a ete frappe. 

dd% : ce paramfctre est fix6 a 7. 
II correspond a la valeur qu'il faut 
ajouter ou retrancher a la 
coordonnee horizontals d'un 
MOVETO pour obtenir un 
deplacement equivalent a la place 
occupee sur 1'ecran par un 
caract^re en police Monaco 9 
points. 

d % : indique la coordonnee 
horizontale du prochain caract&re 
a saisir. 

z$ : re§oit le caractSre frappe. 
c$ : chaine tampon "archivant" 
les caract&res avant leur validation 
par RETURN et leur affectation £ 
zc$(i). 

k$ : contient le caract&re sous le 



curseur et les caract£res qui se 
trouvent ii sa droite, en cas de 
retour en arrifcre. 

Programme de 
demonstration 

II permet de saisir deux tableaux, 
Tun de 4 variables et l'autre de 3. 
Chaque tableau saisi est alors 
affiche pour contr61e. 
En mettant a 1 la valeur de tt%, 
vous pouvez ensuite modifier 
votre premiere saisie pour ces 2 
tableaux. 

Cet exemple tits "depouille" vous 
aidera simplement i analyser la 
fa^on dont vous pourrez appeler 
la routine de saisie dans vos 

propres programmes. 





Programme de 
demonstration 

' Iiiiiialisation et appels de la routine 
OPTION BASE l:tt%=0:nl%=l:DIM sv$ (2 , 4 
) 

r Definition des libelles du premier tab 

leau (premier ecran) 
CLS rDATA 4 , LIBELLE 1, LIBELLE 2 , LIBELLE 
3, LIBELLE 4, 50, 50, 50, 80, 50, 110, 50, 1 
40 

' Parametres des donn6es du premier tabl 
eau 

DATA 130,50, 15,1,130,80, 6, 2, 130, 110, 8, 3 

,130,140, 50, 1 
' Definition des libelles du second tabl 

eau 

DATA 3, SUITE 1, SUITE 2, SUITE 3,100,100, 

100,130, 100, 160 
' Parametres des donnees du second tahle 

SKI 

DATA 180,100, 20, 1, 180, 130, 10, 2 r 180, 160, 
8,3 

' Debut du programme de demonstration 
' Saisie des deux tableaux, modification 
des m§mes tableaux et fin du progra 



depart : 

IF nl%>2 TBEN tt%-tt%tl:RESTORE:nl%-l 

: ' Preparation de la modification 
IF tt%>l THEN END 

GOSUB lecture : CLS : IF THEN FOR i 

=1 TO nd%:zc$(i)=sv$ (nl%,i) :NEXT 
GOSUB saisie : CLS : FOR 1=1 TO nd% :MOVET 

10, 50+30* (i-1) :PRINT li$ (i) " : "z 
c$(i) : NEXT: PRINT: PRINT: INPUT 2$ 

FOR 1=1 TO nd%:sv$ (nl%, i ) =zc$ (i) :NEXT: 

1 sauvegarde des donn6es saisies 
nl%=nl%+l:GOTO depart 

' Lecture des libelle's et des parametres 
lecture: 

READ nd*:FOR 1=1 TO nd% :READ US (i) :N 
EXT: FOR i=l TO nd% : READ lh% (i) , lv% 
(i) : NEXT 

FOR i-1 TO nd%:READ zh% (i) , zv% (i) , 11% ( 

i) , ty% (i) :NEXT 
RETURN 

9 

' Routine de saisie 

r 

saisie: 

' Police non proportionnelle en 9 points 
TEXTFONT A : TEXT SIZE 9 : TEXTMODE 



Pom's n° 23 



49 



IF tt%~0 THEN FOR i=2 TO nd% ; 2 
C$ (i) ="" :NEXT: ' tt%=0 => sa 

isie 

t \~ r ^^ i FOR TO nd%:MOVETO lh%(l),l 

V% (I) :PRINT 1 t$ (i) " : :M 
OVETO Zh% (1) , ZV% (i) :PRINT 
ZC$(i) ; :NEXT 
FOR 1=1 TO nd%: ' Boucle de salsie des 

debut : 

' Initialisation des variables pour la s 
aisle 

d%=zh% (i) : zv%=zv% (i) :MOVETO d%, zv% :dd%- 
7:k$=zc$(i) :c$=zc$(i) :l%=LEN(c$) :pc 
%-l:ll%-ll%(±) :ty%-ty% (1) :te%=0 

r Affichage dv cursevr et attente d'un c 
aractere au clavier 

100 PRINT MOVETO d% - dd% , zv$ : PRIN 

T kS: -.MOVETO d%-dd%, zv% : z$=TNKEY$ 

:IF z$="" THEN 100 
c%=ASC(z$) :IF c%=13 AND te%-0 THEN PR 

INT c$; :GOTO fin 
IF c%=3 AND te% = THEN IF 1>1 THEN i = 

i-1 :MOVETO d%-dd% , zv% : PRINT c$" 

:GOTO debut ELSE BEEP: GOTO 100 
te%-l: ' Un caractere different de RETUR 

N (13) ou ENTER (3) est frappe 
* c%=8 => en arriere 
tus; processing jo 

IF c% = 8 AND pc%=l THEN BEEP : GOTO 10 
IF c%=13 THEN C$=LEFT$ (c$,pc%-l) :MOVE 

TO d%-dd%, zv%: PRINT SPACE$ (11%-pc 

*+?.) ; :GOTO fin 
IF c%=9 AND pc %=1%+1 THEN BEEP: GOTO 1 

00 

IF c%=9 THEN PRINT SPACE$ (ll%-pc%+l) ; 
:M0VETO d%-dd%, ZV% :PRINT MID$(c$, 
pc%, 1) 9 :GOTO 300 
IF C%=8 THEN 200 

IF pc%=ll%+l THEN BEEP : GOTO 100 

IF c%-34 OR c%=44 OR c%-58 OR c%=59 TH 

EN z$=". "tc%=46 
ON ty% GOTO alpha, num, date 
alpha : 

IF c%<32 THEN BEEP: GOTO 10 ELSE suit 

e 

num: 



IF c%=46 OR c%-45 OR c%=43 THEN suite 
IF c%>57 OR c%<48 THEN BEEP : GOTO 100 

ELSE suite 
date: 

IF c%<47 OR c%>57 THEN BEEP : GOTO 100 

suite: 

IF k$<>"" THEN PRINT SPACE$ ( ll%-pc%) ; 
k$=" " : MOVETO d%-dd% , zv% : PRINT k$; : MO 

VETO d%-dd%, zv% : PRINT z$; :d%=d%+dd 

%:pc%-pc%+l:IF pc%**l%+2 THEN 1%~1% + 

1 :c$=c$+z$rk$="" .-GOTO 110 
MID$(c$,pc%-l, l)=z$:k$=MlD$(c$,pc%,l) 
110 MOVETO d%-dd%, zv% -.GOTO 100 
200 pc%=pc%-l :IF pc%<l% THEN MOVETO d% 

-dd%, zv% :k$=RIGHT$ (c$, l%-pc%+l) :PR 

INT k$; :GOTO 210 
k$=MID$(c$ f pc%, 1) 

210 MOVETO d%-2*dd%, zv% :d%=d%-dd% -.GOTO 
100 

300 pc%=pc%+l:k$=MID$(c$,pc%, 1) :d%=d%+d 
d%:GOTO 110 

fin: 

IF ty%<>3 OR c$="" THEN bcl 
' Contrdle de conformity de la date sais 
ie 

FOR j=Z TO 3: IF MID$ (C$, 3,1) <>"/" THE 
N dO 

IF j<3 THEN c$="0"+c$:j=3 
dO: 

NEXT: IF MID$ (c $ , 3 , 1 ) <> " / " OR VALfLEF 
T$ (c$, 2) )<1 OR VAL(LEFT$ (c$,2) ) >31 
THEN BEEP : ZC$ (i ) =C$ : GOTO debut 

FOR j~4 TO 6: IF MID$(c$, j,l) <>"/" THE 
N dl 

IF j<6 THEN c$=LEFT$ (C$, 3) +"0"+MID$ (C 
? f 4):j=6 

dl: 

NEXT: IF MID$ (c$ , 6 , 1 ) <>" / " OR VAL (MID 
$(c$,4,2))<l OR VAL(MID$(c$ r 4,2))> 
12 OR LEN(c$)<>8 OR MID$ (c$, 7 , 1 ) =" 
/" OR RIGHT$(c$ f 1) = "/" THEN BEEP: 
zcf(i)=c$:GOTO debut 

bcl: 

' Affectation de la variable et suite.. . 
zc$ (i)=c$:IF c$="" THEN MOVETO d%-dd%, 

zv%: PRINT " "; 
NEXT : RETURN 



A propos de '•-> Corbeille' 

Avec le nouveau systeme (disquette 22), la fenetre inferieure de cet accessoire (Pom's 21) est partiellemcnt 
masquee par la fenetre de selection des fichiers, plus grande qu'avec les versions anterieure du syst£me. Ceci 
n'empcchc pas ce 'mini-programme' de fonctionner mais fait un peu 'desordre'. Pour que tout rentrc dans 
l'ordre, il faut remplacer la ligne : 

MOVE.L #$00280014,- <SP) par MOVE.L #$00200014,- <SP) 
ct la lignc : 

RectanqleF DC 198, 20, 281, 368 par RectanqleF DC 252,20,335, 369 



Poms n° 23 




Gaeian Dagron 
Delphine Declcrcq 
Jacques Honnre.z 
Niels K0ge 
Herve Thiriez 




une rubrique ouverte aux lecteurs 



Pour la souris 

Qui n'a pas sous la main une 

vieillc radiographic ? Ce support 
anli-staiique semblc etre 1'ideal 
pour lcs evolution dc la souris. 
Moins dc risqucs dc voir lamina! 
sesalir! 



Commande, Option, 
Majuscules ? 
Pour savoir quel est 1'etat de ces 
touches, ainsi que 'vcrrouillagc 

majuscules' depuis un pro- 
gramme Basic, il faut lire le 
contenu des adresscs S17A cl 

SI7B- 

• kbit 7 dc517Acsia 1 si la 
louche 'Commande' est 
enfonccc ; 

- le bit Ode S17Besta 1 si l'une 
des louche? 'Majuscules' est 
enfonccc ; 

• le bit 1 de S17B est a 1 si la 
louche 'Verrouillage majus- 
cules ■ est enfonccc ; 

■ le c-it2de$17Bestal si l'une 
des touches 'Option' est 
enfoncee. 



Commande 



SI 7 A 


7 


6 


5 


4 


3 


2 


1 











16 


H 


4 


2 


1 


$171} 










3 


2 \l \o 



J 



Option 
Verrouillage Majusc. 

Majuscules - 1 



Dans un programme Basic, on 
pourrait done Uouver des lignes 
telles que : 

IF PEEK(&ril7A) AND 

128 THEN Commande 
IF PEEK (Shl7B) AND 1 

THEN Maiuscule 
IF PEEK ( fihl7B) AND 2 

THEN Verrouillaqe 
IF PEEK(Shl7B) AND 4 

THEN Option 
ou encore, si I on veut savoir si 
les touches 'Option' el 
'Majuscule' sont enfoncies 
simulianemcnt : 

IF PEEK(£hl7B) AND 5 
THEN Option. Ma j. 

N.DX.R. : si vous programme! 
cn assembleur, ces deux adresses 

correspondent a Key Map* 6 ei 
KeyNap+7. 



LaserAstuces 

Pour eviter de gicher une feuille 

He papier et de l'encre avec 
l'auto-test a l'allumage de 
l'apparcil, il suffit de rctircr 
raiiincnlalion papier au momeni 
de l'allumage et de la remettre 
lorsque le temoin vert ne clignotc 
plus. 



Titres encadrcs 
avec MacPaint 

Mettre un litre dans une zone 
comportant un decor n'est pas 
une sinecure avec MacPaint One 
premiere solution revieni a entrer 
le lexte une fois le decor crcc. Le 
detourage du texie ainsi obtenu 
pent etre juge frop important : 



iExemple de titre i; 



La seconde solution, bien moins 
liable, consistc a taper lc tcxtc cn 
dehors du cadre puis a Vy placcT 
avec lc lasso; 



exempli de 



La procedure indiquce ci-dessous 
permet de construire, certes au 
prix de quelques manipulations, 
un detourage A la fois lisible et 
moins brutal que lc detourage 
rectangulaire prtfsente* en 
premier : 




Premiere elape : activcr la 
grille, si possible avant de 
dessiner le cadre. Cela nous 
pcrmcttra dc mcillcurs centrages. 

Seconde etapt : taper le litre en 
dessous du cadre, le selectionncr, 
le copier, le coller (preserve 
l'original qui scrvira plus tard), 
demunder une fois lc contour el lc 
placer avec le lasso dans le cadre. 

Trolsleme Itape : activer la 
loupe, choisir la pcinture blanche, 
et verser la peinlure sur le bord 
exterieur du icxte : 







•? Aj 




85 1 


^mm m " a 1 




■ ■A" 1 

■ ■■HIIII 

■ s ■■■■■ 

■ ■ 


3D 


■ s— 1 




■ ■■■■ 



L'utilisaiion de la loupe nous 
permet de verser la pcinture, 
exactement sur le trait exterieur, 
sans difficult^. 

Quatrteme etape : se dcplacer 
avec la main pour continuer la 
me'ine operation de blanchissagc 
(2 fois ici) sur le reste du texte, 
qui ra 'est pas forccmcnt jotntif. Lc 
resuluu est alors : 



Clnquleme etape : il ne resie 
plus qua y placer avec le lasso lc 
texte qui etait reste au naturel 
sous le cadre, ce qui nous donne 
le resultat final presents* plus 
haut. 



Modifier «5ystem» 

On nc pcut normal em ent modifier 
lc noin du fielder, 'System'. Pour 
y parvertir, dupliquez-le et 
modifiez alors si vous lc voulcz lc 
nom de 'Copie de System' qui 
sera, lui, modifiable jusqu'a sa 
premiere utilisation sous le nom 
dc 'System 1 . 

L'interet de faire porter a un 
fichier 'System' un nom 
different, e'est que cela vous 
permet dc lancer un programme 
place sur une disquetce 
comportant son propre 'System' 
(rebaptise^ a panir dune 
disquette ayant un 'System' 
different, sans activer 
automatiqucmcnt lc systcme du 
programme. 

Exemple : la disquetle Multiplan 
comporte son systcme norma], 
mais nous souhaitons travoiller a 
leciaii a partir d un systdme ne 
componani que les polices 



rninimales, pour voir plus de 
lignes et dc colonnes a l'ecran. 
Au moment do lancer 
l'iiiiprcssion, nous rcactivons lc 
sysieme normal, afin d'obicnir dc 
jobs caracteres. 



On ne copie pas ! 

Pour interdire les copies d'ecran 
- sur papier ou sur disquette - 
avec la sequence de louche 
"Commande/MajuscuJes/3 ou 4" 
U faut uuliser : 

POKE Sh2F8,0 

Notons qu* ceci interdit aussi 

rejection des disqucttcs avec 

''Commandc/MajuscuIcs/1 uu 2". 
Pour de nouveau autoriser ces 
fonctions : 
POKE &h2F8,l 



Passage a Excel 

Quand on charge des tableaux 
Multiplan dans Excel, unc fencue 
de dialogue peut apparaitre, 
demandant si Ton souhaite avoir 
seu lenient le total des erreurs : ce 
n'est pas la peine de demander 
plus dc detail ; on nc pourra de 
louie facon ricn y faiic. 

Les erreurs proviennent par 
exemple de fonctions telles 
NbiterO ou DeltaO^qui. dans 

Excel, sont remplacees par des 
porarnetrcs de calcul it eratif places 
dans des fenctrcs. 

De memc. les formats dTExcel 

sont plus riches, sauf en ce qui 
concerns le format Histogramme 
qui n'cxistc plus, probablcmcnt a 
cause de la facfliic uc icalisci des 
graphiques avec Excel. 
Si Ton traduit souvent des 
tableaux dc Multiplan vers Excel, 
le mieux est dc cunstruirc des 
macros qui automatisent autant 
que possible les conversions les 
plus frequentes (par exemple 
pour les formats). 



'Bip 1 ou pas 'Bip' 

Pour mcllrc cn ou hons fonciion 
le haul parleur depuis un 
programme, il faut 'POKer' 
respectivemeni 1 ou a 1'anreKse 
S260. 

Quelqu'un connait il la methodc 
pour faire varier simplement lc 
niveau sonore ? 



Pom's n 23 



51 



Disquette Mac A 



SORT MENU : un utilitaire de tri de menus ; 
PAINT MOVER : copier et manipular les 

images MacPaint (uniqueintfril sur 

5l2Ko ou Plus) ; 
ACCESSOIRES DE BUREAU 

'MOCK' : mini traitement de texte, 

grapheur at terminal : 
CONVERT DAM : pour passer de DA Mover 

a Font/DA Movor ; 
FEDIT : un editour do Woes ot de ffichiers (en 

anglais) ; 
CUBE : un jeu en accessoire ; 



IDLE : pour preserver votre ecran riurant de 

longs IraitomonlG ; 
MULTISCRAP ; acce^oire pormottant de 

disposer de plusieurs album a \a fois , 
C CHECK : pour verifier les niveau* de 

parentheses en lano,age *C' ; 
HEX CALC : I'indispensable calculatrice 

hexadedmale ; 
MEGAROlDS : un jeu d'adreese ; 

MEM WINDOW : permet de listor la 
me mo ire du Mac. 

UL 



O 

O O 

00 C d) 
■■OCT 
- CD (0 

< a. 




I Ml 

CO c 



0> Li- 
CO 



CO 

E 

E 
o 



Vos impots avec 
Multiplan sur 
Macintosh 

La feuille de calcul Multiplan 
listee pages suivantes et 
destinee a I'Apple // est 
compatible avec Multiplan 
sur Macintosh. II faut : 

• saisir la liste avec un 
traitement de texte 
quelconque (MacWrite, 
Word, editeur MDS) ; 

• remplacer la premiere 
ligne (id ; pmp ) par 

ID;PMP;N ; 

• sauvegarder le tout sous 
format TEXTE ; 

• charger le fichier resultant 
depuis Multiplan. 

Une version specialement 
modifi6e pour le Macintosh 
est disponible sur la 
disquette Mac 23. 



Disquette Macintosh 23 

Celle nouvelle disquette est accompagnee de la version "Run Time" du Basic Microsoft 2.10, qui ne 
comporte que l'interpreteur. Ceci permettra d ceux d'entre-vous qui ne disposent pas du Basic d'utiliser les 
programmes publies dans Pom's. Ccttc version ne remplace pas le Basic Microsoft tel que Ton peut le trouver 
dans le commerce (ette permet seulement l'execution des programmes), mais a 1'avantage de prendre moins de 
place sur les disquettes. 



Vous trouverez aussi une version 
'Mac' de la fcuillc dc calcul 
Multiplan listee pages 
suivantes, autorisant un calcul 
simple du montant de vos impots. 

Keeper est un petit utilitaire qui 
garde le Finder en memoirc, 
reduisant ainsi le temps de ret our 
au bureau a mois d'une seconde 
(ne fonctionne pas sur un 
Macintosh 128Ko). 

Et, bien sur, les fichiers et 
programmes lies aux articles 
publies dans ce numero. 



6 Fichier Edition Selection format Options Calcul 



H6C12 




IMPOTS • 



1 



:5 ) TRAITEMENT 
KAT '""l20* OOOJKCj 

la: 6?' ooo Tlc 



ma; 



Mt 



121 

1 16 

TT 



□ Cakulatrice 



n 

12 1 
I 2 

11 



13216.00 



\WBBM 

'Emm.. 

\WBT\ 



in 



it 



12 



13 



1 4 



KG; 



7 500 ;kh; 



25 : KJi 



lg; 12 ooo ;lh; 



30 ; lj; 



Ml- 



o ;mj; 



o 



IMPOT APRES REDUCTIONS LIGNE □ : 



y ; DECOTE LIGNE D i 



21 377 

o' 



LUS-VALUES TX PROPORT. LIGNE F i 
LI GNE K : 

MPQT APRES CORRECT ION L I GNE G *! 



21 



dPOT 



;MI NORATION 1986 : 
IR' APRES MIN0RATI0N 1986 i 
T MPOf C OMP L EMEN t A I RE 1 W' 



377 

i no 

19 667 



IE0IT5 D IMPOTS, AVOIRS FlSCAUX i 



IMPQ T DU : 



79 
6 500 
"13 "246' 



15 



52 



Pom's n" 23 



IMPOTS 



Christian 
Piard 

MULTIPLAN 



f V u * te logique du pensum 
que constitue chaque 
. annee la declaration dc 
revenus, voici le 
necessaire pour calculer sim- 
plement le montant de vos impots. 

Nous avons le privilege d'avoir 
un Code General des Impots 
detaille (euphemisme !). Le 
resumer dans ime feuille de calcul 
d' Apple n'entre heureusement pas 
dans nos ambitions : il n'est 
question ici que d'un calcul 
utilitaire integrant les revenus de 

la grande majorite des 

contribuables. La presente feuille 
de calcul est le reflet de l&fiche de 
calcul facultatif, pages 9 h 12 de 
votre notice. 

Les calculs 

Pour la determination de Timpot, 

il a ete tenu compte des limites, 
deductions et abattements en tous 
genres avec leurs limites 
infericures et superieures, des 
eventuels 'abattements speciaux', 



du plafonnement du quotient 
familial, des eventuelles decotes, 
de la minoration de 3 % 1985, du 
1 % sur le revenu des capitaux 
mobiliers et autres avoirs 
fiscaux. .. 

Les lecteurs d'Outre-Mer seront 
degus : il n'a pas ete possible d'y 
integrer le plafonnement D.O.M. 

Comment faire ? 

Le fichier liste dans ces pages est 
en format symbolique. Si ne vous 
disposez pas de la disquette 
d'accompagnement, vous devrez 
saisir le-dit fichier & l'aide d'un 
traitemem de texte, le sauvegarder 
en format TEXT, le relire sous 
Multiplan en precisant format 
symbolique. Ccttc feuille de calcul 
occupera 99 % de la memoire 
disponible sur un Apple // 64 Ko, 
et57%sur un 128 Ko. 

De la ligne 1 k la ligne 64, vous 
trouverez une copie de votre 
declaration de revenus : il vous 
suffit de recopier celle-ci dans 



Multiplan. 

Par exemple, vous avez declare a 
votre percepteur un salaire 
imposable de 100 000,00 F que 
vous avez inscrit dans le *5 t ligne 
KA ; il vous suffit de reporter 
cetle somme dans la feuille de 
calcul, cellule L42C2, celle qui 
vient juste aprfes la mention KA. II 
en va de meme pour 1'ensemble 
des sommes que vous avez 
portccs sur votre declaration. 
Ligne 125, vous devriez alors 
trouver le montant de l'impot du, 
les calculs intermediaires se 
faisant dans les lignes 66-123. 

Attention, au hasard de vos 
essais, pour effacer un montant, 
mettez 0, mais ne laissez pas la 
cellule & blanc : les abattements et 
plafonnements deviendraient 
fantaisistes... 



Quelques precisions 

Seul un fiscaliste est capable de se 
retrouver dans les inextricables 
meandres de la legislation. Cette 
feuille de calcul a ete testee dans 
bien des cas, les planchers et 
plafonds verifiees maintes fois 
mais, dans ce domaine, on ne 
peut etre exhaustif ; il reste certai- 
nement des cas ou l'tnteraction de 
telle condition avec telle autre 
pose un problfcme. 

Le but de cette feuille est utilitaire, 
n'y cherchez pas une finesse de 
programmation confinant h 1'Art. 
L'utilisateur ne peut d'ailleurs Stre 
que modeste devant les auteurs de 
Multiplan, auteurs que certains 
appellent les 'Paganinis de 
rinformatique'. 
Des artistes quoi ! 



1-1 


1 


* * — fc— 

2 3 


4 


S 


f ¥ 

6 ? 


e q 


10 


11 




! 4t 




S> TPfllTEHENTS, 


SPLAT RES 












! 42 


KB 


120.000 KC 




KD 


KE 


7.500 KG 




40 KH 




! -13 


Ufl 


1 17.000 LC 




U> 


LE 


12.000 LG 




30 LH 




1 44 


MB 


o nc 




M3 


o n£ 


Q MG 




AH 




! 45 


Nft 


NC 




NO 


NE 


NG 




NH 




! 46 


PB 


PC 




PO 


PC 


PG 




PH 




! 4? 


IV) 


RC 




RC 


RE 


RG 




RH 




! 48 


sn 


sc 




SO 


SE 


SO 




SH 




! 49 


Tfi 


TC 




TD 


TE 


TG 




TH 




' 50 


Ufi 


uc 




UO 


U€ 


UG 




UH 




1 01 




w 




UO 


UG 


UG 




UH 








•1 * 
















't 


rT , 




1+ 


7* 1 










'-2 


1 


2 3 


4 




o to 


11 12 


13 


14 




I 00 


RB 


5.6?0 BO 




! ! 123 


COttPLEMENTfllRE 11 






! 


! 57 


Bfi 


BB 




M124 CREDITS ftOOIRS FISCRUX 






I 


1 38 


Cfl 
-t— 


CB 




! ! 125 


IMPOT DU 

-t — t- 


— t — < 






— + — » 



SCRTIE: Q23BBEByH Fichi«r Poga Options 



JT-q i s i sser una option ou frapp «z la caroctarv oe coawandt 

_i23CH L<-3>CrLC-2X;-L<-l>C 5*7* Libre Multiplon: Iff'OT.DS 



Pom's n° 23 



53 



Fichier 
' I M POTS' 



ZD; PHP 
F;K;DQ0G10 
F;W1 1 3 
F,H3 3 3 
F;H5 5 3 
F;W7 7 3 
F;W9 9 3 
r;wll 11 3 
F;W13 13 3 
F;FI0C;C1 
F;FI0C;C5 
F;FI0C;C9 
F;FIOC;Cll 
F;FICG;C2 

F;FI0G;C3 

F;FI0G;C4 

F;FI0G;C6 

F;FI0C;C7 

F;F10G:C8 

F;FIOG;C10 

F;FI0G;C12 

F;FI0G;C13 

F;FI0G;C14 

B;Y12S;X15 

C.Yl; XI / X" 3 170 AT ION DE 
FAN ILLS (N=l /C~2/D=3 
/-V-4) ■ 

F.FCOR 

F/X2/FC0R 

F;X3jFC0R 

F;X4yFC0R 

r,x5sFC0R 

F;x6 r FC0R 

C;X8jKl 

C; Y2 ; XI ; K "iUVAh IDE ( 0/1 

. r 

F; FCOR 
F;X2;FC0R 

F;X3;FC0R 

F;X4;FC0R 

F;X5;FCQR 

F;X6;FC0R 

C;X7;K m P" 

C;X8;K0;G 

C;Y3;3;R2;C6 

C;Y4;S 

C;Y5jS 

C:Y€:S 

C;Y7jS 

C; Y8;3 

C; Y9;S 

C; Y3 ;X1 f K"EPOOSE TNVAT.T 

DB (0/1) " 
F.FCOR 
F; X2 ; FCOR 
F.X3/FC0R 
F;X4;FC0R 
F;X5;FC0R 
F, X6 ; FCOR 
C, X7;K"A" 

C; Y4 ; XI ; K "ENFANTS ~ 
F;FCOR 

f;x2;fcor 

F ; X3 ; FCOR 
F; X4 ;FC0R 
F;X5;FCQR 
F;X€;FCOR 
C;X7;K m F" 

C;Y5;Xl;K"ENFANTS JNVAL 
IDES TITOLAIRES CART 
E" 

F.FCOR 

F;X2:FC0R 

F;X3;FC0R 

Fj X4 ; FCOR 

F;X5;FC0R 

F;Xf;FC0R 

C; X7 ;K"G" 

C; Y 6 ; Xl KT.NFANTS INVAL 

IDES'* 

F/FCOR 

F;X2;FC0R 
F; X3/FC0R 
F;X4;FC0R 
F; XS ; FCOR 
T; XS; FCOR 
CfXTjM m B H 

C;Y7 ,X1; K"KNFAXTS CELIB 
ATA1RES ^ATTACHES- 



FiFCQR 

F;x2;FC0R 

F;X3;FC0R 

f;x4;FC0R 

F;X5;FC0R 

F;X6;FC0R 

C;X7;K n J" 

C;Y8;Xl; K"ENFANTS MARIE 

S RAT T ACHES" 
F;FCOR 
F;X2;FCQR 
F;X3;FC0R 
F;X4;FC0R 
F;X5;FC0R 
F;X6;FC0R 
C;X7;K »N" 

C; Y9j XI ; K"INVAL IDES SOO 

S LE TOIT" 
F.FCOR 
F;X2;FC0R 
F; X3/FC0R 
F/X4/FC0R 
F;X5;FCQR 
F;X6;FC0R 
C/X7,JC"R- 
C; Y10;X1 ;K"AGE " 
F.FCOR 
F;X2;FC0R 
F; X3;FC0R 

r;x4;rcOR 

F;X5jFC0R 
F;X6;FCQR 
C;X8;K30 

C;Y11;X2;K- 1) REVENOS D 
ES VALE OR S ET CAPITA 
OX MOBILIERS " 

F;FCOL 

F;X3;FC0L 

F;X4;FC0L 

F;XS;FCOl 

F;X$;FCOL 

F;X7;FC0L 

F;X8;FC0L 

C;Yl2;XT7;K"S m 

C;X12;K0 

C;Y13;X11;K"V 

C;X12;K0;G 

C; Yl 4;S; R13„ C12 

C;Y15;B 

C; Yl 4; 3 

Cj Y17/S 

C;Y1Q;S 

C;Y14;X11;K'V 
C, YX5;K m tr m 
C;Y1 6;K~X" 
C; Yl 7;K~Y" 

c; y18;k-Z" 

c;xi9;x2;K"2) revenos f 

ONCIERS n 
F.FC OL 
F;X3;FC0L 
F;X4;FC0L 
F;X5;FC0L 
F;X6;FC0L 
F;X7;FC0L 
F;X8;FC0L 
C; Y20;X9;K K A'' 
C.X10.K0 
C;X11;K"B" 
C;X12:K0 
F; rr OR 

C;Y21 ;X11 ;K-D" 

C;X12;K0;G 

F;FI0R 

C; Y22; S.-R21 

F; FI OR 

C;X9;K m M n 

C;X10;K0;G 

c. Xll ;K"N- 

C;Y23;X2;R m 3) REVENOS D 
ES PROFESSIONS NON S 
ALAR I EES - 

F;FC0L 

F; X3 ;FCOL 

F;X4;FCOL 

F;X5;FC0L 

F;X6;FC0L 

F;X7;FC0L 

F;X8;FCOL 

C;Y24;X3;*"KA" 

F.FIOC 

C:X4;K0 

C:XSjK"KB- 

C; XS; KO 



C;X7;&"KC" 

C;XB;KO 

C;X9;K n KD'' 

C;X10;K0 

C;XU;K"XE" 

C;X12;K0 

C;Y25;X3;K"LA" 

F;FlOC 

C;X4;K0;G 

C;Y2£;S;R25;C4 

C;Y28;S 

C:Y29:S 

C;Y32;S 

C; Y32 ; S 
C; Y33 ; S 
C.Y34;S 

C; Y2S;XS;K"LB n 

C;X€jK0;G 

C;Y2€;S;C6 

C/Y27/S 

C; Y2S;B 

C; Y29.S 

C;Y30;S 

C;Y31;S 

d Y3£;S 

C; Y33;3 

C; Y25iX7;K m lC m 

c;x8;K0; G 

C; Y2 6;S;C8 

C;Y27;S 

C; Y28.S 

C;Y29;S 

C;Y30;S 

C; Y31;S 

C;Y32;S 

C;Y33;S 

C;Y2$;X9;K n LD" 

C;X1 0;KO 

C;Xll;K n LE n 

C;X12;K0;G 

C;Y2€;S;C12 

C;Y27;S 

C; Y?8;S 
C;Y29;S 
C.Y31.-S 
C; Y32/3 
C;Y33;S 
C; Y34/3 

C; Y26;X3;K"MA" 

F/FIOC 

C;X5;K"MB" 

C;X7;R m UC 

C; X9; K-HD- 

C;X10;KO;G 

c; Y27;s;R26;ClO 

c; Y28;s 

c; Y29;s 

C;Y30;S 

C;Y3l;S 

C;Y32;S 

C;Y33;S 

C;Y35;S 

C;Y26;X11;K«ME" 
C;Y27;X3;K"NA'' 
F;FI0C 
C; X4 ; KO 

C;X5;K"NB" 

C; X7;K m NC 

C;X9;K"ND" 

C; X11;K "NE - 

C;Y2B;X3;K"PA« 

F.FIOC 

C/XS/K-PB- 

C; X7 ; K"PC 

C;X9;K"PD" 

C;X1 l;K m PE" 

C;Y29;X3;K m RA m 

TJFTOC 

c;XS;k-rb" 

C/X7;K"RC- 

C;X9;K"RD" 

C;X11;K"RE" 

C;¥30;X3;K"SA" 

F;FI0C 

C;X4;K0 

C;X5;K n SB" 

C;X7;K m SC 

C;X9;K m SD m 

C; Y31 ;X3; K"TA" 

F.-FTOC 

C;XS;K-rB m 

C; X7; K-7C 

C;X9;K"7D" 

C; Xll;K m TE" 



C; Y32;X3jK m OA n 
FjFZOC 
C;X5,'K-OB" 
C,X7;K«OC" 
C;X9; K'OD" 

<;;XlXiK-am- 

c; Y33;X3 ;K"WA" 

F;FIOc 

C; X5;K"MB" 

C;X7;K"NC 

c;X9;K n ND" 

C;X11;K H UE" 

C;Y34;X3;K"XA" 

F;FI0C 

C;X7;K M XC" 

C;X8;K0 

C;X9;K n XD" 

C;X10;KO 

C;Xll;K"XE n 

C; Y35;X7;K"YC« 

C;X8;K0 

C;X9;K"YD" 

C;Y36;X2;K"4) PLQS-VALO 
E3 DIVERSES ET PROFI 
TS DB CONSTROCTION" 

F; FCOL 

F; X3;FCOL 

F;X4;FC0L 

F;X5jFC0L 

F;X6,FC0L 

F;X7;FCOL 

F,X8jFC0L 

F;X9jFC0L 

F/Xl 0;FCOL 

C; Y37 ;Xl;K~AJ" 

c;X2;KQ 

c; X7 ;k~am" 

c;x8;K0 

C; X9;K"AN'' 

C;X10;KO 

C;Xll;K n AP" 

C;X12;K0 

C;Y38;Xl;K"BJ" 

C;X2;K0 

C;X3;K*BK* 

F.FIOC 

C;X4;K0;G 

C;Y39;S;R38;C4 

C;Y40;S 

C;X8;K0;G 
C; Y39;S;C8 
C/Y40.-S 

C;Y38;X9,^K^^BN'• 

C;X1 0;KO 

C; Xl 1 ;K"BP " 

C;X12;K0 

C, Y39;X3/K"CK 1 ' 

C;X5;H-Cfi" 

C;X6;KO 

C;X7;R m CM m 

C;X9, K m CN- 

c;xi 0;ko 

c;xii;n"CP" 

C;X12;K0 

C;Y40;X3;K n DK- 

C;XS;K m DL" 

C;X€;K0 

C 'X7 * E"DM" 

C;Y4'l;X2;K n 5) TRAITE14EN 

TS, SAL A IRES " 
F;FC0L 
F:X3;FCOL 
F;X4;FC0L 
F;XS;FCOL 

F;X&;PCOL 

F;X7;FC0L 

FiXFiFGOL 

F/X9/FC0L 

C; Y42;Xl;K"KA m 

C;X2;KO 

C, X3; K-KC- 

F/FTOC 

C;X4;K0;G 

C;Y43;SjR42;C4 

C;Y44;S 

C;Y45;S 

C;Y4€;S 

C;Y47;S 

C;Y4B;S 

C;Y49;S 

C;Y51;3 

C;Y52;S 

C;YS3;S 



54 



Pom's n° 23 



C; Y42;X5/K"KD» 
C . XC; KO;G 
Ci Y43;S;C6 
C,Y44;S 
Ci Y45;S 

c;X46;s 
c;X47;s 
C;X4B;s 
c;X49;s 
C;X51;S 
C;Y52;S 
C;X53;S 

C;Y42;X1 ;K"KE" 

C;X8;K0 

C;X9;K"KG" 

C;X10;K0 

C;Xll;K"KH m 

C;X12;K0;G 

C;Y43;S;C12 

C;X44;S 

C;Y45;3 

C;Y46;S 

C;Y47;S 

C; Y48;S 

C; Y49;S 

C;YSO;S 

C;YS1;S 

C;XS2;S 

C;Y53;S 

CfY42;Xl3fK w KJ n 

F,-FXOC 

C , XI 4 ,K0; G 

C;Y43;S;C14 

C;X44;S 

CjX45iS 

C;X46;S 

C;X47;s 

c;X4a;s 

c;X49;s 

C;Y50;S 

C;Y51;S 

C;Y52;S 

C,X53;S 

C;Y43;XljK"L.\ m 

C;X2;K0 

C;X3;K"LC 

FiFIOC 

C;XS;K m LD" 

CiX7iK"LE m 

C:X9;K0;G 

C; Y44 ;S;R43; C9 

C;Y4S;S 

C; Y46;S 

C/Y47/S 

C/Y49/S 

C;Y49;S 

C;Y5Q;$ 

d Y5X ; S 

C;Y52;3 

C;Y53;S 

C,X43iX9iK"LG m 

c;x10;kO;g 

c; X44; s;clQ 

C;Y4S;S 

C;Y46,S 

C;X47;S 

C;Y4B;S 

C;Y49;S 

C;Y$0;S 

C;YS1;S 

C;X52;S 
C;Y53;S 

C; Y43;Xll;K m LH" 

C;X13;K m LJ m 

F;FTOC 

C,Y44;Xl,K m UA m 

C;X2;K0;G 
C;Y45;S;R44; C2 
CjY4€;3 

G;X47;S 
C;Y48;S 
C;Y49;S 
C;Y50;3 
C;Y51;S 
C;Y52;S 
C;X53;S 
C;Y54;S 

C; Y44;X3iK m MC'• 
F;FI0C 
C;X5; K"MD« 
CiX7; K'MB" 
C;X9; K»HG m 
C:Xll,K"MR m 
C: Xl3;K m MJ m 



r;rxoc 

Ci Y45iXl;K m NA~ 

CiX3i K m NC- 

FiFXOC 

c; X5; K"ND" 

CJX7;K"NB" 

C;X9; JC-NG" 

CjXll ;K m NB" 

CiXl3;K"NJ m 

FjFIOC 

C;Y4G;X1;K»PA" 

C;X3i K m PC 

FiFIOC 

Ci X5; K "PD " 

Cj X7; K"PB" 

CjX9iK m PG" 

CiXll iK"PH" 

c;X13;X m PJ" 

FiFIOC 

Cj Y47 iXl ; K"RA " 
Cj X3i K"RC 
FiFlOC 
CiX5i K-RD" 
C; X7; K"RB m 
C;X9i K"RG" 
CiXll iK H RH" 
CjXl3,K m RJ m 
FjFIOC 

Ci Y4&iXl;K n SA" 

CiX3iK'9G' 

FiFIOC 

Ci X5{ K-3D- 

C,X?iK"SB" 

Ci X9; K n SG" 

cj xi 1 ;k~sh" 

Ci XI 3 ; K"SJ" 
FiFIOC 

Ci X49iXl;K"TA" 

Ci X3i K"TC 

F;FIOC 

CiX5;K"TD" 

C;X7;K"7B m 

CiX9;K"7G H 

CiXlliK'TB" 

CiXl3iK"TJ" 

FiFIOC 

CiYSOiXliK-OA" 

CiX3i K-OC 

FiFIOC 

CiX4iK0 

CiXSi K"OD m 

C;X6;K0 

CiX7; K-OB" 

C; X9j K m OG m 

CiXll iK'OH- 

Ci XI 3 , K m OJ~ 

FiFXQC 

Ci Y51 iXliK m VJL~ 

CiX3;K m YC m 

FiFIOC 

Ci X3i K"VD" 

CiX7i K"VB n 

CiX9iK"VG" 

CiXll ;K'VR n 

CiX13;K"VJ» 

F;FI0C 

CiY52iXl;K m VA m 
C,X3;K"*fC" 
FiFIOC 
CiXSi K H WD" 

CiX7; Jf"«" 

CiX9; K-WG" 
CiXll iK-KR" 
C; X13 ; K-NJ- 
FiFIOC 

CiY53 ;Xl;K n XX" 
CiX3iX'XC 
FiFIOC 
CiXS; K-XP- 
CiX7; K-xx" 

Ci X9i K"XG" 
CiXlliK'XR- 
CiXl3i**XJ" 
FiFIOC 

CjX54;XliX m XA" 
C;Y55;X2iK'€) CHARGES A 

D EDO IRK " 
FiFCOL 
FJX3.-FC0L 
FjX4:FC0L 
F;X5;FC0L 
F i X€; FCOL 
F f X7;FC0L 
F; XSiFCOL 



C/ 
C/ 
C/ 

f; 

Ci 

c; 

c; 

Ci 
Ci 
Ci 

C; 
C; 
c; 

Ci 
Ci 

c: 

Ci 

C; 

Ci 
F; 
C: 
Ci 
Cj 

Ci 
Ci 
Cj 
Cj 

C; 
Fi 
c; 

C; 
Ci 
Ci 
Ci 
Qi 

Ci 

Ci 

Cf 
Ci 
Ci 
Fi 
CJ 
c; 
C; 
C; 
Ci 
Ci 



Fi 
Fi 
F: 
F: 
Fi 

F; 
Pi 

C; 
Ci 
Ci 
Ci 
Ci 
Fi 
Ci 

c; 

c; 

C; 
C; 
Cj 
Ci 

Ci 
Ci 

Ci 
Ci 



YS6/X1/K "AA" 
XSi KO 
X3; K"AB " 
FIOC 
X4i KO 
X5;K~AC- 
X6; KO 
X7i K"AD" 
XSiKO 
X9iK"AM' 

XI Q;KQ; £f 

Y59i3iH56; CIO 
Y56iXlliK"AP" 
Xl2iK0 
X13,K"AR" 
X14;K0 
Y57 i XI i K "BA ■ 
X2i KO 
X3i K"BB " 
FIOC 
X4.K0 
X5; K-BB" 
X6; KO 
X9; JC"BR" 
XlOiKO 

YS9iXljK m CA a 
X2; KO 
X3;K m CB" 
FIOC 
X4iK0;G 
YS9iSiR59iC4 
YS9iX7iK'CP m 
X8i KO 
X9i K'CR" 
XlO f 'K0 
XlliK'CS- 
Xl2 f K0 

Y59iXliK"t>A" 
X2iK0,G 
X3 / iC "DB " 
FIOC 
X5;B"DM m 
X6iK0iG 
X7iK"DP m 

XB;KO;G 
X9iK"DR m 

X6Q;X2;K"7) CHARGES O 

UVRAN2 DROIT A DES R 
EDUCTIONS D'lMPOT" 
FCOL 
X3iFC0L 
X4JFC0L 
X5;FC0L 
X6; FCOL 
X7; FCOL 
X 9, -FCOL 
Y61,XliK*GA* 
X2;K0;G 
X€3iS/R€li C2 
Y64,S 

Y61 i X3 i K"GB" 
FIOC 
X4,K0 t G 

I62;s;c4 

X63iS 

Y61;X5;K"GC 
X6iK0,G 
Y62iSiC6 
YS3;S 
Y€4iS 

X9i KO;G 
Y€2iSiC9 



C; Y63;S 
C;Y64;S 

C;Y€l;X9iK m GP" 
CiXlOiKOiG 
Ci Y62;SiC10 
C f Y63iS 
d Y64 i S 

CiY61;Xll;K~GS m 
C;X12iK0 

CiX62;xi;K n OA" 

C ; X2 ; KO 

Ci X3; K"HB" 

FiFIOC 

CiX5,-K m BM m 

CiX7,-K m RP* 

C;X9iK"BR m 

C;X63;Xl;K"JA m 

CiX3iK"JB m 
FiFIOC 
CiXSi^JC 
C;X7;K"JE " 



C:X9iK"JP" 
CiY64;Xl;K m XA'' 
C/ X5iX"XE" 
CjX7iK"XP " 
C;X9;K"XR ■ 

C; Y69 ;X2,- K«REVE}JOS DES 
VALEORS ET CAPITAUX 
HOBILXERS" 

F; FCOL 
F/X3/FC0L 
FiX4iFC0L 
Fi XSiFCOh 
Fi X€; FCOL 
Fi X7i FCOL 
FiXBiFCOL 

f;x9;fcOl 

Ci X69 iX2i XIF <R[-56JC(+1 
0]J>*1 000, R [-5 6]C[+1 
}, 0) +R[-55]C[+10J iKO 

FjFIOR 

C;X4;XIF (R [-56] C [+BI>*1 
000, 1000, 0)+IF(R[-55 
]C[+9]>*5O00, 5000,R[ 
-55)C[+8])iK0 

FjFIOR 

C;X6;ERC[-4}-RC[-2] ;K0 
FiFIOR 

Ci X8; EMAX (PC 1-2 ] , BC [ -2 J 
*IF (Rr-54]C[+4]>=300 
0,R[-54]Cf + 4] -3000, 
)+R[-53]C{+4)-R[-52] 
C[+4]+R[~57]C [+4] ) iK 


F/FIOR 

C/Xl3jK"L 1" 
F/FIOR 

C- XI 4 i ERC [-6} i KO 
F/FIOR 

C;Y70iX2iX m RBVENO£ FONC 

F/FCOL 
F,'X3iTC0L 
F,-X4 { FC0L 
Fi X5i FCOL 
F ; X6; FCOL 
Fi X7i FCOL 
FiXBiFCOL 
CX13JK-L 2" 
FiFIOR 

C;X14 ;EMAX(Rl-50JC[-4]+ 
R[-48] C 1-4] -(R I- 50] C 
[-2]+R[-49]C[-2]+R[- 
48]C[-2]) f 0)iKO 

FiFIOR 

CiY71iX2iK*RBVSHOS DES 
PROFESSIONS HON SALA 
RISES" 

F : FCOL 
F;X3;FC0L 
F;X4iFC0L 
Fi XSi FCOL 
F,'X6;FO0L 

F/ X7 i FCOL 
F/ X8, FC0L 
FiX9,FC0L 

Ci Y72 X4 i ESOH (R[-4B)C;P 
(~43]C) -SOM(R (-42JC: 
R [ -39] C) i Di KO 

C;X€;S;R72;C4;K0 

Ci xBiSiKO 

C;Xl0jS;K0 

d Xl2jSiK0 

FiX5iFI0G 

Fi X7.-FI0G 

Fi X9;FI0G 

FjXlljFIOG 

Ci Y73 i XI i BHAXfR [-J] C- T 
F(R(-1]C>3000,R[-1]C 
/2, 150 0) , 0) ;Di KO 

C,'Xl2iEHAX (R(-l JC-IF (R [ 
-1] OS 000, R[-1]C*0.2 
5,2000) , 0),-K0 

Ci Y74;X13iK"L 3" 

Fi FX OR 

C,-X14iEMAX(R[-40]C[-6] + 
R[-40]C(-4]-R[-39]C( 
-6]-RC-39)C[-4] t 0)iK 


C,' Y75 i X13 ,' K"L 4" 
Fi FIOR 

C i XI 4 i ESOH (R [-2 ] C I -4 ] :R 
[-2]Ct-2))+SOM(Rt-3] 
C[-e]:R[-3]C[-10j);K 




Pom's n° 23 



55 



C ; Y7 6 ;X2;K"P LOS -VALUES 
A COORT TERMS ST PRO 
FITS DS CONSTRUCTION 

F; FCOL 

F;X3;FC0L 

F;X4;FC0L 

F;X5;FC0L 

F;X6;FC0L 

F; X7;FC0L 

F;XB;FCOL 

F;X9;FC0L 

F;X1 0/FCOL 

C;X13;K m Z 5" 

FiFXOR 

CiXl 4;ER[-39)C[-12]+R[- 
38 ]C 1-12] -R(-3BJC[-1 
0]+MAX(SOM(R[-39]C[- 
4] ;R[-37]C[-4))-SOM( 
R[-39]C(-2] :R[-37]C[ 

C; 1 7 7; X2;K - TRAITSMKNTS , 
SALA1HKS, PENSIONS 
RENTES ■ 
F;FCOh 
F;X3;FC0L 
F;X4;FC0L 

F;X5;FC0L 
F;X€;FCOL 
F;X7;FC0L 
F;X8;FC0L 
F;X9;FC0L 

C;Y78;X2;SR [-36]C+R[-36 

]C[+2];K0 
C;X4 ; ERF -35 ]C(-2]+R [-35 

]C;KO 

C;X6;ER[-34]C[-4]+R[-34 

]C[-2];K0 
C;X8;ER[-33]C[-6)+R[-33 

]C[-4];K0 
C/Xl 0;SR[-32)C[-8]+R[-3 

2]C(-6J;R0 
C;X12;BR[-32]C[-10J+R[- 

31]C[-8) ;D;KO 
C,X1 4,ESOM(R[-30]C[-12] 

:R[-29]C[-10]) ;K0 
C; Y79;X2;EMTH (MAX (MIN (M 

AX(R[-1 JC'0.1, 1900} , 

R[-1]C, 57840) , Rf-37J 

C [ + 4] ) ,R[-1] C) ;K0 
C ; X4 ; EM IN (MAX (HIN (MAX (R 

[-1]C*0 .1, 1800) , R[-l 

]C, 57840) ,R[-36]C[+2 

]) ,R[-1]C);K0 
C;X6; EM IN (MAX (M IN (MAX ( R 

[-1]C*0.1, 1800), Rf-2 

]C, 57840) ,R[-35)C),R 

C;X8 ; SHIN (MAX (MIN (MAX (R 
/-JJC*0. I, 1800), R/-3 
]C, 57840), B[-34]C[-2 
]),R[-1]C);K0 

C; XI ; EMIN (MAX (MIN (MAX ( 
R[l]C+0. 1, 1800) ,R[ - 
1]C,S7B40) ,R[-33]C[- 
4]),R[-1JC),K0 

C;X12 ; EMIN (MAX (MIN (MAX ( 
R[-1]C*0. 1, 1800) , R(- 
1]C,57840),R[-32]C[- 
6]),R[-1JC);D;K0 

C;X14;S;R79;C12;K0 

C;Y80;X2;EMIN( (R[-38]C[ 
+ 6] *R(-3B}Cf+8]+R[-3 
8]C[+10]*R[-38]C[+12 
))*0. 009, 50000) ;K0 

C;X4;E(R [-37]C[+4] +R[-3 
7jC[+6]+R[-37]C[+8] * 
R [-37]C[*1 0])*0. 009; 
KO 

C;X4;E(R[-3€]C[ + 2] *R(-3 

6]C(+4]+R[-36]C[ + 6] * 
R [-36] C [ + 8] ) *0. 009; K 


C;X8;E(R[-35]C*R(-3 5]C[ 
+2]+R[-35]C[+4] *R [-3 
5]C[+6]) *0.009,K0 

C;X10;E(R(-34]C [~2] *R[- 
34]C+R[-34]C[+2J 
34] C [+4] ) '0 . 009; KO 

C;X12;E(R[-33]C [-4] 'R[~ 
33)Cl-2}+R[-33}C'Rl- 
33] C [+2]) *0. 009;D;K0 

C;Xl4;B(R[-32]C[-6] *R[- 
32]C[-4]+R[-32)C[-2J 



*R[-32]C+R[-31]C[-6] 
*R[-31]C[-4)+R[-31)C 
[-2] *R[-31]C) *0. 009; 
KO 

C; Y8J ;X2jER r-3]C-R[-2jC 

-R[-1JC;D;K0 
C. X4; S;R81;C2;K0 
C;X€;B;KO 
C;X8;S;K0 
C; X1Q;3;KQ 
C;X12;3;K0 
C; X14;S;K0 

C; Y82 ; X2 , EIF (R [-32] C>1 B 
00,MAX(R[-32]C*0 .1,1 

800),r[-32]c);d;ko 
c;x4;eif (r[-31]c[-2 ]>1b 

00,MAX(R[-3l}Q[-2]*Q 
.1, 1800), R[-31]C[-2) 

);K0 

C;X6;EIF (R[-30]C[-4 ]>18 
00,MAX(R[-30)C[-4]*0 
.l, 1800),R[-30]C[-4] 

);K0 

C;X8;EIF (R [ -29] C [-6 ] >1 8 
00,MAX(Rf-29]C[-6]*0 
.1,1800), R[-29]C[-6] 
);K0 

C;XlO;BSOM(RC[-8] :RC[-2 

]);K0 

C; Y83 ; X2; BTF (R[-7]C [+B ] 
>2440C, R[-1]C*24400/ 
R(-1]C[ + 9],R(-1)C);D 
;K0 

C;X4;SIF (R [ - 1 ] C [+6] >24 4 
00, R[~l ]C*24400/R(~1 
]C[+4J,R[-1]C) ;K0 

C;X€;EIF (R [ - 1] C [ * 4 ]>244 
00, R[-1)C*24400/R[-1 
]C[+4],R[-1]C) ;K0 

C;XB;EIF (R [- 1] C [+2] >244 
00,R[-1]C*24400/R[-1 
]C[+2],R(-1JC) ;K0 

c; Y84 ; X2 ; SR [ -3 ] C+R [-34 ] 
C-R[-1]C; KO 

C;X4; ER [ -3 ] C+R [ -33 ] C [-2 
]-R[-l]C;K0 

C;X6; ER [-3 ] C+R [-32] C [-4 
]-R[-l]C;KQ 

C;XB; SR[-3]C+R[-31)C(-6 
]-R[-l]C;KO 

C ; XI 0;SR{-3] C;D; KO 

C;X12;S;R84; C10;K0 

C;X14;S;K0 

C;Y85;X2;ENIN(R[-1]C*0 . 

2, 104600) ;D;KO 
C;X4; S;R85;C2;K0 
C;X6; S ; KO 
C;X8; S;KO 
Cj X10;B;K0 
C;X12;B;K0 
F; X5; FIOG 
FjX9;FIQG 
F;X11 ;F10G 

C;Xl4;Eir(R[-37]C(-12]> 
192200, R[-1]C* 0.1+17 
298, R[-1]C*0,2) ;K0 

C;Y86;X2;ER[-2]C-R[-1]C 
;D;KQ 

C;X4;S;R86;K0 

C;X6;S;K0 

C;X8;S;K0 

C;X10;S;K0 

C. X12 ;S;KO 

C;X}4;S;K0 

F;X5;FI0G 

F;X9; FIOG 

F. Xll ;FI0G 

C;Y87;X2,-B(R[-37]C[+2] * 
R[-37]C[* 4]/l 00) + (R[ 
-37]C{ + 6] *R[-37]C[fB 
]/100) + (R[-37]C[+10] 
*R[-37]C[ + 12] /100) ;K 


C;X4; E(R(-3€]C*R[-3 6]C[ 
+2] /100)+ (R[-36]C(+4 
]'R(-36]C( + 6] /100) + ( 
R[-36)C[+8] «R(-36)C[ 
+10]/100);K0 

C;X6; E(R[-35] C[-2J *R / -3 
5]C/]00)+(R[-35]C[+2 
]*R[-35]C[+4]/10Q)+( 
R[-35]C[+6] *R[-35]C[ 
+ 8J/100) ;X0 

C;X8;E(R(-34]C(-4]*R[-3 



4]C[~2]/10Q) + (R[-34] 
C*R(-34]C [+2] /100)+ ( 
R[-34]C[+4]*R[-34]C[ 
+ 6]/100) ;K0 

C;Xl3;K"h 6" 

FjFIOR 

C.X14 ;SSOM(R[-l] C:R[-1] 

C[-12));K0 
C;Y88 ;X13;K»1 7" 
F; FIOR 

C;Xl4;ESOM(R [-1]C[-12] : 

R[-1]C[-6]);K0 
C; Y09;X13;K"1. 9" 
F; FIOR 

C;Xl4;ER(~33]C[-4]iR[~3 

1] C(-10] , K0 
C;Y90;X13;K'L 9 m 
F, FX OR 

C ;X14 ;KSOM(R [-1 ] C;R(-3] 
C)+S0M(R[-14]C:R(-16 
]C) +R(-20]C+R(-21JC; 
KO 

Cj Y91 ;xl3; K-L10- 
FJ Fl OR 

c;xl4 ;ESDM(R[-32)C[-12] 

:R[-32]C[-4]) ;K0 
C;Y92;X13;K m tll n 
F ; FIOR 

C;X14 ;SR[-2]C+R[-1]C;K0 
C;Y93;X2;K"DEDOCTI0N DS 

S CHARGES" 
F;FCOG 
FjX3;FC0G 
FjX4;FC0G 
F; X5; FCOG 
F;X€;FCOG 
F; X7.-FC0G 
F; X8.-FC0G 
F;X9;FC0G 
C; Y94 ;X1; K m J" 
C;X2;SMlN(R{-38] C, 5000* 

R(-38]C[+2]) ;K0 
C;X3;K m K m 

C;X4;ER[-38]C[ + 6]+MXN (R 
[-38]C[+2] , 16190*R(- 
38]C[+4));K0 

C;X5;k-L" 

C;X6;EMlH(R[-36]Cl-4], 6 
000+R[-90]C[+2] »5 00+ 
IF (R [-90] C [+2 ] >2 , (R[ 
-90]C[+2]-2) *500, 0)) 
;K0 

C;X7;K m M" 

C;X8;EMIN(R[-36J C[+2] , 1 
3310) *R[-36]C[+4] ;K0 
C;X9;K*P* 

C;X10 ; SSUM (RC [ -2 ] : RC [-8 
});K0 

C;X12;BR[-2]C[+2)-RC[-2 

J;*o 

C;Y95;Xl;K n R- 

C;X2iEIF(R[-l]C[+10]<.10 
0000, MIN (25000, R[-39 
]C[+10]} I MIN(R[-1]C[ 
+ 10J/4,R[-39JC[+1 0]) 

);ko 

C;X3;K m S'' 

C;X4;ER[-38]C[-2] ;K0 

C;X5;K"T m 

C;X€;EMIN (R [-38 ] C [ -2 ] , M 
AX(R[-l]C[+6] *0.01, I 
F(R[-38]C=0,R[-1]C[ + 
61*0.05, 0)));KO 

C:X7:K"V* 

C;X8;EMIN (R [-38] C [+2] , R 
l-2]C[+4]*Q,l r 4 00 fR I 
-91]C»100) ;K0 

C;X9;K»N' 

C; X 10, -EM IN (R[ ~37}C[-2] , 

R[-1]C[*2) /4) ;K0 
C; X13; K»L12 a 
F; FIOR 

C;X14;ER[-l]C[-4]+SVM(R 

C[-12] :RC[-4J) ,K0 
C; Y96; X13, K-L13" 
F;FIOR 

C,X14;ER[-4]C-R[-1]C;K0 
C; r97, X13;K-Ll4" 
F;fior 

C;X14;EMIN(IF (AND (OR (R [ 
-95]C[-€] = 1,R[-94]C[ 
-6] 'l,R[-87]C[-6]>65 
),R[-l]C<73600),It(R 
[-1]C<45600, 7360,368 



0), 0),R[-1]C);K0 
Y98; X10;K"NET IMPOSAB 

LE " 
FCOG 
X11;FC0G 
XX2;FC0G 
X13;FC0G 

XI 4; SI NT ((R[-2J C-R [-1 

]C)/10) *10;K0 
Y99; X2;K"NOMBRE DE PA 

RTS" 
FCOG 
X3;FC0G 
X4;FC0G 
X5/FI0R 

X6;EZF (R[-98]C[+2)=1, 
2,l) + (R[-97]C[+2]+R[ 
-96)C[+2]+R[-95JC[+2 
]+R[-94]C[+2]+R(-92] 
C[+2]+R[-91]C[+2] ) /2 
+R[-90JC(+2J ;K2 

rFia 

XI ; K "QUOTIENT FAMILI 

AL 9 
FCOG 

Xll;FCOG 
X12;FC0Q 
X13;FC0C 

Xl4;BR[-l]C/RC[-8] ;K0 
X15;ER[-1]C[-1]/IF (R[ 

-98]C[-7J = 1,2, 1);K0 
Y100;X4;K0 
X6;K0 

rtaa 

Y101 ;X4;K15£50 
X6:K0 . OS 
F%OR 

X9;K782 5 
FP2G 

XI ; K" TRANCHE RETENOE 



;FCOG 
; XI 1 ;FC0<3 
,X12;TC0G 
;X13;FC0C 

;X14;BL00K0P (R[-2]C, R[ 
-1]C[-10] :R[+12]C[-8 

:F90G 

;X15;SLOOK0P (R[-2]C,R[ 
-1)C[-U] :R[+l2]C[-9 

]);ko 

FtOG 

Y102;X4;K1 6360 
X6;KQ,1 
F%OR 

X8;K1600 .5 
FF2G 

X10;K m IMPOT AVANT COR 

RECTION ■ 
FCOG 

XlliFCOC 
X 12 ; FCOG 
X13;FC0Q 

Xl4;ER[-4]C*R[-l]C-R[ 
-3]C[-8 J *LOOKOP (R[-3 
]C,R[-2]C[-1Q] :R[+11 
]C(-6])jK0 
X15;ER[-4]C[-1]"R[-1] 
C-IF (R[ -101 ]C [-7]=1, 
2,1} *LOOKOP (R[-3]C, R 
[-2]C[-11] :R(+11]C[- 
7] ) ; KO 
F;FI0G 

C;Y103;X4; K19400 

C;X6;K0.15 

F;F%0R 

C;X8;K2570 .5 
F; FF2G 

C;X10;K»IMPOT APRES PLA 

FONNEMENT ■ 
F; FCOG 
F; XI 1; FCOG 
F; XI 2; FCOG 
F; XI 3 ; FCOG 
C;Y104;X4;X30680 
C;X6;K0.2 
F; F% OR 

C; X8;K4104 .5 
F; FF2G 

c;x10;k~du quotient fam 

IhlAL" 

F;FC0G 
F;X11;FC0G 

Suite de ce lichier page 60 



c; 



56 



Pom's n 23 




OFT.COPIE permet de 
rccopicr une disquette 
i (non protegee) avec un 
^ seul drive, en seulement 
trois passes (contre neuf pour 
l'utilitaire FILER de ProDOS). 
Vous devez posseder un lecteur 
de disquette et 128Ko de RAM, la 
memoire auxiliaire etant utilisee 
comme zone tampon. 

Son principal interet est qu'il 
permet de recopier une disquette 
avec un seul lecteur en seulement 
trois passes. II est done 
particuli£rement destine aux 
proprietaires d'APPLE //c ne 
possedant pas lc lecteur de 
disquette externe. 

II occupe tr£s peu de place en 
memoire prineipale et, en 
particulier, il ne detruit pas un 
programme Applesoft en 

memoire, ni scs variables s'il est 
en cours d'exicution, et il ne 
derange pas les iventuels ficluers 
ouverts. Vous pouvez done 
l'incorporer comme ulilitaire 
appele par votre programme 
favori. 

Utilisation 



Le programme vous signale les 
eventuelles erreurs rencontres : 
disquette non inseree ou porte du 
lecteur ouverte, disquette protegee 
contre l'ecriture, ou disquette non 
formatee. 

En effet, la disquette de reception 
devra auparavant avoir ete 
formatee en 16 secteurs, soit sous 
ProDOS par l'utilitaire FILER ou 
la commande INIT parue dans 
Pom's 20, soit sous DOS 3.3 ou 
PASCAL par la procedure 
correspondante. 

SO FT. COPIE permet de recopier 
toute disqueiie formatee en 16 
secteurs, e'est h dire utilisee avec 
les systfcmes d'exploitation 
ProDOS, DOS 3.3, Pascal ou 
CP/M. 

Ne confondons pas : SOFT. 
COPIE tourne sous ProDOS et 
necessite, en particulier, le disque 
virtuel de 64Ko en memoire 
auxiliaire. II ne peut done pas Stre 
utilise avec un autre syst&me 
d'exploitation (bien qu'il puisse 
recopier des disqucttcs de formats 
different). 

Le message d'erreur I/O ERROR 
est genera si vous tentez d'utiliser 



Bruno 
Fenart 



SOFT.COPIE sans avoir de 
disque virtuel installe par 
ProDOS, en particulier si vous ne 
disposez pas d'une configuration 
memoire totale de 128 Ko ou 
plus. 

Description 
technique 

En memoire principale, SOFT. 
COPIE n'utilisc que deux zones : 

• la page 3 (adresses de $300 k 
$3CF); 

• le buffer temporaire de IKo 
place dynamiquement par 
ProDOS juste au-dessus de 
HIMEM:. 

La figure 1 il lustre Vutilisation 
de ce buffer par ProDOS. 

Le^ disque virtuel 64Ko en 
memoire auxiliaire, initialise par 
ProDOS lors de son chargement 
initial, est utilise en quasi-totalite 
par SOFT.COPIE. Neanmoins, 
les blocs du disque virtuel qui 
correspondent au mode texte 80 
colonnes el au graphique double 
haute-resolution sont preserves 

dans leur etat initial 



SOFT.COPIE est disponible en 
mode direct : il suffit dc taper 
"BRUN SOFT.COPIE" (ou 
"-SOFT.COPIE"). A l'apparition 
du message, inserez votre 
disquette originate dans le lecteur, 
puis appuyez sur la louche 
<Return>. Au message suivant, 
inserez la disquette reception... 
Recommencez trois fois de suite, 
et e'est fuii ! 

En fin de copie, il est possible de 
recommencer avec <Return>. 
Pour sortir de SOFT.COPIE, 
appuyez sur la touche <ESCape>. 
Cette derni&re touche permet 
egalement d'abandonner une 
copie en cours. 



Figure 1 : Occupation de la memoire avant et pendant une 
commande CATALOG ou CAT 







Commande 


Ou vert ure 


Commande 






CATALOG 


fl chier 


CATALOG 


S9A00 












Buffer 


Buffer 


Buffer 


Buffer 




lib re 


CATALOG 


fichier 


fi chier 


39600 


—HIMEM — 


— HIMEM — 


Buffer 
litre 


Buffer 
CATALOG 


$9200 






— HIMEM — 


—HIMEM— 



Pom's n° 23 



57 



Ce disque virluel, normalement 
denomme /RAM, comporte 128 
blocs (contre 280 pour une 
disquette). Le nombre de fichiers 
que peut contenir son repertoire 
principal est de 12 (centre 51). 

La figure 2 montre la 
correspondance entre les blocs du 
volume /RAM et les adresses 
physiques en memoire auxiliaire. 

Les blocs a 7 sont utilises par 
Pro DOS et ne doivent pas etre 
modifies directement : 

• le bloc 2 contient le "Volume 
directory" ; 

• le bloc 3 contient le "Volume 
Bit Map" ; 

• le bloc 7 correspond aux 
adresses de la pile et de la page 
zero de la memoire auxiliaire. 
II est done fortement 
deconseille de le modifier sous 
peine de graves probl&mes ; 

• les blocs 0,1,4,5 et 6 sont 
inaccessibles en lecture et en 
ecriture. Une tentative de 
lecture de ces blocs donnera 
toujours zero. Une tentative 
d'ecriture ne les modifiera pas 
(ils resteront a zero), ni les 
adresses en memoire auxiliaire 

correspondant £ ces blocs 
(adresses $200 h $BFF). Les 
affichages texte et graphique 
basse resolution en 80 
colonnes sont done 
auloinatiquement proteges. 

11 est prevu que les futures 
versions de ProDOS utilisent 
d'autres adresses en memoire 
auxiliaire. C'est dejS le cas pour 
les versions a partir de ProDOS 
1.1.1 pour lesquelles le dernier 
bloc ($7F) est reserve. Le nombre 
total de blocs du disque virluel 
devient 127. 

La page graphique double 
haute-resolution 1 correspond aux 
blocs $08, $0A i $18. 
SOFT.COPIE n'utilisera done les 
blocs du disque virtuel qu'a panir 
du numero $19, jusqu'au numero 
$7E inclus. 

Fonctionnement 
technique 

SOFT.COPIE va utiliser les 



caractcristiques du disque virtuel 
pour realiser une recopie en trois 
passes. 

Pourquoi truis passes ? 

D'aprfcs les imperatifs precedents, 
le volume /RAM comporte 93 
blocs disponibles. Or, une 
disquette dc 140 Ko en comporte 
280, e'est-ik-dire : 280 = 93 x 3 + 
1. 

La solution adoptee consiste done 
a occuper la totalite de l'espace 
virtuel disponible ainsi qu'un 
buffer de 512 octets en memoire 



Recapitulation 
'SOFT.COPIE' 

Apres avoir saisj ce code sous moniteur, 

vous le sauvugardartM pas 

BSA VE SOFT.COPIE.A$29D,L$ '31 

029D- 4C 00 03 

02AQ- 49 6E 73 7B 72 65 ?A 20 

Q2A8- 6C 65 20 64 69 73 71 75 

02BO- 65 20 00 73 6F 75 72 63 

02B8- 65 3A 00 64 65 73 74 69 

02CQ- 6E 61 74 65 6F 6E 3A 00 

02CB- 43 6F 70 69 65 20 00 61 

U2D0- 6E 6E ?& 6C* ?t 65 0U 00 

Q2D8- 74 65 72 6D 69 6E 7S 65 

Q2E0- 00 00 45 72 72 €5 75 72 

02E8- 20 6i 27 15 2F S3 07 00 

02FD- 44 69 73 71 75 *1 70 70 

02F8- 72 6F 74 7B 67 7B 07 00 

0300- 20 99 F3 20 73 F2 20 58 

0308- FC AS 0C A4 73 DO 7fl A5 



principale, soit un total de 94 
blocs utilises 3 fois (afin de 
simplifier le programme, les blocs 
93 et 196 sont recopi6s deux 
fois). 

L'avantage majeur est que 
SOFT.COPIE n'utilise alors que 
208 octets et peut done se loger 
dans la zone tranquille en page 3 ; 
en particulier, on n'a pas besoin 
dc sc soucier d'avoir a le reloger 
en memoire haute comme on 
devrait le faire pour un 
programme plus important. 

(3 



0310- 


71 


8D 


P7 


03 


$D 


CD 


03 


*c 


0?18- 


CS 


03 


A9 


33 


20 


PP 


03 


AP 


0320- 


C4 


A2 


CA 


20 


45 


03 


8C 


C8 


0328- 


03 


A9 


BB 


20 


98 


03 


A9 


CA 


0330- 


A2 


C4 


20 


45 


03 


CE 


C8 


0)3 


0338- 


CO 


BA 


DO 


DE 


A9 


D8 


A2 


ce 


0340- 


20 


9A 


03 


F0 


t'4 


8U 


5E 


Q J 


0348- 


8E 


66 


03 


A9 


00 


8D 


C9 


03 


0350 


AC 


C8 


03 


A9 


19 


8D 


CE 


03 


0358- 


AS 


7? 


26 


00 


BF 


86 


C4 


03 




BO 


19 


20 


00 


BF 


81 


CA 


03 


0368- 


B0 


11 


EE 


C8 


03 


DO 


03 


EE 


0370- 


C9 


03 


EE 


CE 


03 


EC 


CE 


03 


0378- 


DO 


EQ 


60 


A2 


E2 


C9 


27 


F0 


(JJS'J- 


OC 


A'2 


yj 


C9 


2B 


F0 


06 


20 


0386- 


SD 


BE 


4C 


09 


BE 


68 


E9 


OC 


0390- 


48 


8C 


C8 


03 


20 


BA 


03 


60 


0308- 


A2 


AQ 


48 


20 


BA 


03 


6B 


20 


03A0- 


BE 


03 


AD 


10 


CO 


20 


OC 


FD 


(11A8- 


-T9 


8D 


Fti 


on 


o 


OR 


DO 


FS 


03BQ- 


€8 


AA 


68 


A9 


CF 


EO 


42 


DO 


03B8- 


85 


60 


20 


8E 


FD 


8A 


AO 


02 


03C0- 


20 


3A 


DB 


60 


03 


60 


00 


00 


03C8- 


€0 


00 


03 


B0 


00 


00 







Figure 2 : Correspondance entre blocs du disque virtuel et 
numeros de page en mimoire auxiliaire 64 Ko 



Page 


0/1 2/3 4/5 

■ 




8/9 


A/B 


C/D 


E/F 


$00 


$07 


{0,1,4,5,6 


non accessibles) 


$03 


$02 


$1 


$0 9 


$1A 


$2B 


$3C 


$4D 


$5D 


$5E 


$5F 


$20 


$08 


$0A 


$0B 


$0C 


$0D 


$0E 


$OF 


$1 


$30 


$11 


$12 


$13 


$14 


$15 


$16 


$17 


$18 


$40 


$19 


$1B 


$ic 


$1D 


$1E 


$1F 


$20 


$21 


$50 


$22 


$23 


$24 


$25 


$2 6 


$27 


$2 9 


$2 9 


$60 


$2A 


$2C 


$2D 


$2E 


$2F 


$30 


$31 


$32 


$70 


$33 


$34 


$35 


$3 6 


$37 


$38 


$39 


$3A 


$3 


$3B 


$3D 


$3E 


$3F 


$4 


$41 


$42 


$43 


$9 


$4 4 


$45 


$4 6 


$47 


$48 


$49 


$4A 


$4B 


$A0 


$4C 


$4E 


$4f 


$5 


$51 


$52 


$53 


$54 


$B0 


$55 


$56 


$57 


$50 


$59 


$5A 


$5B 


$5C 


$C0 




F./S 


des 


commut ateurs 




$D0 banc! 


$60 


$61 


$62 


$63 


$64 


$ 65 


$66 


$67 


$D0 ban<;2 


$6 8 


$69 


$ 6 A 


$CB 


$6C 


$6D 


$6E 


$6F 


$E0 


$70 


$71 


$ 72 


$73 


$74 


$75 


$76 


$77 


$F0 


$78 


$79 


$7 A 


$7B 


$7C 


$7D 


$7E 


$7F 



58 



Pom's n 23 



Source 'T.SOFTCOPIE' 
Assembleur ProCODE 



SOFT. COPIE 4.2 



(C) Bruno Fenart 2 985 



* Bttft 15 Juillet 1985 Modi fie: 14 Octobre 1985 * 

* cople rapide de distjuettes avec un seul drive. ' 



* Presentation i 

' Ce programme per/net de recocier une disavette non 

* proteg&o jvoc un seul drive, on seulement trois passes 

* CcvnLte ntsuf pcjui I 'uLi litat ik PsuDOS) . 
* 

* Vous devez posse"der un Jecteur de disquette et 

* 128K de RAM, J* m4malre aoxtl r* pranr nrtlisAt* 

* commff rone tampon. 

' constant des disques reels et virtuels * 



UNTTNR 


EQU 


S60 


:N* slot x $10 if £80 si drive 2i 


RAM 


EQU 


$19 


/N* du lier bloc ut llis6 cn /RAM 


* Codes des 


commandes rrouus 


rdrlock 


FQO 


SRO 


/J^rturi* Hlmrrf d'un bloc 


WRDLOCK 


EQU 


SB1 


/Ecriture dlrectc d'un bloc 


' Variable 


en page 


zero ' 


HIMEM 


EQU 


S73 


:Fin de 1'espace me-molre + J 


* Zone 


d'E/S et des 


convnutateurs * 


KBDSTRB 


EQU 


sco io 


; Echant i 1 tonnage du clavier 


* Sous-programmes en 


pages globales ProDOS et BASIC. SYSTEM 


ERROUT 


EQU 


SBE09 


;Afflche 1 'erreur (code BI en A) 


BADCALL 


EQU 


SBE8D 


;Code erreur ML! — > code 31 


ML I 


EQU 


SBFOO 


;Entz6e de ProDOS 


• Sous -programmes d\* 


moniteur et de 1 ' interpreteur BASIC 


STROUT 


EQU 


SDB3A 


/Affiche une chaSne (A, Y) fin 00 


NORMAL 


EQU 


SF273 


: Passage en mode normal 


TEXT 


EQU 


SF399 


.•Passage en node texte total 


home: 


EQU 


SEC 5 8 


; EfCui-c 1 'fzcitiii 


RDKEY 


EQU 


SFDGC 


/Attend une touche, code mis en A 


CROUT 


EQU 


SFD8E 


/Envoie un recour chariot 




ORG 


S029D 





Point d*entr6e "' 
.imp debut 

* Messages d ' instruct Ions 



MESSAGE 


EQU 


# 




DISQUE 


ASC 


' Ins4re7 


le disque ' 




DFD 


00 




SOURCE 


ASC 


'source: 






DFB 


00 




DFSTTN 


ASC 


'dest ina-tian: ' 




DFB 


00 




CV?i fc 


ASC 


•Cgpie • 






DFB 


00 




fuSNVLE 


ASC 


'annul*' 1 


• 




DFB 


SOD 


/Saut de ligne 




OFB 


00 




TERMINE 


ASC 


'terming 


e ' 




DFB 


SOD 


/Saut de ligne 




DFB 


00 




IQERR 


ASC 


'Ecreui 


d'E/S' 




DFB 


SOI 


/Cong 




DFB 


00 




UP I PRO 


ASC 


'Disque 


prot&ge ' 




DFB 


507 


;oonq 




DFB 


00 






DS 


$300-' 


/Aliqnement 


DEBUT 


JSR 


TEXT 


tun ecran tout 




JSR 


NORMAL 







JSR 


HOME 


AGAIN 


LDA 


4SCC 




LDY 


HIMEM 




BNE 


BIERR 




LDA 


HIMEM+1 




STA 


BUFFER* 1 




STA 


XBUrFER+1 




STY 


BLOCK 


PASSE 


LDA 


4<S(JURCE 




JSR 


CLAVIER1 




LDA 


4<DRIVPAR 




LDX 


KAUXPAP 




JSR 


TRANS 




STY 


BLOCK 




LDA 


9<D€5TIN 




JSR 


CLAVIER! 




LDA 


9<AUXPAR 




LDX 


4*0RIVPAR 




JSR 


TRAMS 




DEC 


BLOCK 




CRY 


0SRA 




BNE 


PASSE 




LDA 


t<TERMINE 


ESCAPE 


LDX 


4<COPIE 




JSR 


CLAVIER 




BEQ 


AGAIN 


* Trans fert des blocs du 


TRANS 


STA 


LEC 




STX 


ECR 




LDA 


400 




STA 


BLOCK* 1 




LDY 


BLOCK 




LDA 


4 RAM 




STA 


XBLOCK 




LDX 


tRAM*S5E 


GROUPE 


JSR 


MLI 




DFB 


RDBLOCK 


LEC 


DA 


DRIVPAR 




DCS 


ERREUR 




JSR 


MLI 




DFB 


VPJtL OCX 


ECR 


DA 


AUXPAR 




BCS 


ERREUR 




INC 


RLOCX 




BNE 


NOCARRY 




INC 


BLOCK* 1 


NOCAPRY 


INC 


XBLOCK 




CPX 


XRLOCK 




BNE 


GROUPE 




RTS 




• Gestion 


des erreurs 


ERREUR 


LDX 


KIOERR 




CMP 


952' 




BEQ 


ERR IN 




IJ>X 


i<UR TPRO 




CMC 


9S2B 




BEQ 


ERR IN 




JSR 


BADCALL 


RTF.RR 


-IMP 


FRROOT 



PLA 
SBC 
PHA 



tsoc 



/Code BI de NO BUFFERS AVAILABLE 

/ Erreur si HIMEM mai afust* 

.• sinon les buffers de donnSes 

I sont mis A 1 ' adresse du buffer 

/ temporal re de BASIC. SYSTEM 

/ Commence au bloc 

; Adr. recour d 'erreur en lecture 

; Affiche I ' instruction: 

/ "Inserez le disque source:" 



/DisquvLLe source; — > /RAM 
/Restitue le n* du bloc de depart 

.•Adr. retour d'^rreur d' 4criture 

;Affichc 1 'instruction: 

; "insGxez le disque dest 1 nation:" 



i /RAM — > Plsq-Kttc destination 
;Un bloc commun entre les passes 



; "Copie termine'e" ou 

i "Copie annul^e" 

; puis test du clavier 

/Recommence tjs une autre cople 

disque vers /RAM et vice versa * 

/Lecture du disque ou dc /RAM 
/Ecrlt ure du disque ou de /RAM 

;Poids fort toujfours nui au depart 

/Preserve le n' du bloc de d&parL 
; premier bloc en /RAM 

.•Dernier bloc en /RAM 

/Lecture d'un bloc 



/Ecriture d'un bloc 



/Rifles «i)fwnr* 

/Drive sur 2 octets 

/mGrnolre auxiliaire sur un seul. 

/Copie par gcoupe de $5E blocs 



/Erreur d'E/S ? 



/Ecriture protegje'e T 

/Sinon autres erreurs: 

/Code MLI --> code BI 

/A fflchage de 1 'erre-ur et arr£t 

/Calcui 1 'adresse de redemarrage 
/(SEC inutile apres l'egalit6) 



Pom's n° 23 



STY BLOCK J Ml nit la Use fp n* d+ hlnrr 

JSP AFFICHEl tAffiche j 'erreur -orrespondonz c 

RTS rHezour 12 oczezs en arriere 

* Affichage des inszruczions ez test du clavier * 

* CLAVIER: Message en 2 parties IX = 1' : Acc = 2'> 

* CLAVIERlt Idem mo is J" portlc = "Ini6rcs lc diaquc " 



CPX 
BNE 

ONYVA RTS 

* Affichages 

• AFFICHEl; 
» ASTItUOt : 



t<ESCAPEf4 :Donne zero en c*s d'tfjalfte 
ESCAPE /Pcvicnt au depart ou fin 

des messages . 

Avec sauz de llffne iX = Adr.) 
Sins S3 uc de llgjnc (Acc — Adr.) 



CLAV1ER1 


LDX 


t<DISQ'JE 


;2" parzie du message "Ins&rez... 


AFFICHEl 


JSR 


CROUT 


;Envoie un rezour chariot 


CLAVIER 


PHA 




^Preserve 1'adr. de la 2' parzie 




TXA 








JSP 


AFFICHEl 


.'Affiehc la I" parti* 


AFFTCHF. 


LDY 


l>MESSAGE 


;Polds fort identltjue pour tou 




PLA 




;Wlj^ic 1 'aciresse de la 2' 




JSR 


STROUT 






JSR 


AFFICHE 


rAttlche la 2' partle Isar.s saut) 




KT5 














' Table des 


parametres 


de ProDOS * 




IDA 


KBDSTPB 


.•On claviur rcur nauf 










Jboucle 


JSP 


RDKEY 




DPZVPAR 


DFB 


$03 


/Sombre dc paramitrea 




CMP 


tsau 


rpuis at: end un rezour cnarlcz. 




DFB 


UNITNB 


iUNlT number du leczeur de dls 




BEQ 


ONYVA 




BUFFER 


DA 


$0000 


;Adresse du buffer de donnees 




CMP 


>S9R 


/•Si r-t* n'**r pas J <■ caract&re ESC 


BLOCK 


DA 


$0000 


;Numero du bloc 




BNE 


Jbouclc 


ton attend un autre caractere. 


AUXPAR 


DFB 


303 


;Numbre dc paramei res 




PLA 




,-sinon on sauce un recour 




DFB 


$B0 


;UNIT NUMBER du dlsque virtue! 




TAX 




.•Preserve 1 'adresse basse 


X BUFFER 


DA 


$0000 


;Adresse du buffer de donnees 




PLA 




rD6pile 1 ' adreeec haute 


X BLOCK 


DA 


$0000 


;Num4ro du bloc 




LDA 


i<AI1NULE 


.Message "An/iuJe" si ESCAPE 




OS 


S3D0-* 


/Protege lea vectcur du DOS 



Suite de fa page 56, fichier 'IMPOTS' 



F:X12;FC0G 
F; X13.FC0G 

C;X14 ;EHAX (R(-2]C, Rf-2] 
C[+l]-l 052 0*2* (R(-5) 
C[-8]-lP(R[-103)C[-6 
J»X t 2,1)));K0 

C;Y105?X4;K39440 

C, X6;K0 .25 

F; F 8 OR 

C; XB/K6076 . 5 
F; FF2G 

Ci Y106/X4,K49550 
C; X6;K0 . 3 

r;riQR 

c; X8; K8554 
F.FFZG 

C;X1Q;K"REDOCTION D'IMP 

OTS" 
F;FC0C 
F;X11;FC0C 
F;X12;FC0C 
C;Y207;X4;K59950 
C;X6;K0.35 
F;F%0R 

C;X8;K11551 .5 

F.FF2G 

C;X22;K"A" 

C;X12 ;EM7N (0 25*R(-46)C 
[-1Q] + 0.2*(R[-4£]C[- 
8}+R(-4£]C[-6]+R[-46 
]C[-4]),0.25*(25000 + 
2000* (R f-103)C{ 4J*R 
[-100JC { 4] +R[-99]C[ 
-4}+R[-98]C(-4J) ) ) ,K 


C/Y108; X4/K691 70 
C;X6,K0. 4 
F/F40R 
C;XS;K25020 

e; FF2G 

C;X11 ;K"B" 

C;X12;EMIN (R [- 4 7 J C [-2] , 
22000+2000* (R[ -104] C 
[~4]+R[-102]Cf-4]+R[ 
-10O]C[-4]+R[-99]C[- 
4J));K0 

C;Y209;X4;K115250 

C;X6;K0 . 45 

F.F90R 

C; X8;K20772 5 
F; FF2G 
C;X11;K*C 

C;X12;E0 .25* (N IN (R[-43J 
C, IF (*[-208]Cl-4}-2 f 
16000, 8000) +2000* (R[ 



-105]C[-4)+R[-102jC[ 
-4]*R[-101)C[-4]+R[- 
100JC[-4])));K0 

C;r220;X4;X258520 

c;X6;K0.5 

F;F%OR 

C;X8;K28698 

F; FF2G 

C;Xll;K n D" 

C ; X2 2 ; E < MIN (R[~48]C[-20 
J , 4000 + 1000* (R [-206} 
C[-4]+R[-203]C [-4J+R 
(-102]C[-4J+R[-10XJC 
[-4]))) /4+MJN(R[-4B1 
C[-8J. 7000+2500* (R(~ 
lQ6lC(-4}+Rf-lQ31Cf- 
4)+R[-2 02]C[-4)+R[~2 
02}C[-4]))/4;K0 

C;Ylll;X4;Xl87490 

C;X6;K0 .55 

F;F%0R 

C;X8;K38072 .5 

F/FF2G 

C; XI 1 ;K"S" 

C;X12;EXIN (R [-4 9] C [-6] , 

2000) ;K0 
C;Yll2iX4;X2232B0 
C, K6.K0 . € 

r,r«on 

C;X8; K48736. 5 
F/FF2G 

c; X22 ;K"F" 

C;X12;BMN (Rl-bO]C[-4]/ 

4, IF(R[-111]C[-4]=1, 
14000, 7000) ) ,K0 

C;Y113;X4;X241 740 

C;X€;KO . 65 

F;F*0R 

C;X8;K60823 .5 

F;FF2G 

C; XI 1 ;K"G" 

C;Xl2;X(SO*(Rr-5Q]Ct-lQ 
] :Rf-50]Cf-6) ) )/4;K0 

C;Yll4;Xll;K m H" 

C:X12:E(MIN( (R(-51)C{-4 
)+0. 75* (R [-51 ]C(-2J ) 
),ir(R[-113)C[-4J=l, 
4 00000, 200000} ) ) *0 .0 
5;K0 

C; Y115; XlliK-X" 

C;X12 JMBVM (R[- 2]C:R[-8] 
C) : KO 

C;Y116; X9;K"AS > RES REDUC 

TIQN LIGNB B m 
F/FCOC 



F; Xl ; FCOC 
FiXUfFCOC 
F; X12 ; FCOC 
F;X13;FC0C 

C;X14;ER[-12]C-R{~1] C[- 
2];K0 

C,Y117;X9;K"1>EC0TE LION 
E D - 

r;rcoc 

F; xl 0; FCOC 
f; xl 1; fcoc 
f; xl2; fcOc 
F; X23 ; FCOC 

C; XI 4; EM IN (IF (AND (R[~l] 
C<4300,R[-1]C>=1700, 
R[-18]C[-8]=1) , 43 00- 
R[-1]C, 0)+IF(AND(R[- 
l]C<1700,R[~18}C[-8] 
=1.5). 1700-Rf-l]C, 0) 
f R[-l]C);K0 

C;riia;X9;K"THF07S SDR 

+VALOES LTGNE F " 
F; FCOC 
F; X10; FCOC 
F; XI 1; FCOC 
F;X12;FC0C 
F; Xl 3 ; FCOC 

C;X14;E(R[~79JC[-1Q]-R[ 
-78]C[-10] ) *0 .11+ (R[ 
-79JC[-BJ -R[-78jC[-8 
J+R(-8C)Cf-6J ) *0. 16+ 
(Rt-79]C[-6)-R[-7B]C 
[-6 J )*0.26+R[-81]C[- 
6] *0. 51/KO 

C; Y119;X9;K"i.IGNE K" 

F;FCOC 

F; XI 0; FCOC 
F;X11,-FC0C 
F;X12;FC0C 
F;X13;FC0C 

C/Xl4/ER[~57jC(-4]+R [-5 

S]C[-4};K0 
C/Y2 20;X9;K"AI>RES CORRE 

CTXQN LXGNE G" 
F/FCOC 
F; X2Q ; FCOC 
F; XI 1 ; FCOC 
F/X12; FCOC 

F;Xl3;rC0C 

C/X14; EIF ( (R [ -4JC-R [-3 ] 
C+R [-2] C+R [-1JC) >339 
r Rt~4JC-R[-3)C+Rf-2) 
C+R[-2)C, 0);KO 

C; Yl 21 ; X9; K "UINORATION 
1986" 



F; FCOC 
F; X2 0-FCOC 
F; X2 2/FC0C 
F; X22/FC0C 
F; X23/FC0C 

C; X14;KIF(R[-1]C<22730, 
R[-1]C*0.08, 0)+lF(AX 
D(R[-1 )C>22729 t Rf-l] 
C<28411), 4* (1 420-R[~ 
2}C*Q. 0425) , 0J+IF(AN 
D (Rf-2 J02842C, Rf-2] 
C<34092) ,R[-2 ]C*0.03 
, Of ;K0 

C; X122;X9;K"AFRES minor 

ATION 2986" 
F; FCOC 
F/X2 0/FC0C 
F;X22;FC0C 
F; XI 2; FCOC 
F; XI 3; FCOC 

C;X14;BR[~2JC-R[-1]C;KQ 
C; Y 123 ; X9 ; K" COMPLEMENT A 
IRE J»" 

F;FC0C 
F. X10; FCOC 
F;XlljFCOC 
F; XI 2; FCOC 
F; XI 3; FCOC 

C;X14;EIF (R [ -3 ] C>33 9 , R [ 
-54JC*C. 01, 0) /KO 

C; Y224;X9, K"CREDXTS AVO 
IRS FISCAUX" 

F/FCOC 

F,X20; FCOC 

F;X22; FCOC 

F;X22;FC0C 

Fi XI 3, FCOC 

C;X14;ER[-206]C[-2] ;K0 

C/Y125 ; X9;K"IMPOT DO" 

FfFCOC 

F;X10;FC0C 

F; XI 2, -FCOC 

F; X22; FCOC 

F;X23;FC0C 

C;X14;MR[-3]C+R[-2]C-R[ 

-1JC/K0 
*;N1;A7Q 12 
E 



Nnte • deux 'retours chariots" sont 
indtsponsables d la fin de ce 



60 



Pom's n° 23 



Retour dans le Basic 
Halte aux Scrolls ! 

Gilles Carawc 



^^■■^ans les lignes qui vont 
m ■suivre, nous a Hons 

M M presenter deux utilitaires 
M**^ utilisables a l'aide de 
rinstruction ampersand (&) du 
langage Basic Applesoft. 
La fecondite de cette instruction 
n'est plus a prouver. De jour en 
jour, de numero de Pom's en 
numero de Pom's, elle enrichit 
l'etendue des possibilites du Basic 
de nos Apple par l'acces facile a 
des programmes rediges en 
langage machine. 
Les deux utilitaires presentes ici 
regroupent des programmes 
permettant d'accomplir des taches 
fort differentes et tr£s utiles dans 
la pratique. 

Le premier permet d'activer la 

touche ESC et ainsi de 

programmer la possibilite de 
revenir en arrifere lors du 
deroulement sequentiel d'un 
programme ecrit en Basic 
Applesoft. 

Le second permet d'interrompre 
en bas de page le defilement 
continu de l'affichage a l'ecran. 

Pour utiliser cette bibliotheque 
ampersand, vous devez soit la 
charger par un BRUN, soit lancer 
l'instruction CALL 37555 lorsque 
la bibliotheque est deja en 
mdmoire. Celle-ci a €t& implantfc 
dans les adresses $92B3... 
S949D. Toutefois, le programme 
etant relogeable, vous pouvez le 
deplacer facilement en utilisant le 
programme RELOCATE presenie 
par J.F. DUVIVIER dans le n°l 
de Pom's. 

Faites marche 
arriere dans un 
programme Basic 

Utiliseriez vous une voiture sans 
marche arrifere pour vous deplacer 
dans le dedale des rues dune 



agglomeration ? Non. Et pourtant, 
vous avez surement dej& utilise ou 
meme redige des programmes 
sans possibilite de revenir en 
arri&re apr£s un choix 
malencontreux. Ce n'est peut 6tre 
pas tout-&-fait la meme chose mais 
tout aussi facheux. 
Nous vous proposons dans les 
lignes qui vont suivre, un moyen 
simple d'inclure dans vos 
programmes Basic les facilites du 
retour arriere programme par la 
touche ESC. Cette touche sera 
programmable lors de chaque 
question posee 5 l'utilisateur de 
votre programme. 
Quatre commandes utilisant 
I'ampersand (&) sent necessaires 
pour accomplir cela. EUes gerent 
une pile d'adresses de trois 
niveaux (irnplantees aux adresses 
$F9...$FE) permettant ainsi de 
faire un retour & trois etapes 
anterieures. Les deux premieres 

permettent de pointer les 
instructions ou Ton accepte de 
revenir en cas de demande, la 
troisifcme declenche le retour 
arriere et la derni&re interdit tout 
reiour a une etape qui la precede. 

&STORE 

Cette commande permet de 
pointer une instruction Basic ou 
l'on souhaite eventuellemcnt 
revenir en cas de besoin. Comme 
le faisait le "Petit Pousset" avec 
des cailloux, elle laisse une trace 
du passage en certains points du 
programme dans l'intention de 
pouvoir y revenir. 
Cette commande memorise cn 
SCE.SCF le numero de 
rinstruction d'ou elle est lancee. 
Vous pouvez la placer n'importe 
ou dans votre programme (sauf 
dans un sous programme ou dans 
une boucle). Elle doit 
obligatoiremcnt apparaitre sur la 
ligne d'instructions ou Ton desire 
revenir en cas de demande 
explicite. 



La place privilegiee de &STORE 
se situe en general au debut des 
instructions ddfinissant un menu. 
En effet, e'est par le choix dans 
un menu que Ton debute 
normalement un traitement et e'est 
done IS en general qu'il est 
souhaitable de pouvoir revenir en 
cas de necessite. 

Cette commande prend soin de 
remettre £ zero la pile du 
processeur g6r6e par l'interpreteur 
Basic (adresses $100 I $1FF). 
Ceci permet de quitter une boucle 
ou un sous programme en ay ant 
fait le menage. Ceci interdit 
egalement, ce qui est normal, de 
revenir dans un sous-programme 
sans repasser par une instruction 
GOSUB et impose aussi de 
reprendre une boucle par 
l'instruction FOR. Vous ne 
pouvez done pas programmer un 
retour a l'interieur d'un sous- 
programme ou d'une boucle. 

&VAL 

Cette instruction est la deuxifeme 
etape de memorisation d'un 
numero d'instruction. Elle valide 
la demande exprimec par 
&STORE. 

En effet &STORE n*a pas place le 
numero de rinstruction qu'elle 
pointe dans la pile contenant le 
numero des instructions ou Ton 
est susceptible de revenir. 
Ceci ctait premature. Si, au debut 
d'un menu, &STORK avait 
directement modifie la pile des 
numeros d'instructions ($F9... 
$FE), en appuyant sur "ESC" a la 
fin de ce menu, on retrouverait 
celui-ci et non celui qui le 
precede. 

Sa place naturelle est situee 
directement a la suite d'une 
instruction GET ou INPUT 
lorsque la reponse est autre que 



Pom's n° 23 



61 



"ESC". 

Notons que 1'on pent lancer 
plusieurs fois la commandc 
&VAL aprfes une commande 
&STORE. Seule la premiere sera 
prise en compte pour la 
modification de la pile. 

&RETURN 

L'cxccution de cette commande 
vous fera revenir a la dernifcre 
instruction mernorisee par 
&STORE et validee par &VAL. 
On devra done la placer h la suite 
d'uri GET ou dun INPUT aprSs 
avoir teste si la reponse est 
CHR$(27) (touche "ESC"). 



&CLEAR 

Cette commande remet S zero la 
pile dc travail definie en 
$F9...FE. 

On l'utilisera pour interdire tout 
retour S une instruction precedant 
celle oil elle apparait. Ceci est 
parfois necessaire quand pour des 
raisons de logique propre au 



programme, on ne peut retrouver 
par un retour arri£re une situation 
propice & la reprise du Iraitement. 

Halte aux 
SCROLLS 

Le SCROLL est une sous- 
programme du systeme qui 
declenche le decalage vers le haut 
des lignes de I'ecran. Elle est 
utilisee pour degager la dernifcre 
ligne du bas quand l'affichage 
ngcessite plus de 24 lignes. 
Ainsi, quand on edite un grand 
nombre de lignes, on provoque 
un defilement inintcrrompu a 
I'ecran. 

La seule possibility qui nous est 
donnee pour s'attarder sur 
l'affichage est d'utiliser CTL-S. 
Ceci est peu convivial et peu 
pratique. 

Le programme en langage 
machine qui vous est propose ici 
remedie & ce problem e. II permet 
une edition progressive ecran par 
ecran et non plus en continu. II 
vient se substituer a la routine de 
sortie de caractfcres dont l'adresse 



est mernorisee en $36.$37. 
&SCROLL DEL 

A partir du moment ou cette 
commande est donnee, l'affichage 
se fait page par page. Une fois 
I'ecran rempli un message 
demande d'appuycr sur unc 
touche pour continuer 
rimpression. 

Pour revenir au mode d'affichage 
normal (ce qui est necessaire 
quand on utilise les commandes 
DOS d'6criture sur disquette), 
vous devez lancer successivement 
les ordres : PR#0 : CALL 1002 
La commande &SCROLL DEL 
est compatible avec les 
commandes de retour arri£re 
presentees plus haut. Lors de la 
reponse au message apparaissant 
en bas dc I'ecran vous executez 
automatiquement &RETURN si 
vous appuyez sur la touche 
"ESC", sinon vous validez par 
&VAL la dernifcre demande de 
retour faite par &STORE. 

d 



30 
40 



50 



Programme 'BIB LI. DEMO' 

10 til MEM: 37555 :N% = 0:NM$ = HO 
20 D$ = CHR$ (13) + CHR$ (4):ER$ = CHR$ 
(7):ESC$ - CHR$ (27) 
PRINT D$ "BRUNBIBLI . AMPER " 

& STORE :N - 3: GOSUD 100: HTAB 7: PR 
INT "PROGRAMMES DE DEMONSTRATION": VTA ^0 
B 6: HTAB 17; PRINT "MENU": NORMAL 130 
VTAB 11: PRINT "1 - ECRIRE LES 300 PRE 
MIERS NOMBRES . " : VTAB 14: PRINT "2 - A 
FFICHER LE CATALOG DE LA DISQUETTE. ": 140 
VTAB 17: PRINT "3 - LISTER LES INSTRUC 
TIONS DU PROGRAMME" : VTAB 20: PRINT "4 
- QUITER LE PROGRAMME.": GOSUB 170: O 
N O GOTO 70,110,80, 90 

GOSUB ISO: & VAL : PRINT D$"PRiO": CA 
LL 1002: TEXT : GOTO 40 

& VAL : & STORE ;N - 3: GOSUB 100: H 

TAB 6: PRINT "LISTES DES 300 PREMIERS 170 

NOMBRES": VTAD 10: NORMAL : 6 SCROLL D 
EL : FOR I = 1 TO 300: PR TNT I/" ";: 
NEXT ; GOTO 60 

& VAL : * STORE sN = 3: GOSUB 100: H 180 
TAB 8: PRINT "LISTING DU PROGRAMME BAS 
IC": VTAB 10; NORMAL : * SCROLL DEL : 190 
LIST : GOTO 60 2 00 
90 N = 3: GOSUB 100: HTAB 15: PRINT "AU RE 210 

VOIR ! " : VTAB 23 : NORMAL : END 
100 TEXT : HOME : INVERSE : GOSUB 210 1 FO 220 



60 



70 



80 



R I = 1 TO N: GOSUB 220: NEXT : GOSUB 
210: VTAB 3: RETURN 

& VAL : & STORE :N = 5: GOSUB 100: 
HTAB 6: PRINT "LISTES DES FICHIERS SE 
TROUVANT " : PRINT : HTAB 3: PRINT "ACTTJ 
ELLE ME NT SUR LE DISQUE NUMERO 1": VTA 
B 10: NORMAL 
& RWTS: IF N% < > THEN GOTO 140 
NORMAL ; HOME ; TEXT : VTAB (15): PRI 
NT "AUCUN FICHIER N'EXISTE SUR LE DISC 
UE GOTO 60 

& SCROLL DEL : FOR T = 1 TO N%: & RE 
AD NM$ > I: PRINT I;" - "NM$ : PRINT : 
NEXT I ! GOTO 60 

VTAB 24: HTAB 1: INVERSE : PRINT " P 
OUR CONTINUER TTiPER SUR UNE TOUCHE. " ; t 

GET 05: NORMAL : IF 0$ = ESC$ THEN £ 
RETURN : PRINT ER$; HTAB 1: RETURN 

& VAL : HTAB 1 : RF.TURN 

VTAB 24: HTAB 6: INVERSE : PRINT "REP 
ONDRE" ; : NORMAL : PRINT " 1 2 ... 4 : 
";: HTAB 28: GET 0$ : IF OS = ESC$ THEN 
& RETURN 

= VAL (0$) : IF > AND O < - 4 T 

HEN II TAD 1: RETURN 
HTAB 28: PRINT ER$; : PRINT D$; 
HTAB 31: PRINT "ERREUR " ; : GOTO 170 
PRINT "4-";: FOR 1 = 1 TO 38 : PRINT 
";: NEXT I: PRINT " + ";: RETURN 
PRINT "I"; SPC( 38);"!";: RETURN 



62 



Pom's n° 23 



Source 

'B1BLL TEXT 9 



1 

2 


# 






3 


ADDON 


EQU 


$D9 


4 


BELL 


EQU 


$FF3A 


5 


CONINT 


EQU 


$E6FB 


6 


C0UT1 


EQU 


SFDFO 


1 


ERROR 


EQU 


$D412 


8 


FNDLIN 


EQU 


$D61A 


9 


FRMNUM 


EQU 


$DD67 


10 


LABI 


EQU 


$DEC9 


11 


LAB2 


EQU 


$A851 


12 


LA33 


EQU 


$D941 


13 


RDKEY 


EQU 


SFDOC 


14 


SCROLL 


EQU 


$FC70 


15 


SETTXT 


EQU 


$FB39 


16 


VP 


EQU 


$FC1A 


17 




ORG 


$92B3 



18 
19 

20 * CHARGFMF.NT OR AMPF.RV 

21 LDX I $02 

22 BO LDA ADRO, X 

23 STA $03F5, X 

24 DEX 

25 BPL BO 

26 ' CHARGEMENT DE 

T.'ADRFSSF DE LA 
TABLE JOB 

27 * POUR RHTS 

28 LDX 9 $01 

29 Bl LDA ADR1+1,X 

30 STA ADR3 f X 

31 DFX 

32 BPL Bl 

33 * CHAPCEMENT DE 

L'ADRESSE DE LA 
TABLE DES 

34 * CARACTERISTIQUES 

DU LECTEUR 



35 




i.nx 


tsoo 


36 




LDA 


ADR2+1, X 


37 




STA 


ADR4+1,X 


38 




INX 




39 




LDA 


ADR2+1, X 


40 




INX 




41 




STA 


ADR-4 + 1.X 


42 




JMP 


ADR 5 


43 


ADRO 


JMP 


ADR 6 


44 


ADR1 


JMP 


ADR1 


45 


ADR2 


JMP 


ADRS 


46 


* 






47 


* DEBUT 


DE '& 


i 


48 


*r 






49 


* INTERPRETATION 




DES COMMANDES 


50 


ADR6 


LDX 


i$00 


51 




STX 


$19 


52 


B3 


LDY 


i$00 


53 


B2 


LDA 


TC1.X 


54 




BEQ 


ADRS 


55 




CMP 


i$FF 


56 




BEQ 


ADR10 


57 




CMP 


<$B8),r 


58 




BNE 


ADRJ1 


59 




INY 




60 




INX 




61 




BNE 


B2 


62 


ADR10 


JMP 


LABI 


63 


ADR11 


INX 




64 




LDA 


TC1,X 


65 




BNE 


ADR11 


66 




TNX 




67 




INC 


$19 


68 




BNE 


B3 


69 


ADR 9 


JSR 


ADDON 


10 




ASL 


$19 


71 




ASL 


$19 


77 




i.nx 


$19 


73 




LDA 


ADR12+2.X 


74 




PHA 




75 




LDA 


ADR12+1,X 


76 




PHA 





77 


RTS 




15b 


* 




78 


* TABLE DES 




157 


' FA.F9 = 


7 




COMMANDES OF '&' 




SI OUI "RTS" 


79 


TCI HEX 


A800 


158 


R6 LDA 


$F9 


80 


HEX 


E500 


159 


CLC 




ei 


HEX 


B100 


160 


ADC 


$FA 


82 


HEX 


BD00 


161 


BNE 


ADR22 


83 


ASC 


'SCROLL' 


162 


RTS 




84 


HEX 


8500 


163 


* CHARGEMENT 


LINNUM 


85 


ASC 


'RWTS ' 


164 


ADR22 LDA 


$F9 


86 


HEX 


00 


165 


STA 


$50 


87 


HEX 


874E4D24 


166 


LDA 


$FA 


88 


HEX 


CF00FF 


167 


STA 


$51 


89 


* ADRESSES DES 


168 


- DEFILEMENT 


DE F9 .Fi 




C0F4MANDES 




169 


LDX 


4$00 


90 


ADR1 2 JSR 


ADR13-f-2 


170 


B5 LDA 


$FB,X 


91 


NOP 




171 


STA 


$F9,X 


92 


JSR 


ADR14 


172 


INX 




93 


NOP 




173 


CPX 


t$04 


94 


JSR 


ADR15 


174 


BCC 


B5 


95 


NOP 




175 


* SI LINNUM=CE.CF 


96 


JSR 


ADR16 




REPRENDRE 


S RETURN 


97 


NOP 




176 


LDA 


$CE 


98 


JSR 


ADR17 


177 


CMP 


$50 


99 


NOP 




178 


BNE 


ADR44 


100 


JSR 


ADR18 


179 


LDA 


$CF 


101 


NOP 




180 


CMP 


$51 


102 ADR13 JSR 


ADR19-h2 


181 


BEQ 


Bb 


103 






182 


ADR44 LDA 


t$0O 


104 


* DEBUT DE & STORE 


183 


STA 


$FD 


105 


* 




184 


STA 


$FE 


106 


* CHARGEMENT 


DE 


195 


* REINITIALISATION 




"CE.CF" 




186 


LDA 


t$FF 


107 






187 


STA 


$32 


108 


LDA 


$75 


188 


LDA 


t$FO 


109 


STA 


$CE 


189 


STA 


$36 


110 


LDA 


$76 


190 


LDA 


f$FD 


111 


STA 


$CF 


191 


STA 


$37 


112 


* MISE A ZERO 




192 


JSR 


SETTXT 




DE LA PILE 




193 


JSR 


LAB2 


113 


PLA 




194 


■ GO TO LINNUM 


114 


TAY 






SINON ERREUR 


115 


PLA 




195 


JSR 


FNDLIN 


116 


LDX 


i$FF 


1 96 


Rrr 


ADR 2 ? 


117 


TXS 




197 


JMP 


LABS 


110 


PHA 




198 


ADR 2 3 LDX 


#$5A 


119 


TYA 




199 


JMP 


ERROR 


120 


PHA 




200 


ADR 16 RTS 




121 


ADR1 4 RTS 




201 


* 




127 


» 




202 


* DEBUT DE &CLEAR 


123 


* DEBUT DE SVAL 


20 3 


* 




124 


* 




204 


* MISE A ZERO DE 


125 


* CE.CF = 






LA PILE F9 






SI QUI "RTS 


tr 


205 


ADR5 LDA 


i$00 


126 


ADR30 LDA 


$CE 


206 


LDX 


t$05 


127 


CLC 




207 B7 STA 


$F9,X 


128 


ADC 


$CF 


208 


DEX 




129 


BNE 


ADR20 


209 


BPL 


B7 


130 


RTS 




210 


'MISE A ZERO 


DE CE.C 


131 


* CE.CF = F9. 


t'A ? 


211 


STA 


$CE 




SI OUI "RTS 


It 


212 


STA 


$CF 


132 


ADR20 LDA 


$CE 


213 


ADR17 RTS 




133 


CMP 


$F9 


214 


* 




131 


BNE 


ADR21 


21 5 


» DEBUT DE & SCROLL D£ 


135 


LDA 


$CF 


216 


* 




136 


CMP 


$FA 


217 


- CHARGEMENT 


DE CSW; 


137 


BNE 


ADR21 


218 


' ADRESSE DE 


LA 


138 


RTS 






ROUTINE DE SORTIE 


139 


* KMPTLEMF.NT 


DF. 


219 


* DE CARACTERES . 




CE.CF EN F9 


.FA 


220 


LDA 


ADR24+1 


140 


ADR21 LDX 


t$03 


221 


STA 


$36 


141 


B4 LDA 


$F9,X 


222 


LDA 


ADR24+2 


142 


STA 


$FB, X 


223 


STA 


$37 


143 


DEX 




22 4 


JSR 


LAB2 


144 


RPh 


B4 


225 


RTS 




145 


LDA 


$CE 


77 6 


A DP 7 4 JSR 


ADR 2 5 


146 


STA 


$F9 


227 


* ROUTINE DE 


SORTIE 


147 


LDA 


$CF 




DE CARACTERES. 


148 


STA 


$FA 


228 


- SAUVEGARDE 


DES 


149 


* MISE A ZERO 


DE CE.CF 




REGISTRES: 


X,Y E? A 


7 50 


IDA 


t$00 


229 


ADR25 STX 


$07 


151 


STA 


$CE 


230 


STY 


$08 


152 


STA 


$CF 


231 


PHA 




153 


ADR15 RTS 




232 


* SI POSITION DU 


154 








CURSEUR < 23 


155 


* DEBUT DE 6 RETURN 


233 


LDA 


$25 



Pom's n° 23 



s 74 
£ J H 




CMP 


§$16 


303 


HEX 


08052E202 


3PP 




Jin 


•? 1" 


£ J J 




BEQ 


AJJR26 


OA'JAOAUAOAO 


33 Q 

Jay 




1 f 1 V 




3 7< 
£J0 


* ALGRS ; 






JUH nUHla 






3Q0 
J 3U 


n 7 5 
ai j 


i nv 
LUX 






JMP TiJFO (CGUTli 


in; 




¥$10 


30 7 
J?i 




LUr\ 


/ e 1 1 v 


3 7 7 


B8 


PLA 




JUB 


SZfl 


ADR31 +2 


j y £ 






A SfTfi 


3 7 




JMP 


C0UT1 


Q ft 1 




f$2F 


7 7 
J> J 




at.lj 


n j>n 3 n 
f\tJKJ¥ 


? 70 
£ jy 


* SJNON 


SI ACCUMULA TEUR 


JVC 




ADR32 


7 0«3 




fKfP 


a ?pr 
v yrr 




AORETURN OU 


309 


LUX 


0$UU 


3 9 j 




BEQ 


ADR 3 8 


"7 ah 

£H<J 


* POSITION HORIZONTALS 


7 T H Q 7 
JJ.U 0±£ 


1NX 








r ny 
UUi 


a cn 3 
w$U2 




DU CURSEUR 


< 39 


311 


DEC 


ADR31 * 1 


3/17 




LDA 


1 f* > n 1 1/ 


OA 7 
-''II 


* Af.nPS : 






7 7 5 


INC 


ADR 3 2 


3QP 
j yn 




fMD 






JWP JW 


(COUT1 J 


7 7 7 


T<fJ ft 

TXA 




7 Q 






AxJKflO 


OA p 

4.1*. 


ADE2£ 


PLA 




7 7 4 
J J. 1 


£-.TJ7 






e\ut\ j o 






9 4 3 
£ 9 J 




PHA 




J-i 3 


JSR 


ADR 4 


*I U J 




Urn 




'JOG 
£HH 




CMP 


i$8D 


7 I 6 






AO? 




. _ 


c'Ui\ 7 C 


OA ^ 




BEQ 


ADR27 


3 7 7 
31 1 


IT1J1 




s y j 








OA C 




MA 


$24 


7 7 fl 

31 a 




wSl 


AHA 

HUH 




UUr\ 


j j 3 


1 A ~} 

24 / 




CMP 


t$21 


ji y 


BNE 


B12 


^ u ~ 




>iiJ(_ 


# C 3 3 


i > n 




BCC 


B8 


3 -Ort 

Ji£U 


LiiL 




I u o 




ol/l 






* SJNON: 






7 "7 7 


BCC 


ADR 3 3 


Am 

H V I 




OLL 


di r 
BU 


£jU 


» I MP RIMER LE MESSAGE 


^£ £ tHjt\H 


LiUI 




A OP 
H \J O 


tlUi \ 7 1/ 


i - r.r - 






EN BAS DE 


L 'ECRAN. 


7 5 3 


hDA 


Jt C" /I A 


AHQ 
7 u J 




uutx 


STA 
J_tn 


£ J X 


ADR2? 


LDY 


4$00 


10 A 


Tf*f3 


c*ft 1 






ADC 


7 


0S0 
£j£ 


BB 


LDA 


CH, Y 


3 O C 


CLD 




4 7 7 




•Jin 


STA 


£J~J 




STA 


$01DO, Y 


Jt Q 


Htij 




412 




BCC 


Bl 6 


?*\A 
£JH 




INY 




7? 7 £ HP P 






4 7 3 


ADR4 5 

/Vi-"il 7 J 


T,DY 


420 7 


3 «; k 




CP* 


t$21 


J«f O 


OKA 




4i 4 


Bll 


LDA 


(£19) Y 

l "I*X , X 


0S6 




SNE 


B9 


J*;? AURJi 


/in n 


($00) t Y 


4 J 5 




( 'MP 


1 yiD/ / * 


OC7 
£JI 


* ENTREE D'UN 


J JO ADi?J 


CMP 


$0094, Y 


4 7 6 




DLL 


ADR4 J 




CARACTERE AU CLAVIER 


7 7 7 2 nD 7 "3 
JJi AUHj£! 






AT 7 

H J. 1 




one 




258 






RDKEY 


332 


BRK 




ATP 
QIC 




T\IV 




^ j : 




CMP 


4$9B 




oKA 




410 




rny 
1—1 2 




7 «r n 

2b0 




BNE 


ADR28 


JJ4 


URA 


($00, Xf 


A7f) 
H£U 




3 JVC- 


7 7 


06T 


* SI "ESC" 




lie 
33D 


TUf/"* 

IlVt, 


$(J1 bu, X 


421 


ADR 41 




S 7 9 


£0£ 


* ALORS . 


CONTROLE DE 


336 ADR7 


BRK 




H £ £ 




Oin 


yJD 




FQ.FA 


PUTS 


tPETtmN 


3 3 7 


/in ft 
UK/1 


f SEE, X) 


7 £ ~f 






S 7/5 

V X /i 


£bj 




LDA 


$F9 


3 3 o 


CLD 




H £1 




Jin 


<? JP 

•7 J l_ 


n / * 




CLC 




Jjy ADKJJ 


nun 


9$O0 


H t- J 




LLL 




j 




ADC 


$FA 


340 


STA 


$1D 


AO 6 
H £ a 






2 no 3& 


it DO 




BEQ 


ADR29 




r n * 

LDA 


A 1* 

5 -■ - - 


A?7 

7 £ ' 


ADR 7Q 


l,f)Y 
LiU x 


A SO 1 
it yUJ 




*ro / 




PLA 




3 * n 


iiA 


fin 


H£o 




L.UH 


C 7 P 
9 IIS 


•i CO 

Snti 




STA 


$06 


3 A 3 


LDA 




4?Q 
it* 




fjf 




ICQ 




LDA 


4$BD 


3 it til 


ai/l 




1 Jw 






rvu J 


77/1 




STA 


$36 


3-*C Ar\Ei.4 7 


Li UP. 


J *^5"7 


4 37 




Sill 


/ C 7 n 1 y 


7 7 7 

£ 1 1 




LDA 


f$9E 


6 




tin 


432 








'JI'J 
£ 1 £ 




STA 


$3/ 




r n» 


n c n o 
w$'Ja 


433 




LDA 


$1C 
"r 


£ 1 J 




JSR 


LAB2 


1 at n 


STA 


$19 


434 

7 7 




STA 


(STDI Y 


5 74 




JMP 


R6 


?4 9 


r.nx 


$$00 


4 35 




T.DY 

UU i 


iS?0 

w m r£ <J 




ADR 2 9 


JSR 


BELL 


J5C SI3 


LDY 


f$00 


A ?6 


R 7 P 


I Vih 
1 ii J/i 


/ 07 p 1 y 


276 


' SINON: 






35 1 


LDA 


($1 9), Y 


4 3 7 

9 J / 




fMD 


J can 




EFFACE* LE 


MESSAGE. 


352 


CMP 


t$Q0 


7 O 






A/1R4 P 
r\LJi\ 7 *1 


3 7 7 


ADR 2 8 


LDY 


*$00 


35 3 


BEQ 


ADR34 


4^4 




L/C. X 




07 P 




LDA 


0$AO 


33 4 


fun 




44 

7 7 1/ 






IT -T* ** J 


9 7 
2 / y 


BIO 


STA 


$07DO r Y 


tec 

355 


BEQ 


ADR35 


44 7 

7 7 i 






□ x 


PRO 




TNY 




3 C £ 




a 7 

f >EAc 


442 


ADR42 






Ofl 7 
£<S i 




CPY 


§$27 


3 C 7 




/i*i fli i> 
(SI 9) , Y 


44 7 








OP? 
£ IS £ 




BNE 


BIO 


JJO 




A ^ f>/7 


444 




SEC 




JO 3 
£Oj 


' REMONTER LE TEXTE 


7 K O 


BCS 


ADR36" 


44 r i 






4$o2 

IT V f£ 




DE 16 


LIGNES . 


joC AVH35 


I NX 




44 b' 




LDY 

LIU 1 




OP A 
2oH 




LDY 


i$00 


i f ^ 
J6I 


CPX 


#5(77 


J J 7 

7 7' 




j 1/1 




OP S 

£OJ 


Bll 


STY 


$06 


7<r 7 


13 I7V"1 


a nu 3 7 

AUK J i 


44P 

7 7 O 




J Art 




10 £ 
2a o 




JSR 


SCROLL 


JO J 


l**T f 




4/ 
HH y 




IMC 




PP7 
£ a / 




JSR 


VP 




r D£ 

LiUri 


"■1 fl 
9 -i 5» 


450 


mo 


t.da 

*Ji//7 


1 v x 0/ , X 


OPP 

£CO 




LDY 


$06 


7c 




M C 3' 7 


457 




AND 


it v * r 


£ o y 




INY 




let; 
joe 


CT2 


C T O 

o 1 y 


45-? 




6"iV) 


fSlHi Y 






CPY 


i$0F 


7C7 


□It 


D1 3 


7 Jw 1 








Q 7 




RNR 


R 7 7 


3 CD £ riD 7 7 


( 1.1 . 




7 <J 7 






0SO2 

It <J £ 


707 


* FAIRE 


&VAL 


PUIS 


7 C O 




> JA 


455 






R 7 Q 




IMPRIMER LE 


3 '0 






456 




CLC 






CARACTERE. 




37 7 


Jin 


e 7 « 
jiA 


4 l i7 

7 J ' 




T.tTA 




Q 7 
£ yJ 




JSR 


ADR30 


7 7 3 

J 


Tiff 


O 1 A 


4 SK 
7 JO 




A IV 
rix/c 


ff 9 W J 


QA 




PLA 




37 3 LnP7A 

JfJ PiUnJ'i 


7 nv 

LiUI 


A $fi 


4 59 




J in 


V J/J 


£yj 




WX 


$07 


37 A 


L/Un 


A C/7fl 


4 60 

H 0\J 




T.DA 


J X c 


0Q6 

tz y & 




LDY 


$08 


77 5 




/cera\ y 
',99 2/ , r 


461 




ADC 


H<:00 


?0 7 
£ y / 




JMP 


COUT1 


77/7 
J ' u 


ThlY 




4 62 




STA 




£ ya 


' MESSAGE EN 




77 7 


r na 
LjUr\ 


S 7 P 


463 




LDY 


4$00 




MODE INVERSE: 


1 JO 

Jf fl 




/ C £ (1 1 V 

($o9J , I 


464 




LDA 


iSFF 


TOO 

£y y 


* "POC/i? 


CONTINUER 


3 70 

j /y 


DTC 




7 u 




STA 


(STR1 Y 

| VXD/ ^ 1 




TAPER 


SUR UNE 


3 On ariD 3 (T 
anil/ ^((H5D 


Thlf 

1 Prl- 


CIO 


4 

■(DO 


nUlyJ. y 


JMP 

urlr 


AFlQA 7 
nUftH J 




TOUCHE. " 




3fll 


LDA 




4 67 






FPMNHM 


7/1/1 


CH 


HEX 


2020100F1 




STA 




4 68 




JSR 


CONINT 




51220O30F0E14I09 


JS3 


LDA 


$1A 


469 




CLC 








HEX 


OE1505122 


JS4 


STA 


$1C 


470 




LDA 


$69 




0140110051220 


3S5 


CLC 




411 




ADC 


K$09 


302 




HEX 


131512201 


3S6" 


BCC 


ADR 3 8 


412 




STA 


$2 9 




50E0520140F1503 


3S7 fljfi 


LDA 


i$0B 


473 




LDA 


$6A 



Pom's n° 23 



it "7 it 






4 75 

^ ' -D 


•Jtn 




H f u 


LDA 


it$FD 


A 77 
111 


VI' /I 

j in 




4 78 


T HA 






ST A 
Jin 


"77?" 


40/1 no/i 

•4 til J 0£ U 






A Q 7 


r 

LtU/\ 


t n 
W-J 


4 P 3 


\ n/-» 
nUL. 


w-?UJ 


dpi 
H a J 


CT Pi 

jln 




* OS 


LDA 


CI/" 

sic 


TO-' 








Sin 




4 87 


HPY 

LJC.A 




A flfl 


ail Hi 




4 fl Q 

^ O J 


t n Y 










4 9 7 


uUn 


W±a) , I 


4 9.2 


STA 


($2 9), Y 




cpy 


i$00 




BNE 


B21 


4 95 


RTS 





Recapitulation 
'BIBLLAMPER' 



Apres avoir saisi ce code sous 
monrteur, vous le sauvegardcrcz par 
BSA VE BtBLI.AMPER,A$92B3, L$34D 



92B3- 


A2 


02 


BD 


DC 


92 








92B8 


9D 


F5 


03 


CA 


1 


F? 


A2 


01 


92C0- 


BD 


EO 


92 


9D 


CE 


94 


CA 


10 


92C8- 


F7 


A2 


00 


DD 


E3 


92 


90 


CO 


92D0- 


94 


E8 


BD 


E3 


92 


Ed 


9D 


CO 


D2D8- 


94 


AC 


DF 


93 


4C 


ES 


92 


4C 


92E0- 


D9 


94 


4C 


C8 


94 


A2 


00 


86 


92E8- 


19 


AO 


00 


BD 


1C 


93 


FO 


1A 


92F0- 


C9 


FF 


FO 


08 


Dl 


Bd 


DO 


01 


92F8- 


C8 


E8 


DO 


EF 


4C 


C9 


DE 


E8 


9300- 


BD 


1C 


93 


DO 


FA 


E9 


E6 


19 


9308- 


DO 


DF 


20 


98 


D9 


06 


19 


06 


9310- 


19 


A6 


19 


BD 


3A 


93 


48 


RD 


9318- 


33 


93 


46 


60 


AS 


00 


E5 


00 


9320- 


Bl 


00 


BD 


00 


53 


43 


52 


4F 


9328- 


4C 


4C 


85 


00 


52 


57 


54 


53 


9330- 


00 


87 


4F. 


4D 


24 


CP 


00 


FF 


9338- 


20 


52 


93 


EA 


20 


64 


93 


EA 



9340- 20 91 9 J EA 20 DE 93 EA 
9348- 20 EC 93 EA 20 9D 94 EA 
9350- 20 C8 95 A5 75 85 CE A3 
9358- 76 85 CF 6R AR £R A? FF 
9360- SA 48 98 48 60 A5 CE 18 
9368- 65 CF DO 01 60 A5 CF. C5 
3370- F9 DO 07 A5 CF C5 FA DO 
9378- 07 60 A? 03 R5 FQ Q5 FB 
9380- CA 10 F9 A5 CE 85 F9 A5 
9338- CF 85 FA A9 00 85 CE 85 
9390- CF 60 A5 F9 1 8 65 FA DO 
9398- 01 60 A5 F9 85 50 A5 FA 
93A0- 85 51 A2 00 B5 FB 95 F9 
Q?Afl- E8 EO 04 90 Fl A5 CE CS 
9330- 50 DO 06 A5 CF C5 51 FO 
9338- D9 A9 00 85 FD 85 FE A9 
93C0- FF 85 32 A9 FO 85 36 A3 
93C8- FD 85 37 70 ?9 FB ?0 51 
93D0- A8 20 1A D6 90 03 4C 41 
93D8- D9 A2 5A 4C 12 B4 60 A9 
93E0- 00 A2 05 95 F9 CA 10 FB 
93E8- 85 CE 85 CF 60 AD FC 93 
93F0- 85 36 AD FD 93 85 37 2 
9lF8- 5? Afi 60 20 FE S3 86 07 
9400- 84 08 48 A5 25 C9 16 FO 
94 08- 04 68 4C FO FD 68 48 C9 
3410- 8D FO 06 A5 24 C9 27 90 
9418- FO AO 00 B9 70 94 99 DO 
9420- 07 C8 CO 27 DO F5 20 0C 
942 8- FD C9 93 DO IB A5 F9 18 
9430- 65 FA FO 11 bti 85 Ob A9 
9438- BD 85 36 A9 9E 85 31 20 
94 4 0- 51 A8 4C 92 93 20 3A FF 
9448- AO 00 A9 AO 99 DO 07 C8 
9450- CO 27 00 F8 AO 00 84 06 
9458- 20 70 FC 20 1A FC A4 06 
94BU- C8 CO OF DO Fl 20 65 93 
94 68- 68 A6 07 A4 08 4C FO FD 
9470- 20 20 10 OF 15 12 20 03 

9478- OF OE 14 09 OE 15 05 12 

9480- 20 14 m 10 05 12 20 13 

9488- 15 12 20 15 OE 05 20 14 

9490- OF 15 03 08 05 2E 20 20 

9498- AO AO AO AO AO 00 A9 10 



94A0- 


8D 


CD 


94 


A9 


IF 


8D 


Dl 


94 


D4A8- 


A2 


00 


E8 


CE 


CD 


94 


EE 


Dl 


94B0- 


94 


8A 


48 


20 


BF 


94 


b8 


AA 


94B8- 


EO 


10 


DO 


EE 


18 


90 


IE 


AO 


94C0- 


C8 


A3 


94 


20 


D9 


03 


D8 


60 


94C8- 


01 


60 


01 


00 


11 


00 


D9 


94 


9400- 


UU 


2F 


uo 


00 


01 


00 


FE 


60 


94D8- 


01 


00 


01 


EF 


D8 


A9 


00 


85 


94E0- 


ID 


A9 


30 


85 


IE 


A9 


00 


85 


94EB- 


18 


A9 


20 


85 


1A 


A9 


OB 


85 


94F0- 


19 


A2 


00 


AO 


00 


Bl 


19 


C9 


94F8- 


00 


FO 


23 


C9 


FF 


FO 


08 


AO 


9500- 


02 


Bl 


19 


C9 


00 


BO 


23 


E8 


9508- 


EO 


07 


FO 


09 


18 


A5 


19 


69 


951U- 


23 


85 


19 


90 


DE 


18 


A5 


1A 


9518- 


69 


01 


85 


1A 


90 


CF 


AO 


02 


9520- 


A9 


00 


91 


69 


C8 


A5 


18 


91 


9528- 


69 


60 


E6 


19 


AS 


19 


85 


IB 


9530- 


A5 


1A 


85 


1C 


18 


90 


1A 


A9 


9538- 


OB 


85 


19 


A2 


00 


AO 


00 


Bl 


9540- 


19 


C9 


00 


FO 


3D 


C9 


FF 


FO 


9518- 


09 


AO 


02 


Bl 


19 


CO 


00 


BO 


9550- 


17 


E8 


EO 


07 


FO 


09 


18 


A5 


9558- 


19 


69 


23 


85 


19 


90 


DE 


18 


95 60- 


A5 


1A 


69 


01 


85 


1A 


90 


CF 


95 68- 


AO 


03 


31 


19 


Dl 


IB 


90 


07 


9570- 


DO 


DF 


C8 


CO 


20 


DO 


F3 


A5 


95 78- 


19 


85 


IB 


A5 


1A 


85 


1C 


18 


9580- 


90 


CF 


AO 


01 


A5 


IB 


18 


69 


9588- 


03 


91 


ID 


CO 


A5 


1C 


91 


ID 


9590- 


AO 


20 


31 


IB 


C9 


AO 


DO 


05 


9599- 


98 


CO 


03 


DO 


F5 


90 


AA 


38 


95A0- 


E9 


02 


AO 


00 


91 


ID 


8A 


A8 


95A8- 


Bl 


IB 


29 


7F 


91 


IB 


88 


CO 


95B0- 


02 


DO 


F5 


18 


A5 


ID 


69 


03 


95 D8 


85 


ID 


A5 


IE 


69 


00 


85 


IE 


95C0- 


AO 


00 


A9 


FF 


91 


IB 


4C 


E9 


95C8- 


94 


20 


67 


DD 


20 


FB 


E6 


18 


95D0- 


A5 


69 


69 


09 


85 


19 


AS 


6A 


95D0- 


69 


00 


85 




A3 


FD 


85 


IB 


95E0- 


A9 


2F 


85 


1C 


18 


A5 


IB 


69 


95E8- 


03 


85 


IB 


A5 


1C 


69 


00 


85 


95F0- 


1C 


CA 


DO 


FO 


AO 


03 


8R 


R7 


95F8- 


IB 


91 


19 


CO 


00 


DO 


F7 


60 




P@M*S VMS pT€>p@$(& 

Apple ][+* /7©> //c 

Thierry HaBrie 

II est inutile de presente le jeu de 
dominos; celui-ci beneficie d'un 
graphlsme tres soigne (en couleur si 
vous disposez d'une cane "Chat 
Mauve") et les messages rransmis 
par le programme sont, au choix, en 
Frangais, en Tralien, en Allemand ou 
en Anglais. 

80.00 F TTC franco 
Bon de commande page 74 









m 


BBS t9BS B8H 

iM^ii if^si (sm ^ 



Pom's n° 23 



65 




Patrice Neveu 



Les petites ameliorations au DOS 
3.3 proposees ici sont les 
suivantes : 

• obtention du CATALOG 
simplcmcnt par 1c slash (/). Nous 
devons etre nombreux a frapper 
CATALOF ou a oublier des lettres 
en voulant taper trop vite. 

• lancement des programmes 
Applesoft, Binaires ou fichiers 
Exec par l'unique commande '-\ 
Les fichiers INTEGER re 
peuvent plus etre utilises car les 
patches occupent les 
emplacements de FP et INT. 

• recherche du fichier desire sur 
les deux lecteurs sans avoir a 
specifier Dl ou D2 chaque fois 
qu'il est ncccssaire. Bicn-sur, si 
le fichier n'existe sur aucun des 
deux lecteurs, le message FILE 
NOT FOUND apparaitra comme 
d'habitude. En cas de VOLUME 
MISMATCH ou de I/O ERROR, 
le patch cherchera egalement sur 
l'autre lecteur. 

Pour beneficier de ces nouvelles 
commandes ik chaque fois que 
vous booterez votre disquctte, il 
suffira de taper 'BRUN 
DOSPATCH* puis /INIT 
HELLO' comme pour initialiser 
une disquefte avec un DOS 
normal. 

Les routines utilisees 

L'organisaton interne 
des tables du DOS 

Les tables tout d'abord : en ce qui 
concerne les mots cle du DOS tels 
que CATALOG, LOAD etc., elles 
sont au nombre de trois. 

1) La liste des mots-cle 
($A884.A908). Cette table 
contient tous leurs caracteres 
ASCII. La derniSre lettre de 
chaque commande a son bit 7 & 1. 
Ainsi, INITest code $49 $4E $49 
$D4 



2) Juste aprfes ($A909.A940) 
vient une table qui indique i 
l'aide de deux octets par 
commande quelles sont les 
modalites d'utilisation de chacune 
d'entrc-elles. 

Chaque octet etant constitue de 8 
bits, nous avonb done 16 bits au 
total & prendre en compte. En 
considerant que dans $8000 e'est 
lc bit qui est a l (pour une fois 
on compte de gauche & droite !) 
on obtient la tabic rappelee en 
encadre. 



3) La 36me table ($9D1E.9D55) 
contient les points d'entree de 
chaque commande, soit deux 
octets par commande. On apprend 
ainsi que la routine INIT 
commence en $A54F. 
Avec ces tables il devient possible 
de modifier, raj outer ou enlever 
des commandes au DOS 3.3. 
Nous possedons en effet tous les 
elements la syntaxe des 
commandes, leurs modalites 
d'utilisation et les adresses de 
leurs routines. 



Pom's n° 23 





Table d'utilisation des commandes 


Bit 


Signification 





Le nom de fichier est optionnel 


1 


II n'y a pas de param&re de position (Catalog. Mon...) 


2 


Premier nom de fichier attendu 


3 


Deuxieme nom de fichier attendu (Rename) 


4 


Numero de slot indispensable (PR#, IN#) 


5 


Valeur de Maxfiles attendue comme operande 


6 


Commande accessible uniquoment par programme 


7 


Commande creant un nouveau fichier s'll n'existe pas 


8 


C, I, 0, sont autoris6s 


9 


V (Volume) est autorise 


10 


D (Drive) est autorise 


M 


S (Slot) est autorise 


12 


L (Length) est autorise 


13 


R (Range) est autorise 


14 


B (Byte) est autorise 


15 


A (Adress) est autorise 



Exemple : 

Pour I'ordre INiT, on obtient 2070 : 

Valeur: 8421842184218421 
• • • • • 

Num6ro: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 



^- Slot autorise 




Drive autorise 
Volume autorise 
Nouveau fichier 
Nom obligatoire 



Nous allons done voir comme 
exemple le cas du remplaccmcnt 
de FP par le signe Au sujet de 
la syntaxe, nous avions en 
$A8EF: 

FPINTBSAVEBLOADBRUHVER 
IFY 

que I'on doit remplacer par 
$A8EF: 

-INTBSAVEBLOADBRUNVERI 
FYO 

(les caract£res gras representent 
ceux dont le bit de poids fon est & 
1). 

Pour plus de simplicite, la routine 
de Run Universel sera implantee a 
la place de celle de FP 
(SA57A.A59D) ; il n'est done pas 
necessaire de changer la 3feme 
table. Par contre, la seconde oii 
sont les param&tres a utiliser , ne 
correspond plus ; il y avait $4070 
et il faut $A075 (se reporter au 
tableau de signification des bits). 

Et voilS, il ne reste plus qu'ii 
ecrire la routine qui sera executee 
k chaque Elle commence par 
ouvrir le fichier dont le nom suit 
(SA2A8). Ensuite, il faut 
connaitre le type du fichier que 
l'on vient d'ouvrir. Ce 
renseignement est stocke en 
$B5C2 de cette maniere : = 
Text ; 2 = Applesoft ; 4 = 
Binaire. Selon le resultat trouve 
on saute faire un BKUN 
($A38E), un RUN($A4D1) ou un 
EXEC (SA5C6). 



En ce qui concerne la recherche 
d'un fichier sur les deux lecteurs, 
la mise en place est plus delicate 
car on doit se brancher 
directement sur la routine de 
traiteinent des erreurs. 

Voici done les grandes lignes de 
son fonctionnement : dhs qu'une 
erreur se produit, le DOS saute en 
$A6D5. Nous allons done y 
placer un saut vers notre routine 
BIDRIVE implantee en SA594 I 
la place de INT. Celle-ci va lire le 
numero de l'erreur (SB5C5). Si 
ce n'est pas le code de FILE NOT 
FOUND (6), ni de VOLUME 
MISMATCH (7) ou de I/O 
ERROR (8) alors on revient * la 
routine ERRHANDLE. Sinon, on 
change de lecteur puis on verifie 
si un changement a deja ete 
effectue juste avant. Si oui, le 
fichier n'est pas dans un des 
lecteurs et on va alors afficher 
l'erreur en repassant par 
ERRHANDLE. Autrement, on 
lance la cornmande demandde par 
un saut en DOCMD ($A180). 

Ce changement de lecteur 
fonctionne done sur tous les 
ordres accompagnes d'un nom de 
fichier et ces patches peuvent etre 
rajoutes non seulement au DOS 
3.3 mais aussi au DIVERSI-DOS, 
et generalement sur tous les DOS 
3.3 "ameliores". 

a 



Recapitulation 
'DOSPATCH' 

Apres avoir saisi ce code sous 
moniteur, vous le sauvegarderez par 
BSAVE DOSPATCH,A$2000,L$C5 

2000- AS A9 A2 00 8D SD B7 8E 
2008- 8E B7 A9 85 A2 4A 8D 8F 
2010- B7 3E 90 B7 A9 CO 8D 91 
2018- B7 A9 0D 8D AC A6 A9 20 
2020- A2 8D AO B7 8D BA A 6 8E 
2028- BB A6 8C BC A6 A9 6U 8D 
2030- BD A€ A9 20 A2 94 AO AS 
2038- 8D D5 A6 8E D6 A6 8C D7 
2040- A6 AO 15 B9 78 20 99 EF 
2046- A8 68 10 F7 A2 AO AO 75 
2050- 8E 35 A9 8C 36 A9 A9 40 
2058- AO 70 BD 37 A9 8C 38 A9 
20 60- AD '3E 9D 8U 4C 9U AD 3F 
20 68- 9D 8D 4D 9D AO 36 B9 8E 
2070- 20 99 7 A A 5 88 10 F 7 60 
2078- AD AF 42 53 41 56 C5 42 
2080- 4C 4F 41 C4 42 52 55 CE 
2088- 56 45 52 49 46 D9 20 A8 
2090- A3 AD C2 B5 29 IF F0 OA 
2098- C9 02 FO 03 4C SE A3 4C 
20A0- Dl A4 4C C6 A5 AD CS B.5 
20A8- C9 09 BO 18 C9 06 90 14 
20B0- A9 03 ED 68 AA 8D 68 AA 
20B8- A5 4A DO 05 E6 4A 4C 80 
20C0- Al 4C 8D B7 60 




Comment faire ? 

Mettre au point ce programme 6tait delicat, I'utiliser est 
particuli^rernent simple. 

• Faire BRUN DOSPATCH, le DOS est alors modifte en 
memoire ; 

• Initialiser une disquette (INIT HELLO par exemple) a I'aide 
de ce DOS nouveau style. 

Maintenant en 'bootant' sur la disquette ainsi preparee, vous 
disposez du smart runde type ProDOS, du CATALOG par le 
7\ mais surtout, inutile maintenant de preciser ",D1" ou ",D2\.. 



Pom's n° 23 



67 



Source 'DOSPATCH.S' 

Assembleur Big Mac 



3 
4 
5 
6 

7 
8 
9 
10 
11 
12 
13 
14 



* BATCHES au dos 3.3 * 
■ » 

* 1J / PERMET LE CATALOG. 

* 2) - LANCE LES FIGHTERS A/B/T ' 

* 3) FP ET INT SONT SVPPRIMES * 

* 4) RECHERCHE SUR 2 DRIVES LE ' 

* FICHIER t VOLUME DEMANDES * 

* * 
*** *PATR ICE *NE VEU "LE'S/ 7/85 * * * * * 



15 




ORG 


$2000 


16 




OBJ 


$8000 


j 1 
i i 

18 








19 


DRIVES* 


EQU 


$4A 


20 








21 


dos: AD.nl 7 


EQU 


S9D3E 


22 


DOSADP23 


EQU 


S0D4C 


23 


DQSOFDRES 


EQU 


SA&EP 


21 


Trrttvunu 


EQU 


SB5C2 


2* 


ERRNUM 


EQU 


SB5C5 


28 








27 


CLOSE ALL 


EQU 


$A316 


28 


OPEN 


EQU 


$A2AS 


29 








30 


DOCMD 


EQU 


SA180 


31 


PATCH 


EQU 


SA57A 


32 


PATCH1 


EQU 


$A594 


33 


PATCH2 


EQU 


SB78D 


U 


RF/IJNHANn 


EQU 


SA38E 


*S 


a nun and 


F.QU 


SAtDl 


36 


EXECHAND 


EQU 


$AScn 


37 


COODOPEN 


EQU 


SAGBA 


30 


ERRHANDLE 


EQU 


CA6DS 


39 


ORIVENUM 


EQU 


SAA\66 


-i i 


fATCtlUUS 


E\JU 


5BFE6 



= 1 apres chanr*fnfnt of. ok 
ive 

adresse de catalog 
remplace celle de fp 
part1c de la table dbs com 
km dbs dos. 

volume dv fzchier quvert 
codl d 'erreor 

ferme ts fichiers ouverts 
routine quverture fichier 

execute la commands dos 
adresse du patch de run un 

IVERSEL 

ADRESSE DU BIDRIVE 
ROUTINE FtXANT DRIVESW - 
FAIT UN BRUN 
RUN 

F.XF.C 

VA ICI LORSQne LE FJCUTF.O 

A ETE OUVERT 

EST LANCE LOPS D 'ERREURS 

-1 si DntVE l 

-2 SI DRIVE 2 BRANCHE 
PATCH DES VERNIERS DOS 3-3 
(JANVIER 83) 



41 
42 
43 
44 

45 
46 

47 
48 
49 

SO 
52 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 



67 
68 

69 

70 

72 
73 
74 
75 
76 
77 
78 
79 



• ROUTINE ANNULANT DRIVESW 



IDA 
LDX 
STA 
STX 
LDA 

row 

STA 

STX 
LDA 
STA 



4$A9 
4$0 

PATCH2 

PATCH2*1 

i$85 

4DRTVFSW 
PATCH2*2 
PATCH 2* 3 

i$so 

PATCH2* 4 



PATCH2 LDA 40 

STA DRIVES*/ 
RTS 



* SI LE' FICH1EK fcST IRQUVE, ALOR5 

* DRIVESW - I). 



LDA tSOD 
STA SA6AC 

LDA t$20 

t.ny I<patch? 

LDY t>PATCH2 

STA GOOOOFEN 

STX GOODOPEN'l 
STT GOODOFEN+2 
LUA I $60 

STA GOODOPEN+2 



LE BCC EST AVANCE DE 9 OCT 
SI PAS D 'ERREDrS. 

IL VA ICI, OU 4 OCTETS ETA 
IENT LIBRES 

MAINTENANT, ON SAUTE A FAT 
CH7, r'FAT A 

DIRE QU'ON FAIT DRIVESU=r> 
LORSQU ' UNE 

COHMANDE DOS A ETE EFFECTU 
EE SANS 
ERREUR . 

ET ON CONTINUE LE TRAITEME 
NT NORMAL 



» ERREUR — > CHANGE DE DRIVE 



LDA 4$20 
LDX tSPATCHl 



$20 EST LE CODE DE 'JMP ' 
ON PATCHE LE TRAITEMENT D£ 



8V 

81 

82 

83 
34 

S5 * 

86 * CHANGE LA TABLE DES MOT-CIES 
&7 t 



LDX tWiVtil 
STA ERRHANDLE 
STX ERRHANDLE*! 
STY ERRHANDLE+2 



S. EHHZUHS: 

AVANT DE FAIRE COttME D 'HAS 
1 TUUEf UN 

VERIFIE SI C'EST COUE6 (t'l 
LE NOT FOUND/ 

CAR DANS CE CAS, TOUT N 'ES 
T PAS PERDU ! 



89 LDY 4MOTSEND-MOTSDOS CAR DES MOT-CLES OUT ETE 

RAJOUTES ET 

90 CilNGMOTS LM MOTS DCS, Y D'AUTRES ENLEVES ; 

91 STA DOSORDHES, Y / - RAJOUTES, FP INT VERIF 



Y ENLEVES 



DEY 

BPL CHNGMOTS 



92 
93 

y* 

95 * 

96 ' CHANGE LA TABLE DES MOT-CLES 

97 * POSSIBLES (SA909.A940) 

98 * 

99 



LDX 4$A0 

LDY 4 $75 

STX SA935 

STY $A916 

LDA t$40 

LDY t$?0 
STA 5*037 
STY SA938 



LE RUN UNIVERSEL PEU ETRE 
SUIVI 

DES MOTS: A (BRUN), R (EXE 
C7, S,D,V. 

D'UN NOM OBLtGATOlRE (BRUN 
/EXEC) 

OB FACUI.TATIF (RUN) 

LE SLASH RF.POND AUX HEMES 

PARANETRES 

QUE LE CATALOG. 



100 

101 

102 

103 
104 
105 

106 
107 
108 
109 

HQ ' 

112 • SIGN ALE QUE / VST Utt CATALOG 

112 ' 

213 

124 LDA D0SADR11 

115 STA D0SADR23 

116 LDA D0SADR17*1 

117 STA D0SADR23+1 
118 

1 19 k 

220 • INSTALLATION DE LA ROUTINE DE 

121 ' RUN UNIVERSEL ET BIDRIVE 

122 * 

123 

124 LDY IB IDR I VEND-ON TRUN CALCUL DE LA LONGUEUR D 

E LA ROUTINE 

POUR PQUVOIR LA TRANSFER 

cn. . . 



125 INST Ah 

126 
127 
128 
129 
130 



IDA UN1HUN, Y 

STA PATCH, Y 
DEY 

BPL INSTAL 



131 

132 * 

233 

134 MOTSDOS ASC '-' 



135 

136 

137 
138 
139 
140 
141 
142 



ASC '/' 

ASC 'BSAV 

ASC -E' 
ASC 'BLOA ' 
ASC m D " 

ASC 'BRU ' 
ASC 

ASC •'/ERIE' 



L£ UVS EST MA IN TEN AN T MODI 
FIE. 



LES MOT-CLES SONT CODES 
A INS I; 

LES PREMIERS CODES ASCII 

AVEC BIT 8 = 

PUTS LF. DFRNIER AVEC BIT 

= 1 



113 MQTSEND ASC a Y 
144 

145 * 

146 * ROUTINE 3 EN 1 
XA y . 

148 

149 UN IRON 



150 

151 

152 
153 
154 



JSR OPEN 

LDA TYPEFOUND 

AND t$7F 

BEQ EXEC 
CJMP I? 
BEQ K£OT 



ON VA OUVRIR CE QUI NOUS I 
NTERESSE 

ON RF.tSART)F LF. TYPE DU FICH 
IER 

ON LE DE-LOCK (LOCH — > B! 
T 9 - 1) 
CODEO - TEXT 
CODE2 - APPLESOFT 



Suite de 'DOSPATCHS' page 72 



Pom's n w 23 



Courrier 
des Lecteurs 



J'ai essayd sans succds de /aire iourncr 
le programme ORDRALPHABETIX 
(Pom's 13). Lorsque je le 'RUNe' , les 
messages «Must be linked* puis «Proc 
cours indefined» s'affieltent. Que faire ? 

Monsieur Charles IZARD, 11400 
CA STELNA UD ARY 

Pour cr6er le module executable 
ORDR ALPHA .CODE, il est necessaire 
d'effectuer les operations suiv antes : 

• saisir les sources avec l'6diteur 
Pascal, ou utiliser le programme 
Basic->Pascal dc la disqucttc Pom's 
pour transferer les fichlers du DOS 
3.3 vers 1c Pascal. Vous devez alors 
obtenir les sources ORD 1 TEXT et 
ORD2.TEXT sur un volume appel6, 
parexemple, 'TESTl:' ; 

• compiler ORD 1 .TEXT pour obtenir 
ORDl.CODE (ORD 1. TEXT utilise 
le SYSTEM. LIBRARY) ; 

• assembler ORD2 .TEXT pour obtenir 
ORD2.CODE ; 

• 'linker' les deux modules en tapant 
succcssivement depuis le niveau 
global du Pascal : 

L 

(* pour appcler 1c Linker *) 

TESTl : ORD1 . CODE 

(+ au message "Host filer *) 

TESTl : ORD2 

(* au message "Lib file?'" *) 

: SYSTEM . LIBRARY 

<repondre par un RETURN > 

n 

(* au message "Map file?" *) 

TESTl : ORDRALFHA . CODE 

(* au message "Output file?" *) 

Le fichier est alors directement 
utilisable par 1'opiion X (Execute) du 
niveau global du Pascal 1.1. Attention : 
le programme assembleur n'est pas 
compatible avec le Pascal 1.2 et devrait 
etre modifie" en consequence. 



Possesseur d'un 'vieil' Apple lie, j'ai 
acquis le kit de mise d jour 65C02 dis 
sa sortie. Je me trouvais done a la lite 
d'un nouveau lie, we sorte de super lie 
avec des slots. 

Premier ctioc avec Locksmith 5.0 ; il 
ne fonctionne plus Second choc : le 
logiciel de la carle EVE egalernent. 
TroisUme choc : le passage en 80 
colonnes devient risque' (perte ale'atoire 
du programme en cours). La carte EVE 
aecusie des problimes est promptement 
remplacee par une Feline ; miracle. 
Locksmith et Purplesoft fonctionne a 
nouveau. 



Questions techniques : Comment savoir 
si la louche CTRL est enfoncee 
(seulc) ? idem pour SHIFT ? et CAPS 
LOCK ? et I'inverseur francaisl 
americain. 

Monsieur Thierry MECHA1N, 17300 
ROCHEFORT 

Merci pour votre experience. Le chip 
clavier du //e n'envoie pas d'informalion 
sur le bus lorsque les touches CTRL ou 
SHIFT sont enfonc6es seules. II n'est 
done pas possible d'en determiner l'6tat 
par logiciel. II en va de mime pour 
CAPS-LOCK ct I'inverseur de jeux de 
caracteres. 



La 36 eme piste, suite... 

// txiste une autre solution, pratique et 
rapicte, pour obtenir la 36$me. piste : il 
suffii de demander auDOS qui I formate 
correctement la disquette. Un petit patch 
suffit: 

CALL -151 

BEFE: 24 [au lieu de23] 

(nombre de pistes) 
B3ET: 24 [au lieu de 23] 
AEB5 : 90 [au lieu de 8C] 

(boucle de liberation des 

pistes) 
INIT HELLO 

Et voila t De plus, le DOS contenu sur 
cette nouvelle disquette permet lui-aussi 
unformatage ulte'rieur en 36 pistes. 

(N.D.L.R. ; nous avons precise entre 
crochets les anciennes valeurs contenues 
dans les adresses indiqu6es ; le lecteur 
devra les contrdlcr afin dc ne pas 
modifier un DOS deja patche" ou un 
ProDOS reassemble* pour une nouvelle 
version) 

A ce propos, un certain nombre d'autres 
lecteurs de disquettes compatibles 
permettent un formatage sur les 40 
pistes d'une disquette 5 pouees 114 (le 
drive Chinon, par exemple). II est done 
lentant de faire la mime experience ' 

BEFE: 28 
B3EF: 28 
AEB5 : AO 



Le probteme se pose differemment sous 
ProDOS: celui-ci est capable de girer 
tout type de memo ire de masse, mats il 
contient igalement le programme 
d'accds auxDisk ][. 

Avec la version 1.0, la rdponse se 
trouve dans Beneath Apple Prodos, 
mais il y a un l^ger bug, il faut taper : 

UNLOCK PRODOS 
BLOAD PRODOS, TSYS, 

AS2000 
CALL-IS 1 

520D: 40 [au lieu de 18] 
($118 a $140 blocs au total) 

BSAVE PRODOS, TSYS, 
A$2000 

Le FILER permet de formater une 
disquette et doit done, lui-aussi, etre 
modifuf: 

UNLOCK FILER 
BLOAD FILER, TSYS, 

A$2000 
4244 : 40 [au lieu de 18] 
79E4: 28 [aulieude23] 

BSAVE FILER, TSYS, 
A$2000 

Les routines s'etant diplacees dans la 
nouvelle version PRODOS IJJ, les 
modifications sont a faire ainsi : 

Pour ProDOS: 

56E3: 40 

Pour le Filer 

42 Al: 40 
7 AT 4 ; 28 

Enfin, deux octets du CONVERT qui 
interesseront les possesseurs de 
disquettes DOS 3.3 en format non 
st&nd&rd ' 

30E4 contient $11 

30EB contient $0F, e'estddire I'adressc 
physique du dibul du catalogue. 

En remplacant les valeurs d'origine 
comme ci- des sous ; 

30F9: 29 
30FA: 10 

CONVERT sera en mesure de lire toute 
disquette DOS 3.3 formatie en 35, 36 
ou 40 pistes. 

Jacques REY, 77000 Melun 

a 



Pom's n° 23 



69 



Joli feu d'artifice de debut 

d'annee. Avec 1'introduclion du 
Macintosh Plus, Apple a tire 

quelques solidcs cartouches. 
Nanti d'unc mc'moiic augiiicnicc, 
d'un clavier elargi et dune 
interface pour peripheri- ques a 
transfcrt rapide. le nouveau 
Macintosh s'implantera- t-il dans 
les enlrepriscs ? C'est ce que Ton 
souhaitc a Cupertino, oil 
1'objcciif avuuc de Juhn Sculley 
est cTaugmenter les ventes de 
Macintosh de 30%. 

Compatibilitc ? 

En attendant, quelques posses- 
sours de Macintosh iraditiormek 
se font des cheveux : leurs 
programmes et ustensiles favoris 
fonctionneront-ils sur 1c 
Macintosh Plus ? Pourquoi faul-il 
toujours que le progres passe par 
des sacrifices 9 En effet, apres 
une pe'riode "scche" en matiere de 
logiciels, le Macintosh etaii arrive 
a une sorte dc maturitc ct les 
utilisalcurs avaicnl pris leurs 
habitudes dans le menu 
"Fommc", des accessoircs dc 
bureau bien utiles (comme 
MacTrar.ks, un editeur dc macro 
commandes permettant de dec 1 en 
chcr d'un doigl l'impTcssion d'un 
document), relies par les prises 
DB9 des accessoircs comme le 
nume'riseur d'images Thunder- 
scan. I .as! Voici par exemple un 
logiciel el un accessoire qui ne 
fonctionnent plus sur 1c 
Macintosh Plus. Oar, dans 
certains cas, le Macintosh Plus 
sera un "Macintosh Moins". En 
cause, pour le logiciel, le 
nouveau systeme d 'organisation 
hierarchique des fichiers : le HPS 
(Hierarchical Pile System). A 
cause de lui, dc nombreux 
utiliiaires el notamment 
Mac'l racks nc fonctionnent plus 
du tout sur le Plus. Tout comme 
les programmes MacLion, 
Mac Expert et Through the 
looking giass. Toutc unc sciic 
dautrcs exigent qu'on leur 
conserve leur systeme d'origine 
et qu'on n'y installe surtout pas le 
nnuvean systeme avec le FindeT 
5-1 (comrne Crunch, Expert 
Lisp, Helix, Mac Publisher, 
Smooth Tulker, le Macintosh 
Development System - c'est un 
comble! - etc). Enfin, daulres 
(comme le Switcher. PageMaker. 
TK Snher,UUMac,Omnis3, 
MacDra/t, etc) exigent que les 
fichiers ou fichici d'aidc, uu 
applications (dans le cas du 
Switcher) sc irouvent dans le 
meme dossier. 

Plus de memoire 

Les ennuis ne se bomcnl pas 
qu'au logiciel. L'uUlisation de 
prises "Mini Din" non standar- 
dises pour relier au Macintosh 
Plus rimprimante ou le modem 
ont provoquc en fevrier un vent 

Uc paniquc : pcrsonnc n'en dispo- 

sait, et les Macintosh Plus ne 
pouvaient imprimer. El pas 
possible de bricoler un cable, car 
cps prises sont introuvables au 



magasin d'electronique du coin. 

Autre prnhleme ■ ces prises ont 
etc modifiecs. L'un des contacts 
dc la prise pcrmcttait dcxtrairc du 
Macintosh du couranl en 5 volts, 
ce qui aliment ail notamment le 
numeriseur Thunderscan. Con- 
clusion : meme avec le nouveau 
cable, les accessoires comme le 
Thundcrscan nc fonctionncronl 
pas, il faudia Icui a] outer unc 

alimcniauon exteneure. Mais on 
pardonne lout avec la stupefiante 
amelioration des performances du 
Macintosh Plus (qui sera des I etc 
extensible a 4 Megas de memoire 
viVe avec les nouveau x boitiers 
inemoiic dc 1 Mega). El aussi 
grace aux prix peu eleves 
appliques par Apple France pour 
la transformation des Mac 
existanls en Macintosh Plus Tout 
ceci suffira-t-il a assurer les 
ventes d'Applc ? 

Le futur Mac modulaire 

II ne faudrail pas s'imagincr que 
la flrrac a la poininc cnicnd 
desormais se rcposer sur scs 
lauricrs. Les efforts des 
ingenieurs de Cupertino se 
portent maintenant sur deux 
fronts : eclui du Macintosh 
modulaire ct eclui dc 1' Apple //. 
Uu nouveau Mac en irois 
morceaux (clavier, unite ceniraJc 
et moniteur) pourrait etre presenle 
soil 3 la fin de lete, soil en riehul 
1987. II comporterait le 
processeur de la serie 68000 
baptise 68020 (lc grand frerc dc 
eclui du Mac). D aurait sunoui la 
parti culariie" d'etre une machine 
ouvcrte". Acceptant ainsi des 
cartes d'extension, des disques 
durs internes etc. 

Cdie Apple //, on parlc desormais 

de deux pToduits. L'un, de has de 
gamme, serait un benjamin de 
1' Apple //e vendu 500 dollars ou 
moins. Lc second serait lc 
fameux Apple // e'quipe' d'un 
processeur 16 bits : c'est le 
vaisseau fantomc de la micro 
inform ati que. on en parte depuis 
au moins deux ans, mais il finira 
bicn par arrivcr. Rcndcz-vous 

peut Cut a Vauiomne. 

I^s efforts d'Apple vont surtout 
viser desormais Irois directions : 

I harmomsation dc scs deux 

gammcs dc produiis, la commu- 
nication el lc perfecUonnemcni dc 
Icdition eleclronique. Avec deux 
buts : assurer la coherence des 
produils (ei la compatibility entre 
Macintosh ct Apple //), ct tenter 
pai lc biais dc la communication 
(et la compatibilile avec les 
fichiers dc 1'IBM PC) cl de 
1 edition d'implanter le Macintosh 
Plus dans les entreprises 

Harmonisation des 
gammes : 
le programme 
commun 

Voici done les Apple If et les Mac 
dotes d'une serie de peripheri- 
ques communs : modems, impri- 



Micro- 
informations 

Jean-Michel Gourevilch 



mantes, lectcurs dc disquettes. 
C'est probablemeni ce change- 
menl la qui est le plus significa- 
nt" : le Mac et 1' Apple // utilisent 
dnrenavanl les memes disquettes 
de 800 Ko. On verra procbaine- 
mcnt un utilitairc permettant dc 
con vcrtir les fichiers du Mac cu 

Prodos pour pouvoir les uuUiser 
sur 1' Apple //. El bient6t, les 
disques durs seront. eux aussi, 
communs anx deux gammes, en 
attendant un Apple // capable 
d'cmulcr lc foncuonncmcnt du 
Mac. Dans lc sens inverse, il faui 
remarquer leionnant logiciel 
Mac+11 du a un jeune auteur 
prodigc : David Hemnio et 

distribue par J RD Ce produit se 
compose dun cable destine a 
rclicr J'Applc // au Mac ct dc deux 
logiciels, l'un pour 1'Applc It 
(transferant le contenu des ROMs 
de celui-ci vers le Mac). 1 'autre 
pour le Macintosh (une adaptation 
du DOS 3.3 ). A la mise en route, 
lc contenu des ROMs de 
1'Applc // est iransferc vers le 
Mac. Un programme baptise 
MacCom pour 1 'Apple // et un 
autre appclc Mac Dos pour le 

Macintosh permetlent de 
transferer sur le Mac programmes 
cl fichiers dc 1'Applc //. A cn 
croire son auieur, ce programme 
perm ci de faire tourner sur le Mac 
praiiquemenl lous les 
programmes de 1' Apple tl, Prix : 
1950,00 F. Bien utile pour les 
nouvcaux convcrtis au Mac qui 
ont encore une vaste logitheque 
pour rancetre. 

La course de vitesse est engagee : 
aux £tats-Unis, un autre logiciel, 

II In a Mac dc Computer 
Applications permet lui aussi 
dc simulcr lc fonciionncmcnl 

d'un Apple //. On voit meme sur 
l'ecran du Mac les lecteurs de 
disquettes, lc modem ct lc 
joystick. Prix : 50 dullais. 

La communication 

C'est un atoul indispensable a la 
reussite du Mac Plus qui devra 
aussi bien pour s'imposer pou- 
voir s'inlegrer dans des reseaux 
locaux que pouvoir circ coruiccte 
a des gros ordinatcurs. Lors de la 
presentation du Mac Plus, John 
Sculley a done bien insistc sur les 

accords signes avec d'importanls 
panenaires. Avec Northern 
Telecom, un gcant amcricain 
des telecommunications, pour 
permetire rutiUsaiion des Ugnes 
ordinaires el des ceniraux 
electroniques pour connecter les 
Mac a d'aulres ordinateurs et 



periphcriqucs. Avec General 
Electric Information Servi- 
ces (la niiale communication dc 
General Electrics), pour pouvoir 
relier le Macintosh au r£seau 
Dealertalk permettant a des 
socictcs dc rclicr Les sieges 
ccntraux aux filialcs ct aux 
concessionaires. Ce reseau 
comporte un logiciel de base de 
donnees. un bulletin electronique 
et du courrier electronique. Le 
contra! permet d'uliliser les gros 
ordinatcurs dc General EZlcctrics. 
Un autre accord lie Apple a Dow 
Jones, pour l'acces aux informa- 
tions boursieres. Dow Jones a 
ainsi dcvcloppe pour lc Mac Plus 
un logiciel : Straight Talk 

permetiam l'acces automaiique 
aux bases de donnees de Dow 
Jones 

Un pruduil cxislc deja pcrmcllanl 

de reher le Macintosh aux IBM 
PC. C'est le PC Mac Bridge de 
Tangent Technologies I j* 

carte permet en fait de relier un 
IBM PC a un reseau AppleTalk- 
En France, Alpha Systemes a 
dcvcloppe lc Netway 1000 A. 

qui remplace un controleur 3274, 
emule un terminal 3278 et dessert 
un reseau ApplcTalk permettant a 
31 Macintosh (et a 16 d'encre eux 
simultanement) de se connecter k 
un ordinaleur central. 

Dans les enlrepriscs, la communi- 
cation pass era pax des serveurs dc 
reseau. Celut d'Apple nest tou- 
jours pas annoncc. En attendant, 
voici le 3Com 3 Server de 
3Com compose d'un disque dur 
dc 36 Mega-octcts. Au travcrs 
des reseaux Ethernet ei Appletalk, 
on peut relier entre eux des IBM 
PC el des Macintosh. Prix du 
serveur : 8000 dollars La revue 
Infoworld qui l'a teste lui a 
accordc unc note cxircmcmcnt 
elevde pour ses hauies 
performances. Et 3Com vienl 
d'annoncer le DlskPlus, un 
disque dur de 70 Megas a temps 
d'acccs ultra court (30 
millisecondes) sc cunnccLant a 
l inierfacc SCSI. 

Un autre acces au reseau Ethernet 

est possible grace au Fast path 
de Kinetics : une boite noire 
s'inscrcnt entre lc icscau 

AppleTalk ct Eihcmet. Prix : 
2500 dollars pour la boile, plus 
1500 pourle logiciel K-Talk. 

Enfin, la dcrnicrc auiionce 

concernc un rCscau pouvant sc 
panager les Hyperdrlve de 
General Computer importcs 
en France par P-lngenlerie. 
L'Hyperdrive, c'est eel etonnant 



70 



Pom's n 23 



disque dur (disponiblc cn version 
10 ou 20 Megas) qui s 'installc a 
1 interieur du Macintosh, et est 
dcsorrnais adaptable au 
Macintosh Plus. Ce disque etait 
jusqu 'alors le plus rapide. Nos 
essais personnels ont ainsi 
chronomctrc dans Excel un temps 
de 8 secondes pour ouvrij un 
document (conUe 18 sccondes 
avec un lecteur de disquettes). 
De'sormais, un logiciel baptise 

Hyper net permet d'utiliscr un 
Hyperdrive comme serveur el d'y 
rclier un maximum dc 3 1 Mac par 
AppleTalk. Prix : 25900,00 F HT 
pour un Hyperdrive 20 et 
3750,00 F HT pour Hyperoet 

On trouvc cnfin d'autrcs scrvcurs 
aux 6 lais-Unis chez Iafospfaere 
avec MacServe et chez Hayes 
avec I'lntcr bridge, pcrmettant 
de rclier entrc eux plusieurs 
reseaux AppleTalk- Enfin, la 
nouvelle version de Mac 
Charlie : Mac Charlie Plus, 

permet non sculement aux 
Macintosh de faire tourner des 
logiciels IBM, mais aussi dc sc 
connecter aux ordinateurs ccn- 
traux et aux reseaux IBM. Pas de 
doute : 1936 devient 1'annee des 
scrvcurs pour lc Mac. 

Disques durs ; 

baisses a 

I* horizon 1986 

Cc sera aussi pour lc Macintosh 
I'duncc des disques durs. Grace a 
la nouvelle interface qu'a installc 
Apple sur le Macintosh Plus : la 
SCSI (les inities prononcent 
"scuzzy") Cette interface norma- 
lieee permet d' assembler en 
chalnc jusqu 'a 7 pcriphcriqucs 
avec une haute vliesse de transfen 
(1,5 Mega-octets par seconde). 
On pcut done desormais facilc- 

ment rclier au Mac des lecteurs de 
disques opaques, des scanners, 
des robots ct des disques durs. 
Avec deux avaniagcs ; 

• la vitesse, car les donnees du 
disque nc passent plus par un 
des "Icnls" ports scric . 

• le coflt, car l'imerface fitant 
normalisee, la carte contrdleur 
est peu onercuse (moins de 
200 Hollars) et on pcut y rclier 
des disques durs deja utilises 
pour l'IBM. 

Lecteurs, voici un pari : dans six 
mois, les disques durs auront 
baissC de 50"%, El cc n'est qu'un 
debut : songez qu'aux Etats- 
Unis, un disque dur de 20 Mega- 
oclets pour l'IBM PC est tombe 
au dessous de 400 dollars. 
Voici done deja aimonces louic 
une salve de disques durs pour le 
Mac sc connectant sur le port 
SCSI. 

Mention speciale au disque diir de 
10 Megas de Lodown : son 
prix, 795 dollars, cn fait lc 
rncilleur marche*. Suivi par le 
Macnlfty Personal 10 de 
Macnlfty. Mention speciale 
aussi a 1'AST 4000 d'AST : 
rest le plus gros avec see 74 
Megas pour 7000 dollars. 



L'Hypcrdrivc voit apparaitrc des 
cuncurrcnls qui s'insiallcrtl a 
linterieur du Macintosh Plus 
pour un prix inferieur, ce sont les 
Overdrive 10 et 20 de Levco 

(1775 et 1975 dollars) ainsi que 
les Micahdrlve 10 AT et 20 
AT dc Mlcab (1495 et 1895 
dollars). A noter encore des 
disques durs relies a 1'interface 
SCSI chez Supermac 
Technology dc Mountain 

view, Unlvatloo Inc, Suool 
Systetnsct MD Ideas de 
Foster City (Californie), ainsi 
qu'une nouvelle version de la 
Bernoulli! Box d'l omega. 

Des monstres 

Comme si le Macintosh Plus 
n etait pas suffisant, voici que 
des constructeurs bricolent des 
Mac encore plus rapides et 
puissants. Voici ainsi le Super 
20 de Levco, comprcnant un 
processeur 68020 cadence a 16 
Megahertz, 2 ou 4 Mega-octets de 
memoire vive, et 1'em placement 
d'un coprocesseur arithmetique 
68881. Prix: 8500 dollars. 

En France, P-Ingenlerle impor- 
te IHyperdrlve 2000 de 
General Computer : il contient 
un processeur cadence a 12 
Me*gahenz, un coprocesseur 
arithmetique 68881 el 2 Megas de 
memoire. Ce "superMac" permet 

ri'accele-rer certaines operations 
entre 2 et 1 00 fois. Un dessin 
cmployant des routines du 
Macintosh prend ainsi 170 
secondes sur lc Mac contre 17 sur 
I'Hyperdrive 2000. Ce micro 
decidement gonfle est destine* a 
tons les amateurs de names 
performances en m alien; de DAO, 
dc Finances, dc simulations, mais 
aussi addition. 

Max RAM est une carte qui 
transformc un Macintosh I28Ko 
ou 512Ko en Mac 1536Ko, avec 
la possibiine de choisir cntre la 
configuration 1 Mo de memoire 
centrale / 400Ko de RAM disk, et 
la configuration 512Ko dc 
memoire / 1 Mo de RAM disk, 
cette demierc eiant, a noire avis, 
la plus utile.Cettc carte remplace 
la carte mere du Mac et ne pose 
apparemment pas de probleme de 
compatibilite. Une des 
caracterisUques les plus intcrcs- 
santc du sysiemc est qu'il permei 
la recuperation du contenu du 
RAM disk aprcs une bombe ou 
un rcdemarrage. Le principe de 
travail avec cette extension est le 
suivant : demurrage du Mac avec 
chargement anion laliquc cn RAM 
(1 Mo) dc Mac Write et MacPaint 
ct tout autre logiciel de voire 
choix. A partir de la. tout se fait 
en RAM, le lecteur interne ne se 
servant plus qu'aux sauvegardes 
sur les disquettes. Les traitcments 

uevicimem ires rapides ; ainsi, le 
chargement dc MacWrite, qui 
prenait 15 secondes sur disqueae 
(Finder 4.1 et Mac 512). 8" sur 
I lyperT>rive et 7" sur le MacRus 
avec cache memoire, nc prend 
plus que 5". Ccttc caitc csl 



vendue par la socictc CCAM 
7300,00 F TTC aux posscsscurs 
dun 512Ko, 9900,00 F a ccux 
d'un 128 Ko. 

Edition 
electronique 
au programme 

Car 1 'autre axe strategique 
d'Apple e'est le marche* de 
1'edition electronique. line autre 
prevision de Pom's ; on verra 
cette annee apparaitrc pour le Mac 
des logicicls dc misc cn page 
electronique nSvolutionnaires. Le 
marche de 1'edition ilectronique 
est en pleinc explosion. Dans les 
mrrenmes, il pourrait a hri seul 
justifier 1 entree du Macintosh 
Plus, (ou d'un nouvcau frfcrc dot£ 
d'un cc-ran pleinc page). Apple a 
visiblement decide de tenter ce 
pari la. Au risque de voir le Mac 
devenir un terminal graphique des 
IBM. 

En anendant une super impri- 
mante a laser capable d'im primer 
avec une densite de 1000 points 
par pouce, Apple a perfectiorme 
sa LaserWriter (imprimant a 
300 points par poucc). EUc inclut 
sepi nouvcilcs polices de carac- 

teres et contient un Mega supple- 
mentaire de memoire morte. Pour 
l'exploiter, Adobe, 1'auieu.r du 
contrdleur PostScript au cceur 
dc rimprimantc a armoncc encore 
d'aulics polices tclccliargeablcs 
dans rimprimantc. 

Cote logiciels. Aldus a annonce 
une nouvelle version (1-2) de 
PageMaker, capable d'utiliser 
les 12 nouvcilcs polices de 
caracteies d' Adobe, Manhattan 

Graphics sort la version 2.1 de 
Ready Set To Go capable de 
trailer des brochures de 40 pages, 

Boston Software a perfec- 
tions Mat-Publisher connu en 
France sous lc nom dc 
MacEdlteur, desorrnais capable 
de traiter des brochures de 96 
pages, comportant de nouveaux 
formats (y compris le fonnat 
tabloid), des possibilites d'impor- 
tcr des elements par telecom- 
munications, ct une palette 

graphique de 99 motifs pour 
realiser des tonds. En prime, 
cette version est capable 

d'imprimer en couleurs sur la 
nouvelle imprimante Imaecwriter 
II. 

Deja de nouveaux 
logiciels 

Pour le Mac deux categories de 
nouveaux logiciels, ceux qui 
fonctionncnt sur le 5l2Ko, et 
ceux qui profitent deja des 
caracteristiques du Macintosh 
Plus. Dans la premiere categoric, 

Microsoft sort une nouvelle 
version de Multiplan : la 1.1, 
pcrmettant d'utiliscr simultanc- 
mcnt plusieurs feuilles, et 
integrant de nouvcilcs polices dc 
caracteres et sept fonctions 
financiercs nouvcilcs. Stat ware 



sort une version professionneile 
de son programme statistiquc 

Stat 80. U componc noiammcm 
des analyses de correlations des 
analyses factoriellcs et des 
manipulations de matrices avec 
18 operateurs et 50 fonctions. 
Prix : 400 dollars. Sur lc front 
des langagcs, rcmarquons que 

Philippe Kahn, le patron frangais 
de Borland sort une version de 
son Turbo Pascal pour le 

Macintosh. Tandis que chez 
P-Ingenierie, sort le TML 
Pascal, prcscntc comme lc 
premier environncmcnl coniplcl 
de developpement de logiciels 
Pascal produisant du code natif 
68000, et offrant ainsi les 
possibilites du defunt Lisa. Prix : 
1400.00 FHT. 

Voici enfin d'aurres logiciels plus 
specialement destines au Mac 
Plus. Avec d'abord la nouvelle 
version de Jazz. Ce programme 
£tait a 1'etroit sur le 512Ko, il 
pourra rcspircr sur lc Mac Plus. 
Tout comme SuperCruncb dc 
Paladin Software, le super 
tableur dont on dtt qu'il 
concurrence Excel. 

Et 1' Apple // 

II ne faudrait pas croire que 
i'AppIc // est abandonne^ Voici 
pour lui des quantites de 
perfecti onncments matiriels. 



Des cartes 

Des cartes comme s'il en 
plcuvait. Deux fabricams de 
cartes pour l'IBM : AST et 
Quadram s'interessent au //e. 
AST sort ainsi une carte dc 
memoire additionnelle dun 
Mega-octets, une carte Ram Disk 
avec memoire cache, une carte 
mulri- fonctions (horloge. deux 
ports series, etc), et un disque 
dur de 10 ou 20 Megas. Tandis 
que Quadram propose carte 

horloge, cane 80 colonnes 
etendue, interlace seric avec 
buffer el la Multlcore, une carte 

multi-fonctions (horloge, port 
serie, port parallelle, extension de 
256Ko de memoire). Applied 
Engineering, Fun des pioiiiucrs 
des extensions pour l'Apple //, a 
mis au point une carte accelerant 
les programmes d'un facteur de 
3/1 et perrnettant en prime 
d'installer un processeur 16 bits 
des que ccux ci deviendront 
disponibles. Avec 256Ko de 
memoire vive. Prix : 279 dollars. 

Mieux voir 

L'arnelioration de I'ecran du // est 
possible. Grace au Screen 
Enhancer dc Video 7. Un 
inodele couleur permei de 
disposer de 4 couleurs de textes 
ct 16 leintes dc gris. Grace aussi 
a un petit montage propose dans 
la revue britannique Apple User 

par Chris Payne, pcrmettant de 
transformer la sortie video 



Pom's n 23 



7 



monochrome en TTL (comme sur 
1'IBM). Chris Payne vend son 
montage tout fail puua 25 Li vi es. 

Ameliorer 
Appleworks 

Appleworks a eie Tun des 

logicicls ICS plus vendus aux 
Etats-Unis. Rien d etormant done 
si les Amcricains 1c pcr- 

fectionnent. Le Southern 
California Research Group 
1'installc ainsi cn ROM, sur unc 
carle qui s'insLalle dans 1'Apple 
lie. Chargemcnt ultra rapide, 
operations facilities. Prix : 269 
dollars. A nnter qu*il faul leur 
envoyer unc disquette conienanl 
Appleworks. 

La revue Nibble propose au 
travcrs dc Unternatlonal 
Apple Core un programme 
permettant de realiser des 
mailings avec Appleworks pom 
30 dollars. 

Communiquer 

A bas prix. Mais si e'esi 
possible ! Avec le Minitel. 
Marvle pioposc unc interface dc 
liaison (la M Z32 I) permcnant 
d'utiliser le modem du Minitel, et 
de stocker les pages videotex sur 
les disquertcK de I'Apple, de 
transformer celui-ci en terminal 
80 colonncs, dc visualiscr des 
pages ou d'e'ditcr des lexics. 
Pnx : 995,00 F TTC avec carte 
serie pour le lie et 695,00 F pour 
le lie. 



Voler 

Grace au Macintosh, on l'arten- 
riait riepuis longtemps. Eh bien 
landis que Bill Budge, 1'auteur 
inspire dc Pinball Construc- 
tion Set concocte un sirnulaicur 
de vol sur navette spatiale, 
Subiogic s'est enfin decide a 
sortir pour le Mac son Flight 
Simulator le roi des simulateurs 
de vol. Avec des fenetres 
tri dim ensiorme lies multiples pcr- 

mcoant de regardcr simulianc- 
ment plusieurs vues du paysage 
tout en volant. On peut meme se 
regarder voler soi-memc d'un 
point fixe exterieur. Vivement 
que cc simulatcur arrive en 
France. 

Formation 

La societe KA organise le jeudi 
24 avril au PLM St Jacques un 
seminaire avance" sur Multiplan, 
anime par Herve Thiriez et cloture 
par Bernard Vcrgncs, president 
de Microsoft France. 
Ce seminaire s'adresse k to us les 
utilisateurs confirmes de 
Multiplan pour, cn unc joumee, 
leur presenter dc multiples 
astuces d'utiiisation de ce 
logicicl. 

Mesurer 

La revue InClder de ftfvrier a 
consacre un article aux iogiciels el 
interfaces permettant de trans- 
former I'Apple // en instrument 



scientiflque. On y trouve ainsi 
des Iogiciels d'experimentation en 
chimic (Chem Lab Simon & 
Schuster) ou en temperature 
(Temperature Lab d'Hayden 
a 1 00 dollars) . d'anatornie (The 
hody In Focus de C R S 
Soft wa re et The Body 

stransparent de DesEgrtware), 
un systcmc transform am I'Apple 
cn eUecrrocardiograrnrne d effort 
(Cardiovascular Fitness Lab 
de HRM au prix de 175 dollars). 

Adresses 

JRD 

11, place Sainte Croix 
45000 Orleans 
Tel. : 38 54 83 20 

Tangent Technologies 

5720 Pcachtrce Parkway Suite 
100 Norcross GE 30092 

Alpha Svstomes 
29, avenue Gambeua 
38000 Grenoble 
Tel.: 76 43 28 40 
Computer Applications 
12813 Lindley Drive Raleigh 
NC 27614 
3Com 

1365 Shorbird Way P.O. Box 
7390 Mountain View CA 94039 
Kinetics 

PO Box 334 1 Walnut Creek 
CA 9-4598 

P-Ingenlerle 

226, Boulevard Raspail 
75014 Paris 
Stat ware 

PO Box 510881 Salt Lake City 
UT JU151 



Applied Eneineerlng 

PO Box 798 Carrollton 
TX 75006 

Chris Payne 

15 Braddenham Walk, Stoke 

MandeviUe, Bucks, HP21 9D7 

Southern California 

Research Group 

PO bOX 593 A Moorpark CA 

93020 

International Apple Core 

Prod.Dcpt #N02 908 George 
Street Santa Clara CAV5U54 

Marvle 

37, rue des Maihurins 

75008 Paris 

CRS Software 

One Fawcett Place Greenwich 

CT 06836 

Deslgnware 

185 Berry St San Francisco 
CA 94107 

HRM Software 

175 Tompkins Av Plcasantville 
NY 10570 

Simon & Schuster 

Simon & Schuster Bldg 1203 Av 
of the Americas New York 
NY1O020 

Hayden 

600 Suffolk St Lowell MA 01854 
Sublogic Corp 713 Edgebrook 
Drive Champaigr II. 61 8210 

KA Service Formation 
14, rue Magellan - 75008 Paris 
Te*l. : 47 23 72 00 
CCAM 

95, rue Lafayette - 75010 Paris 
Tel.; 47 80 2223 

Q 



Suite du source 'DOSPATCH.S' (page 68) 



NE sort file not FOUND QU'APRES 
av.; - ESSAYE LES 3 DRIVES OU 
SLOT ACTVEL. 



153 
iifi 

IS 7 FVH 
ISi EXEC 
J 59 

ISO • 

161 
162 
1(1 

164 • 

165 
1*1 

167 
168 
1 CO 
1 70 
171 

171 B1DMVE 



JKF BRUHNAND 
JHT PVNIIAND 
JHI< EXECHAND 



LA SEULE CHOSE QU! REJTE E3T BIHAZItE 



LUA LRKNUH 
C»F 19 

BCS BID A I VETO" 

cup te 
LOA 13 



puis viEtis ix patch; quells crrevr ? 



UN FILE NOT rO'JHD. UN \OUIME MISMATCH 
ON I/O ERROR 7 HON ALGfiS JTJWJF 



SlflOtt, CHANGE DE DRIVE 



SDC ORIVENUH 
STA DR I VENUS 



LOA DRIVESH 
BNE BIDRVEND1 
INC DRIVESU 
JKP DOCMD 



173 
I 71 
17S 
174 
177 
171 
179 
180 

181 B1DRVESUI Jfty FAlX^m 

iei aiDRivi.NO ma 
:s3 

IBS • 

lee » rot'5 ir* BftffFiwwwf ?fwr 

187 • TIRES DE 'BENEATH APPLE DOS' 



A-T-OH DEJA CHANGE DE DRIVE ? 
OUI. ON EST BON POOR LE HESSAGE tf! 
NCH. MAIS CE NE HASCHESA PAS 2 FOIS... 
DRIVE CHANGE. ON RE-ESSAYE 

ANNULS DRIVE** POCflt LA PROCHAINE FOIS 
ET RETOURNE AU TRA1TZHENT />£3 ERftEUAS. 



189 



II s'agit d'un systems graph ique double-haute 
resolution ecrit en Pascal. COGO vous permet de 
manipuler des graphiques grace a un langage de 
description des objets - points, angles- et a 1'emploi 
de tonctions primitives de manipulation tres 
puissantes : cercle, tangente. 
intersections, paralleles, etc. II est ainsi possible 
de tracer des grillos, des cercles, des segments de 
droite, des tangentes communes a deux cercles, 
de calculer des distances, des angles... 

L'6diteur permet une saisie rapide du langage. Une 
instruction COGO peut-etre executee des la saisie 
pourfaciliter la miso au point, ou au sein d'un 

programme. 



Vous avez un Apple fie avec Chat Mauve ou un He ? 

Vous avez Pascal 12 ? 



Utilisez 



COGO 



Par Nicolas Montsarrat 



Ce programme, destine a resoudre dos problemes de 

geometrie plane, comporte des instructions de stockage sur 

fichier afin de permettre la reprise d'un calcul. 

NB : Sur I'Apple //c, I'affichage se fait en simple 

haute resolution. 

150,00 F TTC, franco 
Bon de commande page 74 



72 



Pom's n 23 



Votre -A.pple.. 



.etPom's 



Void deia un an, nous vous avions interrog$, sur vous, sur votre Apple et sur Pom's. Nous souhaitons en prendre 
I'habitude, pour mieux vous connaitre, pour mieux apprecier revolution de votre e'quipemeni, pour mieux centrer nos 
articles sur vos aspirations. Comme fan pass6, nous procederons £ un tirage au sort qui permetira & dix lecteurs de 
b6n£ficier d'un abonnement avec disquettes. 



Vous... 



Voire age ~dei5ans 

de 15 a leans 
de 20 a 24 ans 
de25a34 ans 
de 35 a45 ans 
+ de 4b ans 



Sexe femlnin 
mas cult) i 



8 



Lang ages Basic 

pratiques Pascal 

alsdment Fortn 
Logo 

Assembleur G502/G5C02 
Assembleur 68000 
Autres 

de preference sous DOS 
sous ProDOS 
sous CP/M 



Votre niveau en 
programmatton 



Chaque semalne 
vous consacrez 
£ votre micro 



debutant 
interm&diaire 
amateur averti 
haul niveau 



-de 2heures 
de3idheures 
de9£ 16heures 
+ de 16heures 



Votre materiel 

Le micro 

Apple ][+ 
Apple //e 6502 
Apple //e 65C02 
Apple //c 
Appfo/// 




Macintosh 128 Ko 
Macintosh 512 Ko 
Macintosh Pius 
Lisa 



Nombre de lecteurs. interne et exteme : . 



L'Jmprimante 

ImageWrHer 
ImageWriter// 
Apple DMP 
Epson 
Autre 



Les extensions 




Seikosha 
Mannesman 
Centronics 
Off 



Ce que vous aliez blentot acquerir ; 



Carte 80 colonnes 
80 colonnes utendue 
Carte Z80 avec CP/M 
Carte souris 
DisQue dur 
Tablo tra$ante 



-.ef Pom's 

Vous avez connu Pom's 

par une puOlicite 
dans un salon 
par un autre amateur 
en Klosque 
en boutique 



De 5 (tr$s bon) a 
(tres mauvals) votre l0nNeaugMmL 
Opinion SUr / a presentation.. 

J'intcret des programmes.. 

la clartedes articles., 
leur interet pedagogique.. 
Icq micro informations., 
les disQuaties d'accompagnemenL 



Quelles autres revues 
informailques lisez-vous ? 



Ce que vous pr&f&rez 



Ce qu'll faut changer ou develop per 



Ce que vous d6testez 



Vos remarques particulteres 



Nom_ 
Prenom 



Adresse 



Ville 



Code Postal 



Abonnd Q 



Pom's n u 23 



73 



Bon de commande 



Disquettes 

HAIFA source (cf. Pom's n° 5) a 55,00 F 

H-BASIC (cf. Pom's n° 8) a 150,00 F 

MUSIC (cf, Pom's n 8 10) a 80,00 F 

DISK-MANAGER (cf. Pom's n" 11) a 450,00 F 

BASICIUM (cf. Pom's n s 13) a 150,00 F 

E.P.E. 5.0 (cf. Pom's n° 23) a 200,00 F 

fichange E.P.E. 5.0 (cf. u;iT page4) a 80,00 F 

PASCAL (cf.cen>ge4) - a 80,00 F 

MAX (Moniteur etendu) (cf. Pom's n' 18) a 150,00 F 

DOMINOS (cf. Pom's n' 19) a 80,00 F 

MACASTUCES (cf. Pom's n 21) a 200,00 F 

P-FORMAT P-POLICE ' (cf. Pom's n' 21) a 200,00 F 

COGO (cf. Pom's n fl 21) a 150,00 F 



Recueils 

N°l, recueil des revues 1 & 4 & 140,00 F 

Disquettes d'accompagnement 1 a 4 a 150,00 F 

N°2, recueil des revues 5 a 8 ^ 140,00 F 

Disquettes d'uccumpagnement 5 a 8 a 190,00 F 

N°3, recueil des revues 9 a 12 . (Disponible le 20 avril1986) a 140,00 F 

Disquettes d'accompagnement 9 a 12 8 190,00 F 

Revues, disquettes 

Revues 4 7 8 a 35 > 00 F 

Revues 10 11 12 13 14 15 16 17 18 19 20 21 22 23 a 40,00 F 

Disquettes Apple II, //e, Jlc 

1/2 3 4 5 6 7 8 9 10 11 12 a 55,00 F 

13 14 15 16 17 18 19 20 21 22 23 

Disquettes Macintosh 

14/15/16 groupies a 150,00 F 

17 18 19 20 21 22 23 a 80,00 F 

Mac 'A' a 80,00 F 



A bonneiTientS Pour 6 numcros a partirdun'C 



Abonnement a la revue seule a 200,00 F 

Abonnement revue + disquettes Apple H, //e* He a 480,00 F 

Abonnement revue + disquettes Macintosh a 600,00 F 

Total TTC : 

Supplement avion hors CEE : 15 f 00F par numero et/ou disquette : 

Montant du reglement : 



Envoyez ce bon et votre rtglement & : EDITIONS MRV, 64 me des Chantiers 78000 VERSAILLES 

Nom : 

Adresse : 



ImDrimene Rowv. 94300 Vincennei Imprint en France. DepcM leipl Mais 1986. N" 3093 



Pom's n° 23 




I.E.F. 




Le specialists des PLUS de la Micro 
vous invite dans le Nouveau Monde du 

Macintosh Plus 



Caracteristiques 

- Micro processeur G8000 
•1 28 K ROM integrant des 

fonctions graphiques rapides 
et la gestion du bureau 

- Clavier avec bloc numerique et 
touches curseur 

- RAM 1 Mega Octets extensible 
a 4 Meg as 

■ Lecteur de disquette 800 K 
integre 

* Interface SCSI perrnettant de 
relier des peripheriques puis- 
sants 

- Systeme d'exploitation 5.1 
avec architecture superieure 
et memoir© cache 





Plus rapide 
Plus puissant 
Plus ouvert 
Plus connectable 
Plus communiquant 
Plus facile 
Plus economique 



A) Vous etes equipe d'un Macintosh 

IEF vous ouvre la porte des plus pour seulament : 

- 4.500 F HT (si vous etes equipe d'un 512 K d'origine Apple) 

- 6.500 F HT (si vous etes equipe d'un 128 K d'origine ou etendu) 

- Pour ces prix, IEF vous change la plaque mere, le lecteur de disquettes et le clavier. 

- La transformation est garantie 1 an par Apple. 

- Ces prix ne sont valables que pendant une duree limitee, reservez des aujourd'hui votre transformation. 

- De plus, si vous achetez cette transtormation, IEF vousoffresondisque dur20 Megasau prixde 11.900 F HT ! 

®) Vous n'etes pas encore equipe d'un Macintosh 

IEF vousoffre Macintosh PlllS exceptionnellement pour 24.900 F HT 
Promotion sp6ciale IEF de lancement : 



( 1 Macintosh Plus + 1 disque dur 20 Mega Octets 34.900 F HT 



(offrcliiiiil^e) 



IEF propose des conditions speciales pour les Grands Comptos et les etablissements d'enseignement 
Si vous voulei profiler d'une de ces offres, renvoyei vile le coupon reponse ci-dessous 



I.E.F. 



217, quaide Stalingrad 92130 ISSY LES MOULINEAUX Tel : (1) 45.57.14.14 T6lex : 200210 F 



Coupon reponse a retourner a : 

NOM : 

ACTIVITE : 

ADRESSE : 

Je suis interesse par : 



.E.F. 217. ouai rift Stalingrad 92130 ISSY LES MOULINEAUX 

SOCIETE : 

TEL : 



P 03 MC 



I'actualite 
les bancs d'essai 



les guides d'aehat 

le dossier 
les programmes 

ORDINATEUR 
INDIVIDUAL 




t 



,1 



MO' 




LA REFERENCE EN MICRO-INFORMATIQUE 




A L'ORDINATEUR INDIVIDUEL, les redacteurs, les consei/fers techniques, les correspondonfs d 
Vetranger, I'equipe entiere se mobilise pour voos foumir fous les mois une information 
complete et de qualite. le monde de la micro bouge : I'O.J. teste pour vous les micros et 
fogiciefs qui apparaissent sur le marche. II vous dit fesquefs cho/si'r et pourquoi. Vous efes de ja 
eq u/pe et vous souhaifez tirerle maximum de voire machine ? Les specraff'sfes de L'O.I. vous livrenf 
eonsei/s, programmes inedits et astuces d' utilisation. Usez chaque mois L'ORDINATEUR iNBIVIDUEL