Skip to main content

Full text of "memsoft mdos manuel2 FR"

See other formats


CARTE M/DOS 6502 

LE SYSTEME 
DEXPLOITATION 

DU 6502 




UN FRODUIT MICRO INFORIVi ATIQUE SERVICE Ff.ANCE 



SOMHAIRE 



CHAPITRE I DESCRIPTION GENERALE DU SYSTEME 1 

1-1 LE DISK OPERATING SYSTEM 1 

1- 2 LA GESTION DES MASQUES DE SAISIE 

ET D ' IMPRESSION 1 

CHAPITRE II MISE EN ROUTE DU M/DOS 6502 2 

2- 1 MISE EN PLACE D'UNE CARTE M/DOS 2 

2-2 MISE EN ROUTE DU M/DOS 6502 SUR 

DISQUETTE APPLE ' 3 

2-3 FORMATTAGE D'UNE DISQUETTE 4 



CHAPITRE III LE DISK OPERATING SYSTEM 



3-1 LES FICHIERS 5 

3 - 1 - a Structure des enregistrements 5 

3 - 1 - b Contr51e. des erreurs 6 

- erreurs recouvrables 6 

- erreurs non recouvrables 6 

- erreurs systdme 7 

3 - 1 - c Ferraeture de fichiers 7 

3-2 LES DIFFERENTS TYPES DE FICHIERS 8 

3 - 2 - a Fichiers sequentiels relatifs 8 

- operations "dites" sequentielles 8 

- operations "dites" relatives 8 

3 - 2 - b Fichiers sequentiels indexes 9 

3 - 2 - c Fichiers multicles 10 

3-3 LA CREATION DE FICHIERS 10 

3 - 3 - a Syntaxe generale 10 

3 - 3 - b Fichiers relatifs 12 

3 - 3 - c Fichiers sequentiels indexes 13 

3 - 3 - d Fichiers multicles 13 

3-4 L'OUVERTURE D'UN FICHIER 14 

3-5 COPIE DE FICHIERS 14 



CHAPITRE IV 



LES MASQUES DE SAISIE 



16 



4-1 STRUCTURE D'UN MASQUE 16 

4 - 1 - a Le texte 1 6 

4 - 1 - b Les zones de saisie 16 

4 - 1 - c Caracteres transparents 17 

4-2 UTILISATION 17 

4-3 GESTION DE L 1 ECRAN 18 

4 - 3 - a Validation d'une zone 18 

4 - 3 - b Traitement du caractere 19 

4-4 CREATION DE MASQUES 19 

4 - 4 - a Nouveau masque ' 19 

4 - 4 - b Masque issu d'un precedent 20 

4-5 CREATION D'UN MASQUE DE FACON 

AUTOMATIQUE 21 

4-6 EXEMPLE 21 

4-7 IMPRESSIONS PARAMETREES 22 

4-8 TABLEAUX ET MASQUES 23 

4 - 8 - a La saisie du tableau complet 23 

4 - 8 - b La saisie d'une seule zone d'un 

tableau 24 

4-9 PRINT USING 24 

4 - 9 - a Cadrage gauche, format flottant 24 

4 - 9 - b Cadrage droite, format flottant 24 

4 - 9 - c Cadrage droite format gestion 25 

4 - 9 - d Indication du cadrage dans un masque 2 5 

4-10 LES MASQUES GLOBAUX 26 

- mise en oeuvre 26 

4-11 CREATION D'UN MASQUE EN MEMOIRE 28 



CHAPITRE V 



LISTE DES 


ORDRES ET SYNTAXE 


29 


5-1 


NIVEAU GLOBAL 


29 


5-2 


NIVEAU ACTION MASQUE 


31 


5-3 


NIVEAU ENREGISTREMENT FICHIER 


33 


5-4 


PROGRAMMES 


36 


5-5 


BINAIRES ET PROGRAMMES ASSEMBLEURS 


40 


5-6 


ACCES DIRECT 


41 


5-7 


EXEMPLES 


42 



CHAPITRE VI FONCTIONS COMPLEMENTAIRES 53 

6-1 CONTENU D'UN DISQUE 53 

6-2 CHANGEMENT DE DISQUETTES 54 

6-3 FONCTIONS DE CALCUL SOR 48 CHIFFRES 55 

6-4 PRECISIONS DES CALCULS 55 

6-5 SAISIE ET AFFICHAGE 56 

6-6 AZERTY 57 

6- 7 EXECUTE 58 

CHAPITRE VII PARAMETRAGES DU M/DOS 6502 59 

7- 1 IMPLANTATION 59 

7-2 PRINCIPE DE LA COMMUTATION 60 

7-3 RESET ET INTERRUPTIONS 61 

7-4 L'OCCUPATION RAM DU M/DOS 6502 62 

7-5 POSITION DES BUFFERS DU DOS 63 

7-6 LES ACCES AUX PERIPHERIQUES 64 

7-7 CARACTERISTIQUES DU PROGRAMME 

D 'ACCES AU PERIPHERIQUE 64 

7-8 DESCRIPTION DE LA GESTION D'ECRAN 68 

7-9 MODIFICATIONS DE L' ENTREE CLAVIER 74 

7- 10 AJOUT DE NOUVELLES COMMANDES AU 

M/DOS 65 02 7 4 

ANNEXES 78 

CHAPITRE VIII POINTEURS DU DOS 80 

8- 1 UTILISATION DE LA MEMOIRE 80 
8-2 DIMENSION PAR DEFAUT DES TABLEAUX 81 



CHAPITRE IX PRINCIPE DE FONCTIONNEMENT DU M/DOS 6502 



82 



Structure des objets en memoire 

centrale 82 

Structure des fichiers/DCB 84 

- creation du fichier 84 

- les cles ou pointeur 84 

- fichiers multicles 85 

- principe de recherche par cle 8 5 

- structure de 1 ' enregistrement 88 

- codage des informations 89 

- codage des dates 90 

- data control block 92 
Structure des masques 9 3 



CHAPITRE X UTILITAIRES STANDARDS 9 6 



azerty 96 

binary 9 6 

auto copie 9 6 

auto list 96 

autostart 97 

boot 97 

check rom 97 

copie 97 

copie si 98 

demo 98 

file copy 98 

hello 98 

interro 99 

maj page 3 9 9 

renumerote 99 

RWTS 3.2 / 3.3 100 

scroll 100 

super contrSle 100 

util 100 



CHAPITRE XI UTILISATION D ' UNE PART IE DES FONCTIONS 

DU M/DOS 6502 EN DOS 3.2 DOS 3.3 103 



RESUME DES ORDRES DU DOS 



MONTAGE DES REPROMS SUR LA CARTE M/DOS 6502 



Chaque reprom possede une petite encoche 3 l'une de ses 
extremxtes. 



Cette encoche doit toujours Stre placee en haut de la carte. 

II y a huit reproms. Lorsque vous regardez la carte cSte com- 
posants, le corinecteur pour slot APPLE tourne vers le bas, 
vous devez les placer de gauche a droite, dans l'ordre suivant 



D81 DJ31 D80 D00 F8 F0 E8 E0 



a. 
O 









CO 






Q 




P 



a. 



CO 

W 



IMPORTANT : Manipulez les reproms avec precaution. 

Apres 1' insertion des reproms dans leurs supports, 
verifiez que toutes les broches de chacune d'elles 
soient bien en place et bien enfoncee. 



MICRO INFORMATIQUE SERVICE. 





TRES IMPORTANT - TRES IMPORTANT - TRES IMP 
CREATION D'UNE DISQUETTE DE DEMARRAGE 14 OK 
V J 

La disquette de demarrage qui vous est fournie avec la carte, 
est, si vous n'avez rien specifie, en 110K. 

MAIS SI VOUS POSSEDEZ UN CONTROLEUR DE DISQUETTE 140K, IL VOUS 
EST POSSIBLE DE FABRIQUER VOUS-MEME LA MEME DISQUETTE DE DEMAR- 
RAGE EN 14 OK. 

Pour cela, apres avoir place la carte M/DOS 6502 comme Indique 
dans le manuel, montez deux lecteurs sur votre carte controleur 
140K. Placez cette derniere sur le SLOT 6. Introduisez dans le 
drive (SLOT 6, drive 1) la disquette BASIC fournie avec votre 
controleur 140K. Demarrez le systeme. 

Le programme vous demande de placer une disquette 13 secteurs. 
Introduire alors la disquette de demarrage 11 OK. Vous avez alors 
demarre le systeme M/DOS 6502 110K. 

Executez alors le programme RWTS 3.3 en tapant ; RUN "RWTS 3.3" 
II vous est alors demande : QUEL DRIVE VOULEZ-VOUS EN 14 OK ? 
Repondre : 1 

Une fois cette operation terminee, placez une disquette vierge 
dans le drive 1 (SLOT 6, drive 2) ; executez le programme BOOT 
par : RUN "BOOT" 

Ce programme prepare une disquette demarrant seule. Le programme 
vous demande : DRIVE CHOISI ? 
Repondre : 1 

II vous demande alors : FORMATTAGE PHYSIQUE ? 
Repondre : (oui) 

Une fois cette operation terminee, faire CTRL/A pour sortir du pro 
gramme. Votre disquette est prete : elle demarre automatiquement 
en 140K. II ne reste plus qu'a placer sur cette disquette les uti- 
litaires. Pour cela, faire : RUN " : AUTO COPIE 

Indique z : ORIGINAL EN 0, COPIE VERS 1 

II vous est demande : VOULEZ-VOUS UNE SELECTION ? 

Repondre : N (non) 



La carte M/DOS 6502 est garantie trois tnois, pieces et main 
d'oeuvre. Port en sus. 



- 1 - 



C H A P I T R E I : 
DESCRIPTION GENERALE DU SYSTEME 



Lq M/DOS B502 est un outil puissant d'aide a la realisation da logiciels de 
gestion. II comprend deux parties principales permettant une programmation 
rapide, en particulier dans les applications en temps reel. Cette version 
sur silicium est entierement compatible aveo les programmes M/DOS 6502 ecrits 
sous la version precedente. Neanmoins, nous attirons 1' attention du leoteur 
sur le fait que cette nouvelle version possede do nouvelles possibilites. 
II faut noter qu'il y a une legere modification quant a 1 'utilisation de la 
page 3 de votro APPLE. 

ATTENTION : les fonotions SCROLL UP et SCROLL DOWN ont vu leurs adresses 
modiflees (voir ohapitre X : Les utilitaires) . 



1 - 1 - LE OISK OPERATING SYSTEM : 



II comprend les options suivantes : 

- fichiers aequentiels 

- fichiers relatifs 

- fichiers a acces par cles 

- fichiers multicles 

quelle que soit l'option choisie, aucune modification de variables n'est neces- 
saire, celle-ci etant faite a la creation du fichier, et enregistree dans 
un DICTIONNAIRE associe. Le DOS comprend en outre la notion de SOUS-ARTICLES. 
Les enregistrements sont done de taille variable. 

La gestion du disque est entierement dynarnique et auoun dimensionnement de 
fichier ou d ' enregistrement n'est necessaire. 



1 - 2 - LA GESTION DES MASQUES OE SAISIE ET D ' IMPRESSION 



Cet utilitaire permet de resoudre de fagon rapide et souple tous les problemes 
de saisie de donnees et d' impression. Tous les controles de validite sont ef- 
efctues lors de 1 ' utilisation. Les differents types de variables que l'on 
utilise sont compatibles avec ceux de la gestion de fichier. Un masque est 
compose de deux parties : 

- un texte dont les caracteres repetes sont codes pour gagner de la 
place, aussi bien sur disque qu'en memoire oentrale au moment de 

1 'utilisation. 

- un ensemble de fenetres de saisie. Chaque fenetre est associee a 
une variable BASIC et a un ensemble de controles a Sffectuer. 

Pour Faciliter la saisie, un certain nombre de touches de fonction ont ete 
creees, facilitant la gestion de l'ecran. 



CHAP IT RE II 
MI SE EN ROUTE DU M/DOS 6 5 2 

2 - 1 111 SE EN PLACE D'UNE CARTE M/DOS 



Avant touto manipulation, eteindre votre appareil en bascu- 
lant votre interrupteur marche - arret sur la poBition arret 
et rotirer votre cordon secteur de la prise de courant. 

Ouvrez votre appareil. Sttr le bac inferieur, vous voyez au 
fond a droite, un ensemble de huit conneoteurs. La carte 
tl/DOS eat di&ymetriquo par rapport a l'axe du oonnocteur. 




- 3 - 



La zone A , c'est a dire le cote ou la carte est plus longue 
est toujours diriga vers l'avant de voire appareil. En regar- 
dant la plaque ml crop roc e s s eu r , on volt 1 mined la tement que 
les Donnecteurs sur lesquels vous allez fixer votre carte 
sont numerotes de a 7, le slot etant le. plus a gauche, 
le slot 7 etant le plus a droite. Le n° 'ast i.imprime sur le 
bord de le carte mi c rop roc es seu r . Ces eonnecteurs sont aussi 
appeles slots. Choisissez un des slots entre le numero 1 et 
le numero 7. Fixer la carte dans le slot choisi (Par ex., lo 3). 

ATTENTION : Ne jamais toucher les surfaces dorees des connec- 

teurs. Ces eonnecteurs sont de haute qualite et 

de haute precision. Tout depot gras risque d'en 
□ompromettre serieusement le f □ nc t i o nneme n t . 
Au cas ou un connecteur serait encrasse, nettoyer 
douoement avec un chiffon imbibe d'alcool a bru- 
ler ou avec un produit special contact. 

Me jamais exercer d ' effort susceptible de defor- 
mer les contacts. 

Ne mettez jamais votre carte en flexion, vous 
risqueriez de couper les pistes. 

Vous vous assure rez ainsi une installation p a r - 
faite et fiable. 



2 -'2 MISE EN ROUTE DU I1/00S B502 SUR DISQUETTE APPLE 



Pour mettre en oeuvre le M/DOS 6502, introduisez la disquette 
systeme dans le lecteur " " ( le DRIVE 1 du controltjur' sur 
le port 6) et ferrnez la porte du lecteur. 

Si votre appareil est muni d'une ROM AUTOSTART, mettez la ten- 
sion sur votre micro-ordinateur et le systeme se chargera 
au toma t iqu erne n t . Dans le cas contraire, faites : 



RESET 

6 CTRL/P 



RETURN 



Le systeme se chargera de lui-rneme et le message suivant appa- 
rait : 

tVDQS 6502 - V4 

MICRO INFORMATIQUE SERVICE 

P. LAFFITTE 

P. NESNIDAL 



- 4 - 



2-3 FORMATTAGE D'UNE DISQUETTE 



La disquette systeme qui vous est fournie aveo 4b manual: est |une.':d:isquette 
specials qui contient les utilitalres du systeme M/DOS 6502. Si vous 
avez deux drives, nous vous oonseillons tout d'abord de faire une oopie 
de cette disqustte. Pour arriver a recrear une nouvelle disquetto, 11 
faut prendre une disquette vierge et pre-inscrlre dessua las valours 
necessalres pour que le systeme puisse retrouver las pistes et les 
secteurs. Cotte operation s'appelle le formattage. 

formattage d'une disquette de type systeme : 



Pour oela, utiliser " l'utilitaire BOOT ". 
Voir chapitre XI : utilisation da oe programme. 

Formattage d'une disquette de type fichier : 



Cette disquette ne permet pas de demarrer le systeme. Utiliser l'instruc- 
tion : LET FORMAT, (nurnero du drive)". 



Cette instruction de formattage est valable quel que soit le disque ou 
la disquette implantee correotement sous M/DOS 6502. II n'en va pas de 
meme pour la creation de disquettes permetfcant de demarrer le systeme. 
Pour rendre una disquette " autostart " se referar a la notice d 1 implan- 
tation fournie en general par le constructeur de 1 'unite de disques. 



L'utilitaire BOOT permet d'obtenir une disquette qui pcurra faire demarrer 
le M/DOS 6502, mais qui ne contiendra aucun programme . Si vous voulez 
obtenir une disquette avec les utilitaires MASTER dassus, il vous suffit 
da faire une copie de la disquette MASTER fournie par M.I.S. 



- 5 - 

CHAPITRE III 
L E DISK OPERATING SYSTEM 

3 - 1 - LES FICHIERS 



3 - 1 - a) STRUCTURE DES ENREGISTREMENTS 



La structure dea fiohiers du M/DOS B502 a ete concuede fagon a slmplifier 
la programmation, et surtout a limiter le temps d' execution du programme 
BASIC. 

Un fichier est un ensemble d ' enregistrements . Le nombre d ' snreglstrements par 
flchler ne peut depasser 64 000. La tallle du fichier est geree dynamiquement 
et il est inutile de definir celle-ci a la creation d'un fichier. 

Chaque enregistrement d'un fichier est un ensemble de variables BASIC. 
Ces variables peuvent etre de tous types (a quelques restrictions pres pour 
les cles des fiohiers a acces par cle - voir fichier sequentiel indexe chapi- 
tre 3 ■ - 2 -0 -) 

Rappelons les differents types de variables du BASl-G : 

- les flottants (5 octets) notes XY 

- les entiers (2 octets) notes XY% 

- les chaines de caracteres de longueur a 255 notees XY$ 

avec les conventions suivantes : 

- le nom comporte 1 ou2 caracteres X, Y 

- le premier X est une lettre 

- le second Y (facultatif) est une lettre ou un chiffre 

De plus, des tableaux peuvent etre definis pour chacun de ces types de varia- 
bles. Les dimensions et le nombre de dimensions de ces tableaux ne sont limites 
que par la taille de la memoire centrale de 1 ' ordinateur. 

Exemple : TA$(12,2, 1) 

Les indices des tableaux commencent a U. 

Dans le DOS, 2 nouveaux types de variables ont ete crees : 

- les dates notees XY$* dans les ordres It/DOS 6502 

- les binaires notes XY|/ dans les ordres M/D0S 6502 

Afin de reduire la place occLipee par un enregistrement sur le disque, les va- 
leurs numeriques sont codees en binaire, les chaines de caracteres en format 
variable et les tableaux sous forme de matrices creuses. 

II en resulte que si un tableau ne comporte qun3 elements non nuls, seuls 
ceux-ci seront sauves sur le disque. 



- 6 - 



3-1 - b) CONTROLE DES ERREURS 
ERREURS RECOUVRABLES 

Apres chaque ordre du DOS, 11 est possible de verifier que l'ordre a bien ete 
execute. Pour cela, un octet est reserve (189 sur ITT/APPLE). Cette variable 
sera appeleoSTATUS dans le reste de cette documentation. 

Si PEEK (169) = : tout s'est bien passe. 

Sinon, une erreur est apparue lors de i'execution de l'ordre. Dans ce cas, 
PEEK (1B9) est le code de l'erreur. 

Une erreur de ce type n ' interrompt pas la programme. 

En general, 11 n'y a pour chaque ordre qu'un seul type d'erreur recouvrable. 
II suffit done de verifier que le STATUS est nul pour a'assurer que l'ordre 
a ete execute normalement. 

Exemple : Lecture d'un enregistrement 

PEEK C 1 892) > 1' enregistrement n'axiste pas. 



CODES ERREURS : 


1 


erreur sur masque (abandon...) 


10 


inexistant 


20 


priorite trop faible (iBcture) 


30 


existant (en creation) 


255 


fin de fichier 



En mode direct, pour eviter au programmeur de tester le status apres chaque 
commando, le message " DIRECT ERROR " apparait, si le STATUS est non nul. 

ERREURS NON- RECOUVRABLES 



Ces erreurs (qui interrornpent le programme) peuvent avoir deux causes : 
- Erreur de programmation 

- SYNTAX ERROR 

syntaxe d'un ordre impossible. 

- ILLEGAL QUANTITY ERROR 

erreur sur les numeros logiques (deja utilise, non ouvert.,.) 



- 7 - 



- BAD SUBSCRIPT ERROR 

tentative de lecture d'un tableau dans un enreglstrement avec un dimen- 
sionnement inferieur a celul utilise lors de sa creation. 



- OUT OF MEMORY ERROR 

plus de buffers libres [pour resoudre co probleme, voir le chapitra 8 
P01NTEURS OU DOS). 



ERREURS SYSTEME 



- TA ERROR 

disque plein (Track Allocation Error) 

- DATA ERROR 

erreur de lecture ou d'eoriture sur le disque. Catte erreur signale 
un mauvais fonctionnement du support magnetique. Attention, cette 
erreur peut provenir d'une protection d'eoriture du support. 

- FUNCTION ERROR 

erreur detectee dans un controle du a une incoherence des parametres 
dans un acces disque. 

- NG ERROR 

erreur signalant une incoherence des donnees en memoire (faire : 
LET"#C,S3" par programme pour suppritner l'erreur). 



3 - 1 - c) FERMETURE DE FICHIERS 



Aucune ferrneture n'est necessaire. A la fin de chaque operation, tous les pa- 
rametres necessaires au fonctionnement du DOS et ayant ete modifies, sont 
souves sur le disque. 

La ferrneture, qui en general realise cette operation, mais seulement en fin 
de traitement, est dona inutile. 

En cas d' arret imprevu du programme, seule 1' operation en cours peut etre 
perdue. 

II est neanmoins. possible de recuperer la place occupee en memoire centrale 
par l'ouverture d'un fichier. Pour cela, utiliser l'ordre CLEAR. 

II est possible de recuperer la place : 

- d'un module particulier (masque ou fichier) designe par son numero lo- 
gique. voir 5 - 1 - b) 

- de recuperer toute la place . voir 5 - 1 - c) 

Apres l'ordre CLEAR d'un fichier, il est necessaire de le re-ouvrir pour pou- 
vair acceder a ses enregistrements. 



- 8 - 



3 - 2 - LES DIFFERENTS TYPES DE FICHIERS 



3 - 2 - a) FICHIERS SEQUENTIELS RELATIFS 



Ces fichiers peuvent etre manipules aussi bien en sequential qu'en relatif, 
aussi bien en ecriture qu'en lecture. 

II n'y a qu'un seul mode d'ouvarture qui permet I'enaemble des operations. 
A la creation du fichier, on definit une variable entiere BASIC qui sera uti- 
lisee comme pointeur vers 1 ' enregiatrement . 

Un enregistrement d'un fichier sequential comprend done : 

- le pointeur XX% permettant d'indiquer son numero d'ordre. 

- la liste des variables. 

Remarque : le pointeur est une zone fictive de 1 ' enregistrement et est en 
realite le resultat d'un calcul. 

La liste des ordres possibles est : 

Write = ecriture d'un nouvel enregistrement en fin de fichier. 

La numero d'ordre de 1 ' enregistrement cree est renvoye dans le 
pointeur. 

Next = lecture d'un enregistrement en sequential. 
Permet de lire 1 ' enregistrement suivant. 

Borne = limite le fichier an imposant un numero d'ordre maximum. 

Une fois t|ua da numero attaint cette valeur, une fin de fichier sera 
signalee. 

Xindex = renvois dans le pointeur le numero du prochain enregistrement qui 
sera. cree par Write. 



- Qgorations_"_dites_"_relatiyeg 

Update = modification d'un article prealablement cree par l'ordre Write. 

Read = lecture d'un article en fonction de son numero d'ordre dans le 
fichier. 

Dalet = destruction d'un article dont on indique la numero d'ordre. 

Remarque : La tentative de lecture d'un enregistrement detruit n'aboutira pas. 

La pcssibilite da detruire des enregistrements permet de recuperer 
la place qu'ils occupaient sur le disque. 

Neanmoins, la destruction d'un enregistrement ne modifia pas la 
numorotation des autres. 

Les enregistrements datruits ne seront pas lus par l'ordre NEXT. 



- 9 - 



Toub lea ordres peuvent etre utilises dans n'importe quel ordre. Bn particu- 
lier, on pourra acceder directement a un article par son numero par READ, 
lire le fichier sequentiellement a partir de oet enregistrernsnt par NEXT. 
(Par defaut, NEXT apres 1'ouverture donne le premier enregistrernsnt du fichier) 



3 - 2 - b) FICHIERS SEQUENTIELS INDEXES 



Contrairement aux fichiers relatifs (voir 3 - 3 -b )• le moyen d'aoces a un 
enregistrement n'est plus le numero d'ordre, mais une CLE plus complexe. 

Cette cle est definie comma un ensemble de variables BASIC, et il devient possi- 
ble d' acceder a un enregistrement directement par la valeur de sa cle. 

Prenons l'exemple d'un fichier de personnes. 
La cle pourra etre : 

N0$ = le ram 

DN$::= la date de naissance 
PR$ = le prenorn 

C'est 1' ensemble de oes variables qui composera la cle. 
Contraintes sur les cles d'un fiohier sequentiel indexe : 



La cle doit etre de longueur fixe., .11 en resulte que les tableaux ne pour- 
ront pas etre utilises. De plus, pour les chaines de caracteres, il faudra 
indiquer une longueur maximum possible. 

Dans l'exemple ci-dessus, il faudrait preciser la longueur admise pour les deux 
variables caracteres. 
Par example, N0$ 13,PR$ B 

Les operations possibles sont : 



En sequentiel 

Next = lecture de 1 ' enregistrement suivant dans l'ordre dos cles. 
Borne = fixe une borne maximum au fichier 

Xtract = permet de selectionner des anregistrements suivant un critere d'ega- 
lite sur une des variables cle. 



En acces par cle 

Write = Scriture d'un nouvel article (refuse les homonymes) 
Add = ecriture d'un nouvel article (accepte les homonymes) 

Read = lecture d'un enregistrement 
Update = mise a jour d'un enregistrement 

Delet. = destruction d'un enregistrement 



- 10 - 



3 - 2 - c) FICHIERS MULTICLES 



Lbs fichiers multicles du M/OOS sont una extension des fiohiers sequentiels 
indexes. Un fichier multicle est un fiohier cornportant plusieurs groupes de cles, 
chaque groups est appele un MQYEN D'ACCES au fichier. Le nombre maximum de moyens 
d'acces par fichier est 10. Chaque moyen d'acces est un ensemble da variables for- 
mant una cle, idantiqua a la cle unique d'un fiohier sequentiel indexe. 

Contraintes sur las cles d'un fichier multicle 



Les contraintes sur las cles sont las memes que les fichiers sequentiels indexes 
C3 - 2 - b) 

Les operations possibles sont : 



EJles sont identiques a cellas des fichiers sequentiels indexes [3-2 -b). 
Cependant, alles necassitent des parametres supplementalres qui sont decrits 
au paragraphe 3 - 3 - d. 

II est impossible da modifier las cles des outres moyens d'accas. 

En lecture, les cles das autres mayens d'acces ne sont pas renvoyeos. 

Si cettB information est necessaire, repeter dans 1 'enregistreinent las variables 

cles a connaitre. 

La reorganisation du fichier se fera sur l'ensemble das moyens d'acces. 



3 - 3 - LA CREATION DE FICHIERS 



3 - 3 - a) SYNTAXE GENERALS 



La creation d'un fichier se fait en deux etapes : 

- definition de 1 1 enregistrement 

- creation du fichier 

Pour definir 1 ' enregistrement , utilisar l'ordre > 
La syntaxa est la suivante : 

LET " > vd, vc2, . . . , vcn = ve1, ve2 vep 

avac vcl.,n : variables composant la cle 

et vel.,p ; variables composant 1 ' enregistrement 

Dans la cle, les variables sont de longueur fixe. Les possibilites sont ; 



XX$NNN variable alpha da longueur NNN =» 255 (example AL$25) 

XX flottant (example FL) 

XX| antler de -32767 a +32766 (example EM%) 

XX%/ binaire de a 255 (exemple BI%/) 

XX$# date format E/S jj/mm/aa, code 2 octets (exempla DA$ :! ) 



En revanche, dans 1 1 enregistrement , les variables sont de longueur nan fixe at 
pouvent etre das tableaux BASIC. 



- 11 - 



Lorsque la variable eat un tableau, indlquer le signa " t " apres le nom. 

Exemple : AB est un flottant simple 

AB i est un tableau de flottants 



Lorsqu'une variable est definie comrne tableau, il n'est pas necessaire d'en 
Indlquer la dimension. En effet, les tableaux sont enregistres sur disque sous 
forme de tableaux creux de dimension quelconque (en fait, limitee par la dimen- 
sion de la memoire centrale de 1 'ordinateur) . La dimension du tableau sera faite 
a l'ouverture du fiohier, (voir chapitre '4 ) 

Les variables alphanumeriques sont, contrairernent au oas des variables ole, de 
longueur variable de (chaine vide) a 255 caraoteres. II est done inutile d'in- 
diquer leur taille. 



La lists des variables possibles est done : 



XX Flottant XX ; Tableau de flottants 

XX$ Chaine de caraoteres XX$ ; Tableau de chaines de caract&res 

XX% Entier -32767 32768 XX%/ ; Tableau d-'ientiers 

XX%/ Binaire 255 XX%/ ; Tableau de binaires 

XX$# Date XX$* ; Tableau de dates 



Lorsque la definition de 1 1 enregistrement a Ste faite, il ne reste plus qu'a 
creer le fichier. L'ordre est NEW. 

LET " # NEW, [no logique], FICHIER, [no disque] : [nom du fichier] 



A la creation d'un fichier, le systeme determine automatiquement un coef- 
ficient de blocage. Celul-ci definit la taille du bloc de base. Le bloc 
de base sera la plus petite unite de memoire disque allouee a un enregis- 
trement. pour savoir comment le systeme determine ce coefficient de blo- 
cage, reportez-vous au chapitre 

Un ordre permet d'imposer un maximum a cette valeur. 
Les valours possibles sont : 



32 = 1/B secteur 

B4 = 1/4 secteur 

128 = 1/2 secteur 

ou 256 = 1 secteur 



L'ordre LET"ft > n-'" imposera au coefficient ohoisi par le systeme 

de ne pas depasser n. 

EXEMPLE .• LET"# > W 

meme si le systeme estime la taille idoale a 128 ou 256, 11 choisira 64. 
S'il trouve 32, il restera a 32. 



- 12 - 



3 - 3 - b) FICHIERS RELATIFS 



Pour Ibs fichiers relatifs, la cle sera remplacee par le pointeur vers Is numero 
d' enregistrement? Ce pointeur sera un entler XX%. Pour indiquer que le fiohier 
est relatif, preceder le nom de ce pointeur par : "Q ". 

La syntaxe generals est : LET" >£XX% = vel ... vep 

EXECIPLE : Creation d'un fiohier des ventes 

Le fiohier est un fiohier relatif. Le pointeur sera NV%(numero de la vente) . 
L ' enregis trement pourra comprendre : 

- la date DA$ de la vente 

- le tableau des references pieces vendues : 

- FA% ! numero de famille des pieces 

- FQ% j numero du fournisseur 

- NP% i numero des pieces 

- PV ; prix de vente 

Le programme de creation sera : 

100 LET'EM" : S = 189 

110 LET" >eNV?; = DA$,FA%;,NP%;,PV; 

120 LET"{|NEW~6, FICHIER,J3 : VENTES" I IF PEEK (S) THEN ? "ERREUR" 
130 END 



- 13 - 



3 - 3 - c) FICHIERS SEQUENTIELS INDEXES 



La syntaxe est la suivante : 

LET " vcl , Vc2, . . . , vcn = ve1,ve2 , vep 

aveo vcl ..n : variables composant la cle 

at vsl ..n ; variables composant. 1 ' enregistrement 

EXEHPLES i 

1) Creatlon_d^un_fiohlQr_stoDk 

Le fichier est un fichier a acces par cle. 
La cle est composee de 3 elements. 

FA% = numero de famille de la piece 
F0% = numero du fournlaseur 
NP% = numero de piece 

L ' enregis trement comprend : 



PA 


= prix d'aohat 


PV 


= prix de vente 


TW 


= taux de TVA 


LI2 


= libelle de I'article 


QS 


= quantlte en stock 


QC 


= quantlte en commande 


on 


= quantlte minimum 


QX 


= quantlte critique 


UN2 


= unite 



Pour creer ce fichier, le programme a ecrire sera : 
100 LET"f}C, $" : S = 189 

110 LET" > m°i,Fd°4jNP% = PA,PV,TV%/,L1$,QS,QC,QM,QX,UN$ 

120 LET"tfNEW, 1,FICH,1 : STOCK" : IF PEEK (S) THEN ? "ERREUR" 

130 END 

Pour s 'assurer que tout s ' est passe normalemant, verifier que le STATUS est 
nul . 

REMARQUE IMPORTANTE : Si une erreur de syntaxe est detectee dans la defini- 
tion de 1 'enregistrement en ligne 110, 1 ' erreur indi- 
quera la llgne du NEW, 

Dans cette exemple, ? SYNTAX ERROR IN 120 



3 - 3 - d) FICHIERS MULTICLES 



La syntaxe de creation d'un tel fichier differe legerement de la syntaxe clas- 
sique. Elle sera : 

LET" vmall. . . . .vmaln & vma21 , . . . , vma2n 8 ... = vel , ve2 . . . vep 

On Indique dans la liste des variables de chaque moyen d'acces, les differents 
moyens d'acces etant separes par " & " au lieu de " , ". 



- 14 - 



EXEMPLE : Creation d'un fichier Security Sociale : 

- cla 1 = nom NOZ 

- cle 2 = numaro de SS Ns/ 

L ' enregistrement comprend : 



N0$ 

NS$ 

AD$ 

DN$» 

SM$ 



le nom 

le numero de securite so 
1 'adresse 

la date de naissance 
la situation de familla 



100 LET"#C,$" : S = 189 

110 LET > NO$15 & NS$ = AD$ , NO$ , NS $ , DN$ :: , SM$ 

120 LET"ft NEW, 1 , FICHIER, : SECU":IF PEEK CS) THEN ? "ERREUR" 

Pour tous les ordres WRITE et ADO, il faut indiquer l'enaemble des cles (de 
tous lea moyena d'acces). Pout tons les ordres READ, NEXT, UPDATE, BORNE, XTRACT, 
et DELET, il faut indiquer dans I'ordre un parametre supplemantaire indiquant le 
moyen d'acces utilised Par defaut, ce parametre vaut 1 (1er moyen d'acces). 

EXEMPLE : Avec le fichier que nous venons de oreer : 

Creation : 

100 NO$ = "LEROI " : NS$ = "1521114254368 
110 LET"WRITE~1 

Lecture d'apres le norn : 
200 NO$ - 1 LEROI 
210 LET"READ-1 

Lecture d'apres le numero de SS : 
300 NS$ = "1521 1 14254368 
310 LET"READ-1, 2 

Modification : 

400 AD$ = " 10, RUE JEAN JAURES 
410 LET"UPDATE-1,2 



3 - 4 - L'OUVERTURE D'UN FICIIIER 



L'ordre a utiliser est OPEN avec la meme syntaxe que NEW. Cependant, 
il est inutile d'indiquer una seoonde fois la:, liste des variables. 
Au contra ire, celle-ci pourra 6tre affichee par les ordres suivants 

LET"H Open~[nJ, FICHIER, [dl : [nom] 
LET" ENTER- [n] 
LET" Visualise 

Dans l'Bxemple 1) [fichier stock), le texte suivant sera imprime : 

FA%,F0%,NF% 



PA,PV,TV%/,LIM,0S,QC,QM,QX,UNZ 



- 15 - 



Dans le cas ou 1 'enregistrement contiont des tableaux, ceux-ci devront Stre di- 
mensionnes par 1 ' uti lisateur avant 1'ouverture du fichier. Sinon, leur dimension 
par defaut sera B. Cette valeur par defaut peut etre modifiee, indlquer pour cela 
le nombre d'indlces desires en 770. (Voir chapitre Pointeurs du DOS) 

Exemplo : 

]D1M A$(10,3) 

]LET"ttO,1,F, TEST" 

]LET"E,1" 

]LET"V" 

X,Y 

A, At; 



3 - 5 - CQPIE DE FICHIERS 



Pour recopier un fichier sur un nouveau, 11 faut pouvoir creer le deuxieme 
fichler avec la memo structure de variables que le premier. Pour cela, l'ordre 
ENTER decrit cl-deasus peut rempiacer l'ordre de description d ' enregistre- 
ment. 

Exemple ; Creation du fichier BBB de memo structure que le fichier AAA 

LET"ftOPEN, 1,Fi,0 : AAA 
LET" ENTER, 1 
LET"ttNEW,2,Fi,fl : BBB 

L'ordre ENTER lit le dictionnoire du 1er fichier qui servira pour creer le 
second. 



- 16 - 



C H A P I T R E 



IV 



LES MASQUES DE 



S A I S I E 



4 - 1 - STRUCTURE D'UN MASQUE 



4 - 1 - a) LE TEXTE 



A la creation d'un maaque, le texte est entre llbrement sur 1* Scran 
(voir creation de masque page 16) 

Lea fenetrea sont limitees par lea caracteres " < " et " > " qui indiquent 
1 ' emplacement ou a'effectuera la saiaie. 

Les noma des variables a saisir aeront indiquea entre S un endroit quelconque 
du masque. 

A la fin de cette etape, le maaque est analyse, puis compact.. 

Le volume occupe par le masque peut etre calcule de la fagon suivante : 

- les caracteres isoles occupent 1 octet chacun. 

- chaque suite de caracteres identiques de longueur comprise entre 3 et 255 
occupe 2 octets. 

- lea fenetres et les variablea sont considerees comme des blanos. 
De plus, 7 octets aeront alloues pour chaque fenetre de saisie. 



4 - 1 - b) LES ZONES DE SAISIE : 



A chaque fenetre est associee une variable BASIC et un type. 

Les types de variables sont les memos quo dans le cas du DOS. 
C'est-a-dire : 

- ALPHANUMERIC^ 

- FLOTTANT 

- ENTIER 

- BINAIRE 

- DATE 

Chaque type pouvant ou non etre un tableau a une dimension. 

Les controlea au moment de la aaisie sont de 2 types. 

- controle au niveau du caractere 
(numerique, entier, ...) 

- controle au niveau de la validation do zone 



(entier < 32788, dates correctes, ...) 



- 17 - 



Les centrales que l'on peut dernander sont ; 

- POSITIF FLOTTANT ou ENTIER 

- ENTIER FLOTTANT 

D'autres contrales sont implicites : 

- ENTIER ENTIER ou BINAIRE 

- VECTORISE ou NON . selon le type deflnl 

- DATE si dsf ini conime date 

Cla validite des dates est controlee, y compris annees bissextiles) 

- NUMERIQUE FLOTTANT, ENTIER ou BINAIRE 

- O' <= X < 256 BINAIRE 

- -32767 <X < 3276B. ENTIER 

- molns de 32 chiffres FLOTTANT 

Les zones pourront en outre etre definies en ENTREE ou en SORTIE sur le masque. 
Une zone en sortie ne sera pas demanded au moment d'une saisie. 



4 - 1 - c) CARACTERE TRANSPARENT : 



Le caractere " (S " sur fond plane est considere oomme transparent. 

Cela signifie que lors du chargement sur l'ecran du texte du masque, les earac- 

teres deja presents sur l'ecran resteront. 

Exemple : 

Si vou3 indiquez en haut et a di'oite rie l'ecran la date du jour, et que vous 
desirez la oonserver tout au long du programme, 11 suffit de mettre dans tous 
vos masques des caracteres S sur fond blanc a 1 ' emplacement de cette date. 



4 - 2 - UTILISATION 



Un masque sert a la fois a saislr des donnees et a les imprimer sur l'ecran. 
L'impres3ion peut etre faite ; 

- sur 1' ensemble des variables 

- sur les variables definies en entree 

- sur les variables definies en sortie 

En aucun cas, 1' impression ne debordera des fenetres. Si la place definie dans 
une fenetre est insuffisante pour ecrlre la variable (ou une des variables dans 
le cas d'un vecteur), la zone se terminera par le caractere " "". 

De meme que dans le cas d'un fichier, 1' ensemble des variables contenues dans 
le masque constitue un DICTIONNAIRE et aucune liste de variables n'est neces- 
saire . 



- 18 - 



Dans le cas de la salsle d ' Informations sur le masque, 1 1 utilisateur aura la 
possibilite de passer de fenetre en fenetre par la touche RETURN. 

A oe moment, on controle la validite de la saisle. La zona est transferee dans 
la variable BASIC correspondante etreinscrite de facon standard. 

La touche de fonction CTRL/R renvoie le spot dans la fenetre precedente. 

Les fonctions de gestion d'ecran (voir page suivants) seront possibles, dans 
las limites de la fenetre . 

Remarque : Si aucune modification n'est faite dans la fenetre, RETURN ne rea- 
lise que la passage a la zone suivante. 

Le fait da faire RETURN sur la derniare fenetre peut ou non provoquer la fin 
de la saisie. 

Dans ce dernier cas, cette action renvoie a la premiere fenetre definie en entree 
De memo, le retour a la fenetre precedente sur la premiere fenetre envoie a la 
derniere . 

La touche ESC permet de valider 1' ensemble des informations. Son utilisation 
est obligatoire pour valider la saisie si l'on a pas demande une sortie auto- 
matique en fin de masque. 

Dans le cas contralre, son utilisation est facultative mais evite de faire 
RETURN jusqu'a la fin du masque. 

Si l'on desire abandonner, enf oncer la touche CTRL/A. 

Dans ce cas, la zone en cours n'est pas transmise au BASIC. 

La variable STATUS permet de savoir quel a ete le mode de sortie du masque. 

ok 

1 abandon 



1 - 3 - GESTION DE L'ECRAN 



Les commandes sont de deux types : 

- traitement d'une zone 

- traitement des caracteres 

4 - 3 - a) VALIDATION D'UNE ZONE 



CTRL/A 
ESCAPE 



abandon [STATUS rendu a 1) 
fin normale 



- 19 - 



En utilisation de masque : 

RETURN passage a la zone suivante 

CTRL/R retour zone precedente 

En creation de masque : 

RETURN desoente du spot 

CTRL/R remontee du spot 



4 - 3 - b) TRAITEMENT DU CARACTERE (dans tons les cas) 



CTRL/B caracteres fond blano 

CTRL/N caracteres normaux 

CTRL/F caracteres clignotants 

> deplacement du spot a droite 

<f— — ■ deplacement du spot a gauche 

CTRL/Q deplacement du spot vers ]e haut 

CTRL/Z deplacement du spot vers le bas 

CTRL/8 effacement de la zone 

CTRL/I insertion d'un caractere 

CTRL/D destruction d'un caractere 

CTRL/T retour au debut de la zone 

CTRL/V repetition verticale du caractere 



4 - 4 - CREATION DE MASQUES 



Pour creer un masque utiliser l'ordre : 

LET" #NEW, [n°logique) , Masque, (n° drive) : tnom) 



Cet ordre vous donnera la main pour entrer le texte. 

Lorsque celui-ci est tape, faire ESCAPE pour rendre la main au programme. 

La creation de masque peut etre faite soit en mode direct, soit en mode pro- 
gramme. 

Le programme ne detruit pas le contenu actuel de l'ecran. Deux possibilites 
s* off rent alors : 

a) Nouveau masque 

II suffit d'effacer l'ecran : 
Exemple : 

100 HOME : LET" #NEW, 1 .MASQUE, 1 : TEST-MASK 



- 20 - 



b) Masque issu d'un precedent (eventuellement modification) 

II suffit de charger le riiasque precedent. 
Exemple : 

100 LET" #CPEN-A,M,1 : TEST-MASK " : REM OUVRE LE MASQUE 
110 LET"V, A" : REM AFFICHE LE MASQUE 

120 LET" ft NEW-B,M,0 : MASQUE 1 : REM CREE LE NOUVEAU MASQUE 



Pour indiquer les fenetreo, il suffit d'ecrire sur l'ecran a l'endroit desire 
les caracteres "< " et " >". Le premier indique le debut de la fenetre, le 
second la fin. Le uom de la variable sera inscrit entre " ". 

Si la fenetre ne fait qu 1 1 caractere, ecrire seulement "> ". 

Le nom pourra etre ecrit soit entre les<..>, soit en dehors. II suffit que 

l'ordre des variables soit le meme que celui des fenetres. 

Les controles a effeotuer seront indique.fi a la suite du nom. 



XX flottant 

XX% . entier 

XXV binaire 

XX+ flottant positif 

XX%+ entier positif 

XXB flottant entier 

XXK: flottant entier cadre a droite 

XX " flottant format gestion 

XX% " entier cadre a droite 

XX $ chaine de caracteres 

XX$" date 

XX$+ chaine de caracteres consideree comme numerique avec affichage 

format gestion 



ajouter : 

? si la zone est en sortie 

: si la zone est en enchainement automatique 

; C n 3 si la zone est un indice de tableau 

(n) = numero de 1' indice (99 pour liste) 



Remarque : 

Pour une zone en sortie, il est inutile d'indiquer les controles. 
Les controles sont cumulables. 

En cas d'erreur sur le masque, (par exemple nombre de variables ^ du nombre 

de fenetresJ le systeme n'acceptera pas votre masque et vous feendra la main pen 

le corriger, apres vous 1'avoir signale par une cloche. 



- 21 - 



4 - 5 - CREATION D'UN MASQUE DE FACQN AUTOMATIQUE 



Pour ganerer un masque par programme, il suffit de preceder le numero du 
disque par le caractere /. Dans cos conditions le programme de creation ne 
donnera pas la main a 1 1 utilisateur pour modifier le contenu dB l'ecran avec 
validation par ESC. Au contraire, le programme creera un masque dont le con- 
tenu sera la reproduction de l'ecran au moment de 1' execution do l'ordre. 



Par example : 






MASQUE 




10 HOME : PRINT "MASQUE. I" : PRINT 


NOM < "NO$" 


> 


20 PRINT"N0M <"CHR $(34) NO $ "CUR $(34) " > 




30 LET" #NEW,3,M,/1 : AUTOMASQUE 






40 REM CHR $(34) = " 







Le masque ci-dessus sBra enregistre sur le disque sous la nom : "AUTOMASQUE '! 

En cas d'erreur sur le masque, le programme rend la main en indiquant une erreur 
et sans sauver le masque (STATUS = 1) 



4 - 6 - EXEMPLE 
Faire l'ordre : 

LET" $ CL, $ " : LET "#N,1»M,q0': ART i- STOCK 

(fermeturG generale puis creation d'un masque, eventuellement en modification) 
Entrez sur l'ecran le texte et les fenetres. Par exempla : 

MASQUE ART-STOCK 



NO FOURNE <»FO%? >N0 PIECE <"NP|?" > 
LIBELLE <"|_I$ ;» 

QTE MINIM <"QM:"> STOCK <"QS:"> 

C0MMAN0E <"QC: "> 

PRX VENTE <"PV:" > PRIX ACH <"PA:" > 

CODE TVA < > "TVS/:" 

DETAILS TECHNIQUES 



!<"TB$;:" > 

;<"TB$;l:" > 

<"TB$;2:" > 

;<"TB$;3:" > 

■<"TB$;'i:" > 



- 22 - 



1 - 7 - IMPRESSIONS PARAMETREES 



II eat possible de parametrer des impressions par 1 ' utilisation de masques. 
L'ordre permettant oette fonction est LET "?-(c) 

(o) etant un caractere de controle permettant de repeter la ligne a imprimer 
sur l'ecran. 

Les caracteres de controle doivent etre inscrits sur fond blanc, l'un en debut 
de ligne a imprimer, l'autre a la fin de cette ligne. 
Ces caracteres ne seront bien sur, pas imprimes. 

L'ordre LET"?-(c) imprimera les caracteres de l'ecran separes par des caracteres 
(c), puis generera un passage a la ligne : 

Exemple : l'ecran contient : 
IMPRESSION \T) TEST (151 
LET"? -A" imprimera : 
TEST sur 1 ' imprimante desiree. 

II est necessaire avant d'executer l'ordre LET"?— (c)" de definir 1' imprimante 
sur laquelle on desire 1 ' impression . Pour cela, utiliser les ordres : 

PR#[n° imprimante] 
PRINT CHR$ C9)"80N" 

(cette derniere commande evite que l'impression se fasse egalement sur l'ecran, 
evitant ainsi de detruire le contenu de ce dernier. 

Pour revenir au mode normal d ' impression, faire : 
Cas particulier : (HARD COPY) 

Les caracteres de controle que l'on doit utiliser sont les lettres de l'alpha- 
bet A, B, C, . . . Z 

Nenarnoins, le caractere de controle " joue un role particulier. L'ordre 
]LET"?-' ! " realise la recopie complete de l'ecran sur 1 ' imprimante . 
De metre que dans le cas de l'impression d'une ligne, 11 faut definir l'impri- 
mante choisie et proteger l'ecran. 

L' ensemble des ordres realisant le HARD COPY sera done : 
jPRftS : PRINT CHR$ (9)"80N" : LET"?-"" : PR#0 

Utilisation de masque : 



Definir par exemple le masque EDIT suivant ; 
[a"|aRT1CLE < "AR" > ACHAT <"PA" > VENTE < "PV" > f~A~ l 

Pour lister un catalogue de prix. L 'enregistrement du fichier stock contient 
les variables AR (numero d'articles), PA (prix d'achat) et PV (prix de vente) . 
L'impression d'une ligne sera : 

100 REM LA PIECE A ETE LUE SUR LE FICHIER 

110 LET"OUTPUT-M" : REM AFFICHAGE SUR LE MASQUE 

120 LET"?-A" : REM EDITION SUR IMPRIMANTE 



- 23 - 



II peut y avoir plusiaurs textes differents sur le meme ecran, qui peuvent etre 
utilises simultanament si leurs separateurs aont differents. tpar example, un 
titre et la ligne courante) 

Remarque : La ligne d ' impression peut representor plusieurs lignes de 1' ecran 
parmettant ainsi de s'adapter a n'importe quelle imprimante C8D ou 
132 colonnes) 

De plus, cet ordra gere le nombre de lignes imprimees. 

La nombre de lignes s'obtient par PEEK (947). Cette valeur augmente de 1 a 
chaque execution de l'ordre LET"T-tc). Lorsqu'elle atteint BB, elle repasse 
a D. L'ordre LET"? " realise la fonction " FORM FEED " (haut de page) en uti- 
lisant le oompteur de ligne PEEK (917). 



4 - fl - TABLEAUX ET MASQUES 



II y a deux possibilites pour saisir (ou afficher) des tableaux dans les 
masques . 

- saisie de 1 'ensemble du tableau dans une seule fenetra. 

- saisie d'un element du tableau dons une fenetra. 



4 - 6 - a) LA SAISIE DU TABLEAU COUPLET 



Cette saisie ne peut sa faire que pour les tableaux a une dimension dont les 
indices a 8 seront traltes. (Si le tableau est de dimension superieure, les 
valeurs correspondent aux indices superieurs ne seront pas affectees par une 
saisie, si la longueur est inferieuro, l'erreur BAD SUBSCRIPT ERROR IN 
apparaitra. ) 

Pour saisir ou afficher un tableau de cette maniere, indiquar dans le masque 

XX i 99, XX etant le nam de la variable et les controles. 

le nombre de variables du tableau saisies et afficheas est 9. 

Cette valeur peut etre modifiee ; pour cela indiquer la valeur souliaitee en 

770. 

Example : 
< : '"AC ; 99" > 

A la saisie, les differents elements du tableau doivent etre separes par " j " 
Par example : 

La saisie de : j;12j13j;15 realise.: 

AC (0) =0 AC (6) = 

AC (1) =0 AC (7) = 

AC (2) = 12 AC (fl) = 

AC (3) = 13 AC (9) = 

AC (4) =0 AC (10) = 

AC (5) = 15 



A l'affiohage, le tableau sera reecrit sous la meme forme. 



- 24 - 



4 - 8 - b) LA SAISIE O'UNE SEULE ZONE D'UN TABLEAU 

Pour cola, indiquer apres 1g nom " j " puis le numero de 1'indice. 
Par example : 
" AC i a " 

□ana cb cas 1" indies peut varier de a 98 . (par defaut, la valeur de 1'indice 
est : " AC ; " equivant. a " AC ; ") 

Dans 1'exeraplB ci-dessus, la saisie de : 115, realise : ACCB) = 145 sans affec- 
ter Iqb autres indices. 



4 - 9 - PRINT USING 



Les masques perrnettent, tant pour l'affiohage sur l'ecran que pour 1' impression 
sur papier, un formattage des zones numeriques. 

II y a trois possibilites d' impression des variables numeriques ; 

- cadrage a gauche, format flottant 

- cadrage a droite, format flottant 

- cadrage a droite, format gestion 

a) Cadrage gauche, format flottant 



C'est le formattage pris par defaut dans les masques. II correspond au format 
du BASIC. 



123 
I0.D 
12.25 

10000 

99999999909 




! 123 

! 10 

! 12.25 

I 10000 

I 1E + 11 

I 



b) Cadrage droite, format flottant 



Les valeurs sont oadrees a droite de la fenetre de saisie, (permet de colonner 
des entiers) , 



123 ! 123! 

10.0 ! 10! 

12.2500 ! 12.25! 

10000 ! 10000! 

99999999999 ! 1E+11! 



- 25 - 



c) Cadrage droits format geation 



Ce format permet de calonner des valeurs decimales (par exemple dea montanta). 



Loraqua le formattage gestion eat impoaaibla, le cadrage do la zone ae fait 
a gauche, ce qui permet de la reperer immediatement aur un LISTING. 
Ce cas petit ae produire loraoue : 

- la valeur est aoua forme exponontielle (ex 12E-12) 

- le nombre de chiffres apres le " . " est superieur au nombre desire. 

- lorsque le nombre de chiffre eat auperieur a la dimenaion do la fenetre. 

line variable nulle ne aera pas imprimee, aauf a'il s'agit de l'indice d'un 
tableau. Cela permet d'aerer le resultat de tableaux numeriques. 

Pour fixer le nombre de chiffres imprimas apres le point, utiliser l'ordre : 

LET"fi- nombre de chiffres 

Par defaut, au chargement du systeme, la valeur est 2. 



d) Indication du cadrage dans un masque 



La zone sera cadree a droite si le nom de la variable est suivie de " it ". 
Examples : 



Si la zona est un antiar ou un binaire, seul le cadrage a droite aera realise. 

Si la zone eat un flottant, le formattage gestion sera realise. 

Pour cadrer a droite un flottant 3ans colonner lea decimales, le declarer antier 
par " @ ". 

"FL- : " : format gestion 

: cadrage a droite 



123 
10.0 
12.2500 
10000 

99999993999 



123.000! 
10.000! 
12.250! 



10000.0001 



1E+11 



'AC!'. " 
'P0%i! 

'EN%/" 



- 26 - 



4 - 10 - LES (BASQUES GLOBAUX 



Ce type d'objet " G " represents un ensemble de masques sauvss sur le dis- 
que sous un seul nom. Les avantagss de cette methods sont multiples : 

1 ! gain de plane 



Un masque isols occupera sur le disque 

- la place d'un nom dans le catalogue 

- un nombre entier de seoteurs du disque 

Rsunis, la place est optimises. 



2) gain ds vitesss 



Le chargemsnt ss fait en un seul accss au catalogue et avec un charge- 
ment minimum de blocs an memoire. 



3) raccourcisssment des programmes 



Un seul objet est a ouvrir en lieu et place d'une lists plus ou moins 
longue. 



En revanche, la mise a jour des masques ainsi reunis est plus delicate. II 
est done conseille de n'effectuer ce regroupemsnt que lorsque votrs logiciel 
est au point. 



MISE EN DEUVRE : 



Pour sauver sur le disque ces masques globaux, la methods a Employer est la 
suivante : 

I ) Ouvrir tous lss masquss concernes. Par sxemple : 

LET"}} 0, 1, M, MASK 1 

LET"}} 0, 2, M, MASK 2 

LET"}} 0, 3, M, MASK 3 

LET"}} 0, k, M, MASK h 



- 27 - 



2) Executer ensuite l'ordrs : 

LET"# N / G, G, GL0BAU1A3K1234 
Ceci aura pour effet : 

- de supprtmer de la memoire tous lea objets non concernes 

- drives 

- fichiers 

- de aauver 1' ensemble obtenu 

Pour utiliser ulterieurement ces masques regroupes, ouvrez 1 'ensemble en 
une seule operation par : 

LET"# 0, G, G, GLOBALMASK123<f 

Tous les masques sont alors accessibles avec le numero logique qui leur a 
ete donne a la creation. 



NOTE : 



Vous pouvez charger en memoire plusieurs globaux. Si ceux-cl contiennent 
des masques ayant ete sauves dans un meme numero logique, seul le premier 
charge sera accessible tant qu'll n'aura pas ete forme par l'ordre ; 

LET"# C, numero logique 

EXEMPLE : 

GLOBAL 1 regroupe 1, 2, 3 
GLOBAL 2 regroups 1 , 5 

LET"# 0, G, G, GLOBAL t 
LET"tt a, G, G, GLOBAL 2 

LET"C, 1" concerne le " 1 " de GLOBAL 1 

LET"tl C, 1" 

LET"C, 1" concerne le " 1 " de GLOBAL 2 



IMPORTANT i Le numero logique indique dans la creation ou ouverture de 
globaux n'a pas d ' importance. Bans nos exemples, nous avons 
toujours choisi G. Cependantj le systeme n'acceptera pas le 
numero logique deja utilise. Bans ce oas, utilisez un autre 
caractere. 



Exemple ! LET"ft 0, 2, G, GLOBAL 



- 28 - 

4 - 11 - CREATION D'UN MASQUE EN MEMOIRE 

LET"tf Imago, n° logique, M, d : nam 

Creation d'un masque sans que celui-ci ne soit sauve sur le disque, 
Cet ordre .3 deux interets : 

- creation de masques temporaires c.onstrults automatiquement 

- utilisation de la gestion de masques en DOS 3.2 ou DOS 3.3 

- fabrication directe de masques globaux 



- 29 - 



CHAPITRE V 
LISTE DES ORDRES ET SYNTAXE 



Les ordres sont envoyes dans une chaine da caracteres par LET. 
II y a deux niveaux d' ordres ; 

- niveau global : ordres gerant des entites completes (fichisrs, masques) 

- niveau action : ordres gerant un element (enregistrement) 

5 - 1 - NIVEAU GLOBAL 

Les ordres sont precedes d'un " ft ". 

Lefty Open- n° logique i[ type d'ouv.] i [ n° disque] j [nam] 
Ouverture d'un flohier : 

- n° logique : 1 caractere quelconque 

C'est ce numero logique qui sera utilise dans tous les ordres au " niveau 
action" concernant ce fichier. 

- type d' ouverture 

- n : masque 

- F : fiohiers 

- n° du disque : 0, 1, A, B, ... 

~ nom : 21 caracteres signif icatif s . 

LET" tt Clear-[ ~n° logique] 

Recupere en memoire centrale la place reservee a un fichier ou un masque. 
LET" ty Reorganise- [n° logique ] 

Reorganise la table d'acces d'un fichier a acces par cle. (Ameliore le 
temps d ' acces . ) 

Lorsque de nouvelles pieces sont creees dans le fichier, elles ne sont pas 
inserees directement a leur place exacte tdans 1'crdre croissant des places) 
En effet, cette operation ralentirait enormement la creation (surtout pour 
les gros fichiers i.e 10000 pieces.) 
L' operation de reorganisation reclasse ces oles. 

Les fichiers relatifs he doivent pas etre reorganises. 
LET'ty Reorganise4[ n° de disque.1 

Reorganise le catalogue d'un disque. L'execution de cet ordre permet d'acce- 
lerer les ordres LOAD, SAVE, OPEN, MEW. 

En effet, le DOS permettant de gerer de nombreux objets sur disque, l'acces 

a un module se fait en sequentiel indexe (beaucoup plus rapide qu ' une recherchi 

sequentielle) 

II demande done, cornme un fichier de ce type, des reorganisations lorsque 
de nombreuses creations ont ete faites. (SAVE, NEW) 



- 30 - 



LET"ttNew-[n° logique] , [type] , [drive] : [nam] 
Creation de masque ou de fiohiar. 
MASQUES : Le type est Masque 

Si le numero du disque est precede de Q, le masque ecrasera un eventuel 
masque deja existant et portant le mame nom. 

Si le numero du disque est precede de /, le programme de creation ne donne 
pas la main a 1' utilisateur. (Le masque correspond alors au contenu de l'e- 
cran au moment de 1' execution de l'ordre.) 

En oas d'erreur dans le masque, le programme rend la main pour correction 
(sauf en creation automatique) 



FICHIERS : Le type est Fichier 

L'ordre NEW doit etre precede de l'ordre "> " ou de l'ordre ENTER. 
" > " indique une description d ' enregistrement . 

ENTER reprend la description d' enregistrement d'un fichier deja existant. 
(voir creation de fiohiers) 



LET"#Delet-[type] , [n° disque] : [nom] 

Cat ardre provoque la destruction d'un objet sur le disque. 
Indiquer le type de 1' objet : 

- programme 

- fichier 

- masque 



LET"(|Format-[n disque] 

Pour formatter une disquettej l'introduire dans l'un des lecteurs : 

: port numero 6, drive 1 

1 : port numero 6, drive 2 

2 : port numero 5, drive 1 

L'ordre de formattage est : LET "#FORMAT,0 " 

LET"# FORM/VT, |J " s'adressera a la disquette situee dans le lecteur 
LET"(J FORMAT, n 11 avec n = numero du lecteur 

Ne pas s'etonner de la duree relativement importante du formattage, ceci est 
normal , 

En cas d'erreur, le systeme affiche le message : ? DATA ERROR 
signalant qu'il lui est impossible d'utiliser la disquette. 



- 31 - 



II pout y avoir plusieurs causes ; 

1) la porte du lecteur n'est pas ferrnee ou 11 n'y a pas de disquette dans 
1b lecteur concerne. 

2) La disquetbe est protegee en ecriture et il est Impossible d'ecrlre. 

3] La disquette est usagee et la surface magnetique est endommagee. cb qui 
interdit son utilisation. 

Si aucune erreur n'est detectee, le formattags sb deroule normalement . 
tie voyant lumineux du lecteur s'allume) 

A la fin du formattage, le systeme vous rend la main. 

Cette disquette est alors utilisable. 



5 - 2 - NIVEAU ACTION MASQUE 



Lorsqu'un masque a ete ouvert, les operations suivantes sont possibles : 

LET"Charge-[n° logiquo] 

Chargs sur l'ecran le texte du masque. 

Cette operation efface 1b contenu de l'ecran, sauf aux endroits ou le masque 
a ete declare comme transparsnt . tvoir 1b chapitre Creation de masques) 



LET"Visualise-[n° logique] 

ChargB sur l'ecran le tsxte du masque et affiche les fenStres de saisie. 
Lbs fenetres sont reecrites aVBC la meme syritaxe que celle exigse pour la 
creation. II sst done possible de creer un nouveau masque ou d'en modifier 
un en utilisant successivement les ordres visualise et NEW, 
Les zones transparentes apparaissent sous la forme de oaracteres "E " sur 
fond blanc. 



LET"Output-[n° logique] [0/0] 

Affiche sur 1' scran les variables du masque. 

Le parametre toptionnel) 0/0 permet d'indiquer quelles sont les variables 
a afficher. 

- : affichage des variables definies en entreB Ccelles oQ se deplace le 

spot en lecture) 

- : affichage des variables en sortie 

Si Is paramStre est omis, toutes les variables sont affichees. 

Si une variable est trop longue pour entrer dans une fenetre, ellB est 
tronquee, et un caractere " " " apparait en fin de fenotre. 



- 32 - 



LET"Print-[n° logique] [0/0] 

Cot ordre est 1b cumul des deux ordres Charge /, Output. 
La syntaxe est la meme que celle de Output, 

LET"Input-[n° logique][,n° de zone] 

Donne la main a 1 1 utilisateur pour saislr les zones. 

Seules les fenetres declarees en entree sont concornees par cet ordre. 

Le paramatre toptionnel) permet d'indlquer a quelle fenetre dolt commonoer la 

salsle. Attention ! seules les fenetres en entree comptent. 

La premiere fenetre porte le numero 1, et ainsi de suite. 

La valeur par defaut est 1. 

Si le numero indique est superieur au nombre de fenetres en entree, le programme 
oommencera par balayer le masque autant de fois qu'il est necessaire pour attein- 
dre oe numero. Si la derniere fenetre est du type " enohainernent automatique ", 
le programme ressortira alors sans donner la main. 



LET"Take, n° logique" 

Reprend le contenu de toutes les variables en entrees du masque indique 
tellea qu'elles sent aetuellement sur l'ecran. 

EXEPIPLE 1 : Remise a zero 



LET"C, M" 
LET"T, M" 

Remet toutes les variables du masque a vide ou nulles, puisque 1' ordre 
charge n'affiche aueune variable. 



EXEPIPLE 2 ! Parametrage 



On saisit des parametres sur un masque fl, puis on sauve l'ensemble : 

LET"ft 0, n, n, : QUESTIONS 
LETT, M" 
LET"I, M" 

LET"tt N, P, M, : PARAMETRES 

pour relire les parametres, faire : 

LET "tt 0, M, M, : QUESTIONS 
LET "ft 0, P, (1, : PARAMETRES 
LET"C, P" 
LET "T, fl" 

Toutes les variables du masque M reprennent les valeurs qu'elles avaient 
au moment du sauvetage. 



- 33 - 



5 - 3 - NIVEAU ENREGISTREMENT FICHIER 



Ces ordres sont possibles sur un fichier ouvert. 
LET"Write-[n° logique] 

Creation d'un nouvel enregistrement dans un fichier. 

- Si 1b fichier est un fichier sequentiel indexe, la creation se fait en fonct-in 
do la valeur de la cle au moment de l'ordre. 

Exemple : 

Fichier de cle AA$et AA 10 et d 1 enregistrement XX$ 

100 LET"ttOPEN~1 , FICHIER.pl : FICO 
110 AAt = "MIS": M = 1980 
120 XX$ = "ENREGISTREMENT" 
130 LET"WRITE, 1 

140 IF PEEKC189) THEN PRINT"EXISTANT" 

L'ordre WRITE n' accepts pas les homonymes. Si la cle de 1 ' enregistrement a creei 
existe deja dans le fichier, le status renvoye sera non nul et 1 ' enregistremenl 
ne sera pas cree. 

- Si ]e fichier est un fichier relatif, le DOS ne tiendra pas compte de la va- 
leur du pointeur, L ' enregistrement sera cree a la fin du fichier, avec la pre- 
miere valeur libre pour le pointeur. Cette valeur du pointeur sera renvoyee a 

1 ' utilisateur. 



LET"Add-[n° logique] 

L'ordre ADD est identique a l'ordre WRITE, mais il accepte les homonymes dans 
le cas des fichiers sequentiels indexes. 

Lorsque plusieurs enregistrements de merne cle sont crees dans un fichier, 1 o 
de rangement est l'ordre inverse de l'ordre de creation. 

L'enregistrement le plus recent sera done lu en premier lors d'une lecture se 
quentielle. 



- 34 - 



LET"Read-[n° logique] 

Lecture d'un enregistrement en fonctien de la valelir de la cle tou du polnteur) . 
Example : 

200 XX$ = " " : AAt = 'MIS " : AA = 1980 
210 LET"READ-1 
220 ?XX$ 

LET"Next-[n° logique] 

Lecture de 1 ' enreglatrement suivant. 

Employe apres l'ouverture du flchier, l'ordre NEXT permet de lire le fichier 
sequentiellement, chaque appel renvoyant a 1 ' utilisateur la cle (ou le pointeur) 
et 1 ' enragistrement suivants. 

Si une lecture a ete faite par READ, la lecture sequentielle par NEXT commence 
a la premiere cle tou pointeur) auivant celle (celui) du READ. 

REMARQUE : L'ordre NEXT ne tient pas compte de la valeur de la cle indiquee 
dans les variables BASIC. C'est la valeur obtenue a la derniere lectui'B qui 
comptB ■ 

Pour lire 1 ' enregistrement suivant pour une valeur donnee de la cle, enchainer 
READ et NEXT. 

Exemple : 

Dans un fichier dont la cle est N0$ de longueur de 10 caracteres, cherchons le 
premier enregistrement commencant par " T " . 

100 LET"jjC,$" 

110 LET"#0.1,F / NOMS" 

120 NO$ = " T " 

130 LET"R, 1" : IF PEEK (189) = THEN 150 
140 LET"N, 1" 

150 REM ICI LE PREMIER ENREGISTREMENT 
160 REM COMMENCANT PAR " T " A ETE LU 



LET"Update-[n° logique] 

Mise a jour d'un enregistrement. 

Indiquer les nouvelles valeurs des variables de 1 ' enregistrement , puis executer 
UPDATE . 

II n'est pas necessaire d'avoir lu 1 ' enregistrement auparavant. (mais dans ce 
cas la mise a jour est plus rapide) 

En cas d'homonymie, si l'un des homonymas vient d'etre lu, c'est celui-la qui 
est modifie. Sinon, c'est toujours le premier (c ' est-a-dire le plus recent) qui 
l'est. 

Exemple ; 

300 AA = 1980 : AA$ = "MIS": LET" READ-1 
310 XXt = XXt+" VERSION 2 
320 LET"UPDATE-1 



- 35 - 



LET"Delet-[ i° logique ] 

Destruction d'un enregistrement dont on indique la cle tou le pointeur). 
Cette operation est possible aussi bien sur les fichiers sequentiels indexes 
que sur les fichiers relatifs. 

Dans le cas d'un flchier sequentiel indexe, 11 est possible de recreer 1' enre- 
gistrement detruit, par l'ordre WRITE ou ADD. Ceoi est impossible pour un 
ficliier relatif et une valeur du pointeur detruite ne pourra etre reutilisee. 
[Dans le cas des fichiers relatifs, 1'interet principal de cet ordre est la 
recuperation de la place de 1 1 enregistrement sur le disqus.) DariEi le cas d'un 
fichier multicle, la place de 1 ' enregintremsnt ne sera recuperoe qu'a la 
prochaine re-organisation. 



LET"Borne-[ n° logique ] 

Fixe une borne maximum au fichier pour les lectures sequentielles . 

L'ordre NEXT declenche une erreur " fin de fichier " (status = 255) si cette 

borne est atteinte ou depassee. 

Pour utiliser l'ordre BORNE, positionner les cles tou le pointeur) a la valeur 
maximum desiree, puis executor l'ordre. 

La valeur exacte de la borne, si elle correspond a une cle existante, n'est 
pa3 lue. 

REtlARQUE : l'ordre DORNE ne provoque pas de lecture disque, et ne trouble 
pas le fonctionnoment de l'ordre NEXT (qui, rappelons-le, travaille par rap- 
port a la derniere lecture et non par rapport aux valeurs des variables.) 
Pour ne lire qu'une partie d'un fichier, il suffit dono de fixer une borne 
minimum par READ, une borne maximum par BORNE. Une boucle de lecture par NEXT 
permet d'obtonir cet extrait du fichier comme s'il s'agissait d'un fichier 
entier . 

LET"Xtract- [n° logique ], (n° variable] 

Cette comrnande permet d'extraire des elements d'un fichier en conditionnant 
l'une des variables composant la cle. 

Par exemple, si la cle se compose de : 

A1 % numero de famille 

A2 % numero de fournisseur 

A3 % numero interne de 1' article 

Le numero logique de ce fichier est " F ". 

Pour lister les elements du fichier appartenant au fournisseur numero 2, 
il faut tout d'abord designer au systeme le numero d'ordre de la variable 
tesfcee et sa valeur. 

J LET " XTRACT, F, 2 " 

] A1 % ~ : A2 % = 2 : A3 % - 

] LET " READ, F " 

? DIRECT ERROR 

La comrnande XTRACT positionne le numero d'ordre de la variable. 
La comrnande READ, qui ici n'aboutit pas, fournit au systeme une valeur de re- 
ference pour la variable A2 %, en l'occurence 2. 

De plus, il ne faut pas oublier que ce READ positionne le haut de fichier pour 
1 ' instruction LET " NEXT, F " qui extrait les elements redv.rchee. 



- 36 - 



II est possible de redonner une nouvelle valeur ds recherche a la carnmande 
NEXT. 

Pour cela, il faut executer un nouveau READ en positionnant les nouvelles 
valeurs pour les variables composant la cle. 

ATTENTION : ne pas oubliar qu'en faisant cela, le haut de fichier est re- 
positianne pour le prochain NEXT. 



LET"Xindex-[n° logique] 

Pour les fichiers relatifs, cot ordre renvois dans le pointeur le numero 
d'crdre du prochain enregistrement qui sera orea. 

Cet ordre permet, entre autre, de creer des chainages entre fichiers avant 
d'avolr cree tous les enregistrements . 



5 - 4 - PROGRAMMES 

Les ordres sont : 
LOAD" [d J ; [nom] 
Chargement d'un programme. 



LOAD'#[d] : [nom] 

Chargement d'un programme a la suite de celui deja existent en memoire cen- 
trale. 

IMPORTANT : Les numeros de lignes du second programme doivent etro > a ceux du 1er. 
Dans le cas contraire, niodif iez-les au prealable par I'utilitaire 
RENDMEROTE. 



L0AD"/[d] : [nom] 

Chargement, puis execution d'un programme sans detruire les variables. 
Attention I le programme doit etre d'une taille inferieure a oelle du 
dernier programme charge normalement. 



SAVE"[d] : [nam] 

Sauve le programme en cours. 

S'il existe une erreur c el le- ci sera signalee dans les status (PEEK (1B9)). 



SAVE"S[d] : [nom] 

Sauve le programme en cours en ecrasant 
ment enregistree. 



eventuellement une version precedem- 



RUN"[d] : [nom] 

Charge le programme et lanae son execution. 



- 37 - 



RUW'tKtJ) : [nomj 

Charge le programme a la suits de oelui dnja en meimoire, puis lance 1' execu- 
tion de 1' ensemble. 

LET""'-[d] 

Imprirne le catalogue du disque d. 
LET""-ld], [P/M/F] 

Imprirne seuleniBnt la liste des Programmes, Masques du Fichiers , 
]NEW 

310PRINT"TEST" 
ISAVE"i :TEST1" 
j NEW 

.1 2 1> FOR I = 9 TO 1 : ? " tt " i : NE X T 

]SAVE"1 1TEST2" 

]LET"*, 1" 

CATALOG DISK 1 

P TEST1 
P TESTS 

3NEW 

3LOAD" 1 : TEST1 " 
] LOAD " tt 1 s TEST2 " 
3 LI ST 

10 PRINT "TEST" 

20 FOR I = TO 10: PRINT "tt";: NEXT 

]SAVE"1 : TEST 1+2" 

3 RUN 
TEST 

ttttttttttttfttttttttt 
]LET"*»1" 

CATALOG DISK 1 

P TEST1 
P TEST 1+2 
P TEST2 

REMARQUE : Dans le CATALOG, les objets sont imprlmes dans l'ordre olphabetique . 
Les fichiers d'abord, puis ]es masques et enfin les programmes. 



- 38 - 



Notes concernant la ayntaxe 



1) CaraDtBres_signif icatif s 

Lea blancs ne sont pas significatif a, sauf dans le nam d'un objet. 

Seiil le premier caractere suivant un aeparateur (, i - :) cornpte tsauf dans 

le cas du nom d'un objet), 

Les autres caracteres aont ignores. 

Exemple : 

LET"H0PEN-1, FICHIER,0 : FIC TEST 

est equivalant a : 

LET"#0 - 1 , F , : FIC TEST 

2) Nymsro_logigue 

On pent choisir comme nurnero logique n'importe quel caractere ASCII 
a 1' exception du caractere " $ ". 

De plus, dans toua les ordrea, les caracteres suivant le nurnero logique sont 
ignores. 

Dn pourra ecrire : 

LET"#0P-STOCK~F, 1 : STOCK 
LET"READ-STOCK 

Le nurnero logique etant " S ". 

3) Noni d^un objet 

Le nom d'un objet eat une suite de caracteres quelconques. Seula les 21 pre- 
miere caractorea sont pris en cornpte. S'il y en a moins da 21, le nom est com 
plete par des blancs (code ASCII 32) . 

4) Valeyr par defautdu disgue 

Si le premier caractere du nom est superieur a " 9 ", on pourra oinettre le 
nurnero du diaque, qui gardera la valeur precedente, 

Exemple : 

LOAD"0 : PRG TEST 
SAVE"PRG TEST 
SAVE"@PRG TEST 



55 P9E? m 5liE9B§_d e ?_9rdE§§ 

Les ordrea ont ete montres sous la forme : 

LET"XXXXXX 
LOAD"XXXXX 

flaia 1'ordre peut etre une chaine de caracteres quelconque, conatruite ou non 
envoyee par LET, LOAD, SAVE ou RUN. 

Exemple : 

100 INPuT'NOM DU MASQUE" j NM$ 
110 LET"}|OPEN-2,MASQ / 1 : "+NM$ 



- 39 - 



G J Separateurs 

Dans tous lea urdres, los separateurs sotit interchangeables. t, : j -) 
7 1 _Caa_garticullerB 

Tout ardre du PI/DOS B502 suiwant THEN doit stre precede do " : ". 
Example : IF A = B THEN : LET G 
Si l'on omet lea " : ", le ny sterns rtipondra : 
SYNTAX ERROR 



- 40 - 



5 - 5 - HINAIRES ET PROGRAMMES ASSEMBLEURS 



Les modules binaires se camportent d'une fagon voisine do celle des 
programmes BASIC. Les seules differences sont : 

1 ) Les adresses delimitant la partie 'de memoire a sauver out ete definios 
par 1 ' utilisateur et non impose corame dans le cas d'un programme BASIC. 

2) lis sont notes dans le catalogue sous le code " B " au lieu du code 
" P " 

La syntaxe est la suivante ; 

Sauvetage : SAVE "tXXXX, $YYYY, d : nam" 

avec : XXXX adresse minimale en hexadecimal 

Exemple ; SAVE"$1000,$1 100,0 : BIN" 

sauvo la partis de la memoire comprise entre : 
11000 et $1'0FF 

Relecture ; LOAD"$XXXX, $YYYY,d : nom" 

avec XXXX adresse de depart choisie 
YYYY adresse maximalo autorisee 

Cette deuxteme adresse permet de meltre en " chien de 
garde " evitant d'ecraser une autre partie de la mtV 
(noire. Meme si YYYY est superieur a 1' adresse de fin de 
chargement, le comportement du LOAD ne sera pas mofifle. 



NOTE : IT puut etre interessant de pouvoir oonnaitre l'adresse de fin d'un 
module a 1' issue d'un chargement. 

Cela est possible, l'adresse de fin du module +1 se trouve place 

en ADBLC a 1' issue du LOAD avec, 

ADBLC = $30E poids fort de l'adresse 

ADBLC + 1 = $30F poids faible de l'adresse 



- 41 - 



5 - B - ACCES DIRECT 



Cette fonction permst de lire ou ecrire un ou plusieurs sectsurs, directe- 
ment but le disque ou la disquette. La syntaxe est : 

LET"td,[C=]o ,[N=]n ,[P=]p ,[T=]t ,[S=]a ,$XXXX 

Avbc XXXX adresse du chargement 

d numero du drive (0 5) 

n nombre de secteurs a charger ou sauver 

p piste 

t tete 

s seoteur 

c commande (1 = lire i 2 = ecrire j 4 = formatter) 

Les caracteras notes en [ ] sont facultatifs, mais contrSles s'lls sont 
presents. 

Deux particularity interessantes de cet ordre sont : 

1) dans le cas ou le nombre n est trop important et que cBla cqnduirait 
a depasser la fin du disque, 1 'ordre est execute normalement tant que 
□ela est possible, puis la main est rendue avec un status non nul pour 
signaler le fait. 



2) apres son execution, le programme positionne en i 
*30A *30B *30C 

Lbs parametres piste, tete, secteurs du PROCHAIN sect.eur a lire. 

Una consequence de ces caracteristiques est la 3implicite de realisation 
do certains utilitaires, 

EXEflPLE : Programme copiant des drives de meme type. 



ready. 
50 h i ma»s 16*256 

100 input, " cop ie depu I <? V"fdl',|; 
1.10 input " vers ?"?d2* 
120 leV'fk 

200 k -• 7 2 5 (i s 1 6 + 1 3 * 2 5 6 1 1 6 + 5 
210 p=0J«i = 0tt.=0 

213 vlabiOti-rint.'Hactur© "p" "I." "s 

220 1 h?t"1;" + d1.t. + " , 1 , l/.,"*«t.rt(p ) +" r "i«trf. < t) + " , " + st,r* < s )+"t 1,000" 
223 vtablO : pr i nfecr i tuve "p" "t" "s 

lnt"!|i" + d2t + " t 2 , 1A , " + s t.r't. ( p ) + » r •"+„ tr*< t, )•(•" , " + st,r$ <s )+"$ 1,000" 
2 4 ifp eek <1.f!y>then300 

2 AO p-=pisek ( !■! + ).): t = pe>-;l< ( k + 2) i 5 = p<wk ( k+3 ) : rinfoI'lTi 
W>0 pr i nt"l;ipti'i 1' I n 
I" i -a. "-Hi , 



- 42 - 



5 - 7 - EXEMPLES 



lee rem *************************************************** 

101 REM * EKEHPLE 1 * 

102 REM * * 

103 REM * * 

104 REM * CLERR-$ > NEW * 

105 REM * * 

110 REM * * 

120 REM * * 

138 REM * CREATION D'UN FICHIER STOCK * 

131 REM * * 

135 REM * * 

149 REM * LE FICHIER EST UN FICHIER SEQUENT I EL IHDEJiE * 

158 REM * * 

16S REM * Lfl CLE : * 

170 REM * F0;-;=HUMER0 DE FOURNISSEUR * 

130 REM * HP;;'=NIJMERO DE PIECE * 

190 REM * * 

200 REM * L ' ENREG I STREMENT * 

210 REM * Pfi=PRIX D'flCHflT * 

220 REM * PV=PRi;:| DE VENTE * 

230 REM * TV;-:/=TVPE TVfi * 

240 REM * QS=QURNTITE EH STOCK * 

250 REM * QC=QURHTITE EN COMMfiNIiE * 

26a REM * QH=QLIRNTITE M I H I MALE * 

2?0 REM * LI$=LIBELLE DE Lfl PIECE * 

2S0 REM * * 

230 REM * * 

300 REM * LE PROGRAMME IHDIQUE Lfl DEFINITION DE * 

310 REM * L ' ENREG I STREMENT ET CREE LE FICHIER * 
320 REM *************************************************** 
400 LET" ttCLEHR-i " : S= 1 89 

410 let">fo;;, np;;=ft-i.. pv.. tv:;, os, qc qm, li* 
420 let " #meh , 1 , f i ch i er , o : stock 
430 if peek<s:>thenpriht"erreur " 

READY. 



- 43 - 



190 REM ************************************************* 



105 REM * EXEMPLE 2 * 

110 REM * * 

120 REM * * 

130 REM * MISE fl JOUR D'UN 'FICHIER * 

140 REM * * 

150 REM * LE PROGRAMME EST I NDEPEMDANT * 

160 REM * DU FICHIER * 

170 REM * * 

130 REM * SEULS LES MASQUES UTILISES SOHT fi CHANGER * 

190 REM * * 

280 REM * * 

3O0 REM * LE PROGRAMME PERMET LES ORBRES SUIVRNTS : * 

310 REM * LECTURE D'UNE PIECE * 

320 REM * CREATION D'UNE PIECE * 

330 REM * MODIFICATION D'UNE PIECE * 

348 REM * DESTRUCTION D'UNE PIECE * 

350 REM * SUIVANT < LECTURE DANS L'ORDRE DES CLES> * 

360 REM * * 

370 REM * LE PROGRAMME UTILISE £ MASQUES * 
3S0 REM * - CLE-XXXXX = DEMRHDE DE LA CLE ET DE L'ORDRE * 
390 REM * - ART-XXXXX = DEMANDE OU RFFICHRGE DE LA PIECE* 

400 REM * * 



410 REM ************************************************* 
5O0 LET'MtCLEAR-*" : 3=189= INPUT"NOM DU FICHIER ",:N* 
510 LET " ttOPEH .. F , F I CH I ER , 8 : " +H* 

529 LET" ttOPEN , C , MASQUE , S = CLE- " +H$ 

530 LET " #OPEN , fl , MASQUE , : ART- " +N* 
540 LET "CHARGE.. C 

550 LET"OUTPUT,.C" :MC*="" 

560 LET " I NPUT , C" : I FPEEK C S ) THENMC*= " REPRENEZ " : G0T0558 

570 IFO*="F"THEHENH 

580 IFO$="L"THEN700 

590 IFO$="S"THEN8O0 

600 IFO*="H"THEH9@0 

610 IFO$="C"THEN1000 

620 IFO*="D"THEN1100 

630 MC=N"ORDRE ERRONE" • GOTO550 

700 LET"RERD-F" : IFPEEK<S>THEN790 

7 1 MR* = " LECTURE : FRITE RETURN " : LET " PR I NT , A 

720 GET A* : I FA*OCHR$ <13> THEN720 

730 nriTri54f( 

790 MCf = " ART I CLE I HEX I STflNT " : GOTO550 
80O LET"READ-F" : IFPEEK<S>THEN?90 

SIO LET " NEXT-F " : I FPEEK C S > THENMC$= "PLUS D ' ART I CLE " = 00T0550 
829 GOTO? 10 

900 LET"REAH-F" : IFPEEI«S>THEN79S 

918 MR*="MODIFICATION" : LET " PR I HT-R " : LET " I NPUT- A " : IFPEEK<S>THEN990 
920 LET"UPDATE-F" : GOTO540 
990 MC*=" ABANDON" :GOTO540 

100O LET"REAH-F" : IFPEEKC3>=0THEHMC*=" ARTICLE EX I STflNT" : G0T0550 

1810 MA*= " GREAT I OH " s LET " PR I NT- A" = LET " I NPUT-fl " : I FPEEK ( S > THEN999 

1 020 LET " WR I TE-F " : G0T0540 

110O LET " RE AD-F " : I FPEEK < S > THEN790 

1110 MA*="OK POUR DETRUIRE CO/H) " : LET"PRINT-fl" 

1129 GET A* : IFfl$="N"THEN990 

1130 IFA*O"O"THEN1120 

1 1 40 LET " DELET-F " = G0T0549 
RE ADV. 



- 44 - 

lee rem w***MmMwwwMm*mmwMMWMwmmw& 

101 REM * EXEMPLE 3 

102 REM * 

103 REM * 

104 REM * CLEAR-* OPEN NEXT 

105 REM * - 

110 REM * 
129 REM * 

139 REM * LECTURE SEQUENT I ELLE D'UN FICH1ER 

131 REM * 

135 REM * 

140 REM * LE FICHIER EST UN FICHIER SEQUENT I EL I NDEXE 
150 REM * 

160 REM * LA CLE ■' 

178 REM * FO;;=NUMERO DE FOURNISSEUR 
180 REM * NP"i=HUMERO DE PIECE 
190 REM * 

200 REM * L ' ENREG I STREMEHT 
210 REM * Pfl=PRIX D' ACHAT 
220 REM * PV=PRIX DE VEHTE 
230 REM * TV:-V=TVPE TVfl 
240 REM * QS=QUfiHTITE EN STOCK 
250 REM * QC=QUflNTITE EN COMMAHBE 
260 REM * QM=QUANTITE MI HI MALE 
270 REM * LI*=LIBELLE DE Lfl PIECE 
280 REM * 
290 REM * 

300 REM * LE PROGRAMME LISTE LE 
310 REM * FICHIER COMPLET 

320 rem M*WMWM*mwwwmwwm*wm#m*mMwm 

400 LET " #CLE RR-* " : S= 1 89 
410 LET " ttOPEN > 1 .• FICHI ER .. : STOCK 
450 LET " NEXT- 1" • IF FEEKCS) THEN END 

460 print fo;:, hp;;, pa.. pv.. tv;:.. qs.. qc, qm.. GOTO450 

REflDV. 



- 45 - 



lee rem mmmmmummmmmmmmmmmmmw.mmmm$mm 

181 REM * EXEMPLE 4 * 

102 REM * * 

1@3 REM * * 

104 REM * CLEAR-* OPEN NEXT READ BORNE * 

165 REM * * 

110 REM * * 

129 REM * * 

138 REM * LECTURE D'UNE PART IE D'UN FICHIER * 

131 REM * * 

135 REM * * 

140 REM * LE FICHIER EST UN FICHIER SEQUENT I EL IHDEXE * 

150 REM * * 

160 REM * LA CLE = * 

178 REM * FOK=HUMERO BE FOURNISSEUR * 

ISO REM * NPJi=HUMERO BE PIECE * 

190 REM * * 

20O REM * L ' ENREG I STREMEHT * 

210 REM * PA=PRIX B' ACHAT * 

228 REM * PV=PRIX BE VEHTE * 

238 REM * TV;V=TVPE TVA * 

240 REM * QS=GUflNTITE EN STOCK * 

250 REM * QC=QUANTITE EN COMMANBE * 

260 REM * QM=QUANTITE MI HI MALE if: 

270 REM * LI*=LIBELLE BE LA PIECE * 

280 REM * * 

290 REM * * 

300 REM * LE PROGRAMME LISTE LES PIECES D'UN FOURNISSEUR * 

310 REM * * 
328 REM *************************************************** 
400 LET"#CLEAR— ■£ " : S=1'39 
410 LET" #OPEM .. 1 .. F I CH IER, O : STOCK 

429 INPUT "MOM DU FOURNISSEUR CONCERNE " iFW. 

430 HPJi=@: LET" READ- 1 

440 NP;;=32700 : LET" BORNE- 1 

450 LET " NEXT- 1 " : IF PEEK 03 THEN END 

460 print fo;:.. hp;:, pa.. pv, tvk, qs,, qc, qm, li* : OOTO450 

READY . 



- 46 - 



160 REM *************************************************** 



101 REM * EXEHPLE 5 * 

102 REM * * 

103 REM * * 

104 REM * CLEAR-* OPEN NEXT XTRACT * 

165 REM * * 

118 REM * * 

120 REM * * 

138 REM * EXTRACT I OH D'UN SOUS FICHIER * 

131 REM * * 

135 REM * * 

148 REM * LE FICHIER EST UN FICHIER SEQUENT I EL INDEXE * 

158 REM * * 

168 REM * LA CLE = * 

178 REM * FO;-;=NUHER.O DE FOURNISSEUR * 

130 REM * NP;;=NUMERO DE PIECE * 

190 REM * * 

208 REM * L '' ENREG I STREMEHT * 

218 REM * PA=PRIX D'- ACHAT * 

220 REM * PV=PRIH DE VENTE * 

238 REM * TV,"-;/=T't , PE TVA * 

248 REM * QS=QUANTITE EN STOCK * 

258 REM * QC=QUAHTITE EN COHHANDE * 

260 REM * GM=QUAHT I TE MINI-MALE * 

270 REM * LI*=LIEELLE DE LA PIECE * 

280 REM * * 

290 REM * * 

300 REM * LE PROGRAMME LISTE LES PIECES DONT * 

318 REM * LE NUMERO (HPK> EST EGAL H 1888 * 



328 REM *************************************************** 
488 LET " #CLEAR~$ " ; 8= 1 89 
418 LET" #OPEN .. 1 .. F I CH I ER / 8 : STOCK 
448 NP;-:= 1 800 = LET " XTR ACT- 1 
450 LET" NEXT- 1" : IF PEEKCS> THEN END 
468 PRINT FQK, HPZ, PA.. PVAW., QS, QC QH, LI$ : G0T045S 
READV. 



- 47 - 

lee rem *************************************************** 

101 REM * EXEMPLE 6 * 

102 REM * * 

183 REM * ■ * 

184 REM * CLEAR-* > HEW * 

185 REM * . * 

110 REM * * 

120 REM * * 

130 REM * CREATION D'UN FICHIER RELATIF * 

131 REM * * 

135 REM * ' * 
137 REM * PAR EXEMPLE = FICHIER D'ECRITURES COMPTAELES * 

133 REM * * 

148 REM * Sfl DESCRIPTION EST = * 

158 REM * * 

169 REM * LE POINTEUR * 

179 rem * ne;;=numero D'ECRITURE * 

130 REM * * 

288 REM * L ' ENREO I STREMEMT * 

218 REM * DA**=DATE BE L'ECRITURE * 

220 REM * LI*=LIBELLE * 

230 REM * CP*=COMPTE CONCERNE * 

240 REM * DE=DEBIT * 

250 REM * CR=CREDIT * 

268 REM * NF*=REFERENCE FACTURE * 

270 REM * DP**=DATE HE L'' OPERATION * 

288 REM * * 

290 REM * * 

300 REM * LE PROGRAMME INBIQUE Lfl DESCRIPTION * 

310 REM * DE L ' ENREO I STREMEMT ET CREE LE FICHIER * 
328 REM *************************************************** 
400 LET"#CLEflR-*" :S=189 

4 10 LET " >@NE-;=D A$* ..LI*., CP* , DE , CR , NF* , DP** 
420 LET"#NEW, 2, FICHIER, 1 : ECRITURES 
438 IF PEEKCS) THEN F'RINT"ERREUR ' 
READY. 



- 43 - 



188 REM *************************************************** 

101 REM * EHEHPLE 7 * 

182 REM * * 

183 REM * * 

184 REM * CLEAR-* > HEW * 

105 REM * * 

110 REM * * 

120 REM * * 

138 REM * LISTE IK UN FICHIER RELflTIF * 

131 REM * * 

135 REM * * 
13? REM * PAR EHEMPLE : FICHIER D'ECRITURES COMPTABLES * 

138 REM * * 

140 REM * SA DESCRIPTION EST : * 

158 REM * * 

160 REM * LE POINTEUR * 

170 REM * NEX=NUMERO D'ECRITURE * 

190 REM * * 

200 REM * L ' EHREG I STREMENT * 

218 REM * DA**=DATE DE L'ECRITURE * 

220 REM * LI*=LIBELLE * 

230 REM * CP*=C0MPTE CONCERHE * 

240 REM * HE=DEBIT * 

250 REM * CR=CREDIT * 

268 REM * NF*=REFEREHCE F PICTURE * 

278 REM * DP**=DATE DE L'' OPERATION * 

288 REM * * 

298 REM * * 

388 REM * LE PROGRAMME LISTE LE FICHIER COMPLET * 

318 REM * < JOURNAL ) * 
328 REM *************************************************** 
4 88 LET "ttCLEAR-* " : S= 1 89 

428 LET " WEN , 3 , F I CH I ER , 1 : ECR I TURES 
438 LET"NEKT-3" ■' IF PEEK 03 > THEN END 
448 printne;:, DA*, LI*.. DE, CR, NF*, DP* 
458 firiT0438 
READV , 



- 49 - 



lee rem *************************************************** 



101 REM * EKEMPLE 8 * 

1Q2 REM * * 

193 REM * * 

184 REM * CLEAR-* > HEW * 

185 REM * * 

118 REM * * 

120 REM * * 

138 REM * CREATION D'UH FICHIER MULT I CLE * 

131 REM * * 

135 REM * * 

137 REM * PAR EXEMPLE : FICHIER EES COMPTES COMPTRBLES * 

138 REM * * 
146 REM * SR DESCRIPTION EST : * 

159 REM * * 

160 REM * 1ERE CLE * 
178 REM * C0$19=LE HUMERO HE CONPTE * 
190 REM * * 
208 REM * 2EHE CLE * 
210 REM * RL*12=C0BE ALPHABETIZE EQUIVALENT * 
228 REM * * 
238 REM * L ' EHREG I STREMEHT * 
240 REM * LI$=LIBELLE BU COMPTE * 
258 REM * CR=CREDIT * 
268 REM * BE=DEBIT * 
270 REM * SB=SOLDE * 
288 REM * RL*=COBE ALPHA (REPETE POUR INFORMATION) * 
290 REM * CO$=COHPTE < REPETE POUR INFORMATION) * 
295 REM * * 
380 REM * LE PROGRAMME I HI' I QUE Lfl DESCRIPTION * 
310 REM * DE L '' ENREG I STREMEHT ET CREE LE FICHIER * 
320 REM *************************************************** 
400' LET"#CLERR-$" : 8=189 

418 LET":>C0$18 & BL*12 =L II .. CR .. DE .. SB > AL'f .. CO$ 
428 LET"#NEW,4,.FICHIER, i : COMPTES 
430 IF PEEKCS) THEN PRINT"ERREUR 
RE ADV. 



- 50 - 



1 @9 REM *************************************************** 



101 REM * EXEMPLE 9 * 

102 REM * * 

183 REM * * 

194 REM * CLEAR-* OPEN NEXT UPDATE * 

185 REM * * 

110 REM * * 

12Q REM * * 

130 REM * MISE fl JOUR D'UN FICHIER (MULT I CLE) * 

131 REM * * 

135 REM * * 

137 REM * PflR EXEMPLE : FICHIER DES COMPTES COMF'TABLES * 

138 REM * * 
140 REM * SH DESCRIPTION EST : * 
150 REM * * 

169 REM * 1ERE CLE * 

170 REM * CO$10=LE NUMERO DE COMF'TE * 
190 REM * * 
200 REM * 2EME CLE * 
210 REM * AL*12=C0DE ALPHABET I QUE EQUIVALENT * 
220 REM * * 
230 REM Hi L '' ENREG I STREMENT :+: 
240 REM * LI$~LIBELL£ DU COMPTE * 
250 REM * CR=CREDIT * 
260 REM * DE=DEBIT * 
270 REM * SD=SOLriE * 
280 REM * AL*=COBE ALPHA CREPETE POUR INFORMATION) * 
290 REM * CO*=COMPTE <REPETE POUR INFORMATION) * 
295 REM * * 
30O REM * LE PROGRAMME EFFECTUE LE CALCUL SUIVAHT * 
310 REM * SOLHE (SD) = DEBIT (DE) - CREDIT (CR) * 
315 REM * ET REECRIT L'ENREG I STREMENT MODI FIE * 
320 REM * * 
330 REM * ICI ,LE FICHIER EST MULT I CLE .LA LECTURE SE * 
340 REM * FAIT SUR LE PREMIER MOVEN D'ACCES * 
350 REM * QUI CORRESPOND A Lfl 'v'ALEUR PAR DEFAUT . * 
360 REM * H; 
370 REM * LE PROGRAMME EST DONC LE MEME POUR UN FICHIER * 
375 REM * SIMPLE OU UN FICHIER MULT I CLE . * 



380 REM ********************************** 
400 LET"#CLEAR-$" =8=183 
420 LET " ttOPEN , 6.. FICHIER.. 1 : COMPTES 
430 LET"NEXT-6" • IF PEEK(S) THEN END 
440 SB=DE-CR: LET"UPHATE-6" : GOTO430 
RE ADV. 



- 51 - 



i ee rem mwMmwMMW*wm*wwwMMmmww*MWMM 

105 REM * EXEMPLE 10 * 
HO REM * * 
120 REM * * 
130 REM * MISE A JOUR D'UH FICHIER flVEC HOMOHVMES * 
140 REM * * 
150 REM * LE PROGRAMME EST IMDEPEHDRNT * 
160 REM * DU FICHIER * 
190 REM * * 
230 REM * * 
300 REM * LE PROGRAMME PERt'lET LES ORDRES SUIVAHTS : * 
310 REM * LECTURE .. CREATION .. DESTRUCTION, MODIFICATI OH * 
320 REM * ET LECTURE SEQUENT I ELLE CSUIVRNT) * 
360 REM * * 
370 REM * LE PROGRAMME UTILISE 2 MASQUES * 
380 REM * - CLE-XXXXK = DEHANDE DE LR CLE ET DE L'ORDRE * 
390 REM * - ART-XXXXX = DEMRHDE OU RFFICHRGE HE LR PIECE* 
4@0 REM * * 
410 REM * LES DIFFERENCES AVEC LE PROGRAMME H" ACCEPT ANT* 
420 REM * PAS LES HOMOHVMES SOW: * 
430 REM * - POUR GREER UN ARTICLE ,AHD REMPLRCE WRITE * 
440 REM * - POUR METTRE fl JOUR .. NE PRS FRIRE RERD * 
450 REM * AVANT NEXT . CELA PERMET DE LIRE PAR NEXT * 
460 REM * LES DIFFEREHTS ARTICLES DE HEME CLE . * 



580 LET"#CLEAR~*" :S=1S9 : IHPUT"NOM DU FICHIER "JH* 

5 1 LET " #OPEH .. F , F I CH I ER , = " +H$ 

520 LET " ttOPEN .. C .. MASQUE .. : CLE- " +N* 

530 LET " #OPEN , A , MASQUE , : ART- " +11* 

540 LET "CHARGE, C 

550 LET " OUTPUT , C " : MC$= " " 

560 LET" I NPUT , C " : I FPEEK < S > THENMC*= " REPREHEZ " : G0T0550 

578 IFOf="F"THENENH 

580 IFO*="L"THEN70O 

590 IFO*="S"THEH800 

600 IFO*="M"THEN900 

610 IFO$="C"THEN1000 

620 IFO*="D" THEN 1100 

630 MC*="ORDRE ERROHE" : GOTO550 

70O LET"READ-F" : IFPEEKOS)THEN790 

7 1 Mfl$= " LECTURE : F A I TE RETURN " : LET " PR I NT , A 

720 GET A* : I FfWOCHR* <■■ 1 3 ) THEN720 

730 0OT054R 

790 MC*=" ARTICLE I HEX I STRUT " : G0TQ55Q 

800 LET"NEXT-F" : I FPEEK <S)THENMC*=" PLUS D ''ARTICLE" : G0T0550 
820 GiTTn71fi 

900 LET"REAB-F" : I FPEEK < 8 ) THEH79Q 

910 MA$="MODIFICATION" : LET"PRIHT-A" : LET" INPUT-fl" ■ IFPEEKCS>THEN990 
920 LET"UPDATE-F" : G0T0540 
990 MC*=" ABANDON" : GOTO540 

1000 LET"READ-F" : I FPEEK ( S > =0THENMC$= "ARTICLE EXISTRNT" : G0T0550 

1010 Mfif=" CREATION" : LET "PR I NT- A" : LET" INPUT- A" : IFPEEK(S)THEN990 

1 020 LET " RDD-F " : G0T0548 

1 1 0O LET " RERD-F " : I FPEEK C S > THEN790 

1110 MR$="OK POUR DETRUIRE ( O/N ) " : LET " PR I MT-fl " 

1120 GETR* : I Ffl*= " H " THEN990 

1130 IFR$O"O"THEN1120 -.s, 
1140 LET"DELET-F" : G0T0540 ■-, 
REfiDV. 



- 52 - 



1 WQ REM *#******:f:**:m*m::+::m 



110 REM * EKEMPLE 11 * 

12Q REM :<•: * 

13@ REM *' TRI DE FICHIER * 

140 REM * * 

150 REM * * 

168 REM * * 

179 REM * CLEAR-* NEXT REORGANISE ADD HEW * 

188 REM * * 

139 REM * * 

200 REM * FICHIER D'ORIGINE : FICH ORIG * 

210 REM * * 

230 REM * CLE : H* 10 ,Afl * 

240 REM * ENREG I STREMENT : BE ,CC , DD * 

£50 REM * * 

260 REM * FICHIER D'flRRIVEE : FICH flRR * 

270 REM * * 

280 REM * CLE : CC ,DD * 

290 REM * ENREG I STREMENT : A* EB ..flfl * 

380 REM * * 

310 REM * PRINCIPE DU TRI : * 

320 REM * CREATION DRNS UN NOUVEflU FICHIER SEQUENT I EL * 
330 REM * INDEXE ,LE PROGRAMME REORGANISE LE NOUVEflU FICHIER * 

340 REM * BES QUE LE NOMBRE D' ENREG. CREES ATTEINT LE NOMBRE * 

350 REM * B ENREG I STREMENT DANS LE FICHIER CSflUF AU DEBUT OU * 

360 REM * LES INSERTIONS SOMT RAPIDES > :+: 

370 REM * * 



380 rem mmmm>mmmmmmmmmmmmmmmmmmmmw-mt*m 

400 LET"#CLERR-$" =S=189 

410 LET" ttOPEN , OR I .. F I CH I ER > : FI CH OR I G 

420 LET " >CC ., DB=fl* , BB , fl A 

430 LET " ttNEN > FlRR .. F I CH I ER > @ : F I CH ARR 

440 NRRN(3ES=@ ■ NTflS=0 

450 LET"NE;«:T-ORI" : IF PEEKCS:.' THEN PR I NT "TRI TERM I HE" : END 
460 LET"flDB-ARR" : NTflS=HTAS+l : IF NT AS < NRRNGES THEN 450 
470 IF NRflNGES=@ AND HTAS<30 THEN 458 

480 LET " #REORG-ARR " : HRANGES=HRANGES+NTAS : NTflS=0 : OOTO450 
REflDV . 



- 53 - 

C H A P I T R E VI 



FONCTIONS COMPLt;MENTA I RES 



6 - 1 - CONTENU D'UN DISDUE 



Lb fl/DOS 6502 permet de connaitre la place libre sur una disquette. 

Utilisez pour cela l'ordre : 

LET " % d " d = numero de drive 

Par example ; 

LET " % " 

Pour oonnaltre la place disponible, lire l'octet situe a 1'adresse 189 
thabituellement utilisfi comme status) 

Cet octet contiant le nombre de pistes disponibles sur la disquette. 



Remarque : En mode direct si le nombre de pistes libres est non nul, 
le message ? DIRECT ERROR apparait, mais cela n'a pas d ' im- 
portance . 

Le nombre total de pistes de la disquette est 34. 

Si par exemple vous obtenez le resultat 

? PEEK (189) 
17 

La disquette est occupee a 50 %. 



6 - 2 - CHANGEMENT DE DISQUETTES 



Pour accelerer le f onctionnement du M/DOS 6502, certains pointeurs 
dacrivent la disquette logiquernant. Si vous changez la disquette sans 
qua le systeme la sache, vous risquez alors de detruire le contenu da 
celle-ci . 

Pour signaler la changement de disquette, utiliaer l'ordre : 

LET "# C," + CHRtCd) d = numero de drive 

De plus, tous las fichiers ouverts sur la drive davront etre fermes. 

REMARQUE i En mode direct, l'ordre LET "ft C," + CHR$(d) ast effectue 
automatiquemant, avant chaque ordre. 

Par exemple : En mode direct 

LOAD " : TEST " 
Changement de disquette 
SAVE " : TEST " 
ne detruit pas la disquette 



En mode programme 
10 LOAD " : TEST " 

20 INPUT " CHANGEZ LA DISQUETTE ET FAITES RETURN " : Ag 
30 SAVE " ! TEST 

detruit la disquette. 

II faut faire : 

10 LOAD " : TEST " 

20 INPUT " CHANGEZ LA DISQUETTE ET FAITES RETURN " ; AZ 
30 LET " ttC, " + CHRZ C0) 
40 SAVE " : TEST " 

NOTE : Apres LET " \\C,2 qui nettoie tous las buffers du DOS, il est po 
slble de changer de disquette sans risque. 

CAS PARTICULIER : LET"|}C,$$" ferme tous las drives. 

L'ordre LET " )(1 " supprirne la CLEAR en mode direct 
[ce qui permet d'utiliser les fiohlers), mais la con 
trole n'est plus effectue. 
LET " ) " rend le CLEAR. 



- 55 - 



B - 3 - FONCTIONS DE CALCUL SIJR 4B CHIFFRES 



Le fl/DOS 6502 contient das fonctiona de oaloul qui sont une aide preciause 
pour Ibs applications da gestion comma la comptabilite . 

II y a trois fonctiona : 

- addition 

- souatraction 

- arrondi 

Ces fonctiona manipulent des chainea de caracteres. 

La precision das calculs est de 48 chiffres 
Example : 

LET " = 325.1 + 3.21 " 

PRINT WW2 

32B.31 

La syntaxa generale est : 

LET " = op1 i' op2 " 
Resultat dans WWg 

ou 

LET " = " + 012 + " + " +022 (addition) 

LET " = " + 012 + " - " + 022 C souatraction) 
LET " = " + 01Z (arrondi) 



- 4 - PRECISIONS DES CALCULS 



Les calculs se font avec un nombre de decimales fixe par l'ordre : 
LET "Q - n " n = nombre de decimales (1 a 9) 

Exemple 

LET "0 - 2 " 

Par defaut, au demarraga du systeme, le nombre de decimales eat 2. 
Les arrondia sont faits a la valeur inferieure. 

Exemples : 

5 REM PROGRAMME DE CALCUL 

10 INPUT " 0PERANDE 1 ? " ; 012 

20 INPUT " 0PERANDE 2 1"; 022 

30 INPUT " 0PERANDE ( + /-) " ; 0P2 

40 LET " = "+ 012 + 0P2 + 0P2 

50 PRINT " RESULT AT = ";WW2 

] LEili + 2.2 " : PRINT WW$ 
5.2 

] LET "to - 2 " 

] LET " = 3 . 23't + 1.001 " : PRINT WW$ 
4.23 

] LET " = 3.1234 " : PRINT WW$ 
3.12 

] LET " = 12345678901 23456789. 00000 " 
1234567890123456789 



- 56 - 

Le resultat dans WWS est toujours presente sous la forme la mains eouteuse 
en place. 

: vide 
1.20 i 1.2 



6 - 5 - SAISIE ET AFFICTIAGE 



Cet outil de calcul ne serait pas utilisable s'il n'etait complete par les 
fonctions complementaires de salsle et d'affichage. 
Ces fonctions existent dans le M/DDS 6502. 

Oans un masque, definissez une zone comme : 

" A2 + " 

Elle sera consideree comme un numerique au niveau de la saisie, et comme 
alphanumerique pour le stockage. 

L'affichage se fait en format gestion, cadre a droite en decimals fixe. Le 
nombre de decimales est fixe par le rneme ordre. 

LET "0 - n " 

Note : pour l'affichage gestion. se reporter a ce chapitre dans la documen- 
tation . 



- 57 - 



6 - 6 - AZERTY 



Do nombreux utiiisateurs , habitues aux machines a ecrire, demandent un clavier 
du meme type sur leur rnicro-ordinateur. 

Le M/DOS 6502 perrnet de resoudre ce probleme pour 1 'utilisation de l'ordre : 
LET " Z " 

qui echange la signification de certaines touches pour obtenir l'ordre clas- 
sique AZERTY. 

Pour cela, il est necessaire d'echanger sur le clavier les capuchons des 
touches : 

A Q 
W Z 
N 

et d'ajouter l'ordre LET " Z " dans le programme HELLO qui est execute a 
la mise en route de votre systeme. 



Remarque t Si vous enfonce? accidentellement la touche RESET, faites 

CTRL/C RETURN 
LET " Z " 

pour reprendre la main. 



Attention ! pour taper LET " Z " faites W au lieu de Z, dans ce cas. 



- 58 - 



6 - 7 - EXECUTE 

L' execute est une fonction issue du langage APL qui permet de construire 
et d'executer par programme un certain nombre d' instructions , 

be CI/DOS 6502 vous offre cette possibilite. 

L' operation se fait en deux temps ; 

1) Enregistrament des instructions par : 

LET " > " pour entrer la texts 

LET " + " pour en ajouter 

Note : II faut cemplacer les notes (") par CHR2 (34) et finir les lignes 
par CHRZ (13) sauf la derniere. 

Exemple : 

LET " > HOME : VTAB10 " + CHR2(13) 

LET " + PRINT " + CHRZ (34) + " B0NJ0UR " 



2) Execution : pour executor ces instructions, faites: 
LET " ! " ; END 
Apres 1' execution, le buffer est vide. 

Verification : 

L'ordre LET " V " permet de relire le texte des ordres enregistres par 
LET " >•.." et LET " + ..." sans les detruire, 

Dans notre exemple apres le premier temps, 

LET " V " 
HOME : VTAB10 
PRINT " BONJQUR 

Remarque : Les ordres sont executes comme s'ils etaient tapes en mode direct. 
En particulier les erreurs s 'af f icheront meme si un ordre 
ON ERR GOTO a ete insane dans le programme. 



Exempl e : Programme chargeant et listant un certain nornbre de programme* 
donnes par des DATA, ( }J indique la fin de la lists.) 

5 LET " > " : REM VIDE LE BUFFER 
10 READ N$ : IF N$ - THEN 68 
20 LET " + LOAD " + CHRtCW + N$ + CHR$(13) 
30 LET " + PRINT " + CHR$(3'0 + N$ + CHR$(13) 
1(0 LET " + LIST " + CHR$C13) 
50 GOTO 10 

60 LET " + PRtt0 : NEW 
70 PR#2 : LET " ! " 

90 DATA UTIL, AUTO COPIE, DEMO, HGR,# 



- 58a - 



3) L ' execute et ses realisations 



L'ordre LET " ! " du M/DOS permet de modifier 1' entree clavier. 
Lea caracteres ne sont plus lus au clavier mais dans un buffer 
du DOS. 

EXEMPLE : 10 LET n > xvz » 

20 LET " + ABC " 

30 LET " ! " 

40 INPUT A$ 

50 ? A$ 

RUN 

XYZABC 

Les caracteres peuvent Stre relus par GET ou INPUT. 



APPLICATIONS 



1) Passage de parametres d'un programme a un autre : 

Vous desirez passer les variables A$ et B$ . Faire : 

20 LET " > " + A$ + CHR$ (13) + B$ 
30 RUN " TOTO " 



TOTO LET " ! " 

INPUT A$ ,B$ 



- etc . . . 

Lorsque tous le buffer a ete relu, le GET redevient normal. 



2) Lecture des dictionnaires 



10 LET " ftO,F,F,FILE " 
20 LET 11 E,F " 
30 LET " ! " 

40 GET A$' : IF A$ = " " THEN 
? " FICHIER RELATIF " 



Dans cet exemple, on teste le premier caractere du dictlonnaire , 
pour savoir si le fichier est relatif. 



- 58b - 



3) Execution d'ordre BASIC 



On desire executer une formule de calcul saiaie au clavier. 



10 INPUT " Y - ? " ; A$ 

20 LET " > Y = " + A$ + " IGOTO 100 " +CHR$(13) 
30 LET " + GOTO 200 " 
£f0 END 

100 ? " RESULTAT " Y : GOTO 10 
200 ? " ERREUR " : GOTO 10 

Le END rend la main au BASIC qui execute l'ordre. 
Les lignes tapees sont equivalentes a : 

] Y = C ) : GOTO 100 

] GOTO 200 

En cas d'erreur, la premiere ligne n'est pas executer entierement, 
et le GOTO 100 ne se fait pas. 



4)Emp§cher les demandes clavier pendant le CATALOG 



LET " * " demande d'appuyer sur une touche s'il y a plus de 20 
lignes. Pour empecher ce phenomSne, faire : 

1.0 LET " > AAAAAAAA 
20 LET " ! " 
30 LET " # " 
!f0 I NtfjS 

Le IN interroge le EXECUTE car on nia salt pas s'il ne reste pas 
de " A " a prendre. 



- 59 - 



C H A P I T R E VII 



param£trage 



du m/dos 6502 



La carte M/DOS 6502 presente un certain nombre de particularites 
au niveau de son implantation et de son adaptability. 
Elle est theoriquement adaptable : 



- a toute carte 80 colonnes 

- a tout terminal connects en lieu et place de la 
video et du clavier d'origine ayant l'ecran projete 
en memoire 

- a toute memoire de masse qu'elle peut gerer par tran- 
ches allant jusqu'a 16 mega octets. 



7 - 1 - IMPLANTATION 



La memoire de 1' APPLE II se decompose de la fagon suivante : 



#BFFF 
0CFFF 
^F7FF 
#FFFF 



RAM 



Entrees / sorties 
BASIC (ROM) 



Moniteur 



- 60 



Une particularite essentielle de 1 'APPLE II est la possibilite de 
deconnecter les ROM Basic et MONITEUR pour les remplacer par 
d'autres memoires externes. 

C'est cette possibilite qu' utilise la carte M/DOS 6502. Les 
programmes assembleurs du DOS sont done en paralldle avec le 
Basic et le Moniteur. Le Basic et le Moniteur occupent ensemble 
une place memoire egale a 12K. Le M/DOS 6502 occupe lui 16K. 
II a done fallu decomposer cet espace de 16K en deux parties 
elles-m§mes superposees. 

&D000 $E000 0F000 

BASIC (12K) I — — — ■* 

DOS (12I<) ' — — "* 

DOS (4K ) | , — < 



Les commutations entre le BASIC et les diffSrentes pages du 
M/DOS 6502 se font par un logiciel integre dans la carte. 
Cette operation est transparente pour 1 ' utilisateur , ce qui 
signifie que pour lui, le Basic et le DOS fonctionnent sans 
qu'il ne s'apercoive de rien. 



7 - 2 - PRINCIPE DE LA COMMUTATION 



La commutation se fait de la facon suivante : 

Notation PAGE = lere page de 4K de &D000 a #DFFF du M/DOS 6502 
PAGE 1 = 2eme page de 4K de $D000 a #DFFF du M/DOS 6502 
RACINE = reste du DOS (8K) de 0E000 a FFFF 
BASIC = 12K de 0D000 a 0FFFF 



Ces quatre parties contiennent bien sir des informations diffe- 
rentes bien qu'elles soient aux mgmes adresses. 



- 61 - 



Soit X le nuraero du slot oil la carte a ete installee. 
Des commutations se ijont en ecrivant 3 l'adresse 0CXFF 



LDA ft $80 

STA#CXFF BASIC 

LDA tt $00 

STA^CXFF PAGE + RACINE 

LDA ft 001 

STAgCXFF PAGE 1 + RACINE 



7 - 3 - RESET ET INTERRUPTIONS 



La mise en route ou le RESET se font dans les ROM de la carte 
M/DOS 6502. On programme s'y trouve done pour gerer les inter- 
ruptions . 

RESET : le programme ramene au RESET de la ROM MONITEUR de 

1 'APPLE. La presence de la carte est done tranparente. 



NMI : L' interruption NMI ramene a 1 ' indirection habituelle en 
page #3 



IRQ : Cette interruption sert a la fois aux interruptions exte- 
rleures masquables ainsi qu'au BREAK logiciel. 
Lorsque la carte est connectee et selectee (en page et l) 
le BREAK est impossible. L 1 IRQ ramene done toujours a 1 ' in- 
direction prevue a cet effet en page #3. 



IMPORTANT : Si la carte est selectee, ce sont les vecteurs d' in- 
terruption de la carte qui servent; si elle est dese- 
lectee (mode BASIC) , jpe sont les vecteurs d'origine 
(ROM MONITEUR) . Cependant, au moment d'une interrup- 
tion, (sauf RESET), l'etat reste inchangS et vous 
pouvez aussi bien etre en mode BASIC qu'en mode DOS. 
Si vous desirez dans vos programmes d ' interruptions , 
utiliser des fonctions MONITEUR vous devez : 



- 62 - 



1) chercher en quel etat vous §tes. Pour cela, lisez 
un octet dans la page #DXXX a un endroit ofl les 

3 versions sont differentes. 

2) commuter vers BASIC par : 

LDA 080 
STA 0CXFF 



3) avant de finir 
besoin est, la 

LDA 
STA 



1 ' interruption ; 
PAGE prec6dente 

#00 ou 001 
0CXFF 



reconnectez, si 
par : 



7 - 4 - L ' OCCUPATION RAM DU M/DOS 6502 



Pour fonctionner, le M/DOS 6502 utilise les zones RAM suivantes : 

a) .#0300 - JS03CF 

b) .$$250 - #02FF 

La zone a) en page 3 ne doit pas Stre modifiee. Par contre, la 
zone en page 2 est oomposee de variables de travail et peut etre 
detruite entre deux ordres. (Elle l'est d'ailleurs car cette zone 
sert egalement de BUFFER pour INPUT.) 

D 1 autre part, le DOS a besoin d'autres places en RAM pour : 



1) Creer des objets en memoire : 



- descriptifs de disques 

- descriptifs de fichiers 

- masques 

Cette zone sera appelee BUFFERS du DOS. 



2) Acceder aux peripheriques 



II fiaut prevoir en RAM les programmes permettant de 
lire, ecrire ou formatter un disque. Dans le cas 
des lecteurs 5 pouces, il s'agit du programme RWTS 
fourni avec les disquettes. 



- 63 - 



Ces deux zones RAM ne sont pas en place fixe comrae celle en 
page 2 et 3 . L' utilisateur choisit lui-meme suivant la version 
desiree leur implantation. En page 3, on trouve un certain nombre 
de pointeurs indiquant au DOS i'endroit ou se trouvent ces zones. 



7-5 



POSITION DES BUFFERS DU DOS 



Note : lies pointeurs sont tou jours dans 1 ' ordre poids fort, 
poids faible. 



£300 


- £301 


#303 


- £304 


0305 


- #306 


£307 


- £308 


Pour 


mettre 



encore occupee dans les buffers) 
fin des buffers du DOS 



et maxi que vous reservez a ces adresses et placez-les en : 

£300 - #301 
£307 - £308 

placez en £3,03 - £304 'les memes valeurs qu'en £307 - #308 

placez en £30 5 - #306 l'adresse correspondant a celle indiquee 
en £300 - #301 plus #124. 



#300 


90 


£302 


00 


£302 




£303 


B6 


£304 


00 


£305 


91 


#306 


24 


#307 


B6 


#308 


00 



#9000 



} 

) 

^ #9124 = #9000 + #124 
j. £B600 



Dans cet exemple, les parties reservees aux BUFFERS du DOS s'e- 
tendent de : 



a #B600 (inclus) 



- 64 - 



7 - 6 - LES ACCES AUX PERIPHERIQUES 



Le M/DOS 6502 permet de gerer simultanement des peripheriques 
de types differents. Pour decrire ces peripheriques, un certain 
nombre de tables sont prevues . Ces tables indiquent pour chaque 
peripherique : 

- le nombre de pistes 

- le nombre de tetes 

- le nombre de secteurs 

- l'adresse du programme permettant d'y acceder 



M/DOS 6502 permet d'utiliser dans une meme configuration 6 peri- 
pheriques . 

Par exemple : - Un disque dur a 3 drives 
- 4 lecteurs 5 pouces 

Pour chaque peripherique (numerote de a 5) , dont nous appelle- 
rons n le numero, indiquez : 

en #310 + n le nombre de pistes - 1 
en #316 + n le nombre de tetes 
en #31C + n le nombre de secteurs 

en 0322 + 2 n l'adresse (poids fort, poids faible) du programme 
d'acces (HANDLER) 

Si l'adresse correspondant au HANDLER est remplacee par $00, 
le peripherique sera considere comme inexistant. 



7 - 7 - CARACTERISTIQUES DU PROGRAMME D'ACCES AU PERIPHERIQUE 



Le programme gerant le peripherique doit Stre capable de lire, 
ecrire ou formatter un disque d'apres les parametres suivants 

0309 numero du peripherique (permet de differencier 
les actions pour plusieurs peripheriques pour 
lesquels l'adresse du HANDLER est la meme) 



030A piste choisie 



$30B tete choisie 



- 65 - 



secteur choisi 

#'30D commande : 1 - lecture 

2 - ecriture 

3 - formattage 

#30E poids fort de l'adresse du bloc 
#3$F poids faible de l'adresse du bloc 



II est inutile d'effectuer des controles de validite, ceux-ci 
sont faits par le M/DOS 6502 avant de faire appel a ces fonc- 
tions. Vous trouverez ci-apres les versions permettant de faire 
fonctionner les disquettes 5 pouces APPLE 110K ou 140K en uti- 
lisant le programme RWTS. 



IMPORTANT : En ce qui concerne le formattage, il est necessaire 
que tous les secteurs puissent etre lus , meme s'ils 
n'ont pas ete remplis. En consequence, vous consta- 
terez que dans la version 11 OK, le formattage est 
suivi de 1' ecriture de tous les secteurs de la dis- 
quette, car, en formattage 110K, la lecture est im- 
possible sans ecriture prealable. 
Le cas se presente egalement pour les cartouches 
du disque CII D140. 



- 66 - 







3 9^ 


0001 


i i nnii 


lor 




a 




A ft i\ 1 


0000 








GO 1 - 1 


b700 








0003 


b 700 








0004 


b 7 








0005 


b 700 








0006 


b700 








000? 


b?00 








0008 


b?00 








0009 


b700 








0010 


b700 








001 1 


b700 








0012 


b700 








001 3 


b700 








0014 


b700 








001 5 


b700 


a2 


60 




0016 


b702 


ad 


09 


03 


0017 


b705 


c9 


02 




0018 


b707 


90 


02 




001 9 


b709 




50 




0020 


b70b 


8a 


e9 


b7 


002 1 


b70e 




Od 


03 


0022 


b71 1 


8 a 


f4 


b7 


0023 


b714 




Oa 


03 


0024 


b717 




ac 


b7 


0025 


b7 1 a 


32 


01 




0026 


b7 lc 








0027 


b7 Id 


90 


01. 




0028 


h 7 1 "f 


pfl 






002? 


b 7 2 


8a 


aa 


b? 


0030 


b723 


ad 


Oc 


03 


0031 


b 7 26 


3d 


ad 


b7 


0032 


b729 


a9 


00 




0033 


b 7 2 b 


8d 


ab 


b7 


0034 


b 7 2 e 


ad 


Oa 


03 


0035 


b731 


8d 


ft 


b7 


0036 


b 73 4 


ad 


Of 


03 


0037 


b737 


8d 


fO 


b7 


0038 


b73a 


39 


b7 




0039 


b73c 


aO 


e8 




0040 


b73* 


20 


b5 


b7 


004 1 


b 7 4 1 


bO 


08 




0042 


b 7 4 3 


ad 


Od 


03 


004 3 


b 7 4 6 


c 9 


04 




0044 


b 7 4 8 


f 


02 




004 5 


b7 4a 


1 8 






0046 


b7 4b 


60 






0047 


b74c 








0048 


b74c 


a 9 


00 




0049 


b7 4e 


Sd 


8f 


b7 


0050 


b75t 


39 


00 




0051 


b753 


8d 


8a 


b7 


0052 


b756 


39 


02 




0053 


b758 


8d 


f 4 


b7 


0054 


b75b 


a9 


OB 




0055 


b75d 


8d 


fO 


b7 



Una 



s = tb700 

driva = $309 
cylind= *30a 
tata = $30b 
sactau= *30c 

co«man= $30d ; 1 2 on 4 

adblc = $30a ladressa du bloc poids fort / poids faibl 



; accas au parifariiua ( varsion 110k ) 
diab=*b7a8 





Idx 


tit 60 




Ida 


dr i va 




CIlIP 


112 




bcc 


vrwtsl 




Idx 


11*50 


vrwtsl 


stx 


di ob+1 




IdK 


conusn 




St« 


diobfl2 




ld:< 


cal i nd 




5t;< 


dlob+4 




Idx 


111 




.byte $4a 




bcc 


rwts07 




i nt< 




ruts07 


stx 


diob+2 




Ida 


sacteti 




st.a 


d i ob + 5 




Ida 


HO 




5t3 


diob+3 




Ida 


adblc 




sta 


diob+9 




Ida 


adblc+1 




sta 


diob+8 




Ida 


lt>di ob 




Ida 


IKdiob 




i sr 


*b7b5 




be 5 


vrwOOS 




Ida 


codiaan 




CdtP 


It 4 




ba-i 


vrwOOl 




clc 




vrwOOS 


rts 




vrwOOt 


Ida 


ItO 




sta 


calcal 


vru004 


Ida 


110 




sta 


sac sac 


vrwOO.3 


Ida 


112 




sta 


diob+12 




Ida 


118 




sta 


d i ob + 8 



icalcul du slot 



> Isr a 



! voludia 



; format ? 



- 67 - 



rwts. .... .pads 0002 



1 i n e M 


X DC 






1 i ne 






5 6 


b 7 6 


8d 


f 1 


b7 




s ta 


d i ob+9 


V V vf / 


U 7 X 1 


ad 


8f 


b / 




Ida 


cylcyl 


V/ \) \J o 


U 1. L 

u t 66 


8d 


ec 


b7 




sta 


d i o b + 4 


V V *J 7 


lil AO 


etcf 


8e 






Ida 


secsec 


Art! A 
V W O V/ 


v / oC 


8d 


ad 


b7 




sta 


d i ob+5 


AAA 1 


h 7 it 


a? 


b7 






Ids 


lt>d i ob 


a a jd n 


b77 1 


a0 


*.8 






Ida 


IKd i ob 


vH/o 3 


b 7 7 3 


20 


b5 


b7 




j sr 


*b7b5 


0064 


b776 


bO 


15 






bcs 


vrw002 


0065 


b778 




8s 


b7 




i nc 


secsec 


0066 


b77b 


acl 


8e 


■b7- 




Ida 


secsec 


0067 


b77e 


c9 


Od 






CdlP 


H13 


0068 


b780 


90 


dt 






bcc 


vrw003 


006? 


b78? 




8f 


b7 




i nc 


cylcyl 


A A 7 A 


U 7 on- 


3d 


8f 


b7 




Ida 


calcyl 


AA"7 1 
UU / 1 


P / bo 


c9 


23 






CJfllP 


W35 


A A 7 '1 




90 


c5 






bcc 


vrwOO'i 


0073 


b78c 


18 








clc 




0074 


b78d 


60 






vrwOOa 


rts 




0075 


b78* 














0076 


b7-8*- 


00 






-secsec 


.byt 


e 


0077 


b78f 


00 






; cylcyl 


.byt 


e 


0078 


b79G 








r ' 






0079 


b7?0- : - 










.end 



errors = 0000 



symbol table 



suwbo I 
adblc - 
diob 
sec ten 
vrw003 



vs lue 
030e 
b7e8 
030c 
b7S6 



cowman 
dr i ve 

-tete 

vrw004 ! 



030d 
0309 
030b 
b751 



c y I c a I 
rwts07 
vrwOOl 
vrwOOS 



b78f 
b720 
b74c 
b74b 



cylind 030a 

secsec b78e 

vrw002 b78d 

vrwtsi b70b 



end of assembly 



- 68 - 



7 - 8 - DESCRIPTION DE LA GESTION D' ECRAN 



La carte M/DOS est prevue pour pouvoir adapter la gestion de 
masques a n ' importe quel type de carte 80 colonnes ou terminal 
intelligent. Pour cela, un certain nombre de parametres sont a 
mettre en place pour decrire l'ecran. 

#3 68 adresse de l'ecran (poids fort, poids faible) 

03 6A longueur de l'ecran (poids fort, poids faible) 

03 6C nombre de caracteres par lignes 



Un certain nombre de fonctions sont egalemont a creer pour 
gerer l'ecran. Elles utilisent des pointeurs en page notes : 

W (#DB,#DC) 
WW (#DD,0DE) 

Le premier (VV) indique la position du curseur (poids faible, 
poids fort) . 

Le second (WW) indique le nombre de caracteres separant le curseur 
du premier caractere de l'ecran (poids faible, poids fort). 
WW evolue done entre et la largeur de 1' Scran - 1. 
La position du curseur peut etre fictive ou reelle. Dans la ver- 
sion 4 colonnes fournie en standard, VV correspond a 1' adresse 
reelle en memoire de 1' octet se rapportant au caractere de l'ecran. 
La valeur initiale de VV (caractere en haut a gauche de 1' Scran) 
doit correspondre a la valeur indiquee dans le parametre 
" adresse de l'ecran ". 

A chaque operation concernant les masques, le M/DOS 6502 initia- 
liser VV a cette valeur et WW a zero. 

D' autre part, le M/DOS 6502 doit savoir se deplacer sur cet 
ecran qui lui est inconnu. II doit pouvoir aussi lire ou ecrire 
sur cet ecran. II doit finalement pouvoir convertir les carac- 
teres lus en ASCII et inversement. 

Nous noterons : 

CODE ECRAN : la valeur qu'il faut ecrire sur l'ecran 
un caractere dont on connait le code 
ASCII. 

II faut done fournir au M/DOS les fonctions suivantes : 



- 69 - 



AVANCE : calcule les nouvelles valeurs de VV et WW lorsque l'on 
avance de 1 caractdre sur l'ecran. Le carry sera egal 
a 1 en sortie si l'on depasse la fin de l'ecran. 
(WW = longueur d' ecran) (la longueur de la zone est en 
NC = #26A sur deux octets poids fort, poids faible) . 



RECDLE : calcule les nouvelles valeurs de VV et WW lorsque l'on 
recule de 1 caractere sur l'ecran. Le carry sera egal 
a 1 en sortie si l'on depasse le debut de l'ecran. 
(II s'agit du cas oil (WW) = 9> en entrant dans le programme 
RECULE. ) 

INCAR •. renvoie dans 1 ' accumulateur le code ecran du caractere 
situe en VV. 



OUTCAR : ecrit le caractere dont le code ecran est dans 1' accu- 
mulateur a l'endroit du curseur pointe par W. 



E A : convert.it dans 1 ' accumulateur un code ecran en code 
ASCII. 



A E •: convertit dans 1 ' accumulateur un code ASCII en code 
ecran. 



INVERS : convertit dans 1 ' accumulateur un code ecran en code 
ecran du caractere sur fond blanc correspondant. 



FLASH : convertit dans 1 ' accumulateur un code ecran en code 
ecran du caractere clignotant correspondant. 
(Si cette fonction n'existe pas, remplacez-la, par exent- 
ple, par INVERS.) 



Vous devez ecrire les programmes assembleurs realisant ces fonctions 
et les implanter en memoire. Pour indiquer au M/DOS 6502 leurs po- 
sitions remplissez 1' ensemble des JMP prevues a cet effet. 



- 70 - 



#36F 
#372 
#384 
#387 
#378 
#375 
#37E 
#381 



JMP FLASH 



JMP INVERS 



JMP AE 



JMP OUTCAR 



JMP EA 



JMP INCAR 



JMP RECULE 



JMP A VANCE 



NOTE : Pour simplifier votre programmation , sachez que lorsque 
le M/DOS 6502 se branche 3 1 1 INCAR ou OUTCAR, le regis- 
tre y est nul. Done, si VV est l'adresse reelle du carac- 
tere, on pourra choisir : 

INCAR LDA (VV) , y 
RTS 

OUTCAR STA (VV) , y 
RTS 

que l'on pourra placer directement a la place des JMP 
eorrespondants pour accelerer, car dans les deux cas, 
la longueur est 3 octets. Ci- joint la version 40 colonnes 
de base contenu dans la ROM. 



IMPORTANT : Lors de l'appel de ces fonctions, le M/DOS 6502 ne 

reconnecte pas le BASIC (pour gagner du temps) , done 
vous ne pouvez pas : 



- utiliser les fonctions moniteurs 

- tester vos programmes en utilisant 1 1 instruction 
BRK (code 000) . 

Essayez d'ecrire des programmes les plus perfor- 
mants possibles car dans l'exemple d'une insertion 
de caracteres sur tout l'ecran en 80 colonnes, on 
aura : 

- 2 000 appels a A VANCE 

- 2 000 appels a RECULE 

- 2 000 appels a INCAR 

- 2 000 appels a OUTCAR 



- 71 



ready . 



1 ft (1 ft 

J.UVv 




vers i on de base 


J. v .1 W 








i ? 




s e ^ o c 




1030 




j n v 4 c 




10 4 




f ls40c 




1050 




S*t40c 




1060 




es40c 




1070 




av40c 




1080 




rec 40c 




1090 








1 1 ftft 








1 1 1 ft 

A. L l V 




asc i i - ecrsn 


1 1 oft 








1 1 7ft 




se40c and 


1163 


1 1 A ft 




ora 


11128 


1 1 ^ft 




rts 




1160 








1170 


! i nverse v 1 deo 


1180 








1 1 VO 


inv40c and 


1163 


1200 




rts 




1210 








1220 




flash video 


1230 






124 


f la40c and 


1163 


1250 




ora 


H64 


1 9 Aft 

J.JL.OV 


rts -p^vr- 




1270 






-1 tt-G u 




S e t u n ar ac t e r e . 


JL *£ 7 V 








1300 


3et40c r ,ldy 


110 ..,„,: 






■■■ ■ j Br 


i near 


1320 




. sta 


n4 


1330 




Jsr 


flash 


1340 




j sr 


outcar 


1350 


<»i?l 




1360 


eti5 bit 


49152 


1370 




hpl 


Set 


1380 




- • • Ida 


49152 • 


1 T<?ft 




bit 


4916B 


1410 


-sfeiwisr.-and. 


Iti7f 


1 A 'J ft 

1 *t 4t. V 




tflX 




1 /. ft 




r .Ida 


n4 


i 't *t y 




■i sr 


outcar 


■j Z tr ft 




t:ca 




1460 




rts 




14 70 








1 Aftft 

J. *t O V 




rconversion e a 


1490 








1500 


6340c and 


B127 


1 ^1 ft 






1(32 


1520 




bcs 


*t<i36 


± JO V 




ora 


tt64 


1 ^Aft 


eti36 rts 




1550 








1560 








1570 








1580 




a vane e /recule de 


1590 








1600 


9 v 4 c Ids 


ww+1 



- 72 



1610 




r nip 


nc 


1620 




bcc 


a vol; 


1630 




Ida 


WW 


1640 




CHIP 


nc + i 


1650 




bcc 


avok 


1660 




rts 




1670 


avok 


Ida 


VV4 1 


1680 




C III P 


It 7 


1690 




brie 


av 1 


1700 




Ida 


vv 


1710 




chip 


It$a7 


1720 




bei 


av2 


1730 




CfllP 


Htcf 


174 




bne 


avi 


1750 


3V2 


sac 




1760 




sbc 


(1216 


1770 




sis 


vv 


1 780 




Ida 


vv+1 


1790 




sbc 


«3 


1800 




sta 


vv+1 


1810 




a vl 


Ida vv 


1820 




and 


1(127 


1830 




C. (IIP 


(1*27 


1840 




be"i 


av3 


1850 




cdip 


(l*4f 


■1860 




bei 


av3 


1870 




ClilP 


(1*77 


1880 


-■ - - ■ - 


•fairs 


a v4 


1890 


sv3 


Ids 


vv 


1900 




etc 




1910 




sdc 


(188 


1920 




sta 


vv 


1930 




bcc 


av4 - 


1940 




i nc- 


vv+1 


1950 


8\'4 


i nc 


WW 


1960 




bna 


*t<i21 


1970 




i nc 


ww + 1 


1980 


et<i21 


i nc 


vv ■ 


1990 




bne 


ets-7 


2000 





1 nc 


vv+1 


2010 


ati7 


clc 




2020 




rts 




2030 


j 






2040 


! recul 


e de 


1 caractere 


2050 


} 






2060 


rec40c 


IdK 


ww+1 


2070 




bne 


r eok 


2080 




1 dx 


WW 


2090 




CP !< 


(11 


2100 




bne 


reok 


211 




Sec 




2120 




rts 




2130 


reok 


Ida 


vv + 1 


214 




C (IIP 


1(4 


2150 




bne 


re.l 


2160 




Ida 


vv 


2170 




ClilP 


11*28 


2180 




bes 


re 2 


2190 




C fllf 


(($50 


2200 




bna 


rel 


2210 


re2 


clc 




2220 




adc 


((128 



2230 




sta 


vv 


2240 




Ids 


vv+1 


2250 




adc 


H3 


2260 




St.3 


vv+1 


22 70 




•i flip 


r*4 


2280 


re J. 


Ids 


vv 


2290 




and 


tf 127 


2300 




bes 


re3 


2310 




CIlIP 


IU28 


2320 




bei 


re3 


2330 




C (IIP 


II 150 


2340 




bne 


re4 


2350 


re3 


Ida 


vv 


2360 




siac 




2370 




sbc 


1188 


2380 




sis 


vv 


2390 




bcs 


re4 


2400 




dec 


vv+1 


2410 


re4 


dec 


WW 


2420 




Idx 


WW 


2430 




CPK 


11255 


2440 




bne 


et<U2 


2450 




dac 


ww+1 


2460 


etil2 


dec 


vv 


24 70 




Id;. 


vv 


2480 




CPX 


H255 


24 90 




bne. 


,6tn9 


2500 




dor 


vv + 1 


2510 


et.q-9-, r - 


rlc 




2520 




rts 




2530 








2540 









ready w 



- 74 - 



7 - 9 - MODIFICATIONS DE L ' ENTREE CLAVIER 



'L'acces clavier dans les saisies par masques se fait par 1 ' inter- 
mediaire d'une indirection en page 3. Pour modifier cette fonc- 
tion, placez dans 1 ' indirection l'adresse de votre programme 
(poids faible, poids fort) 

#37B JMP GET 

Le programme doit renvoyer dans 1 ' accumulateur soit le code 
ASCII, soit le code ASCII + 128. 



NOTE : La fonction AZERTY pourra etre utilisee quelque soit la 
fonction GE$T que vous avez creee . 



7 - 10 - AJOUT DE NOUVELLES COMMANDES AO" M/DOS 6502 



Vous pouvez , si vous le desirez, a j outer vous-m§me des fonctions 
au DOS. Pour cela, 11 existe une indirection sur deux octets 
(poids faible, poids fort) indiquant l'adresse du programme ana- 
lysant les commandes. Si vous voulez ajouter une commande : 

1) sauvez l'adresse precedemment placee dans cette indirection. 

2) mettez l'adresse de votre programme. 

3) 5 la fin de 1' execution de votre programme, si la commande 
ne vous concernait pas, rebranchez-vous a l'adresse que vous 
avez sauvee si elle n'est pas nulle. 



Cette inethode permet de faire fonctionner ensemble plusieurs pro- 
grammes ajoutant de nouvelles commandes. 

NOTE : Dans la version de base, 1 1 indirection contient 0,0. 
Dans ce cas, le M/DOS 6502 ignore 1 ' indirection. 



L'adresse de 1 1 indirection est : 

- $38A poids faible 

- #380 poids fort 



- 75 - 



Lorsque vous prenez la main dans votre programme t 

- 1 1 accumulateur contient le premier caractere de la 
comma nde 

- AA(#272) contient la longueur de 1 1 instruction 

- yy(#El,#E2) contient l'adresse de 1 1 instruction 

- le registre y pointe vers le caractere en cours dans 
1 ' instruction par rapport a yy. 



4 fonctions peuvent vous etre utiles : 

JSR CAR AC : - renvoie dans 1 ' accumulateur le prochain 

caractere non blanc de la commande et met 
a jour y. 

- si le carry est 1 , on a atteint la fin de la 
commande . 



JSR SEPARA : - renvoie le prochain caractere non blanc de la 
commande suivant un separateur. 
(, : -) dans les memes conditions. 



JSR VALEUR : - renvoie une valeur sur 1 octet lu dans la com 
mande en decimal a partir de 1' octet en cours 



JSR GETHX1 : - idem pour une 
sous la forme 
En sortie X = 
A = 



valeur sur deux octets salsls 
#XXXX. 

poids f aible . 
poids fort. 



EXEMPLE : La commande est : LET" H , valeur , une lettre , hexadecimal " 

LET"H,12,A,025F0" 



cmp 
bne 
jsr 
bcs 
sta 
jst 
bcs 



'H 

NON 

SEPARA 

ERR 

VAL 

SEPARA 

ERR 



HON 



sta 
jsr 
bcs 
jsr 
stx 
sta 
jmp 
rts 



LETTRE 

SEPARA 

ERR 

GETHX1 

HEXA 

HEXA + 1 

OK 



ready . 



1000 




C P u 


as 


10:1.0 




bcc 


*e72 


102 




rts 




1030 


*e72 


Ida 


( y y ) r \s 


10 4 




i nH 




1050 




C (ll P 


tr 


1060 




hen 


carac: 


1070 




C I C 




10 BO 




rts 




1090 


; 






1 100 


; 






1110 


sap ara 


Jsr 


carac 


1 120 




bcc 


.aellO 


1130 




rts 




1 140 


eeBO 


C III P 


If 


1150 




bs=i 


carac 


1.17)0 




C (ll P 


ft '-- 


1.170 




b*<i 


c erat 


1.1. BO 




CfflP 


t(58 


1190 




beq 


c arac 


1200 




CHIP 


ft 4 4 


121.0 




bat 


c arac 


1220 




line 


S6P 3("3 


1230 


; 






1240 


; 






1250 


va 1 eur 


C MP 


1150 


1260 




bcs 


val. 1 


1270 




CMP 


(148 


1280 




bcc 


v a 1 J. 


1290 




s be 


tt 4 B 


1300 




sta 


n u a c c 


131.0 


va333 


■isr 


carac 


1320 




bcs 


va!2 


1330 




CMP 


It58 


1340 




bcs 


va!2 


1350 




C MP 


1)48 


1360 




bcc 


val 2 


137 




a be 


1148 


1380 




sta 


aaM 


1 3 9 




1 da 


nuscc 


1400 




C 111 P 


it 2 6 


1410 




bcs 


val.1 


1420 




asl 


a 


J 430 




asl 


£1 


14 40 




asl 


a 


J 450 




adc 


nuacr 


1460 




a lie. 


n ll a c c 


14 70 




scic 


a 3 + 1 


14150 




bcs 


v a 1 1 


14 90 




sta 


nu acr 


1500 




j hip 


va333 


1510 


vail. 


sec 




1520 




rts 




1530 


V3l2 


clc 




154 




rts 





ready „ 



- 77 - 



Dans le cas oil 1 ' instruction n'est pas pour vous : 

- retourner a 1 ' indirection precedente si celle-ci 
existait . 

- sinon, faites simplement RTS 



Dans le cas oil 1 ' ordre est pour vous : 

- exScutez celui-ci 

- puis faites : - pla 

- pla 

- RTS 

pour terminer 1' ordre correctement. 



- 78 - 
ANNEXE 



1000 ; 
1010 ! 



adr 



1020 i 

1030 zwdeb = $300 

1040 dimdef = $302 

1050 zt = 4303 

1060 Ini = $305 

1070 zf = $307 

1080 drive = $309 

1090 cal ind = $30a 

1100 t,ete = $30b 

1110 secteu = $30c 

1120 cowman = »30d 

1130 sdblc = $30a 

1140 ! 

1150 ! tables das drives 

1160 f 

1170 tcBlm = $310 

1180 ttetem « $3.16 

1190 tsectm = $31c 

1200 trwts = »322 

1210 U«p* = $32e 

1220 ; - 

1230 .isrmon = $334 

1240 ! 



- isr 

Ida 

- coriibl sta 
. rts 
cowbas Ids 
, , bne 



1250 ; - • 

1260- ; 

1270 i 
1280 ; 
1290 J -■. 
1300 ; - 

1310 slotcd = .i srinon+10 
1320 pasecd = .i srmon+7 
1330 combl =.isrwon+8 
1340 cornbas = -i srmon + 12 
1350 ; 

1.360 aplexe = 4344 - 
1370 f 
1380 ; ■ 

1390 ! indirection retour 

1400 f 

1410 -impsy = J 34 a 
1420 ; 
1430 ; 



[012345 „ 

;6789ab 

icdefOl „. 

; 234567 89abcd 

!*f0123 .. 

i -isr combes 
$0000 
HO 

ic200 

II $80 

combl 



sasteme 



1440 


; 






1450 


;caracteres ecran 


utilises 


1460 


! 






1470 


zblanc = 


= $350 


! 160 


1480 


zap os t - 


= $351 


J 162!" 


14 90 


z.etoil = 


= $352 


! 170!'* 


1500 


zzero ~ 


= $353 


; 48; '0 


1510 


zneuf 5 


= $354 


i 1851 '9 


1520 


zpIus 1 


= $355 


! 171!'+ 


1530 


z.adres : 


' $356 


! 128! 'ft 


1540 


zdollr = 


= $357 


! 164!'$ 


1550 


zpourc : 


= $358 


! 165! '•/. 


1560 


zslash : 


-• $359 


! 175!'/ 


1570 


z infer = 


- $35a- 


! 188! '< 


1580 


z s u p e r - 


= $35b 


! 190! '> 



- 79 - 



15V0 
1600 
1610 
1620 
1630 
.1640 
1650 
1.660 
1670 
1660 
1690 
1700 
1710 
1720 
1730 
1740 
1750 
17 60 
1770 
1780 
1790 
1800 
1810 
1820 
1830 
1840 
1850 
I860 
-1870 
1880 
.1890 
1900 
1910 
1920 
1930 
1940 
1950 
1960 
1970 
1980 
1990 
2000 
2010 
2020 
2030 
2040 
2050 
2060 
2070 
2080 
2090 
2100 
2110 
2120 
2130 
2.1.40 
2150 
2160 
2170 
2180 
2190 
2200 
2210 



y rJ u '-' p ~ i S r 


186 ; 


zpvirs = *35d 


187; 


z i liter = *35e 


191 ; 


U 1 fit *~ TOJT 






r 


wanuel K $341 





r 

call = $362 


1 1 i i 


ScaU 941 





transp ar 



call .byte 0-140; 
.byte '941' 
..bate 0,0,0 . 



; earacter i st i lues scran 



adr*cr « *368 

Insecr = *36a 

tilscrn = *36c 

c i up -, 136d 



fonction indirectes 



avanee = $36f : 

mule," $372 

as = $375 
fsa = *378 
Set i nd = $37b 
i rivers = *37* 
flash = $381 
i near = 4384 Ida ( vv) , w 
J ■ ■ rts ■ 
outcar T -=T,t387 - - 
! ■■ 'rts 
indcow = $38a 

; ' o ■ 

; o 



! i nd I rect i oh - 

i (fipent a $-3ad f vers deb prs 



4,0 

3,192 

40 

*lb,$fd 



.iwp av40c 

j MP rsc40c 

■imp ea40c 

-i dip ae40c 

■i MP S*t40c 

j MP: i nv40c 

•idip fla40c 



sta (vv),y 



; impress ions ( compteur de 1. i snes ) 
nblsn = *3b3 

f 

nbdec i = *-3b4 

avamsk = $3b5 

azerta = *3b6 

; prd acces azerty 

aplaze = *3b7 

; ler I i bre en 43be 



- 80 - 

C H A P I T R E VIII 



LES PO I NTEURS DU DOS 

8 - 1 - UTILISATION DE LA MEMOIRE 



L'espace memoire de votre micro-ordinateur est utilise de la fagon suivante 



ADRESSE (HEXAOECIHALE) 
40000 



$00FF 
$0100 



} 



$01 FF } 
$0200 1 

2FF / 



$02FF 

$0300 \ 
$03FF / 

$0400 \ 
$07FF / 

$0800 

fin programme 

de! 



} 

but variable! 

n variable ) 
rs 1 
rs J 

) 
) 



fin 

debut buffer 
fin de buffers. 



debut 

des handlers 

fin des 
handlers 

$C000 
$CFFF 

$D000 
SFFFF 



page zero - pointeurs divers 
pointeurs internes 

buffers 

pointeurs 

memoire eoran 

texte du programme BASIC 

variables du BASIC 
buffers du DOS 
HANDLERS 

I/O 

BASIC et MONITOR OU OOS 



Pour plus de details sur les pointeurs, utilises par le BASIC, so reporter 
au manuel d' utilisation de oelui-ci. 

Deux pointeurs sont particullerement interessants pour 1 'utilisateur puis- 
qu'ils peuvent etre modifies, 

- le pointeur de fin de programme BASIC 

- le pointeur de debut des buffers du DOS 

Normalement, ces deux pointeurs doivent etre les-memes, les buffers du DOS 
commengant la oil finlt le BASIC. 



- 81 - 



Adresse des pointeurs (en decimal ) 

115 ; fin du BASIC poids faible 

116 : fin du BASIC poids fort 

768 : debut des buffers du DOS poids fort 

769 : debut des buffers du DOS poids faible 

Pour modifier ces valeurs, faltes par exemple : 

POKE 115, : POKE 116,50 : CLEAR 
POKE 769, : POKE 768,50 : LET"#C,$" 

Les deux ordres CLEAR et LET"#C,$" sont lndispensablas pour que les modifica- 
tions soient prises en compte. 

NOTE : II est possible de laisser une place libre entre la fin du BASIC 
et le debut des buffers du DOS. 

8 - 2 - DIMENSION PAR OEFAUT DES TABLEAUX 



Lors de l'ouverture lou de la creation d'un fichier, les tableaux qui n'ont 
pas ete dimensionnes au prealable le sont agtomatiquenient . 

Ce sont alors des tableaux a 1 dimension dont 1' Indies maximum est 8. 
Cette valeur par defaut petit etre changee , Faire : 



POKE 770, [nombre d'indice desire] 



- 82 - 

CHAPITRE IX: PRINCIPE DE FONCTI ONNEMENT 

dum/dos 6502 

3 - 1 - a structure des objets en memoire centrale 

Les differents typos d'objets oontenua en mamoire soul : 

1) lea fichiars : type = " F " 

2) Ibs masques : type = " n " 

3) les descriptions de disque : type = " $ " 

Chaqua objat est range sous la forme : 



numero logique 



type 

longueur poids faible 
longueur poids fort 

objat par lui-meme 



Les objets sont places consecutivement an mamoire. 
Pour retrouver un objet, la methode est la suivante : 

- aoces au premier element 

- comparaison du numero logique 

Si celui cherche : fin 

Sinon, ajouter a 1'adrasaB da depart la longueur totale 
qui parmat d'acceder a 1'element suivant. 
Et ainsi de suite . . . 

Deux pointeurs permettBnt de connaitre las limites des objets : 

- Ibs pointeurs da debut dea modulea 
C$300, $301) + 292 ($1 24) 

- les pointeurs du premier libre 



debut dea 
modulea 



Cfin) 




Le premier (nodule commence a l'adresse 
PEEK (76B)"256 + PEEK (769) + 1028 



Destruction d'un objet 



- 83 - 



L'ordre LET"#C, [n° logique] 

permet de recuperer la place d'un objet. 

Pour cela, las objets suivants en memoire 3ont deeales de la longueur de 1 'ob- 
jet detruit et le premier libre est diminue de la meme valeur. 



99yble_utilis^tion d§::_ D uffers 

La place disponible dans les buffers entre le pointeur du premier libre et 
la fin des buffers est egalement ; 

Elle sert : 

- a enregistrer les descriptions do fichiers 

- a enregistrer des ordres pour 1 ' EXECUTE 

Par exemple, l'ordre LET" > " 

va transferer la chaine de caracteres suivant le " > " dans cet espace, 
cadree a droite. 



fin des buffers 



debut 



'ler libre 



chaine de caracteres 

L'ordre LET" + " permet' de completer cette chaine. Pour cela, on decale 

vers la gauche la chaine deja enregistree, puis on insere la nouvalle. 



> 




Trois ordres permettent d'inscrire des caracteres dans ce buffer ; 

LET" > " 

LET" + " 

LET"ENTER-[n° logique] 

Ce dernier ordre decode le dictionnaire d'un fichier deja enregistre et le 
place dans le buffer. 

Dans le cas ou la place disponible entre le premier libre et la fin des 
buffers est insuff isante, lo programme le signale par le message : 

? OUT OF MEMORY ERROR 



- 84 - 



9 - 1 - b STRUCTURE DES FICHIERS / OCB 



1) Oescrigtion_gBnerale 

Un fichier M/OOS est deooupe en un certain nombre d' unites de base que nous 
appelerons PISTE LOGIQUE. 

Ces pistes peuvent ou non oarrespondre a des pistes physiques du disque. 



CREATION DU FICHIER 



A la creation du fichier, le systeme reserve deux pistes logiques : 

- la premiere est reserves aux oles ou pointeurs 

- la seconde est reserves aux enregistrements 

Au fur et a mesure du grossissement du fichier, un certain nombre de pistes 
logiques pourront etre allouees dynamiquement au fichier. 

Les fichiers M/DOS ne sont pas tous semblables puisque chacun a une definition 
d ' enregistrement qui lui est propre. 

Pour cela, un descrlptif est attache a chaque fichier. 

Ce descriptif est appele D.C.B. (Data Control Bloc). II comporte un certain 
nombre d' elements dont les principaux sont : 

- La description de 1 ' enregistrement 

Ces parametres definissent les differentes cles, leur type, . . . 

Pour chaque variable de 1 'enregistrement, 7 octets sont reserves pour sa 

description. ■ 

- La liste des pistes logiques occupees par le fichier. 

Au fur et a mesurs que des pistes sont allouees, leurs numeros sont ajuutes 
a cette liste, classesdans un ordre fictivernent croissant pour permettre 
les recherches par cles. 

- Les differents pointeurs permettant dans ce fichier de connaitre les blocs 
liberes a la suite de destruction ou non encore utilises. 

Une description de cette DCB est donnee en fin de chapltre. 



LES CLES OU POINTEURS 



Les fichiers peuvent etre de deux types : 

- fichiers relatifs 

- fichiers sequentiels indexes 

Dans le cas des fichiers relatifs, la structure est la suivante : 

- Les pistes de pointeurs contiennent un chainage sur 1 ' enregis trement . 

Ce chainage est une suite de trois octets, ce qui permet de prevoir des 

extensions importantes. 
Dans chaque bloc reserve aux pointeurs, on peut done mettre 85 pointeurs. 



- 85 - 



Chaqua pointeur renvoie sur 1 ' enregistrement de la fagon suivante : 

- 1er parametre i la plsto loglque 0C1 se trouve le debut do 1 ' enregistremant . 
~ 2eme parametre : le numero du bloc dans cette piste logique. 

Lorsque vous demanded la lecture de 1 ' enregistrement N, le systeme va calculer 
tout d'abord la piste logique ou se trouve oe pointeur, puis lira le 

bloc correspondent . Le pointeur pennettra alors de trouver 1 ' enregistrement . 

Cette methode impose de lire deux blocs au moins pour acceder a un enregistre- 
ment, mais en revanche, elle n' impose aucune contrainte sur la longueur da 1' en- 
registrement. C'est cet avantage oui permet au H/00S B5Q2 de gerer des fichiars 
de taille variable. 

Pour les ficbiers sequentiels indexes, les pointeurs vers las enregistrements 
sont completes par la Die. Cette cle peut etre eventuellement une suite de 
sous-cles . 

Le COEFFICIENT DE BLOCAGE. des cles d'un fichier sequential indexe sera done 
calcule de la fagon suivante : 

Soit L le nombre d'octets de la cle, 

pour chaque article, on enregistre L + 3 + 2 octets 

avec : 

L octets pour la cle 

3 octets pour pointer sur 1 ' enregistrement 
2 octets pour pointer vers le suivant 

La nombre de cles que l'on pourra mettre sur un bloc da 256 octets sera done 
la partia entiere de 256 / (L + 5) 



FICHIERS MULTICLES 



Dans le cas d'un fichier comportant plusieurs cles, chaque cle demandera un 
ensemble de pistes logiques . 



PRINCIPE DE RECHERCHE PAR CLE 



Les cles sont reparties en deux types : 

- les cles triees 

- les cles non triees (appelees TAS) 

Les cles triees sont rangees par ordre croissant sur les pistes logiques. 
La principe de recherche sur ces cles est la recherche DICHQTOMIQUE . 
II consiste a comparer la cle recherchee avec une cle mediane, ce qui permet 
d'eliminer la moitie des cles. 

Exemple : 

La liste des cles enregistrees est la suivante : 



ABGKPQUVWYZ 



- 86 - 



recherche de la cle I : 

La cle mediane B9t Q i I est plus petit que Q : les cles superieures a Q 

sont eliminees. 

La cle mediane est G : I est plus grand que G : on elimine A G 

La cle mediane est K i I est plus petit que K 

I 

II n'y a plus dB cles entra G et K, la cle recherchee n'existe pas. 
Interet de la methode ; 

A chaque essai, (qui demande au plus une lecture disque) on elimine la 
moitie du fichier. La temps de recherche est done de l'ordre de i 

LOG (ncmbre de cles) x constante 

Exemple ! lecture sur disque dur (temps d'accos moyen 50 millisecondes) 

le coefficient de blocage est de 25 (cles de 5 octets, par exemple 
un flottant) 



parmi 25 cles, 1 lecture 50 rns 

50 cles, 2 lectures 100 ins 

100 cles, 3 lectures ......... 150 rns 

200 cles, 4 lectures 200 ins 

400 cl6s, 5 lectures 250 ms 

800 cles, 6 lectures 300 ms 

1600 cles, 7 lectures 350 ms 

3200 cles, 8 lectures 400 ins 

6400 cles, 9 lectures 450 ms 

12800 cles, 10 lectures 500 ms 



Chaque fois que le fichier double de taille, le temps de recherche n'augmente 
que de One lecture disque. 

Dans 1' exemple (cas assez frequent) le temps d'acces a un article parmi 
10 000 est environ 1/2 seconde. 

ProblSme du TAS : creation d 1 articles 



Lors d'une creation d'article, le but est d'inserer une nouvelle cle dans la 
liste. Cependant, si le fichier comporte un nombre important d' articles, cette 
operation risque de demander un grand nombre de decalages. Par exemple, dans 
le cas decrit ci-dessus, avec 10 000 articles, pour inserer une nouvelle cle 
en debut de liste 11 faudrait decalar 10 000 cles, so.it 400 blocs de 256 octets ! 
Le temps d'insertion serait alors de 20 secondes, ce qui n'est pas admissible 
en utilisation normale. 

□e ce fait, la technique employee dans le fVDOS 6502 pour creer de nouvelles 
cles est legerement differente. 

Une nouvelle cle n'est pas inseree directement a sa place, mats ajoutae a la 
fin de la liste dans ce que nous appelerons le IAS. 

Ces nouvelles cles ne sont pas triSes, mais CHAINLES aux autres cles. 



- 87 - 



A la fin de la recherche dichotornique, le systeme connait la cle immediate- 
ment inferieure et la cle immediatement supSrieure. La nouvelle cle du TAS 
est chainee a la cle immediatement inferieure. Pour cela, on utilise le poin- 
teur permettant de retrouver le suivant. 

Cela modifie dont l'algorithme de recherche d'un article : apres avoir cher- 
che la cle dans la liste triee, 11 faut verifier qu'aucun chainage ne conduit 
a la cle recherchee dans le tas. 

Le temps d'acces a un article dont la cle est dans le tas est bien entendu 
rnoins performant que dans le cas de la liste triee. 

Supposons par exempla que le Fichier comports 10 000 articles. 
Nous en inserons 10 000 autres. 

Pour les 10 000 premiers qui sont dans la liste triee, le temps d'acces est 
de 500 ma. 

Les nouveaux articles, eux, sont dans le tas. 

Si la repartition des cles est aleatoira, on peut esperer que chaque nouvelle 
cle se situera entre deux des cl6s triees. 

Dans ce cas, la deterioration du temps d'acces sera en moyenna de un acces 
supplementaire pour la lecture d'uns cle.du tas. 
Le temps d'acces est alors : 

500 ms (10 acces) pour une cle de la liste triee 
550 ms (11 acces) pour une cle du tas. 

Le systeme comporte un ordre : REORGANISATION qui permet de ranger les cles 
du tas. Pour cela, toutes les cles sont relues dans l'ordre croissant grace 
aux pointeurs ver3 le suivant et sont reecrites sur de nouvelles pistes de 
cles . 

Lorsque l'operation est tarminee, la nouvelle liste de cl&s utilisees remplace 
la precedente dans la DCB et les pistes precedentes sont liberees. 

REMARQUE : Le probleme du tas est particulierement sensible dans le cas d'un 
fichier initialement vide. En effet, dans ce cas, aucune cle n'est triae et 
la temps d'acces est alors en moyenna la moitie du tamps d'une recherche se- 
quentiella (le temps da recherche est alors proportionnal au nombre de cles I). 

Le temps de reorganisation est facile a calculer : c'est le temps de lecture 
at d'ecriture de toutes las cles. Pour 10 000 articles, 11 faut manipuler 
400 blocs en lecture et ecriture soit : 400 x 2 x 50 ms = 40 000 ms 

En quarante secondes, le fichier est trie I 

NOTE ; en multicles, l'operation de reorganisation est rSpetfie sur chacune 
des cles. 



- 88 - 



Problems de la place disponible pour reorganiser 



Pour que la reorganisation soit possible, il est necessaire que le nombrs 

de pistes libres soit suffisant pour recopier la lists des cles. 

Au bBsoin, on peut recuperer des pistes libres en detruisant d'autres fiohiers. 

II est important de noter que les differentes reorganisations d'un fichier 
font qua les pistes utilisees pour les cles se deplaoent sur le disque et ne 
restent pas figees. Or ces pistes sont frequemmsnt utilisees lorsque l'on fait 
des recherches par cle. Ce principe permet de repartir l'usure de la surface 
sur tout le disque (dans le cas des disques souples bien sur ! ) 

Le CATALOGUE du disque etant egalement un fichier a acces par cle, le meme 
phenomene se produit Sgalement dans le cas de chargements de programmes ou 
masques . 



STRUCTURE DE L'ENREGISTREMENT 



L'enregistrement a la meme structure que le fichier soit relatif, ou sequen- 
tiel indexe. 

Une caracteristique de l'enregistrement est le coefficient de blocage. 
Celui-oi represente le nombre d'octets contenus dans un bloc de base. 

Les enregistrements sont de tallies variables, il n'est done pas possible 
de definir exactement la taille du bloc de base (element le plus petit d'un 
enregistrement) . 

Pour des raisons d' optimisation, la taille du bloc de base pourra etre : 

32 octets 
64 octets 

- 128 octets 

- 256 octets 

Sur ces octets definissant le bloc de base, trois sont reserves pour les 
chainages internes, 

Le f onctionnement est le suivant : 

1) L'article est plus petit que le bloc de base. 

II ne demandera alors qu'un seul bloc et le chainage interne indiquera 
fin d' article. 

2) L'article est superieur au bloc de base. 

II faudra alors plusieurs blocs de base pour le contenir et ceux-ci seront 
chaines ensemble. Le chainage interne du premier pointant sur le second 
et ainsi de suite. Le dernier bloc de base ne contient pas de chainage 
signif icatif , comme dans le cas d'un bloc de base unique. 



- 89 - 



Lars d'une miss a jour d'un article, Qelui-ci pouvant changer de diniehsion, 
tons les blocs de base sont desalloues puis rapris on fonction des besoins. 

La taille du bloc de base est une constante du fichier tcontenuedans la DCB) . 
Celle-ci est daterminae automatiquement lors de la creation. 

L'algorithme de oalcul est le suivant : 

En no tenant cornpte que des variables de 1 ' enregistrament, 
chaque flottant vaut 5 octets 

chaqua chaine de caracteres est approximea a 12 octets 
chaque binaire simple vaut 1 octet 
chaque binaira double vaut 2 octets 
chaque date vaut 2 octets 

Las tableaux sont supposes contenir an moyenne trois elements. 

Le coefficient da blocage choisi est celui immediatemant superieur a la 
valeur obtenue dans la liste des possibles (32, 64, 128, 256) en tenant 
compte des 3 octets da chainage par bloc da base. 

Plus le bloc de base est petit, plus 1 ' utilisation de l'espace disque sera 
optimised .(moins de place perdue) 

Plus le bloc de base est grand, plus le temps d'acces sera petit, [en effet, 
les differents blocs de base ne se trauvent pas forcement dans le mama 
bloc physique, dans ce cas, il f audra plusieurs lectures disques. Da plus, 
en cas d'ecriture, il faut lire les blocs avant de les reecrire.) 



COOAGE DES INFORMATIONS 



Dans la but da minimiser la place perdue sur le disque, las informations 
sont oompactees. 

Pour lire ou ecrire un article, le systeme se fie au dictionnaire [qui de- 
crit l'enrsgistremant) 

Las variables simples sont ecrites directement sans separataur. 



Exemple : 



un flottant A 

un binaire simple 

une date 

un binaire double 

une chaine da caracteras 



5 octets 

1 octet 

2 octets 
2 octets 



1 + la longueur de chaine 



(l'octat supplemental™ indique la longueur) 

les blancs non signif icatif s sont supprimes taux axtremites) 



Dans la cas des tableaux le codage est le suivant ; 
Les variables du tableau sont lues dans l'ordre. 



- 90 - 



- isi n Indices du tableau correspondent a des variables non nulles ou 
non vides consecutiv es, ces variables sent codees oomme une suite 
de variables simples. 

- si n variables successives sont nulles au vides : 

- si n est plus petit que 120 

les variables sont codees sur 2 octets : 0, n 

- si n est plus grand que 127 

les variables sont codees sur 3 octets : D, tpoids fort cle n + 12(J I 

[poids faiblo de n) 

- fin de tableau : 

La fin de tableau est repFVee pa . deux conse ; cu t±f s (configuration 
impossible dans le codag e devaleurs nulles ou vides) 



CODAGE DES DATES 



Les dates sont codees sur 2 octets. 

A partir de la date standard 21/02/81 la transformation est : 

AAAAAAAM IWIJJJJJ 
01234567 01234567 

L'annee est codee sur 7 bits CO a 12H) 
Le mois est coda sur 4 bits (0 a 16) 
Le jour est code sur 5 bits CO a 32) 

Le codage de l'annee se fait en ajoutant 50 aux annees inferieures a 50 
et en enlevant 50 aux annees superieures a 50. 

De ce fait, les annees 00 a 49 sont considerees comme 2000 a 2049 
les annees 50 a 99 sont considerees comme 1950 a 1999 

Les annees 2000 et plus sont done bien superieures aux annees BO-90. 

Imgortance_de_Porclre 

Si vous creez un fichier sequentiel indexe dont une cle (ou une partie d'une 
cle) est une date, les articles seront automatiquement classes. 

Exerngle_concret_de codage^d' enregistrement 
a) Definition 

L ' enreg istrement est defini par : 
LET" A = A$,B,a,A ; , B$ ; 

Ecrivons sur le fichier 1 ' enregistrement suivant : 
B = 1 

A$ = " TEST ,: 
C% = 10 

AC0) = 1, ."(6) = 2, les autres elements sont nuls. 
B$ CO) = " TUTU ", les autres elements sont vides. 



- 91 - 



b) Codage (en hexa decimal) 



B_ 



O't 54 45 53 54 longueur 4 "TEST " 

81 00 00 00 00 flottant 1 sur 5 octets 

00 OA entler 



81 00 00 00 00 00 05 82 00 00 00 00 00 00 l,5fois0,2 

5 fois D fin 

04 54 55 54 55 00 00 longueur 4 " TUTU ", 

fin da tableau 



L ' enreglstrement oomplet est done code : 



□4 54 45 53 54 B1 00 00 
□0 00 DO OA 01 00 00 00 
00 00 05 02 00 00 00 00 
00 00 



Notons que cet enreglstrement pourralt avoir plusleurs milliers d 'octets 
de longueur si les tableaux etaient blen remplis. 



- 92 - 
DATA CONTROL BLOCK 



n° loglque 


1 





Type de l'objst an face % (ou M) 


1 


I 


Longueur de 1'objet Pf-PF 


2 


2 


n° DRIVE 




4 


Entete nan sur DRIVE = " F " 


1 


5 


NOM LZ = 20 -Nombre de pistes libres pour DCBZ 


21 


5 


Nombre de moyens d'acces 


1 


27 


Longueur sur la DRIVE PF-Pf 


2 


2B 


Longueur minimum pour le save sur DRIVE PF-Pf (0 ; 60) 


2 


30 


Etat du fichier normal ; octet de controle 


1 


32 


dans Magma DEBS' de 1'objet 




33 


Rel/TT do la T.S. Magma DCB PF-Pf 


2 


36 


Rel/TT de la table dos pistes alloues 


2 


38 


LISTE DES 1ER LIBRES 1 (PF-Pf ) rel/T.T. 


20 


40 


MAT POINTEUR 1ER LIBRE MAM 


B 


66 


Rel proohain moyen d'acces PF-Pf 


2 


2 


Rel cle recherchee/MM PF-Pf 


2 


2 


Rel de MaX/MM PF-Pf 


2 


4 


Rel Xtraot/MM PF-Pf 


2 


6 


Rel T.S. cle/MM PF-Pf 


2 


8 


Type de moyen d'acces R ou I 


1 


10 


Rel 1ere piste logique/PP PF-Pf 


2 


1 1 


Rel Dere piste logique/PP PF-Pf 


2 


13 


FIN DE TABLE TRIEE PF-Pf 


2 


15 


Inused 


2 


17 


Coefficient de blocage 


1 


19 


Longueur de 1 ' enregistrement en octet 


1 


20 


n° enregistrement en MC PF-Pf 


2 


21 


T.S. pour les cles descriptif 7 octets/variables 




23 


Cle recherchee LZ = 21 






Cle maximum L3 = 21 






V^"v^r>4" ■ Pol Ho 1 ^ 7nno "1 
A L i aiiU • ue ±Q iiutte t 


-J 




Longueur de la zone 1 


1 




AUTRES MOYENS D'ACCES 






T.S. Magma descriptif 7 octets/variables 






LISTE DES PISTES UTILISEES en deux octets 






Coefficient de blocage enregistrement 






LISTE DES PISTES / TETES 


5 









- 93 - 



9 - 1 - d STRUCTURE DBS MASQUES 



Les masques du M/DOS 6502 comprennent deux parties : 

II s'agit du texte qui apparait par l'ordre LET"C,[n° logique] 
Ce texte ne contient dano pas les fenetres da saisie. 

Le texte est compacte pour gagner de la place. 

La methode est la suivante : 

Les caracteres < et > etant interdits dans les masques car etant reserves 
aux positions des zones de saisia, ils seront utilises comma caracteres da 
controle . 

Si un caraetere de coda ecran X est repete n feis, 11 sera code : 
X, CDDEC l,l < ''), n si n < 256 

X, C0DE("> "), poids faible de n. poids fort de n dans le cas contraire 

Si n est inferieur a 4, 11 n'y aura pas de codage, car celui-ci n ' apporterait 
pas da gain de place. 

La fin Ue 1' ecran sera rapereapar un nombre nul de caracteres identiquas 
(configuration normalemant impossible] 



NOTE : COUEC" < " ) = 60 
CODEC > ") = 62 

Exemple : Codaga du masque suivant 



TEST UE (lASQUE 



Le texte 



du masque de cet exemple sera code 



212 
197 
211 
212 
160 
196 
197 
160 
205 
193 
211 
209 
213 
197 



T 
E 
S 
T 



148 
133 
147 
146 
160 
132 
133 
160 
141 
129 
147 
145 
149 
133 



blanc 



D 
E 



blanc 



A 
S 
Q 
U 
E 



- 94 - 



1 60 


bleinc ^ 




188 




; 28 blanos consecutifs 


26 


26 / 




173 






188 




14 tirets consecutifs 


14 


14 




160 


blancs* 




190 


> 


blano jusqu'a la fin de 












2) les 


zones de 


saisie 



Pour chaqus variable du masque a saisir, on enregistre 7 octets : 

- adresse ecran du debut de la zone 2 octets 

- longueur do la zone 1 octet 

- nom de la variable 2 octets 
(code comme dans le BASIC) 

- controles a effectuer 1 octet 

- indice dans le cas d'un tableau 1 octet 
(99 dans le cas des listes) 

(Oans le cas des variables simples, cette derniere valour est inutilisee) 
Le controle sur 1 octet se decompose de la fagon suivante : 

- 2 bits pour indiquer le type 

00 flottant 

01 binaire 

10 entier 

11 alphanumerique 



- 1 bits pour controle ( ") 

- si date et alphanumerique ou numerique gestlon 

- 1 dans les autres cas 



1 bit pour entree/sortie (?) 
- 1 : en sortie 



1 bit pour positif (+) 

- 1 : numerique positif ou alpha numerique considere comme numerique 

- : dans le oas contraire 



- 1 bit pour autoskip ( I ) 
- 1 : autoskip 



- 95 - 



- 1 bit pour entier ((&) 

- 1 : entier ou binaire ou flottant entier (C) 

- 1 bit pour tableaux 
1 : tableau 

: variable simple 

L' ensemble du masque est structure de la facon suivante : 



contonu 


position 


~ nurnero logique 







- type : " M " 




1 


- longueur totale poids 
poids 


faible 
fort 


2 
3 


- longaoui' de la table poids faible 
poids fort 
(7 fois le nombre de variables NV) 


4 
5 


- table (7 IW octetsl 




6 


- texte du masque 




6 + ?:: NV 









- 96 - 



CHAPI TRE X 
UTILITAIRES STANDARDS 



AZERTY (M) : 



Ce masque vous montre les touches a inverser, si vous voulez 
travailler en AZERTY (commande LET " Z ") . 



BINARY (M) : 



Ce masque indique pour les modules binaires leur longueur. 
Cela vous nermettra de les recopier sans problemes. 

Exemple ! HIMEM : 16 * 256 

LOAD " 01000,01300,1 : B0OT1 " 
SAVE " 01000, 01300, JZf : BOOT2 " 



AUTO COPIE : 



Recopie d'un drive sur un autre les masques, globaux et pro- 
grammes. Le drive d'arrivee n'est pas detruit. S'il s'agit 
d'une disquette vierge, il faut done la formatter par l'ordre 
LET " ttF, n° drive ", avant de lancer le programme AUTO COPIE 
IMPORTANT : Les drives peuvent etre de types differents (5', 
8 1 , disque dur ) . 



AUTO LIST : 



Edition de tous les masques et nrogrammes contenus sur une dis- 
quette . 



- 97 - 



AUTOSTART : 



Siinule les fonctions clavier de la ROM autostart dans le cas 
oil votre micro-ordinateur n'en est pas equipe. 

CTRL/S : bloque un list 

ESC/I : deplacement du spot vers le haut 

ESC/J : deplacement du soot vers la gauche 

ESC/K : deplacement du spot vers la droite 

ESC/L : deplacement du spot vers le bas 



BOOT : 



Forma ttage d'un disque en laissant la piste pour le BOOT. 
Si celui-ci est sur la disquette, il sera reconiS en niste 0. 
Les disquettes ainsi obtenues peuvent mettre en route le M/DOS 
6502. 

CHECK ROM : 



Affiche les valeurs trouvees et les valeurs rSelles des 8 ROMS 
du DOS, pour controler leur validite. 



COP IE : 



Copie integralement un drive sur un autre. Les drives doivent 
etre de meme type . 
IMPORTANT : 

- Ce programme fonctionne quelque soit le pSri- 
pherique . 

- Le drive d'arrivee est effacS. 

Si le disque d'arrivee a deja etS formatte, indiquer " N " 

a la question concernant le formattage. 

Le cas se produit en narticulier si le disque : 

- a ete deja formatte (oar LET " ^ F,n ") 

- est deja une copie dont on ne se sert plus. 



- 98 - 



COPIE SI : 



Copie un fichier sequentiel indexe d ' un disque sur un autre, 
avec possibilite de changer le nom du fichier. 



DEMO : 



Exemple de programme gerant un fichier en acces par cle. 
Vous constaterez que les deux masques utilises ont §t§ 
regroupes sous forme de GLOBAL, ce qui presente deux avan- 
tages : 

- temps de chargement accelere 

- place restreinte sur disque 



FILE COPY : 



Copie un fichier d'un disque sur un autre, apres affichage 
du catalogue. 



HELLO : 



Ce programme est celui que est execute a la mise en route. 
Vous pouvez le remplacer par un autre de votre choix. 
Exemple : pour que l'un de vos logiciels demarre dls la mise 
en route, il vous suffit de rajouter dans le programme HELLO 
un RUN " nom du premier programme a executer . 



- 99 - 



INTERRO : 



Ce programme permet de mettre a jour un fichier quelconque. 
Pour cela, deux masques sont crees provisoirement (il ne sont 
pas enregistres sur disque) . 
Le premier demande 1' operation desiree : 

- la cle de recherche definie dans le fichier 

- la commande : L = lire 



Le deuxieme sert a decrire 1' article aussi bien en affichage 
qu'en saisie. 

Dans le cas de tableaux, ceux-ci apparaissent en une ligne. 
Les dif ferents indices sont separes par " ; " . 



MAJ PAGE 3 : 



Mise a jour des parametres de la page 3 (voir chapitre VII) 



RENUMEROTE : 



RenumSrotation des lignes d'un programme en fonction de cer- 
taines valeurs. 

Exemple : &F300, I 5 , S 200, E 700 

Cet exemple renum§rote de 5 en 5 la partie du programme com- 
prise entre les lignes 200 et 700,. .en commenijant par la ligne 
3 00. Les valeurs par defaut sont : 



M 
C 
D 
S 



modifier 

cr§er 

detruire 

lire le suivant 



F10, I1J3, S10, E63999 



- 100 - 



RWTS 3.2 / 3.3 : 



Deux versions des lecteurs 5 pouces existent : 

- version 3.2 110K 

- version 3.3 140K 

Ce programme permet de faire resider en memoire les deux ver- 
sions 110K at 140K et d'effectuer des conversions entre ces 
deux versions . 

Exemple : Vous avez demarre sur une version 140K (3.3). 

Vous dSsirez lire et recopier un programme TEST ecrit en 

M/DOS 6502 version 110K. B'aites RON "RWTS 3.2". 

Le programme affiche l'etat des lecteurs actuels : 

si vous avez deux lecteurs en slot 6 avec interface 14 OK 

(drive JJ et 1) et deux en slot 5 avec interface 11 OK 

(drives 2 et 3) , le programme indique les valeurs par defaut 



140K 

1 140K 

2 140K 

3 140K 

4 non connects 

5 non connects 



Le programme demande le drive a passer en 11 OK. 
Repondre 2 . 

II suffit ensuite, apres avoir repris la main, de faire : 

LOAD " 2 : TEST " 
SAVE " : TEST " 



SCROLL : 



Affiche les adresses du SCROLL UP et du SCROLL DOWN. 
L'adresse du SCOLL DOWN est calcule par : 

PEEK(U6) *256 + PEEK (115) 

L'adresse du SCROLL UP est fixe : 

CALL 64624 



- 101 - 



SUPER CONTROLE : 



Les caracteres de controles apparaissent sur fond blanc dans 
le listing du programme, mais 1' execution s'effectue norma- 
lement. 



UTIL : 



Tous les ordres concernant les masques de saisie peuvent Stre 
executes directement sans affecter la memoire, en particulier 
le programme. Cependant, cet utilitaire permet une mise a jour 
rapide et simple de votre catalogue de masques. 
Les commandes possibles sont : 

C Creation d'un masque : 



L'ecran s 1 efface, saisissez votre masque puis faites Escape. 
(CTRL/A pour abandonner) . Une cloche signale une erreur dans 
les fenetres. Corrigez-la ou abandonnez. 

M Modification ; 



Le contenu du masque apparait sur 1 'Scran. Vous pouvez le 
modifier de la mSme fagon qu'en creation. 

D Destruction : 



Le masque est affiche pour une derniere validation. Repondez 
" O " pour detruire. 

* Contenu du disque : 



Permet de consulter la liste des masques avant de les manipuler. 
l| Ouverture d'un masque : 



Son nom s' affiche en bas a droite de l'ecran. II pourra servir 
de base pour la creation d'un deuxieme masque par la commande S 



- 102 - 



Sj Creation d'un masque a partir d'un autre : 
Le module est le masque charge par " L " . 

vj Visualisation : 

Simple affichage du masque. 

fJ Sortie du programme 

ij Impression d'un masque : 

Imprime un masque sur une imprimante placee en slot 2. 



- 103 - 



CHAPITRE XI 

UTILISATION D'UNE PARTIE DES FONCTIONS 

du M/DOS 6 5 2 en dos\ 3.2 dos . 3 . 3 

Un certain nombre d'ordros du M/DOS B502 pourront Stre utilises on 
DOS 3.2. OOS 3.3 aux conditions suivantes : 

- la page 3 est conforme aux specifications (voir cliapitre 
parametrage du M/DOS B502) 

- une place a fite reservee pour les buffers M/DOS B5D2 et leurs 
adresses mises a jour an page 3. 

Lbs ordres suivants sont alors utllisables : 



LET"#I, n ,M, d : nom" '. . creation d'un masque on memoirs 

LET"C, n." chargement du texte 

LET"P, n" affichage texte + variables 

LEf'O, n" affichage variables 

LET'V, n" visualisation 

LET"I, n" saisie 

LET"T, n" saisie globale 

LET"f|C, n" clear 

LET"=xxxx± yyyy" addition/soustraction sur 46 chiffres 

LET" > xxxx" remplissage buffers 

LET" + xxxx" ajout des buffers 

LET" ! " execute 

LET"Z" azerty 

LET"Q- P" arrondis 

LET"y" '. inversion video eoran 

LET"G" , cloche 

LET"?- !! " " hard copy " 

LET"?-c" masques d' edition 

LET'V" visualisation buffers 

LET"#C,$ n clear do tous les masques 



- 104 - 



Deux fonctions vont manquer puisqu'ellas son liees a la gestion de i 
fichier, 11 s'agit : 

- du sauvetaga des masques sauves par LET")} I" 

- de leur relecture 

Pour cela, 11 faudra faire appel aux ordres : 

BLQAD 
BSAVE 

Las llmites du module a sauver sont : 

debut = PEEK(760) # 256 + PEEKC769) + 292 
fin t 1 = PEEKI773) * 256 + PEEKC774) 

Le sauvetaga de 1' ensemble des masques en memoirs se fera par : 

X = PEEKC76B) # 256 + PEEK(769) + 292 
L = PEEK(773) * 256 + PEEKC774) - X 
?CHR5i(4) " BSAVE MASQUES, A " X " , L " L 

l_a relecture se fera par ; 

X = PEEM773)* 256 + PEEM774) 
?CHRZ(4) " BLQAO MASQUES , A " X 

Y = X + PEEK 03616) + PEEKC4 3 6 1 7) * 256 sur 4BK 

POKE 773 . INKY/256) 

POKE 774 . Y - 256 * INT(y/256) 



RESUME DES ORDRES DU DOS 



MASQUES 

LET"i)NEW-(n), MASQUE, (d) 1 (NOM) Creation d'un masque (donne la main) 

LET"|tNEW- (n) , MASQUE,/(d) : (NOM) Creation de masques tprend l'ecran) 

LET"#NEW-(n), MASQUE, (d) : (NOM) Rernplacement d'un masque 

LET 1 '(tDELET-MASQUE , (d) : (NOM) .' Destruction d'un masque 

LET"#OPEN-(n), MASQUE, (d) : (NOM) Ouverture d'un masque 

LET"CHARGE-(n) Affichaga du texte du masque 

LET"VISUALISE-(n) Affichaga du texte ot dea fenetres 

LET"OUTPUT-(n),(t) AfFichage des ^variables du masque 

LET"PRINT-(n) Aff ichagsrdu texte ot dels 'variables 

LET"INPUT-(n), (z) Saisie des variables du masque 

LET"T, n" Reprise de variables d'un maGque 



FICHIERS 

LET" > vci...vcn = vei...vep Description d'un dictionnaire 

LET"+ Ajout au dictionnaire 

LET"t}NEW-(n), FICHIER, (d) = (NOM) Creation d'un fichier 

LET"#OPEN-(n),FICHIER,(d) : (NOM) Ouverture d'un fichier 

LET"#DELET-FICHIER,(d) : (NOM) Destruction d'un fichier 

LET"#REORG-(n) Reorganisation d'un fichier 

LET"READ-(n) Lecture d'un article 

LET"NEXT-(n) Lecture de 1 'article suivant 

LET"UPDATE-(n) Mise a jour d'un enregistrement 

LET"DELET-(n) Destruction d'un enregistrement 

LET"BORNE-(n) Fixe une borne maximum au fichier 

LET"XTRACT-(n), (v) Extraction par criteres sur la cla 

LET"XTNDEX-(n) Envoie en relatif le proohain numero 

LET"WRITE~(n) Creation d'un enregistrement 

LET"ADD-(n) Ajout Chomonymes autorisfis) 

LET"ENTER-(n) Trariuit en clair le dictionnaire 

LET"VISUALISE Imprime ce dictionnaire ' 

LET")} > n" Fixe un maximum au coefficient de blocage 



PROGRAMMES 

SAVE"(d) : (NOM) Sauve le programme 

SAVE"*? (d) : (NOM) Sauve en ecrasont 

LOAD "(d) : (NOM) Charge un programme 

LOAD"|Kd) I (NOM) Charge le programme a la suite 

LOAD"/(d) : (NOM) Execute le programme sans CLEAR 

RUN"(d) : (NOM) Charge et execute un programme 

LET"t)DELET, PROGRAMME, (d) : (NOM) Destruction d'un programme 



DIRECTORY 



LET" :: ,(cO Directory complete du disque d 

LET" :: ,,(d),,CM/F/P/) Liste des masques/f ichiers/programmes 

LET 1 'IJREORG- $ (d) Reorganiae le catalogue du disque d 



ORDRES GENERAUX 

LET"HCLEAR, (n) Recupere la place RAM d'un objet 

LET"fjCLEAR/'+CHR$Cd) Fermeture d'un dlaque 

LET"|}CLEAR, $ Ferme toua lea fichiera, masques, ... 

LET"Y Inversion video de tout l'ecran 

LET"! Execute d'une chaine entree par 

LET"%Cd) Indlque le nombre de pistes librea 

LET" = oper 1 + - oper 2 Addition et soustraction de chaines 

LET"G Emiaaion d'un signal sonore 

LET"Z Passage en AZERTY 

LET"?-Cx) Impression de la ligne reperee par x 

LET"?-" Hard Copy 

LET"#C,$d " Fermeture du drive d pour chargement disqL 

LET"#C, $$" Ferme tous les drives 



FICH1ERS MULTICLES 

LEI" > vai, . . . ,vai & vbi, . . .vbj & , , . , , 

■ r-rii, _ . Definition d'un fichier multicle 

LET"|}NEW-Cu),FICHIER,Cd) : CNOM) Creation d'un fichier (aprea 

LET"i|DELET-FICHIER,(d) : CNOM) Deatruction d'un fichier 

LEfOPEN-Ci^/FICHIERXd) : CNOM) Quverture d'un fichier 

LET"||REORG-(n) Reorganisation d'un fichier 

LET"READ-Cn), Cmy) Lecture d'un enregistrement 

LET"NEXT-Cn), Gny) Lecture sequentielle 

LET"UPDATE-Cn), Cmy) flise a jour d'un enregistrement 

LET"DELET-(n), Cmy) Destruction d'un enregistrement 

LET"BORNE-Cn), Cmy) Fixe une borne maximum au fichier 

LET"XTRACT-Cn),(v)/Giy) Extraction sur la variable v 

LET"WRITE-(n) Creation d'un enregistrement 

LET"ADD-Cn) Ajout thomonymes autorises) 

LET"EMTER-Cn) Traduit en clair le dictionnaire 

LET'VISUALISE Imprime ce dictionnaire 



BINAIRES 



LOAD"$XXXX, $YYYY,d: NOM 
SAVE"$XXXX, $YYYY, d : NOM 



LOAD de module binalre 
SAVE de module binaire 



GLOBAUX 



LET"f)N,G,G, d: NOM Creation d'un global 

LET"ftO,G,G, d: NOM Ouverture d'un global 



ACCEG DIRECT 

LET"t d,c,n,p,t,s,$XXXX Acces direct 



I 



I 



1