Skip to main content

Full text of "magazine poms11"

See other formats






La revue francophone des utilisateurs de I'Apple 



Faites parler et chanter 
votre Apple II 

Des POKES a gogo 

Tris rapides de tableaux 
Initiation a I'assembleur 
Le Macintosh est arrive ! 




NUMERO 1 1 • PRIX 40 F 



ISSN : 0294-6068 



NE PERDEZ PLUS VOTRE TEMPS 

DISQUETTEZ 

VOUS 




14 LIVRES ET LEUR DISQUETTE 
POUR VOTRE APPLE II 

POUR APPLE II, II PLUS, He 
VISICALC SUR APPLE II • MATHEMATIQUES ET STATISTIQUES • LA PAIE ET SES ANNEXES 

MODELES PRATIQUES DE DECISION (2 TOMES) • LE BASIC ET L'ECOLE (2 TOMES) • 
METHODES DE CALCUL NUMERIQUE (2 TOMES) • BIBLIOTHEQUE SCIENTIFIQUE EN PASCAL 
• NOUVELLE COMPTABILITE SUR APPLE II (TOME 1) • MODELES D'EXPRESSION GRAPHIQUE 
• OUTILS FINANCIERS ET COMPTABLES • L'APPLE ET SES FICHIERS 

POUR TOUT BENSEIGNEMENT TELEPHONEZ AU (6) 006 44 35 
OU ECRIVEZ A P.S.I. DIFFUSION BP 86 77402 LAGNY S MARNE CEDEX 





pom's n it 



Sommaire 


Pa op 

■ aye 


I pinnanp * 


NJiiroAll * * 


L<UllUIiai LJOi 1 Icl Vc 1 Ill/Hi/. 


C 

o 






I <> R*%vAi*n nsr fiilltjc; I nai innoaiin Ijiit™iiii> 
uavaiu pai vjiiieo v_-i iayyi !fc>auu - L-'Upuy 


7 


D-r\ 


T 
1 


I [np actiiri* nniif Giinnrimor lot RFMc y~\z>y C^ixxi <~\ ' ] — 1 <orV"\o r~r~i <~> n t 
wilts aaLUtt pUUl stujJgJI Sllltsl IVLl'la pal vj Uy U rifeJIUcIIlOIll 


Q 


R 


T 
1 


Apprentissage de 1'assembleur par Gerard Michel 


10 


A 


D-T 


Des POKEs a gogo par Roland Jost 


15 




P-T 


Un programme de menu par Gilles Mauffrey 


18 


B-A 


M-T 


Les logiciels de traitement de texte par Guy Lapautre 


20 




T 


Gutenberg a 1'essai par Guy Lapautre 


21 




T 


Pommesoft par Philippe Faure 


24 


B-A 


P-T 


Comparaison de programmes en langage-machine 

par Denis Sureau 


33 


A 


P-T 


Deux produits nouveaux pour les lecteurs de Pom's 


37 






L'obtention de l'extremum absolu des fonctions de 
piusieurs* vanaoies par r\. ouuiez ei i . ■^-nerruauii 


tu 


D 

o 


D 

r 


vii iiieiiu a let Lai lc pai l v lli-l 1*21 V_-I11IHJ!1L 




p 


T 
1 


All IQUIUC Cll U33CI1IU1CUI pai V_J ClOI U liiyaUU 


4.7 


R A 


P T 


fcnets stroboscopiques par Olivier Herz 


52 


B-A 


T 


MacArticle par Daniel Game 


53 




T 


Magic Window II a 1'essai par Alexandre Avrane 


54 




1 


Comparaison de programmes Applesoft par Gerard Michel 


57 


B-A 


P-T 


Bibliographie par Alexandre Duback 


61 






Micro-informations par Guy Lapautre 


63 






Un « Type Ahead » en Applesoft par Olivier Herz 


65 


B-A 


P-T 


Courrier des lecteurs par Olivier Herz 


68 






Trace de courbes en conversationnel par Gilles Mauffrey 


71 


B-A 


M-T 



Trues et astuces 14-46-59-66 



* Langage : B(asic) - A(ssembleur) - P(ascal). (B) signifie : relatif au BASIC. 
** Niveau : D(Sbutant) - M(oyen| - P(rofessionnel) - T(ous). 

P-T signifie : programme utilisable par les debutants, mais dont la comprehension est de niveau "Professionnel". 



Les annonceurs 

ACER MICRO : p. 6 - APPLE : p. 38-39 - B.F.I. : p. 62 - SERVICE CALVADOS : p. 30 31 32 - CEDIC-NATHAN : p. 75 - 
HELLO : p. 73 - IMAGOL : p .68 - MICRO-PERIPH : p. 56 - L'ORDINATEUR INDIVIDUEL : p .60 - PENTASONIC : p .76 - 
P.S.I. Diffusion : p. 2 - TELECOMPO : p .34 - SATELCOM : p .26 - SICOB : p. 4 - SYBEX : p. 70 



Editions MEV - 49, rue Lamartine - 78000 Versailles 

Directeur de la publication : Herve Thiriez. Imprimerie Rosay, 94300 Vincennes. lmprime en France. Depot legal : 1" trimestre 1984. 



Pom's n° 11 



UNSICOB 

TRES SPECIAL. 



PROGICIELS, 
MINI, MICRO-ORDINATEURS 

I (JOURNEES GRAND PUBLIC : 18 ET 19 MAI) 

~ ^ISICOB 

£ Information : SICOB (1) 261.52.42 - 4, place de Valois - 75001 Paris 1 



4 



Pom's n° 11 



Editorial 



Des son lancement. Pom's a promts le passage en bimestriel des que le nombre d'abonnes passerait le 
cap des 2000. Nous avons atteint cet objectif en decembre (deux abonnes sur trois recoivent en outre 
les disquettes). et nous tenons notre promesse : a partir de mars, vous aurez six numeros par an. a la 
fin de chaque mois impair. Le tirage augmente egalement. de 7000 exemplaires actuels (tous vendus) a 
12000. afin de pouvoir vous offrir Pom's en kiosque. De nombreux lecteurs nous disent avoir du mal a 
trouver Pom's dans les boutiques de micro-informatique : si c'est le cas. n'oubliez pas de demander a 
votre revendeur d'en commander: sinon. cela ne s'ameliorera pas ... 

Cette fois-ci. Olivier Herz nous a bien quitte pour ie Japon. apres trois mois de faux departs. Heureu- 
sement. il nous a laisse queiques contributions "posthumes" que nous vous faisons partager avec plaisir. 
Vous trouverez dans ce numero son programme de "Type ahead", qui permet le stockage et la memo- 
risation des touches que vous enfoncez dans un "buffer ": bel utilitaire pour les stakhanovistes du 
clavier. 

Nous sommes heureux d'accueillir (enfin) un journaliste non informaticien en la personne de Daniel 
Garric (la page "Futurs" du Point), auteur des "Dossiers du Futur". Daniel a decouvert le Macintosh 
en avant-premiere et il vous raconte "son " Macintosh. 

Grace a Gilles Chaygneaud. la disquette de Pom's est "parlante" pour la premiere fois. Vous pourrez. 
avec son programme et un simple magnetocassette. enregistrer de la parole ou des chansons dans 
I'Apple qui vous les restituera ensuite a la demande. Sonorisez enfin vos programmes Basic: vous 
'blufferez" tout le monde. Apres queiques essais et reglages. vous parviendrez a d'excellents resultats. 
La disquette etant deja pleine de programmes, nous n'avons pas pu. helas. mettre divers exemples de 
sonorisation. 

line contribution inhabituelle pour Pom's en la personne d' Alienor, presentee par A. Guillez et Y. 
Cherruault Cet article devrait interesser particulierement nos lecteurs scientifiques. et il demontre pour 
le moins que I'Apple trouve a s 'employer dans les domaines les plus divers. 

Dans un registre plus large. Guy Lapautre a teste pour vous le traitement de texte Gutenberg et 
Alexandre Avrane a fait de meme pour Magic Window. 

Gilles Mauttrey vous propose un programme tres simple a utiliser pour tracer des fonctions en haute- 
resolution et Gerard Rigaud presente une routine complete de tri de tableaux. Roland Jost vous 
donne pour sa part une longue liste de POKEs en tous genres. Vous pourrez egalement rendre I'Apple 
polyglotte avec le Pommesoft de Philippe Faure. 

Enfin. la comparaison de programmes en assembleur ou en Applesoft vous sera grandement facilitee 
par les articles de Denis Sureau et Gerard Michel, qui reprend egalement une rubrique d'initiation a 
I'assembleur. 

Nous aurons ioccasion de nous rencontrer deux fois dans un avenir proche : au Special-Sicob (palais 
du CNIT - La Defense), du 14 au 19 mai. ou nous occuperons le stand 630 (niveau 3. zone F). puis la 
semaine suivante a Micro-Expo, du 22 au 26 mai. ou nous aurons le stand N44. Vous pourrez venir 
nous ramasser a la petite cuillere le 26 a la cloture ...A bien tot done ! 

Herve Thiricz 



Ont collabore a ce numero : Alexandre Avrane - Gilles Chaygneaud-Dupuy - Y. Cherruault - Michel Crimont - Guy d'Herbemont - 
Alexandre Duback - Philippe Faure - Danier Garric - A. Guillez - Olivier Herz - Roland Josl - Guy Lapautre - Gilles Mauffrey - Gerard 
Michel - Gerard Rigaud - Denis Sureau - Herve Thiriez. Redacteurs : Alexandre Avrane - Gerard Michel. Dessins : Laurent Bidot. 
Directeur de la publication - redacteur en chef : Herve Thiriez. Siege social : Editions MEV - 49. rue Lamartine - 78000 Versailles - 
Tel. . (3) 9->1.24.43. 

Diffusion N.M.P.P. - Sophie Mamez - Tel. : (1) 240.22.01 

Composition : Tilecompo - 13-15. avenue du Petit Pare - 94300 Vincennes - Tel. : 328.18.63 
Impression : Rosay - 47. avenue de Paris - 94300 Vincennes - Tel. : 328. 18.63 ' 



Pom's n° 11 



5 



RENDEZ VOTRE APPLE * ENCORE "PLUS" 

Cartes et accessoires additionnels compatibles APPLE II 



FLOPPY-DRIVE POUR APPLE 




•APPLE esl une marque d6pose> et appartiertl a APPLE COMPUTER S.A. 



CONDITIONS GENERALES DE VENTES PAH CORRESPONDANCE 

Pour eviier les frats de conire-remboursemeni nous vous conseiilons de (ftgler vos 

commarvdes mlegralemem (y compns frats de port) FORFAIT OE PORT 25 F. 



ACER MICRO 

42, rue de Chabrol, 75010 Paris. 
Tel. 770.28.31. 




Saviez-vous que votre Apple peut 
dire quelques mots, sans aucune pro- 
these. pour peu que vous les lui ap- 
preniez ! 

Cela est possible grace au systeme 
"Le Bavard", qui se compose d un 
petit module en langage machine et 
d'un programme en Applesoft ser- 
vant d'editeur. 

Le module PARLE 

Le programme source a ete ecrit 
avec l'assembleur Dos Tool Kit. 
Ce module permet de mettre sous 
forme numerique des mots prealable- 
ment enregistres sur un magneto- 
phone et de les stacker en memoire. 
Une deuxieme sous-routine (voir le 
programme d'edition) permet de res- 
tituer les sons a differentes vitesses. 
soit sur le haut-parleur de l'Apple. 
soit sur un amplificateur exterieur. 

La restitution n'est pas toujours tres 
intelligible sur l'Apple. car ce dernier 
ne dispose que d'une seule voix 
pour sortir 1' ensemble des frequences 
simultanees. 

Le programme 
"BAVARD" 

II vous propose plusieurs fonctions : 

1 - Enregistrer un texte en memoire 
a partir dun magnetophone 
connecte a l'Apple. Le magneto- 
phone etant sur ecoute. il suffit de 
taper une touche quand arrive le 
texte voulu. puis d'arreter le stockage 
par la frappe d'une autre touche. 

2 - Ecouter le texte actuellement en 
memoire. 

3 - Stocker sur disquette le texte qui 
se trouve en memoire sous forme 
d'un fichier binaire dont vous devez 
preciser le nom. 

4 - Relire en memoire un texte prea- 
lablement stocke sur disquette. 



5 - Choisir l organe de sortie qui 
peut etre le haut parleur de l'Apple 
ou un organe exterieur. en passant 
par la sortie magnetophone. 

6 - Editer le catalogue de la disquette 
pour selectionner les fichiers a relire. 




7 - Changer la vitesse de restitution 
des sons, qui peut aller de a 9. 
donnant la voix la plus aigue et 9 la 
plus grave. 

8 - Visualisation des sons enregistres 
en memoire sous forme de courbes 
de frequence, avec en abscisse 
l'adresse de 1' octet et en ordonnee la 
valeur de la frequence vocale que 
contient cet octet. Les silences cor- 
respondent a des zeros en haut de 



Le Bavard 

Giles Chaygneaud-Dupuy 



l'ecran et Ton va de l'aigu au grave 
en allant du haut vers le bas de 
l'ecran. 

II faut donner en parametre l'adresse 
de depart de cette visualisation, 
etant le debut de I'enregistrement. 

Utilisation dans vos pro- 
grammes 

Si vous voulez sonoriser vos pro- 
grammes Applesoft au moyen de 
textes enregistres par "Le Bavard". il 
faut charger par BLOAD le pro- 
gramme PARLEl.OBJ et le fichier 
contenant le texte concerne. Ce der- 
nier peut etre implante n'importe ou 
en memoire. mais il faut en preciser 
l'adresse de depart par un POKE aux 
adresses et 1 avant d'appeler le 
module par CALL 819. Par exem- 
ple : 

PRINT CHR$(4) "BLOAD 
PARLEl.OBJ" 

PRINT CHR$(4) "BLOAD COCO- 
RICO.AS4000" 
POKE 0.0 : POKE 1.64 
CALL 819 

Pour faire varier la vitesse. il faut ef- 
fectuer un "POKE 846. 252 -V" 
avant l'appel du module. V etant un 
chiffre compris entre et 9. 

Pour gerer une table de mots a pro- 
noncer (afin de sonoriser le clavier, 
par exemple). il faut les separer les 
uns des autres dans leur representa- 
tion numerique par un octet conte- 
nant $FF. qui marque la fin de l'en- 
registrement. Indiquez ensuite 
l'adresse de debut du mot voulu 
avant chaque appel au module 
PARLEl.OBJ. ■ 



Programme BAVARD 



REM PROGRAMME " LE BAVARD" 

(APPLESOFT) 

1 PRINT "BLOADPARLE1 .OBJ" 

2 PRINT "BLOADCOCORICO" 

3 FOR I = 2 TO 8 STEP 2: POKE 846 

,254 - I: POKE 0,0: POKE 1,64 
: CALL 819: NEXT 

4 POKE 846,254 - 6 

6 PRINT " BLOADBAVARD . MESS " 
10 TEXT : HOME 

15 INVERSE : VTAB 2: PRINT ":"; SPC< 
12): HTAB 29: PRINT SPC< 12) 
;":": VTAB 24: PRINT ":"; SPC( 
37);":"; 

20 FOR I = 3 TO 23: VTAB I: HTAB 



Pom's n° 11 



1: PRINT - ";: HTAB 40: PRINT 

" " ; : NEXT 
22 VTAB 1: HTAB 15: PRINT ": 

: " : HTAB 15: PRINT " : L 

E BAVARD :":: HTAB 15: PRINT 

" : : " 

30 NORMAL 
35 POKE - 16368,0 

40 HTAB 6: VTAB 6: PRINT " 1 -ENREG 

ISTRER UN TEXTE" 
50 HTAB 6: VTAB 8: PRINT "2-ECOUT 

ER UN TEXTE" 
60 HTAB 6: VTAB 10: PRINT "3-SAUV 

ER UN TEXTE SUR DISQUE" 
70 HTAB 6: VTAB 12: PRINT "4-CHAR 

GER UN TEXTE EN MEMOIRE" 
80 HTAB 6: VTAB 14: PRINT "5-SELE 

CTIONER LA SORTIE" 



90 HTAB 6: VTAB 16: PRINT "6-AFFI 

CHER LE CATALOGUE" 
92 HTAB 6: VTAB 18: PRINT " 7-CHAN 

6ER LA VITESSE D'ECOUTE" 
95 HTAB 6: VTAB 20: PRINT "8-VISU 

ALISER UN TEXTE " 
97 HTAB 6: VTAB 22: PRINT "9-SORT 

IR DU PROGRAMME" 

99 IF N = GOTO 2000 

100 HTAB 35: VTAB 22: GET N 

110 ON N GOTO 1000,2000,3000,4000 

,5000 ,6000 ,7000 ,8000 ,9000 
1000 HOME 

1010 VTAB 10: PRINT "VOUS METTEZ 
VOTRE MAGNETOPHONE EN ROUTE E 
T VOUS APPUYE2 SUR RETURN POU 
R DEBUTER L'ENREGISTR 

EMENT" 

1015 PRINT "PUIS APPUYEZ DE NOUVE 
AU SUR RETURN POUR L'ARR 

ETER . " 

1020 INPUT A* 

1025 POKE 00,00: POKE 01,64 
1030 CALL 768 

1040 FIN = PEEK (01) * 256 + PEEK 
<00) 

1050 LG = FIN - 16384 + 10 
1990 GOTO 10 

2000 POKE 00,00: POKE 01,64 
2010 CALL 819 
2020 N = 1 : GOTO 10 
3000 HOME 

3010 VTAB 10: INPUT "NOM DU FICHI 

ER A SAUVER ? " ;A* 
3020 PRINT "BSAVE" ;A*;" ,A*4000,L" 

;LG 

3990 GOTO 10 
4000 HOME 

4005 VTAB 10: INPUT "NOM DU TEXTE 

A CHARGER ? " ;A* 
4010 PRINT "BLOAD" ;A«; " ,A*4000" 
4020 LG = PEEK (43616) + PEEK (4 



3617) * 256 
4990 GOTO 10 
5000 HOME 

5010 VTAB 10: PRINT "VOULEZ VOUS 

ECOUTEZ VOTRE TEXTE : " 
5020 PRINT * A-SUR L'APPLE" 
5030 PRINT " B-SUR UN AMPLI EXTE 
RIEUR" 

5040 PRINT : INPUT "VOTRE CHOIX ? 
" ;A* 

5050 IF A* = "A" THEN POKE 851,4 

8: GOTO 10 
5060 IF A* = °B" THEN POKE 851,3 

2: GOTO 10 
5070 GOTO 5000 
5990 GOTO 10 

6000 PRINT : PRINT CHR* <4)"CATA 

LOG" 
6015 INPUT A* 
6020 GOTO 10 
7000 HOME 

7005 V = 252 - PEEK (846) 

7010 VTAB 10: PRINT "LA VITESSE E 

ST ACTUELLEMENT DE " ;V 
7020 PRINT : PRINT " A COMBIEN 

LA VOULEZ VOUS ? " ; : GET V 
7030 POKE 846,252 - V 
7040 GOTO 2000 
8000 HOME 

8002 VTAB 22: INPUT "ADRESSE DEBU 
T A VISUALISER " ;A* 

8004 IF A* = "" THEN TEXT : GOTO 
10 

8005 HGR : HCOLOR= 3 

8006 A = VAL (A*) 
8010 FOR I = TO 259 

8020 Y = PEEK (16384 + A + I) 

8025 Y - Y / 255 * 160 

80 30 HPLOT I,Y 

8040 NEXT 

8050 GOTO 8000 

9000 END 



Programme PARLE l.S 


0318:C9 FF 


19 


CNP 


WFF 


DOS TOOL KIT 






031A:DO 02 


20 


BNE 


«4 


0300: 


1 


0R6 


$300 PROGRAtME PARLE 


031C:A9 FE 


21 


LDA 


WFE 


C030: 


2 BRUIT 


EQU 


iC030 


031E:91 00 


22 


STA 


(ADD) ,Y 
ADD 


CO 60: 


3 CASSET 


EQU 


ICQ60 


0320 :E6 00 


23 


INC 


0000: 


4 ADD 


EQU 





0322:00 02 


24 


BNE 


ADD2 


C000: 


5 CLAVIER EQU 


1C000 


0324:E6 01 


25 


INC 


ADD+1 


0006: 


6 SON 


EQU 


$6 


0326 :2C 00 CO 


26 ADD2 


BIT 


CLAVIER 


0007: 


7 FREQ 


EQU 


*7 


0329:30 03 


27 


SMI 


FIN 


0300: AO 00 


8 DEBUT 


LDY 


10 


032B:4C 00 03 


28 


JNP 


DEBUT 


0302:84 07 


9 


STY 


FREQ 


032E.-A9 FF 


29 FIN 


LDA 


WFF 


0304:E6 07 


10 


INC 


FREQ 


0330:91 00 


30 


STA 


(ADD) ,Y 


0306 :AD 60 CO 


11 


LDA 


CASSET 


0332:60 


31 


RTS 


0309:85 06 


12 


STA 


SON 


0333:B1 00 


32 DIT 


LDA 


(ADD) ,Y 


030B:AO 60 CO 


13 INF 


LDA 


CASSET 


0335:85 06 


33 


STA 


SON 


030E:45 06 


14 


EOR 


SDN 


0337:C9 FF 


34 


CNP 


WFF 


0310:30 04 


15 


EMI 


SUIVAN 


0339 :F0 F7 


35 


BEQ 


FIN+4 


0312:E6 07 


16 


INC 


FREQ 


033B:2C 00 CO 


36 


BIT 


CLAVIER 


0314:1)0 F5 


17 


BNE 


INF 


033E:30 F2 


37 


EMI 


FIN+4 


0316:A5 07 


18 SUIVAN 


LDA 


FREQ 


0340:48 


38 


PHA 





Pom's n° 11 



ami :tfl 


39 B0UCLE2 NOP 




035B:4C 33 03 57 


JHP 


0342:EA 


40 


NOP 




0352: AD 30 CO 53 


LDA 


0343:fcA 


A 4 

41 


NOP 






Mild >CA 
UOtJiCH 


A*) 
A1 

43 


iinn 

NOP 

t inn 

NOP 




Recapitulation 






fl A 

44 


NOP 




AAAA An ft a nj ft r\—i • r\ 

0300- AO 00 84 07 E6 07 AD 


60 


f1Q47f CA 
UM/ifcft 


45 


NOP 




0308- CO 85 06 AD 60 CO 45 


06 


(M48:tA 


46 


NOP 




AA4A nn A A p~ I ft -i ft* A j-r- a p- 

0310- 30 04 E6 07 DO F5 A5 


07 




47 


NOP 




AAJ A AA f F n* A A A A pp A ft 

0318- C9 FF DO 02 A9 FE 91 


00 




48 


NOP 




a"«a r- / n«i nn in r* / n*. An 

0320- E6 00 DO 02 E6 01 2C 


00 


U34o:lo U6 


4? 


DEC 


SON 


nolo n A on no 40 nn no An 

0328- CO 30 03 4C 00 03 A9 


FF 


D34D:Dw F2 


50 


BNE 


B0UCLE2 


f\ *\ ft Ad A A / A T"* j a r\ /*\r* A 1 

0330- 91 00 60 Bl 00 85 06 


C9 


034F:68 


51 


PLA 




AAAA VP* P* A P* «\ f\ — — — — — - 

0338- FF F0 F7 2C 00 CO 30 


F2 


0350 :F0 03 


52 


BEQ 


SAUT 


0340- 48 EA EA EA EA EA EA 


EA 


U393:t6 U U 


54 SAUT 


INC 


AAA 

ADO 


AAiA r* A PA PA A/ A / A A ft* A 

0348- EA EA EA C6 06 DO F8 


68 


0357:00 DA 


55 


BNE 


D1T 


0350- F0 03 AD 30 CO E6 00 


DO 


0359:E6 01 


56 


INC 


ADD+1 


0358- DA E6 01 4C 33 03 





Une astuce pour supprimer les REMs 



S'il est vrai que les REMs ralentissent 
et encombrent un programme, il ne 
Test pas moins qu'elles contribuent 
souvent a sa bonne comprehension 
pour quiconque ne I'a pas ecrit. 
La solution consiste done a conserver 
deux versions d'un meme pro- 
gramme, avec et sans commentaires. 
ce qui justifie le besoin d'une proce- 
dure automatique de suppression des 
REMs a l'interieur d'un programme 
en Applesoft. 

Celle que je vous propose repose sur 
un principe ties simple : si Ton rem- 
place tous les codes REM (178) par 
00. le programme n'est plus executa- 
ble mais il se liste normalement sans 
les REMs (le 00 etant interprets 
comme une fin de ligne). II suffit 
done de stacker cette liste dans un 
fichier texte NEW-LIST, et de faire 



"NEW" puis "EXEC NEW-LIST", 
pour recuperer en memoire une ver- 
sion executable du programme, sans 
REMs. qu'il ne reste qua sauvegar- 
der. 

Le programme FAIT SANS-REM liste 
ci-apres construit un fichier SANS- 
REM qui realise les operations sui- 
vantes : 

• Chargement en memoire des 
lignes 60005 a 60096. Ce petit 
programme assure la transforma- 
tion des codes REM et la sauve- 
garde de la liste en resultant dans 
le fichier NEW-LIST. 

• Execution de l'ordre "RUN 
60005" pour effectuer le traite- 
ment ci-dessus. 

• Execution de "NEW" puis "EXEC 
NEW-LIST" pour recuperer en 



Guy d'Herbemont 

memoire le programme original 
modifie. 

Une fois ce fichier construit. ['utilisa- 
tion de la procedure se reduit a : 

• LOAD "Programme a modifier" 

• EXEC SANS-REM 

Un LIST a Tissue des operations 
vous permettra de verifier que les 
REMs ont bien disparu (les ":" qui 
precedent eventuellement les instruc- 
tions REM sont en revanche conser- 
ves), et il ne vous reste plus qu'a 
sauver la version allegee de votre 
programme. 

A noter que les lignes 60005 a 
60096 ne doivent imperativement 
contenir aucune REM et que. bien 
sur, le programme original ne doit 
comporter aucune ligne de numero 
superieur a 59999. ■ 



Programme FAIT SANS-REM 



1 REM PROGRAMME POUR CONSTITUER 

2 REM LE FICHIER EXEC 

3 REM "SANS-REM" 

4 REM ======= — 

10 M = CHRt (13) + CHR* (4):N* = 
•SANS-REM": PRINT D**OPEN*N*D 
*" DELETE " N*D* * OPEN "N*D*° WRITE 
"N* 

20 POKE 33,30: LIST 60005,: PRINT 

"RUN 60005": PRINT "NEW": PRINT 
" EXEC NEW-LIST": PRINT D*"CLO 
SE": TEXT : END 

60005 DEB = 2049 

60010 X = DEB + 3 

60015 X = X + 1 : BYT = PEEK <X> 



60020 IF BYT = THEN GOSUB 6006 
0: ON DEB = GOTO 60070: ON 
DEB < > GOTO 60010 

60027 IF BYT < > 1 78 GOTO 60015 

60030 POKE X,0 

60040 GOSUB 60060: ON DEB = GOTO 

60070 
60050 GOTO 60010 

60060 DEB = PEEK (DEB) + 256 * PEEK 

(DEB + 1 ) : RETURN 
60070 POKE 33,30 

60072 D* = CHR* (13) + CHR* (4): 
N* = "NEW-LIST": PRINT D*"OPE 
N ■ N*D* " DE LETE " N*D* " OPEN " N*D* " 
WRITE"N* 

60080 LIST ,59999 

60090 PRINT D*" CLOSE" 

60095 TEXT : HOME 

60096 END 



Pom's n" 11 



Apprentissage de l'assembleur 

Gerard Michel 



Cet article constitue la reprise d'une 
serie abordee dans les premiers nu- 
meros de Pom's. Si Ton en juge par 
votre courrier, vous etiez nombreux a 
souhaiter le retour d'une rubrique 
consacree a l'apprentissage de l'as- 
sembleur; nous allons done nous ef- 
forcer de vous donner satisfaction, 
conformement aux objectifs de cette 
revue. 

Rappelons tout d'abord. pour eviter 
toute confusion, que l'assembleur est 
deja un langage "evolue". a ne pas 
confondre avec le langage machine. 
En matiere de logiciel (et en simpli- 
fiant). la seule chose que votre Apple 
puisse comprendre sans l'aide du 
moindre compilateur ou interpreteur. 
e'est de l'hexadecimal, autrement dit 
des codes comme ceux que vous 
trouvez dans Pom's a la suite d'un 
programme en assembleur sous le 
titre "recapitulation" (20 CI FB ... 
par exemple). 

Un assembleur est done un langage 
constitue d'instructions plus facile- 
ment comprehensibles que l'hexade- 
cimal, theoriquement plus faciies ega- 
lement a memoriser (pour les 
anglicistes du moins). double d'un 
"traducteur" qui transforme automa- 
tiquement ces instructions en code 
executable par la machine (cette 
operation est • baptisee "assem- 
blage"). C'est pourquoi I on parle 
toujours de programme source (en 
langage assembleur) et de pro- 
gramme objet (en hexadecimal), re- 
sultat de la traduction du premier. 
Cela signifie en particulier que vous 
ne pouvez pas programmer en as- 
sembleur si vous ne possedez pas un 
logiciel "editeur/assembleur" tel que 
LISA, BIG MAC. DOS TOOL KIT 
ou autre, autant de noms qui doivent 
vous etre maintenant familiers si vous 
etes un fidele lecteur de Pom's. Par 
contre. vous pouvez toujours ecrire 
un programme par le biais du code 
hexadecimal, du moins dans un pre- 
mier temps, ne serait ce que pour 
vous faire une idee de ce que pour- 
rait vous apporter l'assembleur. C'est 
pourquoi nous vous donnerons dans 
cet article le code correspondant a 
chacune des instructions presentees; 
de plus, dans toute la mesure du 
possible, nous vous fournirons une 
version des operations realisees sous 
forme d'instructions en Applesoft, ce 
qui devrait aider a I' analyse et a la 
comprehension des mecanismes mis 
en oeuvre, que nous allons aborder 
sans plus attendre. 



Variables et registres 

Comme tous les langages. l'assem- 
bleur permet de travailler sur et avec 
des variables. En premiere approxi- 
mation, une variable est une case 
memoire contenant un octet (deux 
chiffres hexadecimaux), definie par 
son adresse. Ainsi. $6 (soit 6 en deci- 
mal) ou $18 (soit 24 en decimal), 
par exemple, peuvent constituer 
l'adresse d'une variable dans laquelle 
le programme ira lire ou stocker des 
valeurs. Rappelons que. par conven- 
tion, un nombre precede de $ est 
toujours un nombre hexadecimal. 
II est d'ailleurs important de distin- 
guer des maintenant la variable (ou 
l'adresse) et son contenu. Lorsque 
Ton ecrit simplement $18. on fait re- 
ference a la case memoire dont 
l'adresse hexadecimale est $18: si 
l'on ecrit #$18 par contre. on desi- 
gne la valeur $18 (ou 24 en deci- 
mal). De meme. chaque fois qu'une 
instruction de l'assembleur porte sur 
la manipulation d'une variable, c'est 
son contenu qui s'en trouve affecte 
(en BASIC. A=B transfere egalement 
le contenu de B dans A mais ne 
remplace pas le A par un B). 
Notons en outre une difference de 
regime, sur laquelle nous reviendrons 
plus tard. entre les adresses dites 
"page zero" et les autres. Une 
adresse est en page zero si elle est 
inferieure a 256 (de $0 a $FF en 
hexadecimal) et peut done etre re- 
presentee par un seul octet. 

Affectation d'une valeur 

En mode immediat, I'affectation 
d'une valeur a une variable peut se 
faire directement. Supposons par 
exemple que l'on veuille mettre 
#$FF (soit 255 en decimal) a 
l'adresse $18. en partant du BASIC, 
le processus serait le suivant : 

CALL -151 (pour acceder au moni- 
teur) 

*18: FF "RETURN" (letoile est le 
"prompt" du moniteur et est affichee 
par le systeme. le reste doit etre tape 
au clavier, sans oublier les ";"). "RE- 
TURN" signifie tout simplement "Ap- 
puyer sur la touche RETURN". 

Ceci est equivalent a l'instruction Ap- 
plesoft : POKE 24.255 "RETURN". 
Pour lire le contenu de l'adresse $18 
a partir du moniteur. tapez : 
18 "RETURN" 
et la machine repondra : 
*0018-FF 

Vous auriez pu obtenir le meme re- 
sultat (255 en l'occurrence) avec les 



instructions Applesoft : PRINT 
PEEK(24). 

Les operations de lecture/ecriture du 
contenu d'une variable a partir d'un 
programme en assembleur supposent 
l emploi des registres du micropro- 
cesseur car. si l'on peut faire 
"A=255" en BASIC, on ne peut pas 
faire directement "$18=#$FF" en 
assembleur (la definition directe de 
constantes est toutefois possible, mais 
ce n'est pas notre propos pour l'ins- 
tant). Un registre peut se definir 
comme une variable particuliere. 
dont le nom reste toujours le meme. 
que le microprocesseur utilise pour 
communiquer avec la memoire de 
l ordinateur. La "case memoire" cor- 
respondant a un registre se trouve. 
en quelque sorte. dans le micropro- 
cesseur et le programmeur n'a jamais 
besoin de la definir lui-meme. 
Dans ce domaine. trois registres peu- 
vent nous etre utiles : l'accumulateur 
(designe plus simplement par A), le 
registre d'index X et le registre d'in- 
dex Y. Chacun de ces registres peut 
contenir un octet et prendre ainsi 
une valeur comprise entre et 255 
($0 et $FF). 

Si nous nous acharnons toujours a 
mettre #$FF dans la case $18, trois 
sequences d'instructions sont ainsi 
disponibles : 

1) LDA #$FF (A9 FF) 

STA $18 (85 18) 
ce qui signifie "charger accumulateur 
(LoaD A) avec la valeur #$FF" puis 
"stocker la valeur de A (STore A) 
dans la case d'adresse $18". En Ap- 
plesoft, cela pourrait s' ecrire : 
A=255:POKE 24.A 
Les codes entre parentheses ne sont 
pas de l'assembleur mais correspon- 
dent a ce qu'il faudrait taper au cla- 
vier pour rentrer ces instructions di- 
rectement en hexadecimal. Ainsi. A9 
est le code de LDA lorsque celui-ci 
est suivi d'une valeur (FF) et 85 est 
le code de STA lorsque celui-ci est 
suivi d'une adresse en page zero 
(18). Si vous voulez par exemple im- 
planter ces instructions a partir de 
l'adresse $300 (768 en decimal), il 
vous faudra taper, a partir du moni- 
teur (derriere l'etoile de "prompt") : 
300; A9 FF 85 18 "RETURN" 
Si vous tapez ensuite : 
300L "RETURN" 
le systeme vous repondra : 
300-A9 FF LDA #$FF 
302-85 18 STA $18 
plus d'autres choses sans signification 
pour nous et qui dependent de ce 
qui se trouve dans votre Apple a par- 



Pom's n" 11 



tir de Fadresse $304 au moment ou 
vous executez ce test. 
La commande "L" (pour LIST), 
tapee derriere une adresse, demande 
en effet au moniteur d'essayer de di- 
sassembler ies codes hexadecimaux 
stockes a partir de cette adresse pour 
en faire 20 lignes d' instructions en 
langage assembleur. Bien sur. le re- 
sultat en est plus ou moins coherent 
selon les codes rencontres, mais 
n'oubliez pas cette aide que peut 
vous apporter le systeme car elle 
s'avere toujours utile pour le dechif- 
frage de routines dont on ne possede 
pas le programme source. 

2) LDX #$FF (A2 FF) 
STX $18 (86 18) 

Compte tenu de ce qui precede, la 
signification de ces deux instructions 
ne doit plus vous echapper (on passe 
par le registre X au lieu de passer par 
l'accumulateur). 

3) LDY #$FF (AO FF) 
STY $18 (84 18) 

Meme chose avec le registre Y. 

Utilisation d'etiquettes 

Les assembleurs "symboliques" (tou- 
jours LISA. BIG MAC ...). permettent 
de donner un nom. ou une etiquette, 
aux variables. Cela rend le pro- 
gramme source plus parlant et plus 
facile a analyser : L1GNE. par exem- 
ple. est d'une interpretation plus di- 
recte que $C6. En outre, 1'affectation 
d'une etiquette simplifie considera- 
blement la mise a jour d'un pro- 
gramme source si Ton se trouve 
contraint, pour une raison ou pour 
une autre, de modifier l'adresse 
d'une variable. II suffit alors de chan- 
ger la definition de 1' etiquette, alors 
qu'il faudrait autrement rechercher 
tous les endroits ou apparait 
l'adresse concernee pour la modifier. 
D'un assembleur a l'autre. la defini- 
tion de ces etiquettes revet une syn- 
taxe legerement differente. Pour 
notre chere adresse $18. on pourrait 
ainsi avoir : 

ADR EPZ $18 (si on veut l'appeler 

ADR), ou 

ADR EQU $18. ou 

ADR = $18 ... 

C'est a la documentation de votre 
assembleur qu'il faut vous reporter 
pour connaftre la bonne syntaxe. 
Notons simplement qu'une etiquette 
doit toujours etre definie quelque 
part dans le programme source pour 
etre utilisee dans une instruction sans 
provoquer d'erreur a l'assemblage (la 
solution la plus claire consiste a les 
mettre toutes en tete de programme, 
comme le font les auteurs des articles 
publies dans Pom's). 

Pour en revenir a notre exemple. si 
Ton suppose que Ton a baptise la 
case $18 du nom ADR, on pourrait 
ecrire en assembleur : 
LDA #$FF (A9 FF) 



STA ADR (85 18) 

Notez que le nom symbolique n'est 
valable -que pour le programme 
source: le code hexadecimal reste 
toujours le meme et fait reference a 
$18. 

En Applesoft, cela reviendrait a : 
ADR=24:A=255:POKE ADR.A 

Lecture d'une case memoire 

Pour lire le contenu d'une case-me- 
moire. les trois registres peuvent ega- 
lement etre utilises, d'ou trois solu- 
tions disponibles : 

1) LDA $18 ou LDA ADR (A5 18) 

2) LDX $18 ou LDX ADR (A6 18) 

3) LDY $18 ou LDY ADR (A4 18) 

Ces trois instructions reviennent a 
charger respectivement 1'Accumula- 
teur. le registre X ou le registre Y. 
avec le contenu de l'adresse $18. 

Vous aurez sans doute remarque que 
les codes des instructions LDA, LDX 
et LDY ne sont pas les memes que 
lorsqu'on leur donnait directement la 
valeur #$FF. Chaque type d'opera- 
tion possede un code particulier: 
ainsi : 

1) Pour LDA : 

• LDA valeur = A9 valeur (exem- 
ple : LDA #$30 = A9 30) 

• LDA contenu d'une adresse en 
page zero = A5 adresse (exem- 
ple : LDA $24 = A5 24) 

• LDA contenu d'une adresse hors 
de la page zero = AD octet bas 
de l'adresse octet haut de 
l'adresse. 

Lorsqu'une adresse s'ecrit sur deux 
octets, soit 4 chiffres hexadecimaux. 
1' octet bas correspond aux deux chif- 
fres de droite et l'octet haut aux 
deux chiffres de gauche. Par exem- 
ple : 

LDA $300 = AD 00 03 

LDA $FDED = AD ED FD 

C'est une sale manie. mais l'Apple 

prend toujours les adresses a l'envers 

de cette fagon ! 

2) Pour LDX 

• LDX valeur = A2 valeur 

• LDX contenu d'une adresse page 
zero = A6 adresse 

• LDX contenu d une adresse quel- 
conque = AE octet bas octet haut 
(exemple: LDX $40F = AE OF 
04) 

3) Pour LDY 

• AO valeur 

• A4 adresse 

• AC octet bas/octet haut 

Operations sur les regis- 
tres 

Nous ne presenterons pour 1' instant 
que celles qui nous seront utiles pour 
la suite de cet article. 

1) INX (code E8) : incremente X de 



1 (equivalent a X=X+1). 

2) DEX (code CA) : decremente X 
de 1 (equivalent a X=X-1). 

3) INY (code C8) : incremente Y de 
1. 

4) DEY (code 88) : decremente Y de 
1. 

5) TAX (code AA) : transfere le 
contenu de A dans X. sans modifier 
celui de A (equivalent a X=A). 

6) TAY (code A8) : transfere le 
contenu de A dans Y (Y=A). 

7) TXA (code 8A) : transfere le 
contenu de X dans A (A=X). 

8) TYA (code 98) : transfere le 
contenu de Y dans A (A=Y). 

Egal a zero ou different 
de zero ? 

Parmi les instructions de test et de 
branchement disponibles en assem- 
bleur, deux nous seront egalement 
utiles dans un futur immediat : 

1) BEQ (code FO) 

En Applesoft, 1' instruction BEQ serait 

equivalente a IF "dernier resultat"=0 

THEN branchement. 

Si le dernier resultat n'est pas nul, on 

passe simplement a l'instruction sui- 

vante. 

Compte tenu des instructions que 
nous avons deja examinees, nous 
pouvons dire a ce stade que le "der- 
nier resultat" en question correspond 
a la valeur du dernier registre mani- 
pule. Par exemple : 

• Apres LDA $18. BEQ provoquera 
un branchement si $18. et done 
l'accumulateur, contient 0. 

• Apres DEY. BEQ provoquera un 
branchement si Y tombe a 0. 

• Apres TXA. BEQ provoquera un 
branchement si X. et done A. 
contient 

L'endroit vers lequel s'effectue le 
branchement ne pose pas de pro- 
bleme si Ton ecrit un programme 
source en assembleur symbolique. 
Comme pour les variables, il est en 
effet possible de mettre des etiquettes 
en regard des instructions: le bran- 
chement se fait alors par reference a 
cette etiquette (voir plus bas). Si Ton 
travaille directement au niveau de 
l'hexadecimal. il faut alors savoir que 
BEQ ne fait pas de branchement sur 
une adresse. mais en fonction d'un 
deplacement vers le haut ou vers le 
bas. La valeur de ce deplacement 
doit suivre le code F0. Voici quel- 
ques exemples : 

• F0 00 : le branchement se fait a 
l'octet qui suit 00 (si le F0 se 
trouve a l'adresse $300, BEQ 
branchera a l'adresse $302 si le 
dernier resultat est nul). Une telle 
instruction serait done inutile puis- 
que I on arriverait a la meme 
adresse quel que soit le resultat du 
test. 



Pom's n" 11 



• FO 01 : branchement a "adresse 
de FO + 3" 

• FO 02 : branchement a "adresse 
de FO + 4" 

• FO FF : branchement a "adresse 
de FO + 1 " (ce qui provoquera 
une erreur puisque 1'on retombe 
sur FF, qui n'est pas le code d'une 
instruction). La valeur $FF corres- 
pond en fait a - 1 en decimal : 
lorsqu'il "lit" FO, le microproces- 
seur "pointe" aussitot vers I'octet 
suivant (FF en l'occurrence), de 
meme lorsqu'il lit le FF qui recule 
le pointeur de 1 et le ramene 
done sur FF. 

• FO FE : branchement sur I'adresse 
de FO (boucle infinie !) 

• FO FD : branchement a "adresse 
de FO - 1" 

• FO FC : branchement a "adresse 
de FO - 2" 

De maniere generale. si A est 
I'adresse a laquelle se trouve le code 
FO, un deplacement compris entre 
$0 et $7F branchera sur une adresse 
comprise entre A+$2 et A+$81 (+2 
a +129 en decimal), tandis qu'un 
deplacement compris entre $FD et 
$80 branchera sur une adresse 
comprise entre A-$l et A-$7C (-1 
a -124 en decimal). Cela signifie en 
particulier que. a partir d'une adresse 
A, on ne peut effectuer de saut "en 
avant" que jusqu'a A+129, et de 
saut "en arriere" que jusqu'a 
A-124. 

II est clair que tout ceci n'est pas sim- 
ple a manipuler. et Fassembleur sym- 
bolique est vraiment d'un grand se- 
cours pour tout ce qui concerne les 
branchements. car il calcule le depla- 
cement a votre place. 

2) BNE (code DO) 

En Applesoft, BNE pourrait se tra- 
duire par IF "dernier resultat" <>0 
THEN branchement (vous deviez 
vous en douter un peu...). 
Les principes sont identiques a ceux 
qui regissent I'instruction BEQ en ce 
qui concerne le. "dernier resultat" et 
les branchements. 

Les modes d'adressage 

Adressage direct indexe 

Nous avons deja rencontre la techni- 
que d'adressage la plus simple, que 
Ton peut baptiser "adressage ab- 
solu". qui consiste a donner directe- 
ment I'adresse de chaque variable 
(ainsi dans STA $18 ou LDA $06). 

Supposons maintenant que Ton 
veuille mettre la valeur dans les 
adresses $8001 a $800A. Une solu- 
tion consisterait a faire successive- 
ment reference aux adresses $8001, 
$8002, $8003... Ce n'est certaine- 
ment pas la plus economique en 
place-memoire. ni en effort muscu- 
laire au clavier. 



II est heureusement possible d'utiliser 
les registres X et Y pour effectuer ce 
travail a moindre cout (ce qui vous 
expliquera par la meme occasion leur 
nom de registre "index"). Les ins- 
tructions suivantes realisent I'opera- 
tion : 

LDA #0 (A9 00) 

LDX #$0A (A2 OA) 

STOCKE STA $8000.X (9D 00 80) 

DEX (CA) 

BNE STOCKE (DO FA) 

En Applesoft, cela pourrait s'ecrire : 

10 A=0 

20 X=10 

30 ST=32768 (soit $8000) 
40 POKE ST+X.A 
50 X=X-1 

60 IF X<>0 THEN 40 
La valeur de X est ajoutee a 
I'adresse de base ($8000, donnee ici 
en clair, mais qui peut etre egale- 
ment une adresse symbolique 
comme ADR avec STA ADR.X) pour 
donner I'adresse definitive ou est sto- 
ckee la valeur 0. X passe ainsi de 10 
a (instruction DEX); tant qu'il est 
different de 0, on "remonte" a I'ins- 
truction de stockage a I'adresse cal- 
culee (indexee); lorsqu'il est nul, le 
branchement ne se fait plus et on 
passe alors a I'instruction suivant 
BNE STOCKE. 

Le meme resultat serait obtenu avec 
le registre Y : 

LDA #0 (A9 00) 

LDY #$0A (AO OA) 

STOCKE STA $8000,Y (99 00 80) 

DEY (88) 

BNE STOCKE (DO FA) 

L' instruction LDA, comme STA, peut 
utiliser I'adressage indexe par X ou 
Y. Les differents codes hexadeci- 
maux sont listes ci-dessous : 

1) Pour LDA (ADS designe une 
adresse symbolique) : 

• LDA adresse quelconque.X = BD 
octet bas/octet haut = LDA 
$aaaa.X ou LDA ADS.X 

• LDA adresse quelconque.Y = B9 
octet bas/octet haut = LDA 
$aaaa,Y ou LDA ADS.Y 

• LDA adresse page zero.X = B5 
adresse = LDA $aa.X ou LDA 
ADS.X 

• Pas d'adressage indexe par Y en 
page zero. 

2) Pour STA : 

• STA adresse.X = 9D octet 
bas/octet haut = STA $aaaa.X ou 
STA ADS.X 

• STA adresse, Y = 99 octet 
bas/octet haut = STA $aaaa.Y ou 
STA ADS,Y 

• STA adresse page zero.X = 95 
adresse = STA $aa.X ou STA 
ADS,X 

Chacun des registres permet d'adres- 
ser une zone de memoire de 256 
octets, d'une adresse de base $A jus- 



qu'a $A+$FF. II faut bien se rappe- 
ler que, quel que soit le type d'in- 
dexation, I'adressage ne peut porter 
que sur 256 octets a partir d'une 
meme adresse de base; si Ton doit 
travailler sur une zone plus grande, il 
devient necessaire de manipuler ega- 
lement cette adresse. De maniere ge- 
nerate. I'adresse variera selon un pas 
de 256 octets, par exemple : $8000 
(on peut aller de $8000 a $80FF 
avec un index). $8100 (de $8100 a 
$81FF avec un index)... Vous aurez 
certainement note que cette variation 
se traduit par une incrementation de 

I en 1 de I'octet haut de I'adresse. 

Adressage indirect indexe 

II nous reste a voir une technique 
d'adressage plus complexe mais qui 
n'est pas moins utilisee pour autant. 
au contraire. Elle fait appel a l'in- 
dexation par X ou Y. mais elle est 
dite egalement "indirecte" car 
I'adresse definitive est calculee a par- 
tir de la valeur contenue dans 
I'adresse de base et non a partir de 
I'adresse de base elle-meme. Cette 
derniere (baptisons la AD) doit obli- 
gatoirement se trouver en page zero 
et le systeme prendra I'adresse 
contenue selon le principe : valeur 
contenue dans AD = octet bas de 
I'adresse et valeur contenue dans 
AD+l=octet haut de I'adresse. 

Adressage pre-indexe par X 

Le mecanisme en est le suivant : 

• soit AD I'adresse de base en page 
0. 

• le systeme lui ajoute la valeur de 
X, 

• le contenu de AD+X et AD+X+1 
donne une adresse AO sur laquelle 
portera le travail effectif de lec- 
ture/ecriture. 

En Applesoft, cela reviendrait a une 
suite d' instructions du type : AD=6 : 
X=2: AX=AD+X: AO 
PEEK(AX)+256*PEEK(AX+1) : 
POKE A0,0 (si l'on veut. par exem- 
ple. mettre dans AO). 
Du fait que les adresses contenues 
comportent toujours deux octets, 
meme si elles sont inferieures a 256 
(I'octet de poids fort vaut alors 0), X 
ne doit prendre que des valeurs mul- 
tiples de 2 pour que I'adressage 
donne un resultat coherent (0 pour 
atteindre la premiere adresse. 2 pour 
la seconde...). 

Cette technique d'adressage permet 
de gerer des tables de "pointeurs" 
stockees en page zero a partir d une 
adresse donnee (chaque adresse 
contenue pointe vers une adresse de- 
finitive a manipuler par le pro- 
gramme). Elle autorise egalement 
I'usage d'adresses calculees par le 
programme (ou par 1'AppIe lui- 
meme) et que vous ne connaissez 



Pom's n° 11 



pas encore au moment ou vous 
l'ecrivez : il vous suffit de choisir une 
adresse de base en page 'zero, a par- 
tir de laquelle seront stockes les re- 
sultats des calculs. et d'ecrire votre 
programme en faisant uniquement 
reference a cette adresse. 
Les instructions LDA et STA peuvent 
faire appel a cette technique, avec la 
syntaxe suivante : 

• LDA (ADR.X) = Al adresse page 
zero = LDA ($aa.X) 

• STA (ADR.X) = 81 adresse page 
zero = STA ($aa.X) 



Adressage 
Y 



post-indexe par 



Les principes sont identiques en ce 
qui concerne l'adresse base en page 
zero et l'adresse contenue, mais le 
fonctionnement de 1' indexation est 
radicalement different : 

• soit AD l'adresse de base. 

• elle contient une adresse AO. 

• le systeme ajoute la valeur de Y a 
AO pour obtenir l'adresse defini- 
tive. 

En Applesoft : AD=6 : 

A0=PEEK(AD)+256«PEEK(AD+1) : 
Y=l : POKE AO+Y.O (par exemple). 
[-'indexation s'applique done a 
l'adresse contenue et non plus a 
l'adresse de base. 

Ce mode d'adressage est tres utilise 
par le systeme lui-meme et, par suite, 
il le sera souvent aussi par le pro- 
grammer. Le but principal est tou- 
jours de pouvoir ecrire un pro- 
gramme en gerant des adresses que 
Ion ne connait pas encore ou qui 
peuvent se modifier, en cours d'exe- 
cution ou selon le contexte. 
L'adresse contenue doit fournir le 
debut d une zone de memoire sur la- 
quelle on veut travailler (chaque va- 
riable de la zone pouvant etre tou- 
chee au moyen de I'index Y). Sur 
FApple. ce type d'adresse est particu- 
lierement repandu : adresse de la fin 
d'ur; programme BASIC, adresse 
d'une ligne d'ecran texte ou graphi- 
que. adresse de la zone des chalnes 
de caracteres. adresse d'une ligne de 
programme BASIC... 

Le "GOSUB" de 1'assem- 
bleur 

Quelques mots seulement. car le 
principe est tres proche de celui uti- 
lise en Applesoft. L'equivalent de 
GOSUB est 1' instruction JSR (code 
20). En assembleur. on peut faire 
JSR $FBC1 (par exemple) ou JSR 
ETIQUETTE (sous reserve bien sur 
que ETIQUETTE soit defini quelque 
part dans le programme). En hexa- 
decimal, l'adresse ou commence la 
sous-routine doit suivre le code 20 
dans l'ordre habituel octet bas/octet 
haul (20 CI FB pour JSR $FBC1). 



L instruction RTS (code 60). quant a 
elle. joue exactement le meme role 
que RETURN. 

Recapitulation illustree 

Le petit programme ci-dessous n'em- 
ploie que des instructions examinees 
plus haut, a l exception de ORG. En 
fait, il ne s'agit pas vraiment d une 
instruction mais de ce que Ton ap- 
pelle. en langage bien barbare. un 
"pseudo-opcode" ou une "directive", 
e'est a dire une commande propre a 
l'assembleur utilise (LISA 1.5 en I' oc- 
currence), mais qui ne releve pas du 
langage machine et ne fera pas partie 
du programme objet resultant de 
l'assemblage. Les commandes de de- 
finition d'etiquettes que nous avons 
deja evoquees (EQU. EPZ...) sont 
aussi des directives. 
En l'espece. ORG indique a l'assem- 
bleur a partir de quelle adresse il doit 
realiser l'assemblage et calculer les 
sauts eventuels (un JSR a l'interieur 
du programme par exemple. mais 
pas les branchements par BEQ ou 
BNE qui. rappelons-le. se font en va- 
leur relative, en fonction d'un depla- 
cement et non directement sur une 
adresse fixe). 

Le programme fait peu de choses : il 
execute un HOME, vous demande 
un caractere au clavier, trace un 
cadre autour de 1'ecran avec ce ca- 
ractere, positionne ensuite le curseur 
au centre de 1'ecran pour vous de- 
mander un autre caractere avec le- 
quel il trace un nouveau cadre sur le 
precedent et ainsi de suite (on ne 
peut en sortir que par RESET). Nous 
allons l'analyser en detail. 

Ligne 2 : $FC58 est l'adresse ou 
commence la routine du moniteur 
qui est executee lorsque vous faites 
un HOME en Applesoft. JSR $FC58 
est done equivalent a HOME (la rou- 
tine se termine evidemment par 
RTS). 

Ligne 3 : JSR $FD0C est equivalent 
a GET. La routine de saisie d'un ca- 
ractere au clavier commence en effet 
a l'adresse $FD0C: elle stocke le ca- 
ractere (le code-ecran du caractere 
en fait) dans 1'accumulateur. 
Ligne 4 : on stocke le caractere a 
l'adresse $6. qui n'est pas utilisee par 
le systeme et reste a la disposition du 
programmeur. On donne a cette ins- 
truction l'etiquette B4 afin de pouvoir 
y effectuer un branchement ulterieu- 
rement. 

Ligne 5 : on charge 1'accumulateur 
avec le numero de la premiere ligne 
de 1'ecran soit 0. 

Ligne 6 : la routine du moniteur qui 
commence en $FBC1 calcule 
l'adresse de base d'une ligne de 
1'ecran dont on donne le numero par 
A. Sur une ligne. les caracteres sont 
stockes de "adresse-base" a 
"adresse-base + $27" (de a 39 en 



decimal, ce qui fait bien 40 caracte- 
res par ligne). La routine range cette 
adresse dans les memoires $28 et 
$29. 

Ligne 7 : Y=#$26 ou encore Y=38 
en decimal, ce qui correspond a 
l'avant-demier caractere de la ligne. 
Ligne 8 : on remet le caractere entre 
au clavier dans A. 

Ligne 9 : on le stocke a l'adresse 
"adresse-base de la ligne + 38"; il 
est ainsi affiche a 1'ecran (avant-der- 
nier caractere de la premiere ligne). 
Ligne 10: Y=Y-1 
Ligne 11 : si Y est different de 0. on 
retourne a B0, afin d'afficher tou- 
jours le caractere sur la premiere 
ligne. de la droite vers la gauche. 
L'assembleur calculera lui-meme le 
deplacement qui permettra de re- 
monter a l'adresse ou commencera 
linstruction qui suit B0, ce dont on 
peut lui etre reconnaissant. 
Ligne 12 : Y=0 (le premier caractere 
de la ligne n'est pas encore affiche). 
17 en hexadecimal vaut 23 en deci- 
mal : e'est le numero de la derniere 
ligne de 1'ecran. 

Ligne 13 : calcul de 1'adresse-base de 
la derniere ligne. 

Lignes 14 a 18 : on fait pour la der- 
niere ligne comme pour la premiere. 
Ligne 19 : Y=0 pour traiter la pre- 
miere colonne de 1'ecran. 
Ligne 20: on met $18 dans X au 
lieu de $17 afin de pouvoir placer le 
DEX avant l'operation d'affichage. 
Ainsi. le test sur la valeur de X (0 ou 
non) se fera apres le traitement de la 
ligne et non avant. 
Ligne 22 : A = numero de la ligne. 
Lignes 23 a 25 : instructions realisant 
l'affichage en premiere colonne (Y 
vaut toujours 0). 

Ligne 26 : TXA a pour but de don- 
ner au "dernier resultat" teste par 
BNE la valeur de X, qui est bien 
celle qui nous interesse ici. 
Ligne 27 : on passe au caractere sui- 
vant (au-dessus) dans la meme co- 
lonne, jusqu'a ce que la ligne ait 
ete traitee. 

Ligne 28 : TYA pour donner au 
"dernier resultat" la valeur de Y. En 
fait, on veut savoir si la colonne que 
Ton vient de traiter est la premiere 
(0) ou la derniere ($27 = 39). Si 
e'est 0. on refait le travail avec $27 
(lignes 30 et 31 qui renvoie a la ligne 
20). sinon, le cadre est termine et on 
se deplace en B3. 

Lignes 32 a 34: la memoire $25 
contient la position verticale du cur- 
seur; on la met a $C (12) et on fait 
un JSR a la routine qui execute le 
VTAB ($FC22). Ceci est done equi- 
valent a VTAB 12. 

Lignes 35 et 36 : $24 contient la po- 
sition horizontale du curseur; on y 
met $14, ce qui equivaut a HTAB 
20. 

Ligne 37 : demande d'un caractere 
au clavier. 



Pom's n' 11 



uv :; J ( !\a v is 31 H 



13 



Lignes 38 a 39 : aucun caractere n'a 
pour code-ecran en mode normal 
et le test BNE realisera done syste- 
matiquement le branchement en B4 : 
le programme boucle ! 

Si vous voulez rentrer ce programme 
directement en hexadecimal, utilisez 
la recapitulation qui vous est donnee 
de la fagon suivante : 

Entrez en mode moniteur par 
CALL- 151, puis tapez : 
300: 20 58 ... 06 RETURN 
308: A9 00 ... A5 RETURN 
et ainsi de suite jusqu'au BA (inal. 
Retour au BASIC par 3D0G RE- 
TURN ou CTRL-C. 



Vous pouvez. si vous le desirez. sau- 
ver la routine par BSAVE 
nom.A$300.L$4C (ou $300 et $4C 
designent respectivement ladresse de 
debut et la longueur du code a sau- 
vegarder). 

Pour l'executer. tapez CALL 768 
RETURN. 

Nous vous donnons egalement un 
petit programme en Applesoft qui fait 
le meme travail que notre routine en 
assembleur. Essayez-le egalement et 
vous constaterez la chose suivante : 
on a le temps de voir le cadre se 
dessiner alors que, en langage ma- 
chine, tout semble "instantane" (un 
cadre en remplace un autre sans que 



vous puissiez discerner une phase in- 
termediate). Ceci confirme "de visu" 
que le langage machine permet de 
realiser des traitements plus rapides 
que le BASIC et e'est bien la moin- 
dre des choses. 

Mais, et la taille du programme, 
direz-vous ! II ne faut pas se fier aux 
apparences : le programme source 
en assembleur peut vous paraitre 
long (surtout si vous le tapez effecti- 
vement, sans etre un specialiste de la 
dactylographie), mais le code-objet 
n'occupe que 76 octets. Le "petit" 
programme Applesoft en prend pour 
sa part 112 ... Alors. rendez-vous au 
prochain article ! ■ 



LISTE D'ASSEMBLAGE 
LISA 1.5 



0300 




1 




ORG 


*300 


0300 


20 "^SFC 


2 




JSR 


*FC58 


0303 


200PFD 


•5 




JSR 

'-'WIN 


*FD0C 


0306 




4 


84 


STA 


£6 




A9n n 








TT \J 


030 A 


20C1 FB 


A 

W 






£FRn 

I w X 


030D 


A026 


7 

* 




LDY 


#$26 


030F 


A506 


8 




LDA 


%6 


031 1 


91 28 


9 


B0 


STA 


<*28) ,Y 


031 3 


88 


1 

X \J 




DFY 




031 4 


D0FB 


1 1 

X X 




BNE 


BO 


031 6 


A91 7 


1 2 




LDA 


#*1 7 


0318 


20C1FB 


13 




JSR 


*FBC1 


031B 


A026 


1 4 




LDY 


#426 


031D 


A506 


15 




LDA 


*6 


031F 


9128 


16 


Bl 


STA 


<*28) ,Y 


0321 


88 


17 




DEY 




0322 


D0FB 


18 




BNE 


Bl 


0324 


A000 


1? 




LDY 


#0 


0326 


A218 


20 


B20 


LDX 


#*18 


0328 


CA 


21 


B2 


DEX 




032? 


8A 


22 




TXA 




032A 


20C1FB 


23 




JSR 


*FBC1 


032D 


A506 


24 




LDA 


*6 


032F 


9128 


25 




STA 


<*28) ,Y 


0331 


8A 


26 




TXA 




0332 


D0F4 


27 




BNE 


B2 


334 


98 


28 




TYA 




0335 


D004 


29 




BNE 


B3 


0337 


AO 27 


30 




LDY 


tt*27 


0339 


D0EB 


31 




BNE 


B20 


033B 


A90C 


32 


B3 


LDA 


tt*C 


033D 


8525 


33 




STA 


*25 


033F 


2022FC 


34 




JSR 


*FC22 


0342 


A914 


35 




LDA 


»*14 


0344 


8524 


36 




STA 


*24 


0346 


200CFD 


37 




JSR 


*FD0C 


0349 


AA 


38 




TAX 




034A 


D0BA 


39 




BNE 


B4 



RECAPITULATION 



0300- 


20 


58 


FC 


20 


0C 


FD 


85 


06 


0308- 


A9 


00 


20 


CI 


FB 


AO 


26 


A5 


0310- 


06 


91 


28 


88 


DO 


FB 


A9 


17 


0318- 


20 


CI 


FB 


AO 


26 


A5 


06 


91 


0320- 


28 


88 


DO 


FB 


AO 


00 


A2 


18 


0328- 


CA 


8A 


20 


CI 


FB 


A5 


06 


91 


0330- 


28 


8A 


DO 


F4 


98 


DO 


04 


AO 


0338- 


27 


DO 


EB 


A9 


0C 


85 


25 


20 


0340- 


22 


FC 


A9 


14 


85 


24 


20 


OC 


0348- 


FD 


AA 


DO 


BA 











10 HOME : POKE 34,24 

1 5 GET 2* : VTAB 1 : HTAB 1 : FOR I = 
1 TO 40: PRINT Z* ; : NEXT : VTAB 
24: HTAB 1: FOR I =«= 1 TO 40 : PRINT 
Z* ; : NEXT 

20 FOR I = 2 TO 23: VTAB I: HTAB 
1: PRINT Z*;: HTAB 40: PRINT 
Z* ; : NEXT : UTAB 1 2 : HTAB 20 : 
GOTO 15 



Un bug en virgule flottante 

Christophe Chaumet nous a signale ce bug. publie dans 
ACM SIGNUM Newsletter en avril 83. Les multiplications 
et divisions en virgule flottante de l'Apple sont sujettes a 
erreur dans certains cas. Ainsi. la mantisse contient 4 
octets (32 bits); si. pour un nombre donne. les deux octets 
centraux de cette mantisse sont nuls et F octet final non 
nul. il peut y avoir une erreur dans I'octet final pour les 
multiplications et divisions faites avec ce nombre. 

Exemple : 

Z = 0.5 +2"(-25) 
W = 2*(Z/2) 

On obtient en fait W = 0.5+2 (-26) comme resultat. 

Par contre. si Z = 0.5 + 2 "(-9) + 2' (-25), on trouve 
bien la meme valeur pour Z et W, une fois que W a ete 
defini par W = 2*(Z/2) 

Apple a ete informe de l'erreur il y a trois ans: helas, ce 
probleme est reste avec l'Apple lie. 



Pom's n° 11 



Des POKEs a gogo 

Roland Jost 



L'interpreteur Applesoft est a l'etroit 
dans ses 10K de ROM et certaines 
de ses possibilities ne peuvent etre 
exploitees que par l'emploi de 
POKEs a certaines adresses me- 
moire. D'autre part, il peut s'averer 
necessaire de rromper l'interpreteur 
qui est parfois un peu trop strict. 
Tout programmeur connait les 
POKEs courants permettant de defi- 
nir les limites de la fenetre d'ecran. 
de passer aux modes graphiques... 
D'autres sont moins connus. Cette 
liste rassemble tous ceux que j'ai pu 
trouver dans la litterature consacree a 
l'Apple. Elle n'est certainement pas 
exhaustive et pourra etre completee 
par la suite. 

Remarque : lorsqu'il s'agit de POKEr 
des valeurs sur 2 octets, X etant l'oc- 
tet de poids faible. X+l I" octet de 
poids fort, l'instruction suivante est 
utilisee : 

POKE X+l.VAL/256 : POKE X.VAL 

-256*PEEK(X+1) 

au lieu de : 

V% = VAL256 : POKE X.VAL-256* 
V%: POKE X+1,V% 



Page zero 

• POKE 10,76: POKE 12.AD/256 : 
POKE 11,AD-PEEK(12)*256 

Initialise la fonction USR. Un appel a 
USR provoquera un saut a un sous- 
programme machine commencant a 
l'adresse AD. 

• POKE 32.X 

Fixe la marge gauche de la fenetre 
de texte (0<= X <= 39). 

• POKE 33,X 

Fixe la largeur de la fenetre de texte 
(0<= X <= 39-PEEKI32)). 

• POKE 33,33 

Affiche les instructions Applesoft sans 
mettre de marge. Necessaire pour les 
corrections d' instructions. 

• POKE 33,28 

Permet un cadrage facile des REMar- 
ques. 

• POKE 34.Y 

Fixe le haut de la fenetre de texte 
(0<= Y <= 23). 

• POKE 35.Y 

Fixe le bas de la fenetre de texte 
(PEEK(34)<= Y <= 23). 

• POKE 36.X 

Fixe la position horizontale du cur- 
seur. A utiliser en remplacement de 
HTAB pour sortie sur imprimante si 



l'impression se fait sur plus de 40 co- 
lonnes. 

• POKE 37,Y 

Fixe la position verticale du curseur 
(0<= Y <=23). 

• POKE 48.C 

Selectionne la couleur du trace basse 
resolution (mode GR). 0=noir, 
l=magenta, 2=bleu fonce, 3=pour- 
pre, 4=vert fonce, 5=gris. 6=bleu. 
7=bleu clair. 8=brun, 9=orange, 
10=gris, ll=rose, 12= vert. 
13=jaune, 14=incolore, 15=blanc. 

• POKE49.X 

Selectionne le MODE du moniteur. 

• POKE 50,63 

Selectionne le mode d'affichage IN- 
VERSE. 

• POKE 50,127 

Selectionne le mode d'affichage cli- 
gnotant (mode FLASH). 

• POKE 50.255 

Retour au mode d'affichage normal. 

• POKE 51,128 

A placer en mode immediat avant un 
ordre CONT, GOTO, GOSUB, sur la 
meme ligne, lorsque la portion de 
programme a executer contient un 
ordre OPEN, READ. WRITE, AP- 
PEND ou POSITION. On evite ainsi 
le message NOT DIRECT COM- 
MAND. 

• POKE 55.AD/256: POKE 54.AD 
^ -PEEK(55)*256 
Changement de l'adresse du sous- 
programme de sortie de caracteres. 
(Normalement S9EBD avec le DOS). 

• POKE 57.AD/256: POKE 56.AD 
-PEEK(57)*256 

Changement de l'adresse du sous- 
programme d' entree de caracteres. 
(Normalement $9E81 avec le DOS). 

• POKE 58.A1 : POKE 59.A2 : 
POKE 69.A3: POKE 70.A4 : 
POKE 71.A5 

Utilisation des adresses de sauve- 
garde de PC et des registres A.X.Y 
pour 1'appel de sous-programmes du 
moniteur. En voici un exemple : 

Conversion decimal en 
hexadecimal 

10 INPUT "DEC=";D: POKE 

71.D/256: POKE 70,D - PEEK 

(71).256: POKE 59.249: POKE 

58,64: POKE 49,0: PRINT 
"HEX$ = "; : CALL-327 

La valeur de D est POKEe dans les 
registres Y et X par 1' intermediate 
des adresses de sauvegarde de ces 



registres ($47 ,$46). L'adresse du 
sous-programme d'affichage 
(PRNTYX - $F940) est POKEe dans 
les adresses de sauvegarde du PC 
($3A. $3B). On met a zero le MODE 
($31). Le CALL-327 execute un 
sous-programme restaurant les regis- 
tres ($FEB9). 

• POKE60-67.X 

Ces huit adresses permettent de 
transmettre des parametres a certai- 
nes routines du moniteur : MOVE. 
VERIFY... 

Exemple : deplacer de Dl a Al une 
zone memoire, commengant a 
l'adresse Dl et se terminant en D2 : 

POKE 61.D1/256 : POKE 60.D1- 
PEEK (61)*256: POKE 63.D2/256 : 
POKE 62.D2-PEEK (63)* 256: 
POKE 67.A1/256 : POKE 66.A1 - 
PEEK (67)*256 : CALL -468 

Le CALL -468 execute la 
commande MOVE ($FE2C). Un 
CALL-548 (VERIFY $FE36) per- 
mettrait la comparaison de 2 zones 
memoires. 

• POKE 72,0 

Met a zero le registre d'etat. Utilise 
par exemple dans la routine de 
S.H.LAM (voir plus loin). 

• POKE 82,213 

A faire avant de sauver un pro- 
gramme sur cassette. Le programme 
s'executera automarjquement apres 
un LOAD et le RUN n'est plus ne- 
cessaire. 

• POKE 103.1 : POKE 
104.AD 256 : POKE AD.O 

Fixe a AD le debut d'un programme 
Applesoft. 

• POKE 106.X 256 : POKE 105.X 

- PEEK (106) * 256 

Fixe la valeur de LOMEM a la valeur 
decimale X. Identique a LOMEM:X. 

• POKE 116.X 256: POKE 115.X 

- PEEK (116) * 256 

Fixe la valeur de HIMEM a la valeur 
decimale X. Identique a HIMEM:X. 

• POKE 118.0 

Permet d'executer des instructions 
telles que INPUT. GET... en mode 
immediat. L'adresse 118 ($76 - 
CURLIN) contient normalement $FF 
en mode direct et le numero de ligne 
BASIC en mode programme. Exem- 
ple : POKE 118.0:INPUT " ":R$ 

• POKE 118.0 : POKE 43699.0 
Permet un INPUT du clavier dans un 
fichier EXEC. Apres 1'INPUT, faire 



Pom's n" 11 



un POKE 43699.1 (pour 48K). 
Toutes les instructions doivent etre 
dans une meme ligne. 

• POKE 176.X 256 : POKE 175.X 

- PEEK (176) * 256 

Fixe l'adresse de fin d'un programme 
Applesoft. A utiliser. par exemple. 
lorsque Ton veut ajouter un pro- 
gramme binaire a la suite d'un pro- 
gramme Applesoft. 

• POKE 214,255 

Annule les commandes LIST. NEW. 
POKE. CALL et la commande SAVE 
du DOS. Empeche d'inserer ou d'ef- 
facer une ligne BASIC. Toute 
commande precitee fera executer le 
programme Applesoft en memoire. A 
utiliser pour empecher le listage et la 
modification de programmes... Pour 
revenir a la normale, passer en mode 
moniteur et faire "D6: 00". 

• POKE 216,0 

Annulation d'une instruction 
ONERR. 

• POKE 228.X 

Permet de changer le code de la 
couleur HGR. Noir=0. Vert=85. 
Violet = 42. Blanc=127. Noir=128. 
Bleu = 170. Orange=213. Blanc 
=255. Essayez toutes les autres pos- 
sibilites pour X compris entre et 
255. 

• POKE 230.32 

Selectionne la premiere page haute 
resolution ($2000-$3FF8) sans l'affi- 
cher. Toutes les instructions de trace 
agiront sur cette page. 

• POKE 230.64 

Selectionne la deuxieme page HGR 
($4000-$5FF8). 

• POKE 230.96 

Les instructions HGR agissent sur 
une 3eme page HGR "theorique" 
($6000-$7FF8). Cette page ne peut 
etre affiche par hardware, mais de- 
placee en bloc vers l'une des pages 1 
ou 2. 

• POKE 231.X 

Permet de changer la valeur de 
SCALE (0-...). 

• POKE 233.X 256 : POKE 232.X 

- PEEK (233) * 256 

Fixe l'adresse de debut d'une table 
de formes. 

• POKE 241.X 

Fixe la Vitesse d'affichage : SPEED = 
256 -X. 

• POKE 243.0 

Permet de sortir du mode FLASH 
apres un <RESET> effectue en 
cours d'execution de programme. 
Vous etes dans cette situation lors- 
que. lors du balayage d'une instruc- 
tion par la fleche a droite. le passage 
du curseur provoque I'affichage de 
caracteres incoherents. Un POKE 
243.0 retablit une situation normale. 



• POKE 243.32 

Convertit les majuscules en minuscu- 
les lors d'une sortie sur imprimante. 

• POKE 249.X 

Fixe la valeur de ROT a X. 

Page 2 

La page 2 ($200-2FF) sert de tam- 
pon (buffer) d'entree des caracteres 
frappes au clavier. La routine de 
S.H.LAM utilise des POKEs en page 
2 pour installer en memoire des 
sous-programmes assembleur. On 
peut aussi l'utiliser pour faire execu- 
ter a partir du BASIC des instructions 
moniteur : 

CO$=CO$ + " N D9C6G" : FOR 
Z=l TO LEN(CO$) : POKE 511+Z. 
ASC(MID$(CO$.Z.l)> + 128: NEXT 
Z: POKE 72.0: CALL- 144 

Par exemple : 

• CO$ = "2000<4000.5FF8M" co- 
piera la page graphique 2 dans la 
page 1. 

• CO$ = "300L" liste 20 instructions 
desassembiees a partir de l'adresse 
$300. 

• CO$="C081 N C081 N 
D000<D000.FFFFM" copie la 
ROM dans la carte d' extension 
memoire... 

Page 3 

• POKE 1009.X 256 : POKE 
1008.X-PEEK(1009)*256 

Change l'adresse de branchement en 
cas de BRK. 

• POKE 1011.X256: POKE 
lOlO.X-PEEKUOl 1)*256 

Modifie l'adresse de branchement en 
cas de RESET. 

• POKE 1012.0 

Provoque un demarrage a froid 
apres un RESET. 

• POKE 1013.76 : POKE 
1015.AD 256 : POKE 
1014.AD-PEEK( 10151*256 

Initialise & (AMPERSAND) pour un 
saut a un sous-programme dont le 
point d'entree est a l'adresse deci- 
male AD. 

• POKE 1016.76: POKE 
1018.AD/256 : POKE 
1017.AD-PEEKI 10181*256 

Initialise CTRL-Y en mode moniteur 
pour un saut a un sous-programme 
situe a l'adresse decimale AD. 

Pages 4-7 

• POKE 1024 + X + 128*Y - 
984*INT(Y8).CA 

Permet de POKEr directement en 
page 1 de TEXTE (ecran) au point 
de coordonnees X et Y (0<= X < = 
39 et 0<= Y <= 23). Le mode 
d'affichage dependra de la valeur de 
CA : 

<= CA <= 63 : MODE INVERSE 



64 <= CA < = 127 : MODE FLASH 
128 <= CA < = 191 : MODE NOR- 
MAL 

192 <= CA <=255: MODE NOR- 
MAL ou minuscules 

Dans le cas d'une ecriture en page 2 
de TEXTE. remplacer 1024 par 
2048. Attention, votre programme 
Applesoft ne doit pas debuter avant 
$C00. 

Pages graphiques 

Un POKE dans les adresses corres- 
pondent aux pages graphiques allu- 
mera un point sur I'ecran. Vu l'orga- 
nisation des pages HGR. il est peu 
pratique de POKEr directement des 
figures en page graphique. 

DOS 48K 

Toutes les adresses ci-dessous corres- 
pondent a un Apple 48K ou le DOS 
est charge entre $9600 et $BFFF. 
Pour des systemes 32K ou 16K. il 
faut leur retrancher respectivement 
16384 et 32768. Sauf indication 
contraire. ces adresses sont valables 
en DOS 3.2 et DOS 3.3. 

• POKE 40407.234: POKE 
40408.234 : POKE 40409.234 

La commande MON C.I.O n'est plus 
deconnectee lors d'un RESET. 

• POKE 40514.52 

Permet un demarrage du systeme 
(BOOT) sur un fichier binaire (valeur 
par defaut = 6 : fichier BASIC). 

• POKE 40514.20 

Permet un demarrage du systeme sur 
un fichier EXEC. 

• POKE 40993.234 : POKE 
40994.234 : POKE 40995.234 

Permet de passer des commandes 
DOS (OPEN. READ...) en mode DI- 
RECT, sans le message NOT DI- 
RECT COMMAND. 

• POKE 42424.192 : POKE 
42432.193 

Permet au DOS de reconnaitre une 
carte ROM Applesoft ou Integer dans 
le port (slot) 4. 

• POKE 43140,96: POKE 
43160.96 : POKE 43212.96 

Ces trois POKEs annulent respective- 
ment les commandes INIT. DELETE 
et RENAME du DOS en remplacant 
la premiere lettre de chaque 
commande par un caractere non ac- 
cessible au clavier de l'Apple II+. 

Avec un POKE 214.255 en comple- 
ment (voir plus haut). ceci constitue 
un bon moyen de protection de pro- 
grammes contre les effacements ou 
interventions non autorises. 

Pour revenir a un DOS standard, 
faire "POKE 43140.73: POKE 
43160.68 : POKE 43212.82". L'effet 
du POKE 214 ne peut etre annule 



Pom's n° 11 



qu'en mode moniteur (voir plus 
haut). 

• POKE 43624.1 

Selectionne le lecteur de disquette 1. 

• POKE 43624.2 

Selectionne le lecteur de disquette 2. 

Le changement de lecteur peut se 
faire facilement par 1' instruction 
"POKE 43624.3 -PEEK(43624)" 

• POKE 43626.X 

Selectionne le port (slot) du lecteur. 
X etant le numero du port (6.5.4...). 

• POKE 43699.0 

Deconnecte un fichier EXEC. Le fi- 
chier reste ouvert jusqu'a la pro- 
chaine commande CLOSE. FP. INT 
ou MAXFILES. 

• POKE 43699.1 
Reconnecte le fichier EXEC. 

• POKE 44452.0 

Supprime la pause du CATALOG. 
Pour revenir a un affichage standard, 
taper "POKE 44452.22". D'autres 
valeurs donnent des resultats divers. 

• POKE 44505,234: POKE 
44506.234 

Les fichiers effaces (par DELETE) 
sont affiches lore d'un CATALOG. 

• POKE 44596.255 

Supprime la pause du CATALOG. 
Pour revenir a un affichage standard, 
taper "POKE 44596,206". 
Un POKE 44596.0 entraTne un arret 
en mode moniteur et le CATALOG 
n'est pas affiche. 

• POKE 44723,X*4 : POKE 
44725.Y*4 

A faire avant une initialisation de dis- 
quette. Les seules pistes accessibles 
pour la sauvegarde de fichiers seront 
celles comprises entre X et Y (inclus). 

• POKE 44033.3 : POKE 
44723.16: POKE 44741.12: 
POKE 44764.3 : POKE 46012.3 

A faire avant une initialisation de dis- 
quette par INIT. Cette serie de 
POKEs permet de placer le DIREC- 
TORY et la VTOC sur la piste 3 au 
lieu de la piste 17. Cette disquette ne 
sera plus bootable' ni accessible par 
un DOS normal. Les programmes de 
copie (FID. COPYA) ne fonctionnent 
plus. 

Dans un DOS standard, ces adresses 
contiennent respectivement les va- 
leurs 17. 12. 68. 17. 17. 

• POKE 49107.234 : POKE 
49108.234 : POKE 49109.234 

Evite. lore d'un BOOT a chaud. de 
recharger le langage complementaire 
(Integer pour un Apple II + , ou Ap- 
plesoft pour un Apple II) dans la 
carte langage ou la carte d" extension 
RAM). 



BLOCK IOB 

IOB (INPUT/OUPUT BLOCK) est 
utilise par le sous-programme RWTS 
(Read Write Track Sector) pour I'ac- 
ces a un secteur de la disquette. 
L'adresse de la table IOB utilisee par 
le DOS est donnee par : 

IOB = 256*(PEEK(PEEK(996) + 
256*PEEK(997)) + 
PEEK(PEEK(999) + 
256*PEEK(1000)) 

normalement IOB = 47080 ($B7E8) 

Pour modifier les parametres de la 
table IOB, on pourra faire les 
POKES suivants : 

• POKE IOB + 3,0 

Met le numero de volume a zero. 
Done accepte de lire la disquette 
quel que soit le numero de volume. 
Sinon le numero de volume doit cor- 
respondre au contenu de cette 
adresse. 

• POKE IOB + 4.P 

P = numero de piste (0 - 34) 

• POKE IOB + 5.S 

S = numero de secteur (0 - 15 en 
DOS 3.3 . - 12 en DOS 3.2). 

• POKE IOB + 9.A256: POKE 
IOB + 8.A-256.PEEK0OB+8) 

A = adresse du tampon en MEV. 

• POKE IOB + 12.C 

C = : positionne la tete de lecture 
au debut du secteur defini par P et 
S. 

C = 1 : lecture du secteur P. S. 

C = 2 : ecriture du secteur P. S sur 

disquette. 

C = 4 : formattage de la disquette. 
ATTENTION : detruit tout le contenu 
de la disquette. 

Ne pas oublier de mettre la valeur de 
IOB dans les registres A et Y avant 
appel de RWTS (cf. manuel du 
DOS). 



Entrees-sorties ($C000 
$C0FF) 

A ces adresses sont implantes des 
switchs (ou bascules) permettant de 
selectionner une fonction d'entree- 
sortie donnee. 

• POKE 49168.0 (-16368) 
Reprise de la lecture du clavier, le 
STROBE est remis a zero. 

• POKE 49184.0 (-16352) 

Active la sortie magnetophone. Per- 
met par exemple de sortir sur un am- 
plificateur. Un deuxieme POKE a la 
meme adresse deconnecte la sortie. 

• POKE 49200,0: POKE 49200,0 
(-16336) 

Produit un 'CLIC du haut-parleur. 

• POKE 49232.0 (-16304) 
Passage en mode graphique. 



• POKE 49233.0 (-16303) 
Passage en mode texte. 

• POKE 49234.0 (-16302) 

Choix du mode graphique non 
mixte. 

• POKE 49235.0 (-16301) 

Choix du mode mixte (4 lignes de 
texte en bas d'ecran). 

• POKE 49236.0 (-16300) 

Choix de la page 1 (TEXTE OU GR 
OU HGR). 

• POKE 49237,0 (-16299) 

Choix de la page 2 (TEXTE OU GR 
OU HGR). 

• POKE 49238.0 (-16298) 
Basse resolution (mode GR). 

• POKE 49239,0 (-16297) 
Haute resolution (HGR). 

Les commandes HGR et HGR2 effa- 
cent les pages graphiques. Pour pas- 
ser a une page graphique sans effa- 
cement de son contenu. faire par 
exemple pour la page 2 : 

POKE 49232.0: POKE 49234.0: 
POKE 49237,0 : POKE 49239.0 

Pour basculer entre les pages 1 et 2 . 
executer l'instruction : 

POKE 230. 96 - PEEK (230). 

• POKE 49240,1 (-16296) 

Met la sortie numerique (patte 15 
de la broche manette) a l'etat "OFF" 
(5 volts). 

• POKE 49241,0 (-16295) 

Met la sortie numerique en position 
"ON" (0.3 volts). 

• POKE 49242.1 (-16294) 
POKE 49243.0 (-16293) 

Idem pour la sortie numerique 1 
(patte 14). 

• POKE 49244.1 (-16292) 
POKE 49245.0 (-16291) 

Idem pour la sortie numerique 2 
(patte 13). 

• POKE 49246,1 (-16290) 
POKE 49247,0 (-16289) 

Idem pour la sortie numerique 3 
(patte 12). 

• POKE 49248,0 (-16288) 
Active 1'entree magnetophone, Un 
deuxieme POKE a cette adresse de- 
sactive 1'entree. 

• POKE 49280.0 (-16256) 
Connecte la carte d'extension me- 
moire (BLOC 2) en mode lecture. 
Protection en ecriture. 

• POKE 49281.0: POKE 49281.0 
(-16255) 

Deconnecte le BLOC 2 en mode lec- 
ture. Deprotege en ecriture. La lec- 
ture de la ROM est possible. 

• POKE 49282,0 (-16254) 

Carte (BLOC 2) deconnectee en lec- 



Pom's n° 11 



ture. protegee en ecriture. c'est a dire 
retour au langage en ROM. 

• POKE 49283.0 : POKE 49283.0 

(-16253) 
Le BLOC 2 de la carte d'extension 
est accesssible en lecture ET en ecri- 
ture. 

Les 12K du BLOC 1 sont accessibles 
de la meme faejon par les POKEs sui- 
vants: 

POKE 49288.0 (-16252) 
POKE 49289.0 (-16251) 
POKE 49290,0 (-16250) 
POKE 49291.0 (-16249) 

Pour une carte d'extension 32K ou 
plus, la 2eme tranche de 16K est ac- 
cessible par les POKES indiques ci- 
dessous : 

BLOC 2 : utiliser les POKES 49284 
a 49287 



BLOC 1 : utiliser les POKES 49292 
a 49295. 



Correction d'utilitaires 

RENUMBER 

L'utilitaire de renumerotation de 
lignes livre avec les disquettes Master 
DOS 3.2 et 3.3 comportait un "bug " 
qui peut etre corrige par les POKEs 
ci-dessous : 

Apres avoir charge RENUMBER en 
memoire par un LOAD, taper : 

• POKE 4815.172 et POKE 
4816.171 pour un DOS 3.2. 

• POKE 4789.172 et POKE 
4790.171 pour un DOS 3.3. 

Sauver le programme modifie par 
SAVE RENUMBER. 



Bibliographie 

Tous ouvrages francos consacres a 
l'Apple II. 

Revues : Pom's, L'Ordinateur lndivi- 
duel. CALL A.P.P.L.E . NIBBLE . 
APPLE ORCHARD. 

Conclusion 

Tous ces POKES ont ete testes avec 
DOS 3.3. 3.2. 3.2.1. A moins d'une 
erreur de transcription, ils devraient 
etre corrects. Priere de signaler les 
erreurs eventuelles. Cette compilation 
ne tient certainement pas compte de 
nombreuses autres possibility de 
modification du DOS (cf. les nom- 
breux patches' possibles mais qui 
necessitent plus que quelques 
POKES), ni des corrections eventuel- 
les pour l'Applesoft charge en carte 
langage. ■ 



Un programme de menu 



Ce programme en assembleur vous 
permet, en relation avec le pro- 
gramme de gestion de masques de 
G. Michel (POM'S 7). de realiser tres 
rapidement les menus de vos pro- 
grammes BASIC. 

II permet de repondre a un menu 
soit par deplacement a l'aide des fle- 
ches -> ou <-, soit par reponse litte- 
rale (une lettre A, B.C...). 
Ce programme est relogeable; vous 
pouvez done l'integrer tres facilement 



dans tout programme BASIC. Avant 
de I'appeler. il est necessaire de lui 
communiquer certaines informations 
par des POKE aux adresses correc- 
tes. Les informations concernees sont 
les suivantes : 

• adresse 0: le numero de la ligne 
de la premiere modalite de choix 
(entre et 23). 

• adresse 1: le numero de la co- 
lonne a partir de laquelle se fera 
l'inversion des caracteres (entre 



Gilles Mauffrey 

et 39): cette colonne. pour c'naque 
modalite de choix. doit contenir 
un caractere non blanc. 

• adresse 2: le nombre de modalites 
de choix. 

• adresses 36.37: positionnement du 
curseur en cas de reponse litterale. 

Le petit programme de demonstra- 
tion liste ci-apres vous fournira les in- 
dications complementaires pour la 
mise en oeuvre de la routine. _ 





************ 


Masque 




* * 
•DEMO MENU* 


MASK DEMO 




* * 






************ 




<A> 


PREMIER CHOIX 




<B> 


SECOND CHOIX 




<C> 


TROISIEME CHOIX 




<D> 


QUATRIEME CHOIX 






UOTRE 


CHOIX : 


UTILISER LES -> , <- OU LA 


LETTRE VOULUE 



DEMOMENU 

1 REM PROGRAMME DE MENU 

2 REM (APPLESOFT) 

3 rem ================= 



5 D* = CHR* (4) 

10 HOME : PRINT D*" BLOAD MASKDEMO 

,A*8400 ,D1 " 
15 GOSUB 5000 

20 POKE 0,7: POKE 1,6: POKE 2,4: 

36,35: POKE 37,20 
40 PRINT D*" BLOAD B :MENU , A*9500 " 
50 CALL 9 * 256 * 16 + 5 * 256 
55 FOR J = 1 TO 600: NEXT 
60 X = PEEK <3>: ON X GOSUB 1000, 

2000 ,3000 
70 END 

1000 HOME : PRINT "SP1" 
1010 RETURN 

2000 HOME : PRINT "SP2": RETURN 
3000 HOME : PRINT " SP3" : RETURN 
5000 DATA 1024,1152,1280,1408,15 

36 , 1 664 , 1 792 , 1 920 , 1 064 , 1 1 92 , 1 

320 , 1 448 , 1 576 , 1 704 , 1 832 , 1 960 , 

1104,1 232 , 1 360 , 1 488 ,1616,1 744 

,1872,2000 
5005 RESTORE 
5010 FOR J = 1 TO 24: 

K = TO 39: POKE 

<8 * 256 * 16 + N 

K: NEXT J 
5020 RETURN 



READ N: FOR 
N + K, PEEK 
+ K> : NEXT 



18 



Pom's n° 11 



Programme MENU. TEXT 


49 




BNE 


PCL 


100 




TXS 




DOS TOOL KIT 




50 




CLV 




101 




LDY 


«39 








51 




JSR 


*FF58 


102 


BINEF 


LDA 


(BASE) ,Y 


l 


ORG 


*9000 


52 




BVC 


EFFACE 


103 




ORA 


#*C0 


2 LIGNE 


EQU 


*00 


53 




INC 


REP 


104 




CMP 


#*E0 


3 COLONNE 


EQU 


*01 


54 




LDA 


REP 


105 




BCC 


STOB 


4 CHOIX 


EQU 


*02 


55 




CMP 


CHOIX 


106 




SBC 


H*40 


5 REP 


EQU 


*03 


56 




BCC 


CAVA 


107 


STOB 


STA 


(BASE) ,Y 


6 LETMAX 


EQU 


*04 


57 




BEQ 


CAVA 


108 




DEY 




7 TEMP 


EQU 


*05 


58 




LDA 


#0 1 


109 




BPL 


BINEF 


8 CH 


EQU 


*24 


59 


CAVA 


STA 


REP 


110 




BIT 


*FF58 


9 CV 


EQU 


*25 


60 




CLV 




1 1 1 




RTS 




10 BASE 


EQU 


*28 


61 




JSR 


*FF58 


112 


INVER 


TSX 




11 BASCALC 


EQU 


*FBC1 


62 




BVC 


PRECAL 


113 




DEX 




12 REPON1 


LDA 


CV 


63 




BVS 


PCL 


114 




DEX 




13 


JSR 


BASCALC 


64 


INVERM 


BVC 


INVER 


115 




TXS 




14 


LDY 


CH 


65 


PRECAL 


TSX 




116 




LDY 


*»40 


15 


LDA 


#*5F 


66 




DEX 




117 


IN0 


DEY 




16 


STA 


(BASE) ,Y 


67 




DEX 




118 




LDA 


(BASE) ,Y 


17 


LDA 


#01 


68 




TXS 




119 




CMP 


#' 


18 


STA 


REP 


69 




CLV 




120 




BEQ 


IN0 


19 


LDA 


LIGNE 


70 




JSR 


*FF58 


121 




EOR 


«*E0 


20 


JSR 


BASCALC 


71 




BVC 


CALINE 


122 




BEQ 


I NO 


21 


CLV 




72 




CLV 




123 


BINV 


LDA 


(BASE) ,Y 


22 


JSR 


*FF58 


73 




JSR 


*FF58 


124 




AND 


#*3F 


23 


BVC 


INVERM 


74 




BVC 


INVER 


125 




STA 


(BASE) ,Y 


24 


CLC 




75 




BIT 


*FF58 


126 




DEY 




25 


LDA 


#'A 


76 




RTS 




127 




CPY 


COLONNE 


26 


ADC 


CHOIX 


77 


LETTRE 


PHA 




128 




BCS 


BINV 


27 


STA 


LETMAX 


78 




CLV 




129 




BIT 


*FF58 


28 PCL 


LDA 


*C000 


79 




JSR 


*FF58 


130 




RTS 




29 


BPL 


PCL 


80 




BVC 


EFFACE 


131 


CALINE 


TSX 




30 


BIT 


*C010 


81 




PLA 




132 




DEX 




31 


CMP 


#*C1 


82 




SEC 




133 




DEX 




32 


BCC 


CTRL 


83 




SBC 


tt*C0 


134 




TXS 




33 


CMP 


LETMAX 


84 




STA 


REP 


135 




LDX 


REP 


34 


BCS 


PCL 


85 




CLV 




136 




LDY 


COLONNE 


35 


BCC 


LETT RE 


86 




JSR 


*FF58 


137 




LDA 


LIGNE 


36 CTRL 


CMP 


#*88 


87 




BVC 


PRECAL 


138 




STA 


TEMP 


37 


BNE 


CTRT 


88 




BVS 


REV I EN 


139 




JSR 


BASCALC 


38 


BEQ 


ARRIERE 


89 


ARRI ERE 


CLV 




140 


CALIN 


DEX 




39 CTRT 


CMP 


»*8D 


90 




JSR 


*FF58 


141 




BEQ 


TROUVE 


40 


BNE 


CTRU 


91 




BVC 


EFFACE 


142 


CALI 


INC 


TEMP 


41 REV I EN 


LDA 


CV 


92 




DEC 


REP 


143 




LDA 


TEMP 


42 


JSR 


BASCALC 


93 




LDA 


REP 


144 




JSR 


BASCALC 


43 


LDY 


CH 


94 




BNE 


CAVA 


145 




LDA 


(BASE) ,Y 


44 


LDA 


REP 


95 




LDA 


CHOIX 


146 




EOR 




45 


ORA 


#*C0 


96 




BNE 


CAVA 


147 




BEQ 


CALI 


46 


STA 


(BASE) ,Y 


r t 


cr rnoL 


1 o/\ 




148 




BNE 


CALIN 


47 


RTS 




98 




DEX 




149 


TROUVE 


BIT 


*FF58 


48 CTRU 


CMP 


«*95 


99 




DEX 




150 




RTS 





RECAPITULATION 



9000- 


A5 


25 


20 


CI 


FB 


A4 


24 


A9 


9008- 


5F 


91 


28 


A9 


01 


85 


03 


A5 


9010- 


00 


20 


CI 


FB 


B8 


20 


58 


FF 


9018- 


50 


51 


18 


A9 


CI 


65 


02 


85 


9020- 


04 


AD 


00 


CO 


10 


FB 


2C 


10 


9028- 


CO 


C9 


CI 


90 


06 


C5 


04 


BO 


9030- 


FO 


90 


4E 


C9 


88 


DO 


02 


FO 


9038- 


5D 


C9 


8D 


DO 


OE 


A5 


25 


20 


9040- 


CI 


FB 


A4 


24 


A5 


03 


09 


CO 


9048- 


91 


28 


60 


C9 


95 


DO 


D2 


B8 



9050- 


20 


58 


FF 


50 


51 


E6 


03 


A5 


9058- 


03 


C5 


02 


90 


04 


FO 


02 


A9 


9060- 


01 


85 


03 


B8 


20 


58 


FF 


50 


9068- 


04 


70 


B6 


50 


52 


BA 


CA 


CA 


9070- 


9A 


B8 


20 


58 


FF 


50 


68 


B8 


9078- 


20 


58 


FF 


50 


42 


2C 


58 


FF 


9080- 


60 


48 


B8 


20 


58 


FF 


50 


IE 


9088- 


68 


38 


E9 


CO 


85 


03 


B8 


20 


9090- 


58 


FF 


50 


D9 


70 


A7 


B8 


20 


9098- 


58 


FF 


50 


OA 


C6 


03 


A5 


03 


90A0- 


DO 


BF 


A5 


02 


DO 


BB 


BA 


CA 


90A8- 


CA 


9A 


AO 


27 


Bl 


28 


09 


CO 



Pom's n° 11 



90B0- C9 EO 90 02 E9 40 91 28 

90B8- 88 10 Fl 2C 58 FF 60 BA 

90C0- CA CA 9A AO 28 88 Bl 28 

90C8- C9 AO FO F9 49 EO FO F5 

90D0- Bl 28 29 3F 91 28 88 C4 

90D8- 01 BO F5 2C 58 FF 60 BA 



90E0- CA CA 9A A6 03 A4 01 A5 

90E8- 00 85 05 20 CI FB CA FO 

90F0- OF E6 05 A5 05 20 CI FB 

90F8- Bl 28 49 AO FO F3 DO EE 
9100- 2C 58 FF 60 



Les logiciels de traitement de texte 

Guy Lapautre 



Avant d'aborder l'analyse de Guten- 
berg, il m'a semble interessant d'exa- 
miner la conception globale d'un sys- 
teme de traitement de texte sur 
micro-ordinateur. Pour cela, nous 
allons comparer a Gutenberg deux 
classiques : Magic Window et Apple 
Writer II. 

Magic Window 

Au lancement, Magic Window pro- 
pose un menu permettant de s'orien- 
ter vers l'edition, 1'impression. la ges- 
tion des disques, ... 

Dans la plupart des cas, ce premier 
choix dirige vers un second menu. 
Par exemple. la fonction de gestion 
des disques proposera des options 
telles que sauvegarde ou relecture. 
annulation... 

Quand on est. a l'interieur de l'option 
edition, le mode de fonctionnement 
normal est le remplacement : taper 
sur une touche, quel que soit l'en- 
droit ou Ton se trouve dans le texte, 
provoque le remplacement de l'an- 
cienne frappe par la nouvelle et, si 
Ton est en fin de texte, l'ajout du 
nouveau caractere. 

Si on desire inserer un ou des carac- 
tere(s) a l'interieur d'un texte, il 
convient de se placer d'abord en 
mode insertion. 

Enfin, les formats d'impression font 
partie integrante du texte, si on choi- 
sit de les sauvegarder dans l'option 
"texte formate". 

II s'agit la d'une des grandes origina- 
lites de Magic Window. Par ailleurs, 
les textes ainsi sauvegardes le sont 
en binaire. lis tiennent moins de 
place sur disque que le meme fichier 
en code ASCII, et les echanges dis- 
que sont plus rapides. 

Apple Writer II 

Au lancement, Apple Writer II se met 
en option edition, invitant a entrer di- 



rectement un texte. Si ce n'est pas ce 
qu'on desire faire, il faut demander 
un menu (disques, impression, fonc- 
tions auxiliaires). ou effectuer directe- 
ment une commande qui ne sort du 
mode edition que pendant son exe- 
cution (sauvegarde, lancement d'une 
impression). 

Le mode de fonctionnement normal 
est 1'insertion : taper sur une touche 
provoque 1'insertion du caractere 
frappe avant celui sur lequel se 
trouve le curseur. 

Si on desire proceder a un remplace- 
ment. il faut choisir ce mode particu- 
lier (qui ne permet d'ailleurs que 
1' utilisation des touches imprimables, 
a l'exclusion de toute cle de fonction 
ou de deplacement). 

Les formats d'impression sont inde- 
pendents des textes : le meme format 
peut etre utilise pour plusieurs textes. 
mais il faut demander chaque fois 
1' utilisation d'un format d'impression. 

Par ailleurs, Apple Writer II possede 
deux fonctionnaiites originales : une 
fonction Glossaire permettant 1' usage 
tres simple de mots ou petites phra- 
ses a caractere repetitif. et un lan- 
gage associe permettant de program- 
mer des commandes. le "WPL". 

Gutenberg 

Au lancement, Gutenberg propose 
une ligne de commande non 
commentee, qui permet de decider 
de l'utilisation d'un fichier (repertoire 
du disque, police de caracteres, fi- 
chier texte....). 

La mise en position d'edition se fait 
par l'appel d'un fichier texte: il faut 
ensuite appeler la fonction choisie 
(par exemple : insertion). Pour chan- 
ger de fonction, il convient de sortir 
du mode en cours (par ESC), puis 
de demander une nouvelle fonction. 

Les formats d'impression sont totale- 
ment independants des fichiers texte 



Le logiciel en propose une grande 
variete, et il est possible d'en creer 
d'autres. Un systeme de "macros" 
permet d'artacher un format standard 
a un texte. Un questionnement prea- 
lable a 1'impression permet le choix 
d'un format non standard. 

Une grande originalite de Gutenberg 
est la possibility de dessiner ses pro- 
pres polices de caracteres : Guten- 
berg utilisant un ecran graphique, 
toute fantaisie de representation est 
possible : symboles mathematiques. 
sigles. logos,... En contrepartie, 1'im- 
pression de ces caracteres speciaux 
est tres lente. 



Commentaires 

Ces differences fondamentales de 
conception font qu'il est trompeur de 
donner une cote de commodite d' uti- 
lisation ou de facilite d'apprentissage 
a un logiciel de traitement de texte : 
certains preferent le menu a la ligne 
de commandes. D'autres preferent 
travailler normalement en mode rem- 
placement (notamment ceux qui ont 
appris la dactylographie sur machine 
classique). D'autres enfin voudront 
avoir un texte pret a l'emploi. y 
compris ses options d'impression. 

On peut done comparer les fonction- 
naiites. Les fonctionnaiites de base 
sont a peu pres les memes partout. 
seules variant les conditions d' utilisa- 
tion. Par exemple, les displacements 
dans le texte peuvent se faire uni- 
quement grace aux fleches de direc- 
tion, ou utiliser des caracteres de 
controle. 

En revanche (et nous en avons deja 
vu quelques exemples), il existe pour 
chacun des fonctions particulieres qui 
peuvent sembler primordiales aux 
uns, compte tenu du type de travail 
qu'ils effectuent, inutiles aux autres 
qui les trouveront sans interet. 



20 



Pom's n" 11 



Gutenberg a l'essai 

Guy Lapautre 



Gutenberg est un logiciel de traite- 
ment de texte propose par Guten- 
berg Software Limited, fonctionnant 
sur Apple 11+ 64K ou //e. 

11 existe en 2 versions : Gutenberg 
Junior (version testee ici) et Guten- 
berg Senior, presentant un certain 
nombre de fonctionnalites supple- 
mentaires. dans des domaines qui se- 
ront indiques au cours de l'analyse. 

Gutenberg Jr est presente sur une 
disquette double face contenant. 
outre le programme proprement dit. 
divers fichiers utiles et, sous forme de 
"demos", tout ce qui est necessaire 
pour editer le manuel sur impri- 
mante. 

Si certains usages (limites) s'accomo- 
dent d'imprimantes diverses, le logi- 
ciel est essentiellement ecrit pour 
rimprimante matricielle Apple. Un 
jeu important d'interfaces graphiques 
est propose. L' interface PROM 1/2 
pour Apple ne Test pas. mais il suffit 
(nous 1'avons decouvert par tatonne- 
ments...) de declarer peremptoire- 
ment qu'on possede une interface 
Epson et tout marche bien (rien ne 
marche avec les autres interfaces 
proposees). 

Plusieurs modes de fonctionnement 
sont possibles, en 40 ou 80 colon- 
nes, en utilisant ou non l'ecran gra- 
phique Haute Resolution pour les ca- 
racteres speciaux. Mais ATTENTION, 
l'option la plus avancee : 80 colon- 
nes et ecran graphique. necessite une 
carte 80 colonnes ETENDUE (cette 
limitation fait l'objet de 2 lignes 1/2 
"cachees" au fond d'un paragraphe). 

Mode d'analyse 

Nous evaluons les avantages et in- 
convenients de Gutenberg en fonc- 
tion de ce qu'un utilisateur de traite- 
ment de texte est en droit d'attendre. 
c'est pourquoi nous allons d'abord 
tenter une definition de cet utilisa- 
teur : il ne peut pas se contenter des 
possibility offertes par les traitements 
de texte classiques. II est pret a payer 
ces exigences par une complexity 
plus grande a 1'usage. Par exemple : 

- professeur de mathematiques vou- 
lant faire des polytopies 

- electronicien utilisant les symboles 
de sa profession 

- styliste cherchant a associer des 
images, des logos... 

Avantages et inconvenients sont pre- 
sents sous 7 teres de chapitre : 

1 - Approche du logiciel 



2 - Les fonctions d'entree de texte 
(edition) 

3 - Le formatage des pages et para- 
graphes 

4 - L'impression 

5 - Les echanges disque 

6 - La creation de "polices de carac- 
teres" 

7 - La documentation 



1 - Approche du logiciel 

Au lancement. le logiciel propose 
d'abord de choisir l'interface pour 
rimprimante matricielle Apple que 
Ton va utiliser. puis d'indiquer le 
connecteur sur lequel cette carte est 
enfichee. enfin de choisir ou non le 
mode "demos". 

En mode de fonctionnement normal, 
une ligne de commande apparalt en 
haut de l'ecran. indiquant notam- 
ment le "mode ecran" (haute resolu- 
tion ou non) et le lecteur de disque 
en usage (evidemment le 1 lors du 
demarrage) et proposant de demar- 
rer par "READY". 

On peut alors decider de ce qu'on va 
faire. par exemple. changer de dis- 
que ou de mode ecran. travailler en 
40 ou 80 colonnes ou, apres avoir 
presse la touche "RETURN", editer 
le catalogue du disque. lire un fichier, 
executer un programme utilitaire de 
gestion de disque.... 

Aucun mnemonique n'etant propose, 
il y a done au depart une dizaine de 
codes operatoires a connaitre : 

1 ou 2 - lecteurs de disques 

4 ou 8 - 40 ou 80 colonnes 

I ou O - travail en haute resolution 

ou non (high; lOw) 

6 - "re-boote" le systeme 

Ctrl-D - mode "demos" 

Ctrl-P - programme d'impression 

RETURN - demande d'un nom de 

programme ou du catalogue 

Nous retrouverons un peu tout au 
long des diverses fonctions un certain 
esoterisme parfois genant. C'est ainsi 
qu'en mode edition G est utilise pour 
une recherche (comme GET et non 
pas F comme FIND) et X pour le 
remplacement d'un caratere par un 
autre (eXchange). 

Avantages - L'ecran n'est pas en- 
combre par un menu. Une seule 
frappe suffit frequemment pour reali- 
ser une commande. L'execution de 
cette commande. dans la mesure ou 
il n'y a pas d'appel au disque. est 
tres rapide. 



Inconvenients - II faut avoir une 
bonne memoire pour emmagasiner 
tous les codes, ou un synoptique tres 
bien fait (il manque cruellement dans 
la documentation). 

Synthese - II SEMBLE que les au- 
teurs de Gutenberg n'aient pas mis 
au premier rang de leurs preoccupa- 
tions le souci de simplicity et de 
"convivialite". pour employer un 
terme a la mode. C'est clair et 
concis. c'est tres abstrait. II s'agit la 
d'une constatation et non d'un juge- 
ment. 

2 - Les fonctions d'en- 
tree de texte (edition) 

Toutes les fonctions classiques sont 
la : deplacement du curseur dans le 
texte. insertion, effacement. rempla- 
cement. recherche par le contenu. 
deplacement de paragraphes. etc. 
Elles sont le plus souvent assorties 
d'un grand luxe de sous-fonctions. 

A titre d' exemple. voici les sous-fonc- 
tions permettant de "detruire" tout 
ou partie d'un texte : 

• K detruit le caractere sous le cur- 
seur 

• DELETE detruit un mot 

• DW aussi 

• DL detruit une ligne 

D suivi des fleches : 

• gauche detruit le debut d'une 
ligne 

• droite detruit la fin d'une ligne 

• haut detruit depuis le debut de 
l'ecran 

• bas detruit jusqu'a la fin de l'ecran 
D suivi de : 

• Ctrl-S detruit tout l'ecran 

• Ctrl-M marque la limite d une des- 
truction 

Tout ce qui est ainsi detruit est irre- 
cuperable. 

Pour passer d'une fonction a une 
autre, il faut toujours "revenir a la 
case depart" par ESC. Soit par 
exemple la phrase "LOUI VAS A 
L "ECOLE" qu'on desire transformer 
en "LOUIS VA A L'ECOLE". Voici 
une sequence normale d" operations : 

Commande Y (insertion d'un carac- 
tere) 

se placer derriere LOUI 

taper S 

ESC 

Commande X (remplacement) 
se placer sur " 



Pom's n° 11 



taper ' 
ESC 

Se placer sur le S de VAS 
K (destruction d'un caractere) 

On peut imaginer plus simple ! 

ATTENTION, il y a un piege dans 
lequel l'auteur de ces lignes est sou- 
vent tombe : une sequence d'inser- 
tion doit se terminer par un retour 
aux caracteres normaux. si on utilisait 
des caracteres programmes. Si on a 
omis de le faire. aucune fonction ne 
reste disponible. Un "A" sur la ligne 
de commande previent de cette si- 
tuation. En sortir par "Pomme ou- 
verte - RETURN"". 

Avantages - TRES larges possibilities 
dans de nombreux domaines (par 
exemple recherche dans le texte. re- 
copies, remplacements). Ces possibi- 
lity ne seront probablement pas 
utiles a tous. mais chacun peut y pui- 
ser ce qui l'interesse (c'est d'ailleurs 
ecrit dans la notice). 

Inconvenients - Memes remarques 
que pour le chapitre precedent, en 
notant qu'il ne s"agit plus d'une di- 
zaine de codes, mais de plusieurs di- 
zaines de sous-options (sans doute 
plus de 100 en comptant toutes les 
variantes). 

Synthese - Sans trop perdre des 
fonctionnalites du produit. il eut ete 
possible de faire plus simple. La 
frappe de textes tres longs sans 
"effets speciaux" est lourdement pe- 
nalisee par le systeme d'edition 
adopte par Gutenberg. 

3 - Le formatage des 
pages et des paragraphes 

La aussi. large panoplie de fonction- 
nalites, obligeant si on veut utiliser 
toutes les astuces. a une certaine jon- 
glerie avec les "macros" : ce sont des 
commandes assez simples permettant 
la pagination, la presentation en 2 
colonnes. l'edition de lettres. d'eti- 
quettes. les differentes sortes de titra- 
ges hauts et bas. la numerotation en 
decimal ou en romain. I'indentation 
des paragraphes. leur numerotation, 
les sauts de lignes, ... 

Des macros commandent aussi I'im- 
pression : types de caracteres. gras 
ou maigres. espacement proportion- 
nel ou non. avec des largeurs va- 
rices ainsi que les debuts et fin de 

colonnes. de pages, enchainement 
d'impressions... 

11 existe au moins une centaine de 
ces macros. Mais il existe aussi. pour 
traiter les cas courants. des formats 
standards sur la disquette. A noter 
que des formats plus nombreux sont 
proposes par Gutenberg Sr. ainsi que 
la possibility de creer de nouvelles 
macros. 



Les macros etant incluses dans le 
texte. le format d'impression. s'il est 
standard, fait done partie de ce der- 
nier et lui sera toujours attache. Une 
precaution a observer : le format uti- 
lise doit etre disponible sur la dis- 
quette. Gutenberg le recherchera au- 
tomatiquement. 

Si en revanche vous desirez utiliser 
vos propres formats. 1" indication 
devra en etre donnee au moment de 
1' impression. 

Avantages - Comme deja vu. tres 
larges possibilites. avec en plus le 
moyen de s'affranchir du maniement 
pas toujours simple des macros grace 
aux formats preconstruits. 

Inconvenients - Le nombre consi- 
derable de macros fait qu'il est tota- 
lement impossible de les connaltre 
par coeur. L'absence d un bon sy- 
noptique se fait sentir. a moins qu'on 
ne renonce aux possibilites offertes... 

Synthese - Parfois abondance nuit. 
Mais ne jetons pas la pierre a qui a 
voulu bien faire. Quel dommage qu'il 
n'y ait pas un resume des comman- 
des principales ! 

4 - L'impression 

Gutenberg est ecrit pour impression 
sur l'imprimante matricielle Apple (cf. 
debut de revaluation). II est possible, 
mais nullement certain, qu'il puisse 
fonctionner avec d'autres impriman- 
tes. De meme. une liste d'interfaces 
est proposee. D'autres sont possibles, 
la carte PROM 1/2 par exemple. 
Chaque utilisateur ne disposant pas 
d'une des configurations standard 
devra tatonner. sans etre sur du 
succes. 

L'impression d'un texte ecrit en ca- 
racteres "normaux" se fait sans pro- 
blemes particuliers. Veiller seulement 
a ce que le format d'impression soit 
present sur la disquette. 

En revanche, l'impression des carac- 
teres speciaux (Alternate Character 
Set) se fait tres lentement. car c'est 
une impression de GRAPHIQUE. Le 
passage, ligne par ligne, de l'impres- 
sion texte a l'impression graphique. 
produit un effet curieux. Le papier 
monte et descend: il y a des retours 
arriere, mais strictement aucun pro- 
bleme n'a ete rencontre. Le tout 
semble parfaitement fiable. 

Attention : si on utilise dans un texte 
des caracteres speciaux. il faut veiller 
a ce que la police de caracteres 
(FONT) utilisee pour l'edition se 
trouve bien sur le meme disque que 
le texte au moment de l'impression. 

On peut regretter qu'il ne soit pas 
possible d'imprimer un texte en me- 
moire sans passer par la sequence : 

Sauvegarde sur disque (automatique) 



Impression 

Rappel (si on veut reutiliser le meme 
texte) 

sauf dans le cas particulier ou on 
veut faire plusieurs impressions suc- 
cessives du meme texte. 

II existe des macros permettant de 
"jouer" avec les caracteres. y 
compris par exemple double souli- 
gnement ou italique. et d'autres pour 
programmer des impressions. 

Signalons d'autre part une option 
"DUMP" qui permet l'impression to- 
tale d'un texte. Y COMPRIS les ca- 
racteres de controle. 

Avantages - Tres grande souplesse 
et tres grande fiabilite de l'impres- 
sion, utilisant toutes les possibilites de 
l'imprimante matricielle Apple. On 
peut produire des textes de tres 
bonne qualite (voir exemple en an- 
nexe). 

Inconvenients - Tout juste peut-on 
citer l'impossibilite d'imprimer "en 
passant" un texte en memoire. 

Synthese - L'impression est incon- 
testablement un point fort de Guten- 
berg, et il faudrait etre bien difficile 
pour ne pas apprecier les performan- 
ces du logiciel dans ce domaine. 

5 - Les echanges disque 

lis sont relativement nombreux mais 
generalement assez brefs. C'est sans 
doute la raison pour laquelle les au- 
teurs proposent de faire une copie de 
la disquette Master, copie qui ne sera 
pas capable d'initialiser le systeme. 
mais qui pourra remplacer le Master 
apres le "boot" initial. 

La seule precaution notable a pren- 
dre consiste a s' assurer que l'ensem- 
ble de ce dont on a besoin pour edi- 
ter ou imprimer un texte est present : 
texte lui-meme. format et police de 
caracteres. 

Le passage d un lecteur de disque a 
1' autre (2 lecteurs sont indispensa- 
bles) se fait tres simplement par la 
frappe du chiffre 1 ou 2 quand on 
est en position "READY". 

Le systeme comporte un certain 
nombre de fonctionnalites interessan- 
tes : 

Tout d'abord. il est possible d'editer 
ou d'imprimer le catalogue d une dis- 
quette. 11 est egalement possible de 
choisir un fichier (texte, format ou 
police de caracteres) en pointant sur 
le catalogue. 

Ensuite. un certain nombre de 
commande type DOS sont directe- 
ment accessibles a partir de Guten- 
berg : initialisation, copie totale ou 
partielle. destruction, ... 

II n'y a pas lieu de faire de commen- 
taires speciaux a ce niveau. 



Pom's n° 11 



6 - La creation de carac- 
teres 

C'est la principale originalite de Gu- 
tenberg par rapport aux traitements 
de texte classiques. celle qui fait que 
Gutenberg sera particulierement ap- 
precie par les utilisateurs dont les be- 
soins sortent de I'ordinaire. 

II existe une option "SCREEN" a 
partir de laquelle on peut dessiner 
sur une matrice de 7*10 tout carac- 
tere. au sens le plus large du terme : 
alphabet etranger. symboles mathe- 
matiques. composants electroniques. 
structures chimiques. logos, orne- 
mentations diverses.... 

Si une matrice est trop petite, on 
peut en utiliser plusieurs. Chaque 
matrice sera designee par une touche 
au clavier. La police de caracteres 
speciaux ainsi construite sera utilisee 
(et creee) en faisant preceder la tou- 
che frappee de 7" (pour 1 carac- 
tere). ou de "Pomme ouverte RE- 
TURN" (pour une suite de 
caracteres). Dans ce dernier cas. on 
desamorcera 1' utilisation des caracte- 
res speciaux par un second "P.O. 
RETURN". Surtout. NE PAS L'OU- 
BLIER (cf. remarque dans le chapitre 
edition). 

Gutenberg Jr propose une de ces 
polices de caracteres. comportant 
surtout des caracteres accentues de 
format reduit... et d'esthetique discu- 
table - voir l'exemple en annexe. 

Gutenberg Sr est beaucoup plus 
riche dans ce domaine. 

L'exemple annexe donne un apercu 
du type de caracteres et symboles 
qu'il est possible de creer et d'impri- 
mer. A noter. pour les lecteurs regu- 
liers de Pom's, que la methode de 
creation de caracteres est tres proche 
de celle decrite dans le Pom's 8. 
pages 21-23. 



Avantages - Indiscutables. les avan- 
iaqt's que comporte cette fonctionna 
lite font de Gutenberg un traitement 
de texte a part. 

Inconvenients - Lenteur de l'im- 
pression des qu'on est en presence 
de caracteres speciaux. 

Synthese - Le lecteur ne sera pas 
etonne de voir l'auteur particuliere- 
ment seduit. Mais un conseil s' im- 
pose : nous avons deja vu a plusieurs 
reprises que les performances de Gu- 
tenberg se payaient au prix d une 
certaine complexity, ce qui est bien 
normal. C'est vrai aussi ici. Guten- 
berg est sans doute le marteau-pilon 
pour ecraser la mouche. s'il faut en- 
trer uniquement du texte banal au ki- 
lometre. 

7 - La documentation 

Gutenberg est vendu SANS DOCU- 
MENTATION IMPRIMEE digne de 
ce nom : l'utilisateur imprime lui- 
meme sa documentation en utilisant 
les demos proposees. On peut ou 
non apprecier une methode qui 
certes reduit les couts. mais qui 
complique la tache de l'utilisateur 
(des heures de travail), et donne des 
resultats dont la qualite n'est pas 
comparable a celle d'un manuel bien 
fait. 

Cette documention (en anglais) pre- 
sents des lacunes. dont la principale 
est le manque total (deja signale) 
dun synoptique resumant les 
commandes PRINCIPALES. Certes. 
de-ci de-la. l'utilisateur est avise que 
telle option est indispensable, alors 
qu'on peut remettre a plus tard 
l'etude de telle autre. Mais comme 
c'est noye dans I'ensemble du texte. 
la lecture n'en n'est pas facilitee. 

On peut aussi lui reprocher de ne 
pas mettre en valeur la grande origi- 
nalite que constitue la creation de 



polices de caracteres : tres peu 
d'exemples sont presentes. alors que 
les formats et leurs macros tiennent 
de nombreuses pages. 

Nous n'apprecions nullement cette 
documentation, s'agissant d'un pro- 
duit qui n'est pas vendu a bas prix. 



Conclusion 

Gutenberg apparait comme un traite- 
ment de texte presentant de nom- 
breuses originalites et des fonctionna- 
lites tres variees. 

Parmi ses faibiesses - Un manie- 
ment complexe. obligeant tres sou- 
vent a "hacher" le travail pour passer 
d'une option a une autre - Le fait de 
n'accepter. en principe. que l'impri- 
mante matricielle Apple - Une docu- 
mentation totalement indigne d'un 
logiciel de cette classe. 

Parmi ses forces - La possibility 
pour l'utilisateur de creer ses propres 
"polices de caracteres" - L'impres- 
sion. surprenante au premier abord. 
mais tres fiable. d'un melange de 
texte et de graphique - La possibility, 
malgre de nombreux tatonnements 
au debut, de trouver dans la pano- 
plie des fonctionnalites offertes celles 
qui conviennent a un probleme parti- 
culier. 

En synthese - Gutenberg est peut- 
etre la ROLLS des traitements de 
texte sur Apple. II fut un temps ou la 
ROLLS etait livree chauffeur 
compris. Sans aller aussi loin. Guten- 
berg n'est sans doute pas un traite- 
ment de texte a mettre entre toutes 
les mains, mais en revanche il se- 
duira tous ceux -nombreux-qui veu- 
lent sortir du standard et du banal. 

Gutenberg, le second traitement de 
texte ? 



EXEMPLE 

Voici un exemple de -frappe "au 
kilometre", auec just i -f i cat i on a 
gauche. On utilise pour ce -faire 
la "MACRO" QL . 



Quelques exemples de 
composes par l'utilisateur: 



caracteres 



(a>: 3 +bx z +c;<) dx 



On peut, aussi faien sur 
travailler en pleine 
justification: gauche 
et droite. 




Ce texte est un exemple d'impression 
programmed sur 2 colonnes. De nombreux 
autres formats d'impression sont disponibles. 



Pom's rf 11 



■ 



23 



Pommesoft 



Philippe Faure 



Les programmes presentes ici per- 
mettent de charger 1' Applesoft dans 
la carte langage. puis de le modifier. 
Les avantages que Ton peut retirer 
de I' implantation d'un BASIC modi- 
fie sont nombreux : 

• possibility de programmer en lan- 
gue francaise (ou autre, bien sur, 
selon les modifications apportees), 

• possibility de "traduire" en Pom- 
mesoft un programme deja ecrit 
en Applesoft. II suffit de selection- 
ner le Pommesoft et de charger le 
programme : la traduction est au- 
tomatique, 

• de meme. la demarche inverse est 
possible, et ce de facon automati- 
que grace aux commandes &A et 
&P qui permettent respectivement 
de passer en Applesoft et en Pom- 
mesoft en cours de travail. Ce 
transfert s'effectue sans perte du 
programme (contrairement aux 
ordres FP et INT). 

• modification de certaines routines 
de 1' Applesoft (comme le "GAR- 
BAGE COLLECTION"...). 

Le systeme impose un certain nom- 
bre de contraintes, et tout d'abord au 
niveau du materiel minimum requis : 

• un lecteur de disquettes, 

• sur un Apple II +, il faut avoir 
"une carte langage" d'au moins 
16K. 

• cette carte est incluse dans 1' Apple 
He, sur lequel a d'ailleurs ete de- 
veloppe ce programme. 

Par ailleurs. le programme EDI- 
TEURPS autorise la modification 
d'un ordre ou d'une commande et 
celle des messages d'erreurs. Cepen- 
dant. on ne peut depasser la lon- 
gueur totale initiale des ordres, ni 
celle des messages. Si Ton veut rem- 
placer INPUT par DEMANDE, il faut 
reduire un autre ordre (par exemple 
SHLOAD qui ne sert que sur cas- 
sette). En fait, il s'agit d'une restric- 
tion relativement peu contraignante 
car, les ordres devant toujours etre 
tapes au clavier, la tendance serait 
plutot a la contraction qu'au deve- 
loppement ! 

De plus, tous les ordres "cassette" 
peuvent etre reduits a un caractere 
(si possible de controle du type 
DEL). 

Les messages du SED ne sont pas 
modifies mais il suffit d'utiliser un 
programme du style SPRECHEN SIE 
DOS paru dans Pom's (ou "DOS 
BOSS" par Beagle Brothers), ou de 
s'en inspirer, pour y parvenir. 



Implantation et struc- 
ture 

Le systeme Pommesoft se compose 
de plusieurs elements : 

AMPERPOMME : programme qui 
utilise l'ampersand (&) et qui permet 
de changer de BASIC. 
PSCREATEUR : utilise la routine de 
S.H.LAM pour mettre dans la carte 
RAM 1' Applesoft trouve en ROM. 
EDITEURPS : edition, modification, 
ecriture. sauvegarde du Pommesoft. 
PS : "Pommesoft + Moniteur" 
charge dans la carte langage. resultat 
des modifications. 

AMPERPOMME 

II s'agit d un programme qui a ete 
publie dans NIBBLE EXPRESS No 
2. page 143. et qui permet, grace au 
vecteur &. de creer de nouvelles 
fonctions en assembleur pour le 
BASIC en affectant a chaque lettre 
de 1' alphabet l'adresse d'un sous-pro- 
gramme en langage machine. Si la 
lettre choisie n'est pas assignee, il y a 
branchement sur SYNERR ($DEC9) 
pour affichage du message SYNTAX 
ERROR. 

La version AMPERPOMME a ete 
modifiee. car a l'origine. le BRUN 
impliquait une remise a zero (vers 
SYNERR). ce qui obligeait a POKEr 
les adresse desirees. La version origi- 
nate comportait en outre un test sur 
"(" pour le passage de parametres. 
qui. lui aussi. a ete supprime (ce qui 
explique le RTS premature et les 
NOP). Sur la liste de desassemblage 
ci-apres. on trouve a gauche 1' AM- 
PERPOMME et a droite la version 
originale. que Ton peut done retablir 
mais avec "&A(" en place de "&A" : 



030Q-A9 4C 
0302-80 F5 03 
0305-A9 20 
0307-80 F6 03 
030A-A9 03 
030C-80 F7 03 
Q30F-60 

0310- 32 

0311 - A? C9 
Q313-9D 48 03 
0316-A9 DE 
0318-90 4C 03 
031B-CA 
031C-CA 
0310-10 F2 
031F-40 
0320-80 7F 03 

0323- 20 70 E0 

0324- B0 03 
0328-20 C9 DE 
0328-20 Bl 00 
032E-EA 
032F-EA 



LDA t$4C 

STA $03F5 
LDA t$20 
STA $03F4 
LDA #$03 
STA *03F7 
RTS 
??? 

LDA t$C9 

STA $034B,X 
LDA #$DE 
STA $034C,X 
DEX 
DEX 

BPL $0311 
RTS 

STA $037F 
JSR $E07D 
BCS $032B 
JSR $0EC9 
JSR $00B1 
NOP 
NOP 



A2=LDX 



20=JSR 



0330- EA NOP DE 

0331- AD 7F 03 LDA $037F 

0334- 38 SEC 

0335- E9 41 SBC t$41 

0337- 0A ASL 

0338- AA TAX 

0339- BD 4B 03 LDA $034B,X 
033C-8D 49 03 STA $0349 
033F-BD 4C 03 LDA $034C,X 
0342-8D 4A 03 STA $034A 
0345-20 B7 00 JSR $00B7 
0348-4C 80 03 JNP $0380 
ADRESSES PAR LETTRE 
034B-84 03 A=$0384 A 

0340- C9 DE B=SYNERR B 
034F-C9 DE C 
0351 -C9 DE D 
0353-C9 DE E 
0355-C9 DE F 
0357-C9 DE 6 
0559-C9 DE H 
035B-C9 DE I 
035D-C9 DE J 
035F-C9 DE K 
0361 -C9 OE L 
0363-C9 DE M 
0365-C9 DE N 
0367-C9 DE 
0369-80 03 P=$0380 P 
036B-C9 0E Q 
034D-C9 DE R 
036F-C9 DE S 
0371 -C9 DE T 
0373-C9 DE U 
0375-C9 DE V 
0377-C9 DE U 

0379- C9 DE X 
037B-C9 DE Y 
037D-C9 DE Z 
037F-00 

ROUTINES POUR A ET P 

0380- 80 80 CO STA $C080 (Cart*) 

0383- 60 RTS 

0384- 80 82 CO STA $C082 (ROM) 
0387-60 RTS 

NDLR : cette routine ne constitue 
certainement pas le moyen le plus 
simple pour n'utiliser que les instruc- 
tions &A et &P, mais nous vous la 
donnons neanmoins en l'etat car elle 
pourra vous etre utile pour d'autres 
applications. 

PSCREATEUR 

En utilisant la routine de S.H.LAM, 
ce programme fait une copie dans la 
RAM de I' Applesoft ROM et du mo- 
niteur. Ensuite. il charge "VOC" qui 
est une version legerement modifiee 
des tokens Applesoft (tokens cou- 
rants et non utilises en graphique) et 



a&BBBB&SggBBR : 



Pom's n" 11 



des messages BREAK. REENTER... 
Vous trouverez en -fin d'article la liste 
des tokens de VOC et leurs equiva- 
lents standards. 

Les messages d'erreurs ne peuvent 
pas etre charges de cette maniere car 
il faut modifier plusieurs adresses 
dans le code de 1* Applesoft. Du fait 
de l'importance de l'Applesoft (42 
secteurs). il est impossible d"en avoir 
une copie entiere sur papier. 

II est bon de rappeler ici que les mo- 
niteurs de 1' Apple 11+ et de 1 Apple 
//e ne sont pas identiques. Nous ver- 
rons plus loin comment creer concre- 
tement un fichier PS. mais notez de 
suite qu'il est indispensable de faire 
"RUN PSCREATEUR" avant d'exe- 
cuter EDITEURPS pour une pre- 
miere manipulation sur votre propre 
materiel. 

Structure de la table des 
tokens ($D0D0-$D25F) 

II est tres facile de modifier cette 
table car tous les mots-clefs sont a la 
suite les uns des autres et I" interpre- 
ter les "repere" par leur dernier ca- 
ractere qui a le bit 8 "on ". 
Par exemple. END est code "$45 
$4E $C4" et $C4 est egal a $44 (D) 
+ $80. $80 correspondant a 128 en 
decimal (cf EDITEURPS lignes 240 
(lecture) et 3030 (ecriture)). 

Les messages d'erreurs sont d'un 
acces different car l'Applesoft se sert 
du registre X pour pointer sur le 
debut du message a ecrire. en se de- 
calant du debut de la table des mes- 
sages selon la valeur de X. II faut 
done rechercher dans l'Applesoft les 
references a "ERROR" et donner les 
nouvelles valeurs de decalage (cf 
EDITEURPS lignes 3070 a 3240). 

EDITEURPS 

Ce programme permet de modifier 
les instructions et les messages de 
l'Applesoft. Nous en presenterons les 
fonctions dans I'ordre des menus qui 
vous sont proposes. 

Premier menu 

1 - CHARGEMENT DE PS 

2 - SUITE DU PROGRAMME 

3 - SORTIE -> BASIC 

1 : chargement de PS et d'AMPER- 
POMME. puis passage au deuxieme 
menu. 

2 : passage au deuxieme menu. 
C'est le choix que vous devez faire 
lors de la creation de votre premier 
fichier PS. 
3 : fin. 

Deuxieme menu 

1 - COMMANDES APPLESOFT 
(modification des instructions) 

2 - MESSAGES D'ERREURS (modi- 
fication des messages) 



3 - SORTIE -> BASIC 

Apres le choix des commandes ou 
messages, vous etes amene au menu 
suiVant. 

Troisieme menu 

1 - LECTURE EN RAM 

2 - LECTURE EN ROM 

3 - SORTIE -> BASIC 

1 : lecture des ordres ou messages 
stockes en RAM. 

2 : lecture des tokens standards en 
DATA (lignes 50000 et suivantes). 
Pour une premiere edition, ce sont 
ceux que vous devez lire puisque. en 
principe, les modifications que vous 
apportez peuvent porter sur l'ensem- 
ble des instructions ou messages (les 
tokens "francises" de VOC seront 
alors remplaces par vos propres 
adaptations). L' option 1 serait a utili- 
ser ulterieurement pour une edition 
partielle sur un fichier PS deja enre- 
gistre. ou encore pour ne remplacer 
que certains tokens du fichier VOC 
des la premiere edition si la majorite 
d'entre eux vous convient. 



Mo t PARLER 
FRANCA iS . 




Menu general 

1 - VISUALISATION 

2 - MODIFICATION 

3 - ECRITURE 

4 - SAUVEGARDE POMMESOFT 

5 - SORTIE -> BASIC 

1 : la visualisation permet de voir les 
tokens modifies et leurs equivalents 
standards. 

2 : les modifications se font dans un 
tableau de chatnes A$( 150.1). Atten- 
tion, aucune modification n'est effec- 
tive tant qu'il n'y a pas eu ecriture 
dans la RAM (option 3). 

Vous pouvez traiter ies ordres en se- 
quence ou les appeler directement 
par leur numero. Un RETURN a vide 
conserve l'ancienne definition et 
passe a l'item suivant. En cas de mo- 
dification effective, la nouvelle defini- 
tion est repetee: un RETURN la va- 
lide. mais toute autre touche annule 
la modification. 

Le token numero 40 est tres impor- 
tant car il contient un complement 



pour respecter la longueur totale des 
tokens. Ce complement se fait auto- 
matiquement; en cours de modifica- 
tion on peut (il faut) le reduire au mi- 
nimum. 

Pour sortir de l'option "modification" 
avant la fin des tokens, il suffit de 
donner un numero superieur au 
nombre d' items. 

3 : ecriture dans la RAM du tableau 
A$ et modification des pointeurs s'il 
s'agit des messages d'erreurs. 
4 : sauvegarde du contenu de la 
carte sous le nom de PS. ATTEN- 
TION : s'il existait une ancienne ver- 
sion de PS, celle-ci est ecrasee. Pour 
eviter cela. ne pas oublier de la "re- 
nommer" apres 1' avoir chargee. 

Remarque importante 

Lors d'une modification des ordres, il 
ne faut pas oublier que l'interpreteur 
"regarde" du debut de la table vers 
la fin. Aussi ne doit-on pas trouver 
dans un mot une suite de caracteres 
equivalente a un autre mot qui lui 
succede. Je m'explique : j'ai eu des 
problemes a cause de LISTE qui ne 
voulait pas fonctionner comme un 
simple LIST, mais j'avais par ailleurs 
remplace READ par LIS. Comme 
READ se trouve avant LIST (et done 
LIS avant LISTE). ma commande 
etait interpretee "READ TE". ce qui 
me valait un beau message d'erreur ! 
Par contre. les ordres HGR et HGR2 
fonctionnent parfaitement car HGR2 
se trouve place avant HGR dans la 
table et. de ce fait, est interprete 
avant lui. 

II faut aussi eviter de reduire certains 
tokens : si I on remplace TO en A. 
par exemple. la variable A devient 
inutilisable en Pommesoft. 

Revectoriser le FRE(O) : 
FRE(16)CONFIG 

Ce petit programme montre 
comment, par l'intermediaire de la 
RAM. on peut facilement modifier 
l'Applesoft. 

En effet. lorsque la memoire libre se 
reduit a moins d'un K octets. l'Apple- 
soft procede automatiquement "au 
nettoyage". mais la routine employee 
(FRE(0)) est relativement lente. 
Pom's a repris dans son numero 2 
un article de Randy Wissinton. paru 
dans Call A.P.P.L.E. de janvier 
1981. qui proposait une routine de 
nettoyage-memoire beaucoup plus 
rapide, que nous baptiserons 
FRE(16) pour la suite. 
FRE(16)CONFIG charge cette rou- 
tine et modifie l'adresse d'appel au 
FRE dans l'Applesoft en RAM. II ne 
s'agit la que d'un exemple ou la mo- 
dification est assez "brutale" et loin 
d'etre optimisee. mais les resultats 
sont eloquents : en utilisant le pro- 
gramme ci-dessous le chiffre 100 est 
inscrit au bout d'une minute environ 



Pom's n" 11 



ffnnnnirminngiinmmrmmncMIIUBmilBfflMli 



■ 

25 



si 1'on se trouve en Pommesoft mo- 
difie. alors qu'il faut plus de 2 minu- 
tes trente pour 1'Applesoft standard ! 
10 DIM A$( 10000) 
20 A$(0) = "ABCDEFG" 
30 FOR J - 1 TO 20: A$(J) = 
A$(0) + STR$ (I) + A$(0) : NEXT : 
1 = 1+ 1: PRINT I : GOTO 30 

Un petit true en passant...: pour re- 
demarrer un programme BASIC par 
un GOTO (done sans alterer les va- 
riables), tout en gardant le DOS 
connecte (et eviter 1'ILLEGAL DI- 
RECT ERROR), il faut taper "'POKE 
51.128: GOTO XXXXX" (XXXXX 
etant le numero de ligne concerne). 
Cela permet. par exemple. de "re- 
nommer" le programme PS sur dis- 



quette et de redemarrer ensuite dans 
EDITEURPS sans rien effacer par un 
POKE 51.128: GOTO 250. 

N.D.L.R. : si vous ne possedez pas 
la disquette d accompagnement de 
ce numero et si la frappe au clavier 
n'est pas votre loisir favori. notez 
bien que la saisie du code de VOC 
n'est pas indispensable au fonction- 
nement de Pommesoft (vous devrez 
simplement faire une premiere edi- 
tion de PS sur l'ensemble des tokens 
standards, puisque qu'aucun d'entre 
eux n'aura ete francise dans la 
RAM). 

II faut dans ce cas enlever Tinstruc- 
tion BLOAD VOC" dans le pro- 
gramme PSCREATEUR. 



Si vous voulez .au contraire. saisir les 
codes hexadecimaux de VOC. vous 
pouvez utiliser la methode suivante : 

- Supprimer de PSCREATEUR les 
instructions "BLOAD VOC" et 
"BRUN AMPERPOMME" puis exe- 
cuter le programme ainsi reduit. 

- Passer en moniteur par CALL 
-151 et saisir le code de VOC a 
partir de I'adresse $D000. exacte- 
ment comme une recapitulation de 
programme-assembleur. 

- Revenir au BASIC par 3D0G et 
taper "POKE 49280.0" pour selec- 
tionner la RAM en lecture. 

- Sauver VOC sur disquette par 
"BSAVE VOC. A$D000. L$260" et 
taper ensuite "POKE 49282.0" pour 
revenir au langage en ROM. ■ 



90 REM PSCREATEUR 
95 REM ========= 



100 POKE 49281, PEEK < 49281 ):Y* = 
" D000 <D000 . FFFFM N D9C6G" : FOR 
I = 1 TO LEN (Y*) : POKE 511 + 
I, ASC ( MID* <Y*,I,1>> + 128 
: NEXT : POKE 72,0: CALL - 1 
44: PRINT : PRINT CHR* <4>"B 
LOAD VOC* : PRINT CHR* < 4) * BR 
UNAMPERPOMME" 



90 REM EDITEURPS 
95 REM ===== 

100 POKE 49281, PEEK (49281) 

110 TEXT : HOME : PRINT TAB< 6V 

CKEATION DE BASIC FRANCA IS": POKE 

34 2 

120 T ='l0: PRINT : VTAB T: PRINT 
"1 - CHARGEMENT DE PS": PRINT 
: PRINT "2 - SUITE DU PROGRAM 
ME": PRINT : PRINT "3 - SORTI 
E -> BASIC" 

130 PRINT : VTAB T + 7: PRINT "VO 



f MODEMS TELSAT ) 

L'ACCES DE VOTRE MICRO ORDINATEUR AUX BASES DE DONNEES 

PAR LE RESEAU TELEPHONIQUE 





TELSAT 440 

Modem 300 bit/s full duplex 



TELSAT 640 

Modem 600/1200 bit/s full duplex 



Ces produits font partie de la gamme complete de modems, multiplexeurs et 
equipements de reseaux de transmission de donnees TELSAT distribues par 

international 69 7i ( rue du chevaleret 75013 paris 

Tel. 58414 75 Telex 204120F 



Pom's n" 11 



TRE CHOIX (2) ";: GET R*:R = 
VAL (R*):R = R * <R < 4): IF 

R = THEN R = 2: IF R* < > . 
CHR* (13) THEN 130 
132 PRINT R: IF R = 1 THEN PRINT 

: PRINT CHR* ( 4) " BLOADPS" : PRINT 
CHR* < 4 ) " BRUNAMPERPOMME " 

135 IF R = 3 THEN 5000 

136 POKE 49283, PEEK (49283) 

150 X = DX: DIM A*( 1 50 , 1 ) , LL( 30 ) : Q 
* = CHR* (34):AP = 0: HOME : 
T = 10: PRINT : VTAB T: PRINT 
"1 - COMMANDES APPLESOFT": PRINT 
: PRINT "2 - MESSAGES D'ERREU 
RS" : PRINT : PRINT "3 - SORTI 
E -> BASIC" 

1<50 PRINT : VTAB T + 7: PRINT "VO 
TRE CHOIX (1) ";: GET R*:R = 

WL (R*):R = R * (R < 4): IF 
R = THEN R = 1 : IF R* ( > 
CHR* (13) THEN 160 

165 PRINT R: IF R = 3 THEN 5000 

170 PRINT : VTAB 2: IF R = 2 THEN 
DX = :FX = 16:DY = 53856: FY = 
53856 + 240: FOR I = 1 TO 107 
: READ A*: NEXT : PRINT TAB( 
10) "MESSAGES D'ERREUR.": GOTO 
190 

180 AP = 1:DX = 0:FX = 106:DY = 53 
456: FY = 53855: PRINT TAB( 1 
1) "COMMANDES BASIC." 
190 LO = FY - DY:L = :X = DX:Q* = 
CHR* (34): FOR I = DX TO FX : 
READ A*(I,0):L = L + LEN (A 
*(I ,0)) : NEXT 
200 HOME :T = 10: PRINT : VTAB T: 
PRINT "1 - LECTURE MESSAGES 
EN RAM": PRINT : PRINT "2 - L 
ECTURE MESSAGES STANDARDS EN 
ROM": PRINT : PRINT "3 - SORT 
IE -> BASIC" 
210 PRINT : VTAB T + 7: PRINT "VO 
TRE CHOIX (1) ";: GET R*:R = 

VAL (R*):R = R * (R < 4): IF 
R = THEN R = 1 : I F R* < > 
CHR* (13) THEN 210 
220 PRINT R: IF R = 3 THEN 5000 
230 IF R = 2 THEN FOR I = DX TO 

FX:A*(I,1) = A*(I,0): NEXT : GOTO 
250 

240 X = DX: PRINT : FOR I = DY TO 

FY: A = PEEK (I): VTAB 20: PRINT 
X - 1" "A*(X - 1 * (X > 0),1 
);: CALL - 958: PRINT :A*(X, 
1) = A*(X,1) + CHR* (A - 128 
* (A > 127) ) :X = X + (A ) 12 
8) : NEXT 

250 HOME :T = 10 :H = 8: PRINT : VTAB 
T: PRINT TAB( H>"1 -VISUALI 
SATION": PRINT : PRINT TAB( 
H)"2 - MODIFICATION": PRINT : 
PRINT TAB( H)"3 - ECRITURE" 
: PRINT : PRINT TAB( H)"4 - 
SAUVEGARDE POMMESOFT" : PRINT 
: PRINT TAB( H)"5 - SORTIE - 
> BASIC" 

260 PRINT : VTAB T + 11: PRINT TAB( 



VAL (R*) 

PRINT "V 
: INPUT " 



H)"VOTRE CHOIX ";: GET R*:R = 
VAL (R*): PRINT R: IF R < 1 OR 

R > 5 THEN 260 
270 R = - 1 : ON VAL (R*) GOTO 10 

00 ,2000 ,3000 ,4000 ,5000 
1000 HOME :T = 10 :H = 8: PRINT : VTAB 

T: PRINT TAB( H)"l - TOUT": PRINT 

: PRINT TAB( H)"2 - BORNES" : 
PRINT : PRINT TAB( H)"3 - R 

ETOUR AU MENU GENERAL" 
1010 VTAB T + 7: PRINT TAB( H)"V 

OTRE CHOIX ";: GET R*: PRINT 

R*: IF R* ( "1" OR R* > "3" THEN 

1010 

1020 DE = DX:FI = FX: ON 
GOTO 1050,1030,250 
1030 PRINT : VTAB T + 9: 
ALEUR DE DEBUT ( " DX ; 
) : ";R*:DE = VAL (R*) + DX * 
( VAL (R*) = 0): PRINT : VTAB 
T + 9: PRINT "VALEUR DE DEBUT 
: " DE ; " 

1040 PRINT : VTAB T + 11: PRINT " 
VALEUR DE FIN ("FX;: INPUT ") 
: ";R*:FI = VAL (R*) + FX * 
( VAL (R*) = 0): PRINT : VTAB 
T + 11: PRINT "VALEUR DE FIN 
: "FI;" 

1045 INPUT R*: IF R* = "*" THEN PRINT 

: PRINT "PR#1" 
1050 INVERSE :C0 = 0:C1 = 0: FOR 
I = DE TO FI:C0 = CO + LEN ( 
A*(I,0)):C1 = CI + LEN (A*(I 
,1)): PRINT I: PRINT A*( I , ) , 
CO: PRINT A*(I,1),C1: PRINT : 
IF I / 5 = INT (1/5) THEN 
GET R* 

1060 NEXT : NORMAL : PRINT : PRINT 

"FIN DES ELEMENTS";: GET R* : PRINT 
: PRINT "PR#0": GOTO 1000 

2000 HOME : PRINT : VTAB 5: PRINT 
"LONGUEUR "L" MAXI"LO:I = 

R + 1 

2010 T = 10: VTAB 
(DE "DX" A 
I ; : INPUT " 



2015 
2020 

2030 



2040 



10: PRINT "NUMER 
"FX") DEFAUT = " 
" ; R* : R = VAL ( 
R*) : IF R* = "" THEN R = I 
IF R > FX OR R ( THEN 250 
PRINT : VTAB 5: PRINT "LONGU 
EUR " ;L 

INVERSE : PRINT : VTAB 12: PRINT 
A*(R,0>: PRINT A*(R,1): NORMAL 



IF R* = 



THEN 20 



INPUT R*: 
00 

INVERSE : PRINT R* ; : NORMAL 
: GET T*: IF T* < > CHR* (1 
3) THEN 2000 
2060 L = L - LEN (A*(R,1)) + LEN 
(R*) :A*(R, 1 > = R* 
GOTO 2000 

IF LO ( L THEN PRINT "ECRIT 
URE IMPOSSIBLE : MAXI < LONGU 
EUR";: POKE - 16368,0: GET R 
*: GOTO 250 
3005 A*( 108,1) = " 



2050 



2070 
3000 



Pom's n° 11 



. - 

27 



3010 IF L < LO THEN A*C40,1) = LEFT* 
<"3 

",LO 

- L + 1 > 
3020 X = 0:1 = DY 

3030 FOR J = 1 TO LEN CA*CX,1>>: 
A = 128 * (J = LEN CA*CX,1)) 
) + ASC < MID* CA*CX,1) ,J,1> 

> 

3040 POKE I ,A:I = I + 1 

3050 NEXT J: PRINT : VTAB 22: PRINT 
X" "A*<X,1>;: CALL - 958 :X = 
X + 1: IF X = < FX THEN 3030 

3055 IF AP THEN 250 
3060 CI = 0: FOR X = DX TO FX:C1 = 
CI + LEN CA*CX,1)) :LLCX + 1) 
= CI : NEXT 
3070 POKE 57034.LLC1) 
3080 POKE 55674, LLC 2) 
3090 POKE 57789, LL<3) 
3100 POKE 56488, LL<3) 
3110 POKE 57754, LL<4) 
3120 POKE 59606, LL<5) 
3130 POKE 54289, LL<6) 
3140 POKE 58485, LL<6) 
3150 POKE 55677, LL<7> 
3160 POKE 57751, LL(8) 
3170 POKE 57759, LL< 9) 
3180 POKE 60130,LL(10) 
31 90 POKE 581 24 , LL< 1 1 ) 
3200 POKE 56695, LLC 12) 
3210 POKE 58803, LLC 13) 
3220 POKE 58417,LLC14) 
3230 POKE 55449, LLC 15) 
3240 POKE 58127, LLC16) 
3250 GOTO 250 

4000 PRINT : PRINT "UN MOMENT S.V 
.P...": PRINT : PRINT CHR* C 
4)"BSAVE PS,A*D000 ,L*3000" : GOTO 
250 

POKE 49280,0 



5000 
5010 
1 20 
10025 
10029 
10030 
10035 
10039 
10040 
10045 
10049 
10050 
10055 
10059 
10060 
10065 
10069 
50000 



TEXT : 
FOR I 
PRINT 
NEXT 
FOR I 
PRINT 
NEXT 
FOR I 
PRINT 
NEXT 
FOR I 
PRINT 
NEXT 
FOR I 
PRINT 
NEXT 
DATA 



HOME : END 
= 56560 TO 
CHR* C 



56566 
PEEK CI)) 



= 56544 
CHR* C 

= 54097 
CHR* C 

= 54105 
CHR* < 

= 54110 
CHR* C 



TO 56556 
PEEK CI)) 

TO 54101 
PEEK CI)) 

TO 54106 
PEEK CI)) 

TO 54114 
PEEK CD) 



■ END 



ATA" , " INPUT' 



" , "FOR 
, "DEL" 



D 



D" ,"GR 
ALL" , "PLOT 



, "TEXT" 



" , "NEXT 
,"DIM" , " REA 
PR*»" , "IN#" ,"C 



" HLIN" , " VLIN" , " HG 



R2" , " HGR" , "HCOLOR=" 



■ HPLOT" 



DRAW" ,"XDRAW" , " HTAB" ."HOME" 
50010 DATA "ROT=" , "SCALE=" , "SHLOA 
D" , "TRACE" , "NOTRACE" , "NORMAL" 
, " INVERSE" , "FLASH" , "COLOR=* , " 
POP" , "VTAB" , "HIMEM: " , " LOMEM : " 
, "ONERR" ."RESUME" , "RECALL" , "S 



TORE" , "SPEED=" , "LET" 
50020 DATA " GOTO* , " RUN" , " I F" , " RES 
TORE" ,'&" ,"G0SUB" ."RETURN" ,"R 
EM" , "STOP" , "ON" ."WAIT" , "LOAD" 
, " SAVE" , " DEF" , " POKE" ," PRINT" , 
"CONT" ,"LIST" , "CLEAR" , " GET " ,* 
NEW" 

50030 DATA "TABC 
" , "THEN" , "AT 
,"*","/ 



, "TO","FN", M SPCC 
, "NOT" , "STEP" , "+ 



l n 

\ N H B 

,"USR" , "FRE" , 

OS" 



,"*" , "AND" ,"OR" , 
SGN" ,"INT" ,"ABS" 
"SCRNC" ,"PDL" ,"P 



50035 DATA " SQR" , " RND" , " LOG" , " 

EXP" ,"COS" ,"SIN" , "TAN" , " ATN " , 
"PEEK" , "LEN" , "STR*" , "VAL" , "AS 
C" , "CHR*" , "LEFT*" ."RIGHT*" ,"M 
ID*" 

50040 DATA "NEXT WITHOUT FOR","S 
YNT AX" , "RETURN WITHOUT GOSUB" 
,"OUT OF DATA" 

50050 DATA "ILLEGAL QUANTITY" , "OV 
ERFLOW","OUT OF MEMORY" ," UNDE 
F'D STATEMENT" ," BAD SUBSCRIPT 
" , " REDIM' D ARRAY" , "DIVISION B 
Y ZERO" ILLEGAL DI RECT" , "Ti'P 
E MISMATCH" ," STRING TOO LONG" 

50060 DATA "FORMULA TOO COMPLEX" 
."CAN'T CONTINUE" , "UNDEF'D FU 
NCTION" 



90 
95 

100 

110 

120 



REM 

REM 



FREC16)C0NFIG 



125 



130 



132 



135 

136 
140 

150 



POKE 49281, PEEK C 49281) 
TEXT : HOME : PRINT TABC 9) " 
FRE C 16) AUTOMAT I QUE" 
VTAB 7: PRINT "LE POMMESOFT D 
OIT ETRE CHARGE SOUS PEINEDE 
PLANTAGE !": PRINT : PRINT "C 
E PROGRAMME MODI FIE LA ROUT IN 
E APPLESOFT 'GARBAG" 

EN Y METTANT L'ADRES-SE DE FR 
EC16)" 

T = 16: PRINT : VTAB T: PRINT 
"1 - CHARGEMENT DE PS": PRINT 
: PRINT "2 - CONFIGURATION FR 
EC16)": PRINT : PRINT "3 - SO 
RTIE -> BASIC" 

PRINT : VTAB T + 7: PRINT "VO 
TRE CHOIX C2) ";: GET R*:R = 

VAL CR*) * C VAL CR*) < 4) : IF 
R = THEN R = 2: IF R* < > 

CHR* CI 3) THEN 130 
PRINT R: IF R = 1 THEN PRINT 
: PRINT CHR* C 4) " BLOADPS" : PRINT 

CHR* C 4) "BRUNAMPERPOMME" : GOTO 
100 

IF R = 3 THEN POKE 49280,0: TEXT 
: HOME : END 

POKE 49283, PEEK C 49283) 
PRINT : PRINT CHR* C4)"BL0AD 
FREC16) ,A*927C" 

POKE 58500,76: POKE 58501,124 
: POKE 58502,146 

Pom's n" 11 



D05B- 


il 


09 


C8 


09 48 


08 F4 


03 


D060- 


20 


09 


M 


09 DB 


09 60 


D8 


D068- 


EB 


09 


S3 


E7 C8 


D8 AF 


D8 


0070- 


12 


E3 


7A 


E7 04 


DA 95 


D€ 


0078- 


A4 


U 


69 


D6 9F 


DB 48 


06 


D080- 


90 


EB 


23 


EC AF 


EB OA 


00 


D088- 


OE 


E2 


12 


04 CD 


DF FF 


E2 


0090- 


80 


EE 


AE 


EF 41 


E9 09 


EF 


D098- 


EA 


EF 


Fl 


EF 3A 


FO 9E 


FO 


D0A0- 


64 


E7 


04 


E6 C5 


E3 07 


E7 


DM8- 


E5 


U 


44 


E6 5A 


E6 86 


E4 


DOBO- 


91 


U 


79 


CO E7 


79 A9 


E7 


D0B8- 


7B 


8! 


E5 


7B 68 


EA 7D 


96 


DOCO- 


EE 


50 


54 


OF 46 


4E DF 


7F 


D0C8- 


CF 


EE 


7F 


97 DE 


64 64 


OF 


DODO- 


46 


49 


CE 


50 4F 


55 D2 


53 


D0D8- 


55 


49 


54 


41 4E 


04 44 


4f 


DOEO- 


4E 


4E 


45 


45 D3 


44 45 


40 


D0E8- 


41 


4E 


44 


C5 53 


55 DO 


44 


DOFO- 


49 


CD 


4C 


49 D4 


47 02 


54 


D0F8- 


45 


58 


54 


C5 50 


52 A3 


4? 


D100- 


4E 


A3 


43 


41 4C 


CC 50 


4C 


0108- 


4F 


04 


48 


4C 49 


CE 56 


4C 


0110- 


49 


CE 


48 


47 52 


B2 48 


47 


01 18- 


D2 


48 


43 


4F 4C 


4F 52 


BO 


D120- 


48 


50 


4C 


4F D4 


44 52 


41 


0128- 


D7 


58 


44 


52 41 


07 54 


41 


0130- 


42 


C8 


45 


43 52 


41 CE 


52 


01 38- 


4F 


54 


BO 


53 43 


41 4C 


45 


DMO- 


BD 


CO 


54 


52 41 


43 C5 


50 


D148- 


41 


53 


54 


52 41 


43 C5 


4E 


oi so- 


4F 


52 


4D 


41 CC 


49 4E 


54 



D158- 45 52 53 C5 46 4C 41 53 
D160- C8 43 4F 4C 4F 52 BO 50 
D168- 4F DO 54 41 42 D6 48 49 
D170- 40 45 40 BA 4C 4F 40 45 
0178- 40 BA 53 49 45 52 02 52 
D180- 45 SO 4« 52 03 40 20 20 
D188- 28 AO CO 56 49 54 BD 53 
0190- 4F 49 04 56 41 53 2D 45 
D198- CE 52 55 CE 49 C6 52 45 
D1A0- 53 54 4F 52 C5 A6 47 4F 
D1A8- 53 55 C2 52 45 54 55 52 
D1B0- CE 52 45 CD 53 54 4F DO 
D1B8- 53 45 4C 4F CE 57 41 49 
D1C0- D4 CO CO 44 45 C6 50 4F 
D1C8- 4B C5 45 43 52 49 D3 43 
D1D8- 4F 4E D4 4C 49 53 54 C5 
D1D8- 45 46 46 41 43 C5 47 45 
D1E0- D4 4E 45 D7 54 41 42 A8 
D1E8- 56 45 52 03 46 CE 45 53 
D1F0- 50 A8 41 4C 4F 52 D3 41 
D1F8- 04 4E 4F CE 50 41 D3 AB 
D200- AD AA AF DE 45 D4 4F D5 
D208- BE BD BC 53 47 CE 45 4E 
D210- 04 41 42 03 55 53 D2 46 
D218- 52 C5 45 43 52 A8 50 44 
D220- CC 50 4F 03 52 41 C3 48 
D228- 41 DA 4C 4F C7 45 58 DO 
0230- 43 4F D3 53 49 CE 54 41 
0238- CE 41 54 CE 50 45 45 CB 
0240- 4C 4F CE 43 48 A4 56 41 
0248- CC 41 53 C3 43 41 52 A4 
D250- 47 41 55 A4 44 52 4F A4 
D258- 40 49 4C A4 49 44 A4 00 



RECAPITULATION 
AMPERPOMME 



0300- 


A9 4C 


3D 


F5 03 A9 




BD 


0308- 


F6 03 


A9 


03 8D F7 


03 


60 


0310- 


32 A9 


If / 


9D 4B 03 

/I/ IB U«J 




DF 


0318- 


90 4C 




CA CA 10 


F2 

r x 




0320- 


SO 7F 


03 


20 7D FO 




03 


0328- 


20 C9 


DE 


20 Bl 00 

fcU Ul vv 


FA 


FA 


0330- 


EA AD 


7F 


03 38 F9 

wtf «W Us 


41 


DA 


0338- 


AA BD 


4B 


03 8D 49 






0340- 


4C 03 


8D 


4A 03 20 

^1 W»* i,V 


87 


00 


0348- 


4C 80 


03 


84 03 C9 


DE 


C9 


0350- 


DE C9 


DE 

ml. 


C9 DE C9 

1*/ Wlm w/ 


DE 


C9 


0358- 


DE C9 


DF 


&f rv 

W UL iff 


Iri. 




0360- 


DE C9 


DE 


C9 DE C9 


DE 


C9 


0368- 


DE 80 


03 


C9 DE C9 


DE 


C9 


0370- 


DE C9 


OE 


C9 DE C9 


DE 


C9 


0378- 


DE C9 


DE 


ro t\z r*o 

i7 vt uy 


DE 


50 


0380- 


8D 80 


CO 


in on oo 
6U Hv tfZ 


IU 


in 
61! 


CODE DE 


voc 






oooo- 


6F D8 


45 


D7 F8 DC 


94 


If t 


0088- Bl DB 


30 


F3 D8 DF 


El 

1-1 


D8 


DG10- 


8F F3 


96 


F3 E4 Fl 


DD 


Fl 


D018- 


D4 Fl 


24 


F2 31 F2 


40 


F2 


D020- 


D7 F3 


El 


F3 E8 F6 


FD 


Fa 


0028- 


68 F7 


4E 


F7 E6 F7 


j 7 


Fr 


0030- 


20 F7 


24 


F7 74 F7 


IT 

01- 


r l 


0038- 


6E F2 


72 


F2 76 F2 


7F 


F2 


0040- 


4E F2 


6A 


D9 55 F2 


85 


F2 


D048- 


A5 F2 


CA 


F2 17 F3 


8B 


F3 


D050- 


9E F3 


41 


F2 45 DA 


3D 


D9 



TOKENS Standards et Tokens dc VOC 



END 


TEXT 


HC0L0R= 


TRACE 


LOMEM: 


IF 


FIN 


TEXTE 


HC0L0R= 


TRACE 


LOMEM: 


IF 


1 


10 


19 


28 


37 


46 


FOR 


PR* 


HPLOT 


NOTRACE 


ONERR 


RESTORE 


POUR 


PR! 


HPL0T 


PASTRACE 


SI ERR 


RESTORE 


2 


11 


20 


29 


38 


47 


NEXT 


INI 


DRAW 


NORMAL 


RESUME 


& 


SUIWNT 


INI 


DRAW 


NORMAL 


REPASS 


& 


3 


12 


21 


30 


39 


48 


DATA 


CALL 


XDRAU 


INVERSE 


RECALL 


60SUB 


DOWEES 


CALL 


XDRAU 


INVERSE 


3 


GOSUB 


4 


13 


22 


31 


40 


49 


INPUT 


PLOT 


KTAB 


FLASH 


STORE 


RETURN 


DENANDE 


PLOT 


TABH 


FLASH 


3 


RETURN 


5 


14 


23 


32 


41 


50 


DEL 


HL1N 


HOME 


C0L0R= 


SPEED= 


REM 


SUP 


HLIN 


ECRAN 


COLOR= 


VIT= 


REM 


6 


15 


24 


33 


42 


51 


DIM 


VLIN 


ROT= 


POP 


LET 


STOP 


DIN 


VLIN 


R0T= 


POP 


SOIT 


STOP 


7 


16 


25 


34 


43 


52 


READ 


H6R2 


SCALE= 


VTAB 


GOTO 


ON 


LIT 


H6R2 


SCALE= 


TABV 


VAS-EN 


SELON 


8 


17 


26 


35 


44 


53 


6R 


HSR 


SHLOAD 


HINEM: 


RUN 


WAIT 


6R 


HGR 


a 


HI MEN: 


RUN 


UAIT 


9 


18 


27 


36 


45 


54 



Pom's n" 11 



LOAD 


NEW 




< 


SOR 


LEN 


3 


NEW 




< 


RAC 


LON 


55 


64 


73 


82 


91 


100 


SAVE 


TA8( 




SGN 


RND 


STRf 


3 


TAB( 




SBN 


HAZ 


cm 


56 


65 


74 


83 


92 


101 


DEF 


TO 


I 


INT 


LOG 


VAL 


DEF 


VERS 


* 


ENT 


LOG 


VAL 


57 


66 


75 


84 


93 


102 


POKE 


FN 


/ 


ABS 


EXP 


ASC 


POKE 


FN 


/ 


ABS 


EXP 


ASC 


58 


67 


76 


85 


94 


103 


PRINT 


SPC< 




USR 


COS 


CHR$ 


ECRIS 


ESP( 


* 


USR 


COS 


CARt 


59 


68 


77 


86 


95 


104 


CONT 


THEN 


AND 


FRE 


SIN 


LEFT* 


CQNT 


ALORS 


ET 


FRE 


SIN 


SAW 


60 


69 


78 


87 


96 


105 


LIST 


AT 


OR 


SCRN( 


TAN 


RIGHT* 


LISTE 


AT 


OU 


ECR( 


TAN 


DRW 


61 


70 


79 


88 


97 


106 


CLEAR 


NOT 


> 


POL 


ATN 


MIM 


EFFACE 


NON 


) 


PDL 


ATN 


MI Li 


62 


71 


80 


89 


98 


6ET 


STEP 


= 


POS 


PEEK 




GET 


PAS 




POS 


PEEK 




63 


.72 


81 


90 


99 





CALVADOS 



TOUTE LA BOURSE SUR L' ECR AN 
DE VOTRE ORDINATEUR PERSONNEL 



• Cotations de 100 bourses dans 40 pays 

• Gestionnaire de portefeuilles 

• Lettres de Conseils ponctuels 

• Documentation complete sur les societes 

• Passage d'ordres par la messagerie 

• et, bien entendu, tous les autres services 
Calvados 

Documentation gratuite sur demande 

Boite Postale 21-07 75327 Paris Cedex 07 
Tel. : (1) 705.09.04 



Pom's n° 11 



SERVICE CALVADOS 



-IE BESEAU MICRO-INFORM AT1QUE — 



02100 Si. Quentin 
02200 Soissons 
03200 Vichy 
06000 Nice 
06000 Nice 
06000 Nice 
06000 Nice 
06000 Nice 

06 150 Cannes la Bocca 
06400 Cannes 
06600 Aniibes 
06700 Si-Laurcnt-du-Vat 
06700 Sl-Laurem-du-Vai 
1 1000 Narbonne 

13005 Marseille 

13006 Marseille 

1 3006 Marseille 
I S0O6 Marseille 

13007 Marseille 
1300$ Marseille 

1 3008 Marseille 

1 3090 Abc-en-Provence 
13100 Aix -en-Provence 
13127 Viirolles 
1 3200 Aries 
1323 1 Marseille 
!430OCaen 
14490 LeTronquay 
16000 Angouleme 

20121 Fcrncy- Voltaire 

2 1000 Dijon 

21000 Dijon 

21000 Dijon 

24001 Perigueux Cedex 

25000 Besancon 

25000 Mombcliard 

26500 Bourg-les-Valence 

28000 Chanres 

29000 Quimper 

29000 Quimper 

30000 Nimes 

30000 Nimcs 

30120 Ales 

3 1000 Toulouse 

3 1000 Toulouse 

3 1 000 Toulouse 

33081 Meriadeck Bordeaux Cedex 
34000 Montpellier 
34130 Valergues 

35000 Rennet 
35000 Rennes 
35IOORcnnes 
37000 Tours 
37000 Tours 
37000 Tours 
37000 Touts 
38 1 00 Grenoble 
38100 Grenoble 



COGNET 


Mine. Mebs 


2 1 . rue Victor Basch 


(2J>62 72 89 


SOFIC 


Mme. JuHen 


1 0. place du Laon 


(23)53. 71.47 


03 INFORMATIQUE 


M. Rathueville 


7, rue Voltaire 


(70)3 1 .74.00 


DSA INFORMATIQUE 


M. Mouchon 


5, Bd. Dubouchage 


(93)85. 15.96 


FNAC NICE 


M. Couvreur 


24, av. Jean Medecin 


(93)92.09.09 


MCS 


M. Abiibol 


7, rue Dante 


(93)96.50.55 


MICRO-MEDIA 




27. rueDelille 


(93)85.28.06 


SORBONNE INFORMATIQUE 


M. Seyrai 


40, rue Giolfredo 


(93)58.17.55 


ONDE MARITIME 




28, Bd. du Midi 


(93)47.44.30 


SIVE A CANNES 


M. Cotnillon 


14, Bd. de la Republique 


(93>}9 29 09 

\ J 7 .4. 7 .V7> 


ESPACE INFORMATIQUE 


M. Irving 


l,Chemin Si. Cloud 


(93)74 78 01 


COMPUTERLAND MOS 


M. Ragax/J 


Av. Leon Beranger 


(93)07.61.12 


NOUVELLES CALERIES POINT MICRO 


M. Gulben 


C.C. Cap 2000 


193 > 3 1 24 40 


R21 INFORMATIQUE 


Mme. Perdrioi 


5, quai Valliere 


(68)65.15.83 


ELP INFORMATIQUE 


M. Bocognano 


20, rue Hugueny 


(91)94.91.13 


COMPUTERLAND CPL 


M. Giacobetti 


1, av. de Corinth? 


(91 )78.02.02 


ELECTRONIC SERVICE COMPUTER 


M. Michclon 


39, cours Lieutaud 


(91)42.99.42 


INTERNATIONAL COMPUTER 13 




64. av. du Prado 


(91 137.25.03 


PROVENCE SYSTEM 


M. Muniglia 


74, rue Sainte/Le Saint-James 


(91)33.23.33 


MEDIATEC 


M. Bouchoux 


485, av. du Prado 


(91)71.45.45 


MICROMAG 


m. Dewavrin 


C.C Merrnoz/l 1 1. r. J. Mcrmoz 


(91)71 79 13 


SOPROGA 




Av. de I'Europe/Les Facultes B 


(42)61.12.43 


ECO INFORMATIQUE AIX 


M Baronial 


Rcsid. Sextus/Bd. Victor Cousin 


(42)27.1 1.48 


FEEDER 


M. Gauthron 


Bastide Blanche RN 1 1 3 




LUDO 


M. Devred 


27, rue de la Republique 


(90)96.79.03 


FNAC MARSEILLE 




Centre Bourse 


(91)91.30.62 


COMPUTERLAND CAEN 


M. Desserteaux 


12, rue St.-Pierre 


(3 085.62.48 


NORMANDIE INFORMATIQUE 


M. Cheval 


Residence La Tuilerie 


(31)92.56.09 


L'HOMME 


m. Lhomme 


186. route de Bordeaux 


(45)95.27.37 


CIP 


M. Slettenhaar 


4i bis. av. du Jura 


(50)40.62.34 


LASOBIKOR 


M. Bikar 


7. rue Monge 


(80)30.09.70 


OMG 


M. Laurenti 


20, rue Michelet 


(80)30.12.70 


SETTEM 


M. Barbier 


36, rue Jeannin 


(80)66.16.43 


MPBI 


M. Parlnct 


4, av. d'Aquitaine B-P. 92 


(5 3)53 44 28 


VAGNEUX S.A. 


M.Joly 


58 ter. Faubourg Rivotte 


(81)81 12 56 


MICRO ALPHA SOFT 


M. Ravey 


1 1, Impasse du Laquet 


(81)97 1646 


ECA ELECTRON I QUE 


M. Pom 


22, Thannaron 


(75)42.68. 88 


BIP INFO 


M. Cabouro 


58, rue Grand Faubourg 


(37)21.74.51 


LA BOUTIQUE INFORMATIQUE 


M. Lcmoelle 


C.C. Rallye-Route de Benodet 


(98)53.33.88 


MATRICE DEVELOPPEMENT 


M. Malic 


2, Venellc de Kergos 


(98)55.75.93 


ELECTRONIQUE TELE INFORMATIQUE 


M. Aguilla 


58, rue Pierre Semard 


(66t36.02.52 


MICRON1M 


M. BelaTche 


10, rue de la Tresorerie 


(66)21.08.91 


ARCOMEL 


M. Raffin 


8 bis. rue Mistral 


(66)30.05.62 


BURE AUM ATIQUE 


M. Tissoi 


4, Promenade des Capitouls 


(6 1)2 1.87.27 


FNAC TOULOUSE 


M. Claustre 


1 bis. Promenade des Capiiouls 


(61 123 1 1 08 


SOUBIRON 


M. Soubiron 


9. rue Kennedv 


<6 1 1 7 1 64 39 


SIVEA BORDEAUX 


M. Licgeois 


Rue du Corps Franc Pommies 


(56)96.28.1 1 


MICRO 34 


M. David 


7 Cours Gain ben a 


(67)^2 9123 


CE BE A 


M. Depeyroux 


Route Nationale 1 1 3 


167186.75.75 


COMPUTERLAND BRETAGNE 


M. Cador 


13. av. du Mail 


(99)54.47.12 


X-MATIC 


M. Hardy 


161, av. du Gl. Patton 


(99138.31.80 


Ol I TA Ml( KODIN 


M. Prenveille 


4. place Bretagne 


(99)30.65.18 


■Mil I 


m. Brossard 


8. allee du Manoir 


(47)64.69.93 


BOUTIN INFORMATIC 


M. Boutin 


36, rue Marceau 


(47)20.51.83 


POLY SOFT 


M. Caoudal 


67, rue Michel Colombe 


(47)66.60.49 


SELECTRON 


M. Cazln 


1 5, rue de Jerusalem 


(47)20.80.70 


FNAC GRE NOBLE 


M. Barhera 


3 Grande Place 


(76)09.46.63 


GAMMA INFORMATIQUE 


M Bragagnolo 


9 Cours de la Liberation 


(76)96.30.05 



Ces concessionnaires APPLE 
sont abonnes a CALVADOS. 
Demandez-leur une demonstration! 



44013 
45000 
45000 
45000 
49000 
51100 
53000 
54000 
54000 
54404 
54520 
56000 
57000 
57000 
57110 
57800 
59000 
59000 
59150 
59300 
59700 
59800 
59800 
60100 
60108 
61000 
62000 
62200 
63008 
63014 



Dax 

Nanres 

Orleans 

Orleans 

Orleans 

Angers 

Reims 

Laval 

Nancy 

Nancy 

Longwy Cedex 

Laxou 

Vannes 

Metz 

Meiz 

Yutz 

Freyming Merlcbach 

Lille 

Lille 

Wanrelos 

Valenciennes 

Marcq en Bantul 

Lille 

Lille 

Creil 

Creil 

Alencon 

Arras 

Boulogne-sur-Mer 
Clermont-Ferrand Cedex 
Clermoni-Ferrand Cedex 



CERMOND 
PL1 

SIVE A-N ANTES 

AGO 

AMI 

EUROPE OH 1) 1 N ATI 1 R 
INFORMATIQUE SERVICE 
ORGANIGR AMME 
SLAD INFORMATIQUE 
PRECILAB 
VLASTOS JEAN 
RANDOM 
SEMITEC 
L'ORDINATEUR 56 
FNAC METZ 

LA MICRO BOUT1QUE-ECONOMAISON 

MICROSERV1CE 

CM I 

FNAC LILLE 
SIVEA LILLE 
RYO CATTEAU 
MICROMEGA 

MICRODATA INTERNATIONAL NORD 
MBDC 

PAMP MICRO INFORMATIC 

H APE L 

QUENEUTTE 

TEMPS X 

S1CORFE 

D1F ELECTRONIQUE 
NEYRIAL INFORMATIQUE 
FLAGELECTR1C 



M. Germond 


12, av. Eisenhower 
9. Cours Pasteur 


(84)72.49.11 


M. Bachelier 


21. Bd. Gabriel Guisih'au 


(40)47.53.09 


M. Auioun 


48, Bd. Alexandre Martin 


(38)54.45.13 


M. Callicr 


13, rue des Minimes 


(38)62.62.58 


M. Pouysegur 


22. Bd. Alexandre Martin 


(38)54.13.15 


M. Fortier 


42, rue Parchemineric 


(41)88.47.06 


M. Coulant 


16. rue E mile Zola 


(26)88.51.13 


M. Lc Grand 


10. rue du Val de Mayenne 


(43)49.25.45 


M. Bonnechere 


96, rue Stanislas 


(8)337.06.78 


M. Vlaslos 


143. rue Sgt. Blandon 


(8)341.26.26 


M. Lentz 


18, rueMercy/BP4IO 
69, ruede Mareville 


(8)224.80.11 


M. Faber 


(8)340.43.38 




38, Bd. de la Paix 


(97)42.52.20 


M. Hochard 


14, rueTered'Or 


(8)734.16.22 


M. Le Bcsnerais 


3. rue Paul Bezanson 


(8)775.41.56 


M. Slutzmann 


2 route de Thionville 


M. Becker 


3, place de la Gare 


(8)781.14.89 


M. Morlier 


9, place du General de Gaulle 


(20)30.72.30 


M. Boisse 


2 1 bis, rue de Valmy 


(20)57.88.43 


M. Merchel 


l3.meEdouard Vaillani 


(20)75.92.23 


38, ruede Famars 


(27)42.30.30 


M. Williamson 


920. av. de la Republique 


(20)98.60.06 


M. Bavart 


1 72, rue Solferino 


(20)57.91.87 


M. Paris 


5, rue de Pas 


(20)54.62.22 


M. Haemjens 


2 bis, av. de I'Europe 


(4)455.03.30 


M. Qucneutte 


22 Bd. de la Republique 


(4)425.04.26 


M. Courrcau 


42, rue de Lame de Tassigny 


(33)26.79.98 


M. Delpierre/M. Recoun 


18 bis, rue Lamartine 


(21)23.08.56 


M. Hagncrc 


7 1 , nie du Camp de Droite 


(21)30.75.68 


M. Neyrial 


3 cours Sablon 


(73)92.89.50 


M. Aresle 


ZI du Brezct. 142. av. J. Mermoz 


(73)92.13.46 



suite page suivante ► ► ► 



Pom's n" 11 



31 



SERVICE CALVADOS 



-LE HIStAU MICRO INfORMATIQUE - 



64000 Pau 

64100 Bayonne 

67000 Strasbourg 

67000 Strasbourg 

67000 Strasbourg 

67200 Strasbourg-Koenigshollen 

68000 Colmar 

68000 Colmar 

68200 Mulhouse 

69002 Lyon 

6900} Lyon 

69005 Lyon 
69004 Lyon 

69006 Lyon 

69006 Lyon 

69007 Lyon 
71000 Macon 
72000 Lc Mans 
72000 Le Mans 
72000 Lc Mans 

74000 Cran Gevrier Annccy 
74102 Annemasse 
75001 Paris 
75001 Paris 
75005 Paris 
75007 Paris 

75007 Paris 

75008 Paris 
75008 Paris 
75008 Paris 
75008 Paris 
75008 Paris 
75008 Paris 

75008 Paris 

75009 Paris 
75009 Paris 
75009 Paris 
75009 Paris 

75009 Paris 

75010 Paris 

75010 Paris 

7501 1 Paris 

75011 Paris 

75012 Paris 
75012 Paris 
75015 Paris 

75014 Paris 

75015 Paris 
75015 Paris 
75015 Paris 
75015 Paris 
75015 Paris 
75015 Paris 
75015 Paris 

75015 Paris 

75016 Paris 

75016 Paris 

75017 Paris 
75017 Paris 
75017 Paris 
75017 Paris 
76000 Rouen 
76000 Rouen 
76200 Dieppe 
78000 Versailles 

78100 Sl.-Gcrmainen-Lave 

78ll7Chateaufort 

78190 Trappes 

80000 Amiens 

80000 Amiens 

84000 Avignon 

85000 La Rochc-sur-Yon 

85105 Les Sables d'Olonne 

86000 Poitiers 

87000 Limoges 

90000 Bellott 

91000 Evry 

91700 Stc.-Gcncvicve 

92086 Paris La Defense Ccdex 

92 100 Boulogne Bllkuicourt 

92 120 Momrouge 

92l30lssyles-Moulincaux 

92200 Ncuilly-surSeine 

92600 Asnieres 

92800 Puieaux 

94160 St.-MamH 

95200 Sarcclles 

95526 Cergy Pontoise Cedex 

97200 Fort de France 

97209 Fort tie Frame 

97400 Si-Denis de la Reunion 

98000 Monaco 

Manx Casablanca 



OBBO ADOUR 

LE CALCUL INTEGRAL 

CILEC 

FNAC STRASBOURG 

MICRO-MAT 

WALZ INFORMATIQUE 

EDS JL VOGEL 

FNAC COLMAR 

FNAC MULHOUSE 

TERTIAL 

ALPHA SYSTEMES 
BIMP 

AB INFORMATIQUE 
ALTI INFORMATIQUE 
ECO INFORMATIQUE 
FNAC LYON 

CI INIQUE ri FCTROMQUfc 

AESCULAPPLE 

ASCI 

OMB LE MANS 
SIGEA 
DSA MICRO 
FNAC FORUM 
NASA SEBASTOPOL 
NASA MONGE 
MV1 

NASACEMP 
AME 

EUROPE COMPUTER SYSTEMS 

FNAC ETOILE 

INTERSIS 

ORDINATEUR INDIV1DUEL AFFAIRE 

POINT MICRO LA BOETIE 

SIVEA 

COMPUTERLAND MOS 75 
JCR ELECTRONIQUE 
LPS 

NASA CEDL 

SAVEMO 

HELLO 

SOFT MACHINE 
MID 

NASA SER 

ELL1X 

GMS 

NASA CEDM 

NASAMONTELEC 

HI Fl MADISON 

IE F 

ILLEL 

IMAGOL 

KA 

MICRO ASSISTANCE 

NASA DECOM 

SIDEG 

ANTIGONE 

MICRODATA MDI 

BSC INFORMAT1C 

GAMIC 

NASA GAD 

RANDOM PARIS 

ESPACE TEMPS REEL 

GUEZOULI INFORMATIQUE 

ELECTRODOM 

MICROR AMI 

ORDI GESTION 

AVIRADIO AR INFORMATIQUE 
PROBE INFORMATIQUE 
BUROTEC 
LOGIC 

SYNERGIE INFO 

OMICRON INFORMATIQUE 

IDEES INFORMAT1QUES 

LISTE INFORMATIQUE 

MICROLIM 

FNAC BELFORT 

NASA SDESP 

NASAGENELEC 

POINT MICRO LA DEFENSE 

M1N1GRAPH MICRO INFORMATIQUE 

SERAP MICRO INFORMATIQUE 

AGI 

IMATIC 
NASA ADE 

GEMINI INFORMATIQUE 
MICRODATA ST-MANDE 
MICROKEY 95 
ORGAMATIQUE 
POINT MICRO MARTINIQUE 
MICRO TRAITEMENT 
MICRO SYSTEMES SERVICES 
MICROTEK 

AMERICAN MICRO COMPUTERS 



M. Zcbrmvski 
M. George 
M. Martin 
M. Rivet 
M. Jung 

M. Vogel 

M. Barremlin 
M. Houol 
M. Barre 
M. Chastaing 
M. Asensio 
M. Combei 

M. Thierry 

M. Bouquet/M. Damiani 

M. Bcsnard 
M. Muzelle 
M. Cood reuse 
M. Pollier 
M. Dotnenjoz 
M. Maisonnave 

M. Roland 
M. Vernet 
M. Singer 
M. Bonnigal 

M. Lcmoine/M. Guyonncau 
M. Flanitin 
M. Lallemantl 
M. Haegeli 
M. Angladc 

M. Clccmvcrck/M. Bcttichc 
M. Ciiannetli 
M. Talar/M. Poutasso 
M. Sokolski 

M. Vanlleteren 
M. Morenti 
M. Lecome 
M. Lamarre 

M. Bom el 

M. Lalnc 

M Gaillard 

m. Deban 
M. Petii 

M. Ratier 
M. Rieul 
M. Root 

Mme. Lebail/M. Pcwzer 
Mme. Muller 
M. Pcrchc 
m. smadja 

M. Galene 

M. Singer 
M. Lent/ 
M. Auriau 
M. Gue/ouli 

M. Lequere 

M. Ghysclin 
M. 1X1 re 
M. Brassan 
Mme. Laporte 

M. Lecaille/M. Duixnt 

M. Nasarre 

M. Idier 

M. Clotiteau 

M. Bottai 

Mme Alman 

M. Kachamian 



M. Gotman/M. vilotte 
M. Orsini 

M. pacart/M. Benmaor 
M. Nouailhac 



M. Marlin 
M. Pcrchc 
M. Thcrry 
M. Pottier 

M. Gal let de St.-Aurin 
Mme de Rcynal 
M. I. ebon 
M. Ham-use 
M. Housni 



14 Bd. Alsace Lorraine 

30, Bd. Alsace Lorraine-St.Esprit 

18 Quai St.Nicolas 

22, place Kleber 

30. rue Geiler 

89 A Route des Romains 

8. rue Fischart 

I Grande Rue 

I. place Franklin 

1 9, rue Gentil 

84. av. Marcchal de Saxe 

20. rue Servient 

18. rue Pailleron 
67. rue Vcndome 
50cours Vitton 

62. av. de la Republique 

169. me de Paris 

4, rue de Richebourg 
1 15. rue Nationale 
42. rue Einstein 

14. av. de la Republique 

15. rue Adrien Ligue 

1 . rue Pierre Lescot 

I I , Bd. de Sevastopol 
97, rue Monge 

27. rue Vanneau 

28. av. de la Motte Piquet 
172. Bd. Haussmann 

1 6. rue Washington 

26. av. de Wagram 

2. rue Daru 

10. rue Cambaceres 
16. rue de la Boctie 
I J, rue de Turin 

8. me Blcuc 

58. rue Notre Dame de Lorette 
46. rue Lallitte 
45. rue Caurnartin 

16, rue Latfitte 

1 , rue de Metz 

I I I , Bd. de Magenta 

5 1 bis, av. de la Republique 
J 1, av. de la Republique 

7. rue Michel Chasles 
214, av. Daumesnil 
C.C Massena 

88. av. du Maine 
127, rue St.-Charles 
228, rue Lecourbe 
141. av. Felix Faurc 
I -5. rue de Gutenberg 
212. rue Lecourbe 
66. rue Castagnary 
76. me du Commerce 

170. rue St.-Charles 

75 bis. rue Michel Ange 
50. rue Raynouard 

19. rue Cardinei 

27. rue Guersanl 

46-48. av. de la Grande Armee 
75. Bd. Perreire 

9. quai du Havre 
.19, quai du Havre 
9, rue Lemoyne 

17, av. de St. -Cloud 

11. rue des Louviers 
Aerodrome de Toussus le Noble 
26, av. des Freres Lumicrcs 

38, me de Beauvais 

18, rue des A ugu stilts 
71. Bd. Montclar 

2, place de la Resistance 
Port Olona B P. 191 

8. rue Eperon 

8 1 . Bd. Gambetla 
6, rue des Capucins 
C.C. Evry II 
96 route de Corbel I 

Tout Neptune 
261. Bd. Jean Jaurcs 

15. rue Louis Lejeune 

4. rue Pierre Brossoletlc 
161, av. Charles de Gaulle 
96, rue des Bourguignons 
58. rue Eichenbcrger 

5, rue Jeanne d" Arc 

14. av. de I'Escouvrlet 

9. chaussee J. Ces.tr B.P. 304 
Centre Dillon 

C.C. Dillon 

"4. rue Labourdonnals 

2. Bd. Rainier 111 

Av. des Far-Tours Habous 



(59)02.44.53 
159)55.96.58 
(88)37.31.61 
(88)22.03.19 
(88)60.68.68 

(88) 29.54.55 

(89) 80.10.86 
(89)21.12.12 

(89) 42.09.55 
(7)839.16.66 
(7)86089.34 
(7)860.84.27 
(7)851.44.86 
(71894-60.56 
(7)824.51.18 
(7)842.26.49 
(85)18.20.84 
(41)24.97.80 
(41)84.28.28 
(41)24.99.40 
150)57.02.80 

(50) 18.31.40 
(1)261.81.18 

(1)656.52.82 
(1)551.66.77 
(1)705.30.00 
(1)562.28.93 
(1)225.15.15 
(1)766.52.50 
(1)227.11.79 
(11742.91.00 
(1)265.89.35 
(1)522.70.66 

(1)282.19.80 
(1)577.98.80 

(1)770.46.44 
(1)523.30.14 
(1)240.85.00 
(1)357.83.20 

(1)307.65.58 
(1)145.28.52 

11)656.52.82 
(1)578.81.16 
(1)828.06.01 
(11554.97.48 
(11577.59.39 
(11533. 13.50 
(11510.05.28 

(1)557.79.12 
(11743.11.41 
11)525.81.64 
(1)763.95.31 
(1)574.02.92 
(1)574.59.74 
(1)227.59.20 
(15)89.29.1 1 
(15)89.55.66 
(35)84.18.58 
(1)021.30.15 
(1)451.58.25 
11)956.22.20 
(1)062.26.03 

(22)92.39.46 

(90) 86.52.32 

(51) 17.29.71 
(51)95.19.47 
(49)41.41.86 
(55)34.10.12 
(84)21.00.15 



(1)608.44.11 



(1)644 04.41 
(1)747.11.26 



(1)808.64.35 
(1)419.04.24 
1 1 1030.17.85 
(596)71.49.6 
(596)73.91.4 
(262121.62.5 
193)30.67.67 



Librairie depositaire de la documentation technique Calvados : 
LA NACELLE - 2. Rue Campagne-Premiere _ 75014 PARIS - Tel.: 322.56.46. 



32 



Pom's n° 11 



Comparaison de deux programmes 

en langage machine 



Denis bureau 




Voici un utilitaire specifique et rapide 
pour comparer deux versions d'un 
programme en langage machine 
(code hexadecimal), afin d'en identi- 
fier la plus recente ou de verifier 
leurs differences. 

Lorsque Ton a rentre le code de 
BCOMP. ou qu'on l'a charge par un 
BLOAD a partir de la disquette d'ac- 
compagnement de ce numero de 
Pom's, il faut l'executer une premiere 
fois par un "CALL 2061" avant sa 
sauvegarde (on appuie sur RETURN 
a la question "nom du programme" 
pour le stopper). On peut ensuite 
faire "SAVE BCOMP" et "RUN 
BCOMP" pour l'utiliser... J'ai bien dit 
"SAVE" et non "BSAVE" car. apres 
ce premier CALL 2061. la routine se 
manipule comme un programme Ap- 
plesoft. 

L'explication de ce mystere tient a ce 
que les codes hexadecimaux qui fi- 
gurent en tete de la routine sont la 
representation-memoire de la ligne 
Applesoft "10 CALL 2061". Lors de 
l'execution. la position FPROG (fin 
de la routine) est stockee aux adres- 
ses 175-176 (pointeur de fin d un 
programme Applesoft) et les trois 
derniers octets sont bien des 0. 
comme pour les programmes Apple- 
soft. 

Vous pouvez transposer directement 
cette petite astuce pour n'importe 
quel programme en langage machine 
dont l'origine est a l'adresse 2048 
($800): elle simplifie notamment le 
transfert des routines d'une disquette 
sur une autre. 



Pour en revenir au vif du sujet. la 
routine charge les deux versions du 
programme a comparer a partir de 
l'adresse $1000 et compare chaque 
octet en se basant sur la longueur de 
la premiere version chargee. L'affi- 
chage des differences assure la 
conversion des adresses ou elles se 
situent sur la base de l'adresse de 
depart normale du programme qui 
vous est demandee (en decimal posi- 
tif) en debut de traitement. 
Le nombre de differences est indique 
en fin de comparaison et vous pou- 
vez renouveler cette derniere sans 
charger les programmes en tapant 
"CALL 2064". 

Pour imprimer les resultats. vous 
pouvez utiliser la procedure sui- 
vante : 



• Executer une premiere fois 
BCOMP 

• CALL -151 

• PR#s (ou s designe le slot de i'im- 
primante) 

• 8BDG 

Les commentaires du programme 
source precisent le but de chaque 
procedure. Les adresses $6-$7 et $8- 
$9 pointent respectivement sur la po- 
sition courante dans chaque version. 
Une routine unique permet le enlar- 
gement des deux versions en aiguil- 
lant sur chaque champ de stockage 
des noms reduits a 10 caracteres en 
fonction du numero de version 
donne par PRGNUM ($A1A). 
La taille des programmes compares 
ne doit pas depasser 16K. 



Programme BCOMP 
Assembleur BIG MAC 



BCOMP 



<C> 
<C> 



D. SUREAU 
1983 POM'S 



# 

COUT 

8 MAXI 

9 GETLN 
LINPRT 
PRNTAX 

12 PRBLNK 

13 PRBYTE 

14 STORADV 

15 HOME 

16 TXTPTR 



10 
11 



*FDED 
*000B 
*FD6F 
*ED24 
*F941 
♦ F948 
iFDDA 
tFBFO 
*FC58 
*00B8 



17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 



INLIN2 = *D52E 

FRMEVL = *DD67 

CRDO = *DAFB 

GETADR = *E752 
* 

CTRL = *0018 

CTRH = *00 19 

ADRL = *001A 

ADRH = *001B 

ORG *800 



HEX 000B080A008C32 

HEX 30363)000000 

JMP INTRO 

JMP START 

INTRO LDA »FPROG 

STA 1 75 



Pom's n° 11 



36 




LDA 


#>FPROG 


72 


STA 


MAXI+1 


37 




STA 


176 


73 






38 




JSR 


*3EA 


74 






39 




JSR 


HOME 


75 


* CHARG PROGR 


2 


40 




JSR 


ECRIT 


76 






41 




HEX 


8D8D8D00 


77 






42 




LDA 


»5 


78 


CHARGE2 LDA 


«"2" 


43 




STA 


*20 


79 


JSR 


BLOADRTN 


44 




JSR 


CRDO 


80 






45 




JSR 


TRAIT 


81 






46 




JSR 


ECRIT 


82 


* LECTURE ADRESSE - 


47 




INV 


" B C M P - D. SUREAU " 


83 






48 




WJ 


"(C) 1983 " 


84 






49 




HEX 


8D00 


85 


JSR 


ECRIT 


50 




JSR 


TRAIT 


86 


ASC 


■ADRESSE NORMALE:" 


51 




LDA 


#0 


87 


BRK 




52 




STA 


*20 


88 






53 




JSR 


CRDO 


89 


* ENTREE D' UN 


N OMBRE PAR INPUT 


54 








90 


» ET TRANSFERT EN *50-51 


55 









91 






56 


*CHARG 


PROGR 


1 - 


92 


JSR 


*FD6F 


57 








93 


TXA 




58 








94 


BEQ 


INNUL 


59 


CHARGE 


LDA 


#"1 " 


95 


JSR 


*D539 


60 




JSR 


BLOADRTN 


96 


LDA 


80 


61 








97 


STA 


TXTPTR 


62 








98 


LDA 


802 


63 


* CALCUL FIN 


PROGR - 


99 


STA 


TXTPTR+ 1 


64 








1 00 


JSR 


FRMEVL 


65 








101 


JSR 


GETADR 


66 




CLC 




102 


LDA 


*50 


67 




LDA 


43634 


103 


STA 


ADRL 


68 




ADC 


43616 


104 


LDA 


*51 


69 




STA 


MAX I 


105 


STA 


ADRH 


70 




LDA 


43635 


106 


JSR 


CRDO 


71 




ADC 


43617 


1 7 


JMP 


START 



LA PHOTOCOMPOSITION EN PROLONGEMENT bE LA MICRO-WORMATIQUE 




TRANSMETTEZ-NOUS \ OS TEX I KS 

PAR TELEPHONE p— 

ou o 

DONNEZ-NOUS VO I RE DISQUETTE _J_ 




Les textes de Vos articles, catatoques, annuaires ou brochures 
saisis sur ootre APPLE sont eniloues directement sur notre photocom- 
pose use. 

Mous i/ous evitons ainsi, le cout et te temps de la saisie supple- 
mentaire que necessite le traitement traditionnel de la photocompo- 
sition aOant ('impression des documents, si Oous le desirez nous pou- 
Oons egalement nous charger de I'impression et du brochaqe. 




NOTRE REFERENCE... LA REVUE POM'S 




PHOTocoMeosimn /mm* oc nomns 
Bimuumae utmm ot 
mnSMisston oi owwfs mmum of ram 



'J '5. dmie du Peu Paic 



nWltfiflfitt* 1 ■ 



Pom's n" 11 



108 

109 

110 

111 

112 

113 

114 

115 

116 

117 

118 

11? 

120 

121 

122 

123 

124 

125 

126 

127 

128 

12? 

130 

131 

132 

133 

134 

135 

136 

137 

138 

13? 

140 

141 

142 

143 

144 

145 

146 

147 

148 

14? 

150 

151 

152 

153 

154 

155 

156 

157 

158 

15? 

160 

161 

162 

163 

164 

165 

166 

167 

168 

16? 

170 

171 

172 

173 

174 

175 

176 

177 

178 

17? 

180 



* PAR DEFAUT L'ADRESSE EST 41000 



INNUL 



LDA 
STA 
LDA 
STA 



#0 

ADRL 
#*10 
ADRH 



» INITIALISATION 
* 



START 



LDA 


HO 


STA 


CTRL 


STA 


CTRH 


JSR 


ENTETE 


LDA 


m 


STA 


$6 


STA 


*8 


LDA 


#*10 


STA 


%7 


LDA 


»*50 


STA 


*? 



* COMPARAISON 
» 



COMPARE 



LDY 


#0 


LDA 


*6 


CMP 


MAX I 


BNE 


C0MPAR2 


LDA 


*7 


CMP 


MAXI+1 


BCS 


RECAP 


LDA 


<*6) ,Y 


CMP 


<*8) ,Y 


BEG 


INCCOMP 



C0MPAR2 



« AFFICHE L'ADRESSE (NORMALE) 

* OU UNE DIFFERENCE EST VUE 

* ET L' OCTET DANS LES DEUX 

* VERSIONS DU PROGRAMME 



DIFFRTN 



LDA *25 

CMP #21 

BCC AFFDIF 

JSR APPUYEZ 

JSR ENTETE 



* AFFICHAGE DE L'ADRESSE 



AFFDIF 



LDA 
JSR 
LDA 
CLC 
ADC 
TAX 
LDA 
ADC 
SEC 
SBC 
PHA 
JSR 
INC 
PLA 
JSR 
JSR 



COUT 
ADRL 

*6 

ADRH 
*7 

#*10 

PRNTAX 
*24 

LINPRT 
PRBLNK 



* AFFICHAGE DES OCTETS DIFFERENTS 

LDY #0 

LDA <*6),Y 



181 
182 
183 
184 
185 
186 
187 
188 
18? 
1?0 
1?1 
1?2 
1?3 
1?4 
195 
1?6 
1?7 
1?8 
1?? 
200 
201 

20 2 
203 
204 
205 
206 
207 
208 
20? 
210 

21 1 
212 
213 
214 
215 
216 
217 
218 
21? 
220 
221 
222 
223 
224 
225 
226 
227 
228 
22? 
230 
231 
232 
233 
234 
235 
236 
237 
238 
23? 
240 
241 
242 
243 
244 
245 
246 
247 
248 
24? 
250 
251 
252 
253 



JSR PRBYTE 

LDA #24 

STA *24 

LDA <*8) ,Y 

JSR PRBYTE 

JSR CRDO 

* DECOMPTE DES DIFFERENCES 

INC CTRL 

LDA CTRL 

BNE INCCOMP 

INC CTRH 

* POSITION SUIVANTE 



INCCOMP 



INC *6 

INC *8 

LDA *6 

BNE COMPARE 

INC *7 

INC *? 

BNE COMPARE 



RECAP 



* AFFICHE LE NOMBRE DE 

* DIFFERENCES TROUMEES 

RECAP JSR CRDO 

LDA *25 

CMP #21 

BCC RECAP2 

JSR APPUYEZ 

JSR HOME 

RECAP2 LDA CTRH 

LDX CTRL 

JSR LINPRT 

JSR ECRIT 

ASC " DIFFERENCE" 

HEX 00 

LDA CTRH 

BNE PLURIEL 

LDA CTRL 

CMP #*02 

BCC EXIT 

PLURIEL LDA #"S' 

JSR COUT 

EXIT JMP *3D0 



* ROUTINES DIVERSES- 
* 



ECRIT 



EC2 



ECS 



EC4 



PLA 




STA 


*0 


PLA 




STA 


*1 


LDY 


#00 


INC 


*0 


BNE 


ECS 


INC 


*1 


LDA 


<*0) ,Y 


BEQ 


EC4 


JSR 


COUT 


JMP 


EC2 


LDA 


*1 


PHA 




LDA 


to 


PHA 





Pom's n" 11 



254 




RTS 




314 


INPBCL LDA 


*1FF,X 


255 








315 


STA 


NOM-1 ,X 


256 


* EN-TETE 




316 


DEX 




257 








317 


BNE 


INPBCL 


258 


ENTETE 


JSR 


ECRIT 


318 






259 




ASC 


" ADRESSE 


319 


« EFFACEMENT 


DES ZONES RESERVEES 


260 


NOMl 


HEX 


A0A0A0A0A0 


320 


* AUX NOMS DES 2 PROGRAMMES 


261 




HEX 


AOAOAOAOAO 


321 






262 




HEX 


AO 


322 


LDX 


PRGNUM 


263 


N0M2 


HEX 


AOAOAOAOAO 


323 


LDY 


#10 


264 




HEX 


AOAOAOAOAO 


324 


LDA 


#*A0 


265 




HEX 


8D00 


325 


EFFBCL CPX 


#■2" 


266 




LDA 


#"-" 


326 


BEG 


EFFBCL2 


267 




BNE 


TRAIT1 


327 


STA 


N0M1-1 ,Y 


268 








328 


BNE 


EFFBCL 1 


26? 








329 


EFFBCL2 STA 


N0M2-1 ,Y 


270 


TRAIT 


LDA 


#*2D 


330 


EFFBCL1 DEY 




271 


TRAIT1 


LDX 


#32 


331 


BNE 


EFFBCL 


272 


TRAITBCL 


JSR 


COUT 


332 






273 




DEX 




333 


* TRANSFERT DU NOM DU PROGR. 


274 




BNE 


TRAITBCL 


334 


* DANS UNE DES 2 ZONES 


275 




JMP 


CRDO 


335 






276 








336 


LDY 


#0 


277 


« AFFICHE 'APPUYEZ SUR UNE 


337 


TRANBCL LDA 


NOM ,Y 


278 


« TOUCHE 


' ET 


ATTEND QU'UNE TOUCHE 


338 


CPX 


#"2" 


279 


* SOIT PRESSEE 


339 


BEQ 


TRANBCL2 


280 








340 


STA 


N0M1 ,Y 


281 


APPUYEZ 


JSR 


ECRIT 


341 


BNE 


TRANS2 


282 




HEX 


8D 


342 


TRANBCL2 STA 


N0M2.Y 


283 




ASC 


"APPUYEZ SUR UNE TOUCHE" 


343 


TRANS2 I NY 




284 




ASC 


" POUR POURSUIVRE" 


344 


CPY 


#10 


285 




HEX 


8D00 


345 


BNE 


TRANBCL 


286 




BIT 


4C010 


346 






287 


CLVBCL 


BIT 


tcooo 


347 


* AFFICHE 'BLOAD NOM-PROG , A*XXXX' 


288 




BPL 


CLVBCL 


348 


# PRECEDE DE 


CTRL-D ET OU XXXX 


28? 




BIT 


*C010 


349 


* EST *1000 OU *5000 


290 




JMP 


HOME 


350 






29! 








351 


JSR 


ECRIT 


292 








352 


HEX 


8D84 


293 


* CHARGEMENT 


D'UN PROGRAMME - 


353 


ASC 


■BLOAD" 


294 








354 


NOM HEX 


AOAOAOAOAO 


295 








355 


HEX 


AOAOAOAOAO 


296 


BLOADRTN 


STA 


PRGNUM 


356 


HEX 


AOAOAOAOAO 


297 




JSR 


ECRIT 


357 


HEX 


AOAOAOAOAO 


298 




ASC 


"NOM DU PROGRAMME " 


358 


HEX 


AOAO 


299 


PRGNUM 


HEX 


00 


359 


ASC 


" ,A*' 


300 




ASC 


■ . ■ 


360 


HEX 


00 


301 




HEX 


00 


361 


LDX 


PRGNUM 


302 




LDY 


#21 


362 


CPX 


#"2" 


303 




LDA 


#*A0 


363 


BEQ 


BL0AD4 


304 


EFFACE 


STA 


NOM.Y 


364 


LDA 


#*10 


305 




DEY 




365 


BNE 


BL0AD5 


306 




BPL 


EFFACE 


366 


BL0AD4 LDA 


#*50 


307 








367 


BL0AD5 LDX 


#0 


308 


* ENTREE 


D'UN 


NOM DE PROGR. 


368 


JSR 


PRNTAX 


309 








369 


JMP 


CRDO 


310 




JSR 


GETLN 


370 






311 




TXA 




371 


HEX 


0000 


312 




BNE 


INPBCL 


372 


FPROG HEX 


00 


313 




JMP 


*3D0 









Recapitulation 

0800- 00 OB 08 OA 80 8C 32 38 
0808- 34 31 00 00 00 4C 13 08 
0810- 4C BO 08 A9 Al 85 AF A9 
0818- OA 85 BO 20 EA 03 20 58 
0828- FC 20 73 09 8D 80 80 00 
0828- A9 05 85 20 20 FB DA 20 
0830- BC 09 20 73 09 20 02 20 



0838- 03 20 OF 20 OD 20 10 20 
0840- 2D 20 04 2E 20 13 15 12 
0848- 05 01 15 20 28 03 29 20 
0850- 31 39 38 33 20 80 00 20 
0858- BC 09 A9 00 85 20 20 FB 
0848- DA A9 Bl 20 03 OA 18 AD 
0848- 72 AA 4D 40 AA 85 OB AD 
0870- 73 AA 4D 41 AA 85 OC A9 
0878- B2 20 03 OA 20 73 09 CI 



0880- C4 02 C5 03 D3 C5 AO CE 
0888- CF D2 CD CI CC C5 BA 00 
0890- 20 4F FD 8A F0 IF 20 39 
0898- 05 A9 00 85 B8 A9 02 85 
08A0- B9 20 47 DO 20 52 E7 A5 
08A8- 50 85 1A A5 51 85 IB 20 
08B0- FB DA 4C B0 08 A9 00 85 
08B8- 1A A9 10 85 16 A9 00 85 
08C0- 18 85 19 20 92 09 A9 00 



Pom's n° 11 



08C8- 85 06 85 98 A9 10 85 07 
0800- A9 50 85 09 AO 00 A5 06 
08D8- C5 OB DO 06 A5 07 C5 OC 
08E0- BO 5A Bl 06 Dl 08 F8 46 
08E8- A5 25 C? 15 90 06 20 C9 
08F0- 09 20 92 09 A9 A4 20 ED 
08F8- FD A5 1A 18 65 06 AA A5 
0900- IB 65 07 38 E9 10 48 20 
0908- 41 F9 E6 24 68 20 24 ED 
0910- 20 48 F9 AO 00 Bl 06 20 
0918- DA FD A9 18 85 24 Bl 08 
0920- 20 DA FD 20 FB DA E6 18 
0928- A5 18 DO 02 E6 19 E6 06 
0930- E6 08 A5 06 DO AO E6 07 
0938- E6 09 DO 9A 20 FB DA A5 
0940- 25 C? 15 90 OA 20 CP 09 
0948- 20 58 FC A5 19 A6 18 20 
0950- 24 ED 20 73 09 AO C4 C9 
0958- C6 C6 C5 D2 C5 CE C3 C5 
0960- 00 A5 19 DO 06 A5 18 C9 



0968- 02 90 05 A9 D3 20 ED FD 
8970- 4C DO 03 68 85 00 68 85 
0978- 01- AO 00 E6 00 DO 02 E6 
0980- 01 Bl 00 FO 06 20 ED FD 
0988- 4C 7B 09 A5 01 48 A5 00 
0990- 48 60 20 73 09 AO CI C4 
0998- D2 C5 D3 D3 C5 AO AO AO 
09A0- AO AO AO AO AO AO AO AO 
09A8- AO AO AO AO AO AO AO AO 
09B0- AO AO AO AO AO AO 8D 00 
09B8- A9 AD DO 02 A9 2D A2 20 
09C0- 20 ED FD CA DO FA 4C FB 
09C8- DA 20 73 09 8D CI DO DO 
09D0- D5 D9 C5 DA AO 03 D5 D2 
09D8- AO 05 CE C5 AO D4 CF D5 
09E0- C3 C8 C5 AO DO CF 05 D2 
09E8- AO DO CF D5 02 03 05 C9 
09F0- 06 02 C5 80 00 2C 10 CO 
09F8- 2C 00 CO 10 FB 2C 10 CO 
OAOO- 4C 58 FC 8D 1A OA 20 73 



0A08- 09 CE CF CD AO C4 05 AO 
0A10- DO 02 CF C7 D2 CI CD CO 
0A18- C5 AO 00 AO BA 00 AO 15 
0A20- A9 AO 99 70 OA 88 10 FA 
0A28- 20 6F FD 8A 00 03 4C DO 
0A30- 03 BD FF 01 90 6F OA CA 
0A38- DO F7 AE 1A OA AO OA A9 
0A40- AO EO B2 FO 05 99 AO 09 
0A48- DO 03 99 AB 09 88 00 Fl 
0A50- AO 00 B9 70 OA EO B2 FO 
0A58- 05 99 Al 09 DO 03 99 AC 
0A60- 09 C8 CO OA DO EC 20 73 
0A68- 09 80 84 C2 CC CF CI C4 
0A70- AO AO AO AO AO AO AO AO 
0A78- AO AO AO AO AO AO AO AO 
0A80- AO AO AO AO AO AO AC CI 
0A88- A4 00 AE 1A OA EO B2 FO 
0A90- 04 A9 10 00 02 A9 50 A2 
0A98- 00 20 41 F9 4C FB DA 00 
8AA0- 00 00 



1. Le Disk Manager : le 
DOS en kit. 

Presentation : une documentation 
d'une cinquantaine de pages et une 
disquette. Prix: 450 FF TTC port 
compris. Disponibilite : debut avril. 

Oeuvre de Dan Steevey. le Disk Ma- 
nager est un programme utilitaire qui 
permet de recreer les commandes 
d'un DOS ou de redefinir ['organisa- 
tion d'une disquette, grace a un jeu 
d' instructions qui en fait un langage 
simple d'acces au disque. 

II contient en seconde part un pro- 
gramme, particulierement simple 
d'emploi, d'acces aux secteurs du 
disque. et qui offre pourtant des 
commandes evoluees. 

Son but est de permettre la realisa- 
tion en Basic de programmes faisant 
directement appel au disque, en 10% 
du temps necessaire pour ecrire les 
memes programmes en assembleur. 

Le Disk Manager comporte deux 
programmes en langage machine qui 
peuvent resider ensemble en me- 
moire, mais sont chargeables separe- 
ment : 

• le Disk Organizer Manager (DOM) 
contient toutes les instructions de 
commande disque en 2Ko. 11 peut 
etre utilise en mode direct ou a 
partir d'un programme Basic. 

• le Disk Editor (DE) est une 
commande additionnelle, fonction- 
nant en mode direct ou en sous- 
programme, qui permet de char- 
ger, visualiser, editer et reecrire 
des secteurs individuellement. 

Utilitaires 

La disquette contient egalement qua- 
tre programmes utilitaires elabores 



Deux produits nouveaux 
pour les lecteurs de Pom's 



avec ce langage d'acces au disque. 
L'analyse de ces utilitaires vous ai- 
dera a en maitriser toutes les possibi- 
lites. 

UT1L1-DISQUE reunit des utilitaires 
classiques ainsi que des utilitaires 
semblables a ceux du CP/M ou du 
MS-DOS : reconstruction de dis- 
quette detruite. verification, affichage 
de la carte d'occupation, ... 

ULTRA-COP1E est la conversion en 
assembleur d'un algorithme de copie 
de disquettes mis au point en Basic 
(et presente dans la documentation) : 
c'est un programme de "backup" de 
fichier tres simple d'emploi et le plus 
rapide actuellement siir Apple II (a 
notre connaissance). 

EDICAT offre le moyen d'editer le 
catalogue d'une disquette afin d'en 
ameliorer la presentation, de classer 
les programmes, d'ajouter des titres, 
un en-tete, ... 

MULTI-DISQUE construit une base 
de donnees de tous vos program- 
mes : il suffit de placer une disquette 
dans le lecteur pour incorporer son 
catalogue au fichier. Une routine de 
tri inedite (a deux tableaux simulta- 
nes) realise un classement instantane. 

NDLR - Le Disk Manager est a la 
fois un excellent outil et un moyen 
tres efficace de comprendre le DOS 
et d'en utiliser toutes les ficelles a 
partir du Basic. Chacun peut alors se 
construire simplement des utilitaires 
personnalises. 



2. DBSTAG - Utilitaires 
pour DBASE II. 

Presentation : une disquette CP/M 
comportant les programmes et une 
documentation detaillee imprimable. 
Prix : 450 FF TTC port compris. 

DBSTAG est un logiciel associe a 
DBASE II et ecrit pour Apple II avec 
carte Z80. pour fonctionnement sous 
CP/M et carte 80 colonnes et minus- 
cules a 1'ecran. Ce logiciel permet 
d'effectuer des calculs statistiques 
souvent utiles en gestion : moyenne 
et ecart-type d'une serie de valeurs, 
construction d'histogrammes, calculs 
de correlation (covariance, coefficient 
de correlation, le cas echeant ordon- 
nee a l'origine et pente de la droite 
de regression), analyse en deciles et 
analyse de Pareto. Ce logiciel n'est 
pas destine a des statisticiens, mais a 
des gestionnaires. 

Les resultats, fournis sous forme chif- 
free. sont assortis de representations 
semi-graphiques, en caracteres impri- 
mables par toute imprimante 80 co- 
lonnes ou plus. 

DBSTAG peut exploiter, sans aucune 
transformation ou limitation, toute 
base de donnees construite sous 
DBASE II. II peut etre utilise seul, ou 
comme sous-programme d'un pro- 
gramme ecrit par I'utilisateur. Simple 
a comprendre et a apprendre, il est 
livre avec un exemple complet qui il- 
lustre parfaitement ses possibilities. 



Pom's n" 11 



wm 





jcipple 

® le gout du sav< 



SEEDRIN av de I'Oceanie. Z.A. de Courtaboeuf, 8.P 131/91944 Les Uli 



L'obtention de l'extremum absolu 
des fonctions a plusieurs variables 



A Guillez et Y. Cherruault 



But et principes 

Le probleme traite dans cet article est 
tres important en informatique scien- 
tifique et technique, en recherche 
operationnelle et en comptabilite pre- 
visionnelle. 

Devoir identifier des fonctions dont 
on connait la forme mathematique. 
mais pas les coefficients, et employer 
pour cela un algorithme de minimum 
ou de maximum, est une tache cou- 
rante dans tout bureau d'etude. En 
outre, les methodes de minimisation 
sont d' usage pour resoudre les syste- 
mes differentiels et aux derivees par- 
tielles (Ritz et Rayleigh). 

Tous les procedes existants pour les 
fonctions de plusieurs variables sont 
bons. mais tous calculent des minima 
ou des maxima locaux. lis sont 
fondes sur l'hypothese de 1' unicite de 
l'extremum au voisinage des valeurs 
initiales injectees dans le calcul. 
On s'efforce. en informatique scienti- 
fique, de dernontrer cette unicite et. 
lorsqu'on n'y parvient pas, de definir 
les conditions, les intervalles ou elle 
existe pour s'y placer. C'est generale- 
ment un travail difficile, long et peni- 
ble. De plus, cette etude prealable 
garantit qu'il existe un extremum 
dans certains intervalles. mais non 
que ce sera l'extremum absolu. 

11 existe des methodes probabilistes 
de recherche des extrema absolus 
mais, par nature, elles peuvent seule- 
ment garantir que le point trouve fi- 
nalement est bien le minimum ou le 
maximum absolu avec une certaine 
probability, par exemple de 95 %. 
Elles ne donnent pas de certitude. 

Dans les problemes pratiques utilisant 
des methodes de minimisation 
maximisation, seul l'extremum absolu 
peut fournir le meilleur resultat, la 
meilleure approximation, d'ou le 
grand interet d'une methode deter- 
ministe d'obtention de cette valeur. 
Cet interet suppose toutefois que la 
methode retenue ne consomme pas 
trop de temps-machine; celui-ci doit 
rester comparable avec le temps total 
necessaire a l'obtention d'un bon ex- 
tremum par les methodes habituelles 
(duree de 1' etude prealable donnant 
les conditions d' existence et d' unicite. 
plus duree de redaction et de frappe 
du programme, plus temps d'execu- 
tion proprement dit). 

On sait parfaitement. et depuis long- 
temps, trouver l'extremum absolu 



d'une fonction d'une seule variable, 
y compris quand cette fonction n'est 
pas exprimable mathematiquement. 
quand il s'agit d'une sous-routine (on 
utilise dans ce cas des procedes de 
parcours et discretisation). 
Les auteurs ont done imagine une 
transformation mathematique qui ra- 
mene toute fonction de plusieurs va- 
riables a une fonction d'une seule 
variable avec l'approximation voulue 
et, en pratique, avec une excellente 
approximation. 

Cette transformation est baptisee 
Alienor. 

Le principe fondamental d'Alienor 
est une propriete particuliere aux spi- 
rales d'Archimede (voir figure 1). La 
courbe. d'equation polaire R=17C. 
passe a la distance maximum 2tt IC 
de tout point M du plan, cette dis- 
tance etant mesuree sur le rayon 
vecteur et T etant positif. 
Si le signe de T est quelconque. on 
obtient la spirale double de la figure 
2a, qui passe a la distance maximum 
n/C de tout point du plan. Les spira- 
les d'Archimede passent par l'origine 
et leurs equations cartesiennes para- 
metriques sont : 

• XI = T*COS(T)/C 

• X2 = T*SIN(T)/C 

On peut done deja, par la transfor- 
mation ci-dessus (baptisons-la 1). ra- 
mener toute fonction de deux varia- 
bles a une fonction de la seule 
variable T avec l'approximation que 
Ton veut, e'est-a-dire definir une 
courbe qui passera a une distance 
maximum fixee de tout point de la 
surface representee par la fonction 
de deux variables, sous la seule 
condition que cette fonction soit 
continue. 

Plus precisement, soit Z=f(Xl,X2) la 
fonction examinee; elle represente 
une surface. Soient Yl et Y2 les 
images de XI et X2 par la transfor- 
mation (I), e'est-a-dire le point de la 
spirale d'Archimede d'equation (I) 
qui est le plus proche de XI -X2. Si 
la fonction f(Xl,X2) est continue. 
f(Yl.Y2) sera une bonne approxima- 
tion de f(Xl,X2), et meme d'autant 
meilleure que Y1-Y2 sera plus pres 
de XI -X2. 
Or: 

• la distance ((X1-Y1)"2) + 
((X2-Y2K2) est bornee et reste 
inferieure a ((2n IC) '2) 

• en tout extremum a derivees par- 



tielles nulles, la fonction examinee 
est continue 

Le minimum ou le maximum absolus 
de l'image Z=f(Yl,Y2) seront done 
des valeurs approchees des extrema 
absolus de l'original Z=f(Xl,X2). 

En general, si Ton peut definir un 
parcours suffisamment dense de l'es- 
pace des variables, la transformation 
definie par les equations de ce par- 
cours fournira une valeur approchee 
des extrema de la fonction examinee. 
II n'est pas difficile de densifier le 
parcours d'Archimede du plan, ce 
qui permet de limiter le parametre C 
et le pas d' exploration. II suffit pour 
cela de connaTtre les bornes inferieu- 
res et superieures des variables qu'on 
cherche. 

En pratique, cette condition est tou- 
jours remplie. Elle peut necessiter 
une etude prealable du phenomene 
traite, mais cette etude est de toute 
fagon indispensable et profitable. 

Generalisation 

La figure 2 represente une transfor- 
mation Alienor a 4 variables et la fi- 
gure 3 une transformation a 8 varia- 
bles. Ces figures montrent comment 
on generalise a un nombre quelcon- 
que N de variables. La transforma- 
tion a une structure d'arbre. 
Ainsi. la perte d'information reste 
bornee et. d'autre part, ii est facile 
d'etablir un programme de test qui 
calculera la distance reduite maxi- 
mum a laquelle le parcours passe de 
tout point M de I'espace a N dimen- 
sions en fonction de ses parametres 
(diviseur C. valeur maximum TM de 
la variable T d'Alienor. pas d' explo- 
ration P et, on le verra un peu plus 
loin, facteur de densification K). 

Pour N variables transformees. le 
nombre de niveaux S est la partie 
entiere par exces du logarithme base 
2 de N. II est done agreablement 
borne : 

• N=2 : S=l 

• N=3 ou 4; S=2 

• N=5, 6. 7 ou 8 : S=3 

• N=9 a 16 : S=4 ... 

L' informatique est une science expe- 
rimentale et l'experience nous a 
appris que : 

• Une bonne valeur de TM est 

(C"S). 

• 0.2 est toujours une bonne valeur 
de pas. 

• 2 et 3 sont toujours de bonnes va- 



Pom's n° 11 



leurs du facteur de densification K. 

• De bonnes valeurs du diviseur C 
sont : 25 pour 2 variables transfor- 
mees. 7 pour 3 ou 4. 6 pour 5 a 
8. 

En pratique, les micro-ordinateurs ac- 
tuels ne peuvent aller au-dela de 16 
variables, car le nombre de pas, et 
done le temps de calcul. deviennent 
ensuite prohibitifs. En effet, 6 4 = 
1296 et 1296.0.2 = 6480 pas pour 
16 variables transformees. soit autant 
d'execution des calculs. ce qui repre- 
sente facilement toute une nuit. 

Densification. Obtention 
du minimum absolu de 
l'image 

L'experience a appris que la meil- 
leure technique de densification. la 
plus rapide, employait la fonction 
INT. 

Soient m et M les bornes inferieures 
et superieures de la variable X, et 
Y=f(T) la transformee archimedienne 
de X, le principe de la densification 
est : 

• Si 0<Y<1 : XA = m + 
(M-m).Y 

• Autrement : XA = m + (M-m) * 
(K»Y - 1NT(K*Y)) 

XA est l'image de X par Alienor. 

La figure 4 montre 1' obtention du mi- 
nimum absolu de l'image. On prend 
d'abord un minimum au hasard MR. 
puis on progresse sur le parcours a 
partir de T=0 en cherchant des mi- 
nima successifs a des cotes de plus 
en plus basses. Le plus petit mini- 
mum trouve est l'approximation 
cherchee du minimum absolu de la 
fonction originate de N variables. 

Le pas initial dans la sous-routine de 
minimisation sera 0.1. II devra etre 
diminue jusqu'a 0.002, ce qui fait 7 
passes au facteur de reduction 0.55. 
Ce dernier est generalement 
conseille. 

Ensuite, on obtiendra le minimum 
absolu de l'original par une sous-rou- 
tine de variations locales, qui n'aura 
que peu d' iterations a faire. 

Formules de transforma- 
tion 

1 ) Pour 3 variables : 

• Tl=T*COS(T)/7 

• T2=T*SIN(T)/7 et 

• Xl=Tl*COS(Tl)/7 

• X2=T2*COS(T2)/7 

• X3=T2*SIN(T2)/7 

2) Pour 4 variables : 

• Tl. T2, XI. X2 et X3 comme ci- 
dessus 

• X4=Tl*SIN(Tl)/7 

3) Pour 5 variables : 



• Tl=T*COS(T)/6 

• T2=T*SIN(T)/6 

• T3=Tl*COS(Tl)/6 

• T4=Tl*SIN(Tl)/6 

• T5=T2*COS(T2)/6 

• Xl=T3*COS(T3)/6 

• X2=T3*SIN(T3)/6 

• X3=T4*COS(T4)/6 

• X4=T4*SlN(T4)/6 

• X5=T5*COS(T5)/6 

4) Pour 6 variables. ajouter 
X6=T5*SIN(T5)/6 

5) Pour 7 variables. ajouter 
T6=T2*SIN(T2)/6 et 
X7=T6*COS(T6)/6 

6) Pour 8 variables. ajouter 
X8=T6*SIN(T6)/6 ... 



Exemple de programme 

Le programme ci-joint identifie un 
developpement exponentiel a 4 
termes, qui simule l'une des fonc- 
tions d'un systeme compartimental et 
est cense representer une concentra- 
tion. 

Le programme principal commence 
par la fabrication du probleme (lignes 
2 a 32). On donne en ligne 6 les 
dates T(I) des mesures. On prend en 
ligne 10, au hasard, les exposants 
L(I) de fagon vraisemblable. puis de 
meme en ligne 12 les coefficients 
A(I). Les lignes 14 a 24 constituent la 
boucle de calcul des valeurs des 
concentrations C(I) pour les T(I). Ces 
valeurs sont astreintes par la ligne 22 
a etre toutes positives, puis subissent 
une perturbation aleatoire de plus ou 
moins 0,05*RND(8) pour etre ren- 
dues vraisemblables. 

Sous-routine 400 transformation 
Alienor. 

Lignes 420 a 500 :ca!cul des expo- 
sants et des coefficients, calcul des 
"valeurs calculees" CC(I) de la 
concentration, calcul de la fonction a 
minimiser DE qui est 100 fois l'erreur 
type des moindres carres de CC(I) 
exprimee avec 5 decimales. Par souci 
de realisme, C(I) et CC(I) sont expri- 
mes avec 3 decimales. 

Sous-routine 300 :obtention des 
minima locaux d' Alienor, la sous-rou- 
tine 200 donnant le minimum absolu 
de la fonction DE des 8 variables L(l) 
et A(I). 

Lignes 34 a 42 :obtention au ha- 
sard du point le plus bas parmi 15 
(DA, TA), puis, via 300. du mini- 
mum correspondant (DR. TR). 

Lignes 44 a 58 :execution de la fi- 
gure 4. les minima d' Alienor succes- 
sifs. de plus en plus bas, sont appeles 
DZ-TZ. Le dernier trouve est le plus 
petit et done le minimum absolu 



d' Alienor; on l'appelle DL et les va- 
leurs correspondantes des L(I) et A(i) 
sont dites LL(I) et AL(I). 

Ligne 60 :prevoit un alea : le mini- 
mum absolu d' Alienor peut-etre DR. 
De meme. la ligne 56 prevoit que la 
vallee a pu etre trouvee en TA-DA 
par l'aval. 

Ligne 62 :appeler 300 au lieu de 
400 ne peut qu'ameliorer le resultat 
Les resultats d' Alienor sont imprimes 
aux lignes 68 a 82. 

La ligne 86 appelle 200 pour les re- 
sultats definitifs qui sont DM (100 
fois l'erreur type), les exposants L(i). 
les coefficients A(I) et les "valeurs 
calculees" CC(I). Ces resultats sont 
imprimes aux lignes 88 a 100. 

La sous-routine 400 comprend les 
expressions des L(l) a I'aide de la va- 
riable T d' Alienor (lignes 400 a 418). 
les initialisations (420 a 426). le cal- 
cul des matrices primitives des moin- 
dres carres MC(IJ) et CM(I.J) et des 
matrices principales M(I.K) et V(I) 
(lignes 434 a 446). le calcul des A(I) 
par la methode de Gauss (lignes 448 
a 486). et enfin le calcul des CC(I) 
puis de DE (lignes 488 a 499). 

La sous-routine de minima d'Alienor 
(300 a 332) est du type "a balance- 
ment", minimisation quadratique, tri 
et reprise avec reduction du pas. Le 
pas initial est defini en 300 : e'est le 
pas d' exploration (0.2) multiplie par 
DA 100 pour qu'il y ait tres peu de 
reprises. Rappelons en effet que la 
premiere valeur de DA est le plus 
petit des 15 nombres DE pris au ha- 
sard et que les valeurs suivantes sont 
toutes inferieures a DR. et de plus en 
plus petites. On se procure d'abord 5 
valeurs encadrantes, les X et les Y. 
on sort la plus petite (lignes 316 a 
322), et on reprend avec elle et un 
pas reduit. Les Y sont les DE et les X 
sont les angles. Le resultat final est 
baptise TM-DM. 

La sous-routine 200 est organisee de 
la meme facon et agit sur les 4 expo- 
sants. qui y prennent les appellations 
Y. les DE correspondants etant appe- 
les X. 

Les resultats d'Alienor sont excel- 
lents : l'approximation trouvee 
(2.48515 %) est inferieure au quan- 
tum de la perturbation aleatoire (5 
%). II ne faut pas croire que e'est 
une exception : e'est la regie. Tous 
ceux qui utiliseront ce programme 
sur leur Apple pourront s'en convain- 
cre. 

Les resultats definitifs sont encore un 
peu meilleurs, mais a peine. Pour- 
tant. la sous-routine 200 procure une 
modification significative des expo- 
sants L(I) et des coefficients A(I). 



Pom's rf 11 




AX 4 




X 3= t4cost4 v 4 _ t4sint4 x?= t6cost6 ^ Jgsinte 

Structure d'arbre 




6 TR TL t M 

Gbtention du minimum absolu de l'image. 



Programme ALIENOR 

1 REM ** ALIENOR ** 

2 DIM T<li>,C<ll>,CC<U> ( MC<U f 3> 

,CMC3,I1) ,M<3,3> ,M<3> , L< 3) , LL 
<3) ,A<3> ,AL(3> 



4 DIM LX<3) ,P<3> ,X<5> ,Y<5> ,G<3> 
6 DATA .5,1,2,4,6,8,11,15,18,21,2 
4,30 

8 FOR I = TO 11: READ T<I): NEXT 

10 L<0) = .30 * RND (1):L(1) = RND 
<1) :L<2) = L<1) + (1 - L<1>> * 



Pom's rV 11 



RND (D.-^O) = 4 + 2 * RND 
<1 ) 

12 A<0) = 2 + 4 * RND < 1 ) :A< 1 ) = 

- 2 - 2 * RND <1> :A<2) = .5 

- 5 * RND <l> !A<3> = 3 + 5 * 
RND <1) 

14 I = 0:C(I) = 

16 J = 0:SI = INT < RND <1) * 100 

> 

18 C<I) = C(I) + EXP < - T(I) * L 

( J) ) * A< J) 
20 IF J < =2 THEN J = J + 1: GOTO 

18 

22 IF C(I) < =0 THEN 12 

23 C<I) = C(I) * (1 + .05 * RND < 

1) * < - 1) * SI ) : C< I ) = .001 
* INT <C<I) * 1000 + .5) 

24 IF I < =10 THEN 1=1 + 1: GOTO 

16 

25 PRINT CHR* <4)"PR#1" 

27 PRINT " DONNEES" 

28 FOR I = TO 11 STEP 3 

29 PRINT •C<"I")="C<D" C<"I + 

1")="C<I + 1)" CCI + 2") 

="C(I + 2) 

30 NEXT I 

31 PRINT "*********************** 

******** 

32 PRINT CHR* <4)"PR*»0" 

34 T = 50 * RND (1): GOSUB 400: DA 

= DE:TA = T 
36 FOR II = TO 15:T = 50 * RND 

<1>: GOSUB 400 :DI = DE 
38 IF DI < = (DA) THEN DA = DI :T 

A = T 
40 NEXT I I 

42 GOSUB 300 : DR = DM :TR = TM : PRINT 

"DR="DR 
44 TZ = 0:DZ = DR 
46 Q = 

48 T = TZ + .2 * Q: GOSUB 400: DA = 

DE:TA = T 
50 IF T > =50 THEN 60 
52 IF DA > DZ THEN Q = Q + 1 : GOTO 

48 

54 . GOSUB 300 : DZ = DM :TZ = TM:TC = 
TM 

56 IF TZ < = <TA + .2) THEN TZ = 

TA + .2 
58 GOTO 46 

60 IF TZ = THEN TC = TR 
62 TA = TC:DA = DZ : GOSUB 300 : DL = 
DM 

64 PRINT CHR* <4)"PR#1" 

68 PRINT "RESULT ATS D' ALIENOR" 

70 FOR II = TO 3:LL<II) = L<II) 

:AL( II) = A< 1 1 ) 
72 PRINT "LL<"II")="LL<II)" A 

L<"II')="AL(II) 

74 NEXT 1 1 

75 FOR M = TO 11 STEP 3 

76 PRINT "CC< "M" )="CC(M) " CC< 

"M + 1">="CC<M + 1)" CC<" 
M + 2">="CC<M + 2) 

77 NEXT M 

78 PRINT " DL= " DL 

80 PRINT "*********************** 



82 
86 
88 
92 
94 
96 



97 
98 



99 

100 

104 

200 

202 



204 

206 

208 

210 
212 

214 

216 

218 



220 
222 
224 

226 
228 
230 

232 

234 

236 

238 
240 
300 

302 

304 



306 
308 

310 



312 



***" 

PRINT CHR* <4)"PR#0" 
GOSUB* 200 

PRINT CHR* <4)"PR#1" 

PRINT "RESULTATS DEFINITIFS" 

PRINT "DM="DM 



FOR 11=0 
)="L<II) U 
NEXT II 
FOR 11=0 
PRINT "CCC 



TO 



TO 
I I ' 



C<"II + 1")=' 



3: PRINT "L<"II" 
A<"II")="A<II) : 

11 STEP 3 
)="CC<II)" C 
CCC 1 1 + 1)" 



+ 2")="CC(II + 2) 



CHR* <4)"PR#0" 



DL 

TO 3:LX<I2) = 
LL < I 2) * DL / 



LL( I 
100: 



TO 3:Y(0) 



LX( 12) 



= Y< 



= Y< 



= Y< 



= Y< 



CCC "I I 
NEXT II 
PRINT 
END 

RG = : DX 
FOR 12 = 

2) :P<I2) 
NEXT 12 

FOR 12 = 
:X<0) = DX 
Y< 1 ) = Y<0) + P< I 2) : L < I 2) 
1) : GOSUB 420:X<1) = DE 
IF X(l) < X<0) THEN Y(0) 
1 ) :X<0) = X< 1 ) : GOTO 206 
Y<2) = Y<0) :X<2) = X(0) 
Y<3) = Y<2) - P<I2):L(I2) 

3) : GOSUB 420:X(3) = DE 
IF X<3) < X(2) THEN Y<2) 
3):X<2) = X<3): GOTO 212 

Y<4) = Y<0) + P<12) * X<0) / < 

X<0) + X(1)):L<I2) = Y<4): GOSUB 

420:X<4) = DE 
Y<5) = Y<2) - PCI2) * X<2) / ( 

X<2) + X(3)):L<I2) = Y<5): GOSUB 

420:X(5) = DE 
DX = X(0) :LX< 12) = Y<0) 

FOR J2 = 1 TO 5 

IF X<J2) < = X<0) THEN DX = 

X< J2) :LX( 12) = Y< J2) 

NEXT J2 

NEXT 12 

IF (.55 * RG) < = .01 THEN 2 
36 

FOR 12 = TO 3:P<I2) = .55 * 

P(I2) : NEXT 12 
RG = RG + 1 : GOTO 204 
L<0) = LX<0):L<1) = LX<1):L<2) 
= LX(2) :L<3) = LX<3) 

GOSUB 420 : DM = DE 

RETURN 

P = DA * .002:X(0) = TA:Y<0) = 

DA : RF = 
X<1) = X(0> + P:T = X<1): GOSUB 

400:Y<1) = DE 

IF Y<1) < = <Y(0) - IE - 5) THEN 
X<0) = X( 1 ) :Y<0) = Y< 1 ) : 
302 

X<2) = X<0) :Y(2) = Y<0> 
X<3) = X(2) - P:T = X<3): 

400:Y(3) = DE 

IF Y<3) < = <Y(2) - IE 

X<2) = X<3) :Y<2) = Y<3) : 

308 

X<4) = X<0) + P * Y<0> / 



GOTO 



GOSUB 



- 5) THEN 
: GOTO 



<Y(0) 

+ Y(1)>:T = X<4): GOSUB 400: 



«*ti ti»illu w >iimil B 



Pom's n° 11 



314 



316 
318 
320 

322 
324 
326 

328 
330 
332 
400 

402 



404 
406 
408 



410 
412 



414 

416 

418 

420 
422 

424 

426 
434 

436 

438 
440 

442 
444 



Y(4> = DE 
X(5) m X(2) - P * Y<2) / <Y<3> 
+ Y<2>):T = X(5): GOSUB 400: 

Y(5) = DE 
TM = X(0> : DM = Y(0) 

FOR 11=1 TO 5 

IF Y(I1) < Y<0) THEN TM = X< I 

1) :DM = Y(I1) 

NEXT II 

IF P < = .002 THEN 330 
X<0> = TM:Y(0> = DM:P = .55 * 
P 

RF = RF + 1 : GOTO 302 
T = TM: GOSUB 400 
RETURN 

TO = T * COS (T> / 7:T1 = T * 
SIN (T) / 7 

T2 = TO * COS <T0) / 7:T3 = T 
* SIN (TO) / 7:T4 = Tl * COS 
<T1) / 7:T5 = Tl * SIN (Tl ) / 
7 

IF T2 > =0 AND T2 < = .3 THEN 
L(0> = T2: GOTO 408 

.3 * INT (3.3333 * 



T2 - 



L(0) 
T2> 

IF T3 > =0 AND T3 < = .333 
4 THEN L(l> = 3 * T3: GOTO 41 
2 

L(l) = 3 * T3 - INT (3 * T3) 
IF T4 > =0 AND T4 < = .333 
4 THEN L(2) = L(l) + (1 - L(l 
>) * 3 * T4: GOTO 416 

L(2) = L(l) + (1 - L(l>) * (3 * 
T4 - INT (3 * T4>> 
IF T5 > =0 AND T5 < = .333 
4 THEN L(3) = 6 * T5 + 4: GOTO 
420 

L(3) =4+6* T5 -2* INT ( 

3 * T5) 
DE = 0:SE = 

FOR I = TO 3:V(I> = 0:M(I,0 

) = 0:M(I,1) = 0:M(I,2) = 0:M 

(1,3) = 
L(I) = ABS (L(I>):L(I) = INT 

(L(I) * 1E4 + .5) * IE - 4 

NEXT I 

FOR I = TO 1 1 : FOR J = TO 

3 

E = EXP ( - T(I) * L(J)):MC<I 
,J> = E:CM(J,I) = E 
NEXT J, I 

FOR I = TO 3: FOR J = TO 
1 1 

V(I) = V(I) + CM(I,J> * C(J) • 
FOR K = TO 3:M(I,K> = M(I,K 
) + CM(I,J) * MC(J,K): NEXT K 



446 NEXT J, I 

448 FOR H = 3 TO 1 STEP - 1 : FOR 

I = H - 1 TO STEP - 1 
450 IF M(H,H) < > THEN 470 
452 FOR L = H - 1 TO STEP - 1 

454 IF M(L,H) < > THEN 460 

455 NEXT L 

456 DE = 10000: GOTO 500 
460 REM ALIENOR 

462 FOR W = TO 3 



464 G(W) = M(L,W) :M(L,W> = M(H,W>: 

M(H,W) = G(W) 
466 NEXT W 

468 Ml = V(L):V(L) = V(H):V(H> = V 
1 

470 V(I> = U(I) - M(I,H) * V(H) / 

M(H,H) 
472 FOR J = TO H 

474 M(I,J> = M(I,J) - M(I,H> * M(H 

,J> / M(H,H) 
476 NEXT J, I ,H 

478 A(0) = V(0) / M(0,0) 

479 A(0) = INT (A(0) * 1E4 + .5) * 

IE - 4 

480 FOR I = 1 TO 3:S = 

482 FOR K=0TOI-l:S=S+M( 
I ,K) * A(K) : NEXT K 

484 A(I) = (M(I) - S) / M(I,I) 

485 A(I> = INT (A(I) * 1 E4 + .5) * 

IE - 4 

486 NEXT I 

488 FOR I = TO 11:CC(I) = 

490 FOR J = TO 3:CC(I) = CC(I) + 

A( J) * MC( I , J) : NEXT J 
492 CC(I) = INT (CC(I) * 1000 + . 

5) * .001 
494 SE = SE + ABS (CC(I)):DE = DE 

+ (CC( I ) - C( I ) ) ' 2 
496 NEXT I 

498 DE = 100 * SQR (12 * DE) / SE 

499 DE = INT ( DE * 1 E5 + .5) * IE 

- 5 

500 RETURN 



REM ** PROGRAMME DE TEST ** 

(ALIENOR) 



2 INPUT C:TM = C " 2 + 1 
4 DIM DL(20) :CR = 

6 L(0> = .3 * RND (1):L(1) = RND 
(1) :L(2) = L(l> + (1 - L(l)) * 

RND (1):L(3) = 4 + 2 * RND 
(1> 

8 TA = TM * RND (1>:T = TA: GOSUB 

400: DA = DE 
10 FOR II = TO 15:T = TM * RND 

(1) : GOSUB 400 :DI = DE 
12 IF DI < (DA) THEN TA = T : DA = 

DE 

14 NEXT II 

16 GOSUB 300 :DR = DL:TR = TL : PRINT 

"DR="DR 
18 DZ = DR:TZ = 
20 Q = 

22 TA = TZ + .2 * Q:T = TA: GOSUB 

400: DA = DE 
24 IF T > = TM THEN 34 
26 IF DA > DZ THEN Q = Q + 1 : GOTO 

22 

28 GOSUB 300 :DZ = DL:TZ = TL :TC = 
TL 

30 IF TZ < = (TA + .2) THEN TZ = 
TA + .2 




Pom's n° 11 



32 GOTO 20 

34 IF T2 = THEN TC = TR 

36 TA = TC:DA = DZ : 60SUB 300:DL(C 

R) = DL: PRINT " DL( " CR" )=" DL( 

CR> 

38 IF CR > =20 THEN 42 

40 CR = CR + 1 : GOTO 6 

42 DS = DL(0):DI = DL(0):DL = DL(0 

) * 2 
44 FOR J = 1 TO 20 

46 IF DL(J) > DL(0) THEN DS = DL< 
J> 

48 IF DL(J) < DL<0> THEN DI = DL< 
J> 

50 DL = DL + DL(J) * 2 
52 NEXT J 

54 DL = SQR < DL / 21 ) 

56 PRINT CHR* <4)"PR#1" 

60 PRINT "RESULTATS DU TEST" 

62 PRINT "DL="DL*X DS="DS"X 

DI="DI"X C="C 
64 PRINT CHR* (4)"PR#0 a 
70 END 

300 P = DA * .002:X(0) = TA:Y<0) = 

DA : RF = 
302 X<1) = X<0) + P:T = X(l>: GOSUB 

400:Y<1) = DE 
304 IF Y(l) < = (Y(0) - IE - 5) THEN 

X(0) = X(1):Y(0) = Y(l): GOTO 

302 

306 X(2) = X(0):Y(2) = Y(0> 

308 X(3) = X(2) - P:T = X(3>: GOSUB 

400:Y<3) = DE 
310 IF Y<3) < = <Y(2) - IE - 5) THEN 

X(2) = X<3):Y(2) = Y<3>: GOTO 

308 

312 X<4> = X(0) + P * Y<0) / <Y(0> 
+ Y<1)):T = X(4): GOSUB 400: 
Y(4) = DE 
314 X<5) = X(2) - P * Y(2) / (Y(3) 
+ Y(2)):T = X<5): GOSUB 400: 
Y(5) = DE 
316 TL = X(0) : DL = Y(0> 



318 FOR II = 1 TO 5 

320 IF Y(I1) < Y<0) THEN TL = X( I 

1):DL = Y<I1) 
322 NEXT II 

324 IF P < = .002 THEN 330 
326 X<0) = TL:Y(0) = DL:P = .55 * 
P 

328 RF = RF + 1 : GOTO 302 
330 T = TL: GOSUB 400 
332 RETURN 

400 TO = T * COS (T) / C:T1 = T * 
SIN <T> / C 

402 T2 = TO * COS (TO) / C:T3 = T 

* SIN (TO) / C:T4 = Tl * COS 
(Tl> / C:T5 = Tl * SIN <T1) / 
C 

404 IF T2 > =0 AND T2 < = .3 THEN 

M<0> = T2: GOTO 408 
406 M<0) = T2 - .3 * INT <3.3333 * 

T2> 

408 IF T3 > =0 AND T3 < = .333 
4 THEN M<1) = 3 * T3: GOTO 41 

2 

410 M(l) = 3 * T3 - INT (3 * T3) 
412 IF T4 > =0 AND T4 < = .333 

4 THEN M(2) = M( 1 ) + (1 - M( 1 

>) * 3 * T4: GOTO 416 
414 M(2) = M(l) + <1 - M<1)) * (3 * 

T4 - INT <3 * T4)) 
416 IF T5 > =0 AND T5 < = .333 

4 THEN M(3> = 6 * T5 + 4: GOTO 

420 

418 M<3) = 4 + 6* T5 - 2* I NT < 

3 * T5> 
420 DE = 0:SE = 

422 FOR 1=0 TO 3:SE = SE + M( I ) 
:DE = DE + <M< I ) - L( I ) ) * 2: 
NEXT I 

424 DE = 200 * SQR (DE) / SE 
426 DE = IE - 5 * INT (DE * 1E5 + 
.5) 

430 RETURN 



Un menu a la carte 

Michel Crimont 



II s'agit d'une UNIT avec une fonc- 
tion principale renvoyant un carac- 
tere pris dans un menu. L'affichage 
se fait horizontalement ou verticale- 
ment. le choix se fait soit en tapant la 
premiere lettre de l'option, soit en 
positionnant la zone inversee avec les 
fleches et en faisant RETURN. 

Cette UNIT utilise elle-meme l'UNIT 
LIB contenant PINFO et PCHAR (cf 
numeros precedents). 

L' utilisation se fait par exemple en 

declarant : 

VAR M : TABMEN; 



puis dans le programme : 
PROCEDURE " IN1TM(VAR 
MLTABMEN): 
BEGIN 

ZEROMENU(Ml); 

M1!0!:= TITRE": Mill! := 'Lire': 

Ml!2! := 'Changer: 

etc.... 

END 

Le programme principal commencera 
par INITM(M): on utilisera la fonction 
par : 

CASE MENU(F.M) OF 

'L': LIRE: 

'C: CHANGER: 



La presentation a l'ecran depend du 
parametre F : 

Si F=0. seule la ligne d'affichage est 
effacee: sinon. tout l'ecran est efface 
avant affichage. 

Si F<=0, il y a affichage du menu 
sur une ligne. 

Si F>0, il y a affichage vertical, le 
chiffre F representant 1'espacement 
entre les lignes. F=l : toutes les 
lignes. F=2 : toutes les deux lignes ... 
A noter que la ligne du tableau sert 
de titre au menu et n est pas utilisee 
comme option. 



Pom's n" 11 



BHll C lfltnMf i M fl 



45 



<**s+*> 

UNIT GETMENU ; 

INTERFACE 

USES LIB;(* Pour PCOM=PRENCAR sans a-f-fichage, et PRINFO avec HT :=CHR( 21 > ; 

INV:=CHR( 15) ;NORM:=CHR< 14) ;LF:=CHR( 10) ;VT: = CHR<11) pour APPLE He*) 
TYPE TABMEN = PACKED ARRAY [ ..10] OF STRING! 20 ] ; < *La 1 i gne sert au titrage *) 
FUNCTION MENU(F: INTEGER; VAR M : TABMEN) : CHAR ; 
PROCEDURE ZEROMENU(UAR M : TABMEN) ; 
IMPLEMENTATION 
FUNCTION MENU; 

VAR NUMOPTI ON, I ,MAXOP, MX: INTEGER; OPTION:CHAR; TOTCOM , DI R : SET OF CHAR; 

PROCEDURE PRINTLI GNE< I : INTEGER ; S : STRING ; GR : CHAR) ; 
BEGIN 

IF F <=0 THEN 

BEGIN 

GOTOXY< 1*13,0) ;WRITE<GR, ' ' ,SE 1 3 , ' < ' , COPY< S , 2 , LENGTH< S) -1 ),',') 
END ELSE 
BEGIN 

GOTOXY< 20 , 2+F*I ) ;WRITE( GR , ' ',SE13,' - ',S); 
END; 

UIRITE(NORM) ; 
END; 

BEGIN 

TOTCOM :=[ ESC3 ; NUMOPTI ON:=l ; MAXOP:=0; GOTOXY(0,0); 
IF FOO THEN WRITE( EFE) ELSE WRITE(EFL) ; 

IF F>0 THEN GOTOXY((7?-LENGTH(ME03)) DIV 2,0); UIRITE(ME03); 
IF F>0 THEN BEGIN DI R :=E CR , LF , VT3 ;MX :=1 END 

ELSE BEGIN DI R :=E CR , BS , HT3 ;MX :=5 END; (* touches de direction*) 
FOR I :=1 TO MX DO 

IF MEI3<>" THEN 

BEGIN 

MAXOP:=MAXOP+l ; PRINTLI GNE( I ,M[ I 3 ,NORM) ; TOTCOM : =TOTCOM+ [ M E I ,133; 
(*totcom contient les premi {res lettres des options*) 
END; 

PRINTLI GNE< 1 ,MI 1 3 ,INW) ; 
REPEAT 

OPTION:=PCOM<TOTCOM+DIR) ; 

IF OPTION IN TOTCOM THEN BEGIN MENU :=OPTI ON ; EXI T (MENU) END ; ( * lettre *) 
PRINTLI GNE (NUMOPTI ON, ME NUMOPTI ON 3 ,NORM) ;<* dir rCCcrire en normal *) 
CASE ORD(OPTION) OF 
8,21 ,10,11 : BEGIN 

(*depl acement*) 

IF OPTION IN EBS,«vT3 THEN NUMOPTI ON :=NUM0PTI ON- 1 

ELSE NUMOPTI ON :=NUMOPT I ON+1 ; 
IF NUMOPTI ON<l THEN NUMOPTI ON :=MAX0P ; ( *c i rcu 1 a i re*) 
IF NUMOPTI ON >MAXOP THEN NUMOPTI ON :=1 ; 

PRINTLI GNE (NUMOPTI ON ,ME NUMOPTI ON 3 , INV) ; ( * i nv la ligne*) 
END; 

13 : BEGIN MENU :=ME NUMOPTI ON ,13; EXIT (MENU) END;(*opt sur return*) 
END; 

UNTIL OPTION=ESC; (* ESC pour sor t i r du menu *) 
END ; ^ es Hstages propres ... 

Pour lister un programme sur impri- 

PROCEDURE 2 EROMENU ; mante sans voir "]LIST" sur la feuille 

BEGIN FI LLCHAR(M , SI ZEOF(M) , CHR( ) > END; ni devoir faire "PR#0" apres, il faut 

faire ":PR#1 : LIST"; 

BEGIN Pour comprendre cela, lire le "Trues 

END . et astuces" du numero 7 en page 26. 

Malheureusement, ":PR#1 : CATA- 
LOG" ne marche pas ! 



46 



Pom's n° 11 



Une routine de tri rapide 

en assembleur 



Gerard Rigaud 



Le programme presente ici permet 
de trier des tableaux de tout type, a 
une ou deux dimensions, avec asso- 
ciation eventuelle d'un deuxieme ta- 
bleau contenant des informations pa- 
rallels. 

Pour les tableaux a deux dimensions, 
la premiere represente les "rubri- 
ques" et la seconde les "'articles". Le 
nombre de rubriques ne doit pas de- 
passer 51, mais le nombre d'articles 
ne depend que de la place memoire 
disponible. 

L'appel de la routine se fait au 
moyen de l'ampersand (&); la syn- 
taxe en est la suivante : 

&T.I.A(I,0).A(I,N) 

avec : 

• A : nom du tableau (par exemple : 
A. B%, ZZ$...) 



• I : indice sur lequel on trie (nu- 
mero de la rubrique) 

• A(I,0) : premier article du tri 

• A(I,N) : dernier article du tri. 

On peut ne trier qu'une partie des 
articles en fixant les bornes. Par 
exemple : 

&T,I,A(I,3),A(I,40) 

Si le tableau n'a qu'une dimension, I 
doit etre a zero. La syntaxe devient 
alors : 

&T.0,A(0),A(N) 

On peut associer un autre tableau au 
tableau trie, avec une syntaxe du 
type : 

&T,I,A$(I,2),A$(I,50),A(0,2) 

ou A(0,2) designe le premier element 

trie du tableau associe a A$, le tri lui- 



meme se faisant sur la rubrique I de 
A$, du 2eme au 50eme article. 

II est egalement possible de trier sur 
une partie d'article, avec une instruc- 
tion du type : 

&S.8.1.A$(I.2),A$(I.50) 
par laquelle le tri se ferait a partir du 
8eme caractere des articles de A$. 
La profondeur admise ici pour le 
point de depart de la partie d'article 
retenue est limitee a 15 caracteres 
(ligne 123 du programme source), 
mais il est possible de la modifier 
avant assemblage ou par un POKE a 
partir du BASIC. 

Les petits programmes de demons- 
tration listes ci-apres vous permet- 
tront de bien saisir les modalites 
d'utilisation de cette routine. 



Programme TRITABLEAU 


30 


LDA 


•)ST 


DOS TOOL KIT 




31 


STA 


$3F6 










32 


LDA 


«<ST 


1 ! 








33 


STA 


♦3F7 


2 FLAG 


EQU 


$6 


;Flag r(el.entier 


34 


RTS 




3 IND 


EQU 


$9 


; Indice du tri 








35 j 






4 ECART 


EQU 


i? 


;Ec»rt entre articles 


34 ST 


CMP 


ft)54 


5 ECO 


EQU 


*8 


;Ecart indice et tri 


37 


BEQ 


TRI 


6 START 


EQU 


tl9 


jPointeur ler (l{»ent du tri 


38 


CMP 


f«53 


7 FIN 


EQU 


m 


;Pointeur dernier (Hnent 


39 


BEQ 


SORT 


8 ART1 


EQU 


♦FA 


jPointeur tenporaire 


40 


JMP 


WEC9 


9 ART2 


EQU 


*FC 


;Pointeur tenporaire 


41 SORT 


JSR 


CHRGET 


10 CHA2 


EQU 


iFE 


jPointeur tenporaire 


42 


JSR 


CHKCOH 


11 MOVE 


EQU 


ill 


jPointeur tenporaire 


43 


JSR 


FRMNUM 


12 CSTART 


EQU 


«E0 


jPointeur ler (Hnent COtableau 


44 


JSR 


6ETADR 


13 CART1 


EQU 


*E2 


jPointeur COtableau 


45 


DEY 




14 CART2 


EQU 


♦E4 


jPointeur COtableau 


46 


DEY 




15 TECART 


EQU 


*1D 


jEcart ler tableau 


47 


STY 


PARTIEL 


16TEC0 


EQU 


$E6 


jEcart {Kaent ler tableau 


48 


JMP 


TS 


17 CECART 


EQU 


«E7 


jEcart COtableau 


49 TRI 


LDA 


MFF 


18 PARTIEL EQU 


♦E8 




50 


STA 


PARTIEL 


19 SARA 


EQU 


*9B 


jPointeur du tableau 


51 


JSR 


CHR6ET 


20 CHR6ET 


EQU 


m 




52 TS 


JSR 


CHKCOH 


21 CHRGOT 


EQU 


*87 




53 


JSR 


FRMNUM 


22 FRMNUM 


EQU 


*D067 


jEvalue dans FAC 


54 


JSR 


GETADR 


23 CHKCOH 


EQU 


WEBE 


.Teste V 


55 


STY 


IND 


24N0VFN 


EQU 


♦EAF9 


jTransfert M vers FAC 


54 


JSR 


CHKCOM 


25 SOUST 


EQU 


*EB82 


;FAC - ARG 


57 


JSR 


PTRGET 


26 6ETA0R 


EQU 


♦E752 


jRend en tier FAC 


58 


STA 


START 


27 PTRGET 


EQU 


«DFE3 




59 


STA 


ART1 


28 


0R6 


$9AA6 




40 


STY 


START+1 


29 | 


Initial isation AMPERSAND 


61 


STY 


ART 1+1 



-D(but du progranne- 

;'T' 

j'S' 

; SYNTAX ERROR 



;Rend FAC entier 
jlndice du tri 



Pom's n° 11 



fMHMHHHn 



47 



62 


JSR 


CHKCOM 




121 


BCC 


DEPL 


;CHA2 < CHA1 


63 


JSR 


PTR6ET 




122 


BNE 


RIEN 


;CHA2 ) CHA1 


64 


STA 


FIN 




123 


CPY 


115 


;Profondeur du tri 


65 


STY 


Fimi 




124 


BCC 


COMP 




66 


JSR 


CALCUL 


{Initialise pointeurs 


125 


BCS 


RIEN 




6? 


LDA 


ECO 




126 ENTIER 


SEC 






69 


STA 


TECO 




127 


LDA 


<ART2),Y 




69 


LDA 


ECART 




128 


SBC 


(ART1),Y 




70 


STA 


TECART 




129 


DEY 






71 


STX 


FLA6 




130 


LDA 


<ART2),Y 




72 


JSR 


CHR60T 




131 


SBC 


<ART1),Y 




73 


CMP 


M2C 


jCOTABLEAU ? 


132 


BPL 


RIEN 


;ART2 = ou > ART1 


74 


BNE 


DEBUT 


;Nm 


133 


BMI 


DEPL 


jART2 < ART1 


75 


JSR 


CHR6ET 


134 ; 


-Recomence 3 l'article 1 


76 


JSR 


PTR6ET 




135 BOUCLE 


LDA 


CSTART 


;ler article 


77 


STA 


CSTART 




136 


STA 


CART1 




78 


STA 


CART1 




137 


LDA 


CSTART* 1 




79 


STY 


CSTART* 1 




138 


STA 


CARTl+1 




80 


STY 


CART1+1 




139 


LDA 


START 


jler article 


81 


JSR 


CALCUL 




140 


STA 


ART1 




82 


LDA 


ECART 




141 


LDA 


START* 1 




83 


STA 


CECART 




142 


STA 


ART1+1 




84 ; 


-D<but 


du tri- 




143 


BNE 


DEBUT 




85 DEBUT 


LDA 


ll 




144 ; 


-Article suivant 




86 


STA 


IND 


;F1 ag d' (change 


145 SUITE 


LDA 


CART 2 


{Article suiuant 


87 SUIUANT CtC 




jCalcul adresse 20ie article 


146 


STA 


CART1 




88 


LDA 


TECART 




14? 


LDA 


CART2*! 




89 


ADC 


ART1 




148 


STA 


CARTl+1 




90 


STA 


ART2 




149 


LDA 


ART2 


{Article suivant 


91 


LDA 


10 




150 


STA 


ART1 




92 


ADC 


ART1+1 




151 


LDA 


ART2+1 




93 


STA 


ART2*1 




152 


STA 


ART1+1 




94 


CLC 




{Calcul adresse 2(«e article 


153 


BNE 


SUIVANT 




95 


LDA 


CECART 




154 i 


-Test 


de -fin du 


tri 


94 


ADC 


CART1 




155 RIEN 


LDA 


ART2 




97 


STA 


CART2 




156 


CMP 


FIN 




98 


LDA 


no 




157 


BNE 


SUITE 




99 


ADC 


CART1M 




158 


LDA 


ART2+1 




100 


STA 


CART2+1 




159 


CMP 


FIN+1 




101 


LDA 


FLA6 




160 


BNE 


SUITE 




102 


CMP 


15 


;R(el ? 


161 


LDA 


IND 




103 


BEQ 


REEL 


;Oui 


162 


BNE 


BOUCLE 




104 


TAY 






163 


RTS 






105 


DEY 






164 ; 








106 


CMP 


12 


jEntier ? 


165 REEL 


LDA 


ART2 




10? 


BEQ 


ENTIER 


;OUI 


166 


LDY 


ART2+1 




108 


LDA 


(ARTD.Y 




167 


JSR 


MOWM 


{ART2 dans FAC 


109 


STA 


MOUE+1 




168 


LDA 


ART1 




110 


LDA 


<ART2),Y 




169 


LDY 


ART1+1 




111 


STA 


CHA241 




170 


JSR 


SOUST 


{ART2 - ART1 


112 


DEY 






171 


BPL 


RIEN 


{ART2 = ou > ART1 


113 


LDA 


<ART1),Y 




172 ; 


-D(placenent des pointeurs 


114 


STA 


MOVE 




173 DEPL 


SEC 




{Cakul U (merit de ART! 


115 


LDA 


(ART2) ,Y 




174 


LDA 


ART1 




116 


STA 


CHA2 




175 


sec 


TECO 




117 


LDY 


PART1EL 




176 


STA 


ART1 




118 COUP 


INY 






177 


LDA 


ART1+1 




119 


LDA 


(CHA2),Y 




178 


SBC 


10 




120 


CMP 


(MOVE),Y 




179 


STA 


ART1+1 





180 


SEC 


'Calcul (Untot (1 ii» ART? 




D1T 
Dl 1 


61 1 
»ll 


jlhame f 








010 


DM1 

all 


DIM] 


;Dui 


182 


SBC 


TEffl 


Old 


i ny 

LUA 


IMC 

»J 


183 


STA 

win 


HflUF 

11 Wt 




on 

Dl 1 


401 
»B1 


iD/nl 

jKlH ? 

;0ui 


184 


IDA 


ART?*. 


01 i 


DDI 

BrL 




185 


SBC 


10 


017 


Li/a 


MO 


184 


STA 


NOVE+l 


718 rjiNi 

4lO 1/1111 


1 IVY 

LI/I 




ill iubnr i nn 

i um»nsiun : 


18? 


LDY 


TECART 


719 
£17 


1 (VI 
LUH 


( CADA 1 V 


188 


DEY 




77R 


pwp 

Uir 




•Una can la 

, une seuie '. 


189 


STA 


TWJ) fPntitiftnn* 41an 
uw jrusi i iuiniE Tiiu 


701 


QCO 
ptn 


Dl 


;0ui 


19(1 W 


i no. 




000 

lit 


I nv 
LUT 


un 

198 


191 
i 71 


PilA 

rnH 




tii 


LDA 


/is An a \ u 

(SARA),Y 


jTaille l)re dintnsion 


192 


LDA 


(MOVE) Y 


oo« r\i 

01 


TAV 

mi 


193 


STA 


(ARTl).Y :{rhanc* 2 dans 1 

»«»t\ 1 a / j 1 ) i U II fill i^C L UOM 5 i 


OOR 


i ra 


nn 
IU 




194 


PLA 




oox 


CTA 
SIM 


CPAOT 




195 


STA 


(MOVE) Y '(chana* 1 dan«. ? 


007 
til 


CTA 
5>lfi 


cm 
tLU 




196 


DEY 




000 
£« 


CTA 

blA 


rCTADT 

CECAKT 




197 


BPL 


SIMP 


000 


n r 

L4.L 




;Calcul (cart entre articles 


198 


LDY 


CECART 

wuwn*\ i 


oon no 


TVA 

Iam 




■coo 


199 

III 




nJDl 


001 

241 


AAP 

ADC 


CTAD7 

ECART 


200 


DEY 




000 


OTA 


C PA DT 




201 




< TARTU Y 


/44 


UcY 






202 






70^ 


pup 
one 


no 




203 


LDA 


(CART2) .Y 


/OJ 


i nv 

LUT 


tun 




204 


STA 

w in 


(CARTH Y -frhanno 7 rians 1 


00 i 
£00 


ocn 






205 


PLA 




09"? 

lit 


LLL 




jtcart {Hn»nt et tri 


204 


STA 


(CART2) Y -{rhano* 1 rian<; 7 


ooo no 


TVA 
1 An 






207 


DEY 




239 


ADC 


ECO 


208 


BPL 


SUAPl 


240 


STA 


ECO 




209 


SMI 
-Sous 


RIEN 


041 
til 

242 

243 D4 


ncv 
Del 

BNE 

RTS 


D3 




210 | 

211 CALCUL 


LDX 


program* recherch* pointeurs 

N3 





RECAPITULATION 



?AA6- 


A9 


Bl 














9AA8- 


8D 


F6 


03 


A9 


9A 


8D 


F7 


03 


9AB0- 


60 


C9 


54 


FO 


1A 


C9 


53 


FO 


9AB8- 


03 


4C 


C9 


DE 


20 


Bl 


00 


20 


9AC0- 


BE 


DE 


20 


67 


DD 


20 


52 


E7 


9AC8- 


88 


88 


84 


E8 


4C 


D6 


9A 


A9 


9AD0- 


FF 


85 


E8 


20 


Bl 


00 


20 


BE 


9AD8- 


DE 


20 


67 


DD 


20 


52 


E7 


84 


9AE0- 


09 


20 


BE 


DE 


20 


E3 


DF 


85 


9AE8- 


19 


85 


FA 


84 


1A 


84 


FB 


20 


9AF0- 


BE 


DE 


20 


E3 


DF 


85 


IB 


84 


9AF8- 


1C 


20 


01 


9C 


A5 


08 


85 


E6 


9B00- 


A5 


07 


85 


ID 


86 


06 


20 


B7 


9B08- 


00 


C9 


2C 


DO 


15 


20 


Bl 


00 


9B10- 


20 


E3 


DF 


85 


EO 


85 


E2 


84 


9B18- 


El 


84 


E3 


20 


01 


9C 


A5 


07 


9B20- 


85 


E7 


A9 


00 


85 


09 


18 


A5 


9B28- 


ID 


65 


FA 


85 


FC 


A9 


00 


65 


9B30- 


FB 


85 


FD 


18 


A5 


E7 


65 


E2 


9B38- 


85 


E4 


A9 


00 


65 


E3 


85 


E5 


9B40- 


A5 


06 


C9 


05 


FO 


6B 


A8 


88 


9B48- 


C9 


02 


FO 


22 


Bl 


FA 


85 


IF 


9B50- 


Bl 


FC 


85 


FF 


88 


Bl 


FA 


85 


9B58- 


IE 


Bl 


FC 


85 


FE 


A4 


E8 


C8 


9B60- 


Bl 


FE 


Dl 


IE 


90 


5B 


DO 


38 



Pom's n° 11 



9B68- 


CO 


OF 


90 


F3 


BO 


32 


38 


Bl 


9B70- 


FC 


Fl 


FA 


88 


Bl 


FC 


Fl 


FA 


9B78- 


10 


26 


30 


45 


A5 


EO 


85 


E2 


9B80- 


A5 


El 


85 


E3 


A5 


19 


85 


FA 


9B88- 


A5 


1A 


85 


FB 


DO 


94 


A5 


E4 


9B90- 


85 


E2 


A5 


E5 


85 


E3 


A5 


FC 


9B98- 


85 


FA 


A5 


FD 


85 


FB 


DO 


86 


9BA0- 


A5 


FC 


C5 


IB 


DO 


E8 


A5 


FD 


9BA8- 


C5 


1C 


DO 


E2 


A5 


09 


DO 


CC 


9BB0- 


60 


A5 


FC 


A4 


FD 


20 


F9 


EA 


9BB8- 


A5 


FA 


A4 


FB 


20 


B2 


EB 


10 


9BC0- 


DF 


38 


A5 


FA 


E5 


E6 


85 


FA 


9BC8- 


A5 


FB 


E9 


00 


85 


FB 


38 


A5 


9BD0- 


FC 


E5 


E6 


85 


IE 


A5 


FD 


E9 


9BD8- 


00 


85 


IF 


A4 


ID 


88 


85 


09 


9BE0- 


Bl 


FA 


48 


Bl 


IE 


91 


FA 


68 


9BE8- 


91 


IE 


88 


10 


F3 


A4 


E7 


FO 


9BF0- 


AF 


88 


Bl 


E2 


48 


Bl 


E4 


91 


9BF8- 


E2 


68 


91 


E4 


88 


10 


F3 


30 


9C00- 


9F 


A2 


03 


24 


11 


30 


08 


A2 


9C08- 


05 


24 


81 


10 


02 


A2 


02 


AO 


9C10- 


04 


Bl 


9B 


C9 


01 


FO 


04 


AO 


9C18- 


08 


Bl 


9B 


A8 


A9 


00 


85 


07 


9C20- 


85 


08 


85 


E7 


18 


8A 


65 


07 


9C28- 


85 


07 


88 


DO 


F8 


A4 


09 


FO 


9C30- 


09 


18 


8A 


65 


08 


85 


08 


88 


9C38- 


DO 


F8 


60 













ESHSSst:: a ti r -J 



EXEMPLES 

10 PRINT CHR* (4) "BRUNTRITABLEAU 
.0BJ0" 

20 TEXT : CLEAR : HOME 

30 DIM A*(3,9> ,A(9> : PRINT "TRI S 
UR 3 erne ELEMENT" 

40 FOR I = TO 9: FOR J = TO 3 

:A*(J,I> = CHR* (74 - I): PRINT 
A*( J, I ) " . " ; :A< I ) = I: PRINT A 
(I)" ";: NEXT : PRINT : NEXT 
: VTAB 1: HTAB 25: PRINT "TRI 
MACHINE" 

50 & T,3,A*(3,0> ,A*(3,9> 

60 FOR I = TO 9: HTAB 24: FOR J 
= TO 3: PRINT A*(J,I)"."A( 
I>" ";: NEXT : PRINT : NEXT 

70 PRINT "TAPER UNE TOUCHE" j : GET 
X*: HTAB 1: INVERSE : PRINT " 
LE MEME EXEMPLE AVEC COTABLEA 
U" : NORMAL 

75 CLEAR : DIM A*( 3 , 9> , A( 9> : PRINT 
"TRI SUR 3 eme ELEMENT" 

80 FOR I = TO 9: FOR J = TO 3 

:A*(J,I> = CHR* (74 - I): PRINT 
A*(J,I>" ." ; :A(I> = I: PRINT A 
<I>" ";: NEXT : PRINT : NEXT 
: VTAB 13: HTAB 23: PRINT "MA 
CHINE COTABLEAU" 

90 & T,3,A*(3,0> ,A*(3,9> ,A(0> : REM 
Trans-fere aussi AO qui pe 
ut avoir egalement 2 dimensio 
ns 

100 FOR I = TO 9: HTAB 24: FOR 
J = TO 3: PRINT A*(J,I>"."A 
(I)" ";: NEXT : PRINT : NEXT 

110 VTAB 23: END 



5 PRINT CHR* (4) "BRUNTRITABLEAU. 
OBJO" 

10 TEXT : CLEAR : HOME 

20 DIMA*(20>: PRINT "TABLEAU" 

30 FOR I = TO 20:A*(I> = CHR* 

(85 - I) + CHR* (85 - I) + STR* 
(65 + I): PRINT A*(I): NEXT : 
VTAB 1: HTAB 9: PRINT "TRINO 
RMAL" 

40 & T,C,A*(0> ,A*(20> : REM TRI 

TABLEAU ENTIER 
50 FOR I = TO 20: HTAB 10: PRINT 

A*(I): NEXT : VTAB 1: HTAB 19 
: PRINT "TRI 3eme" 
60 & S,3,0 ,A*(0> ,A*(20> : REM TRI 

A PART I R DU 3eme CARACTERE 
70 FOR I = TO 20: HTAB 20: PRINT 

A*(I): NEXT : VTAB 1: HTAB 29 
: PRINT "TRI 4eme " 
80 6c S,4,0,A*(0> ,A*(20> : REM TRI 

A PARTI R DU 4eme CARACTERE 
90 FOR I = TO 20: HTAB 30: PRINT 

A*(I): NEXT : INVERSE : PRINT 

■TRI A PARTIR DU 1,3,4 CARACT 

ERE" : NORMAL 
100 VTAB 23: END 



5 PRINT CHR* (4) "BRUNTRITABLEAU. 
OBJO " 

10 TEXT : CLEAR : HOME 

20 DIM AX(50>: PRINT "TRI TABLEAU 

ENTIER 1 DIMENSION" 
30 FOR I = TO 50:AX(I> = 100 - 
I: PRINT AX(I);" ";: NEXT : 
PRINT : PRINT "TRI MACHINE" 
40 & T,0 ,A/<(0> ,AX(50) : REM TRI 

TABLEAU ENTIER 
50 FOR I = TO 50: PRINT AX( I ) ; " 

" ; : NEXT : PRINT 
60 PRINT "TAPER UNE TOUCHE" ; : GET 

X*: PRINT : CLEAR 
70 DIM AX(50): PRINT "TRI TABLEAU 

ENTIER 1 DIMENSION" 
80 FOR I = TO 50:AX(I) = 100 - 
I: PRINT AX( I ) ; " ";: NEXT : 
PRINT : PRINT "LE MEME , TRI 
BASIC , C'EST PLUS LONG !" 
90 X = 0: FOR I = 50 TO 1 STEP - 

1: IF AX(I) > = A%(I - 1) THEN 
110 

100 X = AX( I > :AX( I > = AX(I - 1 > :AX 

(I - 1) = X 
110 NEXT : IF X THEN 90 
120 FOR I = TO 50: PRINT AX(I>; 
" ; : NEXT : PRINT 



5 PRINT CHR* (4) "BRUNTRITABLEAU. 
OBJO" 

10 TEXT : CLEAR : HOME 

20 DIM AX.(3,10): PRINT "TRI TABLE 

AU ENTIER" 
30 FOR I = TO 10: FOR J = TO 

3:AX(J,I) = 20 - I + J: PRINT 

AX(J,I>;' ';: NEXT : PRINT " 

*";: NEXT : PRINT : PRINT "TR 

I MACHINE" 
40 & T,0,AX(0,0) ,AX(0,10) : REM T 

RI SUR ELEMENT TABLEAU ENTI 

ER 

50 FOR I = TO 10: FOR J = TO 
3: PRINT A/i(J,I);" ";: NEXT 
: PRINT "*";: NEXT : PRINT 

60 PRINT "TAPER UNE TOUCHE" ; : GET 
X*: PRINT : CLEAR 

70 DIMAX(3,10>: PRINT "TRI TABLE 
AU ENTIER" 

80 FOR I = TO 10: FOR J = TO 
3:AX(J,I) = 20 - I + J: PRINT 
AX(J,I);" ";: NEXT : PRINT " 
*";: NEXT : PRINT : PRINT "LE 
MEME , TRI BASIC" 

90 X = 0: FOR I = 10 TO 1 STEP - 
1: IF AX<0,I> > = AX(0,I - 1 
) THEN 110 

100 FOR X = TO 3:Z = AX(X,I>:AX 
(X,I) = AX(X,I - 1):AX<X,I - 
1) = Z: NEXT 

110 NEXT : IF X THEN 90 

120 FOR I = TO 10: FOR J = TO 
3: PRINT AX(J,I);" ";: NEXT 
: PRINT "*";: NEXT : PRINT 



Pom's n" 11 



5 PRINT CHR* (4) "BRUNTR I TABLEAU. 
OB JO" 

10 TEXT : CLEAR : HOME 

20 DIM A*C50>: PRINT "TRI TABLEAU 

CHAINE .1 DIMENSION" 
30 FOR I = TO 50:A*CI> = STR* 
C99 - I ) : PRINT A*( I > ; " " ; : 
NEXT : PRINT : PRINT "TRI MA 
CHINE" 

40 & T,0,A*C0> ,A*C50> : REM TRI T 

ABLEAU ENTIER 
50 FOR I = TO 50: PRINT A*CI>;" 

" ; : NEXT : PRINT 
60 PRINT "TAPER UNE TOUCHE" ; : GET 

X*: PRINT : CLEAR 
70 DIM A*C50>: PRINT "TRI TABLEAU 

CHAINE 1 DIMENSION" 
80 FOR I = TO 50:A*CI> = STR* 
(99 - I > : PRINT A*C I > ; " " ; : 
NEXT : PRINT : PRINT "LE MEM 
E , TRI BASIC , C'EST PLUS LO 
NG !" 

90 X = 0: FOR I = 50 TO 1 STEP - 

1: IF A*CI> > = A*CI - 1) THEN 
1 10 

100 X* = A*CI):A*CI> = A*CI - 1 ) :A 

*CI - 1) = X*:X = 1 
110 NEXT : IF X THEN 90 
120 FOR I = TO 50: PRINT A*CI>; 
" : : NEXT : PRINT 



5 PRINT CHR* (4) " BRUNTR I TABLEAU . 
OB JO " 

10 TEXT : CLEAR : HOME 
20 DIM A*C3,10>: PRINT "TRI TABLE 

AU CHAINE" 
30 FOR I = O TO 10: FOR J = TO 

3:A*CJ,I) = STR* (20-1 + J 

): PRINT A*(J,I);" ";: NEXT 

: PRINT "*";: NEXT : PRINT : PRINT 

"TRI MACHINE" 
40 & T,0,A*C0,O> ,A*C0,10> : REM TR 

I SUR ELEMENT TABLEAU ENTIE 

R 

50 FOR I = TO 10: FOR J = TO 
3: PRINT A*CJ,I>;" " ; : NEXT 



PRINT "*' 



NEXT 



PRINT 



60 PRINT "TAPER UNE TOUCHE";: GET 

X*: PRINT : CLEAR 
70 DIM A*C3,10>: PRINT "TRI TABLE 

AU CHAINE" 
80 FOR I = TO 10: FOR J = TO 

3:A*CJ,I> = STR* (20 - I + J 

): PRINT A*C J, I > ; " ";: NEXT 

: PRINT "*";: NEXT : PRINT : PRINT 

"LE MEME , TRI BASIC" 
90 X = 0: FOR I = 10 TO 1 STEP - 

1 : IF A*<0,I) > = A*C0,I - 1 

) THEN 110 
100 FOR X = TO 3:Z* = A*(X,I>:A 

*CX,I> = A*CX,I - 1):A*(X,I - 

1 ) = Z*: NEXT :X = 1 
110 NEXT : IF X THEN 90 
120 FOR I = TO 10: FOR J = TO 

3: PRINT A*<J,I);* ";: NEXT 



PRINT 



NEXT 



PRINT 



5 PRINT CHR* < 4) "BRUNTR I TABLEAU. 
OB JO" 

10 TEXT : CLEAR : HOME 

20 DIM AC 50 ) : PRINT "TRI TABLEAU 

REEL 1 DIMENSION" 
30 FOR I = TO 50:ACI> = 100 - I 

: PRINT AC I);" ";: NEXT : PRINT 

: PRINT "TRI MACHINE" 
40 & T,0,AC0> ,AC50) : REM TRI TA 

BLEAU ENTIER 
50 FOR I = TO 50: PRINT AC I ) ; " 

" ; : NEXT : PRINT 
60 PRINT "TAPER UNE TOUCHE" ; : GET 

X*: PRINT : CLEAR 
70 DIM AC50): PRINT "TRI TABLEAU 

REEL 1 DIMENSION" 
80 FOR I = TO 50 : AC I ) = 100 - I 

: PRINT ACI>;" ";: NEXT : PRINT 

: PRINT "LE MEME , TRI BASIC 

, C'EST PLUS LONG ! " 
90 X = 0: FOR I = 50 TO 1 STEP - 

1 : IF AC I) > = AC I - 1) THEN 

1 10 

100 X = ACI):ACI> = ACI - 1 ) :AC I - 
1) = X 

110 NEXT : IF X THEN 90 

120 FOR I = TO 50: PRINT ACI);" 



NEXT 



PRINT 



5 PRINT CHR* C 4 ) " BRUNTR I TABLEAU . 
OBJO" 

10 TEXT : CLEAR : HOME 
20 DIM AC3,10): PRINT "TRI TABLEA 
U REEL" 

30 FOR I = TO 10: FOR J = TO 
3:A(J,I) =20-1 + J: PRINT 
ACJ,I);" ";: NEXT : PRINT "* 
";: NEXT : PRINT : PRINT "TRI 
MACHINE" 

40 & T,0,AC0,0> ,AC0,10> : REM TRI 
SUR ELEMENT TABLEAU ENTIER 

50 FOR I = TO 10: FOR J = TO 
3: PRINT ACJ,I);" ";: NEXT : 



PRINT "*";: NEXT : PRINT 



GET 



60 PRINT "TAPER UNE TOUCHE" ; 

X*: PRINT : CLEAR 
70 DIMAC3,10>: PRINT "TRI TABLEA 

U REEL " 

80 FOR I = TO 10: FOR J = TO 
3:ACJ,I) = 20 - I + J: PRINT 
ACJ,I>;" ";: NEXT : PRINT "* 



NEXT 



PRINT 



PRINT "LE 



MEME 



TRI BASIC 



90 X = 0: FOR I = 1 TO 1 STEP - 

1: IF AC0,I> > = AC0,I - 1) THEN 
110 

100 FOR X = TO 3:Z = ACX,I):ACX 
, I ) = ACX, I - 1 ) : ACX , I - 1 ) = 
Z: NEXT 

110 NEXT : IF X THEN 90 

120 FOR I = TO 10: FOR J = TO 
3: PRINT ACJ,I);" ";: NEXT : 
PRINT "*";: NEXT : PRINT 



Pom's n" 11 



51 



Effets stroboscopiques sur 
la page graphique 



Olivier Herz 



L'idee de ce programme m'est venue 
d une idee originale publiee dans 
Softside Magazine. 

Ceux qui ont achete la disquette du 
numero 6 de Pom's ont sans doute 
remarque un curieux effet strobosco- 
pique dans le programme de de- 
monstration de la Tortue Ampersand 
de Jacques Duma (DEMO TOR- 
TUE). Cet effet se presentait sous la 
forme de bandes en inverse se de- 
plagant lentement sur une image po- 
sitive. II avait lieu alors que Ton 
"switchait" entre les pages graphi- 
ques haute resolution, la page 2 
etant le negatif de la page 1: il etait 
du a un phenomene stroboscopique 
entre la frequence de balayage de 
l'ecran video et la frequence de 
switch entre les pages graphiques. Si 



II V ft ^EXW 
O{0Se ty\ CLOCHE. 




par exemple Ton se contente d'exe- 
cuter les instructions en assembleur 
suivantes. la periode (2 switches) est 
de 11 micro-secondes (voir "La Pra- 
tique de 1' Apple II". volume 3) : 

ZER BIT $C054 
BIT $C055 
JMP ZER 

En faisant varier cette frequence, on 
peut obtenir des effets stroboscopi- 
ques. 

Nous vous proposons de bien visuali- 
ser un tel effet en faisant varier la fre- 
quence de switch des pages graphi- 
ques avec les paddles : la manette 
controlera le temps d'affichage de la 
page 1 et la manette 1 celui de la 
page 2. On peut utiliser au choix un 
joystick ou 2 manettes. 

Nous utiliserons les deux routines 
(relogeables) en assembleur suivan- 
tes. entrees en memoire par la me- 
thode de SH.LAM (voir Pom's 2 
page 61 ou Recueil page 94). 



Inversion de la page 1 avec resultat dans la 
page 2 : 

MEMl EQU 252 
MEM2 EQU 254 

AO 20 LDY #32 ;octet haut de la page 1 
84 FD STY MEM 1 + 1 
AO 40 LDY #64 :octet haut de la page 2 
84 FF STY MEM2 + 1 

AO 00 LDY #0 ;pour I'adressage indirect indexe 
84 FC STY MEMl 
84 FE STY MEM2 

ZER Bl FC LDA (MEMl).Y :octet de la page 1 

49 FF EOR #255 :on linverse 

91 FE STA (MEM2).Y ;resultat dans la page 2 

C8 INY :on boucle sur Y de a 255 (1 page memoire) 

DO F7 BNE ZER 

E6 FD INY MEM1 + 1 

E6 FF INY MEM2+1 

A5 FD LDA MEM1 + 1 

C9 40 CMP #64 :on boucle sur les pages 32 a 63 
DO ED BNE ZER 
60 RTS 

Bien sur. la 2eme page graphique 
peut ne pas etre l inverse de la lere. 
De plus, cet effet reste si on rem- 
place I'une ou les deux pages graphi- 



Switch des pages avec pauses proportionnelles 
aux paddles : 

PREAD EQU SFB1E :lit dans A la manette X 
KBD EQU $C000 xlavier (-16384) 
KBDSTRB EQU SC010 istrobe du clavier (-16368) 
PAGE1 EQU $C054 :switche vers la page 1 (-16300) 
PAGE2 EQU $C055 iswitche vers la page 2 (-16299) 

ONE 2C 54 CO BIT PAGE1 ;switche vers la page 1 
A2 00 LDX #0 

20 IE FB JSR PREAD .lit la manette 

2C 55 CO BIT PAGE2 .switche vers la page 2 

A2 01 LDX #1 

20 IE FB JSR PREAD Jit la manette 1 
2C 00 CO BIT KBD itouche enfoncee ? 
10 EB BPL ONE 

2C 10 CO BIT KBDSTRB ; remise a du clavier 
60 RTS 



ques haute resolution par une page 
texte ou graphique basse resolution, 
car seule la vitesse de balayage de 
l'ecran entre en jeu. pas le contenu 



de l'ecran. Bien entendu. dans ces 
differents cas. il faudra utiliser les 
autres switches graphiques de 1' Ap- 
ple. ■ 



10 REM STROBOSCOPE 
20 REM =========== 

100 TEXT : HOME : H6R : VTAB 21: INPUT 

"NOM DE LA PAGE GRAPHIQUE ? " 

;A*: POKE - 16302,0: PRINT CHR* 

< 4) " BLOAD" A* " ,A*2000" 
110 A* = "300 :2C 54 CO A2 00 20 IE 
FB 2C 55 CO A2 01 20 IE FB 2 

C 00 CO 10 EB 2C 10 CO 60": GOSUB 

1000 



120 A* = "320: AO 20 84 FD AO 40 84 
FF AO 00 84 FC 84 FE Bl FC 4 
? FF 91 FE C8 DO F7 E6 FD E6 
FF A5 FD C? 40 DO ED 60": GOSUB 
1000 

130 CALL 800: CALL 768: TEXT : HOME 
: END 

1000 A* = A* + " N D9C6G" : FOR I = 
1 TO LEN <A*>: POKE 511 + I, 
ASC ( MID* <A*,I,1>> + 128: NEXT 
: POKE 72,0: CALL - 144: RETURN 



52 



Pom's n° 11 



Je n'y croyais pas. Mon metier, c'est 
d'ecrire. Trente annees de clavier in- 
tensif mal tempere. de la machine 
mecanique a 1' Apple 11. avec une im- 
possibility radicale de rediger plus de 
deux lignes - illisibles - a la main. 
Alors la souris de Macintosh, non 
merci. ce n'etait pas pour moi. 

Deux heures ont suffi pour que je 
me retrouve. inconditionnel. dans le 
camp de la souris, avec des crampes 
a la main droite le premier jour et un 
immense sentiment de liberte les 
jours suivants. 

Je repete : mon metier c'est d'ecrire. 
pas de faire des routines, encore 
moins de la routine. Et surtout pas 
de taper, meme si je tape tres vite. 11 
peut m'arriver de faire des program- 
mes en BASIC, en Pascal, en Super- 
pilot. Ce n'est pas l'essentiel. 

Alors j'ai vite compris que Macintosh 
etait la premiere "machine" qui per- 
mette de creer, sans aucune 
contrainte externe, a un detail pres 
que je soulignerai tout a l'heure. Je 
dis bien "detail" parce que c'est pas- 
sages et j'ecris bien "machine" parce 
que le mot "ordinateur" ne me vient 
pas au clavier. J'ai en vie de dire 
"robot de bureau". 

Premier temps, je sors Mac de son 
carton. Emerge un petit bonhomme 
ventru haut comme trois pommes 
(bien sur), avec un petit ecran et un 
petit clavier detachable. Attention, 
encore un cliche a voiler une fois 
pour toutes : tous les claviers alpha- 
numeriques a touches classiques sont 
de la meme taille. Done, celui de 
Mac a beau paraitre petit, il ne Test 
pas. pour la bonne raison qu'il n'y a 
pas de "petit clavier". Pourquoi sem- 
ble-t-il "petit" ? Parce qu'il ne lui 
reste que deux touches de fonction. 
dont I' une, au moins, le celebre 
"Control" qui s'orne ici d'un sigle bi- 
zarre que Ton identifie tres vite. ne 
demeure que par concession au 
passe. 

Une fois pose le bonhomme sur le 
bureau - qu'il a Fair menu a cote du 
"gros" Apple lie - j'enfonce la fiche 
dans la "machine" puis dans la prise; 
je branche le clavier. En une dizaine 
de secondes, c'est fini, e'est-a-dire 
que tout commence. J'enfonce dans 
la fente avant un gros bout de carton 
avec une espece de serrure en metal 
que je sors de ma poche (il parait 
que c'est une disquette 3,5 pouces). 
et je mets le contact. L'ecran vit. des 
carres. des rectangles gris sillonnent 
Fespace gris-blanc. Un menu ? II pa- 
rait. 

Moi, je vois une autre chose, 
etrange, inattendue : un manuscrit 
copie par un moine du Moyen-Age. 
Cette premiere impression se confir- 
mera les jours suivants : avec Mac, 



nous franchissons une formidable 
etape de retro-innovation, e'est-a-dire 
de bond dans les deux directions du 
temps, le passe et Favenir. 
Le passe : jusqu'a l'apparition de 
Fimprimerie, il ne pouvait y avoir de 
texte que personnel (on ne disait pas 
encore "personnalise"), puisque cha- 
que copie, dans sa forme, etait un 
original, avec la calligraphic, les orne- 
ments, la mise en page du copiste. 
L'imprimerie. fantastique decouverte 
bien sur, est venu jeter la-dessus sa 
chape d'uniformite. Beaucoup de 
livres pour beaucoup de monde. 
mais tous les memes (les livres) ou 
presque. Allez vous etonner. apres 
cela, que des Apollinaire, des Mi- 
chaux ou des Prevert aient eprouve 
le besoin de faire des calligrammes. 
de reinventer la forme, de lui redon- 
ner sa place. 

L'avenir : c'est exactement ce que 
ramene Macintosh. Les poetes, les 
ecrivains, les createurs deviennent 
tous des editeurs. des imprimeurs, 
sur cette "machine" dont l'ecran re- 
produit presque parfaitement la page 
ecrite. la page manuscrite. 

Sur ma disquette, deux programmes. 
MacWrite - traitement de texte - et 
MacPaint - traitement graphique. Du 
jamais vu, du jamais imagine. Fun 
comme Fautre. MacWrite : neuf jeux 
de caracteres (dont un gothique). six 
varietes d'edition (ombre, relief, itali- 
que ...), cinq dimensions d'impres- 
sion, du 9 au 24 points, que Fon 
peut combiner, que Fon peut aug- 
menter en creant ses propres caracte- 
res. Et toujours, toujours. toujours 
sans avoir jamais, jamais, jamais be- 
soin de connaitre un seul nom de 
touche de controle, de se demander 
si c'est CTRL-E(rase) ou CTRL- 
D(elete) qui signifie "effacer". s'il faut 
faire ESC-A ou ESC-Q. CTRL- 
S(ave). CTRL-L(oad). 

La liberation, la voici : tout est a 
l'ecran, ecrit en clair : "fermer", 
"couper", "ouvrir". "coller". "effa- 
cer", "enregistrer" (ouf ! Du meme 
coup, nous voici liberes des affreux 
barbarismes du genre "sauvegarder", 
"sauver". comme si tous les textes et 
programmes d'ordinateurs etaient 
toujours des chefs d'oeuvre en peril). 
Et pourtant, votre ecran semble vide, 
en tout six mots sur la ligne du haut. 
Autant de tiroirs que vous ouvrez 
d'un coup de souris magique, sans 
plus y penser. comme si votre main 
faisait desormais "cerveau a part". 

Or, toutes ces commandes en arbo- 
rescence - il doit y en avoir plus de 
cinquante dont vous n'avez pas a 
vous souvenir - demeurent les 
memes pour tous les programmes de 
Macintosh. J'ai essaye Multiplan et 
MacPaint (je vais y revenir). II y aura, 
tres vite. la serie des PFS (les Perso- 



MacArticle 

Daniel Garric 



nal Files System, chef d'oeuvre de 
simplicity et d'efficacite). Multichart. 
MacDraw et bien d'autres program- 
mes. Je sais deja que je n'aurai pas a 
les apprendre, a me redemander dix 
fois si c'est CTRL-P, CTRL-Q ou 
meme "T" pour "Transfert". Cette 
fois, nous y sommes : Fordinateur est 
au service de l'homme, de tous les 
hommes qui savent lire et ecrire. et 
non plus de Finformaticien seul. Et si 
Macintosh etait le premier vrai micro- 
ordinateur ? II faut lui donner un 
autre nom. celui-la est deja pris. 
Pourquoi pas un BUREAUBOT ? 

Je reviens a MacWrite : avec Macin- 
tosh, pas question d'ecrire en style li- 
neaire. La machine ne Fest pas puis- 
qu'elle permet sans cesse de se 
promener partout dans le systeme. 
Avec MacWrite, je Favoue, j'ai un 
true sentimental tout bete. J'ai deux 
enfants en bas age, Nathanael et 
Marie-Laetitia. Ma femme n'est pas 
tres attiree par les ordinateurs et je 
sais bien pourquoi : ils ne permettent 
pas d'orthographier correctement le 
prenom de nos enfants. Quelle "ma- 
chine" vous sort le "i" avec un trema 
et le celebre "e pris dans a ou dans 
o" ? O surprise ! merveille ! Mac 
sait faire tout ca, et bien d'autres 
choses encore. J'ai encore le clavier 
QWERTY et pourtant. tous les ac- 
cents sont la. A l'ecran. Y compris le 
circonflexe, qui se pavane sur les 
"a", les "o", les "u" le plus naturelle- 
ment du monde, comme s'il etait 
tout a fait courant. pour un accent 
circonflexe, de se montrer grandeur 
nature sur un ecran d' ordinateur. 

Je saute a MacPaint. C'est - evidem- 
ment - tout simple : deux coups de 
souris. La, ce sera bref. Parce que 
MacPaint ne se raconte pas, il se 
dessine. Et je ne sais pas dessiner. 
Mais je peux tout de meme 
comprendre qu'il y a la tout ce dont 
un dessinateur a toujours eu besoin 
et n'a jamais ose esperer trouver un 
jour : une gomme, du papier, un 
crayon... Mais aussi des mines de 
tailles differentes a un coup de souris 
les unes des autres. des fonds. des 
tas de fonds que Fon peut repandre 
a volonte, aux dimensions et aux 
formes que Fon veut. Et une main 
qui vous fait faire le tour de la page 
en promenant votre dessin dans les 
recoins secrets de l'ecran. Et une 
loupe pour les retouches, et une 
brosse, et une possibility de changer 
la taille des dessins. et un lasso pour 
capturer la partie du chef d'oeuvre 
dont vous desirez incruster votre 



Pom's n 11 



texte. A moins que vous ne fassiez le 
contraire, que vous mettiez du texte 
dans le dessin : MacPaint accepte 
tous les jeux de caracteres de Mac- 
Write, avec meme quelques tailles 
supplementaires. Je regrette encore 
plus que jamais de ne pas savoir des- 
siner. Mais je suis heureux pour mes 
amis publicitaires. createurs de mode, 
futurs auteurs de jeux d'aventure, de 
programmes didactiques, artistiques 
de tous poils. La definition. 512 par 
342 points, suffit largement pour 
faire une recherche tres elaboree, 
d'autant plus que vous imprimez... 

J'allais oublier rimprimante, juste- 
ment, l'lmagewriter (tout est dans 
son nom). inseparable compagne de 
Mac : silencieuse, solide, graphique. 
accessible instantanement. Avec une 
petite coquetterie : trois modes d'im- 
pression en texte. Brouillon : j'appuie 
et c'est parti. C'est rapide, et c'est 
vraiment un brouillon que vous pou- 
vez retravailler sur papier. Au niveau 
superieur. c'est standard : impression 
honnete. plus lente. Avec "Qualite 
Superieure", c'est tout simplement 
super : rimprimante se met a faire 
des pleins et des delies com me un 
"instit" de la vieille ecole, ceux qui 
vous tapaient sur les doigts si vous 
n'ecriviez pas en ronde avec une 



plume sergent-major. Mac est plus 
gentil, il le fait faire par Imagewriter. 

J'en arrive aux deux contraintes. La 
premiere : il y a tellement de jeux de 
caracteres, tellement de possibilites 
que vous ne pouvez jamais savoir 
combien de caracteres, combien de 
lignes vous avez tapes. Dommage, 
mais comprehensible. Plus grave : un 
document ne peut avoir plus de 8 
pages. Apres, il faut en ouvrir un 
autre. Et si vous ecrivez un roman ou 
les chapitres ont trente ou cinquante 
pages, que vous voulez couper, insu- 
rer de la 3eme a la 24eme ? 1! faudra 
sans doute attendre la fin de l'annee. 
lorsque Mac grossira, qu'il passera de 
128 a 512 K de memoire centrale. 
En attendant, ecrivez plutot des nou- 
velles, ou arrangez-vous pour que 
vos chapitres soient si bien ecrits et 
composes qu'il devienne inutile de 
les retrafiquer. 

Restent les programmes. Oui, vous 
aurez un BASIC presque Microsoft, 
avec des lignes pas forcement nume- 
rates : les numeros, c'est pour les 
"GOTO" et autres anachronismes du 
meme genre. Et un "Instant Pascal", 
comme il existe aux Etats-Unis un 
"Instant Coffee" ou cafe soluble. Le 
Pascal est soluble, lui. parce qu'il a 



perdu son compilateur dans 1' opera- 
tion, ou du moins, s'il I'a conserve, 
vous n'en savez rien du tout. Vous 
ecrivez votre programme sur la gau- 
che de l'ecran. un coup de souris 
magique et il se deroule directement 
sur la partie droite, vous signale 
toutes les erreurs, tous les trues qui 
ne vont pas. Et vous reparez sur le 
champ de bataille. Autant dire que 
s'il est beau, le Pascal, tout comme 
le BASIC, sa puissance est mesuree. 
Formidable pour apprendre, mais si 
vous avez des ambitions de type Bill 
Gates ou Bill Budge, alors non. Allez 
ecrire vos Multiplan ou autres Pinball 
Set sur Lisa, un nouveau Lisa 
compatible Mac (ou l'inverse). Et 
vous en serez recompenses : une fi- 
gure animee sur Mac. c'est une gra- 
vure d' Holbein en mouvement (si le 
talent y est, bien sur). 

Manque la couleur. c'est dommage. 
Mais la couleur y est, camouflee dans 
les PROMs. prete a sortir lorsqu'un 
Roland Moreno pas quelconque vou- 
dra bien aller l'y debusquer. Le vrai 
probleme. c'est l'ecran. La tele n'est 
pas assez bonne et l'ecran est cher. 
Dans six mois, dans un an, voire 
deux, lorsque le nombre de Macin- 
tosh vendus planera dans les un ou 
deux millions... ■ 



Magic Window II a l'essai 



Alexandre Avrane 

La majorite des logiciels de micro-in- 
formatique professionnelle se divisent 
en trois categories principales : les 
editeurs de texte. les tableurs et les 
gestionnaires de fichiers. Depuis 1'ap- 
parition de I' Apple lie et de son cla- 
vier ameliore. la competition entre 
editeurs de texte est devenue feroce: 
recemment arrive. Magic Window II 
(MW2) est destine a remplacer I'an- 
cienne version de Magic Window, 
dont le chiffre des ventes declinait 
dramatiquement face a la poussee 
des nouveaux editeurs. Apple Writer 
lie et WordStar principalement. 

Repris par Bili Depew. il s adresse 
aux possesseurs d'Apple II Plus (avec 
extension de 16K au moins) ou de 
He. II conserve les qualites originelles 
de son predecesseur en incluant plus 
de souplesse d' utilisation, mais de- 
meure tres conservateur : aucun nou- 
veau concept du traitement de texte 
n'a ete introduit. 



Adaptable a la plupart 
des configurations 

Magic Window 11 se compose de 
1'habituel classeur renfermant la do- 



cumentation et deux disquettes pro- 
tegees. La premiere permet de sau- 
vegarder. sur une disquette vierge. 
les parametres de la configuration de 
l'utilisateur : MW2 offre a ce niveau 
une grande diversite de choix et ac- 
cepte la plupart des cartes 80 colon - 
nes et interfaces d'imprimantes. ainsi 
que l'existence d'une eventuelle 
ROM LC. d'un clavier ameliore. ou 
de la modification de la touche Shift. 

La deuxieme disquette est, bien sur. 
la plus utilisee du systeme Magic 
Window, et contient le programme 
proprement dit. Apres avoir "boote ". 
il faut indiquer si Ton desire le char- 
gement optionnel du module permet- 
tant l'affichage sur 70 colonnes. tres 
agreable si I'on ne dispose pas de 
carte 80 colonnes. II faut ensuite pla- 
cer la disquette sur laquelle ont ete 
stockes les parametres de configura- 
tion, ou taper un simple Return pour 
utiliser les options par defaut de la 
disquette systeme. II s'agit done 
d'une procedure relativement longue. 
mais qui offre l'avantage de charger 
en une fois tous les modules du pro- 
gramme : la disquette systeme peut 
done etre immediatement rangee 
dans son etui. 



Les utilisateurs des logiciels 
d'ARTSCI. et en particulier de Magi- 
calc (cf. Pom's 9). ne seront pas de- 
payses. car les menus sont tres simi- 
laires et se distinguent par une 
excellente ergonomie. Un bon point 
done, refletant la philosophie gene- 
rale de Magic Window II. qui se veut 
directement utilisable par tout opera- 
teur non-informaticien. 

Une documentation faci- 
lement assimilable 

Cette approche se retrouve egale- 
ment dans la documentation ameri- 
caine. qui tente en premier lieu de 
dedramatiser l'apprentissage des rela- 
tions homme-ordinateur pour un 
"non-initie". L'approche pedagogi- 
que est tres progressive et le lecteur 
est invite a travailler sur plusieurs 
exercices. En revanche, la documen- 
tation se revele quasiment muette sur 
les aspects techniques; je n'ai pu de- 
terminer, par exemple. si Magic Win- 
dow II utilisait automatiquement une 
eventuelle carte d'extension memoire 
supplemental comme Magicalc. 
autre produit d'ARTSCI. qui gere 
jusqu'a 512K de RAM. La traduction 
en frangais. realisee par Ordinateur 
Express, reprend la documentation 
originale. malheureusement en plus 
succint : pas d' exercices proposes. 11 
y manque egalement l'index et quel- 
ques details (touches a utiliser pour 
generer des caracteres speciaux). 




Pom's n° 11 



L' utilisation des deux manuels sera 
done necessaire. 

Une utilisation tres 
compartimentee par des 
menus 

Six sections principals sont offertes 
a partir du menu : 

• l'editeur de texte proprement dit: 

• le sous-systeme de gestion des fi- 
chiers; 

• le sous-systeme de formatage per- 
met de specifier les marges d'une 
page de texte: 

• le sous-systeme d'impression; 

• le sous-systeme de configuration, 
enfin. permet de modifier la confi- 
guration du clavier, de I'affichage 
video ou des slots sans devoir re- 
charger ie programme. 

Remarquons qu'il n'existe pas de 
fonction d'aide (help) disponible di- 

rectement. 

Visualisation du 
texte page par page 

L'editeur de texte est. bien evidem- 
ment. constamment utilise. On est 
tout de suite frappe par l'ordonnan- 
cement ergonomique des touches de 
fonction : il ne m'a fallu qu'une di- 
zaine de minutes pour les memoriser. 
alors que je "seche" encore parfois 
sur d'autres editeurs que j'utilise cou- 
ramment ! Un autre point que j'es- 
time tres positif est l'absence de de- 
calage d'un caractere. sur la ligne sur 
laquelle se trouve le curseur. comme 
on peut l'experimenter sur Apple 
Writer ou le curseur est. par defaut. 
en mode d'insertion. 

Un texte correspond a un ensemble 
maximum de 160*112 caracteres par 
page et lecran video correspond a 
une fenetre de 40. 70 ou 80 colon- 
nes sur 22 lignes. Cette fenetre se 
deplace automatiquement pour sui- 
vre le curseur et Ton peut done taper 
un texte au kilometre sans regarder 
Fecran. 

Pour obtenir un affichage sur 70 co- 
lonnes en haute resolution, on doit 
charger le module adequat au mo- 
ment du boot: il ne faut cependant 
pas en abuser car la memoire dispo- 
nible est alors reduite de 26 a 13K. 

Une particularity de Magic Window II 
est I'affichage permanent des coupu- 
res de pages, ce qui permet de mon- 
ter ou abaisser de quelques lignes un 
paragraphe qui ne doit pas etre tron- 
que. et evite done de penibles essais 
a tatons avec l'imprimante. 11 est de 
plus possible de specifier une ligne 
de titre repetee a chaque page, et 
d'ecrire une ligne indifferemment en 
justification a gauche, a droite. cen- 
tree ou totale. 



Ponvs n" 11 



Un texte facile a entrer, 
difficile a corriger 

Les options de correction de l'editeur 
ne sont malheureusement guere pra- 
tiques : il n'est pas possible de sup- 
primer ou deplacer un gros bloc de 
texte. et les fonctions de recherche 
ou remplacement d'une chaine de 
caracteres- sont rudimentaires : im- 
possible de specifier une page ou 
une colonne pour la recherche, de 
convertir en majuscules une chaine 
en minuscules et vice-versa, de re- 
chercher des caracteres speciaux ou 
de controle. 

Magic Window II offre done des qua- 
lites indeniables d'esthetique et d'er- 
gonomie pour la saisie rapide d'un 
texte. mais il sera parfois necessaire 
de transferer le fichier vers un autre 
editeur pour une correction 
complexe. 

Une impression facile 

Le sous-systeme d'impression offre la 
saisie de nombreux parametres d'edi- 
tion : nombre d'exemplaires. nume- 
rotation automatique des pages, etc. 
L' impression est. de plus, facilitee par 
la visualisation permanente du texte 
tel qu'il sera imprime. 

Une option interessante est la possi- 
bility de demander l'impression 
d une liste de fichiers contenus sur 
une disquette dans l'ordre desire et 
de maniere automatique: ce n'est 
certes pas aussi performant que ce 
qu'il est possible d' obtenir avec le 
langage WPL d'Apple Writer He, 
mais offre une maniere simple et ele- 
gante d' obtenir un resultat proche. 

II est egalement possible de deman- 
der une impression vers le lecteur de 
disquette pour une retransmission ul- 
terieure par modem ou un autre pe- 
ripherique. 

Une gestion de fichier 
parfois etonnante 

Tout d'abord, oh surprise. MW2 gere 
ses fichiers avec ce monstre prehisto- 
rique de lenteur qu'est le DOS 3.3 ! 
En corollaire. il est impossible de 
transferer des fichiers Pascal. CP M 
(et. bien sur. ProDOS). Magic Win- 
dow impose le suffixe ".MW" a ses 
fichiers. Pourquoi une telle limitation 
qui complique les transferts entre edi- 
teurs ? 

L'utilisateur peut sauvegarder ou 
charger son texte par un fichier bi- 
naire, lisible uniquement par Magic 
Window 11. qui inclut le texte lui- 
meme ainsi que les parametres de ta- 
bulation et de formatage de ce texte. 
Excellente idee, puisqu'elle evite 
d'utiliser un fichier supplemental de 



parametres. mais pourquoi ne pas 

I avoir approfondie. par exemple en 
compactant le texte (un tableau edite 
peut comprendre 70 % de caracteres 
blancs contigus - il est done compres- 
sible : cf. Pom s 10 sur le compac- 
tage des ecrans HGR) ? 

II est d'autre part possible d'utiliser 
des fichiers textes au standard DOS 
3.3 mais. dans certain cas. j'ai ren- 
contre des bugs etranges. le pro- 
gramme sauvant inlassablement un 
fichier jusqu'a ce que la disquette soit 
pleine. ou se "plantant " en chargeant 
un fichier Apple Writer... Prudence 
done ! 

En conclusion. Magic Window II 
est un excellent logiciel pour la pre- 
miere frappe d'un document, grace a 
ses excellentes qualites ergonomiques 
et I' utilisation tres pratique du curseur 
qui permettent une saisie tres rapide 
et sans migraine, mais il n'offre 
aucun aspect revolutionnaire dans 
son appproche et souffre de quel- 
ques lacunes qui rendront difficile 
une reecriture partielle du texte. II 
reste neanmoins un produit amical. 
d'un rapport qualite prix tres compe- 
titif. 

NDLR - Magic Window II a egale- 
ment ete teste par Guy Lapautre. qui 
complete 1'analyse d'Alexandre 
Avrane par ces remarques : 

1 - Je trouve qu'une version moder- 
nised de ce logiciel. qui pretend etre 
adaptee a l'Apple V'e. et ce sans utili- 
ser ses touches particulieres (fleches 
verticales. pommes. ...), est une 
aberration. 

2 - Les codes de deplacement utilises 
(CTRL-Q ou W ou Z ou X). parfaite- 
ment ergonomiques en Qwerty, sont 
ridicules en Azerty (la traduction du 
manuel le reconnait d'ailleurs). Je 
suis d'autant moins gene pour le dire 
que je travaille toujours en Qwerty. 

3 - Je m'oppose a l'idee d'utiliser un 
logiciel (Magic Window par exemple) 
pour une premiere frappe et un autre 
(Apple Writer par exemple) pour les 
corrections. Ces deux logiciels etant 
fondes sur des principes totalement 
differents. il faut de longues heures 
pour se debarasser des reflexes 
acquis par une bonne habitude d'un 
logiciel afin de passer a un autre. 

4 - Je trouve que Magic Window 
manque un peu de fonctionnalites 
aujourd'hui courantes. surtout dans 
le domaine des deplacements et rem- 
placements de texte. En revanche, il 
a garde une gestion tres commode 
par menus bien concus. 

En resume, je preferais nettement 
Magic Window I a Apple Writer I. 
Maintenant. je vote sans hesiter en 
faveur d'Apple Writer II. face a Magic 
Window II. ■ 



55 



MICRO-PERIPH 

ouvre les portes de votre flfcippfcr II 



Ouvert du mardi au samedi : 10 h - 12 h et 14 h - 18 h 
62. rue Ducouedic - 75014 PARIS (Tel. : 321 53.16) 

























if- "/ W 





MULTITECH 

clavier 
pour 
Apple 

(1 515 F T.T.C.) 

• 90 touches sur un clavier ergonomique ei esihfetique 

• 12 touches de fonction progammables par I'utilisateur 

• 10 touches de fonctions d6finissables par I'utilisateur 

• 52 touches pout les commandes en Basic ou DOS 

• cordon de 1,60 m 

• LED pour "caps lock" et "num lock" 

• parfaitement adapte pour ('Apple 

Ce proauit est d'une excellente quality et durability. Un microprocesseur-d^codeur 
sur le clavier confere une 6norme flexibility au niveau de la paramStrisation des tou- 
ches, ce qui est tres utile a installation d'application de traitement de texte. L'ins- 
tallation se fait en cinq minutes, sans soudure ni autre piece. 



MODEM ' BUZZ BOX" (1 100 F T.T.C.) 

• fonctionnement aux normes francaises (CCITT) 
■ operation aux 300 bauds 

• fonctionnement sur pile de 9 V ou avec adaptateur 

• bi directionnel avec modes "appel" et "reponse" 

• livre avec notice detaillee 

(Get appareil n'a pas encore obtenu son homologation par les P. T.T.I 



PROMOTION IMPRIMANTES 

• Epson FX 80 F/T avec interface pour Apple 

• Epson RX 80 avec interface pom Apple 

• Epson RX 80 F/ T avec interface pour Apple 

• Epson MX 100 F/T avec interface pour Apple 

• Epson FX 100 F/T avec interface pour Apple 



VI p. 



• ?.(: 



5 950 F T.T.C. 
4 100 F T.T.C. 
4 450 F T.T.C. 

6 300 F T.T.C. 
6 950 F T.T.C. 
4 500 F T.T.C. 




NOUVEAU 

STYLO OPTIQUE (1 770 F T.T.C. I 

• fonctionne avec moniteur monochrome, couleur ou televiseur couleur 

• resolution 280 - 192 points 

• 10 K disquette systeme qui confere 40 instiuctions graphiques 

• fonction "ZOOM" qui elargii jusqu'a sept fois 



LES CARTES « PILOTS » 

U-TERM (1 490 F T T.C.I 

Cette carte qui vous donne 80 colonnes sur l'6cran vous permel d'avoir deux jeux de 
caracteres a la fois qui sont co-residents dans la m^moire vive et la m^moire morte 
de la carte. Par exemple. les caractfcres f rancais majuscules et minuscules amsi que 
les caract&res anglo-saxons. Elle a une trfes grande gamme de compaiibilue ; 
APPLESOFT, PASCAL, CP M. APPLEWRlTER II. etc. 

U-Z80 (1 150 F T.T.C.) : son point fort est la Vitesse : 4 MH;». Compatible avec tous 
les logiciels CP/M ou de Z80. 

U RAM16 (890 F T.T.C. J : c'est une cane langage entieremeni compatible avec 
INTEGER BASIC. PASCAL. VISICALC, etc. Pourquoi payer plus cher? 
U-S232 II 040 F T.T.C.) : une carte de serie. vitesse variable entre 75 et 
19200 bauds. Cette carte contient son propre logiciel de handshake, cequi per met 
de faire fonctionner une imprimante a sa vitesse optimate. Compatible avec le logi- 
le communication VISITERM. 



NOUVEAU 

PROMOTION DE LECTEURS DE DISQUES - 2 550 F T.T.C. I (Photo8l 

• 100% compatible avec Apple II + et //e 

• M^canique Siemens Corp. avec syst&me vis sans fin 

• Electronique fabriqu^e en Grande-Breiagne 

• Enticement teste et garanti 12 mois 

• Operation tres silencieuse et precise 

(Pour les ventes par correspondance. veuillez ajoutei 40 F de port.) 



ii-i 






LES CARTES DINTERFACE 

Cane Z 80, (4 MHz) (Photo 1) 

Carte 80 col. avec minu/majuscules francais (Photo 2) 

car. inverses (II i compat. Basic, Pascal, CP'M etc. 
Programmateur d'Eproms (2758 16- 32 32A/64) (Photo 3) 
Carte RS232C 75 19200 baud compat. Visiterm, etc. IPhoto4l 
Int/face parallele type Centronics pour Epson, etc. (Photo 5) 
Interface pour lecteur de disques (Photo 6) 
Carte langage pour Apple II ~ compatible Pascal. CP/M IPhoto 71 
Carte 80 colonne pour Apple /e extensible a 64 K (Photo 9) 
Carte 80 colonnes pour Apple 1 e equipee de64 K I Photo 91 
Carte 128 K pour II ~ ou //a avec pseudo disque DOS. Pascal et CP M 
Joystick avec auto-centrage et micro-adjust 
Ventllateur pour Apple II * ou Aple //e 
Alimentation 

Carte VIA 6522 avec 8 entrees/sorties et deux temporisat. 
Carte horloge 
Carte IEEE-488 - cable 
Carte musicals 

Carte imprim. (Eps.. Cent.. NEC. Appl.l avec 64 K buffer 
Carte a entre/sortie multiple A/D, D/A 
Carte 6809 bi-processeur 
Carte convertisseur A/D 

Carte int/face para commutable (Epson. Apple. NEC. Cenlr.) 
Moniteur Zenith vert 
Moniteur Zenith ambre 
Carte Videx Ultraterm 
Accelerator II 4 MHz de Saturn tous les programmes tournent quatre 
fois plus vite sans modification 
Accelerator //e 
SAM synthetiseur vocal 

Enhancer II • buffer, auto-rep. et macros pour claviers 

LES LOGICIELS PROFESSIONNELS 
DBASE II 

ASCII Express pro • logiciel de communication 
Z-Term Pro - logiciel de communication Z 80 
P-Term Pro - logiciel de communication Pascal 
Softerm 2 - emulation de terminal 
Magicalc 

Merlin Assembleur 

POUR OBTENIR PLUS DE RENSEIGNEMENTS. n'hesitez pas a 
D'auire part, nous avons une t'es grande gamme de produits pour 



PRIXT.T C 
930 

850 
830 
720 
475 
515 
675 
850 

1 400 

2 745 
275 
320 
650 
465 
755 

1 650 
715 

1 645 

2 205 
2 205 
1 085 

675 
1 120 
1 230 
!> 100 



4 350 
4 900 
1 150 
1 500 

6 600 
1 650 
1 500 

1 500 

2 030 
1 400 

650 

ious appeler. 



BON DE COMMANDE 

(Toufes nos cartes sont garanties 12 moisl 

A decouper ei envoyer a : 

MICRO-PERIPH, 62. rue Ducouedic • 75014 Paris - Tel. : 321.53.16 
Je desire recevoir rapidement, sous pti recommande : 



QUANTITE 



DESIGNATION 



TOTAL T.T.C. 



Total 

Frais de port recommmande 
Ci-joint un cheque C.C.P. de F : 



25.00 F 



Comparaison de deux programmes 

Applesoft 

Gerard Michel 



Contrairement a ce que Ton pourrait 
croire. l'activite du programmeur ne 
s'exerce pas toujours dans le cadre 
d'une organisation sans faille. Peut- 
etre faut-il voir la une manifestation 
de ce desordre bouillonnant qui ca- 
racterise souvent le travail des grands 
createurs. . . 

Ainsi. il vous est sans doute deja ar- 
rive de vous trouver avec plusieurs 
versions d un meme programme en 
Applesoft, sauvees sous des noms 
trop semblables pour que leurs nuan- 
ces puissent vous eclairer, sans savoir 
discerner de facon certaine le fichier 
contenant les plus recentes modifica- 
tions. 

S*il s'agit d'un programme relative- 
ment long, la recherche des differen- 
ces significatives peut representer une 
perte de temps non negligeable. 

La routine en langage-machine que 
nous vous proposons dans cet article 
vise precisement a limiter cette perte 
de temps en comparant "automati- 
quement" deux programmes en Ap- 
plesoft charges en memoire. afin 
d'en afficher toutes les differences. 
La routine est implantee a partir de 
l'adresse decimale 37500 et ne 
pourra done etre utilisee que lorsque 
la taille totale des deux programmes 
a comparer ne depasse pas 35K en- 
viron. 



Les etapes de la mise en oeuvre sont 
les suivantes (avec PG1 designant la 
premiere version chargee en me- 
moire. et PG2 la seconde) : 

• BLOAD DIF.OBJ 

• LOAD PG1 

• POKE 103.PEEKU75) : POKE 
104,PEEK(176) : place le pointeur 
de l'adresse de debut de pro- 
gramme a la fin de PG1 pour que 
le chargement de PG2 n'ecrase 
pas ce dernier 

• LOAD PG2 

• CALL 37500 

La routine peut afficher les differen- 
ces suivantes : 

1) Ligne numero N listee seule en 
mode normal : cette ligne existe dans 
PG1 mais pas dans PG2. 

2) Ligne numero N listee seule en 
mode inverse : cette ligne existe dans 
PG2 mais pas dans PG1. 

3) Ligne numero N listee en mode 
normal, puis listee a nouveau en 
mode inverse : la ligne existe dans 
les deux programmes, mais les ins- 
tructions qu'elle comporte ne sont 
pas strictement identiques dans les 
deux cas. II suffit ainsi qu'un seul ca- 
ractere soit different pour provoquer 
I'affichage (nom de variable modifie. 
instruction rajoutee ou supprimee...). 
Chaque fois qu'une ligne a ete listee. 



qu il s'agisse de PG1 ou de PG2. la 
routine attend la frappe d*un carac- 
tere au clavier avant de continuer la 
comparaison. 

11 est egalement possible de lister les 
differences sur papier: pour ce faire. 
tapez PR#s (ou s designe le slot de 
l'imprimante) avant CALL 37500. 
Dans ce cas. il n'est bien sur plus 
possible de reperer l'origine d'une 
ligne isolee par le mode d'affichage 
(normal ou inverse) et vous devrez 
utiliser la liste de 1'un des program- 
mes pour la determiner. Lorsque 
deux lignes de meme numero se sui- 
vent. la premiere appartient toujours 
a PG1 et la seconde a PG2. 

Si la routine ne liste rien. les deux 
programmes sont tout simplement ri- 
goureusement identiques. 
A Tissue de la comparaison. il peut 
arriver qu'un message "SYNTAX 
ERROR" vous soit adresse par le 
systeme. Cela provient de ce que la 
routine ne retablit pas tous les poin- 
teurs de programme a une valeur 
correcte avant le retour au BASIC, 
mais il n'y a pas a s en inquieter. Si 
vous desirez faire de suite une autre 
analyse, tapez NEW et reprenez le 
processus a partir de LOAD PG1. 



LISA 1.5 


20 TXE 


EPZ $1E 


jPOINTEUR "FIN DE PROGRAMME" POUR LIST 






21 CD 


EPZ $EB 


;TYPE DE LIST A EFFECTUER 


1 j HiHHilHHHHlliHlHiiHHil 


22 


JSR HONE 




2 ;* 




23 


LDA SI 


jMET TXO AU DEBUT DE PG1 


3 i* 


COMPARISON DE DEUX * 


24 


STATXO 




4 j* 


PROGRAMMES APPLESOFT * 


25 


LDA 118 




5 ;* 


CODE = DIF.OBJ * 


26 


STA 7X0+1 




i i* 




27 


JSR SO 


;M1SE A JOUR DE 7X1 


7 !m*x»m*«***x«*t*««*******i<** 


28 


JSR SI 


;M1SE A JOUR DE TX2 


8 


0R6 »927C 


29 DEB 


LDY 13 




? 


OBJ $800 


30 


LDA <TXO),Y;QCTET MUT NO LIGNE DANS PG1 


10 TXT 


EPZ W jPOINTEUR POUR PROGRAMME 2 


31 


CMP (TXT),Y 


j = OCTET HAUT NO LIGNE DANS P62 ? 


11 HOME 


EOU ♦FC58 


32 


BNE CO 




12 GET 


EQU $FD0C 


33 


DEY 




13 TXO 


EPZ $6 jPOINTEUR POUR PROGRAMME 1 


34 


LDA OX0),YjIDEM POUR OCTET BAS NO LIGNE 


14 1NV 


EPZ $32 jDRAPEAU POUR IWERSE/NORMAL 


35 


CMP <TXT),Y 




15 IN 


EQU $200 j BUFFER D'ENTREE/CLAVIER 


U 


BEQ C3 




16 AD 


EPZ $8 iSAIW. 2 OCTETS SUIVANT LIGNE LISTEE 


37 


BCC C02 


;N0 INFERIEUR DANS PG1 


17TXP 


EPZ $18 iSAIWEGARDE DE TXT 


38 C01 


LDA 11 


;N0 INFERIEUR DANS P62 


18 TX1 


EPZ $1A ; ADRESSE LIGNE SUIVANTE DANS P61 


3? 


STA CD 




1? 7X2 


EPZ $1C {ADRESSE LIGNE SUIWNTE DANS P62 


40 CI 


LDA #$3F 


;M0DE 'INVERSE' 



Pom's n' J 11 



41 


STA IIW 


42 


LDA TX2 


43 


STA TXE 


44 


LDA TX2+J 


45 


STA TXE+1 


44 


JMP LIST 


47 CO 


BCS C01 


48 C02 


LDA 12 


4? 


STA CD 


50 C2 


LDA TXT 


51 


STA TXP 


52 


LDA TXT+1 


53 


STA TXP+1 


54 


LDA TXO 


55 


STA TXT 


56 


LDA TXO+1 


57 


STA TXT* J 


58 


LDA TX1 


59 


STA TXE 


60 


LDA TX1 + 1 


61 


STA TXE+1 


62 


JMP LIST 


63 C3 


INY 


64 C4 


INY 


65 


LDA (TXO) 


66 


CMP <TXT) 


67 


8NE C8 


68 


CMP HO 



;POJNTEUR FIN DE LIST SUR PG2 



;N0 INFER1EUR DANS P62 



;SAWEGARDE DE TXT 



; DEBUT DU 'PR06RAMME' A LISTER 
;EST EN TXO 



;POINTEUR FIN DE LIST SUR P61 



jSI 1 OCTET EST DIFFERENT => LIST 
;FIN LIGNE DANS PG1 ? 

69 i<SI LA LIGNE EST FINIE AVANT DANS PG2, ON A UN GUI NE SE) 

70 ;(RETROUVE PAS DANS PG1 ET ON SORT POUR UN LIST DES DEUX) 

71 ;<L16NES A L'INSTRUCTICN 67) 

72 j(SI LA LIGNE N'EST PAS FINIE DANS PG2, ON N'ARRM MEME PAS) 

73 i<A L'INSTRUCTION 68 CAR ON A DANS P61 UN QUI NE SE TROUVE) 

74 ;<PAS DANS PG2 ET ON SORT A L'INSTRUCTION 67) 

75 ;<LE TEST SUR P61 SUFFIT DONC POUR VERIFIER QUE LES DEUX) 

76 ;<L1GNES SONT BIEN IDENTIQUES DU PREMIER AU DERNIER OCTET) 



iPASSE A LIGNE SUIVANTE DANS PG1 ET P62 



77 


BNE C4 


78 C9 


LDA TX1 


79 


STA TXO 


80 


LDA TX1 + 1 


81 


STA TX0+1 


82 


LDA TX2 


83 


STA TXT 


84 


LDA TX2+1 


85 


STA TXT+1 


86 


JSR SO 


87 


JSR SI 


88 RO 


LDA TX1 + 1 


89 


BNE C6 


90 


LDA TX1 


91 


BNE C6 


92 


CMP TX2*1 


93 


BNE C5 


94 


CMP TX2 


95 


BNE C5 


96 


LDA H8 


97 


STA TXT+1 


98 


STA *BO 


99 


LDA Ml 



iPGl FINI ? (00 EN TX1 ET TX1+1) 



;PG2 FINI AUSSI ? 



i REMISE DES P01NTEURS EN POSITION "NEW 
;ET FIN DE ROUTINE 



100 
101 
102 
103 

104 C5 

105 C6 
106 
107 
108 
109 
110 
111 

112 C7 

113 C8 
114 
115 

116 LIST 

117 LO 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 

142 RL 

143 

144 

145 

146 

147 

148 

149 

150 

151 

152 

153 RLfl 

154 

155 

156 

157 

158 



STA TXT 
LDA #4 
STA $AF 
RTS 

JMP COl 
LDA 7X2+1 
BNE C7 
LDA TX2 
BNE C? 
LDA «4 
STA CD 
JHP C2 
JMP DEB 
LDA 115 
STA CD 
JMP C2 
LDX HO 

LDA INLIST,X 
STA IN,X 
INX 

CPX WE 
BNE LO 
LDY HO 
LDA (TXE),Y 
STA AD 
INY 

LDA (TXE),Y 
STA AD+1 
DEY 
TYA 

STA (TXE),Y 
INY 

STA (TXE),Y 
JSR $D539 
JMP *D444 
LDY #0 
LDA AD 
STA (TXE) ,Y 
INY 

LDA AD+1 
STA (TXE),Y 
JSR GET 
LDA WFF 
STA INV 
LDA CD 
CMP HI 
BNE RLO 
LDA TX2 
STA TXT 
LDA TX2+1 
STA TXT+1 
JSR SI 
JMP RO 
CMP #2 
BNE RL 1 
LDA TXP 
STA TXT 
LDA TXP+1 
STA TXT+1 



;L3ST DE LA FIN DE PG2 

;PG1 PAS FINI - P62 L'EST-IL ? 



{LIST DE LA FIN DE PG1 



jCOMPARAISON DES LISNES SU1VANTES 
; ANN ONCE LIST DE 2 LIGNES DIFFERENTES 



jMET DANS LE BUFFER "IN" LES 
;CODES-ECRAN DE L'INSTRUCTICN 
; LISTsCALL 37716 



iSAUVE 2 OCTETS SUIVANT LA LIGNE 
;A LISTER (DEBUT LIGNE SUIWNTE) 



jMH 00 APRES LA LIGNE POUR 
;S1NULER UNE FIN DE PROGRAMME 

{ROUTINE D' INTERPRETATION DU BUFFER 
iSAUT DANS LE BASIC POUR EXECUTION 
;ON EST A L'ADRESSE DECIMALE 37716 
{RESTAURE DEBUT LIGNE SUIVANTE 



;DEMANDE FRAPPE AU CLAVIER 
jRETABLIT MODE "NORMAL* 



{PASSE A LIGNE SUIVANTE DANS PG2 



iRETABLIT TXT POUR PG2 



58 



Pom's n° 11 



1 CO Dl 

137 KLZ 


1 f\A TV! 

LDA lAl 


JrAbbt A Uunt SUJVANTE DANS PG1 


177 SO 


LDY HO 


;S-P DE NISE A JOUR DE TX1 


i in 
160 


STA 1X0 




178 


LDA <TX0),Y 


161 


1 rLA TV 1 i 1 




17? 


STA 7X1 




162 


STA TX04J 




180 


1NY 




163 


Ten on 

JSR SO 




181 


LDA (TX0),Y 




J OH 


Jnr KU 




182 


STA TXH1 




165 KLl 


PHD U.I 




183 


RTS 




i / / 
166 


BEO RL2 


iON EST DANS LE LIST DE LA FIN DE P61 


184 SI 


LDY HO 


jS-P DE M1SE A JOUR DE TX2 


167 


run uc 

CUP #5 




185 


LDA <TXT),Y 


168 


8NE RL3 




186 


STA TX2 




16? 


LDA #3 


;LA LIGNE DE PG1 EST LISTEE 


187 


1NY 




i on 
1/0 


SIA CO 


;tl Hi vA nAJNTENffff LISTER 


188 


LDA <TXT),Y 




1/1 


I r\A TVD 




18? 


STA TX2+1 




1 // 


OIH lAl 




1?0 


RTS 




170 
1 13 






in* * t I < ( tVT 

1?1 MIST 


HEX CCC9D3D4BAC3C1CCCCB3B7B7B1B6 


1 7X 

1/4 


CTA TVTa 1 

SIA IX r+ 1 




1 00 


DCH "INT" 




175 


JNP CI 




1?3 


END 




176 RL3 


JNP C9 


;2E LIGNE LISTEE - ON PASSE A LA SUITE 









RECAPITULATION 

927C- 20 58 FC A9 
9280- 01 85 06 A? 08 85 07 20 
9288- AE 93 20 BA 93 AO 03 Bl 
9290- 06 Dl 67 DO 1C 88 Bl 06 
9298- Dl 67 FO 36 90 15 A9 01 
92A0- 85 EB A9 3F 85 32 A5 1C 
92A8- 85 IE A5 ID 85 IF 4C 2F 
92B0- 93 B0 EB A? 02 85 EB A5 
92B8- 67 85 18 A5 68 85 19 A5 
92C0- 06 85 67 A5 07 85 68 A5 
92C8- 1A 85 IE A5 IB 85 IF 4C 
92D0- 2F 93 C8 C8 Bl 06 Dl 67 
92D8- DO 4E C9 00 DO F5 A5 1A 
92E0- 85 06 A5 IB 85 07 A5 1C 



92E8- 85 67 A5 10 85 68 20 AE 
92F0- ?3 20 BA 93 A5 IB DO IE 
?2F8- A5 1A DO 1 A C5 ID DO 13 
9300- C5 1C DO OF A? 08 85 68 
?308- 85 B0 A9 01 85 67 A? 04 
9310- 85 AF 60 4C 9E 92 A5 ID 
9318- DO OB A5 1C DO 07 A9 04 
9320- 85 EB 4C B7 92 4C 8D 92 
9328- A9 05 85 EB 4C B7 92 A2 
9330- 00 BD C6 93 9D 00 02 E8 
9338- EO OE DO F5 AO 00 Bl IE 
9340- 85 08 C8 Bl IE 85 09 88 
?348- ?8 91 IE C8 91 IE 20 39 
9350- D5 4C 44 D4 AO 00 A5 08 
9358- 91 IE C8 A5 09 91 IE 20 



9360- 


OC 


FD A9 


FF 85 


32 A5 EB 


9368- 


C9 


01 DO 


0E A5 


1C 85 67 


9370- 


AS 


ID 85 


68 20 


BA 93 4C 


9378- 


F4 


92 C9 


02 DO 


16 A5 18 


9380- 


85 


67 A5 


19 85 


68 A5 1A 


9388- 


85 


06 A5 


IB 85 


07 20 AE 


9390- 


93 


4C F4 


92 C9 


04 F0 EE 


9398- 


C9 


05 DO 


OF A9 


03 85 EB 


93A0- 


A5 


S8 85 


67 A5 


19 85 68 


93A8- 


4C 


A2 92 


4C DE 


92 AO 00 


93B0- 


Bl 


06 85 


1A C8 


Bl 06 85 


93B8- 


IB 


60 AO 


00 Bl 


67 85 1C 


93C0- 


C8 


Bl 67 


85 ID 


60 CC C9 


93C8- 


D3 


D4 BA 


C3 CI 


CC CC B3 


93D0- 


B7 


B7 81 


B6 





Acceleration de programmes en Pascal 



Pour accelerer vos programmes Pas- 
cal, vous pouvez utiliser des procedu- 
res intrinseques relativement mecon- 
nues telles que FILLCHAR et 
S1ZEOF. 

La procedure FILLCHAR permet de 
remplir la variable DESTINATION 
sur une longueur LONGUEUR avec 
le caractere CARACTERE; elle est 
definie par : 

FILLCHAR (DESTINATION. LON- 
GUEUR. CARACTERE): 

DESTINATION est de type quelcon- 
que (sauf fichier); ce peut etre sim- 
plement un tableau, un enregistre- 
ment ou un champ dans un 
enregistrement: s'il s'agit d'un ta- 
bleau ou d'une chatne de caracteres. 



DESTINATION peut etre indicee. 
FILLCHAR (tableau! 51!,50.'Z') rem- 
plit le tableau de Z de l'indice 51 a 
100. 

Si Ton ne connalt pas la taille exacte 
de la variable DESTINATION et que 
Ton desire la remplir completement. 
on utilisera avec avantage la fonction 
S1ZEOF qui retourne la longueur 
d'une variable ou d'un type (sauf fi- 
chier). Ainsi. FILL- 
CHAR(ENREGISTREMENT. Sl- 
ZEOF(ENREGISTREMENT). 
CHR(O)) remplit la variable ENRE- 
GISTREMENT de zeros. Le remplis- 
sage d'un enregistrement par 
CHR(O) correspond a " pour les 
STRING, a pour les INTEGER et a 
FALSE pour les BOOLEAN, d'ou 
l'utilite de FILLCHAR pour obtenir 



rapidement et sans effort un enregis- 
trement vierge. 

Ce procede est tres rapide pour rem- 
plir de grands tableaux. Vous pourrez 
faire un essai en remplacant. dans le 
programme saisie multipage du 
Pom's 9. dans la procedure 1NIT: 

FOR I : = 1 TO MAXLIGTB DO 
FOR J := 1 TO MAXCOLTB DO 
TB.'I.J! := 

par : FILL- 
CHAR(TB.SIZEOF(TB).CHR(0»: 

Vous vous apercevrez que vous 
n'avez pratiquement plus le temps de 
lire "Patience. RAZ du tableau"! At- 
tention cependant : le systeme 
n'exerce aucun controle; verifiez bien 
les limites de remplissage ... 



Pom's n° 11 






■3. i 






PI L ORDIfMATEUR 
1 1— Jj IIMDIVIDUEL 

Vous y trouverez : 

• I'actualite et les tendances de I'informatique individuelle 
i les bancs d'essais des principaux materiels • des panoramas 
et des tests comparatifs • le point des grandes manifestations 
internationales • des articles d'initiation • des syntheses 
• des programmes • des interviews "exemplaires" 
• des conseils • des idees • des astuces 

ORDINATEUR INDIVIDUEL, chez votre marchand de joumaux 



Bibliographie 

Alexandre Duback 



Recueil No. 2 de Pom's - Editions 
MEV et Editions du PSI - 215 pages 
- 120 FF. 

Voici enfin le second recueil de 
Pom's, couvrant les numeros 5 a 8. 
Ces numeros ont deja ete retires, 
mais le 5 et le 6 se trouvent a nou- 
veau en rupture de stock. 

Nous souhaitons a ce second recueil 
autant de succes qu'au premier. 
Avec les disquettes d'accompagne- 
ment. vous aurez plein de program- 
mes, dont les "leaders" : Haifa, le 
HELLO complet. la programmation 
facilitee, le moniteur etendu. la cryp- 
tographic de multiples utilitaires et 
programmes graphiques, ... Autant 
de programmes qui seraient normale- 
ment chacun vendus. a eux seuls. 
pour le prix du recueil avec ses dis- 
quettes. Bonne lecture ! 

Le recueil No. 2 sera disponible a la 
mi-avril. 

Techniques de programmation 
des jeux, de David Levy. Editions 
du PSI. 245 pages. 102 FF. 

Le livre donne une bonne idee des 
principes de programmation d'un 
grand nombre de jeux de damier et 
de cartes. II est dommage qu'il ne 
presente pas le moindre exemple de 
programme et seulement quelques 
rares organigrammes partiels. Nean- 
moins, un lecteur assez fort en infor- 
matique pourra en tirer profit, surtout 
s'il a deja un peu travaille sur le 
sujet. 

Ce qui est par contre regrettable, 
c'est I'incroyable negligence dans la 
presentation de l ouvrage : pas de 
table des matieres. fautes d' impres- 



sion nombreuses et parfois genantes. 
bibliographies omises bien qu'annon- 
cees dans le texte. La question se 
pose : y a-t-il un correcteur dans la 
maison ? 

Multiplan sur Apple, par Herve 
Thiriez, Editions du PSI. 

Dois-je ne pas parler de ce livre puis- 
que I'auteur participe a cette revue ? 
J'ai aussi un devoir d'information a 
votre egard: j'en parlerai done, ayant 
eu la chance de pouvoir analyser le 
manuscrit. 

II s'agit la d'un ouvrage ayant deux 
buts : une introduction progressive et 
cependant approfondie a Multiplan. 
et la presentation de tableaux types 
et d'astuces d' utilisation nombreuses 
qu'ignorent parfois des utilisateurs re- 
guliers du programme. Ces deux 
buts sont manifestement atteints. 
Nous conseillons cet ouvrage a tous 
les utilisateurs de Multiplan : meme 
les habitues y apprendront des trues. 

Comme dans le cas de "Visicalc sur 
Apple", une disquette d'accompa- 
gnement est proposee en option. 
Cette disquette se vendra meme 
toute seule, car elle contient un pro- 
gramme permettant d'obtenir une 
liste detaillee descriptive de tout ta- 
bleau, comportant tous les renseigne- 
ments y compris les formats, les 
zones "nominees", les indications de 
recopie, ... 

Guide de I'AppIe. tome 3. par Be- 
nott de Merly - Edimicro - 180 
pages. 79 FF. 

On retrouve le meme objectif que 
dans "20 progiciels-outils... " presente 
dans le Pom's 10. Nous avons ici 



droit a l'analyse de cinq programmes 
de traitement de texte (surtout Ap- 
plewriter et Wordstar), deux tableurs. 
sept gestionnaires de fichiers (trois en 
detail), deux logiciels de graphiques. 
et 18 pages sur la telematique. 

Comme nous l'avons dit dans le nu- 
mero 10 de Pom's, ce type d'analyse 
de logiciel nous semble etre ou trap 
ou trap peu. d'autant que. dans ce 
cas-ci, plusieurs logiciels sont deja 
fort connus : Applewriter, PFS. CX, 
Visicalc. Multiplan. ... 

Disk, files and printers for the 
Apple II. de Brian D. et George H. 
Blackwood. Prentice Hall Internatio- 
nal. 66 Wood Lane End. Hemel 
Hempstead, Herts HP2 4RG. 
Royaume Uni - 260 pages. $20.75. 

II s'agit la d'un ouvrage clair et facile- 
ment lisible sur le DOS. avec un cha- 
pitre bien fait sur l'utilisation de I'im- 
primante ou Ton explique comment 
eviter le TAB au-dela de la quaran- 
tieme colonne. Des programmes de 
demonstration accompagnes d'orga- 
nigrammes completent la presenta- 
tion. Pour les debutants anglopho- 
nes. 

Programming the Apple in Basic. 

de Paul Tebbe. Prentice Hall, 182 
pages. $22.05. 

Un bon livre d' initiation au Basic sur 
Apple, y compris a l'utilisation des fi- 
chiers. Avantages : clarte et pedago- 
gue. Bien entendu, il faut pouvoir lire 
1' anglais. Un regret : le livre ne pre- 
vient pas des limites ou bugs de I'Ap- 
pIe : voir a ce sujet les remarques sur 
1' APPEND et le RENUMBER dans le 
recueil No. 1 de Pom's. 



L' augmentation du rythme de parution requiert un renforcement de notre 
equipe. Pom's recherche un collaborateur avec un parfaite maitrise de 1' Apple 
II et //e, capable de faire de l'assembleur les yeux fermes, connaissant les 
adresses de 1' Apple aussi bien que celle de sa petite amie, decontracte et sym- 
pathique. II faudrait en outre qu'il habite Paris ou le Sud-Ouest de la region 
parisienne (nous sommes a Versailles). S'il est par ailleurs capable d'ecrire clai- 
rement et sans "fotes d'ortografe", c'est encore mieux, mais pas indispensable. 
Nous sommes ouverts a toute formule entre un mi-temps et un temps plein. 
Avantages : travail passionnant avec des gens sympathiques (mais oui ...), dans 
des conditions totalement conviviales : possibility de travailler en bonne partie 
chez soi, meme la nuit et les week-ends. Nous cherchons aussi un responsable 
comptable et administratif serieux, ordonne au point de la meticulosite : il n'est 
en effet pas question de perdre vos precieux bulletins d'abonnement. 



Pom's n° 11 



... j;" - - 








BY A 


iferbatim. 



DISQUETTES ET MINI DISQUETTES TOUTES CONFIGURATIONS 




- Certification unitaire 100% sans erreur. 

- Duree de vie : 30 millions de revolutions 
(standard de (Industrie 3,5 millions de revolutions). 

- Anneau de renforcement en standard sur le 5 1/4 ". 

- 5 1/4 " en 48 et 96 TPI, simple et double face. 



BFI ELECTRONIQUE - 9 RUE YVART - 
75015 PARIS. 
Tel. 533-01-37. 



62 



Pom's n" 11 



Micro-informations 

Guy Lapautre 
(assiste de J. -F. Duvivier) 



Promenade au Jardin 
des Hesperides 

Le cru 83 de la Pomme d'Or est 
compose de quatre laureats. recom- 
penses par des Lisa (juste avant la 
baisse des prix...) : 

• Michel Marquis (un auteur de 
Pom's), avec le Kit PIA. relie son 
Apple a tout son appartement 
(comment fait-il pour se raser sans 
griller ses ROMs ?). 

• Roland Moreno, Francois Grieu et 
Frederic Levy communiquent avec 
la carte Apple-Tell (voir plus loin). 

• Claude Collin, de Controle X. pro- 
pose CX Systeme (analyse dans le 
Pom's 10. apres l'etude de CX 
Multigestion dans le Pom's 5). 

• Jean-Luc Besnard et Patrick 
Choisy. avec la comptabilite Hera- 
kles. "s'interfacent" avec Visicalc. 
Applewriter. Business Graphics. 
Omnis.... 

Le "Goncourt des Logiciels" permet- 
tra-t-il une meilleure protection juridi- 
que des oeuvres des auteurs de logi- 
ciels ? 

Vous avez dit compati- 
ble ? 

I.E.F. propose un Apple lie portable 
baptise STADU P : Systeme de Trai- 
tement et d' Acquisition de Donnees 
Universel Portable. On y trouve, 
dans un coffret robuste. un Apple lie 
avec un lecteur de disquettes 140 K 
integre. un ecran 7 pouces et un cla- 
vier ASCII abattant. le tout pour 
19000 F HT. En option, on peut dis- 
poser dans ce meme coffret d une 
imprimante table tragante de 115 
mm (5000 F HT interface comprise), 
avec 16 tailles de caracteres. 1 a 80 
caracteres par ligne, 4 sens d'ecri- 
ture. 4 couleurs. 16 types de pointil- 
les, trace des axes X-Y. deplace- 
ments absolus ou relatifs. II y a aussi 
de la place pour deux lecteurs 140 K 
en demi-hauteur. ou un lecteur 5 
pouces 1 MO ou un disque dur 5 
MO. 

Toutes les cartes Apple peuvent etre 
montees dans les connecteurs du 
systeme. 

Au rayon des O.S. 

Vous avez bien sur reconnu les Ope- 
rating Systems et non les travailleurs 
a la chaine (fut-ce une chatne de 
traitement). 



Prodos va donner un coup de fouet 
a votre Apple II. Ce nouvel O.S. de- 
vrait etre plus rapide. laisser plus de 
place en memoire en se logeant dans 
la carte langage de 1' Apple 11+ ou 
dans les 16 K supplementaires de 
1' Apple lie, et surtout ne plus limiter 
les volumes aux sempiternels 140 K 
du DOS 3.3. 

II sera facile d'utiliser un disque dur 
ou des disquettes de plus grande ca- 
pacity. La compatibility avec 1" Apple 

III sera grandement amelioree. D'au- 
tres ameliorations de performances 
sont attendues grace a Prodos. Je 
cite Apple : 

"... des applications avancees comme 
les reseaux. les graphiques profes- 
sionnels, et la gestion de bases de 
donnees evoluees". 

Chez le disquaire 

Autour d'Apple on parle precisement 
de la prochaine disponibilite du dis- 
que dur Profile sur Apple II. grace a 
l'interface Apple II - Profile (ce serait 
pour avril). II est prevu que ce disque 
soit partageable entre Prodos et Pas- 
cal (mais pas CP/M...). II est aussi 
question de disquettes plus musclees 
(capacity double des 5 pouces 1/4 
actuelles). 

Datalog lance le Symbfile, disque dur 
5 pouces 1/4, technologie Winches- 
ter, pour Apple II et III. II existe en 
5.25. 10.5, 21 et 42 MO. 

La guerre du floppy aura-t-elle lieu ? 
5 pouces 14 traditionnels ? 5 pouces 
1/4 demi-hauteur ? 3 pouces ? 3 
pouces 1/2 ? Les mini-formats conti- 
nued leur developpement. Par 
exemple. Hitachi annonce le 3 
pouces MD3. 500 KO, a moins de 
3000 F, avec controleur (standard 
Apple). Mais les disquettes coutent 
relativement cher : 65 F piece. Apres 
experimentation, un banc d'essai 
pourra figurer dans un prochain nu- 
mero de Pom's (Acer Micro). 

Apple, de son cote, a adopte le 3 
pouces 1/2 au standard Sony, qui 
equipe Mac, et maintenant Lisa. In- 
discretion... il devrait etre propose 
sur la "ligne 6502" vers la fin de 
l'annee. 

BIMP annonce une disquette 5 
pouces 1/4 de 1 MO formate (1,6 
MO non formate), compatible 
MEM. DOS, DOS 3.3. CP M et Pas- 
cal. Pour 13000 F TTC. 



Impression 

Les cartes "buffer" d'imprimante de- 
viennent monnaie courante. Pentaso- 
nic propose 2 modeles : 16 K et 128 
K. aux prix respectifs de 2310 F et 
3970 F. De son cote. MID propose 
64 K pour 2200 F. tandis qu'il en 
coute 1750 F pour avoir 16 K chez 
Acer Micro. 

Chez Apple, la nouvelle Imagewriter 
remplace. sur la gamme 68000. I'ac- 
tuelle Dot Matrix. Elle est egalement 
proposee sur la gamme 6502. 

Une naissance aussi chez Seikosha : 
dans la famille GP, la toute petite GP 
50 A. graphique. pour 1250 F. 

Nous n'avons pas encore pu essayer 
la nouvelle Canon couleur, ni la TRS 
80 CGP 220 sept couleurs, toutes 
deux a jet d'encre, et dont on dit 
merveilles. 

Signalons en vrac la FX100. haut de 
gamme Epson, la Gemini 10 X et la 
Delta 10 de Hengstler. Facit propose 
une haut de gamme matricielle de 
quality courrier. la 4570 (2 versions a 
40800 et 33700 F) et le "petit" mo- 
dele 4512. avec de bonnes fonction- 
nalites graphiques (pour 10080 F 
TTC). 

Communiquons 

On peut, en particulier. communi- 
quer avec Apple-Tell (voir ci-dessus 
la Pomme d'Or) qui offre pour 5900 
F. HT: 

• un modem avec cinq vitesses de 
communication (half duplex en 
600 et 1200 bauds et full-duplex 
en 300 bauds - canal de retour 5 
et 75 bauds (norme Minitel) en 
1200 bauds - six modes de fonc- 
tionnement CCITT (normes fran- 
caises et europeennes). cinq 
modes de fonctionnement "Bell" 
(normes US), une grande variety 
de formats et des boucles de jonc- 
tion analogique et digitale (types 2 
et 3) permettant le test de la carte, 
de la connexion au reseau. a la 
ligne telephonique et a un modem 
distant. 

• une interface reseau avec circuit 
de numerotation decimale pro- 
grammable et detection de sonne- 
rie selon les formats US et euro- 
peens. 

• un generateur Videotext : buffer 
de 4 Ko, ecran de 24*40. gestion 
complete du protocole Teletel. 



Pom's n° 11 



• une interface video avec sortie sur 
prise Peritel, haute qualite couleur, 
N/B Videotext et N/B Apple stan- 
dard avec commutation automati- 
que. 

• le "firmware" : interface Apple, 
valeurs par defaut en memoire 
EPROM permettant de mettre jus- 
qu'a 256 criteres differents a la 
mise sous tension. 

• une disquette d'accompagnement 
et une documentation claire ren- 
dant ces possibilites accessibles au 
non-specialiste et contenant une 
emulation du programme terminal 
Minitel. 

Apple Bus se precise... pour fin 84. 
16 materiels Apple (tous sont accep- 
tes), partage de ressources (impri- 
mante. disque de grande capa- 
cite....), 250 Kbauds sur 300 metres. 
Les moyens de connexion sont deja 
integres dans Mac et Lisa. 

Dialogue 

Pour "parler" a votre Apple II. le cla- 
vier d'origine va devenir un jour 
aussi demode que Test le DOS 3.3 ! 

Si vous tenez a la solution clavier, un 
clavier avec bloc numerique separe 
vous coutera environ 1000 F. 

Touchez votre ecran avec un crayon 
lumineux. Cette baguette magique. 
avec son logiciel. se trouve aux envi- 
rons de 5000 F. 

Plus rustiques. mais aussi beaucoup 
moins chers. les "joysticks" - disons 
manches a balai. 11 en existe de nom- 
breux modeles entre 200 et 800 F. 

Vous pouvez preferer un systeme 
plus sophistique comme le Robo 
1000 de Sideg (ensemble levier de 
commande et logiciel de dessin as- 
sists par ordinateur). mais pour 7940 
F TTC. 

Une mini tablette graphique vous 
permet aussi de communiquer aise- 
ment avec votre Apple favori. N'en 
n'attendez pas des miracles de preci- 
sion, mais elle ne coute que 1000 F 
environ. Un peu plus ambitieuse, 
une serie Koala Pad. a partir de 
1300 F chez SPID Micro. G3I pro- 
pose un systeme original : Graphis- 
cop. fonctionnant avec un crayon a 
bille... et quand meme un petit appa- 
reil (990 F TTC). 

Enfin, par une astucieuse, mais cou- 
teuse adaptation, on commence a 
pouvoir transformer son ecran banal 
en ecran tactile. 

Tout ceci, bien entendu, en atten- 
dant la desormais traditionnelle souris 
... annoncee par Apple. Je cite : 

"...inauguree avec Lisa, la generalisa- 
tion de la technologie graphique 
souris a I'ensemble des systemes 

hhh mmmmm 



Apple...". Indiscretion : ce serait pour 
avril, et il en couterait moins de 1000 
F, interface et logiciel inclus. 

Si vous preferez des echanges par 
capteurs et actionneurs. Creatic vous 
propose un systeme d'interfagage 
(CM 1000) avec nombreuses cartes 
d'interface analogiques et numeri- 
ques. 1600 F TTC le coffret. 600 a 
900 F par carte, 350 F pour un cap- 
teur. 

Et les logiciels ? 

La tendance forte est la francisation 
des logiciels generaux Anglo-Saxons. 
Les premieres realisations etaient es- 
sentiellement des traductions de la 
documentation. De plus en plus au- 
jourd'hui. c'est le logiciel lui-meme 
qui est francise. 

Un bon exemple est donne par 
Apple Writer II. II montre un effort 
reel : tous les messages sont rediges 
en Frangais; il montre aussi une li- 
mite : les mnemoniques de 
commande n'ont pas change, et 'L' 
veut toujours dire "charger"... 

Un nouveau-ne dans la famille PFS : 
PFS Write, traitement de texte pou- 
vant exploiter les fichiers. tableaux et 
graphiques de ses afnes. II nous a ete 
presente a la boutique Galilee Infor- 
matique. 

Toujours en traitement de texte, Mi- 
cropro diffuse Wordstar 3.3 (deja 
present au SICOB), avec fusion de 
fichier et utilisation rationnelle de 
touches de fonction. II existe pour 
Apple II et III et pourra prochaine- 
ment etre associe a Starindex (gene- 
rates de table des matieres) et Star- 
bust ( generateur de menus). . 

En version 2. le traitement de texte 
Epistole de Micro Assistance est dote 
de possibilites de calcul. II fonctionne 
sur Apple II et Apple He. De son 
cote, Gutenberg de Micromation Li- 
mited (analyse detaillee dans ce nu- 
meral permet d'utiliser. de compo- 
ser, des graphismes originaux tels 
que symboles mathematiques. chimi- 
ques, electroniques. etc. 

En gestion de fichier. Logifiche 2 est 
developpe par la CFNI. Nombreuses 
possibilites de calcul, de traitements 
automatiques, d'editions et de re- 
cherche multicriteres (1420 F, pour 
Apple II et lie). 

Cote graphique, Charts Unlimited 
permet de creer des schemas, graphi- 
ques, organigrammes, plans... Simple 
a utiliser. facile a apprendre, ce logi- 
ciel n'est a notre connaissance pas 
encore commercialise en France. 
Produit par Graphware. distribue en 
Europe par Transatlantic Software. 
Prix US : 195 $. Une analyse detail- 
lee sera proposee dans le prochain 
numero de Pom's. 



B.I. P. distribue de son cote plusieurs 
programmes graphiques : Koalapad 
(moins de 1500 F TTC pour logiciel 
+ tablette graphique) est une "ar- 
doise magique" pour dessiner. decal- 
quer. colorier, de fagon simple mais 
cependant riche et variee. TGS 
(compatible avec le precedent. 1695 
F) est un bon logiciel pour la creation 
de dessins animes. 

A quand un "Lotus 1 2 3" ou un 
"Visi On" sur Apple II ? Sans doute 
aussi pour avril. sous forme d'un lo- 
giciel integre (gestion de fichier +ta- 
bleur + traitement de texte) 
commande par souris. exigeant 64 K 
supplementaires. Ce logiciel sera pro- 
pose par Apple sur la ligne 6502. 

Cote Apple ///, SANE (Standard 
Apple Numeric Environment) permet 
des traitements numeriques precis. 
Apple / Pascal Toolkit est un nouvel 
outil d'aide au developpement de 
programmes. 

Une initiative interessante d'Axone : 
l'etablissement d un "catalogue" de 
logiciels professionnels dont la vente 
est assortie d'une formation. Dans ce 
catalogue, pour Apple II, on releve : 

- Decisionnel graphique de Adde 
Marketing (analyse dans le precedent 
numero de Pom's). 

- Incredible Jack de Business Solu- 
tions (certains font la fine bouche. 
mais c'est interessant pour qui n'a 
pas d'ambitions demesurees). 

Ou vont les logiciels ? 

Selon une enquete de Computer 
Merchandising International (janvier 
84). les "best sellers" dependent lar- 
gement du pays. Par exemple. I'utili- 
sateur Allemand d' Apple porte essen- 
tiellement son choix sur Multiplan, 
Wordstar et Visicalc. L'Anglais est 
sensible au charme de Multiplan et 
Wordstar (comme son collegue ger- 
main) mais aussi d'Applewriter et 
d'Omnis. Le Frangais papillonne de 
Multiplan a Visicalc, de Dbase II a 
CX Multigestion, PFS et Omnis. sans 
negliger Applewriter. 

De source Apple generalement bien 
informee, revolution des logiciels ge- 
neraux se dessine de la fagon sui- 
vante : 

• Pour les logiciels scientifiques et 
techniques, accent sur le DAO 
(dessin assiste par ordinateur), le 
traitement de texte avec caracteres 
speciaux (voir notre analyse de 
Gutenberg), et l'interfagage avec 
les logiciels graphiques. 

• Cote gestion, le graphique souris, 
le pont des logiciels integres, un 
effort considerable sur documenta- 
tion et formation. 

• L' education cherche des logiciels 
d'EAO commodes (Logo, Super- 



Pom's n° 11 



pilot. EVA), a besoin de produits 
francais originaux et s'oriente vers 
la variete du dialogue : video-dis- 
que. tablette graphique. joystick,... 

• L'utilisateur "familial" recherche 
quelques produits simples et bon 
march'e : un traitement de texte a 
500 F. une collection de modeles 
financiers a 400 F et un logiciel 
graphique couleur a 500 F (plus 
des jeux et des programmes edu- 
cates). 

A signaler qu'Apple, en concertation 
avec la Datar, a choisi la ville de 
Metz pour installer son centre fran- 
cais de developpement et d'adapta- 
tion de logiciels (ouverture premier 
semestre 1984). 

Ou fairc son marche ? 

Une nouvelle boutique lancee a 
grand renfort de publicite : le Multis- 
tore de Hachette. recemment ouvert 
a 1' Opera. Micro-ordinateurs. calcu- 
lettes. librairie. video et son... J'y ai 
vu un Apple II avec un lecteur de 
disquettes et un ecran N. et B.. ni 
plus ni moins bien traite que la ving- 
taine de modeles exposes. La pro- 
grammatheque est bien fournie en 
logiciels de jeux. mais semble beau- 
coup plus discrete sur les logiciels 
professionnels. 



Chez International Computer, des 
services personnalises aux acheteurs 
de micros (dont Apple) : extension 
de garantie a 2 ans renouvelables. 
service de maintenance sur place 
(Paris et couronne), livraison a domi- 
cile des consommables. 

Pentasonic propose un depannage 
"immediat" ou le pret d'un materiel 
equivalent, ainsi qu'une formule 
d'essai de logiciel a domicile. 

JCR pratique une autre formule : le 
"libre-service" du logiciel. 

Micro Case se pose en specialiste de 
la boutique d'occasions selection- 
nees. 

Adresses 

Acer Micro - 42 rue de Chabrol - 

75010 Paris - Tel 770.28.31 

Adde Marketing - 27 rue des 

Vignes - 75016 Paris - T«l 527.90.17 

Axone - Tour Neptune - 92086 

Paris La Defense - Tel 773.63.64 

BIMP - 20 rue Servient - 69003 

Lyon - Tel (7)860.84.27 

BIP - 22 rue Joseph Dijon - 75015 

Paris - Tel 255.44.63 

Business Solutions - 60 East Main 

street - Kings park - Middletown - 

Ohio 45042 - USA 

Controle X - Tour Maine-Montpar- 



nasse - 33 avenue du Maine - 35755 

Paris Cedex 15 - Tel 538.98.87 

Datalog - 87 rue Lemercier - 75017 

Paris - Tel 228.14.18 

G3I - 5 passage Courtois - 75011 

Paris 

Galilee Informatique - 45 rue Ga- 
lilee - 75116 Paris - Tel 723.33.30 
IEF - 228 rue Lecourbe - 75015 
Paris - Tel 828.06.01 
International Computer - 29 rue 
de Clichy - 75009 Paris - Tel 
285.24.55 

JCR - 58 rue Notre-Dame de Lo- 
rette - 75009 Paris - Tel 282.19.80 
Micro-Assistance - 66 rue Casta- 
gnary - 75015 Paris - Tel 530.05.28 
Micro Case - 46 rue de La Roche- 
foucault - 75009 Paris - Tel 
874.05.20 

MID - 51 bis avenue de la Republi- 
que - 75011 Paris - Tel 357.83.20 - 
et. a partir de mars, nouvelle adresse 
: 96 boulevard Richard Lenoir - 
7501 1 Paris - Tel sans changement 
Pentasonic - 5 rue Maurice Bourdet 
- 75016 Paris - Tel 336.26.05 
Sideg - 170 rue Saint Charles - 
75015 Paris - Tel 557.79.12 
SPID Micro - 39 rue Victor-Masse - 
75009 Paris - Tel 281.20.02 
Transatlantic Software - Branch 
Lotspeich - PO box 29561 - Cincin- 
nati - Ohio 45229 - USA _ 



Un "type-ahead" en Applesoft 

Olivier Herz 



Ceux d'entre vous qui ont pratique 
Visicalc ou le Pascal Apple ont sans 
doute remarque que, quand ils ta- 
pent des touches pendant que la ma- 
chine "reflechit", ces touches sont 
prises' en consideration. Nous vou- 
lons prouver dans ce petit article que 
la meme chose est possible en Ap- 
plesoft. 

Premier probleme : 
stocker les touches 

II s'agit de recuperer le plus rapide- 
ment possible les touches enfoncees 
et de les stocker dans une table. 
Pour cela. il faut operer un "aiguil- 
lage" dans 1'interpretation des pro- 
grammes Applesoft. Comme ce Ian- 
gage est generalement en ROM, le 
plus commode est de modifier sa 
seule routine en RAM, a savoir 
CHRGET : 



00B1-E6 B8 CHRGET INC TXTPTR 
00B3-D0 02 BNE CHRGOT 
00B5-E6 B9 INC TXTPTR +1 
00B7-AD YY XX CHRGOT LDA 
$XXYY 

00BA-C9 3A CMP #' :' 
00BC-B0 OA BCS FIN 
00BE-C9 20 CMP #' ' 
00C0-F0 EF BEQ CHRGET 
00C2-38 SEC 
00C3-E9 30 SBC # - 0' 
00C5-38 SEC 
00C6-E9 DO SBC #$D0 
00C8-60 FIN RTS 

Cette routine, qui est un modele 
d'astuce. incremente TXTPTR ($B8- 
B9) et charge l'accumulateur A avec 
TXTPTR. De plus, Z est mis a 1 si A 
est ":" ou une fin de ligne ($3A ou 
$00). Et C est mis a si A est un 
nombre ASCII ("0" a "9"). 

Ce que nous allons faire. e'est mettre 
un "aiguillage" JMP AHEAD au 



debut de CHRGET en direction de la 
routine AHEAD qui teste si le clavier 
est enfonce et, le cas echeant. stocke 
la touche dans une table (excep- 
tions : CTRL-X annule le buffer de 
stockage des touches: CTRL-C fait 
de meme, mais ne remet pas le cla- 
vier a zero, afin de laisser interrom- 
pre eventuellement le programme). A 
la fin de cette routine, on incremente 
TXTPTR et on saute a CHRGOT. 
Quand la table de stockage est 
pleine. chaque fois qu'on ajoute une 
touche supplemental, la touche la 
plus ancienne est "oubliee" faute de 
place. 

NB - Les specialistes auront remar- 
que que le logiciel MEM/DOS lui 
aussi, pour permettre ses comman- 
des LET... a besoin d'utiliser un ai- 
guillage dans CHRGET. Contraire- 
ment a ce que Ton pourrait croire, ce 
detour dans une routine tres fre- 



Pom's n" 11 



quemment utilisee commc CHRGET 
ralentit tres peu le programme. 

Second probleme : 
recuperer les touches 

Cette fois-ci. on fait un "aiguillage" 
dans la routine d'entree de caracte- 
res. On recupere l'adresse de cette 
routine en $AA55-AA56 ($6A55- 
6A56 pour un 32K), ou on la rem- 
place par l'adresse de notre routine 
de recuperation du "type ahead". 
Dans cette routine, si la table de sto- 
ckage est vide, on saute a la routine 
d'entree de caracteres. Sinon. on re- 
cupere une touche de la zone de sto- 
ckage. 

Attention : le DOS ne doit pas 
avoir ete deplace sur la carte lan- 

gage. 

NB : on ne peut pas utiliser $38-39 
au lieu de $AA55-AA56, dans le cas 
d'un aiguillage, comme on le fait 
dans le cas de la reprogrammation 
de la sortie de caracteres. 

Gestion de la table de 
stockage 

Cette table est situee a la fin de la 
routine. Elle est de type FIFO (first 
in-first out : premier entre-premier 
sorti), a differencier d'une pile, de 
type LIFO (last in-first out : dernier 
entre-premier sorti). On utilise pour 
cela 2 pointeurs. qui se deplacent de 
facon circulaire dans la table : s'ils 
debordent a droite, ils reviennent a 
gauche. Le pointeur DEBUT, comme 
son nom l'indique, represente le 
debut du stockage. et le pointeur FIN 
represente la position faisant suite a 
la fin du stockage. Par consequent, 
quand ces pointeurs sont egaux, il 
n'y a pas de touches stockees. Enfin. 
on se doute que l'adressage des va- 
leurs contenues dans la table se fait 
par indexation avec ces deux poin- 
teurs. Par consequent, la table ne 
peut avoir plus de 256 caracteres. 

Utilisation et limitations 

Ce programme peut etre assemble 
n'importe ou et n' utilise aucune me- 
moire en dehors de lui-meme. Nous 
fournissons une version assembiee a 
l'adresse 768 ($300) avec une table 
de 60 caracteres. 

Pour le connecter, il suffit de le 
BRUNner ou de faire un BLOAD et 
CALL 768. Pour le deconnecter, il 
suffit de reprogrammer la routine 
d'entree de caracteres, ou de faire un 
PRINT CHR$(4)"IN#0", ou encore 
d'appuyer sur RESET. En fait, on ne 
deconnecte que la recuperation du 
"type ahead", et non le stockage des 
touches qui continue, mais reste 



LISA 2.5 



1 ;{***i*if*«i*i***tKt*<ii« 



* 
* 

HERZ POUR POM'S * 
* » 
sif«**H**«*«*****«*i**«m 



2 ;* 

3 j* TYPE AHEAD EN APPLESOFT 

4 i» 

5 5* (C) 0. 

6 ;* 
7 
8 
9 
10 
il 
12 
13 

14 CHR6ET 

15 CHR60T 
U TXTPTR 

17 KBD 

18 KBDSTRB 

19 DOSKSUL 

20 i 



Employons bien les BOOLEANS 

On lit trop souvent dans les program- 
mes Pascal des lignes telles que : 
IF X=l THEN BON := TRUE ELSE 
BON : =FALSE 

directement derivees du BASIC. 

Ce type de ligne s'ecrit plus simple- 
ment en Pascal avec : 
BON:= X = 1; 



ORG 1300 
OBJ «300 

ADRESSES UTILISEES 



EPZ «i 
EPZ *B7 
EPZ *B8 
EQU «C000 
EQU 4C010 
EQU IAA55 



jLECTURE D'UN OCTET DU PROGRAMME 
; I DEN SANS INCREMENT DE TXTPTR 
jPOJNTEUR DU PROGRAMME 
; CLAVIER 
jRAZ CLAVIER 
;$6A55 POUR 32K 



21 
22 



AIGUILLAGE DE CHRGET 



23 


LDA H4C 


jJMP AHEAD EN *B1 


24 


STA CHRGET 




25 


LDA SAHEAD 




26 


STA CHRGET+1 




27 


LDA /AHEAD 




28 


STA CHRGET+2 




2? i 






30 ; 


AI6UILLA6E ENTREE CARACTERES 


31 i 






32 


LDA DOSKSUL 


;0N ST0CKE L'ANCIEN 


33 


STA ANCIEN+1 




34 


LDA DOSKSUL*! 




35 


STA ANCIEN+2 




34 


LDA IRECUP 


;AI6U1LLA6E DU KSUL 


37 


STA DOSKSUL 




38 


LDA /RECUP 




3? 


STA DOSKSUL* 1 




40 


LDA FIN 




41 


STA DEBUT 




42 


RTS 




43 ; 






44 ; 


REMPLISSA6E DU TYPE AHEAD 


45 | 






44 AHEAD LDA KBD 


jTOUCHE ENFONCEE? 


47 


BPL >1 




48 


CMP H83 


iCTRL-C 


4? 


BEQ >4 




50 


BIT KBDSTRB 




51 


CMP H98 


iCTRL-X 


52 


6NE )3 




53 *4 


LDA FIN 


;QN ANNULE LE BUFFER 


54 


STA DEBUT 




55 


JMP >1 











Pom's n° 11 



56 '3 


STX STOCKEX 




57 


LDX FIN 




58 


STA TABLE ,X 


jON STOCKE LA TOUCHE 


5? 


JSR INCRX 




60 


STX FIN 




61 


CPX DEBUT 


i BUFFER PLEIN? 


62 


BNE >2 




63 


JSR INCRX 




64 


STX DEBUT 




65 '2 


LDX STOCKEX 




66 '1 


INC TXTPTR 


;CODE DU DEBUT DE CHRGET <$Bi-*B6) 


67 


BNE )0 




68 


INC TXTPTR* 1 




69 '0 


JMP CHRGOT 




70 ; 






71 ; RECUPERATION DU TYPE AHEAD 


72 i 






73 RECUP 


STX STOCKEX 




74 


LDX DEBUT 




75 


CPX FIN 


j BUFFER DE TYPE AHEAD VIDE? 


76 


BNE >0 


77 


LDX STOCKEX 




78 ANCIEN 


JMP 10000 


;0N SAUTE A L'ANCIEN KSWL 


7? '0 


STA <*28),Y 


;-> NOP NOP POUR CERTAINS KSWL 


80 


LDA TABLE ,X 


|0N RECUPERE UNE TOUCHE 


81 


JSR INCRX 


82 


STX DEBUT 




83 


LDX STOCKEX 




84 


RTS 




85 ; 






86 ; 1NCREMENTE X CIRCULAJREMENT 


87 j 






88 INCRX 


I NX 




89 


CPX ITAILLE 




90 


BNE >0 




91 


LDX 10 




92 '0 


RTS 




93 : 






94 ; OCTETS DE STOCKAGE 




95 ; 






96 STOCKEX 


HEX 00 


;POUR NE PAS PERDRE LE REGISTRE X 


97 DEBUT 


HEX 00 


jINOICE DU DEBUT DU STOCKAGE 


98 FIN 


HEX 00 


;IND1CE DE LA FIN DU STOCKAGE 


99 TAILLE 


EPZ 60 


; TAILLE DU TABLEAU DE STOCKAGE 


100 TABLE 


DFS TAILLE 


;TABLEAU DE STOCKAGE A LA FIN DU PROGRAMME 


101 


END 





Recapitulation 


0338- 
0340- 


09 AD 

5F 03 


92 
8E 


03 8D 
90 03 


n 

AE 


03 
92 


4C 
03 




0348- 


9D 93 


03 


20 88 


03 


8E 


92 




0350- 


03 EC 


9! 


03 DO 


06 


20 


88 


0300- A9 4C 85 Bl A9 29 85 B2 


0358- 


03 8E 


91 


03 AE 


90 


03 


E6 


0308- A9 03 85 B3 AD 55 AA 8D 


0360- 


B8 DO 


02 


E6 B9 


4C 


B7 


00 


0310- 77 03 AD 56 AA 80 78 03 


0368- 


8E 90 


03 


AE 91 


03 


EC 


92 


0318- A9 68 8D 55 AA A9 03 8D 


0370- 


03 DO 


06 


AE 90 


03 


4C 


00 


0320- 56 AA AD 92 03 8D 91 03 


0378- 


00 91 


28 


BD 93 


03 


20 


88 


0328- 60 AD 00 CO 10 31 C9 83 


0380- 


03 8E 


95 


03 AE 


90 


03 


60 


0330- FO 07 2C 10 CO C9 98 DO 


0388- 


E8 EO 


3C 


DO 02 


A2 


00 


60 



ignore. Pour deconnecter aussi le 
stockage, il suffit de retablir 
CHRGET, soit en reinitalisant I' Ap- 
plesoft (avec FP. CTRL-B ou 3D3G 
depuis le moniteur). soit en creant 
une routine en assembleur qui reta- 
blit CHRGET (mais surtout pas avec 
des POKEs ! Pourquoi ?) 

Ce "type ahead" est pratiquement 
compatible avec tout programme Ap- 
plesoft a quelques restrictions pres : 

- II ne doit bien sur pas se trouver au 
meme endroit qu'une routine assem- 
bleur utilisee par le programme (en- 
tree par BLOAD. par DATA et 
POKE, ou bien par la routine de 
S.H. LAM. ou une routine "cachee" 
a la fin du programme). 

- Si le programme Applesoft lit direc- 
tement le clavier par PEEK(- 16384), 
il est evident que le "type ahead" ne 
sera pas pris en compte. mais atten- 
dra le prochain GET ou INPUT, ou 
la fin du programme et le retour au 
niveau de commande de 1' Applesoft, 
toutes operations qui utilisent la rou- 
tine d'entree de caracteres. 

- Si le programme Applesoft repro- 
gramme la sortie de caracteres. il faut 
refaire un CALL 768 apres cette re- 
programmation (si 768 est l'adresse 
ou l'on a assemble le "type ahead"). 
Dans la majorite des cas, il ne devrait 
pas y avoir de conflit entre la routine 
reprogrammee et le "type ahead". 

- Ce "type ahead" est totalement al- 
lergique a PLE : il ne marche pas si 
PLE est present. De plus, si le "type 
ahead" est actif, le chargement de 
PLE peut conduire a une catastro- 
phe. 

- Les touches sont stockees au cours 
d'un CHRGET c'est-a-dire quand 
l'interpreteur progresse dans le pro- 
gramme. II est done inutile d'esperer 
stocker des touches pendant les 
appels a des routines assembleur ou. 
ce qui revient au meme. pendant un 
LIST, un PRINT d'une chatne de ca- 
racteres, ou encore un ordre DOS..., 
toutes ces routines n'utilisant pas 
CHRGET. 

- Attention a ne pas initialiser deux 
fois consecutives le "type ahead" : 
sinon l'aiguillage de la routine d'en- 
tree de caracteres va se "mordre la 
queue" et il faudra appuyer sur 
RESET. . 

Remarque : j'ai decouvert apres 
avoir redige cet article que le Diversi- 
DOS. un systeme d' exploitation ra- 
pide du commerce, possede une rou- 
tine de "type ahead" utilisant la 
meme approche, mais qui marche 
aussi sous DOS et en mode moni- 
teur. Bien entendu. ce programme 
est plus gros et plus complexe. 



Pom's n° 11 



Courrier des lecteurs 

Olivier Herz 



1 - Dans le programme Hello de la 
page 26 (Pom's 6). Je n'ai pas reussi 
a fake tourner le programme. 
Comment definissez-vous "*AF : 
FEOC"? 

2 - Avec la fonction EXEC, INIT me 
donne une disquette initialisee qui ne 
rend plus la main a i'ecran : curseur 
rectangle clignotant. 

Andre Van Eggelpoel - 4 rue Porche- 
fontaine - 94370 Sucy en Brie 

1 - L'adresse $0CFE. qu'on met en 
SAF.BO (par *AF:FE OC) dans le 
programme HELLO a ete trouvee en 
assemblant le programme : c'est 
l'adresse de la fin du programme as- 
sembleur. En mertant cette adresse 
en $AF,B0 qui est l'adresse de la fin 
du programme Applesoft, on peut 
cacher le programme assembleur 
dans le programme Applesoft. 

2 - INIT ne fait pas de bien belles 
choses avec un fichier EXEC, car ce 
fichier va chercher les commandes a 
effectuer sur la disquette qui. apres 



initialisation, ne contient que des 

"0". 



Je n'ai aucune formation informati- 
que. Je pourrais etre un Appleomane 
presque heureux. mais void que se 
pointe le langage machine, dont je 
ressens a travers la lecture de Pom's 
I'utilite et la necessite. Je m'attele a 
la tache avec perseverance. J'avoue 
que les resultats ne sont pas toujours 
encourageants et regrette I'absence 
de livres ou de manuels assez clairs 
pour etre compris d'emblee par les 
neophytes... Cherchant a initialiser 
ma Seikosha GP 100A en langage 
machine, j'ai essaye : 

1 - de mettre directement en $36- 
37 : 00C1: I'imprimante s'initialise ef- 
fectivement. mais se borne a impri- 
merie "*" du moniteur: 

2 - de faire un petit programme, qui 
helas donne le mime resultat que la 
tentative precedente : 

300: IDA #00 
LDX#C1 



STA $36 
STX $37 
RTS 
300G 

3 - en remplagant le RTS ci-dessus 
par BRK. I'imprimante reagit toujours 
en imprimant "*" ainsi que le 
contenu des registres qui apparais- 
sent a la suite du lancement de ce 
microprogramme. puis plus rien. 

L 'ennui, c'est que depuis mes essais 
je n 'arrive plus a initialiser I'impri- 
mante avec le classique "1 CTRL-P" 
a partir du moniteur. alors que le 
"PR#1 " en Basic est toujours opera - 
tionnel. 

R. Burger - 67. rue Chauzy - 51800 
Ste. Menehould 

En reponse a votre lettre. voici quel- 
ques explications sur la reprogram- 
mation des entrees-sorties sur 1' Ap- 
ple. 

a) Lorsque le DOS est absent : 

Les memoires CSW ($36-37) et 
KSW ($38-39) contiennent l'adresse 
des routines de sortie et d'entree de 
caracteres. Par defaut, a 1' initialisa- 
tion, ces adresses sont celles des rou- 
tines du moniteur COUT1 ($FDF0) 
et KEYIN ($FD0C). Pour changer les 



DONNEZ DU REPONDANT A VOTRE APPLE 



IMAGOL presente 

MEM/TERM 



MEM/TERM est un logiciel de communication transformant un APPLE en terminal 
d'un APPLE II ou III (transmission par ligne directe ou reseau P et T) 



Execution de programmes a distances. 
• tous ies programmes sous MEM/DOS 6 502). 
lintenance, diagnostic a distance. 
Correction de programmes a distance. 
Demonstration de programmes a distance. 
Edition a distance, etc... 




„OUVEWJ 



CONFIGURATIONS REQUISES 



Posle Principal : 

1 unite de disque, une carle Super-Serial. 
nodem electrique ou acouslique. 



Posle Terminal : 
1 unite de disque, une carte Super-Serial. 
1 modem electrique ou acoustique avec porteuse. 
Transmission par le reseau commute. 



REVENDEURS CONSULTEZ-NOUS. 




IMAGOL 

L'artisan de votre reussite en micro-informatique professionnelle. 



1 d 5, rue GUTENBERG, 
75015 PARIS. 
Tel.: (1) 577.59.39. 



Pom's n° 11 



routines d' entrees-sorties, il suffit de 
changer CSW ou KSW. soit par des 
POKEs, soit par un programme as- 
sembleur comme le votre. 

NB - Pour deconnecter le DOS, il 
suffit de faire ":PR#0:IN#0" sous 
1" Applesoft (cf. Pom's 7 page 26 : 
trues et astuces). 

b) Lorsque le DOS est present : 

CSW et KSW contiennent les adres- 
ses des routines du DOS qui s'oc- 
cuppent des entrees-sorties ($9EBD 
et $9E81 pour un DOS 48K; rempla- 
cer $9E par $5E pour un 32K).Ces 
routines font, apres traitement par le 
DOS, un saut aux veritables routines 
d'entree et de sortie (KEYIN et 
C0UT1 par defaut apres le boot), 
dont le DOS stocke les adresses en 
SAA53-AA54 (vrai CSW) et $AA55- 
AA56 (vrai KSW). Notons que $AA.. 
devient $6A.. pour un DOS 32K. 

II ne suffit plus, pour changer les en- 
trees-sorties, de changer CSW et 
KSW. car le DOS "trafique" ces 
adresses. Mais, au contraire. il y a 
deux solutions possibles equivalen- 
tes: 

- on fait suivre le changement de 
$36-37 ou $38-39 par un appel a 
INTDOS (CALL 1002 en Applesoft 
ou JMP $3EA en assembleur), qui 
est la routine du DOS qui reprend en 
main les entrees-sorties. Alors, le 
DOS retablit "ses" adresses ($9E81 
et $9EBD) en CSW et KSW et remet 
les valeurs que l'utilisateur y auait 
mises. en $AA.. Cette methode pre- 
sente l'interet de fonctionner en 48K 
ou 32K. 

- on change directement les valeurs 
des "vrais"' CSW et KSW ($AA..). 
Des lors. cela n'a plus rien d'eton- 
nant que vos essais ne marchent pas. 
De plus, votre remarque sur "1 
CTRL-P" et "PR#1" s'explique tres 
bien : faire "1 CTRL-P" depuis le 
moniteur ou ":PR#1" pour I' Apple- 
soft (voir Pom's 7 page 26 pour l'uti- 
lite des deux-points) ne fail que 
changer CSW et done ne marche 
que si le DOS est deconnecte ( de 
meme, "1 CTRL-K" et ":IN#1" ne 
changent que KSW). Au contraire. le 
"PR#1" et le "IN#1" du DOS. que 
Ton peut faire sous Applesoft aussi 
bien que sous moniteur, font les 
choses correctement comme indique 
ci-dessus. 



Pourriez-vous me dire s'il existe une 
solution pour depasser le nombre 
maximum de 105 titres au catalogue 
sur Apple ? Dans le cas qui m'inte- 
resse, il s'agit de /'exploitation d une 
multitude de petits fichiers en Ap- 
plewriter II. 

Docteur J.-C. Selosse - 1 avenue 
Carnot - 62120 Aire sur la Lys 



Malheureusement. il n'est pas possi- 
ble de mettre plus de 105 fichiers 
dans un catalogue, sauf a modifier la 
facon dont fonctionne le DOS. Ce 
que nous pouvons vous conseiller le 
cas echeant. e'est de regrouper plu- 
sieurs petits fichiers Applewriter en 
un seul. 

Vous mettez alors ".epO" au debut 
de chaque fichier. pour bloquer I'im- 
pression du fichier. Pour imprimer le 
texte correspondent a un de ces fi- 
chiers originaux. il suffira de rempla- 
cer ".epO" par ".epl" au debut du 
texte avant de lancer l'impression. 
Cette recette fonctionne avec Ap- 
plewriter II ou He.. 



J'ai bien regu le dernier numero de 
Pom's avec sa disquette. En essayant 
le calendrier sur Visicalc. j'ai eu la 
surprise de constater un decalage des 
jours de la semaine a partir du 3 jan- 
vier 84, alors que tout est normal 
pour une annee non bissextile. Je 
pense qu'il faut remplacer. dans la 
formule de J7. la cellule B6 par la 
cellule D6. afin d'obtenir : 

>J7: + N6 - L6 +(aIF(C« AND( 17. 
D6 < 3). 32, 33) 

Vous m'obligerez en confirmant le 
bien-fonde de cette correction. 

Claude Coviaux - 351 Bd. Pasteur - 
59500 Douai 

Vous avez parfaitement raison. ainsi 
que les nombreux autres lecteurs 
perspicaces ayant emis la meme re- 
marque : ce bug nous rassure d'ail- 
leurs beaucoup sur Olivier Herz. 
Nous en etions arrives a nous de- 
mander s'il n'etait pas un extra-ter- 
restre. Mais, puisque "errare huma- 
num est", tout est pour le mieux 
dans le meilleur des mondes ! 



L'informatique peut donner des ap- 
plications interessantes dans le do- 
maine de la physique. J'ai ecrit un 
programme qui visualise de maniere 
bien animee des ondes sur I'ecran. 
ainsi que leurs interferences. Les 
ondes sont definies par l'utilisateur a 
I'aide de fonctions. ou choisies parmi 
les vingt exemples proposes. Ce 
meme programme permet aussi de 
bien comprendre ce que signifie la 
mise a la vitesse v d'une onde sta- 
tionnaire, selon les transformations 
de Lorentz. Ceci met en evidence le 
rapport qui existe entre les ondes et 
la relativite. 

J'ai egalement ecrit un second pro- 
gramme sur les transformations de 
Lorentz, base de la relativite. II per- 
met de visualiser le comportement 
des regies et horloges des systemes 
de reference soumis a ces transfor- 



mations, et de mieux comprendre la 
signification de ces formules. 
La relativite et la mecanique des 
ondes ne sont pour vous que des 
formules compliquees ! Void des ani- 
mations et des visualisations qui vous 
permettront de mieux les aborder. 
Les programmes sont longs (16Ko 
chacun). le premier (Ondes et Relati- 
vite) etant pour moitie en langage 
machine, animation oblige. 

Serge Cabala - 13 rue du Pied de 
Roche - 25660 Saone 

Nous avons teste ces programmes 
qui sont maintenant bien au point, 
apres un va-et-vient avec leur auteur. 
Nous ne pouvons les publier dans 
Pom's, compte tenu de la place 
qu'ils prendraient et de leur specifi- 
cite. Contre un cheque de 100 FF 
pour remboursement de ses frais. 
l'auteur vous enverra les program- 
mes sur une disquette. avec deux ar- 
ticles d'accompagnement (14 pages). 
Jmce 



Lecteur tres interesse de Pom's, car 
utilisateur de I'Apple II. je suis tombe 
sur un os. On m'avait pose la ques- 
tion suivante : comment retrouver la 
position du curseur en HGR. pour 
balayer I'ecran en testant la presence 
d un dessin ? 

Exemple : un fichier de forme, ayant 
ete charge, dessine une figure, puis 
on ajoute des points avec un pro- 
gramme interactif. On veut lire 
I'ecran et savoir s'il y a un point en 
telle ou telle position de I'ecran. 

Y a-t-il des PEEKs pour cela ? 
Comment proceder ? 

Guy Fombonne - Montrouvin - 
Tauxigny - 37310 Reignac 

En reponse a votre lettre. voici quel- 
ques precisions sur la fonction SCRN 
haute resolution sur Apple II. Pour 
tout ce qui concerne les details tech- 
niques concernant l'organisation de 
la page haute resolution, je vous prie 
de vous reporter a mon article du 
numero 5 sur HAIFA (pages 41-42). 
dont une des fonctions est justement 
le SCRN haute resolution. Si vous ne 
possedez pas le numero 5, dont le 
second tirage est malheureusement 
epuise. il vous faudra attendre la pa- 
rution (tres prochaine) du recueil nu- 
mero 2 de Pom's. 

Eh non, il n'y a malheureusement 
pas de PEEK qui dit si un point de 
I'ecran est allume ! C'est beaucoup 
plus complexe. car un PEEK de 
I'ecran donne l'etat de 7 points ali- 
gnes. Voir l'article de JF Duvivier : 
les adresses du graphique (Pom's 1 
page 35 ou recueil page 24). 

La meilleure methode est d' employer 
un petit programme Applesoft dont 



Pom's n° 11 



■ [SYBEX - 



Gagnez 
u i n Voyage 




Oui, vous etes invites 
gratuitement a gagner 
un voyage d'une se- 
maine pour deux per- 
sonnes au pays de la micro-in # formatique. 

MICRO-EXPO, 9 e congres-exposition, carrefour interna- 
tional de la micro-informatique se tiendra a Paris, au Palais des 
Congres du 22 au 26 mai 1984. 

Visitez cette manifestation qui vous offrira la possibility 
exceptionnelle de rencontrer et de dialoguer avec plus de 
200 exposants francais et etrangers, de suivre une trentaine de 
conferences professionnelles et grand public : comment choi- 
sir son tableur electronique, les systemes integres : I - 2 - 3, 
Lisa, Visi/On, MS-WIN, choisir son micro, comptabilite et 
bases de donnees, Basic. ..Decouvrez les dernieres nouveautes 
dont certaines seront presentees en exclusivite. 

La multiplicity et la diversite des produits et techniques 
presentes a ce grand rendez- — 



Cl 1LPON RfPONSr ACOMI'UIIR II \ RfTOLRNIK \ SYBt\ - 
(. 8. impasse du Cure 7 r >lilB PARIS 

esi \oiio Kin- norticipaiton .iu tirage .iu sort <iui aura I 



vous annuel constitueront 

i * i i 

jjv^ui vuus lagQiauiic uuui_;ii ■ ,„„. ,.,„„,,. grjlllUl . ,., k . pr „ B ,,, mmr ,,,,,,, < ,,„■..„.,,. .-~ 

. „ _ . • . . I I I I un iwonwirt valcur 100 F T.T.I me dormant droit .1 reolrce perr 

investissement et de la bonne 
decision. 



ilion choix (.HU'niiim l<- r 

NDM 



nbredt- p\.vvs «l limile!'. 



:::::::: :: :: j;::::: 
:i: ::: :: :: ::: ::: 



EXPO 



1 1 |»inl i h<'<iuv de inn T 



70 



Pom's n° 11 



je joins le listing. II y a une astuce qui 
consiste a faire deux XDRAWs suc- 
cessifs d'une shape qui ne comporte 
qu'un point. Ces XDRAWs consecu- 
tifs s'annulent, mais si Ton releve la 
valeur du compteur de collision de 
1'instruction DRAW (memoire 234) 



apres le second XDRAW, on trouve 
1 si le point ou ont ete faits les 
XDRAWs etait allume. sinon. 

Bien sur, si le programme dans le- 
quel vous utilisez ce SCRN haute re- 
solution possede lui-meme une table 



de shapes, il faudra changer I'adresse 
de debut de table (232-233) a cha- 
que fois que vous utilisez une shape 
(pour indiquer soit la table du pro- 
gramme, soit la table du SCRN). 



2 REM " SCREEN" HAUTE-RESOLUT I ON 

3 REM =============== 

10 POKE 232,0: POKE 233,3: FOR I 
= 768 TO 773: READ J: POKE 
I , J : NEXT 
20 DATA 1,0,4,0,4,0 
30 POKE - 16297,0: POKE - 1630 



1,0: POKE - 16304,0: HOME : 
VTAB 20 : SCALE= 1 : R0T= 
40 PRINT : INPUT "POINT <X,Y> ? 
";X,Y 

50 XDRAW 1 AT X,Y: XDRAW 1 AT X , 

Y:SC = PEEK (234) 
60 IF SC = 1 THEN PRINT "ALLUME 

" : GOTO 40 
70 PRINT "ETEINT": GOTO 40 



Trace de courbcs en conversationnel 



Ce petit programme permet d'intro- 
duire au terminal une fonction dont 
la variable est X et de la tracer sur la 
premiere page graphique. Par exem- 
ple : 
SIN(X) 

EXP(-X)*SIN(X) 
(2*X)/(1-(X"2)) ... 

Lorsque vous rentrez une fonction. 
vous devez bien sur respecter une 
syntaxe comprehensible pour l'ordi- 
nateur (utilisez par exemple "3*X" et 
non "3X"). 

Pour qu'il soit possible d'introduire la 
fonction en conversationnel. il est ne- 
cessaire de "tokeniser" l'expression 
saisie au clavier : cette operation 



constitue l'objet du sous-programme 
assembleur B.TOKFON. Ce pro- 
gramme utilise deux routines de la 
ROM BASIC : le sous-programme 
GETLINE (en $D52C) qui corres- 
pond a la premiere partie de 1'ins- 
truction INPUT, c'est a dire a la sai- 
sie d'une chaine de caracteres 
stockee a partir de I'adresse $200 et 
terminee par un 0. Ceci permet d'uti- 
liser immediatement l'autre sous-pro- 
gramme TOKENI ($D56D - cf 
POM'S 7) qui tokenise la chaine pre- 
cedemment saisie. 

Cette chaine tokenisee est alors sto- 
ckee dans le programme BASIC a 
partir de I'adresse $080B qui corres- 
pond a I'adresse qui suit immediate - 



Gilles Mauffrey 

ment le signe = de la definition de la 
fonction. 

REMARQUE : si vous voulez modi- 
fier le programme n'oubliez pas de 
changer cette adresse ni de conserver 
une place suffisante pour la tokenisa- 
tion de la fonction. 

Le programme B.TOKFON contient 
une seconde partie qui permet le 
trace de fonction en inverse (blan- 
chissement de la premiere page gra- 
phique). 

Le programme BASIC peut etre 
agremenle d'une "Hard-Copy", et 
peut egalement etre assez facilement 
modifie pour realiser le trace de fonc- 
tions definies parametriquement. a 



1 REM FONCTION CONVERSAT I ONNELLE 

2 REM (APPLESOFT) 

3 REM ==================== 



10 DEF FN F(X) = : REM ATTENTI 
ON CETTE REMARQUE, TRES UTILE 

EN FAIT, DOIT CONTENIR AUTAN 
T DE TEXTE QUE POSSI BLE . . CECI 

SERVIRA A METTRE LA TOKENI SA 
TION DE LA FONCTION ENTREE EN 

CONVERSAT I ONNEL RECOPI ER 

DONC CE TEXTE OU N'IMPORTE Q 
UOI 

14 D* = CHR* (4): PRINT D*"BLQAD 

B.TOKFON" 

15 INVERSE : HOME : HTAB 10: VTAB 

2: PRINT "ENTRER LA FONCTION 
A TRACER" : NORMAL : PRINT : PRINT 
"F(X)=* ; : CALL 768 
20 INPUT "ABSCISSE DE DEPART : " ;X 



1 

30 INPUT "ABSCISSE D'ARRIVEE : " ;X 

2 

35 REM RECHERCHE DU MINIMUM ET D 

U MAXIMUM SUR L'INTERVALLE 
40 MIN = FN F(X1):MAX = FN F(X1) 

42 PRINT : INPUT "VOULEZ VOUS LE 

GRAPHE EN INVERSE " ;A* 
45 10 = 0:J0 = MIN 

50 FOR I = 1 TO 280 :X = XI + (I - 
1) * (X2 - XI) / 279:Y = FN 
F(X> : 

60 IF Y < MI THEN MIN = Y 
70 IF Y > MAX THEN MAX = Y 

80 NEXT I 

81 H6R : HCOLOR= 7: IF LEFT* (A* 

,1) = "O" THEN CALL 812: HCOLOR= 


82 VTAB 22: PRINT "X VARIE DE " ;X 

1 5" A " ;X2 
85 PRINT : PRINT "Y VARIE DE " ;MI 



Pom's n" 11 



N ; " A " ^ MAX 

86 JO = 191 * (JO - MIN> / (MAX - 

MIN) : HPLOT 10,191 - JO 
90 FOR I = 2 TO 279 :X = XI + (I - 

1 ) * (X2 - XI ) / 279 
100 Y = FN F(X):J = 191 * (Y - MI 

N) / (MAX - MIN) 
110 HPLOT TO I - 1,191 - J: NEXT 

I 

112 REM TRACE DES AXES, S'lLS NE 

SORTENT PAS DE L'EPURE 
115 IF MIN > THEN 127 
120 JO = 191 * ( - MIN) / (MAX - M 
IN) 

124 JO = INT (JO) 

125 HPLOT 0,191 - JO TO 279,191 - 
JO 

127 IF XI > THEN 140 



130 10 = 279 * ( - XI) / (X2 - XI) 

: HPLOT 10,0 TO 10,191 
135 FOR J = 1 TO 1000: NEXT 
140 REM EVENTUELLEMENT HARD COPY 

(PREMIERE PAGE EN ENTIER) 
145 PRINT "VOULEZ VOIR LA FONCTIO 

N EN ENTIER :";: INPUT A* 
147 IF LEFT* (A*,l) = "0" THEN POKE 
- 16302,0: FOR J = 1 TO 1000 

0: NEXT : POKE - 16301 ,0 
150 PRINT : PRINT : PRINT : INPUT 

"VOULEZ VOUS TRACER UNE AUTRE 
FONCTION ? " ;A* 
160 IF LEFT* (A*,l) = "0" THEN TEXT 

: GOTO 15 
1 70 TEXT 



Programme BTOKFON 
DOS TOOL KIT 



0300 : 






1 




ORG 


$300 


00B8: 






2 


TXTPTR 


EQU 


*B8 


D52C: 






3 


GETLIN 


EQU 


*D52C 


D56D: 






4 


TOKEN I 


EQU 


*D56D 


080B: 






5 


PLACE 


EQU 


$80B 


0300 :A5 


B8 




6 




LDA 


TXTPTR 


0302:48 






7 




PHA 




0303 :A5 


B9 




8 




I DA 

i — i/n 


TXTPTR+ 1 

1 S\ II 1 l\ 1 1 


0305:48 






9 




PHA 




0306:20 


2C 


D5 


10 




JSR 


GETLIN 


0309:A2 


00 




1 1 




LDX 


#00 


030B:86 


1 3 




12 




STX 


*13 


030D:20 


6D 


D5 


13 




JSR 


TOKENI 


0310 :A9 


B2 




14 




LDA 


#1 78 


0312:9? 


OB 


08 


15 




STA 


PLACE ,Y 


0315:88 






16 




DEY 




0316:A9 


3A 




17 




LDA 


#*3A 


0318:99 


OB 


08 


18 




STA 


PLACE ,Y 


031B:88 






19 




DEY 




031C:B9 


FC 


01 


20 


TRF 


LDA 


*1 FC , Y 


031F:9? 


OB 


08 21 




STA 


PLACE, Y 


0322:88 






22 




DEY 




0323: DO 


F7 




23 




BNE 


TRF 


0325:68 






24 




PLA 




0326:85 


B9 




25 




STA 


TXTPTR+ 1 


0328:68 






26 




PLA 




0329:85 


B8 




27 




STA 


TXTPTR 


032B:60 






28 




RTS 




032C:A? 


20 




29 




LDA 


#*20 


032E:85 


01 




30 




STA 


1 


0330 : 85 


02 




31 




STA 


2 


0332: AO 


00 




32 




LDY 


#00 


0334 :A9 


00 




33 




LDA 


#00 


0336:85 


00 




34 




STA 


00 


0338:A9 


FF 




35 




LDA 


#*FF 


033A.-91 


00 




36 


BCL 


STA 


<00) ,Y 


033C:C8 






37 




I NY 




033D:D0 


FB 




38 




BNE 


BCL 


033F:E6 


01 




3? 




INC 


1 


0341 :C6 


02 




40 




DEC 


2 


0343: DO 


F5 




41 




BNE 


BCL 


0345:60 






42 




RTS 





*POUR LA TOKEN I SAT I ON DE LA FONCTION 



* TOKEN DE REM 

* : 

*MISE ENPLACE DE LA TOKENI SAT I ON 



RECAPITULATION 



0300- 


A5 


B8 


48 


A5 


B9 


48 


20 


2C 


0308- 


D5 


A2 


00 


86 


13 


20 


6D 


D5 


0310- 


A9 


B2 


99 


OB 


08 


88 


A9 


3A 


0318- 


99 


OB 


08 


88 


B9 


FC 


01 


99 


0320- 


OB 


08 


88 


DO 


F7 


68 


85 


B9 


0328- 


68 


85 


B8 


60 


A9 


20 


85 


01 


0330- 


85 


02 


AO 


00 


A? 


00 


85 


00 


0338- 


A9 


FF 


91 


00 


C8 


DO 


FB 


E6 


0340- 


01 


C6 


02 


DO 


F5 


60 







Pom's n° 11 



Apple-Tell est un systeme qui fait d'un simple Apple 
(votre Apple de tousles jours) un minitel intelligent 



Apple -Tell comprend : 



- une carte Modem incluant un decodeur Teletel 

- un loglclel d'Emulation ae Terminal Minitel enrlchl de trots eblouissantes fonctlons (celles qui 
falsalent le plus defaut Jusqu'a present sur votre minitel) : 

IMPRESSION : l'lmprimante ae votre Apple est exploltee pour sortlr les copies papier dont vous 
avez Desoln lorsque vous consul te2 un serveur. 

STOCKAGE : les olsquettes ae votre Apple sont utlllsees pour enreglstrer les pages dont la 
consultation vous est necessalre : 

• au format Teletel (c'est-a-dlre telles que vous les avez regues), 

• en mode Texte pur (ASCII) pour exploitation locale ulterieure. 

AUTOMATISME : 1'lntelllgence ae votre Apple est moDlllsee pour accompilr l'lnterrogatlon 
automaUque du serveur que vous avez aeslgne (appel telepnonlque, orientation transpac, 
Identification, cnolx successes), enreglstrer sur papier et/ou sur dlsque les donnees 
consultees, puis pour tralter celles-ci, en les lncorporant dans votre application. 

(Les Procedures d'lnterrogatlon sont creees par l'utlllsateur, sans aucun 
langage de programmation, grace au mode Apprentissage d'Appie-Tell.) 

Evenement du dernier SICOB, salue par toute la presse, consacre Pomme d'Or 1983 par le Jury 
Apple, le systeme Apple-Tell marque une mutation decisive dans revolution des tecnnlques 
videotex en environnement professlonnel : 

•point d'arret a la proliferation des materlels sur votre bureau (effet "mlnl-slcoD") 

•utilisation optlmale des ressources dont vous dlsposez deja (dlsques, Imprlmante, loqlclels, etc.), 

•utilisation possiDle en mode Terminal autant qu'en mode Serveur (Jusqu'a six portes), 

•enfln (et c'est sans doute le point le plus Important) JONCTION entre le monde exterleur et et les 
outlls standard de votre Apple : Incorporation de donnees dans Apple-writer, vlsicalc, 
Multiplan, pfs, Quick-File, etc., et meme dans vos applications personnelles (comptablllte, sulvl 
de commanoes, f Icnier ...) devlent possiDle. 



Caracterlstlques oenerales : 
• Modem multlmodes : 
-1200/75, 1200 (half-duplex), 
600 (naif-duplex), 300 (full-duplex), 
-standards CC1TT et BELL (cette 
caracteristique unique rend accesslDles les 
serveurs nord-amerlcalns, y comprls par 
reseau telepnonlque commute). 



• sorties : video composite (N5B) et Perltel 
couleur. 

• Compatible Apple 2 , Apple 2», Apple 2e 
(46k,uned!squette) 

• Enficnable dans n'lmporte quel slot llbre ge 
votre Apple 2. 

• Transparence totale vls-a-vls du systeme. 

























■-. .■ ' 










H j 






Kn 



Norn 



HELLO Informatique - 1, rue de ftetz 75010 PARIS 
Tel : (1) 523 30 34 - Telex : FLASH 210500F 

Societe 



Adresse complete 
ville 



Code Postal 



tel. 




□ Sounalte recevoir une documentation sur le systeme Apple-Tell 
Q Commande systeme(s) Apple-Tell au prix ae F. 5900 H.T. 

(reglerrent ci-joirit par : Q Cheque bancaire \Z] CCP) 



Pom's n" 11 



73 



pom 




Montant 
TTC 



• la disquette HAIFA Source | | au prix de 55 F la disquette (cf. Pom's n" 5) 



• le logiciel H-BASIC 

• le logiciel MUSIC 

• le Disk Manager 

• DBSTAG (CP/M) 



• Recueil n° 1 de Pom's (n 

□ avec ses 3 disquettes au prix de 270 P 
I | sans disquette au prix de 120 F 



□ au prix de 150 F (cf. Pom's n° 8) 

□ au prix de 80 F (cf. Pom's n° 10) 

□ au prix de 450 F (cf Pom's n° 11) 

□ au prix de 450 F (cf Pom s n" 11) 

1 a 4) 



|~~| les 3 disquettes seules au prix de 150 F. 



• Recueil n" 2 de Pom's (n™ 5 a 8) - Parution 15 avril 

□ avec ses 4 disquettes au prix de 310 F 

□ sans disquette au prix de 120 F. 



□ les 4 disquettes seules au prix de 190 F 

Je desire recevoir : 

• les numeros de la revue Pom's fJ4 17 

au prix de 35 F le numero 



□ 8 



les numeros de la revue Pom's fj] 9 □ 10 □ 11 

au prix de 40 F le numero 



• les disquettes d'accompagnement des numeros 

□ 1 D2 D3 fJ4 D5 D6 D7 D8 
au prix de 55 F par disquette 



□ 9 □ 10 Dll 



Je desire m'abonner pour 6 numeros a partir du n° 

I I sans disquette au prix de 200 F 

□ avec disquettes au prix de 480 F 



TOTAL : 

Envoyez ce bon de commande et votre reglement a : 
Editions MEV - 49, rue Lamartine - 78000 Versailles 



Nom 

Adresse 



Ces tarifs comprennent l'envoi postal en France Metropolitaine. CEE et Suisse (voie aerienne exceptee) 
Supplement avion : 10 F par numero et / ou disquette 



74 



Pom's n" 11 



4444444444444a 

A4AAAAA444444A 

AA44444AAAA444 
A4444444444444 



4444444AA4444 
&AAAAAAAA4A444 

AAA4444444444 
AAAA444444444A 



AAA 
ft A A A 
AAA 



6 t A A 



A A A A 



a A A A 

A 4 4 
A A A A 

A A A A 
A A 4 4 

A A 4 

A A A A 

4 4 4 

A A A A 
A A A A 

AAA 
AAA 



AAA 
1 A A 4 
A A A A 



AAA 

AAA 
AAA 



AAA 

A A A A 
A A A 4 



* A A A 

AAA 
A A A A 



AAA 
'AAA 

AAA 
i A A A 



La nouvelle 
bibliotheque Apple 

des livres utiles pour concevoir 
vos propres programmes sur Apple 




Ecrivons un programme pour Apple 

Pour vous amuser en apprenant la programmation sur un micro 
ordinateur qui semble dote de pouvoirs magiques. Vous apprendrez 
a lui donner des ordres en BASIC et, toutes sortes d'instructions. 
Vous pourrez vous en servir pour dessiner. Vous le comprendrez 
et vous saurez le faire fonctionner en ouvrant ce livre. 
1C0544 99,00F 

Vous et 1 ordinateur Apple 

Un livre pour tous ceux qui veulent connaitre l'APPLE et s'en faire 
un ami. 

33 leijons pour apprendre a programmer en BASIC, chaque leqon 
est illustree de commentaires, d'explications, de programmes et 
d'exercices complementaires. 

1C0542 1 29 ,00 F 

Le Logo sur Apple 

Un livre pour faire l'apprentissage de LOGO, un moyen d'expression 
tres puissant. D'une faqon tres vivante, ce livre explique les etapes 
a suivre pour concevoir et realiser toutes sortes de projets... a partir 
de la tortue LOGO, ce celebre petit animal cybernetique qui se 
deplace sur l'ecran en laissant une trace derriere lui. 
1C0543 129,00 F 



Jeux video, jeux de demain 

CEDIC/NATHAN/LEP 

Les jeux video et les jeux sur ordinateurs envahissent 
notre environnement. Pour se retrouver dans la 
jungle des envahisseurs, simulateurs de vol, football, 
joyeux voraces et autres aventures... pour mieux les 
comprendre et mieux les exploiter... voici des 
informations sur leur impact, des conseils sur la 
maniere de les utiliser, et un banc d'essai des conso- 
les actuelles. 

1C0521 59,00 F 




Monileur carrosse pour Apple 12" 3520 F 

Carte RGB pour Apple II + 699 F 

• Le montteur Ideal pour lout mini ou micro-ordinateur avec entree 
RGB • Totalwnenl compatible avec tes ordinateurs individuels 
Apple 111 et IBM sans aucune interface complt*menlaire • Cartes 
interfaces -RGB II- disponlbles pour compatibilite Apple II E. 



Strictement compatibles era -floppy- sont garantis 1 an et commer- 
cialises dans la version Half Size. De plus le Track to Track de 3 
millisecond es les classe parmi les plus rapides 5" 
Floppy sans controleur 2699 F avec controleur 3459 F 



■gcippkz 

■ t Ofdmaieuf Personnel 





PROMOTION 



Rnn F 



comprenant 



• Apple soft 12 K ROM • RAM 64 K • Clavier AZERTY (francais) ou 
QWERTY • Alimentation a decoupage • Sortie video. 
MONITEUR APPLE Bande passante 18 MHz • TOP lignes a 40 /xs • 
Ecran vert • Modification de Tangle de vision • FLOPPY lecteur 5" • 
Capacite 143 K • Avec DOS 3,3 • Alimente par I'unite centrale li E. 



Possibility de commuter le levier en mode stable ou instable. 



Capable de programmer les 2708. 2716. 
2732. 2758. 2532. Complet teste 

Alimentation a 
decoupage 

Memes dimensions que T alimentation Apple 
sott - 5 V. 2.5 A • 12 V. 1.5 A 

- 12 V. 0.5 A, - 5 V. 0,5 A „.. 



6.7 Mega octets compatibles. Dos 3.3 Pascal el CP'M 
pour Apple If E_ 

Co f fret type Apple i 

avec decoupe pour pave numerique. 



mam 



APPLE II E 

Carte 80 C.._ 998 F 

Carte 80 C + 64 K RAM 2379 F 
Carte 80 C -r 64 K 

- Perltel 2970 F 

Interface Sejte 1360 F 

Interface Parallele 1360F 

Interface Modem . .5700 F 

Disk Apple 2990 F 

Carte PROTO 165 F 

Poignees 280 F 

Z80avecCP/M 3100 F 



Clavier numerique 1290 F 

Cane A/0 16 voies 3620 F 

Carte horloge 1060 F 

Carte 16 K Apple II I 1330 F 
APPLE III 

Interface parallele 1635 F 

Sylentype III 2640 F 

Pascal 2120 F 

Visit air 2700 F 

Apple Writer III 1580 F 

Carte couleur 

Peritelevision 820 F 




Comp* 




34. rue de Turin, 75008 PARIS. Tel. 293.41.33. 
Metro : Liege. St-Larare. Place Cltchy. Telex 614789. 



10, bd Arago. 75013 PARIS. Tel 336 26 05. 

Metro : Gobelins (service correspondence et magasin) 



5, rue Maurice Bourdet, 75016 PARIS. Tel. 524.23 16 
(Pont de Grenelle) - Metro Charles Michels 
Bus 70<72 : Maison de I'ORTF. 



Carte langoge 695 F 

Cane Z 80 995 F 

Carte 128 K RAM 2200 F 

Clavier type Apple ...950 F 

Carte musicale , 850 F 

Carte horloge.... 785 F 

Cane communication 900 F 

Ventllateur u 350 F 

Cane 6522 via 550 F 



Une souris pour Apple II + 
et II E. Ulillsablc avec 69 K 
de RAM minimum et d'un 
lecteur avec controleur Li- 
vree avec son cable d' inter- 
face, une disquerte de pre- 
sentation et son guide d' ulili- 
salion. 



c c 

is 




256 K, avec disquette 5" 
et disque dur 5 M/octets 



avec 



• UC 6502, 256 K de RAM • 4 K de ROM • Affichage 80 x 24 • Ecran vert 
anti-reflet • Graphisme • Couleur • Clavier 74 touches • 5 M/octets sur 
disque dur. 



IMAGEWRITER, 

I'imprimante concue pour votre Apple 

• 180 cps • moins de 53 dBA • Matricielle 7x9 
programmable 16x8. Interface RS 232 • Me- 
moire tampon 1 K • Vitesse transfert 300, 1200, 
2400, 9600 • Kit accessoires II ou III 272 F. 



4560 




floppy double unite pour Apple 

• 2 x 14D K/o formates • Kit accessoires 1135 F 




LOGICIELS APPLE II E 



jiciels pouvanl Sire pretes aux conditions du -Bon i decoupe'" ci-dessous.} 



' VISICALC (francas) : Irailemenl de planning, 
geslion. budget, finance, fabrication 2700 F 

• MULTIPLAN : Memes utilisations que VISI- 
CALC mais Irailemenl d'ecran plus sophistt- 
que 2420 F 

' VISIPL0T : fabrication de courbes ou d'histo- 
grantmes a partir de donnees numeriques. 
Prix 1630 F 



ASSURANCE 

L0GICIEL 

APPLE 



- 0RCA : un des meilleurs assembleur pour 
APPLE 1490 F 

• APPLE WRITER . Irailemenl de texle 1572 F 
■ BUSINESS GRAPHIQUE irailemenl giaphique 

des valeurs numeriques 1375 F 

- APPLE FORTRAN : langage 1659 F 

- QUICK FILE : Irailemenl de fichier 790 F 

• VISIFILE ; crdanon et gestion de fichier 2833 F 



- APPLE LOGO : initiation a la geometrie et a la 
trlgonometrie 1600 F 

- APPLE PASCAL ; langage 1820 F 

' CX BASE 200 : creation et Irailemenl da 

fichier 3290 F 

■CX TEXTE : Irailemenl de texte inleractif avec 

CX BASE 200 1190 F 

• CX BASE 200 + CX TEXTE 3990 F 



PnilQ MM EQQAI 



GRATUIT 



PENTASONIC sengage a re- 
chercher et a demarrer avec 
vous parmi les logiciels stan- 
dards celul qui correspond 
exactement a VOS BESOINS. 
TESTEZ LE PENDANT 
10 JOURS GRATUITEMENT 



Ce bon vous donne droit au pret d un logiciel APPLE precede 
d'un asterique dans notre publicite. A etre guide dans vos pre- 
miers pas sur ce logiciel par un technicien PENTASONIC. 

Type log n° de serie 

Date d'essai Date de retour 



Cette olfre n'est soumise a aucune obligation d'achat. II voussera simple- 
ment demande un chaque de caution. 



BENEFICIER 
D'UN 

DEPANNAGE 
IMMEDIAT 
DE VOTRE 
MATERIEL 
APPLE 

Attention, il est preferable de 
prevenir nos techniciens de 
votre passage! 



Si le depannage immediat s'avere impossible' 

Ce nouveau service PENTA-APPLE implique que le materiel soit 
d'origine PENTASONIC. Le depannage s effectuera dans un des 
points de vente PENTA. 

PENTAT|8|13|6| 



Date d'achat . 



type et n" de serie.. 
.. N" de validation... 



" Sauf rupture de slock sur les pieces detachees d'origine.