Skip to main content

magazine poms15

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

Showing the first 100000 of 293195 characters.

mp.ls