Text content (OCR)
Formation continue a la micro-informatique
#7)
a —
oS aM
PHOTO GUINHID RUN
Tous nos informaticiens viennent de l'informatique traditionnelle, et en maitrisent totalement les langages Classiques .
Assembleur, COBOL. FONTNAN... Ils utilisent leur professionnalisme et les méthodes de linformatique pour réaliser
des applications professionnelles en micro-informatique. Nous vendons des micro-ordinaleurs sans programme.
Nous vendons aussi des micro-ordinateurs avec les programmes. Il s’agit de programmes réalisés par la societé KA
dont nous garantissons la qualité et le bon fonctionnement.
Nos formateurs enseignent l'informatique. L'enseignement de la micro-informatique nécessite des formateurs pro-
fessionnels, suffisamment de matériel pour que chacun puisse pratiquer, un support de cours couvrant non
seulement I'enseignement diffusé, mais permettant au participant de s'auto-former aprés |e stage. Nous avons deja
accueilli de nombreux stagiaires, d'horizons el de centres d'intéréts divers : chefs d'entreprise, universitaires, profes-
sions libérales, informaticiens, musiciens compositeurs, retraités, cadres de grandes entreprises, revendeurs de
micro-ordinateurs... Nous proposons 5 ibilités :
Stage de 2 jours
bases de données.
Comment utiliser les progiciels :
bases de données
@ manipulateurs de nombres
et générateurs de lableaux
e générateurs d'états imprimés
Application pratique
(un 48 K + un lecteur de
disquettes pour deux participants).
Apres ce stage, on peut générer,
a partir de progiciels, un
programme totalement adapté
a son application en moins
d'une journée de travail.
Ce stage nécessite de connaitre
la manipulation de l'APPLE II,
‘ou d’avoir suivi au minimum
la journée d’initiation.
Dates 27-28 juin
29-30 aotit
Prix 2192 F h.t.
B® Stage de 1 semaine
de programmation BASIC.
Il débute par la journée
d initiation.
Le stage permet
Wassimiler fa luyique
de programmation
et de l'appliquer
(un micro-systeme 48 K
pour 2 participants)
En fin de stage, on sait
établir un programme
de gestion de fichier avec
consultation en temps réel
Ce stage ne nécessite pas
de connaissance de départ
en intormatique
Dales
du 18 au 22 avril
du 16 au 20 mai
du 20 au 24 juin
Prix 4245 F ht.
Bi Stage 3 jours disquettes.
Consacré a l'organisation
4 la programmation et 4
| exploitation de fichiers
sur disquettes magnétiques,
4 travers |étude du Disk
Operating System APPLE I!
Travaux pratiques sur
micro-systémes (un 48 K + un
lecteur de disquettes
pour deux participants)
Ce stage nécessite
e soit d'avoir suivi le stage
de 1 semaine de prograimmation
au préalable
e soit d avoir une bonne
connaissance théorique
et une sérieuse pratique
de BASIC de | APPLE I!
Dates du 25 au 27 juillet
du 17 au 19 octobre
Prix 3378 F ht
Wi Journée d’initiation - Dates : 18 avril, 16 mai, 20 juin - Prix 773 Fh.t.
Le nombre de places pour chaque st
@ Journées de sensibilisation
et stages de formation
a Paris et en Province.
s organisés
mande
€ instance régionale
)
pour la duré
de la formation.
assure la formation
et fournit
les supports de cours.
ge est strictement limite. a fa fos pour la qualite de l'enseignement et par les contraintes du materiel
Deux animateurs sunt preserits pout aider les participants a la realisation de leurs programmes
Un support de cours tres complet est remis a chaque participant
Pour la journée d’initiation et pour les stages. les dejeuners sont pris en commun ei compris
l’informatique douce-
Renseignements et inscriptions a KA - Programme detaillé sur demande.
212 rue Lecourbe 75015 Paris - Tél. 533.13.50.
Le calendrier 83 est disponible.
*Linformatique douce” est une marque déposée de la société KA
poms n°7
Saiinaixe Page Langage“ Niveau**
Editorial par Hervé Thiriez 5
Les arcanes du Moniteur Apple III
par Bruno Lemaire et Gilles Mauffrey 6 A P
Cryptographie a clef publique par Olivier Herz 7 P M-T
Graphique, quand tu nous tiens... par Guy Mathieu 15 B [
Graphiques et logique par Olivier Herz 21 A M-T
Hard Copy Seikosha par Olivier Herz 22 A M-T
La souris de Lisa par Hervé Thiriez 24 / a
L’Apple Ile a l’essai par Jean-Francois Duvivier 25 / T
Des programmes relogeables par Philippe Francois 27 A M
Dump Pascal par Michel Marquis 29 P EF
Un générateur par Denis Sureau 35 A M-T
Un programme de test universel par Denis Sureau 39 B af
Visicalc et traitement de texte par Hervé Thiriez 43 B FE
HELLO corrigé par Thierry Le Tallec et Jacques Tran-Van 46 A M-T
Gestion de masques en BASIC par Gérard Michel 47 B-A M-T
FID, MUFFIN et DEMUFFIN par Alexandre Duback 55 fi Hig a
Le cours de BASIC Applesoft d’André Finot ae
par Jean-Jacques Crépy 56 / T a
Multiplan a l’essai par Hervé Thiriez 57 / T a
Effacement de directory en Pascal par Régis Lardennois 59 P M
Création de fichiers EXEC par Yvan Koenig 60 B T |
Boot PLE + CRAE par Michel Marquis 61 B M-T |
Un programme de fondu enchainé par Denis Sureau 62 A P-T |
Les quatre ponts par Olivier Herz 63 B cr 4
Courrier des lecteurs 64 / tA
Courrier des clubs 66 / /
Trucs et astuces 26-58 if /
* Langage : Blasic) - A(ssembleur) - P(ascal)
** Niveau : D(ebutant) - M(oyen) - P(rofessionnel) - T(ous)
Il s'agit-lé du niveau nécessaire pour comprendre le fonctionnement du programme décrit dans l'article, ou pour digérer l'article lui-
méme Ceci dit, un programme peut étre utilisé sans compréhension de son fonctionnement interne (sinon, qui jouerait aux échecs sur
ordinateur ?)
Les annonceurs
B.F.I. : p. 42 — BMI : 3* couv. — ANDRE F. FINOT : p. 20 — JCR : 4¢couv. — KA: 2¢couv. LOGMA :p.18 M.B.D.C. :p.58
— MICRO INFORMATIQUE SERVICE : p. 4 — MICROMOS . p. 13-45 — MINIGRAPHE . p. 17 — L'ORDINATEUR INDIVIDUEL
p. 14 — P.S.I. : p. 54 — SYBEX : p. 32-33 — TOTALE FORMATION : p. 47
Editions MEV - 49, rue Lamartine - 78000 Versailles
Directeur de la publication : Hervé Thiriez. Imprimerie Sim, 75011 Paris. Imprimé en France Népét légal : 1** trimestre 1983,
Pom’s n° 7 3
* La division de la longueur des program-
mes par 20.
* La possibilité réelle de dessiner ses mas-
ques de saisie ou d’impression.
Une indépendance totale de la périphérie
choisie par rapport au systeme.
° L'intégralité du systéme contenu sur une carte
mémoire de 20 K.
e Une gestion de mémoire de 140 K a 120 mégas.
Des utilitaires déterminants
-un générateur de programmes de ges-
tion de fichiers permettant méme le séquentiel
indexé multiclé
-un générateur d'écrans.
‘S.E.P. Marketing
Carte MEM/DOS 6502
LE SYSTEME D’EXPLOITATION
DU 6502 - MONOPOSTE/MULTIPOSTE
* CALL FN, une nouvelle commande basic, trés
puissante, intégrée au systéme permettant
V'appel des sous-programmes par noms avec
passage de paramétres et variables locales.
¢ Une version multiposte assurant la mise en
commun totale des ressources sans conflit et
Vautonomie des postes intelligents disposant
de leur propre unité centrale.
*Des programmes compatibles APPLE J[ et
APPLE fffautomatiquement transférables sur
COMMODORE 8096.
eEt pour demain, des logiciels développés
aujourd’hui directement compatibles avec le
réseau local memnet.
p %
3, rue Meyerbeer - 06000 NICE - Télex 461 916 F
SEEMI
D.S.A. INFORMATIQUE MICRO ALPHA SOFT
5, bd Dubouchage
06000 NICE
Tél. (93) 85.15.96
%
25200 MONTBELIARD
Tél. (81) 97.16.46 Tél. (40) 75.52.80
11, impasse du Lacquet 61, rue Ch. Riviére - B.P. 0701 22, rue Ges 6 Fisrres
44401 REZE CEDEX
GB
C.LC.C. BENELUX
MICROMEGAS Grove house MEGAVOLT S.A.
the bordage = Rue de Bleurmont
69007 LYO! St Peter Port 32B
Tél. (7) 861. Nos2 GUERNSEY —B 4920 EMBOURG
(0481) 20155
Editorial
Aprés des mois et des mois d’attente, nous avons enfin vu le 19 janvier les nouveaux produits
d’Apple, le Ile et le Lisa. Bien entendu, nous vous en parlons dans ce septiéme numéro de Pom’s.
Par opposition au dernier numéro, dans lequel nous vous avons offert plusieurs longs articles, nous
vous proposons ici de nombreux articles de.tous genres. Les amateurs de Pascal peuvent se réjouir,
ils trouveront trois programmes écrits*dans leur langue !
Trois contributions assez importantes occuperont vos soirées pendant quelque temps : tout d'abord,
un générateur de programme dii 4 Denis Sureau, et accompagné d'une application sous forme de
test programmable. Ensuite, Olivier Herz nous asséne un programme Pascal de cryptographie 4 clef
publique — grace auquel vous pourrez coder et décoder des messages. Enfin, Gérard Michel
concurrence le MEM/DOS en vous donnant un programme de gestion de masques dont I'analyse
devrait permettre de grands progrés aux débutants ayant déja lu ses articles précédents...
De nombreux autres articles vous apporteront de multiples idées et de non moins nombreux
programmes. Guy Mathieu nous montre comment exploiter les possibilités graphiques de I'Epson, ce
dont Olivier Herz s'inspire pour vous aider 4 effectuer des opérations logiques sur les pages
graphiques. Nous apprennons 4 utiliser les minuscules dans Visicalc sur Apple II, puis nous analysons
la conversion bidirectionnelle entre Apple Writer et des fichiers TEXT.
Michel Marquis nous propose un programme BASIC de boot pour lier PLE et CRAE (voir le
numéro 1 de Pom’s) a l'allumage de l'appareil et un programme de dump en Pascal. Philippe
Francois apprend aux programmeurs en assembleur comment réaliser des programmes relogeables.
Régis Lardennois nous enseigne une sécurité pour l'utilisation du directory Pascal. Bruno Lemaire
et Gilles Mauffrey ont analysé le moniteur de |’Apple III et nous donnent quelques bonnes adresses.
Quand 4 Olivier Herz, il propose encore un programme de Hard Copy pour Seikosha et un jeu (les
quatre ponts) : avec un autre auteur comme lui, Pom’s pourra devenir mensuel !
Suite aux nombreuses questions des lecteurs relatives aux programmes FID et MUFFIN, Alexandre
Duback apporte quelques explications sur leur mode d’emploi. Vous trouverez aussi dans ce numéro
un banc d’essai de IApple Ile (Jean-Francois Duvivier est de retour parmi nous), une présentation
du Lisa, une analyse du programme Multiplan et du programme d'apprentissage du BASIC d’André
Finot.
Nous rappelons aux nouveaux lecteurs qu’une disquette facultative en DOS 3.3 accompagne chaque
numéro de Pom’s. Cette disquette reprend tous les programmes de la revue, agrémentés
d’explications, d’un générique (souvent) et de programmes de démonstration (parfois). Les
disquettes peuvent étre commandées séparément.
Le recueil numéro 1 de Pom's regroupant les quatre premiers numéros est en train de « partir » &
toute vitesse. Attention, nous n’en avons tiré que 5 000 ! On peut commander les trois disquettes du
recueil séparément pour 150 francs (voir le bulletin).
Nous vous remercions de continuer a nous faire confiance et encourageons tous les lecleurs qui nous
envoient leurs contributions.
Nous vous donnons rendez-vous du 14 au 18 juin & notre stand (T3) au salon Micro-Expo.
Hervé Thiriez
Ont collaboré & ce numéro : Jean-Jacques Crépy - Alexandre Duback - Jean-Francois Duvivier - Philippe Frangois - Oli-
vier Herz - Yvan Koenig - Régis Lardennois - Bruno Lemaire - Thierry Le Tallec - Michel Marquis - Guy Mathieu - Gilles
Mauffrey - Gérard Michel - Denis Sureau - Hervé Thiriez - Jacques Tran-Van.
Rédacteur : Olivier Herz — Dessins ; Laurent Bidot.
Directeur de la publication - rédacteur en chef : Hervé Thiriez - Siége social et abonnements : Editions MEV - 49, rue
Lamartine - 78000 Versailles - Réaction : 59, bd de Glatigny - 78000 Versailles - Tél. . (3) 918,13.07 - Courrier des
lecteurs (logiciel) : Olivier Herz - 17, rue du Gros Chéne - 44300 Nantes.
Biss pebleliare : Force 7 - Anne Jourdan - 39, rue de la Grange-aux-Belles - 75483 Paris Cedex 10 - Tél. : (1)
38.66.10.
Diffusion auprés des boutiques et librairies : Editions du PSI - 41-51, rue Jacquard - B.P. 86 - 77400 Lagny-sur-Marne.
Composition - Impression : SIM - 52, rue Servan - 75011 Paris - Tél: (1) 357.51 20
Pom’s n° 7
CTRL - @. - RESET
(ou les arcanes du Monitor Apple III)
Bruno Lemaire - Gilles Mauffrey
Tout utilisateur d’Apple III, surtout
s'il a aussi utilisé un Apple Il, s'est
sans doute posé au moins une fois
les questions suivantes : qu’'y a-tl
derriére le rempart mystérieux du
SOS ? Peut-on utiliser le langage
machine de l’Apple III aussi commo-
dément que celui de son petit frére,
puisqu'ils utilisent tous deux le
méme processeur, le 6502 ?
Nous allons donc essayer de donner
dans cet article quelques éclaircisse-
ments sur utilisation et l'implanta-
tion mémoire des principales routi-
nes moniteur de l’Apple III, en réser-
vant a un article ultérieur la présen
tation de la structure du SOS.
Structure de la mémoire
A. Généralités
La mémoire de l’Apple III peut étre
considérée comme essentiellement
composée de zones (banques) de
32 K-octets ; une exception est faite
pour la zone s’étendant de $F000 4
$FFBF qui contient normalement le
moniteur en ROM, mais qui peut
étre « switchée » pour contenir une
zone RAM du SOS.
Le nombre de ces zones est variable,
et dépend de la configuration de
l'utilisateur. Il y a ainsi 4 zones pour
un Apple 128 K, et bien stir 8 zones
pour un Apple 256 K. Il n'y a cepen-
dant que 64 K directement adressa-
bles par l'utilisateur, décomposés en
une banque « systéme » allant de
$0000 & $1FFF, et de $A000 4
SFFFF, et en une banque utilisateur
allant de $2000 a $9FFF. C'est cette
banque qui est « switchable » par
une simple modification du contenu
de $FFEF. Ce contenu varie de F0a
F2 pour un 128 K, et de FO a F6
pour un 256 K.
Si l'on veut implanter en mémoire
un programme machine, on dispose
done sans probléme d’au moins
32 K, plus une partie de la banque
systéme non utilisée par le SOS.
Par contre, si l'on désire utiliser
davantage de mémoire en modifiant
Commandes moniteur
le numéro de la banque utilisée, il
faut veiller 4 ce que la partie du pro-
gramme qui veut adresser d'autres
banques soit sur la banque systéme.
B. Zones particuliéres
1) En dehors de la page zéro tradi-
tionnelle (réservée pour différents
pointeurs et pour l’adressage indirect
du 6502), et de la pile systéme en”
page | (de $100 a $1FF), d'autres
zones font fonction de page zéro
(adressage indirect étendu, unique-
ment lorsque le SOS est actif) et de
pile pour le SOS et pour le pro-
gramme machine chargé au
moment du boot.
2) Mémoire écran.
— Pour le texte. En 40 colonnes,
elle utilise les positions de $400 4
$7FF. En 80 colonnes, elle utilise
aussi $800 a $BFF ; les caractéres
de rang pair sont alors stockés de la
page $4 4 la page $7, les autres
étant placés entre les pages $8 et $B.
— Pour les graphiques. Commence
en page $20.
Symbole Syntaxe Utilisation
G nG Execute le programme commengant en n
J nd Saute 2 l'octet n
Ss octet < m pS Recherche 'existence d'un octet entre m et n
M n<m.pM Copie la zone comprise entre m et p a partir de n
v meme syntaxe que M (= Verify)
U Jump en 3F8 pour routine utilisatenr (User)
R bloc<bufl buf2R Transfére une zone disque en zone mémoire
w bloc <bufl.buf2w Fait lopération inverse. Attention : opération potentiellement dangereuse !
m, n et p sont des adresses en hexadécimal. bufl et buf2 désignent le début et la fin du buffer de données.
Routines moniteur
Les débuts de chaque routine sont
données en hexadécimal ; celles-ci
sont nommées d’aprés la correspon-
dance qu’elles ont avec celles de
lApple II.
FOAF — PRBYTE (print a hexade-
cimal digit) envoie le con-
tenu de l’accumulateur
sur l’organe de sortie
— PRHEX envoie le quartet
bas de l’accumulateur sur
Yorgane de sortie
FB7D — HOME
FBAF — CROUT1 (return with
clear) : nettoie l'écran a
partir de la position cou-
F9B7
rante du curseur, puis
appelle CROUT
(= retour chariot)
— COUT 1: envoie le
caractére qui est dans
Vaccumulateur
FCDS — GETLN : collecte une
ligne de 80 caractéres
FC06
FDO07 — CROUT: envoie un
retour chariot
FDOC — KEYIN : lit le clavier de
lApple III
FD60 — RDKEY : traite le carac-
tére saisi au clavier
Clefs
Le préfixe « e » est mis pour Escape.
eL — ; netloie fin de ligne
(e-Een All)
eP : nettoie bas de l’écran
(e.F en A Il) a partir du
curseur
eS : Home
e.fléche : déplacement dans le sens
de la fléche
2.8 : passage en 80 colonnes
e4 : passage en 40 colonnes
(pour sortir du mode Escape, taper
deux fois d’affilée sur Escape).
Nous terminons ici cette premiére
présentation, remettant 4 un autre
article une analyse de la structure du
SOS. Bien entendu, le titre de cet
article vous indique la fagon d’obte-
nir le mode moniteur. Il est difficile
de le découvrir par (alonnements !
Pom's n°7
Cryptographie a clef publique
Olivier Herz
Le programme ci-joint intéressera
sans doute un grand nombre
d'industriels ainsi que tous ceux qui
sont préoccupés par le secret de
leurs communications : il s'agit de
limplémentation sur Apple Il en
Pascal d'un systéme de cryptogra-
phie a clef publique dont nous pou-
vons assurer T'inviolabilité =méme
avec l'aide des plus puissants ordina-
teurs. Pour Iutiliser, il n'est pas
nécessaire de connaitre le langage
Pascal, mais il faut savoir se servir du
SYSTEM.EDITOR et du SYSTEM
FILER.
Cryptosystéme 4 clef
publique
Dans un cryptosyst@me convention-
nel, l’expéditeur et le destinataire du
messaye possédent tous deux une
clef secréte (c’est-a-dire un ensemble
de paramétres, habituellement des
grands nombres choisis au hasard)
permettant d’exécuter |’algorithme
de codage du message par !'expédi-
teur et celui de décodage par le des
tinataire. Ce message, une fois
codé, peut étre transmis par un
moyen de communication non
secret, comme la radio. Il est clair
que la fiabilité d'un tel systéme
repose sur le secret de la clef, qui
doit étre distribuée au moyen de
canaux sdrs, afin de ne pas étre
interceptée.
Dans un cryptosystéme 4 clef révé-
lée (ou publique), on n’a pas besoin
d’un canal secret pour distribuer les
clefs. Au contraire, chaque utilisa-
teur posséde deux clefs : une clef de
codage qu'il rend publique et une
clef de décodage privée. L’expédi-
teur code donc le message avec la
clef publique du destinataire, qui le
décode avec sa clef privée. L'inviola-
bilité réside dans le fait qu’on déduit
trés facilement par le calcul la clef
publique 4 partir de la clef privée
alors que I'inverse exigerait des mil-
liers d’années de calcul sur ordina-
teur, voire plus! C’est ce qu'on
appelle une fonction A sens unique
et Agache ; ce calcul inverse ne peut
se faire qu’en connaissant une infor-
mation secréte, la gache de la fonc-
tion.
Pom’s n° 7
CESYSTEME COMPLET DE CRYPTOGRAPHIE A CLEF PUBLIQUE)
(#$C (C) OLIVIER HERZ OCTOBRE 1982 POUR POM’S*)
PROGRAM CRYPTOGRAPHIE;
USES APPLESTUFF;
VAR COMMANDE: CHAR;
PROCEDURE MENU;
CONST TAILLE =167;
LUNGUEUR =36;
TYPE ENTIER =INTEGER{LONGUEUR] ;
CHOIDECA =SET OF CHAR;
VAR BS, CR CHAR;
NOM STRING}
INVFACTEUR,
BASE ,FACTEUR :ENTIER;
CLEF 1ARRAYE1..TAILLE) OF ENTIER;
PUBLIQUE sTEXT;
PRIVEE sFILE OF ENTIER;
CODE ,CLAIR 2TEXT;
MODTAB 1ARRAYE1,..LONGUEUR) OF ENTIER;
KRHA HHH KH KE AK HK EKER AK AR ERED
(% PROCEDURES HABITUELLES COURANTES %)
ce 3 MERCI MICHEL CRIMONT! *»>
KKH KH HH HH HHH HH HHI KD
PROCEDURE MESSAGE(1: INTEGER; S:STRING) ;
BEGIN GOTOXY(@,1>; WRITE(S,CHR(11)) END;
FUNCTION PRENCAR‘ BONSET : CHOI DECA? : CHAR;
VAR CH :CHAR;
BEGIN
REPEAT
READ<( KEYBOARD, CH) ; IF EOLN(KEYBOARD>) THEN CH:=CR;
IF NOT (CH IN BONSET) THEN WRITECCHR(7)?
ELSE IF CH INL’ ’../z‘] THEN WRITE<CH)
UNTIL CH IN BONSET;
PRENCAR1=CH
END;
PROCEDURE OUT(S:STRING) ;
VAR CH 1CHAR;
BEGIN
CLOSE(PRIVEE) ; CLOSECPUBLIQUE) ; CLOSE(CODE); CLOSECCLAIR? ;
PAGE( OUTPUT) ; MESSAGE( 18,S) ; WRITECCHR(7)) ;
MESSAGE( 12,’ APPUYEZ SUR <RETURND’) ;
CH:=PRENCARC(ECRI> ; EXIT<(MENUD
END;
PROCEDURE SORTIE;
BEGIN OUT<’CLEF OU MESSAGE NON VALIDE’> END;
PROCEDURE DEHORS;
BEGIN OUT<’TITRE OU LECTEUR NON VALIDE’) END;
PROCEDURE PRENENTIER(S:STRING; VAR ENT:ENTIER) ;
VAR I o:1.. TAILLE;
BEGIN
ENT:=@5
IF (LENGTH(S)=8) OR (LENGTH(S)>36) THEN SORTIE;
FOR I:=1 TO LENGTH(S? DO
BEGIN
IF NOT (SEI] IN [’8%..’971) THEN SORTIE;
ENT :=ENTX 18+ (ORD(SE1)-48)
END
END;
PROCEDURE NOMFICHIER(S:STRING; I: INTEGER) ;
VAR Si #STRINGE 13;
BONSET :CHOIDECA;
BEGIN
CLOSE (PRIVEE) ; CLOSE(PUBLIQUE); CLOSE(CODE); CLOSECCLAIR) ;
SS
ys
La méthode
Les systémes cryptographiques
actuels tendent de plus en plus a uti-
liser des problémes dits de type NP
(non polynomiaux) caractérisés par
le fait que le nombre d’opérations
nécessaires 4 leur résolution croit
comme une fonction exponentielle,
et non polynomiale, de leur taille.
Notre programme utilise un
cryptosystéme basé sur le probléme
NP de l'empilement : étant donné n
jetons de hauteurs respectives Ay
A, et une hauteur C, coniment
peut-on obtenir C en empilant un
sous-ensemble de ces n jetons ? On
ne connait actuellement pas d’autre
solution que la recherche systémati-
que de tous les empilements possi-
bles (au nombre de 2 puissance n).
Par contre, ce -probléme est trés
facile dans un cas particulier : quand
la hauteur d’un jeton est supérieure
Ala somme des hauteurs de ceux qui
le précédent (i.e. A; somme de 1 ai-
1 des Ay. Il suffit alors pour le résou-
dre d’essayer de soustraire de C-le
dernier jeton ; si c'est impossible, on
essaye l'avant-dernier, etc. jusqu’a
ce que l'on y arrive; puis l'on
recommence le processus avec le
résultat de la soustraction, etc... On
parvient ainsi 4 la solution en n opé-
rations au plus. On concoit donc que
l'on utilisera comme clef privée les
jetons d'un probléme facile et
comme clef publique ceux d’un pro-
bléme difficile.
Explication des calculs
On note By...B, les « hauteurs » du
« problame facile » de TAILLE n ;
soient M un trés grand nombre (la
BASF) supérieur 4 la somme des
Bjet F (le FACTEUR) inférieur & M.
F doit étre premier avec M afin que
Ton puisse trouver son inverse
modulo M ('INVFACTEUR E, tel
que E.F = 1 modulo M). Ceci cons-
titue la clef privée et la gache est for-
mée de M et de E. On calcule alors
les n « hauteurs » Ay...Ap, du « pro-
blame difficile » par la formule A; =
(BF) moduloM ; les A; forment la
clef publique.
Pour le codage, on décompose le
texte en bits valant 0 ou 1; nous
avons utilisé pour coder un caractére
les 6 chiffres de la décomposition
binaire de la différence entre son
code ASCII et 32 ; c’est le tableau
BIT de la procédure CODAGE ; les
minuscules, de code ASCII supé-
rieur 4 96, ont été remises en majus-
PAGE(OUTPUT) ; MESSAGE(18,S); S1:=" ’; NOM:=7";
BONSET :=0 78.0797 4A. 72%, 20%. 724,787, 2405
REPEAT
IF LENGTH<NOM)=6 THEN S1f 1]:=PRENCAR<BONSET>
ELSE IF LENGTH(NOM)=I THEN SI[1]:=PRENCAR(ECR,BSJ)
ELSE S1[1]:=PRENCAR(BONSET+{CR,BS1) ;
IF S101] IN BONSET THEN NOM:=CONCAT<NOM,S1)
ELSE IF Sif1]=BS THEN BEGIN
WRITE(BS,’ ‘ ,BS);
DELETE(NOM,LENGTH(NOM) , 1)
END
UNTIL S1f1]=CR;
IF POS(“#’ ,NOM)=8 THEN NOM:=CONCAT(“#4:° ,NOM) ;
IF LENGTH(NOM) >I THEN NOM:=COPY(NOM, 1,1)
END;
FUNCTION PLUSGRAND(A,B:ENTIER) : BOOLEAN;
VAR U,V :STRING;
BEGIN
STRCA, UD ; STR(B,U) ;
IF LENGTH(U) >LENGTH(V) THEN PLUSGRAND:=TRUE
ELSE IF LENGTH(U)<LENGTHCV) THEN PLUSGRAND:=FALSE
ELSE PLUSGRAND :=U>V
END;
FUNCTION EGAL(A,B:ENTIER? : BOOLEAN;
VAR U,V :STRING;
BEGIN STR(A,U); STR(B,U); EGAL:=U=U END;
FUNCTION RND;: INTEGER;
BEGIN RND:=RANDOM DIV 16384 END;
PROCEDURE ECRIS(I: INTEGER) ;
BEGIN WRITE(’.’); IF I=TAILLE DIV 2 THEN WRITELN END;
PROCEDURE FAITMODTAB(ENT :ENTIER) ;
VAR T :1.-LONGUEUR;
BEGIN
FOR I:=1 TO LONGUEUR DO
BEGIN
MODTABI 1] :=ENT-(ENT DIV BASE) XBASE; ENT:=16XMODTABL I}
END
END;
PROCEDURE MODULO(VAR ENT:ENTIER) ;
VAR I :1..LONGUEUR;
S iSTRING;
BEGIN
STRCENT,S); ENT:=8;
FOR I:= 1 TO LENGTH(S) DO
ENT 1=ENT+ (ORD(SLI J) -48) XMODTABELENGTH(S) + 1-115
ENT:=ENT-(ENT DIV BASE) XBASE
END;
(88000888000,
«% CODAGE X>
(HERE KRRRERD
PROCEDURE CODAGE;
VAR I,J,K : INTEGER;
CH CHAR;
s :STRING;
BIT tARRAYIG..63,1..61 OF @..1;
ENT sENTIER;
BEGIN (XCODAGEX>
NOMFICHIER( “NOM DU CORRESPONDANT: “, 13);
(kB1-%)
RESET< PUBLIQUE , CONCAT<NOM, ’ . TEXT’) 5
IF IORESULT(>@ THEN DEHORS;
CRBI4®)
PAGE( OUTPUT) ; WRITELN( ‘LECTURE DE LA CLEF PUBLIQUE’);
FOR I:=1 TO TAILLE DO
BEGIN
IF EOF(PUBLIQUE) THEN SORTIE; ECRIS(1);
READLN( PUBLIQUE ,S) ; PRENENTIER(S,CLEFEI1)
END;
NOMFICHIER< “NOM DU MESSAGE: “,11>5
(kSI-®)
Pom's n°7
cules et les caractéres de contrdle,
de code inférieur 4 32, ont été rem-
placés par des espaces, sauf le retour
chariot, de code 13, remplacé par le
code 95 qui représente un caractére
inaccessible au clavier et done peu
usité. On découpe le message en
groupes successifs de n bits
X]...Xp. Si le dernier groupe con-
tient moins de n bits, on le compléte
par des bits aléatoires. Le codage
consiste 4 calculer pour chaque
groupe la hauteur C, somme de 18
n des A;X;.
Pour décoder, on commence par
calculer D = C.E modulo M, puis
Ton résoud le probléme d’empile-
ment facile avec les B, de fagon 4
trouver les n bits Yy...Y, tels que D
soit la somme des BjY;. Or on voit
aisément que les Yj sont nécessaire-
ment égaux aux Xj ; ils permettent
donc de reconstituer le texte original
(en n’oubliant pas de remplacer le
caractére de code ASCII 95 par un
retour chariot).
Réalisation pratique
L'obligation d’utiliser de trés grands
nombres rendait pratique l'emploi
du langage Pascal qui posséde des
entiers ayant déja 36 chiffres (les
grands entiers). De plus, la portabi-
lité du Pascal permet d’utiliser le pro-
gramme CCP sur d'autres ordina-
teurs.
Le programme utilise et stocke les
clefs et messages sous forme de
fichiers. Hormis la clef privée, qui est
un fichier de type DATA contenant
des grands entiers (afin d’éviter que
des indiscrets ne Ja lisent), la clef
publique et les messages codé et
clair sont des fichiers TEXT qui peu-
vent étre lus ou écrits avec le
SYSTEM.EDITOR (la clef publique
et le message codé étant composés
de grands entiers transformés en
chaines de caractéres) .
Le programme est en fait une
grande procédure (MENU) destinée
A permettre le retour au menu en cas
derreur par une instruction EXIT
(voir les procédures SORTIE,
DEIIORS et OUT). Les procédures
ou fonctions MESSAGES et PREN-
CAR sont classiques et RND fournit
un bit aléatoire. PRENENTIER fait
linverse de la procédure Pascal STR
en transformant une chaine en un
grand entier. NOMFICHIER prend
au clavier le nom d'un fichier sans le
suffixe qu'elle rajoute automatique-
ment (.TEXT et .DATA pour les
Pom's n°7
RESET(CLAIR,CONCAT(NOM,’ .@.TEXT’));
ITF TORESULT=8 THEN REWRITECCODE ,CONCAT(NOM,’.1.TEXT’));
IF IORESULT<>@ THEN DEHORS;
CHT +E
FOR I:=6 TO 63 DO
BEGIN
K:=1; FOR Ji=i TO 6 DO
BEGIN BITLI,J]:=K MOD 2; K:=K DIV 2 END
END;
PAGE OUTPUT) ; WRITELN(’CODAGE’); I:=TAILLE; ENT:=@;
REPEAT
IF EOLN<CLAIR) THEN BEGIN READLN<CLAIR> j; WRITELN; K:=63 END
ELSE BEGIN
READ(CLAIR,CH) ; K:=ORD(CH)-32; IF K¢@ THEN K:=6; _
IF K>63 THEN K:=K-32; WRITECCHR(K+32))
END)
FOR Ji=6 DOANTO 1 DO
BEGIN
ENT :=ENT+CLEFC1IIXBITCK, J};
I 1; IF I=@ THEN BEGIN
STRCENT,S) ; WRITELN(CODE,S) ;
1:=TAILLE; ENT:=8
END
END;
IF (EOF(CLAIR)>) AND (I<>TAILLE) THEN
BEGIN
REPEAT ENT:=ENT+CLEFCIJXRND; I:=I-1 UNTIL 1=83
Suite du listing page 11
Programme VERIFICATION
Suite et fin de l'article
Effacement du directory en Pascal
Pages 59-60
TLE GF INTEGER;
AR;
VAR F:
PROGRAMME DE DEMONSTRATION DE &?* EFFICACITE’)
OCEDE D* EFFACENENT DU DIRECTORY EN MEMOL
RAT cub zxgenca UNE DISQUETTE PROGRAMME VIERBE et frapoer’);
TEN be POUR LIRE LE DIRECTORY DE LA NOUVELLE DISQUETTE PROGRAMME™) ;
AXELNC ou une at touche 20UR CONSERVER L’’ANCIEN DINECTURY’ ) 5
READ (CL) gARITELNSARETENS
O HEN ARK(PO) ;
{ efface en memoire le directory de la disquette }
{ PROGRAMME sur laouetie se trouve le programme }
TEST):
TELN( IL N??Y A OAS D’ERREUR DE DIRECTORY’)
ELSE Uf TENCLE DIRECTORY DE LA VERITABLE DISQUETTE APPLE! EST’,
"HAINTENANT SUR LA FAUSSE?) s
eee LAVERTTABLE DISQUETTE PROGRANME et frapper ia barre espace’):
clefs publique et privée, .O.TEXT et
.1.TEXT pour les messages en clair
et codé). S'il n'y a pas de préfixe,
elle rajoute #4 : (le préfixe doit indi-
quer le numéro du drive et non le
nom de la disquette). PLUSGRAND
el EGAL comparent deux grands
entiers (en théorie, rien n’empéche
de comparer deux grands eniliers
comme on le fait avec des entiers ou
des réels, mais en pratique cela pro-
duit des erreurs et des « plantages »
a l'exécution ; cette cause d’erreurs
ne fut pas évidente 4 découvrir et
reste mystérieuse !). FAITMODTAB.
et MODULO permettent de calculer
les expressions B;.F modulo M et
C.E modulo M (alors que les poduits
B,.F et C.E excédent les 36 chiffres)
grace au tableau MODTAB qui con-
tient les valeurs modulo M des pro-
duits de F ou E par les puissances
successives de 10.
Les procédures CODAGE et DECO-
DAGE comportent deux parties : la
demande des noms des fichiers puis
le codage ou le décodage propre-
ment dits. Si l'opération de déco-
dage rencontre un probléme d’empi-
lement ne pouvant étre résolu (mau-
vaise clef ou mauvais message), elle
s'arréte (on peut la laisser continuer
si l'on supprime la ligne avant le
UNTIL).
La procédure ALEATOIRE fournit
un grand entier aléatoire compris
entre INF et SUP-1. La méthode uti-
lisée est la dichotomie qui, bien que
longue d’exécution, est la plus facile
@ mettre en ceuvre avec des grands
entiers. La procédure récursive
BEZOUT permet de résoudre par
l'algorithme d’EUCLIDE l’équation
de BEZOUI AX-BY=1 quand
AsB. Elle est utilisée ici avec A = F,
X=E, B=M et Y=K of
EF = KM + 1. La procédure
GENERATION commence par cal-
culer la clef privée en se fixant pour
chacun de ses entiers des limites
supérieure et inférieure confortables
(SUP et INF) ; puis elle calcule la clef
publique.
Notons que la constante TAILLE
vaut 107, ce qui est a peu pres le
maximum que I'on puisse prendre
avec ce programme. Mais on peut
Parfaitement utiliser ce programme
avec une valeur plus faible. Remar-
quons que le calcul exhaustif de tous
les empilements lorsqu’on a
107 jetons (i.e. le décodage de C)
prendrait avec un ordinateur étu-
diant 1000 milliards d’empilements
par seconde (ne révons pas !)
5000 milliards d’années! Remar-
quons encore que 107 mest pas
multiple de 6, le nombre de bits par
caractéres, ce qui permet
d'embrouiller encore plus un éven-
tuel décrypteur en codant ceriaines
lettres 4 cheval sur deux empile-
ments. On peut prendre une
TAILLE multiple de 6; chaque
empilement correspond alors exac-
tement a TAILLE/6 lettres, ce quile
rend autonome.
Mode d’emploi
Signalons tout d’abord que pour
envoyer un fichier TEXT a un cor-
respondant on peut, soit lui envoyer
une disquette, soit utiliser un
modem, soit encore imprimer et
envoyer (par radio ou par courrier)
le texte afin qu’il soit édité et sauvé.
Dans un premier temps, chaque uti-
lisateur du syst8me CCP fabrique un
syst@éme de clefs. M. Dupont par
exemple répondra G et DUPONT
(ou bien # 5: DUPONT) au pro-
gramme CCP et l’Apple fabriquera
sur la méme disquette les fichiers
DUPONT.TEXT (clef publique qu'il
devra fournir a ses interlocuteurs) et
DUPONT.DATA (clef privée qu'il
devra garder sur une disquette dans
un coffre 4 l'abri).
Pour envoyer le message MISSIVE a
10
M. Durand, M. Dubois commen-
cera par éditer son texte (en y glis-
sant si possible de nombreux signes
de ponctuation ne génant pas la
compréhension du texte, ce qui rend
encore plus difficile tout essai de
décryptage) et il le sauvera sous le
nom MISSIVE.O.TEXT. Puis, ayant
vérifié qu'il posséde le fichier
DURAND.TEXT, il répondra C,
DURAND (ou bien # 5 :DURAND)
et MISSIVE (ou bien # 5 :MISSIVE)
au programme CCP qui fabriquera
le fichier codé MISSIVF.1.TEXT
(sur la disquette ot se trouve MIS-
SIVE.O.TEXT), qui devra parvenir
aM. Durand.
Pour le décodage, ce dernier sortira
le fichier DURAND.DATA de son
coffre et répondra D, DURAND (ou
bien # 5 :DURAND) et MISSIVE
(ou bien # 5 :MISSIVE) au pro-
gramme CCP qui recréera pour lui le
fichier MISSIVE.O.TEXT (sur la
disquette od se trouve MISSIVE
1.TEXT). Notons que pendant les
opérations de codage et de déco-
dage, le message en clair apparait
sur l'écran au fur et a mesure de sa
lecture ou de son écriture
En conclusion, nous avons la un
systéme cryptographique trés simple
d'emploi et parfaitement str. Les
temps d’exécution sont de 6 minutes
pour écrire le syst@me de clefs,
denviron 9cps (caractéres par
seconde) pendant le codage et
d'environ 5cps pendant le déco-
dage. Mais ces temps diminuent for-
tement avec la constante TAILLE et
il y a un compromis 4 trouver entre
la vitesse d’exécution et la sécurité
du codage. Remarquons que le
cryptosystéme utilisé ne permet mal-
heureusement pas I’authentification
de l’expéditeur, contrairement 4 un
syst@me plus récent, développé au
M.1-1., dans lequel les clefs publique
et privée ont des réles symétriques.
Mais ce dernier systéme est pratique-
ment impossible 4 mettre en ceuvre
sur Apple II car il utilise de trés
grands nombres premiers.
Bibliographie
« La guerre des codes secrets » par
David Kahn chez Inter Editions est
un excellent ouvrage sur histoire du
chiffre. Dans «Les progrés des
mathématiques », Pour’ la Science
publie un recueil de ses articles de
mathématiques dont « Les mathé-
matiques de la cryptographie 4 clef
révélée », écrit par l'un des auteurs
du systéme 4 empilement.
Pom’s n° 7
STRCENT,S) 5; WRITELN(CODE,S)> ;
END
UNTIL EOFCCLAIR) ;
CLOSECCLAIR) ; CLOSE<CODE,LOCK>
END; (xCODAGEX)
(RR K KK KKK KXX)
(% DECODAGE %>
(RRRRARRARRRED
PROCEDURE DECODAGE;
VAR I,J,K :INTEGER;
s :STRING;
ENT — :ENTIER;
BEGIN (XDECODAGEX)
NOMFICHIER< ‘VOTRE NOM: % , 13);
CX$1-%)
RESET (PRIVEE, CONCAT(NOM,“ .DATA‘)) ;
IF IORESULT<>@ THEN DEHORS;
CHEI+%)
PAGEC OUTPUT) ; WRITELN( “LECTURE DE LA CLEF PRIVEE’) 3
FOR I:=i TO TAILLE DO
BEGIN
IF EOFCPRIVEE) THEN SORTIE; ECRIS(I);
CLEFCI1]:=PRIVEE*; GET(PRIVEE>
END;
IF EQF(PRIVEE) THEN SORTIE; BASE:=PRIVEE*; GET<PRIVEE) ;
IF EOF<PRIVEE) THEN SORTIE; INVFACTEUR:=PRIVEE% ;
NOMFICHIER(’NOM DU MESSAGE: / ,11);
CX$1-*)
RESET (CODE , CONCAT(NOM,’.1.TEXT’)) 3
IF IGRESULT=8 THEN REWRITEC(CLAIR, CONCAT (NOM, ‘% .@.TEXT’)) 5
IF IORESULT<>@ THEN DEHORS;
CRBI+K)
FAI TMODTAB( INVFACTEUR) ;
PAGE OUTPUT) ; WRITELN< ’DECODAGE’> ; J:=@; K:=6;
REPEAT
READLN(CODE,S) ; PRENENTIER(S,ENT) ; MODULOCENT) ;
FOR I:=TAILLE DOWNTO 1 DO
BEGIN
Ji=J+1; Ki=2kK+1;
IF PLUSGRAND(CLEFLI],ENT>) THEN K:=K-1
ELSE ENT :=ENT-CLEFEI1;
IF J=é6 THEN
BEGIN
IF K=63 THEN BEGIN WRITELN; WRITELNCCLAIR) END
ELSE BEGIN WRITECCHRC(K+32)) ; WRITECCLAIR,CHRC(K+32)) END;
J:=8; K:=6
END
END;
IF NOT EGAL<ENT,@> THEN SORTIE
UNTIL EOFCCODE> ;
CLOSE‘(CODE) ; CLOSE<CLAIR,LOCK>
END; (XDECODAGEX)>
(RRR KKK KKK KKK KK KAKA KK AKER)
€% GENERATION D’UNE CLEF ¥)
(RRR KKK KKK KKK KKK KKKKKAEK)
Pom's n° 7 11
PROCEDURE GENERATION;
VAR I :1..TAILLE;
s : STRING;
BON :BOOLEAN;
INF,SUP,BIDON :ENTIER;
PROCEDURE ALEATOIRE(VAR ENT:ENTIER) ;
VAR I 21..43
A,B sENTIER;
BEGIN
:=INF; B:=SUP;
REPEAT
ENT :=(A+B) DIV 23
IF NOT EGAL(A+B,2XENT> THEN ENT :=ENT+RND;
IF RND=@ THEN B:=ENT ELSE A:=ENT
UNTIL PLUSGRAND(3,B-AD ;
ENT:=A; IF EGAL¢2,B-A) THEN ENT :=ENT+RND
END;
PROCEDURE BEZOUT(A,B:ENTIER; VAR X,Y:ENTIER) ;
VAR Q@,R :ENTIER;
BEGIN
X05 Y:=0;5
IF BON THEN
BEGIN
Q:=B DIV A;
IF EGAL(B,Q¥A) THEN IF EGAL(A,1) THEN-
BEGIN Y 3 X:=B+1 END
ELSE BON:=FALSE
ELSE BEGIN
B:=B-QkA; R:i=A DIV B;
IF EGAL(A,RXB) THEN IF EGAL(B,1) THEN
BEGIN Y:=A-1; X:=1+@xXY END
ELSE BON:=FALSE
ELSE BEGIN
Ar:=A-REB; BEZOUTC(A,B,X,Y) ;
Yr=Y+R¥X; X:=X+QXY
END
END
END
END;
BEGIN ¢XGENERATIONX)>
NOMFICHIER( ‘VOTRE NOM: “,13)5
C¥$1-X)
REWRITE PRIVEE , CONCAT (NOM, ’ .DATA’))> 5
IF IORESULT<>@ THEN DEHORS;
CHSI+K)
SUP:=10; INF:=3;
PAGEC OUTPUT) ; WRITELN(’ECRITURE DE LA CLEF PRIVEE’);
FOR I:=1 TO TAILLE DO
BEGIN
ALEATOIRECCLEFLII); PRIVEE*:=CLEFL11; PUT(PRIVEE) ;
ECRIS (1); INF:=INF+CLEFLI]; SUP:=2xSUP
END;
INF:=SUP; SUP:=2XSUP;
ALEATOIRE( BASE) ; PRIVEE*:=BASE; PUT(PRIVEED ;
WRITEC<’.’)>; INF:=BASE DIV 2; SUP:=BASE;
12 Pom's n°7
REPEAT
ALEATOIRE<(FACTEUR? ; WRITEC’.7);
BON:=TRUE; BEZOUT<FACTEUR, BASE , INVFACTEUR , BIDON>
UNTIL BON;
PRIVEE* :=INVFACTEUR; PUT(PRIVEE> ; CLOSE(PRIVEE,LOCK) ;
(X¥$1-X)
REWRITE PUBLI QUE , CONCAT (NOM, ’ . TEXT’)) 3
IF IORESULT<>@ THEN DEHORS;
CRHSI+E)D
WRITELN; WRITELN; WRITELN(’ECRITURE DE LA CLEF PUBLIQUE’);
FAITMODTABC FACTEUR>) ;
FOR I:=1 TO TAILLE DO
BEGIN
MODULOCCLEFL1]>; ECRIS¢I);
STR(CLEFLI1,S); WRITELN(PUBLIQUE,S)
END;
CLOSE¢ PUBLI QUE , LOCK)
END; (GENERATION)
BEGIN (XMENUX)>
CR:=CHR( 13); BS:=CHR(8); PAGEC OUTPUT) ; RANDOMIZE;
MESSAGE 2,” OLIVIER HERZ PRESENTE C.C.P.*);
MESSAGE(5S, “ SYSTEME COMPLET DE’);
MESSAGE(7,” CRYPTOGRAPHIE A CLEF PUBLIQUE.’);
MESSAGE<( 11,” G) ENERER VOTRE SYSTEME DE CLEFS’);
MESSAGE 13,’ ©) ODER UN MESSAGE’) ;
MESSAGE (15, DECODER UN MESSAGE’) ;
MESSAGES 17,” Q@)UITTER LE SYSTEME C.C.P.’);
MESSAGE(2@,’ VOTRE CHOIX:’);
COMMANDE :=PRENCAR(L’G’ , °C ,“D’ “8% ,°0%, 40% 7d" “QI
CASE COMMANDE OF
4G’ 79’ :GENERATION;
“C’ ,’c’ :CODAGE;
*D’ ,/d’ sDECODAGE
END
END; (XMENUX>
BEGIN (XCRYPTOGRAPHIEX)
REPEAT MENU UNTIL COMMANDE IN [’@Q’,’q’]
END. ¢(XCRYPTOGRAPHIEX>
Micromos L’avance tec
aait
Carte mémoire 256 Ko pour
APPLE II
i)
hnologique
at
|. SONWaS NY wove
Laboratoire :
17, Plateau de la Raviniére - 95520OSNY - Tél. (3) 032-16-71 - (3) 032-37-78
Pom’s n° 7
Etudiants, lycéens lisez
Lycéens, étudiants, enseignants, parents : ’équipe de larevue
VORDINATEUR INDIVIDUEL publie un numéro spécial
hors-série qui fait le point sur l’ordinateur a l’école.
e Un ordinateur dans une classe?
e Comment l’enseignement peut-il étre facilité par un
ordinateur individuel ?
e A partir de quel 4ge peut-on découvrir l’informatique?
e Quelle aide un ordinateur familial apporte-t-il sur le plan
éducatif?
e Comment créer et gérer un club d’informatique individuelle
dans un établissement scolaire ou universitaire?
Toutes les réponses a ces questions (et a d’autres!) figurent
dans ce dossier indispensable réalisé a partir d’une synthése
des meilleurs articles parus dans
LORDINATEUR INDIVIDUEL.
En 1983, il n’est plus raisonnable d’ignorer le formidable outil
qu’est lordinateur. Pour étre mieux informé sur ce domaine,
lisez LORDINATEUR ET VECOLE.
Cee
Ow
Het laf, nay,
va
225 FF chez votre marchand de journa
NT
%
Graphique, quand tu
On peut reprocher aujourd’hui 4
lApple Il un écran graphique man-
quant de finesse : la nouvelle géné-
ration de micro-ordinateurs exprime
souvent ses aptitudes graphiques en
centaines de milliers de points, par
exemple 800 x 400, plutét qu’en
dizaines de milliers : 280 x 192.
N’oublions quand méme pas qu'il y
a seulement trois ans l’Apple II était
le phénix des hétes de ces vergers,
car, ace prix, les possibilités graphi-
ques étaient rares.
L’Apple Il garde une caractéristique
particuliére attrayante, celle de la
double page graphique. Pour peu
que l'on posséde une imprimante
capable d’en tirer le meilleur parti,
nous voila bien armés. C'est le cas
avec EPSON MX FT munie de
l'interface graphique EPSON pour
Apple II.
Quelles sont les possibilités offertes ?
D’abord, celles qu’offrent la plupart
des imprimantes graphiques moder-
nes :
— noir sur blanc ou blanc sur noir
— simple ou double dimension
et ceci, bien entendu, en utilisant la
page graphique 1 ou 2 au choix.
Ensuite, et c'est la grande originalité,
des combinaisons en une méme
impression du contenu des deux
Pages.
— impression céte 4 céte du con-
tenu de chacune des deux pages
(ex. 1);
— opération logique « ET » (produit
logique) donnant l'impression des
points communs aux graphes des
deux pages, et de ceux-la seulement
(ex. 2) ;
— opération logique « OU inclusif »
(somme logique) donnant l’impres-
sion de tous les points figurant sur au
moins l'un des deux graphes
(ex. 3) ;
— opération logique « OU exclusif »
(différence symétrique) donnant
limpression de tous les points qui
figurent sur l'un des deux graphes, et
pas sur l'autre (ex. 4).
Ces opérations sont bien sdr compa-
tibles avec les précédentes.
Il existe également une possibilité de
n’éditer qu'une fraction de graphe,
désignée par sa position sur I'écran,
en référence aux lignes et colonnes
Pom’s n°7
de méme emplacement dans le
mode texte.
Le programme ci-aprés permet
l'exploitation par un questionnaire
en séquence de ces diverses possibi-
lités (A l'exception de la derniére
citée). I] permet aussi :
— de visualiser le ou les graphes
choisis, de permuter les deux pages,
de revenir au menu ;
— de choisir entre impression de
graphes déja existants en machine (il
peut alors @tre utilisé en sous-
programme d’un programme gra-
phique) et la recherche sur disques
de graphes préenregistrés.
Mais tout ceci n’est-il pas un jeu de
Tesprit ? Pour nous convaincre du
contraire, nous allons examiner
quelques cas d’application.
Graphe double dimension
Cette formule est idéale pour créer :
* des pages de titres,
edes transparents pour rétro-
projecteur.
Intersection de deux
graphes
Permet par exemple de détecter
immédiatement les points communs
@ deux schémas de circulation afin
de détecter d’éventuels «points
noirs» (ex. 5).
Union des deux graphes
Permet d’utiliser «un fond de plan»
et d'y placer, successivement, divers
tracés. Par exemple, une carte sur
laquelle on trouvera les villes, puis
les richesses miniéres, etc.
Différence
de deux graphes :
Permet de repérer immédiatement
les modifications apportées 4 un gra-
phe entre deux versions successives
(ex. 6)
Liimagination des «dingues du gra-
phe» étant sans limites, bien d'autres
applications peuvent étre trouvées. Il
est méme probable que d’autres
imprimantes offrent ou offriront des
possibilités du méme ordre.
N.B. L’Apple Ie, et autres nouveautés
Apple, conserveront-ils cette double
page graphique ?
nous tiens...
Guy Mathieu
Programme
et commentaires
1 4 900 : paramétres d’initialisation
et tracés - tests sur pages 1 et 2.
200 : affichage des pages graphi-
ques.
5 000 : déroulement du questionne-
ment.
6 000 : mise en route de l'impres-
sion.
10 000 : recherche de graphes sur
disques.
30 000 : sous-programme d’attente.
Mode d’emploi
N’oubliez pas que la carte graphique
Epson est telle que deux graphes
sont toujours tracés céte a céte en
format normal. Ces deux graphes,
différents dans le cas de notre option
COTE A COTE, sont identiques
dans tous les autres cas.
Le graphique de la page 18 illustre la
séquence des questions posées par
le programme 4 l'utilisateur.
Remarque : si l'on répond 1 (COTE A
COTE) 8 la troisigme question, il faudra
ullérieurement penser a placer les gra-
phes dans le deux pages pour quills se
présentent dans l’ordre convenable a
Védition..
Exemple d'utilisation
Nous cherchons @ imprimer céte 4
céte deux graphes sauvés sur une
disquette sous les nom CHATS 1 et
CHATS 2. Il faut exécuter le pro-
gramme puis placer la disquette
dans le lecteur et suivre la s¢quence
suivante :
Question Réponse Choix
1 3 Les deux pages
2: 1 Normal
3 ul Céte & cote
4 N Pas en mémoire
Ensuite, choisir l’option CATALO-
GUE, amener face 8 CHATS 1 et
faire RETURN. Venir aprés
CHATS 1 et faire RETURN pour le
changement. Suivre la méme
séquence pour CHATS 2. Enfin,
dans le menu, choisir 1 (vérification
de la page 1), puis 2 (page 2), ESC
(retour) et enfin RETURN (impres-
sion).
15
Exemple 1 — Page 1. Exemple 1 — Page 2.
Fila
Fane
eg
Fe ET
47, SSN
WEB re — SSN
: eens Za SRN
: KKK<<K<<al_
SASS ba
SSN |
BS wa
Ra all
FG
2 < CaP sth
- BG
oe
Exemple 2 — Page 1 “ET” 2. Exemple 3 — Page 1 “OU (inclusif)” page 2.
Exemple 4 — Page 1 “OU (exclusif)” page 2.
16 Pom’s n° 7
Exemple 5 :
Sécurité Incendie
Batiment A a,
Batiment B
eS
al
Page 1 — Sécurité Incendie.
Plan d’évacuation des agents.
de courbes
Batiment A
Votre APPLE 1! sait aussi dessiner sur un traceur de courbes,
mais encore lui faut-il un logiciel puissant pour faciliter
votre travail.
Notre logiciel, utilisable en Basic, vous permet de composer
facilement vos graphiques comme sur un traceur de haut de
aul
= gamme.
Avec une programmation de quelques lignes, nos sous-pro-
Batiment B grammes tracoront pour vous :
droites, courbes, histogrammes, axes, grilles, titres, annote-
tions, cercles, rectangles, fléches, etc ...
Traceurs au format A3 et Ad
HOUSTON
Page 2 — Sécurité Incendie. aS
Circulation des véhicules de secours. CALCOMP
Ensemble Traceur et logiciel & partir de 10.000 F H.T.
Batiment A
RMATIQUE
. PHE - MICROINFO!
MIN ENT A votes Pet a
INE GAMM.
DE MATERIELS ET DE LOGICIELS
Batiment B
Page 1 “ET” Page 2 — Sécurité Incendie.
identification des “points noirs”. MINIGRAPHE
MICROINFORMATIQUE
Boulogne
Pom’s n° 7 17
Question 1 Question 2 Question 3 Question 4 Menu
Format normal 1 Examen de
[ la page 1
1 — Page 14 mee
Normal Format double
Des 2 Examen de
en mémoire [la page 2
2 — Page 24
Céte a céte Catalogue :
et choix L'ESC :
Dessin non Menu
en mémoire
Inverse Intersection 4 |
3—Les 2 st2 pages | ‘RETURN
Impression
Union
Retour a la
‘Ditférence question 4
Graphe du mode d'emploi
informatique de gestion auapiée au gestionnai ée par des gestionn
ETUDIE © opportunité d'utilisation de l’outil micro-informatique
e intégration entre informatique traditionnelle et personnelle
e politique de la communication dans |’ entreprise
bie ST ti Liiis bap tetd it
FORME e formation 4 l'utilisation de la micro-informatique
REALISE @ réalisation de programmes 4 la demande
LIVRE e livraison de systémes clés en main, avec des progiciels de
GESTION DE STOCK, PAYE, COMPTABILITE.
Nous sommes gestionnaires avant d’étre informaticiens. L’informatique doit s'‘adapter a homme, et non l'inverse.
L’outil micro-informatique répond particuliérement bien a ce souci de qualité et d’efficacité du travail,
dans des conditions conviviales.
Nombreuses références en informatique traditionnelle divers matériels_ et en informatique individuelle - principalement
Apple - auprés des PME et des groupes industriels.
\ log TAG 5.2. Cente La Chataigneraie - 29, avenue de Versailles - 78170 La-Celle-St-Cloud - Tél. : (3) 918. ssor_/
Pom’s n° 7
Exemple 6 : les petits chats.
& &
& &
Page 1 — Situation de départ.
§ &
Page 2 - — Situation d’arrivée.
&&
&&
SOMME logique : Ceux qui ont bougé entre 1 et 2.
Pom’s n° 7
1 LOMEM: 25888
2 TEXT
3 HOME
5 DD = PEEK (46185): IF DD = @ OR DD >
2 THEN DD = 1
19 DS = CHR (4):6% = CHR (7)71@3 = C
HRS (17):ZERO$ = CHR$ (8)
28 HGR 1 HCOLOR= 3
38 FOR I = 6 TO 8@ STEP 10
35 HPLOT 1,1 TO 1,198 - I TO.278 - 1,19
@- 1 TO 278 - 1,1 TO T,!
48 NEXT
5@ FOR I = - 1@ TO 1@: HPLOT 139 + 1,8
5 TO 137 + 1,105: NEXT
68 HGR2 : HCOLOR= 3: HPLOT 4,6 TO 6,198
TO 278,198 TO 278, TO 8,0
78 FOR 1 = @ TO 8@ STEP 18
75 HPLOT 139,1 TO 1,95 TO 139,198 - 1 T
0 278 - 1,95 TO 139,1
88 NEXT
25 FOR I = - 18 TO 1@: HPLOT 139 + 1,8
5 TO 139 + 1,105: NEXT
9@ GOTO 5088
288 REM PERMUT. PAGES
218 POKE - 16304,0
215 IF PAGE = 1 THEN POKE - 16308,8
228 IF PAGE = 2 THEN POKE - 14299,8
25@ RETURN
5@@0 REM MENU PRINCIPAL
5018 TEXT : HOME
5628 VTAB 1: PRINT "1(ERE PAGE) - 2(EME
PAGE) — 3(LES DEUX) REPONDEZ PAR
1,2 OUSS.V.P. 5
5830 GET 2$
5e4¢ P= VAL (2#): IF P< 1 OR P > 3 TH
EN PRINT G$: GOTO 5818
5858 PRINT
5160 VTAB 4: PRINT "1 (NORMAL) - 2 (INV
ERSE? REPONDEZ PAR
1 0U 2.S.U.P. *;
5118 GET 29
5128 1 = VAL (2%): IF I ¢ 1 ORI > 2TH
EN PRINT Gé: GOTO 5100
513@ 1 = (1 - 1) ¥ 32
5148 PRINT
5200 IF P < 3 THEN 530@
5218 VTAB 7: PRINT "1 (COTE A COTE? - 2
CINTERSECTION) - = 3 CUNTON) -
4 (DIFFERENCE) REPON
DEZ PAR 1, 2, 3 0U 4 S.V.P. "3
5228 GET 2%
5238 L = VAL (Z$): IF L <1 ORL > 47TH
EN PRINT G$: GOTO 5218
5240 L = (L - 1) ¥ 4: IF L = 12 THEN L =
16
5258 PRINT
5306 IF P = 3 AND L = ® THEN 5400
5318 VTAB ii: PRINT "1 (FORMAT NORMAL)
- 2 (FORMAT DOUBLE? REPONDEZ PA
R 1 QU 2 S.V.P. "3
5328 GET 2¢
5338 D = VAL (2%): IF D¢ 1 OR D> 27TH
EN PRINT G$: GOTO 5318
5349 D = (D - 1) ¥ 64
5358 PRINT
5408 COEFF =P+L+1+D
5500 VTAB 15
5516 IF P < 3 THEN PRINT “LE DESSIN ES
T-IL DEJA EN MEMOIRE?*
5512 IF P = 3 THEN PRINT “LES DESSINS
SONT-ILS DEJA EN MEMOIRE?*
S515
5526
5538
5546
5558
5566
5576
5575
5586
5598
5600
5618
5628
54638
5648
5656
5668
570@
PRINT "REPONDEZ PAR O QU N S.V
-P. 3
GET 2¢
IF Z$ << > "0" AND ZS << D>
N PRINT G$: GOTO 559¢
PRINT
IF 2$ = "Oo"
GOSUB 16800
PRINT D$"BLOAD" ;2Z$;" ,A$2080"
IF P ¢ 3 THEN 5408
GOSUB 16800
PRINT D$"BLOAD" ;2Z$;" ,AS4@88"
HOME : PRINT "VOUS DISPOSEZ MAINTE
NANT DES COMMANDES SUIVANTES: *
aN" “THE
THEN 5688
PRINT : PRINT "1 QU 2 POUR FAIR
E APPARAITRE SUR L’ Ec
RAN UNE DES 2 PAGES™
PRINT : PRINT "“ESCAPE’ POUR PASS
ER DU MODE GRAPHI QUE AU
MODE TEXTE (MENU) *
PRINT +: PRINT "’RETURN’ POUR LANC
ER L’ IMPRESSION"
PRINT : PRINT "@ POUR CHAN
GER EVENTUELLEMENT LE
(OU LES) GRAPHE(S) *
PRINT : PRINT : PRINT
2? "33 GET 2%
HOME
PRINT
"VOTRE CHOIX
5738
5748
5758
5768
5778
6868
6818
6812
6815
6828
6838
6850
6868
6878
6888
6890
6108
16688
16048
18856
18655
16868
18665
18878
1eese
18898
186895
19188
18158
16266
16488
16418
160428
16588
18600
30088
36818
36838
36848
38658
30068
30878
36106
IF ASC (2) = 13 THEN 6008
IF ASC (2$) = 27 THEN TEXT :
E : GOTO 5é0e
PAGE = VAL (Z$): IF PAGE = 1 OR PA
GE = 2 THEN GOSUB 208: GOTO 54¢8
IF PAGE = @ THEN 5568
PRINT G$: GOTO 5688
REM COMMANDE IMPRIMANTE
PRINT D$"PR#I"
PRINT ZEROS
POKE 1913, COEFF
PRINT @$
PRINT DS"PRHG*
TEXT : HOME : PRINT "VOULEZ-VOUS U
NE AUTRE IMPRESSION ? *
PRINT : PRINT "(REPONSE PAR © OU
N S.V.P.? "3
GET 2$
IF 2% = "N*
: PRINT "AU REVOIR":
IF 2% = "O* THEN 5000
PRINT G$: GOTO 6850
REM CATALOG
HOME : PRINT D$*CATALOG,D" ;DD
VTAB 1: PRINT “FLECHES -> <- POU
R DEPLACER LE CURSEUR JUSQU’AU NO
M VOULU PUIS “RETURN? cou
“RETURN’ SI LE NOM N’EST PAS AFFI
CHE*
W = 3:HH = 7; VTAB W: HTAB HH
GET 2$:Z = ASC (2$)
IF 2 = 13 AND W ¢ 4 THEN HOME :
PRINT "VOUS POUVEZ MAINTENANT CH
ANGER DE DISQUE": GOSUB 3¢0e@: GO
To 18888
IF 2 = 8 THENW=W- tI:
< 3 THEN W = 3
IF Z = 21 THEN W = W + 1:
> 23 THEN W = 23
IF 2 = 13 THEN 10480
VTAB W: HTAB HH
IF 2<¢ > 13 ANDZ ¢
> 21 THEN PRINT GS
VTAB VW: HTAB HH
GOTO 18860
VTAB 1: HTAB 1: PRINT "AVANCER AV
EC LA FLECHE -> JUSQU’A DEPAS-SER
LE NOM
HOM
THEN VTAB 18: HTAB 18
END
IFW
IFW
> 8 AND Z ¢
PRINT * PUIS ‘R
PRINT *
INVERSE : VTAB 3:
ETURN’ "3: NORMAL :
VTAB W: HTAB HH
INPUT 22%
RETURN
REM ATTENTE
POKE —- 16368,8
VTAB 24: HTAB 5: INVERSE : PRINT
“BARRE D’ESPACEMENT POUR LA SUITE
.
NORMAL
IF PEEK ¢ - 16384) <¢ =
30850
POKE
PRINT
RETURN
127 THEN
- 16368,8
20
Pom's n°7
Le programme GRAPHLOG est
une illustration de article de Guy
Mathieu : c’est un petit programme
assembleur tres simple, relogeable
(c'est la mode dans ce numéro de
Pom’s!) écrit avec l’assembleur
LISA 2.5. Il réalise une opération
logique bit par bit sur deux pages
graphiques et met le résultat dans
une troisitme. Par page graphique,
nous entendons ici les intervalles
$2000.3FFF, $4000.5FFF et
$6000.7FFF, étant entendu que
seuls les deux premiers intervalles
correspondent @ des pages graphi-
ques vidéo ; pour voir la derniére, il
faudra faire 2000 < 6000.7FFFM ou
4000<6000.7FFFM en mode
moniteur. L'opération logique cor-
respond au type graphique de Pas-
cal, repris aussi par HAIFA dans
Pom’s 5. Si A et B désignent les
Exemples :
rf 8
Graphiques et logique
points des pages sur lesquelles se
réalise l'opération et C le résultat 4
mettre dans une troisiéme page (0
= éteint, 1 = allumé), on obtient ;
‘TYPE VALEUR DE C
0
0
1 A NOR B
2 A AND NOT B
3 NOTB
4 NOT A ANDB
5 NOTA
6 A EOR B
7 A NAND B
8 AANDB
9 A =B
10 A
11 AOR NOTB
12 B
13 NOT A ORB
14 AORB
15 1
.. négatif de la page HGR, 8 bits compris
. AND des pages HGR et HGR2 avec résultat en HGR2 et 8¢ bits mis & 0
OR de HGR2 et HGR :.résultat dans la page “invisible” avec EOR des 8° bits
Olivier Herz
€e TYPF. s'applique aux hits des
points de l’écran. En ce qui concerne
les bits de couleur (le 8¢ bit des octets
de l’écran), on applique un autre
type (TYPCOL). Pour se servir de la
routine, il suffit de POKEr aux adres-
ses 7 49 les numéros des pages ara-
phiques (4 savoir 32, 64 ou 96: il
est trés dangereux de POKEr autre
chose) et en 24 et 25 TYPE et
TYPCOL respectivement, puis de
faire un CALL 4 I'adresse of l'on a
chargé cette routine relogeable.
En effectuant une copie d’écran gra-
phique 4 partir des écrans ainsi
engendrés, il vous est maintenant
possible de faire tout ce que Guy
Mathieu proposait aux possesseurs
d'Epson.
Graphlog — Lisa 2.5 23 MEH2 PZ SFE
24 MEMS = EPZ SFF
1 Lst Bt
23 26 ORG $888 ;PROGRAMME RELOGEABLE
3 RNAXX XIII II KR ARANAK 2 08s $004
43% ¥ 2;
5 5% CE PROGRAMME REALISE UNE x 2 LOA #191
6 3% OPERATION LOGIOUE SUR LES x Ee} STA LIGNE
7 3¥ OCTETS DES DEUX PAGES =X 31 BCLELIG PHA SLIGNES 31 A 47:
8 3% GRAPHIGUES ET MET LE RE- 32 AND 4908 3-VOIR APPLESOFT
9 7X SULTAT DANS UNE EME, =x cE] STA BASE s-ROUTINE EN $F417
18 3x ¥ Ea LSR
11 5% (C) 0. HERZ POUR POM’S 7X 3 L&R
12 3% x % ORA BASE
Riiccusiicicusticcensstitteg v STA BASE
14; ] PLA
15 LIGE ~—EPZ $4 sLIGNE DE L’ECRAN 9 STA BASE+1
16 PAGEL «EP $7 sPREMIERE PAGE 6 ASL
17 PAGEZ =—«EP2 $8 sDEUXIEME PAGE 41 ASL
18 PAGES EPZ $9 PAGE DU RESULTAT 42 ASL
19 TYPE ~=—s PZ $18 sTYPE POUR LES POINTS 43 ROL BASE+1
20 TYPCOL EPZ $19 sTYPE POUR LE BIT DE COULEUR “4 ASL
21 BASE = —EP2 SIE ADRESSE DE LA PREMIERE LIGNE = 45 ROL BASE+1
22 NEM = EPZ $FD 4% ASL
Pom's n°7
21
E
z
5
:
LOX #8 jLIGNES 41 A Bi:
s-VOIR HAIFA
z
2
>
CPX #8
ENE 2
AND TYPCOL
ac
a“ BCC >3
42 AND TYPE
76 ac
7243 BEQ >4
78 SEC
79 "4 ROL HEM3
$8 DEX
81 BNE BCLETYP
82 LOA BASE+!
BRITSSEQKRASSREASSSEYKALYRLSESSR
3
sPREPARATION DES ADRESSES
3-ROUTINE DOPRINT
VRRESRVRLSSRLRRELB
AND 481F
ORA PAGES
STA BASES!
LDA HENS
STA (BASE) ,Y
DEY
BPL BCLECOL
DEC LIGNE
LOA LIGNE
CHP aSFF
BNE BOLELIG
RIS
DCH "BSAVE GRAPHLOG,ASG26 ,L$98"
13]
Récapitulation
¥888.971
0888- AY BF 85 86 48 29 C8 85,
8908- 1E 4A 4A @5 1E 85 1E 68
4810-85 iF BA BA BA 26 IF BA
€818- 26 IF @A 46 IE AB 27 AS
29 IF @5 67 85 IF Bi
$5 FD AS iF 29 IF 85
85 1F Bi 1E 85 FE A2
AY @1 @6 FD 98 62 GA
04 FE 98 61 GA £8 68
85 25 19 18 98 83 25
FQ 01 38 26 FF CA
AS IF 29 IF 05 69
IF AS FF 91 1E 88 18
06 AS 86 CP FF D8
mm
Ro
SEERSEEGERG
BSRERSsSSSS
Hard Copy Seikosha
Olivier Herz
Afin de compléter l'article de Guy
Mathieu et celui sur « Graphiques et
logique », voici un petit programme
en langage machine (écrit 4 mes
débuts sur Apple) permettant d’obte-
nir la copie d’écran graphique sur
une imprimante Seikosha.
Ne possédant pas d’assembleur a
lépoque, j'avais écrit ce programme
directement en langage machine. Il
reste toutefois intéressant 4 publier
car il est assez rapide et, d’autre part,
les possesseurs de Seikosha n’ont
certainement pas tous un tel pro-
gramme 4 leur disposition.
La seule routine ROM utilisée est le
WAIT $FCA8 ; le programme peut
étre utilisé par n'importe quel Apple.
22
Pom's n°7
Hard Copy Seikosha
ILIST
3S REM XXX HARD COPY SEIKOSHA xX
6 REM XXX
COPYLEFT RRX
7 REM XXX OLIVIER HERZ -— POM’S Xxx
18
26
38
46
38
68
76
8a
78
108
116
126
138
146
156
168
178
18@
198
208
218
226
238
248
256
268
TEXT : HOME : INVERSE : VTAB 6: PRIN
T “IMPRESSION DES 2 PAGES HAUTE R
ESOLUTION" : NORMAL
PRINT : PRINT : PRINT : PRINT "VOULE
2-VOUS LA PAGE 1 OU 2 ? °;
GET At: IF AS < > "1" AND ASK D>"
2" THEN 38
PRINT A$: POKE 28,208: POKE 29,31 +
32 *¥ ¢ ASC (AS) - 48
PRINT : PRINT "“YOULEZ-VOUS LA PAGE E
NTIERE ? ";
GET AS: IF AS < > "O" AND ASK D "
N" THEN 68
PRINT A@: POKE 24,6: IF AS = "N" THE
N POKE 24,4
PRINT : PRINT “VOULEZ-VOUS L’ IMPRESS
ION EN NEGATIF ? "3
GET AS: IF AS < > "O" AND ASK D9"
N" THEN 9@
PRINT A®: POKE 25,0: IF A® = "QO" TH
EN POKE 25,1
PRINT : PRINT “VOULEZ-VOUS UN CADRE
ee
GET AS: IF AS < > "O" AND ASK D>
“N" THEN 12@
PRINT A$: POKE 26,@: IF At = "O" TH
EN POKE 26,1
PRINT : PRINT "YOULEZ-VOUS LE FORMA
T DOUBLE ? ";
GET AS: IF AS < > "O" AND ABC D
"N" THEN 156
PRINT AS: IF AS = "O" THEN 266
POKE 27,8: POKE 235,192: POKE 236,1
29: IF PEEK (24) = @ THEN 198
POKE 237,162: POKE 30,159: GOTO 230
POKE 237,194: POKE 38,143: GOTO 238
POKE 27,1: POKE 235,224: POKE 236,1
Si: IF PEEK (24>) = @ THEN 2208
POKE 237,69: POKE 3@,78: GOTO 238
POKE 237,133: POKE 38,46
PRINT : PRINT : HTAB 3: INVERSE : P
RINT " APPUYEZ SUR UNE TOUCHE QUE
LCONQUE ": NORMAL : WAIT - 16384
»128: POKE - 16368,
IF PEEK (6148) < > 1 THEN PRINT
CHR (4) ;"BLOADSEIKO.OBJ": POKE
6148,1
POKE - 16246,8: HOME : CALL 6149
CALL - 1852: CALL - 1852: CALL -
1852
Pom’s n°7
SEIKO.OBJ
Code hexadécimal
%1868.19DA
isea—
1666—
18186-
1818-
1820-
1828-
1838-
i838—
1846-
1848—
1858-
1858-
1866-
1868-
1876-
1878-
188e-
1888-
1896—
1898-
18A8-—
isas—
18B6-
18B8-
1sce—
1scs-
isDe-—
18D8-
18Ee-
18E8—
18Fe—
18F8—
19e6-—
1968-
1918-
1918-
1928-
1928-
19368—
1938-
1946-
19748-
1956-
1958-
1968-
1968-
1976-
1978-
1986-
1988-
1998-
1998-
19A8-
19A8-
19Be-
17B8—
19C6-
19c8—
19De-
i9D8-
cA
a5
85
as
85
19
a7
°e
Fe
69
FE
FD
FE
as
Bi
85
98
69
46
18
a2
17
FF
e2
a7
A?
93
ce
87
2D
19
19
cé
a6
a5
19
£6
Fa
19
31
EA
a4
a6
FB
ec
ay
be
20
ee
28
ay
8A
38
1D
Fo
FF
62
a8
FF
ay
69
06
78
49
AS
68
4c
es
AS
ig
20
28
eA
cy
1a
6a
FB
a6
aS
18
as
ce
1B
19
2e
as
19
47
28
Ae
FF
eB
ay
FC
28
19
28
55
ay
19
—B
AS
ae
AS
ee
a2
26
18
85
66
AS
ES
Ad
Fe
6?
46
78
ee
FF
62
FF
28
39
Fe
87
AS
78
31
4c
28
Fe
668
be
ES
Fc
6?
FC
AP
AP?
47
1B
98
47
48
As
ae
18
47
Eé
47
98
ee
68
EA
Sse
85
Fe
87
18
AP
28
AS
18
—S
85
Fe
a?
46
98
6e
FF
FF
e2
ee
19
ES
4c
63
Fe
Ar
AS
18
63
AS
68
£6
as
28
19
A?
GE
42
ao
De
2e
47
19
Eé
E6
A?
6B
19
ec
98
Fe
AS
6c
23
La souris de Lisa
Hervé Thiriez
Faut-il encore parler de Lisa ? Nous
avons été abreuvés dans les jour
naux d’articles sur Lisa depuis sa
présentation internationale le 19 jan
vier dernier. D’autre part, nous ne
pouvons, dans une revue telle que
Pom’s, passer sous silence la nais-
sance de Lisa. Voyons donc pour-
quoi la souris de Lisa veut devenir
aussi délébre que le sourire de
Mona...
La premiere impression que dégage
cet ordinateur de bureau — le terme
convient ici parfaitement — est celle
d'un équipement au design agréa-
ble, d’apparence. professionnelle.
Par opposition, l’Apple II Plus, qui
fait notre bonheur depuis si long-
temps, suggére un peu la ZCV, avec
son aspect rustique et son cété
bohéme.
Lisa est un systéme 4 clavier déta-
ché, incorporant deux lecteurs de
disquettes 5 pouces (860K octets
par disquette) et un écran 4 trés
haute résolution (720 x 364, soit
prés de cing fois autant de points
que pour |’Apple II). Une surprise
désagréable, la seule d’ailleurs : il
n'est pas question de travailler en
couleur ; tout le monde sait que les
souris ne connaissent que le blanc et
le aris...
Seul appendice externe 4 l'appareil,
relié par un fil gris lui aussi, la
fameuse souris, qui est le mode de
communication privilégié de l'utilisa-
teur vers la machine. C’est grace
cette souris et 4 la qualité graphique
de l'écran qu'il suffit d’une demi-
heure @ un non-informaticien pour
apprendre & utiliser Lisa.
La souris est un petit boitier que l'on
fait glisser sur son bureau dans
n'importe quelle direction. Un cur-
seur sur l’écran est associé 4 la souris
et se déplace en totale symbiose
avec elle. L’écran présente un cer-
tain nombre de petits dessins illus-
trant les dossiers sur lesquels on tra-
vaille, y compris une poubelle pour
ceux dont on veut se débarrasser.
Il suffit de pointer le curseur associé
a la souris sur le dessin correspon-
dant au dossier que l'on désire
« ouvrir », et de confirmer son choix
en appuyant sur la petite barre de la
souris. Le dossier s’ouvre alors, et
on y choisit (toujours grace a la sou-
ris) tel ou tel élément.
Différents dossiers peuvent étre
ouverts simultanément, comme sur
un bureau normal. On peut agrandir
ou réduire les documents sur l’écran
& volonté, ouvrir ou fermer tout dos-
sier, passer du traitement de texte au
Lisacalc ou au programme de réali-
sation de graphiques. Tout cela se
24
fait trés rapidement, et l’on peut ainsi
croiser les applications : éditer en
*traitement de texte les titres de gra-
phiques provenant de données Lisa-
calc !
A tout moment, une copie de |’écran
peut étre obtenue, |’écran incorpo-
rant a loisir des textes (en plusieurs
polices et tailles) et des graphiques.
Le souci de simuler la gestion d’un
bureau va trés loin : on peut ainsi
faire apparaiire sur l’écran une calcu-
latrice avec des touches sur lesquel-
les on « appuie » grace a la souris.
Avec Lisa sont fournis en standard :
* LisaWrite : traitement de texte
(tailles et polices variées) .
* Lisacalc: 255 lignes, et 255
colonnes de largeur variable.
® Lisalist, base de données pouvant
contenir 6000 enregistrements de
100 caractéres chacun.
© LisaGraph, soit Visiplot en beau-
coup plus rapide, et avec les possi
bilités d’édition de texte.
* LisaDraw, outil performant pour la
création graphique.
® LisaProject, pour la gestion de
projets (PERT, Gantt) jusqu’a
1000 taches.
Tout cela coexiste sans effort dans le
million d’octets de mémoire cen-
trale, le microprocesseur MC68000
assurant une rapidité de traitement
inégalée en micro-informatique.
Seul petit probléme : tout le monde
n’a pas le budget de 120 000 francs
TTC nécessaire pour avoir le
systéme complet, avec son impri-
mante et le disque dur de 5 méga-
octets. En outre, ceux qui désirent
s‘offrir Lisa devront encore patienter
jusqu’en septembre. Le prix n’est
pas donné, mais le rapport perfor-
mance/prix est excellent en compa-
raison avec celui des mini-
ordinateurs de bas de gamme
Nous attendons aussi le discret
McIntosh qui, a en croire ce que j'ai
lu dans des revues professionnelles,
devrait proposer a un prix sensible-
ment plus abordable les avantages
logiciels de Lisa et de sa souris, avec
une puissance et une capacité rédui-
tes.
Dés que nous aurons eu l'occasion
de travailler réellement avec Lisa ou
McIntosh, nous vous ferons partager
nos impressions plus en détail,
Pom's n°7
L’Apple Ie (e pour «enhanced»,
Cest-a-dire amélioré) a été annoncé
par Apple le 19 janvier dernier. Des-
tiné 4 remplacer le modéle Apple Il +
bien connu, il commence 4 se répan-
dre dans les boutiques micro-
informatiques. Grace a l'amabilité de
la société 1.E.F., j'ai pu en avoir un
exemplaire pendant une soirée, de
quoi Iexaminer sous toutes ses cou-
tures.
Premiére constatation : si le nom
change, la ligne demeure : le boitier
est celui que nous connaissons tous.
Seul le nom a changé pour s’adapter
au nouveau logo. Cependant, pour
l’Apple-o-mane averti, pas de risque
de se tromper pour autant : le Ile
dispose d’un clavier plus complet qui
se remarque dés le premier abord.
Un clavier plus complet
Outre ses 11 touches de plus (63
contre 52), le clavier du Ile présente
de nombreuses différences avec
celui du II. Nous en commentons cl-
dessous les plus notables.
La touche RESET est mise 4 l’écart
du reste du clavier afin d’éviter les
fausses manipulations. De plus, le
RESET n’est pris en compte que
lorsque la touche CTRL est enfon-
cée (il n'y a plus la possibilité de
choix offerte sur le Il entre RESET
tout seul et la double action CTRL
RESET).
Les minuscules sont disponibles au
clavier et affichées comme telles a
lécran. En fait, tous les codes Ascii
sont générables au clavier.
Une touche «Shift-lock» permet le
blocage du clavier en majuscules.
C’était nécessaire pour la program-
mation en Basic (I'Applesoft,
comme le DOS, n’accepte que les
majuscules). Un bon point : le blo-
cage majuscule/minuscule n’affecte
que les touches alphabétiques.
Appuyer sur «1» donne toujours le
«1», quelle que soit la position de la
touche Shift-lock.
Quatre touches de’ gestion du cur-
seur sont rassemblées en bas a droite
du clavier. On y retrouve bien sar les
classiques fléches a droite et A gau-
che, mais également les fléches vers
le haut et vers le bas.
Pom’s n° 7
L’Apple Ile a lessai
Toutes les touches qui générent un
code sont a répétition automatique.
Le temps entre le premier caractére
et le deuxidme est relativement long,
ce qui évitera, je pense, toute fausse
manceuvre. En raison de cette répé-
tition automatique, il n'y a plus de
touche REPT (répétition).
Deux touches marquées l'une d’une
petite pomme vide (pomme
«ouverte»), l'autre d'une pomme
pleine (pomme «fermée») sont pla-
cées de part et d’autre de la barre
d'espacement. Filles ne générent
aucun code (elles sont en fait équi-
valentes aux boutons sur les poi-
gnées de jeux), mais ont quelques
fonctions particuliéres quand elles
sont enfoncées en méme temps que
CTRL-RESET :
* la pomme ouverte force l'Apple a
redémarrer (et donc a rebooter s'il
y aun contréleur) quelle que soit
ia configuration. Cela devrait per-
mettre d’épargner considérable-
ment le bouton de I’alimentation
qui, l'expérience le montre, sup-
porte trés mal les opérations de
«marche/arrét» répétitives.
* la pomme fermée provoque |'exé-
cution d’un autotest.
Parmi les nouvelles touches, on
trouve également une touche de
tabulation «TAB» et une touche
«DELETE» qui pourront étre utili-
sées par les logiciels prévus pour le
Tle.
Le clavier est utilisable en Azerty ou
en Qwerty. La sélection est faite par
un bouton poussoir judicigusement
placé sous la partie inclinée de
Apple. Ce bouton commande éga-
lement le changement de caractéres
a l'écran. Les caractéres frangais
sont donc disponibles aussi bien au
clavier qu’a l’écran. Malheureuse-
ment, la disponibilité d'un double
clavier se solde par un double mar-
quage des touches, qui vont donc
jusqu’a abriter 4 signes différents sur
leur cabochon! En langage non
informatique, cela s'appelle un
casse-téte chinois, et taper plus de
dix touches sans erreur reléve de
l'exploit. Il ne semble pas qu'il existe
pour le moment la possibilité d’un
marquage unique (Qwerty par
exemple)
Jean-Francois Duvivier
Comme pour le Il, un connecteur est
toujours prévu pour le clavier numé-
rique séparé.
Certaines publicités ont fait état de
touches de fonction programmables.
La seule documentation que j'avais
en ma possession (Manuel de Réfé-
rence Ile) n'y faisait pas allusion. De
méme, le programme de démons-
tration et d’introduction au clavier ne
mentionne aucune possibilité de tou-
ches de fonctions.
Outre le probléme de double nota-
tion des touches, j'ai un deuxigme
regret concernant le clavier :
absence de buffer. La refonte du
clavier tail l'occasion révée d’intro-
duire un buffer de caractéres tel
qu'on le trouve sur I’Apple II et
méme sur le II (avec la carte Key-
board Enhancer de Videx par exem-
ple). Le buffer est comme toutes les
bonnes choses : une fois qu’on y a
gotité, on ne peut plus s’en passer !
Par rapport a |’Apple II, ces connec-
teurs ont les mémes signaux disponi-
bles sur leurs broches, ce qui signifie
que la majorité des cartes d’exten-
sion existant sur le II sont compati-
bles, notamment les contrdleurs de
lecteurs de disquettes, les interfaces
imprimantes et la Softcard Z80. Les
exceptions sont les cartes qui
devaient obligatoirement se mettre
dans le slot 0 (ROMcard Applesoft
ou Integer par exemple) et toutes les
carles nécessitant d’6ter un circuit de
Apple pour connecter un cable a sa
place (cas de certaines cartes RAM
16,32,64 et 128K ou de cartes 80
colonnes).
La nouveauté vient d'un connecteur
supplémentaire situé en plein milieu
de la carte et dénommé «Connec-
teur Auxiliaire» (quelle imagina-
tion !). Ce nouveau connecteur
comprend 60 contacts (contre 50
aux connecteurs de slot). Son
emplacement (dans le prolongement
du slot 3) interdit son usage simul-
tané avec le slot 3. Il est prévu spé-
cialement pour les extensions
mémoire et pour l’extension 80
colonnes (de nombreux logiciels
imposent l'utilisation du slot 3 pour
les cartes 80 colonnes pour Apple Il,
ce qui explique la position du con-
necteur auxiliaire) .
25
26
Trois cartes actuellement disponibles
en France utilisent ce connecteur :
* une carte 80 colonnes ;
une carte 80 colonnes doublée
d'une extension mémoire de
64K ;
* une carte RVB Chat Mauve per-
mettant l'obtention des couleurs
sur un poste téléviseur SECAM,
ainsi que |’extension 64K et 80
colonnes.
Le microprocesseur 6502 ne pou-
vant pas adresser plus de 64K,
Vextension de 64K n'est pas une
extension de mémoire centrale 4
proprement parler. Mais elle est
comparable aux cartes mémoires
disponibles pour le II (Saturn,
Ramex, Legend...). Comme elle est
proposée par Apple et constitue de
ce fait un standard, de nombreux
logiciels vont pouvoir en faire usage
Selon certains renseignements que
je n’ai malheureusement pas pu véri-
fier, l'adjonction de |’extension 64K
permettrait de plus de disposer d’un
graphisme haute résolution plus
complet : 560 x 192.
Sous le capot
La carte mére a été totalement
refaite : légérement plus petite, elle
s’arréte avant le clavier, ce qui per-
met d’accéder a tous les circuits sans
démonter autre chose que le capot.
Le nombre de circuits intégrés est
passé d’environ 90 4 35. Cette
réduction permet d’espérer bien
entendu une fiabilité accrue. Elle
s’accompagne également d'une
réduction de la consommation de la
carte mére. L’alimentation étant res
tée la méme, on dispose ainsi de
plus de puissance sur les slots.
Le gain de circuits est essentielle-
ment dd 4 I'intégration de plus en
plus poussée des composants utili-
sés. Par exemple, les mémoires
vives RAM utilisées sont des 64 Kbits
au lieu de 16, ce qui permet de faire
64 Koctets avec seulement huit cir-
cuits. De méme, les mémvires mor-
tes utilisées sont des 32 Kbits au lieu
de 16. Enfin, deux circuits a 40 pat-
tes trénent en plein milieu de la
carte. Dénormés MMU (Memory
Management Unit) et [OU (Input
Output Unit), ils ont été réalisés spé-
cialement pour Apple (il coulera de
nombreux bits dans votre Apple
avant que vous ne puissiez acheter
un Ile made in Taiwan !!!)
Lutilisation de mémoires repro-
grammables pour le codage clavier
et pour la génération vidéo des
caractéres permet une trés grande
souplesse. Chaque pays a sa version
nationale du Ile, disposant en plus
du Qwerty, d'un clavier équipé des
caractéres spécifiques a la lanque, et
de leur génération a |’écran.
En ce qui concerne la génération
video, il faut préciser que les Ile ven-
dus en France sont équipés en stan-
dard d'un modulateur PAL sélecta-
ble par switch (sur la carte mére)
Les possesseurs de postes de télévi-
sion bi— ou tristandards pourront
donc profiter directement des cou-
leurs, sans aucune carte supplémen-
taire. Les autres devront se conten-
ter du noir et blanc ou attendre I’arri-
vée imminente d’une carte «Chat
Mauvre» adaptée au Ile (pour vous
consoler, sachez que le standard
SECAM est techniquement le meil-
leur...).
Trucs et astuces
De rutilité
du symbole « : »
]: READ permet de lire les
DATA d'un programme (arété
par CTRL-C, par exemple), alors
que ] READ donne le message
NOT DIRECT COMMAND de la
commande READ du DOS.
]:IN#0 : PR#0 permet de
déconneter de DOS. Pour le
reconnecter: CALL 1002 ou
*3D0G ou RESET.
Parfois, ] PR#6 ne marche
plus pour rebooter (quand par
exemple la commande PR # du
DOS a été endommagée). Pour
sen sortir sans devoir éteindre
Vappareil, faire ]:PR#6 ou
*6CTRL-P.
La raison de tout cela tient au fait
que le DOS intercepte les com-
mandes tapées en début de ligne
au clavier, avant de redonner le
contréle & l’'Applesoft (ou au
moniteur). D'oi des problémes
avec les commandes synonymes
entre le DOS et Applesoft :
PR #, IN # et READ.
Ainsi, si l'on entre en mode direct
A=3: CATALOG, Instruction
CATALOG du DOS n'est pas
reconnue. C'est comme cela
que]: PR #6 active le «PR#» de
PApplesoft (qui marche toujours,
s'il est résident) et non celui du
DOS, qui peut avoir été écrasé.
Du cété des slots...
Sept connecteurs (slots) numérotés
de 1 47 sont disponibles. Il est
noter qu'il n'y a done plus de slot 0.
Lexplication en est simple : étant
donné la présence sur la carte mére
de 64 K de mémoire vive, le slot Q
est considéré comme étant occupé
par une carte langage 16 K.
Petit détail intéressant : la présence
A cété des slots d’un témoin de ten-
sion (plus d’excuses pour les cartes
mises ou enlevées avec |’Apple en
marche !). On note également le
blindage complet de larriére de
Apple, désormais en métal et soli
daire de la plaque du fond. Les
grandes échancrures ont laissé la
place & de multiples ouvertures pré-
vues pour la fixation de connecteurs.
Ceci devrait permettre de ne plus
avoir 4 démonter ’Apple pour bran-
cher le cable de I'imprimante ou de
toute autre carte interface. Autre
amélioration pour les fanas de jeux :
un connecteur situé a cété de
lentrée cassette permet de brancher
les manettes de jeux sans avoir &
démonter le capot et surtout sans
devoir se munir d'une loupe pour
effectuer le branchement !
Les logiciels
Quant 4 son utilisation, le Ile se com-
porte comme un Il équipé d’une
carte langage. Le langage résident
est le Basic Applesoft qui n’a pas
bougé d'un iota. Les disquettes sont
toujours au format DOS 3.3. En fait,
il semble que les seules modifications
«soft » effectuées concernent le
moniteur (Prom F8), qui a été enti2-
rement réécrit. Toutes les routines
de gestion écran ont été modifiées
pour prendre en compte la présence
éventuelle d'une carte 80 colonnes.
De méme, les routines concernant le
clavier autorisent T'ulilisation des
minuscules. Enfin, un autotest a été
ajouté (activé par les touches CTRL-
RESET-pomme fermée). Comme
ces modifications ont nécessité plus
de place mémoire, l'espace $C1UU-
$C7FF auparavant dédié a l’'adres-
sage des slots est maintenant sélecta-
ble entre les slots et une Prom.
Malgré toutes ces modifications, les
principaux points d’entrée du moni-
teur ont été gardés aux mémes
adresses. Vous pourrez toujours, par
exemple, passer en mode moniteur
en tapant CALL-151. Ainsi, sur
300 programmes commerciaux tes-
tés sur Apple Ile, j'ai lu que 95 %
Pom’s n°7
avaient tourné du premier coup et
3 % apres quelques légéres modifi-
cations.
Pour ma part, tous les logiciels que
jai essayés ont parfaitement tourné,
ce qui est rassurant du point de vue
compatibilité.
Et le portefeuille...
De méme que pour Apple Il ces
derniers mois, le Ile sera essentielle-
ment vendu sous forme d'une confi-
guration comprenant un Ile 64K, un
contréleur, un drive et un moniteur
& écran jaune. Les cartes d’extension
spécifiques au Ile sont la carte Apple
80 col., la carte 80 col. + 64 Ketla
carte Chat Mauve. Il est 4 noter que,
si cette derniére était disponibles par-
tout, les deux autres étaient totale-
ment inconnues a deux des cing
boutiques consultées. Les prix TTC
que jindique ci-dessous résultent
d'un sondage effectué par téléphone
auprés de cing boutiques parisien-
nes :
* configuration :
de 14 700 4 14 995 F
© Apple Ile seul :
de 9900 411950 F
* carte 80 col. :
de 9004 S999F
* carte 80 + 64K:
de 23004 2400F
® carte « Chat Mauve » :
environ 3 000 F
On remarquera, en dehors du cas
particulier de |'Apple IIe seul, que les
prix varient trés peu d’un revendeur
a l'autre, résultat de luniformisation
des prix imposée par Apple-Seedrin.
Conclusion
J'ai rencontré deux problémes parti-
culiers sur 'exemplaire qui m’a été
prété: D'une part, la commande
PR # suivie d'un numéro correspon-
dant a un slot vide sélecte la pre-
miére carte trouvée dans un slot
supérieur. C'est ainsi qu'un PR # 4
fait rebooter le disque, bien qu'il n'y
ait aucune carte dans le slot 4 (le
contréleur étant en 61). D'autre
part, il semble que l'Apple dont je
disposais avait quelques difficultés 4
s‘initialiser correctement aprés des
coupures de tension bréves (infé-
rieures 4 2 secondes), ce qui m’arri-
vait lorsque jutilisais l'interrupteur
de l'alimentation pour faire rebooter
l'Apple.
En dehors de ces problémes
mineurs, il faut souligner l'excellente
compatibilité du Ie avec son prédé-
cesseur le II+, tant au niveau du
matériel (j'ai essayé sans probléme
toutes mes cartes interfaces. y com-
pris une extension 128K Saturn) que
du logiciel.
Cependant, je dois dire que cette
premiére confrontation avec le Ile
m’a laissé un sentiment de décep-
tion. Attendant avec impatience ce
successeur de |'Apple Il, je me suis
retrouvé en face de la méme
machine, mais incapable de taper
trois touches de suite ! Cette impres-
sion d'absence de nouveauté a éé
certainement accentuée par le fait
que je dispose déja des minuscules
sur mon Apple II. D’autre part, je
n’ai pas pu emprunter d’une carte
extension 80 colonnes pour mon
essai, ce qui ne m’a pas permis
d'apprécier le confort apporté par les
80 colonnes.
Autre déception : les prix. Compte
tenu d'un abaissement vraisemblable
des coiits de production (carte plus
petite, nombre de circuits en
baisse...), on pouvait réver 4 des
prix inférieurs a ceux du II. Hélas, le
Ile affiche un bon 2 000 F de plus.
Comme, d’autre part, le II ne sera
plus vendu, il s’ensuit une augmen-
tation importante du syst@me -mini-
mum qui atteint maintenant les
15 000 F. Si cette somme ne consti-
tue pas un probléme pour les utilisa-
teurs professionnels (tres majoritai-
res il est vrai), elle devient fort diffi-
cile & réunir, en cette période de
crise, par un utilisateur individuel qui
préférera alors se reporter sur des
machines plus accessibles. L’évolu-
tion dans le domaine de la micro-
informatique se traduit d’habitude
par « plus puissant et moins cher ».
ll semble que ce ne soit plus le cas
désormais chez Apple. Dommage !
Ceci dit, l'Apple Ile a pour avantages
sa compatibilité et sa fiabilité plus
grandes. Si l'on pouvait avoir une
version Azerty simple (16 cabochons
a changer), ce serait beaucoup
mieux !
Des programmes
Les programmes en langage
machine dépendent en général de
Yadresse a partir de laquelle ils ont
été assemblés et ne peuvent de ce
fait « fonctionner » que s’ils sont lan-
cés a partir de cette adresse. Si nous
voulons qu'un programme se char-
geant en haut de la mémoire puisse
fonctionner sans probléme avec un
Apple de 16, 32 ou 48K, il nous
faudrait normalement prévoir trois
versions du méme programme !
La solution évidente d’un tel pro-
gramme consiste naturellement a
écrire des programmes indépen-
dants de leur origine, c’est-a-dire des
programmes relogeables (relocatable
Pom’s n° 7
programs), exécutables quelle que
soit leur origine.
Les deux obstacles principaux 4 de
lelles praliques sont les branche-
ments inconditionnels (.JMP, abré-
viation de « jump », l’€quivalent en
assembleur du GOTO) et les appels
& des sous-programmes (JSR,
« jump to subroutine », l'équivalent
du GOSUB) comme le montre le
petit programme ci-dessous :
1. JMP DEBUT
2 DEBUT JSR RIEN
3 BRK
4:
5 RIEN RTS
6°
relogeables
Philippe Frangois
Le probl@me posé par les JMP se
résout aisément : il suffit de rempla-
cer ces branchements incondition-
nels (dont les adresses sont explici-
tes) par des branchements condi-
tionnels forcés. En effet, les branche-
ments conditionnels du type BEQ,
BNE,. étant des branchements
relatifs, ils ne dépendent pas de
Tadresse d'implantation du _pro-
gramme. On remplacera donc tous
les JMP du programme par un des
couples d’instructions suivant : CLC
et BCC, ou bien SEC et BCS.
a CLC
2 BCC DEBUT
3°
Fs
-:
ie3}
a
es
27
Un petit probléme encore, & propos
de ces branchements conditionnels
forcés : les déplacements étant rela-
tifs et s’exprimant sur sept bits (le bit
huit indiquant le sens du déplace-
ment, en amont ou en aval de la
présente adresse) ne pourront étre
supérieurs 4 126 octets dans un sens
ou dans l'autre.
Toute tentative de dépassement de
cette limite sera sanctionnée par le
qu'un), ainsi que la lecture d'un petit
article dans Apple Assembly Lines
(Vol. 2, N° 10, juillet 1982), nous
ont permis de comprendre la fagon
dont il pouvait se résoudre :
A la place de chaque JSR (nom du
sous-programme), placez les trois
lignes suivantes :
CLV
JSR $FF58
BVC (nom du sous-programme)
4 DEBUT JSR RIEN Le probléme posé par les JSR se sur la pile, exactement comme si
5 BRK résout moins aisément. Néanmoins. nous lavions appelé par un JSK
6 * examen attentif des programmes RIEN normal! Mais attention, ce
7 RIEN RTS machines relogeables du commerce rest pas fini... En effet, si nous
e* (AMPER MAGIC, pour n’en citer essayons de sortir du sous
programme RIEN par un RTS, nous
allons nous retrouver 4 I'instruction
BVC RIEN qui sera de nouveau exé-
cutée et nous entrainera dans une
boucle infinie ! Il n'y a malheureuse-
ment pas d’instruction 6502 du type
SEV (« set overflow ») , aussi allons-
nous faire appel de nouveau 4 notre
précieuse adresse $FF58 et terminer
notre sous-programme RIEN par le
couple d'instructions suivantes :
fatidique message OUT OF RANGE _‘Mystérieux, n’est-ce pas ? Commen- BIT $FES8 ; place l'over-
ERROR de l'assembleur tons donc cette séquence. L’octet 3 flow
: placé 4 l'adresse $FF58 de la ROM RTS
La technique employée alors sera
celle de l'ascenseur comme le mon-
tre l'exemple suivant :
Moniteur est toujours égal 4 $60,
code de l'instruction RTS
L’appel d'un sous-programme con-
Linstruction BIT (voir par exemple
« Programmation du 6502» par
ORG $800 sistant seulement en un RTS peut Rodnay Zaks, page 103) effectue un
CLE Paraitre stupide, mais il a pour effet ET entre l'accumulateur A et la
de placer les deux octets de la pré mémoire ; mais, surtout, les bits 6 et
BCC ETAGE
. ; suite du programme
sente adresse sur la pile (stack), puis
de les ressortir. Nous pourrons alors
réutiliser ces deux octets dans le
7 de la mémvire sont tansférés dans
les bits V et N du registre d'état. La
mémoire contenant $60 (soit
. SEC | sous-programme concerné : 01100000 en hinaire), le bit V du
ETAGE BCC DEBUT registre sera donc bien positionné &
: RIEN TSX ; valeur du pointeur la valeur 1.
. ; suile du programme i de pile Résumons-nous par ce petit pro-
2 oe gramme oi sont utilisées toutes les
DEBUT JSR RIEN DEX techniques examinées dans cet arti-
BRK TXS ; nouvelle valeur és?
RIEN RTS Le sous-programme RIEN posséde
* maintenant une adresse de retour
1 x
RELOGEABLE 2 RETURN EQU SFF58
Big Mac 3 couT EQU $FDED
4 x
seee: 18 s cLe x PSEUDO JMP DEBUT
8061: 98 a8 6 BCC DEBUT
7 ®
8683: BS 8 DEBUT CLYy % EMPILE LA PRESENTE
8864: 28 58 FF 9 JSR RETURN ADRESSE
8887: Se B66 18 BVC BELL PSEUDO JSR BELL
8009: AY Ci it LOA #"A"
886B: 28 ED FD 12 JSR COUT
BOGE: 60 13 RTS
14 *
iS x
86GF: BA 16 BELL TSX X MISE A JOUR
8018: CA 17 DEX x DU POINTEUR
8e11: CA 18 DEX * DE PILE
8812: 9A 19 ™s
8813: AP 87 26 LDA #$87
8815: 28 ED FD 21 JSR COUT
8818: 2C 58 FF 22 BIT RETURN ARME LE BIT N
23 *® DU REGISTRE D’ETAT
SO1B: 68 24 RTS
Pom's n°7
Le programme ci-contre s'adresse &
ceux qui souhaitent visualiser les
informations stockées sur une dis-
quette formatée en Pascal. Ces
informations sont groupées en
280 blocs de 512 octets par dis-
quette.
Description générale
Le programme édite sur |'impri-
mantle un « dump » de la disquette
tel que présenté en fin d’article. Cha-
que ligne indique le numéro d’un
groupe de huit octets, puis chacun
de ceux-ci en décimal (de 0 & 255),
et enfin les caractéres ASCII corres-
pondant 4 ces huit octets.
Vous vous étes probablement aper-
cus que le code ASCII est le méme
pour un octet X (de 0 a 127) et
Yoctet X + 128. Toutefois, dans le
listing ASCII des octets dont la
valeur dépasse 127, nous avons pré-
cédé ceux-ci du caractére exponen-
tiation « A ».
D’autre part, les caract@res dont les
codes sont compris entre () et 32
inclus ne sont pas tous imprimables.
C'est pourquoi nous les avons rem-
placés par un mnémonique relatif &
leur réle respectif (12 = LF,
27 = ESC, 7 = BEL,...). Ces
mnémoniques sont imprimés aprés
que leur signification ait été prélevée
dans le tableau TABCTRL OF
STRING [3]. Ce tableau est rempli
en début de programme par la pro-
cédure LECTABCTRL 4 partir du
fichier précédemment créé par le
programme WRITECTRL sur lequel
nous reviendrons ultérieurement.
Le programme
Lors de son exécution, le pro-
gramme LECTBLOCK demande 4
Putilisateur le numéro du canal asso-
cié A la disquette 4 analyser, puis
celui du premier bloc, et enfin le
nombre de blocs 4 « dumper ». Pour
savoir a partir de quel bloc cette opé-
ration doit débuter, il suffit d’exami-
ner le directory de la disquette avec
le FILER en sélectionnant la com-
mande E.
Dés cet instant, le « dump » sort sur
Yimprimante et occupe 65 lignes sur
Pom’s n° 7
Dump Pascal
une page qui en contient normale-
ment 66, ce qui permet d’archiver
une page de listing par bloc de
512 octets. Il faut remarquer que,
contrairement au BASIC, Pascal
enregistre ses fichiers sur disquette
de facon continue, si bien qu'il est
trés simple de lister un fichier
connaissant l’adresse de son premier
bloc et sa longueur (commande E
sous FILER).
Le programme lui-méme est simple
et s'articule autour d’une instruction
UNITREAD (numdrive, fich, 512,
numbloc). Cette instruction est capa-
ble de lire des informations non
structurées, contrairement aux
autres instructions d’entrée/sorlie.
Les paramétres de cette instruction
sont : le numéro de drive, fich (un
tableau de caractéres), 512 (nombre
d'octets a lire) et numbloc (le
numéro du bloc).
Notons également qu’afin d’alléger
au maximum le programme, aucun
contréle de cohérence n’a été pro-
cest DE LA
eaer DION LECTEDR,
ucconTeENT.
grammé dans les saisies, ce qui
implique un tant soit peu de vigi-
lance lors de l'entrée des paramé-
tres. On aurait pu effectuer des tests
de cohérence, mais il faut bien com-
prendre que l'utilisation de ce pro-
gramme est ponctuelle, dans le but
de scruter des informations sur dis-
quette, ce qui n’est pas une manipu-
lation courante.
Michel Marquis
Il n'est toutefois pas inutile de l'exé-
cuter simplement par curiosité,
notamment sur les fichiers illisibles
par des moyens « légaux » comme
SYSTEM APPLE, SYSTEM MIS-
CINIO, ... ou sur le texte de votre
programme (vous serez surpris !). A
titre d’exemple, nous avons joint en
page 34 un «dump » partiel du
fichier CTRL.DATA créé par le pro-
gramme WRITECTRL.
Mise en ceuvre
du programme
1. Entrer le programme
WRITECTRL
2 . L’exécuter en y entrant les mné-
moniques ASCII de 0 4 32.
S’aider de Pom’s 4 ou du
« dump » donné en annexe.
3. Entrer le programme
LETBLOCK. Vous pouvez chan-
ger le numéro du drive sur lequel
se trouve FICHCTRI. en rempla-
cant #5: CTRL.DATA par
#4: CIRL.DATA
4. Lancer l'exécution.
Bien entendu, si vous avez acheté la
disquette d’accompagnement de ce
numéro, vous y trouverez les pro-
grammes tout préts.
Conclusion
Comme nous |’'avons remarqué plus
haut, ce programme n’est pas d'une
utilisation courante, mais il peut
apporter beaucoup 4 ceux qui tra-
vaillent «prés» du systéme. De
toute facon, il présente un intérét
pédagogique indiscutable. Pour
l'instant, nous nous limitons a la
publication d'un programme capable
uniquement de lire des blocs sur dis-
que, donc sans danger. Il lui man-
que la possibilité de modifier les
octets lus, puis de les réécrire. Nous
ne doutons pas que certains d’entre
vous |'écriront rapidement et enver-
ront leurs contributions & Pom’s.
Pour les autres, si la suite les inté-
resse, nous pourrons la publier ulté-
rieurement.
29
Programme DUMP
PROGRAM LECTBLOCK;
TYPE CARACT=PACKED RECORD
NOM: STRING[ 31
END;
VAR FICH:PACKED ARRAY([@..511] OF CHAR;
PAPIER: TEXT}
TABCTRL:PACKED ARRAY[8..32] OF STRINGI3];
FICHCTRL:FILE OF CARACT;
NUMBLOCK ,NUMDRIVE ,NBBLOCK: INTEGER,
REP: CHAR;
PROCEDURE LECTABCTRL;
VAR I: INTEGER;
BEGIN
RESET CFICHCTRL, ’#5:CTRL.DATA’) 5
FOR I:=@ TO 32 DO
BEGIN
TABCTRLE 11] :=FICHCTRL* .NOM;
GET<FICHCTRL>
END;
CLOSECFICHCTRL) ;
END;
PROCEDURE LECTURE;
VAR I,J,CH: INTEGER;
BEGIN
REWRITE<PAPIER, “PRINTER: 7%) 3
WRITELN(PAPIER,’BLOCK NUMERO : ’:45,NUMBLOCK) ;
UNITREAD(NUMDRIVE , FICH,512,NUMBLOCK) ;
1:=@;
REPEAT
WRITECPAPIER,I:3,’ 723
FOR J:=i TO 8 DO
BEGIN
CH:=ORD¢(FICHE11> ;
WRITE PAPIER,CH:4) ;
I:=I+1;5
END;
WRITECPAPIER,” ae |
:=1-8;
FOR J:=1 TO 8 DO
BEGIN
CH:=ORDC(FICHEI1) ;
IF CH>127 THEN
BEGIN
WRITECPAPIER,’ *°)3
CH:=CH-128
END
ELSE WRITECPAPIER,’ ‘)35
IF CH<=32 THEN WRITECPAPIER, TABCTRLICH])
ELSE WRITECPAPIER,CHR(CH) :3) 3
Tr=It1
30 Pom’s n°7
END;
WRITELN¢ PAPIER) 5
UNTIL 15511;
CLOSECPAPIER? ;
END;
BEGIN (PROGRAMME LECTURE BLOCK(S) x)
LECTABCTRL ;
REPEAT
PAGE OUTPUT) ;
GOTOXY(5,5) ;WRITE< “NUMERO DU DRIVE (SANS #) : 7);
READLN(NUMDRIVE) ;
GOTOXY(5, 16) ;WRITEC “NUMERO DU PREMIER BLOCK : “);
READLN <NUMBLOCK) ;
GOTOXY(5, 15) ;WRITE( “NOMBRE DE BLOCK(S) : “);
READLN(NBBLOCK) ;
REPEAT
LECTURE;
NUMBLOCK :=NUMBLOCK+ 1;
NBBLOCK :=NBBLOCK- 1;
UNTIL NBBLOCK=6;
GOTOXY< 10,22) ;WRITE¢’CONTINUER ? (O/ND 7);
READ(REP) ;
UNTIL REP=*N*
END.
Programme WRITECTRL
PROGRAM WRITECTRL; BEGIN
TYPE CARACT=PACKED RECORD OUVERTURE;
NOM: STRING 2] RESET(FICHCTRL ,“#5:CTRL.DATA’> ;
END; PAGE‘ OUTPUT? ;
FOR I1:=@ TO 32 DO
VAR I: INTEGER; BEGIN
FICHCTRL:FILE OF CARACT; WRITECI:#3,% = 723
READLN¢FICHCTRL* «NOM ;
PUT(FICHCTRL) ;
END;
PROCEDURE QUVERTURE; CLOSE¢FICHCTRL ,LOCK>
BEGIN END.
(X$1-%)
RESET(FICHCTRL, “#5:CTRL.DATA’) ; Exemples de dump en page 34
CHSI+X)
IF IORESULT<>@ THEN
BEGIN
IF IORESULT=16 THEN REWRITECFICHCTRL, ‘#5:CTRL.DATA’>)
ELSE BEGIN
PAGE (OUTPUT) ;
WRITEC“ERREUR E/S*);
EXIT(CWRITECTRL>
END;
END;
CLOSE(FICHCTRL,LOCK)
END;
Pom’s n°7 31
TOUT SUR LA MICRO
UExposition :
du 14 au 18 juin 1983
e mardi 14, mercredi 15, vendredi 17, de 9h 304 18h
noctume le jeudi 16, de 9h 304 22h e samedi 18 de 9h 304 I7h.
Tous les matériels, toutes les applications des micro- personnelle, venez évaluer les matériels, comparer leurs
ordinateurs. Que votre motivation soit professionnelle ou _codits et vous renseigner sur les applications disponibles.
Nouveauté 83 : une animation « logiciel »
(organisée par Sybex et Logiciels & Services).
Une banque de données des logiciels présentés par __ meilleurs logiciels pour micro-ordinatours. Les lauréats pré
les exposants & MICRO-EXPO vous guidera, selon vos _ senteront leurs logiciels pendant toute Id durée de MICRO-
besoins spécifiques, & travers |’exposition. EXPO (Renseignements : Logiciels & Services, tél. : (1)
Un « grand concours » destiné 4 récompenser les 226.11.25).
Et pendant toute la durée de |'exposition, une animation-jeux : venez affrontez |’ordinateur et peut-étre... le battre.
Le Congres
du 13 au 18 juin 1983
Du débutant & I’expert, une occasion unique dans |’année de se former et de s’informer.
séminaires professionnels Conférences Grand Public
Les micro-ordinateurs : présentation, choix Choix d’un micro-ordinateur
les microprocesseurs Les micro-ordinateurs de poche
Les langages : BASIC, PASCAL, APL
Les nouveaux langages : FORTH, LOGO, PROLOG, Cc
La télématique Zz
Le traitement de texte
U'enseignement assisté par ordinateur - E.A.O.
Les systémes d’exploilution pour micro-ordinateurs 16 bits
Le traitement de texte
Journées spécialisées, avec démonstrations :
— pour les professions juridiques,
La comptabilité et ses logiciels — pour la médecine,
— pour l’agriculture.
L‘entreprise, son systéme d'information et |'informatique
les bases de données_et leurs logiciels
Journées des constructeurs =
la:gestion tle Viseole COMMODORE, GOUPIL, HEWLETT-PACKARD,
Te systme d’exploitation MS-DOS TANDY, THOMSON, VICTOR LAMBDA
INFORMATION
Nom:
g
Adresse : 5
;
Code postal:|_| | | | J Ville : &
O __. entrées(s) & demi-tarif O Programme détaillé du congrés
4, place Félix-Eboué - 75583 PARIS Cedex 12 - Tél. : (1) 347.30.20 - Telex : 211 801 F
8 Congrés-Exposition - MICRO-ORDINATEURS
Palais des Congrés - CIP - Porte Maillot - Paris
organisé par :
SYBEX 4, place Félix-Eboué - 75583 PARIS - Tél. : (1) 347.30.20 - Telex : 211 801 F
BLOCK NUMERO : 21
@ 3 78 8 76 3 83 79 72 ex N U LEX 8s oO 2
8 3 83 84 88 3 69 84 88 ex Ss T X* EX EE * 2m
16 3 69 79 84 3 69 78 81 EX E— O T EX cE NSE
24 #3 65 67 75 3 66 69 76 Ex A c «K EX 8. 5m
32 3 32 66 83 3 32 72 84 ET sPC B S EIX SPC HT
40 3 32 76 7@ 3 32 86 84 E™ sPC tL F EX Spc U-oge
48 3 32 78 78 3 32 67 82 E™ spc F FF EIX spc C Jam
SS 6 3 2 os 9) «=D Se ‘es ‘73 E™ spc Ss oO ETX SPC Ss JI
64 3 68 76 67 3 68 67 49 E™ Oo LL cE EX DB Cc am
72 3 68 67 5@ 3 68 67 SI Ex Dd c 2 &x o calm
se 063 «668 67 «520 (3 78 65 75 ex o. ¢C 4 EX N 6m
se 3 83 89 78 3 69 84 66 ex S Y N EX cE T
96 3 67 65 78 3 32 69 77 —E™X c A N ETX SPC E M
10403 83 85 660 3 SF «83 67 EX S U BEX E 8 &
112 3 32 78 83 3 32 71 83 —E™X spc F S$ ETX SPC G §
12@ 3 32 82 83 3 32 85 83 E™X spc RS EX SPC US
128 3 83 8@ 67 @ @ 68 @ E™ S PC NUL NUL NUL NUL
Fichier 6500 ERRORS : dump partiel
BLOCK NUMERO : 151
e 1 92165 3@ @ @ 6 @ SOH SPC * 9 RS NUL NUL NUL NUL
8 174 21 147 161 7 165128211 * . MAK *DC3* ! BEL * % “NUL *
16 199 184 1 94 25 1165128 * >* 8 SOH * EM SOH* % “Kim
24 185 174 28 167 55 161 3 41 a 9%. pe4r ¢ 74 ! Gtx
32 174 18 165 128 143 @ 204 1 * . DC2* % *NUL* SI NUL *~ L SOW
40 198 1 15 117 116 10@ 1e1 182 * F SOH_ SI u on de
48 105 110 181 188 32 188 97 98 i noe @ $PC 1 a
56 181 108 198 164 1 94 25 1 e 1* >%* @ SOH * EM SOH
64 165 128 185 174 28 167 55 161 * %*NUL* 9~* . DC4* ” 7 4
72 3 41 174 18 165 128 143 @ —E™ >) * . De2* % “NUL * SI NUL
pe 204 «21198 «#41 2@ 111112 101 ~*~ L SOH* F SOH DC4 o Pp
88 114 97 110 1@@ 32 111 117 116 roa lun SPEC
96 32 111 182 32 114 97 118 103 spc oo f SPC or <\"
164 181 1 165 128 185 174 28 167 e SOH* %7NUL* 9* , 064+
112 55 161 3 41 174 16 1465 128 7° | €% O* . 0C2% % ~
12@ 143 @ 204 1198 1 24189 «+.~ SI NUL* L SOH~ F SOH CAN
128 117 115 116 92 104 97 118 1@1 o « €¢ &S A @. 9
136 32 112 114 111 99 181 188 117 sec op ro ¢ e dog
144 114 101 92 118 97 109 101 174 r @ sec n a2 nm €*3
152 28 167 55 161 3 41 174 18 pea = * ie a
148 165 128 143 @ 204 #1498 #{ =~ % “NUL * SI NUL* L SOH* F SOH
168 29 118 117 109 98 161 114 32 6 nn vw m b e PF 8
176 111 162 32 112 97 114 97 169 o ¢ SPC p a r a m
184 161 116 101 114 115 32 181 128 e t er s SP e x
192 112 101 99 116 181 186 3 41 eo © ¢€£ t e 4 EX »>
200 174 18 165 128 143 8 204 «1 . oe2* % “NUL * ST NUL * L_ SOH
208 198 1 21 181 128 116 114 97 ~*~ F SOH NAK e@ x t r @#@
216 32 103 97 114 98 97 103 101 spec 9 a r b a GO eC
224 32 111 118 32 168 185 11@ 161 spc oo n SPC 1 i noe
232 181 12 tiz 181 99 116 101 168 2 *« p @ c«€ t ed
248 «893 41 174 18 165 128 143 @ E™ > * . De2* % “NUL * SI NUL
248 204 «#41198 1 29 185 118 112 * L SOH~ F SOH GS i nop
256 117 116 32 108 185 11@ 1e1 32 u t spc 1 i ne SPC
264 111 118 181 114 32 56 48 32 o ve or spc 8 @ SPC
272 99 184 97 114 97 99 116 101 ec oh aor aoe t oe
288 114 115 3 41 174 18 165 128 ° © £m .»>* , bez* % Ae
2e8 143 @ 204 #1198 #1 16118 * SI NUL* L SOH* F SOH DLE n
276 111 116 32 101 116 111 117 163 st oe « A 6 Ww “™
304 184 32 46 73 78 39 115 56 h SPC F I Fo s 8
312 48 32 99 104 97 114 97 99 esp c h a rp ae
32@ 116 101 114 115 3 41 174 18 + @©« © ws 64 2% = De
ES Ee
Pom's n° 7
34
Fichier CTKL-DATA : dump partiel
Bien que totalement inédit, ce géné-
rateur peut étre d’une grande utilité
pour un programme scientifique ou
éducatif, ainsi que pour tout pro
gramme devant conserver et utiliser
des données sans créer de fichiers.
En fait, il devrait aussi permettre de
réaliser des programmes sortant de
Vordinaire...
Le générateur donnera 4 votre pro-
gramme la faculté de se développer
lui-méme, grace a une simple com-
mande qui, lorqu’elle est rencon-
trée, a pour effet d'ajouter un
numéro de ligne a toute instruction
Applesoft et d’insérer la liigne en
question dans le programme
En fait, il a fallu pour l’écrire recourir
& des routines de la ROM Applesoft
assez peu connues... Ces routines
seront indiquées plus loin.
Principe de
fonctionnement
Ayant souvent éprouvé l'inconvé-
uient, dans un programme utilisant
des fonctions mathématiques, de
devoir stopper celui-ci pour y insérer
des lignes de détfinitions ou pour y
incorporer des DATA, je me suis dit
qu'il serait merveilleux de disposer
d'une routine en asssembleur accor-
dant aux programmes écrits en
Applesoft une dimension évolutive,
la capacité de s'‘auto-générer !
Les données entrées par INPUT au
cours du programme pourraient par
exemple lui étre incorporées sous
forme de lignes d’instructions, avec
un numéro qui serail aultomatique-
ment incrémenté et placé au début
de la ligne générée.
Pour que le générateur puisse opé-
rer sur toute instruction Applesoft,
une commande INPUT digérant vir-
gules et deux-points est indispensa-
ble ; or, cette commande a été réali-
sée antérieurement et publié dans le
numéro 5 de Pom’s (voir « La pro.
grammation facilitée »).
Parmi les instructions qui compose-
ront les lignes générées, l'une serait
corrélative a l'auto-écriture d’instruc-
tions DEF. En effet, lorsque le pro-
gramme appellera une ligne conte-
nant des instructions DEF, cet appel
nécessilera un RETURN, qui devra
Pom's n°7
Un générateur
par conséquent @tre produit par le
générateur.
Demander au programme d’effec-
tuer un appel par GOSUB ou
GOTO 4 des lignes qui n’existent pas
encore, et que l'on propose d’ajou-
ter durant le traitement, pose quel-
ques questions! Une convention
s'impose alors : les lignes ajoutées
commenceront par exemple 4 partir
du numéro 20 000, avec un incré-
ment de 10; on calculera ainsi le
numéro d'une ligne créée a partir de
son rang. S'il s'agit de la troisiéme, la
premiére ligne ayant le
numéro 20 000, ce sera la ligne
20 020.
On se dit que, puisque le générateur
peut ajouter une nouvelle ligne au
programme, il serait également
nécessaire de pouvoir modifier la
derniére ligne existante, lorsqu'il
s'agit d'un RETURN notamment.
Cette possibilité serait obtenue par
une option a laquelle on donnera le
nom de POP.
Ces projets me paraissaient promet-
teurs ; jimaginais un programme
démarrant avec deux lignes, s’auto-
générant a partir de quelques indica-
tions et se sauvegardant tout seul sur
la disquette, une fois la mémoire
saturée...
Un écueil de taille s’opposait toute-
fois a la réalisation : il fallait trouver
la procédure Applesoft convertissant
les lignes en format programme,
dans lequel les instructions sont
représentées par un code d’un seul
octet. Je ne possédais pas la docu-
mentation nécessaire et entrepris de
la chercher tout seul dans I'Apple-
soft, 4 partir de l'adresse $D000.
Crest a l'adresse $D56D que je lai
enfin trouvée, rebelle 4 un emploi
immédiat, finissant avec la longueur
des données en Y alors qu'elle est
initialement en X dans le buffer
dentrée et modifiant en outre
TXTPTR, l'ensemble des pointeurs
servant & analyser le programme en
cours. Cette routine une fois décou-
verte (ainsi que quelques autres 4
l'occasion), le module était réalisé ;
en voici le mode d’emploi.
Mode d’emploi
Une seule commande permet
Denis Sureau
dobtenir la génération d’une ligne
Applesoft de tout type ; son format
comporte deux variantes, soit
Vemploi d'un mot réservé de
l'Applesoft, soit l'emploi d'un carac-
tére quelconque.
Les instructions & DATA A$ et &
DEF A$,lorsqu’elles sont rencon-
trées, ont pour effet d'ajouter au
programme les instructions conte-
nues dans A$ sur une ligne qui com-
mencera automatiquement par
DATA ou DEF. Plus généralement,
avec la syntaxe & X A$, X est choisi
par l'utilisateur. Cela peut étre un
caractére quelconque ou un mot
réservé de l’Applesoft, avec un effet
différent : le mot réservé sera incor-
poré en début de ligne, le caractére
ne le sera pas.
L’option POP utilise la syntaxe &
POP DATA A$ ou enfin & POP X
AS, la nouvelle ligne remplacant la
derniére et prenant son numéro,
Les commandes du générateur peu-
vent s‘employer en mode direct si un
programme est présent en mémoire
et sila LOMEM a été déplacée. Ceci
est une précaution dont on s’assu-
rera toujours avant d’utiliser le géné-
rateur : la LOMEM doit étre placée
suffisamment haut pour protéger les
variables, puisqu’elles suivent immé-
diatement, en temps normal, le pro-
gramme dans la mémoire.
NDLR : ne pas oublier d’abaisser la
HIMEM au-dessous du début du
générateur avec HIMEM : 38048 si
Yorigine est en $94A0 comme sur le
listing
Routines Applesoft
Les deux plus importantes sont
MOVSTR ($E5E2) pour le transfert
des données et en $D56D celle qui
« tokenize » le buffer d’entrée, c’est-
& dire qui convertit les mots réservés
en codes.
On appelle $D56D avec X mis a 0,
en sauvegardant TXTPTR qui sera
pointé sur le buffer d’entrée ($200),
et en remplacant par $0 le délimiteur
$D (RETURN) se trouvant ala fin du
texte lors d’une entrée par INPUT.
Convertie en format Applesofi, la
ligne se trouve bien sir réduite ; le
registre Y contiendra alors la nou-
SSS a ee ee ee
35
velle longueur de la ligne, délimiteur
compris.
MOVSTK transfére une donnée
pointée par Y (ADL), X (ADH), lon
gueur en A vers l'adresse pointée en
$71 et $72 (FRESPC).
MOVINS ($E5D4) fait la méme
chase que MOVSTR mais cop
Showing the first 100000 of 206037 characters.