Text content (OCR)
a
wil
LISTE
DES POINTS
(06000 - MAD'S - NICE - (93) 88.04.79
EVOLUTION 9000 » MANDELIEU « (93) 49.81.61
MICRO-BOUTIQUE JCR » GET - (24) 55.01.23,
MICROPOLIS - TROYES » (25) 72.03.79
| ELEC VIDEO CLUB = CARCASSONNE - (68) 47.0
2 INFORMATIQUE : NARBONNE - (68) 65.15,
BASE 2 SOCODET! « RODEZ (65) 42.50.08,
ALLIANCE » MARSEILLE - (91) 86.35.99
Le deuxiéme d’une
EPINFG - MARSELLE (91) 949413 ne j
ee eee longue série de guide
Se Shne. anecuibae rag aa” des logiciels.
Plus d’un tiers de nou-
AYENR INFORMATIQUE BOURGES (48) 65.1657
MICROMATIC - BRIVE = (55) 87
INFORMATIC 19 BRIE” (55) 87:77 08
OMG. MICRO LEADER - DIJON - (80) 30.12.70 é
IICRG CRANO INFORMATIVE - BERGERAC veautés. 1
16) 5606081 cr
Ta MONTEELIARD Coe = AU SOMMAIRE :
BOMEA: VALENCE" (73) 4 2
ECAELECTRONIOUE. 2OURG-LESALENCE (75) an6808 Pa j \)
CORDINATEUR 29 = QUIMPER (98) 9599.7 — Une sélection de 416 »\
DISCOUNT INFORM, SERVCE = NIMES " (66) 23.74.21 4
MICRO DIFFUSION - TOULOUSE - (61) 29.81.17, programmes en Anglais
MICRO DIFFUSION « BORDEAUX = (56) 81.11.99 4
ETS COCA- BORDEAUX = (61) 9291 18 °
BIB - JER BOUTIQUE = MONTPELLIER ( 7 ou en Francais pour >
ARCELLEC SeTeRS. Ws) BT aes mate! APPLE - ATARI - COMMODORE
ERO 29: JEAN PERRE'ANORE © LONSE-SAUNIER
DETROM INFORMATIQUE - SANT-ETINNE (77) 29 5859 SINCLAIR ZX81 et SPECTRUM c
41) 46.02.40 — Les fiches techniques de
CRS AVENIR: WORN Cajon ze V20 et C64 - EPSON HX 20 -
eS in ORIC 1 et ORIC ATMOS - IBM PC
ae Peon sous meee ='®S_80 - THOMSON TO 7 -
aoe a are HECTOR.
CORDINATEUR 36 - Lowen (97) Suse 3a chaque programme compre-
57800 - CW. FREYMING MERLEBACH - (87) 81.14.89 nant : g
59000 - ETS BOULANGER LILE (20) 54.98.95, ae see
59000 - BECY INFORMATIQUE « LILLE - (20) 9233.06 La description précise du pro:
59400 - MICROSHOP » CAMBRAI~ (27) 81.98.09 1
59500 - iD DOUAI (27) 88.47.20,
59800 - BOC -LILE (20) 57.91.87 gramme.
60108 - QUENEUTTE » CREIL- (4) 495.04.96
{60200 - LARDET S.A, - COMPIEGNE - (4) 423.07.86
©3000 IMPACT - CLERMONT.FERRAND « (73) 99.17.55
64110 « ESPACE MICRO 64 - BAYONNE -(59) 59.41.55
S460 I ORMATIGUE BASCO LANDAISEANGLET (59) 31.96.05
(66000 + SERIE INFORMATIQUE - PERPIGNAN (68) 3
{67150 - ETS A FRITSCH - ERSTEIN - (BB) 98.03 51
BON DE COMMANDE A RENVOYER A SPID - 39, RUE V.MASSE - 75009 PARIS
Je désire recevoir le "GUIDE DES LOGICIELS” Printemps 1984
Je joins 20 F en cheque (15 F+ 5 F de port) en réglement.
Son prix moyen constaté.
micro.
69003 « Blap LYON) 660.8437 — En plus vous trouverez :
69400 * MICRO INFORMBEAUIQLAISE -VLLEFRANCHE'/SAONE
71100 = AVENIRELECIRONIQUE = HALON /SAONE (85) 48.73.35
Thabo “Cho ELEerROMGUE AUTON” CoO eo le programme que vous cherchez.
73100 : LORDINATEUR = AIXLES-BAINS (99) 8819.07 Des index pour trouver facilement
14108 ° DSA MRO" ANNEMASSE™ (30) 3831-40
7006 - BUNEZ $A - PARS - 309,08 60
78008 : ENERGY 8: pARS 293.41 33
Us BUREAU "Panis 878-26 48
Ree thee EN VENTE 15 F CHEZ VOTRE
GENERAL WDEO «PAR 206,50 30
PIT. Pans = 2563601
Eu pants 30768:58 DE PORT EN RENVOYANT LE
MIDE Panis 339.98
PENTASONIC Panis. $0425 18
ANTIGOnE = PANS 7431343
LORDINATEUR -LE Home (38) 815455
EPSLON = MELUN 49981 98
Pt. ELECTRONIGUE TOULON = (94) 93.110
USTE INFORMATIQUE = POMTERS CEOEX (49) 41.43.66
MIN LOIS "SENS = (86) 644193
ASORKOR YONNE- SENS (88) 6451 96
Sa compatibilité avec tel ou tel |
ee ts, a en Des conseils pour choisir et acheter
Hes oreo as) e505 ce que vous cherchez.
1 ee i ssusco DISTRIBUTEUR OU 15 F + 5 F
Ice cemosents Pat a5 soar COUPON CI-DESSOU
_
Beers ae Sarat LA HAUTE FIABILITE
AXIOME = BOULOGNE - 604,02.21 Nom
‘OLIG « BOULOGNE BILL - (1) 605.0559
DXMA - SAINT-MAUR - 885, Adresse
MICROTEK @ - MONACO - (93) 30.67.67 +
88002 - AVM. - EPINAL (29) 82.14.97 Code et ville
S$ nl?
Sommaire Page Langage * | Niveau * *
Disque virtuel 16K par Michel Haag 7 A P-T
Charts Unlimited a l’essai par Guy Lapautre 11 Tr
Le Calculateur entier par Jacques Duma 15 A P-T
Exp (Pi*Sqr (163)) est-il entier ? par Olivier Herz 21 T
Analyse de Magic Mailer par Guy Lapautre 22 a
Initiation 4 'assembleur (2) par Gérard Michel 23 B-A T
Patch du DOS 3.3 par Yvan Koenig 28 B P-T
Des tableaux de dimension variable par Gérard Michel 29 A P-T
& ONERR GOTO par Dimitri Auer 33 A M-T
Programme assembleur 4 la fin d’un programme BASIC
par Roland Jost 35 B M-T
Des trucs pour Apple Writer II et //e par Hervé Thiriez 39 T
Adaptez Apple Writer 1.1 4 l’Apple //e par Jacques Leroy 40 T
Un éditeur de shapes par Thierry Le Tallec 41 B-A P-T
Nombres flottants en langage machine par Erick Ringot 45 B-A P
Un mois avec le Macintosh par Hervé Thiriez 53 T
L’Apple //c est né ! par Guy Mathieu 54 T
PEEKs et POKEs en Pascal par Jacques Pino 55 P T
Les disquettes de Pom’s par Olivier Herz 56 T
Imprimez les codes ESC de votre PLE par Pascal Fontanier 59 B T
Tracé rapide de cercles par Dominique Bernardi 61 A M-T
La micro-informatique au Japon par Olivier Herz 62 T
Pom’s a vu MEM/TERM par Guy Lapautre 63 T
La famille Apple // par Daniel Garric 67 T
Micro-informations par Jean-Michel Gourévitch 69 T
Courrier des lecteurs par Alexandre Duback 71 T
Courrier des clubs 73 T
Bibliographie 73 T
Langage : Blasic) - A(ssembleur] - Plascal). (B) signifie : relatif au BASIC.
** Niveau : D(ébutant) - M(oyen) - P(rofessionnel) - T(ous)
P-T signifie : programme utilisable par les débutants. mais dont la compréhension est de niveau “Professionnel”
Les annonceurs
ACER: p. 44 / ALPHA SYSTEMES: p. 4 / APPLE: p. 75 / B.F.I.: p. 6 | CEDIC-NATHAN: p. 51 | COMPUTER 3: p. 38
HELLO : p. 57 / M.B.D.C. : p. 72 - MICRO EXPO: p. 52 | MICRO-PERIPH : p. 66 | L'ORDINATEUR INDIVIDUEL : p. 76
PENTASONIC : p. 14 / P.S.I. Diffusion : p. 64-65 / SATELCOM : p. 58 | SICOB : p. 10 | SPID : p. 2 TELECOMPO : p. 38
Editions MEV — 64-70 rue des Chantiers — 78000 Versailles
Directeur de la publication ; Hervé Thiriez, Imprimerie Rosay, 94300 Vincennes. Imprimé en France. Dépot légal : 2° trimestre 1984.
Pom’s n° 12
CE FLASH I!
ON EST FAIT
‘UN
POUR U'AUTRE...
Nos cartes coprocesseurs permettent de transformer littéralement un Apple // en lui donnant
une vitesse 2 a 20 fois supeniewte en upplesol ou en Pascal et/ou une compatibilité
en assembleur ou en langage évolué avec les nouveaux micros du marché.
LA PERFORMANCE
carte AD 8088 @@ carte 6502 C
aie, anne ide ! 100% compatible
tra rapide ! 4 fois plus rapide.
Sans modifier une ligne des programmes APPLESOFT, la Quel que soit le programme, quel que soit le langage
vitesse est multipliée par un coefficient de2a4.Lacarte le microprocesseur 6502 C (3.6 MHZ) divise par 3,6 le
permet d’utiliser CP/M-86 bientét MS/DOS, le processeur temps d’exécution. Aucune modification ni matériel, ni
arithmétique rapide 8087 a une vitesse époustouflante. logiciel. La carte comporte 64 Ko de mémoire ; 2 ver-
Mémoire extensible a 192 Ko. Fonctionnement simultané sions: Apple II +, et Apple //e.
du 6502 et de plusieurs cartes AD 8088 possible
4
carte 68000
Vitesse, puissance. Avenir.
Le microprocesseur le plus puissant. 3 versions 8, 12.5 et 14 MHZ. 128 Ko de mémoire sur la carte extensible 4812 Ko.
Entiérement compatible avec APPLESOFT et DOS 3.3 qu'elle accélére dans un rapport de 3 a 20 selon les program-
mes. UCSD-p System complet disponible en version IV.I avec PASCAL, BASIC, FORTRAN. Développements
possibles sous UCSD pour IBM PC et XT, VICTOR S1, RAINBOW 100, GOUPIL III, etc., sans recompilation
Le 68000 équipe LISA et MC INTOSH !
fe departement 29, bd gambetta - 38000 grenoble
‘ ° tél, (76) 43.19.97
SVSTEMES = diffusion oistautcuas DANS TOUTE LA FRANCE
g
8
Editorial
D’aucuns annongaient la mort lente d’Apple, étant donné la concurrence de I'IBM PC et des nouveaux
16 et 32 bits 4 haut rapport performance/prix, tels que le QL de Sinclair. Or. tout d’abord, on constate
que les nouveaux produits concurrents n'ont pas toujours une naissance sans probléme : ainsi, le QL
connait-il en ce moment des difficultés avec des bugs dans son QDOS et des erreurs de conception
dans un de ses circuits spéciaux. En outre, la sortie du Macintosh a prouvé qu'il fallait encore compter
avec Apple : la demande est telle aux Etats-Unis qu’il est question de lancer une campagne de publicité
sur le théme « Nous savions qu'il s’en vendrait un million: nous ne savions pas que cela se ferait en
deux semaines... ».
Ce douziéme numéro de Pom’s vous apporte la seconde partie de la rubrique « Apprentissage de
l'assembleur » assurée par Gérard Michel. Certains mont fait déja fait savoir. a la suite de la premiére
lecon, que cette initiation était la meilleure qu‘ils aient jamais vu. Merci pour Gérard. Sur le plan
pédagogique, Erick Ringot épluche aussi pour vous la facon dont les nombres flottants sont gérés par
votre ordinateur favori.
Grace au programme de Michel Haag, tout le monde pourra. sur Apple II Plus et e, transformer la
carte d’extension 16K en lecteur de disquettes virtuel. Il est alors possible d'y loger tous ces utilitaires
d'usage fréquent, ou de s’en servir pour y placer les tables de référence des programmes Basic. En
compensation, les « Pascaliens » apprendront avec Jacques Pino comment faire des PEEKs et des
POKEs en Pascal.
Comme d’habitude, vous trouverez dans ce Pom’s des tas de programmes tous plus utiles les uns que
les autres, Roland Jost montre comment cacher des programmes en assembleur 4 la fin des program-
mes Basic. Dominique Bernardi illustre sa facon de tracer rapidement des cercles en écran haute
résolution. Dimitri Auer vous permet enfin de créer des tableaux 4 dimension variable en Basic. Yvan
Koenig propose un patch du DOS 3.3 permettant d’éliminer plusieurs de ses bugs et limitations.
Thierry Le Tallec compléte ses contributions antérieures par un éditeur de shapes de toute beauté.
Les utilisateurs d’Apple Writer sont gatés cette fois-ci: Jacques Leroy transforme Apple Writer I pour
qu'il fonctionne sur un //e, et je fournis de nombreux trucs d'utilisation pour Apple Writer Il et e. Pour
terminer, vous verrez avec Pascal Fontanier comment imprimer les codes ESCape de votre impri-
mante.
Pom’s vous offre encore dans ce numéro une contribution importante avec le Calculateur Entier de
Jacques Duma ; vous pourrez effectuer avec votre Apple Il des calculs avec 500 chiffres significatifs.
Comme il fallait 15 pages rien que pour le listing source en assembleur. nous n‘avons pu le mettre que
sur la disquette d’accompagnement ; par contre, les lecteurs courageux (ou obstinés) pourront repren-
dre le programme 4 partir du code objet publié avec l'article... Olivier Herz utilise le Calculateur Entier
Pour sattaquer a la question métaphysique que tous se posent : EXP (PI*SQR(163)) est-il entier ?
Les banes d'essai restent au gout du jour: Guy Lapautre a décortiqué Magic Mailer et Charts Unlimi-
ted; il nous présente en outre le nouveau service MEM/TERM. L ‘intégrité de nos bancs d’essai est
garantie par le fait que nous ne recevons pas de publicité en échange de nos analyses.
La sortie du Macintosh signifie-t-elle la disparition progressive de la ligne Apple Il et //e ? L’article de
Daniel Garric et la rubrique Micro-Informations, tenue 4 présent par Jean-Michel Gourévitch, vous
prouvent le contraire : les nouveaux produis //c et (//x ?) vont compléter la gamme en respectant autant
que possible le sacro-saint principe de la compatibilité. Olivier Herz complete ces réflexions sur le
marché de la micro-informatique en nous parlant du Japon.
Hervé Thiriez
Ont collaboré 4 ce numéro : Dimitri Auer — Dominique Bernardi — Jean-Michel Boyer — Alexandre Duback — Jacques Duma — Pascal
Fontanier — Daniel Garric - Jean-Michel Gourévitch ~ Michel Haag — Olivier Herz ~ Roland Jost - Yvan Koenig - Guy Lapautre — Jacques
Leroy — Thierry Le Tallec - Guy Mathieu — Gérard Michel — Jacques Pino — Erick Ringot — Hervé Thiriez, Rédacteurs : Alexandre Avrane —
Gérard Michel. Dessins : Laurent Bidot. Directeur de la publication - rédacteur en chef : Hervé Thiriez - Siége social et abonne-
ments : Editions MEV - 49, rue Lamartine - 78000 Versailles - Rédaction et courrier des lecteurs : 59. Bd Glatigny - 78000 Versailles
Tél. ; (3) 951.24.43.
Régie publicitaire : Force 7 - Anne Jourdan - 5. place du Colonel Fabien - 75010 Paris - Tél, ; 240.22.01
Diffusion auprés des des boutiques et librairies : PS! Diffusion - BP 86 - 77402 Lagny-sur-Mame Cedex.
Composition : Télécompo - 13-15, avenue du Petit Parc - 94300 Vincennes - Tél, - 328.18.63.
Impressior ‘osay - 47, avenue de Paris - 94300 Vincennes - Tél. 328.18.63,
Pom’s n° 12
, DISQUETTES ET MINI DISQUETTES TOUTES CONFIGURATIONS
Datalife
» Verbatim.
- Certification unitaire 100% sans erreur.
- Durée de vie : 30 millions de révolutions
(standard de I'Industrie 3,5 millions de révolutions).
- 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.
Tél. 533-01-37.
6 Pom’s n° 12
Ce programme transforme les 16K e e t
de la carte langage en pseudo-dis- D 1 16 K
quette (disque virtuel): c’est-a-dire isque virtue
que la carte langage se comportera A
comme un lecteur de disquettes 4 Michel Haag
accés trés rapide (et a capacité res-
treinte). Il est transparent au Basic et
au File Manager du DOS. Le pro-
gramme FID fonctionne sans diffi- 1G
culté avec la pseudo-disquette ainsi PePTTrriTrrerrrreererr reer terres
formée par les 16 K de la carte lan- 3 ye *
gage. ace RWLC *
Sy *
Exemples d’utilisation S te BECHER: OBBAGY (NOYES? ‘
Onvacsouvent besout Jers de la thise B [ene neeneneeennenennnenenennennne
au point d’un programme, de plu- o;
sieurs utilitaires. Ceux-ci peuvent étre | 1° ORG SBEBO
disponibles sur la pseudo-disquette oe OBY, #800
Certains programmes doivent fré- | 13 ;EMULATEUR DE DISQUETTE
quemment accéder a un fichier texte 14;
pour le modifier ou le compléter. Si 15 ; UTILISE LA CARTE LANGUAGE POUR SIMULER
on le transfére sur la pseudo-di 16 ;UNE DISQUETTE DE 4 PISTES
quette, il ne sera plus nécessaire d’at- 17
tendre que la disquette se mette a 18 IOBP EPZ $48
tourer et qu’elle veuille bien présen- | 19 PTR EPZ §2A ;PAGE = "SECTEUR™
ter le secteur voulu sous la téte de 20 BUFPTR BR SE
lecture. Les lectures et écritures pren- | 35 Toate Epo aoe
dront moins de temps, surtout si le 23:
fichier est a acces direct. Se tee OU te
Remarque aux débutants 25 SEC EQU SS
26 BUF EQU $8
Si les paragraphes expliquant le fonc- 27 CMD EQU soc
tionnement du programme vous dé- 28 DRV EPZ $02
Ppassent, vous pouvez sauter directe- 29 5
ment 4 la partie “Utilisation” de cet 30 RWLC STY IOBP
article. On peut en effet parfaitement | 31 STA IOBP+1
utiliser ce programme sans pour au- 32 LDY #DRV ;TOUT APPEL DE RWTS EST
tarit comprendre son fonctionnement 33 LDA (IOBP),Y ;AIGUILLE SUR RWLC. LE
(ccmbien de conducteurs connaissent 34 CMP #2 ;CONTROLE EST REDONNE A RWTS
la mécanique ?), 35 BEQ RWLC1 :SI LE LECTEUR EST D1
36 JMP SBDO3
37 5
Fonctionnement du 38 ;TRANSFERT DE POINTEURS EN PAGE ZERO
programme 33;
40 RWLC1 LDY #BUF :BUFFER DANS BUFPTR
A chacune des 64 pages de MEV de 41 LDA (IOBP),Y
la carte langage est associé un sec- 42 STA BUFPTR
teur. Les trois premiéres pages de la 43 INY
premiére tranche de 4K de la carte 44 LDA (IOBP),Y
langage, comprises entre $DO000 et | 45 STA BUFPTR+1
$D2FF, correspondent aux trois pre- | 46 LDY #SEC ;SECTEUR DANS SECT
miers secteurs de la piste 17. Ils 47 LDA (IOBP),Y
contiennent la VTOC (Volume Table 48 STA SECT
Of Contents) en page $DO et un ca. | 49 LDY #TRK :PISTE DANS TRACK
talogue (directory) de deux secteurs. | 5° LDA (IOBP),¥
Les 13 autres pages de cette tranche 2 . STA TRACK
oes hee pce % a8 S ;DETERMINATION DU BLOCK DE 4k
sont associées a la seconde tranche 3 1
de 4K et la zone $E000-$FFFF de | 22 ged Cand symoc OU OTR.
la carte langage. 57 CMP #3
Le-procramme-e G2 sdnddendieus | 29 BEG RAML }PISTE 3 = 1ERS 4K DE LA L.C..
modules: un module d’initialisation, So BEE ERR.
RWLCINIT (utilisé une seule fois) et | 8° fer eon
un module d'accés aux “pistes” et | €> pan2 LDA $Co83 ISTE 4,5 OU 6
secteurs” de la carte langage. Ce | 65 LDA sCo83 ON COMMUTE LA PREMIERE ZONE
second module, baptisé RWLC, reste 64
8s linitialisati LDA #00 DE 4K DE LA CARTE
en mémoire aprés I'initialisation. 65 STA PTR
Module RWLCINIT 66 LDA TRACK :PTR = DO+S10*(TRACK-4)+SECT
67 SEC
Ce premier module construit la 68 SBC #904
VTOC et un catalogue de 2 secteurs 69 ASL
Pom’s n° 12
sur la carte langage. Il procéde en- 79 ASL
suite 4 quelques modifications du 74 ASL
DOS. Sur la table d’occupation du 72 ASL
VTOC, seuls les secteurs existant ef- 73 ADC #SDO 7
fectivement sont signalés comme 74 ADC SECT sTOUJOURS BRANCHE
étant lores RWLCINIT met ensuite | 7° eee ae PPISTE: 3) OU! Sid +
un BRK ($00) en $BEAF et inhibe la
commande DOS INIT. Il place enfin 77 RAMI LDA ago :CALCUL DE LA PAGE
un JMP $RWLC aTentrée de RWTS | 78 ae
en $BD00 80 LDA SECT
Module RWLC 81 ADC #SDO :COMMUTE LA 2IEME ZONE
82 STA PTR+i
Ce second module débute en $BEBO 83 LDA SCO8B :"LECTURE" OU “ECRITURE"
et comporte 144 octets. Il recouvre 84 LDA SCO8B
donc en partie la commande INIT du 85 EXa LDY #CMD
DOS. Tout appel de RWTS est ai- 86 LDA CIOBP),Y
guillé vers RWLC. Si le lecteur 87 CMP #0
concerné est le lecteur 1, RWLC re- 88 BEQ RET
donne le contréle 4 RWTS. Si c'est ee a oA
le lecteur 2, RWLC détermine la
page de la carte langage qui est invo- 91 CMP #2 ;PROVOQUE UN I/O ERROR
guee et procede aux échanges de- | 22... BEG WRITE FCOMMUTE LA, NEW
mandés entre cette page et le buffer 94 RET LDA scos2
pointé par TIOB. Si les appels de 95 LDA SCo8a
RWTS sont effectués par le File Ma- | Se nee iat" GN SSECTEURE
nager du DOS, il sera automatique- | 39 ,
ment tenu compte de la VTOC créée READ #:
par RWLCINIT. Le File Manager ne | oo fpo IDA: CBTR Sey
fera référence qu’a des secteurs exis- 100 STA (BUFPTR),Y
tant effectivement sur la carte lan- 101 DEY
gage. Si par contre on ne souhaite 102 BNE BR1
pas tester soi-méme les numéros de 103 cLe
secteur et piste, il faut éviter d’accé- 104 BCC RET
der directement a la carte langage 105 WRITE LDY #600 ;ECRIT UN “SECTEUR™
par RWTS, qui continuera cependant 106 BWi LDA (BUFPTR),Y
@ donner des résultats parfaitement 107 STA (PTR),Y
normaux sur le lecteur 1 108 DEY
109 BNE BW1
Utilisation du 110 Ce er
411 BCC
programme 112 LENGTH = *-RWLC
Ce programme ne peut fonctionner | 123 END
que si une carte langage est installée,
et non déja utilisée par le programme
(ou un langage, ou un DOS relogé).
Il faut faire, dans l’ordre
BLOAD RWLC.OBJ
Lig
BRUN RWLCINIT.OBJ QD pA REE EER RRR BEER
On peut a la place exécuter un fi- 35" .
chier EXEC qui contiendrait ces deux 43° RWLCINIT *
commandes. La pseudo-disquette Sp ‘3
s'est maintenant substituée au se- 6 i* MICHEL HAAG (NOV 83) .
cond lecteur qui, par conséquent, ne % ape .
peut plus’ eve utilee parle pro. 8 peeeeneaereeenereeen eee rnnennene
gramme. Tout ordre du DOS suivi a” oRG #8000
de ”.D2” invoquera dorénavant la n ony S803
pseudo-disquette. De plus, comme | 33 ,
dans le cas d’un lecteur réel, le dis- 13:
que utilisé par défaut restera le dis- 14 PTR EPZ $2A
que virtuel jusqu’au prochain appel is:
du drive 1 (par exemple avec CATA- ie:
LOGD1). Les programmeurs possé- 17; INITIALISE UN VTOC ET UN DIRECTORY SUR LA PREMIERE
dant deux lecteurs pourront décon- 18 ONE DE 4K DE LA CARTE, PAGE DO, D1 ET D2. MODIFIE
necter RWLC et retrouver le second 19 ;LE DOS.
lecteur par POKE 48825,0. Pour re- 20 ;
connecter RWLC, il suffira de faire 21 INIT:
POKE 48825,2. 22;
23 LDA SCO8B ;VALIDE LA 1ERE TRANCHE DE 4K
Pour échanger des fichiers entre la 24 LDA s$COaB }DE MEV DE LA CARTE LANGAGE
disquette 1 et la pseudo-disquette, il 25 LDA #0 };MET LE VTOC ET LE DIR AO
sera commode di utiliser le FID. Enfin 26 STA PTR
un dernier avertissement: les infor- 27 LDA #SD0
mations contenues sur la carte lan- 28 STA PTR+1
Pom’s n° 12
gage sont volatiles et disparaissent 29 BS LDA #0
avec l’extinction de l'appareil; il fau- 30 LDY #$00
dra donc penser (en fin de séance) & Sl B2 STA (PTR),Y
transférer sur une disquette réelle le 32 DEY
contenu de la carte langage si l'on 33 BNE B2
souhaite le conserver. 34 INC PTR+1
35 LDA PTR+1
Pour les adresses du DOS et la cons- 36 CMP #SD3
truction_de la VTOC, voir Beneath 37 BNE B3
Apple DOS, de Worth et Lechner. 38;
Pour l'inhibition de la commande 39 ;vTOC
INIT, voir "Une incursion dans les 40 ;
mystéres du DOS” (Pom’s 2). 41 LDA #8D0 38 PREMIERS OCTETS DU VTOC
42 STA PTR+1
43 LDY #06
44 Bl LDA VTOCTBL,Y
45 STA (PTR),Y
46 DEY
47 BPL Bl
48 LDA #S7A ;OCTETS 8 A $37
49 STA $D027
50 LDA #803 ;DERNIERE PISTE ALLOUEE
51 STA $D030
52 LDA #801
53 STA $D031
34 STA $D037 3255 OCTETS/SECT
55 LDA #823 3$23 (35) PISTES
56 STA $D034
87 LDA #810 3810 SECTEURS/PISTE
58 STA $DO35
59;
60 ;TABLE D’OCCUPATION DU vTOC
61;
62 LDX #4 ;LES PISTES 3, 4 ET 5
63 LDA #SFF ;SONT LES SEULES LIBRES
64 LDY #0
Récapitulation RWLC.OBJ| 2 °* Raia
BEBO- 84 48 85 49 AO 02 Bi 48 A a eboager
BEB8- C9 02 FO 03 4C 03 BD AO 5s Thy
BECO- 08 B1 48 85 3E C8 Bi 48
BEC8- 85 3F AO 05 Bl 48 85 2D _ INY.
BEDO- AO 04 B1 48 85 2E C9 11 a DEX
BED8- FO 25 C9 03 FO 21 30 40 ue BNE Ba
BEEO- C9 07 10 3C AD 83 CO AD 73 LDA #8F8 ;SAUF LES SECTEURS 0,1 ET 2
BEES- 83 CO A9 00 85 2A AS 2E 74 STA $D045 ;DE LA PISTE $111
BEFO- 38 ES 04 OA OA OA OA 69 75 5
BEF8- DO 65 2D 85 2B 90 11 A9 76 ;DIRECTORY
BFOO- 00 85 2A 18 AS 2D 69 DO 77 3
BFO8- 85 2B AD 8B CO AD 8B CO 78 INC PTR+1 ;PROCHAIN SECTEUR DU DIR.
BF10- AO OC B1 48 C9 00 FO 09 793 LDY #2 ;PISTE $11, SECTEUR 2
BF18- C9 01 FO OC C5 02 FO 14 80 LDA #811
BF20- 38 AD 82 CO AD 8A CO 60 81 STA (PTR),Y
BF28- AO 00 B1 2A 91 3E 88 DO 82 INY
BF30- F9 18 90 ED AO 00 B1 3E 83 LDA #2
BF38- 91 2A 88 DO F9 18 90 E1 84 STA (PTR),Y
Ré itulati 85 cLe
ecapitulation 386 LDA $c082 ;COMMUTE LA MEM
RWLCINIT.OBJ 87 LDA SCO8A
8000- AD 8B CO AD 8B CO AS 00 88 ;
8008- 85 2A AS DO 85 2B AS 00 89 ;MODIFIE LE DOS
8010- AO 00 91 2A 88 DO FB E6 30 5
8018- 2B AS 2B C3 D3 DO EF AS 91 LDY #03 sAIGUILLE TOUT APPEL
8020- DO 85 2B AO 06 B9 &F 80 92 BS LDA PATCHTBL,Y ;DE RWTS SUR RWLC
8028- 91 2A 88 10 F8 AS 7A 8D 93 STA SBDOO,Y
8030- 27 DO AS 03 8D 30 DO Ad 94 DEY
8038- 01 8D 31 DO 8D 37 DO AS 35 BPL BS
8040- 23 8D 34 DO AI 10 8D 35 96 LDA #800 sEMPECHE UNE INITIALISATION
8048- DO A2 04 AS FF AO 00 99 37 STA SBEAF
8050- 44 DO C8 99 44 DO C8 C8 98 LDA #$5B ;PROVOQUE UN SNTX ERR POUR
80S8- C8 CA DO F3 AS F8 8D 45 39 STA $A884 ;TOUTE UTILISATION DE INIT
8060- DO E6 2B AO 01 AS 11 91 100 RTS
8068- 2A C8 AS 02 91 2A 18 AD | 101 PATCHTBL JMP SBEBO ;MODIFICATION DU DOS
8070- 82 CO AD 8A CO AO 03 BS | 49> Nop
8078- 8B 80 99 00 BD 88 10 F7 103 VTOCTBL BYT $4,$11,$1,53,0,0,SFE
8080- AS 00 8D AF BE AS SB 8D | jo4 LENGTH = *-INIT
8088- 84 AB 60 4C BO BE EA 04 | 465 END
8090- 11 01 03 00 00 FE
Pom’s n° 12
SPECIAL
SICOB
UN SICOB
TRES SPECIAL.
PROGICIELS,
MINI, MICRO-ORDINATEURS
(JOURNEES GRAND PUBLIC: 18 ET 19 MAI)
g Spéciol
SicoB
Information: SICOB (1) 261.52.42 — 4, place de Valois - 75001 Paris
10 Pom’s n° 12
Charts Unlimited est un éditeur gra-
phique (ou plus précisément un aide
a la réalisation de dessins) vendu
$195 par Graphware (5084 Mosiman
Road - Middletown - OH 45042). I
se présente sous la forme désormais
classique d’un classeur rigide, avec
documentation et une disquette. Ce
programme n’est pas encore, a notre
connatssance, vendu en France.
Il est destiné a créer et 4 imprimer
des schémas et dessins tels que : or-
ganigrammes, ordinogrammes de
traitement, synoptique de processus
industriels, etc. Il ne peut pas servir
directement 4 représenter des séries
numériques comme le font des logi-
ciels tels que Visiplot, Décisionnel
Graphique (essai dans le Pom’s 10),
Business Graphics ou PFS-Graph.
Les avantages et inconvénients de
Charts Unlimited sont évalués en
fonction de ce qu’un utilisateur est
en droit d'attendre d’un tel logiciel,
avec parfois référence implicite ou
explicite 4 d'autres logiciels de méme
objectif. Ils sont présentés sous 7
tétes de chapitres :
1 - Apprentissage du logiciel
2 - La "page” écran
3 - Fonctions de dessin disponibles
4 - Objets et symboles
5 - L’édition sur imprimante
6 - Utilitaires: gestion des disques,
liaisons externes
7 - Documentation
Apprentissage du
logiciel
L’abord du logiciel est assez aisé: il
se fait grace & un “Tutorial” qui
consiste 4 tracer un organigramme
d'entreprise, et permet de couvrir la
plupart des fonctions du logiciel.
Une fonction "AU SECOURS”, invo-
quée par la touche "?”, propose un
simple synoptique des commandes
disponibles.
On pourra s’étonner du choix fait
pour les lettres plus ou moins mné-
motechniques permettant l’appel des
commandes (méme en Anglais): E
(pour "ERASE”) ou D (pour "DASH
LINE”), d’accord, mais B pour dési-
gner des "OBJETS STANDARDS”
ou Y pour définir des objets...
Il faut s’habituer au mode de dépla-
cement du curseur : 8 lettres pour les
8 directions dans toutes les comman-
des, sauf en mode texte of I’on re-
trouve les 4 fléches de direction
(pour l’Apple //e).
Il est assez commode de configurer
son systéme imprimante/interface ...
condition que ces deux matériels fi-
gurent dans les listes proposées.
Sinon, quelques tétonnements sup-
plémentaires semblent conduire en
général a un résultat satisfaisant.
Pom’s n° 12
Charts Unlimited a l’essai
Avantages: Simplicité d'emploi -
Nombreuses _ fonctionnalités — d’un
abord aisé - Ecran clair.
Inconvénients : Codes de comman-
de pas toujours évidents - Quelques
problémes dans le maniement du
curseur.
Synthése : Dans l'ensemble, pas de
gros reproches, malgré quelques in-
commodités mineures. Un “Tutorial”
bien fait. On commence a "se dé-
brouiller” avec Charts Unlimited en 2
heures environ.
La ”’page” écran
Lécran est une fenétre de 37 colon-
nes sur 19 lignes dans une page de
123 colonnes sur 90 lignes. Des
échelles placées en haut et 4 gauche
de l’écran montrent a quel endroit
on se trouve dans la page.
En bas, une ligne de commande per-
met de savoir quelle est la fonction-
nalité en cours. Chaque commande
est appelée par une lettre code. On
en gpesort TOUJOURS par la touche
ESC.
Nous avons déja parlé du positionne-
ment du curseur. Sauf en mode
texte, il se fait par le groupe assez
traditionnel de lettres "UI OJ KN
M <” pour obtenir les 8 directions
de déplacement; il vaut donc mieux
é@tre en mode US sur un clavier //e.
Les 4 fléches de direction (version
/le) servent 4 un déplacement rapide,
jusqu’aux bords de I’écran
En mode texte, les déplacements se
font avec les 4 fléches; RETURN ren-
voie a la ligne suivante, DEL efface
le caractére sous le curseur (et non le
précédent...) et CTRL-I crée un es-
pace (pour insertion).
On a souvent besoin de désigner une
zone rectangulaire de |’écran : sauve-
garde, duplication,... Ceci se fait
commodément en se placant succes-
sivement dans les angles supérieur
gauche et inférieur droit, et en "mar-
quant” ces angles par RETURN.
Par ailleurs, une fonction “VIEW”
permet d’obtenir, dans un petit rec-
tangle en bas et a droite, un fac-si-
mile réduit de la page entiére.
Avantages : Ecran clair - Vision trés
commode de la page entiére - Mode
unique d’entrée et sortie de chaque
commande - Puissance de la notion
de “zone”.
Guy Lapautre
Inconvénients: Quelques _ petits
problémes de déplacement du cur-
seur - La désignation de zones est
parfois une commodité dange-
reuse : on peut, en l’omettant, perdre
complétement le résultat d'une
séance de travail.
Synthése : La encore, les avantages
lemportent sur les inconvénients. On
regrettera toutefois qu'il n’y ait pas
un verrouillage de la fonction de sau-
vegarde quand on a omis de dési-
gner préalablement la zone a sauve-
garder.
Les fonctions de dessin
disponibles
Elles sont désignées ci-dessous par
leur équivalent en frangais.
TEXTE : permet l’écriture de tous
les caractéres imprimables. L’écriture
ne peut pas traverser un dessin déja
fait. Elle est limitée a l’intérieur d’une
case, ou a une zone vide...
LIGNES : droites pointillées (Dash)
ou pleines (Solid) tracées grace aux
8 touches de direction. Quelques
petits problémes de jonction selon les
sens successifs de tracé.
OBJETS : on désigne par ce voca-
ble des éléments de dessin pré-éta-
blis. Il existe un jeu dit standard” de
36 éléments, qu’on peut manipuler,
agrandir, déformer, (un mini
”Lisa-Draw”, par anticipation). L’uti-
lisateur peut créer autant de jeux
qu’il le souhaite (on trouve une cer-
taine analogie avec le logiciel de trai-
tement de texte Gutenberg - voir
Pom’s 11). Mais les fonctions
d'agrandissement ne sont pas dispo-
nibles.
SYMBOLES : analogues aux objets,
au nombre de 26, non transforma-
bles. L'utilisateur ne peut pas créer
ses propres jeux.
DUPLICATION : reproduction, 1 ou
n fois, d'une “zone”, a intervalles
équidistants sur une ligne (encore
une idée reprise et développée dans
Lisa-Draw)
EFFACEMENT d'un point, ou
d'une zone.
Avantages : Nombreuses fonction-
nalités que l'on ne retrouve qu’avec
des outils plus puissants mais sensi-
blement plus cotiteux.
Inconvénients : Ils ne seraient sans
doute pas cités si on n’avait pas vu
plus fort depuis... mais pas sur le
méme matériel ni au méme prix..
12
On pourra, a la rigueur, regretter 3
choses : l'impossibilité d’agrandir les
objets utilisateur, le’ manque d’accés
aux points élémentaires sur l’écran
(voir Micro Painter, E-Z Draw ou
Koala Pad), et enfin absence d’un
outil de calcul associé.
Synthése : Certains produits récents,
sur des ordinateurs plus puissants, ou
sur Apple II avec des compléments
matériels et logiciels peu économi-
ques, nous ont habitués 4 d’excellen-
tes performances dans le dessin.
Charts Unlimited n’atteint évidem-
ment pas ces performances. Mais,
par sa simplicité comme par son prix,
c’est un outil remarquable aux nom-
breuses fonctionnalités.
Objets et symboles
La palette offerte comprend une
Planche de 36 objets dits “standard”,
dont beaucoup sont inspirés des des-
sins d’ordinogrammes, et une plan-
che de 26 symboles variés. La fonc-
tion de création permet 4 l'utilisateur
de créer autant de planches de 26
objets qu'il le souhaite, en partant
dobjets ou symboles existants, de
tracés nouveaux et de textes.
Les objets standards peuvent de plus
@tre agrandis dans une ou deux di-
rections (suivant les objets), et par
conséquent déformés. Un cercle peut
devenir un ovale, un petit carré un
grand rectangle, etc. Symboles et
objets utilisateur ne peuvent pas étre
modifiés dans leurs forme et dimen-
sions,
Avantages : Tracés rapides, et trés
simples dés lors qu’on a constitué sa
(ses) propre(s) planche(s) d’objets -
Appel rapide, mais seules les plan-
ches d’objets standards et de symbo-
les peuvent étre visualisées 4 |’écran.
Inconvénients: Il est regrettable
que les objets créés par l'utilisateur
ne disposent pas des mémes fonc-
tionnalités que les objets standards -
Impossibilité de travailler au niveau
du point élémentaire.
Synthés: L'idée des planches
dobjets”, qui a été reprise par des
produits modernes plus dispendieux,
est une des grandes forces de Charts
Unlimited. Quel dommage que I utili-
sateur ne puisse pas, 4 son gré, utili-
ser ses propres objets en place des
objets standards.
L’édition sur imprimante
Un large choix d’imprimantes et d’in-
terfaces est proposé a T'utilisateur, a
partir d’un menu de configuration
trés simple 4 utiliser. Le probléme ris-
que de se compliquer un peu si ’im-
primante et/ou l’interface qu’on pos-
séde ne figurent pas dans la liste.
Mais un peu d’habitude permet en
général de faire des assimilations.
S) I
Il est possible d'imprimer les graphi-
ques, et ce en simple ou double di-
mension, verticalement ou horizonta-
lement sur le papier. La simple
dimension, dite “normale” est en fait
trés condensée (elle permet, sur pa-
pier 21x31, l'impression d’un graphe
de 123 colonnes dans le sens de la
largeur du papier. Mais les dessins
sont en réalité raccourcis, ce qui in-
troduit une déformation des objets et
symboles.
Liimpression en double dimension
ne double en fait que la largeur, res-
tituant aux objets leur forme nor-
male. Mais il est nécessaire, pour un
schéma dépassant une soixantaine
de colonnes, de travailler "verticale-
ment”. A ce moment, un schéma de
123 colonnes tient juste dans une
feuille de papier 21x31, mais seules
les 2/3 des lignes supérieures sont
imprimées.
Avantages : Un bon choix d’impri-
mantes et d’interfaces - Deux possibi-
lités de dimensions d'impression et
deux sens pour chacune d’elles.
Inconvénients : Une lenteur d’im-
pression presque désespérante (les
temps se comptent en longues minu-
tes !)
Synthése : Bonnes possibiltés, pour
qui est patient...
Utilitaires : gestion des
disques, liaisons exter-
nes
Le temps de chargement du pro-
gramme est assez long, mais on est
ensuite tranquille. La configuration
imprimante, étant sauvegardée sur le
disque programme, est chargée avec
celui-ci si on ne souhaite pas la mo-
difier.
Les fonctions classiques d’échange
avec le disque sont présentes. Bien
que le travail avec deux lecteurs soit
plus confortable, les transferts sont
suffisamment peu nombreux pour
qu’on puisse se contenter d’un seul
lecteur.
A signaler un grave inconvénient de
la fonction de sauvegarde : si on n’a
pas pris la précaution de désigner la
zone a sauvegarder, l’option par dé-
faut n’est pas "TOUT” mais "RIEN”
(pas d’avertissement: on a simple-
ment l’impression d’un dysfonction-
nement qui disparait aprés deux RE-
TURN) ... ce qui bien entendu risque
de faire perdre un long temps de tra-
vail et, pour comble de malheur, ef-
face sans pitié ce qui avait été préala-
blement sauvegardé sous le méme
nom.
Par ailleurs, notons que Charts Unli-
mited est un logiciel isolé, non prévu
pour communiquer avec d’autres lo-
giciels commerciaux.
Avantages: Transferts peu nom-
breux - Configuration imprimante
chargée avec le programme.
Inconvénients : Le manque de pro-
tection, ou au minimum d’avertisse-
ment, contre une sauvegarde sans
désignation préalable de zone - L’iso-
lement du logiciel, qui ne peut-prati-
quer d’échange avec aucun autre.
Synthése : Peu de remarques, si ce
nest qu’il est difficilement admissible
de voir dans un logiciel plein de qua-
lités une telle absence de sécurité.
Documentation
La documentation, en anglais seule-
ment (il faut dire que le produit nous
est arrivé directement des USA),
comporte deux parties distinctes.
Pom’'s n° 12
La premiére est un “Tutorial”, qui
enseigne l’essentiel du logiciel autour
d'un exercice sur la construction de
lorganigramme d'une entreprise.
Cest simple et bien fait.
La seconde est classiquement pré-
sentée par fonctions. Les fonctions
apparaissent dans l’ordre alphabéti-
que de la lettre-code qui sert a les
appeler, donc sans aucune logique.
Si l'on se souvient par ailleurs que
les mnémoniques sont parfois étran-
ges, on concoit qu’il edt été préféra-
ble de choisir un autre ordre !
Ne croyez pas que l'index final va
apporter une aide supplémentaire : il
est alphabétique lui aussi..
Enfin, pas de synoptique comme cela
existe maintenant pour la plupart des
logiciels.
Avantages : Bonne approche par le
"Tutorial”.
Inconvénients : Ordre de présenta-
tion peu logique dans la partie "Ma-
nuel de Référence” - Absence d’un
tableau synoptique - Documentation
en anglais seulement, mais pour un
produit encore non commercialisé en
France.
Synthése : C’est propre et bien pré-
senté, comme c’est généralement le
cas pour les documentations améri-
caines - Mais, a l'exception de la par-
tie apprentissage, c'est fort peu
commode 4 exploiter.
Conclusion
En avance par rapport aux logiciels
de dessin qu’on voit maintenant sur
le marché, Charts Unlimited reste un
produit trés attrayant et tres compéti-
tif, puisqu’il n’exige aucun accessoire
matériel.
Parmi ses faiblesses : L’isolement
du logiciel qui, par ailleurs, ne dis-
pose d’aucun outil de calcul - L’im-
possibilité de descendre au niveau du
point élémentaire - Un traitement
moins complet des objets utilisateur
que des objets standards - Une insuf-
fisance de sécurité au niveau de la
sauvegarde.
Et, 4 un moindre titre: Une impres-
sion extrémement lente - Un certain
ésotérisme dans la désignation des
commandes - Une documentation
peu facile a exploiter.
Parmi ses forces: De trés nom-
breuses fonctionnalités, capables de
satisfaire un utilisateur exigeant - Un
écran clair, avec rappel possible d’un
schéma complet pour contréle - D’in-
téressantes solutions d’impression -
Une approche aisée et un apprentis-
sage rapide - De trés utiles notions
de zones, d’objets et de symboles.
Et, 4 un moindre titre : Un bon tuto-
rial - Une agréable facilité de configu-
ration du systéme d’impression.
Pour les possesseurs
d’Apple //e
Attention a la touche "CAPS
LOCK”, qui doit toujours étre enfon-
cée (sauf en mode texte): dans le
cas contraire, le logiciel “ne
comprend rien”, refuse toute entrée
sur la ligne réservée et ne prévient
pas (mais ne va pas jusqu’a se blo-
quer). =
PDs. Etfecti¢
‘TEUS 1
{ 1 i
Adn/F in. Commerc. Product. Etudes
HERA WERHES ERAKLES| PHOEBUS 4
+ + i} } { t { i
fAd.Gen] [Conpt.| [Nectar] [Autres] [Market] [Gest. | [stocks] [Usine ] [Rech.] [Labo] [Prod] [inter.
= “ 1-| | ce 12
ATHENA} | EROS ” Mages | |kRoWOS) jaRTE=.| /CYBELE] [HEpHA-) | RHEA Dyouy PH
1? agents 8 cadres 12 cadres 21 cadres et techniciens 16 agents 276
85 representants (1) 125 owriers
Impression CHARTS UNLIMITED
Pom’s n° 12
Eftecti¢ total : 295
Etebli le 31/1/1984
Le P.
13
DUO DISK
PROMOTION APPLE 1!
NOUVEAU PRIX
‘spares capaci 2
Comorenant 1 Uc APPLE le
1 MONE aPme
1 dug
ye
eFaN
IMAGE WRITER 5810 F
imprimante congue par APPLE pou voke APPLE.
Caratnstues
—majusees, miuszues
‘yapmque sot gat pont
COFFRET APPLE 698 F
Osmensons enigues au cote APPLE, Ven avec
ou sans ocaupe numérique
CLEF EW MAIN
trates,
= Ge de OW
20K de Rant
Maroge aie
we
1 MAGE WRITER
1 SET DE LOGICIEL
PU 68000 16192 bis
{gene menopnoniques
ae Let poer
ENSEMBLE APPLE I
NOUVEAU PRIX
Disponiieuniqutment pour APPLE
‘ssentoleat pour des applet
UNE IMPRIMANTE
CLEFS EN MAIN
POUR VOTRE APPLE
=|
CARTE LANGAGE 16K APPLE
TUG APPLE
1 WONITEUA APPLE
+1 LECTEUR § PouCeS
1 SYSTEME APPLE FAN
pes yp
pascal ‘haa is
Disponible égslement en compete (sans ROM
ia (98 Fs
Comprenant
12800
APPLE Ill
NOUVEAU PRIX
Comprenant
WC APPLE 250
1 MONITEUR APPLE
1 DISUE OUR So
LOGICIEL 808°
F ae
oh
JEUX APPLE
Pont ba mains
Point Sat maths?
000
Sorclirie
Chopin
Fathoms 40
Zamen
Benes
ny
Heit |
CARTE 6522 VIA A
Commande de processus ?
Vous averbesona une care 6522. Ee vous permet ge
spose de 32 hes que vous pouver tint comme
tet ens des sorties
APPLE FAN
ces aucun pergage pou 82 bsaton
0 colones
40 colons tend
495 F
‘ae vote APPLE es chang en cartes extunson
son du mele eoaisement APPLE FAN et
Un venta carrosse qi sng 8 exter & ne
80 Colonnes APPLE
es 2 cates distributes pr APPLE santaaspensbles
ans fa majrté des appteatonspotesionneles
Vatie APPLE IE sea, wee
tend la apace RAM 2 128
Fight ssmulitor
OF 989
CARTE EVE
998 Fs
wT Fs
AK 40 1464 F
FLOPPY APPLE 3 POUCES
2950 F
CARTE 8088 APPLE
1 Ges appeansprtssongetes gun
des ttn temps fess apes
tos wegue complete ove SEN i
ots
INTERFACE SERIE APPLE
Cate cate permet 2 modes de tava
ihalson AS2a2 classique avec sgnaux de WAND:
— ison RS232 ype MODEM bisrectonele
1360 F
Extension 6 clones
Ra
te
sare petal
2970 F
Saver vous que le toms de ransen un let 3
ouots et seinen dengue ox dun gue
Sur 700 iar teu ITACHI Are avantage
ine oes suppor et er soland Ge leur pet
Ineoriquementabesser 50K Ge mémote mas pout
"estar ampati ave fe DOS 3-8 Vest ies 40K
JOYSTICK
320 F
“a
its. Autre avanage spose de
shea ago 4 pouvleWe iat 1 place des
pales
CARTE TAXAN COULEUR
a
Coad
ses
mais
Indispensable pour interfner votre APPLE avec un
APPLE Ie 605 Fs
PPLE IE 40 Fs
‘pon 80 colomes ine
:
KP
Maniteur couleur ede AB." Bande podsine vio 15 M2. RE
soliton forgone 380. Resclutonvereae 262.
Moriteut coir erie” ante
‘tsolutonhorebatl S10, Résolion verte 262
Imprimante 0 10's "Ttlet sont
nur aveentrodueton Tei eve ype mache 4 tere
KP 911
Imprimante 132 ¢ 148 cps sine eaadsguts que a 810
psa video > 18
126 F
320 anne
HORLOGE APPLE 785 F
Inaiqueen cara vos programmes hur, a minute et
lseeonde
CLAVIER TYPE APPLE
CARTE 6809 APPLE 2800 F
onaue avec sa asquete FLEX et son manuel etl
Came donne a vote APPLE a pussance gu CPU 8809,
{4 MOTOROLA
Hy aa
Send ver gone 18M pour vote APPLE
DISQUETTES
FLOPPY 5 POUCES
COMPATIBLE APPLE
2600 F
PARALLELE APPLE
|
1360 F
a same fateh rst ac a fen
os ne 1 6 al ane! mpstrs’ OME 1562 F Eien rene ener
e dans le ‘Machine language disk 1/0. 378,20 F En liaison directe avec 'a RAM APPLE vous pouver | Complete sans togiciel 1990
“ Doss de mimarsation su csquete ces mes | The evstm 41 80 37020 F | aaiser ou moder ectemen We cou hea
aot made 6 We Bnei we ot | Cnr wn ore el Done oder ou eC 88
LOGICIEL APPLE
+ wsicaLe (rang)
2100 F
mca 2420 F
: 4690 F
serio 100 F
PPLE WRITER trator ob te SRF
BUSINESS GRAPHIOUE 1975 F
“QUICK FILE Water dicho 100
MSILE sone eson lee EO
APPLE LO’ 1600 F
AGA ge langage 1820 F
200 F
5 OC BASE 200 = Ox TEXTE 3000 F
CARTE APPLE-TELL
ie
OTHER MYSTERIES
the custom app!
Cceglves sont nite mls eprdsemont ie NEC PLUS
ULTRA ce itatureennque Tous les Secrets ot
vate TRGB ou Ge are APPLE gets,
as 0052 sects ‘ne mysteries 26.00
518.00 F
us
Haw 0 daon TS
780 avec CP/M APPLE
3100 F
La carte 280 es dsguetes GPM is vais), pas oes
Imanuels nombreux et complet, vole ce Que vous
Pogose kIT CPM ve MICROSOFT Fonchonne aur
Rebtel I
area, gee pani en von cgi
sang GP Ata sans mane 388 5
KOALA PAD 1470 F
Cue let de agtastonparet ge ede toutes
Testes ettus es rapismesen ores, conme st
‘une table dessin Verde avee manus on Fane
logic pour APPLE ‘io Fs
£
‘90m
a
F
0
oF
F 0
6 OFOD S400 F
PROGRAMMATEUR DE MEMOIRES |
‘Aves lai ng sur BOM rambo pret de
Drgraminer es 2708 2516-2532-27922798 en 21 0
ov
CARTE RAM 128K APPLE
Compatibie APPLE i+ ou APPLE IE cet carte ois
owed son prope syste “REFRESH ef cone ne
14
Pom’s n° 12
Cryptographes et arithméticiens, a
vos claviers !
Ce Calculateur Entier permet de faire
des opérations avec de trés grands
nombres. Il accepte jusqu’a 500 chif-
fres par nombre pour les calculs. Le
“prompt” qui indique que le pro-
gramme attend vos ordres est le
signe pour-cent "%”"
Les régles de syntaxe de ce Calcula-
teur Entier sont formalisées en nota-
tion BNF. Les unités syntaxiques dé-
finies sont entre chevrons ("<” et
">"), Les termes de leur définition
suivent les trois symboles ” Le
signe "!” sépare les différentes
formes que peut prendre une unité
syntaxique. Les parties optionnelles
sont notées entre accolades ("{” et
”}"). “RETURN” signifie: taper la
touche RETURN. Tous les autres
symboles qui ne sont pas entre che-
vrons forment l’'alphabet du langage
du Calculateur.
Mise en route
Le code source Lisa est fourni (CAL-
CULATEUR.L), ainsi que le code
objet en binaire (CALCULA-
TEUR.B). La version standard est as-
semblée 4 l'adresse 2112 (décimal)
ou $840 (hexa). Pour lancer le pro-
gramme, il suffit de faire :
BRUN CALCULATEUR.B
L’écran est effacé et on peut lire, en
haut et a gauche :
FAIRE : CALL 2112
Si l'on exécute cette instruction, on
se retrouve sous le contréle du Cal-
culateur Entier. Le prompt est le
signe pour-cent "%”
Si, par accident, on quitte le pro-
gramme (par exemple en faisant
RESET ou une erreur DOS), on peut
y retourner sans perdre les variables
en cours d'utilisation. Pour cela, il’
faut faire :
& (en Applesoft) ou CTRL-Y (en
mode moniteur).
Si, a la suite d'une sortie, on désire
réinitialiser le programme, il faut
faire :
CALL 2112 (en Applesoft) ou 840G
(en mode moniteur)
Si la position du programme en mé-
moire ne vous convient pas, vous
pouvez l'assembler A une autre
adresse (4 condition qu'elle soit
comprise entre $805 et $66D0).
Tout ce qui précéde reste valable,
Pom’s n° 12
Le Calculateur Entier
seule l'adresse d’appel change. Au
début, vous verrez apparaitre sur
votre écran :
FAIRE : CALL aaaa
ot aaaa sera l’adresse décimale cor-
respondant a I’adresse hexa d'origine
de votre programme. Si par exemple
vous mettez "ORG $805” en ligne 2
du texte source, le programme affi-
chera :
FAIRE : CALL 2053
Etudions a présent les possibilités de
ce programme.
Commandes
Le Calculateur Entier est un interpré-
teur de lignes. Chaque ligne de
commande contient au plus 250 ca-
ractéres et doit se terminer par “RE-
TURN”.
<Ligne> ::=
<Commande>”RETURN” ||
<Commande DOS>"RETURN”
<Commande> ::=
{ <Diése>}<Instruction>||
<Commande> :
{ <Diése>}<Instruction>
<Diése> ::= <Constante>#
Il peut y avoir plusieurs instructions
par ligne, séparées par deux-points
”:”. Les blancs ne sont pas pris en
compte.
Le <Diése> optionnel devant une
<Instruction> représente un facteur
répétiteur. La constante qui le pré-
céde, et qui doit étre un entier positif
inférieur 4 256, indique combien de
fois la ligne doit étre exécutée (voir la
section sur les facteurs répétiteurs).
Une <Commande DOS> est une
commande du DOS standard. En
fait, on utilisera seulement les
commandes CATALOG, BSAVE
(pour sauvegarder les résultats d’un
travail), BLOAD (pour récupérer un
travail en cours), PR#0 et PR#1
(pour diriger l’affichage vers l’écran
ou l'imprimante). Une commande du
DOS doit bien sir étre seule sur sa
ligne
Exemples de lignes :
%BLOAD nomfichier “RETURN”
% 2243: A =2/3:R: $: @ "RE-
TURN”
Le signe pour-cent °%” est le
prompt et la touche RETURN est
tapée en fin de ligne. Nous verrons
plus loin la signification du "$” et de
Parrobas "@”
Jacques Duma
Instructions
Il y a trois types d’instructions, pour
Vnitialisation du systéme, les affecta-
tions, et les affichages.
<Instruction> ::= & ||, |] y || <Affec
tation> || <Affichage> |[ <Rien>
<Rien> =
La virgule (,) est une pause entre
deux instructions. A l’exécution, trois
bips sont émis et il faut appuyer sur
une touche pour continuer. Si
CTRL-C est appuyé @ ce moment-la,
il y a une interruption normale.
Le guillemet (”) permet d’introduire
des remarques dans le déroulement
dun calcul. Tout ce qui suit le (”)
jusqu’au (:) suivant ou jusqu’a la fin
de la ligne est simplement recopié a
l'écran (les espaces sont supprimés).
Par exemple
%"ZERO : A=0: 2A:
A=A+1: "UN : 2A: "FINI
affichera
ERO
= 00
UN
=01
FINI
<Rien> signifie q’une_ instruction
peut étre vide (dans une ligne, on
peut avoir ”::” sans rien entre les
deux-points séparateurs).
Initialisation
& est l'instruction qui permet de dé-
saffecter toutes les variables en cours
Cutilisation. Cette instruction, avant
de réinitialiser tout le systéme, de-
mande confirmation par :
RAZ (O/N) ?
Si la réponse est O pour OUI, le sys-
téme est réinitialisé; dans le cas
contraire, on retourne au niveau de
commande sans rien perdre.
Attention : le chargement d'un fichier
de variables a partir d’une disquette
fait perdre tout le contenu actuel de
la mémoire.
Instructions d’affectation
Ce programme n’est qu’un calcula-
teur et non un analyseur d’expres-
sions arithmétiques. On ne peut donc
faire qu'une opération par instruc-
tion, mais on peut avoir plusieurs ins-
tructions par ligne.
Remarque : si les nombres sont trés
grands, les calculs peuvent durer un
temps appréciable; il ne faut surtout
pas s’impatienter.
Se UN
Les additions et soustractions sont ra-
pides.
Une multiplication de deux nombres
de 250 chiffres peut durer jusqu’a 15
secondes.
L’élévation a une puissance peut at-
teindre 25 secondes (2 1685 par
exemple)
La division est la plus longue : la di-
vision d'un nombre de 500 chiffres
par un nombre de 1 chiffre peut
prendre 60 secondes.
<Affectation> ::=<Variable>=
<Expression>{;<Variable> }
<Expression> ::=
{-}<Primaire> ||{-}<Primaire>
<Opérateur><Primaire>
<Primaire> =
<Variable> ||<Constante>
<Opérateur> ::=, '
+q-ded
Les opérations permises sont donc
laddition, la soustraction, la multipli-
cation, la division entiére (avec "/”),
qui peut fournir son reste (A condi-
tion que les deux opérandes soient
positifs), la puissance entiére a expo-
sant positif (avec ” ”) et enfin la
multiplication par une puissance de
10 (avec l’'apostrophe).
Voici quelques exemples :
A=-3+123:_ B=A°5: C=AB
D=~AsC: C=12-A: A=A/A‘A:
C=33/5:B
Pour la division entiére, on a avec le
reste la possibilité d'une affectation
double. Exemple
Q=13/5_: la valeur 2 est affectée a
la variable Q.
Q=13/5;R : la valeur 2 est affectée
4 Qetle reste 3 aR.
R=13/5;R : la valeur 2 est affectée a
R, puis 3 est aussi affecté 4 R. Le 2
est donc perdu, mais on a ainsi ob-
tenu le reste de la division en utili-
sant une seule variable ..
L’option {;<Variable> } n'est accep-
tée par le Calculateur, a la suite
d'une affectation, que dans le cas de
la division. Dans les autres cas, une
erreur est détectée.
L’apostrophe (’) permet de faire trés
rapidement les multiplications et divi-
sions par les puissances de 10 (des
décalages). X’N est égal 4 X*(10 N).
X et N peuvent étre positifs ou néga-
tifs. Par exemple, si N=5 et M=—
alors
? 123456789'N donne =12 3456
7890 0000
? 123456789'M donne =01 2345
Si l'exposant de 10 est négatif, cette
opération ne rend pas de reste,
contrairement a la division.
Limites - Les régles suivantes
doivent étre respectées :
@ les deux opérandes d’une division
doivent étre positifs;
il n’est pas possible de diviser par
zéro;
Texposant d'une puissance doit
étre positif;,
tout résultat aprés calcul doit avoir
moins de 509 chiffres.
Texposant de 10 dans (’) ne doit
pas dépasser 511 en valeur abso-
ue.
Si l'on désire affecter 4 une variable
un nombre de plus de 250 chiffres, il
faut procéder par étapes car la ligne
est limitée 250 caractéres. Ainsi, un
nombre de 400 chiffres sera affecté a
la variable X en deux lignes
% X=(la suite des 200 premiers chif-
fres)'200 “RETURN”
% X=X+(la suite des 200 demiers
chiffres) “RETURN”
Variables
On dispose de 26 variables distinctes
Chaque variable a pour identificateur
une des lettres de l’'alphabet (A...Z)
et pour valeur un nombre entier rela-
tif, cest-a-dire un entier positif, nul
ou négatif.
<Variable> ::=
AIBIC!DIE!FIG!HII!J!K!L!IM!INIO!P!Q
IRISITIU!IVIWIX!Y!Z
A /initialisation du systéme, les varia-
bles ne sont pas affectées (elles n'ont
pas de valeurs)
L'utilisation d'une <Variable> non
initialisée dans une <Expression>
provoque le message d’erreur :
? VARIABLE ’x’ NON AFFECTEE
Pour utiliser une <Variable>, il faut
donc l'initialiser en lui affectant pour
valeur une <Constante> ou une
<Expression>.
Constantes
Une constante est un nombre entier
positif
<Constante> ::= <Chiffre> ||
<Constante><Chiffre>
<Chiffre> ::= 0!1!2!3!415!6!7/8!9
Il y a cependant une limitation a la
taille des constantes. On ne peut pas
entrer plus de 250 caractéres au cla-
vier; de plus, aprés calcul, le nombre
le plus grand ne peut avoir plus de
508 chiffres.
Les blancs étant non significatifs dans
une ligne, on peut entrer des espaces
entre les groupes de chiffres d’une
constante, ce qui facilite l’écriture des
trés grands nombres.
Si une <Constante> est utilisée de
maniére répétitive dans un calcul, il
vaut mieux l'affecter 4 une <Varia-
ble> et utiliser la <Variable>. Les
calculs seront plus rapides. Le co-
dage d’une constante est en effet
assez long.
Instructions d’affichage
Ces instructions permettent de visua-
liser les résultats sur 'écran (ou sur
Timprimante, si l'on a fait préalable-
ment PR#i avec l'imprimante sur le
Slot i).
<Affichage:
$||@ foe 3<cExpression>
?<Expression> affiche la valeur de
Texpression. Le Calculateur passe a
la ligne et écrit "=" suivi de la va-
leur. Si l’expression est une division,
deux résultats sont donnés: le quo-
tient puis le reste
Les nombres sont écrits avec un es-
pace tous les quatre chiffres pour fa-
ciliter la lecture. Un caractére CR
(Carriage Return) est envoyé tous les
79 caractéres pour que les sorties sur
imprimante soient formatées correc-
tement.
On peut afficher les valeurs de toutes
les variables en service @ un instant
donné par @. Ceci écrit :
AFFICHAGE DES VARIABLES AF-
FECTEES : variables et valeurs, par
ordre alphabétique
Lvaffichage écran est rapide. On peut
linterrompre entre chaque variable
en tapant sur la barre d’espacement:
on le relance de la méme_facon.
CTRL-C permet d’arréter I'affichage
et de récupérer le prompt.
On peut aussi afficher en hexadéci-
mal l'adresse et la longueur de la
zone mémoire 4 sauvegarder pour
conserver les valeurs calculées et af-
fectées aux variables en service
’ donne l’adresse et la longueur
de la zone mémoire 4 sauvegarder
par un BSAVE. Le format est le sui-
vant: ZONE A SAUVEGARDER
A$xxxx,L$yyyy
ot xxxx est l'adresse du début de la
zone a sauvegarder et yyyy sa lon-
geur, le tout en hexadécimal.
Par exemple, pour sauvegarder les
variables calculées sur la disquette
sous le nom de fichier "MES-CAL-
CULS”, il faut faire :
%BSAVE__MES-CALCULS,A$xxxx,
L$yyyy “RETURN”
La valeur de A$xxxx dépend de
l'adresse 4 laquelle le programme a
été assemblé (on a normalement
A$1700). La valeur de L$yyyy est
L$0070 a 'initialisation du systéme.
Chaque variable affectée occupe 256
octets supplémentaires ($100). On
aura ainsi "L$0370” si 3 variables
ont été affectées.
Pour récupérer ultérieurement les va-
leurs sur lesquelles on travaille, il suf-
fira de faire :
%BLOAD MES-CALCULS "RE-
TURN”
Pom’s n° 12
Attention : le contenu de la mémoire
avant le BLOAD est perdu.
Les facteurs répétiteurs
Une ligne normale est exécutée une
seule fois. Si le <Diése> est utilisé,
on peut exécuter une <Ligne> ou
une fin de ligne plusieurs fois.
La constante qui précéde le diése
(#) doit étre un entier positif inférieur
ou égal 4 255. Ce nombre indique
combien de fois il faut exécuter tout
ce qui suit le diése jusqu’a la fin de
la ligne (jusqu’au RETURN”).
Il peut y avoir plusieurs fois le <Dié-
se> sur une méme ligne. Chaque
facteur répétiteur porte sur ce qui le
suit jusqu’a la fin de la ligne. Le Cal-
culateur n'est pas programmable,
mais le <Diése> permet de faire
assez facilement des calculs répétitifs
(comptages, factorielles).
Sil y a trop de facteurs répétiteurs
sur une méme ligne, il est possible
que le programme soit mis en défaut
par saturation de la pile. I] vaut donc
mieux éviter d’utiliser plus de 15 fois
le diése dans la méme ligne (la
contrainte est raisonnable ...)
La syntaxe impose que chaque diése
soit séparé du suivant par au moins
une instruction —_ (éventuellement
vide). Il y a donc au moins un deux-
points entre chaque paire de diéses.
Si l'on veut afficher 500 fois la valeur
3, il faut taper la ligne suivante
% 10# : 50 # 23 “RETURN”
Voici quelques exemples :
Le signe pour-cent "%" au début de
la ligne est le prompt. La suite est
tapée par l'utilisateur jusqu’au "RE-
TURN”. Les blancs sont non signifi-
catifs (on peut ne pas en mettre). Le
reste est affiché par le Calculateur :
% ? 2+3 “RETURN”
3# 22+3 “RETURN”
7% A=0: 100# A=A+1
% 2A
=0100
% A=0: F=1: 10# @:
+1: FEAsF
AFFICHAGE DES VARIABLES
AFFECTEES :
A=00
F=01
AFFICHAGE
AFFECTEES :
A=10
F=0362 880
AFFICHAGE
AFFECTEES :
A=20
F=0243 2902 0081 7664 0000
AFFICHAGE DES VARIABLES
10#A=A
DES VARIABLES
DES VARIABLES
Pom’s n° 12
AFFECTEES :
A=30
F=0265 2528 5981 2191 0586 3630
8480 0000 00...
Cet exemple calcule dans F la facto-
tielle de A. Il y a deux boucles imbri-
quées. La premiére affiche les variables
affectées ("@” est exécuté 10 fois), et
exécute la seconde boucle. La seconde
incrémente A et multiplie A par F. Les
résultats ne sont donc affichés qu’une
fois sur dix. Le dernier affichage est
A=90 et F la valeur de factorielle 90
(90!). On termine alors les deux bou-
cles par le calcul de factorielle 100
(100!), mais la valeur n’est pas affi-
chée. Si l'on fait "@”, on affichera
A=100 et F=100! A titre d’informa-
tion, le dépassement de capacité est
obtenu pour la factorielle de 256
(2561).
Un autre exemple utile
% N= 1225313: K=3: 10#: 60#
Q=N/K;R: X=1/R: K=K+2 "RE-
TURN”
? DIVISION PAR ZERO
% @ “RETURN”
AFFICHAGE DES VARIABLES AF-
S:
@ ”
AFFICHAGE DES VARIABLES AF-
FECTEES :
K=43
R
X=00
La premiére ligne permet de chercher
si le nombre N=1225313 est premier.
Pour cela, on le divise par tous les
nombres impairs a partir de K=3 et
ceci 600 fois (on arrive ainsi a la racine
de N). Il faut donc ajouter 2 4 K 600
fois (10# :60 #).
Le quotient est Q, le reste est R. Si N
nest pas premier, le reste R prendra la
valeur zéro 4 un certain moment. L’ins-
truction (X=1/R) permet d’interrompre
le calcul cet instant (car il y a divison
par zéro).
Dans notre exemple, ceci se produit
aprés 4 minutes de calcul. On affiche
alors les variables, ce qui permet de
voir que N=KxQ, c'est-a-dire que
1225313 = 997 * 1229 et n'est done
pas premier.
On essaye de méme de décomposer
1229 en facteurs premiers. Mais, cette
fois, on reprend la main sans erreur.
Le nombre 1229 est donc premier.
Pour des grands nombres, le temps de
calcul reste hélas prohibitif.
Interruptions
On sait déja qu’il est possible de pro-
grammer des arréts (,), d’interrompre
ou de reprendre T’affichage avec la
barre d’espacement. On peut aussi
arréter les calculs par CTRL-C. Cette
interruption est non destructive, car
elle n’est pas prise en compte n’im-
porte quand. Si I’on fait CTRL-C du-
rant l’affichage, le message d’inter-
ruption apparait 4 l’écran et on
retourne au niveau de commande.
La valeur des variables (a cet instant)
n’est pas modifiée.
Si Pon fait CTRL-C au cours d'un
calcul, on peut attendre l’interruption
entre deux et une dizaine de secon-
des. En effet, le CTRL-C n’est pris
en compte que dans les divisions et
les puissances, mais pas dans les
multiplications. Dans le cas d’une af-
fectation, si le calcul est interrompu,
laffectation n’a pas lieu et la valeur
de la variable demeure inchangée.
Si le CTRL-C intervient au cours
d'un calcul avec facteur répétiteur, il
est difficile de savoir si l’interruption
a lieu au cours d’un calcul (s'il y a
*/ ou” ” dans le calcul), ou si ’in-
terruption a lieu entre deux répéti-
tions. Il faut alors regarder la valeur
des compteurs que l’on a_utilisés
dans la boucle pour évaluer la posi-
tion du point d’interruption
Remarque: il n’est pas possible
de reprendre un calcul interrompu.
Soyez donc patients, car les temps
de calcul sont parfois importants.
Il peut aussi se produire des interrup-
tions accidentelles. Si l'on tape la
touche RESET, on se retrouve soit
sous contréle de I’Applesoft (ROM
Autostart), soit sous le contréle du
moniteur (ancienne ROM).
Pour retourner dans le Calculateur
sans perdre le travail en cours, il faut
faire "&” (a partir de l'Applesoft) ou
CTRL-Y (a partir du moniteur). Si
une erreur est faite dans une
commande du DOS, on quitte aussi
le Calculateur pour se retrouver sous
contréle du Basic. La procédure de
retour est la méme.
Attention : si on fait RESET pen-
dant l'affectation d’une variable,
celle-ci sera incorrectement affectée;
des erreurs pourront alors se pro-
duire avec cette variable. Méfiez-vous
par conséquent du RESET.
Pour utiliser l’Applesoft et le Calcula-
teur ensemble, i faut :
- assembler le programme 4 l'adresse
$66D0 (ORG $66D0 et OBJ &800)
- aprés sauvegarde correcte du code
binaire, faire BRUN;
FAIRE CALL 26320 apparait a
Yécran. Il faut alors faire :
HIMEM:26320 : CALL 26320
;
:
L?.
TO
Le Calculateur est
alors protégé
contre le Basic.
Entrées-Sorties
Si une imprimante est branchée sur
le slot i, faire PR#i pour sortir les ré-
sultats sur papier. La présentation &
Timprimante n'est pas identique a
celle de l’écran.
Certains CR ne sont transmis qu’a
lécran pour plus de lisibilité, mais les
lignes ne sont pas sautées sur |’impri-
mante. De plus, les trés grands nom-
bres sont présentés par lignes de 80
caractéres sur l'imprimante.
Si les sorties se font sur papier, on
ne voit rien @ l’écran. Mais si votre
interface d'imprimante permet de
conserver l'image écran grace & un
caractére de contréle, vous pouvez
entrer ce caractére (sans tenir compte
de l’erreur de syntaxe qu'il provo-
quera). Tout doit fonctionner norma-
lement.
Exemples
Voici le résultat d'une séquence de
travail normale. Ce qui suit le signe
pour-cent "%” est tapé au clavier par
Putilisateur, suivi de "RETURN"; le
reste est affiché par le Calculateur
Entier.
CALCULATEUR ENTIER
VERSION 1.2
<06.01.1984>
%?12345+ 128
=0124 68
S$
ZONE A SAUVEGARDER A$182C,
L$0070
%A=-123456789: $ | @: B =
A+A:@
ZONE A SAUVEGARDER $1700,
[$0170
AFFICHAGE
AFFECTEES
A= —0123 4567 89
DES VARIABLES
AFFICHAGE
AFFECTEES,
A= —0123 4567 89
B= —0246 9135 78
%?63/5 : ?-12%12 : 22
=12
= 03
= -0144
=0126 7650 6002 2822 9401 4967
0320 5376
? VARIABLE 'C’ NON AFFECTEE
%A= A+ —D
? PRIMAIRE INCORRECT
%A=3/0
? DIVISION PAR ZERO
%A=5/3;A : 2A: 2—3/A
=02
? OPERANDE NEGATIF
% A=0: 20# : 20# A=A+1
% 2A
= 0400
%... etc... etc.
DES VARIABLES
* 100 :?C
Résumé des régles syn-
taxiques
<Ligne> :=
<Commande>"RETURN” ||
<Commande DOS>"RETURN”
<Commande> ::=
{ <Diése>}<Instruction> ||
<Commande> : { <Diése> }
<Instruction>
<Diése> =
<Constante>#
<Instruction> ::=
& |j, ||” |] <Affectation> ||
<Affichage> || <Rien>
<Affichage > =
$ || @ || 2<Expression>
<Affectation> ::=
<Variable>=<Expression>
{:<Variable> }
<Expression> ::=
{-}<Primaire> ||{-}<Primaire>
<Opérateur><Primaire>
<Primaire> =
<Variable> ||<Constante>
<Variable> ::=<Lettre>
<Constante> ::=<Chiffre>||
<Constante><Chiffre>
<Opérateur> ::=
+i-deldod
<Lettre> =
AIBICIDIE!FIG!H!I!J!K!L!MIN!O!
PIQIRIS!ITIUIVIWIX!Y!Z
Les messages d’erreur
? ERREUR DE SYNTAXE
2 INTERRUPTION DE L’UTILISA-
TEUR
Lutilisateur a fait CTRL-C.
? FACTEUR REPETITEUR INCOR-
RECT
Facteur > 255, ou il manque #.
? DIVISION PAR ZERO
? OPERANDE NEGATIF
Les opérandes d'une division doivent
étre positifs,
? RESULTAT TROP GRAND
Le résultat du calcul a plus de 508
chiffres.
? EXPOSANT NEGATIF
Pour une puissance, l’exposant doit
étre positif.
? AFFECTATION INCORRECTE
Il peut manquer le signe (=).
? PRIMAIRE INCORRECT
? VARIABLE ’x’ NON AFFECTEE
La variable dont le nom est (x) n’est
pas en service.
? EXPRESSION INCORRECTE
? MAUVAIS OPERATEUR
NDLR: le Calculateur est trés utile
pour lire le livre passionnant de Fran-
cois Le Lionnais “Les nombres re-
marquables”, chez Herman. Encore
une fois, Pom’s vous offre un pro-
gramme qui, a lui seul, se vendrait
plus cher que l’'abonnement d'un an
avec disquettes. Nous n’avons pas
publié le programme source, car il y
en aurait pour 15 pages en deux co-
lonnes ... Le source, ainsi que la ré-
capitulation, se trouve comme d’ha-
bitude sur la disquette d’accom-
pagnement du numéro. Les droits de
auteur seront bien entendu établis
sur la base de la longueur totale de
Particle, incluant ces 15 pages non
publiées.
Calculateur Entier
Code objet
¥840.1840
0840- AS 4C 8D F5 03 8D F8 03
0848- AS SE 8D F6 03 8D F9 03
0850- A9 09 8D F7 03 8D FA 03
0858- 20 58 FC 20 8C 17 C6 C1
0860- CS D2 C5 BA AO C3 Ci CC
0868- CC AO 87 00 A2 40 a9 08
0870- 20 24 ED 20 8E FD 20 8E
0878- FD A9 4C 8D 40 08 AS 8B
0880- 8D 41 08 AS 08 BD 42 08
0888- 4C D3 03 20 58 FC 20 9B
0890- 17 AO AD AD AD AD AD AD
0898- AD AD AD AD AD AD AD AD
O8A0- AD AD AD AD 8D AO C3 C1
O8A8- CC C3 DS CC C1 D4 CS DS
08BO- D2 AO C5 CE D4 C9 CS D2
O8B8- 8D AO AD AD AD AD AD AD
08CO- AD AD AD AD AD AD AD AD
O8C8- AD AD AD AD 8D AO AO AO
O8DO- AO AO AO AO DE CS D2 DB
O8D8~- CS CF CE AO AO B1 AE B2
O8EO- 8D AO AO AO AO AO AO AO
O8E8- AD AD AD AD AD AD AD AD
O8FO- AD AD AD AD 8D AO AO AO
O8F8- AO AO AO AO DO C1 D2 AO
0900- AO CA AE AO C4 DS CD C1
0908- 8D AO AO AO AO AO AO AO
0910- AD AD AD AD AD AD AD AD
0918- AD AD AD AD 8D AO AO AO
0920- AO AO AO AO BC BO B6 AE
0928- BO B1 AE Bl B9 B& B4 BE
0930- 8D AO AO AO AO AO AO AO
0938- AD AD AD AD AD AD AD AD
0940- AD AD AD AD 8D 8D 00 A2
Pom’s n° 12
0948- 7F Ao
0950- FA AS
0958- 8D 98
0960- FC 20
0968- AD AD
0970- AD AD
0978- AO C3
o980- D4 cS
0988- C9 CS
0990- AD AD
0998- AD AD
O9A0- AO D2
O9A8- AO D3
O9BO0- D4 C9
O9B8- AD AD
o9Cco- AD AD
o9cs- 00 De
O9D0- ag 00
osp8- 20 D1
O9EO- FO 16
OSE8- A& 68
O9FO- 8A 48
O9F8- 68 DO
OA0O- 48 AD
OAO8- AS AS.
0A10- 00 FO
OA18- DF 09
OA20- DF 15
0A28- 18 20
0A30- 53 OE
OA38- OA 6D
OAagO- D1 15
0Ad8- 8D 10
OASO- 15 90
OAS8- 18 OA
0Aa60- 90 03
OA68- 90 03
OA70- 20 D1
0A78- 18 90
OA80- 18 20
Oags- 4C 45
OA90- D3 15
OA98- 18 48
OAAO- DO 03
OAA8- FE 17
OABO- 7F OC
OAB8- 8D C2
OACO- OA 4C
OAC8- 06 20
OADO- 8E FD
OAD8- 20 C9
OAEO- 20 3A
OAE8- 5A 60
OAFO- 60 7F
OAF8- CF DO
OBOO- 17 88
OBO8- 88 88
OB10- AO AO
OB18- AO AO
0B20- 20 C9
OB28- 20 3A
OB30- FF 8D
OB38- FB 20
OB40- D8 09
OB48- FF 15
OB50- CS AO
OB58- CS C7
OB60- AO Ci
OB68- FD AS
OB70- 17 ac
OB78- 20 DA
OB80- FD 20
OB88- D& 09
OB90- FF 15
OB98- C9 C3
OBAO- CS D3
OBA8- C2 CC
OBBO- CS C3
OBB8- 8D 00
OBCO- FF 20
Pom’s n° 12
fore}
00
18
3B
AD
AD
c1
DS
D2
AD
AD
cs
DS
cs
AD
AD
20
48
15
AA
8D
20
1B
FF
385
FS
20
30
co
10
10
29
18
31
30
4c
ac
15
03
co
16
48
20
ac
FO
8A
OA
FF
20
a5
FF
60
AO
03
88
88
AO
AO
is
FF
10
B7
20
20
font
cl
Aa
2c
ec
FD
8E
20
20
ca
AO
cs
Da
Ag
D7
9D
8D
4c
17
AD
AD
cc
D2
8D
AD
AD
DO
D2
8D
AD
AD
3A
48
co
cA
D2
ay
68
48
33
4c
co
79
15
18
18
OF
20
OE
03
45
45
29
4c
15
AD
cE
ce
Da
06
ry
BD
FF
FD
Fo
FO
20
638
00
4c
88
88
AO
8D
FO
20
co
15
co
8c
AO
D2
00
20
Aq
AD
FD
co
BC
cl
Dé
D3.
cs
cL
OB
1c
oo
co
AQ
AD
AD
c3
AO
AO
AD
AD
D2
AO
AO
AD
AD
FF
48
BA
68
15
1s
DO
Ao
DF
15
29
20
aD
8D
18
co
10
ac
16
16
OF
45
ca
D2
10
15
09
for
AA
(ors)
20
ac
17
03
8c
4F
8B
88
88
AO
00
03
3A
AD
8D
15
17
D3
ca
Ag
DA
00
98
20
15.
17
c7
font
AO
05)
8D
20
18
18
09
aD
AD
AD
DS
cs
AD
AD
AD
co
D3
AD
AD
AD
AZ
4c
FO
8D
48
4c
19
o1
6A
09
FO
OF
DF
10
10
6D
15
18
45
6D
8D
18
16
Ag
15
18
20
AZ
10
BD
18
cy
ca
4c
4c
17
6F
oc
08
88
88
Ao
4c
ac
FF
00
10
FO
DA
C1
cS
18
FD
AD
18
F9
FO
c1
cs
D2
ci
D3
co
3A
CA
Ag
20
AD
AD
AD
cc
CE
AD
AD
AD
D3
CF
AD
AD
AD
FS
DF
3B
D3
98
1A
48
48
FD
68
Bo
8D
15
18
18
10
20
AD
16
10
10
6D
8D
FO
48
AD
Di
05
Fa
04
aD
15
OA
Da
FF
82
4E
FD
20
88
AO
AO
Ds
FF
20
co
co
03
CF
DS
D2
20
20
99
20
17
03
ce
AO
co
ce
BA
OB
15
co
ee
29
bo
FD
20
Ag
10
20
oc
25
AA
FD
FE
838
£8
AO
20
Di
Fo
9A
OB
OB
EF
ai
for}
16
04
bo
BO
20
ac
OA
20
oD
2c
AD 2
18
2c
AD
18
03
00
for)
Ag
8D
18
18
23
AS
EE
18
2B
EE
13
DL
15
FF
OA
bo
o1
02
03
04
05
06
18
co
20
DF
03
OA
4c
co
2E
AD
OE
4c
15
04
Aa
F9
ry
68
co
FD
20
ag
FD
2F
aD
OF
FF
DA
09
17
FO
Ag
AD
22
3A
BO
ag
eo
1F
i8
20
4c
15
16
AA
15
39
AD
i8
AD
18
2F
Ds
12
DO
6D
2A
2F
8D
8D
18
27
EE
18
co
EC
2c
20
60
2B
23
1B
13
OB
03
Da
20
OE
BO
03
BD
17
Ag
Ey
18
FE
OE
18
FF
cD
ac
AA
Ag
Do
BD
FD
bo
BD
oc
FE
20
EO
20
ac
20
4c
2D
20
OE48- DO FA 88 DO F4 EE 13 18
OESO- 4C 33 OE EE 13 18 4F 13
OES8- 18 A9 00 38 ED 13 18 8D
OE60- 2D 18 AD 2E 18 8D 72 OF
OE68- AD 2F 18 8D 73 OF AE 2D
OE70- 18 BD FF FF C9 00 DO 09
OE78- EE 2D 18 E8 DO F3 CE 2D
OQE80- 18 60 AE 14 18 CA DO 03
OE88- 4C A6 OE CA DO 03 4C CA
OE90- OE CA DO 03 4C D8 OE CA
OE98- DO 03 4C 4F OF CA DO 03
OEAO- 4C 2A 10 4C 51 10 AD 1C
OEA8- 18 CD 20 18 DO 06 8D 2c
OEBO- 18 4C 50 12 20 1B 12 DO
OEB8- 03 4C BS 13 90 09 20 49
OECO- 14 20 D4 13 20 70 14 4c 4
OEC8- 98 12 AD 20 18 49 FF 8D
OEDO- 2C 18 8D 20 18 4C A6 OE E
OED8- 20 1B 12 BO 06 20 49 14
OEEO- 20 D4 13 20 BS 13 AD 1C
OEE8- 18 4D 20 18 8D 2C 18 AD
OEFO- 1E 18 8D 76 12 8D S54 13
OEF8- AD 1F 18 8D 77 12 8D 55
OFOO- 13 AD 22 18 8D 19 13 AD
OFO8- 23 18 8D 1A 13 AD 2E 18
OF10- 8D 79 12 8D 73 12 AD 2F
OF18- 18 8D 7A 12 8D 74 12 20
OF20- 12 13 FO 08 20 6E 12 CE
OF28- 15 18 DO F8 20 4E 13 CE
OF30- 1D 18 DO 03 4C A6 16 20
OF38- 12 13 FO 08 20 6E 12 CE
OF40- 15 18 DO F8& 20 4E 13 EE
OF48- 21 18 DO D3 4C 62 OF aD
OFSO- 20 18 FO 03 4C 6D 16 AD
OFS8- 1C 18 FO 03 4C 6D 16 AD
OF60- 2D 18 C9 FF DO 16 AD 2E
OF68- 18 8D 75 OF AD 2F 18 8D
OF70- 76 OF A2 FF BD FF FF DO
OF78- 03 4C 89 16 20 49 14 20
OF80- D4 13 20 70 14 AS 01 8D
OF88- 1A 18 AS OO SD 1B 18 AD
OFSO- 1E£ 18 8D 63 13 8D 31 13
OF98- 8D 3E 13 AD 1F 18 8D 64
OFAO- 13 8D 32 13 8D 3F 13 AD
OFA8- 26 18 8D 7A 13 8D 89 13
OFBO- 8D A7 13 8D AC 13 8D 9E
OFB8- 13 8D A3 13 AD 27 18 8D
OFCO- 7B 13 8D 8A 13 8D A8 13
OFC8- 8D AD 13 8D 9F 13 8D Aa
OFDO- 13 20 1B 12 FO 02 BO 11
OFD8- 20 SD 13 EE 1A 18 DO 06
OFEO- EE 1B 18 20 B7 15 4C D1
OFE8- OF AD 1A 18 DO 03 CE 1B
OFFO- 18 CE 1A 18 AD 1A 18 OD
OFF8- 1B 18 FO 1C 20 2A 13 20
1000- 74 13 CE 25 18 20 1B 12
1008- FO 02 BO DD 20 CA 12 20
1010- 99 13 20 B7 15 4C 05 10
1018- 20 62 OF 20 97 14 20 49
1020- 14 20 D4 13 20 70 14 4c
1028- 62 OE 20 22 14 20 ES 14
1030- 20 BS 13 AD C6 13 8D 44
1038- 10 AD C7 13 8D 45 10 A2
1040- FF A9 01 SD FF FF 20 0C
1048- 15 AD 20 18 FO 03 4¢ CS
1050- 16 AD 21 18 18 69 O02 10
1058- 03 4C A6 16 AD 22 18 8D
1060- C2 10 8D 7C 10 AD 23 18
1068- 8D C3 10 8D 7D 10 ag 00
1070- 8D 18 18 8D 19 18 8D 17
1078- 18 AZ FE BD FF FF 48 29
1080- FO 4A 8D 16 18 4A 4A 6D
1088- 16 18 8D 16 18 68 29 OF
1090- 6D 16 18 8D 16 18 20 FF
1098- 11 20 FF 11 AD 16 18 8D
10A0- 18 18 AD 17 18 8D 19 18
10A8- 20 FF 11 20 FF 1i 20 FF
10BO- 11 20 07 12 20 FF 11 20
10B8- 07 12 AS 00 8D 17 18 A2
40CO- FF BD FF FF 48 29 FO 4A
ee UN
19
OEE.
10¢8-
10D0-
10D8-
10E0-
10E8-
10FO-
10F8-
1100-
1108-
1110-
1118-
1120-
1128-
1130-
1138-
1140-
1148-
1150-
1158-
1160-
1168-
1170-
1178-
1180-
1188-
1190-
1198-
11A0-
11A8-
11B0-
11B8-
11¢0-
11¢8-
11D0-
11D8-
11E0-
11E8-
11FO-
11F8-
1200-
1208-
1210-
1218-
4220~:
1228-
1230-
1238-
1240-
1248-
1250-
1258-
1260-
1268-
1270-
1278-
1280-
1288-
1290-
1298-
12A0-
12A8-
12B0-
12B8-
12C0-
12C8-
12D0-
12D8-
12E0-
12E8-
12F0-
12F8-
1300-
1308-
1310-
1318-
1320-
1328-
1330-
1338-
1340-
8D
8D
18
14
11
2F
30
20
18
14
ES
20
2c
20
14
19
FF
AG
AD
68
AE
a.
22
AD
13
ce
18
70
18
16
AD
18
DA
8D
FF
AD
10
4c
13
2E
AD
18
19
18
60
1F
8D
12
FF
AD
18
79
8D
Fa
9D
1D
2D
FO
AD
18
C1
8D
Fa
3D
62
AD
18
2F
AD
18
BD
FF
20
18
7E
DO
18
7
DO
co
16
16
8D
18
AD
18
14
Ds
oD
20
14
BE
18
BS
20
18
48
16
2D
ac
2D
AD
18
BD
DO
68
14
ED
Ag
2E
8D
an
DB
39
2c
AD
AS
20
16
16
AD
18
FO
18
438
AE
1E
8D
12
7A
18
FF
18
03
1E
8D
12
c2
38
FF
OE
1F
8D
18
22
8D
FF
9D
62
60
FF
F2
60
FF
F2
00
18
18
16
co
19
6E
20
OE
18
49
20
14
8D
13
ag
6E
AD
AD
18
BS
18
2F
8D
18
EF
FG
FO
ac
18
8D
18
Ds
8D
11
rE
18
1D
16
22
18
18
17
60
06
8D
12
1D
DO
18
77
8D
BD
FF
cD
8D
4c
18
BF
i2
BD
FF
18
FF
8D
03
FF
FF
OE
AO
FF
4a
AO
FF
AE
Do
4a
68
18
05
18
BE
20
18
B7
20
1A
20
14
18
19
1A
6D
13
AD
18
8D
8D
FF
AD
03
62
18
1D
8D
11
54
8D
FF
8D
18
CE
14
2E
6D
18
AD
BO
18
46
AD
03
8D
12
8D
FF
cA
2D
2D
62
8D
BB
8D
FF
cA
1E
8D
12
00
8D
13
FD
FF
AD
04
ES
4A
04
Es
aD
09
4A
23
20
FO
oD
18
14
oc
FO
20
15
70
18
D4
Ag
18
18
18
18
Ag
2E
11
8E
33
2c
20
OE
BO
18
D7
AD
13
SS
ca
4c
cs
1D
ac
17
18
6D
1D
02
8D
12
23
BD
ES
76
AD
12
74
FF
Do
18
18
OE
BE
AD
12
BC
a
DO
18
FD
8D
13
02
A2
FF
CA
2D
18
bo
4A
18
Do
18
EE
6D
OF
07
03
6E
20
1s
Da
ac
14
20
13
00
90
FO
18
8D
18
8B
8D
a1
FF
18
12
38
03
AE
11
1E
AD
13
E8&
18
02
18
62
18
18
18
38
45
AD
18
FF
DO
22
2E
AD
12
7D
Fa
90
CE
4c
12
2
AD
i2
FD
Fa
8D
12
FO
8D
13
FE
FF
DO
18
AE
FA
4A
AE
FA
BD
1D
16
6D
12
4c
18
18
97
AD
OE
Eo
60
49
20
18
02
03
4E
90
21
8D
11
19
8D
8D
13
aD
ac
2D
AD
18
BD
DO
68
BO
20
OE
60
8D
18
cD
60
12
8D
FF
FS
aD
18
2F
A2
FF
Ds
03
2D
AS
AD
18
2F
AZ
FF
Da
FC
AD
12
FA
aD
FS
9D
Fl
8D
21
6A
8D
1D
6A
FF
18
1348-
1350-
1358-
1360-
1368-
1370-
1378-
1380-
1388-
1390-
1398-
13A0-
13a8-
13B0-
13B8-
13C0-
13¢8-
13D0-
13D8-
13E0-
13E8-
13F0-
13F8-
1400-
1408-
1410-
1418-
1420-
1428-
1430-
1438-
1440-
1448-
1450-
1458-
1460-
1468-
1470-
1478-
1480-
1488-
1490-
1498-
14A0-
14a8-
14B0-
14B8-
14C0-
14C8-
14D0-
14D8-
14E0-
14E8-
14F0-
14F8-
1500-
1S08-
1510-
1518-
1520-
1528-
1530-
1538-
1540-
1548-
1550-
1558-
1560-
1568-
1570-
1578-
1580-
1588-
1590-
1598-
15A0-
1S5a8-
15BO-
15B8-
1sco-
Do
18
FA
A2
88
18
FF
DO
BD
25
60
69
FF
FS
8D
13
E8
8D
91
AD
18
1c
ac
15
22
8D
18
8E
AD
18
35
AD
15
1F
8D
15
1D
AD
18
94
AD
18
26
8D
15
24
8D
18
92
AD
18
21
8D
15
27
8D
18
31
AD
18
28
ac
BD
18
94
BD
18
11
2E
8D
15
2c
9D
BD
F7
co
10
B7
AD
06
F3
A2
a8
FF
DO
4c
SE
Fa
FF
18
Fs
02
69
Da
ce
A2
Do
2D
15
1E
8D
18
8E
AD
18
35
AD
15
8D
15
1D
AD
18
94
AD
18
22
8D
15
20
8D
18
92
AD
18
1D
8D
15
23
aD
18
91
AD
18
24
ac
is
28
8D
18
8E
2E
8D
is
2c
8D
18
18
92
BD
2D
FF
60
10
co
15
00
8D
1D
3E
F4
FF
cE
13
FF
25
co
DO
A2
FF
9D
82
AD
Ag
8D
60
2F
8D
15
2D
AD
18
94
aD
18
1E
8D
15
1c
8D
18
92
AD
18
21
8D
15
2F
ED)
18
31
AD
18
1c
4c
15
22
8D
18
8E
AD
18
95
AD
15
8D
15
2D
23
8D
15
2F
8D
18
iF
91
BD
18
2c
4c
9D
B7
co
00
10
10
co
18
FF
60
FF
1D
AO
CA
18
00
F3
FF
Fe
FF
13
2F
00
2c
AD
18
94
AD
18
2E
8D
15
2c
8D
18
92
AD
18
2D
8D
15
23
18
91
AD
18
2c
4c
is
1E
8D
18
8E
AD
18
95:
AD
15
2F
8D
as
2D
AD
18
94
AD
18
1F
91
AD
18
2c
ac
ry
15
2E
8D
18
8E
FF
15
AO
co
co
ry
4c
60
FF
AO
cA
18
04
bo
AE
DO
CE
BD
CA
FF
AD
18
9D
2E
8D
15
8D
18
92
AD
18
21
8D
1s
2F
8D
18
91
AD
18
20
4c
15
2E
8D
18
8E
AD
18
95
AD
15
2B
8D
15
29
AD
18
94
AD
18
2E
8D
1s
2c
8D
is
2E
8D
18
8E
OA
AD
35
AD
15
FF
48
DO
10
68
co
1c
AO
CA
04
Do
AE
18
FA
25
09
25
FF
BD
CA
2E
8D
FF
AS
18
92
AD
18
1D
8D
15
23
8D
18
91
18
2c
4c
15
22
8D
18
8E
AD
18
35
AD
15
27
8D
15
25
AD
18
34
AD
18
2E
8D
15
2c
8D
18
92
AD
18
29
OA
BD
18
os
BD
1s
AA
2F
8D
15
2D
A2
E8
AD
OE
FB
60
83
16
04
DO
18
FA
1D
A2
a8
18
EE
18
FF
FF
bo
18
67
FF
FF
8D
15
1F
8D
18
91
AD
18
20
4c
ze
8D
18
AD
18
95
AD
15
23
8D
15
21
AD
18
94
AD
18
28
8D
28
8D
18
92
AD
18
25
8D
15
2B
8D
18
AA
2F
8D
15
2D
AD
AD
18
34
AD
18
00
DO
00
8D
20
438
DO
68
15c8-
15D0-
15D8-
1SEO-
15E8-
15FO-
15F8-
1600-
1608-
1610-
1618-
1620-
1628-
1630-
1638-
1640-
1648-
16S0-
1658-
1660-
1668-
1670-
1678-
1680-
1688-
1690-
1698-
16A0-
16A8-
16B0-
16B8-
16c0-
16C8-
16D0-
16D8-
16E0-
16E8-
16FO-
16F8-
1700-
1708-
1710-
1718-
1720-
1728-
1730-
1738-
1740-
1748-
1750-
1758-
1760-
1768-
1770-
1778-
1780-
1788-
1790-
1798-
17A0-
17A8-
17B0-
17B8-
17C0-
17¢8-
17D0-
17D8-
17E0-
2 7ES-
17FO-
17F8-
1800-
1808-
1810-
1818-
1820-
1828-
1830-
1838-
1840-
60
15
co
D1
BA
Di
DB
8c
cs
DS
fore)
BE
DS
cs
cs
8D
8D
DS
co
c3
8D
8D
CE
Da
09
co
Do
8D
17
cc
DBO
8D
8D
C1
D4
09
ce
CF
D2
4c
AO
cs.
cs
09
Dé
AO
8c
c1
8D
17
cs
CE
cs
8c
D6
D2
00
Bl
4c
17
EB
60
04
00
20
00
20
AS
04
1D
60
co
8A
17
19
17
9D
60
E6
00
EE
AD
8D
as
90
15
30
17
DS
CE
4c
AO
DO
AO
D3
D2
FF
FO
co
02
cs
02
8D
D2
D4
co
cso
Da
cc
cl
4c
AO
AO
cs.
D2
4c
AO
cs
ce
8c
co
D2
00
BF
cl
C7
4c
AO
Da
ce
8c
cs
AO
3
ok]
D2
co
D4
20
D2
00
Av
ce
00
BE
D3.
CF
8D
8D
cs
D4
cso
20
a2
CF
8s
BD
85
19
17
19
17
3D
60
E6
8D
AC
54
C7
09
D7
o1
1B
DO
15
FF
02
BO
18
fon
18
BF
AO
c1
09
CE
cs
AZ
Da
co
D2
DS
D2
co
CF
AO
8D
47
D3
AO
ac
Ao
D4
D2
co
cs
AO
8D
17
c3
co
D4
20
co
CE
8D
8c
co
68
AO
cs
4c
AO
co
D2
00
BF
D3
cs
09
BF
20
17
1B
03
1A
FO
ac
FO
4c
03
AS
19
ac
AZ
oc
17
20
AS
AG
02
bo
co
co
BO
60
BO
60
AO
ca
Ds
20
D4
CF
DS
cs
09
c1
cs.
D2
cs
09
BO
CE
8D
co
DA
co
AO
C1
09
Ds
CE
8D
ED
D4
cs
8c
cD
c3
8D
17
cl
CE
ca
cs
cs
CF
D2
ac
AO
AO
DS.
20
17
AA
20
86
o1
4c
09
C1
09
Da
o1
1B
DO
Da
20
60
FO
60
1A
ac
E6
Pom’s n°
03
AO
BA
o1
38
01
38
cs
cs
cs.
8c
cs.
CE
D4
20
c3
Do
AO
ca
20
cs
cs
BF
CF
cs
09
cs
D4
CE
20
cs
00
BF
c3
8D
17
C1
CE
00
8D
c2
ED
CF
Da
fol]
CE
cs
co
cD
D2
AA
20
17
DF
1c
85
F2
20
17
20
17
AS.
AS
02
FD
OA
OB
AO
FD
BA
3D
Ad
1A
EE
FO
60
60
60
60
60
D2
AO
8D
17
D2
AO
co
D2
8c
D4
cs
cs.
Da
8c
D2
C7
4c
AO
CE
D2
20
D3
D2
ca
8c
CF
C7
ac
D4
CF
8D
8D
co
D2
4c
BF
FD
CE
cs
DO
AO
ca.
os
G1
DBO
8D
a?
DF
20
17
84
19
17
ED
60
FO
60
1A
ac
E6
AS
42
ca
00
20
AS
04
1D
60
D3
F1
20
co
20
co
20
D2
D3
8D
D2
c4
cc
ed
17
cs.
D4
CE
8D
17
C1
font
cs
ca
AO
CF
8c
DS
CF
8D
D3
CL
co
cs
D2
00
BF
D2
D2
co
AO
cs
20
AO
cs
D2
co
D4
DS
cs
8D
20
17
B1
ac
1D
AO
FD
AO
FD
BA
sD
Aa
1A
A4
OB
OA
Fa
19
ol
60
00
EXP(PIxSQR(163)) est-il entier ?
Le probléme
Ii y a quelques années, la revue
Sciences & Vie annoncait dans ses
récréations _ mathématiques que
EXP(PIxSQR(163)) était entier et va-
lait +262.537.412.640.768.744, en
avangant que des calculs poussés sur
ordinateur n’avaient donné que des
chiffres 9 dans les 2 millions de pre-
miéres décimales. La revue parlait
méme d’une démonstration basée
sur le nombre d’Euler (nombre irra-
tionnel, comme PI et e).
Calcul sur TI 58
Je voulais en avoir le coeur net.
Aussi, en 1979, j'attaquai le pro-
bleéme’muni de ma calculatrice TI 58.
J'utilisai pour cela un programme de
multiplication de nombres de 50 chif-
fres. Comme toutes les autres opéra-
tions étaient manuelles 4 cause de la
faible capacité de la calculatrice, j’uti-
lisai de nombreuses astuces pour cal-
culer la racine carrée et l’exponen-
tielle. Aprés un aprés-midi de calcul
(et un autre pour vérification), j’ob-
tins un résultat 4 50 chiffres (donc 31
décimales, dont au moins 25 de-
vaient étre bonnes en tenant compte
des erreurs d’arrondi). Qu’obtins-je ?
Calcul en Basic
En 1981, muni d’un Apple, je déci-
dai de confirmer ce résultat avec un
programme Applesoft (joint sur la
disquette d’accompagnement de ce
numéro, afin que les lecteurs intéres-
sés puissent "l’éplucher”). Ce pro-
gramme utilise des tableaux pour sto-
cker, par tranches de 4 chiffres, des
grands nombres. De plus, il posséde
des routines pour faire des multiplica-
tions et additions de grands nombres
ou des divisions de grands nombres
par une constante d’au plus 4 chif-
fres. La, les résultats sont obtenus
bien plus rapidement (14 mn pour
80 chiffres, 5 mn avec un pro-
gramme compilé).
Le Calculateur Entier
Enfin, tel Zorro, arrive le Calculateur
Entier de Jacques Duma, muni de la
division de grands nombres; je vais
montrer dans les lignes qui suivent a
quel point il devient alors facile de
programmer ce calcul.
NDLR: Olivier Herz a rédigé son ar-
ticle a partir de la version 1.0 du cal-
culateur. La lecture de cet article a
amené Jacques Duma 4 réaliser et a
nous envoyer la version 1.2, publiée
dans ce numéro. Cette version a
Pom’s n° 12
ajouté la pause entre deux instruc-
tions (,), introduction des remarques
(”) et surtout la multiplication par
une puissance de 10 (’). Ainsi, le
programme adapté 4 cette version
calcule-t-il le résultat en cinq minutes
de moins que EXP.EXEC !
Nous avons décidé de ne pas modi-
fier le texte original d’ Olivier pour lui
garder sa virginité initiale (au texte,
bien sdr). Le lecteur relativisera donc
certaines remarques et pourra d’au-
tant mieux apprécier la qualité des.
analyses d’Olivier et l'utilite de ses
observations.
1 - Comme on travaille uniquement
sur des nombres entiers, il va falloir
utiliser une constante multiplicative
pour transformer des nombres déci-
maux en nombres entiers. Soit par
exemple, pour des calculs sur 100
décimales (on pourrait aller presque
jusqu’a 254=508/2 décimales) :
K=10 100
Bien entendu, K n’est pas nécessaire-
ment une puissance de 10. Voir 4 ce
sujet la remarque (2).
2 - Pour calculer la racine carrée de
163, on utilise la méthode de New-
ton, par approximations successives
avec la formule User =
(U,+163/U,) / 2, en prenant 13
comme approximation de départ.
Soit :
R=K*K: R=163«R: U=13«K:
7#: X=R/U: U=X+U: U=U/2
7 itérations suffisent pour avoir 100
bonnes décimales.
3 - PI est supposé connu (le Palais
de la Découverte publie 2000 déci-
males sur une carte postale). Et l'on
calcule PlxSQR(163) :
R=3 14159 26535 89793 23846
26433 83279 50288 41971 69399
37510 58209 74944 59230 78164
06286 20899 86280 34825 34211
70679*U : R=R/K
4 - On obtient 40.109... et l'on va
calculer EXP(40.109...) = EXP(40) *
EXP(0.109...). On ne garde donc
que la partie décimale du résultat :
X = 40«K: R = R-X
5 - On calcule son exponentielle par
développement limité avec la formule
EXP(X) = 1 + X + X 2/2 +
X'n/n!=somme des U,, avec Up=1
et U, = U,—1*X/n:
S=K: I=0: U=K: 45#: I=I+1:
U=UsR : U=U/K: U=U/1: S=S+U
On calcule suffisamment de termes
(ici 45) pour que U,, soit négligeable.
6 - On calcule de la méme fagon,
avec ici X=1
Olivier Herz
E= 0: U=K: 70#: I=I+1:
U=U/: E=E+U
7 - Il ne reste plus qu’a calculer et
fournir le résultat (avec 100 décima-
les, dont peut-étre 80 a 90 de signifi-
catives):
S=SxE: S=S/K
2S
Que pensez-vous du résultat ? Scien-
ces & Vie n’avait-il pas publié son ar-
ticle dans le numéro d’avril ?
Remarques
(1) Tous ces résultats peuvent étre
obtenus automatiquement grace au
fichier EXP.EXEC. Il suffit de se met-
tre dans le calculateur et d’EXECuter
ce fichier pour ce faire; on obtient le
résultat (ici 100 chiffres) en un peu
plus de 20 minutes. Faire MON
CLO au préalable si lon veut voir
Pavancement des calculs.
On peut en effet utiliser de véritables
programmes pour ce calculateur
grace aux fichiers EXEC. Utilisez Ap-
plewriter II ou reportez-vous au nu-
méro 3 de Pom’s (p. 55) ou au re-
cueil (p. 142) pour fabriquer de tels
fichiers.
(2) Au vu de ces calculs, il semble
qu’on puisse émettre un regret pour
le calculateur. On aurait gagné beau-
coup de temps dans les calculs pour
nombres non entiers si l'on avait eu
une opération donnant, a partir d’un
grand nombre N et d’un entier (posi-
tif ou négatif) K de 3 chiffres au plus,
le résultat N*(10 K). Les nombres
étant codés en BCD, ce calcul aurait
été ultra-rapide.
(3) Bien entendu, en utilisant des as-
tuces, on peut aller bien plus vite.
Mais la méthode utilisée présente
lavantage d’étre la plus simple.
Liste de EXP.EXEC
K=10°100
R=K+K: R=1634R: U=13«K:
7#: X=RU : U=X+U : U=U/2
R=3 14159 26535 89793 23846
26433 83279 50288 41971 69399
37510 58209 74944 59230 78164
06286 20899 86280 34825 34211
70679«U : R=R/K
X = 40«K:R=R-X
K: I=0: U=K: 45#: I=I+1:
: U=U/K: U=U/1: S=S+U.
: IsI+1:
40# : S=SsE : S=S/K
2S
Analyse de Magic Mailer
Guy Lapautre
Présentation du produit
Magic Mailer (Autocourrier pour Ia
version francaise) est un_ logiciel
complémentaire @ Magic Window
(Autotexte), distribué par ARTSCI
Inc. et diffusé en France par Ordina-
teur Express. Nous emploierons dans
la suite les noms francais
La version que nous avons testée est
théoriquement adaptée a l'Apple //e,
mais pas plus que la version 2 d’Au-
totexte: elle n’utilise pas les possibili-
tés nouvelles du clavier. C'est d’ail-
leurs moins ennuyeux que pour
Autotexte, car les mouvements de
curseur sont beaucoup moins fré-
quents. C’est pourtant dommage
Il convient de remarquer qu’Auto-
courrier est exclusivement destiné a
Timpression et ne permet de créer
aucun texte ni fichier. L’utilisateur est
censé utiliser Autotexte pour créer les
textes proprement dits et les fichiers
(bien qu'il soit possible, dans certai-
nes conditions, d'utiliser des fichiers
exogénes, en créant un “moniteur”).
La présentation sous reliure est cor-
recte, sans avoir le raffinement de
nombreux logiciels pour Apple. La
documentation est rédigée en an-
glais. Une traduction en francais est
également fournie (avec quelques
adaptations). Les auteurs préviennent
qu'il s’agit d'une version provisoire.
Nous y avons effectivement trouvé
un certain nombre d’erreurs ou im-
propriétés. Telle qu'elle est, elle a le
mérite d'exister.
Fonctionnalités de base
Autocourrier est avant tout un
"adresseur automatique”. Il permet
d’adresser commodément des lettres-
type a toutes les personnes enregis-
trées dans un fichier, ou & une sélec-
tion d’entre elles. La sélection, s'il y
a lieu, se fait 4 partir du contenu de
certains champs, avec une trés large
combinaison de conditions logiques.
Allant un peu plus loin, il est possible
de faire figurer conditionnellement
des mots, membres de phrases ou
paragraphes permettant de personna-
liser les lettres.
Les données éditables sont de 4
types :
@ des textes figurant dans la “lettre”
créée sous Autotexte:
@ des données figurant dans le fi-
chier associé:
e@ des "constantes”, en particulier
une date;
® des données entrées au clavier au
fur et a mesure de l'impression.
En revanche. Autocourrier__ ne
comporte strictement aucune possibi-
lité de calcul. ce qui interdit son em-
ploi pour des opérations, méme trés
simples, du type facturation ou édi-
tion de devis.
Le document a éditer
Créé sous Autotexte. il se présente
comme un document normal dans
lequel on aurait opéré un certain
nombre d’aménagements.
Des zones sont réservées aux don-
nées issues du fichier: elles sont repé-
rées par des identifieurs que l'on re-
trouve dans le “moniteur™ du fichier.
Ces identifieurs permettent en outre
de sélectionner l’édition de portions
de texte selon le contenu des
champs du fichier associé, de jouer
avec les majuscules et minuscules.
Des symboles de justification peuvent
étre introduits dans le texte. si des
zones de longueurs variables font
que la justification systématique faite
sous Autotexte ne puisse pas tou-
jours convenir.
Des symboles spéciaux peuvent étre
utilisés, par exemple pour les ehsem-
bles titre‘nom/prénoms, ou la date.
Ces options sont certes intéressantes.
mais on aboutit assez vite 4 un texte
ésotérique si on veut aller loin dans
les possibilités du logiciel
Le fichier associé
Quill soit créé sous Autotexte ou
adapté a partir d'un fichier exogéne,
ce fichier comporte un premier enre-
gistrement vide, qui indique sa struc-
ture (en rappelant que les identifieurs
utilises sont ceux qu'on retrouve
dans le texte)
Bien entendu, rien n’interdit d’avoir
un fichier comportant des rubriques
non utilisées dans un texte, mais qui
pourront l'étre dans un autre (au
méme titre que le texte peut contenir
des identifieurs non présents dans le
fichier, et qui correspondront a des
données 4 entrer au clavier)
Le fichier, considéré comme un véri-
table texte par Autocourrier, est par
définition logé en mémoire centrale
avec le texte lui-méme. Il ne saurait
donc étre volumineux ! Cette limita-
tion en rend l'emploi difficile pour de
grosses applications professionnelles.
Il existe toutefois un palliatif, avec
Putilisation d'une forme de chainage
Signalons par ailleurs qu'on peut fort
bien travailler sans fichier, en rentrant
au clavier les données pour lesquel-
les des identifieurs ont été placés
dans le texte, ce qui est une solution
séduisante pour des applications de
petit volume, en permettant une per-
sonnalisation de lettres a peu de
frais, au niveau d'applications “per-
sonnelles/professionnelles”
Utilisations
Deux options de base aménent a
quatre modes d’exploitation :
© en continu ou cas par cas:
® tout le fichier ou une sélection.
Dans la pratique. deux d’entre elles
sont particuligrement utiles
@ en continu avec sélection (si on
peut exprimer la sélection sous
forme de critéres logiques):
© cas par cas et tout le fichier (per-
mettant une sélection a l'examen
de chaque enregistrement).
Voilé un des points forts d’Autocour-
rier, d’autant plus que les possibilités
de sélection logique sont trés éten-
dues et, comme le disent diailleurs
les auteurs de la documentation.
“plus simples @ mettre en oeuvre
qu’a expliquer” (un effort pourrait
cependant étre fait pour clarifier les
explications...).
En résumé
Autocourrier est un honnéte systeme
d'adressage automatique, dont deux
points forts sont les larges possibilités
de sélection de rubriques etiou de
paragraphes, et un systéme trés
complet de sélection dans le fichier
associé,
On regrettera principalement un cer-
tain ésotérisme des textes si on utilise
beaucoup d’options, ainsi que l'ab-
sence compléte de fonctions de cal-
cul. Enfin, comme dans le cas d’Au-
tocourrier. il est dommage que les
auteurs n’aient pas pris en compte
les possibilités accrues offertes par le
clavier de l'Apple //e. a
Pom’s n° 12
Puisque nous n’avons pas été sub-
mergés par un courrier nous intimant
ordre de mettre fin sur le champ a
cette série, nous la poursuivrons sans
plus attendre par l’examen de nou-
velles instructions choisies dans le ré-
pertoire du langage assembleur.
Les instructions de
comparaison
Elles jouent en assembleur le méme
réle fondamental qu’en Basic, en
permettant d’orienter le programme
vers différents traitements selon le ré-
sultat de tests effectués sur des varia-
bles caractéristiques.
On ne peut toutefois comparer direc-
tement deux variables quelconques,
par exemple le contenu de I'adresse
$32 avec celui de l'adresse $303, ni
une variable quelconque 4 une va-
leur donnée, par exemple le contenu
de l'adresse $18 et la valeur #$A0.
En fait, la comparaison "stricto
sensu” n'est possible qu’entre l'un
des registres du microprocesseur (ac-
cumulateur, registre X ou registre Y)
et “autre chose” (variable ou cons-
tante).
Il faut cependant noter que certaines
instructions agissant sur une case:
moire, sans lien direct avec une véri-
table comparaison, peuvent donner
lieu a des tests significatifs par le biais
de ce que nous avions appelé “le
dernier résultat”, dans l'article précé-
dent, lors de l'examen des instruc-
tions BEQ et BNE. Nous en trouve-
rons d’ailleurs un exemple plus loin.
L’assembleur se distingue en outre
du Basic en ce que l’opération de
comparaison est réalisée séparément
du test effectué sur son résultat.
Ainsi, alors que l'on fait "IF A=B
THEN...” en Basic, on écrirait en as-
sembleur une séquence du type:
"Comparer A et B” puis "Si le résul-
tat de la comparaison est l’égalité
alors...”. Le microprocesseur soustrait
en fait B de A (mais sans changer la
valeur de A), et positionne le “der-
nier résultat” en conséquence; le test
porte donc en définitive sur la valéur
de ce “dernier résultat”.
Pour ce qui est des tests autorisés,
nous ne retiendrons pour I'instant
que ceux qui ont déja été évoqués
dans larticle précédent, a savoir
Tégalité (testée par BEQ, soit "der-
nier résultat” = 0) et la différence
(testée par BNE, soit “dernier résul-
tat” <> 0). Nous traiterons des
autres possibilités dans un prochain
article, dans lequel sera précisée la
Pom’s n° 12
Initiation a l’assembleur (2)
nature réelle de notre fameux “der-
nier résultat”.
Comparaison avec l’accumula-
teur
Le code “mnémonique” de T'instruc-
tion est CMP, ce qui suffit pour indi-
quer que Tun des termes de la
comparaison est l’accumulateur. Le
second terme dépend de ce qui suit
CMP.
On peut ainsi comparer a l’accumu-
lateur soit une valeur donnée, soit le
contenu d'une adresse. Dans Cette
seconde hypothése, tous les modes
d’adressage sont autorisés pour défi-
nir l'adresse concernée. Vous trouve-
rez ci-aprés la liste des syntaxes pos-
sibles pour l’instruction CMP et les
codes hexadécimaux correspondants
(ADS désigne une étiquette symboli-
que affectée a l'adresse dans le pro-
gramme en assembleur).
© CMP valeur = CMP #$NN = C9
NN (exemple : C9 AO)
e@ CMP adresse en page zéro =
CMP ADS = CMP $aa = C5 aa
®@ CMP adresse quelconque = CMP
ADS = CMP $aaaa = CD octet
bas/octet haut (exemple: CMP
$90FF = CD FF 90)
@ CMP "adresse page zéro”.X
CMP ADS,X = CMP $aa,X DS
adresse
@ CMP ADS,X = CMP $aaaa,X =
DD octet bas/octet haut
@ CMP ADS.Y = CMP $aaaa,Y =
D9 octet bas/octet haut
@ CMP (ADS,X) = CMP ($aa,X) =
Cl adresse
e CMP (ADS,.Y) = CMP ($aa).Y =
D1 adresse
Notez bien que le contenu de l'accu-
mulateur n'est pas affecté par l’opé-
ration de comparaison, ce qui auto-
rise les comparaisons en chaine,
telles que
CMP #$80
BEQ ETIQUETTE1
CMP #$8D
BEQ ETIQUETTE2
Comparaison avec le registre X
Le code mnémonique est CPX.
La encore, il est possible de compa-
rer X avec une valeur ou le contenu
d'une adresse, mais seul l’adressage
direct non indexé est autorisé
Le contenu de X demeure inchangé,
ce qui permet également les compa-
raisons en chaine.
Gérard Michel
e CPX valeur = CPX_#$NN = EO
NN (par exemple, EO 04)
e@ CPX adresse page zéro = CPX
ADS = CPX $aa = E4 adresse
© CPX adresse quelconque = CPX
ADS = CPX $aaaa = EC octet
bas/octet haut
Comparaison avec le registre Y
Le code mnémonique est CPY.
Mémes_ remarques générales que
pour CPX.
@ CPY valeur = CPY #$NN = CO
NN
© CPY adresse page zéro = CPY
ADS = CPY $aa = C4 adresse
@ CPY adresse quelconque = CPY
ADS = CPY $aaaa = CC octet
bas/octet haut
Augmenter ou diminuer
le contenu d’une adresse
INC
Cette instruction permet d’augmenter
de 1 le contenu de ladresse donnée
apres INC et correspondrait a
“A=A+1” en Basic. Elle agit directe-
ment sur l'adresse concernée, sans
qu'il soit nécessaire de passer par
Tintermédiaire d’un registre.
Une adresse correspondant a un
octet, son contenu ne peut prendre
qu’une valeur comprise entre $0 et
$FF (0 & 255 en décimal). Ainsi, si
adresse ADR contient $FF et que
vous faites "INC ADR”, vous trouve-
rez 0 dans ADR (de méme que
9+1=0 si on ne compte que sur un
chiffre !).
De plus, notre fameux “dernier résul-
tat” tient compte de la valeur de
ladresse aprés son traitement par
INC; il devient nul si l’adresse
contient 0 (comme dans le cas ci-
dessus) et sera différent de 0 dans
tous les autres cas. On peut donc ef-
fectuer des tests significatifs par BNE
aon en sortie d'une instruction
Ceci est particuligrement utile lorsque
Yon veut manipuler l’adresse-base
d'un adressage indirect indexé par Y,
ou, de maniére générale, une valeur
supérieure 4 255 et qui occupe donc
deux octets. Supposons ainsi que
Pon ait a incrémenter de 1 en 1 une
valeur stockée aux adresses $18
(octet bas) et $19 (octet haut). La sé-
quence d’instructions 4 utiliser serait
Ins.1 INC $18
Ins.2 BNE Ins.4
Ins.3 INC $19
Ins.4 ..
On augmente l’octet bas de 1; si le
résultat n'est pas nul, on saute a la
suite du programme, sinon on aug-
mente l’octet haut de 1. Si l'on arrive
4 Ins.1 avec 0418” dans $18-$19,
on aura 0518” en arrivant a Ins.4,
mais si l'on arrive avec "FF18” on
aura 0019” aprés étre passé par les
deux INC.
L’adressage indirect ne peut étre uti-
lisé avec INC.
e INC adresse page zéro = INC
ADS = INC $aa = E6 adresse
e INC adresse quelconque = INC
ADS = INC $aaaa = EE octet
bas/octet haut
@ INC “adresse page zéro”,.X = INC
ADS,X = INC $aa,X = F6
adresse
e INC “adresse quelconque’,X =
INC ADS,X = INC $aaaa,X = FE
octet bas/octet haut
DEC
Comme on pouvait légitimement s’y
attendre, DEC permet de diminuer
de 1 le contenu d'une adresse. La
encore, le “dernier résultat” évolue
en fonction du contenu de l’adresse
aprés DEC, mais on ne peut I’utiliser
aussi facilement qu’avec INC pour la
manipulation de valeurs sur deux
octets, puisque l’octet haut doit dimi-
nuer lorsque l’octet bas vaut $FF et
non lorsqu’il vaut 0 (de méme que
l'on ne change de dizaine que lors-
que le chiffre des unités tombe a 9 et
non a 0).
En reprenant notre. exemple précé-
dent, la séquence d’instructions a uti-
liser avec DEC serait :
Ins.1 DEC $18
Ins.2 LDA $18
Ins.3 CMP #$FF
Ins.4 BNE Ins.6
Ins.5 DEC $19
Ins.6 ...
(on aurait pu également utiliser les
registres X ou Y en lieu et place de
Tl'accumulateur)
@ DEC adresse page zéro = DEC
ADS = DEC $aa = C6 adresse
DEC adresse quelconque = DEC
ADS = DEC $aaaa = CE octet
bas/octet haut
e DEC “adresse page zéro”,X
DEC ADS.X = DEC $aa,X = Di
adresse
e@ DEC “adresse quelconque”,X
DEC ADS,X = DEC $aaaa,X
DE octet bas/octet haut
Gill
Wl
Saut inconditionnel :
JMP
Les instructions BEQ et BNE, main-
tenant bien connues de tous, provo-
quent un branchement a un endroit
24
donné du programme si le résultat
du test effectué sur le “dernier résul-
tat” répond a leur attente (respective-
ment égal 4 0 et différent de 0). De
plus, nous avons vu que le branche-
ment se fait en fonction d’un dépla-
cement et non directement sur une
adresse que !’on indiquerait derriére
BEQ ou BNE. On se “branche” 10
octets plus bas, ou encore 48 octets
plus haut, si la condition est satisfaite.
Linstruction JMP, en revanche, pro-
voque un saut "inconditionnel” a
ladresse indiquée 4 sa suite; elle se
rapproche en cela de J'instruction
GOTO du Basic.
Ainsi, "JMP $FDEO” (ou JMP ADR
si ADR a été définie comme étiquette
pour $FDEOQ) provoquera un saut a
l'adresse $FDEO dés que sera ren-
contré le code de JMP.
JMP differe de JSR comme GOTO
de GOSUB : un RTS ne raménerait
pas a l'instruction qui suit JMP mais
celle qui suit le dernier JSR effec-
tué dont on ne serait pas encore re-
venu.
Il est possible d’utiliser JMP avec
T'adressage indirect: le saut se fait
alors a l’adresse contenue dans
Tadresse indiquée aprés JMP.
e JMP adresse absolu = JMP ADS
= JMP $aaaa = 4C octet
bas/octet haut
e JMP adresse indirect = JMP
(ADS) = JMP ($aaaa) = 6C octet
bas/octet haut
La pile du
microprocesseur
Lorsque le microprocesseur rencon-
tre une instruction JSR, il doit stocker
quelque part l’adresse du point de
retour a laquelle raménera le RTS de
fin de la sous-routine. II dispose pour
cela d'un “silo” bien & lui, baptisé
“pile”. En simplifiant, on peut dire
que l’adresse de retour est posée sur
le sommet de la pile et que le pro-
cesseur vient l'y reprendre lorsqu’il
rencontre un RTS.
Considérons par exemple les instruc-
tions suivantes :
Adresse 0 JSR Adresse 2
Adresse 1 Suite du programme
Adresse 2 JSR Adresse 4
Adresse 3 RTS
Adresse 4 JSR Adresse 6
Adresse 5 RTS
Adresse 6 LDA $FO
----+--++ RTS
Aprés le “JSR Adresse 6”, la pile
contiendra dans I’ordre :
Adresse 5
Adresse 3
Adresse 1
Le RTS qui suit "Adresse 6” ramé-
nera donc a "Adresse 5”, dont le
RTS raménera aloys 4 “Adresse 3”
qui provoquera finalement le retour 4
“Adresse 1”. La pile est de type
"dernier entré - premier sorti”: une
nouvelle donnée a stocker est tou-
jours posée sur le dessus et, chaque
fois qu'il doit récupérer une informa-
tion stockée dans la pile, le proces-
seur prend toujours celle qui se
trouve au sommet.
Le programmeur peut également uti-
liser cette pile pour des stockages
temporaires. En particulier, deux ins-
tructions permettent d’empiler et de
dépiler l’accumulateur :
@ PHA (code 48): dépose le
contenu de Taccumulateur au
sommet de la pile
e PLA (code 68): transfére l’octet
qui se trouve au sommet de la pile
dans l’accumulateur.
Cela limite le nombre d’adresses a
utiliser pour une sauvegarde momen-
tanée d'information, dans le cas par
exemple ow l'on veut sauvegarder le
contenu de certaines adresses avant
Tappel d'une sous-routine qui utilise
et modifie ce contenu, puis récupérer
les valeurs initiales au retour de la
sous-routine. De méme si l'on doit
calculer la nouvelle adresse-base
d'un adressage indirect post-indexé
par Y en ajoutant a l'ancienne
adresse une valeur obtenue juste-
ment par adressage post-indexé sur
la base de cette ancienne adresse (le
principe consiste alors a mettre dans
Taccumulateur octet bas de
l'adresse, lui ajouter la donnée obte-
nue avec la valeur adéquate de Y,
empiler l'accumulateur, charger en-
suite l'accumulateur avec I’octet haut
de l’adresse, lui ajouter la donnée
obtenue avec la seconde valeur adé-
quate de Y, stocker le résultat dans
Foctet haut de l'adresse, puis dépiler
dans l’accumulateur et stocker ce
dernier dans l’octet bas de l'adresse -
ce que l'on ne pouvait faire dés le
début puisque cela aurait modifié
ladresse-base avant que lon ait ré-
cupéré la valeur correcte a ajouter a
Yoctet haut, d’ot incohérence des ré-
sultats)
Lorsque |’on utilise la pile pour sto-
cker des données, il convient de se
rappeler que, pour le bon fonction-
nement du systéme, tout ce qui a pu
étre déposé sur une information doit
étre retiré avant la récupération a
bon escient de celle-ci. Le petit pro-
gramme suivant, par exemple,
conduirait 4 des résultats peu confor-
mes aux espérances du program-
meur :
LDA $18
Pom’s n° 12
En effet, l'accumulateur est empilé,
puis le "JSR SR” provoque le dépét
au sommet de la pile de l'adresse de
retour. Dans la sous-routine SR, PLA
transfére dans l’accumulateur l’octet
qui se trouve au sommet de la pile,
soit l'un des deux octets de l'adresse
de retour, puis le RTS entrainera un
branchement sur une “pseudo”
adresse de retour composée de l'un
des octets de l'adresse véritable et de
la valeur empilée par PHA avant
l'appel de la sous-routine. Il y a peu
de chances pour que cette “pseudo”
adresse soit la méme que celle de
Tinstruction suivant “JSR SR” et, a
moins que cela ne soit délibérément
voulu, vous risquez quelques surpri-
ses.
Exemples d’application
Nous vous proposons trois petits pro-
grammes diillustration, sans grand in-
térét pratique il est vrai, mais qui of-
frent tous l'avantage de rendre
visibles les résultats de leur exécu-
tion.
Exemple 1
Le programme Basic remplit ’écran
avec des caractéres quelconques
avant d’appeler la routine en langage
machine. Cette derniére attend une
saisie au clavier de la forme
*IC1/C2/RETURN” (par exemple
‘AT/) et remplace ensuite tous les
caractéres Cl affichés par des carac-
téres C2 (par exemple tous les A par
des T).
Analysons donc en détail le pro-
g
Showing the first 100000 of 300805 characters.