Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
7 MARS 1983
35F
Formation continue à la micro-informatique
"'''OTOC.(I'.'''lllfll'l' Tous nos Informaticiens viennent de l'informatique traditionnelle, el en maîtrisent totalement les langages classiques . Assembleur, COBOl. FORTRAN Ils utilisent leur professionnalisme et les mêthodes de l'Informatique pour réaliser des applications professionnelles en micro-informatique. Nous vendons des micrO-Ofdmateurs sans programme. Nous vendons aussi des micro-ordinateurs avec les programmes. Il s'agit de programmes reallsés par la societé KA, dont nous garantissons la qualité elle bon fonctionnement. Nos formateurs enseignent l' informatique . L'enseignement de la micro-informatique neceSSlle des formateurs professionnels, suffisamment de matériel pour que chacun puisse pratiquer, un support de cours couvrant non seulement l'enseignement diffusé, mais permettant au participant de s'auto-former apres te stage. Nous avons déjà accueilli de nombreux stagiaires, d'horizons et de centres d'intérêts divers: chefs d'entrepnse. universitaires, professions libérales, informaticiens, musiciens compositeurs, retraités, cadres de grandes entreprises, revendeurs de micro-ordmateurs, ,
• Stage de 2 jours bases de données, Comment utiliser les progiciels: • bases de données • manipulateurs de nombres et générateurs de tableaux • générateurs d'états imprimés Application pratique (un 48 K + un lecteur de disquettes pour deux participants), Après ce stage, on peut générer, A partir de progiciels, un programme totalement adapté à son application en moins d'une journée de travail, Ce stage nécessite de connaître la manipulation de l'APPLE Il, ou d'avoir suivi au minimum la journée d' initiation.
Dates 27·28 iuin 29-30 août Pnx 2192 F h,t.
Nous proposons 5 possibilités : • Stage de 1 semaine de programmation BASIC_ Il débute par la lournée d IOlliallon Le stage permet d'aSSimiler la logique de programmation et de 1 appliquer (un micro-système 48 K pour 2 partlclpantsl· En lin de stage. on salt établir un programme de gestion de !lchler avec consultatIOn en temps réel Ce stage ne néceSSite pas de connilissance de départ en mlormatlQue
Dates du 18 au 22 avril du 16 au 20 mai du 20 au 24 juin Prix 4245 F h.t.
• Stage 3 jours disquettes. Consacré à l'organisation. A la programmation el à l'explOitation de fichiers sur disquettes magnétiques. à travers l'élude du Dlsk Dperatmg System APPLE Il Travaux pratiques sur micro-systèmes (un 48 K � un lecteur de disquettes pour deux partiCipants). Ce stage néceSSite • salt d aVOir suivi le stage de 1 semame de programmation au préalable. • SOit d avOIr une bonne connaissance théorique et une sénellse pratique de BASIC de l'APPLE Il
Dates du 25 au 27 juillet du 17 au 19 octobre Prix 3378 F h.t.
• Journées de sensibilisation et stages de formation il Paris et en Province. Is sont organises
a la demande
• d une Instance régionale telle par exemple, une Chambre de Commerce: • d un organisme de formallOn dans le cMre d'un cycle pluS vaSle de formatIOn . • CI une e'ltreprlse. la SOCIeté KA InSlalle le matérrel pour la durée de ta formatIOn. assure la lormatlon ellournl! les supports de cours.
• Journée d'initiation - Dates: 18 avril, 16 mai, 20 juin � Prix 773 F h.!. Le nombre CIe places pour cnaQue stage est stnctemcm l.mU" il Id toI;, pour la Qualite de fense,qnemenl et par les contraIntes du materlel
Deux animateurs sont presents pour aider tes parhClpants a la reahsatlon de leurs programmes Un support de cours tres complet est remIS â Chaque partiCIpant
Pour la Journee d IIIlhallon et poUl les stages les déleuners sont pns en commun el complls
l'informatique douce-Renseignements et inscriptions à KA - Programme détaillé Sur demande. 212 rue Lecourbe 75015 Paris - Tél. 533.13.50. le calendrier 83 est disponible. "'l'inI<ImIatique <b..o!" 8SI .... marque d6!lO&ée '" la. """'* KA
'a no7 Sommaire
Page langage' Niveau· •
Éditorial par Hervé Thiriez 5
Les arcanes du Moniteur Apple III par Bruno Lemaire el Gilles Mauffrey 6 A P
Cryptographie à clef publique par Olivier Herz 7 P M-T
Graphique, quand tu nous tiens . . . par Guy Mathieu 15 B T
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 1 T
L'Apple Ile à l'essai par Jean-François Duvivier 25 1 T
Des programmes relogeables par Philippe François 27 A M
Dump Pascal par Michel Marquis 29 P T
Un générateur par Denis Sureau 35 A M-T
Un programme de test universel par Denis Sureau 39 B T
Visicalc et traitement de texte par Hervé Thiriez 43 B T
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
FlOt MUFFIN et DEMUFflN par Alexandre Duback 55 1 T
Le cours de BASIC Applesoft d'André Finot par Jean-Jacques Crépy 56 1 T
Multiplan à l'essai par Hervé Thiriez 57 1 T
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 enchaîné par Denis Sureau 62 A P-T
Les quatre ponts par Olivier Herz 63 B T
Courrier des lecteurs 64 1 1
Courrier des clubs 66 1 1
Trucs et astuces 26-58 1 1
. Lang&ge : B{asic) - A(ssembleur) - P{ascal) . • • Niveau: D(ébutant) - M(oyen) . P(ro/essionnel) . T(ous).
Il s·agiHà du niveau nécessaire pour comprendre le fonctionnement du programme décrit dans l'article. ou pour digérer l'anicle luimême. Ceci dit, un programme peUl êlre uuli5ê sans compl'éhension de son fonctionnement interne (sinon. qui jouer/Ill au", échecs sur ordinaleur ?)
Les annonceurs B.F.L : p. 42 - BMI : 3<couv. - ANDRÉ f. flNOT : p. 20 - JCR 4·couv. - KA : z.couv. - LOGMA p. 18 - M.a.D.c. : p. 58 - MICRO INFORMATIQUE SERVICE: p. 4 - MICROMOS p. 13·45 - MINIGRAPHE : p. 17 - L'ORDINATEUR INDIVIDUEL: p. 14 - P,S.L : p, 54 - SYBEX: p. 32·33 - TOTALE FORMATION. p. 47
Éditions MEV - 49, rue Lamartine - 78000 Versailles Oirecteur de la publication: Hervé Thiriel. Imprimerie Sim. 75011 Paris. Imprimé en France. Dépôt lég<ll . 1" trimestre 1983.
Porn's nO 7 3
• La division de la longueur des programmes par 20.
• La possibilité réelle de dessiner ses masques de saisie ou d'impression.
• Une indépendance totale de la périphérie choisie par rapport au système.
• L'intégralité du système contenu sur une carte mémoire de 20 K.
• Une gestion de mémoire de 140 K à 120 mégas. • Des utilitaires déterminants
. un générateur de programmes de gestion de fichiers permettant même le séquentiel indexé multiclé
. un générateur d'écrans.
D.S.A. INFORMATIQUE MICRO ALPHA SOFT SEE MI
• ••
Carte MEM/DOS 6502 LE SYSTEME D'EXPLOITATION
DU 6502 - MONOPOSTE/MUL TIPOSTE
• CALL FN, une nouvelle commande basic, très puissante, intégrée au système permettant l'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 l'autonomie des postes intelligents disposant de leur propre unité centrale.
• Des programmes compatibles APPLE][ et APPLE Illautomatiquement transférables sur COMMODORE 8096 .
• Et pour demain, des logiciels développés aujourd'hui directement compatibles avec le réseau local memnet.
����atiaue .aserviœ 3, rue Meyerbeer 06000 NICE· Télex 461 916 F
G·B
MICROMEGAS
5, bd Dubouchage 06000 NICE
", impasse du Lacquet 25200 MONTBELIARD
Tél. (81) g7.16.46
61, rue Ch. Rivière· B.P. 0701 22, rue des 3 Pierres
C.i.C.C.
Grove house Ihe bordage St Peter Port GUERNSEY (0481) 20155
BENELUX
MEGAVOLT S.A.
Rue de Bleurmonl 328
Tél. (93) 85.15.96 44401 REZE CEDEX 69007 LYON Tél. (40) 75.52.80 Tél. (7) 861.19.52 B 4920 EMBOURG
...
Editorial
Après des mois et des mois d'allente, 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 Porn's. Par opposition au dernier numéro. dons lequel nous vous auons offert plusieurs longs articles, nous uOus prOposons ici de nombreux articles de_fOUS genres. Les amateurs de Pascal peuvent se réjouir, ils trauueront trois programmes écri�dans leur langue!
Trois contributions assez importantes occuperont vos soirées pendant quelque temps: tout d'abord, un générateur de programme da d Denis Sureau, et accompagné d'une application sous forme de test programmable. Ensuite, Olivier Herz nous assène un programme Pascal de cryptographie à e/ef publique - grâce auquel uous pourrez coder et décoder des messages. Enfin. Gérard Michel concurrence le MEM/DOS en uous donnant un programme de gestion de masques dont l'analyse deurait permettre de grands progrès aux débutants ayant déjà lu ses artie/es précédents ..
De nombreux autres artie/es uous apporteront de multiples idées et de non moins nombreux programmes. Guy Mathieu nous montre comment exploiter les pOSSibilités graphiques de J'Epson. ce dont Olivier Herz s'inspire pour uous aider à effectuer des opérations logiques sur les pages graphiques. Nous apprennons à utiliser les minuscules dans Visicalc sur Apple li, puis nous analysons la conversion bidirectionnelle entre Apple Writer et des fichiers TEXT.
Michel Marquis nous propose un programme BASIC de boat pour lier PLE et CRAE (voir le numéro 1 de Pom's) à l'allumage de l'appareil et un programme de dump en Pascal. Philippe François 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 l'Apple 11I et nous donnent quelques bonnes adresses. Quand à Olivier Heu. 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 J'Apple Ife (Jean.François 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é Final.
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 Irain de ft 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 à nous faire confiance et encourageons tous les lecteurs qui nous envoient leurs contributions.
Nous vous donnons rendez·vous du 14 au 18 juin à notre stand (T3) au sa/on Micro·Expo.
Hervé Thiriez
Ont collaboré d ce numéro: Jean-Jacques Crépy - Alexandre Duback - Jean·François Duvivier - Philippe François - Olivier Herz - Yvan Koenig - Régis Lardennois· Bruno Lemaire - Thierry Le Tal1ec - Michel MarquiS - Guy Mathieu - Gilles Mauffrey - Gêrard Michel - Denis Sureau - Hervé Thiriez - Jacques Tran-Van. RédOCleur : Olivier Herz - Dessins: Laurent Bidol.
Directeur de la publication· rédacteur en chef: Hervé Thiriez - Siège social et abonnements: Ëditions MEV - 49. rue Lamartine - 78000 Versailles - Rédaction: 59, bd de Glatigny - 78000 Versailles - Hl. ; (3) 918.13.07 - COUrTier des lecteurs (logiciel) : Olivier Herz - 17, rue du Gros Chéne - 44300 Nantes. Régie publicitaire: Force 7 • Anne Jourdan - 39, rue de la Grange-aux-Belles - 75483 Paris Cedex 10· Tél. (1) 238.66.10. Diffusion auprès des boutiques et librairies : Éditions du PSI - 41-51, rue Jacquard - B.P. 86 - 77400 Lagny-sur-Marne. Composition· Impression: SIM - 52, rue Servan - 75011 Paris - Hl. ; (1) 357.5l.20.
Porn's nO 7 5
6
CTRL (ou les
- - RESET arcanes du Monitor Apple III)
Bruno Lemaire - Gilles Mauffrey
Tout utilisateur d'Apple /11, surtout s'il a aussi utilisé un Apple Il, s'est sans doute posé au moins une fois les questions suivantes : qu'y a-Hl derrière le rempart mystérieux du SOS? Peul-on utiliser le langage machine de )' Apple /fi aussi commodément que celui de son pelit frère, puisqu'ils utilisent tous deux le même processeur, le 6502 ? Nous allons donc essayer de donner dans cet artide quelques éclaircissements sur l'utilisation et l'implantation mémoire des principales routines moniteur de l'Apple 1/l, en réservant à un article ultérieur la présentation de la structure du SOS.
Structure de la mémoire A. Généralités La mémoire de ]' Apple lf1 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 $FOOO cl $FFBF qui contient normalement le
Symbole G J 5 M
Syntaxe oG oJ
octet < m_pS n<m_pM
moniteur en ROM, mais qui peut être .. swilché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 sûr 8 zones pour un Apple 256 K. 1l n'y a cependant que 64 K directement adressables par l'utilisateur. décomposés en une banque .. système. allant de $0000 à $lFFF. et de $AOOO à $FFFF, et en une banque utilisateur allant de $2000 à $9FFF. C'est cette banque qui est .. switchable . par une simple modification du contenu de $FFEF. Ce contenu varie de FO à F2 pour un 128 K, et de FO à F6 pour un 256 K.
Si l'on veut implanter en mémoire un programme machine, on dispose donc sans problème d'au moins 32 K, plus une partie de là 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
Utilisation
le numéro de la banque utilisée, il faut veiller à ce que la partie du programme qui veut adresser d'autres banques soit sur la banque système.
B. Zones particulières 1) En dehors de la page zéro traditionnelle (réservée pour différents pOinteurs et pour l'adressage indirect du 6502), et de la pile système en
.
page 1 (de $100 à $lFF), d'autres zones font fonction de page zéro (adressage indirect étendu, uniquement lorsque le SOS est actif) et de pile pour le SOS et pour le programme machine chargé au moment du boat. 2) Mémoire écran. - Pour le texte. En 40 colonnes, elle utilise les positions de $400 à S7FF. En 80 colonnes, elle utilise aussi S800 à $BFF ; les caractères de rang pair sont alors stockés de la page $4 à la page $7, les autres étant placés entre les pages $8 el $B. - Pour les graphiques. Commence en page $20.
Ex�cule le programme commençanl en n SallIe a l"oclel n
V même syntaxe que M
Recherche l"eKistence d'un octel enlre m et n Copie ta lone comprise entre m et p a paMir de n
(- VeTily)
U R W
b\oc<bull.buI2R bloc<bufl.bul2W
Jump en 3FS POLI! routine L11i1iSllteuT (Use.-) Transl�re L1ne zone disque en zone mémoire Fait l"opéralion inverse. AUenllon : o�Talion polenliellement dangereuse !
bull et bLl/2 désignent le d�bul el la fin du buller de données_ m. n et p som des adresses en hexadécimal
Routines moniteur Les débuts de chaque routine sont données en hexadécimal ; celles-ci sont nommées d'après la correspondance qu'elles ont avec celles de l'Apple Il .
F9AE - PRBYTE (print a hexadecimal digit) envoie le contenu de l'accumulateur sur l'organe de sortie
F9B7 - PRHEX envoie le quartet bas de l'accumulateur sur l'organe de sortie
FB7D - HDME FBAF - CROUT1 (return with
cJear) nettoie l'écran à partir de la position cou-
rante du curseur. puis a p p e l l e CROUT (., retour chariot)
FC06 - COUT 1 envoie le caraclère qui esl dans l'accumulateur.
FCD5 - GETLN: collecte une ligne de 80 caractères
FD07 - CROUT envoie un retour chariot
FDQC - KEYIN Iii le clavier de I"Apple fil
FD60 - RDKEY : traite le caractère saisi au clavier
Clefs Le préfixe .. e ,. est mis pour Escape.
e.L : nettoie fin de ligne
(e.E en A Il) e. P : nettoie bas de l'écran
(e.F en A 11) à partir du curseur
e.S : Home e.flèche : déplpcement dans le sens
de la flèche e.8 : passage en 80 colonnes e.4 : passage en 40 colonnes
(pour sortir du r1"'IQde Escape, taper deux fois d'affilée sur Escape).
Nous /erminons ici cette première présentation, remettant à un autre article une analyse de la structure du SOS. Bien entendu, le litre de cet article vous indique la façon d'obtenir le mode moniteur. II est difficile de le découvrir par tâtonnements!
Pom's nO 7
Cryptographie à clef publique
Le programme d-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'agît de l'implémentation sur Apple 11 en Pascal d'un système de cryptographie à clef publique dont nous pouvons assurer l'inviolabilité même avec J'aide des plus puissants ordinateurs. Pour l'utiliser, il n'est pas nécessaire de connaître le langage Pascal, mais il faut savoir se servir du SYSTEM.EDlTOR et du SYSTEM FILER.
Cryptosystème à clef publique Dans un cryptasyslème conventionnel, l'expéditeur et le destinataire du message pos�denl lous deux une clef secrète (c'est-à-dire un ensemble de paramètres, habituellement des grands nombres choisis au hasard) permettant d'exécuter l'algorithme de codage du message par l'expéditeur et celui de décodage par le destinataire. Ce message, une fois codé, peut être transmis par un moyen de communication non secret, comme la radio. II 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 sûrs, afin de ne pas être interceptée.
Dans un cryptosystème à clef révélée (ou publique), on n'a pas besoin d'un canal secret pour distribuer les clefs. Au contraire, chaque utilisateur possède deux clefs: une clef de codage qu'il rend publique et une clef de décodage privée. L'expéditeur code donc le message avec la clef publique du destinataire, qui le décode avec sa clef privée. L'inviolabilité réside dans le fait qu'on déduit très facilement par le calcul la clef publique à partir de la clef privée alors que l'inverse exigerait des milliers d'années de calcul sur ordinateur, voire plus! C'est ce qu'on appelle une fonction à sens unique et à gâche : ce calcul inverse ne peut se faire qu'en connaissant une information secrète, la gâche de la fonction
Pom's nO 7
Olivier Herz
(ISYSTEHE Ctt1PLET DE CRYPTOGRAPHI E A CLEF PUBL! QUEU (I�C (C) OLIVIER HERZ OCTOBRE 1992 POUR POH'SI) PROGRAH CRYPTOGRAPHIE; USES APPlESTUFF; VAR CI:J11I!\t\IDE: CHAR;
PROCEDURE MENU; CONST TAILLE -187;
LONGUEUR =36; TYPE ENTIER EINTEGERILONGUEURl;
CHO!DECA =SET OF CHAR; VAR BS,CR :CHAR;
NOM ;STRINGI II'NFACTEUR, BASE ,FACTEUR CLEF PUBLIQUE PRIVEE CODE,CLAIR MODTAB
:ENTIER; :ARRAYIL .TAILLEI OF ENTIER; :TEXT; :FILE OF ENTIER; :TEXT; :ARRAYIl_.LONGUEURJ OF ENTIER;
(111111111111111111111111111111111111) (1 PROCEDURES HABITUELLES COURANTES 1) (1 MERCI MICHEL CRIMONT! 1) (111111111111111111111111111111111111) PROCEDURE MESSAGE() :INTEGERj S;STRING); BEGIN GOTOXY(8,I); WRITE<S,CHR(II» END;
FLNCTION PRENCAR<Bc:t>ISET:CHOIDECA) :CHARi VAR CH :CHAR; BEGIN
REPEAT READ<KEYBOARD,CH) 1 IF EOLN(KEYBOARD) THEN CHI-CR; IF NOT <CH IN BONSET> THEN WRITE(CHR(7»
EL SE IF CH IN(' '.,'l'J THEN WRJTE(CH) UNTIL CH IN BONSET; PRENCAR; -CH
END;
PROCEDURE OUT<S:STRING); VAR CH :CHf:lIRj BEGIN
CLOSE(PRIVEE); CLOSE(PUBLIQUE); CLOSE(CODE); CLOSE<CLAIR); PAGE(OUTPUT) j HESSAGE(18,S>; WRITE(CHR(7)}; HESSAGE(I�,' APPUYEZ SUR (RETURN)') 1 CH:'"'PRENCAR([CRl) 1 E)(!T(MENU>
END,
PROCEDURE SORTIE; BEGIN OUT('CLEF OU MESSAGE NON VALIDE') END,
PROCEDURE DEHORS; BEGIN OUT('TITRE OU LECTEUR NON VALIDE') ENO;
PROCEDURE PRENENTIER(S:STRING; VAR ENT:ENTIER>; VAR 1 :l __ TAILLE; BEGIN
ENTI=8; IF (LENGTH(S)=8) OR (LENGTH<S» 36) THEN SORTIE; FOR 1:-1 TO LENGTH(S> 00 BEGIN
IF NOT (S[11 IN ('8' . . '9']) THEN SORTIE; ENT :-Etin! 18+ <ORD( S[ 1 J) -48)
END EN�;
PROCEDURE NOMFICHIER(SISTRING; J:INTEGER) i VAR SI :STRING[ Il;
BONSET :CHOIDECAj BEGIN
CLOSE<PRIVEE); CLOSE(PUBLIQUE); CLOSE<COOE); CLOSE(CLAIR);
7
8
La méthode Les systèmes cryptographiques actuels tendent de plus en plus il utiliser des problèmes dits de type NP (non polynomiaux) caractérisés par le fait que le nombre d'opérations nécessaires à leur résolution croît comme une fonction exponentielle, et non polynomiale. de leur taille. Noire programme utilise un cryptosystème basé sur le problème NP de l'empilement: étant donné n jetons de hauteurs respectives Al An et une hauteur C, corriment peut-on obtenir C en empilant un sous-ensemble de ces n jetons? On ne cannait actueHemenl pas d'autre solution que la recherche systématique de tous les empilements possibles (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 à la somme des hauteurs de ceux qui le précèdent (i.e. Ai somme de 1 à il des Ak. Il suffit alors pour le résoudre d'essayer de soustraire de C·le dernier jeton ; si c'est impossible, on essaye l'avant-dernier, etc. jusqu'à ce que l'on y arrive ; puis l'on recommence le processus avec le résultat de la soustraction, etc . . . On parvient ainsi à la solution en n opérations au plus. On conçoit donc que l'on utilisera comme clef privée les jetons d'un problème facile et comme clef publique ceux d'un problème difficile.
Explication des calculs On note BI . . . Bp les" hauteurs ,. du "problème facile • de TAiLLE n ; soient M un très grand nombre (la BASE) supérieur à la somme des Biet F (le FACTEUR) inférieur à M. F doit être premier avec M afin que l'on puisse trouver son inverse modulo M (l'INVFACTEUR E, lei que E.F = l modulo M) . Ceci constitue la clef privée et la gâche est formée de M et de E. On calcule alors les n" hauteurs ,. Al . . . An du" problème difficile,. par a formule Ai -(BiFl moduloM ; les Ai 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 à 96, ont été remises en majus-
PAGE(OUTPUT); MESSAGE(18.S); SI:=' '; NOM:=" ; BCNSET : = ( ' 8' • . '9' , 'A' • . 'Z' , ' a' . • '%' , '.' , ' : ' l j REPEAT
IF LENGTH(NOH)=8 THEN Sil Il:�PRENCAR(BCNSET) ELSE IF LENGTH(NOM)zI THEN SI(lllzPRENCAR«(CR,BS])
ELSE Slfll:-PRENCAR(BCNSET+(CR,BS1) 1 IF 51(1] IN BONSEr THEN NOM:=CONCAT(NOH,SI)
ELSE IF SI(11-BS THEN BEGIN I-IRITE(BS,' ',BS) j OELETE(NOH.LENGTH(NOH>,!>
END lIiTt L SI[ ll"CR; IF POS('.',NOH)-8 THEN NOH,-CONCAT('.4:'.NOH>; IF LENGTH(NOH)}I THEN NOH:-COPY(NOH,I,I)
END;
FUNCTION PLUSGRANO(A,B:ENTIER):BOOLEANj VAR U,V :STRING; BEGIN
STR(A.U); STR(B,V>; IF LENGTH(U)}LENGTH(V) THEN PLUSGRANO:=TRUE
ELSE IF LENGTH(U){LENGTH(V) THEN PLUSGRANO,zFALSE ELSE PLUSGRANO:=U}V
END;
FUNCTICN EGAL(A,B:ENTIER) IBOOLEANj VAR U,V :STRING; BEGIN STR(A,U); STR{B,V)j EGALI-U-V END;
FUNCTION RNO:INTEGER; BEGIN RNO:-RANDOH DIV 16384 END;
PROCEDURE ECRIS(I:INTEGER) i BEGIN WRITE('.'); IF I�TAILLE DIV 2 THEN WRITELN END;
PROCEDURE FAITMODTAB(�:�JER); VAR 1 :l .. LONGUEUR; BEGIN
FOR 11-1 TO LONGUEUR DO BEGIN
MODTAB[l]:-�-(� DIV BASE)�BASE; ENT:=19�MODTAB(I] END
END;
PROCEDURE MODULO(VAR �:�lER); UAR 1 :I .. LONGUEUR;
S ISTRING; BEGIN
STR(�,S)I �:-8j FOR l:s 1 TO LENGTH(S) DO
ENTI=ENT+(ORD(S[I])-4B)�HODTAB[LENGTH(S)+1-I); ENT:-ENT-(� DIV BASE)�BASE
END;
(nnnn��) (� CODAGE lE> (nnnnn)
PROCEDURE UAR I,J,K
CH
CODAGE 1
S BIT ENT
: INTEGER; : CHARI ISTRING; lARRAY(9 .. 63,1 • • 6]
:ENTIERô
BEGIN (�CODAGE�)
OF 8 .. 1;
NOHFICHIER('NOM DU CORRESPONDANT: ',13); (�$I-�)
RESET(PUBLIQUE,CONCAT(NOH,'.T(XT'» 1 IF IORESULT{}8 THEN DEHORS; O!$I+�)
PAGE(OUTPUT); WRITELN('LECTURE DE LA CLEF PUBLIQUE'); FOR 1:-1 TO TAILLE DO BEGIN
IF EOF{PUBLIQUE) THEN SORTIE; ECRIS<I); READLN(PUBLIQUE,S) i PRENENTIER(S,CLEF(I)
END; NOMFtCHIER('NOM DU MESSAGEI ;,11); n$I-�)
cules et les caractères de contrôle, de code inférieur à 32. ont été rem· placés par des espaces, sauf le relour chariot, de code 13, remplacé par le code 95 qui représente un caractère inaccessible au clavier et donc peu usité. On découpe le message en groupes successifs de n bits Xl . . . Xn- Si le dernier groupe contient moins de n bits, on le complète par des bits aléatoires. Le codage consiste à calculer pour chaque groupe la hauteur C, somme de 1 à n des �Xi' Peur décoder, on commence par calculer D - C.E modulo M, puiS l'on résoud le problème d'empilement facile avec les Bi de façon à trouver les n bits Y li"' y n tels que D soit la somme des iVi- Or on voit aisément que les Yi sont nécessairement égaux aux Xi ; ils permettent donc de reconstituer le texle original (en n'oubliant pas de remplacer le caractère de code ASClI 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éjà 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 esl un fichier de type DATA contenant des grands entiers (afin d'éviter que des indiscrets ne la lisent), la clef publique et les messages codé el clair sonl 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 chaînes de caractères) .
Le programme est en fait une grande procédure (MENU) destinée à permettre le retour au menu en cas d'erreur par une instruction EXIT (voir les procédures SORTIE, DEHORS et OUT). Les procédures ou fonctions MESSAGES et PREN· CAR sont classiques et RND fournit un bit aléatoire. PRENEN'UER fait l'inverse 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 automatiquement (.TEXT et .DATA pour les
Pom's nO 7
RESET(CLAIR,CONCATCNOM,'.B,TEXT'» ; IF IORESULTm8 THEN REWRITE<COOE,CONCATCNOM,'.I.TEXT'» ; IF IORESULT(>8 THEN DEHORS; <ISI+II) FOR 1:�8 TO 63 DO BEGIN
K:-l; FOR J:-I TO 6 DO BEGIN BIT{I,Jl:-K HOD 2; K:-K DIV 2 END
END; PAGECOUTPUT}j WRITELNC'COOAGE'}; 1:-TAI.LLEj ENT:-8j REPEAT
IF EOLN<CLAIR) THEN BEGIN REAOUN<CLAIR)1 WRITEUNI Kle63 END ELSE BEGIN
READ<CLAIR,CH) j K:-ORO<CH)-32j IF K(8 THEN K:-Bi IF K>63 THEN KI-K-32, WRITE(CHR<K+32»
END; FOR J:=6 OOWNTO 1 DO BEGIN
ENT:-ENT+CLEFtllIlBIT(K,J11 Il,,1-1; IF 1=8 THEN BEGIN
END;
STR<ENT,S); WRITEUN<CODE,S); Il-TAILLE; [NT1-8
END
IF (EOF(CLAIR» ,:::>ND (JOTAILLE) THEN BEGIN
REPEAT ENT:-ENT+CLEFI1 lliRNDI 1 1-1-1 UNTIL 1-81
Suite du listing page 11
Programme VÉRIFICATION
Suite et fin de t'article
Effacement du directory en Pascal Pages 59·60
1
9
10
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 indiquer le numéro du drive et non le nom de la disquette) . PLUSGRAND et EGAL comparent deux grands entiers (en théorie, rien n'empêche de comparer deux grands entiers comme on le fait avec des entiers ou des réels, mais en pratique cela produit des erreurs et des'" plantages. à l'exécution; cette cause d'erreurs ne fut pas évidente à découvrir et reste mystérieuse 1). fA1TMODTAB et MODULO permettent de calculer les expressions Bi .F modulo M et C.E modulo M (alors que les poduits Bi .F et C.E excèdent les 36 chiffres) grâce au tableau MODTAB qui contient les valeurs modulo M des produits de F ou E par les puissances successives de la. Les procédures CODAGE et DECODAGE comportent deux parties' la demande des noms des fichiers puis le codage ou le décodage proprement dits. Si l'opération de décodage rencontre un problème d'empilement ne pouvant être résolu (mauvaise 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-l. La méthode utilisée est la dichotomie qui, bien que longue d'exécution, est la plus facile à mettre en œuvre avec des grands entiers. La procédure récursive BEZOUT permet de résoudre par l'algorithme d'EUCLIDE l'équation de BEZOUT AX - BV = 1 quand A<B. Elle est utilisée ici avec A = F, X - E, B - M el Y = K où EF = KM + 1 . La procédure GENERAT[ON commence par calculer 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 [a clef publique .
Notons que la constante T A[LLE vaut 107, ce qui est à peu près [e maximum que l'on puisse prendre avec ce programme. Mais on peut parfaitement utiliser ce programme avec une v.aleur plus faible . Remarquons que le calcul exhaustif de tous [es empilements lorsq-u'on a 107 jetons (i.e. [e décodage de Cl prendrait avec un ordinateur étudiant 1000 milliards d'empilements par seconde (ne révons pas 1) 5000 milliards d'années! Remar-
quons encore que 107 n 'est pas multiple de 6, le nombre de bits par caractères , ce qui permet d'embrouiller encore plus un éventuel décrypteur en codant ceriaines lettres à cheval sur deux empilements. On peul prendre une T A[LLE multiple de 6: chaque empilement correspond alors exactement à T A[LLE/6 lettres, ce qui le rend autonome.
Mode d'emploi
Signalons tout d'abord que pour envoyer un fichier TEXT à un correspondant 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'i! soit édité et sauvé. Dans un premier temps, chaque utilisateur du système CCP fabrique un système de clefs. M. Dupont par exemple répondra G et DUPONT (ou bien # 5 : DUPONT) au programme CCP et l'Apple fabriquera sur la même disquette les fichiers DUPONT.TEXT (clef publique qu'il devra fournir à ses interlocuteurs) et DUPONT.DATA (clef privée qu'il devra garder sur une disquette dans un coffre à l'abri) .
Pour envoyer le message MISSIVE à
M. Durand , M. Qubois commencera par éditer son texte (en y glissant 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 :DURANDl et MISSIVE (ou bien # 5 .MISSIVE) au programme CCP qui fabriquera le ficnier codé MISSIVE. 1 ,TEXT {sur la disquette où se trouve MISSIVE.O.TEXT} , qui devra parvenir à M. 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 :MISSIVEl au programme CCP qui recréera pour lUI le fichier MISSIVE.O.TEXT (sur la disquette où se trouve MISSIVE LTEXTl. Notons que pendant les opérations de codage et de décodage. le message en clair apparaît sur l'écran au fur et à mesure de sa lecture ou de son écriture.
En conclusion, nous avons là un système cryptographique très simple d'emploi et parfaitement sûr. Les temps d'exécution sont de 6 minutes pour écrire le système de clefs, d'environ 9 cps {caractères par seconde} pendant le codage et d'environ 5 cps pendant le décodage. Mais ces temps diminuent fortement avec la constante TAILLE et il y a un compromis à trouver entre la vitesse d'exécution et la sécurité du codage. Remarquons que le cryptosystème utilisé ne permet malheureusement pas l'authentification de l'expéditeur, contrairement à un système plus récent, développé au M.LT., dans lequel les clefs publique et privée ont des rôles symétriques. Mais ce dernier système est pratiquement impossible à mettre en œuvre sur Apple Il car il utilise de très grands nombres premiers.
Bibliographie
« La guerre des codes secrets" par David Kahn chez Inter Edilions est un exceHent ouvrage sur l'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 à clef révélée », écrit par l'un des auteurs du système à empilement.
Pom's nO 7
STR(ENT,S) ; WRITELN(CODE , S ) ; END
UNTIL EOF(CLAIR) ; CLOSE(CLAIR) ; CLOSE(CODE,LOCK)
END; (lCODAGH)
(UUUUUU) U DECODAGE l) (HHHHHH)
PROCEDURE VAR I,J,K
S ENT
DECODAGE; : INTEGER; :STRING; :ENTIERj
BEGIN (lDECODAGEl) NOMFICHIER( 'VOTRE NCI'1: ',13) ; ( UI-l) RESET(PRIVEE,CONCAT(NOM,' . DATA'» ; IF IORESULT(>9 THEN DEHORS; ( :';$1+:';) PAGE(OUTPUT); WRlTELN('LECTURE DE LA CLEF PRIVEE') ; FOR 1:=1 Ta TAILLE DO BEGIN
IF EOF(PRIVEE> THEN SORTIE; ECRIS(l) ; CLEF[IJ:=PRIVEEA; GET(PRIVEE)
END; IF EOF(PRIVEE) THEN SORTIE; BASE:=PRIVEEA; GET(PR[VEE) ; IF EOF(PRIVEE) THEN SORTIE; INVFACTEUR:=PRIVEEA; NOMFICHIER( 'NOM DU MESSAGE: ' , Ill; (l$I-l) RESET(CODE,CONCAT(NCI'1,'.J.TEXT�» ; IF IORESULT=9 THEN REWRITE(CLAIR,CONCAT(NOM,' . 9.TEXT'» ; IF IORESULT(>9 THEN DEHORS; (UIHl FAITMODTAB(INVFACTEUR) ; PAGE(OUTPUT) ; WRITELN(�DECODAGE�) j J:=9; K:=9 j REPEAT
READLN(CODE , S ) ; PRENENTIER( S , ENT) ; MODULO(ENT)j FOR I:=TAILLE DOWNTO 1 DO BEGIN
J:=J+ l ; K:=2�K+ l ; IF PLUSGRAND(CLEF[IJ,ENTl THEN K:=K-I
ELSE ENT:=ENT-CLEF[IJ; IF J=6 THEN BEGIN
IF K=63 THEN BEGIN WRITELN; WRITELN(CLAIR) END ELSE BEGIN WRITE(CHR(K+32l) ; WRITE(CLAIR,CHR(K+32» ENO;
J:=9 j K:=9 END
END; IF NOT EGAL(ENT , 9 ) THEN SORTIE
UNTIL EOF(CODEl; CLOSE(CODEl; CLOSE(CLAIR,LOCK)
END; (lDECODAGEl)
(llllllllllllllllllllllllll (l GENERATION D'UNE CLEF l) (lllllllllllllllllllllllll)
Pom's nO 7 1 1
12
PROCEDURE VAR 1
S B�
GENERAT J CN , : 1 .. TAILLE;
:STRINGj :BOOL�;
INF, SUP , BIDON :ENTIER j
PROCEOURE ALEATOIRE(VAR ENT:ENTIER) ; VAR 1 :1 . • 4;
A,e :ENTIERj BEGIN
A:=INF; B:=SUP; REPEAT
ENT:=(A+B) DIV 2; IF NOT EGAL(A+B , 2lENT) THEN ENT:=ENT+RND; IF RND=8 THEN B:�ENT ELSE A:�ENT
UNTIL PLUSGRANO(3,B-A)j ENT:=A; IF EGAL(2,B-A) THEN ENT:=ENT+RND
END;
PROCEDURE BEZOUT(A,B:ENTIER; VAR X,Y:ENTIER); VAR a,R :ENTIER j BEGIN
X:=8; Y:=9; IF B� THEN BEGIN
Q:=8 DIV A; IF EGAL(B,QXA) THEN IF EGAL(A , I) THEN-
BEGIN Y:�I; X:�B+I END ELSE B�:�FALSE
ELSE BEGIN B:=B-QlAj R:=A DIV Bi IF EGAL(A,RXB) THEN IF EGAL(B,I) THEN
ELSE BEGIN
BEGIN Y:�-I; X:�HQXY END ELSE B�:�FALSE
A:=A-RlBj BE20UT(A , B,X , Y); Y:=Y+RlXj X:=X+QlY
END END;
END
BEGIN (XGENERATI�X)
END
NOHFICHIER( 'VOTRE NOt1: ',13>; (l$1 -X) REWRITE(PRIVEE, CONCAT(NOM,' .DATA'» ; IF IORESULT(>8 THEN DEHORS; ( X$I +X) SUP:=18; INF:=3; PAGE(OUTPUT); WRITELN('ECRITURE DE LA CLEF PRIVEE'); FOR I:�I TO TAILLE DO BEGIN
ALEATOIRE( CLEFII1); PRIVEEA:�CLEFII1; PUT(PRIVEE); ECRIS (1 ) ; INF:�INF+CLEFII1; SUP:�2XSUP
END; INF:=SUP; SUP:=2XSUP; ALEATOIRE(BASE); PRIVEEA:�BASE; PUT(PRIVEE); WRITE ( '. ') ; INF:=BASE DIV 2; SUP:=8ASEj
Pom's nO 7
REPEAT ALEATOIRE(FACTEUR); WRITE(' .'); BON:=TRUE; BEZOUT(FACTEUR,BASE,INVFACTEUR,BIDON)
lNTIL B�; PRIVEE':=INVFACTEUR; PUT(PRIVEE); CLOSE(PRIVEE,LOCK); (l$l-l) REWRITE(PUBLIQUE,CONCAT(NOH,'.TEXT'» j IF IORESULT()9 THEN DEHORS; (:':$1 +30 WRITELN; WRITELNj WRITELN('ECRITURE DE LA CLEF PUBLIQUE') i FAITHODTAB(FACTEUR) ; FOR 1 :=1 TO TAILLE DO BEGIN
MODULO(CLEFIII); ECRIS(I); STR(CLEF(ll,S); WRITELN(PUBLIQUE,S)
END; CLOSE(PUBLIQUE,LOCK)
END; (lGENERATIONl)
BEGIN (lMENUl) CR:=CHR(13); BS:=CHR(S); PAGE(OUTPUT>; RANDOHIZEj MESSAGE(2,' OLIVIER HERZ PRESeNTE C.C.P.'); HESSAGE(5,' SYSTEME COMPLET DE'); MESSAGE(7,' CRYPTOGRAPHIE A CLEF PUBLIQUE.'); MESSAGE(II,' G)ENERER VOTRE SYSTEME DE CLEFS'); MESSAGE( 13,' C) ODER UN MESSAGE') ; MESSAGE(15,' D)ECODER UN MESSAGE'); MESSAGE(17,' Q)UITTER LE SYSTEME C.C.P.'); MESSAGE(28,' VOTRE CHOIX:') j C01'1ANDE:=PREl'IICAR(['G' ,'e" ,'0' ,'Q; ,'9" ,'e' ,'d' ,'q']); CASE CCH1ANDE OF
.. G' " 9' : GENERATItIN; 'e' ,'c' : CODAGE j 'D','d':DECOOAGE
END END; OEMENWO
BEGIN (lCRYPTOGRAPHIEl) REPEAT MENU UNTIL CCH1ANDE IN l'Q','q'l
END. <lCRYPTOGRAPHIEl)
Micromos L'avance technologique Carte mémoire 256 Ka pour
APPLE II
Laboratoire: 17, Plateau de la Ravinière - 95520 OSNY - Tél. (3) 032-16-71 - (3) 032-37-78
Pom's nO 7 :3
Etudiants, lycéens, lisez
L ycéens, étudiants, enseignants, parents: l'équipe de la revue UORDINATEUR INDIVIDUEL publie un numéro spécial
hors-série qui fait le point sur l'ordinateur à l'école. • Un ordinateur dans une classe? • Comment l'enseignement peut-il être facilité par un
ordinateur individuel? • A partir de quel âge peut-on découvrir l'informatique? • Quelle aide un ordinateur familial apporte-t-i1 sur le plan
éducatif? • Comment créer et gérer un club d'informatique individuelle
dans un établissement scolaire ou universitaire? Toutes les réponses à ces questions (et à d'autres!) figurent dans ce dossier indispensable réalisé à partir d'une synthèse
des meilleurs articles parus dans L'ORDINATEUR INDIVIDUEL.
En 1983, il n'est plus raisonnable d'ignorer le formidable outil qu'est l'ordinateur. Pour être mieux informé sur ce domaine,
lisez UORDINATEUR ET UÉCOLE.
Graphique, quand tu nous tiens . . .
On peut reprocher aujou"rd'hui à l'Apple Il un écran graphique manquant de finesse : la nouvelle génération de micro-ordinateurs exprime souvent ses aptitudes graphiques en centaines de mi!liers 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 Il était le phénix des hôtes de ces vergers, car, à ce prix, les possibilités graphiques étaient rares.
L'Apple II 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 voilà bien armés. C'est le cas avec J'EPSON MX FT munie de l'interface graphique EPSON pour Apple [1. Quelles sont les possibilités offertes ?
D'abord, celles qu'offrent [a plupart des imprimantes graphiques moderne, - 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 à côte du contenu 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-là seulement (ex. 2) ; - opération logique « OU inclusif ,. (somme logique) donnant ['impression 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 l'impression de tous les points qui figurent sur l'un des deux graphes, et pas sur l'autre (ex . 4).
Ces opérations sont bien sûr compatib[es avec les précédentes.
Il existe également une possibilité de n'éditer qu'une fraction de graphe, désignée pàr sa position sur l'écran, en référence aux lignes et colonnes
Pom's nO 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 possibilités (à ["exception de la dernière citée). J1 permet aussi - de visualiser le ou les graphes choisis, de permuter les de\.lx pages. de revenir au menu , - de choisir entre l'impression de graphes déjà existants en machine (il peut alors être utilisé en sousprogramme d'un programme graphique) et la recherche sur disques de graphes préenregistrés.
Mais tout ceci n'est-il pas un jeu de l'esprit ? 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, • des transparents pour rétroprojecteur.
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 à un graphe entre deux versions successives (ex. 6) L'imagination des «dingues du graphe .. é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 {fe, et autres nouveautés Apple. conserveront-ils cette double page graphique ?
Guy Mathieu
Programme et commentaires 1 à 900 : paramètres d'initialisation et tracés - tests sur pages 1 et 2. 200 : affichage des pages graphiques. 5 000 : déroulement du questionnement. 6 000 : mise en route de l'impression . 1 0 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 à 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 à ["utilisateur . Remarque : si l'on répond 1 (COTE A COTE) il la troisi€me question. il faudra ultérieurement penser â placer les graphes dans le deux pages pour qu 'ils se présentent dans I"ordre convenable il l'édition
Exemple d'utilisation Nous cherchons à imprimer côte à côte deux graphes sauvés sur une disquette sous les nom CHATS 1 et CHATS 2. Il faut exécuter le programme puis placer la disquette dans le lecteur et suivre la séquence suivante
Questioll Répollse Choix
1 3 Les deux pag"s 2 1 NOlmal 3 1 Côte S côte 4 N Pas en mémoire
Ensuite, choisir l'option CATALOGUE, amener face à 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 (impression).
15
16
I l
Exemple 1 - Page 1 .
. -
, - -
•
•
Exemple 2 - Page l "ET" 2.
I l
- - ,
. . . .
• • - 0"
Exemple 1 - Page 2.
•
Exemple 3 - Page l "OU (inc1usif)" page 2.
Exemple 4 - Page l "OU (exclusif)" page 2.
Porn's nO 7
Exemple 5 : Sécurité Incendie
j B a l i MIli;IH 0
< 1 B o l ; •• n l B 0 0
Page 1 - Sécurité Incendie . Plan d'évacuation des agents.
j B a l i r u n l R 1 1 1 B a l ; •• n l B 1 0 0
Page 2 - Sécurité Incendie.
D
D
Circulation des véhicules de secours.
j B a l i me n l A
1 B a l ; •• n , B 0 D 0
Page l "ET' Page 2 - Sécurité Incendie. Identification des "points noirs".
Pom's nO 7
L 1
I L <
1
L 1
Logiciel traceur
de courbes Votre APPLE I l sait aussi dessiner sur un traceur de courbes, lTI!Iis encore lui faut·il un logiciel puissant pour faciliter votre travail. Notre logiciel. utilisable en Basic, vous permet de composar facilement vos graphiques comme sur un traceur da haut de gamma. Avec une programmation de quelques lignes, nos sous-programmes traceront pour vous : droiœ" courbes. histogrammes, IIXes, grilles, titres, annota· tians, C8fC1es, rectangles, flèches, etc ...
Tl"8C8UfS au format A3 et A4 HOUSTON STAOBE BAVANS CALCQMP
�. NFORMATIQUE
MIN�����H: v�i��°ci 'SPOSITION
OE M�������t/ci��g��CIELS
MINIGRAPHE MICROINFORMATIQUE
263, Buulevard Jean-Jaurès, 92 1 00 Boulogne Tél 608.44 31
17
Question 1
l - Page l
Z - Page Z
3 - Les 2
Question 2
Normal
Inverse
ÉTUDIE
FORME RÉAUSE LIVRE
Question 3 Question 4
Format normal
Format double
Dessin en mémoire
Côte à côte Catalogue ..f et choix Dessi� non en memOlre
Intersection lSi 2 pagesJ Union
Différence
Graphe du mode d'emploi
• opportunité d'utilisation de l'outil micro-Informatique
Menu
1 Examen de la page 1
2 Examen de la -page Z
'ESC' Menu
'RETURN' Impression
Retour à la question 4
• intégration entre informatique traditionnelle et personnelle • politique de la communication dans l'entreprise
• formation â l'utilisation de la micro-informatique
• réalisation de programmes â la demande
• 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·informalique doit s'adapter à l'homme, et non l'inverse, L'outil micro-informatique rêpond particuliêrement bien à 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
1 ogma s.a. Centre La Châtaigneraie - 29, avenue de Versailles - 78170 La-Celle-St-Cloud - Tél. . (3) 918.13.07
18 Porn's nO 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 nO 7
1 LCI1EH; 25999 2 TEXT 3 HCI1E 5 DD ". PEEK < 49 1B5> ; I F DO :: 9 OR DO )
2 THEN DD = 1 19 Dt :: CHRS ( 4 ) : G$ ::
HRS ( 1 7) : ZERO$ :: HGR ; HCOLOR= 3
CHRS ( 7) : 12$ =
CHRS ( 8 )
FOR 1 :: 8 TO B9 STEP 1 9
c
20 30 35 HPLOT 1 , 1 TO 1 , 198 - 1 TO .27B - 1 , 1 9
8 - 1 T a 27B - 1 , 1 TO I t I 40 50
NEXT
.0
70 75
FOR 1 = - 19 TO 1 8 : HPLOT 139 . I , B 5 TO 139 • 1 , 1 8 5 : NEXT
HGR2 : HCOLOR= 3 : HPLOT 9 , 0 TO 8 , t98 TO 27B , 1 99 TO 27B , 9 TC 8 , 8
FOR 1 = 8 TO B8 STEP 18 HPLOT 1 39 , 1 TO 1 , 95 TO 139 , 198 - 1 T
o 27B - 1 , 95 TO 1 39 , 1 80 85
NEXT FOR 1 K - t9 TO 1 9 : HPLOT 139 + 1 , B
5 TO 139 + 1 , 1 9 5 : NEXT .0 200 2 1 0 2 15 220 250 5986 58 1 6 5826
GOTO 5886 REM PERt1UT . PAGES POKE - 1639 4 , 9 I F PAGE :: 1 THEN I F PAGE � 2 THEN RETURN
POKE POKE
REM HENU PRINCI PAL TEXT : HCI1E
- 1639 8 , 8 - 16299 , 8
VTAB 1 : PRINT " I < ERE PAGE) - 2 < EHE PAGE) - 3<LES DEUX) REPONDEZ PAR 1 , 2 OU 3 S . V . P . " j
5936 GET Z$ 5848 P = VAL (Z$) 1 I F P ( 1 OR P ) 3 TH
EN PRINT 6$: GOTO 58 18 5858 5 1 9 6
PRINT VTAB 4 : PRINT " 1 (NORMAL) - 2 ( INV
ERSE) REPCI'-IDEZ PAR 1 OU 2 S . V . P . " ;
5 1 1 8 GET Z$ 5128 1 :: VAL < Z$) : 1 F 1 ( 1 OR 1 ) 2 TH
EN PRINT 0$ : GOTO 5 1 8 8 5136 1 :: < 1 - 1 ) li: 32 5148 PRINT 5286 I F P ( 3 THEN 5308 5219 VTAB 7 : PRINT " 1 ( COTE A COTE) - 2
( INTERSECT ION> - 3 (UNION) -4 < D I FFERENCE) REP(J\,I DEZ PAR l , 2 , 3 OU 4 S . V . P . " ;
5229 GET Z$ 5239 L - VAL < Z$) : I F L ( 1 OR L ) 4 TH
EN PRINT OS : GOTO 5219 5249 L :: <L - 1> li: 4 : I F L - 1 2 THEN L
5258 5398 5318
5328 5338
5348 5358 5486 5588 5518
5512
16 PRINT I F P :: 3 AND L - 0 THEN 5489 VTAB I l : PRINT " 1 < FORMAT NORMAiU
- 2 < FORMAT DOUBLE) REPONDEZ PA R I OU 2 S . V . P . " ;
GET Z$ 0 :: VAL < Z$) : I F D ( 1 OR 0 ) 2 TH
EN PRINT 6$ : GOTO 53 1 8 o :: ( 0 - 1 ) li: 64
PRINT COEFF - P + L + + D
VTAB 15 IF P ( 3 THEN PRINT " L E DESS I N ES
T- I L DEJA EN MEMOIRE?" I F P :: 3 THEN PRINT "LES DESSINS
Set-rr- I LS DEJA EN HEMOIRE?"
19
20
5515
5529 5539
5548 5:559 5569 5:578 5575 5599 5598 5699
5 6 1 8
5628
:5639
:5649
5658
5669 5799
-
PRINT " REPONDEZ PAR 0 OU N S . V . P .. " ;
GET Z. I F Z. < } " 0 " AND Z. < } "N" THE
N PRINT 0$ : GOTO 55ge PRINT I F Z. - "a" THEN 56e9 GOSUB IUU PRINT a."BLOAD" ; Z Z. j " ,A.2888" IF P < 3 THEN 5699 GOSUB 18U8 PRINT a. " 8LOAD" j Z Z . j " ,A.4888" HOME : PRINT "VOUS D I SPOSEZ MAINTE
NANT DES COHHANDES SUIVANTES: " PRINT : PRINT " 1 OU 2 POUR FAI R
E APPARAI TRE SUR L' EC RAt-! t..t.IE DES 2 PAGES"
PRINT : PRINT " ' ESCAPE ' ER DU MODE GRAPHIQUE
MODE TEXTE (MENU) " PRINT : PRINT " ' RETURN'
ER L ' I MPRESS I ON " PRINT : PRINT " 9
GER EVENTUELLEMENT (OU LES) ORAPHE(S> "
POUR PASS AU
POUR lANC
POUR CHAN LE
PRINT : PRINT 1 PRINT "VOTRE CHOIX ? " i l OET Z.
H<J'tE PRINT
-
c:::J - -
- � -
da"o':'-,<I .<1 _ ( :;;Z", ) : F�J� \! "" .Il.: .... " .......... "_"' • • �,. ... . " ..... � .z _ """:<.'.'.N; Li7.7
c:J .. ,;.1.>0..""01,," .iu;!J= = y ;V"" • .,,..,d;'b .. "'., ,. ., .... , ... �.t ,,",' . .'OW"' d '''-''''0 �r , or ",,-,.!v,," • """ô""" Q� •
•• 1'0 .... . 'u''''''' . .... ptIqI • • "'I:ffO=O' .. ,h·ux! 08 • .'.'"""J;> "". ""Ol.� - ....... O�� �&q .� �. "" 0.' •. '"" .. ,,; :»r •
.�OI .. """"llI l!U.t.i( H a�U! lal''t.UIC • ": ''''0; ... h' ... .. . ,h� . .... n .. oJ �. o.:;:U-='�. ,o.=.:.nO<:. .
."",01 .� • .,...·0. �. ""p .,,,� ob '",,'uo "tu"'un ",i ,.,On·., u,!,.,.u ... ��=� ... .
.,.H, ... , .. -J= .. I -"!�,,�,, "".0, .... e • • Io::.l' ... ":.",,. .: ._ov •• .." .'".� ... ""ob .. 1 �.I,.v ,,,,,,,1a� n. ,,�.,"�Ub .,.,:..-.., •• � •• � .è�O"'" ="�Z etoO"l .Z;;�J' JJ �C .:n .:..! . _
o .,.,.,-"-,<1 ol - ( .. );,;." ) > ""';�� \< 6.( :>i.;.. ) 1 llI'Q:> d .H., • 'U"".,o�l .l.ü."!� .j'�l,.,:,.j� . . .=>;=ln..t" .""-"0' .b u"_ •. , .. .. .. ",ou. �� .
. ''''''U .• u:o .... .. """lI,,, .''':0'-0:0' .. ,ln.:::! �! .. ..... " ,,...,, .... 'H.to,WI _ "1�<>"q """ ."" -.. '''' .... : •. , '.'0."". ;,,: .
, .... v'"·o� ." .. ,a"" nU' " " ,,"..ob '.h' ... h.n� ."", " "j"'� ",.
- -
T :) • ! -
, ,
, , ,
5739 5749
5759
5769 5779 6888 68 1 8 68 12 68 15 6829 6838 6959
6968
68.18 6888
6898 6 1 8 8 leue 18848 18858
19955 19868 18865
18878
18888
18898 19895 18 lU
1 9 159 18289 18488
1 8 4 1 8
18428 18588 18699 38888 388 1 9 38838
39948 38858
38868 38878 39 188
IF ASC (Z.> - 13 THEN 6899 1 F ASC (Z.> = 27 THEN TEXT : HOM
E 1 GOTO S6U PAGE = VAL (Z.> : I F PAGE = t OR PA
GE = 2 THEN GOsue 299 : GOTO 5688 I F PAGE = 8 THEN 5568 PRINT G. I GOTO 56ge REM COHMANDE IHPRIMANTE PRINT a."PRl l " PRINT ZERQt, POKE 1 9 1 3 , COEFF PRINT a. PRINT M"PRI8" TEXT : HOME : PRINT ·VOULEZ-VOUS U
NE AUTRE IMPRESS I ON ? " PRINT � PRINT " ( REPONSE PAR 0 OU
N S . Y . P . ) " i GET Z. IF Z. = "N" THEN VTAB 1 8 : HTAe 1 8
: PRINT "AU REVOI R" : END I F Z. = " O · THEN 5888 PRINT 0$: GCTO 6858
REM CATALOG HOME : PRINT M" CATALOG , D " ;DD VTA8 1 : PRJNT "FLECHES -} ( - POU R DEPLACER LE CURSEUR JUSQU'AU NO M VOULU PUIS ' RETURN' (OU ' RETURN' SI LE NOM N' EST PAS AFFI CHE"
vv � 3 : HH ; 7 1 VTAB VV : HTAB HH GET Z.IZ = ASC ( Z.) I F Z '" 1 3 AND W ( 4 THEN HCI1E
PRINT ·VOUS POWEZ MA INTENANT CH ANGER DE DI SQUE " : GOSUB 39999 : GO TC 1 8 8 8 9 I F Z = 8 THEN W - VV - 1 : I F VV < 3 THEN W - 3 I F Z - 2 1 THEN W - VV + 1 : I F W
) 23 THEN VV '" 23 I F Z = 13 THEN 194ge VTAB W: HTAB HH I F Z < } 13 AND Z < } 8 AND Z <
} 2 1 THEN PRINT G. VTAB W : HTAB HH GOTO lU69 VTAB 1 : HTAB 1 : PRINT "AVANCER PN EC LA FLECHE -} JUSQU'A DEPAS-SER
LE NOM •
I NVERSE : VTAB 3: PRINT • PUIS ' R ETURN' " ; : NORMAL 1 PRINT "
VTAB W : HTAB HH INPUT ZZ • RETURN REM ATTOolTE POKE - 16368 , 8 VTAB 24: HTAB 5 : INVERSE : PRINT "BARRE D'ESPACEMENT POUR LA SUITE • 1 NORMAL I F PEEK ( - 16384> < '" 127 THEN
38858 POKE 1636B , 8 PRINT RETURN
Pam's nO 7
Le programme GRAPHLOG est une illustration de l'article de Guy Mathieu : c'est un petit programme assembleur très 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 troisième. Par page graphique, nous entendons ici les intervalles $2000.3FFF, $4000.5FFF " $6000.7FFF, étant entendu que seuls les deux premiers intervalles correspondent à des pages graphiques vidéo : pour voir la dernière, il faudra faire 2000 < 6000. 7FFFM ou 4000 < 6000. 7FFFM en mode moniteur. L'opération logique correspond au type graphique de Pascal, repris aussi par HAIFA dans Pom's 5. Si A et B désignent les
Exemples :
7 B 9 24 25
32 32 32 5 5
32 64 64 8 O . 64 32 96 14 6 .
Graphlog - Lisa 2.5
LST 2 ; 3 ;11111111111111111111111111111 4 ;1 1 5 ;1 II P1I1li1WtE IlEAl.ISE IH 1 6 ;1 IJ'EIlilTUJt LOOIIIIE SUl LIS 1 7 ;1 OCTETS lIES IIE\I( _S 1 8 Il IilW'IIIIlES El lET LE IIE- 1 9 ;1 SU, TAT iI'ItS IH 3EIf:. 1
18 il 1 I l ;1 (0 O. IIRI POUl POi'S 7 1 12 il 1 13 ;11111111111111111111111111111 14 i
Graphiques et logique Olivier Herz
points des pages sur lesquelles se réalise l'opération et C le résultat à mettre dans une troisième page (0 "" éteint, 1 = allumé), on obtient :
Ce TYPE s'applique aux bits des points de l'écran . En ce qui concerne les bits de couleur (le B� bit des octets de l'écran) . on applique un autre type (TYPCOL). Pour se servir de la routine, il suffit de POKEr aux adresses 7 à 9 les numéros des pages graphiques (à 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 à l'adresse où l'on a chargé cette routine relogeable .
TYPE -0
-
1 2 3 4 5 6 7 8 9
10 II 12 13 14 15
VALEUR DE C o
A NOR B A AND NOT B
NOT B NOT A AND B
NOT A A EOR B
A NAND B A AND B A - B
A A OR NOT B
B NOT A OR B
A OR B 1
En effectuant une copie d'écran graphique à partir des écrans ainsi engendrés, il vous est maintenant possible de faire tout ce que Guy Mathieu proposait aux possesseurs d'Epson.
négatif de la page HGR. Be bits compris
AND des pages HGR et HGR2 avec résultat en HGR2 et Be bits mis il. 0
OR de HGR2 et HGR : résultat dans la page "invisible" avec EOR des Be bits
23 � EPI IFE 2� lfIt3 El'l $Ff 25 ; 26 ll!G taIIB ;1'R06WItt: IlELIlGEIIIILE 27 œJ taIIB 28 ; 29 l1I\ 1191 38 STA LIIH 31 Ba.El.16 PII\ ;LIIKS 31 A �7: 32 Iff) ltC8 ;-WIR IIPPlESIFT 33 STA lr\SE ;-IIOOTlt€ DI $F417 � LSR 35 LSR 36 IB\ lr\SE 37 STA lr\SE 38 PIA
15 LIIK EPI 16 jllH DE l'ECMi 39 STA BASEt! 16 _1 EPI f7 jPRDIIERE IWE 4t AS!. 17 fW(2 El'l tl1 jŒt.tr:IDE PAŒ 41 AS!. 18 lWEl El'l f9 ;_ III RESU, TAT 42 AS!. 19 TYPE EPI fl8 ;TYPE POUl LIS POINTS � AIl. lr\SE'I 28 TYPCCL EPI fl9 ;TYPE POUl LI BIT lIE lllLElR � AS!. 21 lr\SE El'l fIE ;MllESSE lIE lA PIIII1IEIIE LIIK 45 lU. BASE+l 22 HOtI EPI IFD 46 AS!.
Pom's nO 7 2 1
22
47 ROI! 11\5[ 83 IHD "IF 48 lDY 139 B4 llI\ _3 49 BCUCIl Lj)\ M$[+ J ;PRE_lI� DES _SSl:S 85 STA BASE:+ t 58 IHD "IF 86 LM ltlt3 SI llI\ _1 87 STA (!I\SE), Y 52 STA 11\5[+1 88 DEY 53 LM (MS[) ,V 89 II'l IlClECIl 54 STA IfHl 91 IIEC LIIJjE 55 LM BASEt 1 91 LM LIIM 56 IN) "IF 92 DI' _ 57 lllA _2 93 lIE IIClE1I6 58 STA Q!ISE+I 94 lITS 59 LM (BASE) ,V 95 ; 68 STA lfH2 96 DOt "BSAIJE œAPtt.OO,M8e',l$88' 61 LIlX IS jllHS 61 A 81: 97 EN! 62 lICI.E1YP LM Il ;�IR WlIFA 63 AS!. IfHl i -ROOT IlE IXfRl NT Récapitulation 64 !IX II 6S AS!. 1888.871 66 AS!. 67 "1 ASl lfH2 1818- A9 BF 85 16 48 29 C8 85 68 !IX li 1888- lE 4A 4A 8 5 lE 85 lE 68 69 ASl 1811- 85 IF lA lA lA 26 IF lA 78 " 1 Cl'X IS 1818- U IF lA 66 lE AI li AS 71 lIE l2 1821- IF 29 IF 15 17 85 IF BI n IN) 1'tI'CIL. 1828- lE 85 FD AS IF 29 IF 15 73 a.C 1838- 18 85 IF BI lE 85 FE A2 74 OCC l3 1838- lB A9 Il 16 FD 9t 12 lA 7S "2 1N) 1'IPE 1841- lA 16 FE 9t 81 lA E8 18 76 a.c 1848- Dt 15 25 19 18 9t 13 25 n "3 BEg l4 1858- 18 18 FI Il 38 26 FF CA 78 SEC 1858- Dt llF AS IF 29 IF 15 19 79 "' ROI. ltlt3 1868- 85 IF AS FF 91 lE 88 11 88 IIEX 1868- 86 C4 16 AS 16 C9 FF Dt 81 lIE IIClE1'tl' 1878- 93 68 82 LM BASE+1
Hard Copy Seikosha Olivier Herz ,----------------------, Afin de compléter l'article de Guy Mathieu et celui sur « Graphiques et logique », voici un pelit programme en langage machine (écrit à mes débuts sur Apple) permettant d'ob!e· nir la copie d'écran graphique sur Une imprimante Seikosha.
Ne possédant pas d'assembleur à l'époque, j'avais écrit ce programme directement en langage machine. Il reste toutefois intéressant à publier car il est assez rapide et, d'autre part. les possesseurs de Seikosha n'ont certainement pas tous un tel programme à leur disposition.
La seule routine ROM utilisée est le WAIT $FCA8 ; le programme peut être utilisé par n'importe quel Apple.
,"
lit ,
Pom's nO 7
Hard Copy Seikosha
I U ST
5 REM I I I HARD COPY SEI KOSHA I I I 6 REM * l l COPYLEFT l** 7 REM III OL I V I ER HERZ - POM ' S I I I 1 8 TEXT , HOME , I NVERSE , VTAB 6 , PR I N
T ' I MPRESS I ON DES 2 PAGES HAUTE R ESOLUT I ON' , NORMAL
28 PRINT , PRINT , PRINT , PRINT ' VOULE Z-VOUS LA PAGE 1 OU 2 ? ' ;
38 GET M , I F A$ < > ' 1 " AND A$ < > . 2 ' THEN 38
48 PRI NT A$: POKE 28 , 29B: POKE 29 , 3 1 + 32 * ( ASC (M) - 48)
59 PRINT , PRINT 'VOULEZ -VOUS LA PAGE E NTI ERE ? - ;
69 GET A$ , IF A$ < > ' 0 ' AND M < > ' N ' THEN 68
79 PRINT A$ , POKE 24 , 8 , I F M = ' N ' THE N POKE 24 , 4
88 PRINT , PRINT ' VOULEZ-VOUS L' I MPRESS I ON EN NEGATI F ? - j
98 GET A$ , 1 F M < > ' 0' AND A$ < > ' N' THEN 98
189 PRINT A$ , POKE 25 , 9 , I F M = ' 0 ' TH EN POKE 25 , 1
119 PRINT , PRINT ' VOULEZ -VOUS UN CADRE ? ' . . ,
129 GET M , I F M < ) ' 0 ' AND M < ) - N - THEN 128
139 PRINT A$ , POKE 26 , 9 , I F A$ = ' 0 ' TH EN POKE 26,1
149 PRINT , PRINT ' VOULEZ-VOUS LE FORMA T DOUBLE ? • j
159 GET A$ , I F A$ < ) ' D ' AND M < ) ' N ' THEN 159
169 PR I NT A$ , I F M = ' 0 ' THEN 299 179 POKE 27 , 9 , POKE 235 , 192 , POKE 236,1
29 , I F PEEK (24) = 9 THEN 199 188 POKE 237 , 1 6 2 , POKE 39 , 1 5 9 , GOTO 239 198 POKE 237, 194: POKE 38 , 1 43 : GOTO 238 299 POKE 27 , 1 , POKE 235 , 224 , POKE 236,1
31 , I F PEEK ( 24) = 9 THEN 229 219 POKE 237 , 69 , POKE 39 , 78 , GOTO 238 229 POKE 237 , 1 3 3 , POKE 39 , 46 239 PRINT , PRINT , HTAB 3 , I NVERSE , P
R I NT ' APPUYEZ SUR UNE TOUCHE QUE LCONQUE " NORMAL , WA I T - 16384 , 1 28: POKE - 16368 , 8
249 I F PEEK (6148) < > 1 THEN PR I NT CHR$ (4) ; ' BLOADSE I KO . OBJ' , POKE
6148,1 259 POKE - 16249 , 8 , HOME , CALL 6 1 49 269 CALL - 1 9 5 2 , CALL - 1952 , CALL
1952
Pom's nO 7
SElKO.OBJ Code hexadécimal
JE 18e e . t9DA
1888- EA EA EA EA EA A5 tA Fa 1888- 85 A4 ES 28 58 19 A9 88 1818- 85 86 AS 18 85 lA AS lE 1818- 85 FB A9 88 85 Fe 95 8B 1828- 85 Be AS lA Fa 83 28 98 1828- 19 A9 88 85 8 7 A9 8 8 A4 1838- 87 08 82 AS 18 85 88 A2 1838- 88 28 28 19 A9 88 A4 8 7 1848- Fe 88 18 69 2 8 88 F a 8 2 1848- 69 2 8 8 5 FD A S 8 8 4A 85 1858- FE A9 88 6A 18 65 FD 85 1858- FD BA lA lA 18 6S FE 85 1868- FE 38 AS le E5 FD 85 F9 1868- AS I D E5 FE 85 FA A4 8 6 1876- B I F 9 A4 18 F 8 3F A4 8A 1878- 85 FF FI ID A9 88 46 FF 1888- 98 82 69 82 46 FF 96 6 2 1888- 69 8 B 4 6 F F 98 8 2 69 2 F 1898- 46 F F 98 8 2 69 3F 4C 85 1898- 18 A9 66 86 FF 86 FF 98 lBA6- 62 69 5F 86 FF 96 82 69 18A8- 1 7 86 FF 98 82 69 85 86 18B6- FF 98 62 69 88 A4 19 08 18B8- 82 49 FF 89 88 C9 88 F 6 18C8- 87 A B 2 8 92 19 4 C C C 18 18C8- A9 66 85 8B E8 E8 88 F8 1808- 83 4C 39 18 E6 68 AS 68 1808- C9 88 Fe 83 4C 37 18 E6 18E8- 67 A5 8 7 C9 83 F8 83 4C 18E8- 20 18 AS lA F8 66 26 26 18F6- 19 28 98 19 A9 8A 28 47 18F8- 1 9 28 3 1 19 AS 8A F8 85 1988- C6 8A 4C 16 18 E6 86 A5 1988- 6 6 C9 28 FI 83 4C 1 2 1 8 1918- A S l A F6 85 A 4 EC 2 8 S8 1918- 19 68 88 .1 88 81 18 Il 1921- E6 FB 08 82 E6 FC AS lB 1928- FI 86 E6 FB DI 12 E6 Fe 1938- 61 AS FC 4A A.5 F8 6A 4A 1938- 4A 18 69 8A A8 EA A9 BA 1948- 28 A8 Fe 88 Dt F8 68 80 1948- 98 e8 A9 87 28 A8 Fe 68 1958- A9 l B 28 47 19 A9 1 8 2& 1958- 47 19 A9 18 28 47 19 AS 1961- lE 28 47 19 A9 lC 28 47 1968- 19 AS lB F8 lE A9 FF 28 1978- 47 19 98 28 47 19 A9 l e 1978- 2& 47 1 9 A5 EO 28 47 1 9 1988- 98 28 47 1 9 A9 8A 28 47 1988- 19 AB 4a 2a 3E 1 9 68 aa 1991- A& FF A5 8B 08 28 A9 8 1 1998- 85 8B A9 lB 28 47 19 E6 19A8- IC A9 18 28 47 19 E6 8C 19A8- AS FC 28 47 19 E6 le AS 1988- FB 28 47 19 E6 8e 98 21 1988- 47 1 9 E6 le A5 lB FI 16 19C8- 98 21 47 1 9 E6 8C A5 le 19C8- C9 55 98 lE A9 1 4 28 47 1908- 19 A9 88 85 88 85 8e 28 1908- 31 19 68
23
24
La •
SOUrIS de Lisa Hervé Thiriez
Faut-il encore parler de Lisa ? Nous avons été abreuvés dans les journaux d'articles sur Lisa depuis sa présentation internationale le 19 janvier dernier . D'autre part. nous ne pouvons, dans une revue telle que Pom's, passer sous silence la naissance de Lisa. Voyons donc pourquoi la souris de Lisa veut devenir aussi délèbre que le sourire de Mona La première impression que dégage cet ordinateur de bureau - le terme convient ici parfaitement - est celle d'un équipement au design agréable, d'apparence professionnelle. Par opposition, l'Apple 11 Plus, qui fait notre bonheur depuis si longtemps, suggère un peu la 2CV, avec son aspect rustique et son côté bohème. Lisa est un système à clavier détaché, incorporant deux lecteurs de
disquettes 5 pouces (860K octets par disquette) et un écran à tfès haute résolution {720 x 364, soit près de cinq fois autant de points que pour l'Apple Il} . 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 gris . . Seul appendice externe à l'appareil,
relié par un fil gris lui aussi, la fameuse souris, qui est le mode de communication privilégié de l'utilisateur vers la machine . C'est grâce à celle souris et à la qualité graphique de l'écran qu'il suffit d'une demiheure à un non-informaticien pour apprendre à utiliser Lisa. La souris est un petit boîtier que l'on fait glisser sur son bureau dans n'importe quelle direction. Un curseur sur l'écran est associé à la souris et se déplace en totale symbiose avec elle. L'écran présente un certain nombre de petits dessins illustrant les dossiers sur lesquels on travaille, y compris une poubelle pour ceux dont on veut se débarrasser. Il suffit de pointer le curseur associé à la souris sur le dessin correspondant 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 grâce à la souriS) 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 dossier, passer du traitement de texte au Lisacale ou au programme de réalisation de graphiques. Tout cela se
fait très rapidement, et l'on peut ainsi croiser les applications : éditer en
�raitement de texte les titres de graphiques provenant de données Lisacale !
A tout moment, une copie de l'écran peut être obtenue, l'écran incorporant à 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 apparaître sur l'écran une calculatrice avec des touches sur lesquelles on « appuie .. grâce à la souris. Avec Lisa sont fournis en standard : • LisaWrite : traitement de texte
(tailles et polices variées) . • Lisacale : 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 beaucoup plus rapide, el avec les possibilités d'édition de texte.
• LisaDraw, outil performant pour la création graphique.
• LisaProject, pour la gestion de projets (PERT, Gantt) jusqu'â 1000 tâches.
Tout cela coexiste sans effort dans le million d'octets de mémoire centraie, 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 imprimante et le disque dur de 5 mégaoctets. En outre, ceux qui désirent s'offrir Lisa devront encore patienter jusqu'en septembre. Le prix n'est pas donné. mais le rapport performance/prix est excellent en comparaison avec celui des miniordinateurs de bas de gamme.
Nous attendons aussi le discret Mclntosh qui, à en croire ce que j'ai lu dans des revues professionne!1es, devrait proposer à un prix sensiblement plus abordable les avantages logiciels de Lisa et de sa souris, avec une puissance et une capacité réduites.
Dès que nous aurons eu l'occasion de travailler réellement avec Lisa ou Mclntosh, nous vous ferons partager nos impressions plus en détail .
Pom's nO 7
L'Apple Ile (e pour .enhanced_, c'est-à-dire amélioré) a été annoncé par Apple le 19 janvier dernier. Destiné à remplacer le modèle Apple Il + bien connu, il commence à se répandre dans les boutiques microinformatiques. Grâce à l'amabilité de la société I.E.F., j'ai pu en avoir un exemplaire pendant une soirée, de quoi l'examiner sous toules ses coutures.
Première constatation si le nom change, la ligne demeure : le boîtier est celui que nous connaissons tous. $eul 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 fIe dispose d'un clavier plus complet qui se remarque dès le premier abord.
Un clavier plus complet
Outre ses Il touches de plus (63 contre 52), le clavier du Ife présente de nombreuse$ différences avec celui du II. Nous en commentons cidessous les plus notables.
La touche RESET est mise à 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 enfoncée (il n'y a plus la possibilité de choix offerte sur le Il entre RESET tout seul et la double action CTRLRESET).
Les minuscules sont disponibles au clavier et affichées comme telles à 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 programmation en Basic (l'Applesoft. comme le DOS, n'accepte que les majuscules). Un bon point : le blocage majuscule/minuscule n'affecte que les louches alphabétiques. Appuyer sur " 1- donne toujours le . 1 », quelle que soit la position de la touche Shift-lock.
Quatre touches de' gestion du curseur sont rassemblées en bas à droite du clavier. On y retrouve bien sûr les classiques flèches à droite et à gauche, mais également les flèches vers le haut et vers le bas.
Pom's nO 7
L'Apple Ile à l'essai
Toutes les touches qui génèrent un code sont à répétition automatique. Le temps entre le premier caractère et le deuxième est relativement long, ce qui évitera, je pense. toute fausse manœuvre. En raison de cette répétition automatique. il n'y a plus de touche REPT (répétition).
Deux touches marquées rune d'une petite pomme vide (pomme «ouverte -), l'autre d'une pomme pleine (pomme «fermée .) sont placées de part et d'autre de la barre d'espacement. Elles ne génèrent aucun code (elles sont en fait équivalentes aux boutons sur les poigné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 à redémarrer (et donc à rebooter s'il y a un contrôleur) quelle que soit la configuration. Cela devrait permehre d'épargner considérablement le bouton de l'alimentation qui, l'expérience le montre, supporte très mal les opérations de • marche/ arrét _ répétitives.
• la pomme fermée provoque l'exé-cution d'un autotest.
Parmi les nouvelles touches, on trouve également une touche de tabulation .TAS. et une louche «DELETE. qui pourront être utilisées par les logiciels prévus pour le lie .
Le clavier est utilisable en Azerty ou en Qwerty. La sélection est faite par un bouton pOUSSOir judicieusement placé sous la partie inclinée de l'Apple. Ce bouton commande également le changement de caractères à l'écran_ Les caractères français sont donc disponibles aussi bien au clavier qu'à l'écran_ Malheureusement, la disponibilité d'un double clavier se solde par un double marquage des touches. qui vont donc jusqu'à 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-François Duvivier
Comme pour le Il, un connecteur est toujours prévu pour le davier 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 Ife) n'y faisait pas allusion. De même, le programme de démonstration et d'introduction au clavier ne mentionne aucune possibilité de touches de fonctions.
Outre le problème de double notalion des touches. j'ai un deuxième regret concernant le clavier l'absence de buffer _ La refonte du clavier était l'occasion r�vée d'introduire un buffer de caractères tel qu'on le trouve sur l'Apple l/J et même sur le 11 (avec la carte Keyboard Enhancer de Videx par exempIe). Le buffer est comme toutes les bonnes choses : une fois qu'on y a goOté. on ne peut plus s'en passer !
Par rapport à l'Apple Il. ces connecteurs ont les mêmes signaux disponibles sur leurs broches, ce qui signifie que la majorité des caries d'extension existant sur le Il sont compatibles, notamment les contrôleurs de lecteurs de disquettes. les interfaces imprimanles et la Softcard lSO. Les exceptions sont les cartes qui devaient obligatoirement se mettre dans le sial a (ROMcard Applesoft ou Integer par exemple) et toutes les cartes nécessitant d'ôter un circuit de l'Apple pour connecter un câble à 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é _Connecteur Auxiliaire. (quelle imagination !l . Ce nouveau connecteur comprend 60 contacts (contre 50 aux connecteurs de slot). Son emplacement (dans le prolongement du sIal 3) interdit son usage simultané avec le slat 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 slol 3 pour les cartes 80 colonnes pour Apple 11. ce qui explique la pOSition du connecteur 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 permettant l'obtention des couleurs sur un poste téléviseur SECAM, ainsi que l'extension 64K et 80 colonnes.
le microprocesseur 6502 ne pouvant pas adresser plus de 64K, l'extension de 64K n'est pas une extension de mémoire centrale à proprement parler. Mais elle est comparable aux cartes mémoires disponibles pour le Il (Saturn, Ramex, legend . . . ) . Comme eHe 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érifier, l'adjonction de l'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 pelite, elle s'arrête avant le clavier, ce qui permet d'accéder à tous les circuits sans démonter autre chose que le capot. le nombre de circuits intégrés est passé d'environ 90 à 35. Celle 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 restée la même, on dispose ainsi de plus de puissance sur res slots.
le gain de circuits est essentiellement dû à l'intégration de plus en plus poussée des composants utilisé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 circuits. De même, les mémoires morles utilisées sont des 32 Kbits au lieu de 16. Enfin, deux circuits à 40 patles trônent en plein milieu de la carte. Dénommés MMU (Memory Management Unit) et 10U (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 m) L'utilisation de mémoires reprogrammables 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 à la langue, et de leur génération à l'écran.
En ce qui concerne la génération video, il faut préciser que les Ife vendus en France sont équipés en sian· dard d'un modulateur PAL sélecta· ble par switch (sur la carte mère) . Les possesseurs de postes de télévision bi - ou trislandards pourront donc profiter directement des couleurs, sans aucune carte supplémentaire. les autres devront se contenter du noir et blanc ou attendre l'arrivée imminente d'une carte «Chat Mauvre . adaptée au Ile (pour vous consoler, sachez que le standard SECAM est techniquement le meilleur. . . ) .
T rues et astuces
De l'utilité du symbole « : »
} : READ permet de lire les DATA d'un programme (arrêté par CTRL-C, par exemple) . alors que J READ donne le message NOT DIRECT COMMANa de 1. commande READ du DOS.
]:lN # 0 : PR;.II! 0 permet de déconneler de DOS. Pour le reconnecter : CALl 1002 ou
• 3DOG ou RESET.
Parfois, 1 PR#6 ne marche plus pour rebooter (quand par exemple la commande PR # du DOS a été endommagée) . Pour s'en sortir sans devoir éteindre l'appareil, faire J : PR ;.II!6 ou · 6CTRL·P.
la raison de tout cela tient au fait que le DOS intercepte les commandes tapées en début de ligne au davier. avant de redonner le contrôle à l'Applesoft (ou au moniteur) . D'où 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, l'instruction CATAlOG du DOS n'est pas reconnue. C'est comme cela que]: PR # 6 active le «PR"# • de l'Applesoft (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 à 7 sont disponibles. Il .est à noter qu'il n'y a donc plus de slot O. L·explica.tion 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 à côté des slots d'un témoin de tension (plus d'excuses pour les cartes mises ou enlevées avec l'Apple en marche !). On note également le blindage complet de l'arrière de l'Apple, désormais en métal et solidaire 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 à démonter l'Apple pour brancher le câble de l'imprimante ou de toute autre carte interface. Autre amélioration pour les fanas de jeux : un connecteur situé à côté de l'entré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 à son utilisation, le lie se comporte 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, i! semble que les seules modifications « soft . effectuées concernent le moniteur (Prom F8), qui a été entiè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 l'utilisation des minuscules. Enfin, un autotest a été ajouté (activé par les touches CTRlRESET-pomme fermée). Comme ces modifications ont nécessité plus de place mémoire, l'espace $ClOO$C7FF auparavant dédié à l'adressage des slots est maintenant sélectable entre les slots et une Prom.
Malgré toutes ces modifications, les principaux points d'entrée du moniteur ont été gardés aux mêmes adresses. Vous pourrez toujours, par exemple, passer en mode moniteur en tapant CALL-15!. Ainsi, sur 300 programmes commerciaux testés sur Apple /le, j'ai lu que 95 %
Pom's nO 7
avaient tourné du premier coup et 3 % après quelques légères modifications.
Pour ma part, tous les logiciels que j'ai essayés ont parfaitement tourné. ce qui est rassurant du point de vue compatibilité.
Et le portefeuille . . . De même que pour l'Apple Il ces derniers mois, le Ile sera essentiellement vendu sous forme d'une configuration comprenant un lle 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 K et la carte Chat Mauve. 11 est à noter que. si cette dernière était disponibles partout, les deux autres étaient totalement inconnues à deux des cinq boutiques consultées. Les prix nc que j'indique ci-dessous résultent d'un sondage effectué par téléphone auprès de cinq boutiques parisiennes :
• configuration .
de 14 700 à 14 995 F
• Apple Ile seul : de 9 900 à 11 950 F
• carle 80 col. : de 900 à S999 F
• carte 80 + 64 K : de 2 300 à 2 400 F
• carte . Chat Mauve JO : environ 3 000 F
On remarquera, en dehors du cas
particulier de I"Apple Ile seul. que les prix varient très peu d'un revendeur à l'autre. résultat de l'uniformisation des prix imposée par Apple-Seedrin.
Conclusion J'ai rencontré deux problèmes particuliers sur I"exemplaire qui m'a été prêté: D'une part, la commande PR # suivie d'un numéro correspondant à un slot vide sélecte la première carte trouvée dans un sl.ot 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 6 !) . D'autre part. il semble que l'Apple dont je disposais avait quelques difficultés à s'initialiser correctement après des coupures de tension brèves (inférieures à 2 secondes), ce qui m'arrivait lorsque j'utilisais l'interrupteur de l'alimentation pour faire rebooter l'Apple.
En dehors de ces problèmes mineurs, il faut souligner rexcellente compatibilité du Ile avec son prédécesseur le 11 + , tant au niveau du matériel O'ai essayé sans problème toutes mes cartes interfaces, y compris une extension 128K Saturn) que du logiciel.
Cependant. je dois dire que cette première confrontation avec le Ife m'a laissé un sentiment de déception. Attendant avec impatience ce successeur de r Apple 11, je me suis retrouvé en face de la méme machine. mais incapable de taper
trois touches de suite ! Cette impression d'absence de nouveauté a été certainement accentuée par le fait que je dispose déjà des minuscules sur mon Apple 11. 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 coûts de production (carte plus petite, nombre de circuits en baisse . . . ), on pouvait rêver à des prix inférieurs à ceux du IL Hélas, le Ile affiche un bon 2 000 F de plus. Comme, d'autre part, le Il ne sera plus vendu, il s'ensuit une augmentation importante du système -minimum qui atteint maintenant les 15 000 F. Si cette somme ne constitue pas un problème pour les utilisateurs professionnels (très majoritaires il est vrai) , elle devient fort difficile à 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'évolution dans le domaine de la microinformatique se traduit d'habitude par .: plus puissant et moins cher JO . I l 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 à changer) . ce serait beaucoup mieux !
Des programmes relogeables
Les programmes en langage machine dépendent en général de l'adresse à partir de laquelle ils ont été assemblés et ne peuvent de ce fait .: fonctionner " que s'ils sonllancés à partir de celle adresse. Si nous voulons qu'un programme se chargeant en haut de la mémoire puisse fonctionner sans problème avec un Apple de 16, 32 ou 48 K, il nous faudrait normalement prévoir trois versions du même programme !
La solution évidente d'un tel programme consiste naturellement à écrire des programmes indépendants de leur origine, c'est-à-dire des programmes relogeables (relocatable
Pom's nO 7
programs1. exécutables quelle que soit leur origine.
Les deux obstacles principaux à de telles pratiques sont les branchements inconditionnels (JMP, abré, viation de • jump " , l'équivalent en assembleur du GOTO) et les appels à des sous-programmes (JSR, .: jump ta subroutine ., l'équivalent du GOSUB) comme le montre le petit programme ci-dessous :
1 JMP DÉBUT 2 DÉBUT JSR RIEN 3 BRK 4 5 RIEN RTS 6 •
Philippe François
Le problème posé par les JMP se résout aisément : il suffit de remplacer ces branchements inconditionnels (dont les adresses sont explicites) par des branchements conditionnels forcés. En effet, les branchements conditionnels du type BEQ, BNE,. étant des branchements relatifs, ils ne dépendent pas de l'adresse d'implantation du programme. On remplacera donc tous les JMP du programme par un des couples d'instructions suivant : CLC et BCC, ou bien SEC et BCS.
1 CLC 2 BCC DÉBUT 3
27
28
4 DÉBUT 5 6 7 RIEN 8 •
JSR RIEN BRK
RTS
Un petit problème encore, à propos de ces branchements conditionnels forcés : les déplacements étant relatifs et s'exprimant sur sept bits (le bit huit indiquant .le sens du déplacement, en amont ou en aval de la présente adresse) ne pourTant être supérieurs à 126 octets dans un sens ou dans l'autre.
Toute tentative de dépassement de cette limite sera sanctionnée par le fatidique message OUT OF RANGE ERROR de l'assembleur. La technique employée alors sera celle de l'ascenseur comme le montre l'exemple suivant
ORG $800 CLC BCC ETAGE
; suite du programme
SEC ÉTAGE BCC DÉBUT
; suite du programme
DÉBUT
RIEN
JSR RIEN BRK
RTS
RELOGEABLE Big Mac
S888 : 888 1 :
8883: 8884:
8887 : 8889: BeeB: B88E:
8UF: B8 1e : B8 1 1 : B8 1 2 : B8 1 3 : 89 1 :5 1 88 l B :
B8 1 8 1
Le problème posé par les JSR se résout moins aisément. Néanmoins. l'examen attentif des programmes machines relogeables du commerce (AMPER MAGIC, pour n'en citer qu'un), ainsi qùe la lecture d'un petit article dans Apple Assembly Unes {Vol. 2, N° 10, juillet 1982}, nous ont permis de comprendre la façon 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) Mystérieux, n'est-ce pas ? Commentons donc cette séquence. L'octet placé à l'adresse $FF58 de la ROM Moniteur est toujours égal à $60, code de nnstruction RTS
L'appel d'un sous-programme consistant seulement en un RTS peut paraître stupide, mais il a pour effet de placer les deux octets de la présente adresse sur la pile (stack) , puis de les ressortir. Nous pourrons alors réutiliser ces deux octets dans le sous-programme concerné :
RIEN TSX : valeur du pointeur de pile
DEX DEX TXS , nouvelle valeur
Le sous-programme RIEN possède maintenant une adresse de retour
1 , 2 RETURN EOU 3 COUT EOU • ,
lB • CLC 9. •• • BCC
7 , BB B DEBUT CLV 2. 'B FF 9 JSR s • •• 10 BVC A' C I I l LDA 2. ED FD 12 JSR •• 13 RTS
l ' , " ,
BA 1 . BELL TSX CA 17 DEX CA 18 DEX 9A l' TXS A' 87 2. LDA 2. ED FD 2 1 JS' 2C 'B FF 22 BIT
23 , •• 2. RTS
sur la pile, exactement comme si nous I"avions appelé par un JSR RIEN normal ! Mais attention, ce n'est pas fini. En effet. si nous essayons de sortir du sousprogramme RIEN par un RTS, nous allons nous retrouver à l'instruction BVC RIEN qui sera de nouveau exécutée et nous entraînera dans une boucle infinie ! Il n'y a malheureusement pas d'instruction 6502 du type SEV (<< set overflow ») : aussi allonsnous faire appel de nouveau à notre précieuse adresse $FF58 et terminer notre sous-programme RIEN par le couple d'instructions suivantes '
BIT $FF58 : place l'over; flow
RTS
L'instruction BIT (voir par exemple « Programmation du 6502 ,. par Rodnay Zaks, page 103) effectue un ET entre I"accumulateur A et la mémoire , mais. surtout. les bits 6 el 7 de la mémoire sont transférés dans les bits V et N du registre d'état. La mémoire contenant $60 (soi! 0 1 100000 en binaire), le bit V du registre sera donc bien positionné à la valeur 1 . Résumons-nous par ce petit programme où sont utilisées toutes les techniques examinées dans cet article :
SFF58 SFDED
, PSEUDO JMP DEBUT DEBUT
, EMP ILE LA PRESENTE RETURN ADRESSE BELL PSEUDO JSR BELL tt-A-COUT
, MISE A JOUR , DU POINTEUR , DE PI LE
HB7 COUT RETURt-I ARME LE B I T N
DU REGI STRE D ' ETAT
Pom's nO 7
Le programme CÎ-contre s'adresse à ceux qui souhaitent visualiser les informations stockées sur une disquette formatée en Pascal. Ces informations sont groupées en 280 blocs de 512 octets par disquette.
Description générale Le programme édite sur l'imprimante un « dump • de la disquette tel que présenté en fin d'article . Chaque 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 correspondant à ces huit octets.
Vous vous êtes probablement aperçus que le code ASCII est le même pour un octet X (de 0 à 127) et l'octet X + 128. Toutefois, dans le listing ASCll des octets dont la valeur dépasse 127, nous avons précédé ceux-CÎ du caractère exponentiation « 1\ • .
D'autre part, les caractères dont les codes sont compris entre 0 et 32 inclus ne sont pas tous imprimables. C'est pourquoi nous les avons remplacés par un mnémonique relatif à leur rôle respectif ( 1 2 - 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 [3J. Ce tableau est rempli en début de programme par la procédure LECTABCTRL à 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 programme LECTBLOCK demande à l'utilisateur le numéro du canal associé à la disquette à analyser, puiS celui du premier bloc, et enfin te nombre de blocs à « dumper _. Pour savoir à partir de quel bloc cette opération doit débuter, il suffit d'examiner le directory de la disquette avec le FILER en sélectionnant la commande E.
Dès cet instant, le « dump • sort SUI l'imprimante et occupe 65 lignes sur
Porn's nQ 7
Dump Pascal
une page qui en conlient normalement 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 façon continue, si bien qu·il est très simple de lisier un fichier connaissant l'adresse de son premier bloc el sa longueur (commande E sous FILER) .
Le programme lui-même est simple et s'articule autour d'une instruction UNITREAD (numdrive, fich, 512, numblocl. Celte instruction est capable de lire des informations non structurées, contrairement aux autres instructions d·entrée/sortie. Les paramètres de celle instruction sont · le numéro de drive, fich (un tableau de caractères). 512 (nombre d'octets à 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-
C.'�T :;>11' 1.1'1 ".,\\.T �'o.)01 l.."'(.Tf.�1\ ,",'=t<TEf{T _
grammé dans les saisies, ce qui implique un tant soil peu de vigilance lors de l'entrée des paramètres. On aurait pu effectuer des tests de cohérence, mais il faut bien comprendre que l'utilisation de ce pro· gramme est ponctuelle , dans le but de scruter des informations sur disquette, ce qui n'est pas une manipulation 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· CINFO, . . . ou sur le texte de votre programme (vous serez surpris 1). A titre d'exemple, nous avons joint en page 34 un « dump _ partiel du fichier CTRL.DATA créé par le programme WRITECTRL.
Mise en œuvre du programme
1 . Entrer le programme WRITECTRL
2 . L'exécuter en y entrant les mnémoniques ASCII de 0 à 32. S·aider de Pom's 4 ou du « dump _ donné en annexe.
3 . Entrer le programme LETBLOCK. Vous pouvez changer le numéro du drive sur lequel se trouve f:ICHCTRL en remplaçant #" 5 : CTRL.DATA par #4 , CTRL.DATA
4 . Lancer l'exécution.
Bien entendu, si vous avez acheté la disquette d'accompagnement de ce numéro, vous y trouverez les programmes tout prêts.
Conclusion Comme nous l'avons remarqué plus haut, ce programme n'est pas d'une utilisation courante, mais il peul apporter beaucoup à ceux qui tra� vaillent « près . du système. De toute façon, il présente un intérêt pédagogique indiscutable. Pour l'instant, nous nous limitons à la publication d'un programme capable uniquement de lire des blocs sur disque, donc sans danger. 11 lui manque la possibilité de modifier les octets lus, puis de les réécrire. Nous ne doutons pas que certains d'entre vous récriront rapidement et enverront leurs contributions à Pom's. Pour les autres, si la suite les intéresse, nous pourrons la publier ultérieurement.
29
30
Programme DUMP
PROGRAM LECTBLOCK ; TYPE CARACT=PACKED RECORD
NCf1 : ST R I NG I 3 1 ENO;
VAR F I CH : PACKED ARRAY ( 8 . . 5 1 I J OF CHAR ; PAP I ER :TEXT; TABCTRL : PACKED ARRAY ( 8 . . 321 OF STR I NG ( 3 1 ; F I CHCTRL : F I LE OF CARACT ; NUMBLOCK ,NUMDRI VE , NBBLOCK : I NTEGE R ; REP: CHAR;
PROCEDURE LECTABCTRL ; VAR 1 : 1 NTEGER ;
BEGIN RESET ( F I CHCTRL , ' �5 : CTRL . DATA') ; FOR I : �8 TO 32 DO BEGIN
TABCTRL ( I I : = F I CHCTRLA .NCf1; GET< F 1 CHCTRU
Ef\ID ; CLOSE( F I CHCTRL) ;
END ;
PROCEDURE LECTURE ; VAR I , J , CH : I NTEGER ;
BEGIN REWR I T E ( PAP I ER , ' PR I NTER : ' ) ; WRITELN(PAP I ER , ' BLOCK NUMERO : ' : 45 , NUMBLOCK) ; UNITREAD(NUMDRIVE , F I C H , 5 1 2 ,NUMBLOCK) ; 1 :=8 ; REPEAT
WRITE ( PAP I ER , I : 3 , ' ' ) ; FOR J : = I TO 8 DO BEGIN
CH :=ORD( F I CH( I J ) ; WRITE ( PAP I ER , CH : 4) ; 1 : = 1 + 1 ;
END ; WRITE ( PAP I ER , ' 1 : = 1 -8 ; FOR J : = I TO 8 DO BEGIN
' ) ;
CH : =ORD ( F I CH ( I J ) ; I F CH> 127 THEN
BEGIN WRITE(PAP I ER , ' A ' ) ; CH .=CH- 1 28
END ELSE WRITE ( PAP I ER , ' ' ) ;
I F CH<=32 THEN WRITE(PAP I E R , TABCTRL ( CH 1 ) ELSE WR I T E ( PAP I ER , CHR(CH) : 3) ;
1 : = 1 + 1
Porn's nO 7
END; WRITELN< PAPI ER) ;
lNT l L 1 ) 5 1 1 ; CLOSE ( PAPI ER) ; END;
BEGIN ( � PROGRAMME LECTURE BLOCK ( S) � ) LECTABCTRL; REPEAT
PAGE ( OUTPUT> ; GOTOXY ( 5 , 5) ;WRITE ( ' NLt1ERO DU DRIVE ( SANS # ) ' ) ; READLN (NLt1DRIVE) ; GOTOXY ( 5 , 1 8 ) ;WRITE ( ' NLt1ERO DU PREM I ER BLOCK ' ) ; READLN (NLt1BLOCK) ; GOTOXY( S , 15) ;WRITE< 'NOMBRE DE BLOCK < $) : ' ) ; REAOLN <NBBLOCK) ; REPEAT
LECTURE; NLt1BLOC K , =NLt1BLOCK+ l ; NBBLOC K , =NBBLOCK- l ;
lNT I L NBBLOCK=8 ; GOTOXY ( l B , 22) ;WRITE( ' Ca-.rTINUER ? < O/N) ' ) ; REAO ( REP) i
lJ-IT I L REP= ' N ' END.
Programme WRITECTRL
PROGRAH WRI TECTRL ; TYPE CARACT=PACKED RECORD
NOH , STRING I 3 J END ;
VAR 1 : 1 NTEGER j F I CHCTRL , F I LE OF CARACT ;
PROCEDURE OWERTURE ; BEGIN
nSI -�) RESET ( F I CHCTRL , ' _5 , CTRL . DATA') ; C I€S I + * ) I F 1 0RESULT<>B THEN
BEGIN
BEGIN OWERTURE; RESET ( F I CHCTRL , ' _5 , CTRL . DATA') ; PAGE( OUTPUT) ; FOR 1 , =8 TO 32 DO BEGIN
WRITE< I : 3 , ' = ' ) ; READLN ( F I CHCTRLA . NOH) ; PUT ( F I CHCTRL> ;
END ; CLOS E ( F I CHCTRL , LOCK)
END.
Exemples de dump en page 34
I F I ORESULT= 1 8 THEN REWRITE( F I CHCTRL , ' #5 , CTRL . DATA ' ) ELSE BEGIN
PAGE( OUTPUT) ; WRITE ( ' ERREUR E/S ' ) ; EXIT(WRI TECTRL>
END ; END ;
CLOSE ( F I CHCTRL , LOCK) END ;
Pom's nQ 7
--........... .
31
TOUT SUR L A MICRO FORM� llOUE du 14 au 18 ju in 1983
L'Expositio du 14 cu 1 8 juin
n : 1983
• mardi 1 4, mercredi 1 5, vendredi • nocturne le jeudi 1 6, de 9 h 30 à 22 h •
1 7, de 9 h 30 à 1 8 h samedi 1 8 de 9 h 30 à 1 7 h .
T eus les matériels, toutes les applications des micro- persan ordinateurs. Que votre motivation soit professionnelle ou coOls
nelle, venez évaluer les matériels, comparer leurs et vous renseigner sur les applications disponibles.
Nouveauté 85 : une anlm ation cc lOgiciel " (organisée par Sybex et logic iels & Services).
Une banque de données des logiciels présentés par meilleu les exposants à MICRO-EXPO vous guidera, selon vos senter
rs logiciels pour micro-ordinateurs. les lauréats pré-
besoins spécifiques, à travers l'exposition. EXPO ont leurs logiciels pendant toute Id durée de MICRO-
Un « grand concours » destiné à récompenser les 226.1 (Renseignements : logiciels & Services, tél. : ( 1 )
1 .251· Et pendant toule la durée de l'exposition, une animation-jeux : 'le nez affrontez l'ordinateur et peut-être . . . le battre.
-5 Le Congre
du 1 3 cu 1 8 juin 1 983 Du débutant à l 'expert, une occasion unique dons l' année de se former et de s'informer.
Séminaires professionnels les micro-ordinateurs : présentation, choix
les microprocesseurs
les langages : BASIC, PASCAL, APL
les nouveaux langages : FORTH, lOGO, PROlOG, C
la télématique
le traitement de texte
l'entreprise, son système d'information et l'informatique
la comptabilité et ses logiciels
Les bases de données,2t leurs logicie ls
la gestion et le Visicalc
le système d'exploitation MS-DOS
Conférences Crand Public Choi x d'un micro-ordinateur
les m icro-ordinateurs de poche
le tra ilement de texte
l'ens eignement assisté par ordinateur - E.A.O.
les s ystèmes d'exploitation pour micro-ordinateurs 1 6 bits
Journ ées spécialisées, avec démonstrations : pour les professions juridiques, paur la médecine, pour l'agricu lture.
ées des constructeurs : Journ C TA
OMMODORE, GOUPil, HEWlETT-PACKARD, NDY, THOMSON, VICTOR LAMBDA
------------------INFORMATION
Nom :
Adresse : � Code postal : LI ---,-----,-----,-----,----,1 Ville : _ 1 o __ entrées{s) à demi-tarif 0 Programme détaillé du congrès
4, place Félix-Éboué - 75583 PARIS Cedex 1 2 - Tél. , { I l 347.30.20 - Telex , 2 1 1 801 F
8" Congrès-Exposition - MICROORDINATEURS C
Palais des Congrès - CIP - Porte Maillot - Paris
SYBEX organisé par ,
V SYBEX 4, place Félix-Éboué - 75583 PARIS - Tél. : ( 1 ) 347.30.20 - Telex : 21 1 801 F
Fichier CTRL·DATA : dump partiel
BLOCK NlJ1ERO , 2 1
• 3 78 85 7. 3 83 70 72 ETX N U L ETX S 0 H 8 3 83 8. 88 3 .0 8. 88 ET>< S T X ET>< E T X
,. 3 60 70 8. 3 .0 78 8 1 ET>< E 0 T ET>< E N Q 2. 3 65 .7 '" 3 •• .0 7 • ETX A C K ET>< B E L
32 3 32 .6 83 3 32 72 8. ET>< SPC B S ET>< SPC H T 48 3 32 76 78 3 32 B6 84 ET>< SPC L F ETX SPC V T 48 3 32 78 78 3 32 67 82 ET>< SPC F F ET>< SPC C R S. 3 32 83 70 3 32 83 73 ET>< SPC S 0 ET>< SPC S 1 .4 3 .8 7. .0 3 6B .7 .0 ETX 0 L E ET>< 0 C 1 72 3 .B .7 58 3 .8 67 S I ET>< 0 C 2 ET>< 0 C 3 B. 3 .8 .7 52 3 78 .5 75 ETX 0 C • ET>< N A K
8B 3 83 BO 7B 3 .0 8. •• ET>< S y N ET>< E T B o. 3 67 .5 78 3 32 .0 77 ET>< C A N ET>< SPC E t1
1 0 4 3 83 85 •• 3 .0 83 .7 ET>< S U B ET>< E S C 1 1 2 3 32 70 83 3 32 7 1 83 ET>< SPC F S ET>< SPC G S
12. 3 32 82 83 3 32 85 83 ET>< SPC R S ET>< SPC U S
128 3 83 88 .7 0 0 0 0 ETX � P C NUL NUL NUL NUL
Fichier 6500 ERRORS : dump partiel
BLOCK NLNERO , 1 5 1
0 1 32 18S 30 0 • • • SOH SPC '" 0 RS NUL NUL NUL NUL 8 17. 2 1 ,.7 , . , 7 ,.5 128 2 1 1 A WAK "'OC3 " 8EL A % "NUL " S
, . 100 18' 1 O. 25 1 ,.5 128 A ) A 8 50H
A EH SOH A % "NUL
2. 185 17. 2. ,.7 55 , . , 3 . , A o A OC. 7 A ETX )
32 174 1 8 I.S 128 1 43 • 2.4 1 DC2 A. % "'NUL A SI NUL A L SOH
40 198 1 15 1 1 7 I l . , .. , . , 182 A F SOH SI u n d • f 48 '.5 1 18 18 1 18. 32 18. 97 08 i n • d SPC 1 • b
5. 1 0 1 188 198 184 1 94 25 1 • 1 A ) • SOH EH SOH
.4 ,.5 128 , . 5 17. 28 ,.7 55 , . , A % "NUL o A DC4 A. , 7 A
72 3 . , 17. 18 ,.5 128 " 3 8 ETX ) A DC2 ... % "NUL A SI NUL
88 2 •• 1 198 1 28 I I I 1 12 18 1 L SOH A F SOH OC. a p •
88 " ' 07 1 1 8 , .. 32 I I I 1 1 7 I l . 0 • n d SPC a u t
9. 32 I I I , . 2 32 "' 97 I l. 183 SPC a f SPC 0 • n 9
1 8. 18 1 1 ,.5 1 28 185 17. 28 ,.7 • SOH ... % "'NUL 9 DC4 ...
1 12 OS , . , 3 . , 17 • 1 8 ,.5 128 7 A ET>< ) A DC2 ... % "'NUL
12. " 3 • 2 • • 1 108 1 2. 1 80 A SI NUL ... L SOH A F SOH CAN m
128 1 1 7 l i S 1 16 32 18' 97 1 1 8 ,. , u • t SPC h a v •
13. 32 1 1 2 " ' I I I 99 , . , 188 1 1 7 SPC p 0 a c • d u
'" " ' 18 1 32 1 1 8 97 1 89 1 8 1 17' 0 • SPC n • m • A
152 28 167 55 ,. , 3 . , 17. 18 DC4 ... , 7 A ETX ) A OC2
168 ,.5 128 ,.3 8 28' 1 <08 1 A % "NUL A SI NUL ,.. L SOH ... F SOH
,.8 20 1 1 8 1 1 7 , . 0 08 1 8 1 "' 32 OS n u m b • 0 SPC
17. I I I 182 32 1 1 2 07 " ' 07 1 8 9 a f SPC p • 0 a m
18' , . , 1 1 6 , . , "' 1 1 5 32 , . , 12. • t • 0 • SPC • x
102 1 12 ,. , 99 I l . 1 0 1 , .. 3 " p • c t • d ETX )
2 •• 17. 18 ,.5 128 ,.3 • 2 •• 1 A OC2 A % "NUL ... SI NUL .. L SOH
2.8 198 1 2 1 ,. , 12. I l . 1 14 07 A F SOH NAK • x t 0 a
2 1 . 32 ,.3 07 1 14 98 97 ,.3 ,. , SPC 9 a 0 b a 9 •
22. 32 I I I 1 18 32 188 105 1 18 ,. , SPC a n SPC 1 i n •
232 1 0 1 12. : i � , . , 00 1 16 , . , , .. • x p • c t • d
2 •• 3 4 1 17. 1 8 ,.5 128 143 • ET>< ) A OC2 ... % "'NUL ... SI NUL
2.8 2.4 1 198 1 29 lOS I l . 1 1 2 A L SOH A F SOH OS n p 25. 1 1 7 I l . 32 ,.8 185 I l. ,. , 32 u t SPC 1 i n • SPC
264 l i t 1 1 8 t . , " ' 32 S. '8 32 a v • 0 SPC 8 • SPC
272 00 104 07 1 1 4 07 09 1 16 10 1 c h a 0 • c t •
288 1 14 l i S 3 4 t 174 t 8 t.S 128 0 • ET>< ) A OC2 A % "'NUL
288 t43 8 20. t 198 t t. I l . A SI NUL ... L SOH ... F SOH OLE n
20. I I I 1 1 6 32 1 0 1 1 18 t l l 1 1 7 1 0 3 a t SPC • n a u 9 38. 104 32 •• 73 7. 30 1 15 56 h SPC 1 F , • 8
3 1 2 48 32 90 10' 07 " ' 97 09 • SPC c h • 0 • c
328 I l. 10 1 1 1 4 l iS 3 4 1 174 t8 t • 0 • ET>< ) A OC2
34 Pom's nO 7
Bien que tOlalement inédit, ce générateur peut être d'une grande utilité pour un programme scientifique ou éducatif, ainsi que pour tout programme 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 l'ordinaire. Le générateur donnera à votre programme la faculté de se développer lui-même, grâce à une simple commande qui, lorqu'elle est rencontrée, a pour effet d'ajouter un numéro de ligne à toute instruction Applesoft et d'insérer la IHgne 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énient, dans un programme utilisant des fonctions mathématiques, de devoir stopper celui-ci pour y insérer des lignes de définitions ou pour y incorporer des DATA, je me suis dit qu'il serail merveilleux de disposer d'une routine en asssembleur accordant 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 serait automatiquement 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 virgules et deux-points est indispensable ; or, cette commande a été réalisée antérieurement et publié dans le numéro 5 de Pom's (voir ," La programmation facilitée .). Parmi les instructions qui composeront les lignes générées, l'une serait corrélative à l'auto-écriture d'instructions DEF. En effet, lorsque le programme appellera une ligne contenant des instructions OEF, cet appel nécessitera un RETURN, qui devra
Pom's nO 7
Un générateur
par conséquent être produit par le générateur. Demander au programme d'effectuer un appel par GOSUB ou GOTO à des lignes qui n'existent pas encore, et que l'on propose d'ajouter durant le traitement, pose quelques questions ! Une convention s'impose alors : les lignes ajoutées commenceront par exemple à partir du numéro 20 000, avec un incrément de la : on calculera ainsi le numéro d'une ligne créée à partir de son rang. S'il s'agit de la troisième, la première l igne 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 à laquelle on donnera le nom de POP. Ces projets me paraissaient prometteurs ; j'imaginais un progrêlmme démarrant avec deux lignes, s'autogénérant à partir de quelques indications et se sauvegardant tout seul sur la disquette, une fois la mémoire saturée. Un écueil de taille s'opposait toutefois à 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 documentation nécessaire et entrepris de la chercher tout seul dans l'Applesoft, à partir de l'adresse $0000. C'est à l'adresse $0560 que je rai enfin trouvée, rebelle à un emploi immédiat, finissant avec la longueur des données en Y alors qu'elle est initialement en X dans le buffer d'entrée et modifiant en outre TXTPTR, l'ensemble des pointeurs servant à analyser le programme en cours. Cette routine une fois découverte (ainsi que quelques autres à l'occasion), le module était réêllisé ; en voici le mode d'emploi.
Mode d'emploi Une seule commande permet
Denis Sureau
d'obtenir la génération d'une ligne Applesoft de tout type : son format comporte deux variantes, soit l'emploi d'un mOI réservé de l'Applesoft, soit remploi d'un caractère quelconque.
Les instructions & DATA A$ et & DEF A$,lorsqu'elles sont rencontrées, ont pour effet d'ajouter au programme les instructions contenues dans A$ sur une ligne qui commencera automatiquement par DATA ou OEF. Plus généralement, avec la syntaxe & X A$, X est choisi par l'utilisateur. Cela peul être un caractère quelconque ou un mot réservé de l'Applesoft, avec un effet différent : le mot réservé sera incorporé 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 remplaçant la dernière et prenant son numéro.
Les commandes du générateur peuvent s'employer en mode direct si un programme est présent en mémoire et si la LOMEM a été déplacée. Ceci est une précaution dont on s'assurera 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 programme dans la mémoire.
NDLR : ne pas oublier d'abaisser la H1MEM au-dessous du début du générateur avec HIMEM : 38048 si l'origine est en $94AO comme sur le listing,
Routines Applesof! Les deux plus importantes sont MOV$TR (SE5E2) pour le transfert des données et en $0560 celle qui '" tokenize • le buffer d'enlrée, c'està-dire qui convertit les mots réservés en codes. On appelle $0560 avec X mis à 0, en sauvegardant TXTPTR qui sera pointé sur le buffer d'entrée ($200) , et en remplaçant par $0 le délimiteur $0 (RETURN) se trouvant à la fin du texte lors d'une entrée par INPUT. Convertie en formai Applesoft, la llgne se trouve bien sûr réduite ; le registre Y contiendra alors la oou-
35
36
velle longueur de la ligne. délimiteur compris.
MOVSTR transfère une donnée pointée par Y (ADL), X (ADH), longueur en A vers l'adresse pointée en $71 et $72 IFRESPC).
MOVINS (SE5D4) fait la même chose que MOVSTR mais copie une chaîne dont le descripteur est pointé en SAS-SAC (STRNG1). Le registre y revient à 0 et S71-S72 pointent maintenant sur la position qui suit la chaîne transférée. Ces pointeurs sont incrémentés par la valeur de l'accumulateur A par une routine dont l'adresse est SE5F3.
FNDLIN ($D61A) est utilisée par la commande RESTORE. Elle recherche l'adresse de la ligne dont le numéro a été placé en $50-$51 (LiNNUMl et la pointe en S9B-$9C (LOWTR). Si la retenue C est mise à 0, la ligne n'a pas été trouvée.
, GÉNERATEUR Big Mac
, l(XXXXXXXXX><XXXXXXXXXXXX
2 l(XXXXX GENERATEUR XXXXX
3 l(XXXXXXXXXXXXXXXXXXXXXX
4 l(XX PAR DEN I S SUREAU xx 5 l(XXXXXXXXXXXXXXXXXXXXXX
• l(X COPYRI GHT ( C) 1982 X
7 *XXXXXXXXXXXXXXXXXXXXXX
8 9
, . FNDU N - $061A
I l FRENUM • $0067
1 2 PTRGET = $OFE3
1 3 HOVINS = $E5D4 , . HOVSTR = $E5E2
1 5 GETAOR - $E752 , . 17 Uf'oI\Ilt1 = $BBSe
1 8 VARPNT = $13983
1 9 FORPNT - $13985
213 CHRGET = $9138 1
2 1 TXTPTR - $131388 22
23 LNGTEXT = $1313 1 8 2' AORTEXT • $1313 1 9 25 INSTRUC - $1313 1 8 2. SEPARATR = $BB I C 27 INCR = $BB I D
28 AORNlIM - $BB I E
29 3. ORG $94AB 3 1
Deux: lignes consécutives en Applesoft séparées par 5 octets ; le code 0 de fin de ligne, 2 octets qui pointent sur la ligne suivante. 2 octets pour le numéro. L'adresse du numéro de la dernière ligne s'obtient donc en lisant les 2 premiers octets de chaQue ligne, jusqu'à ce que deux: . 0 » consécutifs signalent la fin de programme.
L'adresse de la ligne sera pointée dans ADRNUM ($IE, $lFl, utilisé pour la conserver, et on fera deux adressages indirects indexés par Y pour avoir accès au numéro de ligne. Les deux premiers octets de la ligne générée pointeront sur la fin du programme. Ils seront suivis du numéro de la dernière ligne incrémenté de 10, puis éventuellement du code instruction employé dans le format et finalement, du contenu.
Le listing du programme commente toutes les étapes de cette génération.
33 3. ADRPROG 35 3.
VERS. 37 2 . • 38
39 •• 4 , .2 .3 •• 45 •• .7 .8 .9 DEPART 5. 5 1 52 03 5. 55 5. 57 58 59
j$ 19-$IA •• RESTORE . , .2 .3
; $ lE-$IF •• .5 ••
67 32 " "'" PROGRAMME RELOCATA8LE ) l .8
- - -----.... -
Les bons truCS . • .
Le générateur est court grâce à J'emploi de routines Applesoft ; étant relogeable, il peut être chargé à l'adresse voulue, de préférence au sommet de la mémoire. protégé par l'abaissement de la HIMEM.
A noter dans la rubrique • trucs et astuces » ; quand on ne manipule pas de fichiers, mais beaucoup de chaînes de caractères, il est possible de réduire la zone des variables, à J'aide de HIMEM et LOMEM, de 1 K à 3 K. D'où réduction des problèmes dûs au nettoyage mémoire !
Des applications originales peuvent s'imaginer, telles que la conversion de routines en lignes de DATA, la création de programmes à partir de fonctions et d'affectations déterminées par calcul . Imaginons qu'à partir de bases bien définies un programme puisse se construire luimême pour atteindre un but connu de lui seul. . .
JSR $FF58 ; SUR RTS TSX OEX LM $ I B B .X CLC AOC *OEPART-ADRPROG-2 STA $3F6 INX LM $ I B B , X
AOC •• STA $3F7 LOA H$4C j JMP STA $3F5 RTS
STA I NSTRUC CMP * 1 74 ; RESTORE? 8Ea RESTORE TAY JSR CHRGET CPY * 1 6 1 j POP? SNE GENER STA INSTRUC ; S I OU I , JSR CHRGET j INCR H I S LM •• ;A 8 8Ea GENER2 JSR CHRGET ; PLACE .JSR FRENU1 ;NU1 LGNE JSR GETAOR ; EN $513-51 LM L 1f'ol\lLt1 ; LE PLACE STA S7B ;EN NlJ1 LM LI f'.I\ILth l ; DE L I GNE STA S7C ;DE DATA JSR FNOLIN ; CHERCHE LDA $9B ;LA L I GNE
Pom's nO 7
69 ADC .... 93 ;ADR EN 134 BNE LOO? 79 STA S7D ;$98-9C. 135 7 1 LDA S9C ;MET ADR 136 .: TESTE S I POP OPT I CN 72 ADC .9 j L l GNE EN 137 73 STA S7E J PO I NTEURS 138 LDA INCR 74 RTS ; OE DATA 139 SNE BRAf\lCH 75 1 4 9 7 6 GENER LDA .... SA jMET l e 1 4 1 LDA ADRNLt1 77 GENER2 STA INCR ; EN INCR . 1 4 2 STA S98 78 1 4 3 LDA ADRNLt1+ 1 79 LDA ".94 144 STA S9C 89 STA SEPARATR 145 8 1 146 BRANCH LDA I NSTRUC 82 • LOCAL I SE LE DESCR I PTEUR DE LA 147 BPL TOKEN j CARACT . 83 • VARIABLE ET PLACE LA LONGUEUR 1 4 8 INC SEPARATR 84 • EN LNGTEXT , L 'ADRESSE EN ADRTEXT 149 CMP " 1 3 1 J DATA? 85 159 8Ea COpy 86 JSR PTRGET 1 5 1 87 STA FORPNT j SAWE 152 • �TOKEN I Z E " LNE INSTRUCT I CN
88 STY FORPNT+ 1 ;ADR DESCR 153 • DEF OU Lt<E L I GNE D' I NSTRUCT I ONS
89 STA SA8 , PO I NTEURS 154 99 STY SAC j PR HOVINS 155 TOKEN LDA TXTPTR i SAWE 9 1 LOY "$02 156 PHA jTXTPTR 92 DSClOOP LDA ( VARPNT> , Y 157 LDA TXTPTR+ l
93 STA LNGTEXT , Y 158 PHA 94 DEY 159 LDA .9 J COP I E
95 BPL DSCLOOP 169 STA $ 7 1 ;LA CI-flOIINE 96 1 6 1 LDA *.02 ; EN HEM 97 LDA INSTRUC 162 STA $72 ; Df:::\NS L E 9 8 CMP 1:1 1 32 : INPUT? 163 JSR HOVINS j 8UFFER 99 SNE ADRDRt-I 164
1 . 9 165 • ELLE N ' ACCEPTE PAS LN CODE SEUL 19 1 • $FD6F EST L ' INPUT DU MONITEUR 166 • AUSSI ON AJOUTE UN CODE NUL , ' : ' 1 9 2 • $0539 CONVERT I T LA CHAINE EN 1 6 7 • DANS LE BUFFER , I L SERA SUPPRIME 1 9 3 • FORMAT APPLESOFT , B I T 7 A a 168 • ENSUITE 104 • SE3E9 � SDA9A COPI ENT LA DONNEE 169 185 • DU BUFFER D ' ENTREE EN MEMO I RE , 170 LDX LNGTEXT 1 9 6 • DESCRI PTEUR POINTE EN FORPNT . 1 7 1 LDA M ' : ' ;HET ' : ' 1 0 7 172 STA $200 , X
1 9 8 JSR $FD6F 173 LDA .9 ;MET LE 1 0 0 JSR S0539 174 STA $20 1 , X , DE L I M I T R 1 1 9 LDA •• 175 TAX , Z ERO 1 1 1 LDY .2 176 1 1 2 TAX j DE L I M I T R 177 • S0560 EST LA ROUTINE DE
1 1 3 JSR SE3E9 178 • CONVERSI ON DES MOTS-CLES
1 1 4 JMP SDA9A 179 • EN CODE S , Y PASSERA LA NOUVELLE
1 1 5 189 • L(J-.IGUEUR
1 1 6 lE TROUVE L ' ADRESSE DE LA DERN I ERE 1 8 1 1 1 7 lE L I GNE 182 STA $ 1 3
1 1 8 183 JSR $0560
1 1 9 ADRD� LDY . 1 184 DEY
129 LDX 193 , D EBUT DE 185 DEY
1 2 1 LDA 1 9 4 , PROGR. 186 STY lNGTEXT ; UPDATE
1 2 2 SNE ADRTRNS 187 LDA "$FC ,lNG � ADR
123 LOOP STX ADRNlJ1 188 STA AORTEXT ; POUR
124 LDA S9C 180 LDA NS8 l ;HOVI NS
125 STA ADRNLt1+ 1 199 STA ADRTEXT+ 1 126 DEY ; U T ADR 1 9 1 PLA ; RESTAURE 127 LDA ($9B) ,Y ; L I Gt-IE 192 STA TXTPTR+ l , TXTPTR 128 TAX ; SUIVANTE 193 PLA
129 I NY , LA MET EN 194 STA TXTPTR
13. LDA ($9B) , Y ;$9B-S9C 195 1 3 1 ADRTRNS STX S98 196 COPY LDA $98 ,COP I E 1 32 STA S9C 1 9 7 CLC ; LA CHAINE 1 -:'>'" . _- LDA (S99) , Y 198 ADC SEPARATR ; DE LA VAR
Pom's nO 7 37
199 STA $7 1 ; OU DU 229 2 • • LDA $9C ; BUFFER 23 • • INSERT I ON DU NUMERO DE L I GNE 2. , AOC •• j A LA F I N 2 3 1 , DANS LES 2 OCTETS SUI VANTS 2.2 STA $72 ; OU PROGR 232 283 LOY LNGTEXT 233 INY 2.4 LDA •• ;MET LE 234 LDA ( ADRNUM) , Y 205 STA ( $ 7 1 ) , Y ; DEUMITR 235 CLC ,MET LE 286 LDA LNGTEXT 236 AOC INCR jNLt1ERO 2.7 LOX ADRTEXT 237 STA ($98) 1 Y ; DE L I GNE 2.8 LOY ADRTEXT+ l 238 INY 209 JSR HOVSTR 239 LDA (ADRNUH) , Y 2 1 . LDA . , ; INCREH. 24. AOC •• 2 1 1 JSR $E5F3 ; $ 7 1 2 4 1 STA ($98) , Y 2 1 2 242 LDA I NSTRUC ;MET 2 1 3 , INSERT I ON DE L ' ADRESSE DE L I GNE 243 8PL F I N ; � DATA' OU 2 1 4 )E SUIVANTE DANS LES 2 PREM I ERS 244 lNY ; ' OE F ' 2 1 5 , OCTETS DE LA L I GN E , AJUSTEMENT 245 STA ($98) , Y 2 1 6 , DES POINTEURS DE F I N DE 246 2 1 7 *' PROGRA/"I1E 247 , DEUX ZEROS LA OU DEVRA I T SE 2 1 8 248 , TROUVER LE DEBUT D ' UNE AUTRE 2 1 9 LDA $7 1 249 , L I GNE SI GNALENT LA F I N DE 229 STA ($98) , Y 25. , PROGRAt11E 2 2 1 CLC 2 5 1 222 AOC .2 252 F I N LDA O. 223 STA 175 253 TAY 224 lNY 254 STA ($7 1 > , Y 225 LDA $72 255 lNY 226 STA ($98) , Y 256 STA ( $ 7 l ) , Y 227 AOC •• 257 RTS 228 STA 176
GÉNÉRATEUR 9528- DA A8 81 A6 67 AS 68 08 9538- 90 86 l E AS 9C 85 I F 88
Récapitulation 9538- 81 98 AA C8 81 98 86 98 9549- 85 9C 81 9B 08 EB A5 ID 9548- 08 98 AS lE 85 9B AS IF
'94A9 . 95E2 9558- 85 9C A5 l B 18 9 6 E6 IC 9558- C9 83 F9 35 A5 B8 48 A5
94A9- 29 58 FF BA CA BD 9 8 9 1 9569- B9 48 A9 99 85 71 A9 9 2 94A8- 1 8 6 9 18 80 F6 83 E8 BD 9568- 85 72 28 04 E5 A6 18 A9 94B9- 9 9 91 69 9 9 80 F7 93 A9 9579- 3A 90 9 9 9 2 A 9 9 9 9 0 9 1 9488- 4C 80 F5 9 3 69 85 1 8 C9 9578- 92 AA 85 13 29 60 05 88 94C9- AE F9 11 A8 29 81 9 9 C 9 9589- 88 84 18 A9 FC 85 19 A9 94C8- AI 09 2A 85 18 28 81 9 9 9588- 81 85 l A 68 85 89 68 65 94D9- "A9 9 9 F 9 23 29 81 89 29 9599- 86 A5 98 18 65 IC 85 71 9408- 67 DO 29 52 E7 A5 59 65 9598- A5 9C 69 9 9 85 72 A4 18 94E8- 78 A5 51 85 7C 28 lA 06 95A9- A9 88 91 71 AS 18 A6 1 9 94E8- A5 98 69 83- B5 70 A5 9C 95AB- A4 lA 28 E2 E5 A9 91 29 94F8- 69 89 8S 7E 69 A9 9 A 85 9589- F3 E5 A5 71 91 98 18 69 94F8- ID A9 94 85 IC 28 E3 OF 9588- 9 2 85 AF C8 A5 72 91 98 9588- 85 85 84 86 85 A8 84 AC 95C8- 69 9 8 85 8 8 C8 81 l E 1 8 9588- A8 82 81 83 99 18 9 9 88 95C8- 65 ID 91 98 C8 BI lE 69 9519- 19 F8 A5 18 C9 84 08 1 1 9509- 89 91 9B A5 l B 1 9 9 3 CB 9518- 29 6F FD 29 39 05 A9 9 9 95D8- 91 9B A9 ee AB 91 71 C8 9529- A8 82 AA 29 E9 E3 4C 9A 9SE9- 91 71 69
38 Pom's nO 7
Un programme de test universel
En écrivant Je programme TEST, j'avais en vue un programme de lest général qui utiliserail des données interchangeables, el serait de préférence très court, puisque ce programme serait la partie commune à tous les programmes de test que l'on voudrai! réaliser, et serait donc stocké en de multiples exemplaires . 11 permet de créer des tests dans tout domaine à votre convenance ; il est en outre général au niveau du système, car il ne nécessite aucune configuration spécifique, grâce au générateur de lignes qui « autoécrira " les données sous forme de DATA.
Un examinateur patient TEST est un programme simple qui vous pose des questions sur un sujet donné, de façon exhaustive ou aléataire , et vous fournit la bonne réponse, Quand vous avez sélectionné un chapitre et un mode d'interrogation, il présente la question tandis que la réponse se trouve sous un cache, Puis, lorsque vous avez donné votre réponse, ou simplement appuyé sur RETURN, le cache disparaît pour laisser apparaître la bonne réponse, Le CURSEUR INVERSE, programme en langage machine qui se trouve sous forme de lignes de DATA, permet de réaliser le cache, Ainsi d'aiUeurs que la présentation du programme, notamment le cadre du sommaire et la page de titre , On peut faire énormément de choses avec le CURSE�R INVERSE ; c'est pourquoi je l'ai écrit sous forme relogeable et compatible avec d'autres routines binaires, Comme il utilise l'ampersand, il y aurait eu appropriation de celui-ci par la deuxième routine chargée sur la première si elle l'avait également utilisé ! Ce problème a une solution, que je vous propose plus loin. Les données que vous avez fournies seront rajoutées automatiquement à la fin du programme de test, à partir de la ligne 20000, sur des lignes de DATA. Pour créer un test différent, il suffit
Pom's nO 7
de supprimer les lignes 20010 et suivantes, el de placer DATA END à la ligne 20000. Les titres des chapitres sont la seule chose que l'on ajoute « à la main ,. sur le programme. Les lignes 100 et suivantes sont réservées à cet effet et affectées aux variables B$(1), B$(2}. A la ligne 100, le nom du programme affecté à la variable F$ peut aussi étre changé pour prendre le nom du test créé.
Un programme cybernétique Plutôt que de recourir au programme hiérarchisé classique avec un menu principal auquel on revient pour avoir accès à chaque section, on utilise une approche systémique permettant d'appeler le sommaire à partir de n'importe quel endroit. Lorsque le numéro du chapitre est demandé, appuyer sur « S ,. fait apparaître le sommaire ; la question est ensuite posée de nouveau et on indique alors le numéro de l'option souhaitée. Les options « cherche ,. et « numéro ligne » ne figurent pas au menu. On les appelle de n'importe quel point du programme, ainsi que chacune des autres fonctions. La description de chacune de ces procédures suit.
PROCEDURE DE TEST. Présentation en 3000, option test complet en 6000, test aléatoire en 4000. La ligne 4097 stocke les numéros de ligne de chaque question posée et teste si le numéro généré aléatoirement figure dans la liste ; ainsi, lors du test aléatoire, une question n'est jamais posée deux fois.
AJOUTE commence en SOOO. Les données sont stockées sur deux lignes de DATA, la première contenant le numéro de chapitre et la question, la seconde la réponse. ARRET débute en ligne 8000. On teste à la ligne 8000 le drapeau DR positionné à 1 pour indiquer que des données ont été entrées et sauvegarder, le cas échéant, le programme. CHERCHE et NUMERO DE LIGNE se partagent le même sousprogramme à partir de 2000, en
Denis Sureau
fonction de A, la variable réservée aux numéros d'options.
Problèmes d'interfaçage Comment utiliser simultanément plusieurs routines ayant pour vecteur l'ampersand ? La solution que j'ai adoptée dans la routine INVERSE consiste à sauter à l'adresse indiquée en 6-7 si rampersand est suivi d'un code autre que INVERSE, par exemple ici RESTORE, DATA, DEF, etc . . On place donc en 6-7 l'adresse du début de la seconde routine, augmentée du nombre des octets (inutilisés dans ce cas) qui précèdent les tests de syntaxe dans celle-ci, soit, dans le cas du générateur, 29 octets pour la partie initialisation. USR pourrait encore être utilisé pour une troisième routine, les positions $A-$B-$C n'étant pas utilisées.
Conclusion J'espère que ce programme vous aidera à contrôler vos connaissances dans un domaine, ou à les vérifier avant un examen, de façon facile et rapide. n y a bien sûr la nécessité de rentrer en différé les questions et réponses, mais cet exercice peut s'avérer utile pour mieux comprendre un texte.
En fait, il appel1e Ue crois} un programme complémentaire, qui apprendrait au lieu de tester, et fonctionnerait selon le principe de l'enseignement programmé. J'ignore si un tel programme existe. J'essaierai d'en écrire une version à l'occasion.
Liste des variables réservées A = numéro d'option A$O - libellé des fonctions B = hauteur sonore ou divers B$O = titres des chapitres C - durée du son ou divers DR - signale si des données ont été ajoutées F$ - nom du programme N % - nombre de questions R % = indice du tableau enregistrant les lignes lors du test aléatoire .
39
40
8 PRINT " BRUN GENERATEUR" 1 HYMEN: 38847: REN SOUSTRAI R E 16384 PO
UR 32K
3 Lct1EN: PEEK ( 1 1:i) + PEEK ( 1 16) lE 25 6 - 198e
4 REM PLACE EN 6-7 L ' ADRESSE DE LA PRDC EDURE OU DOIT POINTER L' AMPERSAND
LORSQU' I L EST SUIVI D ' UN CODE Dl fFERENT DE CELUI D ' INVERSE
5 N = 38e48 + 29: POKE 7 , N / 256; POKE 6 ,N - PEEK ( 7) lE 256
6 B : e : c : N : I : N : J = N 7 GOSUB 13888 : GOSUB 1 8 8 : GOTO 9999 9 REM ROUT INES FREQUENTES 1 1 POKE - 16368 , 8 : RETURN 12 PRINT TAB< 18) " OPTION "A$(A) : RETUR
N 13 B : PEEK < - 16384) : RETURN 14 FOR J = 1 TO 588 : NEXT : RETURN l :i N : PEEK ( 1 23) + PEEK ( 1 24) lE 256:
RETURN 16 POKE 7 7 3 , B : POKE 774 , C : CALL 778: RE
TURN 1 7 N � 8 : � RESTORE 28888 : PRINT "ATTEN
DEZ • . . " 18 READ AS ; I F A$ < ) CS AND A$ < ) "
FIN" THEN N = N + 1 : GOTO 18 19 RETURN
28 PRINT " CHAPITRE . " i : CALL - 868: GO SUB 23
2 1 I F CS = " S" THEN GOSU8 1888 : VTAS 2 3 , GCTO 28
22 RETURN 23 � INPUT CS: I F CS = • • THEN POP 2. RETURN 2' GOSUB 1 3 : I F • • 1 55 THEN POP 2. RETURN 27 GOSUB I l : WA I T - 16384 , 1 28: GOSUB
3 , I F B 3 1 4 1 OR B ' 168 THEN SU. I l : RETURN
2. POP , GOTO 18459 3. POKE 32 , 4 : POKE 33 , 38 : POKE
INT , RETURN 48 & INVERSE � , 38 , 6 , 3 : RETURN 58 INVERSE
34 , 5 :
52 VTAB 5 : HTAB 6 : PRINT " QUEST I ON "
1 GO
PO
56 VTAB I l : HTA8 7 : PRINT " R EPONSE EXAC TE"
�7 NORMAL : RETURN 68 A = PEEK ( 36) : PRJNT AS< I ) : & INVER
SE A + l , l , PEEK (37) , 1 : PRINT : RETURN
B8 VTAB 1 : HTAB 1 8 : GOTO 29 98 VTAB 4 : CALL - 958: GOSUB 58 : VTAB
1 9 : PRtNT ·VOTRE REPONSE " : B = 68 ; C = 39 : GOSUB 1 6
9 1 GOSUB 38 : VTAB 6 ; PRINT 8$: TEXT : G OSUB 48 : & INVERSE 1 , 48 , 1 2 , 5
92 VTAB 28 : & INPUT E$ 94 & INVERSE 1 , 48 , 1 2 , 5 : VTAB 1 2 : PRINT
... 95 GOTO 27 96 HCf1E 97 PRINT " F I N DE DONNEES " ! GOTO 27 99 REM VOS VARIABLES 1 8 8 F$ .. "TEST" 1 18 9$( 1) "" "PROG�T l ON " 129 B$(2) : " F I CHIERS· 1 2 1 8$(3) z "TABLES ET TABLEAUX· 122 9$(4) = " STRUCTURE DE DONNEES" 123 8$(5) � · PROGRAMMAT I ON STRUCTUREE"
124 8$(6) � "HODELE S : FONCT IONS COU�ES
125 8$(7) = "MODELES :METHODOLOGIE-126 8$(8) -ALGORITI-t1IQUE-138 RETURN 998 REM SOMHAIRE 1988 1 - 8 1848 TEXT : HOME 1845 PRINT : PRINT AS(3) ,FS 1847 VTAB 5 1859 1 - ] + 1 1868 I F 8$( 1 ) = • • THEN 1 1 1 8 1879 I F PEEK ( 37) ) 28 THEN PRINT "AP
PUYE2 SUR UNE TOUCHE · ; : GOSUB 1 1 1 8 : 1 = 1 - 1 : GOTO 1949
1888 PRINT TAB( 4) MIO. ( RS , I lE 5 - 4 , 5> j
1898 PRINT · -8$( 1 ) : PRINT 1 18 8 GOTO 1858 1 1 1 8 � INVERSE 1 , 9 , 1 , 3 : & INVERSE 1 8 ,
3 1 , 4 ,28 1 1 15 � I NVERSE I l , 29 , 5 , 1 8 : � INVERSE
1 1 28 1 1 38 1998 2988
28 1 8
28 15
2828 2998 3889 39 18 3829 3839 3848 3845
3947 3868
3 188 3498 3998 4888 48 1 8 4848 4858 4968 4878 4888 4898 4892 4895
4897 4 18 8 4 1 28 4998 5888
5858
5855 5868 5864
2 , 7 , 5 , 18 8 = 88 : C = 48 : GOSUB 1 6
GOTO 2 7 REM RECHERCHE/NUM L I GNE Hct1E : GOSUB 1 2 : VTAB 4 : PRINT "QU
ESTI ON : " j : GOSUB 23 GOSUB 1 7 : I F A$ = " F I N " THEN GQSU
B 97: GOTO 2888 I F A = 7 THEN PRINT - L I GNE : " ; GO
SUB 1 5 : PRINT N : GOTO 27
READ A$: GOSUB 99 : GOTO 2889 REM QUESTI ON VTAB 2 1 PRINT " 1 . SUR TOUT" PRINT M 2 . AU HASARD" GET A$ : N : VAL (AS) GOSUS 29 : TEXT : HOME GOSU8 1 2 : HTAB 1 8 : PRINT - CHAPITRE
M j C$ & INVERSE 9 , 22 , 1 , 3 VTAB 1 : HTAB 1 : PRINT M ESC POUR- ;
PRINT - QUITTER" ON N GOTO 6899 , 4889 RETURN REM TEST ALEATOIRE IF NOT N% THEN RETURN
R% = 8 GOSUB I l
N : INT ( RND ( 1) lE N% lE 2) + 1 � RESTORE N lE 18 + 19998 READ AS : I F A$ = " F I N - THEN 4859 GOSUB 25 I F AS < ) C$ THEN 4878 G05UB 15 fOR 1 - e TO R%: I F N = R%( ] ) THEN
495e NEXT I : R% ( I ) ::: N : R% : < 1 < 5 1 ) lE 1 READ 8$: READ A$ GOSUB 99 : GOTO 4858 REM AJOUTE I F PEEK ( 1 75) + PEEK ( 1 76) lE 256
) ( PEEK ( t95> + PEEK ( 1 86) lE 2 56 - 239) THEN PRINT -MEMOI RE SA TUREE- : GOTO 18
HOME : GOSUB 12: PRINT " "N%" QUES T I CNS-
GOSUB 58 VTAB 12 & INPUT 8$: I F 8$ = " " THEN RETU
Porn's nO 7
RN 5865 Gosue 38 5878 5888
VTAB 6 1 " INPUT AS TEXT : GOSue 89
5898 CS - CS + " , " + CHRS (34) + AS +
5 1 8 8 5 1 9 2 5 1 9 5 5 1 9 7 5 1 18 5219 5499 5999 6988 68 1 9 6 8 1 5 6829 6838 6848 6998 7888 78 1 1 7828 7838
CH� (34) " POP DATA CS
es - CHRS (34) + B$ + CHRS (34) &.: DATA es
DR - 1 :At- ." " F I N " 6c DATA At,
w. - w, + 1 GOTO 5858 REM TEST EX�UST 1 F " RESTORE 28888 READ A$I IF AS = "FIN" THEN 96 Gosua 25 I F At> < ) C$ THEN 68 1 8 READ En : REAC At> Gosue 98 : GOTO 68 18
INSTR. H<>1E Gosue 1 2 : VTAB 5 POKE 32 , 8 : PRINT PRINT " R - RECHERCHE UNE QUEST I ON "
1 PRINT 7848 PRINT · S - QUAND LE CHAPITRE EST •
, " DEMANDE .AFFI CHE LE SOHHAIRE" : P .,NT
7845 PRINT · o L - NUMERO DE L I GNE D I UNE" , "QUEST I ON " : PRINT
7847 PRINT "ESC - ARRETE LA PROCEDURE" , "EN COURS" : PRINT
7858 PRINT · LE NOM DU PROGRAMME ET LES " , · CHAPITRES SONT H I S AUX L I GNES·
7498 9888 8885
, " 188 ET SUIVANTES· TEXT : GOTO 27 I F NOT DR THEN 82'8 PRINT "NOM OU PROGRAMME : " ; F. ; : PR
INT • OK?" ; : GET A$ I I F AS - "N" THEN HTAB 1 9 : CALL - 968: INPUT
F$ 88 18 OS = CHRS (4) B839 PRINT OS " SAVE"F$ 8288 TEXT : HOME : PRINT "AU REVOI R ! - :
END 9999 NS - -TASI QRL - : REM INITIALES 99 19 RS ... • 1 I I I I I IV V V
9929 9858 9969 9878 9999
1 VI I VI I I IX X XI X l i X I I I X I V XV XVI XVI I XVI I I X I X
XX XXI XXI I XX I 1 1 XXIV )()(N XX VIXXVIXVI 1 1 XXIX xxx-
OIM Rr.< 59) GOSUS 1 7
N:I. - N / 3 H .... E REM MENU
19888 19895 188 19 18829 18838 18848 18858 19869 18879 19888 18 188
18288 18458 18588 1 8 5 1 8
18528 1 8 538
18688 1 1998 12988 12885 129 18 12828
12838 12848 12865 12866 12875 12888 13888 13838
13848 13858 13868 13878 13888
13998
1 3 1 8 8 19888
28888
TEXT : H<:l'1E PRINT " " F." , - PAR O . SUREAUVTAS 1 8
M ( 1 ) - -TEST-M(2) - -AJOUTE-AS(3) "" -Sa1"AI REAS(4) = - INSTRUCT IONS-AS(5) = - QUITTE � SAUVEGARDE AS(6) = - RECHERCHE-AS(7) ". - L I GNE-
FOR 1 = 1 TO 5: HTA9 22 - 1 * 2 1 GOSUS 68 : NEXT GOSua 12888 GET AS FOR A = 1 TO LEN (NS) I F M I OS (NS ,A , I ) < ) A. THEN N EXT : GOTO 18888 IF A < ) 1 THEN TEXT : H<:l'1E ON A GOSUS 3 8 8 9 , 5888 , 18 8 8 , 7 8 8 8 , 8 8 8 8 , 2888 , 2888 GOTO 18888 REH LOGO GOSUS I l FOR 1 = 1 TO 28
J = INT ( 1 / 2) � INVERSE 2 1 - 1 , 1 . 2 , 1 1 - J , J 1 2 NEXT Gosue 1 4 : GOSue 14 GOSUS 1 3 1 F B } 128 THEN RETURN
B - 38 : C = 1 8 : GOSUS 1 6 GOTO 12848 REM SON � If'.IJERSE FOR 1 3 778 TO 9831 READ B : POKE l , B I NEXT CALL 799: REM I N I T . INVERSE DATA 1 73 , 4B , 192, I36,288,5,286 DATA 6 , 3 , 248 , 9 , 28 2 , 2 8 8 , 245 , 174 DATA 5 , 3 , 76 , 1 8 , 3 ,96 DATA 32,88,255 , 186,282 , 1 89 , 8 , 1 , 2 4 , 1 8 5 , 27 , 14 1 , 246 , 3 , 232 , 1 89 , 9 , 1 , 18 5 , 8 , 1 4 1 ,247 , 3 , 1 6 9 , 76 , 1 4 1 , 24 5 , 3 , 9 6 , 28 1 , 158,248 , 3 , 188 , 6 , 9 , 168 , 8 , 152, 72,32, 245, 238 , 184 , 1 68,282, 158,24, 288 , 1 92, 4 , 144 , 24 1 , 1 6 5 , 26 , 133,37.5 6 , 19 1 , 2 7 , 133 DATA 27, 165,24,56 , 1 8 1 ,25, 133,25, 1 9 8 , 3 7 , 238 , 3 7 , 32 , 34 , 252 , 1 6 5 , 37 , 19 7 , 27 , 1 44 , 1 , 96 , 1 64 , 24 , 177,49 , 4 8 , 4 , 9 , 128,288 , 2 , 4 1 , 63 , 1 4 5 , 48 , 29 8 , 1 9 6 , 25, 144 , 239 , 1 76 , 223,255,8 RETURN REM *. T E S T .1
COPYRI GHT (C) 1982 DENI S SUREAU DATA F I N
Message aux créateurs de logiciel Nous allons bientôt commercialiser des programmes en plus de la revue Pom's, la rémunération des auteurs s'effectuant selon le principe des droits d'auteur.
Bien entendu, les programmes destinés à ce mode de distribution doivent être des produits finis, autant par la qualité dês programmes Que par celle de la documentation et par l'environnement visuel et sonore.
Nous sommes prêts à analyser vos propositions et à vous aider à transformer des idées en produits logiciels. Envoyez-nous vos contributions ; nous vous aiderons à diffuser ces programmes.
Pom's nO 7 41
BvVerba1im
DISQUffiES ET MINI DlSQUffiES TOUTES CONFIGURATIONS
- Certification unitaire 1 00 % sans erreur.
- Durée de vie : 30 millions de révolutions (standard de l'Industrie 3,5 millions de révolutions).
- Anneau de renforcement en standard sur le 5 1/4 ".
- 5 1/4 " en 48 et 96 TPI, simple et double face.
Importateur exclusif : BFI ELECTRONIQUE · 9 RUE YVART -75015 PARIS. Tél. 533-01-37.
Visicalc et traitement de texte
Je tiens à remercier ici Judith Kerlesz, une de nos fidèles lectrices, qui nous a donné l'idée de cet article en nous montrant comment mettre des minuscules dans un tableau Visicalc .
Visicalc avec des minuscules Ceux d'entre nous qui travaillent avec un Apple 1[ Plus sans la ROM minuscules regrettent parfois de ne pouvoir les utiliser dans Visicalc. En fail, cela peul se faire sans difficulté, quoique l'effort ne soit pas justifié pour un tableau d'usage peu fréquent. Par contre, un tableau à usage multiples, servant .il. l'élaboration de factures par exemple, est plus satisfaisant s'il peut exploiter les minuscules de l'imprimante. Le principe est relativement simple. ILe fichier Visicalc est un fichier TEXT que ['on peut modifier à l'aide d'un programme de traitement de texte. La procédure est par conséquent la suivante 1) Créer le tableau souhaité avec Visicalc 2) Sauvegarder le fichier correspondant avec {/SSFACTUREj (ou tout autre nom que . FACTURE ,.) Comme dans le livre . Visicalc sur Apple ", nous mettons entre crochets les textes à entrer au clavier pour Visicalc. 3) lire en traitement de texte le fichier FACTURE 4) Remplacer en mode édition les majuscules par les minuscules souhaitées 5) Sauvegarde le fichier sous un nom qui nous rappelle la présence des minuscules, par exemple FACT.MIN
Porn's nO 7
Quand on souhaite imprimer une facture, il suffit d e faire [/SLFACT.MIN] en Visicalc, d'y ajouter les informations propres à la facture considérée, puis de lancer son impression. Quand Visicalc lit des minuscules, il fait apparaître à l'écran les majuscules correspondantes. C'est uniquement à J'impression {ou avec les lettres accentuées} que J'on voit qu'il y a effectivement des minuscules aux endroits nécessaires.
Les utilisateurs d'Apple Ile pourront aussi constater que le programme Visicalc fait apparaître des majuscules à l'écran, bien que les minuscules existent avec ce matériel.
Bien entendu, si J'on veut éviter de perdre du temps en pratiquant ainsi le va-et-vient entre Visicalc et le programme de traitement de texte, il faut se contenter de majuscules pour les informations relatives à chaque facture spécifique.
Cette façon de travailler suppose que voire programme de traitement de texte sache lire des fichiers texte . Il n'y aura pas de problème si vous travaillez avec Applewriter Il, Magic Window ou tout autre système utilisant des fichiers TEXT.
Si par contre vous possédez le célèbre Applewriter l, vous pouvez tout de même vous en tirer en utilisant les programmes TEXT to Applewriler 1 et Appelwriter 1 10 TEXT présentés ci-dessous.
Nous fournissons en réduction un exemple de faclure réalisée pour Pom's. Le fichier FACT.MIN se trouve sur la disquette d'accompagnement. Le lecteur pourra constater sans effort que la solution propo-
Hervé Thiriez
sée dans cet article fonctionne sans moindre problème. Passons maintenant aux programmes de conversion entre un fichier TEXT et le programme Applewri-1er 1 .
TEXT to Applewriter 1 Afin de convertir un fichier TEXT en format Applewriter 1, il suffit d'exécuter le programme suivant. Outre son intérêt pour l'utilisation liée à Visicalc, ce programme permet d'exploiter les possibilités d'Applewriler avec tout fichier TEXT, en particulier pour l'édition de fichiers EXEC. Une autre application de ce programme de converssion consiste, après avoir effectué avec [/PF-E36 RETURN FACTURE] la sauvegarde du lableau à imprimer (et non plus de la description du tableau), à le convertir en format Applewriter. Le tableau Visicalc peut alors être intégré avec CTRL-l dans un rapport édité en Applewriter. Notre but se limite ici à vous fournir un bon outil de travail. Nous ne commenterons donc pas le mode de fonctionnement de ce programme. Nous laissons le lecleur exercer sa sagacité dans cette analyse.
Applewriter 1 to TEXT Ce programme, à l'opposé, transforme un fichier Applewriter quelconque en fichier TEXT. On peul ainsi créer un fichier EXEC en traitement de texte, et le convertir grâce à ce programme en fichier TEXT.
• • • j • • •
43 1
44
E d i t i on s MEV
4 9 � r u e LaMartine
78 0 0 0 Ver s a i l l e s
r
L
Factvre N o .
Date 1 0 / 0 1/83
STE . MICROFANA & CIE
1 3 . RUE DE L �APPLE 1
7 5 0 1 6 PARIS CEDEX 89
1 231
Références GLian t i t é P r i x Ur't Total HT
Recue i l de POM I S
POM ' S nUMéros 7 à 1 0
D i squettes recue i l
D i s Q IJettes NOS 7- 1 0 D i sqlJette V i s i c a l c
E:o i tes 1 0 V e r b a t i M
T - S h i r t s
---------
1 1
1 1 1 2 4
---------1 1 2 . 1 5 1 1 2 . 1 5
---- - -----Total H . T .
TVA A ?;( ----------TOTAL TTC
1 2 6 . 48 147 . 5 5
6 3 . 24 2 0 0 . 0 0
42 . 16 ---- - -----
T o t a l H . T .
TVA 1 8 , 6 % - ---- - -- - -T o t a l T T C
Total à pa'jer • • • • • • • • • • • • • • • • • • • • • • • • • •
---------1 1 2 . 1 5 1 1 2 . 1 5
- - - ------224 . 3 0
1 5 . 7 0 - --------
2 4 0 . 0 0
1 2. 6 . 48 1 "'17 . 55
63 . 24 4 0 0 . 0 0 168 . 63
--- - - - ---
9 0 5 . 9 0 168 . 50
- - - ---_. _ _ . 1 0 74 . 4 0
1 3 1 1 . 4 0
E n v o t r e a i M a b l e règleMent à r é c e p t i o n de facture
Editions MEV Bureaux : 59, 84 de Glatigny 78000 - Versailles g (3) 918-13-07
SARL .. u e'piul de 20 000 F - RCS Verlaille. B l22 1]5 ]]7 - SIRET 322 8]5 l]7 000]9
�-" -
Pom's nO 7
TEXT to Applewriter 1 1 8 REM ••• TEXT TO APPlEWRITER .XX
28 TEXT : HOME :OS : CHRt ( 4 ) ; ONERR GOTO 18e
38 DATA 1 69 , 1 , 1 33 , 38 , 1 69 , 25 , 1 33 , 3 1 , 32 . 12,253 , 168
48 DATA 8 , 9 , 128,28 1 , 1 4 1 , 248 , 1 2 , 28 1 , 168 , 1 44 , 24 1 , 28 1
58 DATA 224 . 144 , 2 , 233 , 97 , 1 8 5 , 64 , 145 , 3 8 , 238 , 38 , 288
68 DATA 227,238 , 3 1 , 28 8 , 223: FOR l "" 7 68 Ta 888: READ J : POKE l , J I NEXT
78 HTAB 5 : INVERSE : PRINT • CONVERS 1 ON TEXT -=) APPLEWR ITER- ; NORMAL : V TAB 6 : INPUT - F I CHIER A TRANSFERE R : - ;N$ I PRINT
88 A$ = -DU DRIVE : e ; Gosue 1 38 : 0 1 = D l
PRINT lAS = -AU DRIVE : e ; Gosue 138 : 02 "" D
98 PRINT OS-OPEN-N$- , 0 - 0 1 : PRINT ()$- REA O-N$; CAlL 768
188 PRINT OS-CLOSE - ; POKE 2 1 6 , 8 : POKE 6 488 , 1 3 1
1 18 0 - PEEK <38> + PEEK < 3 1 > • 256 1 P OKE 0 , 96 : PRINT ; PRINT OS-BSAVET EXT . -N$- ,A$ 198e , l - O - 6399- , 0-02
128 PRINT 1 PRINT -TRANSFORMATI ON TERNI NEE • • • • : END
138 PRINT At, j : GEr M : I F A$ < · 1 " OR A $ ) · 2 " THEN 138
148 0 :: VAL (AS> : PRINT 0 : RETURN
Applewriter 1 to TEXT 1 8 28
38
48
'8
••
7.
.8 •• 1.8 I l . 128 13. 14. IS8
REH ••• APPLEWR ITER TO TEXT ••• TEXT : HCI1E 1 [)$ = CHRS (4) 1 CNERR
GOTO 148 PRINT " • i : It-IJERSE : PRINT " CCNJE
RSICN APPLEWR ITER """") TEXT" : NORM AL
VTAB 4 : INPUT · F I CH I ER APPLEWR ITER 1 TEXT . " ; N$ : PRINT : PRINT "METTRE LA DI SQUETTE DANS LE DRIVE 1 "
VTAB 8 : PRINT "APPUYER SUR UNE TOUCH E POUR CONTINUER" : GET A$ : PRINT : PRINT O$"BLOAOTEXT • • N$ : VTAB 8 :
GALL - 868: PRINT " F I CHIER "N$. CHARGE . . . •
VTAB 1 8 : INPUT "A TRANSFERER SUR QUE L DRIVE ? " ; 0 : I F 0 < 1 OR 0 ) 2 THEN 68
PRINT : PRINT "ATTENDEZ LE MESSAGE D E BONNE CCNCLUS I ON , LE PROCESSUS E ST ASSEZ LONG . . . · : AOR = 648 1 : PR INT O$" OPEN"N$" , 0 " 0 : PRINT [)$"WRI
TE"""" A :: PEEK (ADR) :AOR m ADR • 1
I F A ) 223 THEN A � A 7 64 I F A ) 1 9 1 THEN A - A • 32 I F A ( 32 THEN A s A . 192 I F A < 64 THEN A = A • 128 I F A = 96 THEN 158 PRINT CHRS <A> ; : GOTO 88 PRINT : PRINT O$" CLOSE " : PRINT : PR
INT " TRANSFORHAT 1 ON TERMINEE •
Micromos : Les pionniers des années 80 • Disques durs à cartouche amovible sur
APPLE Il et assimilés . .
• Mono o u multipostes
• Sous DOS 3.3
• De 10 + 1 0 à 1 0 + 130 Mo en ligne sur un seul slot APPLE Il
• Tous nos produits sont compatibles avec l 'APPLE Ile
Laboratoire : 17 , Plateau de la Ravinière - 95520 OSNY - Tél. (3) 032-16-71 - (3) 032-37-78
Porn's n O 7 45
46
Hello corrigé Thierry Le Tallec et Jacques Tran - Van
Programme HELLO du Pom's nO 6 (page 34) Récapitulation corrigée
I9ID.CFD
1980- 21 2f FB 1811- 21 58 FC 21 89 FE 21 '13 181&- FE (IIJ D5 IJ C? 90 Fi 16
1i828- 21 20 Ff 4C DI 13 21 51
1828- AS A9 D3 BD Il 90 A9 ft
10- BD 81 90 Al 18 U 19 110 1838- 14 IC 90 A6 � E8 DI! F7 1841- AI 9A A9 98 2tl 8C 98 Al
lB4&- 12 86 22 211 58 FC CA 211
1851- 62 lB M fi: 89 37 IF FI 1858- IF tA " FB 18 EE 67 9B
1868- DI 13 EE 68 ft! 28 DI FI 88&8-- 88 œ ES' 2C 8J CI (() " 1871- El AC I l El 2C 81 C8 Cf 1879- 4C œ 14 Ct 28 FI 18 Cf 188t- 21 œ 19 CI te 01 15 4C 1888- 13 19 E6 12 AI ES 94 FB 1891- A5 AI 18 69 23 AS 85 FB
I� Cf Il Ft El lt2 lB BI I l IBM- FI 52 OD D8 lB DI E9 ct! IlIA&- rA œ F3 M F8 88 88 BI .8IIt- Il III En 87 88 BI Il 38 8889- Dl III EC D7 III E4 lB 91) 19CI- M 15 E8 Et 19 DI F5 2t
Ieœ- 69 9B 21 19 18 AI FC A9
1801- 2f 211 71 99 2t JE 9B 84
la- lE lM Il A2 Ji 80S IF A9
ISEI- DI 85 11 BI lE 91 18 ct! 18E8- DI F9 E.s IF E6 Il l'A DI
18FI- F2 21 58 FC A9 Il 85 12
18F&- DI 119 AS 86 18 69 23 91
1"1- 14 E6 12 A9 lB AS 84 l'
1989- A:i 88 Cf 28 91 IJ 4C 8F 1911- IS' C'1 14 DI lB 85 21 85
1919- 21 21 58 FC M 86 f6 "
1921- III lA M BI I l 31 03 F'
It2S- U 9D lt 96 E.s U CS AS
1931- 12 lA lA lA lA Il Il 90 19'39- I l S'& ca 98 90 13 96 AS' 1941- FF 85 13 BI Il 31 M 4.s 1S'48- IJ 46 13 29 i"F 90 82 96 1951- A2 17 lA lA 81 13 CA DI
1959- FA II) AS lB 2S 13 28 87
19"- 19 AS " Cf lB 81 12 69 1968- 2C 69 94 21 B7 19 lt2 IF 1971- ct! BI Il Cf AI 91 &4 Cf ma- 81 81 F5 21 ED FD CA DI 1991- EF 21 SE FD 4C FA 88 21
1" ED Fa fi? ÇiJ 41; ED FD 21
1991- 2F FB AI IF 84 24 AS' li
.� 85 17 28 58 FB B9 � lB
19At- " Ff 13 88 DB F7 98 AE
1MB- F6 87 21 24 ED 2t 9C Ft 1988- A9 15 85 24 (Il &7 9B AD
8998- 68 9B 211 24 ED AI If B9 1ge1- Be lB 99 18 14 88 It F7 19C8- li 2f FB A9 ID 8'5 24 21
1908- 9C FC Al 6A (IIJ 89 99 C9
1909- 8F DI! 12 Al 68 BE 00 17
119E1- AI ID B9 cs lB 99 Cf 17
UEe- 98 DI! F7 46 14 4& 13 2t
I9FI- 8C FD C9 AI DI 13 4C � 19fB- 98 C9 Ni DI le A9 69 AIl lAIt- FF 00 89 'lB II: 88 'lB DI
I",U- 80S C9 00 DI 16 "" If AI IAII- 90 DI Er Cf 95 DI 18 A9
tAIe- 12 8D EA 87 5) 68 M 4C 1A2I- ID 18 C9 88 111 14 A9 Il tA2&- DI Ef C9 98 ail " 85 17
1A3I- A9 ]= BD 00 17 DI 94 C9
lA38- IIC � 19 85 13 29 7f 00 M4I- DO 17 DI AB C9 84 DI "
tA4&- 85 i<1 46 Il Il EF C9 (If 1A5I- FI 58 C9 81 91 99 C9 DB lAS&- BI 9S C9 tl 91 12 E9 2C WI- E9 95 C5 ft B8 89 lA lA
lA6&- M OC " 9& 80 Il 9& 48
1A7I- 29 -= 21 FD ID 68 � 4A tA79- 4A 4A '9 11 85 12 fi) 12
WI- " 8S IC BD 13 " 85 Il lA8&- AI lE BI tl 99 oc 17 99
1i198- 74 M 88 DI F5 24 13 Il
tA9&- 2& 211 87 lA BI 81 49 lit IAAI- 91 11 A2 82 211 62 8B 41;
lM&- '0 18 2t 58 Fe A2 " li
8AB8- 94 ID 28 8C FD 38 FI 24
lA88- lE Il lIA Al 14 DI Jo: 24
IACI- 14 18 10 211 87 tA BI Il lAC&- Il lM Al lA 08 31 A9 75
8ADe- BD ca B5 M M 8D C4 B5 tAO&- Al 85 28 94 16 4C 10 18
w .... AS IIC DI 13 4C C6 AS C9
WB- t4 FI 38 91 14 Al 80 DI
WI- ID C9 12 FI 31 A' 21 21
we- B2 AS FI � Al Il El t4
1811- 18 211 DO FD 21 91 FE 21
.� 12 A7 2t lM FE 21 9C Ft IS11- 21 IC FD 28 FI 91 4C sr: IBI&- IS' 21 E3 13 28 B5 87 91
1821- 14 Al 18 DI 09 61 21 69
lB2&- 98 211 IS' 88 AD Il 'f7 BD
1838- Il 98 AB FI 17 AD 82 '7
1838- 211 FO 18 EE FI B7 28 19
1848- 8B AIl Il 89 le 98 99 Il lB4&- 98 C8 DI F1 AC le 97 AD
8858- ID S'7 21 FD 19 AI ta A9
1858- 96 21 71 98 28 19 lB 4C 1861- A6 \lA BE F4 87 aoS lE III .868- .. II: EB B7 lM lit lM '1
8811- A9 Il 85 12 28 71 9B A9
.878- IF AIl I l 21 FD 8B 28 19
1891- '8 EE FI 87 CE ED 87 Il .889- FS AD ED ce AD EE C8 Il
1899- 12 85 JE 61 SE BB es A9
1998- '6 ml CI 85 AD 68 /lA BD
'IIAI- CI B:'i 4C Od 13 fi. lE 00 IEN- lIA Dl 02 00 lIA 2D 2D l' 1II1II- IF ID 27 \3 2D 2D A8 AI
1889- D6 Cf ct ré M 03 Ci Cl
'BCI- D4 Ci os 02 03 AI cc C9
tOCS- Cl D2 C5 03 16 IF 14 12
1801- 15 21 13 18 IF 19 18 AI
,9» M M AI AI Cl Cf 03 Cl 11E1- C2 D4 CE Cf AB C3 cs CI
.BE8- 02 C7 C5 Cl! cs CE D4 AI IBFI- C4 Ci AI cc A7 C9 Il D4
.1F8- 0 Cl cs D2 te sc Et B7 lefl- 80 ED 87 01 A:5 le � BI IC18- S t:I BI 31 NJ .. 96 85
ICII- 14 [9 13 AS If> Il 96 � ICI&- 15 E9 Il 21 71 9B 21 3E IC2I- 9B 21 78 7B 18 13 A6 1"
le2&- M t5 28 96 FO AE '2 96 ml- AD 13 'l' 28 41 Ft .: BF IC»- 90 II. 14 " 6D 1. 96 85
ml- tE 95 '1' AD Il 96 6918 .C4&- 85 98 85 Mt fil ff NI A' 1(58- 17 28 71 9B 28 lE 99 85
.cse- 08 II) Il 88 29 78 9B 311
,COI- os « 66 D5 A9 01 II) [7 'C68- 90 28 9E A5 te II. 9) E7
un- 90 21 .. FI 21 D4 A? 38 IC78- EO 81 96 85 rA A9 96 EO IC9I- '1 96 85 cs 38 AS CA E9
IC8&- 12 AS A5 cs [9 .. 28 71 ICft- 9B 21 JE 9B 21 78 9B 31 .C9&- 90 4C Et EF Ai 8C 81 Il '('AI- FI 21 SI) Et B7 cs BI Il
'CAS- 80 ED 87 lM 16 AI E8 A9 lœa- 87 211 85 B7 81 42 A4 "
IC89- cs � 12 E6 12 EE FI 87 ICCI- Dt oc 4C 511 A7 Il Il AI
ICC&- Il lM Il A9 'f7 85 12 sc
tCOl- FI B7 80 FI B7 61 211 D4
la. A7 85 48 A9 16 li :J!I Ft 8CEI- 21 lA Fe 211 BE FO AlI BF IŒ&- A'I 90 sc F2 13 8D F3 13
ICFI- 49 A!5 BD F4 13 24 17 61
ICF&- li 78 9B 4C IF 90
Porn's nO 7
Gestion de masques en BASIC
Pour commencer, rendons à César ce qui lui appartient ! Les routines présentées ci-après s'inspirent largement des principes développés pour la gestion des masques d'entrée/sortie de l a carle MEM/DOS 6 502 . Elles ne prétendent pas toutefois, c'est évident, atteindre le même niveau de performance, tant en ce qui concerne la facilité d'utilisation (gestion conjointe des masques et des variables) , que le stockage sur disque (recodage des informations) ou la rapidité d'accès (stockage des masques en mémoire RAM après leur ouverture . . . ) .
Noire ambition se borne à vous offrir un utilitaire qui, combiné avec la routine d'INPUT publiée clans le numéro 6 de Porn's, vous permette de réaliser une gestion d'écran plus souple el plus complète que par les seules instructions du BASIC.
Routine de gestion de masques Le principe consiste â « dessiner . le masque directement sur l'écran, puis â sauver la page TEXT correspondante pour un chargement ultérieur â partir de vos programmes. Le programme Applesoft GESMASK vous permet, dans les traitements CRÉATION et MODIFICATION, de réaliser ces « mise en pages _. Quelques touches de fonction ont été prévues pour faciliter ce travail : • Déplacement vers la droite ou la
Pom's n" 7
gauche sans affecter le contenu de l'écran par les touches « - _ et « - -. • Déplacement vers le ba, poe RETURN. • Déplacement vers le haut pa, CTRL·R. • Passage en mode INVERSE par CTRU • Passage en mode NORMAL par CTRL·N . • Décalage de tout l'écran vers la droite à partir d'un point donné par CTRL·D. • Décalage de tout l'écran vers la gauche à partir d'un point donné par CTRL·G. • Répétition verticale d'un caractère par CTRL-V (il faut se placer sur le caractère concerné, puis faire CTRL·V). • La touche REPT conserve sa fonction habituelle. • La touche ESC permet de valider l'écran et de le sauver sur disquette {ou de revenir au menu en cas de consultation} .
Vous constaterez rapidement qu'i! est plus agréable de réaliser par ce moyen des écrans complexes ou " esthétiques _ que d'utiliser une suite d·instructions BASIC telles que VT AB, HT AB et autres PRINT. .
De plus, si vous perdez de la place sur disquette (chaque écran occupe 6 secteurs) , vous en économiserez en mémoire centrale, l'encombrement de vos programmes étant réduit.
Gérard Michel
Hard-Copy TEXT Cette routine « standard _ vous permettra : • d'imprimer vos masques afin de repérer l'endroit où seront positionnées les variables (paramètres H et V qu'i! faut fournir à la routine d'INPUT). • d'imprimer des écrans à partir de vos programmes après consultation (vair le programme Applesoft MASK.DEMO)
Impression paramétrée Pour éditer sur imprimante des données sous une forme quelque peu présentable, il faut bien souvent commencer par définir un tableau à la main. 11 faut ensuite jongler avec les SPC, LEFT$. â l'intérieur du programme BASIC pour retrouver le tableau voulu sur l'imprimante.
La solution proposée ici consiste , une fois encore, à dessiner le tableau sur l'écran pour le reproduire ensuite sur papier. Les masques correspondants peuvent être créés par GESMASK. Chaque ligne d'impression est repérée par deux caractères de « contrôle • identiques entre lesquels elle doit se trouver. Ces caractères peuvent être n'importe queHe lellre de A à Z affichée en INVERSE sur l'écran (ceci impose de ne pas mettre de lettres en INVERSE dans les lignes à imprimer) . Deux lignes différentes doivent en outre comporter des
OLlVEnl PRAXIS AVEC INTERFACE APPLE
5400 F h.t. L'i�primonte qui est aussi une machine à écnre. Marguerites interchangeables.
TOTALE FORMATION 114, o� Chorles.<:Je-Goulle 92200 Neuilly · Tél. 745.62.71
•
47
48
caractères de contrôle différents. Le programme MASK.DEMO fournit une illustration de ce type de traitement (si votre interface/imprimante réalise une impression simultanée à l'écran, rajoutez PRINT CHR$ (9)
"80 N" après chaque PKIF 1 de ce programme) .
d'INPUT présentée dans le numéro 6 de Pom's. Il est difficile de ra répéter ici, d'autant que le mode d'emploi peut aussi être découvert par tâtonnements ou, dans le pir.e des cas, par analyse du programme !
Mode d'emploi Le lecteur est prié de se reporter au mode d'emploi décrit dans la routine
Programme GESMASK
1 9 HJMEH: 37349 29 D$ : CHR$ ( 4) : 0 1$ = CHR$ ( 13) + 0$ :
PRINT �" BLOAO INPUT , OBJ" I PRINT O$"BLOAO MASK I N . OBJ" : PRINT O$"B
LOAO HCT .OBJ" 39 ONERR GOTO geeO 40 GOTO 308 78 VTAB 22: HTAB 1 : INVERSE f PRINT ZM$
; : NORMAL : INPUT " ? " ; Z$: VTAB 2 2 : GALL - 868:Z$ = LEFT$ ( Z$ , 1 ) : I F Z$ : " 0 " OR Z$ - "N" THEN RETURN
7 1 GOTO 70 80 REM 90 REM ROUTINE D ' I NPUT tOO REM 149 VTAB V I HTAB HI PRINT LEFT$ (Po.,L
0) " " ' 1 VTAB V : HTAB H : I F ME = 2 OR X = 1 THEN PRINT ZY$<LL) : J F 8% = 8 THEN 168
150 VTAB V: POKE 8,TY: POKE 36 , H - 1 : P OKE 7 , LO : CALL 37350
154 LC = PEEK (9) : E = PEEK (6) : I F E = 9 THEN RETURN
156 ZZ. - " " : PRINT SPC( LO - LC) : I F L C = 0 THEN 168
158 FOR ZZ - 1 TO L C : Z = PEEK <784 + Z Z) - 128:ZZ$ = ZZ$ + CHR$ ( Z ) 1 N EXT
162 1 F TY < 3 THEN RETURN 163 I F M I OS ( Z Z$ , 2 , 1) s " / " THEN ZZ$ =
" 0 " + ZZ$ 164 I F MIO. ( Z Z$ , 5 , 1 ) = " / . THEN ZZS -
LEFT$ ( Z Z $ , 3 ) + " 0 " + R I GHT$ ( ZZ$,4>
165 I F lEN ( Z ZS) < ) 8 THEN Z$ = ME.( 3) : GOSUB 190 : GOTO 149
166 Z4 = VAL < MIO. < 2 2 $ , 4 , 2» : IF VAL ( LEFT$ (ZZ$,2» ) 3 1 OR Z 4 ) 1 2 OR Z4 . VAL < R I GHT. < Z 2. , 2» (
= 0 THEN 2$ = ME$(3) : GOSUB 199 1 GOTO 149
167 RETURN 168 J F HE - 2 OR x' = 1 THEN VTAB V : HT
AB H : ZZ$ - ZY$ ( lL) : PRINT ZZ$ SPC ( LO - LEN (ZZ$»
169 RETURN lBe REM 190 VTAS 2 1 : HTAB 1 : GALL - 86B: INVER
SE : FOR Z z 1 TO 159 : Z 1 = PEEK ( - 16336) : NEXT : PRINT Z$ j : NOR MAL : FOR Z = 1 TO 250 0 : NEXT : H TAB 1 : GALL - 868: RETURN
300 DATA 9 , 2 B , I , 2 , 1 7 , 36 , 1 , 1 3 1 8 FOR 1 = 1 TO 2 : REAO ZV/'( J ) ,ZH%( J ) ,
ZL.X< I ) ,TY"/,< J ) : NEXT 328 Po. = " • • , • • , • • • • • • • • , • • • • , • • " 488 TEXT : HOME : PRINT D I . " SLOAO GESHA
SK I , O I " 1 REM PREMIER MASQUE DU
PROGRAf11E 485 V 1 4 : H = 28:LO - I :TY .... 2 : X "" 8 1 ME
""' 8 : 8% = 8 4 1 8 E = 8 l GOSUB 1 4 9 : I F E = 9 THEN 4 1 8 428 ZY. = VAL ( Z Z$) : I F ZY. < 1 OR ZY. ) 6
THEN 4 1 8 438 1 F ZY. = 6 THEN HOME : END 448 V - 1 7 : H = 24:LO = 9 1 TY "" I : LL - 1 458 E = 8 : GOSUB 1 4 9 : I F E = 9 THEN 485 468 ZY$( I ) E ZZ$:M$ � ZZ$: ZHS & " ENREGIS
TREMENT CONFIRME" : GOSUS 78 : I F Z • � MN" THEN X = I l GOTO 458
478 HOME : PRINT OS"BLOAO GESHASK2" : X -. 8 :HE - 8 : 8% = 8 : REM DEUX I EME M ASQUE DU PROGRAMME
48B V - 7 : H � 29,TY = 2 : LO K I : E � 8 : GO sus 149: I F E '" 9 THEN 488
498 2Y$( I ) = Z Z. : O z VAL (ZZ$) : I F 0 < l OR D ) 2 THEN X = 1 : GOT0 488
588 I F ZY. < ) 4 THEN 568 5 1 8 HE : 8 : 0Y. = 2 1 X = 8 528 FOR LL = DY. Ta 3 : L I = LL - I : V - ZV
Y. ( L I ) : H '" ZW, < L I > : LO = ZL/.< L l> :TY - TY'/. ( L D
525 E "" 9 : GOSUB 1 4 9 : I F E ... 9 AND L L -2 THEN LL - 3 : NEXT :X = 1 : GOTO 488
538 I F E � 9 THEN LL = I : X '" 1 : GOTO 55 8
548 2Y$(LL) = ZZ$ 559 NEXT ; S = VAL <ZY$(2» : E$ = ZY$(3)
: IF S ( 1 OR S ) 5 OR (E$ < ) " O· AND E$ < ) "NM) THEN �/. E 3 : X
s i : GOTO 528 568 GOSUB 79 : I F Z$ ... "N- THEN X "" 1 : G
OTa 488 578 Z = 8 : HOME : PRINT OI$" BLOAO"HS" , O "
0 : ON ZY. GOTO 688 , 6 18 , 628 , 638 , 659 688 I F Z - 8 THEN 98 1 8 682 CALL 3758 8 : R EM ROUTINE DE GEST I ON
DE MASQUES 685 POKE 3 4 , 2 4 : PRINT O I S " 8SAVEMHS " , A I 9
24 , L I 8 24 " : GOTO 488 6 1 8 GALL 37583: GOTO 685: REM ON SAUTE
LE " HOME" DE LA ROUTINE 628 POKE 36 , 8 : POKE 37,23: CALL 37537:
GOTO 488 : REM ON SAUTE O I RECTEHE NT AU " JSR VTAS- DE LA ROUTINE
638 PRJNT OS"PRM" S : I F E$ - " O · THEN P RINT CHRS (9) " 88N"
648 GALL 37989: PRINT Dl$"PRM8 " : GCTO 4 9 8 : REM ROUTINE DE HARO-COPY TEX T
658 ZHS - -ANNULAT I ON CONF I RMEE " : GOSUS 78 : I F Z$ = "N- THEN 488
668 PRINT Dl$" OELETPM$: GOTO 488 9898 2 = PEEK (222) ; I F Z "" 6 AND Z% =
1 THEN 6BB 9 B I 8 I F Z Y. = 1 THEN Z$ = "CE MASQUE EXI
STE DEJA " : GOSUB 198 1 GOTO 488 9B28 Z$ = -CE MASQUE N ' EX I STE PAS" : GOSU
B 198 : GOTO 48B
Porn's nO 7
Programme MASK.DEMO 1 9 HIMEM: 3734e 28 D$ = CHRS (4) : 0 1$ = CHR$ ( 1 3) + D$:
PRINT D$"8LOAD INPUT , OBJ - : PRINT QS" BLOAD PARA .OBJ"· : PRINT [)$"BLO
4. 45
AD HCT . OBJ" GOTO 30e REH
46 REM PLACE A L ' ADRESSE $6 LE RE DE CONTROLE EN INVERSE
50 2 = ASC <2$) - 6 4 : POKE 6 , 2 : 839: RETURN
REH
CARACTE
CALL 38
55 7. VTAB 22: HTAB 1 : II'lJERSE PRINT ZMS
i : NORMAL : INPUT · ? " ; 2$ ; VTAB 22: GALL - B66:2$ = LEFT$ ( 2$ , 1 ) ; I F Z$ = · 0 · OR Z$ = " N " THEN Rf:. , :....,"�
7 1 GCTO 79 138 VTAB 22: HTAS 1 : INVERSE ; PRINT . ,
RETURN' OU ' ? ' POUR IMPRESS I ON" ; : NORMAL : GET Z $ : I F ASC (2$) < ) 13 AND 2$ < ) " ?" THEN 138
148 VTAB 22: HTAB 1 : GALL - 868 142 I F Ase ( 2$) = 1 3 THEN RETURN 145 POKE 34 , 24 : PRINT DIS"PR* I " : GALL 3
7989: PRINT D I S " PR.e " ; RETURN 149 VTAB V : HTAB H : PRINT LEFT$ < P O $ , L
0) ; : VTAB V : HTAB H : I F HE = 2 OR X = 1 THEN PRINT ZY$(LL) : I F �/. :: 8 THEN 168
159 VTAB V : POKE S , TV : POKE 36 , H - 1 : P OKE 7 , LO : CALL 37358
1�4 LC = PEEK (9) : E = PEEK (6) : I F E = 9 THEN RETURN
1�6 ZZ$ 2 " " : PRINT SPC< LO - LC) : I F L C = 8 THEN 168
158 FOR ZZ = 1 TO LC : Z K PEEK (784 • Z Z> - 128:ZZ$ = ZZ$ . CHR$ < Z ) : N EXT
162 I F TY < 3 THEN RETURN 163 I F M I O. < Z Z $ , 2 , 1 ) = " / " THEN ZZ$ =
" 8 " • ZZ$ 164 I F M I O. < 2 Z$ , 5 , 1 ) = "/" THEN ZZ$ ..
LEFT$ < Z Z$ , 3) • " 8 " . R I GHT$ ( ZZ$,4)
165 IF LEN ( Z Z$) ( ) 8 THEN Z$ = ME$< 3) : GOSue 198 : GOTO 149
166 Z 4 "" VAL < M I O. ( Z Z$ , 4 , 2» 1 IF VAL ( LEFT$ ( Z Z $ , 2 » ) 3 1 OR Z 4 ) 1 2 OR Z 4 � VAL ( R I GHT$ ( Z Z $ , 2 » (
= 8 THEN Z$ = ME$( 3) : GOSU8 198 : GOTO 149
167 RETURN 168 I F ME = 2 OR X = 1 THEN VTAB V : KT
Exemple : masque de MASK.DEMO
AB H : ZZ$ "" ZY$<LL) : PRINT ZZ$ SPC < LO - LEN <ZZ$»
169 RETURN 198 VTAB 2 1 : KTAB 1 : CALL - 868: INVER
SE : FOR Z = 1 TO 158 : Z 1 = PEEK ( - 16336) 1 NEXT : PRINT Z$ I : NOR MAL : FOR Z = 1 TO 258 8 : NEXT : H TAB 1 : CALL - 868: RETURN
388 Po. = • • • • • • • • • • • • • • • • • • • • • " 3 1 8 DATA CREAT I ON ,MOD I F ! CAT I ON , CONSULT
ATtON 328 FOR 1 � 1 TO 3: READ L I $ < } ) : NEXT 488 TEXT : HOME : PRINT D l $ " BLOADMASK l "
:L% "" 0 4 1 9 V "" 22 : H = 3B:LO = I : TY = 2 : X = 0 :ME
8 : GOSue 1 4 9 : I F E = 9 THEN 4 1 •
428 Z% = VAL ( Z Z$) : I F Z% ( OR Z% ) 5 THEN 4 1 8
430 I F Z% "" 5 THEN HOME : END 448 I F ZX = 4 THEN 688 4�8 HOME : PRINT D I$" BLOAD MASK2" : VTAB
4 : HTAB 1 : INVERSE : PRINT U $ < 2 %) ; : NORMAL
468 �/. = 8 � < Z % ) 1) :X = 1 � ( �/. "" B) : M E - 8 : D% - 1 :TY - 2
47e �uR LL = �/. TO t8 : L I = L L / 2 : L = INT ( L l) :DH = 1 � ( L = L I ) : V = 9 • 2 � < L - DH) : H = 1 6 . 15 � OH : L o "" 9 - 2 � OH
488 E "" 8 : GOSue 1 4 9 : I F E "" 9 AND LL c 1 THEN LL s 1 8 : NEXT : GOTD 480
498 I F E = 9 AND HE = 8 THEN L% "" LL 588 I F E = 9 THEN LL = LL - 2 : HE = 2 : G
OTO 528 5 1 8 ZY$(LL) = ZZ$:ME = 2 � ( L L ( L% - 1 ) 528 NEXT : 8% = 8 : L% = 8 : I F Z% = 3 THEN
Gosue 138 : GOTO 480 538 ZH$ = " ENREG 1 STREMENT CONF 1 RHE· : GaS
us 79 : I F Z$ = "N" THEN X = 1 : �/. "" 1 9 : GOTO 479
548 GOTO 408 688 HOME : PRINT DI$" eLOADHASK3" : POKE
3 4 , 2 4 : PRINT Dl$"PRM l " : Z $ = "A" : GOSue �8 : Z$ = " S " : GOSue 58 :Z$ =
" A " : GOSua 5 8 : Z $ = " 0 " : GOSUB 58 : PRINT . 0 ; : PRINT o."PR_8"
6 1 8 FOR 1 = 1 TO 5 : VTAe 5 : HTAB 1 3 : PR INT "RUBRIQUE " 1 : VTAe 6 : HTAB 7 :
PRINT ZY$( ( 2 * J ) - 1 ) ; : HTAS 27 : PRINT ZY$( 2 * 1 ) j
628 PR!NT D I$·PRM l " :Z$ = O C " : GOSue 58 : PRINT " 0 ; : PRINT DS" PR_e " : NEXT
: PRINT DI$-PRM I " :Z$ = " 0 " : GOSue 5 0 : Z$ = "A" : GOSUB 50 : PRINT 01$
·PR_8 " : GOTO 488
.ll.l • • • • • • • • x . x . x * x •• � * . � l l . l l . l l * � l l l X l l l l l . l l X l •• lll •• * l � •• � l l l l l . X * l l l l l l l l 1 NT 1 TULE l IJAlEUR NO 1 � IJALEUR NO 2 * � l l � * l l l � � l � l � l � � l � � l l � l l l l l l l l l l l l l l l l l l l l l l X * * X X X l l l l . X l * � l * � l * l l l X • • X l • • X l l � l l lE lE RUBRI QUE 1 • 1234 . 56 l 987 . 65 l l RUBRI QUE 2 lE 2233 . 44 lE 999.88 lE le RUBRI QUE 3 le 1 8 1 8 . 28 le 234 . 56 * le RUBRI QUE 4 J: 9753 . 1 8 J: 963 . 8 8 lE l RUBRIQUE 5 l 2323 . 2 3 le 1 1 1 . 22 � l � X lE l l l lE lE l l l l l l l lE l l lE l l lE lE l l lE l * l lE lE l . l X lE lE lE X l X l lE lE X lE X lE lE lE lE lE * l lE lE lE � lE l � lE l l l l l l l l X lE lE l . lE * lE lE � *
Pom's nO 7 49
50
MASKIN.SCE - Lisa 1.5 l ,lHWlmlliDIIDnllmlllUn 2 11 1 3 il 1UJ11t€ OE (lSTltH DE WISQl(S 1 � il 1 5 ;1 ctU • l't\SKIH.œJ 1 , ;1 1 1 Il 1 8 lllWnUDllDlllllIllDlJllUlJ • 1
1. J I 1 2 V2 1. lJ2 1� VI 15111 1'" 17 C 1'" 19 H � , 21 vrAi " 6{1 " ... " " " " '" " 29 " .1 32 " " SI " .. " " " .. 41 SI " " .. ., '''2 " .. .. ,,,. '1 l2 " 'OS. " " " " " .. '1 .. " " " " " " ,os, " " 7J n " "
.. .. '" œJ .... [Ill .18 [Ill il' ,Pl " EPI " "'" "' " lP1 ." " "" " "" 101 tft22 [Ill tFt« 101 tft:II .. ... ,," H
ST" "" ' 01' 1$18 " SI LM Il ST" ST" " '1 "" , Ilt' "" " SI lo:! Il ST" II< , .. DE,
JSR VTMI
.. '"
Ilt' ""
.. 52 '" Ilt' .... .. " II< , .. DEI Ilt' "" .. 54 II< , .. 50 Ilt' .... .. "
"" '
Ilt' H
BE, .. 00; ' " '1 LM ' Ilt' H "" 1 lM Il'' ST" DE" "" 1 Ilt' 1192 .. "1 DEC ' . "1 LM HI1 ST" " '1
,mSS( lEJI[ caM ;PŒITlIll Id. CI.r.aII iPœJTIIJI '.tR. ct.R5tUl 1DERJ(( llasElII EN U ;OITJ([ DE CMlC'TEfIE
jEOUEIIE lIat: ?
1 IllU IERE CIlJIERE LIIH
if.lOtflERE CIl. Dl LA liN ?
iPASSU Il IERE CIl. lIH SUIWHTE
iPOSITIN a.RSnR ,OORE[ ovw:rEJIE lEst ?
jllET1.R4 ?
JOOl .) LIN SUIWHTE
; '-)' ?
l '(-' ?
j/lll .) ow.cttRl PliEŒtDIT j '(-' 9JI 1ER tIM:. DE LA LlI.1tE
JSI 1ER ow.c./IEItE UlM: : tH RESTE LA
,OIER CAPltAIH PlilfŒDOOt
j CTII. -R ?
JOJI .) LIN MŒŒJ(JE ;51 V>=t tH PŒITIIJK Of V ;1)1 5AIJ\'[ Il LA MJHIElI: LIN
75 55l 01' "119 7.1 H S� n WI ll 79 S53 STA " '1? .II' SI
91 S52 01' KI( 81 H 57 82 "" " .. .. '" 94 57 Of' '''oS " .. ss .. lM , 87 01' .117 88 ŒIl SI 99 JSR $FOCI 11 ltJY H 'lI LM (AMI, Y 92 [te: V 93 JSR 01 94 0[( M " " 50 " S8 01' "94
rl 110 Of
98 .II' 59 " DI !.M U
III Of' "11 III H DI 1.2 lM H lU Of' "27 lM H OI Ils .If' SI 116 01 WI V 1.7 stA V2 1.8 WI H 11'1 stA H2
i crRl-1 ?
,SIMER l[ 'IIMRSE'
; crRl-H ,
jSI9W.ER tE 'IDM.'
j CTRI. ..... ?
jPREJt) UMe. H DE liN V
jMSSE A LA L1lH: SlIIIJlfllt ;N'FIC!( LE ClWlC'TERE ; IllET II ctIISlIJt (WolS LA litt: COJHt[
; CTRl-D ?
jDOtflEJ! CIl.IIOIIDl: liN 1 QI IftOIf: j!illLlJEfNU l'OSITIItl CIIISEIII
Il' OP '$21 iSI ŒIIIIER CAMe. œ: LA LIN .) PIEJ(lI( III iLE PIIDIIER DE LA SlIr.wnt 112 H 0. 113 LM M
m stA HI 115 UI: V Il' lM V 117 stA VI 118 ... 01 119 0. IN: H 121 LM H 121 stA KI 122 l..IlA V
12'3 stA VI 12'1 Dl LM "17 iltl œ:rJU LES CARACTUES DE 125 i l'IUIIHT lOtiER lIE l'EIMt JBIU'A HllVI lU STA V IV D3 UJt "U 128 ()5 JSR N'BCI 129 lDA (#OU ,r III 1Kt' m STA (AIIO ,Y 132 lM V 133 OP VI 1)1] IN 02 135 C7t HI
136 IN 02 137 011 LM V2 iltl EST A HINI .) AESTlnD IV\! ET 1311 1 tETIRt: III '1IJfI:' Dt IV\! 139 STA V 141 l..IlA 112 141 STA H 142 l1IA fW 143 JSII 01 144 D(C H 145 .If' SI '''' ; 147 ; l'RXlWl Dt D2 :) OJKKT Ctl'J[R LE DOtfIER OWICJ[Rl 148 j D'lN: l!(H S1JI LE PRDtlER œ: LA !lJ11J1fm ET RMMIR 149 ; FI c:mE UN 151 ;
Porn's nO 7
151 1)2 "" " '" .. ,. '" '"CV ". lM'
'" JSR Sf!l:I
". lDr "V '" LM (AIlR), y '" STA C
". '1< , ,� l .. , '61 JSR Sf!l:I '" "" "
'63 lM t '64 srA (AI)R).Y '" "" HI
'66 H OII
'61 lM'
'68 "" VI
'69 H 011 '" .IF 011 171 DI' ,"C V 172 lM U '73 ... " 17� 1).( "" :[I[rJt[ owcrERE Pl!:CEDOIT '" ""
'76 ... '" ln Sf Of' "87 ; ClIl-b • 118 : ln ; CTfl-6.) D(tI(A6[ A 6IUH 1. ; (teE5 PIIIII:IPES fiJElrUI( IlE PCUI Cf .. -ill IBI ;
'82 '83 '" .. '" '86 '" '88 '" '91 lfl 61 '92 '93 ".
1f5 61 , .. '91
'98
'99
211
'" ..
212 &2
'"
'" '"
'" '" '"
'" '" '" '" ",
'" li' li. '" 118 21f 63
'" no Zll ZZ3 zz . . , '" zz.
Œ U ..... 511 "'" DI' "11 .. " '10 H
". .m .. "
.. "
lM '
ST' UZ lM H
ST' ,.
DI' H27
.. .. ,1< , "" "
STA H
.. ., ''''"
"'"
lDr H
JSR tflCl
LM (MII) ,V STA C
"" N .. "
",CV
l .. ,
JSR tf!l:l
lDr ""
l .. ,
$TA (AM) ,v ,1< , "" "
STA H
.. " l" , JlR "'" "" "'" S'TA (ADR), y l'" DI' HI7
", o.
Porn's nO 7
m LM H
228 '"' 67 ll9 66 LM H
231 OP HV
231 Ilil 68 ,." .. ..
l33 68 LM tw
234 JSR 01 135 LM V2 236 $TA V
'l31 LM H2 238 S'TA "
139 '"' SI 241 Sil JSR llIT 2<11 '"' SI 2<12 llIT lIll " 243 ; "" 1 .) TMlSfIlKR LES CŒl(5-(CIWf ilS OW4CTERES 244 ; PIlR AIAlIR lES '[tf.OS[' 145 CP,( .1 � H OI
?-I7 Of' "Ct! m BCS 02
'" �, 251 !if( "III 251 .K' O[ 252 02 SEC '" "" "" 154 ; Pl!ŒICUI 01 : AfFICJ( li CJ:W('1[J( [1 /UM! ar.mt 255 01 $TA C
256 LM V
251 JSR Sfll: 1 258 lDY H
259 LM C
268 $TA (Aœl,Y 261 III: H 26Z R1S 263 D01 'lIfT' ,.. 00
HCT.SCE - Lisa 1 . 5 1 jmmUlJUIRlIIIllIHllU10n 2 ;1 1 3 :1 W#lD-OPY [(:Mi TEfl 4 ;1 5 :1 COOE. • ICI ,œJ 6 ;1 7 ;1 1 B jllUUIHIIliUlIiUlHlIHHlHI . ,
Il (Ri $M 11 IBJ .. 12 V [pl $25 ; r1 llHESS11JI 1'IWKT1II
13 ADR [Pl $18 14 PlI [II/ sno 15 I..CI\ H
16 $TA V 17 la LaY' H
18 � SF!l:1 19 Hel I..CI\ (lU) ,Y 2t ; aDE-[CMI }II 4' : fJiIK" 'lQtW..' 21 OP H4II ZZ I<S I<Z 2'J ; CIX(-[(MI COf'R1S ENJ1( 2t [1 39: CAIW:, AlITRE Il( It-l EH '1JMR5(' 2<1 OP "21 " I<S 10 ,. III 1l ; tMtSF_ CMIIC, Il 'A' A 'Z' EH 'tfJIIW.' " "" "" " ... 1<2 30 10 III 31 ; TIWQIJK CAIW:, DE 'SPAC[' A '9' EH '1OtW.' 31 "" ""
. --'.--':"' L -
51
52
33 1<2 .. .. : Uf'IIlWHJE " "" ; OWICTDIE SlJJ\MI' " "" "li ;DElIIIEIIE tu.CNt: ?
'" " l<, " LM ..., ;FIN Dr LIN D'ltflIESSICN
., .. ..
" ,1[ V ;lIM SUII,Wo/T[ .. LM V " OF nl8 ;DElIIIUII: liN ?
" .. ""
" ors .. DOl '1H1' " DO
PARA.SCE - Usa 1.5 1 illUlllUlJlWlllWIIDlllIDII 2 ;1 1 3 il ItflIESSltll flMKTlfi 4 il 1 5 il CŒlE • PMUII.J 1 41 ;1 1 7 illlllIlDlIIwmlDlIlDllmli . , •
" II V ,,,,.
'"
,,,.
"
"
17
18 11'4 "
li ,.3 "
22 "
"
25
(113 ,�" IIIJ 'M '1'''25 [Pl .28 !P' " ,'" lfŒD ,,. .. no v "" "
"" "
J!II tfl:l LM lADAl ,l ". C
.. .. ,
"" "
H A
LM ...,
iPOSl11CN VERTICALE W!SE\II
;ACH:SSE PIIOIIElIE IlllHE ;!'IWtC. CE COOII(l[ EH 'ltfJERSE' i!Dfll[ CE OWICTERE
i NlO DE CIl.lH€ iCALIll lUES$[ MS( LIN caJmr[
i OWICTERE [)( COOII(l[ ,
iFIN Dl LIat: D'IHSSICN
" .. ..
27 ors " 1ft ltIC Il i()l fi TIIClM LE 1ER CARH:. CiNTACU " .. ,.,
., .. , "" " ilER CNW:. coom ()[JA TIIOO.( ? " .. ,.,
" .. ..
33 ,., 'III ; OWICTDIE SUIIMIT " "" "" iŒJH[DIE COlM ? " .. ,.,
'" 11< V ;1IlN: SlJII,Wo/T[ " LM V ., OF n18 jDEltlI(R( LIN ?
" .. ,. .
.. RIS " ])Qi 'INI"
42 DO
Exemple : masque de GESMASK
1IIIIIIIIIl.l.llllllllllllllllllllllll.1 , ,
1 GEST 1 CN DE l'''ASQUES 1 , ,
1--------------------------------------1 , , 1 1 - CREAT I CN 2 MODI F I CAT I CN l , ,
l 3 - CCNSULTAT l CN 4 - IMPRESS I C N 1 , ,
1 5 - �ULAT I CN 6 - F I N • , ,
, ,
l VOTRE CHOIX l , ,
, ,
l NCI1 DU MASQUE : . . . . . . . . . 1 , ,
, ,
1IIIlIIIIIllIIllIIIIIIlIlIIlIlIlIIIIIIlI
Abonnez-vous à Porn's La vie de votre revue dépend de son nombre d'abonnés. Plus vous êtes nombreux, plus nous pouvons vous rendre service, par l'augmentation correspondante de nos moyens comme par le plus grand nombre de contributions que nous recevrons forcément de vous.
Nous avons volontairement choisi une politique de disquettes à bon marché ; ainsi, lorsque vous vous abonnez avec disquettes, chaque disquette vous revient à moins de 45 francs TTC, port compris !
Un abonnement à qualre numéros coûte aujourd'hui 295 francs. Cela ne sera-t-il pas largement amorti si une seule des 200 pages de texte que vous trouverez en quatre numéros vous résoud ce problème sur lequel vous séchez (on a vite fait de perdre deux ou Irois jours sur un problème) ? Dans de nombreux numéros, nous vous avons offert des programmes comparables à ceux qui sont vendus de 250 à 500 francs dans les boutiques. Profitez-en !
-_. - .----...-
Pom's nO 7
•
MASKIN.OBJ
1927C. 9464
927C- 28 58 FC A9
9288- 88 85 8 7 A5 25 C9 18 08
9288- 8 9 A9 8 8 85 25 85 24 4C
9298- A I 92 A5 24 C9 28 08 8 9
9298- A 9 8 8 8 5 2 4 E 6 2 5 4 C 83
92A8- 92 28 22 FC 28 8 C FO C9
92A8- 9B D8 8 1 68 C9 80 08 8 5
92B8- E 6 2 5 4 C 8 3 9 2 C9 95 08
92B8- 85 E6 24 4C 92 92 C9 88
92C8- 08 lA A5 24 C9 88 F8 8 5
92C8- C6 2 4 4 C A I 9 2 A 5 2 5 C9
9208- 88 F8 CE A9 27 85 24 C6
9208- 25 4C A I 92 C9 92 08 8 8
92E8- C 6 2 5 1 8 B D A 9 1 7 8 5 25
92E8- 4C A I 92 C9 89 08 8 7 A9
92F8- 8 1 85 8 7 4C A I 92 C9 8E
92F8- D8 8 5 A9 88 4C F I 92 C9
9388- 96 08 1 7 A5 25 C9 1 7 F 8
9388- 9 8 2 8 C I FB A 4 24 B I 28
9318- E6 25 28 55 94 C6 24 4C
9318- 92 92 C9 84 F 8 8 3 4C B8
9328- 93 A5 25 C9 17 08 89 A5
9328- 24 C9 27 08 83 4C A I 92
9338- A5 25 80 18 8 8 A5 24 80
9338- 19 88 C9 27 08 80 A9 8 8
9348- 85 8 9 E 6 2 5 A5 2 5 8 5 88
9348- 4C 55 93 E6 24 AS 24 85
9358- 8 9 AS 25 85 88 A9 17 85
9358- 25 A8 26 28 C I FB B I 28
9368- CB 9 1 2B AS 25 CS 8 B 08
936B- l B C4 8 9 08 14 AD l B 8 8
9378- B 5 2 5 AD 1 9 8 8 85 2 4 A9
937B- A8 28 55 94 C6 24 4C A I
93B8- 92 C8 8 1 08 2E C6 25 A5
93BB- 25 28 C I FB A8 27 B I 2B
9398- B5 86 E6 25 A5 25 28 C I
939B- F B A8 8 8 A5 86 9 1 28 C4
93A8- 8 9 08 8 9 A5 25 C5 8 B 08
93AB- 83 4C 60 93 C6 25 A5 25
93B8- 4C 59 93 8B BB 4C 5B 93
93B8- C9 B7 F8 83 4C 3C 94 AS
93C8- 25 C9 1 7 08 8 9 A5 24 C9
93CB- 27 D8 8 3 4C A I 92 A5 25
9308- BD lB 88 A5 24 80 19 8 8
930B- C 9 27 D8 8 9 E6 2 5 A9 8 8
93E8- B5 24 4C E 7 93 E6 24 A5
93E8- 25 A4 24 28 C I FB B I 2B
93F8- B5 86 C8 8 8 08 16 C6 25
93FB- A5 25 28 C I FB A8 27 AS
9488- 86 9 1 2B E6 25 A9 88 B5
9488- 24 4C 16 94 A5 25 28 C I
94 1 8 - FB BB A5 8 6 9 1 2B AS 25
94 1 B- C9 1 7 F8 8 5 AS 24 4C 08
Pom's nO 7
9428- 93 A5 24 C9 27 F8 83 4C
9428- ES 93 A9 A8 28 55 94 AD
9438- l B 8 8 B5 25 AD 1 9 8 8 85
9438- 24 4C A I 92 28 42 94 4C
9448- 92 92 A6 87 E8 8 1 08 8 0
9448- C 9 C8 B8 8 6 38 E9 B8 4C
9458- 55 94 3B E9 C8 85 86 AS 9458- 25 28 C I FB A4 24 AS 8 6
9468- 9 1 2 B E 6 24 6 8
HCT.OBJ 19465. 9496
9465- A9 8 8 B5
946B- 25 A8 8 8 28 C I FB B I 28
9478- C9 48 B8 8 0 C9 28 B8 06
947B- l B 69 C8 4C B I 94 18 69
9480- B8 28 EO F D CB C8 28 00
94B8- ES A9 BD 28 ED FD E6 25
9498- AS 25 C9 18 08 03 68
PARA. OBJ 19497 . 94CB
9497- A9
949B- 88 B5 25 A2 88 A8 88 28
94A8- C I FB B I 28 C5 86 08 8 F
94AB- E 8 8 1 08 8 6 A9 BD 28 EO
94B8- FO 68 A2 8 1 4C BE 94 E8
94B8- 8 1 08 83 28 EO FO C8 C8
94C8- 2B 08 OF E6 25 A5· 25 C9
94C8- 18 D8 D2 68
INPUT. OBJ (Voir Pom·s 6 pages 19.22)
1 9 1 E 6 . 926F
9 1 E6- A9 88
9 1 E8- A6 8 7 9D I l 83 CA 18 FA
9 1 F8 - A2 88 B6 86 28 8 C FD C9
9 1F8- 80 F8 72 E4 8 7 98 8A C9
9288- 88 F8 28 28 DD FB 4C F4
9288- 9 1 C9 9B 08 8 9 E8 8 8 08
92 1 8 - 85 A9 89 85 8 6 68 C9 AC
9218- 08 85 A9 AE 4C 63 92 C9
9228- AE F8 48 C9 88 D8 8A E8
9228- 8 8 F8 86 CA C6 24 4C F4
9238- 9 1 C9 95 08 8 C A5 25 28
9238- C I FB A4 24 B I 2B 4C 63
9248- 92 C9 A8 98 AF C9 DB B8
924B- AB A4 88 C8 8 1 F8 8C C9
9258- AF B8 84 C9 AD D8 9D C9
9258- BA B8 99 E8 88 D8 84 C9
9268- A2 F8 9 1 28 EO FO 90 I l
9268- 83 EB 4C F4 9 1 86 8 9 68
53
p.s.1. OIFFU;O; - - -
41-51, ,ue Jacquard BP86 ���i:gny.aIMarne Cl'du Téléphone (6) 001.59.31 P.S." BENELUX S. avenue de la Ferme R 1180 Bruxelles
ose BELGIQUE Teléphone (2) 345.08.50
r r
!ffff/l'ft' .. Ni»Ie R..:.. •. -'
• ... "lIUQ-PouJiiiœ •
EnvOYe< CI' bon """""""" de voire règlement il PS.I. DIFFUSION ou, pclUf la 8eIgoque el le Luxembourg à P S I BENELU'X
"� ------------------
FID , MUFFIN et DEMUFFIN
Les programmes F1D et MUFFIN se trouvent sur la disquette MASTER du DOS 3.3. Beaucoup de lecteurs nous ont posé des questions il leur sujet el ne semblent donc pas bien maîtriser leur utilisation. Nous allons par conséquent apporler quelques éclaircissements il cel égard. Nous signalons à toul hasard que la brochure du DOS en français explique l'utilisation de ces deux programmes ; le lecteur pourra aussi s'y reporter. Les fonctions du programme FlD sont multiples : il vous permet de : • copier des fichiers (1 ou 2 1ecteurs)
de toute nalure, même binaire ou lexte
• demander le catalogue • obtenir le nombre de secteurs
libres • verrouiller (LOCKI ou déverrouil-
ler tout fichier • effacer (DELETEI tout fichier Le programme MUFFIN, quand à lui, permet de transformer des fichiers du DOS 3.2 vers le DOS 3.3, y compris pour les fichiers Visicale.
Ces deux programmes sont agréables sur le plan ergonomique. Ils savent, grâce à l'utilisation de valeurs par défaut. vous éviter des répétitions inutiles . Par exemple. lorsqu'on demande une seconde fois d'affilée la copie de fichiers. le programme ne demande plus la spécification des numéros de slot et drive. Si l'on possède un seul lecteur, le transfert se fait du slot 6. drive 1 vers lui-même ; FID et MUFFIN se chargent de vous indiquer quand il faut mettre la disquette initiale ou la disquette finale dans le lecteur.
Utilisation du signe « = »
Pour les deux programmes, la même technique d'identification abrégée des fichiers est possible. Quand le nom du fichier à copier ou à adapter est demandé, l'utilisateur peut répondre par le signe .. - ,. . Ce signe signifie « tous les fichiers . ; le programme demande alors « Do you want prompting ? • . c'est-à-dire « Voulez-vous une
Pom's nO 7
demande de confirmation à chaque fichier ? • .
Si vous répondez par l'affirmative. le programme vous demande à chaque fichier s'il est concerné ou non par l'opération.
Si vous répondez de façon négative, tous les fichiers de la disquette sont concernés. Le signe « = • peut aussi être utilisé dans le nom. Ceci permet par exemple de sélectionner seulement les fichiers de texte en Applewriter avec la réponse .. TEXT = lO , Le reste se passe comme dans le cas où on a répondu par « = .,
Ainsi, en spécifiant un nom tel que « - AL - X - lO, l'utilisateur sélectionne tous les fichiers comportant
dans leur nom .. AL • puis .. X ,. dans cet ordre.
Retour au menu principal Lorsque l'on désire revenir au menu principal, il suffit d'entrer la réponse « Q • (pour QUIT) . C'est particulièrement utile pour copier ou transformer un fichier dont on ne se rappelle plus bien le nom. On utilise alors l'option « - • et le « prompting " pour identifier le fichier ; une fois la copie (HO) ou la transformation (MUFFIN) assurée, il est superflu de répondre « Y ,. ou « N . à la proposition de chaque fichier ultérieur. Il suffit de répondre « Q • au lieu de « y ,. ou .. N . ,
Rappel du programme Les deux programmes résident en mémoire jusqu'au moment où un RESET a eu lieu, à moins que des programmes utilisés avant celui-ci n'aient occupé les mêmes emplace-
Hervé Thiriez
menls mémoire. On peut par conséquent rappeler les programmes. s'ils n'ont pas été écrasés, par un simple CALL. CALL 2051 réactive FID ou MUFFIN ; le dernier chargé en mémoire, car les deux utilisent la même zone et ne peuvent par conséquent coexister.
Création de DEMUFFIN Ceux qui ne possèdent pas le programme SUPER COPY, qui permet de transférer des fichiers dans les deux sens entre le DOS 3.2 et le 3.3, peuvent transformer leur MUFFIN en DEMUFHN afin de pouvoir adapter leurs fichiers en DOS 3.2. Il
y a en effet encore des DOS 3.2 non transformés dans la nature. La procédure la plus simple est celle proposée par Rob Moore dans la lettre du SNAC (Southern New Hampshire Apple Core) et publiée par CALL A.P.P.L .E. en février 81 ,
1. BLOAD MUFFIN 2. CALL ·151 15AF B3 15B6 , B2 15F7 , C4 C5 20AA , A9 lE 80 B9 B7 20 20BO FD AA 48 A9 BD 80 20B6 B9 B7 68 60 1155 00 lE 115B 09 03 1197 AA 20
Cette procédure crée un programme DEMUFFIN DOS 3.3. c'est-à-dire qu'il permet, quand on esi en DOS 3.3. de transporter un fichier sur une disquette en DOS 3.2. Il ne reste plus qu'à revenir en Applesoft et à faire : BSAVE DEMUFFIN 3.3, A$803, L$1900.
55
56
Le cours de BASIC Applesoft d'André Finot Jean-Jacques Crépy
Ayant récemment acquis un Apple dans le but de permettre à mes enfants de s'initier à !'informatique, je me suis renseigné pour savoir queUes étaient les possibilités d'apprendre le BASIC à domicile. J'ai fail cette expérience avec le « Cours de BASIC Applesoft . d'André Finat. Ce cours se présente sous la forme de trois disquettes accompagnées de deux feuiUes de commentaires sur le cours, ses objectifs et son mode d'utilisation. Il ne reste plus qu'à mettre la première disquette dans le lecteur et à lire les écrans successifs, en répondant aux questions éventuelles. Mes enfants et moi-même avons travaillé avec ce cours de BASIC. Seule l'augmentation de mes activités professionnelles m'a empêchê de dépasser la leçon 8 (sur les 26 que comple ce cours en trois disquettes) . Voici donc mes premières impressions, complétées par celles de mes fils qui ont êté jusqu'au bout du cours. Ma première impression est favorable : la méthode proposée est simple et permet à quelqu'un n'ayant aucune notion d'informatique de comprendre les premiers rudiments de ce langage. Ma seconde impression générale est un peu moins bonne, et concerne principalement l'impossibilité d'effectuer des retours en arrière. Il devrait être possible de bloquer le déroulement du programme d'une leçon,
pour mieux en comprendre teJ/e ou telle partie. Je regrette personnellement de ne pouvOir me référer à des explications antérieures pour mieux comprendre le programme étudié. Ceci est particulièrement valable lorsqu'il est fait état de courbes et de dessins . Je pense que, si cette possibilité était offerte, le cours serait très facilement assimilé, en particulier dans ce cas précis. En ce qui concerne les révisions, l'étudiant a la possibilité de soumettre trois réponses. Si, au terme de la
troisième, il n'a pas réussi, la bonne réponse lui est donnée. Personnellement, j'aimerais que la réponse soit, dans certains cas, mieux explicitée, et qu'il soit éventuellement possible de connaître l'erreur que l'on a commise. En effet, puisqu'un retour en arrière est impossible, on ne peut comparer la mauvaise réponse avec la bonne. Il est possible de tourner cette limitation en inscrivant ses réponses au fur et à mesure sur un morceau de papier, mais cela me paraît peu « informatique ". En conclusion, je peux dire que je suis très content de ce cours, et qu'il en est de même pour mes enfants, dont l'opinion synthétisée suit.
Jean-Jacques Crépy
Points positifs • les instructions sont clairement
expliquées • le langage est simple et accessible
à tous • n'importe qui, même très jeune,
peut suivre ce cours • le révisions sont bien faites Points négatifs • on n'avance pas très vite • trop grande « sophistication ,. de
la présentation, qui ralentit le processus
• on est esclave du programme il faut suivre une leçon dans sa iolalité avant de revenir en arrière
• le programme s'adresse à nous comme si \'on avait 8 ans.
Conclusion Ce programme devrait être enseigné en 6ème ou en 5ème. L'élève peut le suivre seul, le professeur circulant entre les élèves. C'est une initiation parfaite pour un débutant. Il aurait fallu que le programme comporte un tableau récapitulatif des mots réservés du BASIC que l'on puisse sortir sur imprimante.
David, 18 ans
Points positifs • utilisation aisée • texte clair, agréable et précis • présentation agréable
• nombreuses questions, posées 3 fois (en cas d'erreur)
• précision des questions • temps de réflexion pour les répon
ses. Points négatifs • impossibilité d'interrompre le pro
gramme pour faire un retour en arrière
• nombreuses questions trop faciles, qui se répètent
• pas d'explication (avec référence au cours) en cas d'erreur
Suggestions • réaliser un fichier des termes, de
leur signification et de leur mode d'emploi
• fournir un sommaire plus dêtaillé.
Philippe, 16 ans
Remarques d'André Finot
Je tiens à vous remercier de votre analyse de mon cours de BASIC. La prochaine version, déjà bien avancée, aura les possibilités suivantes :
• arrêts et reprises possibles du cours par page ou demi-page d'écran (existe déjà) ;
• pour un positionnement rapide dans le cours : � retour en arrière possibles ; � déroulement en avant à grande
vitesse ;
• fractionnement des leçons en parties avec indication sur l'écran de l'entrée et de la sortie de telle partie ou de te}}e leçon ;
• la plupart des programmes, sinon tous, pourront être listés sur imprimante.
D'autre part, je vais tenir comple des points suivants que vous signalez :
• affichage des réponses aux ques-· lions ;
• tableau rééapitulatif des mots réservés ;
• sommaire plus détaillé ;
• fichier des termes, de leur signification et de leur mode d'emploi.
Pom's n O 7
Etant un utilisateur quasi quotidien de Visicalc. la disponibilité de Multiplan sur Apple I l Plus m'a tout de suite excité. Il fallait que je puisse mettre la main sur ce programme afin de l'évaluer . C'est maintenant chose faite, et je dois reconnaître que je ne regrette pas l'expérience !
Initialement disponible seulement sur CP/M, Multiplan fonctionne maintenant sur Apple Il Plus 64 K et Apple fIe. La version française du programme doit sortir sur le marché en mars/avril 1983.
Le programme fonctionne en 40 colonnes, mais il est conçu initialement pour BO colonnes. La compatibilité avec les cartes suivantes est prévue Videx Videotherm, M&R Sup'R'Therm, ALS Smarterm, Vista Vision-BO et Wesper Wizard·80. Ceci dit, ce banc d'essai a été réalisé en 40 colonnes sans difficulté.
Présentation générale Produit par la célèbre compagnie Microsoft, à laquelle nous devons les meilleurs BASICs sur microordinateur el d'autres réalisations de tous genres (Olympie Decathlon, pour n'en citer qu'une), Multiplan se propose de remplacer Visicalc. Dans ce but, il vise à assurer toutes les fonctions de ce best-seller, et à en ajouter quelques-unes de son cru.
Le lancement est quelque peu différent : le programme est fourni avec une disquette de BOaT protégée et une disquette programme copiable à volonté.
Nous retrouvons au lancement du programme un tableau de 63 lignes et 255 colonnes, à deux différences près : • l'identification des lignes et des
colonnes est entièrement numérique Oe ne vois pas ce que cela apporte) ;
• les commandes apparaissent toutes en bas de l'écran, et peuvent être sélectionnées soit par leur première lettre, soit par validation d'un curseur des commandes que l'on déplace aisément,
Il existe aussi une différence non visible au premier coup d'œil, mais
Pom's nO 7
Multiplan à l'essai
importante pour le débutant : l'existence d'une fonction HELP permettant à l'utilisateur de se renseigner à tout moment sur le mode d'emploi de la commande en cours. Bien entendu, il faut pour cela que la disquette programme soit dans le drive 1 ; ce n'est pas vraiment gênant car il y reste assez de place pour mémoriser un très grand tableau.
Comme son grand frère Visica1c, Multiplan laisse l'utilisateur définir le contenu de chaque case, sous forme de libellé, de valeur numérique ou de formule. Comme lui, il recalcule tout le tableau automatiquement ou à la demande. On retrouve dans Multiplan toutes les possibilités de Visica1c ; il Y a même (symbole de l'esprit pratique des américains) un programme de conversion des fichiers Visicalc . .
Les nouveautés Les différences sont cependant nombreuses, Multiplan répondant préventivement aux critiques qui avaient été formulées antérieurement à l'égard de Visicalc. Les améliorations sont multiples : • la largeur des colonnes est variable • les formules peuvent être globale
ment verrouîllées • toute case peut être verrouîllée • il est possible de baptiser une case,
ou une série de cases : on peut utiliser les noms dans des formules, ce qui est fort agréable
• il y a au maximum huit fenêtres (c'est même trop)
• de nombreux formats sont disponibles
• il existe une commande de tri (SORTI
Hervé Thiriez
• les modes d'impression sont beaucoup plus riches
• le recalcul automatique s'effectue de façon réellement automatique (pas besoin d'appuyer n fois sur la touche « ! ,.).
La fonction de reproductlon est assez différente : il n'est plus queslion de définir, pour les coordonnées des formules, si elles doivent être prises en absolu ou en relatif. C'est au moment de la définition d'une formule que ['on indique la nature des coordonnées.
Ainsi, la formule « + R2C3 + (l .5xRC[ - 2)) ,. signifie que l'on
utilise le contenu de la ligne 2 et colonne 3 (en absolu), et celui de la case placée deux colonnes à gauche dans la même ligne (en relatif) . Si cette formule est reproduite, elle sera reproduite telle quelle, la notation rendant immédiatement relatif ce qui doil l'être.
Enfin, et là se trouve la justification du nom de Multiplan, on peut travailler sur plusieurs tableaux et les lier les uns aux autres, ce qui évite de devoir transférer des informations avec le formai DIF. Ainsi, par exempIe : • le tableau principal peut être la
consolidation de trois activités ; • chaque activité possède son
tableau principal propre ; • des tableaux annexes effectuent
les calculs secondaires.
11 ne reste plus alors qu'à définir les liens entre les tableaux.
Aspects ergonomiques Pour un habitué de Visicalc, le premier contact avec Multiplan est frustrant. Pour commencer, le scrolling (déplacement c rapide JO dans le tableau) est plus lent ; surtout, il est moins pratique : il faut utiliser les touches CTRL-E, CTRL-S, CTRL-X et CTRL-D (je ne suis pas gaucher, et préfère utiliser un doigt plutôt que deux).
Ce problème n'apparaît pas sur l'Apple Ile, qui dispose de quatre touches de déplacement.
Heureusement, on peut aussi se déplacer écran par écran. ou directe-
57
58
ment en haut à gauche ou en bas â droite de la partie du tableau utilisée, Enfin, on peut donner un nom (baptiser) une case et s'y positionner directement grâce à ce nom.
Dans un souci de protection du contenu des cases, on ne peut rentrer une valeur ou une formule dans une case sans préciser d'abord « A _ (alpha), « V _ (value) ou utiliser un symbole mathématique (value) . L'expert ès Visicalc court au-devant de surprises désagréables en entrant trop vite des libellés : « ALLOCATIONS _ est compris comme le texte (. A » pour alpha) « LLOCATIONS .
Pour la définition de cases en série, le programme maintient par défaut l'option Alpha/Value si l'on sort d'une case en mode déplacement et non par RETURN.
Enfin, el c'est là le plus gros problème pour le possesseur d'Apple Il Plus, il y a deux fois moins de place disponible avec Multiplan qu'avec son grand frère. J'ai converti deux tableaux à partir de Visicalc ; voici les résultais .
Mémoire occupée
Visicalc Multiplan
Tableau 1 27 % 54 % Tableau 2 48 % 98 %
En outre, le second tableau se recalculait en 5 secondes avec Visicalc, et 20 secondes avec Multiplan (4 fois plus lent),
Ceci nous montre qu'avec la carte langage et Multiplan, la capacité est sImilaire à celle de Visicalc sans carte langage. Bien entendu, il me reste
avec Muhiplan la possibilité de déporter une partie du tableau dans des tableaux annexes que je relierai ensuite au tableau principal : dans ce cas. seules les informations des tableaux annexes devant être transférées à d'autres tableaux actifs « occupent » de la place en mémoire.
T rues et astuces le travail au noir des blancs . . .
Les blancs entrés au clavier. contrairement à ce que disent les manuels., ont une importance. Essayez d'entrer, puiS de liSier le programme suivant
10 DRAW 1 AT N,M 20 DRAW 2 ATN.M 30 HPLOT B.A TC C.D 40 HPLOT B.ATO C.D
Vous pourrez constater que .. ATO _ et « ATN .. sont tokénizés avec les mots réservés « TO -et .. ATN _ , alors que . ATO _ et .. AT N » le sont avec . AT • .
Les fanatiques de l'assembleur pourront trouver la raison de tout cela en épluchant la routine Applesoft débutant en $D56D.
Dernière critique . il est obligatoire d'avoir \"imprimante en sial 1. Je trouve ce type de contrainte regrettable que faire si, pour utiliser un progiciel de création graphique, mon imprimante thermique doit aussi se ttQuver sur ce sIal ? Je ne peux changer mes cartes sans arrêt, les Apples ne sont pas prévus pour cela, on s'en aperçoit vite . .
Conclusion La phase d'adaptation à partir de Visicalc une fois passée, Multiplan est un excellent programme, sous réserve que l'on ne soit pas bloqué par la mémoire. Je n'hésiterai pas à l'acheter avec un Apple /Je ou avec un Apple Il Plus équipé d'une extension mémoire 32 K ou plus el d'un programme de boot Multiplan sachant exploiter la mémoire supplémentaire.
Si je ne dispose que d'un Apple 64 K, j'utiliserai Multiplan si la nature des tableaux que je suis amené à manier s'accommode du découpage en plusieurs tableaux. Possédant déjà Visica1c, j'estime que Multiplan m'apporte suffisamment pour l'acquérir quand même. Dans ce cas, selon l'application, je sélectionne le programme le mieux adapté, en n'oubliant pas que la possibilité de conversion n'existe aujourd'hui que dans un sens . .
Nous venons, dans une société, de développer sur Sirius un plan straté· gique à huil ans avec Multiplan. Ce plan concernait la société française et sa filiale américaine, plusieurs activités et des analyses détaillées de la production, des ressources humaines" .. Au total, plus de 20 tableaux reliés les uns aux autres. Impressionnant !
LI LLE . . . . . LI LLE . . . . . LI LLE . . . . . LI LLE
m.b.d.c. 1 72. RUE SOLFERINO. 59800 LILLE - TEL. (20) 57.91 .87 à 12h ET DE 14h30 à 19h
Pom's nO 7
Effacement de directory en Pascal
Aprês avoir passé trois numéros de Pom's à faire l'analyse du d\reclory Pascal avec Michel Crimont, nous allons voir maintenant comment effacer de la mémoire de J'Apple le directory de la dernière disquette lue . . . A quoi cela sert-il ?
Chaque fois qu'une opération de lecture ou d'écriture est effectuée sur une disquette, son directory est placé en haut de la pile réservé aux variables dynamiques (heap). Il reste en fantôme à cet emplacement, c'est-à-dire invisible (les pointeurs de pile accessibles aux utilisateurs n'en tiennent pas compte) tant qu'il n'y a pas utilisation de cette pile (el sans doute aussi tant qu'il n'y a pas de collision avec le sommet du stack) .
Lors des accès ultérieurs aux disquettes, ce directory est utilisé.
Si un fichier est appelé par un nom de volume (nom de disquette), et que ce nom correspond à celui ainsi placé en mémoire, l'Operating System fait l'hypothêse que la disquette n'a pas été changée, et donc que le directory en mémoire est le bon.
Si un fichier est appelé par un numéro d'unité (;#:4 pour le drive 1), il lit le nom de volume et compare celui-ci à celui du directory en mémoire. S'il y a identité de nom, il suppose là aussi que l'ensemble du directory est le même.
On comprendra aisément les catastrophes qui peuvent se produire si deux disquettes différentes portant le même nom de volume sont utilisées successivement.
Bien entendu, cela est clairement expliqué dans les manuels Apple Il, qui soulignent la nécessité d'éviter l'utilisation de disquettes portant le même nom de volume. Malheureusement, en particulier pour les programmes de gestion, la prudence requiert le recours à des disquenes de sauvegarde qui, étant copiées globalement, portent le m�me nom !
Porn's nO 7
Le programme introduit ici montre qu'il suffit d'une seule instruction faisant référence au heap pour que l'Apple Il n'utilise plus le directory en mémoire.
Mise en œuvre Tout d'abord, exécuter ce programme. On peut vérifier que, si l'on essaie d'accéder deux fois de suite à un fichier sur la même disquette, J'Apple Il ne lit qu'une fois le directory (mise en rotation du drive) tandis que, si la procédure d'effacement a été exécutée, ]' Apple Il doit aller relire le directory.
Remarques Pour que la démonstration fOnCtionne correctement, les disquettes APPLE 1 et APPLE2 doivent être réellement présentes ; autrement, il ne peut y avoir de lecture du directory.
Dans le cas de l'Apple III, il semble qu'il y ait toujours relecture du directory complet d'une disquette avant lecture ou écriture, et je n'ai pas réussi à provoquer de destruction de disquette (NDLR : à quoi mène l'informatique !) .
Régis Lardennois
Par contre, j'ai déjà eu des problèmes en lecture avec des disquettes formatées sur Apple 11/. Je n'ai pas eu le temps d'en approfondir les circonstances, mais ils ont disparu une fois le procédé décrit ci-dessus appliqué.
Il s'agissait d'une non-relecture du directory en lecture avec pourtant des disquettes portant des noms différents, ce qui semble être un bug réel dans l'Opérating System de J'Apple fIl.
Application pratique Ce programme de test doit être placé sur une disquette dite disquette PROGRAMME durant son exécution et, à la demande, remplacée par une disquette vierge de même nom. Si vous ne demandez pas de lecture du directory de la nouvelle disquette, vous retrouverez en plus du fichier TEST tout le directory de la première disquette PROGRAMME sur la seconde.
Attention : la seconde disquette PROGRAMME sera détruite et la vraie risque de J'être en cas d'erreur de manipulation. Il est donc conseillé de protéger contre J'écriture la vraie disquette PROGRAMME.
59
60
PROGRAM CLEARD I RECTORY j
VAR CL : CHAR j 01: $ 1 -;0 PROCEDURE TESTER l j VAR F : F I LE OF INTEGERj
BEGIN RESET ( F , ' APPLE l : TEST ' ) ; CLOSE ( F) ; ( l e f i c h i er TEST ne doi t } au t r-emen t } {
{ {
pa.s e x i ste-r car i l Y a toujours du d i rec t or y
r e l ecture} }
END;
PROCEDURE TESTER2 j VAR F : F I LE OF I NTEGER j BEGIN RESET ( F , ' APPLE2 : TEST ' ) j CLOSE ( F) ; END ;
PROCEDURE EFFACERjVAR PB BEGIN HARK( P B } ;
" I NTEGERj
END;
BEGIN REPEAT WRITE( CHR( 12» ; ( APPLE I l ) W R I T E ( CHR(28» j ( APPLE /// ) WRITELN ( ' VOULEZ -VOUS ? ' ) ; WRI TELN( ' t TESTER LA PRESENCE D " UN F I CH I ER DRIVE 1 ' ) j WRITELN ( ' 2 TESTER LA PRESENCE D " UN F I CH I E R DRIVE 2 ' ) j WRITELN ( ' 3 EFFACER LE O I RECTORY EN MEHO I RE' ) ; WRI TELN( ' E'SC F I N ' ) ; REAO(CL) ;WRITELNj CASE CL OF ' l ' : TESTER l j
' 2 ' : TESTER2; ' 3 ' : EFFACE R ;
END ; lNTI.L CL=CHR( 27) ;
END .
Suite et fin page 9
Création de fichiers EXEC Yvan Koenig
Le petit programme en BASIC cicontre a été inspiré par le programme de création de fichier EXEC présenté par Bruno Rives (Pom's 3, pages 55-56 ; Recueil, pages 142-1431
L'inconvénient du programme, tel qu'il était présenté, résidait dans son incapacité à accepter des instructions comportant des séparateurs, par exemple POKE A,B.
Le programme ci-contre tourne la difficulté en réalisant un "' INPUT ANYTHING », c'est-à-dire qu'il autorise la rentrée de n'importe quelle chaîne. On pourra noter l'instruction 230 dans laquelle l'utilisation du .. ON. . GOTO » fournit l'équivalent d'un « IF. . THEN . . ELSE ».
1 OS - CH� (4) : � - CHRt ( 1 3) :G$ - C HRt (7) :FG$ � CHRt (8) : TEXT : H OHE : PRINT " DONNEZ LE NOH DU F I C HIER EXEC A CREER" : INPUT N$: PRI NT [)t." OPEN"m: PRINT 1 PRINT "DCN NEZ LES COMMANDES A EXECUTER- : PR INT " <RETURN) POUR TERMINER-
a8 PRINT :CS = " " 98 GET XSs I F XS - � THEN ON LEN (C$
) ) 8 GOTO 198: GOTO 288
92 IF X$ s FGS AND LEN ( CS) ) 8 THEN C • - HIOS <C •• l , LEN <CS) - t) : P
RINT XS - ·XS ; : GOrD 98 9� IF ASC (XS) < 32 THEN PRINT GS j : G
OTO 98 lee cs = CS . XS: PRINT XS j : GOTO ge 198 PRINT 1 PRINT O$-WRITE-N$: PRINT C$
: PRINT 0$ : GOTO 88 2ee PRINT : PRINT O$"CLDSE-NS: PRINT 1
PRINT "VOULEZ -VOUS TESTER CE FICH 1ER EXEC (Q/N) - ;
238 GET AS: ON AS < -N" OR AS ) - o · GOT o 238 : PRINT : ON AS = -N- GOTO 2 68: PRINT : PRINT O$"EXEC-NS
26A END
Pom's nO 7
Suite à l'article d'Hervé Thiriez dans le Pom's l, dans lequel il présente les possibilités du PLE (Program Une Editor) et du CRAE (CoResident Applesoh Editor), d'aucuns ont pu regretter que 1'on doive charger manuellement CRAE en mémoire après avoir « booté • PLE, ce dernier pouvant être chargé automatiquement à partir du HELLO.
Je ne reviendrai pas sur l'intérêt de ces deux programmes ni sur leurs propres commandes, ces dernières étant très largement expliquées dans les articles précités, mals plutôt sur le moyen de les charger en mémoire sans aucune intervention naturelle, si ce n'est la mise sous tension de votre Apple préféré !
Je me suis donc confectionné une disquette qui « boote • directement ces deux utilitaires d'aide à la programmation. Etant enseignant, j'ai p u constater que les stagiaires n'acceptent plus de travailler autrement que sous ce nouvel éditeur PLE + CRAE, surtout s'ils ont peiné quelque peu sur les corrections par ESC l, J . . .
L'obstacle majeur pour la réalisation de cette association est de supprimer l'effet de l'instruction PRINT CHR$(4)"FP" contenue dans le programme PLE. En effet, il n'est pas question de traiter une quelconque instruction de chargement de CRAE après cela. La méthode que j'ai employée nécessite plusieurs étapes, que je détaille ci-dessous.
Première étape Initialiser une disquette avec le programme HELLO PLE + CRAE suivant :
Boot PLE + CRAE
Deuxième étape Charger PLE avec LOAD PLE.FP. Ce programme comporte une partie en BASIC, suivie d'une partie en assembleur.
La fin est identifiée par le pointeur de fin de Program Text PRGEND situé en $AF-$BO en page Zéro (on trouve normalement $1001) .
On peut trouver l'adresse de début en passant en mode moniteur et en examinant la mémoire à partir de $ BOO jusqu'au début des instructions en assembleur :
NOP NOP NOP NOP TXA PHA JSR $FF5B
Cela se situe normalement, si l'on n'a pas modifié les lignes en BASIC du PLE, à l'adresse $SEO.
Troisième étape Calculer la longueur du programme en assembleur en effectuant la soustraction (adresse de fin + 1) (adresse de début) - $1001 - $8EO - $721.
Quatrième étape Déplacer ce bloc d'instruction en assembleur à l'adresse $3000, en mode (adresse de destination) < (adresse de début). (adr. de fin) M, soit ici : 3000 < BEO.1001M.
Cinquième étape Effectuer la sauvegarde sur la disquette initialisée du bloc ainsi
Michel Marquis
déplacé par la commande : BSAVE PLE, A$3000, L$721.
Sixième étape Entrer le programme ci-dessous, et l'enregistrer sur la disquette sous le nom BOaT PLE + CRAE.
Septième étape Copier sur la même disquette le programme binaire livré avec CRAE (sur ma disquette, il s'appelait PLE. EDIT.PROD), effectuer la sauvegarde de ce programme avec BSAVE CRAE,A$7400,L$ICOO.
Nous rappelons que les adresses AA60/61 et AA72/73 donnent respectivement la longueur et J'adresse de chargement du dernier programme binaire manipulé.
NDLR : il est aussi pOSSible de Iransfêrer PLE.EDIT .PROD avec le programme FID fourni sur la disquette MASTER, à condition de le rebaptiser CRAE, puisque c'est sous ce nom qu'il est appelé par le programme décrit dans la sixième étape.
Huitième étape Il ne vous reste plus qu'à « booter .. pour vous trouver après quelques instants de patience en SUPER EDITEUR. N'oubliez pas d'appuyer SUT & pour bénéficier des pOSSibilités de CRAE.
Remarque : tout ceci s'applique à la version 48 K de l'Apple Il, mais vous n'aurez aucun mal à l'adapter à la capacité mémoire de votre Apple...
1 REM -- PROGRAMME HEllO PlE+CRAE --1 8 TEXT ; Hct1E ; ItfJERSE
S MOD I F I ES PAR PLE 38 POKE 1 8 1 5 , 135: POKE 1 8 14 , 8 : POKE 1 8 1
3 , 7 6 : REM MOD I F I CAT I ON DU VECTEU R � A .S788 , ADRESSE DE DEBUT DU PLE APRES QU' I l SE SOIT DEPLACE P AR LUI -HEME
28 VTAB 5 1 HTAB 1 3 1 PRINT - SUPER EDITEU ."
38 VTAB S I HTAB 1 4 : PRINT ·PlE ET CRAE-48 PRINT CH� (4) -RUN BOOT PlE+CRAE- :
NO�L
1 REM -- PROGRAMME BOOT PLE+CRAE --1 8 0. - CH� ( 4 ) ; PRINT o. j - BRUN PLE- :
REM LANCEMENT DE PLE 28 CALL - 22572: REH INITIALISATION
ET CONSTRUCT I ON DES BUFFERS DU DO
Pom's nO 7
48 PRINT o.j - SlOAD CRAE- : REM CI-ltIIRGEHE NT DE CRAE
S8 POKE 1 1 1 , 2 4 8 : POKE 1 12 , 1 1 S : REM M I S E A JOUR DES POINTEURS
68 POKE 1 1 5 , 248 : POKE 1 16 , 1 1 5 : REM FRE TOP ET H I MEM A LA VALEUR .73F8
78 NEW : REM NETTOYAGE DE LA PART I E DE LA MEMOIRE NON PROTEGEE
61
62
Un programme de fondu enchaîné Denis Sureau
Le programme suivant permet d'effectuer un fondu enchaîné par échange très rapide de deux pages graphiques haute résolution. Il faut tout d'abord charger en mémoire le programme par BLOAD HR TRANS. et les images souhaitées dans les trois pages graphiques débutant en $2000, $4000 et $6000.
HR TRANS - Big Mac 1 l l l l l l l l l l l l l l l l l l l l
2 1 l 3 l Fil'IDU ENCf'AINE l 4 l l 5 l AVEC 3 PAGES HR l 6 l l 7 l - D . SUREAU - l 8 l l 9 l l l l l l l l l l l l l l l l ll l l
1 9 I l MAX ! = $999C 12 * UTILISE $6 , $ 7 , $ 8 ,$9 1 3 14 1 5
1 6 1 7 1 8 1 9
29 2 1 TRANS 22 23
24
25 26 27 LOOP 28 29
39
3 1 32 33 34
35
36 37 38 39 49 4 1 42
ORG
LDA STA STA
LDY LDA CLC
AOC
STA
LDA Pf'A LDA
STA
PLA
STA
!NY SNE
!NC
!NC
LDA CMP SNE
RTS
$399
"$99 $6 $8
"$99 $7
11$29
MAX !
($6) , Y
($S) ,Y ($6) , Y
($8) , Y
LOOP
$7
$9 $7 MAX ! LOOP
Il suffît ensuite de faire un POKE 7.32' M où M est [e numéro (1 , 2 ou 3) de [a première page graphique désirée. Un POKE 9,32'N où N est le numéro de la seconde page graphique désirée complète le travail. CALL 768 lance l'échange des deux pages.
programme est proposée sur le HELLO de la disqueHe d'accompagnement de ce numéro de Pom's.
Le programme en BASIC ci-dessous vous permet de créer un effet de fondu enchaîné entre trois images dont vous définissez les noms dans [es instructions 100-120.
NDLR : une démonstration de ce
; SCI1'1ET ; DE
; PAGE
;T�SFERT
HR TRANS DEMO 5 IF PEEK ( 18) - 1 THEN 18 7 PR1NT CHRS (4) " BLOAD HR TRANS"
18 TEXT 1 H(J1E
28 COLOR- 18 38 HLIN 18,38 AT 28 48 HLIN 18 ,38 AT 28 58 VLIN 28,28 AT 18 68 VLIN 28 , 28 AT 38 78 VTAB 13; HTAB 1 5 1 PRINT "DEMO TRANS
HR"
75 VTA8 281 PRINT " CI-tOlRGEJ1ENT DES LO
GOS • • • PATIENCE . "
88 Dt - CHRS (4) + "8LOAO· 98 IF PEEK ( 18) - 1 THEN 158 95 POKE 18 , 1 188 PRINT OS" lm,lC,jI_ " 0 . I ,A8192" 1 1 8 PRINT o." l mao. "0. 2,A 16384" 128 PRINT O$ " l m�o. n o . 3 ,A24576" 158 POKE - 16384 , 8 1 POKE - 16297 , 8 1 P
OKE - 16388 ,8 1 5 1 POKE - 16368,8 28e POKE 7,32; POKE 9,64: CALL 768 �8 BOSU8 1888 388 POKE 7,32: PDKE 9,961 CALL 768 358 GOSUB 1888 488 POKE 7,321 POKE 9,641 CALL 768 458 BOSUe lee6 S88 POKE 7,641 POKE 9,96: CALL 768 5S8 BOSue 18ee 688 I F PEEK ( - 16384> ) 128 THEN 788 65e GOTO 28' 788 TEXT 1 END 1888 FOR 1 - 1 TO 58 1 NEXT : RETURN
Récapitulation
l CALL - 1 5 1
1399 . 326
0399- A9 99 85 96 85 98 A9 9 9
9398- A5 97 1 8 69 29 85 9 C B I 9 3 1 9 - 9 6 48 B I 98 9 1 9 6 68 9 1 9 3 18- 9 8 C8 09 F3 E6 97 E6 9 9
9320- A5 07 C5 9C 09 E9 69 1309G
Pom's nO 7
Les quatre ponts Olivier Herz
Le petit jeu en Applesoft que V(MO. m'a été inspiré par un de ces nombreux jeux électroniques. Garne and Watch en tous genres. Ayant vu ce jeu, je me suis demandé s'il é1a.t dlf· ficile d'en programmer un . la réponse est .. non _.
:..e ..:. ::.... e.. es:: ce r.?-.;.ss;I" à empècher ;.es gens cie se noyer Comme IoOUS pom-ez le \"Cir. tout le ,eu est écrit en Applesoft, la seule particulamé résidam dans des octets constituant une table de formes.
Ceux qui désirent se renseigner sur la création de tabes de formes peuvent lire l'article de Dominique Compère (Porn's 4 pages 19-28, ou Recueil pages 146 et suivantes) .
Les quatre ponts
] L I ST : LES 4 PONTS
1 0 TEXT : HOHE : VTAB 5 : INVERSE : PRIN T • O L I V I E R HERZ PRESENT E : •
28 PRINT : PRINT : NORMAL : PRINT · L E S Q U A T R E S P O N T S
"
39 J : 1 : [ � 8 : F m 8 : 6 1 � 8 : 62 = 8 : 63 0 : G4 = 8 : 6 = 9 : A B : B = B : C = e :
x = 9 : Y = Q : N = 8 : K = 8 : D = 8 : S 8 : H = 8
48 DI H AC 19) , B ( 9) , C ( 9 ) : PRINT : PRINT PRINT "VOUS DEVEZ PLACER VOTRE P
ONT A L ' UN DES QUATRE EHPLACEHENT S POSSIBLES·
59 PRINT : PRINT " -) GRACE AUX TOUCHE S A .
Z M" 68 PRINT -) OU GRACE A VOTRE JOYST I C
. " 78 PRINT PRINT "CECI A F I N DE PERHETTR
E AUX BONSHOHHES DE PASSER SANS ENCI:l'1BRE . . . "
88 PRINT 1 PRINT : PRINT ·VERSION CLAVI ER OU JOYST I CK ? " ;
85 GET A$: I F A$ < ) " J" AND A$ < ) " C· THEN 85
98 PRINT A$ : JO = 8 : I F A$ = " J " THEN JO - 1
95 I F PEEK (768) < ) 4 THEN 2888 t98 POKE 232 , 8 : POKE 233 , 3 : SCALE: 1 : R
OT'" 9 1 1 8 HI:l'1E : HGR : HCOLOR- 3 : HPLOT 8 , 9 :
CALL 62454 128 HCaLOR- 1 : FOR J ,., 48 TO 89 : HPLOT
8 , J TO 279 , J : NEXT : FOR J = 128 Ta 166 : HPLOT 6 , J TO 279 , J : NEXT
136 HCOLOR- 3 : FOR J - 48 Ta 65: Gosue 135: NEXT : FOR J = 1 28 TO 1 4 5 : G
osue 135: NEXT : HCOLOR= 2 : FOR J - 66 TO 86 : GOSUe 135 : NEXT : FO
R J = 1 46 Ta 168 : GOSUe 135: NEXT : GOTO 148
135 HPLOT 8 6 , J TO 1 1 3 , J : HPLOT 168 , J TO 195 , J I RETURN
149 REH 168 VTAB 2 1 : HTAB 1 1 PRINT " SCORE " , " H I
SC" , " NOYES" ; : VTAB 22: HTAe 1 : PR INT S , H , K j
179 G3 le I NT ( RNO ( 1 ) 1 4) :G3 '" 65 � (
Porn's nO 7
G3 ... 8) • 98 � ( G3 "" 1 ) .. 75 � < 6 3 = 2) • 77 • ( 6 3 : 3) : GOSUB 926
28� - 3 - I : B - 9 : C - 6 : 0 E 6 : GOSUB 9 8 6 : FOR J = 8 Ta 1 9
2 1 8 I F A ( J) < ) 1 THEN 259 228 A ( J) = 8 I C < C > = J : C : C .. 1 : I F J :
8 OR J : 1 8 THEN A = A - 1 : GOTO 250
230
240 2'0 2.0
A < J - 1) • " I F J • 1 4 O R J • 1 7
OTa 258 B < B > . J - 1 : B - B
NEXT N - INT < SOR < S,
N OR RNO ( l' )
• 4 OR J - 7 OR THEN 0 J - l ,
•
/ 2 • 1 > : I F A • . 5 THO\! 300
J G
270 J - I N T < 2 • RNO ( t ) ) • 1 0 • 9 , I F A < J - 1 ) - 3 - 1 OR A ( J) • 3 - 1 OR A( 6) - 1 DR AC 16) • 1 THEN 39
0 288 B ( 8 ) - J : B ,., B • I : A = A • I :A < J ) =
1 388 GOSUB 98 8 : I F C - 8 THEN 328 3 1 8 HCOLOR= 3 : FOR J - 8 TO C - I : E =
INT < C< J > / 18) : F '"' C ( J ) - 1 8 � E : GOSUe 88 9 : DRAW 2 • E AT X , Y : N EXT
328 I F a = 9 THEN 348 339 HCOLOR- 9 : FOR J = 9 TC B - I : E ""
INT ( S < J ) / 16 ) : F ,., S<J) - 16 . E : GOSUB B6 9 : HCOLOR- 6 : ORAW 2 • E AT X , V : NEXT
346 I F 0 = 6 THEN FOR J = 1 TO 5 : E = PEEK ( - 16336) : NEXT : GOTO 286
358 E � INT ( 0 / 1 8 ) : F '"' D - 18 l E : GO sua 868 : I F G = 0 THEN HCOLOR= 8 : ORAW 2 • E AT X , Y : S = S • 1 : VT
AB 22: HTAB 1 : PRINT S i : FOR J = 1 TC 1 6 : E E PEEK ( - 16336) : NEX
T : GOTO 28B 368 GOSUB 888 : Y = Y • 1 2 . ( E = I ) : X =
X • 2 - 16 1 ( E - 1 > : HCOLOR= 8 : DRAW 1 AT X , Y : FOR J = 1 TO 1 8 8 : 0
PEEK ( - 16336> : NEXT :A(O> =
e : A = A - 1 378 K = K • 1 : VTAB 22: HTAS 1 : PRI NT "
K ; : I F K - 3 THEN 4e8 386 HCOLOR= 3 : ORAW 1 AT X , Y : FOR J = 1
TO 258 - 158 1 J O : GOSUB 986 : NE XT : GOTO 266
486 VTAS 23 : HTAB 1 : PRINT "VOULEZ-VOUS REJOUER ? " ;
4 1 8 POKE - 16368 , 6 : GET A$ : PRINT A$: IF A$ - -N- THEN END
428 FOR J - 8 TO 1 9 : A ( J) - 6 : NEXT : 1 -
63
64
I :A = 9 : K = 9 : I F S ) H THEN H ::: 1959 0 = 3 : 63 = 168:64 :z '5 3 : 60TO 1979 S 1868 o = 1 6 : 63 = 1 6 8 : 6 4 133
43. S = . , GOTO I l . 1 8 78 I F 0 1 = 63 �O 62 :: 00 THEN RETUR 8 • • I F E = 1 THEN 82. N 8 1 . X c 258 - 28 • F : Y = 4 6 : RETURN 1988 GOTO 998 828 X • 2 1 • 28 • F :Y = 12'5: RETURN 29ee GOTO 2828 9 • • I F JO = 1 THEN 1888 28 1 8 HEX$ = HEX$ • . N0823G" : FOR 1 = 1 •• 5 I F PEEK ( - 16384> < 128 THEN RET TO LEN ( HEX$) : POKE 5 1 1 • l , A5e
URN ( MI 1)$ ( HEX$ , I , I » • 128: NEXT , 9 1 0 G3 = PErK ( - 16384> - 128 : POKE POKE 72 , 8 : RETURN
16368 , 8 2828 HEX$ :: " 8389 : . 0 00 OA • 0 2 • 00 SA 920 I F G3 = 90 THEN G 1 3 : 63 = 86:G4 = . 0 8 E • • 3 6 8 E 7 6 76 00 29 38 3F
133: GOTO 999 28 80 20 38 IF IF .7 20 20 l e 3F .3. I F 03 = 7'5 THEN 0 = 3 : G3 = 168:G4 4C 49 49 38 F' F' F' • • . 0 20 20
53: GOTO 998 20 20 25 20 20 EO 5. 38 38 20 oe .00 I F 63 = 77 THEN 0 = 1 6 : G3 :: 1 6 8 : G 4 8C 8C 25 24 5F 28 20 38 3F 27 20
= 133: GOTO 998 20 lC" : 60SUB 28 1 8 : CALL - 1 00 95. I F G3 = 6'5 THEN 6 = 6 : G3 = 86:64 = 2838 HEX' = "8348 : 3F 67 20 40 89 92 92
'53: 60TO 9 •• 1 2 1 7 1 7 3F 38 38 3. 3. 3. 1 . 2A ••• RETURN 20 35 3. 3. 3' 20 .5 o. 20 3F 3F 99. HCOLOR= 3 , ORAl< o AT 6 1 , 6 2 : HCOLOR= 3F 27 20 20 20 00 28 28 20 l e l e
. , ORAl< o AT 63 , 6 4 : G'1 = G3 : 62 = l e 3F 20 2e 38 3F 28 20 25 3F 3F 64 : RETURN .7 20 E5 39 FF DB 92 92 12 AA 1 5
1 8 8 8 G3 = POL ( 8) : I F 03 ) 127 THEN 1.0 20 28- : 60SUB 28 1 8 : CALL - 100 0 2848 HEX' = "8388: 28 36 36 36 36 3. 3F
1 9 1 8 00 = POL ( 1 ) : I F 00 ) 127 THEN 1 0 3 3F 3. 3. 36 3E 3F •• 2C 38 2e .0 0 38 3F 27 20 20 20 2Q 20 20 20 20
1828 o - 6 : 63 = 86:G4 = 53: GOTO 1878 20 20 20 20 20 35 3F �F 4E ' 20 3. 1838 o = 1 3 :63 = 86:64 = 133: OOTO 1878 .E 3. 8 8 " : GOSUB 28 1 8 : CALL - 1 0 1848 64 = POL ( 1 > : I F 00 ) 1 2 7 THEN 1 0. 0
• 2858 60TO ...
Courrier des lecteurs Un lecteur nous ayant envoyé la petite annonce suivante .. Cause double emploi, vends logiciels américains originaux pour Apple 11_, nous avons répondu comme suit : Cher lecteur,
II ne nous est malheureusement pas possible, bien que les annonces soient gratuites dans Pom's, de publier celle que vous nous proposez.
En effet, des esprits mal intentionnés pourraient croire qu'après auoir acquis ces logiciels américains, et les auoir intelligement dupliqués, uous cherchiez à en amortir le coût.
Notre politique éditoriale est très stricte sur le plan éthique ; nous préférons, dans le doute, un excès de séuérité plutôt que de prêter le flanc à d'éventuelles critiques.
Vous demandez à uos lecteurs el à vos abonnés de uous écrire. Person· nellement, j'ai longtemps hésité car, il est dur d'auouer, je suis bloqué. S.O.S., Pom's, que dois-je faire
,?
Et pourtant, je ne uois que quatre solutions :
1 . Me résigner à des programmes rudimentaires. 2, Acheter des logiciels de «confection .. sans vraiment comprendre ce qui s'y passe. 3. Etudier, étudier encore, mais dans quels livres trouverai-je ce qui m'intéresse ? 4. Vous écrire, car je dois être le type même du néophyte qui démarre et a besoin d'une revue bienueillante,
J'aimerais trouuer une solution à mes problèmes actuels de programmotion : • dans un affichage long, comment
bloquer l'écran à certaines lignes ? • comment trier un tableau qui com
porte des données alphanumériques et des ualeurs ?
M. Albert Bazin - 75020 Paris.
Pour bloquer une partie de l'écran, il suffit d'utiliser les POKE's. Ainsi, POKE 34,n bloque les n premières lignes de J'écran, comme vous pouvez le constater facilement. Dans ce cas. HOME ne nettoie plus la partie bloquée. Le haut de l'écran reste bloqué tant que vous n'utilisez pas
TEXT ou un autre POKE 34,x (avec x<n). Un tableau ne peut contenir il. la fois des caractères alphanumériques et des valeurs, sauf si celles-ci sont définies comme des alphas. En effet, le tableau porte un nom de type NOM$( ) , ou de type NOM( ) . Si le tableau est alphanumérique, les valeurs numériques seront classées selon l'ordre alphabétique (celui du dictionnaire) : si par exemple, vous devez classer ",20> et "' 1 1 1 0> , 1 1 1 passe avant 2 car son premier caractère est " plus petit • .
Voici le patch à apporter à HA/FA (Pom's numéro 5) pour obtenir 1 . 234.567,89F auec l'instruction : & PR/NT USR • - - - . - - F . ; 1234567.89.
Pour un 48K, il faut opérer en deux étapes successiues :
BLOAD HA/FA. CODE1,A$6800. En moniteur :
728L46 7285,2C
BSAVE HAIFA. CODE1,A$6800,
Pom's nO 7
L$loo0.
BLOAD HAIFA. CODE2,A$7800, En moniteur :
7964,2E 7979A6 7990A6 7993,2E
BSAVE HAIFA .CODE2,A$7800, L$lOOO,
M. Chauvière · 21300 Chenove.
Si, après avoir utilisé le programme HELLO de Thierry Le Tallec et Jacques Tran·Van (Pom's numéro 6), on utilise un programme en assembleur implanté en $300, cela efface la page 3 du DOS. On est alors obligé de rebooter pour parvenir à utiliser le DOS. Y a+il une parade ?
André Babeanu 78350 Jouy-enJosas.
Nous transmettons la demande aux auteurs.
/1 existe aux Pays-Bas une émission sur la chaîne nationale Hilversum 2, le dimanche de 19 h 10 à 1 9 h 45 sur 747 Khz qui se propose d'émettre en code des programmes d'informatique compatibles avec tous les micros, y compris l'Apple II.
Le système BASICODE est conçu pour 1 200 bauds. Des expériences ont lieu pour le même protocole à 300 bauds, qui doit donner une réception plus fiable.
Pour tous renseignements, contacter BAS/CODE, Administrative Algemeen Secretariaat, NOS, P.O. Box 10, 1200 JB Hilversum. Pays·Bas.
Thierry Lombry . Rue Tienne·aux· Pierres 94 · B. 5150 Wepion - Belgi' que.
1 . Le patch de la ROM LowerCase est déconnecté par le HELLO de Pom's 6. Je suppose que c'est le module destiné à effacer PLE qui est coupable. Pourriez' vous me dire comment modifier HELLO pour éviter ce désagrément ?
2. Je voudrais faire quelques remar· ques au sujet de SNTX COM· PILE (pom's 6). Contrairement à ce qu 'écrit Hen, TASC ne provoque pas l'effacement du pro· gramme étudié, mais seulement celui de ses deux premiers octets. Il suffit de mémoriser ces octets, puis de les rétablir. D'ailleurs, il n'y a pas lieu de' sauuegarder 104, 104, 175 et 176 puisque la mise en place de COMPILE ne les perturbe pas.
Pom's nO 7
Si l'on fait tourner le programme cijoint, on crée un fichier KO : il suffit alors de faire EXEC Ka pour lancer SNTX COMPILE et récupérer ensuite le programme étudié. U semble donc possible de créer un programme compilé selon les indications précédemes.
II serait souhaitable de compiler de façon à replacer sous la HIMEM de PLE. On pourrait préuoir de placer entre cette HIMEM et SNTX COMPILE les différents octets à mémori· ser, à savoir : ' • les deux premiers octets d u pro
gramme étudié , • l'indication du slot 1 de l'impri·
mante, défini par le fichier EXEC et lu par $NTX ;
• ce serait préférable à /'implantation actuelle en 1912, 1913.. qui interfèrent avec l'imprimante.
3. Je joins les listings annotés de SNTX et FAIT SYNTAXE permettam d'imprimer sur papier les messages d'erreurs.
4. Je uous signale que le programme considère comme une erreur une ligne de DA TA telle que : 2000 DATA "Montant : . . . " Apparemment, ce sont les "' : » qui le perturbent.
Yvon Koenig ' Mosal'que Gerbino Rue du Stade · 06220 Vallauris
L Patch de la ROM LC Signalons tout d'abord que le menu ne détruit pas en fait PLE : PLE se contente d'abaisser les buffers du DOS et de se loger ainsi entre le DOS et ses buffers, de façon à ne pas être affecté entre autres par la commande FP puisqu'il se trouve de cette façon au·dessus de la HIMEM. Le menu se contente de remettre ces buffers à leur place. Or, le patch d'entrée de caractères de la ROM LowerCase abaisse de $100 ces buffers et la HIMEM par la même occasion. Un autre problème avec ce menu était le JSR SETKBD du début qui fait un IN #0 de façon à déconnecter la routine d'entrée de caractères, ce qui est nécessaire si PLE est présent, mais doit être évité dans le cas présent . Finalement, je propose le patch suivant. qui évite de réassembler le programme de menu, en utilisant une .. déviation . par quelques instructions assembleur ajoutées à la fin du code du programme.
LOAD MENU CALL -151
810 _4CFEOC CFE 20 58 FCAE 55 PA EO D06 OOOCAE56AAE09COO05 OOF A99B 4C 30 084C 13 08 AF , 170D SAVE MENU Le
2. SNTX compilé Remarquons tout d'abord que le programme que j'ai compilé est légèrement différent du programme SNTX, car il n'y avait pas lieu de retenir les pointeurs 103, 104, 175 et 176. La compilation n'a pas été très facile : j'ai implanté la bibliothèque RUNTIME à partir de $6500. J'ai ensuite mis le programme objet derrière (en décimal 29869) . L'ensemble a été calculé de façon à ne pas dépasser l'adresse $9000, afin d'être compatible avec PLE. Quand j'écrivais que TASC efface le programme, je pensais bien sûr à un effacement au sens des commandes FP ou NEW et non à un effacement physique. En effet, TASC termine son exécution en mettant à zéro les mémoires 800-801-802, à $801 le pointeur 103-104, et à $803 le pointeur 175-176, ainsi que les pointeurs 105-106, 107-108 et 109-110 : il s'agit visiblement d'un NEW (ce n'est pas un FP car, si l'on change la HIMEM, elle n'est pas rétablie). Pour éviter cet ennui, il existe des petits programmes en assembleur permettant de récupérer un programme effacé par NEW ou FP. On peut aussi utiliser le fichier EXEC KO créé par le programme FAIT KO de la page 66 (provenant de votre lettre , après une petite m9dification) .
3 . Version imprimante de SNTX Nous n'avons pas la place de mettre ici la liste complète de SNTX modifié que vous nous envoyez. Voir en page 66 la liste des lignes à modifier dans SNTX pour pouvoir sortir l'analyse sur imprimante.
4. Un bug dans SNTX En ce qui concerne les instructions DATA mal comprises par SNTX, cela fait partie des 0,1 % à 1 % de cas que je pense avoir oubliés. Vous trouverez en page 66 la liste des modifications à apporter pour que ce problème soit résolu.
Olivier Hetz J'utilise HA/FA en version carte langage. Pouvez· vous me dire comment charger un outre programme de musique en cours de programme
66
en $DOOO ? Faut-il refaire A = PEEK(-16247), une fois, deux fois ? P. Y. Gouriou 110, auenue Lartigue -08600 Giuet
Pour charger un autre air de musique dans la version 64K de HAIFA (en $0000 dans le BANK 1 de la carte langage) , il faut procéder
comme HAIFA.EXEC et faire (depuis un programme ou bien au clavier) deux fois A - PEEK(-16247) avant de faire le BLOAO ; il est en outre conseillé de faire A - PEEK (-16254) après ce BLOAO pour remettre la carte langage dans l'état normal en utilisation de l' Applesoft. De même, pour charger une autre table de caractères (en $0000, $0600, $0900 ou $OCOO sur le
BANK 2 de la carte langage) il faut faire deux fois A =PEEK(-16255) avant le BLOAO et A - PEEK (-16254) après.
Votre question m'a d'ailleurs fait découvrir une erreur dans le début d� j'annexe 1 de l'article sur HAIFA (numéro 5 de Pom's) j'ai inversé les rôles des BANKS 1 et 2 de la carte langage.
Fait KO J U ST U I o. ,. CHIM ( 13) ' CHIM (4) ; � • -KO' 211 PRINT o.' OPDI·�o.'OELETE'�o.'OPDI·
P-n()t. 'WRI TE 'Nt 31 PRINT 'POKEI912,PEEK( 113) , POI(E I 9 1 3 , P
EEK( 1 1 4 ) ' 41 PRIHT 'POKE I 9 1 4 , PEEK( t7�) ,POKE I 9 1 5 , P
EEK(116)" �e PRINT 'POKE I916 ,PEEK( PEEK( 11I3)+PEEK(
1114) 12�6) ,POKE 1 9 1 1 ,PEEK( I·PEEK( 18 3)+PEEK( 114)12�6) '
68 PRINT 'SU)AO SNTX CCf1PllE' 7t PRINT "CAlL 29969' 7 1 PRIHT " II ' ni PRINT 'POKEI1I3, PEEI« 1912) , POKE I1I4,f>E
EI« 1913) IP()t(EI7�,PEEI« 1914) ,POKEI 16,PEEI« 191:1)
911 PRINT "POKEPEEI« 1 9 12) +PEEI« 1913) 1256 ,PEEI« 1916)'
98 PRINT 'POI(E I+PEEI« 1912) +PEEK( 1913)12 56, PEEI« 1911> "
9:1 PRINT " D E U , I ' 188 PRINT ()t.'ClOSE'�()t.'lOCK·�
Fait syntaxe IMP J U ST 38 PRINT 'PQKE 1914,P[EK( 183) , POK( 1 9 1 �
,PE(I« 18")" 411 PRINT 'POKE 1916,PEEK ( 1 7�) ,POKE 1 9 1 7
,PEEI« 176) "
SNTX IMP III ST
97 PRINT CHRt (4) ' PRI I ' CHIM ( 13) , POl<
Courrier des clubs
E 16�1.98 ,yI( - l , RETURN lU IF NOT ERR GOTO 1311 1 11 2 I F ERR AND Y I( • 8 THEN GOsue 97 184 PRINT 'UGNE " U ' INSTR " I ST' ) ' "
I F ERR - 2 OR ERR - 3 THEN PRIN T e. I ' " ,
1 111 I F ERR < 8 AND ERR < ) Il THEN PRI NT '11111 · 1
:1111111 ERR - I l , ON YI< _ Il OOSUS 97: PRINT 'UGNE ' L I ' INSTR ' I ST " ) 'ERtCE
RR) ,PTR • NlI GOTO 1811811 11111113 GOsue III,LN • A : GOSUB 1 8 : L N • A
1 256 + UN : L I • � 11111116 REH Ilele IST ,. IST + 1 12111111 PRINT 1 POKE 16�7.411, PRINT CHIM
(4) 'PR.e" , PRINT "VOULEZ-VOUS RE VENIR AU PROGRAMME INITIAL? ' ;
128211 PRIN" M I I F AS - 'd' THDI POKE le3, PEEl< ( 191") , POKE 184, PEEl( ( 191:1) 1 POI<E 17�, PEEl( ( 1916) : PO I(E 116, PEEl( ( 1911>
2e288 PTR - PEEl< ( 1914) + PEEl< ( 19 1�) li 2�6
SNTX BUG III ST '31' 3318
33211 33311 334e 33:111
ERR " 12 G0SU9 1 8 1 IF A • Il OR A ,. �8 THEN
'00 I F A ( ) 34 THEN 33111 GOSUS 1 8 , I F A • Il THEN 188 IF A - 34 THEN 33111 OOTO 3331
L'Association Floppymathique anime un club de microinformatique sur matériels Apple et Sharp. Ce dub s'adresse à des jeu· nes (à partir de la classe de 4e) et à des adultes .
Le 12 janvier 1983, une vingtaine d'architectes, utilisant professionnellement des Apples 11 et III, se sont réunis à Paris , à la.suite de quoi des axes d'intérêt majeur et des actions communes ont été définis.
demander la liste des participants, afin de contacter le plus proche. Les producteurs de matériels et de logiciels susceptibles d'être utilisés dans notre profession sont aussi priés de se faire connaître. Jean-Michel Guillaume - 110, avenue du Général-Lederc - 75014 Paris.
Niveau : initiation ou perfectionnement. Pour tous renseignements, téléphoner le jeudi de 16 h à 18 h ou le samedi de 14 h à 18 h au (20) 73.94.80. Sinon, le soir vers 20 h au 1201 89.90.76. R. Courouble - Association Floppymathique - 54, rue de liUe - 59100 Roubaix.
En outre, la fondation d'un club d'utilisateurs a été décidée. Les architectes équipés d'Apples sont invités à y participer et priés de se faire connaître à l'adresse cidessous, afin d'ètre informés des développements ultérieurs.
Ceux qui ne possèdent pas encore de matériel et qui souhaitent avoir des renseignements peuvent nous
Robotwar
Appel à tous les utilisateurs de Robotwar. Un concours va être organisé. Prendre contact d'urgence avec Jean-Marc Servat. Tél. : 651.66.61 (de préférence après 19 heures) .
Pom's nO 7
Offre de lancement :
14985:.T Tanl au 01.01 �
• APPLE marque déposée APPlE CO'YIPUle' INe -CPIM marque déposée drgrra/ 1esearCh INe
1 7 bis, rue Vauvenargues 7501 8 Paris Tél. : 229 19. 74 + Télex : 280 150 F
1 1
1 1
1
IMPORTATl:UR EXCLUSIF r - - - - -._>.J
.1 •
! 1 ., • ;
,
JCR,DES MICRO-ORDINATEURS PROFESSIONNEL ET GRAND PUBLIC.
JEUX r-:;;<')-- ÉDUCATION
gamme ' d'accessoires,
GESTION BUREAUTIQUE
Apple il + 48K + Disk avec Contr61eur + Moniteur 12".
SHARP PC 1500 Ordmateur de poche de l.as Ko de mémOire v"lVe extensible avec module de 8 K CE 155.
CE 150 Mini table traçante 4 couleurs drrec!ement connectê'ble SUI PC 1500, Inlerface K 7 incorporé. �41"" r '-"-.'"'�_+ CE ISO. �
EPSON HX 20 Un système compact clavier écran LeD avec imprimante.
Micro K 7,
Extension 16 K.
EPSON Impnmanles de haute qualité ct'impressiOn.lnterface parallèle type Centrames. MX 80 IT . 80 cps. :o\t ou 132 compressés 5 800F" -MX 100 : 100 cps. 132 caractères , ou 233 cornp,""""". [8200 Fl
-
APPLE I I I L'outil professionnel par excellence. 128 Ko ou 256 Ko. Unité de disque incorporée. Sortie RS 232. Nombreux interfaces dJsponibles. Adjonction possible d\m disque dur de 5 méga. Profilé. Êcran vert haute résolunon antireflets. Clavier Azerty - Qwerty . Nous consulter. _ tr&R) t}NcoRE }oiolNS C _
-
COMMODORE VIC 20 Un vrai micro-ordinateur pUISsant el évoluùf idéal pour j'imtIation comme pour la pratique de la programmation. 16 couleurs RAM 3,5 K. �r VersIon en PAL. �
-
-
• ATARI 400 et 800 • APPLE Il E • CASIO PB 100 • SHARP PC 1251 • SHARP PC 1212 • INTERF. RS 232/pC lSOJ • VICTOR Il 48 K HR
T0 7 THOMSON Un ordmateur 100% français 8 Ko extensible à 32 Ko. Fourni avec un lecteur optique. Sortie couleur Péritel. Clavier Azerty accentué . Idéal pour apprendre en famille. 3650F
Vente par correspondance Catalogue gratuit sur demande
Crédit 4-36 mois Leasing 36-48 mois
BOUTIQUE 58, rue Notre-Dame-de-Lorette 75009 PARIS
Tél. (I) 282.19.80 - Télex : 290350 F
59. rue du Docteur Escat 13006 MARSEILLE
Tél. (91) 37.62.33
Homites d'ouverture du magasin - du mardi au samedi : 10 h - 12 h 45 / 14 h - ·19 h