Text content (OCR)
En vente en librai
Apple, logique et systémes
experts,
par René DESCAMPS.
224 pages - 120,00 FF.
12 programmes en Basic, 4
fichiers proposent de cons-
Innire un “moteur d’inféren-
ce” capable de trouver
lution d’énigmes et de batir
des raisonnements.
Rasic Plus 80 routines sur
Apple I,
par Michel MARTIN.
144 pages - 95,00 FF.
Basic Plus vous propose
80 routines pour “muscler
votre machine, 80 maniéres
de simuler des fonctions
que vous n‘auriezjamaiscru
pouvoir utiliser.
Exploitation d’enquétes sur
Apple II et IBM/PC,
par J.-F. GRIMMER.
176 pages - 120,00 FF.
Lensemble des program-
mes proposés permet d’ex-
en boutique informatique et auprés de P.S.I. Diffusion
nur
IBM/PC.
Diététique sur Apple Il
224 pages - 120,00 FF.
Apple en famille.
par J.-F. SEHAN
232 pages - 120,00 FF.
40. programm
Basic
Super Jeux Apple.
256 pages - 120,00 FF.
50 programmes de jeux en
Basic sur Apple
Apple, modems et serveurs,
par Alain MARIATTE.
224 pages - 130,00 FF.
Pour apprendre a se ser-
vir d'un modem et se
familiariser avec les outils
télématiques.
P.S.. DIFFUSION B.P. 86
77402 LAGNY-SUR-MARNE CED!
Tel.: (6) 006.44.35
Télex: PSIDIF 600978 F
: Hervé Thiriez
Directeur de la publication
S
5
§
=
J
—
S
nN
1
£
2
=
=
s
=
o
2
3
3
a
5
Ss
S
1
8
=
La
2
~
Ss
3
3s
I
Dos ou ProDOS _ Des messages
a la carte en boites
Francois Sermier
Jean-LucAmaud , bancaires
Jean-Luc Bazanegue
PSI.
MBD.C.
APPLE Hervé Roy-Contancin
Ordinateur Individuel
Ch | 2 &
Club Apple (its)
Guide-Micro OJ. Carr)
ie
_Allé ProDOS ? il
Alexandre Avrane
| Quatre fonctions pour le Basic
Sylvie Gallet
Editorial _ Courrier des Micro-infos
HervéThiriee | Lecteurs olivier Herz Jean-Michel Gourévitch
Sel a
Pom's n° 20
Editorial
laser et 100 % Apple pour la préparation de Pom's a
partir de ce numéro. Contribuent aux pages qui suivent :
O des Macs 128 et 512 Ko, une imprimante 4a laser, des
Apple ][+, //e, /ic, des liaisons série pour que ce beau
monde communique, MacPaint, MacDraw, MacWrite, AppleWriter et quelques
programmes ‘maison’. Cela pour une présentation que vous trouverez, nous l'espérons,
améliorée et qui prendra certainement son aspect définitif dés le numéro 21.
Les congés vous ont permis, si ce n'est de bronzer, tout au moins de penser G Pom's. Nous
recevons de nombreuses contributions qui nous promettent de belles pages pour les
prochains numéros : continuez !
Toujours un sommaire fourni :
De nouvelles fonctions accessibles par I'& aprés un simple BRUN : tel est l'objet du
programme de Sylvie Gallet. Une utilisation originale de votre carte langage — y stocker
des variables chaines de longueur fixe — il s’agit d'un utilitaire de Hervé
Roy-Contancin.
Deux articles consacrés a ProDOS dans ce numéro :
* une trés belle de contribution de Francois Sermier qui permet de disposer de DOS et
ProDOS simultanément en mémoire. Pourquoi ne pas éditer vos programmes Basic
avec EPE sous DOS puis les sauvegarder sous ProDOS ?
* une étude approfondie des appels en assembleur par Alexandre Avrane avec la mise
en place de commandes externes, un Tdump et un Init qui faisaient défaut.
Gérard Becher a écrit un programme de copie d'écran sur Silentype qui, outre son
aspect pratique pour les possesseurs de ces imprimantes, présente un intérét didactique
pour tous par son source particuliérement commenté. Dans le méme esprit, avec Pascal
Cantot, les Asl, Lsr, Rol et Ror ne devraient plus avoir de secret pour vous.
Egalement, un volumineux programme assembleur de Jean-Luc Arnaud pour éditer le
catalogue de vos disquettes.
Converti au 68000, nous retrouvons Gérard Michel dans le cahier Mac. Belle
contribution de Jean-Luc Bazanegue et Christian Piard : La gestion de vos comptes
bancaires personnels sur Macintosh, présentation "Macintosh" bien qu'exceptionnellement
sans coccinelle !...
Et, comme 4 l'accoutumée, les rubriques de Jean-Michel Gourévitch et Olivier
Herz.
Hervé Thiriez
Ont collaboré 4 ce numéro : Alexandre Avrane, Jean-Luc Arnaud, Jean-Luc Bazanegue, Gérard
Becher, Pascal Cantot, Sylvie Gallet, Jean-Michel Gourévitch, Olivier Herz, Gérard Michel, Hervé
Roy-Contancin, Frangois Sermier.
Directeur de la publication, rédacteur en chef : Hervé Thiriez.
Rédacteurs : Alexandre Avrane, Olivier Herz.
Siége social : Editions MEV, 49, rue Lamartine, 78000 Versailles. Tél : (3) 951 24 43.
Publicité : Editions MEV.
Diffus' oN. M..P; P:
Impression : Rosay, 47, avenue de Paris, 94300 Vincennes. Tél : (1) 328 18 63.
a7
Pom's n° 20
Quatre fonctions
pour le Basic
€ programme présenté
ici est classique, mais
Sylvie Gallet
est d'une grande utili-
L té pour les program-
meurs en Basic. En effet, par
l'intermédiaire de l'ampersand, il
permet :
¢ de supprimer les REMs d'un
programme Basic. Toutefois, il
ne tient pas compte des
GOTOs et des GOSUBs ;
* déditer une ligne de program-
me, sans introduire d'espace
superflu. Un petit probléme
subsiste : il s'agit des REMs
comportant un CTRL-J ;
ele BOKE 33,28 (bien prati-
que) ;
+ l'accés au Mini-Assembleur ;
celui-ci a été relogé en $8A9A
mais peut étre aussi appelé par
$8CO0G ;
+ l'accés a toutes les fonctions
du RENUMBER de la dis-
quette Maitre.
Mode d'emploi
En lancant le programme COM-
MANDES, vous obtiendrez la
liste des commandes autorisées
ainsi que leur syntaxe. Le
programme UTILITAIRES con-
tient déja RENUMBER et le
Mini-Assembleur. II ajuste
lui-méme la HIMEM et le vecteur
ampersand (&). Il se lance par :
BRUN UTILITAIRES, A$8A8E
Il y a une petite précaution a
prendre. Aprés MAXFILES,
HIMEM ov FP, il est indispen-
sable de relancer UTILITAIRES.
Les commandes
La syntaxe
- &P effectue successivement un
HOME et un POKE 33,28
- & LNNN liste la ligne de
programme dont le numéro est
donné par NNN
- &C supprime les REMarques
du programme
- &A donne accés au Mini-
Assembleur (Basic)
- 8C00G pour le Mini-Assem-
bleur (Moniteur)
Pour le RENUMBER, la syntaxe
est un peu plus lourde. Il faudra
taper : "RENUMBER:&" suivi
des paramétres F, I, S, E, H, M.
Ces paramétres représentent res-
pectivement :
+ le premier nouveau numéro de
ligne (first);
» Tincrément ;
* le numéro de la premiére ligne
4 renuméroter (start);
+ le numéro de la demiére ligne 4
renuméroter (end);
* la protection du programme
pour fusion (hold);
¢ la réalisation de la fusion
(merge);
Pour les utilisateurs n'ayant pas
la disquette d'accompagnement,
voila comment il faut procéder
pour RENUM et MINI:
] FP (HIMEM: 38400 soit
$9600 en hexa)
] RUN RENUMBER
JBSAVE RENUM, A$8E00,
L$800
] BLOAD INTBASIC, A$6000
] CALL-151
* 8535: 4C 2F 8B
* 8559: 4C 2F 8B
* 85BD: 20 CE 8B
* 85DB: 20 CE 8B
* 85E5: 20 CE 8B
* 8631: 4C F6 8A
* 8666: 4C 2C 8B
* BSAVE MINI, A$8500,
L$170
* BLOAD MINI, A$S8A9A
* BSAVE MINI, A$8A9A,
L$170
* BLOAD UTILITAIRES OBy,
AS$8A8E
* BLOAD MINI
* BLOAD RENUM
* BSAVE UTILITAIRES,
A$8A8E, L$B72
Se;
Programme
UTILITAIRES SCE
(Assembleur LISA 2.5)
RRR REAEEA RARER EERE ER ERR RE EREEE
UTILITAIRES DE BASIC
* S. GALLET 27-2-1985 *
waueune
ae *
Q teeeekeeenanee
10;
i:
12 STXERR EQU $DEC9
13 HOME EQU $FC58
14 FRMNUM EQU $DD67
15 GETADR QU $E752
16 FNDLIN QU $D61A
17 ILLQTY EQU $E199
18 OUTDO = EQU SDBSC
19 GIVAYF EQU $E2F2
20 MOVAF = EQU SEBE3
Pereretirtittitty
21 FDIVT EQU SEA69
22 CONINT EQU SECFB
23 LINPRNT EQU SED24
24 CRDO EQU $DAFB
25 BASIC = EQU $FEB3
26 SIGNFLT EQU $E301
27 AMPER = EQU $3F5
28 RENUMBER EQU $8E00
29 MINI EQU $8C00
31 LARGFEN EPZ $21
32 CHRGET EPZ $B1
Pom's n° 20
LOWIR -EPZ $9B
LINNUM = EPZ $50
AUXIL = EPZ - $85
FAC EPZ $9D
cv EPZ $25
cH EP2 $24
LT EPZ $FE
TXTPTR EPZ $BB8
AUX EPZ SFC
HIMEM = EPZ $73
CAR.LU EPZ SFA
CAR.ECR EPZ $FC
Ls EPL SKE
TEMP EPZ SF9
PAGEND EPZ SAF
EPZ $67
ORG $8A8E
OBS $800
RAR AARA RIE RRR RR RR ARR RRRERE
ORIGINE:
NOP
LDA #ORIGINE
STA HIMEM
LDA /ORIGINE
STA HIMEM+1
IMP INIT
verreerevertttttitrrcccetccrs¢
;DEBUT DU MINI ASSEMBLEUR
7FIN DU MINI ASSEMBLEUR
MINIASD:
ORG MINIASD!$170
OBJ $97C
#s4c
STA AMPER
#DEBUT
STA AMPER+1
/DEBUT
STA AMPER+2 0 _
amp BASIC
100
101
102
CMP #'P*
BNE 12
UMP POKE
T2:
CMP #'Lt
BNE 73
IMP EDIT
73:
act
UMP COMPACTE
T4:
erat
oMp
ome
oMP
gsR
BNE
JSR
LDA
STA
RTS
LDA
STA
LDA
STA
126 LITCAR:
127 JSR
128 Bec
129 BNE
130 IDA
131 STA
132 LOA
133 STA
134 INC
135 BNE
136 INC
137 CALCFORM:
138 JSR
139 BCS
140 ISR
141 TDA
142 MP
143 BCS
144 oMp
145 CHLIGN:
146 JSR
147 BCs
148 ump
149 PRTLIGN:
150 ISR
151 JSR
152 LDA
153 osR
154 IDA
155 JSR
156 LDA
157 1px
158 JSR
159 LDA
160 STA
161 LDA
162 STA
163 LDA
164 oSR
165 LIST:
166 iy
167 BOUCLE:
168 JSR
169 LDA
170 BNE
171 oMP
172 SUITE:
MINI 173 BPL PRINT
174 TOKEN:
RENUMBER 175 SEC
176 SBC #97F
STXERR 177 TAX
178 STY AUXIL
179 LDY #$D0
180 STY FAC
181 LDY #$CF
CHRGET 182 STY FAC+1
ERR 183 LDY #SFF
HOME, 184 LIT:
#51C 185 DEX
LARGFEN 186 BEO BONTOKEN
187 LIT1:
188 JSR INCR.Y1
189 BPL LIT?
190 BMI LIT
191 BONTOKEN:
‘TXIPTR 192 LDA #320
AUX 193 JSR OUTDOL
TXIPTR+1 194 PRNTINST:
AUX+1 195 JSR INCR.Y1
196 BMI DERNCAR
CHRGET 197 JSR OUTDOL
LITCAR 198 BNE PRNTINST
ERR 199 DERNCAR:
AUX 200 JSR OUTDOL
TXIPTR 201 LDY AUXIL
AUX+1 202 LDA #520
TXTPTR+1 203 PRINT:
‘TXIPTR 204 JSR OUTDOL
CALCFORM 205 SMP BOUCLE
TXTPTR+1 206 FIN:
207 LDA LT+1
FRMNUM 208 wy LT
ERR 209 JSR CIVAYF
GETADR 210 JSR MOVAY
#859 211 LDY LARGFEN
LINNUM+1 212 JSR SIGNFLT
CHLIGN 213 JSR FDIVT
ILLQTY 214 ISR CONINT
215 TKA
FNDLIN 216 EOR #$FF
PRTLICN 217 cle
STOP 218 ape cv
219 BMI STOP
RDO 220 CMP #918
RDO 221 BEL STOP
#520 222 STA CV
ourTpo1 223 STOP:
#$20 224 ¥ MP BASIC
ouTDo1 225:
LINNUM#+1 226 ;
LINNUM 227 *#* SOUS-PROGRAMMES ***
LINPRNT
cH
LT
#500
LT+1
#520
ouTpo1
#53
INCR.¥2
(LOWTR) , ¥
SUITE
FIN
oe
Pom's n° 20
243 BNE MPAG1 289 ORA TEMP 335 RTS
244 Inc FACH1L 290 BEQ FIN.REM 3367
245 MPAG1: 291 LDX #$2 337 ECRIRE INC CAR.ECR
246 LDA (FAC),Y (292 BX2 JSR LIRE 338 BNE E
247 RTS 293 JSR ECRIRE 339 INC CAR.ECRt1
248 294 DEX 340 E STA (CAR.ECR),Y
249; 295 BNE BX2 341 RTS
250 INCR.Y2: 296 MP DEBUTREM 342;
297 FIN.REM JSR ECRIRE 3243 LIRE INC CAR.LU
252 INY 298 JSR ECRIRE 344 BNE L
253 BNE MPAG2 299 LDA CAK.ECK 345 INC CAR.LU+1
254 INC LOWTR+1 300 STA PAGEND 346 L TDA CAR.LU+1
255 MPAG2: 301 LDA CAR.ECRt1 347 MP PAGEND+1
256 RIS 302 STA PAGEND+1 348 BNE LL
257 : 303 IMP BASIC 349 LDA CAR.LU
258 ; 304 SUITEREM CMP #$B2 350 CMP PAGEND
259 sthneneaaannannnnaaaannnen sos Bedites ae mee
260 306 JSR ECRIRE 352 SMP FIN.REM
261 307 MP DEBUTREM 353 LL LDA (CAR.LU),Y
262 ; 308 REM LDA #$3 354 RTS
263 309 cLe 355 ;
264; 310 apc Ls 356 CHAINER LDA CAR.ECR
265 ; 311 PHP 357 cLe
266 INIT.REM LDY #§0 312 CMP CAR.ECR 398 ADC #$1
zor LDA TXTTAB 313 BNE NON 359 STA (LS),Y¥
268 STA LS 314 LDA #50 360 LDA CAR.ECR+1
269 cLe 315 PLP 361 ADC #$0
210 ADC #53 316 ADC LS+1 362 INY
271 STA CAR.LU 317 CMP CAR.ECR+1 363 STA (LS),¥
272 STA CAR.ECR 318 BNE NON 364 DEY
273 LDA TXTTAB+1 319 REM.FL LDA #$4 365 STA LS+1
274 STA LS+1 320 STA TEMP 366 LDA CAR.ECR
275 ADC #50 321 JSR DECALE 367 STA LS
276 STA CAR.LU+1 322 MP TESTFIN 368 INC LS
277 STA CAR.ECR+1 323 NON LDA #$1 369 RTS
218 3 324 STA TEMP 370;
279 DEBYTREM JSR LIRE 325 JSR DECALE BDL RIOR RR
280 BNE SUITEREM 326 MP 2FL 372 3
281 2FL JSR ECRIRE 327 DECALE LDA CAR.ECK 373 ;RENUMBER SE TROUVE ICI
282 JSR CHATNER 328 SEC 374;
283 TESTFIN LDX #$2 329 ‘SBC TEMP 375 FARO ERE
284 BX1 STA TEMP 330 BCS X 376:
285 JSR LIRE 331 DEC CAR.ECR+1 377 FINAL:
286 JSR ECRIRE 332 x STA CAR.ECR 378 :
287 DEX 333 BOUCLE.L JSR LIRE 379 LONGUEUR FQU FINAL-ORIGINE
288 BNE BX? 334 BNE BOUCLE.L 380 END
Programme COMMANDES
10 TEXT: HOME : SPEED~ 255:D$ - CHRS (4)
20 PRINT” COMMANDES:" 1ER NOUVEAU NUMERO"
30 PRINT: PRINT"-8CO0G MINI ASSEMBLEUR 70 PRINT"-| INCREMENT: PRINT"-S 1ERE
(MONITEUR)": PRINT"-&A — MINI ASSEMBLEUR LIGNE A RENUMEROTER™
(BASIC)" 80 PRINT"-E — DERNIERE LIGNE A RENUMEROTER*
40 PRINT: PRINT™-&P _ HOME+POKE33,28": PRINT : 90 PRINT"-H — PROTEGE LE PRGM POUR FUSION":
PRINT"-&LNNN LISTE LA LIGNE NNN POUR”: PRINT"-M REALISE LA FUSION"
PRINT" EDITION" 100 PRINT : PRINT "ATTENTION! APRES ‘MAXFILES’,
50 PRINT:PRINT"-&C SUPPRIME LES 'HIMEM OU 'FP’, IL FAUT RELANCER
REMARQUES" ‘UTILITAIRES™
60 PRINT : PRINT "RENUMBER: & SUIVI DE:”: PRINT "- F
110 PRINT D$"BRUNUTILITAIRES”
Pom's n° 20
Récapitulation
8C70- AY F9 C5 51 BO 03 4C 99 BAA8- 18 ES 3A 85 3E 10 01 CB
UTILITAIRES OBJ 8C78- F1 20 1A D6 RO 03 4c OC @ARO- 98 FS 3B DO 6B A4 2F BS
8C80- 8D 20 FB DA 20 FB DA AS 8AB8- 3D 00 91 3A 88 10 FB 20
SA8E- EA AQ BCB8- 20 20 OF 8D AQ 20 20 OF 8ACO- 1A FC 20 1A FC 20 DO F8
8A90- 8E 85 73 AQ 8A 85 74 4C 8C90- 8D AS 51 AG 50 20 24 ED SACB- 20 53 F9 84 3B 85 3A 4C
8A98- OA SC AS 8D 9F AS AQ 9D gcos- AS 24 85 FE AQ 00 85 FF SADO- 2F 8B 20 BE FF A4 24 270
8AAO- 8D 7C AS 8D AO AS AQ EA 8CAO- AQ 20 20 OF BD AO 03 20 SAD8- A7 FF 84 34 AO 17 88 30
SAAS- 8D DF AG ED EO AG 20 58 8CA8- 21 8D Bl 9B DO 03 4c EO SAEO- 4B D9 CC FF NO F8 CO 15
8ABO- FC A2 00 BD 30 08 FO 17 8CBO- 8C 10 30 38 E9 7F AA 84 8AE8- DO E8 AS 31 AO 00 C6 34
8AB8- 20 ED FD E8 DO FS 8D CC 8CB8- 85 AO DO 84 9D AO CF 84 @AFO- 20 00 FE 4C 2F BR AS 3D
8ACO- CF Cl C4 C9 CE C7 AO CC 8CCU- YE AU FF CA FO 07 20 19 8Ar8- 20 8E F8 AA BD 00 FA CS
8AC8- C9 D3 Cl AE AE AE 00 AD 8cc8- 8D 10 FB 30 Fé A9 20 20 8B00- 42 DO 13 BD CO F9. C5 43
8ADO- 83 CO AD 83 CO A9 00 8D 8CDO- OF 8D 20 19 BD 30 05 20 8B08- DO OC AS 44 Ad 2E CO 9D
8AD8- 00 EO AD 00 EO DO 70 AQ 8CD8- OF 8D DO Fé 20 OF 8D a4 8B10- FO 88 C5 2E FO 9F C& 3D
8AEO- FF 8D 00 EO AD 00 EO C9 8CEO- 85 A9 20 20 OF 8D 4C AT 8B18- DO DC E6 44 C6 35 FO D6
BAES- FF DO 64 AO 00 AD 89 CO 8cE8- 8C AS FF A4 FE 20 F2 E2 8B20- A4 34 98 AA 20 4A FO AD
8AFO- AD 89 CO B9 8B 08 FO 07 8CFO- 20 63 EB A4 21 20 01 E3 8B28- DE 20 ED FD 20 3A FF AS
8AF8- 20 ED FD C8 4C 65 08 AD SCF8- 20 69 EA 20 FB E6 8A 19 8B30- Al 85 33 20 67 FD 20 ¢7
8B00- 83 CO AD 83 CO AD 83 CO 8D00- FF 18 65 25 30 06 CY 18 8B38- FF AD 00 02 C9 AO FO 13
8BOB- AO 00 BO AG 08 FO 07 20 8D08- 10 02 85 25 1¢ B3 FE 20 8B10- C8 C9 Ad FO 92 88 20 AT
8B10- ED FD C8 4c 7¢ 08 4c 00 8D10- 5C DB E6 FE DO 02 E6 FF 8B48- FF C9 93 DO DS 8A FO D2
@B18- EO 8D 84 C2 CC CF Cl C4 8D18- 60 C8 DO 02 E6 9E B1 9D 8B50- 20 78 FE A9 03 85 3D 20
8B20- AO Cl D3 CD AE C3 CF C4 8D20- 60 C8 DO 02 E6 9C 60 AO 8B58- CE 8B 0A E9 BE C9 C2 90
8B28- CS AB Bl AC Cl A4 C4 BO 8D28- 00 AS 67 85 FE 18 69 03 8BG0- Cl OA OA A2 04 OA 26 42
8B30- BO BO 8D 00 8D 84 C2 CC 8D30- 85 FA 85 FC AS 68 85 FF 8B68- 26 43 CA 10 F8 C6 3D FO
@B38- CF Cl C4 AO Cl D3 CD AE 8D38- 69 00 85 FB 85 FD 20 C4 8B70- F4 10 E4 A2 05 20 CE 8B
8B40- C3 CF C4 C5 AE B2 AC Ci 8D40- 8D DO 36 20 BB 8D 20 DC 8B78- 84 34 DD B4 F9 DO 13 20
8B48- A4 C4 BO BO BO 8D 00 AS 8D48- 8D A2 02 85 F9 20 C4 BD 8B80- CE 8B DD BA F9 FO OD BD
8B50- 01 8D Bl AA A2 00 BD DE 8D50- 20 BB 8D CA DO F5 05 F9 8B88- BA F9 FO 07 C9 A4 FO 03
8B58- 08 FO 06 20 ED FD E8 DO 8DS8- FO OE A2 02 20 C4 8D 20 @B90- A4 34 18 88 26 44 EO 03
BR60- F5 4C 00 60 8D 84 CD Cl 8D60- BB 8D CA DO F7 4C 3E 8D 8B98- DO OD 20 A7 FF AS 3F FO
8B68- D8 C6 C9 CC C5 D3 AO B1 8D68- 20 BB 8D 20 BB 8D AS FC 8BAO- 01 E8 86 35 A2 03 00 06
8B70- 8D 84 C2 CC CF C1 C4 AO 8D70- 85 AF A5 FD 85 BO 4C B3 SBA8- 3D CA 10 C9 AS 44 OA OA
8B78- Cl D3 CD AE C3 CF C4 C5 8D78- FE C9 B2 FO 06 20 BB 8D 8BBO- 05 35 C9 20 BO 06 AG 35
8BR0- AC C1 A4 BG RO RO RO AD 8D80- 4C 3E 8D A9 03 18 65 FE 8BB8- FO 02 09 80 85 44 84 34
8B88- 00 00 00 00 B7 FF FF FF 8D88- 08 CS FC DO 13 A9 00 28 8BCO- B9 00 02 C9 BB FO 04 C9
@B90- 61 01 FE FE 01 01 FF FF 8D90- 65 FF C5 FD DO OA AQ 04 BRCR- 8D DO 80 4C Fé 8A BO 00
8B98- 01 01 FE FF O1 Ol FF FF 8D98- 85 F9 20 AA 8D 4c 49 8D 8BDO- 02 C8 C9 AO FO FB 60 20
8BAO- El 01 FE FE 01 01 FF FF QDAO- AQ 01 85 FO 20 AA AN 4c @BD8- 7D F4 A5 FR 10 123.C9 BE
BBA8- 01 01 FE FF 01 01 FE FF 8DAB- 43 8D AS FC 38 E5 F9 BO 8BEO- DO F5 24 F9 10 OA AS FB
8BBO- 21 01 FE FE 01 00 FF FF 8DBO- 02 Cé FD 85 FC 20 C4 8D BBES- FO 06 F6 FA NO 02 E6 FO
8BB8- 00 00 FE FF 01 00 FE FF 8DB8- DO FB 60 E6 FC DO 02 E6 BBFO- 60 A9 00 85 F9 85 FA 60
BBCO- 41 01 FE FE 01 00 FF FF 8DCO- FD 91 FC 60 E6 FA DO 07 @BF8- FF FF FF FF FF FF FF FF
8BC8- 00 00 FE FF 01 00 FF FF 8DC8- E6 FB AS FB C5 BO DO 09 BCOU- 4 2C 8B 84 58 86 57 85
@BDO- 41 01 FE FE 01 01 FF FF 8DDO- AS FA CS AF DO 03 4c 68 gcog- 56 08 AD 4c BD F5 03 AD
8BD8- 01 01 FE FF 01 01 FE FE 8DD8- 8D Bl FA 60 AD FC 18 69 8C10- 1C 8D F6 03 AY 8C 8D F7
SBEO- 01 01 FE FE 01 00 FF FE 8DEO- 01 91 FE AS FD 69 00 c8 8c18- 03 4¢ B3 FE C9 50 DO 03
8BE8- 00 00 FE FE 01 01 FE FE BDE8- 91 FE 88 85 FF AS FC 85 8C20- 4C 3E 8C CY 4C DO 03 4c
8BFO- 61 01 FE FE 01 00 FE FE 8DFO- FE E6 FE 60 8C28- 4B 8C C9 43 DO 03 4c 27
8BF8- 00 00 FE FE 01 00 FE FF 8C30- 8D C9 41 DO 03 4c 00 BC
8CO0- 81 01 FE FE 01 00 FF FF 8C38- 4¢ 00 8E 4C¢ C9 DE 20 BL
8COB- 01 01 AY 4C BD FS 03 AD 8C40- 00 DO F8 20 58 FC AQ 1C
8C10- 1¢ 8D F6 03 A9 8C 8D F7 ij i, gc48- 85 21 60 AS BB 85 FC AS
8C18- 03 4C B3 FE C9 50 NO 03 Récapitulation 8C50- B9 85 FD 20 Bl 00 90 FB
8C20- 4C 3E 8C C9 4c DO 03 4c UTILITAIRES | ocss- vo £1 as Fc 05 Be AS FD
8C28- 4B 8C C9 43 DO 03 4c 27 Fst constitué des fichiers 8C60- 85 B9 E6 B8 DO 02 E6 BO
8C30- 8D CY 41 DO 03 4c 00 BC UTILITAIRES OBJ, MINI, RENUM. 8C68- 20 67 DD BO CE 20 52 E7
8C38- 4C 00 8E 4c C9 DE 20 Bi Clest le seu) fichier nécessaire 8C70- A9 F9 C5 51 BO 03 4c 99
BC40- 00 DO FB 20 58 FC AQ Ic a ltobtention des 4 fonctions. 8c78- E1 20 1A D6 BO 03 4c 0c
8C48- 85 21 60 AS BB 85 FC AS 8C80- 8D 20 FB DA 20 FB DA AS
8C50- B9 85 FD 20 Bl 00 90 FB BA8E- EA AQ 8cB8- 20 20 OF BD AY 20 20 OF
8c58- DO B1 A5 FC 85 BS AS FD 8A90- 8E 85 73 AS BA 85 74 4c 8C90- 8D AS 51 AG 50 20 24 ED
8C60- 85 B9 E6 BB DO 02 E6 BO 8A98- 0A 8C EY 81 4A DO 14 Ad 8c98- AS 24 85 FE A9 00 85 FF
ecés- 20 67 DD BO CE 20 52 £7 BAAO- 3F A6 3E DO 01 88 CA 8A BCAO- AY 20 20 OF 8D AO 03 20
NS
8 Pom's n° 20
8CA8-
8cBO-
8CB8-
8cco-
8ccB-
ecDo-
8cD8-
8CEO—
8CE8-
8CcFo-
8CF8-
8DO0-
gD08-
8D10-
anis—
8D20-
gD28-
8D30-
8D38-
8D40-
gp48-
8D50-
sp58-
BD60-
sDées-
8D70-
gp78-
8D80-
spes-
8D90-
sp98-
8DA0-
spAs—
8DB0-
spBe-
sDC0-
epce-
8DD0-
spD8-
8DEO-
8DE8-
8DFO-
8DF8-
8F00-
8E08-
8E10-
8E18-
BE20-
8E28-
8E30-
BE38-
8E40-
8E48-
8E50-
8E58-
8E60-
8E68-
8E70—
8E78-
8E80
8E88-
8E90-
8E98-
8EAO-
21
sc
60
60
00
85
69
8D
8D
20
FO
BB
20
85
FE
4c
os
6
8s
AQ
43
02
Do
FD
E6
AS
8D
ol
91
FE
00
AG
03
DO
a2
84
86
29
AC
93
20
FO
FO
OA
A8
96
DO
AO
67
10
AO
AO
10
8D
8D
Ag
AS
63
69
02
DB
ces
c8
AS
FA
00
Do
A2
BB
OE
8D
BB
AF
co
3E
cS
rr
F9
8D
cé
FB
91
FB
FA
Bl
91
FE
E6
98
BS
94
ac
04
OA
id
A3
FO
92
20
B2
oD
05
Ag
co
FO
0S
BT
EC
Bl
Do
FF
20
DO
20
FF
EB
EA
85
E6
DO
DO
67
85
85
36
02
8D
A2
cA
8D
AS
B2
8D
FC
co
20
85
AS
FD
60
FC
AS
cs
FA
FE
88
FE
co
8c
20
23
88
AO
84
84
57
co
BA
94
CA
AO
20
2c
05
AG
AO
AS
AS
9B
38
84
cA
30
F6
20
A4
Aa
20
25
25
02
02
85
FB
20
85
cA
02
Do
20
FD
Ag
DO
FD
F9
Fe
85
E6
60
FB
AF
60
AS
60
20
BB
BA
93
4c
AO
AG
co
43
94
A2
10
cr
B2
Do
20
AS
Dé
Al
AO
cA
AO
CF
AG
EO
92
Do
03
86
EQ
a4
84
20
20
AG
Al
E2
E3
49
18
20
FF
9D
AO
03
FF
c4
pe
an
F9
20
8D
FC
B3
ED)
FE
28
04
8D
4c
BO
8D
E6é
02
09
68
69
cs
85
BO
oD
8c
DO
67
FF
9E
A2
90
4c
AZ
12
94
80
8A
90
86
AT
PA
05
BS
AB
8EA8-
S8EBO-
SEBB-
8ECO-
8ECB-
8ED0-
8ED8-
8EEO-
SEEB-
SEFO
SEFB-
8Fo0-
8Fos-
8Fi0-
eris-
8F20-
8F28-
8F30-
8F38-
8F40-
erag-
8F50-
aFse-
8F60-
aF68-
8F70-
8F78-
8F80-
eree-
r90-
8F9o8-
8FAO-
SFAg-
8FBO-
SFBe-
BECO-
8Fc8-
8FD0-
SFDe-
8FEO-
SFES-
8FFO-
SFFS8-
9000-
9008-
9010-
9018-
9020-
9028-
9030-
9038-
9040-
9048-
9050-
goss
9060-
9068-
9070~
9078-
9080-
9088-
9090-
9098-
90A0-
AO
AS
94
A2
81
FO
94
20
65
AO
02
BO
4c
AT
20
68
AS
20
AB
4c
AS
AS
BC
85
AO
20
90
04
£0
94
20
AS
20
AA
9E
AS
65
2)
9E
OF
DO
DO
co
4c
SF
FS
05
BO
oc
92
AO
Bl
45
45
E2
AS
85
68
90
91
94
02
ce
Do
00
AT
P4
17
Al
Aa
27
D1
B6
AO
20
26
85
85
79
20
AO
AT
67
94
Ag
DE
B2
20
20
DA
FO
B2
AT
3E
86
F8
AB
86
cs
03
FO
03
(or)
8c
A2
AG
AO
OF
FD
AS
AO
oF
67
68
38
6A
AS
85
14
AS
AS
20
AS
AO
AO
AB
20
A3
81
A3
04
AO
ce
BO
is
EX.)
26
81
AT
2E
AS
co
92
AS
10
00
Ag
67
02
Bl
90
17
AS
94
85
co
92
no
20
cs
A2
10
Ev
AS
oo
oF
65
8s
De
02
4A
os
8F
10
ED
co
FO
BS
Es
AO
20
FO
oF
9E
98
AS
98
65
85
8D
A2
AO
AS
a5
AB
a5
47
4c
02
94
aq
20
18
a4
FA
AS
9E
AD
FF
8s
84
AS
AO
0s
94
AS
AS
AZ
EF
20
03
B2
FO
06
20
AB
86
06
AQ
CA
Ag
4A
ce
BS
DF
20
2c
Dc
74
FO
92
Ad
03
AS
cé
18
AO
Do
Al
Aa
BB
8D
00
AS
AB
po
90A8-
90B0-
90B8-
9oco-
goce-
90n0-
90D8-
o0RO-
90E8-
90F0-
90F8-
9100-
9108-
9110-
9118-
9120-
9128-
9130-
9138-
9140-
9148-
9150-
9158-
9160-
9168-
9170-
9178-
9180-
9188-
9190-
9198-
91A0-
91a8-
91B0-
91B8-
91c0-
gics-
91D0-
91p8-
91E0-
91E8-
91F0-
g1F8-
9200-
9208-
9210-
9218-
9220-
9228-
9230-
9238-
9240-
9248-
9250-
9258-
9260-
9268-
9270-
9278-
9280-
9288-
9290-
9298-
92A0-
B2
02
91
ce
pp
30
n2
85
Ag
9D
as
AS
10
o1
4n
9D
ce
9D
20
2c
cs
02
00
o7
73
E9
E9
92
10
AS
84
DO
Al
BO
AS
AG
AO
oF
ES
ES
ES
oF
91
85
AT
05
16
oF
or
01
AS
38
AS
00
DO
AO
AO
AA
86
85
9D
A2
20
91
94
“AS
AS
cD
ES
93
9E
86
26
AQ
AB
ES
85
og
9E
Do
BA
FO
4c
85
85
91
E9
00
01
AO
FB
68
AL
D1
11
8s
85
00
85
AQ
AZ
AG
91
9D
Ag
91
90
18
AA
86
Bl
67
AS
9E
20
F7
ol
00
ce
AS
cl
00
02
2D
94
20
AS
B2
10
05
94
85
94
AS
65
85
9p
AQ
9p
AS
cA
30
co
cé
18
BO
10
9D
c4
AO
00
85
ce
92
aS
85
AS
17
oF
Bl
AS
AS
Ad
DO
85
O4
AS
00
00
AO
03
AS
01
8D
91
90
94
65
65
po
AQ
10
4c
48
65
3E
ce
94
FPS
cA
BO
oD
AZ
A2
Ag
AA
AB
AQ
4A
FO
c8
10
91
FO
90
AS
AQ
FB
AS
69
52
91
oF
AG
20
AO
a2
A2
8s
94
65
oF
9D
9E
a3
FQ
Al
AO
DO
0s
65
65
bo
4c
68
8D
BC
F3
FO
AS
A6
D1
00
FS
6c
Fo
9D
AS
91
A2
10
E?
AS
00
OF
65
8s
Ds
02
4A
o7
BS
EO
AS
07
gl
AS
AG
00
38
AS
ES
4c
9D
85
23
02
Fl
88
oF
DO
AS
85
8s
88
Bl
AS
00
Fs
AG
oF
AO
cB
92
8S
BB
94
cé
84
17
91
91
Ag
95
85
Dé
20
20
AO
SE
AS
06
F8
20
AB
86
AQ
cA
AQ
4a
cé
Ag
AS
cB
co
AS
69
69
AO
714
6A
AO
88
AS
00
94
AS
AS
Bl
AS
DD
ES
AG
AT
Ag
BL
OF
AG
Bl
co
FO
91
o1
AO
91
Ao
94
AO
18
AS
AS
EF
9D
BS
60
Ag
Pom's n° 20
92A8- 94 4C 86 92 AD D3 94 ON 9408- BO 06 20 B2 94 90 ca 60 9568- 4F 4£ 20 48 4F 4c 44 2c
92B0- D4 94 FO 05 AO 85 4c AO 9410- 68 68 AO D6 4c AO 92 AO 9570- 20 55 53 45 20 22 26 4D
92pa- 92 AS 73.5 AF AS 74 ES 9418- 00 B1 AS CA AA Ri AS 86 9578- 22 20 54 4F 20 52 45 43
92C0- BO E9 04 BO 05 AO 52 4c 9420- AS 85 A6 Bl AS 60 E6 A7 9580- 4F 56 45 52 BD 48 4F 4c
92ca- AO 92 AS AF ES 67 @p 03 9428- DO 02 E6 AB AS A? C5 73 9588- 44 20 46 49 4c 45 20 49
92D0- 94 AS BO ES 68 8D D4 94 9430- AS AB ES 74 90 07 68 68 9590- 4E 20 55 53 45 BD 4C 49
92p8- AS 73 8D DS 94 AS 74 an 9438- AO 52 4C AO 92 60 84 AB 9598- 4D 49 54 45 44 20 4D 45
92E0- D6 94 AO 00 AS 73 DO 02 9440- AD A3 85 A7 AS A4 85 AB 95A0- 4D 4F 52 59 2C 20 4D 41
92E8- C6 74 C6 73 AS AF DO 02 9448- AO 00 Bl A7 45 9D DO 07 95A8- 59 20 14 45 53 54 52 4F
92F0- C6 BO C6 AF Bl AF 91 73 9450- C8 Bl A7 45 9E FO 15 18 95B0- 59 20 50 52 4F 47 52 41
92F8- AS 67 CS AF AS 68 ES BO 9458- A5 A7 69 04 85 AT 90 02 95B8- 4D 20 20 20 20 20 43 4F
9300- 90 B2 AS 67 69 02 BS AF 9460- E6 A8 AO 01 Bl A7 C9 FF 95C0- 4E 54 49 4E 55 45 20 28
9308- 85 69 AS 68 69 00 85 BO 9468- DO DE FO OA C8 Bl A? 85 95C8- 59 2F 4E 29 3F 07 8D 53
9310- 85 6A AQ 01 AY 00 91 67 9470- 9D C8 Bl A7 85 9E A4 AB 95D0- 59 4E 54 41 58 BD 3E 20
9318- 88 10 FB AO 60 20 A4 94 9478- GO AS 69 85 A3 AS 6A 85 95D8- 36 33 39 39 39 BD 4c 49
9320- 4c 86 92 AD D3 94 OD D4 9480- A4 A4 AB 18 Bl A3 45 9D 95E0-"4E 45 20 54 4F 4F 20 4c
9328- 94 FO FS 38 A4 73 AS 74 9488- DO 07 CB Bl A3 45 9E FO 9SE8- 4F 4E 47 9B 49 4E 413 52
9330- E9 01 C4 69 ES 6A BO 05 9490- 12 AS A3 69 04 85 A3 90 95FO- 45 4D 45 4E 54 20 3D 20
9338- AO 52 4C AO 92 AS 67 AG 9498- 02 E6 A4 AO 01 B1 A3 C9 95F8- 30 8D C9 C9 FO 07 C9 00
9340- 68 85 Al 86 A2 AO O1 BL 94A0- FF DO DE 60 B9 00 95 48 9600- 46
9348- Al FO 07 AA 88 Bl Al 4c 94A8- C8 09 80 20 ED FD 68 10
9350- 41 93 AS Al 85 42 AS A2 94B0- F3 60 EE BB 94 DO 03 EE
9358- 85 43 AD D5 94 85 3E AD 94B8- BC 94 AD 8C 8A C9 3A BO
9360- D6 ¥4 85 3F AS 73 85 3C 94C0- 06 38 E9 30 38 E9 DO 60
9368- AS 74 85 3D AO 00 20 2c 94c8- 00 45 53 49 46 85 AC AB Récapitulation MINI
9370- FE AD D5 94 85 73 AD Dé 94D0- BO BC C4 00 00 00 00 18
9378- 94 85 74 38 AD D3 94 E9 94D8- AS A3 65 Al 85 A3 AS A4 ‘ ee
9380- 02 85 Al AD D4 94 E9 00 94E0- 65 A2 85 A4 BO 04 C9 FA Be chuies Gy coe Ae ea
(9388- 85 A2 18 AS AF 65 Al 85 94E8- 90 05 AO 27 4C AO 92 AS rare nro
9390- AF 85 69 A5 BO 65 A2 85 94F0- 9D AO 02 D1 AS C8 AS 9E oyuches Westenra cs eensttes
9398- BO 8S GA AD 00 BD D3 94 94F8- Fl AS BO BG AS AB 10 05 area:
93A0- 8D D4 94 AS 67 85 Al AS 9500- 4E 4F 20 50 52 4F 47 52
93A8- 68 85 A2 18 AO O1 Bi Al 9508- 41 4D 20 49 4B 20 4D 45
93B0- FO 1D AO 04 C8 Bl Al DO 9510- 4D 4F 52 59 8D 4E 4F 20
93B8- FB C8 98 GS Al AA AO 00 9518- 4¢ 49 4B 45 53 20 49 4E
93C0- 91 Al AS A2 69 00 CB 91 9520- 20 52 41 4E 47 45 8D 49 Récapitulation
93c8- Al 66 Al GS A2 90 DD 4c 9528- 4E 43 52 45 4D 45 4E 54 RENUM
93D0- 65 91 A2 00 86 A7 86 AB 9530- 20 54 4F 4F 20 4c 41 5?
93D8- AA 06 A7 26 AB BO 31 AS 9538- 47 45 8D 44 55 50 4c 49
93R0- AB 85 AB AS A7 OA 26 AB 9540- 43 41 54 45 20 4c 49 4F Sert 4 constituer le fichier
93E8- BO 26 OA 26 AB BO 21 65 9548- 45 20 4B 55 4D 42 45 52 UTILITAIRES. Il est obtenu 4
93F0- A7 85 A7 AS AB 65 AS 85 9550- 53 8D 4F 55 54 20 4F 46 partir du fichier RENUMBEK de la
93F8- A8 BO 15 8A 29 OF 65 A7 9558- 20 4D 45 4D 4F 52 59 8D disquette Master ; se reporter
9400- 85 A7 AS AR 69 00 85 AB 9560- 50 52 4F 47 52 41 4D 20 an texte.
ax 3 lo moniteur ctendu
Jacques Supernant Apple ][+, //e, //c
Ce moniteur autorise un contréle de l'exécution des routines
en langage machine.
Un mode Trace et Pas a Pas trés évolués et sélectifs sont complétés
par un accés direct aux registres du 6502 (ou 65C02).
Les fichiers source
sont sur la
disquette.
La gestion des fenétres d'écran simplifie le mode trace.
Une routine permet la recherche de suites d'octets.
Disquette et
documentation :
Un mini-assembleur trés souple fait partie de Max.
‘Une ligne de commande peut devenir une boucle avec l'ordre JUMP
150,00 F TTC
franco . Bon de
commande p 74.
10
Pom's n° 20
Utilisation de la
carte langage
Hervé Roy-Contancin
fin de rassurer
pleinement les lecteurs
de Pom's redoutant
l'abandon de la ligne
6502, voici un programme qui va
permettre aux possesseurs
d'Apple (II et Il+ avec carte
langage, //e et //c) d'utiliscr cette
carte en DOS 3.3 sous epolesatt
Les 16 Ko de la carte langage,
normalement inaccessibles en
Applesoft, peuvent enfin étre
utilisés pour y stocker une ou
plusieurs tables alphanumériques.
rc
~
37888 ($9400)
37893
37898
37903
NOP! = INT (4096/LONGENR)
NOP2 -2* NOPI-1
NOP3 = NOPI + NOP2
NOP4 = NOPI + NOP3
t—,
TEST 2 |” NOENR : NOP2
a
eT c—— ————
Cia] | | TEST3 "NOENR ; NOT
ovo BANK2 P r :
Es es
Nor PONC = 2 si
CALCBUP
adresse ES ‘Calcul sdresse BS
FOR BURER BUFFER > ADR
ia
Ero
Organigramme
Il est important de noter que
toutes les chaines de caractéres
doivent avoir la méme longueur,
cette longueur étant fixée au
départ (voir ci-dessous).
Pratiquement...
+ En premier licu, il faut charger
le programme par :
BLOAD LANG1.0BJ0,A$9400
* puis placer une HIMEM:
37888 afin de ne pas écraser le
programme LANG1.OBJO par
les variables du programme
Applesoft.
¢ il faut ensuite définir une
variable E$ en I'initialisant 4 la
longueur des chaines de la table.
Si la longueur est 8, faire par
exemple E$ = "BONJOUR!".
Cette variable E$ est indispen-
sable ; elle doit étre la premiére
variable rencontrée dans le
programme Applesoft ; enfin, on
ne doit jamais l'écourter mais il
est possible de rajouter des blancs
pour conserver la méme
longueur : E$="HELLO ".
« On peut écrire ou lire une
chaine sur la carte langage en
faisant :
CALL37888,LNG,FONC,IH,IB
ot LNG est la longueur des
chaines (c’est-a-dire la longueur
initiale de E$), FONC vaut 1 en
lecture, 2 en écriture, IH est
l'indice haut et IB l'indice bas du
numéro de la chaine (c'est-a-dire
son numéro est IH * 256 + IB).
Ce numéro doit étre compris entre
1 et 4 * (4096 / LNG) car la carte
langage peut stocker 4 fois 4 Ko
et 4Ko = 4096 octets.
L'indice IH peut aussi étre
Pom's n° 20
considéré comme un numéro de
table dans une gestion de 1 44
tables de 256 chaines.
Par exemple, la lecture de la
39éme chaine donne, si la
longueur est 32 :
got 37888,32,1,0,39 : PRINT
E
Ceci est équivalent 4 PRINT
E$(39) pour un tableau de
chaines en Applesoft.
Comme le montre le programme
EXEMPLE-LANGI, il est
possible d'abréger l'écriture de la
syntaxe si certains paramétres
testent inchangés, mais il faut
alors changer I'adresse du CALL.
CALL37888,LNG,FONC,IH,IB
(est obligatoire pour le premier
appel)
CALL37894,FONC,IH,IB
(pour les autres appels)
CALL 37900,1H,IB
(si FONC ne change pas)
CALL 37906,IB
(si IH ne change pas)
CALL 37912
(si rien a changé)
Des contréles sont effectués et les
messages d’erreur sont les
suivants :
* si FONC <> 1 et FONC <>2:
cela correspond a un
ILLEGAL QUANTITY
ERROR
¢ silH * 256 + IB > INT (4096
/ LNG) * 4 on obtient un OUT
OF MEMORY ERROR
¢ si c'est une erreur sur E$ :
STRING TOO LONG ERROR
(en fait c'est l'inverse, mais le
message STRING TOO
SHORT n'existe pas !).
Techniquement...
L'adresse de début choisic
($9400, soit 37888 en décimal)
peut étre modifiée, 4 condition de
modifier les quelques JSR du
programme. II faut bien faire
attention car 3 octets sont
réservés, a la fin de
LANG1.OBJO, pour y stocker
des variables, afin de ne pas
encombrer la page zéro. Le
programme gére la mémoire en 4
blocs de 4 Ko, les chaines y sont
enregistrées bout a bout.
Aprés la saisie des paramétres par
la routine GETBYTC, le
programme calcule le nombre
d'enregistrements par blocs, soit
4096/LNG et on déduit le dernier
numéro de chaque bloc (NOP1,
NOP2, NOP3 et NOP4). Il
calcule ensuite ADR, adresse
concemée sur la carte langage, en
fonction du bloc auquel appartient
Tenregistrement demandé ($D000
- $DFFF/BANK1 pour le
BLOC1, $D000 - $DFFF/
BANK2 pour le BLOC4, $E000
- S$EFFF pour le BLOC2 et
$F000 -$FFFF pour le BLOC3).
Enfin, BUFFER est l'adresse de
la variable E$.
A noter que la fonction lecture
Programme EXEMPLE-LANG1
10 REM EXEMPLE
20 REM *tttstetsaesetssseessscsesssennesansnes
235 E$ = BLS
220 E$ = BL$: CALL (37888 + 12),0,39: PRINT E$
230 REM ET POURFINIR
240 CALL (37888 + 18),39: PRINT E¢
250 END
30 REM* PROGRAMME DE DEMONSTRATION
40 REM* UTILISATION DE LANG1.OBJ0
50 REM* H.ROY-CONTANCIN
Programme LANG1
GO REM “*tttttetsesteettesetesseecessesseseenes
70 HIMEM: 37888: REM INDISPENSABLE
75 E$ = JE SUIS LE NUMERO 39 HA HA HA HA":D$ =
(Assembleur Toolkit)
SOURCE FILE: LANG]
CHRS (4) 0000: | FeebeeReRRRREAAREREEEE
76 REM E$ DOIT ETRE LA PREMIERE VARIABLE DU 0000: 2% tamey ‘
PGM 0000: 3 * CARTE LANGAGE BASIC *
80 PRINT D§"BLOAD LANG!.0BJ0,A$9400" Hee 48 03/00/86 «
ge eee 0000: 5 * H.ROY-CONTANCIN *
Snot teehdndddwe sonora eeanes
100 LNG = 32:ECR = 2:LEC = 1
110 CALL 37888,LNG,ECR,0,39: REM ECRITUREDU39 (0008: deeeet S20: OR
120 E$ = BL$: REM ON EFFACE 0018: 8 NOPZ EQU $18
130 CALL 37888,LNG,LEC,0,39: PRINT ES: REM cota: 9 .NOPS EQU $1A
RELECTURE OOF9: 10 NoP4 EQU SFO
140 REM ET MAINTENANT 259 > 255 ooic: 11 BUFFER EQU $iCc
150 | = 259:E$ = "ET MOI ET MOI LE 259 ME VOICI OK" 001E: 12 ADR EQU $1E
155 co Sea aa INT (1/256),1- INT(1/256)" coga: 13 ROM EoU $co82
c083: 14 RAM EQU $C083
190 CALL S7008LNG.LEG, INT (1/256)1- WT (1/258)* 90808 SS BINH aU) Fee
256: PRINT ES ESSE Z ( ) E752: 16 GETADR EQU $E752
180 E$ = BLS E6F5: 17 GETBYTC EQU SE6F5
4190 REM POURLES PARESSEUX £982: 18 FMULTT EQU $E982
200 CALL (37888 + 6),LEC, INT (I /256),l- INT (1/256) * E2F2: 19 GIVAYF EQU $E2F2
256: PRINT E$ EB63: 20 MOVEAF EQU SEB63
210 REM ENCORE PLUS COURT EBS3: 21 MOVEFA EQU $EBS3
N
12 Pom's n° 20
effectue le filtrage des caractéres
de code ASCII non compris entre
$20 et $60 pour éviter tout
probléme en cas de lecture d'une
zone de la mémoire non
initialisée.
Si E$ est initialisée par E$ =
"A.A" (32 A), puis si BS =
"<50 blancs>", le fait d'écrire E$
= B§$ attribue 4 E$ l'adresse de la
chaine B$ : ainsi, le résultat de la
recherche se trouve alors dans B$
et E$ a une longueur 50
(E$="A...A ", 32 A et 18
blancs). Pour éviter cela, il suffit
de remplacer E$ = B$ par E$ =
BS+"".
Remarquons, pour conclure, que
ce programme permet non
seulement de gagner de la place
mémoire, mais également de
transmettre des tables entre
plusieurs programmes puisque la
carte langage n'est pas touchée
par RUN ou LOAD. Cette seule
raison peut justifier son emploi en
zone de sauvegarde de tables.
NB : J'ai di utiliser la routine
ABS aprés les routines FDIVT
(SEA69) et FMULTT ($E982)
car dans certains cas 4096 / 32 =
- 128!
Carte langage 16 Ko
Arse Donk 1 Bont 2
ose BLOC1 BLOC 4
es
oe BLOC3
N.D.L.R.
* Nous avons fait des essais de
vitesse pour la lecture et l'écriture
de 450 chaines de caractéres :
- Avec le programme LANGI, il
faut 42 secondes;
- Avec le Disque virtuel 16K
RWLC (Pom's 12) et un
fichier 4 accés direct, 111
pour utiliser la carte langage en
Applesoft pour y stocker des
chaines de longucur fixe. A titre
de
dgja: '
secondes sont nécessaires ; |
Et enfin, pour Tableau de
chaines Applesoft : il est
préférable d'utiliser FRE(64)
aprés le test (Pom's 2) : cela
prend 39 secondes.
C'est une méthode originale
comparaison, on connaissait
le DOS sur la carte langage, ce
qui remonte la HIMEM et
laisse plus de place pour les
programmes.
le Disque virtuel 16 Ko (en
fait, il n'y a que 15K 1/4 pour
les données, car il faut aussi
stocker le catalogue.
Haifa 64K : on double les
instructions de I'Applesoft.
e:
EAG69: 22 FDIVT EQU $EA69 9437:18 52 CNOP3 CLC
EBAF: 23 ABS EQU SEBAF 9438:A5 OB 53 LDA NOP1
EC23: 24 INT EQU $EC23 943A:65 18 54 ADC NOP2
D419: 25 ERROR EQU $D419 943c:85 1A 55 STA NOP3
0069: 26 LOMEM EQU $69 943E:A5 0C 56 LDA NOP1+1
0000: ZT EERRASAREN AOR ERAS 9440:65 19 57 ADC NOP2+1
----- NEXT OBJECT FILE NAME IS LANG1.OBJ0 9442:85 1B 58 STA NOP3+1
9400: 28 ORG $9400 9444:A5 OB 59 cNOP4 TDA NOP1
9400:20 F5 E6 29 DEB JSR GETBYTC 9446:18 60 cLc
9403:8E D4 95 30 STX LONGENR 9447:65 1A 61 ADC NOP3
9406:20 F5 E6 31 ENTREE JSR GETBYTC 9449:85 F9 62 STA NOP4
9409:8E D3 95 32 STX FONC 944B:A5 0c 63 LDA NOPi+1
940C:20 F5 E6 933 JSR GETBYTC 944D:65 1B 64 ADC NOP3+1
940F:8E DS 95 34 STX NOENR 944F:85 FA 65 STA NOP4+1
9412:20 FS E6 35 JSR GETBYTC 9451:A9 DO 66 LDA #$D0
9415:8E D6 95 36 STX NOENR+1 9453:85 1F 67 STA ADR+1
9418:38 37 SEC 9455:A9 00 68 LDA, #$00
9419:AD D6 95 38 LDA NOENR+1 9457:85 1E 69 STA_ ADR
941C:E9 01 39 sBC #$01 9459:AS FA 70 TESTO LDA NOP4+1
941E:8D D6 95 40 STA NOENR+1 945B:CD D5 95 71 CMP NOENR
9421:AD D5 95 41 LDA NOENR 945E:90 43 72 BCC ERREUR
9424:E9 00 42 SBC #$00 9460:D0 09 73 BNE TEST1
9426:8D D5 95 43 STA NOENR F9 74 LDA NOP4
9429:20 90 95 44 JSR CALCNOPL Dé 95 75 CMP NOENR+1
942c:18 45 cNnop2 cLe 9467:90 3A 76 BCC ERREUR
942D:A5 0B 46 LDA NOP1 9469:FO 38 71 BEQ ERREUR
942F:2A 47 ROL A 78 TEST1 LDA NOP3+1
9430:85 18 48 STA NOP2 te) CMP NOENR
9432:A5 Oc 49 LDA NOP1+1 80 BCC BLOC4
9434:2A 50 ROL A 81 BNE TEST2
9435:85 19 51 STA NOP2+1 9474:A5 1A 82 LDA NOP3
a
Pom's n° 20 13
aaa
9476:CD Dé 95 83. CMP NOENR+1 94ED:AD D5 95 142 LDA NOENR
9479:90 6B 84 BCC BLOC4 94FO:ES 1B 143 SBC NOP3+1
947B:FO 69 85 BEQ BLOC4 94F2:20 66 95 144 JSR CALCADR
947D:A5 19 86 TEST2 LDA NOP2+1 94F5:A2 08 145 LDX #508
947F:CD D5 95 87 CMP NOENR 146 * BANK2 (C083+08-CO8B)
9482:90 4A 88 Bcc BLOC3 147 TESTFON LDA FONC
9484:D0 09 89 BNE TEST3 148 CMP #$02
9486:A5 18 90 LDA NOP2 149 BEQ ECRIT
9488:CD D6 95 91 CMP NOENR+1 150 cmp #01
948B:90 41 92 Bcc BLOC3 151 BNE ERREURZ
948D:FO 3F 93 BEQ BLOC3 152 LEC JSR CALCBUF
948F:A5 0c 94 TEST3 LDA NOP1+1 153 TDA RAM,X
9491:cD D5 95 95 CMP NOENR 154 LDA RAM,X
9494:90 20 96 BCC BLOC2 155 LDY LONGENR
9496:D0 10 97 BNE BLOC1 156 Li DEY
9498:A5 OB 98 LDA NOP1 157 LDA (ADR), ¥
949A:CD D6 95 99 CMP NOENR+1 158 * CARACT INDESIRABLES?
949D:90 17 100 Bcc BLOC2 159 cmp #$20
949F:FO 15 101 REQ BLOC2 160 BCC BIDON
94A1:B0 05 102 BCS BLOC1 161 CMP #960
94A3:A2 4D 103 ERREUR LDX #$4D 162 BCS BIDON
94a5:4c 19 D4 104 MP ERROR 951 163 E11 STA (BUFFER),
94A8:AD D5 95 105 BLOCl LDA NOENR 951B:98 164 TYA
94AB:AC D6 95 106 LDY NOENR+1 951c:D0 FO 165 BNE Ll
94AE:20 66 95 107 JSR CALCADR 951R:AD 82 CO 166 LDA ROM
94B1:A2 00 108 LDx #$00 9521:60 167 FIN RTS
94B3: 109 * BANK1 (C083+0) 9522:A9 20 168 BIDON LDA #$20
94B3:18 110 cLc 9524:18 169 cLe
94B4:90 41 111 BCC TESTFON 9525:90 F2 170 Bcc Ell
94B6:A9 EO 112 BLOC2 LDA #$E0 9527:20 44 95 171 ECRIT JSR CALCBUF
94B8:85 1F 113 STA ADR+1 952A:BD 83 CO 172 LDA RAM,X
Q4BA:AD D6 95 114 LDA NOENR+1 952D:BD 83 CO 173 LDA RAM, X
94BD:38 115 SEC 9530:AC D4 95 174 LDY LONGENR
94BE:E5 OB 116 SBC NOP1 9533: 88 175 El DEY
94C0:A8 117 TAY 9534:B1 1c 176 LDA (BUFFER) ,¥
94C1:AD D5 95 118 LDA NOENR 9536:91 1E 177 STA (ADR),Y
9404:E5 0C 119 SBC NOP1+1 9538:98 178 TYA
94c6:20 66 95 120 JSR CALCADR 9539:D0 FS x19 BNE 21
94C9:A2 00 121 LDx #$00 953B:AD 82 CO 180 LDA ROM
94CB: 122 * BANK1 (C083+0) 953E:60 181 RTS
94CB:18 123 cLe 953F:A2 35 182 ERREUR2 LDX #$35
94cc:90 29 124 BCC TESTFON 9541:20 19 D4 183 JSR ERROR
94CE:A9 FO 125 BLOC3 LDA #$F0 9544: Led PARRA SEO
94D0:85 1F 126 STA ADR+1 9544:A0 00 185 CALCBUF LDY #$00
94D2:AD D6 95 127 LDA NOENR+1 9546:B1 69 186 LDA (LOMEM) ,¥
94D5:38 128 SEC 9548:C9 45 187 CMP #945
94D6:E5 18 129 SBC NOP2 954A:D0 4c 188 BNE ERREUR1
94D8:A8 130 TAY 954C:C8 189 INY
94D9:AD D5 95 131 LDA NOENR 954D:Bl 69 190 LDA (LOMEM) , ¥
g94pc:E5 19 132 SBC NOP2+1 954F:C9 80 191 cMP #580
94DE:20 66 95 133 JSR CALCADR 9551:D0 45 192 BNE ERREUR1
94B1:A2 00 134 LDx = #$00 9553:C8 193 INy
943: 135 * ENCORE BANK1 9554:Bl 69 194 LDA (LOMEM) ,¥
94E3:18 136 cLe 9556:CD D4 95 195 CMP LONGENR
94B4:90 11 137 BCC TESTFON 9559:90 3D 196 BCC ERREUR1
94E6:AD D6 95 138 BLOC4 LDA NOENRt1 955B:C8 197 INY
94E9:38 139 SEC 955C:B1l 69 198 LDA (LOMEM) ,Y
O4EA:E5 1A 140 SBC NOP3 955E:85 1C 199 STA BUFFER
94EC:A8 141 TAY 9560:c8 200 INY
a
14 Pom's n’ 20
Gain de temps et économie
Vos textes en direct de votre ordinateur
a nos photocomposeuses
Les textes de vos articles, catalogues,
annuaires ou brochures saisis sur
votre micro-ordinateur sont envoyés
directement sur notre
photocomposeuse
Nous vous évitons ainsi,
le coat et le temps de Ia saisie
supplémentaire que
nécessite le traitement
traditionnel de la photocomposition
avant l'impression des documents.
Si vous le désirez nous pouvons
également nous charger
Nous
13 et 15, avenue du Petit-Parc - 94300 VINCENNES
(1820.10.68
de l'impression et du brochage.
959D:A9 10
9561:B1 69 201 LDA (LOMEM) ,Y 231 CALCNOP1 LDA #$10
9563:85 1D 202 STA BUFFER+1 959F:A0 00 232 LbyY #$00
9565:60 203 RTS 95A1:20 F2 E2 233 JSR GIVAYF
9566:20 F2 F2 204 CALCADR JSR GIVAYF 95A4:20 63 FB 234 JSR MOVEAF
9569:20 63 EB 205 JSR MOVEAF 95A7:A9 00 235 LDA #$00
956C:A9 00 206 LDA #800 95A! 236 LDY LONGENR
956E:AC D4 95 207 TDY TLONGENR 95AC:20 237 JSR GIVAYF
9571:20 F2 E2 208 JSR GIVAYF 95AF:20 69 EA 238 JSR FDIVT
9574:20 82 E9 209 JSR FMULTT 95B2:20 23 EC 239 JSR INT
9577:20 23 EC 210 JSR INT 958 240 JSR ABS
957A:20 AF EB 211 JSR ABS 958i 241 LDA LINUM
957D:A5 50 212 LDA LINUM 95BA 242 PHA
957F:48 213 PHA 95Bi 243 LDA LINUM+1
9580:A5 51 214 LDA LINUM+1 95BI 244 PHA
9582:48 215 PHA 95BE:20 52 E7 245 JSR GETADR
9583:20 52 E7 216 JSR GETADR 95C1:A5 50 246 LDA LINUM
9586:A5 50 217 LDA LINUM 95¢3:85 0B 247 STA NOP1
9588:85 1E 218 STA ADR 95C5:A5 51 248 LDA LINUM+1
958A:A5 51 219 LDA LINUM+1 95C7:85 0c 249 STA NOP1+1
958c:18 220 cLe SSES EER 250 FLA
958D:65 1F 221 ADC ADRt1l 95CA:85 51 251 STA LINUM+1
958F:85 1F 222 STA ADR+1 95CC: 68 252 PLA
9591:68 223 PLA 95cD:85 50 253 STA LINUM
9592:85 51 224 STA LINUM+1 shew =60) 254 RTS
9594:68 225 erat 95D0:4c 19 D4 255 UMP ERROR
9595:85 50 226 STA LINUM 95D3: 256 **** ZONES A RESERVER
9597:60 227 RTS 95D3: 257 FONC EQU *
9598:A2 BO 228 ERREUR1 LDX #$B0 95D4: 258 LONGENR EQU *+1
959A:4C 19 D4 229 SMP ERROR 95D5: 259 NOENR EQU *+2
959D: 230 *ARRARE *** SUCCESSFUL ASSEMBLY: NO ERRORS
J
Pom's n° 20 15
DOS 3.3 ou ProDOS
a la carte
ous avons déja vu
comment faire coexister
sur une méme disquette
des fichiers DOS 3.3 et
des fichiers ProDOS. Ceci n’était
utile que pour la circulation
simultanée des deux types de
fichicrs, sans que l'on puisse
faire d'échanges entre les deux
systémes. Aujourd'hui, nous
tendons cela possible mais 4 une
condition : posséder une carte 80
colonnes étendue. (En fait, il est
possible de se débrouiller avec
ses sculs 64Ko, mais au prix
d'une multiplication des accés
disques et de la neutralisation
d'une bonne partie de mémoire :
21Ko pour les deux DOS).
Utilitaires DOS...
...sous ProDOS
Vous pourrez alors passer quasi
instantanément d'un DOS a
l'autre tout en gardant en
mémoire le programme Basic.
Vous pourrez également le faire
en cours d'exécution d'un
programme (si, si !) et, enfin,
vous garderez le bénéfice des
éventuels utilitaires que le DOS
3.3 avait mis au chaud sous ses
buffers.
Exemple d'utilisation : vous
pourrez dorénavant convertir de
maniére non aveugle. Vous
chargez un programme DOS,
vous le listez, vous faites les
éventuelles modifications
nécessitées par l'adaptation a
ProDOS et vous le sauvegardez
sous ProDOS. Ou encore, vous
chargez un programme ProDOS,
vous passez sous DOS pour
bénéficier des services de
RENUMBER, HOLD et MERGE
de l'Applesoft Toolkit et vous
revenez sauvegarder le résultat
sous ProDOS.
L'art et la maniére
Il s'‘agit d'utiliser la mémoire
auxiliaire 64 Ko pour stocker les
images des deux systémes
d'exploitation. Pour réaliser la
permutation, on commencera par
sauvegarder l'état de 1'OS en
fonction, et on appellera son
collégue. Le tout 4 l'aide de la
routine AUXMOVE ($C311).
Quelques petites précautions :
+ brancher et débrancher les
vecteurs d'interception des
entrées sorties, I/O Hooks, des
OS (CSSWON et CSSWOFF
de DOS 3.3) ;
* rétablir le mode TRACE
correct ProDOS laisse
toujours Applesoft en mode
TRACE et recopie en page
globale BI ($BE41) la vraie
valeur du flag TRACE ;
* dela méme maniere, établir le
licn entre HIMEM DOS 3.3 ct
HIMEM ProDOS : si pour
DOS, la région située
au-dessus de HIMEM est bien
définitivement protégée (a
moins de modifier
MAXFILES, ce qui n'est pas
souhaitable), il n'en est pas de
méme pour ProDOS qui
maintient un tampon de 1 Ko
au dessus de HIMEM 4 des
fins de ramasse-mieltes, et
surtout qui descend tout ce
monde de 1 Ko chaque fois
qu'il ouvre un fichier.
Pour résoudre ce dernier
probléme, il faut recourir a
lallocation de buffer autorisée
par ProDOS. La routine
correspondante prend en entrée le
nombre de pages 4 allouer et
retourne l'adresse de la premiére
page attribuée au tampon. Ce
nombre est en fait la valeur du
pointeur sur le sommet des
tampons de fichiers (TOPBUFF).
ou comment conserver
Seul l'espace situé au dessus de
ce sommet est effectivement
protégé de modifications
intempestives (voir figure).
Enfin, dernier probléme, on a
essayé d'utiliser au maximum les
adresses situées dans les "pages
globales" ($BE et $BF), seules
celles-ci sont assurées d'une forte
stabilité entre les différentes
versions ProDOS, mais il a fallu
recourir 4 3 adresses extéricurcs.
Pour l'accrochage ($9A8D pour
les seuls I/O Hooks ou $9A7E
pour y ajouter la restauration du
flag TRACE) et pour le
décrochage de ProDOS, les
adresses ne changent pas dans les
versions 1.0, 1.0.1 et 1.0.2. Par
contre, la routine fermant tous les
fichicrs s'est lé¢gérement déplacée
de $B548 (1.0) 4 $B54C (1.0.1
et 1.0.2), On sera donc prudent
pour l'utilisation du programme
proposé avec d'autres versions
futures de ProDOS.
La théorie :
DOUBLEDOS
Il se compose d'une partie
diinitialisation réalisant tous les
transferts nécessaires en mémoire
auxiliaire, ainsi que la mise hors
service du pseudo-disque /RAM
et d'une partie "résidente"
permettant de commuter le
systéme d'exploitation par un
seul et méme CALL 768.
Remarque : si l'on est perdu (3.3
ou Pro ?), un moyen extréme-
ment simple : faites RETURN en
début de ligne ; ProDOS passe
simplement 8 la ligne suivante,
tandis que DOS 3.3 ajoute un
retour chariot faisant ainsi sauter
une ligne. Simple, mais efficace.
Le programme démarre en
supposant que le DOS 3.3 a été
chargé en mémoire ; le corps de
3.3 de $4600 a $6FFF et une
16
Pom's n° 20
l'acquis 3.3 sous Pro...
image de sa page 3 juste devant,
de $45D0 a $45FF.
+ $2B1-$2EE : c'est la routine
(empruntée A Beneath Apple
ProDOS) mettant hors service le
volume /RAM, situé convention-
nellement en slot 3, drive 2, On
pourrait envisager de simplement
protéger les zones concernées
dans le VBM de /RAM 8 l'aide
d'un appel 4 MLI, mais la
correspondance numéro de bloc,
page mémoire auxiliaire est loin
d'éue évidente : pour les blocs de
$D a $5C, il faut retirer 8 au
numéro de bloc, diviser le résultat
par 17 ct mettre Ics blocs dans la
mémoire 4 partir de $2000 vers
mémoire auxiliaire, de sa page 3
immédiatement en dessous et du
bloc DOS et sa page 3 encore en
dessous.
* $300-$304 : aiguillage du com-
mutateur. On teste simplement le
MSB du vecteur d'interruption
masquable IRQ en $3FE-$3FF.
Celui-ci vaut $FF65 (entrée dans
le moniteur) pour DOS 3.3 et
$BFEB adresse du Handler
d'interruption ProDOS, qu'il est
déconseillé de modifier.
+ les deux morceaux (Pro -> 3.3
et réciproquement) utilisent tous
Ies deux les mémes sous-
programmes DOMOVES et
Francois Sermier
auxiliaire. On utilise une table des
mouvements 4 effectuer en
$374-$39E ; les 6 octets suivants
$39E ne sont utilisés qu'une fois
lors de liinitialisation et
deviennent donc disponibles
immédiatement.
¢ $30E-$31F : avant d'appeler
DOS, on ferme tous les fichiers
pendants (a l'exception d'un
éventuel fichier EXEC, il faut
donc éviter de commuter dans un
EXEC si l'on tient a ce qui se
trouve aprés HIMEM) (voir
temarque ci-dessus pour
l'adresse de la routine
CLOSEALL). Puis on s'enquiert
de TOPBUFF en demandant
(" Apres allocation *\
d'un buffer Lors de W'utilisation
A Winitalisation utilisateur de n fichiers Sous DOS
$c000 $C000
Tepor buts (| FEBUGS ProDOS ProDOS DOS 3.3
(SBC88) sas
$9000
39400 .
Espace & ” ”
tanasde-mleltes x Espace, Fspace 3 buffers
$90 & utilisateur’ utilisateur” fichiers
niu Top of Buffers Eipace Top of as $9600 HIMEM
pas ze bd n buffers
ona | rome x fichiers
2 Espace
—| ramasse-miettes
HEM
(1) : Top of Butters stest mia Les (orl) Ko situs entre Le nombre n de fihiare
A joor que les ane election HIMEM et Top of Buffers ne ouverts peat varier de 08 8
de Duffer. A Viitalisation, soot pas protégés bien que 2 toot instant entatant
ceite vaable seat pas définie tits an-desous de HIMEM. te déplacement de tut ce
{S0ces = 0) qelstendeseas,
Allocation de la mémoire vive
J
$BFFF 4 l'exception de ceux
dont le reste de la division par 17
vaut 1 qui vont successivement
de $12 4 $18. Et le reste a
DOMOVE pour réualiser les
transferts. Comme sa consceur
MOVE du moniteur, AUXMOVE
déplace une zone mémoire de
l'allocation de 0 page... En effet,
la valeur de TOPBUFF est
stockée en $BC88 (donc hors
pages globales alors que
Yavenant : les blocs $5D-$5F (Al)-(A2) vers la zone débutant © GETBUFR is il n'
= - ‘ y est) mais il n'est
vont en $1A-$1F, /RAM utilise en (A4), le sens du mouvement _mis & jour que lors d'allocation de
les deux bancs $D0-$DF... est donné par le bit de retenue: _ buffers (fichiers ou utilisateurs) et
¢ $2EF-$2FF: transfert de s'il est mis a 1, le transfert pas lors de la libération. La
ProDOS A la méme adresse en s‘effectue vers la mémoire routine GETBUFR retourne la
y,
Pom's n° 20 7
valeur correcte. Si TOPBUFF
vaut $9A, c'est que l'on a rien
modifié, on ne touche donc a
rien ; s'il est différent, c'est qu'il
est inférieur ou égal a $96, il faut
done remonter HIMEM DOS de
1K (4 pages) pour tenir compte
du tampon ramasse micttes.
© $332-$344 : avant d’entrer
dans ProDOS, on vérifie si le
haut de la mémoire n'a pas été
abaissé, dans ce cas, on alloue un
buffer de taille suffisante pour
faire descendre TOPBUFF 8 la
hauteur du HIMEM DOS. Du
coup IIIMEM ProDOS est
automatiquement plus petit de
1Ko que pour DOS. Remarquez
que dés que l'on alloue quelque
chose, on avale automatiquement
les pages $96 4 $9A, qui ne
contiendront rien. C’est-a-dire, la
premiére fois que l'on descend le
haut de la mémoire, on le descend
d'un minimum de 5 pages, y
compris pour protéger un
programme d'une vingtaine
d'octets. Les autres fois on ne
descend que du nécessaire.
La pratique
La suite des opérations est la
suivante :
¢ Booter une disquette DOS :
° Faire:
JCALL-151 passe en moniteur
*45D0<3D0.3FFM copie page 3
*4600<9600.BFFFMcopie Dos
*3D0G retour au Rasic
JBSAVE DOS, A$45D0, L$
2A30 sur une disquette 3.3
+ CONVERTir DOS sur une
disquette ProDOS
« Assembler DOUBLEDOS (si
l'on n'a qu'un assembleur
DOS, on peut I'utiliser mais il
faut évidemment de nouveau
CONVERTir)
+ Ilne reste plus qu'a enchainer
(éventuellement dans un
STARTUP) en faisant BLOAD
DOS puis -DOUBLEDOS.0
pour sc trouver en situation de
commuter 4 tout moment par
un simple : CALL 768.
Tl peut étre utile de commencer a
utiliser cette commutation sur une
disquette mixte ProDOS/DOS 3.3
et de sauvegarder la partic
résidente du commutateur sur la
partie DOS 3.3 de la disquette.
En effet, la page 3 est quelque
peu utilisée (euphémisme...) et
yous risquez de la perdre et donc
de ne plus pouvoir revenir sous
ProDOS qu'en rebootant ou en
réintroduisant le code machine 4
la main. Donc, dés le premier
CALL768, faire :
SAVE DOUBLEDOS.OBJ,A$
300,L$9E par exemple (on
laissera tomber les trongons
d'initialisation).
On se convaincra de I'efficacité
du systéme en expérimentant en
mode dircct et en entrant des
programmes du genre :
10 PRINT CHR$(4) ; "CATA
LOG"
20 CALL768
30 PRINT CHR$(4) ; "CATA
LoG"
40 CALL768
ou encore pour utiliser APA, voir
le programme LOADAPA.
Apparemment, les diverses
commandes APA, fonctionnent
aussi sous ProDOS sauf AUTO
(grande perte... et peul-étre
MERGE). Quelques remarques
enfin, sur LOADAPA.
1.130 est indispensable car
RBOOT vient en pages 2 ct 3.
1.140 on se saisit du vecteur de
l'Ampersand dans la page 3
DOS, et l'on POKE dans la page
3 ProDOS. (Il est d'ailleurs
préférable de les POKEr dans
XTRNADDR ($BES50-51),
Handler de commandes externes
de ProDOS. Ceci lui permettrait
ainsi de reconnaitre également ces
commandes, Evidemment, ici, ce
nest guére utile. Enfin, on notera
qu'au premier passage de DOS
vers ProDOS, aprés avoir chargé
APA, vous pouvez perdre les
valeurs de quelques variables
alphanumériques, car HIMEM est
arrondi a la page inférieure pour
les besoins de ProDOS. Mais une
fois cet ajustement effectué, vous
pouvez passer sans probléme
d'un systéme a l'autre en
conservant toutes vos variables, y
compris en cours d'exécution.
Jonglez bien, et si vous étes
perdus, n'oubliez pas : un simple
RETURN suffit.
NDLR : APA, logiciel commer-
cial ne figure pas sur la disquette
d'accompagnement. a
Récapitulation
DOUBLEDOS.OBJ
0300- AE FF 03 E8 FO 24 20 00
0308- 9A AD 41 BE 85 F2 20 4C
0310- B5 A9 00 20 FS BE C9 9A
0318- FO 07 18 AS 74 69 04 85
0320- 74 A2 17 20 49 03 20 51
0328- AS 60 20 FO 9F AZ 29 20
0330- 49 03 AS 74 C9 96 FO OD
0338- AQ 00 R5 73 70 F5 BE 38
0340- E5 74 20 F5 BE 20 7E 9A
0348- 60 38 20 SA 03 3A 70 5A
0390- 03 18 20 5A 03 18 20 SA
0358- 03 60 08 AO 07 BD 74 03
0360- 99 3C 00 CA CO 06 LO 02
0368- 88 88 88 10 FO 28 8A 20
0370— 11 C3 AA 60 DO 6A FF 6A
0378- DO 03 00 6B FF 94 00 96
0380- DO 03 FF 03 DO 95 00 96
0388- FF BF 00 96 DO 95 FF 95
0390- DO 03 DO 03 FF 03 DO 6A
0398- 00 96 FF BF 00 6B DO
sur disquette DOS 3.3
Programme LOADAPA
100 CALL 768: REM ----- Je passe en 3.3
105 REM
110 PRINT CHR$ (4) ;"BLOAD RBOOT"
120 CALL 520 :AD = USR (0) , “APA” : CALL AD
130 PRINT CHR$ (4) ; "BLOAD DOUBLEDOS;OBJ"
140 LAMPV = PEEK (1014) :HAMPV = PEEK (1015)
150 CALL 768: REM ----- Je reviens en ProDOS
155 REM
160 POKE 1014,LAMPV: POKE 1015, HAMPV
180 NEW
170 PRINT : PRINT "Me revoila en ProDOS"
Pom's n° 20
Programme DOUBLEDOS
(Assembleur Procode)
SOURCE FILE #01 =%/POMS/DOUBLEDOS
0000: 1 LsT NOA
9000; 37 (change ProDOs <--> DOS
0000: aisscinnnd oaaasakaaagarannennnye
o2Bi:
02B1:
o2B1:
O21:
02B1:
02B1:
o2R1:
o2zB1s
02B1:
o2B1:
02B1:
o2B1:
o2Ri:
ozB1:
02B1:
o2B1:
o2B1:
o2zBl:
02B1:
o2Bi:
o2zB1:
02B1:
02B1:AD
02B4:29
02B6:¢
02B8:FO
O2BA:A9
o2Be:4c
o2RFSAn
o2B1
0073
003¢
903r,
0042
00F2
AgSi
9EEO
9ATE
SAD
9A00
BS4c
REOC
BEAL
BEFS
BF16
BF26
BF31
BF32
Bros
e311
BF
o2BF
O2cAsAD
o2cD:8D
02D0:AE
02D3:BD
02D6:29
02p8:¢9
O2DA:FO
ozpc:ca
o2pp:10
02DF:30
02E1:BD
02E4:9D
02E7:FO
02E9:E8
O2EA:D0
O2EC:CE
O2EF:
O2EF:A2
02F1:38
02F2:20
O2F5:a2
02F7:38
02F8:20
o2Fa:38
02Fc:20
o2FF:60
o2E1
0203
02RA
BF
BF
o2EC
O2E1
BF
03
03
0303:58
— NEXT OBJECT FILE
s
6
7
a
9
10
pt
12
13
14
is
16
33
53
34
35
86
37
58
59
NAME IS /POMS/DOUBLEDOS.0
ORG = $281
HIMEM EQU $73
AL BQU $3C
a? FOU S3E
Aa EQU $42
TRACE EQU SF2
HOOKDOS EQU SA8S1
UNHOOKDOS EQU §9EEO
HKPROTRCE EQU SYATE
HOOKPRO EQU $9A8D
UNHOOKPRO EQU — $9A00
CLOSEALL EQU 9B54C
(V.1.0:$B548)
PRINTRRR QU — SBEOC
DTRACE EQU SBE41
GETBUFR EQU SBEFS
DEVADR31 EQU $BF16
DEVADR32 QU SBF26
DEVCNT © EQUSBF31
DEVLST EQU SBF32
MACHID EQU.SBFOR
AUXMOVE EQU $C311
LDA MACHID
AND #830
CMP #530
BEQ 0K128
NORAM LDA #3
‘Device not connected!
IMP PRINTERR
OK178 TDA DEVADR31
CMP DEVADR32
BEQ TRANSF
STA DEVADR32
LDA DEVADR31!1
STA DEVADRS2+1
LDX —DEVCNT
DEVLP LDA DEVLST,X
AND #570
cMP #530
BEQ GOTSLT
DEX
BPL DEVLP
RMT —NORAM
GOTSLT LDA DEVLSTI1,x
STA DEVLST,X
BEO REMOVE
INX
BNE GOYSLY
REMOVE DEC DEVCNT
7 initial transfert --> /RAM
TRANS = LDX—#47
SEC
JSR DOMOVE
Lx 423
SEC
JSR DOMOVE
SEC
ISR DOMOVE
RTS
7 partie résidente
ENTREE LDX $3FF
INX
0304:F0
0306:
0309:AD
o30c:85
030E:20
0311:A9
0313:20
032D:A2
032F:20
0332:A5
24
0336:FO
0338:A9
033A:85
033¢:20
033F:38
O340:ED
0342:20
0345320
0348:60
0349:
0349:38
034a:20
034D:38
034E:20
0351:18
0392320
0355:18
0356:20
0359:60
035A;
035A:08
035B:A0
035D:BD
0360:99
0363:CA
0364:cO
0366:D0
03eB:8e
o36a:88
036B:10
036D:28
O36F:8A
036F:20
0372:2A
0373:60
0374:
0374:D0
037A:00
0380:D0
0386:
0386:00
o38c:
036c:D0
0392:D0
0398:00
039E:
039E:D0
07
FO
45
032A
0321
03
Ag
9E
03
0345,
BE
BE
03
03
os
03
03
00
0360,
0396,
$45D0, S6FFF, S6ADO
67
69
111
112
113
114
1s
117
118
119
120
121
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
BEQ CALLPRO
CALLDOS JSR UNHOOKPRO
LDA DTRACE
STA ‘TRACE
JSR CLOSEALL
WA 40
JSR GETBUFR
CMP #398
BEQ CLDOS1
cic
LDA HIMEM+1
apc #4
STA HIMEM#+1
cLDOS1 =—« LOX. «#23
JSR DOMOVES
JSR HOOKDOS
RTS
CALLPRO JSR UNHOOKDOS
Wx #41
JSR DOMOVES
LDA HIMEM+1
CMP «#$96
BEQ CLPROL
LDA 40
STA HIMEM
JSR GETBUFR
SEC
suc HIMEM+1
JSR GETBUFR
CLPROL © JSR HKPROTRCE
RTS
DOMOVES SEC
JSR DOMOVE
SEC
JSR DOMOVE
cre
USK DOMOVE
CLC
JSR DOMOVE
RTS
appel AUXMOVE transfert
nt (X+1) /6
DOMOVE PHP
uy 47
DMv1 LDA CMDTBL, x
STA AL,Y¥
DEX
cey #6
BNE DMV2
bey
DEY
DMv2 Dey
BPL DMVL
PLP
TXA
JSR AUXMOVE
TAX
RTS
7 arguments de Move 0S —>/RAM
CMDTBL DW S6ADU, S6AFF, $0300
DW $6B00, S94FF,$9600
DW $03D0, $03FF,$9SD0
DW $9600, SBFFF, $9600
DW $95D0, S9SFF, $03D0
DW $03D0, $O3FF, $6AD0
DW $9600, SBFFF, $6B00
EQu +
DW
END
Pom's n° 20
Copie d'écran graphique
npeut se demanderla La routine en langage machine = 1578- 20 8E FD A9 20 20 AB CC
raison d’‘étre d'un tel RECOP.OBI est cachée 8 la fin 1580- A9 11 85 EO A9 01 85 El
programme puisque du programme Basic. Elle est 1588 AD 13 CF 85 E6 AD 00 85
la ROM de la carte —entigrement relogeable ce qui 1590- 2A 85 E2 85 CE 85 CF A9
d'interface de Silentype com- permet de modifier ce dernier & sa 1598- 1E 85 2B AS EZ A6 EO A4
prend déja une routine de copie guise. Son réle est de dédoubler -15A0- F1 20 11 Fa A? 02 BI 26
d'écran graphique activée par chaque colonne de la page 15A8- 4A 08 66 CE 28 66 CE CA
CTRL-Q. Malheureusement, graphique avant d’en imprimer 15B0- 10 F6 4A 48 08 66 CE AG
l'image ainsi obtenue m'a chaque octet deux fois de suite, | 19B8- E2 Ad CE 4A 4D 14 CF FO
toujours paru trop petite et c'est Ainsi, un point a I'écran 15C0- 04 A2 FF 86 CF 91 2A AQ
ce qui m'a amené & écrire ce correspondra A quatre points sur 1SC8- 00 85 CE A9 IF 85 2B 28
programme qui fournit une image —_le papier. L'impression peut étre © 1520- 66 CE A2 02 68 4A 08 66
quatre fois plus grande que celle interrompue en appuyant sur la 15D8- CE 28 66 CE CA 10 F6 AS
obtenue par CTRL-Q, soit touche ESC, tandis que le mode 15E0- CE 4A 4D 14 CF FO 04 A2
environ un format A4. Bien d'impression (uni ou bidirec- | 15E8- FF 86 CF 91 2A AQ 00 85
entendu, il a fallu renverser tionnel) peut étre modifié en 1SFO- CE E6 £2 AS E2 C9 CO 90
l'image qui ne sera plus imprimée cours d'impression par les 15F8- 9E 24 CF 30 0c A9 08 20
ligne par ligne mais colonne par _ touches U ou B. 1600- AB CC 18 90 38 A9 00 10
colonne. Enfa si wous nlaver pas la 1608- 88 A2 02 86 CF AO 00 8C
Le programme Basic n'appelle disquette d'accompagnement, aL * oS Ga a Be 2 a a
pas de commentaires particuliers. — pour recopier le programme, il ol = ee ' ocD98
Il se contente de proposer un faut dans ordre suivant : ese eae
menu permettant, a l'utilisateur, . recopier le programme Basic 1628- A9 04 20 AB is ee a a
de choisir les paramétres de sans en changer un octet ; ees eee
Hinpgmomect ose gis Vere que pear deip us 22 22S
yu 2. a
Noterau passage a panirde 2000 Srynane valour infésieure 4 S6t87 92 97 A9 FF 8D OF CF Do
la routine de lecture du catalogue $1573. Modifier ce pointeur en ussoe 109/08 pO re 7 8p
en Basic (seul l'appel de RWTS le mettant 4 $16BC ; ASAE OF CR BE EC COUNIER 38
est en langage machine et « recopier le programme en seco. io on a0 ae no ee eo Of
n’occupe que 6 octets). Les noms langage machine a partir de j¢sn. cy no 00 oy on CF 20
de fichiers binaires sont trans- $1573 et sauver le programme 10/0” CER? 00 8D 2B CE 20 08
férés dans le tableau F$. Le Resicgias cbtene, I as) a pice
programme ne vérifie pas la a: 1680-84 (CB 20 OB CR.AU'CO 68
longueur de ces fichiers, il est TOES 08 ete Un errr ay OB
donc de la responsabilité de SRSOS C899 BE DR 28 ORR 20
Tutilisateur de s'assurer qu'il Programme TEIE AS 5CB28 DE EA. APIOR 20
s'agit bien d'une page graphique. RECOP.OBJ EGRO™ AB ACCi20 D8! CP: 1890 85
Le contenu des pages graphiques . 16A8- 2C 10 CO A9 1E 20 ABCC
peut étre vérifié en appuyant sur BODO ACB NEE! 20 BOOS 7802,
les touches 1 ou 2. 1573- A9 01 20 95 FE 16B8- 03 00 00 00 00
Programme RECOP.SOURCE ee ee aca cae
4 F iRecolt ittnage agrandte d'un octe
(Assembleur Toolkit) 1s rewrm sau sce zero si une 1igne est vice.
16 NC BQU SEO Numero de la colonne courante
17 ML BU $2 Mumbro de 1a Ligne courante
1 ORG $1573 18 HPAGE QU SEE GR courante
i ial 19 KBD EBOU s$cood du
3 iinineteate tena sisiaesenettete “35 tater eee Goats! © fetcaw a wislae
‘ RECOPIE D'ECRAN GARPRIQUE SUR SILENTYDE s+sseenee 31 IMDRIME BQD $000D _ Inprine une berre vertloale.
5 22 BARRE 200 ScF28 Octet inprint per THPRINE
‘ Auteur : BECHER GERARD 10/06/06 shes4s 25 rewro eg Sch; Tomporiaation
? sessaeres24-SENS QU SCFO1 Determine Je sens d*inpression
Heo cuseeeskeses seeinerseveenasecoseen —-80IR Bu igor | fod Gainecigeniany
ae 26 PAGE EQU SCF13 Haute résolution ($20 ou $40)
10 seesnnen stsseasensnsnesnennenaneenee 27 INVERSE OU. SCFLE de normal ou inverse,
11 MRASL HOU $26 :Adresan d'un octet de a page HGR 2a DRROUIR ROD SccAR renlanant. a paptar
12 WACL BU §2h ——Adresan de I!Enage agrandle 29 nETOUA QD $2002 Retour de Ja tete en ecloane 8.
Pom's n° 20
sur Silentype
30 HPosH
31 cRour EQU
32 SETVID EQU
33 thetneeanne:
34a
35 WA #1 109 seteeesccneceesssscasseneesseanaenensnassenesssnneseaanansne
36 JSR SBTVID+2 ;PREI aio *
37 SR CROUT invole un Retour Chariot an BIT TEMOIN ;La ligne & imprimer est-elle vid
38 EDA 6520 12 DMI IMPLIN ;WON -> Va 1' impriner *
39 JSR DEROULE ;Déroule le pepier 13 WDA ¢8 =>
40 LDA #2273; Initialise le numéro de colonne ua JSR DEROULE ;Se contente de dérouler le papier
a STA NC conmence par 1a derniére colonne) 1s cue
42 LDA #<273 116 BCC CLAVIER
43 STA NC#1 117 *
44 LDA PAGE :Pixe le numéro de page pour HPOSN ie aeaneesennsssaesssesensnessnaanstessananeenensnees
45 STA HPAGE u19¢
46 LDA 40 120 SAUT2 LDA 40
7 STA IMACL 321 BEL DOUBLE © ;Relats pour remonter jusqu'é DOUBLE
48 DOUBLE STA NL sTnitlelive le numéro de ligne 122 *
49 STA TEM 123 ** steeseennenenensanneeanneaaaaannens
50 STA TEMOIN ; (Reste 4 0 si 1a colonne est vide) 124+
51 SUIVANT LDA #$1E lére série de 192 octets sera 125 IMPLIN LDX 42
52 STA IMAGH en S100. la 2éme en S1FOO 126 STX TEMOIN
53 1A Mt, de base d'un octet 127 LINDIR2 LY 40 sSbélectionne le sens
54 Lx NC ide 1a page graphique en fonction de 128 STY SENS ide gauche & droite
35 wy eit ison nunéro de ligne et de colonni 129 LINDIRI LDA (IMAGL),¥ ;Chaque octet de la série est impriné
36 JSR HPOSN 430 STA BARRE —;sous 1a forme d'une double barre
7 Lx #2 sDecale chaque octet bit par pit 131 JSR IMPRIMZ ;Inprine une barre verticale
58 WDA n dédoublant chacun des sept bits 132 JSR TEMPO Tempori sation
59 DECALL LSR A L'octet est décalé a droite et 133 JSR IMPRIME ;Double la barre imprinée.
60 PHE chaque bit qui tonbe dans la retenue 136 JSR TEMPO
6 ROR TEMP era réintagré denx fois dans 135 my Octet suivant
62 PLP sltostet de travail tomporaire TEMP 136 cry #192 sDernier octet 2
63 ROR TEM 137 BCC LINDIR1 NON => On recommence
64 DEX #0n répete ce processus trois fois 138 WA ¢4 OUI => Avance le papier (LF)
65 BPL DECALL soit six bits dans TEMP 139 JSR DEROULE
66 ISR A Le bit suivant tombe dans la retenue 140 WDA #S1E sPointe vers la lére série d'octets
67 PHA et formera le septiéme bit de TEMP ul STA INAGH
68 PHE Sauvegarde de ce bit qui n' a été 142 BIT DIR :Bi- ou Unt-dfrectionnel 2
69 ROR TRMP rraintégré qu'une fois dans TEMP 143 BPL BIDIR = BI
70 LY NL 144 JSR RBTOUR UNI => revient en début de ligne
2 LDA TEMP sbtoctet résultant est chargé 145 DEC TEMOIN ;et effectue la 20me passe
12 sk A jon bit de potds fort mis 4 zéro 146 BNE LINDIR2
23 BOR INVERSE ;Bventuellement {1 est inverse a7 *
” REQ NULL Un octet nul ne modifie pas TEMOIN Py eererrrrieecerrrrrreccerrerrcrecerrrercecertrrrrecerery rites
75 LX 4SFF ‘tandis qu'un octet non nul le mettra 149 *
76 STX TEMOIN ;irrémédiablenent 4 SEF 150 CLAVIER LDA KBD :Test du clavier.
77 NULL STA (IMAGL).Y ;Résultat rangé & partir de $1R00 151 BPL SUITE2 —: Pas de touche enfonc:
78 LDA #0 tLe némoire de travail TEMP est 1s2 cur #s90 sROCAPE 2
13 STA TEMP jRenise & zéro 153 BEQ ARRET © ;Oul => Arret impression.
80 WDA 451F ;la prochaine série sera rangée isa cue stu" 102
81 STA IMAGH en $1F00 au lieu de $1200 155 BNE CLAVI
82 PLP On récupére le bit qui avait 156 LDA 4SFF #=> Mode Uni-directionnel.
83 ROR TEMP saauvegardé et on le réintégre 157 STA DIR
ae IDX 42 dans TEMP. Les trois bits restants 158 BNR SUTTER
as PLA pant dédoublés de la mene facon 159 CLAVL. CMR état 2B?
46 DECAL2 SR A sque précédenment 160 BNE SUITE
“7 PUP set formeront un nouvel octet TEMP 162 LDA #0 i=? Mode Bi-directtonnel
a8 ROR TEM squi sera traite comme le prenier 162 STA DIR
8s PLE 163 SUITE BIT KBDSTR Bf face le clavier
90 ROR TEMP 164 SUITE2 LDA wc ;Passe & 1a colonne précédente
1 Dex. 165 SEC en reculant de 7 points
92 BEL DECALZ 166 sac 47
93 TDA TEMP spots rangé a partir de $1F00 167 STA NC
94 IsR A seit 7 & zéro 168 BCS SAUT2
95 BOR INVERSE Eveutuellement inversé 169 DEC NCH
96 BEQ NULZ 170 BPL SAUT2 Et remonte jusqu'en DOUBLE
7 Lx 4SFF ;TEMOIN mis @ SPF car am BMI FIN sTerminé |
38 STX TEMOIN ;l'octet en question n'est pas nul. 12
99 NUL2 STA (IMAGL),Y ;Rangement du résultat Anaaennaenenananauanennnns
100 WDA 40
101 STA TEMP sRemise 40 de la mémoire de travail 175 BIDIR LOY 4SFF :Change le sens d' impression
109 INC NL #Comptage des octets de la colonne. 176 STY SENS i (de droite & gauche)
103 ‘LDA NL sles 192 octets de le colonne 177 LDA 40
104 CMP 4192 font-ils été tous traites 2 178 STA BARRE #Ratrappe un décalage de 3 barres
105 BCC SUIVANT ;NON => Octet suivant 119 JSR IMPRIME
106 * 180 gSR TEMPO
107 t#aeessaeeee Serererety nanan 181 OSR IMPRIME
108 * Impression des deux séries de 192 octets 182 JSR TEMPO
———=
EQU §P4l1
SEDeE
SEES
sCaloule l'adresse d'un point HGR
Envole un Retour Charlot
Gérard Becher
Pom's n° 20
183 JSR IMPRIME 199 BCC CLAVIER
1e4 Ly #192 Imprime la ligne 4 ltenvers 200 *
ies rai: bev erenceeipicltetacnlecsecket: |, 2 -andheagtintsinisvanuerisiatinioxnessnsonaeneean anions”
i pe ae
187 IDA (IMAGL),¥ 203 ARRET BIT KBDSTR
108 STA BARRE 204 FIN LDA #30
199 Cr tela fii luacecciar<)yeiGiaaa ae NO es receurmumscres
190 JSR TEMPO —; Tenporisation 206 cae GED Genin
191 JSR IMPRIME ;Double la barre imprinée. 207:#
132 Sr Teneo Bnet ieintrcmen RRA
3 ze steminé 2 0 = 02) siete
is ec enya <p i ae ee oe
138 an 9k (gr dloslieas ne sarees
iss TE MOOT | Wnecend dtm oxen ae cod
i! at Hide iti aeaiion swan eae | ay =
198 cue 24 pas
Programme RECOPECRAN 410 IFA = 149 OR A = 196 THEN PG = NOT(PG-1)+1:GOTO
NB : Ala suite de ce programme est "cachée"une routine en
langage machine. Voir texte.
10 TEXT : HOME
20 PRINT "RECOPIE D'ECRAN GRAPHIQUE SUR SILENTYPE*
30 PRINT *-- 14
40 LOMEM: 24576
50 POKE 34,2: POKE 33,33: POKE 32,7
60 OF = 0:A$ =":AD = VAL (A$) + PEEK (131) + 256 * PEEK
(132):1=0
70 MG =10IN=7PG =1
80 DIM F$(105)
90 REM Impression des valeurs par defaut
100 HOME : NORMAL
110 VTAB 6: PRINT *CHARGEMENT IMAGE :*: GOSUB 1100
120 VTAB 8: PRINT “MARGE GAUCHE : *: GOSUB 1200
130 VTAB 10: PRINT “INTENSITE GOSUB 1300
140 VTAB 12: PRINT “PAGE :*: GOSUB 1400
150 GOSUB 1500: GOSUB 1600
160 VTAB 21: HTAB 1: CALL - 958: PRINT * <ESPACE> POUR
MODIFIER": PRINT *<RETURN> POUR POURSUIVRE™:
PRINT* <ESC> POUR QUITTER™. PRINT” <I> OU <2
POUR HGR";
170 GOSUB 1000: IF A = 141 THEN 600
160 IF A= 155 THEN TEXT : HOME : END
185 GOSUB 3000
190 IF A< > 160 THEN 170
200 REM Modification des paramétres
210 VTAB 21: HTAB 1: CALL - 958: PRINT “<ESPACE> POUR
CHOISIR™: PRINT *-> OU <- POUR MODIFIER": PRINT
*<RETURN> POUR CONCLURE™: PRINT” <1> OU <2 POUR
HGR";
220 IT=0
280 ON IT GOTO 300,350,400,450,500
250 INVERSE : GOSUB 1110: GOSUB 1000: IF A = 160 THEN IT
= 1: GOSUB 1100: GOTO 230
260 IF A= 149 THEN IM =(IM + 1) * (IM <2): GOTO 250
270 IF A= 136 THEN IM=(IM- 1) *(IM>0)+2* NOTIM: GOTO
250
280 IF A= 141 ORA ~ 155 THEN 100
290 GOSUB 3000. GOTO 250
300 INVERSE : GOSUB 1210: GOSUB 1000: IF A = 160 THEN IT
= 2: GOSUB 1200: GOTO 230
310 IF A = 149 THEN MG = (MG + 1) * (MG < 20): GOTO 300
320 IF A = 136 THEN MG = (MG- 1) *(MG>0)+21* NOTMG:
GOTO 300
330 IF A= 141 OR A= 155 THEN 100
340 GOSUB 3000: GOTO 300
350 INVERSE : GOSUB 1310: GOSUB 1000: IF A = 160 THEN IT
= 3: GOSUB 1300: GOTO 230
360 IF A = 149 THEN IN = (IN +1)" (IN <7): GOTO 350
370 IF A= 136 THEN IN = (IN-1)*(IN>0)+7* NOTIN:GOTO
350
380 IF A= 141 ORA = 155 THEN 100
390 GOSUB 3000: GOTO 350
400 INVERSE : GOSUB 1410: GOSUB 1000: IF A = 160 THEN IT
= 4: GOSUB 1400: GOTO 230
400
420 IF A= 141 ORA = 155 THEN 100
430 GOSUB 3000: GOTO 400
450 INVERSE : GOSUB 1510: GOSUB 1000: IF A = 160 THEN IT
= 5: GOSUB 1500: GOTO 230
460 IF A = 149 OR A = 136 THEN MOD = NOT MOD: GOTO 450
470 IF A= 141 OR A = 155 THEN 100
480 GOSUB 3000: GOTO 450
500 INVERSE : GOSUB 1610: GOSUB 1000: IF A = 160 THEN IT
= 0: GOSUB 1600: GOTO 230
510 IF A= 149 OR A = 196 THEN DIR = NOT DIR: GOTO 500
820 IF A= 141 OR A= 155 THEN 100
530 GOSUB 3000: GOTO 500
600 IF NOT IM THEN 700: REM Pas dimage a chargor
610 GOSUB 2000: REM Lecture catalogue
620 IF NOT! THEN 100: REM Pas dimage sur ce disque.
630 VTAB 22: HTAB 1: PRINT "NOM DE FICHIER,NUMERO,OU
<RETURN>";
640 INPLIT “==>"A$: IF LEN (A$) = 0 THEN 100
650 IF VAL (A$) >0 AND VAL (A$) < = | THEN A - F&{ VAL (A$)
-1)
660 PRINT CHR$ (4)"BLOAD",A$;*,A";8192 * PG,”,D",IM
670 IM = 0: GOTO 100
700 REM On initialise limprimante
710 REM Eton fixe les paramétres
720 PRINT : PRINT CHR$ (4);"PR#1": PRINT
730 PRINT CHRS (4);"PR#0"
740 POKE - 12527,MG: POKE - 12528,IN: POKE - 12529,255*
DIR: POKE - 12524,255* MOD: POKE - 12525,32* PG
745 POKE 49239,0: POKE 49234,0: POKE 49235 + PG,0: POKE
49232,0
750 CALL PEEK (175) + 256* PEEK (176) - 329: GOSUB 3030:
GOTO 100
1000 IF PEEK (49152) < 128 THEN 1000
1010 A= PEEK (49152): POKE 49168,0: RETURN
1100 NORMAL
1110 VTAB 6: HTAB 20: CALL - 868: ON IM GOTO 1130,1140
1120 PRINT *NON*: RETURN
1190 PRINT “DRIVE 1*: RETURN
1140 PRINT “DRIVE 2°: RETURN
1200 NORMAL
1210 VTAB 8: HTAB 16: CALL - 868: PRINT MG: RETURN
1300 NORMAL
1310 VTAB 10: HTAB 16: CALL - 868: PRINT IN: RETURN
1400 NORMAL
1410 VTAB 12: HTAB 16: CALL - 868: PRINT PG: RETURN
1500 NORMAL
1510 VTAB 14: CALL - 868: PRINT "MODE *;: IF MOD THEN
PRINT “INVERSE”: RETURN
1520 PRINT “NORMAL”: RETURN
1600 NORMAL
1610 VTAB 16: CALL - 868: IF DIR THEN PRINT “UNI";; GOTO
1630
1620 PRINT “BI”;
Suite de Recopecran page suivante =>
22
Pom's n° 20
Manipulation de
catalogue
Jean-Luc Arnaud
e programme, écrit
avec l'assembleur Lisa
1.5, vous permet de
modifier le catalogue
de votre disquette de fagon simple
et efficace. Ainsi, vous pouvez
Tenommer un fichier, déplacer
une zone de fichiers, échanger la
place de deux fichiers, ...
Mode d'emploi
Lors du chargement du program-
me, l'écran se divise en deux
fenétres :
* une fenétre menu sur le bas de
lécran, sur laquelle s'affiche-
ront les différentes fonctions
auxquelles vous aurez accés ;
+ une fenétre de travail sur le
teste de l'écran.
En premier lieu, vous devez
demander le chargement d'un
catalogue. La premiére option 4
choisir est donc "C". Le
programme vous demande alors
la confirmation de votre choix ;
quatre réponses sont autorisées :
* Opour Oui;
* N pour Non ;
+ 1 ou 2 correspond au numéro
du lecteur ot se trouve la
disquette dont le catalogue doit
étre manipulé.
Le catalogue de votre disquette
étant chargé, le programme vous
propose :
* la lecture
+ I'édition
+ la modification
+ le réenregistrement
* la sortie du programme.
Lecture
Ce choix est l'équivalent d'un
CATALOG, il vous permet done
de visualiser les noms de fichiers
de votre catalogue. En
LECTURE le programme vous
demande le numéro du premier
secteur et le nombre de secteurs a
lire (il vérifie les dépassements).
Les titres s'affichent alors et sont
précédés d'un numéro (1 a 255,
voir explications techniques) et
du signe +, - ou &, suivant qu'il
s'agit d'un fichier existant (+),
d'un fichier effacé (-) ou d'un
commentaire (&).
Signalons 4 ce propos que lors
d'un DELETE, le fichier n'est
pas effacé de la disquette. Le
DOS se contente de remplacer le
numéro de piste de la liste
pistes/secteurs du fichier concer-
né par $FF : on peut donc
toujours retrouver dans le
catalogue un nom de fichier
effacé auparavant.
Lors de l'affichage du catalogue,
si le nombre de fichiers est
supérieur au nombre de lignes
disponibles dans la fenétre, la
touche ESPACE vous permettra
de continuer et de visualiser tous
les noms des différents fichiers
composant le catalogue. Dans ce
cas, comme 4 l'entrée des
informations, le nombre de
secteurs occupés est inscrit. Cette
opération effectuée, le program-
me vous renvoie au sous-menu
LECTURE.
Edition
Le choix EDITION conduit 4 un
sous-menu qui propose l'échange
entre deux titres ou le déplace-
ment d'une zone. .
L'ECHANGE ne nécessite pas
d'explications particuliéres. Il
suffit de donner les numéros des
deux titres 4 échanger ; ainsi,
l'ordre des noms de fichiers est
modifié. Le programme renvoie
ensuite a l'écran les titres du
secteur - catalogue déterminé par
le 2éme numéro.
Suite de RECOPECRAN
1630 PRINT “DIRECTIONNEL”: RETURN
2000 REM Sous progr. de lecture du catalogue
2010 HOME
2020 POKE 47082,IM: REM Drive
2030 POKE 47083,0: REM Volume
2040 POKE 47084,17: REM Piste
2050 POKE 47088, 187: POKE 47089,180: REM Buffer en $B4BB
2060 POKE 47092,1: REM Read
2070 1-0:S-0;P-0
2080 POKE 47085,15- S: REM Secteur
2090 CALL PEEK (175) + 256" PEEK (176)-9
2100 IF PEEK (47093) THEN PRINT : PRINT CHR$ (7)7/0
ERROR": POP : TEXT : END
2110 OF = 11: POKE AD,30
2120 IF PEEK (46267 + OF) - 255 THEN 2180 POKE 49232,0
2130 IF PEEK (46267 + OF) = 0 THEN 9020 FOR | = 0TO 1000: NEXT
2210 : REM Fin du catalogue 3030 POKE 49236,0: POKE 49233,0: RETURN S)
2140 A= PEEK (46269 + OF): IF NOT (A=4ORA~=132) THEN \
2180
2160 POKE AD + 2, INT ((46270 + OF) / 26): POKE AD + 1,46270
+OF - 256* PEEK (AD + 2):F§(|) = AS
2160 IF AND |= 18* INT (I/18) THEN VTAB 23: PRINT
"APPUYEZ SUR UNE TOUCHE": PRINT "POUR
CONTINUER™;: GOSUB 1000: HOME
2170 VTAB 4 +1-18° INT (I/18):1 =1 +1: PRINT I: HTAB 4:
PRINT AS.
2180 OF = OF +35
2190 IF OF <255 THEN 2120
2200 S = S + 1: GOTO 2080
2210 RETURN
3000 REM VOIR UNE PAGE HGR
3005 IF NOT (A=1770R A=178) THEN RETURN
3010 POKE 49239,0: POKE 49234,0: POKE 49236 + (A = 178),0:
Pom's n° 20
23
Exemple :
A partir du menu général, tapez E
(Edition) puis E (Echange) et
enfin 3,40. Ainsi, les titres n°3 et
40 sont échangés et le secteur 6
est affiché (titres 36 4 42). De la
méme maniére, on aurait pu
entrer 40,3 ; dans ce cas, c'est le
secteur 1 (titres 1 a 7) qui
s'affiche.
Le DEPLACEMENT permet
d'insérer des titres ou des
commentaires rapidement. Il
suffit d'entrer les limites
supérieure et inférieure de la zone
a traiter et le numéro du titre a
partir duquel la zone sera
implantée. Il est évident qu'il
s'agit, en fait, d'un échange entre
la zone a déplacer et la zone de
destination. Le programme vérifie
que le transfert ne se fait pas
au-dela des limites du catalogue.
Exemple :
A partir du menu général, tapez E
(Edition) puis D (Déplacement) et
entrez les valeurs 1,10,40. La
zone 1 a 10 est déplacée en 40 a
49 tandis que la zone 40-49 passe
en 1-10.
Si les valeurs entrées sont
1,10,2: la zone 1-10 passe en
2-11, 11 passe en 1: ily a
insertion d'une ligne.
On peut aussi faire "remonter"
une zone :
Exemple :
Supposons que les valeurs saisies
sont 90,100,30 : la zone 90-100
passe en 30-40 et vice-versa.
Ainsi, les entrées 90,100,30 et
100,90,30 sont équivalentes.
Modification
Choisissons maintenant la
MODIFICATION d'un titre.
Cette partie du programme offre
les possibilités suivantes :
* modification du titre d'un
fichier ;
¢ mise en place de commentaires
(texte et symboles divers) ;
* effacement du titre d'un fichier
précédemment DELETé ou
d'un commentaire. Par précau-
tion, il est impossible d'effacer
le titre d'un fichier présent.
Afin de modifier le nom d'un
fichier, il faut entrer le numéro du
titre 4 traiter. Celui-ci s'affiche
précédé de son numéro, et
surmonté d'une échelle, de 30
caractéres, graduée de 1 en 1,
repérée de 5 en 5. Le curseur est
positionné sur le premier carac-
tére du titre.
Les facilités de l'éditeur (touches
de déplacement du curseur et
fonction ESCape) sont naturelle-
ment accessibles pour cette
modification.
Le programme détermine
lui-méme si’vous manipulez un
commentaire, un nom de fichier
présent ou un titre de fichicr déja
effacé. La seule précaution a
prendre est de ne pas remplacer
un titre de programme par une
suite de symboles non acceptée
par le DOS, celui-ci ne le
retrouverait plus. Il est donc
indispensable de redonner un
nom reconnaissable par le DOS.
L'effacement automatique s'ob-
tient en tapant un RETURN &
vide lors de l'entrée du texte.
Aprés confirmation et contréle, le
texte est effacé. Il est également
possible de taper ESPACE et
RETURN ; dans ce cas le texte
est effacé et remplacé par un
‘blanc’ qui apparait lors du
catalogue, sous forme d'une ligne
vide (pour aérer...). Une tentative
d'cffacement du titre d'un fichier
présent conduit 4 l'affichage d'un
message d'erreur, avec retour au
menu général.
Réenregistrement
Votre ccuvre mise au point, il
s'agit de la sauvegarder en la
réenregistrant sur la MEME
disquette. Choisissez simplement
option R (Réenregistrement) qui
transfére le contenu de la
mémoire vers la disquette. Cette
option est éminemment dangercu-
se puisqu’elle détruit le catalogue
original et le remplace par celui
que vous avez préparé (croyez-en
mes malheureuses expé-
rienccs...). Il est done nécessaire
de confirmer le choix par 1/2/O/N
: lecteur 1 ou 2, Oui, Non.
Attention ; il est indispensable
d'enregistrer le catalogue sur la
MEME disquette. Sinon adieu
vos beaux fichiers !
Terminer
Vous pouvez recommencer une
Récapitulation
LECTCAT
0801- A9 4C 8D F5 03 Ad 10
0808- 8D F6 03 A9 08 8D F7 03
0810- A2 00 86 00 BS 00 9D 00
0818- 78 CA DO F8 AQ FO 85 36
0820- AOS FD 85 37 AS 1B 85 38
O828- AX FM 85 39 20 58 FC AD
0830- 12 85 25 4c AS 08 42 08
0838- FE 09 52 OB 07 OD 87 OE
0840- 13 09 20 5B 10 20 cé 10
0848- 20 62 Fc AOS 00 85 00 85
O850- 18 AQ 11 8D BS 10 AQ OF
0858- 8b B6 10 AY 20 8D BA 10
0860- A9 01 8D BD 10 AO 01 85
0868- CE AQ 1F 85 CF 20 AQ 10
0870- E6 CF A9 00 A8 D1 CE DO
0878- 17 C& D1 CE DO 12 AS 18
0880- 18 69 01 OA OA OA 38 ES
ogsss- 18 85 06 C6 06 AC AS 08
0890- AO 00 Bl CE 8D BS 10 C8
0898- Bl CE 8D B6 10 EE BA 10
O8A0- E6 18 4C 6D 08 AS 25 8&5
O8A8- 08 AY 00 85 24 AI 14 85
O6BO- 25 85 22 AD 18 85 23 20
O8R8- 58 FC AY YE AO 09 20 26
O8cO- OF A9 AO 20 1B FD C9 C3
O8c8- DO 05 A2 00 4c FD 08 c9
O8D0- CC DO 05 A2 02 4C FD 08
O8D8- C9 C5 DO 05 A2 04 4C FD
O8E0- 08 c9 CD DO 05 A2 06 4c
O8E8- FD 08 C9 D2 DO 05 A2 08
O8FO- 4C FD 08 C9 D4 FO 1c 20
O8F8- DF 10 4C Cl 08 20 FD FB
0900- 20 62 FC 20 62 FC BD 36
0908- 08 85 EB BD 37 08 85 EC
0910- 6C EB 00 AS 00 C9 FF FO
0918- 42 20 c6é 10 20 58 FC 20
0920- D3 10 20 62 FC 20 62 FC
0928- AQ 34 AO 09 20 26 OF Cé
0930- 00 4C AS 08 26 45 52 54
0938- 53 49 47 45 52 4E 45 60
0940- 53 41 50 60 5A 45 56 41
0948- 67 4E 60 53 55 4F 56 60
0950- 7A 60 4B 4F 49 54 4E 45
0958- 54 54 41 A2 00 BD 00 78
0960- 95 00 CA DO F8 20 58 FC
0968- AQ 8D AO 09 20 26 OF 20
0970- D3 10 20 62 FC 4c DO 03
0978- 14 AO BA AO D2 DS CS D4
0980- c3 C5 CC AO C5 C4 AO CF
988- D2 C5 CD D5 CE 10 D2 c5
Pom's n° 20
séance de travail, éventucllement
en changeant de lecteur, sinon
tapez T pour Terminer.
Il existe un contréle, lors de la
demande de sortie du program-
me, afin de ne pas oublier
d'enregistrer la séance de travail.
Une seconde sortie, immédiate-
ment aprés la premiére, vous
permet de quitter le programme
sans enregistrement.
Contréles effectués
par le programme
« Tout RETURN 4 vide renvoie
au menu principal.
+ Les numéros des titres ne
peuvent étre nuls ou supérieurs
au maximum autorisé par le
catalogue (en tout état de cause
<= 255).
+ Par conséquent, il est impossi-
ble de demander le transfert
d'une zone vers une autre
franchissant la limite du
catalogue, par exemple 1,50,
80 (pour un catalogue normal
contenant au plus 105 titres),
qui déplace les titres 1 4 50
vers 80 a 129.
+ Le nombre de réponses doit
correspondre 4 ce qui est
attendu.
¢ En cas de non respect des
tégles ci-dessus, le programme
vous repose la question.
* On ne peut pas effacer le titre
d'un fichier présent.
¢ Rappel a l'ordre en cas de
sortie du programme sans
enregistrement.
Une disquette dont le catalogue
est modifié par cet utilitaire ne
peut plus étre copiée entiérement
par le programme FID, les
commentaires provoquant une I/O
ERROR. II faut donc copier les
fichiers en sautant les commen-
taires. Le programme COPYA
fonctionne parfaitement.
Technique
Lutilitaire est entirement écrit en
assembleur (Lisa 1.5), d'une part
nécessaire pour la rapidité
d'exécution, d'autre part pour le
plaisir...
Globalement, le catalogue est
chargé en MEV, manipulé et
enfin réécrit sur la disquette. Le
programme ne touche pas 4 la
VTOC (piste $11, secteur 0).
Possibilité de lire n'importe
quel catalogue commengant en
piste $11, secteur $F, en
utilisant les pointeurs de
chainage d'un secteur avec le
suivant, autorisant un
maximum de 255 titres. En
récupérant les pistes 0 a 2, il
est possible de stocker environ
260 fichiers de 2 secteurs
chacun, un secteur liste
piste/secteur et un secteur
données, sur une seule
disquette.
* Assemblage en $801 pour
éliminer le SYNTAX ERROR
provoqué par NEW, LIST ou
RUN aprés retour au Basic
($800 doit contenir 0).
Sauvegarde de la page zéro en
$7800 et débranchement du
DOS 4 l'nitialisation de 1a
routine. La mise hors service
du DOS s'explique par la
nécessité de pouvoir manipuler
des mots réservés du DOS,
sans obtenir le fatal NOT
DIRECT COMMAND.
* En MEV, le catalogue est
stocké 4 partir de l'adresse
$2000. Une zone de transition
pour les déplacements com-
mence en $4600.
+ L'entrée des commentaires
entraine la mise du numéro de
piste de la liste piste/secteur a
une valeur supérieure 4 $22 et
inférieure 4 $FF ($30) ; en
d'autres termes, le commen-
taire apparait pour le DOS ni
comme un fichier effacé (il ne
s'afficherait pas lors d'un
CATALOG), ni comme un
fichier présent (une tentative
de chargement entrainerait une
vO ERROR). C'est ce numéro
insolite que FID ne digére pas.
+ La routine d'écriture sur
disquette est modifiée de fagon
a pouvoir enregistrer un
catalogue plus long que la
normale, Elle commence par le
secteur $F, piste $11 puis
utilise les octets de chainage
pour les secteurs suivants.
¢ Retour au Basic en rebranchant
le DOS, et en restituant la page
z6r0.
a,
G
0990- C3 CE Cl CC C5 D2 AO D2
0998- DS CF DO AO AG CO SF AO
O9A0- BA AO D8 C9 CF C8 C3 AO
O9A8- C5 D2 D4 CF D6 CO AO C5
O9B0- CE C9 CD D2 C5 DD D4 DB
O9B8- AO AO AO C5 D2 DS D4 co
09c0- D2 C3 C5 C5 DD D2 DB AO
09c8- AO AO AO AO D2 C5 C9 C6
O9D0- C¥ C4 CF DD CD DB AO CE
09D8- CF C9 D4 C9 C4 DD C5 DB
O9EO- AO AO AO AN AN AO C5 D2
O9E8- D5 D4 C3 C5 DD cc DB AO
O9FO- AO AO D4 CE C5 cD C5 Cc?
O9F8- Dz Cl C8 DD C3 DB AQ OC
OAOO- AO OB 20 26 OF A2 03 AD
OA0B- FD AO 09 20 43 OF AQ 00
0A10- 85 01 AS 19 18 65 1A 38
OA18- E9 02 85 1B AS 18 C5 1B
OA20- BO 3D AS 25 c9 14 BO 15
OAZ8- AS 25 85 08 AQ 00 85 24
OA30- AQ 14 85 25 85 22 AO 18
OA38- 85 23 20 58 FC 20 D3 10
0A40- A9 3D AO OB 20 26 OF AD
OA48- 00 AG 18 E8 20 24 ED AQ
OAS5O- 48 AO OB 20 26 OF 20 62
OAS8- FC 20 62 FC 4C FE 09 AS
OA60- 01 DO 05 20 cé 10 Cé 01
OAG8- 20 62 FC C6 19 AO 00 85
OA70- 1C 85 75 AS 19 OA OA OA
OA78- 38 ES 19 18 69 01 18 65
OA80- 1C 85 1D AA AY 00 20 24
OA88- ED A2 02 20 4A F9 AD 04
OA90- 85 24 AI 20 18 65 19 85
OA98- CF AS 1C OA OA OA OA OA
OAAO- 18 65 IC 65 IC 65 IC 69
OAA8- OB 85 CE A2 00 Al CE FO
OARO- 10 C9 FF FO 0c c9 30 DO
OAB8- 04 AQ A6 DO 0b AY AB DO
OACO- 02 AS AD 20 FD FB EG 24
OAC8- A2 1E AO 03 B1 CF 20 FD
OADO- FB E6 CE CA 8A DO F3 AS
OAMR- 75 FO 01 60 AQ 8D 20 7¢
OAEO- FB E6 1C Ad 1C C9 07 DO
OAES- 8A E6 19 AS 1B C5 19 90
OAFO- 03 4c 6D OA 20 62 FC Ag
OAF8- AO 20 1B FD C9 AO DO 09
OBOO- E6 19 AQ 01 85 1A 4c 12
0B08- OA 4C A5 08 30 BA AO C5
0B10- D2 C9 Cc AO Cl AO D3 D2
0B18- D5 C5 N4 C3 C5 D3 AO C5
0B20- C4 AO C5 D2 C2 CD CF CE
OB28- AO D4 C5 AO D2 DS cS D4
0B30- C3 C5 D3 AO F2 E5 B1 AO
0B38- DS C4 AO EF CE OA AO D4
Pom's n° 20
25
OB40- CE C5 CD Cd CC DD CD DS) = OD28-:*OF 20 62 FC AY FF 85 75 OF10- CS CE C9 CD D2 C5 D4 AO
OB48- 09 D3 D2 DS C5 D4 ¢3 C5 «= OD30- AS: 19 85 1D AS FB 8S 19 OFIB8- D4 CE C5 CD C5 D2 D4 D3
OBS50- D3 AO 20 62 FC AQ 06 85 0D38- A5 1D 20 83 OA AY Ue 85 Orz20- C9 C7 C5 D2 CE C5 85 EB
OB58- 24 A9 51 AO OC 20 26 OF OD40- 24 AY 80 20 GC FD SA DO OF28- 84 EC AO 00 Bl EB AA AS
OB60- AQ AO 20 1B FD 48 20 FD OD48- 63 AQ 40 AO OF 20 26 OF OF30- Bl EB C9 CO FO 08 20 FD
OB68- FB 68 C9 C4 FO UA C9C5 0D50- AY AO 20 1B FD C9 CF FO OF38- FB CA 8A DO F2 60 20 62
0B70- FO 5C 20 DF 10 4¢ 52 0B 0pS8- 19 C9 EF FO 15 A9 CE 20 ©OF40- FC NO Fé 85 EB B4 EC 86
0B78- 20 62 FC 20 62 FC A9 92 OD60- FD FB A9 CF 20 FD FB AY OF48- CE A9 AO 20 6C FD EO 00
OB80- AO OC 20 26 OF AZ 0S AY OD68- CE 20 FD FB 20 G2 FC 4c © OF 50- DO 03 4c BT 08 E4 CE 90
OB88- 7D AO OB 20 43 OF AS 1A OD70- EE OP AQ CF 20 FD FB AQ OFS58- 18 C6 CE 46 CE Ad CE 85
OB90- Cb 19 BO 07 AA AS 19 85 OD78- D5 20 FD FB AY C9 20 FD «OF 60- 75 BD FF 01 C9 aC DO 02
oB9e- 1A 86 19 38 E5 19 85 FC OD80- FB 20 62 FC AO 00 BI FO = AFEA- C6 CE CA DO F4 AS CE FO
OBAO- A5 1B 18 65 FC C5 06 FO OD88- FO 04 C9 23 90 08 AY FF OF70- OC 68 68 AS EC 48 AS EB
OBA8- 08 90 06 20 D3 10 4C 7E OD90- 91 F9 AO 03 DO 4D 20 G2 OF 78- 48 20 DF 10 60 AD 00 A2
OBBO- 0B 20 c6 10 AS 19 c5 1B OD98- FC 20 62 FC 20D3 10 AQ =: OF 80- ‘01 AS 75 FO 70 AQ AC 85
OBB8- BO 10 A5 1A 85 19 AS 1B ODAO- 65 AO OE 20 26 OF 20 62 OF88- FF BD 00 02 C5 FF DO 09
OBCO- 18 65 FC 85 1A E6 FC 4C ODA8- FC 4C¢ AS 08 £0 21 90 02 =: OF 90- CA BN AN 02 29 OF 4C DT
OBC8- EB 0B AS 1B DO F5 20 62 ODBO- AZ 20 86 19 AU 00 BL 3C ©=—« OF 98- OF EB BD 00 02 C5 FF FO
OBDO- FC 20 62 FC A9 EO AO OC ODBS8- FO OA C9 30 FO 06 C9 FF OFAO- 1E 20 FB OF 99 19 00 CA
OBD8- 20 26 OF A2 03 AQ D3 AO opco- FO 92 DO 10 AY 30 91 3C OFA8- CA BD 00 02 C9 BO FU 32
OBEO- 0B 20 43 OF A9 01 85 FC ODC8- 98 AO 21 91 3C CB 91 3C «=: OF BO- C9 B1 DO 15 18 B9 19 00
OBE8- 20 CG 10 AS 19 20 15 10 ODDO- AO 02 91 3C AD 03 AZ 00 OF BS- 69 64 EB EB 4C 17 OF CA
OBFO- A9 00 85 42 A9 46 85 43 ODD8- BD 00 02 91 3C EB C8 E4 OFCO- BD 00 02 20 FB OF 4c D7
OBF8- AO 00 20 2¢ FE AS F9 85 ODEO- 19 90 F5 AD AD CO 21 BO OFCB- OF C9 B2 DO A‘ ES ES BO
OcOO- 42 AS FA 85 43 A5 1A 20 ONE8- 05 91 3C C8 DO F7 E6 FB OFDO- 19 00 18 69 C8 BO 9A FO
OcO8- 15 10 AO 00 20 2C FE AY ODFO- AS FB 85 19 A9 01 85 1A OFDB- 98 C5 06 FO 02 BO 92 99
0c10- 00 85 3¢ A9 46 85 3D AD ©ODF8- 20 62 FC 4c 12 OA 1¢C BA OFEO- 19 00 EA FB FA CB C6 75
0C18- 22 85 3E A9 46 85 3F AS OEOO- AO D2 C5 C9 C6 C9 C4 CF OFE8- FO OB AS 75 C9 FF DO 99
0c20- F9 85 42 AS FA 85 43 AO OE08- CD AO Cl AO C5 D2 D4 C9 = OOFFO- AY 00 85 00 60 A9-8D 85
Oc28- 00 20 2c FE A5 19 C5 1A O£10- D4 AO N5 C4 AO CF D2 C5 OFF8- FF DO 8E 29 OF 99 19 00
0c30- BO 07 C6 19 C6 1A 4C 3D =: OH 18- CD D5 CE 24 Al AE AE AE 1000- CA BD 00 02 29 OF 9D 00
0c38- 0C EG 19 EG 1A CG FC DO. © OE20- AE Al AE AE AE AE Al AE 1008- 02 OA OA 18 7D 00 02 OA
0c40- AA 20 62 FC E6 FB AS FB. ‘0E28- AE AE AE Al AE AE AE AE 1010- 79 19 00 8 60 38 EO O1
0c48- 85 19 A9 01 85 1A 4c 12. .0E30- Al AE AE AE AE Al AE AE 1018- 85 1D A9 00 85 1E A2 08
Oc50- OA 40 AO BA AO D8 C9 CF OE38- AF AF AO AO AO AO AO AOD 1020- AS 1D 85 FB AS 1E 06 FB
0c58- C8 C3 AO C5 D2 D4 CF D6 =: OE40- 24 BA AO CE AF CF AO BF 1028- 2A C9 07 90 04 ES 07 EG
0c60- cO CO CS CE CF DAAO C5 =: OE48- AD CS D2 D4 C9 DA AO CS =: 1030— FB CA DO F2 &5 1C AD 20
OCc68- CR M5 A7 C4 AO D4 CE C5 0E50- C3 AO D2 C5 C3 Cl C6 C6 1038- 18 65 FB 85 3D 85 3F 85
0c70- cD c5 ¢3 C1 CC DO CS C4. =: OES8- CS AO D3 DS CF D6 AD DA 1040- FA AS 1c OA OA OA OA OA
Oc78- AO AD AO DD C4 DB AO AO OE60- C5 CC NS CF DE 21 45 4D 1048- 18 65 1C 65 iC 65 1C 69
Ocg0- AO AO AV AU CO C5 C7 CE Ok68- 49 52 50 50 55 53 60 45 1050- OB 85 3c 85 F9 18 69 22
Oc88- Cl cB C3 C5 AO AD AO DD OOET0- 4F 4E 60 52 45 19 18 43 © 1058- 85 3E 60 270 D3 10 AD EB
Oc90- C5 DB 4D RA AO CR CF C9 OF78- 49 46 60 7A 60 45 4c 42 1060- AO OE 20 26 OF AD B3 10
0C98- D4 Cl CE C9 D4 D3 C5 C4 =: OEBO- 49 53 53 4F 50 4D 49 20 1068- 09 30 20 FD FB AS FS AO
OCAO- AO Cl CC AO C5 C4 AO AE OE88- 5B 10 20 62 FC AQ 02 AD 1070- OF 20 26 OF A9 AO 20 1B
OCA8- DO DS D3 AO C5 D4 C9 CD =: OEYU- BD 10 AS 18 85 FC A911 1078- FD 48 20 FD FB 68 C9 CF
OCBO- c9 CC AO C1 CC AO D4 C5 OE9B- BD BS 10 AD OF 8D BE 10 1080- FO 26 C9 EF FO 22 C9 BI
OcB8- D2 C5 C3 Cl cc DO C5 C4 OFAO- AQ 20 8D BA 10 85 EC AD 1088- DO 06 29 FF 8D B3 10 60
occo- AO Cl AO C5 CE Ck DA AQ OEA8- 00 8D B9 10 85 EB 20 A9 = 1090- C9 B2 DO 06 29 FF 8D B3
Occ8- cl cc AO C5 C4 AO D3 C5 OEBO- 10 Cé FC AS FC C9 FF FO 1998- 10 60 A9 00 85 24 C6 25
OcDO- D4 C9 CD C9 CC AO D3 CS OEB8- 15 EE BA 10 AO O1 Bl EB 10A0- 20 9C FC 68 68 4C AS 08
OcD8- cc AO DA C5 D2 D4 CE C5 -«OECO- 8D BS 10 C8 B1 EB 8D BG © 10A8- 60 AD 10 AD Bl 20 D9 03
OcEO- 26 BA AO D2 C5 C3 Cl cc OEc8- 10 £6 EC 4C AE OF 20 C6 10B0- 60 01 60 01 00 11 OF C2
OCE8- DO C5 C4 AU Cl AU D2 CS OEDO- 10 20 58 FC 20 62 FC AQ 10B8- 10 00 20 00 00 01 00 00
OcrO- c9 c8 C3 C9 C6 AO C5 C4 = OEDS- OF AO OF 20 26 OF 20 62 10C0- 60 01 00 01 EF DB Ad 00
OCF8- AO AE EF CE AO D3 C5 CC OEEQ- FC A9 FF 85 00 4C AS 08 = 10CB- BD 22 AY 14 85 23 AS 08
ODOO- AO DA C5 D2 D4 CE CS Ad OEE8- Oc 20 2E OF OF 20 12 15 10D0- 85 25 60 AO CO 20 E9 FB
ODO8- FE AO OD 20 26 OF A2 01 OEFO- 05 14 03 05 Oc 19 20 3A 10D8- AQ 20 AO CO 20 E6 FB AQ
OD10- A9 06 AO OD 20 43 OF 20 OEF8- 20 29 OE 2F OF 2F 32 2F 10E0- 20 AO CO 20 E6 FB 60 A2
0D18- C6 10 AS 19 20 15 10 20 OFOO- 31 28 20 1A 05 OD 12 09 ~=—-10E8- 00 CA DO FD 60
0n20- 62 FC A9 1B AO OE 20 26 OFO8- 06 OE OF 03 20 2D 20 16
Ns
26 Pom's n° 20
Programme
LECTCAT.SOURCE
(Assembleur LISA 1.5)
PISTE $11,
11 FINFLG EPZ $0
12 LECFLG EPZ $1
13 ADR EPZ SEB
14 FLAG EPZ SCE
15 CH EPZ $24
16 cv EPZ $25
17 SECT EPZ $18
18 cl EPZ $19
19 c2 EPZ $1A
20 NBSECT EPZ $1B
21 F EPZ $1c
22 NUMFIC EPZ $1D
23 NUMMAX EPZ $06
24 CVANT EPZ $08
25 AlL EPZ $3¢
26 AlH EPZ $3D
27 A2L EPZ $3E
28 A2H EPZ $3F
29 AML EPZ $42
30 A4H EPZ $43
31 FLAG2 EPZ $75
32 DESTL EPZ $F9
33 DESTH EPZ $FA
34¢ EP2 SFB
35 BOUCLE EPZ $FC
36 IN EQU $200
37 RWIS EQU $3D9
38 AMPERV EQU $3F5
39 SGNFLT EQU $E301
40 LINPTR FQU SFED24
41 ORIG EQU $2002
42 PRBL2 EQU $F94A
43 CTRL.S EQU $FB7C
44 BELL2 EQU $FBE6
45 STORAV EQU $FBFO
46 VIDOUT EQU S$FBFD
47 KEYIN EQU $FD1B
48 CR EQU SFC62
49 CLREOL EQU $FC9C
50 GETLIN EQU $FD6C
Sl MOVE EQU $FE2C
52 ¢
53 ORG $801
INITIALISATION &
EDITEUR DE CATALOGUE DOS
{ CATALOGUE COMMENCANT EN
SECTEUR $OF
3.3 =
SMP (ADR
NBRE SECT
STOCKE
LES
DONNEES
58
59
60
61
62
63
64
BEGIN LDA #S$4C ?
STA AMPERV
LDA #DEBPGM
STA AMPERV+1
LDA /DEBPGM
STA AMPERV+2
70
71
72
73
74
75
76
7
78
79
80
81
82
83
84
85
86
87
88
89
90
91
DEBPGM LDX #$00
PGO
¢ 256 BOUCLES
STX FINFLG + DRAPEAU ZERO
LDA $00,X
STA $7800,x
DEX
BNE PCO
DEBRANCHE LE D.O.S.
LDA #SFO
STA $36
LDA #SFD
STA $37
#$1B
STA $38
LDA #$FD
STA $39
JSR $FC58
LDA #18
UMP MENU
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
11s
116
117
ADR INIT
ADR LECTUR
ADR EDIT
ADR MODIF
ADR ECRIT
ADR F'LN
INITIALISATION LECTURE *
JSR OK?
JSR WINDOW
JSR CR
LDA #$00
STA FINFLG
STA SECT
LDA #S11
Pom's n° 20
27
118 STA IBTRK 178 STA $23
119 LDA #S0F 179 JSR SFC58
120 STA IBSECT 180 ML LDA #MESS1
123 LDA #520 181 LDY /MESS1
122 STA IBBUFP+1 182 JSR AFFICH
123 LDA #$1 7 LECTURE 183 ;
124 STA IBCMD 184
125 LDA #0RIG-1 185
126 STA $CE 186
127 LDA /ORIG-$100 187
128 STA SCF 188 REP1 LDA #SA0
129 189 JSR KEYIN
130 190 CMP #"C" ;CHARGEMENT ?
131 191 BNE L?
132 £92 Lpx #0
133° 2 193 MP SAUT
134 DEBUT JSR Dos 194 L? CMP #"L" ?LECTURE ?
135 INC SCF 195 BNE E?
136 LDA #$0 196 LDX #2
137 TAY 197 UMP SAUT
138 CMP (SCE),Y : No PISTE=0 2? 198 E? CMP #"E" ;EDITON ?
139 BNE SUITE 199 BNE M?
140 INY 200 LDx #4
141 CMP (SCE),Y 7 No SEI 201 UMP SAUT
142 BNE SUITE 202 M? CMP #"M" :MODIF 2
143 LDA SECT ;CALCUL 203 BNE R?
144 cLe 204 LDX #6
145 ADC #1 205 UMP SAUT
146 ASL ;NUMMAX 206 R? CMP #"R" ;ENREGIST?
147 ASL 7=(SECT+1) *7 207 BNE T?
143 ASL 3 (SECT+1) *8 208 LDX #8
149 SEC 209 IMP SAUT
150 SBC SECT 210 T? CMP #*T" #TERMINER ?
151 STA NUMMAX 211 BEQ FIN
152 DEC NUMMAX ;NUMMAX = 212 JSR RELI
(SECT+1) *8-SECT-1 213 UMP REPL
153 UMP MENU 214 SAUT JSR VIDOUT
154 SUITE LDY #$0 215 JSR CR
195 LDA (SCE),Y + No PISTE 216 JSR CR
156 STA IBTRK 217:
157 INY 218 LDA TABLE, X
158 LDA ($CE),¥ } No SECTEUR 219 STA ADR
159 STA IBSECT 220 LDA TABLE+1,X
160 INC IBBUFP+1 221 STA ADR+1
161 INC SECT 222 UMP (ADR)
162 SMP DEBUT 223
163: 3 226 sss Ss eS
164 ; 225 : RETROUVE PAGEO INITIALE
165 = ss
166 j= MENU GENERAL = 227 7
167 228 FIN LDA FINFLG
168 229 CMP #SEF
169 ; 230 BEQ OKFIN
170 MENU LDA CV 231 JSR WINDOW
a7 STA CVANT 232 JSR $FC5SE
172 LDA #0 233 JSR CLOCHF,
173 STA CH 234 JSR CR
174 LDA #20 235 JSR CR
175 STA CV 236 LDA #RECMSS
176 STA $22 237 LDY /RECMSS
177 LDA #24 238 JSR AFFICH
Ne
28 Pom's n° 20
239 DEC FINFLG
240 UMP MENU
241 ;
242 RECMSS HEX 26
243 BLK "ERTSIGERNE SAP ZEVA'N SUOV :
NOITNETTA"
244 ;
245 OKFIN LDx #$00 + 256 BOUCLES
246 PAGO LDA $7800,x
247 STA $00,X
248 DEX
249 BNE PAGO
250 ;
251 JSR $FCS8
252 LDA #MESSAG
253 LDY /MESSAG
254 JSR AFFICH
255 JSR CLOCHE
256 JSR CR
257 3
258 OMP $3D0 + RETOUR BASIC
259 MESSO STR" : RURTCEL ED OREMUN"
260 ;
261 MESSAG STR "RECNALER RUOP s@"
262 ;
263 MESS1 STR" : XIOHC ERTOV@ ENIMRE]T[
ERUTIRCEE}R[ REIFTNO]M[ NOITIDJE[
ERUTCE]L[ | TNEMEGRAH]C[“
264;
265
266
267 LECTURE DU RUFFER
268
269
270: 3
271 LECTUR LDA #MESS2
272 TDY /MESS2
273 JSR ARF ICH
274 REP2 LDX #$03
215 LDA #LECTUR-1
276 LDY /LECTUR
277 JSR SAISIE
278 ;
279 7
280 ;
281 LDA #0
282 STA LECFLG
283 TEST LDA Cl
284 cLe
285 anc C2
286 SEC
287 SBC #$02
288 STA NBSECT 3 C1+C2-2 ->
NOMBRE DE SECTEURS A LIRE
289 UDA SECT
290 CMP NBSECT
291 BCS ONLIT # I < C1+#C2-2
292 3 ----------------------------------
293 ; DEPASSEMENT DU NOMBRE DE SECTEURS
294 ;----------------------------------
295 LDA CV
296 CMP #20
297 BCS M3
DEJA POSITIONNEE
298 LDA CV
299 STA CVANT
300 LDA #0
301 STA CH
302 LDA #20
303 STA CV
304 STA $22
305 LDA #24
306 STA $23
307 JSR SFC58
308 M3 JSR CLOCHE
309 LDA #MESS3
310 LDY /MESS3
311 JSR AFFICH
312 LDA #0
313 LDX SECT
314 INX
315 JSR LINPTR
316 LDA #MESS3B
317 LDY /MESS3B
318 JSR AFFICHE
319 JSR CR
320 JSR CR
321 JMP LECTUR
322 ONLIT LDA LECFLG
323 BNE ONLIT2
324 JSR WINDOW
325 DEC LECFLG
326 ONLIT2 JSR CR
327 DEC Cl
328 LECT2 LDA #00
329 STA F
330 STA FLAG2
331 NUMERO LDA Cl
332 ASL
333 ASL
334 ASL
335 SEC
336 SBC Cl
337 cLe
338 ADC #01
339 cLC
340 ADC F
341 STA NUMFIC
342 PRTITL TAX
343 LDA #0
344 JSR LINPTR
345 LDX #2
346 JSR PRBL2
347 LDA #$4
348 STA CH
349 LDA /ORIG
350 CLC
351 apc cl
352 STA SCF
353 LDA F
354 ASL
355 ASL
? FENETRE MENU
#AFFICHE SECT
7C1=C1-1
3F=0
7#O=LIRE 1 SECT
# A->C*7
¢ A->F+1+7*C
AFF X=2 SPACE
Pom's n° 20
29
357
358
359
360
361
362
363
364
365
366
36/
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
38/
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
4ll;
412. MRSS?
TE RUETCES
4137
414 MESS3
415 MESS3B
PRESEN
MOINS
BCLA
CONT
STR
rel
STR
STR
3 -F*32
F
F
4 :
#ORIG+9
SCE
#500
(SCE, X)
MOINS
4#SFF
MOINS
#530
PRESEN
#"6"
MOINS+2
ent
MOINS+2
geen
VIDOUT
cH
#S1E
#503
(SCE),Y
VIDOUT
$CE
F*35
COMMENTALRE
oMP
FICH PRESENT
FICH EFFACE
30 BOUCLES
BCLA
FLAGZ
CONT
#0=LIRE 1 SECT
;SINON, ->MODIF
#$8D
CTRL.S 3
FE } BHPEL
¥
#807
NUMERO
cl z
NBSECT
cl
> 845
LECT2
cR
#SA0
KEYIN
eo
+441
cl
#801
c2
TEST
MENU
“: ERIL A SRUETCES ED ERBMON
UD oN”
" TNEMELUES"
"SRUETCES "
416
417
418
419
422 3
423 EDIT JSR CR
424 LDA #$06
425 STA Cll
426 M4 LDA #MESS4
427 LDY /MESS4
428 JSR AFFICH
429 ;
430 7
431:
432 7
433°;
434 LDA #" "
435 JSR KEYIN
436 PHA
437 JSR VIDOUT
438 PLA
439 CMP #"D"
440 BEQ DEPLAC
441 CMP #"E"
442 BEQ ECHNGE
443 JSR BELL
444 UMP EDLY
445;
446 ;
447 ;= _
448 DEPLACEMENT =
449
450
451
452
A453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
A471
472
473
474
475
476
DEPLAC JSR CR
JSR CR
LDA #MESSS
LDY /MESSS
JSR AFFICH
MS
SAISIE DE LA REPONSE
LDX #$05
LDA #M5-1
LDY /MS
JSR SAISIE
30
Pom's n° 20
————————————
477 STX C1 538 ;
478 ; 539 BCL5 LDA Cl
479 OVER? SEC 540 JSR ADRESS
420 SBC Cl 541 LDA #$00
481 STA BOUCLE 542 STA A4L
482 543 LDA #546
483 544 STA A4H
484 ; TESTE SI DEPASSEMENT DE NUMMAX 545 LDY #$00
485 ; PAR LA ZONE DE RECEPTION 546 JSR MOVE
486 ;--------------------------------- 547 LDA DESTL
487 ; 548 STA A4L
498 LDA NBSECT 549 LDA DESTH
499 cLe 550 STA A4H
490 ADC BOUCLE 551 LDA c2
4 491 CMP NUMMAX 952 JSR ADRESS
492 BEQ MONTE? 7 =NUMMAX 553 LDY #500
493 BCC MONTE? 3; <NUMMAX 554 JSR MOVE
7 494 JSR CLOCHE 555 LDA #$00
495 aMP MS 556 STA AlL
496 ; 957 LDA #$46
497 MONTE? JSR WINDOW 558 STA AlH |
498 LDA Cl 559 LDA #$22
499 CMP NBSECT 560 STA A2L
500 BCS MONTEE 7 C1>c3 561 LDA #$46
501 ; 562 STA A2H
502 LDA c2 563 LDA DESTL
503 STA Cl fF C1=C2 564 STA A4T,
504 LDA NBSECT 565 LDA DESTH
505 cLe 566 STA A4H
506 ADC BOUCLE + C3=C3+BOUCLE 567 LDY #$00
507 MONO STA c2 7 C2-¢3 568 JSR MOVE
508 INC BOUCLE 569 LDA C1
509 UMP BCLS 570 CMe C2
510 MONTEE LDA NBSECT 571 BCS POS
S11 BNE MONO + OMP 572 DEC C1
512 ; 573 DEC c2
513 574 IMP POS+4
514 575 PUS INC Cl
515 ECHANGE - 576 INC c2
516 = 9577 DEC BOUCLE
517 578 BNE BCLS
518 ; 579 JSR CR
519 ECHNGE JSR CR 580 INC C
520 JSR CR 581 LDA C
521 M6 LDA #MESS6 582 STA Cl
522 LDY /MESS6 583 LDA #$01
523 JSR AFFICH 584 STA C2
524 ; 585 UMP TEST ; VERS LECTURE
525 #-----~-~-- ~~--------------------- 586 MESS4 STR" : XIOHC ERTOV@@ENOZ ENU'D
526 SAISIE REPONSE TNEMECALPED - ]D[ @EGNAHCE - JE["
$27 pono nnn nn 587 ;
528 ; 588 ;
529 REP6 LDX #$03 589 MESSS STR “: NOITANITSED AL ED .PUS
530 LDA #M6-1 ETIMIL AL TERECALPED A ENOZ AL ED SETIMIL SEL
531 LDY /M6 2ERTNE"
532 JSR SAISIE 590 7
533 LDA #$01 ? 1 BOUCLE 591 ;
534 STA BOUCLE 592 MESS6 STR ": RECALPED A REIHCIF ED .oN
535 JSR WINDOW SEL ZERTNE”
536 : 593 ;
537 j -------------------- 594
Pom's n° 20 31
695: y= = 655 LDY /MESS9
596 ;= MODIFICATION DES TITRES = 656 JSR AFFICH
597 5= 657 LDA #" "
§QQ ;aasaaaaaenaaaaaaaaaasaaasaaaaaaa= 658 JSR KEYIN
599 ; 659 cMP #"0"
600 MODIF LDA #MESS7 660 BEQ OUI? :PEUT-ON EFF
601 LDY /MESS7 661 CMP #"0"
602 JSR AFFICH 662 BEQ OUI? : IDEM
603 ; 663 LDA #"N"
604 664 JSR VIDOUT
605 665 LDA #"0" + ON NE VEUT
606 PAS EFFACER
607 666 JSR VIDOUT
608 LDX #01 667 LDA #"N"
609 LDA #MODIF-1 668 JSR VIDOUT
610 LDY /MODIF 669 JSR CR
611 JSR SAISIE 670 OMP FINI ; VERS LECTURE
612 JSR WINDOW 671;
613: 672 OUL? LDA #"0”
614 673 JSR VIDOUT
615 ; CALCUL D'ADRESSE 674 LDA #"U"
616 675 JSR VIDOUT
617 ; 676 LDA #"T"
618 LDA C1 677 JSR VIDOUT
619 JSR ADRESS ; DEBUT EN 678 JSR CR
DESTL, DESTH 679 LDY #$00
620 JSR CR 680 LDA (DESTL),Y
621 ; 681 BEQ *+6 :
622 ; = 682 CMP #$23
623 ; AFFICHAGE DU TITRE A MODIFIER 683 BCC NON A <35
CN secre eee ere Se 684 LDA #SFF ICH SUPPRIME
625 3 685 STA (DESTL),Y
626 MB LDA #MESS8 686 LDY #$03
627 LDY /MESS8 687 BNE BCL10-2 ; OMP
628 JSR AFFICH ;NOUVEAU TITRE 688 NON JSR CR
629 JSR CR 689 JSR CR
630 ; 690 M10 JSR CLOCHE
631 LDA #SFF 691 LDA #MESS10
632 STA FLAG? 3 SFF=1 TITRE 692 LDY /MESS10
633 LDA C1 693 JSR AFFICH 7 ON NE PEUT
634 STA NUMFIC + No DU TITRE PAS EFFACER
635 LDA C 694 JSR CR
636 STA C1 7 No SECTEUR 695 JMP MENU
637 LDA NUMFIC 696 BCL? CPX #$21 72633 2
638 JSR PRTITL 697 BCC X<33
639 ; 698 LDX #820 7X=32
640 699 X<33 SIX C1 ;SAUVE X
641 ;--------------------------------- 700 7
642 ; SAISIE DE LA CHAINE 701
643 ; 702
644 | 703
645 LDA #6 704
646 STA CH 705 LDY #$00
647 LDA #$80 ¢ CARACT NUL 706 TDA (A1L),Y
648 JSR GETLIN 707 BEQ COMMEN
649 ; 708 CMP #§30 ;COMMENTAIRE ?
650 ; TEST 709 BEQ COMMEN
651 7 710 CMP 4SFF ;PICH EFFACE ?
652 TxA 711 BEQ COMMEN
653 BNE BCL7 3 NON VIDE 712 BNE TITRE
654 M9 LDA #MESS9 713 COMMEN LDA #$30
Ne.
32 Pom's n° 20
714 STA (A1L),¥ 3 CODE, 110 = =
POUR FICHIER SUPPRIME MAIS APPARAISSANT TORS 771
D'UN ‘CATALOG’ 772
TiS, ¢ 773
716 TYA 774 ;
717 LDY #$21 7 MISE A 775 ECRIT JSR OK?
718 STA (A1L),Y : ZERO DU 776 JSR CR
719 INY ; NOMBRE DE 717 LDA #$02 } ECRITURE
720 STA (A1L),¥ 7 SECTEURS 778 STA IBCMD
721 LDY #2 779 LDA SECT
722 STA (A1L),Y #COD FICH TEXT 780 STA BOUCLE
723.3 781 LDA #$11
724; 782 STA IBTRK ¢PISTE $11
725 783 LDA #S0F
726 184 STA IBSECT #SECTEUR $F
727 ¢ 785 LDA #$20
728 TITRE LDY #$03 186 STA TRBUFP+1 ; BUFFER
729 LDX #$00 787 STA ADR+1
730 BCL9 LDA TN,X 788 LDA #0
731 STA (A1L),¥ 189 STA IBBUFP EN $2000
732 INX 790 STA ADR
733 INY 791 RCL11 JSR DOS
734 CPX Cl 792 DEC BOUCLE
735 BCC BCL9 # X<C1 793 LDA BOUCLE
736 ; 194 CMP #SFF
737 --------------------------------- 795 BEQ END
7138 ; COMPLETE LE TITRE AVEC 7196 INC IBBUFP+1
739 ; DES BLANCS ( MAX. 30 CARACTERES) 197 Lpy #1
740 ;--------------------------------- 798 LDA (ADR),Y #No PISTE
741 ; 799 STA IBTRK
742 LDA #" 800 INY
743 BCL1O CPY #821 801 LDA (ADR),¥ 7No SECTEUR
744 BCS FINI # Y>=30 802 STA 1BSECT
745 STA (A1L),¥ 203 INC ADR+1
746 iny 804 UMP BCL11
747 BNE BCL10 3 OMP 805 ;
748 FINI INC C 806 ;
749 LDA C 807 ;
750 STA Cl 808 ; FIN D'ENRECISTREMENT
751 LDA #$01 809 ;
7152 STA C2 810 ;
753 JSR CR 811 END JSR WINDOW
754 UMP TEST #VERS LECTURE 812 JSR SFC38
755 3 813 JSR CR
136 ; 814 LDA #MESS13
757 MESS7 STR “: REIFIDOM A ERTIT UD OREMUN" 815 LDY /MESS13
158 : 816 JSR AFFICH
‘159: 3 817 JSR CR
760 MESS8 STRT!... hee ebeweeleeeed 818 LDA #5FF
819 STA FINFLG
761 ; 820 UMP MENU
162: ¢ 821;
763 MESS9 STR “: N/O ? ERTIT EC RECAFFE 822 MESS11 HEX 0C
SUOV-ZELUOV" 823 INV " .ON RUETCEL"
764 ; 824:
765 ; 825 MESS12 HEX 19
766 MESS10 HEX 21 + LONG MESSAGE 826 INV " : )N/O/2/1( ZEMRIFNOC - *
767 BLK "EMIRPPUS NON REIHCIF : 827 ;
ELBISSOPMI* 828 MESS13 STR “ENIMRE'T TNEMERTSIGERNE”
768 : 829
769 ; 830 ;
m4
Pom's n° 20 33
831
832
833
834
835
836
837
840
841
842
843
844
845
846
B47
848
849
850
B51
5
Showing the first 100000 of 247562 characters.