03.07.2013 Views

Magazine Pom's : la collection

Magazine Pom's : la collection

Magazine Pom's : la collection

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UFS permet de fusionner deux tables<br />

de shapes cl' origines différentes en<br />

une seule, en renumérotant les<br />

shapes de <strong>la</strong> seconde dans <strong>la</strong> succession<br />

de celles de <strong>la</strong> première, et dispense<br />

ainsi d'alterner les deux tables<br />

comme on le ferait avec les deux<br />

POKEs c<strong>la</strong>ssiques (POKE 232,<br />

Adresse Basse et POKE 233, Adresse<br />

Haute) si l'on avait voulu utiliser<br />

deux tables de shapes avec un<br />

même programme.<br />

La logique des opérations se déduit<br />

naturellement de <strong>la</strong> structure d'une<br />

table de shapes de ]' Applesoft, que<br />

l'on peut rappeler id en quelques<br />

mots.<br />

Le manuel de référence de ]' Apple Il<br />

(page 95) illustre cette structure par<br />

un shéma représentant une table 00<br />

l'on distingue trois parties :<br />

1 - La taille de <strong>la</strong> table occupe les<br />

deux premiers octets. Toutefois,<br />

comme cette taille est limitée à 255,<br />

seul le premier octet est effectivement<br />

utilisé.<br />

2 - La table d'adresses occupe autant<br />

de fois deux positions qu'il y a de<br />

shapes dans <strong>la</strong> table. Le premier<br />

octet, comme il se doit, contient <strong>la</strong><br />

partie basse de l'adresse de <strong>la</strong> shape<br />

correspondante, le second <strong>la</strong> partie<br />

haute.<br />

3 - Comme dans <strong>la</strong> table des adresses,<br />

les shapes se suivent dans l'ordre<br />

de <strong>la</strong> numérotation uti lisée par<br />

les instructions DRAW et XDRAW et<br />

elles forment <strong>la</strong> troisième partie de <strong>la</strong><br />

Programme UFS<br />

100 HIMEM : 8191<br />

110 Dl 0 16384<br />

120 DS 0 CHR$ (41<br />

130 REM<br />

140 HOME<br />

FUSION DE SHAPES<br />

PAR DENIS SUREAU<br />

150 LIST 130:A 0 912:<br />

: REM SCROLL<br />

Fusion de tables de shapes<br />

table. Chaque shape est terminée par<br />

un O.<br />

Partant de là, fusionner deux tables<br />

revient au traitement suivant :<br />

1 - Additionner les nombres de<br />

shapes et p<strong>la</strong>cer le résultat obtenu au<br />

début du nouveau module.<br />

2 - Mettre bout à bout les deux<br />

tables d'adresses en rectifiant leurs<br />

valeurs. Ce sont bien sOr des adresses<br />

re<strong>la</strong>tives qui se comptent par rapport<br />

au début de <strong>la</strong> table de shapes.<br />

Les adresses dans <strong>la</strong> première table<br />

sont augmentées de <strong>la</strong> taille de <strong>la</strong><br />

partie 2 de <strong>la</strong> seconde qui s'intercale<br />

entre les parties 2 et 3 de <strong>la</strong> première.<br />

Les adresses de <strong>la</strong> seconde<br />

table sont augmentées des tailles des<br />

parties 2 et 3 de <strong>la</strong> première.<br />

3 - Après les deux tables d'adresses,<br />

on met bout à bout les deux blocs<br />

de shapes.<br />

Le petit schéma qui suit devrait aider<br />

à mieux suivre les calculs effectués<br />

par le programme.<br />

TABLE 1 TABLE 2 FUSION<br />

1) Taille 1) TaUle 1) Taille<br />

NI prend 2 N2 prend 2 N3=NI +N2 sur<br />

oct •• - 20ctru<br />

2) Adresses 2) Adresses 2) Adresses<br />

Nh2 octets N2.2 octets (NI+N2).2<br />

.,<br />

3) Si<strong>la</strong>pes 3) Shapes 3) Shapes<br />

X1 _ X2 oc Xl+X2 octets<br />

Le programme<br />

principes en<br />

160 PRINT "DONNEZ '1' POUR AVOIR LE CAT<br />

170 REt!<br />

ALOGUE": PRINT<br />

CHARGE SHAPE TABLE 1<br />

180 INPUT "NOM DE LA ST 1#1 :";31$<br />

190 IF Sl$ = " 1" TH EN PRINT CHR$ (4)"<br />

CATALOG": GOTO 180<br />

200 PRINT OS"BLOAO"31$" , A"D1<br />

<strong>Pom's</strong> n° 9<br />

met en oeuvre ces<br />

essayant de tenir<br />

210 LI 0 PEEK (43616)<br />

220 REM<br />

256<br />

par Denis Sureau<br />

compte des particu<strong>la</strong>rités des éditeurs<br />

de shapes existants quant aux tables<br />

qu'ils produisent. Des octets sans<br />

emploi peuvent s'intercaler entre<br />

deux parties normales d'une table,<br />

aussi calcule-t-on les points de départ<br />

de chaque champ sans les présupposer<br />

sur <strong>la</strong> position suivant directement<br />

le champ précédent.<br />

Notons que certains de ces éditeurs,<br />

et parmi les meilleurs, ne permettent<br />

de produire qu'un nombre limité de<br />

shapes, ce qui fait l'intérêt du présent<br />

programme à leur endroit.<br />

Pour utiliser le programme, insérez <strong>la</strong><br />

(les) disquette(s) contenant les deux<br />

tables de shapes lorsque le programme<br />

demande leurs noms pour<br />

les charger. En appuyant sur "?" puis<br />

RETURN, on obtient un catalogue<br />

préa<strong>la</strong>ble. La fusion s'opère sans intervention<br />

et le programme demande<br />

ensuite sous quel nom doit être<br />

sauvé le module. Insérez <strong>la</strong> disquette<br />

qui doit le contenir avant d'en donner<br />

le nom. En appuyant seulement<br />

sur RETURN, on annule J'opération.<br />

Le nombre de shapes correspond<br />

théoriquement au total des shapes<br />

contenues dans les deux tables primitives;<br />

ce<strong>la</strong> peut toutefois s'avérer<br />

inexact car certains éditeurs Inscrivent<br />

un nombre forfaitaire de shapes.<br />

N.D.L.R. : les fichiers fusionnés doivent<br />

être "effectivement" des tables<br />

de shapes, sous peine d'erreurs Applesoft,<br />

voire pis encore ...<br />

CHARGE SHAPE TABLE 2<br />

• PEEK (43617) •<br />

230 INPUT "NOM DE LA ST #2 :":S2$<br />

240 D2 0 Dl • LI<br />

250 PRINT DS"BLOAD"S25",A"D2<br />

260 L2 0 PEEK (43616 ) . PEEK (43617) •<br />

270 REM<br />

25.<br />

CALL " CALL A CALCUL. D'ADRESSES<br />

2aO 03 0 02<br />

• L2<br />

290 REM ARRONDI DE 03:<br />

300<br />

310<br />

D3<br />

NI<br />

320 N2 0<br />

330 SI<br />

340 52 0<br />

0 INT<br />

0 PEEK<br />

( (03 • 100) / 100) • 100<br />

(DU<br />

PEEK (02 )<br />

PEEK (Dl<br />

• 256<br />

• Dl<br />

PEEK (02<br />

Il 256 .. D2<br />

21 • PEEK (Dl<br />

• 2> PEEK (D2<br />

350 S3 = 03 .. 2 .. N1 • 2 .. N2 Il 2<br />

• 31<br />

• 31<br />

19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!