Text content (OCR)
La revue francophone indépendante pour les utilisateurs des
Apple J[+, //e, //e+, //c, Ilcs™ et Macintosh™
Les nouveaux Macintosh : Mac SE, Mac II
Cryptage de fichiers confidentiels
Disque virtuel et AppleWriter
Essai ‘routier’ de PageMaker
Kyram : nibble et protection
ProDOS : fichiers détruits
@ Conversion HGR/DHGR
@ Méthode ‘Simplexe’
@ Recherche d’octets
@ Minitel & Apple:
* graphisme
+ ligne artificielle
RAAB. A.A.
| NUMERO 29 . PRIX 45 F
M 2366 - 29 - 45,00 F
|
3792366045005 002
90 ISSN : 0294-6068
® CREEZ VOTRE PROP
e ACCEDEZ AUX RESEAU
MODEMS OLITEC
ORDINATEUR EN SUPER MINITEL A PARTIR DE
X NATIONAUX, INTERRATIONA 2805 TIC
RE SERVEUR
SS
Apple 2E, 2 + Apple 2S; 2 Gs
2 Coffrat me 2 nodes (Vv 24 ‘ion sans interface
+ Coffret Me initeusérie vous | * Moder Cite 103, Bell 202) Mame configuration *
1 interface sie du Minitel) 4 Miele série RS232 ai serie. 6 490,00F 1c
tisez le ni 04 Pri
interface serie FS202 | 4 togiciel de comm oe 11 690,008 se
4 togictol de communicati universel sitet ° eee 2 080,00F tc
i 4 emulation Min! Ne 3 Prix
1 winaation Minitel 4 .990,00F rte a
ces
890,00F r1¢ MODEMS, Interfa
03: 5 2c, 2 GS, Mac:
@ Coffratn? 3: todas & Sirs 4 2:
Olitec | a wr Apple
1 Modem tomatique (V25, V24 > Modem 12 modes pout ARDS ET
reponse
1 logiciel
10!
v2, V23, Bell
4 interface sere RS232
3, Bell 202) automatique
a répor
mm 16 modes
de communication « Mode: 4
rface MinitevSere {
1 on Minitel o Inter | 260F ns
——
0,00 F re
ae CONTACTEZ-NOUS :
STE OLITEC, 20, rue de Remenauville - 54000 NANCY
Téléphone : 83.35.00.65
SYSTEME EXPERT
pour Macintosh
Installez un Systeme Expert aux fonctionnalites professionnelles
sur vulre Mac (128K, 512K, 512/800 ou MacP lus)
© Création, modification, sauvegarde de’ vos propres «Bases de
Conriaissances» pouvant contenir jusqu'a 250 Regles exprimees
en francais courant
© Chaque Regle peut comporter de | 8 6 conditions
® Liste et Dictionnaire des Bases de Regles et de Faits
e Moteur d'inférence fonctionnant en logique propositionnelle
e Simplicité d'utilisation, exploitant toute la convivialité du Mac
® Logiciel structure ecrit en Microsoft® MBASIC 2.0
@ Programme source livré non protege
© Logiviel proposé complet, port inclus, au prix de 350 F TIC
FONCTIONNE EN
« Chainage avant
¢ Chainage arriere
¢ Vérification
d'hypotheses
@ Modes “déduction”
et "vérification”
assistées, proposes
automaliquement
en cas de non-
résolution
Commandez dés aujourd'hui votre disquette, contenant le Programme source + Mode d'emploi et Documentation
complete + 3 Bases de Connaissances proposées en exemple (que vous pourrez éditer et modifier )
en Botanique, Diagnostic automobile et Grapholagie
fdressez votre cheque a BOYER-LARVET, 22 Soudanes, 78430 LOUVECIENNES
Numéro 29 Les nouveau-nés
mars-avril 1987 coe SE & II
Editorial 4 —
Hervé Thiriez Page 5
== de
Recherche d'octets fichiers : Kruptos
Patrick Covare
I+} | //e
Te] Jean-Luc Bazanegue
a ee (es eee) Page 6 Page 45
Apple & Minitel : Critane de
les caractéres C3 fichiers : Kruptos _
semi-graphiques Page 10 fe] toheoie iy
Conversions i ess] Page 53
HGR/DHGR Simplexe
Alexandre Serge Cattan
Avrane (Ics ] Oe) HE cal :
Page
“/e
ee
De l'octet au AppleWriter &
nibble : Kyram Gildas /RAM Christian Piard
Well req a iad Za) ze Page 63
Es | =a a Page 13 =) ess Pea 8
ProDOS et fichiers Programme WPL :
détruits Patrice Neveu tabulations
OF) 7) automatiques Bernard Bel
sa I+] [7e 7
im : s| Page 26 [ve] [ze]
SS) aay (S| Page 64
PageMaker : ae
eige oe Apple & Minitel :
easel nimi ligne ‘artificielle’
Ss = Philippe Mathieu 4 Jean-Louis Chaulot-Talmon
fy Page 40 Page 66
Micro-informations : page 68. Un nouveau produit Pom's, BananaSoft : page 71. Courrier des Lecteurs : page 73.
Les annonceurs ; Apple : pages 38 et 39. Boyer-Larvet : page 2. Olitec : page 2.
Editions MEV - 12, ruc d'Anjou - 78000 Versailles. Tél. : (1) 39 51 24 43. Directeur de la publication ; Hervé Thiriez
Pom's n° 29
eee ee ————— eee a
Disquettes d’accompagnement
Apple // : DOS & ProDOS,
800 Ko et 140 Ko
A partir de ce numéro, les disquettes
d'accompagnement de la revue vous sont
proposées sous deux formes : 140 Ko 5,25
pouces et 800 Ko 3,5 pouces, et ce, pour penser
a nos lecteurs qui ont ‘craqué’ pour le IIcs et
qui n'ont plus de drive 140 Ko.
Autre nouveauté, nos disquettes 140 Ko vous
sont proposées en double face :
- Recto formaté en DOS 3.3
- Verso formaté en ProDOS
/POMS29/)
sans changement de prix : 60,00 F.
La disquette 800 Ko cofite 80,00 F.
Les deux faces de la disquette 140 Ko et la
disquette 800 Ko comportent tous les fichiers
relatifs 4 la revue sans tenir compte du
(nommée
systéme d'exploitation nécessaire a tel ou tel
programme : vous pouvez ainsi récupérer les
fichiers plus facilement pour les adapter ou en
extraire les routines.
Pour plus de commodité, sur la disquette 800
Ko et sur la face ProDOS de la disquette 140 Ko,
mettez les fichiers ‘ProDOS’ et
‘BASIC.SYSTEM’ pour que vous puissiez
démarrer directement.
Voici la liste des fichiers des disquettes
d'accompagnement de ce numéro avec
indication du syst@me d'exploitation supporté
pour leur fonctionnement. Bien entendu, les
sources (tous en format TEXT) peuvent étre
utilisés indifféremment avec DOS et ProDOS.
Fichier pos ProDOS Remarques
RECHERCHE . objet exécutable (BRUN)
T.RECHERCHE iJ ° source
DHGR.DEMO . . programme de démonstration Basic (RUN ou ~)
DHGR . . objet appelé par DHGR.DEMO
DHGR.PIC 2 = image DHGR (Extasie) utilisée par DHGR.DEMO
T.DHGR ed ® source
KYRAM ® objet exécutable (BRUN)
T.KYRAM = s source
INDEX e objet exécutable (BRUN ou -~)
BLOC ® objet exécutable (BRUN ou -)
T.INDEX.CODE ° . source
T.BLOC.CODE e ° source
KRUPTOS ° objet exécutable (BRUN ou )
KRUPTOS.S ° ° source
KRUPTOS.CODE . objet non exécutable
SECRET . . fichier 4 décrypter par vos soins
SIMPLEXE . programme Basic (RUN)
PATISSERIE fichier de démonstration utilisé par Simplexe
WPL.TAB ° * programune WPL pour AppleWriter
AWLC . objet a ‘bloader’ pour patcher AppleWriter
AW2.C ° objet a ‘loader’ pour patcher AppleWriter
AW1 ° ° source
AW2 ut . source
GRAPH.VIDEOTEX oO) ° programme Basic (RUN)
Pom's n° 29
Editorial
Enfin, nous venons de voir la sortie du Mac ouvert, baptisé Mac I, et du Mac SE (Super-
Entrouvert ?), ainsi que l’apparition de toute une famille de nouveaux produits Mac, présentés
dans ce numéro. Le show typiquement “Apple” pour la sortie de ces nouveaux produits nous a
convaincu, une fois de plus, que cette société doit détenir le brevet d’une nouvelle unité de
mesure informatique, le Mo (Mégalo-octet).
Le plaisir de voir apparaitre ces nouveaux produits a été quelque peu estompé par la dispari-
tion, depuis la sortie de notre dernier numéro, des revues Golden (disparition complete) et In-
fomag (transmutation ?). Aprés avoir été la premiére revue dédiée 4 une famille de matériels
micro, serons-nous la derniére ? II est certain qu’il en reste aujourd’hui a peine une dizaine, sur
les plus de 50 créées depuis le premier numéro de Pom’s. Rassurez-vous, l’équipe de Pom’s dis-
pose toujours de l’enthousiasme et du dynamisme de tout ‘micro-maniaque’ mais également de
curiosité face aux nouvelles machines et de projets qui se concrétisent au fil des numéros.
Avec ce numéro, nous vous proposons sur la disquette Macintosh 29 (et probablement de fagon
réguliére sur les prochaines) des logiciels domaine public ou Mac Honor. Bien entendu, nous les
mettons sur nos disquettes sans en modifier le prix.
Autres nouveautés :
* les disquettes Apple // existent aujourd’hui en 800 Ko ProDOS et 140 Ko DOS et ProDOS...
sans modification de prix,
¢ EPE 5.1 fonctionne sur l’Apple Ics et existe sur disquette 800 Ko,
* BananaSoft, une nouvelle disquette qui jette un pont entre l’AppleSoft et le Basic Microsoft
Sx.
Nous vous donnons bien entendu rendez-vous 4 Apple Expo, pas immédiatement, Apple ayant
décidé de maintenir Ie licu de La Vilette, mais de modifier la date : début octobre.
Hervé Thiriez
Ont collaboré 4 ce numéro: Alexandre Avrane, Jean-Luc Bazanegue, Bernard Bel, Serge Cattan, Jean-Louis
Chaulot-Talmon, Patrick Covare, Jean-Michel Gourévitch, Olivier Herz, Philippe
Mathieu, Gildas Ménier, Gérard Michel, Patrice Neveu, Christian Piard, Hervé Thiriez.
Directeur de la publication, rédacteur en chef : Hervé Thiriez.
Rédacteurs : Alexandre Avranc, Olivier Herz.
Sidge social : Editions MEV — 12, rue d’Anjou - 78000 Versailles. Tél. : (1) 39.51.24.43.
Publicité : Editions MEV.
Diffusion ; N.M.P.P.
Impression : Berger-Levrault — 18, rue des Glacis — 54000 Nancy. Tél. : 83.35.61.44.
Pom's est une revue indépendante non rattachée & Apple Computer, Inc. ni & Apple Computer France $.A.R.L. Apple, le logo
Apple, Mac et le logo Macintosh sont des marques déposées d'Apple Computer, Inc.
Pom's n° 29
Recherche d’octets
Patrick Covare
Ce programme permet de recher-
cher, en mémoire ou sur dis-
quette, une expression quelcon-
que.
Il peut étre trés utile, par exem-
ple pour retrouver tous les appels
a une routine quelconque,
Tendroit of une mémoire particu-
ligre est modifiée, etc.
Ecrit en assembleur, le
programme est rapide. Les 35
pistes d'une disquette sont
examinées en moins de 30 secon-
des, et une recherche en mémoire
ne demande que 2 ou 3 secondes
pour 64Ko.
Commandes
disponibles
BRUN RECIIERCHE lance le
programme pour la premiére fois.
Par la suite, on pourra
indifféremment utiliser &
(l'ampersand) ou Ctrl-Y a partir
du moniteur.
Les commandes ‘A’ et ‘Z’
permettent de définir les adresses
hexadécimales de début et fin de
recherche en mémoire vive.
Ces adresses ne peuvent se situer
ni dans l'espace $CO00-$COFF
réservé aux entrées/sorties (sinon
bonjour les dégats!), ni dans la
plage $9500-$95FF ot cst
conservée l'expression 4 recher-
cher. Pendant l'exécution, ces
plages sont automatiquement
évitées par le programme.
Si l'adresse de départ est
supéricure 4 celle de fin,
RECHERCHE boucle sur $0000
aprés avoir examiné l'adresse
$FFFF.
Les commandes ‘P’ et ‘F’
permettent de saisir, toujours en
hexadécimal, les numéros de
pistes de début et fin de recherche
sur la disquette. S'ils sont
identiques, la recherche ne
s'effectuera que sur une seule
piste.
La commande ‘D” autorise le
changement de lecteur (1 ou 2).
La commande ‘E’ permet
d'entrer une expression a
rechercher, expression composée
au maximum de 256 caractéres.
Trés pratique : inclure des
caractéres inconnus (wildcards)
en tapant un ou plusieurs ‘='. Par
exemple : "20 == FD" trouvera
les appels & COUT ($FDED),
COUTO ($FDFO), KEYIN
($FD1B), etc.
Afin de ne pas surcharger I'écran,
seuls les 11 premiers octets sont
affichés sur le menu ; néanmoins,
l'expression étant conservée a
l'adresse $9500, elle peut étre
visualisée par un simple appel du
moniteur.
Les commandes ‘R’ et ‘S’
lancent une recherche en mémoire
ou sur disquette.
Dans ce dernier cas, la touche
ESCAPE permet d'interrompre la
recherche en cours.
Si des expressions identiques
sont détectées, leurs adresses, et
éventuellement les numéros de
pistes ct scctcurs, sont affichés.
Si rien n'a été trouvé, on revient
au menu.
Pour une recherche sur disquette,
T'adresse et ses deux derniers
chiffres complétent I'affichage.
Exemple :
$862A P:$12 8:99
informe que I'cxpression a été
trouvée 4 l'octet $2A du secteur
9, piste $12, et qu'elle se trouve
actuellement en mémoire a
l'adresse $862A.
Lors d'une recherche sur la
disquette, les pistes sont chargées
unc a une, dans un buffer situé en
$X000-$8FFF. Les secteurs y
sont stockés dans I'ordre inverse
(afin d'améliorer le temps de
traitement) : page $80 pour le
secteur $F, $81 pour $E, jusqu'a
$8F pour le secteur 0.
Bien entendu, le programme se
charge également de l'affichage
lorsque l'expression est trouvée
plusieurs fois sur la méme page
ou le méme secteur (ce qui n'est
pas le cas de Nibbles Away).
La commande ‘M’ dirige vers
le moniteur de ]'Apple (retour par
Ctrl-Y).
La commande ‘Q’ permet de
quitter le programme.
Fonctionnement
technique
La configuration mémoire sui-
vante est utilisée :
$0000...$000A
vecteurs page zéro ;
$8000...$8FFF
buffer de chargement d'une
piste ;
$9000...$94A0
implantation du programme ;
$9500...$95FF
buffer de l'expression a
rechercher ;
$9600...$96FF
buffer des caractéres inconnus.
Le listing source est amplement
commenté et ne devrait pas poser
de probléme de compréhension.
Cependant, il est bon de détailler
l'algorithme de recherche.
Pom's n° 29
Le sous-programme de comparai-
son utilise les buffers EXPRESS
et WILD, initialisés lors de la
saisie de l'expression. EXPRESS
contient la suite d'octets a recher-
cher, WILD stocke l'emplace-
ment des caractéres inconnus.
Prenons un exemple. Soit
l'expression saisie "A8 =B F3".
Le buffer WILD, utilisé pour
effectuer un ET logique, contient
la valeur 'FFOFFF'. Le zéro
indique la présence d'un caractére
inconnu. Le buffer EXPRESS
contient les codes ‘A80BF3’. Les
espaces tapés au clavier ont été
supprimés, et le troisiéme
caractére a été remplacé par un
z6ro.
Si, lors de la recherche, le
programme rencontre la suite
d'octets ‘A85BF3’, celle-ci est
considérée comme identique car :
A8 AND FF = A8
5B AND OF = OB
F3 AND FF = F3
ce qui correspond exactement au
contenu du buffer EXPRESS.
Source ‘T.RECHERCHE # ger, (MOR om poneauts Le cane.
Assemblour BigMac ® Sm BEL 11a Casa etalt LnciaTonte err
” er CHE,“ fgaln auteur pase ad erbav) desbane lavas
an Bs ql Mmm t ia ceesae ees ek chetete
3+ <- neciencee — A a STA OPTION et sauvegarde en menoire.
7
oc Meareios cemnae aie Hodinatentays e043
¢
? 40 osazre cox 44 + ROUTINE DE MONEE ADRESSES NEWOIRE AT PISTES ©
i u 2CS 900; Saut a JOBD ai option © A,z,? ov F.
; 2 woe 45
2 2 BSR TAI ——;ndtialisation verticate,
ts wonaur = x4
ie nonive ” ict su pebmpceve pour 2‘etstesige a'en 8.
te tows > a
corr = Se Giyaste do. Liatcite cisdsta sartiptisiper 2 10 MMavvegnige deas:d3tja20:
ie TUR Ss Feeds oil lies oe pleaisies conchae ten oer Pea etiniiaa ata a
bi > fA iabelze vitllsee par ta rest ine MN te MMO amc; onl, ‘Zoteor se sons.
not = sé ian tox orztow
zt moet 2 53 4 cx ue popeius tala =v 37
Py ae 28 boc nt apiaery
Dae > gar 106 DA AzL oe, 11 angle dane dene nedts do piers,
Se tacts = $369 107 CR 6929 0 on verifle 1a sunare tadiqus-
25 aesas = 33rs 108 aoc Branchenent on 22 #1 piste < 35.
26 car bre 109 ERREOR JSR BELL Sines BIP,
3) expasss = $9500 ho SP auctn pede retour av menu.
ge meio {auttec ‘at pouitton’ aor cosaccerce issoanss ila A age
33 mers he Car 4995 sPartle haute a 1 = 957
So mone 7e4 is sq Enaron te
bi mwas = free ine one #300 te de 1 = 5007
je meet saree ts ‘aro Ennson egelenent interait --> BIP.
oo mscr > tara
xe moor Sa0PO
as moun = terre
ye paar = Saat DOS 3.3 a
37 aun SesMa
ye mapy = sense
33 nome => res
wo cums. = Srese 123.JosD ex 45 + ROUTINE DE MaDIF ow Mimra0 ne IACTEIR ®
ai moxer > sro i BCs JOM Saat a JOBE of option © D.
te ceray > Seve bi 1a Dec WORIVE 81 HORIVE~2 —-> MORIVE=I,
‘3 cerexe > Soar 6 ane DRIVE
44 cro Srose Hle 2? BAB sot laverveneot:
13 pore Sr00a i STA sosive
+8 enn gross 129 ORIVE IDA MORIVE —;AtEichage
47 cour 30020 Hle+ 130 ora #580 7en node poreal
fe news arrs8 in STA s0cr su nemery do lector,
to owe grees te ‘nd Cpe jab caver pote tas cette Tocbuce Gu Qiiviee)
30 GETMN > SrPA? I/e i+
2 bee
& IIgs fea) Lie be + mogrtan AADSTa nu 4/mmpneerow a. EAT «
onc $3000 a RE JOR Suu = JOM of option © B.
3 Ot $9000 Le in tis
3 ie MR AW! Tai Tadfnet ioe atimia;
S ie ba is
se Lx sPhangonest: dein chatee didaiCinttoacion un Sth ch sat hertzortale de curseur-
59 INIT Lah COOINIT,x pour Ie ier affictage au menu Me GER ARG ufencionne satunediou oat atfomse:
#0 Sta Nosbor. x 13 ISR GETEX? Lecture dy clavier.
a bx ue Dax
e sea wir is IE S10 ——_sRetons-av'nonv'oi on entre vee chaise vide:
ue
0? bx 10 HVERIF 8 CHAQUE CARACTERE OF L:RxPRESSION
is br 10
toa <erec. sc andEtastanttes aie vosteuce 143 snes aA #2
Sth Aurins —jampuncav oe 190 SIA TOUR 700Re? —> debut de veritication d'un octet.
HA cralr orm Y iat ia v0
toa nectw ie 2A. barnes,
SA axprases isp a tare
Sta crates ise ota Mio, x
iA gparcre HE iw WA seoory
STA ayorase2 ise Iw
Sa Sraaree 17 cmp aso
JER MENG 7AEEichage du menu, 138 fas tw
74 Chom sx RORY puis lecture aves touche. ie cme tre
> ix ¥s to MQ BAL jul, on saute Beat.
78 VERIP CHP J08,X La tovche enforces est-elle valide? tet Fan 4550
” fo 3oW yOu, on oeree ¢ Be, tee CHP 50k Bat-il compria entre 0 ot 97
Pom's n° 29
169
164
1s
166
10
168
169
170
im
m
173
174
vs
178
177
176
179
100
ae
102
sop
bicrr
ony
ace
ape
oe
acs
sm
ae
aNd
DEC
EO
STA
Me
bac
a0
WA
‘STA
one
20a
axe
‘sma
208
Pha
wa
Ast
ASL
Ast
asi
‘STA
PLA
cue
aoe
‘STA
INK
oe
DICIT Oui, on saute a DICIT.
4308
4seR pRat-il compels entre A at F?
DIGI? = —:0x4. saut a DIGIT.
oN aNos, 0s savvegarde 1a longueur de 1 'expressicn,
‘BEGIN retourne au menu.
450F
TOUR 751 TOUR=O, un ler caract a deja ete veritio,
DEUX zat on se branche alors « DEUX.
EXPRESS,X ;Sinon, on sauvegarde le ler caractere,
IN spois os aaute a IN pour 1a verif do ene.
TOUR
BOALZ = sSaut @ EGALZ 21 TOURS.
wor
wip, 70m charge te buffer WILD avec ‘OF",
m fet on saute @ IN pous te twat du Zone caract.
wip. x
4870
WrID,X ;Medi#ieation dy beffer WILD.
40 fet 0 dene Laccw pour andif dv buffer EXPRESS.
EXPRESS. X
2Decalege # gauche dv ler caractere
fatocke precedenment dans EXPRESS.
EXPRESS, X
EXPRESS, X
EXPRESS, A :3auvegarae au second caractere,
Jet verification de 1’octes suivant.
pisK
” ‘+ ROUTINE OF RECHERCHE EN MENOZEE +
oss pSant a JORS i aption OR,
rose
art pRetour many af expr source de lonquesr sulle.
MOEBUT
TSTACL Init éalisation
MDSBUT+1 avec les paranetres
STA? :definis par 1*utilisateur.
IN
FINTST#1
MEINe!
FINTST+#
TEST sSaut a Je routine de comparaison d'ectets.
BBCIN
“ *+ ROUTINE DE RECHERCHE SUR LA DISQUETTE
von sSaut a JOY af option © 5.
owe
are peetour menu af expe source de longveve sulle.
wostve
WORY —-:Thdtinlisation
POERUT ddan rout inan BNTS at TEST
‘RRPST = savec les paranetres
40 sdefinie par 1'utilisateur.
WLM
-RNBUF
STAC
PINTST+
RNRERD —;RWTS en node lecture.
4580 sAdresse haute du buffer de data RYTS.
mses
40 sAaresse haute de tin de 1a recherche.
Firsts
varest
ur sMumere dv lar secteve # Liss
auscr
LOCRWTS — ;Lecture dius secteur.
aN7s.
ERR sBranchenent a ERR en cas d'anonalio.
RWBUF+1 —;Increnentation dv buffer de lecture.
AWSCT —;Decrementation du numero de aecteur @ Lire.
‘READ ySaut ai lecture piste pas encore termine.
4550 sAdresse haute du buffer de date RYTS.
STAC?
RNBUF+L
TEST sSaut @ Ia routine de comperaison d'octets.
$c000—;A-t-on appuye sur une touche?
INCEST ;NoD, on passe a 1a piste suivants
5c010
4398 #511 a'agie de Le touche ESCAPE,
are 728 retourne ay mes:
BNPET —/Inerenentation du sumere de pie
perm
RWPST = sFaut-il Line d'autres platen?
DISK 20us, aaut a DISK.
BEGIN Non. on retourne av menu.
OME
STOERR Af fichage d'un message d'erreur.
#PIOERR
ABFICHE
ROKEY — Lecture d'une touche,
BEGIN puis retour av menu.
” + ROUTING U°APPEL DU MOUE MONZTEUR *
26
270
272
7
279
27
275
276 RINON
277
2
209 PRIAOR
were
rusist
ourst
BRERSaR
SERERSEERSRRRSERER
8
3
BSSEGSERTE RRS Sa
SERRSE
craLy+2
rad
cranye2
owe
pBoteee dans Le soniteur.
sReinitielise Le pointeur de pile.
oprtoN
ns ple moniteur a-t-i1 ete appele via le menu?
20ui, on retourne au depart.
2Non, on se branche dans la routine det
ourst
‘+ ROUTINE DE SORTIE DU PROGRAMME *
‘0 + ROUTINE DR COMPARATSON DRS OCTETS +
‘Tour cMenorine Ie nombre dexpransions retrouvess.
40
SHEFE,Y —;Charge un octet a ti
WILD.Y _ :nodifie 1'accu si c'est vn caract inconny,
EXPRESS, ¥ spuis compare avec L'expression source.
INCR PSaut a INCR af co n'est pas identique.
ose sExpression source entierenent testee?
STA 2Nop, on continue les comparaisons.
TOUR
PRIADK 7 Pau d’eftacenent d'ecran si TOUR > 0.
fom
rs
cour sACtiche un 3,
retAee
TETAH
DRNTAK AF Fiche I'adrease de I'expresrion rat rooven
oprron
m2
oR sSaut @ CR ati] avait d'une recherche menoire.
wes
bes
AFFICHE — :Affiche 'P.$' ot 'S.$'.
“3
cH “Place Je curseur ex colonse 13.
nest
PRBYTE Af fiche Je numero de 1a piste
23
ce sPlace ensuite le curseur en colonne 23.
seer JAdeesne haute cs I60me secteur is par RTS.
TSTACE —Calevie ot
PRIEX ——sadEiche Le numero du secteur.
ROUT saute une Li
T0UR
our
422 222 expressions ont~ellex ote ratravvens?
QURST = Out, anut a QUEST.
TSTA*I —sTecrenence 1a partie basse de I'adr de test,
nm fe saute a Tl si le resultat n'est pes ruil.
TSTAC2 —rlecrenente 1a partie haute de l'adr de test.
TSTA2
4595 -Soames-nous dans le buffer EXPRESS?
ICR? vd, on passe @ I'adresse suivante.
4sco pSeanes-nous dans les £/S ($C000..$COFF) ?
INCR2 Ov, 08 passe a I'adresse suivante.
‘TSTACL
#300 shst-ce 1a fin de a zone a tester?
rstY
STAC
4500
very (Mon, on continve Les comparalsens.
Toon (Des enpressions ontmolies ote retrouver
ar ’Men, retour av progranme principal
ARROCHX GAT tiche 'MoMONTTRUR
PRBCHX
AFFICHE
ROKEY —rlacture d'une cove
one shatmce un MH?
m2
Jose 20ei, aaut @ le routine moniteur.
4598 sEat-c0 1a touche ESCAPE ?
cont Nos, saut a CONT pour continuer,
7031, on annuie sadresse de retour,
BEGIN ret on ae rebrenche av depart.
Tour
we je fin du tent eat alle termine?
ar 70eL, retour au programme principal.
40 pMon, 11 reste encore des octate a 1
‘your
NCR to. continue lex comparaiscns.
40 ‘+ ROUTINE D’AFFICRAGE OU NEN *
Pom's n° 29
sn ArFICHE oe save © 79 af te tome carat de Beste <> f=!
WA nn os
STA cH JSR COUT «SAE Lehe Je signe ~ »
JSR ECRAN ine be
py LDA nxoness.x
A 4s JAFFICHAGE DES PARAMBTRES ADRESSES ET PISTES ISR PRE’ :AEtichage du one caractere.
JSR TAY ——: Le curseur est place aur 1a Ligne 5. pe ne oe PSeute on espace.
x 10 Ime
br ws oer
sme cH Hnitialisation borizontale de curseur. BNE BNCOR —Saut ai I'aftich de J'expe n'est pas termine,
WA rs cos A 85
Jon GWT ;AEfichage d'un 5. STA CH 2Place le curseur on bas di sou,
cex #4 W@ TABVBAS puis retour via le RTS de TABVBAS.
eco To Pave 44 Je paranecze ne comporte que z caract.
OA wospores,x eas
yee BSR PRBYEE | :AEfiche 2 caracterer.
380 TWO ER wnRRET, 450 AFFICHE STA RCRA ROUTINE O'APFICIAGE BUR L"ECRAN +
oat JSR PROYTE —:AfCiche 7 carncteren, os ST RCAANGZ 1A ot X aonthennent I'adeense dy nensege.
392 JSR CROUT ret aaute une Ligne. as2 tox 40
33 Ine 453 ECRAM LDA. SFFFF,¥ —;Chargenent d'en earsetere aftisher.
a9 tne 454 BPL DERNIER $i bit %0, {1 s'agit au dernier corectere.
ass cox 4 455 cH a.
336 BCC DOLLAR —;Saut af Le Zone paranetre pas encore affiche. 456 SE Now
397 wor #37 137 JSR CLREOL Si c'est une virguie on efface Ia fin de Ligne.
398 cox 48 458 a ssa0 on charge iecey pour un aaut de igre.
399 BCC DOLLAR — Saut af Ie dene paranetce pas encore affiche. 459.NON JSR COUT —=zAEtichage du caractere.
400 460 ine
401 LOA MDRIVE —:AFFICHAGE DU NUMERO DE LECTEUR EN SERVICE ta IME ECRAN
soz oR 360 482 DERNIER ORA 4580
403 STA s0cr 16 SK COUT Le cernier carect est atfiche en node noreel,
tot 464 ix
405 Lor Loma APPICHAGE DE L“EXPRESSION soURCE 46 INE CLABOL — 1a fin de Ligne etcacee, puis ATS vie CLKEUL.
406 DEQ CURD = Saut 4 CUR ai eapressivi de loogueus ovite.
107 cry ne oe
soe cc INF
409 wr a 469 CODINIT MEX 9000FFFFO0012200
aon os ia 170
a a us 471 0B ASC *AZPFOERSIQ™
az JER TABV ——;0n place Le curseur sur Je ligne 15, a
a3 ma at 472 AFEMEND DCI *~ RECRERCHE D'OCTETS -., *
4 snc spuis on calcule, 474 ASC “(PATRICK COVARE), +,”
is ime a vs ASC. “A ~ NEMOIRE DEBUT,"
46 sec iG toler ta longuevr de I‘expression, 476 ASC °2 ~ MEMOIRE FIN,”
is mee 7 asc * - piste Deper,,*
48 STA CH sla position horizontale dv cursevr. 18 ASC “F ~ Piste rin,”
He toe fe a AS "0 ~ ORIVE,,*
420 ENCOR LOA MILD,X Debut dvaztschage a’vn octet ae I'exprension. 400 asc 8 pe.,,°
2 a4 ae Age 7K RECH WewoERE, «=
@ mat a pSavt a Pl ai le ter caract de i'ectet @ '='. a ie tea
“ae vsk cor JALEiche le signe = piss ae ae a i aaah
425 om Pe ‘ ee
426 Pt WDA EXPRESS, x ed ee ee ce
a 488 KADCHX DCI“, MehONIREUR SPocoWRIHUER BSC-uBHW
40s
oe 490 TOERR EX 87
Se jn ee eT 41 DCI “ANOWALIE LECTURE DISQUETTE,, TAPE UNE TOUCHE *
Gira ra a2 eee 492 TABVBAS LOA 4517
493 one $058
Récapitulation 9088:85 05 AS 05 09 BO 8D CF 9150:91 8C 17 92 C8 8C F4 B7
‘ , 903) 90 EO 06 BO 7A 80 8D Fl B7 A 90 BD
RECHERCHE 909. 5B FB AS 08 85 92 4C 94 91 A9 OF aD
gual FC 20 GF FD CA B7 20 £3 03 20 BS B7
Aprés avoir saisi ce code sous 90A8:30 2C A2 00 AO 00 Ag 02 2C BE Fl B7 CE ED B7
moniteur, vous le sauvegarderez par : 09 A9 00 9D 00 95 ag FO A9 80 8D DE 91 8D
BSAVE RECHERCHE,A$9000,L$4A1 9D 00 96 B9 00 02 ce B7 20 D6 91 AD 00 co
AO FO F8 C9 BD FO 1D 07 2¢ 10 CO C9 9B FO
9000:A2 07 BD 46 53 55 00 CA BO C9 0A 90 OB 69 88 BE EC D7 AS 06 CD EC
9008:10 F8@ AQ 4C BD F5 03 8D FA BO 05 86 07 4C OA BO CA 4C 0A 90 20 58
9010:F8 03 AD OA OD FG 03 aD 29 OF C6 09 FO 1¢ 9D 91A0:FC A9 6C AZ 94 20 20 93
9018:F9 03 A9 90 8D F7 03 8D 95 4C BC 90 C6 09 FO 91A8:20 0C FD 4C 0A 90 £0 09
9020:FA 03 20 7D 92 20 Oc FD 90E8:08 A9 OF 9D 00 96 4C BC 91B0:F0 1E A9 C5 8D F9 03 Ag
9028:A2 09 DD 4E 93 FO 09 CA 90F0:90 BD 00 96 29 FO 9D 00 91R8:97 AN FA 03 20 58 FC 20
9030:10 F8 20 3A FF 4¢ 25 90 90F8:56 A9 00 48 BD 00 95 0A 91COZED FD 4C 69 FF 68 68 AS
9038:8A OA 85 08 £0 04 RO IF 9100:0A 0A OA 9D 00 95 68 18 91C8:08 C9 10 FO DE 4c 55 92
9040:69 95 20 5B FB A9 14 85 9108:7D 00 95 9D 00 95 E8 4c 9100:20 58 FC 4C DO 03 Ag 00
9048:24 AI Ad 85 33 20 6A FN 9110:AR 90 FO 07 BO 1B AS 07 91D8:85 09 AO 00 B9 FF FF 39
9050:20 C? FF 20 A? FF 88 FO 9118:FO 17 AS 00 8D DD 91 AS 91E0:00 96 D9 00 95 DO 49 cB
9058:B1 A6 08 FO 04 90 Oc AS 9120:01 8D DE 91 AS 02 @D 47 91E9:C4 07 DO FO AS 09 DO 03
9060:3E C9 23 90 14 20 3A FF 9128:92 AS 03 8D 4E 92 20 DE 91F0:20 58 FC A9 A4 20 ED FD
9068:4C 0A 90 AS 3F C9 95 FO 9130:91 4C 0A 90 £0 08 BO 76 91F8:2D DE 91 AE DD 91 20 41
9070:F4 C9 CO FO FO 95 01 AS 9138245 07 FO 6F Ad 05 8D EA 9200:F9 AS 08 C9 OC FO 1E Ag
9078:3F 95 00 4c 0A 90 £0 05 9140:B7 AS 04 8D EC B7 AO 00 9208:33 A2 94 20 20 93 A9 OD
9080:B0 12 C6 05 DY v4 AD 02 9148:8C EB B? 8C FO B7 8C DD 9210:85 24 AD EC B7 20 DA FD
Pom's n° 29
—- — a =
|
E
=
9218:A9 17 85 24 38 AI BF ED
9220:DE 91 20 £3 FD 20 ar FD
9228:E6 09 A5 09 C9 16 FO 25
9230:FF DN 91 NO OF FE DE 91
9238:AD DE 91 C9 95 FO F6 C9
9240:CO FO F? AD AN 91 C9 00
9248:D0 90 AD DE 91 C9 00 DO
9250:89 AS 09 FO 77 29 45 A?
9258:94 20 20 93 20 0c FD c9
9260:CD DO 03 4C AR 91 C9 OR
9268:D0 05 68 68 4C 0A 90 AS
9270:09 C9 16 DO G7 A9 00 a5
9278:09 4¢ 30 92 60 AI 00 85
9280:74 20 5R FR A? 0A 20 4A
9288:F9 AQ 58 AZ 93 20 20 93
9290:A9 OD 85 24 20 28 93 Ag
9298:05 20 5B FB A2 90 AO 23
92A0:84 24 AQ Ad 20 ED FD EO
92A8:04 BO 05 B5 01 20 DA FD
92R0:R5 00 20 DA FN 20 BE FD
92B8:E8 E8 EO 04 90 E2 AO 25
92CO:E0 08 90 DC A5 05 09 BO
92C8:8D CF 06 A4 07 FO 4A CO
92D0:0C 90 02 AO OB 84 OA AQ
92D8:0% 20 5B FB AY 29 38 ES
92E0:0A E5 OA E5 OA 85 24 A2
92E8:00 BD 00 96 48 30 U8 AY
92F0:BD 20 ED FD 4C 01 93 BD
4A 4A 4a 4A 20 £3
6A BO 08 A9 BD 20
C13 93 BD 00 95
FD E6 24 £8 88 DO
23 85 24 4C 9A 94
9320:an
9328:BD FF FF 10 10 C9 AC DO
9330:05 FC 20 ED
80 20
c 00 00
Cl DA
cd Dl
9358:AD C5 D2
9360:C3 C8 C5 AO C4 AT CF C2
9368:D4 Co D4 V3 AO AD AC AC
D2 C9 C3
Cl D2 C5
AO AD AO
D2 C5 AO
AC AC DA
DO C¥ D3
CE AC AC
93C8:C4 AO AD AO C4 D2 C9 DE
93D0:C5 AC AC C5 AO AD AO CS
93D8:DB DO AE AC AC D2 AO AD
c3 C8 AO cD CS
9388:CD D2 C5 AC AC D3
93F0:A0 AD AO D2 C5 C3 C@ AO
93F8:C4 C9 D3 D1 DS C5 D4 De
AC AC CD AO AD AO CD
CE C9 D4 C5 DS D2 AC
9410:AC D1 AOD AD AO D1 DS C9
9418:D¢ Dé C5 D2 AO AO AD AO
9420:A0 AQ AO AQ AO AO AO DE
9428:CF D4 D2 C5 AO C3 C8 CF
9430:C9 D8 3A AO AO AO AO AO
9438:D0 AE Ad AO AO AD AO AO
94402:AU AO D4 AE 24 AC CD BD
9448:CD CF CE C9 D4 C5 DS D2
9450:A0 AO AO D3 DO BD C3 CF
9458:CE Dé C9 CE DS C5 D2 AO
9460:A0 AO C5 D3 C3 BD CD C5
9468:CE D5 AO 20 87 Cl CE CF
9470:CB Cl CC C9 CS AO CU CS
D4 DS D2 C5 AO C4 C9
9480:03 D1 D5 CS D4 D4 C5 AC
9488:AC D4 C1 DO C5 DA AO DS
E C5 AO D4 CF DS C3 C8
20 A9 17 4c 5B FR 00
Apple & Minitel
les caractéres semi-graphiques
Léécriture d'un logiciel destiné au
Minitel passe presque invariable-
ment par l'exploitation des
caractéres semi-graphiques ; nous
vous proposons donc une table
des codes de ces derniers.
Chaque caractére semi-graphique
vidéotex est contenu dans une
matrice de 8 points (horizontale-
ment) par 10 points (verticale-
ment) et est divisé en 6 ‘pavés’
élémentaires. L'état — ‘on’ ou
‘off’ — des pavés est déterminé
par la valeur des bits 0, 1, 2, 3, 4
et 6 du code de caractére. Ainsi,
comme Je montre le schéma
ci-joint, le bit 0 détermine l'état
du bloc situé en haut et a gauche,
le bit 1 détermine l'état du bloc
situé en haut et a droite, etc.
Pour passer en mode semi-
graphique, le Minitel attend le
code $0E (14), Le mode ‘dis-
joint’, ot les blocs élémentaires
sont séparés par une ligne, est
obtenu en envoyant les codes
$1IB et $SA (27 et 90). $1B et
$59 (27 ct 89) rctourne au mode
‘joint’. Enfin, le code $0F (15)
permet de repasser en mode
normal ‘texte’.
ol Bn a =) = a
ao $2) 22 2s faa 5 fe
cite)
We $29 RRC
Pal ai-a) tO a
S30 $37 $32 «S35 S34 SS SSG 837
$50 559 S5R 3B SSE 8D
Pee lel
$er sez 63 Hs S83 (80
ri tt jo I. fe ||
feo Woo fen Rete a
CHSSulee
$70 $71 $72,873, S75 876877
waddukae
$7 $79 $7 $7B_COCSTC:O$70 SE
Code du caractére
mibpo. 4 35 2.10
BREAAAAA
Cs
—
Jeu de caractéres Télétel joints
Pom's n° 29
Conversions
HGR © DHGR
Qu'il est agréable de pouvoir
disposer du graphisme double
haute résolution (DHGR) dispo-
nible sur les Apple //c et //e
équipés d'au moins 128K !
Encore faut-il pouvoir l'utiliser a
sa guise : en effet, seuls quelques
logiciels (par exemple Dazzle
Draw ou Extasie) permettent de
manipuler le DHGR.
Malheureusement, ce sont des
programmes fermés et on peut
étre amené face 4 deux types de
problémes :
* vouloir imprimer l'image créée
sur une configuration impri-
mante/interface qui n'a pas été
prévue ;
+ désirer utiliser la souplesse
d'un langage de program-
mation (par excmple
l'Applesoft) pour générer des
séquences répétitives ;
utiliser les fonctions puissantes
des éditeurs HGR traditionnels
(tels que MousePaint ou
Blazing Paddles) sur une
image DIIGR.
Les images DHGR correspondent
a une définition de 560 fois 192
points, alors qu'une image HGR
standard en contient 280 fois
192. Elles sont stockées sur
disque, par les éditeurs
graphiques, comme des fichiers
débutant a l'adresse $2000
jusqu'en $5FFF.
Néanmoins, clles ne peuvent étre
manipulées sans modification par
voue routine préférée d'impres-
sion ou votre programme
Applesoft car, aprés un BLOAD,
la page HGR ne contient que les
octets pairs de l'image pendant
que la page HGR2 contient tous
les octets impairs.
Pour vous en assurer essayez la
séquence suivante ;
HGR
BLOAD IMAGE, A$2000
CALL -151
cos55 pour afficher la page
HGR2
c054 pour retourner en page
HGR
3D0G pour revenir au Basic
Le résultat affiché n'a généra-
lement qu'une ressemblance fort
vague avec l'image que vous avez
si patiemment construite avec, par
exemple, Dazzle Draw...
Il serait done de bon ton de
pouvoir disposer d'une routine
qui convertisse le résultat pour
afficher la partie gauche en page
HGR et la partie droite en page
HGR2. Ces deux parties
pourraient alors étre imprimées,
manipulées 4 votre guise par un
programme Applesoft, ou
sauvegarder sur disque pour étre
modifiées par un éditeur HGR
Alexandre Avrane
traditionnel, Par la suite, il
suffirait de recoller les deux
partics pour obtenir 4 nouveau
une image DHGR.
Coup de chance, le module
DHGR effectue cette conversion !
C'est une routine (sans grande
prétention) qui, chargée en
$8000, contient deux points
d'entrée :
CALL 32768 ($8000)
convertit le fichier chargé en deux
images gauche/droite placées en
HGR et HGR2, c'est a dire
BSAVE IMAGE1,A$2000,L$2000
BSAVE IMAGE2,A$4000,L$2000
CALL 32771 ($8003)
effectue la conversion inverse
afin de sauver le résultat sur
disque, par
BSAVE IMAGE, A$2000,L$4000
et sa récupération ultérieure par
votre éditeur graphique.
DHGR est indépendant du
systéme d'exploitation et pourra
sans difficulté étre utilisé sous
DOS 3.3, ProDOS ou Pascal.
Le fichier T.DHGR contient le
source en Big Mac au format tex-
te ; le programme DHGR.DEMO
illustre son utilisation en
Applesoft.
G
Programme
‘DHGR.DEMO’
100 REM DHGR.DEMO
110;
120:
130 REM Demo d'utilisation de
140 REM DHGR
150 :
160:
200 D§ = CHRS (4):FS = "DHGR"
210 REM passe en graphique
220 HGR2 : HGR
17): REM Esc-Ctrl-Q
239 GOTO 250
240 PRINT D$"BLOAD"F$".PIC,A$2000"
Tle 250 REM charge la routine
260 PRINT D$“BLOAD"F$: REM A$8000
/le+ 265 VTAB 20: PRINT : PRINT "Image chargé
e": GOSUB 1000
Ile 270 REM convertit en 2 images exploitabl
IIgs 280 CALL 32768
290 PRINT "Image convertie au format HGR
": GOSUB 1000
300 REM on va tracer un "X" sur l'image
: PRINT CHRS$ (27) CHRS ( 310 HCOLOR= 3: REM blanc
315 REM surtout ne pas oublier d'initi
230 REM si on voulait charger une image 316 REM l'adresse 230 sinon gros bobo...
Pom's n° 29
320 POKE 230,32: REM travaille sur HGR1 34 CONV*] «LDA V1
330 HPLOT 0,0 TO 279,95: HPLOT 279,96 TO 2 Bae I etee CS taal
0,191 36 BCS CONV*X ouil
a 37 Lox 40
340 POKE 230,64: REM travaille sur HGR2 48 wr #0
350 HPLOT 0,96 TO 279,191: HPLOT 0,95 TO 39 JSR HPOSN calcule GBASL
7a 40 PLP
“s eee at PHP
360 PRINT "Image terminée": GOSUB 1000 Pe ipelc CONMIN sk. Convene?
400 REM reconvertit au format DHGR 43 JSR CONV*2A
410 CALL 32771 re bt oe
412 PRINT "Image reconvertie au format D emis ee eae
HGR": GOSUR 1000 47 JSR CONV*2A
415 END 48 CONVAIA INC V1 ligne suivante
420 REM et si on voulait sauver l'image Smee Ge
430 PRINT D$"BSAVE"F$".PIC,A$2000, L$4000 bye bye
”
440 REM mette L$4000 et non L$3FF@ pour
450 REM certains utilitaires DHGR 55 CONVA2A LDY #40-1 40 colonnes par page HGR
460 END 56 EDK #80-1 80 colonnes par page D'GR
1000 REM Routine d'affichage a SONU 2: USK (SIE (BORE fi
1010 PRINT "<1>/<2> affiche HGR1/HGR2 a ena
PRINT "<Return> continue "; 60 JSR SWAP HGRL
1020 GET K$: IF K$ = "1" THEN K = PEEK 61 JSR CONV*?C
(49236) : REM $C05S4 poe
1030 IF K$ = "2" THEN K = PEEK (49237): 64 BEE COMUNE
REM $C055 65 RTS
1040 IF ASC (K$) = 13 THEN PRINT : RET se
URN é
1050 GOTO 1020 69 CONV*2B LDX #80-1
70 JSR SWAP HGRZ
‘ , 71 JSR CONV"? vide NEWLINE vers HGR2
Source ‘T.DHGR 22 JSR SWAP HGR
Assembleur Big Mac, format TEXT 73 ask CONV*3 vide NEWLINE vers HGR1
: J DOS 3.3 | 3: eS
shensranssovssanasnsseoes iy
2 + coNVERSTON ONGR/2 oR * ProDOS |»: -
sensensassessnanssenssese 2
4 78 CONV*2C LDA (GBASL),¥
5 * Cette routine convertit des images DHGR 79 io
6 * stackées en un fichier hinaire chargé en 20 LDA NEWLINE, X
7 * $2000 jusqu'en $5FFF, en deux images al STA (GBASL)ȴ
8 * graphiques (parties gauche 6 droite) a2 PLA
mim a aa 23 STA NEWLINE,X échange NEWLINE et page HGR
11 * Deux points dtentrée: a ais
12 * CONVERT! ($8000) pour conversion DHGR -> HGR+HGR2 23
12 * CONVERT2 ($8003) pour conversion HCR+HGR2 -> DHGR =
14
= er 88 CONV*3 «LDY #40-1
ae s ene aa sarisiee a9 CONV*4 JSR CONV*2C
17 * (C) 1986 Alexandre Avrane £2 oe
12 a DEY
92 ‘BPL cONV*4
19 coast == «$26
20 HPAG = SEC 2 ue
21 HYUSN 2 oral
22
po CONVERT! a * Entrée DHGR -> 2 HGR 97 SWAP LDA CBASL41
Py Ge cca. ete 98 EOR #960 échange vecteurs HCRI & HGR2
26 CONVERT2 = = * Entrée 2 IIGR -> DIGR af Sen CORTES
27 SEC de ee
28 CONV*O PHP sauve carry
29 LDA #2$2000
20 STA HPAG page graphique 1
31 LDA #0 }
32 STA Vi lére ligne pha: Cent Ne
33
000:18 90 01 38 08 A9 20 85 8040220 71 80 20 5A 80 CA 88 —-08B:A9 98 85 43 AD 00 20 20
Récapitulation BO0R:F6 AY 00 &D 78 BO AD 78 8048:10 EF 60 A2 4F 20 71 60 8090:FE AO D6 84 3C AO 83 84
DHGR’ 8010:80 C9 CO BO 1E A2 00 AO 8050:20 67 80 20 71 80 20 67 — 8098:3D AO DS 84 3E AD AR AE
. ey 8018:00 20 11 F4 28 08 BO 08 8058:;80 60 Bl 26 48 BD 79 60 80A0:3F AO D@ 84 43 AO 00 G4
Palast dolionapheepiedineed 8020:20 35 80 20 4B 80 30 06 8060:91 26 68 90 79 80 60 AD —-80A8: 42 20 2C FE AY 1C wD IA
‘moniteur, vous le sauvegarderez 8028:20 48 80 20 35 60 EE 78 8068:27 20 SA 80 CA 88 10 F3 —-80B0:81 AS 81 GD 18 81 20 13
par BSAVE DHGR, 8030:80 DO DB 28 60 A027 .A2 8070:60 AS 27 49 60 AS 77 60 —-gORA?AI C9 ND FO 06 9D 00 00
A Ls 8038:4F 20 71 80 20 5A 80 CA 8078:A9 82 65 3D AD DE 85 3E @0CO:E@ DO F3 A2 00 20 11 81
BUBUIAY #3 85 3P.AZ 53.89 42 HOCE:BD
12 Pom's n° 29
De l’octet au nibble :
Kyram
Ce nouvel utilitaire n'est pas d'un
usage évident en premiére
approche ; garder le manuel du
DOS 3.3 a portée de la main est
une sage précaution. C'est dans
un esprit d'utilisation pratique
que le mode d'emploi qui suit est
basé sur l'exemple.
Il vous permet de lire une
disquette dont le formatage est
fantaisiste, de savoir quel
formatage a été utilisé, de
protéger vos disquettes...
Pour lancer KYRAM, faire :
BRUN KYRAM
Un message du type :
L'AMPERSAND EST
OPERATIONNEL
doit s'afficher.
Présentation
générale
Le DOS 3.3 ne permet pas
d'utiliser 4 100 % les disquettes,
l'utilisateur n'ayant accés au
support magnétique que dans les
limites de ce que le DOS 3.3
autorise. Le catalogue DOIT étre
en piste $11, par exemple.
KYRAM se propose d'ajouter
quelques commandes au Basic
afin d'augmenter l'efficacité du
SED (Systéme d'Exploitation de
Disquettes), et de permettre a
Yutilisateur d'ausculter en détail
le contenu récl de la disquette.
Pour ajouter ces commandes, le
programme exploite I'&. Quand
Yinterpréteur rencontre ce carac-
tére, il fait un saut a l'adresse
contenue en $03F5, adresse de
KYRAM, programme qui ‘rendra
la main’ au Basic en fin de
travail.
Chaque commande est un mot de
cing lettres précédé de &, et
éyentuellement suivi d'une chaine
ou d'une variable alphanumérique
(A$ ou "TOTO" par exemple).
Toutefois, si vous optez pour la
solution variable alphanumérique,
il est bon que l'ordre soit précédé
d'une affectation de type A$=A$,
ceci afin de préparer les routines
Applesoft utilisées par le pro-
gramme.
Note : il est utile d’essayer les
commandes qui suivent au fur et
a mesure de leur description.
Commandes
générales
Ces commandes donnent des
renseignements concernant le
fonctionnement de KYRAM, les
paramétres internes du DOS... Il
s'agit de &QUID!, &DIAGN,
&COMMS ect &LRWTS.
&QUID!
Si vous tapez cette commande,
puis CALL-151 et 320.400,
divers nombres hexadécimaux
apparaitront, nombres qui repré-
sentent les prologues et épilogues
des champs adresse et données.
& DIAGN (DIAGNostique)
Normalement, le message :
* KYRAM * PAS D'ERREUR A
LA DERNIERE COMMANDE
doit apparaitre, yous indiquant
que la derniére opération sur
disquette a été menée a bien.
&COMMS (COMMandeS)
On demande par cet ordre la liste
des commandes disponibles.
Certaines commandes sont
suivies de ‘_’ qui rappelle que
des paramétres doivent suivre. Si
vous les ommettiez, vous obtien-
driez :
Gildas Ménier
ERREUR D'OPERANDE
&LRWTS (Liste RWTS)
L'écran est effacé et apparaissent
divers mots et nombres hexadé-
cimaux dont nous verrons la
signification plus loin.
Acces au disque
La disquette est divisée en 35
pistes (en principe...), chacune
étant divisée en 16 secteurs.
&SECRE (SECtor REad)
Cet ordre permet de lire un
secteur. Pour lire le secteur $00
de la piste $01, il faut taper :
&SECRE "0001"
Le secteur est alors lu et écrit en
mémoire, de l'adresse $2000 4
l'adresse $20FF. Pour en étre
sir, &DIAGN doit indiquer que
tout s'est bien passé.
&SECRE "OF11"
commande la lecture du premier
secteur du catalogue.
&BUFAS
Suite logique de la commande
précédente, affiche sur l'écran le
secteur qui vient d’étre lu (un
décalage s'affiche au début de
chaque ligne).
&SECWR (SECtor WRite)
Pour écrire un secteur com-
mengant en $2000, il faut taper :
&SECWR "0001"
s'il devait étre écrit sur le secteur
0 de la piste 1 (Changez de
disquette avant de tenter
l'opération).
&INITD (INIT Disquette)
Cette commande formatera la
disquette SANS y mettre de
Pom's n° 29
catalogue ni de DOS.
De l'octet au
nibble
Avant écriture sur le disque, les
octets composant le secteur sont
d'abord codés en nibbles. Ils sont
a la disquette ce que les octets
sont a la mémoire. Un lecteur ne
peut lire et écrire que des nibbles
et comme il y a moins de 256
nibbles différents et valables, un
secteur sur le disque occupe plus
de 256 nibbles... De plus,
comme les pistes sont circulaires
(eh oui !), il faut bien que
quelque chose indique au Iccteur
ot commence le secteur qu'on
veut lire,
Pour séparer ses secteurs, le DOS
3.3 utilise des blocs de nibbles (la
plupart du temps des $FF) un peu
spéciaux, des nibbles synchro-
nisés.
Pour en écrire un sur la disquette,
le DOS utilise des routines dans
lesquelles le temps d'exécution
est primordial, et il ne sera pas
écrit exactement comme les autres
nibbles. Ainsi, les secteurs seront
séparés.
Il faut maintenant que le lecteur
trouve le secteur XX sur cette
piste : le DOS 3.3 lit les premiers
nibbles aprés les nibbles synchro-
nisés et il recherche une série du
type DS AA 96 (ces nibbles sont
réservés, c'est-a-dire qu'on ne
peut pas trouver DS dans un
secteur codé en nibbles).
Cette série de trois nibbles
constitue le prologue du champ
adresse. Prologue parce qu'ils
marquent le début d'une autre
série qui indique, codés, le
numéro de volume, le numéro de
piste, le numéro de secteur et,
enfin, un ‘checksum’ ; tout ceci
est le champ adresse. Le
‘checksum’ est une somme de
contréle qui permet a l'ordinateur
détre sir que les différents
numéros ont été bien lus. Si ce
n'est pas le cas : I/O ERROR,
aprés quelques autres tentatives
bien entendus.
Huit nibbles aprés le prologue,
on trouve DE AA EB, l'épilogue
du champ adresse. Plus loin, on
trouve DS AA AD qui est le
prologue du champ données : ici
débute le secteur codé, celui lu
par &SECRE "...." (ou presque).
DE AA EB ferme Ia marche (c'est
l'épilogue du champ de données).
Aprés, on retrouve une série de
nibbles synchronisés.
&RDTRK (ReaD TRacK)
Pour lire la piste 2 (par exemple)
sans la décoder, taper :
&RDTRK "02"
puis :
CALL-151
puis :
2000.3F00 (‘freiner’ le listing
par CTRL-S) et relire ce qui
précéde...
Pour que le DOS puisse lire un
secteur, il faut que les valeurs des
prologues, épilogues et autres
‘checksum’ correspondent parfai-
tement avec les valeurs D5 AA
96... sinon il n'y a pas de lecture
possible. Certains programmes
indiquent d'ou vient l'erreur si
erreur il y a (A : adresse, D:
données). D'autres programmes
essaient de recopier les secteurs
méme s'il manque un AA par
exemple.
&MAXPI
La récupération de 4Ko supplé-
mentaires sur la disquette (exem-
ple classique) servira d'exemple.
Taper :
&MAWPI "24"
puis :
&LRWTS
puis, avec une disquette vierge,
INIT HELLO.
Cette nouvelle disquette comporte
$24 pistes au lieu de $23. Pour
utiliser cette place disponible, il
faut modifier la VTOC (table
d'occupation du volume) ce qui
indiquera au DOS les nouveaux
secteurs accessibles (se reporter
au manuel DOS pour I'organisa-
tion de la VTOC). Il faut pour ce
faire, lire la VTOC :
&SECRE "0011"
Duis :
CALL-151
puis :
20CO:FF FF 00 00 FF FF
pour libérer la piste $24, puis :
2030:12 01 00 00 24 —
pour dire au SED qu'il peut
compter sur une piste de plus.
Bien sar, il convient de revenir au
Basic par Ctrl-C puis d’écrire
cette VTOC 18 of on I'a trouvée :
&SECWR "0011"
Idée
Puisque c'est un octet dans la
VTOC qui indique la position du
catalogue, pourquoi ne pas
transférer ce dernier sur cette
piste $24 ? Comme la plupart des
copieurs ne copient pas cette
piste, un double de cette disquette
ainsi customisée ne serait guére
utilisable...
La méthode
* formater une disquette $24
pistes ;
* lirela VTOC;
+ modifier la position du
catalogue (octet 1 et 2 de la
VTOC, l'octet 0 étant inuti-
lisé, voir annexe C du manuel
DOS) ;
¢ lire le premier secteur du cata-
logue en secteur OF, piste $11
et le réécrire en Secteur $OF,
Piste $24 ;
+ idem pour tous les autres
secteurs de la piste (de $0E a
$01);
¢ ne pas oublier de protéger
dans la VTOC la piste $24
qui, utilisée par le catalogue,
n'est plus disponible ;
+ libérer la piste $11, ancien
catalogue.
Malgré cette derniére modifica-
tion, le DOS s'interdira d'écrire 4
la place de l'ancien catalogue.
Pour l'y forcer, taper :
&ASAUV
avant de formater la disquette.
L'ordre inverse, pour éviter
d'écrire sur la piste $11 est:
&PSAUV.
(sLRWTS vous donne entre autre
la valeur de SAU11 : $A9 = le
Pom's n° 29
TT TTT
check
volume piste secteur sum
FF FF FF FF DS AAQ6 FF FE D6 96 Dé 96 DO 96 DE AA EB .. DS AA AD .. DE AA EB FF FF FF FF
IL Jt JL ii J} yt J
Octets do Prologue Champ adresse Epilogue Prologue Epilogue
synchronisation du du du du
champ champ champ champ
adresse adresse données données
Champ données (secteur codé en 342
nibbles pour 256 octets + checksum)
Le secteur sur la disquette
Les octets de synchronisation sont en fait constitués de 10 bits (1111111100). La méthode de synchronisation
et le détail du codage du secteur (méthode 6/2) sont décrits en détail dans Beneath Apple DOS et Beneath
Apple ProDOS, bibles de l'Applemaniaque...
DOS peut écrire piste $11 ; $69 =
il ne peut pas)
Retaper cette liste d'ordres a
chaque manipulation de disquette
est fastidieux. Faites-en un
programme Basic qu'il suffira de
RUNer...
Idée (bis)
Vous avez ‘deleté’ un fichier et
vous souhaitez le récupérer :
opération simple s'il n'est pas
déja écrasé par un autre fichier.
Trouver d'abord le secteur du
catalogue ou se trouve votre
programme : taper
&SECRE "OF11" &BUFAS
&SECRE “O0E11" &BUFAS
&SECRE "0D11" sBUFAS
jusqu'a apparition a l'écran du
nom de votre programme,
KYRAM par exemple.
Choisir l'offset le plus prés du
nom : $00. Taper CALL - 151
puis :
2000.2020
réponse :
2000:00 00 FF 01 04 kk yy
rr aa mm AO AQ AO..10
(kk yy rr aa mm représentent les
codes ASCII de KYRAM)
A la fin des AQ (espaces) vous
tomberez par exemple sur 10.
FF indique que le fichier est
effacé, 10 et 01 indiquent la piste
et le secteur de début du fichier.
Remplacer FF par 10 et 10 par
AO puis réécrire le secteur 14 ob
on I'a trouvé. Sauvegarder le
fichier retrouvé sur une autre
disquette ou bien le protéger dans
la VTOC.
Pourquoi également ne pas
modifier les messages d'erreur du
DOS et, par exemple, remplacer
l'entéte du catalogue (Disk
Voluime...) par CTRL-D suivi de
INIT HELLO...
Prologue,
Epilogue,
Kyram,
et protection
En tapant «comms, on constate
que certains ordres restent
inconnus.
&WAPRO permet de modifier le
prologue champ adresse dans les
routines d'écriture, par exemple
&WAPRO "DS AA 96": le DOS lira
la piste jusqu'a découvrir ce
prologue qui lui indique qu'un
champ adresse suit.
&RAPRO (comme Read Adress
PROlogue) fait de méme dans les
routines de lecture.
Quand le DOS lit un secteur, il
cherche la valeur de RAPRO et
quand il écrit, celle de WAPRO.
Idem pour <RDPRO et EWOPRO qui
se rapportent au champ données.
Idem pour «RAEPI, &RDEPI,
&WAEPTI et &DEPT qui concernent
l'épilogue.
Note : il ne faut préciser que deux
nibbles pour &RAEPI et RDEPI,
le DOS ne tenant pas compte du
troisiéme.
Par exemple ; &RAEPI "DEAA"
(RAEPI comme Read Adress
EPlIlogue).
&SYNCR "FF", par exemple,
permet de changer la valeur du
nibble de synchronisation ce qui
perturbera sensiblement la plupart
des copieurs...
Un exemple
Créer une disquette pour étudier
ces commandes, faire :
&WAPRO"D5BBCC" puis
INIT HELLO.
Maintenant, une tentative de
CATALOG conduit a un I/O
ERROR car le DOS cherchait
comme prologue d'adresse DS
AA 96 et il ne pouvait trouver que
DS BB CC.
Comment lire maintenant ? En
faisant &RAPRO "DSBBCC" pour
qu’en lecture le DOS cherche le
bon prologue.
Vous pouyez maintenant vous
servir de cette disquette
normalement, mais essayez de la
copier...
Un probléme _ subsiste
impossible de booter sur ce
disque new look. En effet, la
ROM C6 de l'Apple, solicitée
Pom's n° 29
lors du Boot cherche obstinément
DS AA 96. Avant de lire cette
disquette, il faut donc charger
Kyram et modifier les
paramétres.
On peut de la méme manitre
changer prologue et épilogue.
Une autre idée serait de protéger
un programme parmi d'autres :
sur une disquette normale,
changer le prologue données de
fagon a avoir DS XX YY
(écriture) puis sauver votre
programme par BSAVE ou SAVE.
Faire alors NEW, SWDPRO"D5 AA
DD", &NOPRO, SAVE RIEN,
DELETE RIEN, &TSTPR.
&NOPRO demande au DOS
d'iignorer XX et YY, SAVE et
DELETE RIEN servent a réécrire le
catalogue avec le prologue
normal,
Un essai de LOAD ou BLOAD du
programme conduit 4 un I/O
ERROR. Pour le relire, un
&NOPRO est de rigueur.
Face 4 une disquette
inconnue
La disquette refuse d'étre lue :
Kyram devrait vous tirer
d'affaire. Lire une piste avec
&RDTRK, regarder les valeurs de
prologue et d'épilogue.
Neutraliser le contréle de
checksum par &NOCHK. Entrer les
valeurs de prologue et d'épilogue
trouvées a l'aide de «RDTRK.
Essayer un catalogue, ¢a marche,
tant mieux. Sinon, il faut trouver
le catalogue et une boucle en
Basic utilisant «SRCRE et &BUFAS
rendra service pour trouver un
secteur qui, de prés ou de loin,
ressemble 4 une VTOC...
En conclusion
Benjamin Franklin disait qu'il
fallait pouvoir scier avec une lime
et limer avec une scie. Kyram n'a
peut-étre pas d'applications en
menuiseric, mais il semble que
ses possibilités soient trés
étendues, l'imagination en est
toutefois une limite. Les
Temarques et suggestions
pourront étre transmises a
l'auteur par l'intermédiaire de la
Teyue.
55
Source T.KYRAM Strom mou 968° scoete oe MmOTAE enrvo~Amy
57 XPER FOU $0380. «=F TRANSFERT D'EXECUTION PRINC-AUX
Assembleur BigMac sa
59
ae 60
re ? ; iS
as : yea v2.1 : e onc $3FPA —— : ORICINE
a ‘ ‘ a
ee Rerereo errr cre) Be ee eases es | eau sie 2m ie
7 66
a 7
9 * C.MEWIER fe) 86 sre 66 Usk DEBUT «PRESENTE VECTORISE «/RETOUN AUX
e Gee $0432 |RETOUR AU BASre (cHDLOCE)
12 + SPROCRAMME DE MODIFICATION DES PARAMETANE INTERNES DU DOS 59
12+ QUT PERMET, PAR BxCME! y
19 RARE: oS 72 KYRAME =LDA $400
If + L/UPTLISATION DBS MEMOIRES AUXTLIAIRE (CARTE £0 Cot) a STA. SAUVI
15 + LIGTILISATION DES ROUTINES ANTS. 7 LOA $401 [POUR AFPICHER ‘KY?
16 + EA MODIFICATION DES PARANETRES INTERNES OU DOS 5 STA SaUv2
17 * ZA CREATION DB DISKETTES FORMATTEES A VOLONZE % TOA Ke LON ABPICHE 'KY"
18 * ZA ABLEGTORE DE PROGRAM SUN CES ULSKBTTES 7 STA $400
af . 78 LDA #'y"
a 79 STA $401
ad 80
81 JSR GETLIME — ;COPIE DU BUFFER $200 EN BUFFIN
23 * PLAN PROGRAMME: - COPIE DU BUFFER BASIC (EN $200) DANS 82 JSR LOOPPRIN ;RECHERCHE DU MOT
ae UN BUFFER EN $300 3
2s* ~ RECHERCHE DU MOT DANS UNE TABLE: LES a4 LDA SAUVI #ON REMET LES 2 CARACTERES ECRAN
2° MOTS FONT 5 LETTRES. UNE ERREUR CONDUIT ra el ee!
ee A "*KYRAM* ERREUR DE SYNTAXE.* 86 LDA SAUV2 7A OU OW LES A TROUVE...
2a = SIWON BRANCHEMENT DIRECTEMEND AU MOT re Sta 5402
oe No. compr. ee
30° “ow UTILISE POUR LE PASSAGE DE a
ut PARAMETRE, LES SP "DECODE. CONVERT. .* 30 TEST LDA #COMMANDR 70N INTTTALISR LE DEBUT DE LA
opt wi STA $1A ‘STR DES COMMANDRS
ae 92 LDA #/COMMANDE :POUR SAUTER EN INDIRECT
gat - TABLE DES SYMBOLES -
el 83 STA 518 :
36 PASSE = BQU $06 +SERT COMME OCTET DE PASSAGE ad
37 SECONDE BOU $07 #CONTIENT LA POSITION DE * No.2 95 Ba Poet LE <CORMAARTES
38 BUFFIN EBOU $08 +POSITION DU BUFFER DE KYRAM 96 cup 440 NANT
‘39 VALTYP QU $11 sCONTIENT LE TYPE DR LA VARIABLE 7 BCS NON #PAS VALIDE:SN ERROR
40 vor fou $18 ‘SERT POUR LA RECHERCHE DU MOT 98
«2 COMPT FOU SCR CONTIENT LE No.DU MOT TROUVE 99 ASL sare
42 SADVI Fou $ik DIVERS 100 cLe :
43:-SAIV2 = FU SIF 2 (VOUS AVEZ DIS VERT 2) 101 abc CONPT aes
44 ale Bou $3c sUTILISES PAR CERTAIN SP MONITEURS 102 cle is
45 AlN mou $3D 103 ADC SIA 4ON PREPARE LE SAUT / No.
46 AQL BQU $3E 104 BNE PASADJ SI > 255 ON AJUSTE LE TIR
47 A2H BQU $36 105 INC $1B SADRESSE HAUTE
aie | Ses 106 PASADT STA SIA ;
49 Aa Bou 343 207:
sy 108
51 STROUT QU $DB3A ¢SORTIE ECRAN DU TXT POINTE /Ys A 109 ume ($14) FON SAUTE A 1A COMMANDE
52 CHRGET BQU 3B1 210
53 PRBYTE 5QU $FDDA #SORTIE ECRAN DE A EN HEXA 121 NON Me ERROR 4SN ERROR
‘54 MYSBEX EQU $BESA #ROUTINE DOS: POSITION DE LA TETE a8
Pom's n° 29
Les commandes de Kyram
DOS 3.3 |
— passage de parametres
L lecture He
E écriture /le+
les exemples sont les valeurs normales des paramétres I/e
&COMMS affiche la liste des commandes Igs
GLRWTS affiche les paramétres modifiables du DOS
L &CHKSU __ provoque le contréle du checksum en lecture (CHKSUM = 01)
L &NOCHK _ rend inopérant ce test (CHKSUM = 00)
L &TSTPR provoque le test des 2 derniers nibbles du prologue DATA lecture
L &NOPRO ne teste que le premier nibble du prologue DATA lecture
E-— &WAPRO _ modifie le prologue adresse écriture : &6WAPRO "D5AA96"
E- &WDPRO _ modifie prologue DATA écriture : &WDPRO "D5SAAAD"
E - &WAEPI modifie épilogue adresse écriture : &WAEPI "DEAAEB"
E - &WDEPI modifie épilogue DATA écriture : &WDEPI "DEAAEB"
L —- GRAPRO modifie le prologue adresse lecture : RAPRO "D5AA96"
L —- &RDPRO modifie le prologue DATA lecture : GRDPRO “D5AAAD"
L — GRAEPI modifie le prologue adresse lecture : GRAEPI "DEAA"
L — GRDEPI modifie le prologue DATA lecture : &RDEPI "DEAA"
E— &SYNCR modifie le nibble synchro formatage : &SYNCR "FF"
E —- &MAXPI nb maxi de pistes formatées : SMAXPI "23"
E — &MAXSE nb maxi de secteurs formatées : GMAXSE "0F"
LE- &VTSET position de VTOC : &VTSET "1100" (“ppss")
E GASAUV _ permet l’écriture sur la piste $11 SAUII vaut A9
E &PSAUV _ l'empéche SAUII vaut 69
&QUID! en $320 : prologues, épilogues, sync, VTOC
L—- &RDTRK iit la piste de $2000 4 $3F00 : SRDTRK "01"
GRESET Ctrl-Reset = Boot
G&NRESE Ctrl-Reset # Boot
L — &SECRE lit un secteur &GSECRE "0001" (“sspp”) résultat en $2000
E- G&SECWR _ écrit un secteur &SECWR "0001" ("sspp") écriture de $2000
E &INITD formate le disque sans DOS ni VTOC ni catalogue
&BUFAS affiche $FF caractéres en format TEXT a partir de $2000 (avec offset)
&DIAGN derniére erreur sur Kyram. Code d'erreur en $300
&KYRAM _ est branché
- GAMOVE _ transfert de xxxx a@ yyyy vers zzzz en mémoire auxiliaire :
GAMOVE "xxxxyyyyzzzz"
- GPMOVE transfert de xxxx a yyyy vers zzzz en mémoire principale :
&PMOVE "xxxxyyyyzzzz"
G&AEXEC transfert d'exécution vers mémoire auxiliaire
&PEXEC transfert d’exécution vers mémoire principale
&RETPR laisse en $320 adresse de retour vers mémoire principale
GRETAU laisse en $320 adresse de retour vers mémoire auxiliaire
113 t= 123 MP MOTH ;MDPRO: ' DA PROLOG ( * }
14 124 UMP MOTI sWAEPI: © AD EPILOG ( ' }
125 125 UMP MOTI #WDEPI: # DA EPILOG { ' )
116 COMMANDE JMP MOTA + COMMS: LISTE DES COMMANDES 126 UMP MOTK ¢RAPRO; ¥ AD PROLOG (LECTU)
117 ‘IMP MOTB #LRWTS:LISTE DES PARAMETRES 127 UMP = MOTL #RDPRO: + DA PROLOG ( * )
116 ‘IMP MOTC #CHKSU: TESTE LE CHEKSUM ADRESSE 128 UMP MOTH #RAEPI: € AD EPILOG ( ' )
119 IMP MOTD #NOCHK:N‘EN TIENT PAS COMPTE 129 IMP MOTN #RDEPT: 3 DA EPILOG ( ' )
120 UMP MOTE #TSTPR: TESTE LE PROLOG DATA 130 IMP MOTO 7 SYNCR:MODIFIE NIBBLE SYNCHRO
121 ‘UMP MOTF 4NOPRO:NE TESTE QUE LE 1ER (DS) 131 IMP MOTP ¢MAXPI:AU PORMATAGE: NB PISTES
122 oMe More INAPRO:MODIPIE AD PROLOG (ECRIT) 132 ce woT0 IMAXSE: NB SECTEURS
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
153
154
155
156
187
158
159
160
161
162
163
164
165
166
167
168
169
170
171
102
173
174
175
176
177
178
179
180
182
186
187
188
189
190
191
132
193
194
195
196
197
198
199
200
201
202
203
208
205
206
207
208
209
220
21
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
UMP OTR #VISBT:PUSITION DE VTOC
OME MOTS GASAUV:PEKMET BCKITORE TRE 22
UMP MOTT
ume MOTO QUID! :LAISSE EN 5320 HeAUtVTOC
UMP MOTV RDIRK:LIRE EN $2000 LA PISTE N
ome NOTH RESET: VECTORISE VERS BOOT
UMP MOTX @NRESE:PAS DE SOOT SI RESET
oMe MOTY ;SECRE:LIRE UN SECTEUR (#"S.T.")
UMP MOTB! GSECWR:ECRIRE — * ‘
UMP MOTZ INITD:INIT SANS DOS SANS CATALOG
IMP MOTAL BUPAS:AFFICHE $2000 EN FORMAT TXT
uMe MoTC! {DIAGN:AFFI. ERR/SECRESSECWRéINITO
UMP KYRAM ;KYRAM: VECTORISE L ‘AMPERSAND
wMe AMOV SP DU Ile TRANSFERT DE MEV -> AUX
uMe MOV SP DU Ile TRANSFERT DE MEV -> PRI
UMP AEX “SP DU Ile TRANSFERT EXEC -> AUX
UMP PEXE SP DU Ile TRANSFERT EXEC -> PRIN
UMP ETP sLAISSE EN $320 BILLET DE RET PRIN
IMP RETA “EAISSE EN $320 BILLET DE RET AUXI
0B HEX 01600100
RK HEX 00 i-> No DE PISTE
STR HEX 00 i-> No DE SECTEUR
HEX C240 s>> TABLE CARACTERISTIQUES UNITE
HEX 0020 “BUFFER D'ENVOIS
RX 0000
com WRX 00 COMMANDE (00, 01,02.04)
ERR HEX 00 ZCONTTENT ERR SI INDIC P AI
‘HEX 006001
CARD «HEX OOO1RFD8 =: TABLE DES CARACTERTSTTOQURS
MOTA JSR $ECSB HOME
LDA 4KY ?ABPICHE TITRE *KYRAM*
bby 4/Ke ’
vse strour |;
LDA #ceD “GABPICHE L'ECRAN COMMANDES
bor #/cHD 7
SK STROUT
LDA ¢cMmr ?
LY #/CHD1 é
JSR STROUT i;
LDA #cMD2 z
Loy @/cMp2
JSR STROUT =;
RIS RETOUR PRG D'APPEL
JSR SEC5B HOME
LDA #KY APPICHE *KYRAM?
LY #/xY
JSR STROUT
LDA ¢ADREAD = ;APPICHE "READ SYS.
LDY #/ADREAD
JsR sTROUr
BDA $8955 ON VA CHERCHER READ ADD PROLOG
JSR PRBYTE =; ON LAFFICHE
WA $899" ae
JSR PRBYTE 9;
LDA $B96A ¢
JSR PRBYTE ;
JSR FING JON ABFICHE "FIN DE CHAMP:
LDA $3991 ¢BT ON AFFICHE
JSR PRBYTE ;LE READ ADD EPILOG
LDA $8998 +
JSR PRBYTE ;
JSR CHD YON APPICHE "CHAMP DONNEES:"
LDA $B8E7 sET ON L'AFPICHE
JSR PRBYTE
LDA $B8F1
JSR PRBYTE
LDA $BeFC
JSR PRBYTE
JSR PINC MEME CHOSE POUR "PIN DE CHAMP:"
LDA $R935
ISR PRAYTR
LDA $R9aP
JSR PRBYTE
EDA #ADWRITE —+ON REPAIT TOUT CA AVEC
LDY ¢/ADWRITE /*WRITE SYSTEM:...°
ver stRour
LDA $BC7A
JSR PRBYTE
‘WDA $ac7E
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
24a
245
246
247
248
249
250
251
252
253
254
255
256
257
256
259
260
261
262
263
268
265
266
267
268
269
270
on
272
273
274
275
276
277
278
279
280
281
282
283
286
285
286
287
288
289
290
292
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
31
312
313
314
315
316
317
318
319
320
321
322
323
328
our
ouars:
use
USK
‘LDA
sk
LDA
USK
1A
Ly
JSR
10x
cex
BEQ
JSR
Lor
JSR
PRBYTE
$3ca¢
PRBYTE,
Fine
BDCAE,
PRBYTE
$8C53
PRBYTE
sacae
PRBYTE
cu
$u853
PRBY TS
sues
PRBYTE
saesv
PRY TE
FING
$8895
PRBYTE
$B8A3
PRBYTE
$B6A8
PRBYTE
#CHKSUM
4/CHKSUM
STROUT
$B92E
401 ‘
#913 SI L'OCT CHERCHE A 13 (BNE L+13)
our 4ON ECRIT "OUI"
400 ¢SINON "NON"
PRBYTE ©; AFFICHE A EN HEXAA
+ °CHERSUM: "
gapRTsT —-: IDEM AVEC TEST DE L'EPILOG DATA
a/pprest
sTROUT
$383
02
#SF2
ouars.
100
PRBYTE PRT A
SALVE
4/SAOVE
STROUT
98292
PREYTE
ON APPICHE OCTET SAUVECARDE DE LA
async JON AFFICHE LE NIBBLE DE SYNCHRO
async
‘STROUT
$Bc60
PRBYTE
4#NSPISTES
/NREISTES
sTRoUr
SREFE
PRAYTE
suasecr
s/NBseCT
STROUT
$BP2A
PRBYTE
:ON APPICHE LE NB MAXI DE PISTES
JON ECRIT LE NB MAXI DE SECTEURS
7EN CB QUI CONCERNE FORMAT.
evroc
srvroc
STROUT
gacoz
PRBYTE
ssecreue
{VOILA LA POSITION DE vToc
¢ON AFFICHE L‘ADD DU + RECENT PRG
7+++BT SA LONGUEUR.
Pom's n° 29
325 ase peayre “21 sta 90085
336 TOA SCTRR © TRACK COURANT OUR KYRA (22 Den convent
33) iby sverme 423 bra s095r
3a eR STROUP tea Gan conven?
38 toa tex fez STA $5964
330 ask Raves ize GSK RESTORE
331 Toa gorax .BP Aust oun Le DOs, wer ars
332 tor #/oraK 20 wore
333 gen Smoot ws wa #500 /RDPRO
334 LOA 687 PAS MARRANT A TROUVER:3E7~3E0 450 Sia SecoNDE
338 Sta G0 ‘Courier UNE ADRESSE QUI “a1 USK SAUVEG
336 toa 3360 (EME L'ADAESSE DU DEBUT OE 108? 4a2 JSR DECODE
337 sta 307 : as JSR conveRT
330 ior 4300 i 434 ‘STA $3887
339 toa (206),¥ 433 USK CONVERT
340 STA SIA iss STA S881
Jal Iny 437 JSR CONVERT
342 LDA ($06),¥ 438 STA $B8FC
33 StA 4B 39 JSR RESTORE
344 Lor #304 JURA C'EST LE 4IEME DE [08 440 RTS
345 Lua (s1A),4 441 wom
346 442 LDA #$0A *RAEPI
307 use paeyre 43 ‘STA SECONDE
548 LDA #DOTTED ON TRACE UNE LIGNE. 446 JSR SAUVEG
ies iby 4/oorT#o 45 JSR Dex 2D6
330 Bsr StRour ae BSR CONVERT
351 447 STA $8991
352 ars 446 JSR CONVERT
353 MOTC LDA #$13 OBLIGE LE DOS A TESTER CHEKSUM 449 STA $B99B
354 STA $BSZE 450 JSR RESTORE
355 ats 451 ans
4356 oro LDA #$00. «=: PERMET LES BRREURS SUR CHKSUM 652 worm
357 ‘STA $B92E 453 EDA #804 ¢RDEPI
358 ars tsa SPA SECONDE
359 MOTE LDA sea ;PAS D'ERR SUR LE PROLOG DATA ass osm sauvEs
360 STA $B8F3 456 JSR DECODE
361 LOA 9887 a Usa convent
362 STA $B8FE 458 ‘STA $3935
363 ARTS 459 JSR CONVERT
364 MOTP LDA #300 LES ERR PASSENT A TRAVERS t60 SIA $093F
365 ‘STA $RAF3 461 ‘JSR RESTORE
366 ‘STA SBAFE 162 Ars
367 ars 463 soto
ea Mora. = TDA a80c ON vu 3 ocrers Ew ENTREE a DA #000 7ronw-aveo 3 corer Pom:ovce
169 STA SECONDE 35 (ERM) 46 (302) s1=800 tes STA sEcowoE | syNcn
30 DSR SAU/EC — SAUVE $08 $99 EN VUE DLW RET BAs eg a ees
301 BSR DECODE —« IVITIALISE: *DEAABS"? OU AS? py a oe
an Dsm commer Le 1gR TROUE EST PLACE DS A a ten coer
373 Sta $ac7a, ow sroces te STA $8060
3 Ser comeer in 2ND Est PLACE DANS A “7 oa ase
375 Sra secre ere an sk RESTORE
37 Son coment ie ms
37 Sta Saco 473 moe
378 USE RESTORE 4 DA #508 ssaxer
as nts 475 STA SECONDE
300 Mou = LOA t30c= CP MOTE a6 JSR SAUVEG
31 Sta Secons a7 JSR DECODE
jez ose sauvec 08 JSR CONVERT
3a JSR DECODE 479 STA $BEFE
384 JSR CONVERT 480 ar
385 STA $8853 481 RTS
386 JSR CONVERT 482 MOTO
387 STA $8858 463 mA 4508
388 JSR CONVERT 484 ‘STA SECONDE MAXSE:
363 STA $8850 ass ase sane
390 JSR RESTORE 486 JSR DECODE
391 RTS 487 JSR CONVERT
332 Morr DA soc sr more aoe Sta sarza
393 STA SecoNDe ass sa RESTORE
394 JSR SAUVEG 490 RTs
395 Sse Decone 451 wore
396 Sse coveer to2 BA #¢0n —svrocssr
397 STA SRCAP to3 Sta Secowos
398 ise coMvERT toa gen sauvne
399 SPA $8089 ios von vecooe
“oo Der Cowen? 00 DSR conver?
401 SrA $0c08 is STA $acol—:PISTE
402 Jen eoTone ‘8 GSR CoNvERT
403 ate as STA $a007 :sucrAu
404 mors, A 4800 ser wore 300 GSR RESTORE
tos Bra Secowe 301 is
toe OaR sAUvEG S02 murs
40 JSR DecooE 503 LA #5A9 ON MoDIEIE 2B vos (piste 11)
408 JSR CONVERT S04 STA $B292 fANTI
408 STA $BO9E 305 RTS #TESTDOS
410 JSR CONVERT 506 MOTT:
an STA $B8A3 507 LDA 469 #RETABL
412 JSR CONVERT: 508 STA $8292 sTEST
413 STA SB8AB 509 RTS
ae JSR RESTORE 510 Norv
as ies 51
416 MOTK LDA #$0C #RAPRO 512 LDA $BC7A #QUID! TRANSFERT D'OCTETS -> $320
417 STA SECONDE 513 STA $320 #ON TROUVE LES PROLOGUES EPILOGUES
418 JSR SAUVEG S14 LDA $BC7F #DE READ ET WRITE + SYNCR ET VTOC
419 JSR DECODE 51s STA $321 #PISTE EN TETE
420 JSR CONVERT 516 LDA $BC84
‘ea
Pom's n° 29
sta $3zz oa sta $9037
LWA $ucas te as
STA 5323 eis
oA $383 16 wore
STA $324 a7 1A 4538 ;NoRESET
LDA $BCBB 618 STA $3F4
‘STA $325 619 LDA #$A5
620 STA $9637 #PAS DE BOOT SI RESET
LDA $8853 621 RTS
STA $326 622
LDA $8858 623 MOTY
‘STA $327 624 LDA #$01 ¢COMMANDE POUR READ
LDA $B85D 625 STA COM
‘STA $328 626 JSR RWIS 4ON UTILISE RWIS
LDA $B89E 627 JSR RESTORE
‘STA $329 628 Rts
LDA $BBA2 629 RWTS LDA #S0A #2 PARAMETRES:
‘STA $32A 630 STA SECONDE sMAIS *PISTE EN TETE*
LDA SBBAB 631 JSR SAUVEG
STA $32B 632 JSR DECODE
633 JSR CONVERT
634
635 STA STR ¢ LE 1ER C'EST SECTEUR
f36 Prst Jam CONVERT
1a $0955 67 Sta Tae + ne 2Nn TRACK
STA $320 538
LDA $095F ens toa #500
Sta $320 40 STA ERR + COMME CA Sr ERRCOO0 ¥ A ERREUR
1A $3960 fat
Sta $328 faz
10a $0991 643.co DA. o/r00
STA $32F eae LDY #I0B sRWTS
LDA $8998 64s JSR $309 4ON SAUTE AUX VRAIS RWTS.
STA $330 ee ars
ea?
La suse? @48 wore LA 4304
SA 3331 a3 STA com JFORMATTAGE SANS DOS SANS CATALOG
554 LDA Suse 650 ae 0
555 STA $332 631
556 LDA $BBFC 652 MOTAL NOP; BUPAS:BUPSER $2009 DE 108 EN ASCIT
‘557 STA $333 653 LDA #300
‘558 LDA $8935 654 STA $1A
‘559 STA $334 655 LOA #920
560 LDA $893F 656 STA $1B «ADRESSE DE DEPART
561 STA $335 657 LOA #$00 sPASSE
‘562 658 STA PASSE
563 LDA $B83E 659
564 STA $336 660 JP LDA PASSE
‘565 661 JSR PRBYTE
566 LDA $ACOl s¢VTPI 662 LDA 9"-"
567 ‘STA $337 663 JSR $FOFO sAPPICHE A
‘568 LDA $B00D 664 Lby #00
‘569 STA $338 sVTSEC 665 Loop] LDA ($1A),¥
‘570 ‘RTS 666 JSR SFDFO
57 667 Iny
S92 ees coy 432 JON FAIT 32 cARACTERES
573 sory ees fanz too?
74 LDA #808: READ TRK + 1 PARANETRE Sse secs? cR
575 STA SECONDE roa 932
576 Sea sauvec ce
577 aoc $14
578 JSR DECODE ‘STA $14
373 STA PASSE
380 toa #300 Gee 4300 POUR 255 caRACTERES
561 STA Gon JON ser LB 015K Bw mAKCHE axe oP 1 LroNe suivante
oe Usk PIST
333 use secsz cK
‘584 LDA TRK 71)L'ENVOYER EN PISTE N
JSR MYSEEK #C'EST FAIT. RTS
586
587 ‘LDA #$00 42)MAINTENANT ON VA LIRE NIBBLES
588 ‘STA IM+l +ET LES STOCKER DE $2000 A $3FFF. MOTBI
589 LDA 4#$20 LDA #302 #ON ECRIS LE BUFFER
590 STA IMe2 STA COM
592 LbY #$00 ¢IM+] CONTIENT ADRESSE STOCKAGE ‘JSR RWTS
‘592 JSR RESTORE GWRITE
$93 LDX #360 #NB SLOT*IE ‘RTS
594 LDA $CO8E,X ‘STROBE LECTURE
595 TRER LDA $C08C,X LIS NITBLE wore) LDA ERR 7ON REGARDE SI ERR<>O
596 BPL TRKR +TANT QU'IL N'EST PAS BON... STA $300 +AU PASSAGE ON LA LAISSE EN $300
‘597 IM STA $2000 4 STOCKE cMP #800
598 INC IMe1 YON BALADE LE POTNTeUR BNE ERREUR ST OUT OW LIAPPICHE
599 BME Tax DA @NOND ST NON...
600 INC IM#2 DY = #/NONP
for 1DA te? “Isa straw
602 ow year oN sTopPE EN $3700 ars
03 BME TaxR ERREUR cP #810
G04 Bee volume
608 LDA $cose,x ow annErrs Tour } DIsK:sToP! 701 oa ome
606 sa RESTORE — ow ABCUP. TATPTA 702 bor 1
607 703 gen smovr
608 are priwt. r04 are
£09 Norw 708 vous one 9820
a0 toa #800 jon vecronrse nesor BN RAM roe bus Brea
an Sta gare 707 toa qvon
ae DA WEF BP DS 1B Dos SUR Boor 108 ior 4/voL
-
Pom's n° 29
—_————————————
708 ven snovr sta 5308
710 aren caw #a40 cov
m1 beehive cic
22 toa 4012 JSR xPeK
23 toy ¢are ras
4 vor Stour
75 ‘RTS RETP Lox #500 # TRANSFERT EN $320 PEXE
716 RIWA CMP 4380 TRANS! LDA PEXE,X
17 BNE CAALORS STA $320,X
ne 20a 9aIW 1x
m9 Lor ¢/RTW CPX #$20
720 JSR StROUI BNE TRANS!
rai ats RIS
722 CAALORS LUA 4CA
723 LOY #/Ca RETA LOX #300 + TRANSFERT EN $320 AEXE
rea ase Strout TRUNS2 LDA ABXE,X
725 ATS STA $320,X
726 INX
727 KYKAM LDA #KYRAMP ‘ON AFFICHE "KYRAM OK" CPX #$20
728 STA $3F6 +ET ON VECTORISE VERS LE DEBUT BNE TRANS2
129 LDA #/KYRAMP RTS
730 STA $387
731 .
732 1A axe
733 Loy #/KYM * CES ROUTINES PERMETTENT D'ALLER CHERCHER DANS A
734 JSR STROUT * DES VALEURS DS LE BUFFER (EX "D5AA") OU EN MEV
735 Rrs * BASIC (EX AS).
736
737 AMOV STA $C007 ON VA UTILISER $C100 MEM SAUVEG LDA $88 #0N SAUVEGARDE LES POINTEUR
738 LDA #$12 +6 PARAMETRES: ‘STA SIA 2DU RASTC (TXTPTR)
739 STA SECONDE LDA sag
740 JSR SAUVEG Sta SIR
71 JSR DECODE ars
742 RESTORE DA SIA JON LES RENET Ov Le ETATENT
73 sR comvenr STA $38
744 ‘STA AIH sPTPORT LDA $1
745 O5R Convear STA S$
146 ‘STA AIL ePTPAIBLE :ADD RTS
747
va Jse coment DECODS LDA BUEFIN POSITION DBS POINTEURS SUR OCTETS
763 STA A2H sEIN (eTPoRt) cue [ou'rh FAUT (PARAMETAES)
750 JsR CONVERT ape #305 Vow Se POsITIONNE APRES LE MOT
281 Sta AL J (erearoue) koy BUPPINe?
382 STA $88
253 von cowear str 933
54 BIA Adi!
185 Osan Convent wr #305
256 STA Aa LUA (BUEFIN),Y JON A OWS IER * 2
289 ce 4322
18 SEC jMEV PRINCIEALE VeKS AUxL BNE VARIABLE NON, CA DOIT BTRE DU XS
359 LDY SECONDE —N PARAMBTRES PLUS LOIN...
760 ask Nove WA (BUEFIN),¥
761 357 cue 4522 JON A UWE 260 = 2
762 USR RESTORE ase BNE OPERROR NON: ERREUR OPERANDS
763 RTS 859 INC $B8 #C'EST BON,ON SE PREPARE A DECODER
764 PMOV STA $007 #MEME TRAFFIC QUE PRECED. 860 ‘RTS
765 Loa asi2 361
766 STA SECONDE 862 OPERROR JSR $FBE4 ‘¢BEEP
767 OSR SAUVEG 363 OA FOPERRORM | *KYRAM* BRREUR OPERANDE
768 JSR DECODE 864 LY 4/0PERKORM
763 86s JSR STROUT
770 JSR CONVERT 866 UMP = $043C «BASIC
m7 STA AlH 867
72 J5R cower 868 VARIABLE JSR CHRGET —_:CHERCHE VARTARLE POTWTEE PAR (SAR)
73 Sra arn 309
a 970 wy 4301
78 use convert 971 1A (203),Y _s0W PROWO OM ADRESSE...
76 Sra A2H 872 em ¢08
77 JsR CoMvERT 973 rw
78 STA Azz ron (683),¥
78 975 sta 09
790 Jen convent a7
701 SrA Aa 277 LOA VALTYE 31 VANAIS CYEST PAS OWE CHAINE..
792 von coment 270 cme 4986 ;
703 STA AML @79 BNE OPERROR —...ON LAISSE TOMBER.
204
785 cic #VERS MEMULKE PRINCIPALE 61 RTS
786 JSR MOVE 882 COLE CMP #530 7A EST UN CHIFFRE ?
787 cre) BCC OPERROR #NI CHIPFRE NI LETTRE:DEHORS!
788 JSK RESTORE B84 CMP #$3A
789 RTS Bes BCS HOP ‘C'EST UNE LETTRE
790 886 cLe #C*EST UN CHIFFRE ON CODE HEXA
791 AEXE STA $c007 +MEM $C100 887 SBC #$2F
192 LDA $32 #RECUPERE L'ENTREE A CHAUD DU DOS 888 ‘RTS
793 ‘STA $3ED 889 HOP CMP #$41 ¢ENTRE A ET F?
794 LOA $3F3 890 ‘BCC OPERROR 'EUH, NON...
795 STA $3EE a91 CMP 4$47
796 LDA 4#SFE 892 BCS OPERROR «NON PLUS...
797 ADC 4SFF ¢ON MET L'INDICVAIL 893 cLe
798 sec a9 sac 454 c'BST BON Ow conR HExA
799 Usk XFER sCrEST PARTI... 895 ars
200 ars 896
@01 PEXE STA $C007 897 CONVERT LDY #$00 ON PREND LE IER
oz LA $382 90 1A ($9),
603 ‘STA $3ED 899 JSR CONE 2ON LE CODE
204 LOA $33 $00 asi. OW LE MILTIPLIE PAR 16
Pom's n° 29
902 ast
302 ASL
303 ASL
908 STA PASSE
905 Im
306 LDA (986),¥
3907 JSR CODE
908 cue
303 ADC PASSE FON LUT AJOUTE LE SECOND
310 TAX
311 LDA $38
a2 cue
913 Ave #902 (ON AJUSTE LES POINTEURS POUR LA
pr Bcc JUMP sSulTE.
wis INC 589
916 JUMP STA S88
a7 TxA
v8 RTS 7A CONTIENT LES 2 ASCII EN 1 HEXA
19
920 ». —
$21
922 GETLINE LDA #$00 sADRESSE BUFFER DE sINTERPRETEUR
923 STA BUFFIN ;
926 LDA #503 ?
925 STA BUFFING);
926
927 Lox #00
928
929 ume saUT
930
931 CHARGE JSR CHRGET ;POINTE CARACT SUIVANT DS BUF BAS
932 18x ON UTILISE X COMME INDEX
933 SAUT = LY #800
934 LDA ($B8),¥ GET CAR
935 PHA HY
936 TXA ?
937 TAY é
938 PLA :
939 STA (BUFFIN),Y ; TRANSFERT D'UN CARACTERE
940 CME S38 SI_%:" ALORS ON A FINT
941 BEQ STOP {C’EST FAIT
942 cmp 9500 #SI C'EST FIN DE LA LIGNE PAREIL
943 BNE CHARGE ZN CONTINUE STNON
94a
945 stp RTS PIN
046
947 LOOPPRIN LDA #$00 ON COMMENCE PAR LE MOT No.0
48 STA coMPT
or
950 LDA SLISTEVOC ;OU EST LA LISTE DES OTS?
951 STA vor
952 LDA #/LISTEVOC
953 STA voce!
954
955 NOUVEAU LDY #200 JON COMPARE MOT A MOT
956 * #31 ON UNEO PASSE AU MOT SUIVANT
957 LOOPA LDA (BUFFIN) ,¥
958 cue (voc),
959 BNE SUIVANT
960 wr
361 cer #905
962 BNE LOOPA
¥63
964 ars
965
966 SUIVANT LDA voc
967 cle
968 apc #305
969 STA vot
970 LDA voct!
971 ADC #300
972 STA VOC+
973
974 Lox cor
975 INK
976 STX cOMT
977 Px #40
978 ANE NOUVEAIT
979 RTS
970
981 ERROR JSR SPREA
982 LDA #SNERROR
LDY #/SNERROR
984 JSR STROUT
985
986 ome $430 sAPPSOFT
987 *.
981
989 * ICI ON A LA LISTE DES MOTS ADMIS
990
991 LISTEVOC ASC *COMMSLRWTSCIIKSU’
932 ASC 'NOCHKTSTPRNOPRO’
993 ASC 'WAPRONDPROWAEPI’
934 ASC ‘NDEPIRAPRORDPRO’
935 ASC ‘RAEPIRDEPISYNCR’
936 ASC 'MAXPINAXSEVTSET’
987
998
399
1000
2001
2008
1003
1004
1005
1006
2007
2008
2009
2010
2011
2012
2013
1014
1015
1016
2017
2018
*ASAUVESAUVQUID! *
‘RDTRERESETNRESE*
‘"SECRESECHRINITD*
‘"BUFASDIAGNKYRAM’
‘AMOVEPMOVEAEXEC*
| PEXECRETPRRETAU*
* DIVERSES
FING
cHD
OPERRORM.
SNERROR
cup
2
cxpz
ADREAD
ADARITE
sywc
ADRTST
PISTE
NBSECT
SHCTEUR
NBEISTES
DA
Ly
JSR
RIS
ERERSERSESR EREESEERRERER
ASC
E
ROUTINES OU DONNEES D*AFFICHAGE
JADREADI —/AFPICHE "FIN DE CHAMP"
#/ADREAD}
STROUT
YADREAD2 s AFPICHE "CHAMP DONNEES:*
#/ADREAD2
‘STROUT
© sTEXTES D'ERREURS...
‘"*RYRAM* ERREUR D!OPERANDE
00
80
"eKYRAM* ERREUR DE SYNTAXE .
00
a
“ste srenrenseren
8
* KYRAM *m
80
ananoo
— —~CoMmANnEs——-
a0
*/ COMMS / KLRWTS / £QUTD! / sBUFAS *
a0
*/ KCHKSU / GNOCHK / sTSTPR / NOPRO *
#000
"/ EWAPRO_ / SWDPRO_ / SWAEPI_ / SWDEPI_*
SROPRO_ / SRAEPI_ / sRDEPI_*
aMaxpl_/ sMAXSE_ / sVTSET_”
‘PSU’ / RESET / SNRESE *
7 GROTRK_/ SSECRE_ / 4SECWR_ / 6INITD ~
a
7 sAMOVE_ / SPMOVE_ / 6AEXEC / SPEXEC™
80
7 SRBTER / SRETAU / 6DIAGN / SRYRAM™
wo
8000
. <== KW TS~PAKAME THES nema"
@
+ READ SYSTEM: CHAMP ADRESSE 0"
00
0
. FIN DE CHAMP oO”
00
aD
* CHAMP DONNEES a”
WRIT SYSTEM: CHAMD ADRESSE 3"
‘8080
*— cuexsom a*
90
"= SYNCHRO a”
00
* Prop a
09
40
"= TABLE vIoc
Piste"
“ pIsteo"
7 MAxSED"
" SECTEURD
" MAxPIOT
Pom's n° 29
{
sae ASC" ~— sAUIIO 1118 we ASC "*KYRAM* LE DISK EST PROTEGE EN ECRITURE.*
HEX 00 ag HEX §8D00
rec | HEX aD 1120 Kyu HEX aD
ASC "= PRG COURANT = ASI 2 ASC "#KYRAM* L/AMBERSAND EST OPERATTONNEL..*
HEX 00 1122 ex 8000
1 asc" 1gae 1179 ame
MEX 00 124+
Crk = MEX. 8D 1125
ASC "= TRE COURANT KYRA 2126 PRESENT HEX 90
yes ed ae pepsteresartaving ase
mx asc * Dogue 1128 ex @0
ex 00 1129 ASC "C.MENIER + KYIAM V2.2 + ere
vormp x 0D 1130 ex 9D
. 2131 asc" seiseeretesveee
1132 ex 08000
Nowe PAS D'ERREUR A 1A DERNIERE cMD.~ 1139
1134 peser aR gcse = Hos
VoL ASC. “*KYRAN? ERREUR CONCERNANT LE VOLUME. 1135 LDA PRESENT
Hex 8000 1136 Lor ¢/eRESENT
BIZ ASC. "#RYRAM* ERREUR CONCERNANT LE LECTEUR.* 1137 JSR STROUT
Hex 0000 138
KIN ASC. “PRYRAM® AWTS NE PBUT LIKE PROLUGEEEILOG.” 1139 Usk KreaM
mex sv00 ug ars
a ASC "*KYRAM® CODE NON HOMOLOG DOS/PRG <> Gr ua *
ex #000
Récapitulation 4140- 20 3A DB AD 7A BC 20 DA 42C0- 20 C5 46 8D 5D BB 20 64
4148- FD AD 7F BC 20 DA FD AD 42C8- 46 60 A9 OC 85 07 20 5B
‘KYRAM’ 4150- 84 BC 20 DA FD 20 FF 47 42D0- 46 20 6D 46 20 C5 46 8D
‘ alee 4158- AD AE BC 20 DA FD AD B3 42D8- AE BC 20 C5 46 8D B3 BC
Aprés avoir saisi ce code sous 4160- BC 20 DA FD AD B8 BC 20 42E0- 20 C5 46 8D B@ BC 20 64
moniteur, vous le sauvegarderez par = _416g- DA FD 20 07 48 AD 53 BB 42E8- 46 60 A9 OC 85 07 20 5B
BSAVE KYRAM,A$3FFA,L$068 4170- 20 DA FD AD 58 B@ 20 DA 42F0- 46 20 6D 46 20 C5 46 aD
SEFA- 20 54 40 4C 3C D4 4178- FD AD 5D BB 20 DA FD 20 42F8- 9E BB 20 C5 46 8D A3 BB
4000- AD 00 04 85 1E AD 01 04 4180- +F 47 AD 9E B8 20 DA FD 4300- 20 C5 46 8D AB BB 20 64
4008- 85 1F A9 4B 8D 00 04 ag 4188- AD A3 BB 20 DA FD AD ag 4308- 46 60 AD OC 85 07 20 5B
4010- 59 8D 01 04 20 £9 46 20 4190- B8 20 DA FD A9 FB AO 4a 4310- 46 20 6D 46 20 C5 46 8D
4018- 0D 47 AS 1E 8D 00 04 aS 4198- 20 3A DD AE 2E BD A9 01 1318- 55 B9 20 C5 16 8D SF B9
4020- 1F 8D 01 04 A9 45 85 1A 41A0- £0 13 FO 02 A9 00 20 DA 4320- 20 C5 46 8D 6A BY 20 64
4028- AS 40 85 1B AS CE C9 28 41A8- FD A9 16 AO 4B 20 3A DB 4328- 46 60 AS OC 85 07 20 5B
4030- BO 10 OA 18 65 CE 18 65 41B0- AE F3 B8 AY Ol EO F2 FO 4330- 46 20 6D 46 20 C5 46 8D
4038- 1A DO 02 B6 1B 85 1A 6C 41B8- 02 A9 00 20 DA FD A9 SE 4338- E7 B@ 20 C5 46 8D Fl BB
4040- 1A 00 4c 3E 47 4¢ C6 40 41C0- AO 4B 20 3A DB AD 92 B2 4340- 20 C5 46 8D FC BB 20 64
4048- 4C E6 40 4C 6A 42 4c 70 41C8- 20 DA FD A9 09 AO 4B 20 4348- 46 60 A9 OA 85 07 20 SB
4050- 42 4¢ 76 42 4c 61 42 4¢ 41D0- 3A DB AD 60 BC 20 DA FD 4350- 46 20 6D 46 20 C5 46 aD
4058- 8A 42 4C AA 42 4C CA 42 41D8- A9 55 AO 4B 20 3A DB AD 4358- 91 B9 20 C5 46 8D 9B B9
1060- 40 EA 12 4¢ 0A 13 4c 2A 41E0- FE BE 20 DA FD A9 3F AO 1360- 20 64 16 60 A9 OA 85 07
4068- 43 4C 4A 43 4C 64 43 4C 41E8- 4B 20 3A DB AD 2A BF 20 4368- 20 5B 46 20 6D 46 20 C5
4070- 76 43 4C 95 43 AC AD 43 41F0- DA FD AD 1F AO 4B 20 3A 4370- 46 8D 35 B9 20C5 46 aD
4078- 4¢ BD 43 4¢ D7 43 4C DD 41F8- DB AD 01 AC 20 DA FD A9 4378- 3F B9 20 64 46 60 AS 08
4080- 43 4C F347 40 7A 44 AC 4200- 4A AO 4B 20 3A DB AD OD 4380- 85 07 20 5B 46 20 6N 46
4088- Cl 44 4c cc 44 4c D7 44 4208- 30 20 DA FD A9 69 AO 4B 4388- 20 C5 46 8D 60 BC 8D 3E
4090- 4¢ 45 45 4c 06 45 4c OE 4210- 20 3A DB AD 73 AA 20 DA 4390- BB 20 64 46 60 AS 08 85
4098- 45 4C 51 45 4¢ 9A 45 4C 4218- FD AD 72 BA 20 DA FD A 4398- 07 20 5B 46 20 6D 46 20
40A0- AC 45 4C DF 45 4C 12 46 4220- 80 AO 4B 20 3A DB AD 61 43R0- C5 46 8D FE BE 20 64 46
40A8- 40 2A 46 40 3F 46 4c 4D 4228- AA 20 DA FD AD 60 AA 20 43A8- 60 AQ 08 85 07 20 5B 16
40B0- 46 01 60 01 00 00 00 cz 4230- DA FD A9 89 AO 4B 20 3A 43B0- 20 6D 46 20 C5 46 8D 2A
40B8- 40 00 20 00 00 00 00 00 4238- DB AD BS 40 20 DA FD A9 43B8- BF 20 64 46 60 A9 OA 85
40cO- 60 01 00 01 EF D8 20 58 .4240- AO AO 4B 20 3A DB AD E7 43C0- 07 20 5B 46 20 6D 46 20
40CB- FC A9 49 AO 48 20 3A DB 1248- 03 85 06 AD EB 03 85 07 43C8- C5 46 8D 01 AC 20 C5 46
40D0- A3 97 AQ 48 20 3A DB AS 4250- AO 00 Bl 06 85 1A C8 Bl 43D0- 8D 0D BO 20 64 46 60 AS
40D8- 11 AO 49 20 3A DB AQ B2 4258- 06 85 1B AO 04 B1 1A 20 43D8- A9 8D 92 R2 60 A9 69 AD
40E0- AO 49 20 3A DB 60 20 58 4260- DA FD A9 AB AO 4B 20 3A 43E0- 92 B2 60 AD 7A BC 8D 20
40E8- FC A9 49 AO 48 20 3A DB 4268- DR 60 A913 AN 2F RY 60 43E8- 03 AD 7F BC 8D 21 03 AD
40F0- A9 52 AO 4A 20 3A DB AD 4270- A9 00 &D 2E B9 60 A9 F2 43F0- 84 BC 8D 22 03 AD AE BC
40F8- 55 B9 20 DA FD AD SF B9 4278- 8D F3 BB AQ E7 8D FE BB 43F8- 8D 23 03 AD B3 BC aD 24
4100- 20 DA FD AD 6A B9 20 DA 4280- 60 A9 00 8D F3 B8 8D FE 4400- 03 AD B& BC 8D 25 03 AD
4108- FD 20 FF 47 AD 91 89 20 4288- B8 60 A9 OC 85 07 20 5B 4408- 53 B@ 8D 26 03 AD 58 BE
4110- DA FD AD 9B B9 20 DA FD 4290- 16 20 6D 16 20 C5 46 8D 4410- 8D 27 03 AD SD BB aD 28
4118- 20 07 48 AD E7 BB 20 DA 4298- JA BC 20 Cb 46 8D IF BC 4418- 03 AD 9E BB BD 29 03 AD
4120- FD AD Fl B& 20 DA FD AD 42A0- 20 C5 46 8D 84 BC 20 64 4470- Ai BA BD 2A 03 AD ABR RA
4128- FC B8 20 DA FD 20 FF 47 42A8- 46 60 AS OC 85 07 20 5B 4428- 8D 2B 03 AD 55 B9 8D 2c
4130- AD 35 B9 20 DA FD AD 3F 42B0- 46 20 6D 46 20 C5 46 6D 4430- 03 AD SF B9 8D 2D 03 AD
4138- B9 20 DA FD AS DA AO 4A 42B8- 53 B@ 20 C5 46 @D 58 BO 4438- 6A B9 8D 2E 03 AD 91 B9
Pom's n° 29
23
4668- AS 1B 65 B9 60 AS 08 18 4890- AA AA AA AA &D 8D 00 AD
4670- 69 05 A4 09 85 BS 84 BI 4898- AD AD AD AD AD AD AD AD
4678- AO 05 Bl 08 C9 22 DO 18 48A0- AD AD AD AD AD C3 CF CD
4680- A4 07 Bl 08 C9 22 DO 03 48AB- CD Cl CE C4 C5 D3 AD AD
4688- E6 B& 60 20 £4 FB AS OF 48B0- AD AD AD AD AD AD AD AD
4690- AO 48 20 3A DB 4C 3C D4 48B8- AD AD AD AD AD AD AD &D
4698- 20 B1 00 AO 01 Bl 83 85 48CO- AF AO A6 C3 CF CD CD D3
46A0- B8 C8 Bl 83 85 BI AS 11 48C8- AO AO AF AO A6 CC D2 D7
46A8- C9 FF NO NF 60 C9 30 90 48N0- D4 D3 AO AO AF AO A6 D1
4@6B0- DA C9 3A BO 04 16 ES 2F 48D8- DS C9 C4 Al AO AO AF AO
46B8- 60 C9 41 90 CE C9 47 BO 48E0- A6 C2 D5 C6 Cl D3 AO 8D
46CO- CA 18 ES 36 60 AO 00 Bl 48E8- AF AO A6 C3 C8 CB D3 DS
46C8- B8 20 AD 46 OA OA OA OA 48F0- AO AO AF AO A6 CE CF C3
46D0- 85 06 C8 Bl B& 20 AD 46 48F8- C8 CB AO AO AF AO A6 D4
46D8- 18 65 06 AA AS BB 18 69 4900- D3 D4 DO D2 AO AO AF AO
46E0- 02 90 02 E6 BO AS RA RA 4908- A6é CE CF DO D2 CF AO 8D
46E8- 60 A9 00 &5 08 AY 03 85 4910- 00 AF AO A6 D7 Cl DO D2
46F0- 09 A2 00 4C FA 46 20 Bl 4918- CF DF AQ AF AO A6 D7 C4
46F8- 00 E8 AO 00 Bl B@ 48 GA 4920- DO D2 CF DF AO AF AO A6
4700- A8® 68 91 08 C9 3A FO 04 4928- D7? C1 C5 DO C9 DF AO AF
4708- C9 00 DO EA 60 AS 00 85 4930- AO A6 D7 C4 CS DO C9 DF
4710- CE A9 4B 85 18 A9 47 85 4938- 8D AF AU A6 D2 Cl DO b2
4718- 19 AO 00 Bl 08 D1 18 DO 4940- CF DF AO AF AO A6 D2 C4
4720- 06 C8 CO 05 DO FS 60 AS 4948- DO D2 CF DF AO AF AO A6
4728- 18 18 69 05 &5 18 AS 19 4950- D2 C1 C5 DO C9 DF AO AF
4730- 69 00 85 19 A6 CE E& 86 4958- AO A6 D2 C4 C5 DO C9 DF
4738- CE EO 28 DO DC 60 20 E4 4960- 8D AF AO A6 D3 D9 CE C3
4740- FB AS 2C AO 48 20 3A DB 4968- D2 DF AO AF AO A6 CD Cl
4748- 4C 3C D4 43 4F 4D 4D 53 4970- D8 DO C9 DF AO AF AO AG
4750- 4C 52 57 54 53 43 48 4B 4978- CD Cl D8 D3 C5 DF AO AF
4758- 53 55 4E 4F 43 48 4B 54 4980- AO A6 D6 D4 D3 CS D4 DF
4760- 53 54 50 52 4E 4F 50 52 4988- 8D AF AO Af Cl D3 Cl DS
4768- 4F 57 41 50 52 4F 57 44 4990- D6 AO AO AF AO A6 DO D3
4770- 50 52 4F 57 41 45 50 49 4998- Cl D5 D6 AO AO AF AO AG
4778- 57 44 45 50 49 52 42 50 49A0- D2 C5 D3 C5 D4 AO AO AF
4780- 52 4F 52 44 50 52 4F 52 49A8- AO A6 CE D2 C5 DI C5 AO
4788- 41 45 50 49 $52 14 15 50 49B0- 8D 00 AF AO A6 D2 C4 D4
4790- 49 53 59 4E 43 52 4D 41 49B8- D2 CB DF AU AF AO A6 D3
4798- 58 50 49 4D 41 58 53 45 49C0- C5 C3 D2 C5 DF AO AF AO
47A0- 56 54 53 45 54 41 53 41 49C8- AG D3 C5 C3 D7 D2 DF AO
47A8- 55 56 50 53 41 55 56 57 49N0- AF AO A6 C9 CE C9 D4 C4
47B0- 55 49 44 21 52 44 54 52 49D8- AO 8D AF AO AG Cl CD CF
47B8- 4B 52 45 53 45 54 4B 52 49E0- D6 C5 DF AO AF AO A6 DO
47C0- 45 53 45 53 45 43 52 45 49E8- CD CF D6 C5 DF AO AF AO
47C8- 53 45 43 57 52 49 4E 49 49F0- A6 Cl C5 D& C5 C3 AO AO
47D0- 54 44 42 55 46 412 53 44 49F8- AF AO A6 DO CS DB C5 C3
47D8- 49 41 47 4E 4B 59 52 41 4A00- 8D AF AO A6 D2 Co D4 VO
47E0- 4D 41 4D 4F 56 45 50 4D 4A08- D2 AO AQ AF AO AG D2 C5
47E8- 4F 56 45 41 45 58 45 43 4A10- U4 Cl DS AO AO AF AO AG
47F0- 50 45 58 45 43 52 45 54 4A18- C4 C9 Cl C7 CE AO AO AF
47F8- 50 52 52 45 54 41 55 AD 4A20- AO A6 CB D9 D2 Cl CD 8D
4800- 9A AO 4A 20 3A DB 60 AD 4A28- AD AD AD AD AD AD AD AD
4808- BA AO 4A 20 3A DB 60 8D 4A30- AD AD AD AD AD AD AD AD
4810- AA CB D9 D2 Cl CD AA AO 4A38- AD AD AD AD AD AD AD AD
4818- C5 D2 D2 C5 D5 D2 AO C4 4A40- AD AD AD AD AD AD AD AD
4820- A7 CF DO C5 D2 Cl CE C4 4A48- AD AD AD AD AD AD AD AD
4828- C5 AO AE 00 8D AA CB D9 4A50- 8D 00 AD AD AD AD AD AD
4830- D2 Cl CD AA AO C5 D2 D2 4A58- AD AD AD AD AD AD AD b2
4838- C5 D5 D2 AO C4 C5 AO DI 4A60- D7 D4 D3 AD DO Cl D2 Cl
4840- D9 CE D4 Cl D& Cd AU AE 4A68- CD C5 D4 D2 C5 D3 AD AD
4848- 00 8D D3 D4 C7 AO AO AO 4A70- AD AD AD AN AD AD AD AD
4850- AQ AO AO AO AO AO AO AA 4A78- AD AD 8D AD AO D2 C5 Cl
4858- AA AA AA AA AA AA AA AA 4A80- C4 AO D3 D9 D3 D4 C5 CD
4860- AA AA &D AO AO AO AO AO 4A88- BA AO C3 C@ Cl CD DO AO
4868- AQ AO AO AO AO AO AO AO 4A90- C1 C4 D2 C5 D3 D3 C5 AO
4870- AA AO AO CB D9 D2 Cl CD 4A98- FC 00 8D AO AO AO AO AO
4878- AO AO AA 8D AO AOD AO AO 4AA0- AO AO AO AU AU AU AU AD
41880- AO AO AO AO AO AO AO AO 42AB- AO AD C6 C9 CR AO C4 C5
4888- AQ AA AA AA AA AA AA AA 4ABO- AO C3 C8 Cl CD DO AO AO
Pom's n° 29
4AB@- FC 00 8D AO AO AO AO AO
4ACO- AO AQ AO AO AO AO AO AO 4BA8- D3 FC 00 8D
4ACé- AQ AO C3 CB Cl CD DO AD 4BB0- AD AD AD AD
4AD0- C4 CF CE CE C5 C5 D3 AO 4RRA- AD AD AD AD
4AD6- FC 00 6D 6D AD AO D7 Dz 4BCO- AD AD AD AD
4AE0- C9 D4 AO D3 D9 D3 D4 C5 4BC8- AD AD AD AD
4AE8- CD BA AO C3 C8 Cl CD DO 4BD0- AD AD AD AD
4AF0- AO Cl C4 D2 C5 D3 03 C5 4BD8- D2 C1 CD AA
4AF8—- AQ FC 0% 8D 8D AD AO C3 4BEO- AO C4 A7 C5
4B00- C8 C5 CB D3 DS CD AO FC 4BE8- D2 AU Cl AO
4B08- 00 8D AD AO D3 D9 CE C3 4BFO- C5 D2 CE C9
4B10- C8 D2 CF AQ FC 00 AO AO 4BF6- C3 CD C4 AE
4818- D0 D2 CF C4 AO FC 00 aD 4C00- D9 D2 Cl cD
4B20- AD AO D4 Cl c2 cc C5 AO 4c08- D2 C5 DS D2
4828- D6 D4 CF C3 AO AO AO D0 4C10- C3 C5 D2 CE
4B30- C9 D3 D4 C5 FC 00 AO AO 4C18- CC C5 AO DE
4B28- DO C9 D3 D4 C5 FC 00 AO 4C20- Co AE 8D 00
4B40- AO AO AO CD Cl D8 D3 CS 4C28- Cl CD AA AO
4B48- FC 00 AO AO D3 C5 C3 D4 4€30- DS D2 AO C3
4B50- C5 D5 D2 FC 00 AO AO CD 4C38- D2 CE Cl CE
4B58- Cl D8 DO C9 FC 00 AD AO 4c40- AO CC C5 C3
4560- AO AO D3 Cl DS Bl Al FC 4C48- AE 8D 00 AA
4B68- 00 6D AD AO DO D2 C7 AO 4C50- CD AA AO D2
4B70- C3 CF D5 D2 Cl CE D4 a0 4C58- CE C5 AO DO
4B78- AO AO AO AO C1 A4 FC 00 4C60- CC C9 D2 ¢5
4B80- AO AQ AO AO AO CC Ad FC 4ceg- CC CF C7 AG
4B88- 00 8D AD AO D4 D2 CB AO 4C70- CF C7 AE &D
4890- C3 CF D> D2 Cl CE D4 AO 4C78- D2 Cl CD AA
4B98- AQ CB D9 D2 Cl CD FC 00 4C80- C5 AO CE CF
AD
AD
AD
AD
AD
00
AO
D2
cc
cs
6D
AA
Ao
cl
CF
aA
cs
CF
D4
D4
cB
D?
cs
ao
C5
00
ao
CE
4BAQ- AO AO AO AO AO AO
AD
AD
AD
AD
AD
BA
DO
D2
cl
D2
00
AO
C3
CE
ce
ce
D2
CE
AO
cs
Dg
D4
DS
Do
bo
AA
c3
AO
C4
aD
aD
AD
AD
cB
cl
cs
AO
BR
AD
AD
D9
D3
DS
C4
AO
D2
cE
AO
cD
D2
cs
cs
cs
D2
cl
AO
Ao
ce
Dg
ca
4C88-
41090-
4C98-
ACAO-
4qcag-
4cRO-
4CBe~
4cco-
4cce-
4cD0-
acpe-
4CEO-
ACRA-
4CFO-
4CF8-
4D00-
4D08-
4D10-
4v18-
4D20~
4D28-
4D30-
4038-
4D40-
4D48-
4D50-
4p58-
4D60-
CD CF CC
D3
AO
cl
or)
Do
cs
DS
cB
A7
cE
Do
cE
Ao
Ao
BA
AA
cs
AO
ce
AA
Ao
AO
AO
AA
BA
EE
45
AP
c7
cD
v3
D2
cE
D2
Ds
cl
ce
cs
cs
AO
Ao
CE
Ao
cD
Ao
D3
AO
AO
ap
ao
Do
aD
AA
cr
AO
cs
D2
cD
ao
cc
AO
AO
AA
cg
AO
Ao
AO
D4
a0
AO
ep
ac
CF C7 AO C4
D2
00
Ao
AO
D4
cs
AE
cl
DO
cs
cl
AE
Ao
AO
ao
cs
AA
Dé
Ao
c7
AO
aA
00
20
CF:
AA
cc
co
cs
c3
8D
cD
cs
D3
D4
ap
AO
AO
AA
8D
D2
AO
R2
AO
8D
AO
20
3A
ao
cB
cs
b3
(oy)
D2
00
AA
D2
D4
cy
00
AO
aA
AA
c7
ao
cB
AE
AO
AO
ao
58
DB
BC
Dg
Ao
D4
cs
co
aD
AO
D3
ao
cr
aD
AO
AA
aA
AE
a0
bg
BQ
AO
AO
AO
FC
20
RBS
ca
AO
D4
cc
SSeEsRaRgA
D2
ao
ao
AO
AO
Ag
Les reliures Pom's
Pour nos lecteurs comme pour nous,
la revue Pom’s est une source précieuse
d'information. A ce titre, nous sommes
amenés @ la consulter souvent.
Pour faire suite a@ de nombreuses
demandes, et afin de facilité le rangement
et les recherches dans Pom's, les Editions
MEV vous proposent des reliures toilées
propres a recevoir six numéros, soit
un an de documentation.
Une fois reliées, les revues forment
un livre agréable a utiliser et insensible
aux manipulations répétées.
Ces reliures sont de couleur Bordeaux,
le logo ‘Pom's’ est frappé au dos et un aplat
est réservé pour noter l'année.
Reliures Pom's : 60,00 Frs franco
Pom's n° 29
25
ProDOS et fichiers
détruits
Si vous avez tendance a
‘bidouiller’ en assembleur dans
les méandres de votre Apple, il
peut vous arriver d'exciter les
adresses fatidiques situées vers
$COEO, qui déclenchent les
routines ‘hardware’ d'écriture sur
disque.
Vue l'heure souvent tardive, le
désordre régnant sur le bureau, et
le walkman qui vous distille une
mélopée hypnotique, la consé-
quence quasi-assurée est l'efface-
ment total d'une piste, souvent la
piste 7éro.
Sous DOS 3.3, cela affectait
tarement I'intégrité logique de la
disquette. En revanche, sous
ProDOS, l'ensemble des poin-
teurs internes permettant d'accé-
der aux fichiers ont disparu et la
disquette est apparemment bonne
pour la casse...
Apparemment seulement car,
avec un peu de patience et
d'habileté, les fichiers pourront
étre restaurés. En effet, ils sont
toujours préscnts mais ProDOS
ne sait plus les retrouver.
C'est donc par nécessité que sont
nées les trois commandes
suivantes :
+ INDEX, pour retrouver tous les
blocs index des fichiers ;
* RBLOC pour lire directement
un bloc en mémoire ;
* WBLOC pour écrire directement
un bloc en mémoire.
Elles sont entigrement compa-
tibles avec la routine CMDLOAD
(Pom's 20).
Utilisation
Récupérer l'intégrité des fichiers
ne peut pas étre une opération
automatique (ne révons pas !). En
revanche, ces commandes ad-
ditionnelles vous aideront consi-
dérablement, pourvu que vous
ayez une connaissance minimum
de la structure d'un volume
ProDOS.
f O-1 mage du programme
exécuté lors du j
démarrage du disque
12 | Premier bloc du
E | directory
3-5 Suite du directory
Carte des blocs
utilisés
Blocs libres, index
ou données
Dans mon cas, le démarrage
incontrélé du disque a eu pour
effet non seulement d'effacer
toute la piste zéro donc les blocs
0 47, mais en plus de la rendre
inutilisable. Elle avait été
reformatée de fagon fantaisiste, ce
qui donnait des bruits inquiétants
lorsque jiessayais de faire ne
serait-ce qu'un CATALOG.
Pour observer les causes du
désastres, il suffit de charger un
Nibble Editor et de comparer la
piste 0 avec celle d'une autre
disquette. Il est nécessaire, de
toute fagon, de reformater la piste
endommaygée, avec un utilitaire
permettant un formatage partiel
d'une disquette, puis de recopier
la piste 0 issue d'une autre
disquette ProDOS (votre copieur
préféré fait probablement l'af-
faire).
Ceci fait, on dispose d'une
disquette bonne en apparence,
mais toujours inutilisable, car le
‘directory’ recopié n'aiguille pas
sur les bons fichiers. Ainsi, avant
Patrice Neveu
de modifier le directory, il faudra
connaitre les emplacements de
tous les fichiers 4 récupérer.
Nous allons donc devoir les
localiser, grace 4 la commande
INDEX.
La commande
INDEX
Pour comprendre le fonction-
nement de la commande index, il
faut étudier la structure d'un
fichier sous ProDOS, Dans la
majorité des cas, c'est-4-dire pour
les fichiers de plus de 512 octets
et de moins de 128Ko (Sapling
files), il est construit ainsi :
* un bloc index contient tous les
numéros de blocs sur Iesquels
Je programme est enregistré ;
+ puis, éparpillés sur la dis-
quette, on trouve ces blocs.
Sous ProDOS, les fichiers de
moins de 512 octets (seedling
files) sont pratiquement impos-
sibles a retrouver car, étant donné
qu'ils tiennent sur un bloc, ils ne
sont pas localisés par un bloc
index. Les fichiers de plus de
128Ko et moins de 16 mégas
(tree files) sont localisés par un
bloc index “maitre”, c'est-a-dire
un index qui pointe vers un
ensemble d'index, qui pointent 4
leur tour vers les blocs de
données du fichier.
Ainsi, lorsqu’on ne peut plus se
fier au directory pour retrouver
ses fichiers, le mieux est de
chercher les blocs index. La
commande INDEX va lire les
blocs du disque un par un, et
tenter de déterminer si un bloc
peut ou non, étre un bloc index.
Elle a toutefois besoin que vous
lui fournissiez le nombre de blocs
que contient la disquette :
Pom's n° 29
+ 280 pour un disque 5,25
pouces ;
+ 1600 pour un disque 3,5
pouces ;
+ 127 pour le disque virtuel en
mémoire auxiliaire.
Les valeurs pour les ProFile et
autres disques durs sont simples
a déterminer, puisqu'un
CATALOG affiche le nombre
total de blocs. Bien sir, micux
vaut avoir de la mémoire car, si
c'est de votre disque dur dont il
s'agit, vous n'en n'aurez
peut-€tre pas un second sur lequel
faire un essai...
En cas de doute, donnez un
nombre supérieur a la réalité : a
partir d'un certain moment,
INDEX affichera une suite
ininterrompue de numéros de
bloc en inverse ; vous en déduirez
que le nombre de blocs du
volume cst immédiatement
inférieur a cette suite. En régle
générale, tout numéro de bloc
affiché en inverse indique qu'il
est impossible de lire ce bloc.
INDEX s'inspire de la routine
FIB publiée dans “Beneath Apple
ProDOS”, mais en améliorant
grandement les performances.
Avec INDEX, un bloc index est
automatiquement détecté comme
tel (a l'exception des derniers
blocs de directory) ; au contraire
FIB produisait une trés longue
liste de blocs potentiellement
index, dont bien peu I'étaient en
réalité. L'algorithme utilisé est,
en effet, plus discriminateur.
Durant l'exécution de la
commande, des numéros de blocs
seront affichés (en affichage
normal). Ce sont les blocs
présumés étre index. Sortez-les
Sur imprimante, ou notez-les, car
nous allons maintenant les
utiliser.
Les commandes
RBLOC &
WBLOC
RBLOC et WBLOC sont deux
commandes supplémentaires : il
faudra lire un bloc par RBLOC,
1 bloc suivant
| $12 = 18 fichiers
dans le catalogue
n’ bloc précédent
siocz__\
0900: 00 00 03 00 F9 4B 4y ses cYHAR ) gay
0908: 44 43 4F 50 49 00 DCOPIE._ i
0910: 00 40 00 00 00 2= fichier de 2 a 256 blocs
0928: 00 00 00 7 = /ongueur du nom
0920: 01 00 c3
o9z8:
0930:
0938:
0940:
premier fichier $6 > c'est om pees binaire
+ | le bloc n* $0008 est le bloc
diindex, c'est ce n° qu'on
modifi
PROD seas
second fichier
Ce fichier contient
$000236 octets
(566 en décimal)
|AUX_TYPE : $7000
Comme ce fichier est
du type binaira, il s'agit de
|son adresse do chargomont.
+ +BASIC.
" SYSTEM. .
Le bloc n° 2 (premier bloc du catalogue), tel qu'il est affiché a I'écran
aprés la commande ‘RBLOC 2’. Pour modifier le numéro de bloc index du
premier fichier par exemple (n° trouvé 4 l'aide de Ia commande INDEX),
passer en moniteur (CALL - 151), puls avec le curseur, relire la ligne
‘0938:...' en modifiant au passage le numéro. Réécrire le bloc en faisant
WBLOC 2,
Pour bénéficier des commandes RBLOC, WBLOC et INDEX, il aura fallu faire
‘ BLOC’ et - INDEX’.
le modifier en mémoire en
utilisant le moniteur de l’Apple
(accessible par CALL - 151),
puis réécrire le bloc par WBLOC.
La structure du
Directory
Dés lors, nous avons toutes les
informations nécessaires pour
L'cxécution des deux commandes
affiche également 4 l'écran les
premiers octets du bloc et son
adresse d'implantation. Ainsi, si
la premiére adresse est $900,
alors le bloc se trouve en
$900-$AFF. Les routines char-
gent et déchargent uniquement la
mémoire vive située aprés un
éventuel programme Applesoft et
ses variables simples. En
conséquence, il est préférable de
ne pas modifier un programme,
ou l'exécuter, entre le RBLOC et
le WBLOC correspondant.
Il est maintenant préférable de
s'assurer, par l'utilisation de
RBLOC, que chaque bloc détecté
par la routine INDEX correspond
bien 4 un index de fichier. En
particulier, le méme numéro de
bloc ne doit pas apparaitre deux
fois.
ré-insérer nos fichiers dans le
directory. Pour lire le directory, il
faut se rappeler que celui-ci
commence toujours en bloc 2 ;
c'est le bloc-clé. Puis, selon le
type de disque, il continue sur
plusieurs blocs consécutifs. En ce
qui concerne la structure du
directory, seuls les octets
impliqués dans la récupération
des fichicrs sont signalés dans la
liste qui suit.
En début de chaque bloc
directory, on trouve toujours
ceci:
$00-01 numéro du bloc précé-
dent du directory pré-
cédent. Si nul, on est
dans le premier bloc ;
$02-03 numéro du bloc suivant
du directory. Si nul, on
est en fin de directory.
On ne touche pas a ces blocs
Pom's n° 29
27
qui ne servent qu'au chainage
interne, immuable par type de
support.
$25-26 FILE_COUNT
Nombre de fichiers
actifs dans le catalogue.
A mettre A jour, en fin de
travail, lorsque l'on saura
exactement combien de fichiers
sont a récupérer et a lister lors
d'un CATALOG.
Ensuite, a partir de l'octet $2B,
sont placées 13 séries de $27 (39)
octets qui décrivent individuel-
lement les fichiers stockés. Pour
chaque série, on trouve :
$00 STORAGE_TYPE/
NAME_LENGTH
type de fichier/longueur
du nom, au format
TITTLLLh,
Le type peut prendre les
valeurs :
$0 Entrée effacée, disponible
pour réutilisation
$1 Seedling file (1 bloc)
$2 Sapling file (2 a 256
blocs)
$3 Tree file (257 4 32768
blocs)
$D_ Sous-catalogue
SE Premiere entrée d'un
sous-catalogue
$F Premiére entrée du catalo-
gue (voir précédemment)
$01-0F FILENAME
nom du fichier.
Au départ, micux vaut soit ne
pas y toucher, soit y mettre un
caractére alphabétique. Les
commandes RENAME seront
pour bien plus tard.
$10 FILE_TYPE
type du fichicr
Les types qui peuvent nous
intéresser sont :
$04 TXT fichier ASCII
$06 BIN _ binaire
$OF DIR __ sous-directory
$19 ADB base de donnée
AppleWorks
$1A AWP traitement
de texte
AppleWorks
$1B ASP tableur
AppleWorks
$EF PAS PASCAL sous
ProDOS
BASIC
Applesoft
programme
langage
machine
telogeable
$FF SYS systéme
Pour déterminer le type appro-
rié, il sera préférable d'utiliser
a routine TDUMP du numéro
20 de Pom's afin d'afficher le
fichier et en déduire sa nature.
$FC BAS
$FE REL
$11-12 KEY_POINTEUR
numéro du bloc index.
A modifier aussitét que l'on a
utilisé INDEX et vérifié l'au-
thenticité des blocs renvoyés.
$13-14 BLOCKS_USED
Nombre de blocs utili-
sés par le fichier.
Cela comprend les blocs index
plus les blocs de données.
Modifier ceci en fonction
encore de ce que le bloc index
a donné.
$15-17 EOF
Longueur du fichier sur
3 octets.
Au départ, y mettre 512 fois le
nombre de blocs trouvé.
Ensuite, il sera toujours plus
facile de le modifier par voie
logicielle.
$1F-20 AUX_TYPE
dépend de FILLE_TY PE
TXT Longueur d'enregistre-
ment (paramétre L dans
OPEN)
BIN Adresse de chargement
(paramétre A dans
BSAVF)
BAS Adresse de chargement
(lorsque sauvé par
SAVE, normalement
$801)
VAR Adresse des variables
(sauvées par STORE)
SYS Adresse de chargement
(habituellement $2000)
Il est quasiment impossible de
fixer ces adresses, 4 moins de
se les rappeler, ou que le
fichier soit issu d'un logiciel
qui sauve toujours 4 la méme
adresse.
Les autres octets de chaque série
sont hors-propos ici, et d'ailleurs
non indispensables (par exemple
les dates de création et
modification).
Aprés avoir
retrouvé
les fichiers
Voila, logiquement une fois tout
ceci terminé, on devrait pouvoir
prendre les utilitaire ProDOS et
sauvegarder tous nos fichiers sur
une bonne disquette ProDOS, car
rapellons-le, ce que nous avons
fait suffit seulement 4 reconnecter
des fichiers au directory, et non a
remettre la disquette entigrement
en état. Entre autre, le schéma
d'occupation des blocs n'est pas
mis 4 jour, et il est donc impératif
de ne sauvegarder aucun fichier
sur le disque.
Syntaxe des
commandes
Apres avoir fait :
-INDEX
ct
-BLOC,
vous disposez des commandes
suivantes :
INDEX <nb de blocs>
[, S<numéro de slot>]
[, D<numéro de drive>]
RBLOC <numéro du bloc>
[, S<numéro de slot>]
[, D<numéro de drive>]
WBLOC <numéro du bloc>
[, S<numéro de slot>]
[, Denuméro de drive>]
Par exemple :
INDEX 280,56
INDEX 1600
RBLOC 173,S5,D2
WBLOC 173
Pour le disque virtuel /RAM,
prendre $3,D2.
Liste des fichiers sur la
disquette Pom's
T. INDEX .CODE
source Big Mac (format texte),
commande INDEX
28
Pom's n° 29
T.BLOC.CODE
idem pour commandes
RBLOC & WBLOC
INDEX
module exécutable
BLOC
module exécutable Au
exécutables.
Les commandes s'installent par
un simple BRUN sur les modules
ProDOS
I+
S;
verso de la disquette d’accompagnement (face
nommée /POMS29/), les fichiers sont au format ProDOS.
He
/le+
//e
Igs
Source ‘T.INDEX.CODE’ e ton ven eee Récapitulation
Assembleur Big Mac, format TEXT a eck ak y oren th sees F A
2 ian vrarmten INDEX
2 Let oFr 2 STA PIRe 5 oie
2 % Lor Aprés avoir saisi ce code sous
: ORG szi00 35 COMPAR LDA (PTR),Y —; Clest INDEX ? moniteur, vous lo sauvegarderoz
% CMP COMMANO-1, A
5 ” SNE Noch”; non, alors retour ay At BSAVE INDEX,A$2000,L$205
s cs Penile
: ie ee Les codes de $2000 & $20FF
9 80 Dee COMPAR corraspondent au programme
n C$ BOWNECHD 7 Cleat INDEX alors en CMDLOAD (Pom’s 20).
pene y aller
* 2
+ sh xoow ste 1 Indique que 1n commande 2000:AD 00 BF C9 4C FO 05 A9
Ban ea ences creche . nieat pas & nous 2008:87 AC FD FD AD 4D BE FO
. mr eine, ETE cl Aenean * SRR ELLE ER 2010:05 AS 15 4¢ 09 BE AD 04
+ Le progeamme va lize tous les blocs du disque + = 2018:21 69 00 20 98 20 90 05
+ jusqu'au nombre total qu'on lui indique dane * Proves étudie ia ligne 2020:A9 OE 4C 09 BE CD 02 21
* commande. Si le bloc est susceptible dietee un ¢ ;
bloc index. 11 affiche son numero. * 2028:90 F6 AE 08 BE 6D 08 BE
* : noweean 2030:8£ 07 21 AE 07 BE GE 06
ory Jpacaipe ses se 2038:21 AO 00 8C 07 BE 48 E9
examiner 1a coman
92 bey ; Tl ne doit pas y avoir 2040:21 85 3C 68 38 E9 04 85
de paramétres 85 49 64 48 AO
2 are FO 27 20 af Fa
28 sYNT_eAR = $40 ¢ Code du message "SYNTAX ety STA SISEKR 02 DO OF Bl 48
EAROR* 36 Sta xoxuM 2060309 09 cD 02 21 BO
repre = gan Pointeur temporatce * toa #0 de pacanttces: $00 :
30 LINNUM = $50 + Résultat de GRTADR en (Pita) SP OUIOA Sb ae OL AP AD ARIES
3 STAND = 560 } Adresse du début dela a8 ata pares 2070365 2F 85 48 AS 49 69 00
re 99 LA 40 2078285 49 DO D3 AO 00 A 22
ve rneroe = Ser ide la fin de 1a 100 STA PBrTse1 S
zone libre 101 V_SUITE LDA SUITE } Indique 1'adres: soa ced eps (ae etc
33 ovorxrem = $79 f Sauvegarde de TXTPTR retour 208864 42 88 64 3E 85 3F AD
34.cx = $20 7 Code du Carrtage Return 102 LDA V_surte+l 2090:08 BE 85 43 C8 4c 2c FE
35 BUFADR: = GAB } adresse de la premiere 103 STA XTADOR Biantanhen GooKS 7a eCcA OL
mmltle du bloc te 104 bon y_suimes2
26 auADR? = AD [ihdecase dere socesde “tes Sta XEnD0Re 20K0:8D FC 20 86 3D cE FC 20
meitie du bles 16 toe cue jCtéealt-tien pour sows #620 00 Ww 20
a curcrs = gat S Routine deprive de 107 ate
caractére 1OR suTTE 48 4A 4A 4A AR
38 TxXTPTR = $38 + Pointe sur le caractére 109 cur 40 + St pas d'erreur, on 20B8:68 29 07 A® B9 F3 20 3D
a A prendre aie pai cm continue 20C0:5@ BF DO £1 AS 3D DO 09
40 IN - $0200 7 Buffer clavier i ts SU eng) eS 20 NUKES eisre as:
a 20D0:BF AD FC 20 38 CE FD 20
42 exinrunn = sauec—; AttLchage de L'erreur 20D8:ED FD 20 cD FB 20 DO DO
43 orrsiz = Sarco; slot par derauc
44:DEFORY = 93E90 4 Daive pas défaut 20E0:A5 3D DO 07 18 AE FD 20
4S XTADDR ~ $RESO Pointe edresse de le 16 ‘LDA TXTPTR 20E8:E8 8A 60 AS 00 85 3D FO
46 XLEN SRRS? 17 LOX TXTPTR+2 an Basi: BORO IBS as 607 $040)20, 2008
riubtetiaaliam 20F8:04 02 01 00 00 00 AD 99
47 xeon = 583 ne STA oLDExTPrR 2100:DR A 23 AQ 01 AD 58 FF
ae pBITs «= © SRES4 =; Indiquent les ns SIX OLDIXTPER#L 6 AE AO oo ne
paranéires valables 120 a
49 VPATHL = SBEEC 4 Pointe sur le nom de a2. ‘LOY XLEN # O® se trouve la fin du 01 Bl 48 DI CA
volume wmot de commande ? cB CO 06 90 FA
20 BADcALL ~ ftaduie ivereeur pour zz i fSert & lire 1a suite:
de Dr numéro de bloc, ge hal rel al
St RNTRY - 7 Point dlentrée du MET 123 Ne 4 puls les paramétres Ad 00 8D OF BF
$2 sven = IVa kis ont ioe So tventuels (2 et 9) A9 00 8D 54 BE
traitement dex erreurs 124 yA } Pour cela, on oe sert
33 Os eaeeas 55 BE AD 4E 21
54 FRMNUM = ‘$0067 7 Range valeur pointée 125, ce + On additionne la aD 50 RE AD 3F
par IXTPTR dans FAC longveur dy mot-clé DE 16 0 co 00
SS GErOR = $8752; ‘Transform FAC en 16 aoc veri —; (INDEX) au début de la
entier 2 oct (LINNUM) Boney Be eS. 12,
36 LINPTR) = sep24 ¢ Affiche X et A 127 STA TXTPTR 52 BE C8 C8 98
S7 cour =~ sruED = Atriene Le caractere se Re aren io a8
Urouvant dana A ze LDA veaTiie
Se INVERSE ~ srEeo 4 Affiche en inverse 85 Bd 20 82 22
58 NORMAL = as noc 40 ee D1 22 20 AF
Be eta Tareznea Bach oe ch is
1 JER DWAR On va Lise Le nombre Be 22 C9 D3 D0
cmt eat potnre 2188:0B 20 Be 22 29 07 ep 3c
in STA Tor Bloc 1 Ge sera le bloc final 9, 99:98 4c 79 21 C8 C4 FO 03
ee START = CLD ¢ Obligatoire pour ProDos 135, 2198:4C 8E 22 20 BB 22 29 03
« LOK epeunts0100 7 Convention pour 21AN0:@D 3D BE 4C 79 21 A9 00
croton ars Lecture des paranteres s'11 y en a
ee LOA #ou0Na sor00 2 21A8:8D CA 22 8D C9 22 AD C5
65 vouseno ok ATS ey 2100:22 AD AF 21 AE BO 21 @D
en
Pom's n° 29
140
141
uaz
145
147
ist
155
Showing the first 100000 of 252452 characters.