Text content (OCR)
i fo |
i
mT re Vip Tt Vict Tt VV eT eV ie eT rt re
mt Ve Vi VeVi Vs! eV eV Ve ns me
sem |r! | | |e eV TV a eV eV
a ne ee
feet] [isms] Yt [ss
cla
ee 19, rue Ganneron, 75018 Paris - Tél. : (1) 387.94.87
NOVEMBRE-DECEMBRE 1984
Sommaire Page Langage * |Niveau **| Matériel
Editorial pa: Hervé Thiriez 5
Mobby Disk par [hierry Le Tallec 7 A PT e-/ic
Fleuves de France par Joseph Pino 17 B T e-lic
Mouse Paint par Guy Lapautre 20 T ele
Gestion de fichiers par RWTS et DOS 3.3
par Gerard Michel 21 BA MT e-lic
Le cahier Macintosh par Hervé Thiriez 32 af Macintosh
Les routines en ROM du Macintosh par Jean-Luc Bazanegue 33 (B) M-T Macintosh
Les caractéres programmables sur imprimantes Apple
par Apple Seedrin 36 T
Un éditeur de formes et curseurs par Pom’s 43 B M-I Macintosh
Les logiciels pour Macintosh 49 T Macintosh
Omnis 2 a l’essai par Guy Lapautre 50 t e-lic
Initiation a l’'assembleur (5) par Gerard Michel 53 A Tt e
HPGRAPH par Nicolas Monsarrat 59 P M-T ec
Ecriture en page haute résolution par Erick Ringot 61 B-A MT e-/ic
Disk Check-Up par Alexandre Avrane 66 A P-T elie
Bibliographie par Alexandre Duback 71
Les nouvelles disquettes de Pom’s 72
Mic 1-Informations par Jean-Michel Gourévitch 73
Courrier des lecteurs par A. Avrane et A. Duback 75
Les annonceurs
Apple: p 38.49 ATARI: p 80 ATBA Computer IIL: p16 Club Apple: p 37 Dyna
Computer. p48 GMS: p 70
p 42. Soft Express : p 4 SYBEX : p.
Hello: p.51 Light: p 31 LIST: p 6 Maxi: p 79 PeachTree =} 4041 P.S.L
76 Télécompo : p 67 Version Soft : p 2
Editions MEV — 64-70. rue des Chantiers — 78000 Versailles
Directeur de la publication . [lervé Thitiee. Imprimerie Rosay, 94300 Vincennes. Impnme en France. Depot légal . 4° trimestre 1984.
Pom's n' 15 3
VENTE PAR CORRESPONDANCE
LOGICIELS POUR APPLE*
IL — donctionnent sur ][ + et //e, le C figurant a cété d'un nom
indique que le programme est garanti fonctionner sur //c)
JEUX Prix TT.
ARCADE AEEOO1 DROL (Broderbund) 960.00
AFEOO! © ZAXXON (Datacott) 380,00
AGEQG1 MINIT MAN (Penguin) 200.00
AGEO02 BOUNCING KAMUNGAS (Penguin) 300.00
AJEOO1 NIGHT MISSION PINBALL (Sublogic) 350.00
ARFON? AQUATRON (Sierra) 300,00
AFEON? SPARF CHANGE (Broderbund) 350.00
AVEO01 WAY OLIT (Sirius) 270.00
AWE0O1 e THE HEIST (Micro Fun) 41000
AEEOO3 GUMBALL (Broderbund) 310.00
AJEO02 FLIGHT SIMULATOR It (Sublogic) 550.00
AUEOO1 c SUMMER GAMES (Epyx). 410.00
AEEOO4 CHOPLIFTER (Broderbund) 340.00
AWEO01 MINER 2049ER (Micro Fun) 400.00
AREOO3 OIL'S WELL (Sierra) 300,00
AGEOO4 THE SPY STRIKES BACK (Penguin) 200,00
STRATEGIE AMEOO1 PROF TOURNAMENT GOLF (Strategic) 400,00
RAEOO} SARGON iil (Hayden) 470.00
AMEOO2 BATTLE OF NOAMANDY (Strateyic) 400.00
AVENTURE AHEOOT MASQUERADE (Phoenix) 350.00
AIEOO1 LEGACY OF LLYLGAMYN (Sir-Tech) 400.00
AREOO1 DARK CRYSTAL (Sierra) 380.00
UTILITAIRES
IMPRESSION ATEOO1 c SIDEWAYS (Funk) 620,00
EDIT. BASIC AVEOO1 Cc GPLE. (Beagle Bros) 600,00
TABLEUR ABEOU2 MULTIPLAN (Microsoft) 1.750,00,
COMMUNIC. AKEUOT c ASCII EXPRESS; THE PRO (United) 1.200,00
//e uniquement : 0 coi)
ORGANISATION AQB001 THINK TANK (US) (Living Videotex) TELEPHONEZ!
TABLEUR+ ANFOOT TK! SOLVER (US) (Software Arts) 3.700,00
//¢ et //e uniquement : (wo coi)
FICHIER ACFOO1 PES : FILE (US) (Software Publ.) 1.250,00
IMPRESSION ACFOO2 PES : REPORT (US) (Software Publ.) 1.250,00
FICHIER ASFOO1 HOME CATALOGER (US) (Continental) 520,00
Macintosh:
JEUX
ARCADE BAGOO! MAG VEGAS (US) Roulette-Poker-Blackjack-Keno- TELEPHONEZ!
Baccarat-Machine a sous-Craps
STRATEGIE AAGOO! SARGON ii! (US) (Hayden) TELEPHONEZ!
AXGOO1 MILLIONAIRE (US) (Biue Chip) 600,00
AxGoo2 BARON (US) (Buy Chip) TELEPHONEZ!
AxGOO3 TYCOON (US) (Biue Chip) TELEPHONEZ!
AGG003 TRANSYLVANIA (US) (Penguin) 400,00
AGGOOS PENSATE (US) (Penguin) 430,00
AzG00t RUN FOR TI MONEY (US) (Scarb,) 60,00
Bacoo2 MAC GAMMON (US) TELEP ONC2!
BAGOOS MAC CHECKERS & REVERS! (US) TELEPHONEZ!
UTILITAIRES
TABLEUR ARGON? MULTIPLAN (US) (Microsoft) TELEPHONEZ!
GRAPHIQUE ABGONS MICROSOFT CHART (US) 1.300,00
LANGAGE ABGOO6 MICROSOFT RASIC (US) 1.400.009
FICHIER ACG0O01 PFS : FILE (US) (Software Publ.) 1.250,00
IMPRESSION, ACGO02 PFS : REPORT (US) (Software Publ.) 1.250,00
FICHIER+ AYGOO1 FILEVISION (US) (Telos) 2,000.00
Tous pt sont vibes dane inte dee sinks aparibos Nou aacatsons we elem ge ors de apbdtn 6 vale commande
Toute comr
de nan expédie sous un délai maximum de $5 jours sera cemboursable sur vntea demande. Tous ans anvnis sant recommandés
+ Apple wsl une marque depose Apple Computer inc
Macintosh est sous licence chez Apple Camputer In 24, we WA, 75017 Pass ~ 972 99 15
REFERENCE DESIGNATION [_Nomere | PRX |
Participation aux frais de port et demballage 2F
[_torat |
‘Signature (obligatoire pour paiement
CO Pavement par cheque joint par carte de crédit
24 rue d'Armaillé 75017 Paris
1 rr
(1) 572 5515 sec! rare | ea | re ae
(Joindre deux timbres tarif fettre normal) Rue ..
Code postal vite —= =
un produit WESTCORP. Telephone.
Editorial
Pour les possesseurs du Macintosh, une bonne et une mauvaise nouvelle a la fois, La bonne nouvelle
le Macintosh 512K est arrivé. La mauvaise nouvelle « il en cotite 10.000 F hors taxe prix public, par
rapport au 128K; la mémoire vous revient moins cher en mangeant du poisson... Pour le logiciel itou
la bonne nouvelle est représentée par l'annonce de 80 logiciels, la mauvaise étant que lon constate dés
4 present du retard par rapport aux dates annoncées dans le dossier de presse Apple du Sicob. Il est
vrai que la mise au point d'un logiciel sur un équipement possédant les fonctionnalités du Macintosh
n'est pas une sinécure. Enfin, fidéles & notre promesse, nous dev eloppons dans ce numéro un cahier
Macintosh, dans lequel nous essaierons de vous fournir. comme pour lApple . des programmes et des
remarques vous apportant plus que la simple lecture des documentations.
Quant 4 la ligne Apple. la compatibilité relative du ¢ (voir Pom’s 13) fait qu’aujourd'hut il se vend
encore une pour un ¢c. trompant ainsi toutes les previsions d Apple. Comme le disent les sages
asiatiques. la prévision est un art difficile. surtout quand elle porte sur l'avenir ! Résultat : il faut faire la
queue pour acheter une alors qu'on échange sans probleme un chéque contre unc prét 4 emporter
L’équipe de Pom's vient de s‘enrichir de deux personnes. D’ici la fin de l'année. nous esperons done
qu'il nous faudra moins de trois mois pour répondre 4 votre courrier. Ceci dit. ne prenez pas Pom’s
pour une entreprise de conseil gratuite : certains lecteurs nous envoient des questions qui resemblent
plutot 4 un “cahier des charges” et pour lesquelles la teponse demanderait une veritable intervention de
conseil, C'est trop !
Une derniere remarque : certains contributeurs. dont nous admirons la “fluency”, nous envoient des
Programmes dont tous les commentaires sont rédigés en anglais. amenant les lecteurs @ crvite que nous
reproduisons, 6! honte, des programmes américains. S‘il vous plait. envovez done des contributions
entiérement en francais.
Enfin, ultime bonne nouvelle : Olivier Herz est de retour du Japon avec toujours de I'hexadécimal! plein
la téte. Gageons que I'auteur de Haifa. du H-Basic et de lanaluseur de suntaxe nous réserve encore
quelques surprises !
Herve Thiriez
Photo de couverture : ecran Portac avec batterie incorporée. pour Apple © fabriqué par IEF (voir Micro Informatians’
La forme du moniteur n'est pas définitive
Ont collaboré & ce numéro : Alexandre Avrane ~ Jean-Luc Bazanegu — Alexandre Duback — Jean Michel Gourduiteh Guy
Lapautre — Thierry Le Tallec — Gérard Michel — Nicolas Monsarrat ~ Joseph Pino — Erick Ringot Hervé Thiriez, Rédacteurs :
Alexandre Avrane — Gerard Michel Directeur de la publication, rédacteur en chef : Herve Thirec Dessin - Laurent Biciot
Siage social et abonnements : Editions MEV 64 70, rue des Chantiers 78000 Versailles Tel (3) 951 24.43
Rédaction et courrier des lecteurs ; 59, bd de Glatigny - 78000 Versailles.
Régie publicitaire : Force 7 Anne Jourdan - 5, place du Colonel Fabien 75010 Paris Tel : (1) 240221
Diffusion N.M.P.P. ; Sophie Mamnez Tel. (1) 240.2201
Composition : Telecompo - 13-15, avenue du Petit Parc 94300 Vincennes Tél. 328.18 63
Impression : Rosay - 47, avenue de Paris 94300 Vincennes - Tél. 328.18 63.
#
‘s
{
Pom's n° 15
LT =|
programmer
= —_unordinateur est
| devenu pour vous
un loisir, un plaisir.
une passion, sachez que LIST a été créé
pour vous. LIST vous aide a tirer davantage
de votre matériel, a vous perfectionner
dans la conception des programmes
qui “tourneront” sur votre machine
LIST vous initie aux langages informatiques
et sélectionne les meilleurs livres pour == —
progresser. LIST vous informe de |’actualité 2 — :
et vous fournit trucs, astuces et idées
pour mieux programmer... D/ABONNEMENT
Pour étre sir de ne rater aucun numéro po aretourner AIST
ped jecevelr LIST chez vous, »© (service abonnement)
abonnez-vous : go ,,Srplace du Colonel-Fabien,
“75491 Paris Cedex 10
4, Nom:
$. Adresse:
LAISIR DE be Ville:
bi Code postal: | | | || Pays:
Veuillez m'abonner pour 10 numéros ak :
aux / avantageux de 160 F* au lieu de 200 F. Je fais ainsi
urn }
tre mare! “une économie de 40 F sur le prix se te au numéro.
vo de joins mon réglement indispensab!
20 F chez L/ a fan de or
ff * Belgique : 1330 FB; Suisse : 50 FS; Canada: 30 $C;
| autres pays: 210 FF
Un éditeur de secteurs : MOBBY DISK
Le programme le plus utile en cas
d'opération malheureuse sur dis-
quette est certainement I'éditeur de
secteurs ou "DISK ZAP”. Il permet
l'affichage a I'écran et la modification
des codes hexadécimaux contenus
sur la disquette. Il est ainsi possible
d'intervenir directement au niveau
des secteurs pour recouvrer un fi-
chier "DELETé”, une disquette qui
ne BOOTe plus, ou pour rendre co-
hérent un enregistrement qui com-
porte une erreur. L'intérét de ce type
de programme ne se limite pas a la
remise en état des secteurs: il de-
vient par exemple possible de suivre
précisément le travail du DOS.
Parmi les plus conus, on peut citer
INSPECTOR, WATSON et surtout
DISKFIXER, Ce demier aurait ma
préférence, mais il lui manque certai-
nes options de WATSON telles que
le désassemblage et le choix de la
page mémoire 4 éditer.
Il était intéressant de tenter de faire
tenir en moins de 2K les principales
fonctions. En effet, le possesseur de
carte EPROM peut alors avoir en
permanence a portée de la main un
utilitaire dont l'usage se révéle fré-
quent, sans devoir le charger depuis
la disquette. A vous de juger si le jeu
en valait la chandelle.
Notez que la version publiée ici fonc-
tionne en RAM et n'a donc besoin
d'aucune extension particuliére
Aprés avoir entré et sauvegardé le
code-objet, le programme se lance
simplement par: BRUN MOBBY-
Examinons les commandes
Modes d’affichage
B sélectionne le mode diaffichage
mixte, dans lequel le contenu du buf-
fer est affiché simultanément en
hexadécimal et en ASCII C'est le
mode d'affichage par défaut. En rai-
son des dimensions de !’écran, seule
une moitié du buffer est affichée; on
accede a la deuxieme moitié en de-
placant le curseur au-dela des limites
de la fenétre
H affiche le contenu du buffer en
hexadécimal seulement
G affiche en ASCII seulement.
Y commute le filtre permettant de
n'afficher que les caractéres en ASCII
normal.
Pom’s n° 15
Lecture-écriture
D commande le changement de
drive,
R permet la lecture d'un secteur. le
curseur se positionne alors sur le nu-
méro de la piste a indiquer en hexa-
décimal. Si le numéro en cours
convient, faire simplement RETURN.
Le curseur passe alors au numéro de
secteur que l'on contrdle de la méme
maniére. Les fleches gauche et droite
commandent la lecture des secteurs
précédent et suivant.
W recopie sur la disquette le contenu
du buffer. On indiquera les numéros
de piste et secteur comme dans |'op-
tion lecture.
Edition d’un secteur
I, J, K, M deplacent le curseur res-
pectivement vers le haut, la gauche,
la droite, le bas. Le rang de l'octet
est affiché sur la ligne supérieure
3 autorise la modification de l'octet
ou se trouve le curseur. Selon le
mode d'affichage, on pour ainsi
entrer un caractére ASCII ou une va-
leur hexadeécimale.
T en mode ASCII commute I'écriture
en normal, inverse ou clignotant. Le
symbole "#" en bas a droite de
Yécran refléte cet état. Les caractéres
inverses ou clignotants ne seront visi-
bles que si le filtre est supprimé (se
reporter & la commande “Y”)
Thierry Le Tallec
RETURN permet la saisie d'un texte
ou de valeurs hexadécimales a la
volée. Dans les modes mixtes et
hexa, tous les octets modifies appa-
raissent en inverse jusqu’a I'écriture
ou la lecture d’un secteur de la dis-
quette
ESC sort de ce mode de saisie
— restitue l'ancienne valeur en cas
derreur.
X annule toutes les modifications
d'un buffer.
P autorise le choix de la page mé-
moire qui sert de buffer. L'adresse
de ce dernier est indiquée en clair au
bas de l'écran. On en changera en
donnant directement I'adresse au cla-
vier. Par défaut, le buffer est en
$4000.
A noter qu'il est également possible
de changer la page du buffer sans
passer par la commande P, en utili-
sant les signes "“<" et ">", respecti-
vement pour diminuer ou augmenter
de $100.
Désassembleur
CTRL-D provoque le désassemblage
de la page buffer. La barre d'espace-
ment fait progresser d'une ligne. la
touche RETURN d'une page écran
(12 lignes).
ESC sort du mode désassembleur.
Hard-copy d’écran
CTRL-P vous donne une copie im-
pnmante (sortie paralléle) de |'écran,
les caractéres inverses et clignotants
tant recodés avant impression. Cette
commande suppose que votre impri-
mante est connectée dans le slot 1
Q permet de quitter le programme et
rend la main au niveau du moniteur
NDLR: une version en EPROM est
disponible pour les lecteurs possé-
dant__une carte RAM/EPROM/
TIMER/PORTS PARALLELES. Vous
pouvez a cet égard prendre contact
avec l'auteur: Mr Le Tallec, 69 rue
Sauveur Tobelem 13007 MAR-
SEILLE.
St vous n'#tes pas encore adonné 4 Pon's
prenez le iweie tk en “™ ce
7
Source Big Mac 69 LENGTH = $2F
70 INVFLG) = #22
LR RRR ERR REE 71 YSAVI = $35
2* * 72 PCL = $38
3* ++ sMobby-Disk... * 73 PCH = $28
4a« * 74 RWTS = $309
ie) Thierry Le Tallec * 75 GETIOB. = $3E3
é* * 76 KBD = #c000
Patt o cere fetter reer reer rere rss 77 KBDSTRB = $coio
8 78 SPKR = $C030
9 * Utilitaire de lecture-{criture de 79 INSTDSP = $F8D0
disques 80 PRBLNK = $FI4R
10 81 PCADJ = $F953
11 EPROM KBD 30 = RAM, 82 INIT = $FB2F
1 = EPROM 83 TABU = $FB5B
12 oO = EPROM 84 BASCALC = $FBCL
13 ORG $C300 85 HOME = sFCse
14 ELSE 86 CLREOL = $FCSC
1s ORG #8000 87 CROUT = $FD8E
16 FIN 88 PRBYTE = sSFDDA
17 89 COUT $FDED
{9 constantess 90 SETNORM $FEB4
19 91 OUTPORT = $FEOS sPRHN
20 LST OFF 92 *
21 FRANCAIS 93 10B = $100
22 FRANCAIS 94 SLOT TOB+!
28 oN 95 ORIVE 1oB+2
24 trackpos 95 VOLUME = 10B+3
25 sectpos 97 TRACK = 108+4
26 bytepas 98 SECTOR = 108+5
27 volpos 99 USRBUF 108+8
Ze 100 CMDCODE = 10B+12
22 101 ERRCODE = 10B+13
30 102 VOLFND = = 10B+14,
31 trackpos 103 SLOTFND = 108415
32 sectpos 104 DRVFND) = TOBt1s
32 bytepos 105 *
34 yolpos 108
35 107 TR
36 108 AST 32
37 109 LOX 4SFF
38 bufpos 110 TXs jinitialis
39 CR e la pile
40 ctri_D tit STX mask jearact?re
a1 ctri_pP Ss normaux
a2 ESC 112 STX filter sfiltre en
43 * ; service
44 temp $06 113 INX
4S curCH #08 ie STX byte
46 curcy 309 115 STX display jaftichage
47 dfltval $19 “inks
ae ea pe 116 STX base jadresse d
49 dignum $18 e-bawe wee
SO mask $iE 117 AST 92
Si byte #3 118 TITLE JSR INIT
S2 display = $EB jO=mixte, 119 JSR HOME
l=hexa, 2=ASCII 120 JSR MSGOUT
S23 filter = $EC ;#00=of fF, 121 INV "GROSSIERS SOFTWARE"
$80=on 122 ASC " <Mobby-Disk> *
54 CHtemp = SED 123 INV "02/05/84"
55 base SEE 124 BRK
So vfst SEF 125 JSR MSGAT
S57 bufptr SFA 128 OFB 0,2
58 SBUF #200 127 LST OFF
S? EBUF = 4000 128 DO - FRANCAIS
60 * 129 LST ON
61 WNOTOP = $22 130 ASC "Piste $ /Secteur $
62 WNDBTM = $23 /Octet $ /Vol. S$ *
63 CH = $24 131 LST OFF
64 cv = $25 132 ELSE
65 BASL = $28 132 LST ON
66 BASH = $29 134 ASC “Track $ /Sector $
67 GBASL = $26 /Byte $ /Volume S *
68 GBASH = $27 135 LST OFF
Pom's n° 15
136
137
138
139
1490
141
142
143
144
192
193
194
193
196
197
193
199
200
201
202
203
204
FIN
LST ON
BRK
LOY #39
Ln a
T1 STA $480,¥ strace 3 !
ignes de pointillis
STA $580,Y
STA $550,
DEY
BPL TI
JSR MSGAT
OFB 0,21
ASC "Butter $0000"
BRK
JSR MSGAT
DFB 33,21
ASC "Drive *
BRK
JSR GETIOB
STY temp
STA tempri
LOY #15
MOVIOB LDA (temp),Y
STA 10B,¥ jrecopie 1}
“IOB en zone connue
DEY
BPL MOVIOB
INY
STY USRBUF
STY bufptr
LDA #>EBUF
STA bufptret
*
WRMSTRT JSR PRBUF
LOA #30
JSR PSNBRAC jaffiche 1
os, "> <"
MAIN JSR MSGBTM
Asc “->"
BRK
JSR GETCMD
BCC MAIN jattend co
mmande suivante
BCS WRMSTRT grafraich:
t 1’Ccran st carry
*
GETCMD JSR GETKEY
LDY #SUBTBL-CMDTBL
CMOSRCH DEY
BMI NOTFND
CMP CMOTSL,Y
BNE CMDSRCH
TYA
ASL
TAY
LDA SUBTBL+1,Y
PHA
LOA SUBTBL,Y
PHA
RTS
NOTFND CMP #"0"
BLT BADCMD
CMP: Boe
BGE BADCMD
AND #$0F
STA temp
LDA bufptr+l
AND #$F0
ORA temp
STA bufptrtt
sec
RTS
BADCMD JSR SOUND
Pom’s n’ 15
205
206
207
208
209
210
211
212
213
214
215
216
217
213
21?
220
221
222
223
224
225
JMP GETCMD
AST 32
CMOTBL ASC "I" smonte curseur
ASC "J" jcurseur @ gauche
ASC "K" ;curseur 3 droite
ASC "M" ;descend curseur
ASC "“Y" ;filtre on/off
ASC RM, INV ou FLS
asc "G scii
ASU
asc
ASC "R" ;lire un secteur
ASC "W" ;(crire un secteu
-
ASC "X" jrestore buffer
ASC change de drive
asc quitter
ASC "P" ;change de page
ASC "<" spage pr(ctaente
asc page suivante
asc °- restore un octet
ASC "3" j;saiste d’un octe
t
OFB CR gsaisie dé
une chaine
HEX 98 ssecteur p
r(c(dent
HEX 975 psecteur s
uivant
OFB ctri_D jd(sassemb
Te le buffer
SUBTBL DA UP=-1
oA LEFT-1
0A RIGHT-1
DA = DOWN-1
DA FILTER-1
0A RULMASK
oa SETASCII-1
oA SETHEXA-1
OR SETMIXT~-1
DA RDSECT-1
oA WRSECT=-1
oA RSTBUF-1
DA CHGDRV-1
DA QUIT-1
oA CHGBUF-1
dA PRUBUF-1
oA NXTBUF-1
DA UNCHNG~1
DA CHGRYT-!
DA CHGDATA-1
OA = PRVSCT-1
DA NXTSCT-1
oA DOISASM-1
AST 32
uP SEC
LOA byte
Sec vfst
JMP = PSNRYT
LEFT LDY byte
DEY
TYA
JMP =PSNBYT
RIGHT LOY byte
INY
TYa
UMP PSNBYT
OOWN ete
LOA byte
ADC vfst
ER ee I,
273 PSNBYT PHA
274 LDA #0
275 JSR PSNBRAC
ciens "> <"
276 PLA
277 STA byte
273 JSR SHOWBYT
279 LDA #880
280 JSR PSNBRAC
ouveaux "> <"
281 cic
282 RTS
283
284 PSNBRAC PHA
285 NXTBRAC SEC
286 LOA byte
287 SBC base
la demi-page
288 STA temp
289 LDY display
2?
290 BNE NXTBRI
ute
2r1 TAX
ste la demi-paae
292 BPL SAMEPAG
S 293 JSR PRBUF
i demi-page si besoin
a) 294 JMP = NXTBRAC
= 295 SAMEPAG LSR
s 296 LSR
ig r 8 Ccalcule la ligne)
297 LSR
5 298 TAX
| «299 LOA temp
300 AND #607
, osition dans la ligne
301 BPL NXTBR2
ujours)
302 NXTBRI LSR
303 LSR
304 LSR
cr 1é (modes ‘G" et *H")
305 LSR
306 TAX
307 LOA temp
308 AND #S0F
osition dans la ligne
309 NXTBR2 STA temp
310 TXA
ligne
311 cic
312 ADC #4
313 STA curcu
314 JSR TABV
315 LDA temp
position dans la ligne
316 ASL
caract}res par octet)
317 cLe
318 LOY display
e?
319? BEQ PRBRZ
ute
220 DEY
2
321 BEG PRBR4
ute
322 ADC #4
I: marge = 4
323 TAY
324 PLA
le code
zz
10
yefface an
jaffiche n
ydCtermine
ymode mixt
ynon => sa
youl => te
ichange de
idivise pa
jreste =p
j(saute to
sdivise pa
greste = p
jr (cup?re
in €cupdre
jdouble (2
jmode mixt
youl => sa
ymode hexa
youl => sa
jmode ASCI
jrfcupire
325
326
327
3238
329
330
331
332
333
334
335
336
337
338
339
340
341
342
393
344
345
346
347
348
349°
350
351
JSR
STA
mye
INY
STY
INY
TXA
STA
ra
RTS
l}ve
live
ADC
marge =
ADC
res par octe
TAY
PLA
PRBR3
e:
le code
JSR
STA
INY
STY
INY
INY
TXA
STA
Tove
PRBRS ADC
: marge = 5
TAY
sTY
e le curseur
PLA
le code
FLASHIT TAX
hing
BPL
LDX
FLASH LDA
dre Ccran
AND
ORA
STA
lignoter
INY
DEX
BNE
RTS
sTY
LDY
IMP
NOFLASH
SHOWBYT JSR
OFB
BRK
LDA
JMP
BRACKETS TAX
” yemgn
BMI
LOA
BRACK
BRACKETS
(BASL),Y jmet ou en
curCH
(BASL),Y ymet ou en
ag ymode mixt
4
temp #3 caract?
t
gr(cup ire
BRACKETS
CBASL),Y jmet ou en
curCH
(PASL),Y smet ou en
45 jmode hexa
curcH jpositionn
pr(cupire
3$00=normal, $80=flas
NOFLASH
#2
(BASL),Y ;lit carac
AS7F
#340
(BASL> ,Y jle faitc
FLASH
CH
byte
OUTBYTE
MSGAT
bytepos,2
byte
PRBYTE
;A=S80
BRACK
aso :A=$00 =>
#°>°+840
4/6/4840
32
Pom's n° 15
383
384
385
386
387
388
389
390
31
392
393
394
395
396
397
3738
399
400
401
402
403
404
405
406
407
403
409
410
411
412
413
414
415
416
417
413g
419
420
421
422
423
424
425
426
427
423
429
430
431
432
433
434
435
436
437
433
439
440
441
442
443
444
44s
FILTER
juve le
ROLMASK
ROLMSK1
SETASCII
CII ¢G>
SETHEXA
xa CHD
SETMIXT
xte (B)
SETMODE
ROSECT
ROSECT1
SETRWTS
GETPRMS
m(ro de
stes
GETPRMS2
m{ro de
cteurs
WRSECT
PRUBUF
page prtc(dente
NXTBUF
LOA filter
filtre
EcoR #880
STA filter
SEC.
RTS
AST 32
LDA mask
LSR
CMP 4S1F
BNE ROLMSK1
LDA #SFF
STA mask
RTS
AST 32
LOA #0
LOY #2
BNE SETMODE
LDA #0
LDY #1
BNE SETMODE
LDA base
LDY #0
STA base
STY display
sec
RTS
AST 32
JSR GETPRMS
LOA #1
STA CMDCODE
JSR GORWTS
SEC
RTS
LDA #2
JSR TABY
LDY #trackpos
LDA TRACK
JSR GETBYTE
piste
CMP #36
BGE GETPRMS
STA TRACK
LDY #sectpos
LDA SECTOR
JSR GETBYTE
secteur
CMP #16
BGE GETPRMS2
STA SECTOR
SEC
RTS
AST 32
JSR GETPRMS
LDA #2
BNE SETRWTS
AST 32
DEC bufptr+t
SEC
RTS
AST 32
INC bufptr+t
page suivante
Pom's n° 15
SEC
RTS
AST 32
met ou
jmode =
imode =
jmode =
3VTAB 2
sHTAB
attend
3max 36
3;HTAB n
jattend
ymax 16
jbuffer
jbuffer
en
nu
nu
se
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
442
463
464
465
466
467
463
469
470
471
472
473
474
475
474
477
4738
479?
480
aai
482
483
4a4
485
486
487
488
489
4970
491
492
493
494
495
496
497
498
aoe
S00
501
so2
503
soq
sos
506
S07
S502
PRVSCT DEC SECTOR slit le se
cteur précldent
BPL PRVI
LDA #S0F
STA SECTOR
DEC TRACK
BPL PRYV1
LDA #$22
STA TRACK
PRUL JMP RDSECT1
ast 32
NXTSCT LOY SECTOR phit le #e
cteur suivant
INY
cPY #16
BNE NXT1
Loy #0
LDx TRACK
INX
cPx #$22
BNE NXTO
LDxX #0
NXTO STX TRACK
NXT sTr sECTOR
JMP ROSECT!
AST 32
CHGDRY LDA DRIVE jchange de
drive
EoR #03
STA ORT
SEC
RTS
AST 32
QuIT JSR INIT sefface 1%
(eran et quitte le programme
JSR HOME
IMP $FFS6S
Ast 32
CHGBUF LDA
JSR TABU
LOA bufptr+t
LDY #bufpos
JSR GETBYTE
STA bufptr+l
SEC
RTS
AST 32
UNCHNG LDY byte jrestore 1
‘octet ol est le curseur
LDA SBUF,Y
STA (bufptr).¥
IMP CHGRYTS
AST 32
CHGDATA JSR CHGBYT permet 1°
{dition du buffer
JMP = CHGDATA
AST 32
CHGBYT LDA curcu jpermet |
{dition d’un octet
JSR TABV
LDY byte
LDA <bufptr),Y
LDY curCH
sty CH
LDX display jmode mixt
“2
CPX #2 ymode ASCT
1?
BNE CHGBYT2 jnon => sa
ute
JSR GETKEY
JSR DOMASK
JMP CHGBYT2
| aT, |
i
soe
Sio
Si.
S12
513
Sia
sis
Sié
Si?
318
S19
520
521
$22
523
524
S525
526
527
523
52?
530
So!
332
533
$324
535
536
537
333
539
s40
S41
S42
343
saq
545
S46
597
548
54?
350
SSt
552
sss
S54
sss
556
ss?
3538
S59
560
561
S62
563
564
Ses
S66
568
569
370
S71
$72
573
574
CHGBYT2 JSR GETBYTE
CHGEYTS LDY byte
STA Cbufptr).Y srange la
nouvelle valeur
CHGBYT4 = INY
STY CHtemp
JSR PRBUF
LOA CHtemp
JMP PSNBYT
AST 32
OISASM LDA #4 yatsassemb
le le buffer
STA WNOTOP
LOR #20
STA WNDBTM
JSR HOME
LOA #18 jVTAB 18
JSR TABV
LDA bufptr
STA PCL
LOA bufptr+t
STA PCH
o1so LOX #16
O1s1 STX temp
oIs2 JSR INSTOSP
LOY LENGTH
OIS3 LDA ¢PCL),Y
STA $5F3,Y
DEY
BPL DIS3
JSR PCADJS
STA PCL
STY PCH
DEC temp
BNE DIS2
o1s4 LDA KBD
BPL DIS4
JSR GETCP
Lox #1
CMP #CR
BEQ DISO
BNE DIS1
AST 32
PRBUF LDA #4 gattiche |
e contenu du buffer
STA CV jYTAB 4
LDY display jmode mixt
e?
BNE PRBUFO jnon => sa
ute
SEC
LOA brte joui => d¢
termine la demi-page
SBC base
BPL PRBUFO
LDA base
FOR #80 ychange de
demi-page si besoin
STA base
PRBUFO LOA base
STA temp
PRBUF1 LDA CV
JSR TABU
JSR PRLINE
INC CV
Loa cu
CMP #20
BNE PRBUF1
SHOWPRMS LOR #2 3;¥VTAB 2
JSR TABU
LOA TRACK
LOY #trackpos
JSR DSPBYT saffiche 1
375
576
$77
578
S79
S80
581
562
583
584
585
586
$87
58s
see
590
set
372
593
374
59S
S95
S77
ss
39?
600
301
602
603
604
605
606
607
608
607
610
611
612
613
614
615
616
617
613
619
620
621
$622
$23
$24
625
$25
627
628
$29
630
$31
$32
633
634
635
e@ num(ro de piste
LOA SECTOR
LDY #sectpos
JSR DSPBYT saffiche 1
e num(ro de secteur
LDA byte
LDY #bytepos
JSR DSPBYT jaffiche 1
e rang de l’octet
LDA VOLFND
LDY #volpos
JSR DSPBYT yaffiche 1
e num(ro de volume
LOA DRIVE
CMP DRVFND
BNE INUDRU
ORA #350
INVDRV ORA #30
STA $6F7 paffiche 1
e drive en service
LDA #21 ;VTAB 21
JSR TABU
LOR bufptret
LDY #bufpos yaffiche 1
“adresse du buffer
OSPBYT Sty CH
JMP = PRBYTE
PRLINE LOY #0
sty CH
STY temp+t jposition
dans 1a ligne
LDA #"3"
JSR COUT
LOA temp
JSR PRBYTE saffiche "
$", l’adresse
JSR OUTSPACE
JSR OUTSPACE
HEXASC LOY temp
LDA (bufptr),y
LOX display steste le
mode d’affichage
BEQ MIXTE
DEX
BEQ HEXA
JSR OUTCHAR
JSR OUTSPACE
JMP ASCII
HEXA JSR OUTBYTE
ASCIT INC temp
INC temp+t
LDA tempt]
CMP #16
BNE HEXASC
STA vfst
JMP CLREOL
MIXTE PHA i** MODE M
IXTE ¥%
JSR OQUTBYTE
JSR OUTSPACE
LOY CH jsauve CH
LDA #32
cLe
ADC tempt!
STA CH
PLA
JSR OUTCHAR
STY CH irestore C
H
INC temp jpointe 17
octet suivant
INC temp+1 ycompte ju
Pom's n° 15
squ’a 8 fois
636 LOA tempti
637 CMP #8
638 BNE HEXASC
639 STA vst
640 LOX #2
$41 JMP = PRBLNK
692
643 OUTBYTE LDX #$FF
644 LDA (bufptr),Y
645 CMP SBUF,Y
646 BEQ NORMAL
$47 LDX #$3F
643 NORMAL STX INVFLG
649 JSR PRBYTE
650 JMP SETNORM
651
652 OUTSPACE LDA #" *
653 OUTCHAR CMP #tA0
654 BGE OUTCH2
655 BIT filter
656 BPL OUTCH2
657 ORA #830
458 CMP #SE0
6s? BLT OUTCHI
660 AND #*ALGILIIII
661 OUTCH! CMP #$A0
662 BGE OUTCH2
663 Cha a" _*
664 OUTCH2 sTY YSAVI
635 LDyY CH
666 STA (BASL),Y
667 INC CH
668 LDY YSAV1
669 RTS
670 AST 32
671 GETBYTE STA dfitval
valeur par d{faut
672 STY CHtemp
ition dans la ligne
673 GETBYT1 LDA CHtemp
674 STA CH
675 LOA #2
676 STA dignum
ct}res par octet
677 LDA #0
678 STA val
e la valeur 3 zf{ro
679 LDA dfitval
680 JSR PRBYTE
a valeur par d(faut
681 LDY CHtemp
682 sty CH
$83 NXTODIG LOY CH
a4 LOA (BASL),Y
iffre sur 1/Ccran
9635 STA tempt!
ce chiffre
686 JSR GETKEY
e touche
687 STA (BASL),Y
e chiffre tap
6838 CMP #$88
2
689 BEQ GETBYT!
commence
690 CMP #CR
oft BEQ GETBYTS
vient tout de suite
692 CMP #"0"
chiffre hexa (0-F)
$93 BGE GoO0DO
$94 BADNUM JSR SOUND
Pom's n° 15
jrange la
yet la pos
jdeux cara
sinitialis
gaffiche |
slitoun ch
jm(morise
jattend un
saffiche |
jbackspace
joul => re
greturn ?
joul => re
steste si
ysinon "so
675
696
697
$78
$99
700
701
702
703
704
705
706
707
708
709
710
Zit
712
713
714
715
716
745
746
747
7438
749
750
751
752
753
754
755
756
757
758
75?
nne",
LDA tempt! ir (cup dre
chiffre originel,
LOY CH
STA (BASL),Y 431e remet
sur 1’Ceran,
JMP NXTDIG jet va att
endre autre chose.
Goons CMP #9" EL
BLT GOOD!
CMP #"A"
BLT BADNUM
CMP OWEN +
BGE BADNUM
SBC #6
coop AND #S0F gsi le chi
ttre est valable,
STA tempt!
LOA val
ASL
ASL
ASL
ASL
ORA temp+! 317 introdu
t 2 la droite de val,
STA val
DEC dignum
BNE GETBYT2 jet passe
au chiffre suivant.
LOA val
SEC
RTS
GETBYT2 INC CH
LoY CH
LOA #" "
STA (BASL),Y
JMP NXTOIG
GETBYT3 LDA dignum ?
CMP #2
BNE GETBYTS
LDA dflitval
STA val prevent a
vec la valeur par d(faut
GETBYT4 LOA CHtemp
sta CH
LOA val
JSR PRBYTE
LOA val
SEC
RTS
Ast 32
GORWTS LDA #0
STA VOLUME
LOA bufptrtl
STA USRBUF+1
LOY #108
LDA #>10B
JSR RWTS
BCC SAVBUF
JSR SOUND
LST OFF
oO FRANCAIS
LST ON
JSR MSGBTM
ASC “Erreur d*
BRK
LDA CMDCODE
CMP 42
BEQ WRERR
JSR MSGOUT
ASC “e lecture"
BRK
RETRY JSR MSGOUT
EE
pata
760
761
762
763
764
765
766
768
769
811
g12
B13
g14
ais
B16
817
8128
B19
820
821
822
823
824
825
826
ASC
BRK
JSR
CMP
BEQ
cmp
BEQ
SEC
RTS
WRERR JSR
asc
BRK
JMP
LsTt
ELSE
LST
JSR
ASC
BRK
LDA
cMP
BEQ
JSR
ASC
BRK
RETRY JSR
ASC
BRK
JSR
CMP
BEQ
SEC
RTS
WRERR JSR
asc
BRK
JMP
FIN
LsT
AST
SAVBUF LDY
SAVBUFI LDA
e buffer de
STA
buffer de s
INY
BNE
SEC
RTS
AST
RSTBUF LOY
RSTBUF! LDA
e buffer de
STA
le buffer de
INY
BNE
SEC
RTS
AST
GETKEY JSR
GETCP BIT
cmp
BEQ
pie 1’€cran
cMP
BNE
LDX
T™s
JMP
start
GETRTS RTS
", nouvel essai ?”
GETKEY
Hor"
GORWTS
#* 0"
GORWTS
MSGOUT
“’ecriture®*
RETRY
OFF
ON
MSGBTM
“can’t *
CMOCODE
#2
WRERR
MSGOUT
“read”
MSGOUT
", retry 2°
GETKEY
wy"
GORWTS
MSGOUT
"write"
RETRY
ON
32
#0
(bufptr),Y srecopie 1
travail
SBUF,Y 3 dans le
auvegarde
SAVBUF 1
32
#0
SBUF ,Y yrecopie 1}
sauvegarde
(bufptr),Y 3 dans
travail
RSTBUFI
32
ROKEY
KBOSTRB
ctr l_P setel—-P 2?
HARDCOPY youl => co
#ESC yescape ?
GETRTS
WSF
WRMSTRT joul => re
827
823
827
830
831
832
833
834
835
836
837
838
839
840
841
B42
843
844
845
846
847
848
849
850
851
8s2
853
g54
855
856
857
858
9s9
860
861
862
863
864
865
865
867
863
869
870
e71
872
873
874
875
876
877
878
87?
880
881
882
883
884
sss
886
887
see
8387
890
Srl
B72
893
B74
RDKEY LDY
LOA
PHA
LDA
JSR
STA
ROK1 LOA
JSR
BMI
PLA
PHA
JSR
BPL
KEYFOUND PLA
STA
TXA
RTS
BLINK STA
LOX
STX
BLINK1 LDA
BMI
DEX
BNE
DEC
BNE
BLINK2 STA
TAX
RTS
DOMASK CMP
2
BGE
change pas
Lox
e si FLS ou
CPX
BNE
CMP
BGE
EOR
DMSK1 RTS
OMSK2 AND
RTS
AST
HARDCOPY LDX
HARDO LDA
STA
page z{ro
ol
BPL
LDX
STX
STx
LDA
JSR
LOA
STA
HARD1 JSR
LDA
STA
LOA
STA
LDA
JSR
JSR
LDY
HARD2 LDA
CMP
BGE
ADC
rmal
14
CH
<BASL) ,Y
"4H"
DOMASK
$7F7
#""
BLINK
KEYFOUND
BLINK
ROK1
(BASL) ,¥
(BASL) ,Y
#50
temp
KBD
BLINK2
BLINK1
temp
BLINK1
KBDSTRE
WSEO
OMSK1
mask
INV
4S7F
DMSK2
#SCO
DMSK2
#SCO
mask
32
#$2F
0,x
10B+17,X
HARDO
#22
WNOTOP
WNOBTM
#1
OUTPORT
#0
temp
BASCALC
BASL
GBASL
BASH
GBASH
#22
TABY
CROUT
#0
<GBASL) ,Y
#$20
NOINU
#3C0
yminuscule
youl
=> ne
gnon: test
jsauve la
;PRML
;VTAB 22
inverse ?
joul
=> no
Pom's n° 15
895 NOINV CMP #860 3flashing 931 Tay
? 932 $3 DEY
996 BGE NOFLS 933 BNE $3
897 ORA #880 youl => no 934 BIT SPKR
rmal 935 DEX
898 NOFLS CMP #880 jcaractore 936 BNE SI
de controle ? 937 RTS
899 BGE NOCTRL 938 AST 32
900 ADC #840 joui => no 939 MSGETM JSR MSGAT
rmal 940 DFB 0,23,0
901 NOCTRL CMP #$FF 317 imprima 941 JSR CLREOL
nte n’aime pas celui-12 942 *
902 BNE PRINT 943 MSGOUT PLA
903 LDA #" " 944 STA temp
904 PRINT JSR COUT 945 PLA
705 INY 946 STA temp+t
906 cPY #40 sfini lign 947 Loy #0
e? 248 BEQ MSGNXT
907 BNE HARD2 snon => co 949 *
ntinue 950 MSGAT PLA
908 INC temp 951 STA temp
9709 LDA temp 952 PLA
910 CMP #23 953 STA temptti
ail BLT HARDI 954 LOY #1
12 JSR CROUT 955 LDA <temp),¥
913 LOA #0 956 STA CH
914 JSR OUTPORT 957 INY
vis LOX #$2F 958 LDA <temp),Y
916 HARDZ LOA 10B+17,x 959 JSR TABU
a? STA 04x 960 MSGNXT = INY +3
a page z{ro 941 LDA (temp),Y &
918 DEX 962 BEQ MSGEND iy
age BPL HARD3 963 JSR COUT od
920 JMP GETKEY 964 JMP MSGNXT k
921 AST 32 965 MSGEND cLC #
922 SOUND LOX #$80 966 TYA |
923 S1 TxA 967 ADC temp =
924 EOR #830 768 TAY EF
925 TAY 969 LDA temp+t
926 S2 DEY 970 ADC #0
927 BNE S2 971 PHA
928 BIT SPKR 972 TYA
929 TXA 973 PHA
930 aoc ##80 974 RTS
é i - 12 CF BF BO OE 29 OF as 1€8- 91 28 C3 CA DO F4 60 84
Reécapitulation QOFO- 06 Ad FB 29 FO 05 06 85 BiFo- 24 ad €3 SC Ie 64 20 SF
80F8- FB 38 60 20 22 86 4C CC BIFS- 85 1D 02 00 AS E3 4C DA
8000= A2 FF 9A 86 1E es EC ES 8100- 80 CP CA CB CO 09 D4 C7 8200- FD AA 30 04 Ag AD AA 60
8008- 66 E3 86 EB 84 EE 20 2F 8108- C8 C2 D2 D7 DB C4 D1 DO 8208- AY 7E A2 7C 40 AS EC 49
8010 FB 20 58 FC 20 45 86 07 8110- BC BE AD Ba 8D aa 95 84 @210- 80 85 EC 38 40 AS IE 4a
S018- 12 OF 13 13 09 OS 12 13 8118- 45 91 40 81 54 81 SB a1 8218- CP? IF 00 02 A? FF 8S 1E
8020- 20 13 OF O6 14 17 01 12 8120- OC 82 14 82 20 82 26 32 8220- 60 AP 00 AD 02 DO OA AF
£028=..05 Ao BC CO. Ce ce 62.09 8128- 2C 82 36 82 68 82 48 35 8228- 00 AU 01 DO 04 AD EE AD
803080 C4 C9:03:.C8 OE A030 8130- AB 82 BS 82 BE 82 6F 82 8230- 00 85 EE 84 EB 38 40 20
g028- 32 2F 30 35 2F 36 34 00 8138- 73 82 CE 82 DE 82 DS a2 8238- 44 82 A? O1 BD OC O1 20
80407 20 4F 6600 02 00 CP D3 8140- 77 82 8€ 82 0C 83 38 AS 8240- 06 84 38 40 a9 02 20 5B
8048- D4 CS AD AS AD AU AF D3 @148- £3 ES EF 4C 41 91 Ad EB 8248- FB AO 07 AD 04 O01 20 54
80S0- CS C3 04 CS 05 02 AD Ad 8150- 98 98 4C 41 81 Ad E3 CB 8250- 84 CP 24 BO EF 8D 04 Ot
8058- AD AO AF CF C3 04 CS D4 @1S8- 96 4C 41 81 18 AS E3 65 8258- AO 13 AD OS 01 20 54 84
80460- AD AS AD AD AF D4 CF CC 8160- EF 48 A? 00 20 74 81 68 8260- C7 10 BU F4 8D OS 01 38
8068- AE AD A4 AD AD 00 AO 27 8158- 85 EZ 20 Fs 81 AY BO 20 82s8- 60 20 44 82 AY 02 DO CC
BO20="A? AD $260 04 79-80 -03 8170- 74 81 18 60 48 38 AS E3 8270- Cé FB 38 60 E46 FB 38 40
B07 2? 3009380 10: FF20 ar 8178- ES EE 85 06 ad EB DO 13 8278- CE 05 01 10 OF a9 OF 8D
8080- 86 00 15 C2 D5 Cé Cé CS 8130- AA 10 06 20 Si 83 4c 75 e2e0- 0S 01 CE 04 O1 10 05 AP
8083- D2 AO Aa BO 80 BO BO 00 @198- 81 4A 4a 4a AA AS 05 29 82g8- 22 8D 04 01 4C 3A 82 AC
8090- 20 4F 86 21 15 C4 D2 CP 8190- 07 10 09 4A 48 48 4a AA g270- 05 01 CS CO 10 00 OF AD
B098="D4 C3'A0 00 20 E3°03 94 8198- AS 06 29 OF 85 05 BA 18 8298- 00 AE 04 O1 ES EO 23 00
BOAD="08 95: 07-A0 10: 81 06 9? S1A0- 67 04 85 09 20 SB FB AS 82A0- 02 AZ 00 BE 04 01 BC 0S
B0Ae- 00 O1 88 10° FS CB BC Os B1AS- 06 0A 18 Ad EB FO 14 ag 82A8- O1 4C 3A 82 AD 02 O1 49
8060- 01 84 FA A? 40 85 FB 20 81B0- FO 25 69 04 AB 48 20 01 8280- 03 8D 02 01 38 40 20 2F
80BS- 51 83 AY 80 20 74 81 20 S1B8* 82 91 28 Cs 34 08 CB 9A e2e8- F8 20 $8 FC 4C 6S FF AP
BOCO- 3C 86 AD BE 00 20 CC 80 B1CO- 91 28 40 59 04 45 06 AB 62C0- 15 20 5B FB AS FB AO 08
80C8- 90 FS 80 EB 20 55 85 Ad S1CS- 68 20 01 82 91 28 C8 34 82C8- 20 54 84 85 FB 38 60 AG
80D0= 17 88:30 11° 09°01 B81 Do 8100- 08 C8 CS BA 71 28 60 69 8200- E3 BP 00 02 91 FA 4C 02
Sode- Fe 22 0a Ae Be 178k 40 81D8- 05 AB 84 O8 58 AA 10 OF 8208- 83 20 OF 82 4C D9 82 AS
B0E0- BF 18 81 48 60 C7 BO 90 B1E0- A2 02 81 28 29 7F O09 40 82E0- 09 20 SB FB ad £3 B1 FA
Pom's n: 15 15
82E8- Ad 08 84 24 AS EB ED 02 8420-
92F0- 00 09 20 SS 35 20 Al 35 9429-
92F8- 4c FE 92 20 54 94 Ad £3 9430-
@900- 91 FA C9 84 ED 20 Si 83 9438-
8308- AS ED 4C 61 G1 AP 04 BS 8440-
B310- 22 AY 14 85 23 20 5B FC Ba48-
8318- AY 12 20 SB FB AS FA 35 8450-
8320- 3A AS FB 85 3B AZ 10 86 8453-
9228- 04 20 00 FA Aa 2F Bl 3A gaso-
9330- 99 F3 05 88 10 Fe 20 53 8453-
8338- F? 85 3A 84 3B CS 04 DO 9470-
8340- E3 AD 00 CO 10 FB 20 58 3478-
8348- 85 A2 01 CF BD FO Dé 00 gag0-
8350- 06 AP 04 BS 25 Ad EB DO 8438-
8358- 00 38 AS E3 ES EE 10 06 8490-
9340- aS EE 49 a0 85 FE AS EE 9a93-
9368- 85 046 AS 25 20 5B FB 20 94a0-
9370- 88 33 Es 28 AS 25 CP 14 34as—
8378- 00 FO Ay 02 20 SB FE AD aae0-
8380- 04 U1 AU 07 20 B6 83 AD 84Ba-
8388- 05 01 AO 13 20 B6 83 AS a4co-
8390- E3 AD 1D 20 86 83 AD DE 84C3-
9398- 01 AD 24 20 B4 83 AD 02 gaD0-
83A0- 01 CO 10 O1 DO 02 a9 80 34p8-
83A8- 09 30 80 F7 06 AP 15 20 34€0-
8360- 38 FB AS FB AD 08 34 24 84E3-
83B9- 4C DA FD AU OU 84 24 34 gaF0-
83C0- 07 A? Ad 20 ED FD AS 06 84F3-
83C3- 20 DA FD 20 31 84 20 31 8500-
9300- 94 Ad 04 BI FA AS EB FO as03-
8303- 1£ CA FO 09 20 33 84 20 asi0—
@3E0- 31 84 4C £9 83 20 16 34 35is-
83E3- E6 06 ES 07 AS 07 CF 10 g520-
83F0- 00 DF 85 EF 4C YU FC 48 g529-
S3F3- 20 1£ 84 20 31 94 Ad 24 8530-
8400- AY 20 18 65 07 85 24 48 as39-
ga0s- 20 33 84 84 24 ES 05 ES 9540-
@410- 07 AS 07 C9 Og DO BA BS 9s4a-
8413- EF AZ 03 40 4a FP AZ FI 3550-
BL
3F
FE
ec
02
DF
24
as
ar
FD
28
c?
cy
07
cy
co
3s
os
AS
ar
18
1a
0a
EP)
AO
34
F2
AD
45
FS
ao
es
20
CF
az
ES
Fa
$0
cs
FO
FD
cog
80
v1
19
19
aa
3s
ao
4c
c
06
oa
18
24
30
As
40
8D
oF
3c
2 a0
FO
ES
ES
a0
Fo
20
Fa
a0
Do
02
asse-
asso-
95s3-
8570—
8s78-
3580-
s598-
8590-
asoa-
gsao-
esaa-
ss60-
g588-
8sco-
escs-
asoa-
g5D3-
ese0-
8ses-
3SFu-
asFs-
as00-
asos-
8610-
8618-
Boz0-
8623-
8630-
8438-
g640-
B64e-
8650-
8658-
8660-
8668-
@670-
9678-
2c
98
80
aa
oF
20
8A
AD
cé
40
7F
co
oo
16
95
Fa
27
FO
02
380
FF
ca
0s
ae
1
ss
38
80
ca
1?
48
33
06
FB
FD
aa
40
( BONJOUR LES PRIX!! ‘
INOS PRIX SONT F "©
Carte langage 400
Carte 128 k ram 1550
Carte 80 colonnes 700
Interface série 520
Super série 1000
Interface paralléle 380
Grappler+ buffer 16k 1350
Carte modem 2200
Carte Z 80 410
Wildcard 400
Carte bleue et eurocard acceptées
Speech card 320
Carte horloge 500
Joystick 165
Ventilateur 280
Contréleur de drive auto switch 13/16 370
Microdrive 3” 1900
Moniteur vert 12” 950
Disquettes 5” 1/4 S.F./S.D. par 1 boite 140/boite
Disquettes 5” 1/4 S.F./D.D. par 1 boite 175/boite
Vente par correspondance: nous consulter.
Computer
i 3, rue Papillon 75009 Paris - Tél.: 523.51.15
AU-DESSUS, NOUS CONSULTER,
(métro Poissonniére) ouverture du lundi au samedi de 10 h a 19 h 30
Pom’s n° 15
Les fleuves de France
Joseph Pino
L'Enseignement Assisté par Ordina. 15000000 sur laquelle clignote le Le programme est tres simple et ne
teur (E.A.O.) est a la mode actuelle tracé d'un fleuve. d’en fournir le nécessite aucun commentaire particu-
ment; Pom’s n’échappe pas a la ten nom exact lier. Le plus penible sera de rentrer
dance en vous présentant ici un toutes les DATA si vous n’avez pas la
programme d’éducation sur les fleu , disquette de Pom's
ves el Tividres ‘de France. Pas dl aliclement Le proataenme ne
vous demande que 10 noms avant jhe: netiteiealle avant daceamae
Le programme E.A.O.FLEUVES est de sarreter et dafficher votre score, Une Pelite colle avant de commen:
écrit entiérement en Basic done faci Pour les imbattables. il restera la pos Blavet-et la Truyere?
lement modifiable, et propose. a par sibilité d'augmenter le nombre‘ de Id
tir d'une carte de France au fleuves disponibles (60 actuellement) =
Programme E.A.O.Fleuves 1" PRINT : END
1000 REM «#** TOUTE LA CARTE «
MG REM ose FeAcO: GROGHAPHIE. ome 1010 HGRZ : GOSUB 3000: FOR N = 1 TO 59
z rt ‘ : GOSUB 8000: NEXT
110 HOME ; INVERSE : PRINT SPC( 41);: 1020 GET ws: RESTORE :N = O:N2 = 0: FOR
NORMAL : PRINT SPC( 38);: INVERS I = 0 70 S:Nt(Z) = 0: NEXT ? GOTO
E : PRINT “ “;: NORMAL : PRINT “ 500 :
E.A.O. GEOGRAPHIE CM2 FLEUV
ES “3: INVERSE : PRINT " “:: N S080 “RES «© CORRECTION!
ORMAL : PRINT SPC‘ 38);: INVERSE 2010 TEXT : VTAB T = 2 + HTAB 1: PRI
3 PRINT SPC( 41): NORMAL : PRIN NT T;: HTAB 3: PRINT “ 7.... H
7 TAB 3: INPUT “ “;RS: IF R& = "7"
120 CLAVIER = 49152:KBDSTB = 49168:TXTCL THEN GOSUB 9000: GOSUB 4000: GOT
R = 49232:HISCR = 49237: VTAB 10: 9 2010
HTAB 1: PRINT “ Voulez vous que 2020 TEXT : VTAB T © 2 + 1: HTAB 1: PRI
lques explication VTAB 12: HTA NT T;: HTAB 4: PRINT AS; SPC( 20)
B18: PRINT “< N >": VTAB 12: HTA 32 IF RS 2 AS THEN VTAB T ® 2 +
B 20: GET ws 1: HTAB 19: INVERSE : PRINT “ EXA
130 IF WS < > “O" THEN 500 CT “;: NORMAL ; PRINT SPC( 10);:
140 VTAB 9: HTAB 1: PRINT “ Apprenez le EX = EX + 1: GOTO 2040
nom dea fleuvea de FRANCE et de 2040 VTAB 1: HTAB 28: PRINT “Note : “;E
leurs offluents en vous amusant. x; RETURN
2 3000 REM ##* TRACER LA CARTE *###
150 PRINT SPC( 40): PRINT “ Vous t
aperez au clavier le nom du cour 3010 GOSUB 9000: HCOLOR= 3:XO = 40:Y0 =
@ d’eau qui clignote sur la carte - 5: FOR I = 1 TO 9: READ X.Y:
Be HPLOT X + XO,¥ + YO
160 PRINT : PRINT “ Je yous derande 3020 READ X,¥: IF X AND Y THEN HPLOT
10 noms et je vous donne les 10 TO X + X0,¥ * YO: GOTO 3020
: PRINT 3030 NEXT : RETURN
170 Si vous repondez *?” 4000 REN **+* FAIRE CLIGNOTER ***
Comme nom jereviens en page HGR2
pour la carte.” 4010 GOSUB 8000: HCOLOR= 3: GOSUB 8000:
180 PRINT : PRINT “Tapez “C’ pour voir IF PEEK (CL) > 127 THEN POKE K
la carte complete.":: GOSUB 10000 B,O: RETURN
: IF WS = "C" THEN GOTO 1010 4020 HCOLOR= 0: GOTO 4010
SOO REM «#* DEBUT e« S000 REN =" TIRER AU SORT ee
$10 TEXT : HOME : VTAB 1: HTAB 4: INVER 5010 NO = 59: REM
SE : PRINT “ NOMS “: NORMAL : H Nbre Questions
GR2 : GOSUB 3000: GOSUB 5000: GOS
UB 4000: FOR T = 1 TO 9: GOSUB 20 $020 N = INT ¢( RND (1) * NQ> + 1:N(T) =
00: GOSUB 10000: GOSUB 3000: GosuU N
B 5000: GOSUB 4000: NEXT $030 IF T = 0 THEN 5060
520 GOSUB 2000: GOSUB 10000: GOoSUB 9000 S040 FOR S = 0 TOT - 1: IF N = NCS) TH
? GOSUB 10000 EN S = T - 1: NEXT : GOTO 5020
S30 TEXT : HOME : VTAB 2: HTAB PRINT 5050 NEXT S
“Vous avez bien repondu Xp" £ S060 VTAB 24: HTAB 10: PRINT SPC( 22):
ois sur 10“: PRINT ; PRINT : HTAB RETURN
Si PRINT “Voulez vous recommence 6000 REM *## QUESTIONS #*#
r (O20UI) :";: GET ws: IF we = “O
“ THEN RUN 6010 AS = “SOMME: HPLOT 165,24 TO 161,2
540 VTAB 14: HTAB 15: PRINT “AU REVOIR 7 TO 160,22 TO 150,24 TO 142,18:
Pom’s n° 15
6020
6030
6040
6050
6060
6070
6080
60390
6100
6110
6120
6130
6140
6150
6160
6170
6180
6190
6200
6210
6220
6230
6240
6250
RETURN
AS = “EURE”“: HPLOT 129,53 TO 138,57
TO 140,53 TO 137,49 TO 138,46 TO
134,40 TO 135,37: RETURN
AS = “LOING": HPLOT 164,74 TO 159,7
2 TO 157,67 TO 158,64 TO 156,61 T
O 158,58: RETURN
AS = “YONNE": HPLOT 175,85 TO 174,8
4 TO 172,84 TO 169,77 TO 171,74 T
O 169,67 TO 165,65 TO 165,60 TO 1
63,57: RETURN
AS = “ARMANCON": HPLOT 184,82 TO 18
2,78 TO 183,77 TO 174,66 TO 169,6
7: RETURN
AS = “AUB HPLOT 193,72 TO 183,61
TO 181,55 TO 174,52 TO 171,53: R
ETURN
AS = “MARNE™: HPLOT 196,68 TO 195,6
8 TO 195,64 TO 192,63 TO 191,52 T
© 185,51 TO 179,43 TO 169,41 TO 1
63,45 TO 162,44 TO 154,49 TO 152,
47: RETURN
AS = “OISE": HPLOT 177,22 TO 168,24
TO 165,29 TO 161,31 TO 158,33 TO
147,42: RETURN
AS = “AISNE”: HPLOT 192,45 TO 190,4
S TO 185,33 TO 178,31 TO 173,35 T
O 164,35 TO 158,33: RETURN
AS = “ORNE": HPLOT 120,51 TO 117,49
TO 113,49 TO 110,44 TO 114,37: R
ETURN
AS = “RANCE“: HPLOT 79,57 TO 83,58
TO 87,57 TO 88,52: RETURN
AS = “AULNE™: HPLOT 65,53 TO 62,58
TO 59,58 TO 54,56: RETURN
AS = “BLAVET": HPLOT 68,55 TO 72,59
TO 72,63 TO 67,69: RETURN
AS a “VILAINE": HPLOT 103,60 TO 30,
62 TO 88,71 TO 79,75: RETURN
AS = “MAINE”: HPLOT 108,75 TO 107,7
8: RETURN
AS = “MAYENNE”: HPLOT 114,54 TO 113
»55 TO 110,54 TO 107,56 TO 105,62
TO 106,70 TO 108,75: RETURN
AS = “SARTHE"; HPLOT 124,52 TO 122,
54 TO 116,56 TO 116,60 TO 119,67
TO 111,69 TO 108,75: RETURN
AS = “LOIR“: HPLOT 133,58 TO 136,60
TO 134,68 TO 130,70 TO 122,72 TO
118,72 TO 108,75: RETURN
AS = “NIEVRE“: HPLOT 165,80 TO 162,
88: RETURN
AS = “ARROUX": HPLOT 182,86 TO 178,
93 TO 176,100: RETURN
AS = “ALLIER": HPLOT 171,135 TO 167
7128 TO 165,115 TO 168,109 TO 166
»97 TO 161,93 TO 162,88: RETURN
AS = “CHER”: HPLOT 153,112 TO 155,1
07 TO 155,97 TO 150,92 TO 149,86
TO 145,82 TO 125,79: RETURN
AS = “INDRE": HPLOT 150,100 TO 146,
99 TO 144,94 TO 142,92 TO 135,90
TO 129,83 TO 120,83 TO 119,81: RE
TURN
A@ = “VIENNE": HPLOT 147,117 TO 143
116 TO 136,112 TO 134,114 TO 126
112 TO 126,100 TO 124,96 TO 124,
87 TO 118,84 TO 116,81: RETURN
AS’ = “CREUSE“: HPLOT 148,113 TO 148
109 TO 140,101 TO 140,99 TO 137,
97 TO 131,95 TO 127,88 TO 124,87:
RETURN
A® 3 “SEVRE NANTAISE": HPLOT 103,96
FP eee
TO 102,93 TO 94,84 TO 93,82: RET
URN
AS = “CHARENTE HPLOT 125,115 TO 1
19,106 TO 117,116 TO 114,118 TO 1
05,116 TO 104,112 TO 98,111: RETU
RN
As = “DORDOGNE HPLOT 159,119 TO 1
$4,119 TO 153,122 TO 139,135 TO 1
28,135 TO 110,135 TO 105,130: RET
URN
AS = “VEZERE“: HPLOT 147,120 TO 142
,i20 TO 137,124 TO 137,129 TO 134
129 TO 128,135: RETURN
AS = “ISLE“: HPLOT 134,117 TO 130,1
20 TO 127,128 TO 124,128 TO 121,1
31 TO 111,131 TO 110,135: RETURN
AS = “LOT HPLOT 172,142 TO 163,14
5 TO 155,140 TO 142,144 TO 130,14
3 TO 128,145 TO 123,144 TO 119,14
7: RETURN
AS = “TRUYERE": HPLOT 170,137 TO 16
7,139 TO 165,134 TO 158,135 TO 15
40: RETURN
AS = “TARN": HPLOT 173,145 TO 165,1
47 TO 162,152 TO 157,154 TO 145,1
S56 TO 140,158 TO 135,152 TO 130,1
52: RETURN
“AVEYRON’: HPLOT 162,147 TO 15
8,145 TO 154,147 TO 146,146 TO 14
5,151 TO 135,152: RETURN
AS = “ARIEGE”: HPLOT 141,186 TO 143
185 TO 142,182 TO 139,180 TO 139
,171 TO 136,169 TO 136,165: RETUR
N
AS = “SAVE": HPLOT 122,173 TO 127,1
69 TO 134,159: RETURN
AS = “GERS“: HPLOT 120,172 TO 123,1
67 TO 124,158 TO 123,155 TO 125,1
SO: RETURN
AS = “BAISE™: HPLOT 118,176 TO 117,
172 TO 120,168 TO 119,148: RETURN
As
AS = “ADOUR™: HPLOT 115,178 TO 115,
175 TO 114,172 TO 113,163 TO 108,
159 TO 95,160 TO 94,164 TO 90,165
TO 89,16 RETURN
AS = “AUDE": HPLOT 147,185 TO 151,1
72 TO 165,173: RETURN
AS = “HERAULT": HPLOT 170,151 TO 17
3,156 TO 169,165 TO 169,170: RETU
RN
AS = “GARD”: HPLOT 173,148 TO 178,12
49 TO 181,155 TO 187,155 TO 188,1
57: RETURN
AS = “ARDECHE“: HPLOT 179,139 TO 18
4,141 TO 182,145 TO 188,149: RETU
RN
AS = "SAONE“: HPLOT 207,62 TO 205,6
5 TO 205,72 TO 197,80 TO 196,85 T
O 191,89 TO 189,92 TO 191,97 TO 1
88,110 TO 190,112 TO 190,114: RET
URN
AS = “DOUBS HPLOT 210,91 TO 220,7
8 TO 218,78 TO 218,75 TO 205,84 T
O 197,89 TO 191,89: RETURN
AS = “AIN": HPLOT 208,92 TO 203,93
TO 196,11 RETURN
AS = “ISERE HPLOT 221,120 TO 218,
117 TO 215,118 TO 214,115 TO 211,
118 TO 207,122 TO 204,126 TO 202,
124 TO 194,131 TO 191,131: RETURN
AS = “ARC™: HPLOT 223,122 TO 214,12
S TO 212,123 TO 211,118: RETURN
Pom’s n° 15
6490
6500
6510
6520
6530
6540
6550
6560
6570
6580
6590.
7000
7010
7020
7030
7040
AS = “DRAC": HPLOT 213,136 TO 211,1
38 TO 203,133 TO 204,126: RETURN
A@ = “DROME”: HPLOT 204,142 TO 200,
140 TO 199,136 TO 195,138 TO 190,
137: RETURN
AS = “DURANCE“: HPLOT 218,132 TO 21
7,134 TO 217,138 TO 213,143 TO 21
0,142 TO 208,145 TO 210,150 TO 20
7,159 TO 201,161 TO 190,155: RETU
RN
AS =» “VERDON": HPLOT 218.147 TO 218
2156 TO 210,159 TO 207,159: RETUR
N
AS = "VAR": HPLOT 221,147 TO 222,15
4 TO 228,154 TO 228,162: RETURN
AS = “RHIN™; HPLOT 240,72 TO 227,72
TO 227,60 TO 230,48 TO 235,40 TO
238,33 TO 237,22 TO 233,17 TO 22
8,19 TO 225,12 TO 222,10 TO 217,4
TO 216,0: RETURN
AS = “ILL": HPLOT 225,73 TO 224,72
TO 225,58 TO 227,56 TO 228,50 TO
230,48: RETURN
AS = “MOSELLE“: HPLOT 218,66 TO 216
»67 TO 203,50 TO 206,47 TO 205,44
TO 206,34 TO 209,31 TO 215,24 TO
220,20 TO 225,12: RETURN
A® = “MEURTHE™: HPLOT 218,59 TO 215
58 TO 207,50 TO 206,47: RETURN
AS = “MEUSE": HPLOT 200,65 TO 199,6
4 TO 200,50 TO 192,35 TO 192,32 T
O 189,27 TO 187,28 TO 184,23 TO 1
86,17 TO 187,12 TO 197,6 TO 199,0
i RETURN
AS = “ESCALU HPLOT 165,22 TO 163,
22 TO 165,15 TO 168,15 TO 168,12
TO 167,9 TO 165,6 TO 173,0: RETUR
N
REM «** CARTE DE FRANCE «*#
DATA 115,5,100,10,100,20,102,23,99
+22,98,25,93,28,86,29,80,33,78,37
»83,38,74,42,61,40,59,36,60,34,59
732,54,34,50,32,51,39,54,43,54,54
937 ,56,51,57,51,54,49,54,48,57,46
»55,41,54,37,57,33,50,26,50,24,53
718,52
DATA 7,54,7,58,13,58,14,61,8,61,13
-63,13,65,7,65,11,67,12,69,11,71,
14,72,15,69,25,75,27,74,30,75,28,
76,29,78,32,78,32,76,36,78,33,79,
34,81,39,80,38,86,41,86,44,84,49,
87,44,86,43,89,46,90,43,95,47,103
757,108
DATA 58,116,55,122,60,124,63,128,6
5,135,61,128,57,124,54,143,57,141
798,144,56,145,55,144,53,146,49,1
69,46,172,44,172,51,180,63,185,69
,185,71,187,82,187,82,184,100,190
,100,193,105,195,117,195,120,193,
125.195
DATA 125,192,123,191,123,180,125,1
78,129,175,130,176,139,169,141,17
1,145,172,147,172,147,174,153,173
,155,170,159,171,155,173,161,174,
160,176,168, 180,177,178,178,176,1
80,176,181,171,183,172,188,167,18
9,164
7050 DATA 191,165,195,162,195,154,185,1
53,182,147,184,140,179,134,185,13
0,185,125,180,118,182,115,180,104
7175, 104,169,109,0,0,180,104,176,
101,171,104,169,109,169,101,180,8
8,182,83,181,80,185,80,187,77,188
+78,192,58
7060 DATA 197,45,195,45,188,44,185,42,1
81,44,176,41,174,43,171,36,169,36
,164,36,159,34,156,36,147,29,146,
22,141,27,137,27,137,20,135,17,13
1,19,130,16,128,14,127,14,125,15,
123,14,122,9,119,10,116,7,115,5,0
0
7070 DATA 147,82,144,72,137,67,135,60,1
31,56,123,62,118,63,111,56,112,52
»107,48,102,49,95,42,83,38,0,0
7080 DATA 141,140,139,141,136,139,136,1
32,138,132,141,124,137,115,136,10
5,122,93,121,88,119,86,120,83,116
,78,104,72,94,82,85,84,79,86,76,8
6,70,82,67,83,65,84,58,83,53,87,4
9,87,0,0
70390 DATA 89,188,86,189,83,180,86,179,9
2,176,96,170,94,164,90,157,85,155
»79,153,79,152,79,150,74,146,70,1
46,65,135,0,0,200,101,194,106,191
,106,183,110,180,104,0,0,169,109,
167,110,163,122,154,118,156,118,1
50
7100 DATA 119,150,125,149,127,151,136,1
51,138,150,142,148,148,148,154,15
2,159, 150,160,148,162,148,165,144
,168,141,171,0,0,144,168,145,172,
0,0,148,165,153,173,0,0
8000 REM ### AIGUILLAGE ##s
8010 IF N > 40 THEN N2 = N - 40: GOTO 8
040
8020 ON N GOSUB 6010,6020,6030,6040,605
0,6060,6070,6080,6090,6100,6110,6
120,6130,6140,6150,6160,6170,6180
76190,6200,6210,6220,6230,6240,62
50,6260,6270,6280,6290,6300,6310,
6320,6330,6340,6350,6360,6370,638
0,6390,6400
8030 RETURN
8040 ON N2 GOSUB 6410,6420,6430,6440,64
50,6460,6470,6480,6490,6500,6510,
6520,6530,6540,6550,6560,6570,658
0,6590
8100 RETURN
9000 REM »* VOIR HGR2 SANS EFFACER *
9010 POKE TX, POKE HI,0: RETURN
10000 VTAB 24: HTAB 10: PRINT “Tapez un
@ touche GET Ws: RETURN
Si vous étes dans la & et oubliez dacheter Pom's,
envoyez-nous une &3 et abonnez-vous sans
Inutile de vous #- @, les autres numéros de Pom'‘s
sont encore disponibles avec leurs disquettes !
Pom's n° 15
19
MousePaint est avant tout un logiciel de
realisation de dessins, fonctionnant sous
controle de la souris Fipple
Un crayon permet de faire du dessin a
main levee (si on peut dire ... la main est
posee sur la souris !)
AL,
ce n'est pas toujours tres simple, mais
avec un peu dhabitude
Et en cas derreur, il y ala ressource
de la gomme.
On peut egalement travailler par taches,
avec la brosse.
On peut aussi vaporiser des petits nuages
Bien sur on peut ecrire: on dispose
de plusieurs types ae caracteres
Mais pas de caracteres accentues
20
Des formes predefinies permettent de
tracer des figures geometriques, vides
ou pleines, avec decors varies. Mais on
ne peut pas remplir apres coup
On peut aussi deplacer, dupliquer, faire
des symetries,
‘e ie ‘ak
e
e e D
° e
® ° e ;
2
- Xe
7 ®
@ mA * fe
‘° bd °
* ° s
ie & s
@
Tl existe enfin des fonctions permettant
de travailler au niveau du point, ou de
controler la position du dessin dans la
page, dutiliser une arille pour certains
traces, ..., et bien entendu des fonctions
de gestion de disque
Une lacune:
l'absence d'une fonction
“Catalogue” : on ne sait
jamais ce quill y a sur
un disque
La fonction impression EXIGE limprimante
Image Writer. Pour une autre imprimante,
il faut transiter par le disque.
; i
meee Nile I
Un produit bien agreable
malgre quelques lacunes.
La version etudiee fonctionne sur les
modeles II, II+, sve et “ce
Pom's n° 15
Gestion de fichiers par RWTS et
Pom’s a déja consacré plusieurs arti-
cles aux méthodes de gestion de fi-
chier en DOS 3.3 et, aprés une lon-
gue pose dans cette série, nous vous
en proposons un autre. un peu plus
complexe dans sa mise en oeuvre
mais qui devrait vous fournir, du
moins | espérons-nous. un systéme
telativement rapide et souple pour
gérer de gros fichiers de données sur
disquettes 140K
Principes généraux
Il est de notoriété publique que le
DOS se charge en mémoire a partir
d'une disquette lorsque l'on met
TApple sous tension ou que lon
“boote” a chaud. par PR#6_ par
exemple.
L'implantation du DOS sur une dis-
quette résulte, de maniére générale,
de son initialisation par la commande
INIT. A l'issue de cette opération, les
pistes 0, 1 et 2 de la disquette
contiennent le DOS et ne sont plus
accessibles pour la sauvegarde de fi-
chiers ou programmes
En fait, cette présence du DOS sur
toutes les disquettes constitue un
luxe inutile. Plus particuliérement, en
matiére de gestion de fichiers, on
peut utiliser frequemment une dis-
quette “Programmes”, qui se place
dans le lecteur 1 et assure également
le “boot” du systeme. et une dis-
quette réservée plus spécialement a
la sauvegarde des fichiers, placée
dans le lecteur 2. Sur cette seconde
disquette, le DOS ne représente
qu'une perte de place pour le stu-
ckage des informations.
De méme, si l'on n'emploie qu'une
seule disquette pour programmes et
fichiers et si l'on ne dispose que d'un
seul lecteur, il est toujours possible
de charger le DOS en mémoire a
partir d'une autre disquette. rempla-
cée immédiatement aprés par celle
nécessaire aux traitements,
Il serait donc possible d'exploiter les
3 pistes protégées du DOS pour y
stocker des informations utiles 4 la
gestion de fichiers : nous vous propo-
sons d'y placer la table de référence
des enregistrements d'un gros fichier
de données. Notons de suite que
ceci ne perturbera pas le fonctionne-
ment du DOS pour le maniement de
programmes ou fichiers sur la meme
disquette, puisque les pistes 0), 1 et 2
sont de toute facon considérées
comme occupées a lissue de INIT;
Pom's n’ 15
on ne risque donc pas de les “ecra-
ser” en cours de traitement. Par un
POKE approprié 4 l'adresse 44723
(voir Pom's 11), on peut meme pro-
teger ainsi plus de trois pistes pour la
sauvegarde d'une table de référence,
et nous y reviendrons ultérieurement
Organisation de la table
de référence
Nous stockerons dans cette table
trois types d'informations
© La clé d'accés, identifiant chaque
enreqistrement du fichier de don-
nées et permettant d'y accéder di-
rectement (le nom dun client, un
numéro de dossier...). La longueur
de cette clé sera fixe, bornée ou
quelconque, au choix du program-
meur. De plus, les “homonymes”
(plusieurs clés identiques) seront
acceptes,
Des informations “annexes”. sous
forme d'un certain nombre d'oc
tets pouvant servir de criteres pour
des recherches rapides dans la
table (numéro de département,
codification de situation de fa-
mille...)
L'adresse de l'enregistrement cor
respondant @ la clé dans le fichier
de données. Ge dernier est un fi-
chier a accés direct DOS 3.3 stan-
dard. Dans la table de référence,
cette adresse occupera deux octets
(ceci autorise des adresses de 0 a
65535, ce qui est plus que suffi-
sant),
Un élément de la table de référence
se présentera donc de la facon sui-
vanle
— Longueur totale “clé | informa-
tions annexes” : 1 octet
— Longueur de la clé seule : 1 octet
— Clé d'accés ; N1 octets
— Informations annexes : N2 octets
— Adresse de lenregistrement cor-
respondant : 2 octets
Gestion de la table de référence
Pour utiliser les pistes du DOS, il faut
y accéder directement par la célebre
routine RWTS, qui permet de lire ou
d’écrire un secteur quelconque de la
disquette, soit 256 octets.
La table de référence sera donc dé-
coupée en un certain nombre de sec
teurs, 48 (316) au maximum si l'on
utilise les trois pistes du DOS, numé-
rotés de 0 4 47. Nous appelerons
NN le numéro du demier secteur de
cle exploitable.
Sieveiety
DOS 3.3
Gérard Michel
L'appel a RWTS se fera a partir du
programme Applesoft de traitement,
tandis qu'une petite routine en as-
sembleur s‘occupera de la recherche
dune clé donnée 4 I'intérieur d'un
secteur de clés chargé en mémoire
dans un buffer.
Une telle recherche est toujours plus
rapide lorsque les clés sur lesquelles
elle porte sont classées dans un ordre
quelconque. en loccurrence dans
ordre des codes ASCII des caracté-
res composant la clé. En revanche,
les opérations de classement sont gé-
néralement longues en regard des
délais d'attente acceptables dans le
cours de l’exploitation normale du fi-
chier et il est donc préférable de les
séparer de cette demiére.
On peut ainsi se trouver, 4 un instant
donné, avec deux types de secteurs
de clés :
© Des secteurs de clés classées, dans
lesquels la recherche sera plus ra-
pide. Nous appelerons NZ le nu-
méro du dernier secteur de clés
classées, avec NZ compnss entre 0
et NN
© Des secteurs de clés “en vrac™,
placés a la suite des premiers.
dans lesquels les nouvelles clés
ont été stockées simplement dans
ordre chronologique de leur en-
trée en machine La recherche
sera évidemment plus lente sur
ces secteurs, mais on eévite ainsi
dimposer 4 [utilisateur un délai
de classement a chaque nouvel
enregistrement. La vanable TT
contiendra le numéro du demier
secteur de “vrac”: TT est donc
compris entre NZ+1 et NN. Des
que TT atteint NN+1, la capacité
de stockage des clés est saturée.
Un petit programme, indépendant
des programmes de traitement pro-
prement dits, permettra l'utilisateur
de reclasser les clés en vrac a l'inté-
nieur des clés classées et de reconsti-
tuer une table de référence compo-
sée uniquement de secteurs de clés
classées, Cette opération sera par
conséquent réalisée sur l'initiative de
lutilisateur, avant de procéder a un
listage du fichier, par exemple. ou
dés que les temps de recherche sont
trop détériorés par le nombre de clés
“en vrac” a explorer.
En ce qui concerne les clés classées
et dans la mesure ot la recherche
porte sur un secteur a la fois, il est
bon de savoir si possible quel est
21
5
se
celui qu'il faut charger de préférence
en meémoire. c'est-a-dire celui dans
lequel on aurait une chance de trou-
ver la clé qui nous intéresse. Pour ce
faire, on conservera dans un tableau
NS(NN) la derniere cle de chaque
secteur classé : N$(0) contiendra DU.
PONT si DUPONT est la derniére cle
stockée dans le secteur 0, et ainsi de
suite. Si l'on cherche une clé quel-
conque XXXXXX, on lira en meé-
moire le dernier secteur S pour le-
quel XXXXXX <= N$(S). Si aucun
secteur classé ne répond a cette
condition, on cherchera alors en se-
quence dans les secteurs de vrac, et
de méme si l'on ne trouve pas dans
le secteur classe potentiel S.
Fichiers manipulés
Notre systéme de table de référence
ne peut gérer qu'un seul fichier de
données par disquette. Par contre,
d'autres fichiers de toutes sortes peu-
vent étre utilisés conjointement en
DOS 3.3. standard. En_ particulier,
deux petits fichiers annexes sont né-
cessaires a la gestion du systéme
© Un fichier contenant les paramé-
tres de la table de référence ; der-
nier secteur classé (NZ), dernier
secteur “en vrac” (TT). derniére
adresse attribuée 4 un enregistre-
ment (NF), premier octet libre
dans le secteur de vrac en cours
(OO), statut de la table vis-a-vis
du classement (IC. qui vaut 0 si
tout est classé, 1 si on a a la fois
du vrac et du classé, 2 si rien n'est
classé). Ce fichier est baptisé FP.
Un fichier contenant les adresses
éventuellement libérées par des
annulations d'enregistrements, et
baptisé PI_
Analyse du programme
de démonstration
Il sagit d'un programme classique de
gestion de fichier, permettant la créa-
tion, la modification, la consultation,
Yannulation et la liste d’enregistre-
ments. Son étude nous aidera a
comprendre la mise en oeuvre du
systeme
Principales variables
e AR: adresse de début de la rou-
tine en langage-machine de re-
cherche dans un secteur.
@ ADR: adresse de début de la
zone ot la routine-machine sto-
ckera les adresses des enreqistre-
ments dont la clé correspond A
celle que l'on cherche.
© CLE: adresse du debut de la zone
ou le programme POKFra la clé
recherchée.
© ASYO: adresse du debut de la
zone oti la routine-machine sto-
ckera les positions dans le secteur
des clés correspondant a celle que
l'on cherche
BU: adresse du début du buffer
en mémoire utilisé par RWTS
pour lire ou écrire un secteur,
e@ LC. adresse ot sera POKée la
lonqueur de la clé cherchée.
© RES. résultat de la recherche, soit
0 si l'on n'a pas trouve, et le nom-
bre de clés égales a celle cherchée
dans le cas contraire.
¢ ABL. indicateur de fin de secteur,
positionné par la routine-machine
Si on trouve effectivement une clé
{au moins) correcte, mais que
celle-ci est également la demiere
d'un secteur, la routine mettra 1
dans [adresse correspondant a
ABL. En effet. dans les clés clas-
sées, rien n'interdit que l'on ait un
MARTIN. par exemple. a la fin du
secteur 3. mais aussi d'autres
MARTIN au début du secteur 4.
Si ABL vaut 1. il faudra donc exa-
miner le secteur suivant pour véri-
fier s'il n'y a pas d'autres clés pos
sibles
© IO: adresse de début de la table
IOB pour RWTS,
@ AA. longueur des informations
annexes qui seront également sto-
ckées dans la table.
¢ DT: adresse de début de la table
DCB pour RWTS.
@ RWTS~ adresse de la routine
d'appel de RWTS (voir manuel du
DOS 33 pour utilisation de
RWTS).
e@ N° numéro du secteur courant sur
lequel on lit ou écrit
© C: commande pour RWTS, soit 1
pour une lecture et 2 pour écri-
ture
Fonctionnement du programme
Le programme manipule un fichier
de données DON 4a aceés direct,
dont la longueur des enregistrements
est fixée & 100. Il commence par une
phase diinitialisation, suivie de sous-
routines, et l'essentiel des traitements
téalisés porte sur la gestion de la
table de référence et du fichier Fi-
chiers et programmes sont en outre
places sur la méme disquette, qui ne
sera donc exploitable que si le DOS
a déja été chargé a partir d'une autre
disquette
~ Lignes 2 a 13: initialisation. On
définit la valeur des différentes adres-
ses qui assurent le passage de para-
metres entre le programme Applesott
et la routine-machine de recherche
de clé (ADR, CLE, ASYO, LC...). On
fixe egalement l'adresse d’implanta-
tion de la routine (AR). Cette der-
nigre est relogeable a ceci pres
qu’elle utilise des tableaux (ADK,
CLE et ASYO) dont on veut pouvoir
faire varier la taille et l'adresse de
début en fonction des besoins, mais
dont les adresses ont été données de
maniére absolue a l'assemblage de la
routine, C'est pourquoi la ligne 13
remet dans le code machine, aux en-
droits 08 elles doivent apparaitre, les
adresses réelles correspondant a4
ADR, CLE et ASYO.
Dans notre exemple, les trois ta-
bleaux sont a la suite les uns des
autres a partir de l'adresse $9100, et
Yon suppose qu'il n'y aura pas plus
de 8 homonymes par secteur (ADR
occupe 16 octets, soit 2 par adresse
retenue, et ASYO en prend 8)
A la ligne 4. on fixe l'adresse de la
table IOB et on la constitue en reco-
piant celle du DOS, qui débute en
47080. Pour que la table soit cohé-
rente, il faut donc que le dernier lec-
teur utilisé juste avant cette copie soit
bien celui dans lequel se trouve la
disquette du fichier. Ensuite, on indi-
que dans la table IOR l'adresse de
notre table DCB et on POKE dans
cette derniére les valeurs attendues
pour nos lecteurs 140K
En ligne 5, on implante a l'adresse
768 la routine d’appel 4 RWTS. Les
valeurs 148 et 0 qui suivent respecti-
vement 169 (code de LDA) et 160
(code de LDY) correspondent au
poids fort et au poids faible de
T'adresse de début de la table IOB
(IO). Dans notre exemple, le poids
fort vaut $94. soit 148 en décimal. et
le poids faible vaut 0. Vous auriez
donc a modifier ces deux valeurs si
vous vouliez modifier l'adresse de la
table IOB.
Il est possible d’employer toute cette
partie diinitialisation en modifiant
implantation selon les besoins. Il
suffit pour cela de donner les valeurs
qui vous conviennent aux variables
concernées : AR, ADR, CLE, ASYO,
BU, 10 et les deux octets correspon-
dant a l'adresse IO dans les DATA
de la routine d’appel a RWTS.
— Lignes 15 et 20: lecture des
deux fichiers annexes et branche-
ment au programme de traitement
qui débute 4 la ligne 100.
— Lignes 50 et 60: recherche du
secteur classé dans lequel la clé cher-
chée pourrait éventuellement se trou-
ver, Si la dé est supérieure a toutes
celles déja classées, N correspond au
premier secteur de vrac, soit NZ+1
~ Lignes 65 et 70 : conversion du
numéro de secteur en adresse physi-
que sur disquette (piste P / secteur
S), puis lecture du secteur en mé-
moire.
— Lignes 80 4 86: sous-pro-
gramme d’appel a la routine machine
de recherche et exploitation de ses
résultats. Lecture du secteur N
(GOSUB 65) et appel par CALL AR.
En retour, on a le résultat de la re-
cherche (R) et la valeur de I'indica-
teur de fin de secteur (BL =
PEEK(ABL)). Si ZC$, qui contient la
clé cherchée, est égal a la derniére
Pom's n° 15
clé du secteur N§(N) et que la re-
cherche donne malare cela un résul-
tat nul (R=0), c'est que cette clé
N$(N) a été annulée depuis le der-
nier reclassement. Dans la mesure ot
une clé identique pourrait se trouver
au début du secteur classé suivant,
on met R a 1 afin daller examiner
celui-ci (voir plus loin les lignes 300 a
500).
En ligne 82, on élimine les cas ou
BL pourrait donner une indication
fausse, c’est-a-dire si l'on a examiné
le dernier secteur classé alors que
tout est classé, ou si l'on a examiné
le dernier secteur de vrac s'il y en a
(IC>0).
Les lignes 83 et 84 correspondent a
la lecture et & I'affichage (GOSUB
90) de tous les enregistrements dont
la clé est égale A celle que l'on cher-
che. A chaque affichage, on de-
mande a lutilisateur “EST-CE LE
BON ?”; une réponse affirmative
confirme que l'on a bel et bien
trouvé, ce que O=1 indiquera par la
suite.
Si aucun enregistrement n’est le bon,
on prend en compte, comme en 80,
léventualité d'une annulation de la
derniére clé du secteur (ligne 85). A
Yissue de la ligne 86, R sera nul ou
non selon que BI. vaudra 0 ou non
(BL > 0 signifie toujours qu’un ho-
monyme peut encore se trouver au
début du secteur suivant celui que
Yon vient d’examiner)
— Ligne 90: lecture et affichage
d'un enregistrement du fichier DON
d'adresse A. Ligne 95: pose une
question 4 réponse "O” ou "N”
Ligne 98: écriture d'un enregistre-
ment du fichier DON d’adresse A.
~ Lignes 120 4 130: introduction
de la clé au clavier, puis POKEs aux
adresses nécessaires pour la routine-
machine. La longueur de la clé est
quelconque, a la seule réserve prés
qu'elle ne doit pas excéder les capa-
cites du systéme de gestion des clés.
— Ligne 200 : NZ=~—1 si on est 4
la toute premiére utilisation du pro-
gramme (voir plus loin linitialisation
dune disquette fichier). Inutile done
de chercher dans ce cas, et le pre-
mier secteur de vrac a constituer est
le secteur 0 de la piste 0.
~ Lignes 300 4 500 : appel et ex.
ploitation de la sous-routine 80-86
en fonction du statut du systeme vis-
a-vis du classement (IC). Aux numé-
ros de lignes prés, cette partie pour-
rait tre utilisee sans changements
dans tout autre programme.
— Lignes 700 4 740: mise en
place des éléments d'une nouvelle
cle dans le secteur de vrac courant.
Les trois octets d’informations an
nexes sont donnés par les trois der-
niers éléments du tableau ZY$.
Pom's n° 15
On calcule d’abord la longueur totale
LT. Chaque cle occupe LT octets,
plus 2 pour les deux longueurs sto.
ckées, plus 2 pour Il'adresse de l'en-
registrement; elle sera en outre suivie
d'un 0 lors de son entrée dans le
secteur, afin de marquer la fin des
données utiles pour ce dernier. Il faut
donc LT+5 octets libres dans le sec-
teur courant pour y mettre notre
nouvelle clé, ce que l'on verifie tout
dabord_ Si tel n'est pas le cas, il faut
“ouvrir” un nouveau secteur de vrac,
dans la mesure ot le nombre de
pistes disponibles le permet (lignes
710 et 715).
On peut ensuite POKEr les octets et
mettre a jour la position du premier
octet libre dans le secteur (OO). Par
précaution, le secteur ainsi modifié
est aussitét recopié sur disquette
(C=2 : GOSUB 65)
Lignes 820 et 840 : modification
dans la table de reference. SB donne
la position dans le buffer du premier
caractére de la clé sélectionnée, posi-
tion qui a été indiquée par la routine-
machine. On remplace done les in-
formations annexes éventuellement
modifiges avant de ré-ecrire le sec-
teur.
— Ligne 980: pour marquer |'an-
nulation d'une clé, on remplace son
premier caractére par un UV, ce qui
garantit qu'elle ne sera pas retrouvée
par la routine de recherche. Par
contre, sa disparition effective de la
table ne sera réalisée qu’ l'issue du
reclassement,
— Lignes 2000 a 2999 ; fin et sor-
tie du programme.
— Lignes 3000 a 3070 : liste et affi-
chage des enregistrements dont les
cles sont actuellement classées. On lit
successivement les secteurs depuis
N=0 jusqu’é N=NZ (sauf si l'utilisa-
teur arréte avant). Dans chacun de
ces secteurs, on récupére les don-
nées de chaque clé non annulée
(PEEK (BU+SB) <> 0). on lit l'en-
registrement correspondant et on |'af-
fiche & l'écran.
Programmes annexes
Initialisation d'une
disquette “fichier”
Vous pouvez utiliser un programme
comparable au programme INIT listé
ci-apres, afin de donner aux paramé-
tres du systéme les valeurs correctes
pour une toute premiere utilisation
Cest dans un tel programme que
vous pouvez par ailleurs réserver plus
de 3 pistes pour votre table de réfe-
rence. Pour disposer de N_ pistes,
faites un "POKE 44723, 4*N” avant
la commande INIT, puis "POKE
44723, 12” juste aprés pour rétablir
le standard du DOS. Pour N pistes,
le dernier secteur de clés accessible
sera NN = 16*N — 1
Classement des clés
Lessentiel du travail est réalisé par
une routine-machine, appelée (CALL
4096) par le programme Applesoft
baptisé CLAS, Ce programme fournit
a la routine les paramétres nécessai-
res
© AC: adresse mémoire a partir de
laquelle seront chargés en sé-
quence tous les secteurs de clés
classées.
e AN: adresse a partir de laquelle
seront chargés en séquence tous
les secteurs de vrac.
© L’adresse du buffer qui sera utilisé
pour reconstituer les secteurs clas-
sés et les écrire sur disquette est
POKée en 24 (poids faible) et 25
(poids fort).
e Le statut par rapport au classe
ment (mixte “classé/vrac” ou “rien
de classé”) est POKé en 214.
@ PC et SC donnent I’adresse sur
disquette du demier secteur de
clés classées. tandis que PF et SF
donnent le méme renseignement
pour le dernier secteur de vrac.
Au retour de la routine, le pro-
gramme récupére les paramétres du
systéme reclassé et constitue notam-
ment le tableau N$ des demieres clés
de chaque secteur.
Tel qu'il vous est présenté, le pro-
gramme suppose que la disquette fi-
chier se trouve dans le lecteur S6-D2
au moment de son lancement. Si
vous voulez utiliser avec une dis-
quette dans le lecteur S6-D1, rajou-
tez "POKE 5357,1” aprés le charge-
ment de la routine CLAS.OBJ.
A noter que le fonctionnement de la
routine-machine suppose que l'on
Ppuisse charger tous les secteurs de
cles en meme temps dans la me-
moire centrale Le buffer utilisé, juste
au-dessus de la routine elle-méme,
va de $1500 a $15FF, soit 5376 4
5631. Le nombre maximum de sec-
teurs autorisé est done ; INT((38400
— 5631) / 256), soit 128, de 0 a
127, ou encore 8 pistes completes,
ce qui fait déja beaucoup, bien qu'il
soit difficile de savoir combien d’oc-
tets sont perdus a la fin de chaque
secteur du fait qu'on ne peut pas
toujours y stocker un nombre rond
de clés. Si on suppose par exemple
que toutes les clés sont formatées a
15 caractéres, plus 4 octets d’infor-
mations annexes, ce qui représente
donc 15+4+4 octets par élément de
la table, on pourrait gérer par ce sys-
téme un fichier de plus de 1400 en-
registrements, si la place disponible
sur le reste de la disquette le permet.
Sur ce dernier point, ajoutons encore
que, bien que cela soit sans doute
moins pratique, rien ne s'opppose a
ce que la disquette du fichier de don-
Pha
a)
ene
&
EE LAAT
23
nées se trouve dans un lecteur et
celle de sa table de référence dans
un autre. Dans ce cas, il faut songer
& appeler le lecteur contenant la dis-
quette “table” avant de recopier la
table IOB du DOS dans le pro-
gramme de traitement (voir ligne 4
du programme de démonstration)
En outre, il sera bon de prévoir une
boucle d’attente avant ’écriture ou la
lecture des secteurs de cles par
RWTS. car le passage trop rapide
d'un lecteur 4 l'autre peut générer
des erreurs du type “lO ERROR™
(dans notre programme de démons-
tration, l'ajout d'une boucle "FOR
2=1 TO 100: NEXT™ a la fin de la
ligne 65 ferait l'affaire)
Par ailleurs, si les secteurs sont nom-
breux et les clés lonques, il peut ne
pas y avoir assez de place sous le
“HIMEM:4095” pour constituer le ta-
bleau N$ sans écraser le programme
de classement. Il faudrait alors modi-
fier ce dernier afin d’écrire les demnié-
tes clés de chaque secteur dans le fi-
chier FP au fur et 4 mesure de leur
obtention, plutét que de les regrou-
per d'abord dans un tableau en me-
moire
Routines en assembleur
Nous vous laissons le som d’en
conduire une analyse détaillée a
l'aide des commentaires qu’elles
comportent et nous bornerons ici a
indiquer leurs principes généraux de
fonctionnement
Routine de recherche dans un
secteur
Afin d’appliquer la méme démarche
aux clés classées ou en vrac, la rou-
tine n’utilise aucun algorithme de re
moire et compare chaque octet
d'une cle a l'octet de méme rang de
la clé recherchée. Elle ne passe a la
clé suivante, en considérant que la
comparaison a @choué. que si un
octet différe (test BNE) ou si tous les
octets sont identiques mais avec une
difference entre la lonqueur des deux
clés comparées.
Routine de classement
Elle se charge de la lecture en mé-
moire de tous les secteurs de clés,
classées ou non. Le principe utilisé
en alors le suivant
e Rechercher la plus petite cle du
vrac, la mettre dans une zone a
part et signaler le fait en rempla-
gant sa longueur par $FF dans son
enregistrement
® Prendre la premiere clé classée et
la comparer a la plus petite du
vrac. Les données de la plus petite
des deux sont copiées dans le buf-
fer alloué a la constitution de sec-
teurs classés. Dés que ce buffer est
plein, on I'écrit sur la disquette en
notant la toute demiére cle qu'il
contient. et on passe au secteur
suivant en repartant au début du
buffer
Si la plus petite est une clé clas-
sée, on refait ensuite la comparai-
son avec la clé classée suivante. Si
cest la clé “vrac” qui a été mise
dans le buffer, on va chercher la
nouvelle plus petite clé du vrac et
on reprend la comparaison avec la
méme clé classée.
© A l'occasion de ces operations, les
clés annulées ne sont pas prises
en compte et ne sont jamais re-
portées dans le buffer. Elles dispa
taissent donc de la table de réfé-
Ton a ainsi transféré dans le buffer
et ré-écrit sur disquette dans des
secteurs classés toutes les clés qui
étaient deja classées et toutes les
nouvelles clés précédemment sto-
ckées en vrac
Conclusion
Ce systéme de gestion de fichiers
nous semble présenter des points po-
sitifS qui peuvent justifier son emploi
dans certaines de vos applications
— Movennant un reclassement pério-
dique de la table de référence, les
temps d'accés aux enregistrements
sont tres acceptables. méme sur des
fichiers de taille conséquente
— Avant de commencer a “travail-
ler”. il nest pas nécessaire d'attendre
que se charge en mémoire. a partir
d'un fichier important, une table de
reference sous forme de tableau Ap-
plesoft. La lecture des fichiers an-
nexes FP et PL ne représente plus
qu'un délai d’attente minime.
~ La mémoire centrale n'est pas en-
combrée par la table de référence
des enregistrements. d’oi gain de
place pour vos programmes et réduc-
tion des problemes de “nettoyage
memoire
En revanche, exploitation de cette
méthode dans vos traitements est
sans doute plus complexe qu'une
gestion uniquement réalisée sous
“DOS 3.3 + Applesoft”. Nous espé-
tons cependant que |'analyse du pro:
gramme de démonstration, dont les
Parties principales peuvent étre repri-
ses 4 quelques adaptations pres pour
d'autres programmes, vous permettra
de trouver dans cet article une aide
efficace pour vos problemes de fi-
chiers
cherche. Elle traite en séquence rence.
toutes les clés du secteur lu en mé- —_@ Le classement est termine lorsque a
Programme TEST ,0C: NEXT : DATA 169,148,146
0,0,32,217,3,96
1 HIMEM: 9 # 4096 - 1 10 D8 = CHR® (4):D1$ = CHRS (13) +
2 AR = 9 * 4094:ADR = 9 * 4096 + 25 CHRS (4); PRINT D$"BLOAD REC.
6:CLE = ADR + 16:ASYO = CLE + OBJ,A‘AR:RUS = DIi% + *PRHO*:NN
256:HS = INT (ASYO / 256):LS = = 47: DIM NS<NND
ASYO - 256 * HS:HD = INT (ADR 13° POKE AR + 21,LL: POKE AR + 22,H
¢ 256):LD = ADR - 256 * HD:HL L: POKE AR + 59,LD: POKE AR +
= INT (CLE / 256):LL = CLE - 60,HD: POKE AR + 66,LD: POKE A
256 * HL R + 67,HD: POKE AR + 42,LS: POKE
3 LC = 6:BU = 9 * 40976 + 5 * 256:HB AR + 43,HS
= INT (BU / 256):LB = BU - 2 15 PRINT D®"OPEN FP"; PRINT D®"REA
Sé * HB: POKE 8,LB: POKE 7,HB D FP": INPUT NZ,NF,1TT,00,IC: FOR
4 RES = 26:ABL = 29:10 = 9 * 4096 + I = 0 TO NZ: INPUT N®C(I)>: NEXT
256 *# 4:AA = 3: FOR 1 = 0 To1 2 PRINT D$"CLOSE": DIM PL%¢20)
6: POKE 10 + I, PEEK (47080 +
1): NEXT :0T = 10 + 17:DH = INT 20 TEXT : HOME : PRINT D$"OPEN PL"
(DT / 256):DL = DT - 256 * DH: 2? PRINT D$"READ PL*: INPUT PL:
POKE I0 + 6,0L: POKE 10 + 7,0 FOR I = 1 TO PL: INPUT PLZ%CI)
Hz POKE IO + 17,0: POKE IO + 1 : NEXT : PRINT D®"CLOSE": PRINT
8,1: POKE 10 + 19,239: POKE 10 OS"OPEN DON,L100*: PRINT RUS: GOTO
+ 20,216 100
SPOKE [0 + 3,0:RWIS = 768: FOR I = SO FOR! = 0 TONZ: IF 28 ¢ = NS&
0 TO 7: READ OC: POKE RWTS + I I) THEN N = I:I = NZ: NEXT : RETURN
A~REEEEE =a
24 Pom’s n° 15
60
65
75
80
81
82
83
84
85
90
95
96
98
100
110
m5
120
125
130
200
210
300
305
310
315
320
400
410
420
430
490
450
460
Po
NEXT
P=
iN = NZ + 1: RETURN
INT (N / 16):S = N - 16 * P
POKE I0 + 4,P: POKE IO + 5,S: POKE
10 + 9,HB: POKE IO + 8,LB: POKE
10 + 12,C: CALL RWTS: RETURN
PRINT : INVERSE PRINT ZM$;: NORMAL
: GET 2%: PRINT : RETURN
C = 1: GOSUB 45: CALL AR:R = PEEK
CRES):BL = PEEK (ABL):RI = O:
O = 0: IF R = 0 AND Z2CS% = NS(N
> AND N ¢ NZ THEN R = 1: RETURN
IF R = 0 THEN RETURN
IF <N = NZ AND IC ¢ 2) OR (TT =
N AND IC > 0) THEN BL = 0
J = 2 # RI:A = PEEK (ADR + J) #
256 + PEEK (ADR + J + 1): GOSUB
MS = “EST-CE LE BON GOSUB
IF OS = *O* THEN RI = RI +
1:0 = 1; RETURN
RI = RI + 1: IF RI <¢ = R—- 1 THEN
33
IF 2C% = NS<(N) AND N < > NZ THEN
R = 1: RETURN
R= R * BL: RETURN
PRINT DS*READ DON,R“A: FOR I =
Q TO 6: INPUT Z2Y$(I): NEXT :
RUS: PRINT : VTAB 12: FOR I =
0 TO 6: PRINT * “3ZYSC1)31 CALL
~ 868: PRINT : NEXT : PRINT =:
RETURN
PRINT : INVERSE :
: INPUT " ? °;0%
O* THEN OS = "N*
RETURN
PRINT DS*WRITE DON,R*A:
0 TO $6: PRINT 2Y$<I>s NEXT 3+
DS"PRHO*: RETURN
HOME : PRINT "1
"2 - MODIFICATION’:
CONSULTATION": PRINT “4 — ANN
ULATION": PRINT "5S - LISTE": PRINT
"6 - FIN": PRINT +: INPUT "VOTR
E CHOIX : *;CH: IF CH < 1 ORC
H > 6 THEN 100
PRINT
PRINT 2M$;; NORMAL
IF O8 <¢ > *
FOR I =
PRINT
- CREATION": PRINT
PRINT "3 -
IF CH = 6 THEN 2000
IF CH = 5 THEN 3000
VTAB 10: HTAB 1: INPUT “CLE ?
"32%: IF 26 = ** THEN 100
zcs = Z$: IF LEN (2%) > (250 -
AA) THEN 120
L = LEN (2@): POKE LC,L: FOR I
= 1 TOL: POKE CLE + I - 1, ASC
€ MIDS (2%,1,1)): NEXT
IF NZ = —- 1 THEN R = O:P = O:
S = 0: GOTO 600
cl = IC + 1: ON CI GOTO 300,400
+500
GOSUB 50: IF N <¢ = NZ THEN 31
oO
N = TT:C = 1: GOSUB 65:R = 0: GOTO
600
GOSUB 80: IF R = 0 THEN 305
IF 0 = 1 THEN 400
N=N * 1: GOTO 310
GOSUB 50: IF N > NZ THEN 440
GOSUB 80: IF O = 1 THEN 400
IF R = 0 THEN N = NZ + 1: GOTO
440
N=N + I: GOTO 410
GOSUB 80: IF O = 1 THEN 600
IF N = TT THEN 400
N=N + 1: GOTO 440
vs n° 15
500 N = 0: GOTO 440
600 ON CH GOTO 450,800,900,950
650 VTAB 8: HTAB 20: PRINT “CREATI
ON *:; IF 0 = 1 THEN 800
660 UTAB 12: HTAB 1: FOR I = 0 TO
6: INPUT ZY$¢I): NEXT : IF LEN
(ZY¥$(4)) > 1 OR LEN (ZY8¢5)) >
1 OR LEN (2Y$(4)) > 1 THEN 66
oO
670 IF PL ¢ > O THEN A = PLAZCPL):
PL = PL - 1: GOTO 4690
680 NF = NF + 1:A = NF
670 GOSUB 98
700 LT = tL + AA: IF OO + LT*+ SC =
255 AND TT < NN + 1 THEN 720
710 TT = TT + 1:00 = O: IF TT > NN THEN
2M$ = "PLUS DE PLACE": GOSUB 7
S:TT = NN + 1; GOTO 100
715
720
N = TT:C = 1: GOSUB 65
28 = BU + OO: POKE 28,LT: POKE
ZB + i,L: FOR I = 1 TO L: POKE
zB + 1+ 1, PEEK (CLE + I - 1)
: NEXT =: FOR I = 4 TO 6: POKE
2B +L + I - 2, ASC (ZYSCI)): NEXT
725 POKE 2B + LT + 2, INT (A / 256
>: POKE ZB + LT + 3,A - 256 *
INT (A / 256): POKE ZB + LT +
4,0
730 00 = 00 + LT + 4:C = 2: GOSUB 6
S:IC = 1 + (IC = 2): IFNZ= -
1 THEN NZ = 0
740 GOTO 100
800 VTAB 8: HTAB 20: PRINT "MODIFI
CATION *
810 IF R = 0 THEN ZMS = “N’EXISTE
PAS": POKE 34,9: HOME : TEXT :
GOsUB 75: GOTO 100
815 VTAB 12: HTAB 1: FOR I = 0 TO
6: INPUT ZY$(I): NEXT : IF LEN
(ZY¥$(4)) > 1 OR LEN (2Y#¢(5>> >
1 OR LEN (ZY$¢6>> > I THEN 81
5
820 GOSUB 98:SB = PEEK <ASYO + RI
ee
840 FOR I = 4 TO 6: POKE BU + SB +
L +1 - 4, ASC (2Y$¢1>>s NEXT
1C = 2: GOSUB 65: GOTO 100
900 VTAB 8: HTAB 20: PRINT "CONSUL
TATION ": IF R = 0 THEN 810
9710 VTAB 22:ZMS = “APPUYEZ SUR UNE
TOUCHE": GOSUB 75: GOTO 100
950 VTAB 8: HTAB 20: PRINT “ANNULA
TION "3: IF R = 0 THEN 810
955 PL = PL + 1:PLY(PL) = A
960 SB = PEEK (ASYO + RI - 1)
980 POKE BU + SB,0:C = 2: GOSUB 65
: GOTO 100
2000 PRINT Di#"CLOSE*: PRINT 0S"OP
EN FP*: PRINT OS°WRITE FP": PRINT
NZ: PRINT NF: PRINT TT: PRINT
00: PRINT IC: FOR I = 0 TO N2:
PRINT NSCI): NEXT : PRINT DS"
CLOSE"
2010 PRINT D®*OPEN PL": PRINT D$*W
RITE PL": PRINT PL: FOR I = 1 TO
PL: PRINT PL%CI)1 NEXT : PRINT
DS" CLOSE"
2999 END
3000 N = 0
3010 C = 11 GOSUB 65:SB = 2
3020 Li = PEEK (BU + SB - 2): IF L
1 > 0 THEN 3050
3030 N= N+ 1: IF N ¢ = NZ THEN 3
o10
3040 GOTO 2000
3050 L2 = PEEK (BU + SB - 1):2% =
IF PEEK <BU + SB) = 0 THEN
SB = SB + LI + 4: GOTO 3020
3055 FOR I = 0 TOL2 - 1:26 = 28 +
CHRS ¢ PEEK (BU + SB + 1)): NEXT
1A = 256 * PEEK (BU + SB + LI
> + PEEK (BU + SB + LI + 1): UTAB
101 HTAB 13 PRINT 2$;: CALL —-
868: PRINT :SB = SB + Li + 4
3060 GOSUB 90: GET 2%: IF 2% = "S*
THEN 2000
3070 PRINT : GOTO 3020
Programme CLAS
S HIMEM: 4095
7 DIM NSC47)
10 DS = CHRS (4): PRINT D®"BLOAD C
LAS.OBJ*": PRINT DS*OPEN FP"; PRINT
DS"“READ FP": INPUT NZ,NF,TT,0O
,Il: FOR I = 0 TON: INPUT NS
«I>: NEXT = PRINT DS*CLOSE":AA
=3
A 20 #%XIF Il = 0 THEN END
= 25 N2 = N2 + 1:TT = TT +1
30 AC = 38400 - 256 * NZ:AN = AC -
(CTT - NZ) * 256): POKE 6,0: POKE
7,AC / 256: POKE 8, POKE 7,A
N 7 256: POKE 24,0: POKE 25,21
: POKE 214,11 - 1
33 POKE 26,0: POKE 28,0
35 NZ = NZ - 1:TT = TT - 1
40 PC = INT (NZ / 16):SC = NZ - 16
* PC:PF = INT (TT Z 16):SF =
TT - 16 * PF: POKE 30,PC: POKE
31,SC: POKE 206,PF: POKE 207,S
F
30 CALL 4096: FOR I = 0 TO NZ:NS<T
>= "*3 NEXT
60 P = PEEK (235):S = PEEK (236)1
NZ = (P # 16) + S — I: FOR I
0 TO NZ:B = PEEK (768 + 2 #
2:SY¥Y = PEEK (769 + 2 * 1>:B
B® 256 + SYiJ = O:L = PEEK
B- 2) - RA
70 NS(I> = NSCI> + CHRS ¢ PEEK (B +
Jost = J + 1: IF J ¢ L THEN 7
0
80 NEXT :TT = NZ + IsII = 0:00 = 0
: PRINT : PRINT DS$*OPEN FP": PRINT
DS"WRITE FP": PRINT NZ: PRINT
NF: PRINT TT: PRINT OO: PRINT
II: FOR I = 0 TO NZ: PRINT NSC
1): NEXT : PRINT DS*CLOSE*: PRINT
Os"PRHO*
Programme INIT
5 NN = 47
10 D® = CHR® (4): PRINT DS*INIT H
ELLO": PRINT DS"OPEN FP": PRINT
D®*WRITE FP*: PRINT —- 1: PRINT
QO: PRINT 0: PRINT 0: PRINT 2:
2$ = "*: FOR I = 0 TO NN: PRINT
2@: NEXT
20 PRINT D®*OPEN PL": PRINT O$*WR
ITE PL": PRINT O: PRINT 0: PRINT
DS®"CLOSE": PRINT DS*PRHO*
Programme REC.SCE
RECHERCHE D’UNE CLE
(LISA 1.5)
CODE = REC.OBJ
Preetrrrrrrrererrerrrrrrrrrrrre ss
i
ORG $7000
ops 800
Le EPZ 36
DE LA CLE
HK Ovavauswn=
n
DU BUFFER
Lc2 EPZ $18
DE LA CLE LUE DANS LE BUFFER
14 LT2 EPZ $197
TOTALE CLE LUE DANS BUFFER
o
15 RES EP2 $1A ;RESULTAT
RECHERCHE/NBRE CLES POSSIBLES
16 SY EPZ $1B 3;POSITION
CLE TROUVEE DANS SUFFER
17 ABL EPZ $10 jORAPEAU
“FIN DE BUFFER"
18 LOX #0
19 STX RES
20 STX ABL
21 LOY #0
CLE DU BUFFER
22 LDA CINB),Y
26
Perec ert cree rere rer eet rere errors.
; LONGUEUR
INB Epz $8 jADRESSE
;LONGUEUR
;LONGUEUR
23 'S2 STA LT2
24 INY
25 LOA CINB),Y
25 STA LC2
27 INY
23 STY SY s;POSITION
DEBUT DE CLE
2? SO LDA CLE,x 3COMPARAT
SON CLE/CLE DU BUFFER
30 CMP (INBD,Y
3t BNE S3
32 INX
33 INY
34 cPx LC 3FIN DEL
A CLE ?
35 BNE SO
36 CPx LC2 j;MEME LON
GUEUR QUE CLE DU BUFFER ?
37 BNE S3
38 LDX RES
37 LOA SY
40 STA SYO,x 3;POSITION
CLE POSSIBLE DANS BUFFER
a LDA RES
42 S1 INC RES
43 ASL
44 TAX jX=2*A
45 LDA SY
46 cic
47 AOC LT2
48 TAY
49 LDA CINB),Y 3 STOCKAGE
Pom's n° 15
ADRESSE DE L’ENREGISTREMENT
50 STA ADR,X
Si INY
52 INX
53 LDA CINB>,Y
54 STA ADR,x
35 LOX #0
56 INY
57 LDA ¢INB),Y
38 BNE S2 $1 O0
-> RESTE DES CLES A EXAMINER
5° LOA #1 jl DES CL
ES POSSIBLES EST EN FIN BUFFER
60 STA ABL jAUTRES P
OSSIBLES SUR SECTEUR SUIVANT
61 RTS
62 $2 LOx #0 jPASSAGE
@ LA CLE SUIVANTE
63 LDA sY ;DANS LE
BUFFER
$4 cLe
65 ADC LT2
66 ADC #2
6? TAY
68 LDA CINB),Y
69 BNE S2
20 RTS
71 ADR DFS $10 sADRESSES
DES ENREGISTREMENTS
72 CLE DFS $FF ;CLE RECH
ERCHEE
73 sy DFS $8 jPOSITION
S DES CLES POSSIBLES
74 DCM "INT"
75 END
Programme CLAS.SCE
Se idibtiiteeet nett Tet treet eee es
1
2 3*
2 5% ROUTINE DE RECLASSEMENT *
4 3* LISA 1.5) *
5S 3s CODE = CLAS.oBU *
6 5* *
Me bbbbibbbbebetteettLettt ttt tte
8;
? ORG $1000
10 oBJ $800
41 2¢ec EP2 $4 ;DEBUT 20
NE CLES CLASSEES
12 2cT EPZ $8 ;DEBUT 20
NE CLES "EN VRAC*
13 BUF EPZ $13 sADRESSE
DU BUFFER
14 2CCP EP2 $14 ;DEBUT zo
NES "DE TRAVAIL"
15 2CTP EPZ $1C 3;
16 PFC EPZ $1& 3PFC/SFC
= PISTE/SECTEUR DU
17 SFC EP2 $1F ;DERNIER
SECTEUR CLASSE
18 PFT EP2 $CE jPET/SFT
= PISTE/SECTEUR DU
19 SFT EPZ $CF ;DERNIER
SECTEUR "EN VRAC"
20 Ic EP2Z $06 sSTATUT C
LES/CLASSEMENT (0/1)
2E Lu EPZ $07 sLONGUEUR
“UTILE" DE LA CLE
22 P EPZ SEB 3P/S = PI
Pom's n° 15
23
24
26
27
2¢
29
30
3
32
33
34
35
36
3
338
3°
40
at
42
43
44
4s
46
4?
48
4?
So
51
S2
53
54
5S
56
57
338
5s?
60
61
62
63
64
65
66
67
638
6?
70
71
72
73
74
75
76
STE/SECTEUR POUR RWTS
$s —PZ SEC
Le EPZ $ED ;LONGUEUR
TOTALE DE LA CLE
2TPP EPZ SEE
LCT EPZ SEF sLONG. TO
TALE + PETIT CLE DU URAC
szc EPZ $F? s;POINTEUR
"FIN ZONE CLASSEE"
s2T EPZ2 $FA sPOINTEUR
“FIN ZONE VRAC”
syc EPZ $FB s;POINTEUR
“DEBUT CLE" DANS BLOC CLASSE
syco EPZ $FC 3;POSITION
+ GRANDE CLE DANS SON BLOC
LcT2 EPZ $FD ;LONG. TO
TALE D’UNE CLE DU VRAC
sYB EP2 $FE #POINTEUR
DANS BUFFER RECOPIE/DISQUETTE
CLEMAX EQU $300 3;STOCK. D
ERNIERE CLE/CHAQUE SECTEUR
sxc EP2 $FF ;POINTEUR
DANS LA ZONE
LDA #1 sINITIALI
SATION PARAMETRES POUR RWTS
LOX #3C
STA 108,x
LDA 2CT+1
STA ZCTP+1
LDA IC
BNE $7
RIEN N’EST CLASSE
Loa 2cc+1
NE “NON CLASSE"
STA ZCCP+1
LDA #0
STA P
sta Ss
Lox #8
SERVIRA POUR LA SUITE
STX CMINT
Loa 2cc
STA 10B,x
TNX
34 LDA zccP+1
DES PISTES CLASSEES
STA I10B,x
JSR RWTS
LDY P
LOx S$
CPY PFC
BNE Sl
CPX SFC
BEQ sso
si CPX HEF
BNE $2
INY
STY P
LOX #0
BEQ s3
s2 INX
$3 SsTx S$
INC ZCCP+1
LDX #9
JMP S4
INC ZCCP+1
DE ZONE
Loa 2CCP+1
STA Szc
$5 INX ; PASSAGE
AU PREMIER SECTEUR DU VRAC
CPX #810 3ET CALCU
L DES SECTEURS SUIVANTS
“CLEMAX"
jOEBUT 20
jCMINT<>0
jLECTURE
$50
FIN
;POINTEUR
27
28
77 BNE S6
738 INY
79 sTY P
80 LOX #0
g1 sé STxX §
82 JMP ss
83 S7 LDA #0 30N ARRIV
— LA SI RIEN N’EST CLASSE
84 STA P jPREMIER
SECTEUR VRAC = 0/0
es STA S
86 SB LOA ZCTP+1 jLECTURE
DES SECTEURS DE CLES EN VRAC
37 LDOx #9
88 STA 10B,X
39 JSR RWTS
70 Loy P
a Lox S
92 CPY PFT
93 BNE S?
74 CPx SFT
9S BEQ S10
94 S? INC 2CTP+1
97 JMP SS
93 510 INC Z2CTP+! MALT. P
OINTEUR FIN DE ZONE
99 LDA ZCTP+!
100 STA S2T
101 LDA #0
102 STA SXxC
103 STA P ;ECRITURE
A PARTIR DE PISTE O/SECTEUR 0
104 sta s
105 STA SYB
106 LDA #2 3; COMMANDE
“ECRITURE" POUR RUTS
i 107 STA PFC
= 108 LDX #$C
109 STA 10B,x
110 LDA IC
111 BEQ S100
112 JMP S27 sRIEN N’E
ST CLASSE
113 S100 LDA zcC+1 yEXAMEN A
PARTIR DU DEBUT DE
114 STA Z2CCP+1 jLA ZONE
DES CLES CLASSEES
115 $12 LOY #0 s1ERE CLE
O’UN BLOC (256 OCTETS)
116 LDA (ZCCP).Y
117 Sit sTa Le ;LONGUEUR
TOTALE
113 INY
119 LDA <Z2CCP),Y
120 STA LU ; LONGUEUR
UTILE
121 INY 3SYC POIN
TE SUR LE 1ER CARACTERE
122 STY sYC 3DE LA CL
E
123 LDA <ZCCP),¥
124 BNE S13 1ST 0 =->
CLE ANNULEE
125 S19 LDA sYc 3ON SAUTE
A LA CLE SUIVANTE
126 eLe
127 apc LC
128 ADC #2
129 TAY
130 LDA (ZCCP).Y
131 BNE S11 3S1 0 -->
LE BLOC EST FINI
132 INC ZCCP+1 j PASSAGE
Fc
133
134
135
136
137
138
139
140
141
142
143
143
145
146
147
143
199
150
151
152
153
154
155
156
157
158
159
160
161
162
163
144
165
166
167
168
16?
170
171
172
173
174
17
176
177
178
179
180
181
182
183
AU BLOC SUIVANT
LOA
CMP
BLOC ?
Bcc
INC
FINIR LE
JmMP
S13 LOA
Z2CCP41
szc
j;DERNIER
S12
1c
VRAC S’IL EN RESTE
$270
CMINT
3CMINT =
Q --> PLUS DE VRAC
BEQ S131
LOA PFC
--> ON A DEJA CHERCHE
BEQ S130
PETITE CLE OU VRAC
$129. JSR RPT
$130 LDA CMINT
YRAC SI CMINT=0
BEQ S131
LDA LUT
LUT<LU
LOX #0
STX LM
cMP LU
BCS S14
INC LM
sia Loy syc
SON CLE CLASSE A
$140 LOA (ZCCP),Y
PETITE DU URAC
CMP CMINT,X
BCC S131
< URAC
JMP S20
S131 LDA LC
LC+5 OCTETS PAR CLE EN
cLc
LE 0 QUI MARQUE LA FIN
ADC #5
cLc
ADC SYB
BCC S16
E LA PLACE SUR LE SECTEUR
JSR S132
SECTEUR/PASSE AU SUIVANT
JMP S16
LOX SxC
LDA SFC
RT ADRESSE DU BLOC
STA CLEMAX ,x
LOA SYCO
DE LA CLE DANS LE BLOC
INX
STA CLEMAX,x
INX
STX SXC
OINTEUR DE CLEMAX
LOA BUF+1
SECTEUR CLASSE QUE
LOX #9
NT DE CONSTITUER
STA 10B,x
JSR RWTS
Lox s
AU SECTEUR SUIVANT
INX
CPX #810
BNE S15
INC P
LDX #0
STx S$
LDY #0
TEUR DU BUFFER
$132
sis
PLUS DE
sLM=1 SI
;COMPARAI
s;LA PLUS
;CLASSEE
gIL FAUT
j;COMPTANT
;OU BLOC
sIL YAD
sECRIT LE
;POIDS FO
sPOSITION
sM.A.J. P
sECRIT LE
sL’ON VIE
; PASSAGE
sRAZ POIN
Pom's n° 15
184
185
186
128
199
190
11
192
193
194
195
193
197
198
199
200
201
202
203
204
205
206
STY SYB
RTS
Sis LDY SYB
LES DONNEES DE LA CLE
LOA LC
BUFFER
sTa
(BUF) ,Y
TA (BUF) ,Y
INY
str
OINTEURS
LOY
U CETTE CLE SERAIT
sty syco
DU SECTEUR EN COURS
LOR ZCCP+1
ITUTION
STA SFC
LDXx #0
$17 LDA (ZCCP).Y
T INTERMEOIAIRE
STA CMIN,X
INX
INY
cPx
svB
DE CLEMAX POUR
LA
LUT2
BNE S17
LDY SYB
LOX #O
$18 LDA CMIN,X
T DANS LE 6U
STA (BUF) ,Y
INX
INY
CPX LUT2
BNE S18
LDA #0
A FIN PROVISOIRE
STA (BUF) ,Y
STA PFC
sty syB
JMP S19
EE SUIVANTE
CLAS:
BEG 5
$23
OCTET "“VRAC*
uM
BNE S22
C* EST LA PLUS COURTE
cPx LU
A CLE LA PLUS COURTE ?
BEQ S210
JMP S140
UITE COMPARA! SON
1 JMP S131
2 CPx LUT
A CLE LA PLUS COURTE ?
BEQ S23
JMP $140
UITE COMPARAISON
$23 LDA LCT
VRAC" EST LA PLUS PETITE
cLe
$2
32.
;RECOPIE
;DANS LE
;LONGUEUR
jM.A.d. P
;LE CAS O
;DERNIERE
y0E CONST
;TRANSFER
3 TRANSFER
jMARQUE L
DU SECTEUR
3; PASSAGE
;OCTET “Cc
"URA
EL
jNON -> S
jFIN
jNON -
;LA CLE "
;STOCKAGE
DANS BUFFER AVEC CHANGEMENT
ADC #5
jPREALABL
E DE SECTEURR SI NECESSAIRE
Pom's n° 15
267
253
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
237
288
2389
272
cLe
ADC
Bcc
JSR
$24 Loy
OINTEURS
LOA
STA
INY
LOA
STA
LDA
STA
LOA
STA
INY
LOX #0
LOA CMINT,X
LA CLE
STA (BUF) ,Y
INX
INY
CPx
BNE
sTY
LDA
cic
ADC
STA
TAY
LDA <ZCTP),Y
L’ ADRESSE
Loy syB
syB
$24
$132
sy¥B
OE CLEMAX
LcT
<BUF) ,¥
LUT
(BUF) ,Y
SYM
syco
zTPP
SFC
LCT
$25
sY6
SYM
LcT
PFT
T OE
BLOC
STA
INC
LOY
INY
LOA
LOY
STA
INY
LOA #0
UFFER
STA (BUF) ,Y
STY SYB
LOX IC
BNE
STE QUE DU
INX
STX PFC
GU’°IL FAUDRA CHERCHER LA
JMP S129
+ PETITE CLE DU URAC
LOA CMINT
BNE $27
ENCORE RESTER DU YRAC
$28 JSR $132
RNIER SECTEUR ET SORT
RTS
S27 JSR
+ PETITE
70 LOA CMINT
BEG S28
-> FIN
JMP S23
“BUFFER”
LDA ZCT+1
DU YRAC
STA ZCTP+1
Loy #0
(BUF) ,Y
sys
PFT
C2CTP),Y
sv8
(BUF) ,Y
S26
YRAC
$26
RPT
CLE DU URAC
s2
vRAC
NT
RPT
CATEUR “RESTE DU VRAC"
jMoAed. P
; TRANSFER
; TRANSFER
;DANS LE
jFIN DU B
yIL NE RE
;SIGNALE
;NOUVELLE
sIL PEUT
;ECRIT DE
sCHERCHE
;PLUS DE
;TRAITEME
3;1ER BLOC
RAZ INDI
29
30
294
275
296
297
298
277
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
32
32?
330
331
332
333
334
335
336
337
338
339°
340
341
342
343
344
345
346
347
348
349
350
cs
ci
cé
co
ci
c4
c3
co
STY CMINT
HE UNE 1ERE + PETITE
LDA (ZCTP),Y
£ "URAC" DU BLOC
STA LCT
STA LCT2
INY
LOA
INY
STY SY
CMP SFr
DEJA ETE RECLASSEE ?
BEQ Ct
STA LUT
STA LUT2
LDA Z2CTP+!
STA 2TPP
PETITE POTENTIELLE
LDA (2CTP),Y
BEQ@ C1
ANNULEE
STY SYM
LOX #0
<2CTP),Y
ooo
LA +
ETE
30N CHERC
POSSIBLE
j;DEBUT CL
jLA CLE A
7;BLOC DE
jLA CLEA
;LA 1ERE
CLE NON ANNULEE/NON RECLASSEE
STA CMINT,X
TROUVE EST TRANSFEREE
INY
NT
INX
CPX LCT2
BEQ Ct
LDA (2CTP),Y
JMP CO
LOA SY
CLE "URAC"
cLe
aoc
ADC
TAY
LDA
BNE
INC
SUIVANTE
LcT2
#2
(ZCTP) ,¥
c3
ZCTP+1
-> PASSE AU BLOC SUIVANT
LDA 2CTP+1
CMP S2T
DEJA TRAITE ?
BCC C4
JMP C12
PLUS PETITE S’IL EN
LOY #0
BEQ C2
LDA CMINT
BE@ cS
JOURS LA PLUS PETITE
LDA (2CTP).Y
STA LCT2
INY
LDA
INY
STy sy
CMP #SFF
RECLASSEE
BEQ@ Cl
STA LUT2
LOX #0
STX LM
LUT2>LUT
CMP
BcS
INC
LDA
BEQ
BLOC
ALA
CZCTP) ,Y
LUT
ce
um
CZCTP) ,Y
ci
;QUE L‘ON
;DANS CMI
iFIN BLOC
;DERNIER
3NON !
jOUI->0N
RESTE
3ON A TOU
;CLE DEJA
jLM=1 SI
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
3466
3467
368
369
370
371
372
373
374
375
376
377
373
379
330
381
382
3983
384
385
386
387
383
38°
370
391
392
393
394
3975
396
397
3978
399
400
401
402
403
ana
ETE ANNULEE
CMP CMINT, Xx
AVEC + PETITE POTENTIELLE
BE C7
BCS C1
FERIEUR -> ON LA GARDE
Ch! LDY sy
— LE CMINT
LDA (ZCTP).Y
LOX Z2CTP+1
STX ZTPP
LDX LUT2
STX LUT
LOx LCT2
STX LCT
JMP Cé
c7 INX
MINT" = OCTET
INY
LDA LM
BNE C10
cPX LuT
A PLUS COURTE
BNE C?
JMP C1
N GARDE CMINT
c10 CPX LUT2 iFIN
@ PLUS COURTE (LUT2<LUT) ?
BEQ C11 ;OUI
N CHANGE CMINT
JMP C9
LOA CMINT
BEQ C13
PLUS DE URAC
LOA 2TPP
STA ZCTP+1
LA + PETITE DEFINITIVE
Loy sym
E RECLASSEMENT DE LA CLE
DEY
LDA
STA
RTS
LDX #4
LOA P
STA I0B,xX
INX
LOA S
STA I0B,xX
LDA /TOB
LOY #108
JSR $3097
RTS
CMIN OFS $FF
CMINT OFS $FF ;CONTIENT
TOUJOURS + PETITE CLE “VRAC"
OFS $1
OFS $1 3POSITION
+PETITE VRAC DANS SON BLOC
LUT OFS $1 ;LONG. UT
ILE + PETITE CLE DU YRAC
LUT2 OFS $1
ILE D’UNE CLE DU VRAC
OFS $1
DANS UN BLOC DE URAC
HEX 014002000000
ADR DCB
HEX 000000000100FE6002
HEX OO001EFDS8
DCM "INT"
END
jCOMPAR,
sCMINT IN
30N CHANG
j;OCTET “C
"CLE COMPAREE"
3FIN DE L
CLUT<LUT2) ?
OUI
ci2
sIL NY A
}BLOC DE
jMARQUE L
4SFF
(2CTPD ,Y
c13
RWTS
LM
SYM
;LONG. UT
sy ;POINTEUR
108
oce
Pom's n° 15
Récapitulation REC.OBJ 1090- EC 85 FE AF 02 85 1E AZ 1108- B81 1C Ad FE 91 18 E6 FE
1098- UC ¥D EB 14 AS D6 FO 03 11E0- Aa CE C8 B1 IC Ad FE 91
10A0- 4C 03 12 AS 07 85 18 AD 11E8- 18 CB AP 00 91 18 84 FE
10A8- 00 Bi 1A 85 ED C8 BI 1A 11F0- As 04 DO 04 EA a4 IE AC
10B0- 85 D7 C8 a4 FB AI 1A DO 11F8- 0B 10 AD E7 13 DO 04 20
eee os be sce te oe a 10B8- 19 AS FB 18 45 ED 69 02 1200- 0€ 11 60 20 0 12 AD E7
9010- 18 C8 e4 1B BD SF 90 DI 10CO- AB B1 1A DO ES ES 1B AS 1208- 13 FO F4 4C 90 11 AS OF
9018-08 00 35 EB ca £4 be be 10C8- 1B CS FF 70 DA E6 D6 4c 1210- 85 1D AD 00 BC E7 13 BI
9020- F2 £4 18 00 2B Aé 1A AS 1000- 06 12 AD E7 13 FO 27 AS 1218- 1C 85 EF 85 FD C8 Bi IC
9028= 19°90 4E 91 AS IA Ed th 10D8- 1E FO 03 20 OE 12 AD E7 1220- CB 8C EA 14 C9 FF FO 21
9050=0A AA AS 1811828 io-AG 10E0- 13 FO 1B AD £8 14 a2 00 1228- @D E8 14 8D EP 14 AS 1D
9086-61 68 Poise oe ce Eo GL 10E8- 8E Eé 14 CS D7 BO 03 EE 1230- 85 EE B1 1C FO 13 BC E7
9040- 08 9D SF 90 Az 0G ce oF 10F0- ES 14 A4 FB B1 1A 0D E? 1238- 14 Az 00 90 E7 13 C8 EB
yo40=08 OF BRAY Ol as Ihias 10F8- 13 90 03 4C 7F 11 AS ED 1240- E4 FD FO 05 Bi IC 4C 3B
9050- Ac 00. AS 1B 2 45 16 oP 1100- 18 67 U5 18 65 FE 90 32 1248- 12 AD EA 14 18 65 FD 69
9056-02 AB 61 08 DD AC 40 1108- 20 OE 11 4C 3A 11 A6 FF 1250- 02 AS B1 IC DO OF ES 1D
1110- AS IF 9D 00 03 AS FC EB 1258- AS 1D C5 FA 90 03 4c C1
1118- 9D 00 03 E8 94 FF AS 19 1260- 12 AO 00 FO ED AD E? 19
1120- A2 09 9D EB 14 20 D3 12 1266- FO AD Bi IC 85 FD C8 Bi
Fy ‘. y 1126- As EC ES EO 10 DO 04 ES 1270- 1C C8 8C EA 14 CY FF FO
Récapitulation CLAS.OBI 1125. 23 & 58 So 0 89 oe es 1278= 100 BD EY 14 Az G0°GE ES
1138- FE 60 A4 FE AS ED 91 18 1280- 14 CD E8 14 80 03 EE E6
1140- 18 69 02 8D E9 14 C8 AS 1288- 14 B1 1C FO BC DD E7 13
1000- AY 01 AZ OC 9D EB 14 AS 1148- D7 91 1A CB 84 FE aa FB 1290- FO 18 BO BS AC EA 14 BI
1008- 09 85 1D AS Dé DO 53 AS 1150- 84 FC AS 1B 85 IF A2 00 1298- 1C Aé 1D 86 EE AE EP? 14
1010- 07 85 18 A 00 8S EB as 1158- B1 1A 9D EB 12 EB CB EC 12A0- 8E EB 14 AS FD 86 EF 4C
1018- EC A2 08 BE E7 13 AS 06 1160- E? 14 DO F4 Aa FE AZ 00 12A8- 36 12 EB CB AD ES 14 DO
1020- 90 EB 14 E68 AS 18 9D EB 1168- BO ES 12 71 18 EB CB EC 12B0- 08 EC E8 14 DO D3 4C 49
1028- 14 20 03 12 Ad EB AS EC 1170- EY 14 DO F4 Av 00 91 18 12B8- 12 EC EY 14 FO D4 4C 89
1030- C4 1E DO 04 E4 IF FO 15 1178- 85 1E 84 FE 4C B9 10 FO 12C0- 12 AD E7 13 FO 0c AS EE
1038- EO OF DO 07 C8 84 EB A2 1180- 03 4C 9D 11 £8 CB AD ES 12C8- 85 1D AC E7 14 88 AS FF
1040- 00 FO 01 EB 86 EC Eé 1B 1188- 14 DO 0A E4 D7 FO 03 4c 12D0- 91 1C 60 Az 04 AS EB 9D
10¢a~A2 OF 40:24:10 Eé 18 AS 1190- F4 10 4C FE 10 EC E68 14 12D8- EB 14 EB AS EC 9D EB 14
1050- 18 8S FO E@ EO 10 DO OS 1198- FO 03 4C F4 10 AD EF 18 12E0- AY 14 AD EB 20 D9 03 40
1058- C8 84 EB AZ 00 86 EC 4c 11A0- 69 05 18 65 FE 90 03 20
1060- 68 10 AY 00 85 EB BD EC 11A8- OE 11 A4 FE AS EF 91 18
1068- AS 1D AZ 09 9D EB 14 20 11B0- C8 AD EB 14 91 18 AD E7 TABLES
1070- D3 12 A4 EB Aé EC C4 CE 11B8- 14 85 FC AS EE 95 IF Ce
1078- DO 04 E4 CF FO 05 £4 10 1100- A2 00 BD E7 13 91 18 EB 14EB— 01 40 02 00 00
1080- 4C 53 10 Es 10 AS 1D es 11€8- C8 E4 EF DO FS 84 FE AD 14F0- 00 FC 14 00 00 00 00 01
1088- FA A? 00 85 FF 85 EB 85 11D0- E7 14 18 65 EF 85 CE AS 14F8- 00 FE 60 02 00 01 EF DS
VOUS PROGRAMMEZ SUR APPLE II rd
VOUS VOULEZ GAGNER DU TEMPS 5/9)
VOUS CHERCHEZ A AMELIORER VOS CAPACITES 55),
LIGHT EST FAIT POUR VOUS on). 42st
LIGHT est un ensemble de puissants logiciels
d'aide a la programmation concu pour:
- mieux gérer les fichiers et les disquettes
mise a jour d’un catalogue général
état des secteurs libres sur un disque
- faciliter l’exploration et l’exploitation des disquettes
accés direct, lecture, écriture des secteurs
transfert et recherche des séquences d’octets
- accélérer l’analyse de vos programmes
en Basic: recherche des tokens et des suites désignées
en Binaire: impression en désassemblé de séquences
d’octets; pistage en tout ou partie du déroulement
bane dessais dans Pom's n°/3
POUR EN SAVOIR PLUS SUR LIGHT :
M. ————e
adresse
demande une documentation complete, sans engagement de sa part, aux Annees Nouvelles, 70, rue du Javelot, 75013 Paris,
Pom's n° 15
31
32
Nous vous avions promis un
canter Macintosh dans chaque numéro
de Pom’s. Voicl le premier de ces
cahters, Vous y trouverez, outre les
remarques de cette page, un article
sur les ROMs du Mac, un article sur
la programmation de ses curseurs et
enfin (page 49) un tableau avec les
renseignements les plus récents sur
les logiciels du Macintosh,
Politique éditoriale
Nous nous sommes longuement
interrogés sur la politique a sutvre
Pour nos articles dans le cahier du
Mac. Nous avons finalement decide de
maintenir, au niveau du Macintosh, la
politique de qualité de Pom’s, qui a
toujours refusé le nivellement vers
le bas. Nous partirons donc du
Principe que les lecteurs de Pom's
@UrONt ly les modes d'emploi du Mac
et des logiciels quills utilisent et
quil est donc inutile de leur
proposer des explications gui ne
feraient que résumer la documen-
tation,
Contenu de la disquette Mac
Nous vous proposons en outre des
ce numéro une disquette Macintosh,
dans laquelie vous trouverez
@ le programme Disk Copy, qui
permet de réaliser une copie de
disquettes en quatre passages
avec seulement le lecteur integre
du Mac;
@ la police de caractéres Cairo, dont
vous pouvez voir les signes en bas
de page;
© les programmes “du Mac pubiiés
dans les numéros 14/15 de Pom’s.
Nous ajouterons 4 la disquette,
au fur et 4 mesure, Jes programmes
des numeéros suivants, ainsi que
quelques surprises supplémentaires
que nous vous laissons découvrir
Multipian sur Macintosh
1. Tapieas iS a
Pour avoir plus de lignes et de
colonnes a l'écran, écartez a l'aide
du Font Mover ies polices Seattle de
la disquette Multiplan, en les
mettant dans un ficnier Caracteres
afin de pouvoir les récupérer plus
tard, Vous obtiendrez alors 20 lignes
et 7 colonnes a l’écran, au prix d'une
baisse de la lisibilite.
im papi
Quand vous sortez de Multiplan
aprés avoir copié plus de SO cellules
(par exemple pour ies transférer a
MacWrite), le message “Enregistre-
ment dun important presse-papier™
s'affiche Sil y a plus de 100
cellules 4 copier, i! faut cliquer pour
demander lenregistrement des va-
leurs formatees ef des valeurs non
formatées (c'est automatique pour
moins de 100 cellules). Dans un cas
comme dans l'autre, validez l’enre-
gistrement avec OK
Tabulation numerique
Lorsque vous copiez plusieurs
colonnes de valeurs de Multiplan
vers MacWrite, vous pouvez réaligner
les valeurs avec a tabulation
humérique (le triangle pointé) Bien
entendu, ej) vous possédez un
Multiplan U.S. (point de décimali-
sation) avec un MacWrite francais
(virguie de décimalisation), le
cadrage ne se fera pas avant que
vous ayez change les ~" en ~~
S! la premiere colonne contient
des valeurs numériques, celles-ci ne
seront pas tabulées. Pour atteindre
cet objectif, {1 conviendra d'ajouter
Dréalablement une colonne blanche 4
la zone @ copier vers MacWrite.
s try
De nombreux autres trucs
d'utilisation vous sont proposés dans
“Multiplan pour Macintosn”, qui dott
paraftre aux Editions du PSI 4 la fin
decembre. Cet ouvrage a eté realise
& partir de la version 1.02 de
Multiplan en version francaise (aout
1984)
obcdefghi
j_k !omn7»iop qr
s
{ uvw xy z
lad«el Oy tr oO@Oie yw be Oe eA Ty
Apc oeE F 6G
Ht J JK
LMN OPQRS
TU DU WHY 2
1G B jl TO EBA GA
7 @ {iis
2345 67890!
@ # $ % * oF ( 3
IER
= {
elo
Ka Ag ALG ws OO SaP SV eS Ow vers
1 PON Egg 2
Ree a AGL option) A
Option) i
Poon 2 f (69S EO se FY
we Tt
CAIRO
Police Cairo - Tableau provenont de Moc the Knife™
Pom's n 15
Les Routines en ROM du Macintosh
Le Basic Microso
routines situées
donne acceé:
ans la mémoi
lecture seule du Macintosh. Malheu
reusement, le manuel d'utilisation de
l'interpr indiq seulement la
syntaxe des instructions. ce qui est
loin d'étre suffisant pour une utilisa
tion optimale. De plus. le manuel
Propose. pou
Showing the first 100000 of 293195 characters.