, 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¬er 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