Skip to main content

magazine poms20

  • PublicationApple Periodicals
  • Pages76
  • Sourcemagazine_poms20.pdf
← Magazines magazine poms20
/ 76
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
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.

mp.ls