home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 17
/
CD_ASCQ_17_101194.iso
/
dos
/
prg
/
mos
/
docs
/
mos.txt
< prev
next >
Wrap
Text File
|
1994-09-17
|
170KB
|
2,742 lines
M.O.S (Master Operating System)
Interface v1.0
(C)1994 F.Cheveau.
MOS est un ensemble d'unités Turbo Pascal permettant de créer rapidement
ses propres interfaces en mode texte ou graphique.
Il peut servir de support au développement de vos programmes et propose
de nombreuses fonctions inédites qui font défaut au Turbo Pascal.
MOS permet entre autre de gérer:
- La Souris,
- Les Fenêtres (et le multifenetrage),
- Les Menus,
- Les Gadgets,
- Les Requesters (de fichiers, de dialogues ...),
- La Mémoire XMS,
- et bien d'autres choses encore.
De nombreux exemples (exécutables et sources) sont fournis de manière à vous
permettre de progresser rapidement dans le développement de vos programmes.
Si vous désirez me contacter, écrivez-moi à l'adresse suivante:
CHEVEAU Frédéric,
8 Passage des grillons,
66000 Perpignan,
FRANCE.
Ou bien pour ceux qui possèdent un minitel,
faites le 36.14, Code "RTEL1" (aprés 10 heures 30 le soir, se serveur
ne coûte que 12 centimes la minute, donc ca ne vous ruinera pas !).
Et laissez-moi un message dans ma boite au lettre "BouFFtou".
------------------------------------------------------------------------------
SOMMAIRE
1 - Convention d'enregistrement
2 - Pourquoi payer la licence de MOS ?
3 - Présentation générale
4 - Contenu de l'archive "MOS.EXE"
5 - Version future de MOS
6 - Description des unitées de l'interface Texte
7 - Description des unitées de l'interface Graphique
8 - Un exemple de logiciel développé avec MOS: Disk Speed v1.0
CONVENTION D'ENREGISTREMENT
---------------------------
Les personnes désirant s'enregistrer pour MOS Interface doivent prendre
connaissance de la convention d'enregistrement suivante:
1 - Ce présent programme ne peut être diffusé qu'en respectant l'intégrité
de l'oeuvre originale tant sur le nombre de fichiers, que sur les mentions
légales et copyright, que sur le code ou le contenu informatif des
fichiers.
2 - En aucun cas ce dit programme ne peut être distribué par une firme,
établissement à caractère commercial dans le but d'en retirer un
quelconque profit si l'auteur ne l'y a pas autorisé par écrit.
3 - La diffusion par un tiers autre qu'en 2* est autorisée par l'auteur
dans le respect du point 1*. Cette diffusion se doit d'être gratuite. Le
diffuseur ne pouvant prétendre qu'à un éventuel dédommagement pécuniaire
au titre de frais de copie et de support. Cet éventuel dédommagement ne
pourra en aucun cas être supérieur a 30 FF.
4 - L'auteur est seul habilité à percevoir la contribution à titre de
Shareware. Cette rémunération ne peut en aucun cas être collectée par un
tiers à quelque titre que ce soit.
5 - L'auteur est seul habilité à dispenser les licences d'utilisation
provisoires et définitives.
6 - Aucune restriction territoriale de diffusion de ce logiciel n'est
formulée par l'auteur.
7 - Aucune restriction de diffusion dans le temps de ce logiciel n'est
formulée par l'auteur.
8 - L'auteur ne peut être tenu responsable des dommages pouvant survenir
sur la machine de l'utilisateur, ni de l'usage illicite, détourné
ou frauduleux dont ce logiciel pourrait faire l'objet, soit par
l'utilisateur lui-même, soit par un tiers.
9 - Passé le délai de libre-éssai de 21 Jours, si vous souhaitez obtenir
une licence définitive d'utilisateur il vous suffira de remplir le formulaire
ci-dessous, ou d'imprimer le fichier order.doc, de le dater, le signer, et
le retourner à l'auteur accompagné de votre contribution calculée selon le
barème suivant. Toute utilisation de ce logiciel sans licence définitive,
passé ce délai, serait irrégulière.
La licence définitive vous donnera droit à diffuser les programmes de
votre réalisation utilisant le logiciel MOS Interface v1.0.
La licence définitive est nominative, elle ne peut en aucun cas être
l'objet d'une cession, transmission ou vente.
--------------------------------------------------------------------------
FORMULAIRE D'ENREGISTREMENT pour MOS
--------------------------------------------------------------------------
Formulaire à retourner complété et signé à l'auteur de MOS Interface:
Frédéric CHEVEAU,
8 Passage des grillons,
66000 PERPIGNAN,
FRANCE.
--------------------------------------------------------------------------
Je soussigné(e),
Nom/Prénom ou
Raison Sociale :...........................................
Service/Responsable :......................................
Adresse :..................................................
..................................................
Code postal :...........
Ville :..............................
Pays :...............................
désire devenir utilisateur officiel de MOS Interface, et fait pour cela
une demande de licence définitive.
Téléphone :..........................
Fax :..........................
Autre :..........................
..........................
Age :.........
Sexe O Masculin
O Féminin
Machine utilisée: Fréquence processeur:
O Power PC O 25 Mhz
O PC Pentium O 33 Mhz
O PC 486 O 40 Mhz
O PC 386 O 50 Mhz
O Autre .......... O 66 Mhz
O 75 Mhz
O Autre : ..........
Systeme d'exploitation:...........................
Affichage (VGA, SVGA 256c, SVGA 16Mc...)..........
Mémoire vidéo:.....................
Ecran :.....................
Périphériques:.....................
Intérets O Programmation
O Jeux
O Utilitaires
O Musique
O Autres : ...........
Suggestions :................................................
.............................................................
.............................................................
.............................................................
.............................................................
Je joins à ce formulaire ma contribution fixée selon le barème à savoir :
LICENCE POUR UN EXEMPLAIRE
QUANTITE TOTAL
Entreprises,
Administrations,
Ecoles,
Collectivités, 150 X..=.....,..FF
Particuliers 80 X..=.....,..FF
LICENCE MULTI-POSTES,
QUANTITE TOTAL
Entreprises,
Administrations,
Ecoles,
Collectivités, 300 X..=.....,..FF
Particuliers 160 X..=.....,..FF
-----------
TOTAL : .....,..FF
-----------
DOCUMENTATION IMPRIMEE (30,00FF) .........
-----------
TOTAL : .....,..FF
Ci-joint ma contribution de ......,..FF
par O Espèces
O Mandat
O Chèque N*.... sur la ..........
Le versement de cette contribution implique mon entière adhésion aux
articles de la licence provisoire en ma possession.
Fait à ..............
Le...................
Signature,
------------------------------------------------------------------------------
POURQUOI PAYER LA LICENCE DE MOS ?
----------------------------------
Ou pourquoi devenir un utilisateur enregistré de MOS.
"Why to become a registered user" (Pour nos amis Anglophones) !!!
Devenir un "Utilisateur Enregistré" vous confère les droits et
privilèges suivants:
- Etre tenu au courant des nouvelles versions de MOS.
- Recevoir Chez soi la derniere version de MOS à un prix défiant
toute concurence: 0 Frs !!! (Normal non ?).
- Avoir l'insigne honneur de faire partie de la grande famille des
utilisateurs de MOS (Pour l'instant je suis tout seul !!! Sniff...).
- Rentrer dans le livre "Guiness des Records" pour être le premier
Français à avoir payer un SHAREWARE (Si Si !!!).
- Faire gagner 3,50 F à la poste par l'envoi de la disquette de MOS.
- La satisfaction d'avoir accompli une bonne action (Faites des heureux
parmis vos amis..... Offrez-leur MOS à Noël !!!).
Et puis c'est tout !!! et c'est deja pas mal non ???
------------------------ I - PRESENTATION GENERALE ---------------------------
MOS (Master Operating System) est un ensemble d'unités Turbo Pascal
Permettant de créer rapidement ses propres interfaces en mode texte
ou graphique.
Il peut servir de support au développement de vos programmes et propose
de nombreuses fonctions inédites qui font défaut au Turbo Pascal.
MOS permet entre autre de gérer:
- La Souris,
- Les Fenêtres (et le multifenetrage),
- Les Menus,
- Les Gadgets,
- Les Requesters (de fichiers, de dialogues ...),
- La Mémoire XMS,
- et bien d'autres choses encore.
De nombreux exemples (exécutables et sources) sont fournis de manière à vous
permettre de progresser rapidement dans le développement de vos programmes.
J'ai d'ailleurs volontairement insisté sur des exemples détaillés, plutôt
que sur une documentation longue et fastidieuse. C'est pourquoi, vous ne
trouverez dans cette documentation, que le strict minimum quant-à
l'utilisation des fonctions de MOS, le mieux étant encore de se reporter
aux sources d'exemples données. Elles sont simples, commentées, et ne
traitent chacune que d'un seul sujet de manière à en faciliter la
compréhention.
Si toutefois, vous ne parvenez pas à comprendre certaines fonctions de MOS,
vous pouvez me contacter à mon adresse, ou sur minitel (mes coordonées
sont données au début de cette documentation).
Cette documentation a été subdivisée en deux partie:
- La première partie traitant de l'interface texte,
- La seconde de l'interface graphique.
Pour vous prouver l'efficacité de MOS, j'ai inclu dans l'archive un
logiciel dont l'interface a été programmée avec MOS (ils se trouve dans
le répertoire EXEMPLES\SOFTS). Ces interfaces ont étés réalisées en moins de
trois jours (pour le plus gros logiciel "DISK-SPEED").
De plus, j'ai fais en sorte que MOS soit facile d'emploi.
Nul besoin d'être programmeur chevronné pour l'utiliser, un niveau moyen est
parfaitement suffisant.
Pour chaque point important traitant d'une fonction particulière de MOS,
j'ai donné un exemple (Source + Exécutable) se trouvant dans le répertoire
"EXEMPLES" et dans les sous-répertoires "SRC_TXT" pour les sources de
l'interface texte, et "SRC_GFX" pour les sources de l'interface graphique.
Je tiens également à préciser que MOS n'a pas été programmé orienté objet,
qu'il n'y a pas un seul pointeur, ni aucune liste chaînée, ou quoi-que
ce soit du même genre, et pourtant, il marche parfaitement bien,
n'est pas buggué (à la différence de certains logiciels que je ne nomerais
pas, mais du style Windows), et ne prend quasiment pas de place sur disque et
en mémoire pour fonctionner.
Ma devise étant bien évidement "Pourquoi faire compliqué quand on peu faire
simple" (bien que, j'aurais pu dire aussi "Pourquoi programmer objet lorsqu'on
peut programmer sans !!!), j'ai donc codé MOS sans que cela devienne un
casse-tête pour moi (pas de structures à la con et totalement inutiles
du genre héritage abusif et polymorphisme).
Mais non, mais non, je ne fais pas de l'anti-programmation objet primaire,
je suis seulement réaliste. Essayez, et vous verrez !!!
Bon.... passons aux choses sérieuse.
----------------------- II - CONTENU DE L'ARCHIVE MOS ------------------------
Voici ce que vous devriez normalement trouver dans l'archive de MOS:
TPU_TXT <DIR>
ZUUL_BAS.TPU Definition variables
ZUUL_ASM.TPU Traficotage des interruptions
ZUUL_COL.TPU Gestion des couleurs
ZUUL_TXT.TPU Gestion et affichage du texte
ZUUL_TOO.TPU Outils pour l'affichage
ZUUL_SWA.TPU Rafraichissement de l'écran
ZUUL_MSE.TPU Gestion de la Souris
ZUUL_GAD.TPU Gestion des gadgets
ZUUL_DIR.TPU Gestion des disques
ZUUL_REQ.TPU Gestion des requesters
ZUUL_MEN.TPU Gestion des menus
TPU_GFX <DIR>
ZUUL_BAS.TPU Définition variables
ZUUL_ASM.TPU Traficotage des interruptions
ZUUL_COL.TPU Gestion des couleurs
ZUUL_TXT.TPU Gestion et affichage du texte
ZUUL_TOO.TPU Outils pour l'affichage
ZUUL_SWA.TPU Rafraichissement de l'écran
ZUUL_MSE.TPU Gestion de la Souris
ZUUL_XMS.TPU Gestion de la mémoire XMS
ZUUL_GAD.TPU Gestion des gadgets
ZUUL_WIN.TPU Gestion des fenêtres
ZUUL_DIR.TPU Gestion des disques
ZUUL_REQ.TPU Gestion des requesters
EXEMPLES <DIR>
GFX_SRC <DIR>
RADIO .PAS Exemple de "Boutons Radios"
SELECTOR.PAS Utilisation du sélecteur de fichiers
LIGH_BOX.PAS Création d'une light-box
GADGETS .PAS Utilisation de quelques gadgets
FLAG_WIN.PAS Définition des flags d'une fenêtre
STRING .PAS Utilisation d'un "String Requester"
EZ_REQUE.PAS Utilisation des requesters "EZ"
PALETTE .PAS Utilisation du requester palette
PROGRESS.PAS Exemple de "Progress Requester"
POINTER .PAS Modification de la forme du pointeur
DIALOGUE.PAS Création d'une boite de dialogue
SYSTEME .PAS Configuration du système MOS
HARDWARE.PAS Affichage configuration hardware
MEMORY .PAS Affichage configuration mémoire
GFX_EXE <DIR>
RADIO .EXE
SELECTOR.PAS
LIGH_BOX.PAS
GADGETS .PAS
FLAG_WIN.PAS
STRING .PAS
EZ_REQUE.PAS
PALETTE .PAS
PROGRESS.EXE
POINTER .EXE
DIALOGUE.EXE
SYSTEME .PAS
HARDWARE.EXE
MEMORY .EXE
TXT_SRC <DIR>
MENU .PAS Création et gestion d'un menu
BUTTONS .PAS Gestions des boutons en texte
SELECTOR.PAS Obtention d'un File_Requester
EZ_REQU .PAS Obtention d'un EZ_Requester
ST_REQU .PAS Obtention d'un ST_Requester
VA_REQU .PAS Obtention d'un VA_Requester
TXT_EXE <DIR>
MENU .EXE
BUTTONS .EXE
SELECTOR.EXE
EZ_REQU .EXE
ST_REQU .EXE
VA_REQU .EXE
SOFT <DIR>
DS .EXE Exécutable Disk-Speed v1.0
DS .PAS Source de l'exécutable
DS_LIB .TPU Unité pour DS
DS_LIB .PAS Source de l'unité pour DS
DSMODULE.LIS Fichier data: Liste de modules
DSMODULE.DTA Fichier data: Paramètres des modules
DSMODULE.CFG Fichier data: Configuration de DS
DSPTS_01.PTS Fichier data: Série de points "Test"
DSPTS_02.PTS "
DSPTS_03.PTS "
DSPTS_04.PTS "
DSPTS_05.PTS "
DSPTS_06.PTS "
DSPTS_07.PTS "
DSPTS_08.PTS "
EGAVGA .BGI Driver VGA
LITT .CHR Fonte pour DS
DOCS <DIR>
CHAMPS .TXT Les champs que MOS utilise
CONSEILS.TXT Les conseils pour bien coder avec MOS
REGISTER.TXT Comment devenir utilisateur enregistré
GREETING.TXT Remerciement ... .etc
NEW_PROC.TXT Nom des procedures & fonctions de MOS
VARIABLE.TXT Description des variables de MOS
ERREURS .TXT Explication des messages d'erreur
MOS .TXT Ce que vous êtes en train de lire
BUGS .TXT Les bugs éventuels de MOS
DATAS <DIR>
LITT .CHR La fonte de base de MOS
EGAVGA .BGI Le driver de base
LISE ET.MOI Une explication succinte de MOS
-------------------------- VERSION FUTURE DE MOS -----------------------------
Voici quelques unes des améliorations potentielles de MOS pour les versions
futures.
Si vous avez des idés ou des suggestions n'hésitez pas à me contacter.
(Mon adresse est notée au début de cette documentation).
- Restructuration de certaines fonctions ou modification des paramètres.
- Implémentation de la gestion des menus dans l'interface graphique.
- Supression de certains petits buggs.
- Implémentation de la gestion des images et des icônes.
- Stockage des fonds d'écrans en XMS.
- Gestion complète du clavier.
- Gestion de l'heure en texte et en graphique.
- Création d'un éditeur de ressources pour Requesters.
- Implémentation d'un player de modules au format Soundtracker.
------------------------- III - L'INTERFACE TEXTE ----------------------------
A) - Hiérarchisation des unités.
Les unités de MOS utilisent souvent d'autres unités de MOS, en fait, elles
sont toutes liées entre elles. Voici la façon dont elles sont hiérarchisées:
EVOLUE ZUUL_MEN ZUUL_REQ ZUUL_DIR
/T\ \ / \ /
| \ / ZUUL_GAD
| \ / / \
| ZUUL_SWA ZUUL_MSE ZUUL_TOO
| | / \
| ZUUL_ASM | ZUUL_TXT ZUUL_COL
| \ |
PRIMAIRE ZUUL_BAS
L'interface Texte étant trés simple à utiliser, et ne possédant
que peu de fonctions, je ne m'attarderais pas dessus. Seule les fonctions
et procédures principales seront ici données.
Pour les autre procédures, il vous suffira de vous reporter à la partie IV
(Interface Graphique) qui traite en partie des mêmes fonctions.
Les fonctions de l'unité "ZUUL_ASM" de l'interface texte sont les mêmes
que celle de l'interface graphique, vous devez donc vous reporter au
chapitre "INTERFACE GRAPHIQUE", Unité "ZUUL_ASM" pour voir la description
des fonctions de cette unité.
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_COL --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 12.04.94. ║
║ RELEASE..: Le 12.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion des Couleurs. ║
║ CONTAINS.: X Procedures, X Fonctions. ║
║ EXTERN...: No Specific TPU Needed. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE TC,BGC ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: C(COLOR) :INTEGER ║
║ OUT....: / ║
║ EXPLAIN: CHANGE LA COULEUR DU TEXTE OU DU FOND. ║
║ EXEMPLE: TC(7); BGC(0); ;Copuleurs du DOS. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES EXTENDEDCOLORS, NORMALCOLORS ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: PASSE EN COULEURS ETENDUES OU COULEURS NORMALES. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_MSE --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.02.94 et terminé le 25.02.94 (IUT Montpellier). ║
║ RELEASE..: Le 15.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion de la Souris. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need Classic Units to run Correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FONCTION INITMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Initialise la Souris (La positionne au Centre de l'ecran). ║
║ EXEMPLE: INITMOUSE; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES SHOWMOUSE, HIDEMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Planque ou Deplanque la Souris ║
║ EXEMPLE: Et puis quoi encore !!! ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FONCTION BOXMOUSET ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 = Box de Test de la position souris à l'interieur. ║
║ B = Code du bouton a tester + de la zone. ║
║ 0 = Test Zone + Boutons non Actives. ║
║ 1 = Test Zone + Left Bouton. ║
║ 2 = Test Zone + Middle Button. ║
║ 3 = Test Zone + Right Bouton. ║
║ 10 = Test Zone sans se preocuper des Boutons. ║
║ OUT....: True / False (Boolean). ║
║ EXPLAIN: Teste si la souris se trouve dans le box specifie (Mode Texte). ║
║ EXEMPLE: If BOXMOUSE(10,15,5,6,1)=True Then Writeln('OK'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES GETMOUSET, GETMOUSEG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels). ║
║ G,M,D: Etats des Boutons Souris (Gauche, Milieu, Droite) = Bool. ║
║ OUT....: / ║
║ EXPLAIN: Renvois la position et l'etat des boutons de la souris. ║
║ EXEMPLE: GetMouseT(X,Y,LM,RM); Writeln(X,Y,LM,RM); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES PUTMOUSET, PUTMOUSEG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels) ║
║ OUT....: / ║
║ EXPLAIN: Positionne la souris aux coordonées précisées (Textes ou GFX). ║
║ EXEMPLE: PutMouseT(X,Y); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES LIMITEMT, LIMITEMG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2: Coordonées du Box Limite. ║
║ OUT....: / ║
║ EXPLAIN: Limite les déplacement de la souris dans un box. ║
║ EXEMPLE: LimiteMouseT(16,50,5,10); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SPEEDMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X: Mickeys; Y: Pixels ║
║ OUT....: / ║
║ EXPLAIN: Definit le raport entre Mickeys et Pixels. ║
║ EXEMPLE: SpeedMouse(5,10); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES CURSOFF, CURSON ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: PLANQUE OU DEPLANQUE LE CURSEUR. ║
║ EXEMPLE: CursOff; Wait; CursOn; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DEFCURSOR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: H,B (WORD): Ligne Haute et Ligne Basse. ║
║ OUT....: / ║
║ EXPLAIN: Definit la Forme du Curseur (Haut/Bas). ║
║ EXEMPLE: DefCursor(1,6); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE MASKCURSOR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: MAnd,MOr (WORD): Masque And et Or du Curseur. ║
║ OUT....: / ║
║ EXPLAIN: Definit le Masque du Curseur. ║
║ EXEMPLE: MaskCursor(1,6); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_SWAP --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau & Fraggy. ║
║ COMMENCE.: Le 26.11.93 et terminé le 26.11.93 (Piaule à Vincent). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion Screen, Routines Asm, Swap Pages... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SWAPHIDE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Positions du Cadre a l'ecran. ║
║ SVE (Savewin) = Variable de Stockage du bloc. ║
║ OUT....: / ║
║ EXPLAIN: DECOUPE UN CADRE A L'ECRAN ET LE CONSERVE EN MEMEOIRE. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SWAPSHOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER) = Position d'Affichage ║
║ SVE (Savewin) = Variable de Stockage du bloc. ║
║ OUT....: / ║
║ EXPLAIN: REAFFICHE A LA POSITION X,Y LE BLOC GARDE EN MEMOIRE. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GOPAGE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X: Numero de la page (de 0 a 3) ║
║ OUT....: / ║
║ EXPLAIN: Passe sur la Page en question et y reste pour travailler. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETACTIVEPAGE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X: Numero de la page (de 0 a 3) ║
║ OUT....: / ║
║ EXPLAIN: Renvois le Numéro de la Page Active. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE COPYPAGE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Source, Target: Page Source vers Page Cible ║
║ OUT....: / ║
║ EXPLAIN: Copy une Page source sur une page cible. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SAVESCREEN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Page = Numero de la Page a Copier en Memoire (de 0 à 3) ║
║ OUT....: / ║
║ EXPLAIN: Copy en mémoire une des 4 pages possibles. ║
║ NB.....: On ne peut que faire une copie a la fois. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE LOADSCREEN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Page = Numero de la Page sur laquelle on doit copier le screen. ║
║ OUT....: / ║
║ EXPLAIN: Copy dans une page le screen precedement garde en mémoire. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_TXT --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings. ║
║ CONTAINS.: 12 Procedures, 4 Fonctions. ║
║ EXTERN...: Need ZUUL_SWA Unit to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION SPECIAL_KEY ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: NUM (BYTE) = Numéro de la touche Spéciale à tester. ║
║ OUT....: True/False (BOOLEAN) = Touche Enfoncée ou pas. ║
║ EXPLAIN: Teste une des touches Spéciale du Clavier. ║
║ Voir plus bas pour le numéro de la touche à tester. ║
║ EXEMPLE: If SPECIAL_KEY(1)=True Then Write('Shift Droit Préssé'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CHAR_TO_HEXA ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: C (STRING) = String Hexa. ║
║ OUT....: (BYTE) = Valeur Hexa du String. ║
║ EXPLAIN: Convertit un String Hexa de 1 Char en Hexa sur un Byte. ║
║ EXEMPLE: Val1:=CHAR_TO_HEX('$F'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE WORD_TO_STRING ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: D (WORD) = Word à Convertir. ║
║ OUT....: STRING[4] = Valeur du String aprés conversion. ║
║ EXPLAIN: Transforme un Word Decimal en String[4] Hexadecimal. ║
║ EXEMPLE: T1:=WORD_TO_STRING(Val1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES DISP,DISPLN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: STRING ║
║ OUT....: / ║
║ EXPLAIN: AFFICHE CHAQUE CARACTERE AVEC UN BEEP. ║
║ EXEMPLE: Displn('Zuul as BouFFtou'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION LOWER,UPPER,MIDDER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: STRING ║
║ OUT....: / ║
║ EXPLAIN: PASSE DE MINUSCULE EN MAJUSCULE OU VICE VERCA. ║
║ EXEMPLE: Writeln(Lower('FREderic'),Upper(FREderic),Midder(FREderic)); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION CRYPT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: STR1(STRING), STR2(STRING), PH1(STRING) ║
║ OUT....: CRYPT(STRING) ║
║ EXPLAIN: CRYPTE/DECRYPTE UN STRING (STR1,STR2:ALPHABETS DE COMMUTATIONS). ║
║ EXEMPLE: ALAPHABET:='ABCDEFGHIJKLMNOPQRSTUVWXYZ !'; ║
║ COD_CRYPT:='MQLSKDJF!HGWNXBCVAPZ OEIRUYT'; ║
║ PHRASE:='ALORS CA CRYPTE DUR NON !'; ║
║ CRYPT(ALPHABET,COD_CRYPT,PHRASE); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE WAIT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: ATTENDS Q'UNE TOUCHE SOIT PRESSEE. ║
║ EXEMPLE: Wait; Toujours no Comments ! ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETCHAR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN) = Touche Clavier Frappée ou pas. ║
║ Ac,Sc (BYTE) = Code ASCII et Scan Code de la Touche Frappée. ║
║ EXPLAIN: Teste une touche du clavier. ║
║ EXEMPLE: If GETCHAR(Ac,Sc)=True Then Write(Chr(As)); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_TOOLS --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings. ║
║ CONTAINS.: 12 Procedures, 4 Fonctions. ║
║ EXTERN...: Need ZUUL_SWA Unit to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BEEP ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: PRODUIT UNE MODULATION DE SONS. ║
║ EXEMPLE: Beep; He he !!! (No Comments) ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CLS1,CLS2,CLS3 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1(POS X),Y1(POS Y1),Y2(POS Y2),LEN(LENGTH),T(DELAY) :INTEGER ║
║ OUT....: / ║
║ EXPLAIN: EFFACE DE MANIERE DIFFERENTES L'ECRAN SUIVANT LES PARAMETRES ║
║ EXEMPLE: CLS3(1,2,24,40,20); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Positions du Box à l'écran. ║
║ B1, B2, B3: (BOOLEAN) = PREFS ║
║ OUT....: / ║
║ EXPLAIN: AFFICHE UNE BOITE A L'ECRAN AUX COORDONEE PRECISEE. ║
║ PREFS..: B1=True => Affiche un Cadre autour de la Boite. ║
║ B2=True => Affiche une Ombre Autour de la Boite. ║
║ B3=True => Affiche une Trame dans la Boite. ║
║ EXEMPLE: BOX(10,3,40,15,True,True,False); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_MEN --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le 16.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion des Menus. ║
║ CONTAINS.: 2 Procedures. ║
║ EXTERN...: Need SWA,MSE,COL,TXT,TOO Units to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE MENU_BAR_DISP ║
╠══════════════════════════════════════════════════════════════════════════╣
║ IN.....: TbMen (Men_Dat) = Tableau 2D des Labels du Menu. ║
║ OUT....: / ║
║ EXPLAIN: Affiche la Barre du Menu à la Position 6,1. ║
║ EXEMPLE: MENU_BAR_DISP(TbMen); ║
╚══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GIVEMENU ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CONTAIN: 5 PROCEDURES. ║
║ IN.....: FreeM (BOOLEAN) = Autorise ou pas le cycling des Menu. ║
║ FreeP (BOOLEAN) = Autorise ou pas le cycling des Points. ║
║ HelpL (BOOLEAN) = Autorise ou pas l'aide en ligne. ║
║ IN/OUT.: MS , IS (Integer) = Numero du Menu et du Point Menu Sélectioné. ║
║ EXPLAIN: AFFICHE ET GERRE UN MENU TYPE TURBOVISION MAIS EN MIEUX !!! ║
║ SI AUCUN POINT DU MENU N'A ETE SELECTIONNE (TOUCHE ESCAPE), ║
║ ALORS "MS" ET "IS" CONTIENNENT 0,0. ║
║ OPTIONS: Dans la Définition des Labels, Un Asterisque "*" Indique une ║
║ Transition entre deux Point de Menu. ║
║ EXEMPLE: Qtt_Men:=2; ;2 Menus, et On Affiche le 1er ║
║ MS:=1; IS:=2; ;Aff 1er Menu et 2eme Point ║
║ TbMen[1,1]:='Main'; ;Entete Barre du Menu 1 ║
║ TbMen[1,2]:='Element 1'; ;Element du Menu 1 ║
║ TbMen[2,1]:='Prefs'; ;Entete Barre du Menu 2 ║
║ TbMen[2,2]:='Preference 1'; ;Elements du Menu 2 ║ ║
║ TbMen[2,3]:='*'; ;Point non Sélectionnable ║
║ TbMen[2,4]:='Preference 2'; ;Menu d'aide ║
║ TbHlp[1,2]:='Test du Menu d''aide'; ║
║ GIVEMENU(True,False,True,MS,IS); ;GO ! ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_GAD --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le 19.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gadgets. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need SWA,TOO,ASM,GFX,COL,TXT Units to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BUTTON ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER):Position du Bouton. ║
║ Cp (WORD):Couleur de Pen du Gadget. ║
║ Cu (WORD):Couleur de Fond du Gadget. ║
║ Cg (WORD):Couleur de Fond de l'écran. ║
║ GagBut (BUT):Reccord pour Stockage des données du Boutton. ║
║ Name (STRING):Nom du Bouton. ║
║ OUT....: / ║
║ EXPLAIN: Affiche un bouton Texte à l'écran aux coordonnées precisées. ║
║ EXEMPLE: BUTTON(3,10,146,17,17,But1,'Open File'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GADMSG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: GadBut (BUT) = Pointeur sur Structure Bouton. ║
║ B (WORD) = Code Bouton + Zone d'activation. ║
║ OUT....: True/False (Boolean) = Gadget Cliqué ou non. ║
║ EXPLAIN: Teste si le Gadget représenté par GadBut est cliqué ou pas. ║
║ Dans le cas ou il l'est, la Fonction GADMSG prend la valeur TRUE.║
║ EXEMPLE: If GADMSG(Gad01,1)=True Then ..... ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_DIR --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 18.05.94 (IUT Montpellier). ║
║ RELEASE..: Le 18.05.94. à l'IUT (Montpellier). ║
║ CONTENU..: Requesters de Directory. ║
║ CONTAIN..: X Procedures. ║
║ EXTERN...: Need WIN,GAD,SWA,TOO,MSE,TXT,COL,REQ Units to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION TEST_DEVICES ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Dev (BYTE): Numero du Device a Tester. ║
║ OUT....: True/False (BOOLEAN): True si le Device Existe. ║
║ EXPLAIN: Teste l'existence d'un directory Précisé par son numéro d'ordre. ║
║ EXEMPLE: If GET_DEVICES(3)=True Then Writeln('"C:" Existe'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GIVEDIR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CONTAIN: 6 PROCEDURES, 1 FONCTION. ║
║ IN.....: X(POS X), Y(POS Y) DU REQUESTER. : INTEGER ║
║ OUT....: SI (LONGINT) = TAILLE DU FICHIER SELECTIONE (EN OCTETS). ║
║ DIRSEL(DIRECTORY SELECTIONE), FILSEL(FICHIER SELECTIONE): STRING ║
║ EXPLAIN: AFFICHE A LA POSITION X,Y UN REQUESTER DE DIRECTORY. ║
║ ATTENDS QU'UN FICHIER SOIT SELECTIONNE, ET RENVOI ALORS ║
║ LE CHEMIN ET LE NOM DU FICHIER CHOISIT. ║
║ TOUCHES: "I"= Invoque le Fichier (COM ou EXE) Actuellement Sélectioné. ║
║ "E"= Edite le Fichier Actuellement Sélectioné. ║
║ "N"= Permet de rentrer un nouveau nom de fichier. ║
║ EXEMPLE: GiveDir(4,2,Si,Direc,File); ║
║ Writeln('Selection: ',Direc+File,' Taille: ',Si); ║
║ Positionne le directory en X=4 et Y=2,et affiche le choix ║
║ de l'utilisateur. Si File='' alors aucun choix n'a été éffectué. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_REQ --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le 18.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Requesters de tous types. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need ASM,GFX,SWA,COL,MSE,TXT,GAD,TOO,WIN Units to run correctly║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE EZ_REQUEST ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: TXT = (STRING) Texte a afficher dans le requester. ║
║ GAD = (STRING) Texte des Gadgets a afficher. ║
║ ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné. ║
║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST. ║
║ et attends la selection de l'un des gadgets. ║
║ Renvois le numéro du gadget choisit. ║
║ EXEMPLE: TXT:='Ok pour le test|des Gadgets|'; ║
║ GAD:='Ok|Cancel|Restore|'; ║
║ EZ_REQUEST(TXT,GAD,NUM,True); ║
║ NB.....: Les fin de lignes et les differents gadgets sont séparés par ║
║ la barre verticale '|'. ║
║ On est limite a maximum 10 gadgets affichables a l'écran. ║
║ Il faut passer en couleurs etendues avant l'appel de EZ_REQUEST, ║
║ Pour avoir des couleurs Correctes. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE ST_REQUEST ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: TXT = (STRING) Texte a afficher dans le requester. ║
║ GAD = (STRING) Texte des Gadgets a afficher. ║
║ LEN = (WORD) Longeur maximale du texte a taper. ║
║ ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné. ║
║ REP = (STRING) Texte Tapé par l'utilisateur. ║
║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST. ║
║ attends que l'utilisateur rentre une chaine de caracteres, ║
║ et attends la selection de l'un des gadgets. ║
║ Renvois le numéro du gadget choisit et la String rentrée. ║
║ EXEMPLE: TXT:='Entrez une Phrase|S.V.P|'; ║
║ GAD:='Ok|Cancel|Restore|'; ║
║ ST_REQUEST(TXT,GAD,REP,NUM,False); ║
║ NB.....: Les fin de lignes et les differents gadgets sont séparés par ║
║ la barre verticale '|'. ║
║ On est limite a maximum 10 gadgets affichables a l'écran. ║
║ Il faut passer en couleurs etendues avant l'appel de ST_REQUEST, ║
║ Pour avoir des couleurs Correctes. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE VA_REQUEST ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: TXT = (STRING) Texte a afficher dans le requester. ║
║ GAD = (STRING) Texte des Gadgets a afficher. ║
║ BMIN = (LONGINT) Borne minimale valable pour la valeur. ║
║ BMAX = (LONGINT) Borne maximale valable pour la valeur. ║
║ ESC = (BOOLEAN) Affichage du symbole de fermeture de la fenetre. ║
║ IN/OUT.: NUM = (SHORTINT) Numéro du gadget Selectionné. ║
║ VAI = (LONGINT) Valeur Rentrée par l'utilisateur. ║
║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST. ║
║ attends que l'utilisateur rentre une valeur, ║
║ et attends la selection de l'un des gadgets. ║
║ Renvois le numéro du gadget choisit et la valeur rentrée. ║
║ EXEMPLE: TXT:='Entrez une Phrase|S.V.P|'; ║
║ GAD:='Ok|Cancel|Restore|'; ║
║ BMIN:=0; BMAX:=150; ║
║ VA_REQUEST(TXT,GAD,BMIN,BMAX,NUM,False); ║
║ NB.....: Les fin de lignes et les differents gadgets sont séparés par ║
║ la barre verticale '|'. ║
║ On est limite a maximum 10 gadgets affichables a l'écran. ║
║ Il faut passer en couleurs etendues avant l'appel de ST_REQUEST, ║
║ Pour avoir des couleurs Correctes. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CO_REQUEST ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y = (WORD) Position ou Afficher le Requester. ║
║ CET = (WORD) Couleur Texte+Background en couleurs étendues. ║
║ LEN = (WORD) Longeur maximale du texte a afficher. ║
║ IN/OUT.: CIN = (STRING) String renvoyée par le requester. ║
║ EXPLAIN: Affiche un requester de string, et attends que l'utilisateur ║
║ ai préssé ENTER pour rendre la main et renvoyé le string. ║
║ EXEMPLE: Cin:='Changez cette phrase'; ║
║ CO_REQUEST(10,10,143,40,Cin); ║
║ NB.....: Si Cin n'est pas une chaine vide avant l'appel du requester, ║
║ Elle sera affichée dans celui-ci. ║
║ Dans le requester, les touches suivantes sont reconnues: ║
║ Enter, Delete, Backspace, Début, Fin, Fleche Droite,fleche Gauche║
╚═══════════════════════════════════════════════════════════════════════════╝
------------------------ IV - L'INTERFACE GRAPHIQUE --------------------------
A) - Hiérarchisation des unité.
Les unités de MOS utilisent souvent d'autres unités de MOS, en fait, elles
sont toutes liées entre elles. Voici la façon dont elles sont hiérarchisées:
EVOLUE ZUUL_DIR ZUUL_REQ
/T\ \ / \ \
| \ / \ \_______
| / \ \ \
| / \ \ \
| ZUUL_GAD ZUUL_WIN ZUUL_XMS \
| \ / | \ |
| \ / \ \ |
| ____ /| \___ \ ZUUL_SWA |
| / | \ \ |
| / | \ \ |
| ZUUL_TOO ZUUL_TXT ZUUL_MSE \ ZUUL_ASM
| \ / \ | /
| \ / \ | /
| \ / \ | /
PRIMAIRE ZUUL_COL ZUUL_BAS
B) - Structure générale d'un programme écrit pour MOS.
Le programme doit respecter la structure suivante.
Program XXXX;
Uses ZUUL_ASM, {TPU nécessaires aux initialisations}
ZUUL_MSE,
ZUUL_GAD,
........;
{Faire ici les déclarations, initialisations et procédures}
{Puis, le programme principal doit être composé comme suit}
Begin
INIT_ASM;
INIT_SCREEN;
INIT_MOUSE;
{Appel de la procédure principale}
DONE_MOUSE;
DONE_SCREEN;
DONE_ASM;
End.
Le fait de structurer son programme de cette manière n'est pas une obligation
mais un moyen de se simplifier la vie, car les procédures d'initialisations
et de restaurations sont en fait une série de commandes visant à initialiser
ou restaurer une trentaine de paramètres et données qu'il serait fastidieux
de faire soit-même au début de chaque programme.
L'interface graphique est en grande partie basée sur les fenêtres.
Il est recommandé d'ouvrir une fenêtre (même invisible) avant d'inscrire
du texte à l'écran, car le texte inscrit à l'intèrieur d'une fenêtre
dispose de possibilitées de gestion bien plus grandes que le texte normal
(Clipping automatique, Effacement de la fenêtre, autorafraichissement...)
Je ne peux que conseiller de regarder les exemples fournis pour plus de
détails sur la façon de programmer une interface avec MOS.
Voici à titre d'exemple quelques déclarations de fenêtres, boutons, sliders,
file requesters, ez requesters etc...
DESCRIPTION DES FONCTIONS ET PROCEDURES PAR UNITES
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_ASM --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau & Fraggy. ║
║ COMMENCE.: Le 13.04.94. ║
║ RELEASE..: Le 01.08.94 à l'IUT (Montpellier). ║
║ CONTENU..: Routines Assembleur Pur, Interruptions et Instructions 68000. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GET_DOS_VERSION ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Version (STRING) = Version et Revision de la Version. ║
║ EXPLAIN: Renvois le Numéro de version du DOS. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GET_MOUSE_VERSION ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Version (STRING) = Version du gestionnaire Souris. ║
║ EXPLAIN: Renvois la version du gestionnaire souris installé. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GET_MOUSE_TYPE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Type (STRING) = Type de Souris installée. ║
║ EXPLAIN: Renvois le type de souris qui a été installée. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SET_TASK ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: On / Off (BOOLEAN) = True ou False. ║
║ OUT....: / ║
║ EXPLAIN: Inhibe ou Restore les Taches de fond. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PARK ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Parke les têtes de lectures pour l'unité C et D. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GET_SPEED ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: (STRING) = Vitesse en Mhz du Processeur du Micro. ║
║ EXPLAIN: Donne la Vitesse à laquelle tourne le processeur de l'ordinateur.║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SCREEN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: True/False (BOOLEAN) : True = Ecran Affiché, False = Pas d'Ecran.║
║ OUT....: / ║
║ EXPLAIN: Affiche ou planque l'écran vidéo. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE ENDING_PROGRAM ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Termine le Programme... Ferme tout ce qui à été ouvert, etc. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PROTECTED_MODE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Passe en Mode Protégé (A Utiliser avec Prudence). ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FONCTIONS GET_PROCESSOR, GET_COPRO ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Numéro Processor/CoPro (BYTE). ║
║ EXPLAIN: Renvois un Numéro correspondant au type de Processeur et Copro. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES LOCK_CRITICAL, UNLOCK_CRITICAL ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Detourne ou Reinstalle la Gestion des Erreurs Critiques. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PRINT_SCREEN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Imprime le Contenu de l'Ecran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SETHORLOGETIMER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Freq (REAL) :Nouvelle Frequence de l'Horloge en Hertz. ║
║ OUT....: / ║
║ EXPLAIN: Redéfinit la Fréquence en Hertz de l'Horloge Interne. ║
║ EXEMPLE: SetHorlogeTimer(1000); Mesure du Temps au 1000eme de Secondes. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES RESTORE_TIMER et SET_TIMER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Freq (REAL) :Nouvelle Frequence de l'Horloge en Hertz. ║
║ OUT....: / ║
║ EXPLAIN: Installe et Désinstalle le Timer Interne. ║
║ NB.....: Pour Revenir à la Fréquence Normale, Il faut Passer 0 en Param. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES WARM_BOOT, COLD_BOOT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Execute un Reboot Propre à Chaud ou à Froid. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION PEEK ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: S,O (WORD) = Segment et Offset de l'Adresse. ║
║ OUT....: Valeur (BYTE) = Valeur de l'Octet a cet Endroit. ║
║ EXPLAIN: Renvois la Valeur de l'Octet se Trouvant à Cet Endroit. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE INIT_PRINTER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Réinitialise l'imprimante comme elle était au départ. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PURGE_BUFFER_CLAVIER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Vide le Buffer du Clavier. ║
║ EXEMPLE: Purge_Buffer_Calvier; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE LOCK_CTRLB,UNLOCK_CTRLB ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: BLOQUE OU DEBLOQUE LE CONTROL-BREAK. ║
║ EXEMPLE: Lock_CtrlB; Begin ...... End; UnLock_CtrlB; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE VAIT_VBL ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Attends la Synchronisation du Balayage Vertical. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE EXG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: A,B (INTEGER): Les deux Variables à échanger entre elles. ║
║ OUT....: / ║
║ EXPLAIN: Echange le contenu de deux variables "Integer". ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES INIT_ASM, DONE_ASM ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Initialisation des Variables au Niveau du Hardware. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_BASE --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Variables de Bases utilisées par d'autres procédures. ║
║ CONTAINS.: X Procedures, X Fonctions. ║
║ EXTERN...: / ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION INITGFX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (INTEGER) ║
║ EXPLAIN: Initialise le mode Graphique. ║
║ Renvois valeur du GraphResult si tout s'est bien passé ou pas. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_COL --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 12.04.94. ║
║ RELEASE..: Le 12.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion des Couleurs. ║
║ CONTAINS.: X Procedures, X Fonctions. ║
║ EXTERN...: No Specific TPU Needed. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GETRGBPALETTE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: C (BYTE): Numero de la Couleur. ║
║ OUT....: Red,Green,Blue (BYTE): Valeur des Couleurs (de 0 à 63). ║
║ EXPLAIN: Recupere les valeurs RGB de la couleur Specifiée. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GETRGBPALETTE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: C (BYTE): Numero de la Couleur. ║
║ OUT....: Red,Green,Blue (BYTE): Valeur des Couleurs (de 0 à 63). ║
║ EXPLAIN: Recupere les valeurs RGB de la couleur Specifiée. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_MSE --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.02.94 et terminé le 25.02.94 (IUT Montpellier). ║
║ RELEASE..: Le 15.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion de la Souris. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need Classic Units to run Correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SET_POINTER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Style (BYTE): Numero du Style du Pointeur. ║
║ OUT....: / ║
║ EXPLAIN: Change le Pointeur Souris Selon le Parametre Specifié. ║
║ - "P_Arrow" = 1 = Pointeur Normal en Forme de Flèche. ║
║ - "P_Busy" = 2 = Pointeur Occupé (Chronomètre). ║
║ - "P_Hand" = 3 = Pointeur Main. ║
║ - "P_Text" = 4 = Pointeur Texte. ║
║ - "P_Target"= 5 = Pointeur Cible. ║
║ - "P_Move" = 6 = Pointeur Déplacement. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE INIT_MOUSE, DONE_MOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Initialise et Réinstalle la Souris en Graphique. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FONCTION INITMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Initialise la Souris (La positionne au Centre de l'ecran). ║
║ EXEMPLE: INITMOUSE; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FONCTION BOXMOUSEG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 = Box de Test de la position souris à l'interieur. ║
║ B = Code du bouton a tester + de la zone. ║
║ 0 = Test Zone + Boutons non Actives. ║
║ 1 = Test Zone + Left Bouton. ║
║ 2 = Test Zone + Middle Button. ║
║ 3 = Test Zone + Right Bouton. ║
║ 10 = Test Zone sans se preocuper des Boutons. ║
║ OUT....: True / False (Boolean). ║
║ EXPLAIN: Teste si la souris se trouve dans le box specifie (Mode Gfx). ║
║ EXEMPLE: If BOXMOUSE(10,15,5,6,3)=True Then Writeln('OK'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE MOUSE_BLANKER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Gère le Mouse Blanker. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES SHOWMOUSE, HIDEMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Planque ou Deplanque la Souris ║
║ EXEMPLE: Et puis quoi encore !!! ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES GETMOUSET, GETMOUSEG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels). ║
║ G,M,D: Etats des Boutons Souris (Gauche, Milieu, Droite) = Bool. ║
║ OUT....: / ║
║ EXPLAIN: Renvois la position et l'etat des boutons de la souris. ║
║ EXEMPLE: GetMouseT(X,Y,LM,RM); Writeln(X,Y,LM,RM); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES PUTMOUSET, PUTMOUSEG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y: Coordonées de la Souris (Caracteres ou Pixels) ║
║ OUT....: / ║
║ EXPLAIN: Positionne la souris aux coordonées précisées (Textes ou GFX). ║
║ EXEMPLE: PutMouseT(X,Y); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES LIMITEMT, LIMITEMG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2: Coordonées du Box Limite. ║
║ OUT....: / ║
║ EXPLAIN: Limite les déplacement de la souris dans un box. ║
║ EXEMPLE: LimiteMouseT(16,50,5,10); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SPEEDMOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X: Mickeys; Y: Pixels ║
║ OUT....: / ║
║ EXPLAIN: Definit le raport entre Mickeys et Pixels. ║
║ EXEMPLE: SpeedMouse(5,10); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES INIT_CURSOR & LOCATE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER) = Position X,Y du Curseur Graphique. ║
║ Style (INTEGER) = Style du Curseur Graphique. ║
║ Blink (INTEGER) = Vitesse Clignotement en 100eme de Secondes. ║
║ Loc (LOCG) = Pointeur sur Structure Curseur. ║
║ OUT....: / ║
║ EXPLAIN: Positionne le Curseur Graphique en X,Y, Initialise le Style ║
║ du Curseur (1=Plain, 2=Underline, 3=Vertical), et le Blink. ║
║ EXEMPLE: INIT_CURSOR(1,20,Loc); LOCATE(200,100,Loc); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CURSONG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Loc (LOCG) = Pointeur sur Structure Curseur. ║
║ OUT....: / ║
║ EXPLAIN: Affiche le Curseur Graphique en X,Y. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CURSOFFG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Loc (LOCG) = Pointeur sur Structure Curseur. ║
║ OUT....: / ║
║ EXPLAIN: Supprime le Curseur Graphique en X,Y. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION CLICK_MOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN). ║
║ EXPLAIN: Teste si l'un des boutons de la souris est cliqué. ║
║ EXEMPLE: If CLICK_MOUSE=True Then ... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES DEF_DOUBLE_CLICK, DEF_MOUSE_DELAY ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: T (INTEGER): Valeur en Milisecondes pour un Double Click ou Delay║
║ OUT....: / ║
║ EXPLAIN: Redéfinit le delay pour un double click ou le Delay Click. ║
║ EXEMPLE: DEF_DOUBLE_CLICK(100); DEF_MOUSE_DELAY(100); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION MOUSE_DELAY ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN): True = Mouse Delay Passé. ║
║ EXPLAIN: Permet de Savoir si le Delay Mouse Clické est passé. ║
║ EXEMPLE: If MOUSE_DELAY=True Then ... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION CLICK_MOUSE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN): True = Double Click Réussit. ║
║ EXPLAIN: Permet de Savoir si on a Double Clické sur un Item. ║
║ EXEMPLE: If CLICK_MOUSE=True Then ... ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_SWAP --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau & Fraggy. ║
║ COMMENCE.: Le 26.11.93 et terminé le 26.11.93 (Piaule à Vincent). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion Screen, Routines Asm, Swap Pages... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETACTIVEPAGE ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X: Numero de la page (de 0 a 3) ║
║ OUT....: / ║
║ EXPLAIN: Renvois le Numéro de la Page Active. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES TSWAP.SAVE, TSWAP.LOAD ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Page = Numero de la Page sur laquelle on doit copier le screen. ║
║ OUT....: / ║
║ EXPLAIN: Copy dans une page le screen precedement garde en mémoire. ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_TXT --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings. ║
║ CONTAINS.: 12 Procedures, 4 Fonctions. ║
║ EXTERN...: Need ZUUL_SWA Unit to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION SPECIAL_KEY ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: NUM (BYTE) = Numéro de la touche Spéciale à tester. ║
║ OUT....: True/False (BOOLEAN) = Touche Enfoncée ou pas. ║
║ EXPLAIN: Teste une des touches Spéciale du Clavier. ║
║ Voir plus bas pour le numéro de la touche à tester. ║
║ EXEMPLE: If SPECIAL_KEY(1)=True Then Write('Shift Droit Préssé'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CHAR_TO_HEXA ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: C (STRING) = String Hexa. ║
║ OUT....: (BYTE) = Valeur Hexa du String. ║
║ EXPLAIN: Convertit un String Hexa de 1 Char en Hexa sur un Byte. ║
║ EXEMPLE: Val1:=CHAR_TO_HEX('$F'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE WORD_TO_STRING ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: D (WORD) = Word à Convertir. ║
║ OUT....: STRING[4] = Valeur du String aprés conversion. ║
║ EXPLAIN: Transforme un Word Decimal en String[4] Hexadecimal. ║
║ EXEMPLE: T1:=WORD_TO_STRING(Val1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DISPG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ Affiche un texte aux coordonées X,Y et avec la Couleur de fond C ║
║ En effaçant ce qu'il y avait avant. ║
║ IN: / OUT: / MODIFIABLE SELON BESOINS. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION LOWER,UPPER,MIDDER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: STRING ║
║ OUT....: / ║
║ EXPLAIN: PASSE DE MINUSCULE EN MAJUSCULE OU VICE VERCA. ║
║ EXEMPLE: Writeln(Lower('FREderic'),Upper(FREderic),Midder(FREderic)); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION CRYPT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: STR1(STRING), STR2(STRING), PH1(STRING) ║
║ OUT....: CRYPT(STRING) ║
║ EXPLAIN: CRYPTE/DECRYPTE UN STRING (STR1,STR2:ALPHABETS DE COMMUTATIONS). ║
║ EXEMPLE: ALAPHABET:='ABCDEFGHIJKLMNOPQRSTUVWXYZ !'; ║
║ COD_CRYPT:='MQLSKDJF!HGWNXBCVAPZ OEIRUYT'; ║
║ PHRASE:='ALORS CA CRYPTE DUR NON !'; ║
║ CRYPT(ALPHABET,COD_CRYPT,PHRASE); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE WAIT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: ATTENDS Q'UNE TOUCHE SOIT PRESSEE. ║
║ EXEMPLE: Wait; Toujours no Comments ! ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETCHAR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN) = Touche Clavier Frappée ou pas. ║
║ Ac,Sc (BYTE) = Code ASCII et Scan Code de la Touche Frappée. ║
║ EXPLAIN: Teste une touche du clavier. ║
║ EXEMPLE: If GETCHAR(Ac,Sc)=True Then Write(Chr(As)); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_TOOLS --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 06.11.93 et terminé le 16.11.93 (IUT Montpellier). ║
║ RELEASE..: Le 15.12.93 à l'IUT (Montpellier). ║
║ CONTENU..: Gestion d'Ecran, Fenetres, Requesters, Traitement Strings. ║
║ CONTAINS.: 12 Procedures, 4 Fonctions. ║
║ EXTERN...: Need ZUUL_SWA Unit to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BEEP ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: PRODUIT UNE MODULATION DE SONS. ║
║ EXEMPLE: Beep; He he !!! (No Comments) ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BEVEL ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Position du Bevel à l'écran. ║
║ STYLE,CO: (INTEGER) = Styles et Couleurs de Remplissage. ║
║ CAVE: (BOOLEAN) = Cadre Inverse ou Pas. ║
║ FILL: (BOOLEAN) = Remplis le Box ou Pas. ║
║ OUT....: / ║
║ EXPLAIN: AFFICHE UNE BOITE EN RELIEF A L'ECRAN AUX COORDONEE PRECISEE. ║
║ EXEMPLE: BEVEL(10,100,130,110,True); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE STRING_BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER) = Position de la Boite à l'écran. ║
║ C1,C2 (INTEGER) = Couleurs de Dessin de la Boite. ║
║ Style (BOOLEAN) = Style de Boite (True=Entourée, False=Refief). ║
║ OUT....: / ║
║ EXPLAIN: Affiche une boite Style String-Box à l'écran. ║
║ EXEMPLE: STRING_BOX(10,100,130,110,0,7,True); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION LIGHT_BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: LB (LIGHTB) = Pointeur sur Structure Light-Box. ║
║ M (WORD) = Numéro du Bouton Souris à Activer. ║
║ OUT....: True/False (BOOLEAN) = Cadre Tracé et Relaché. ║
║ EXPLAIN: Affiche et Agrandit un cadre en Pointillés a l'écran. ║
║ Le coordonées de la Boite tracée sont accéssibles en lecture ║
║ Dans les Champs LightB.(X1,Y1,X2,Y2). ║
║ EXEMPLE: If Light_Box(LB,1)=True Then ║
║ Write(LB.X1,' ',LB.Y1,' ',LB.X2,' ',LB.Y2); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_XMS --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau & Greg Estabrooks. ║
║ COMMENCE.: ?. ║
║ RELEASE..: Le 22.07.94 à HTS (Montescot). ║
║ CONTENU..: Routines de Gestion de l'XMS et de la HMA. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSDriver ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN): True si XMS Driver Existe. ║
║ EXPLAIN: Teste l'existence d'un driver XMS. Si le driver est Installé, ║
║ La Routine Charge l'XMSControl et le XMS API pour les autres Rout║
║ EXEMPLE: If XMSDriver Then Writeln('XMS Driver Exist'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSControlAdr ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: (POINTER): Pointer XMSController. ║
║ EXPLAIN: Retourne un Pointeur sur le Controller XMS. ║
║ EXEMPLE: P:=XMSControlAdr; ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSVer ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Version (WORD): Un Word Contenant la Version. ║
║ EXPLAIN: Retourne la Version du driver XMS. ║
║ EXEMPLE: Writeln('XMSDriver Version: ','XMSver); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSRev ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Revision (WORD): Un Word Contenant le Numéro de Révision. ║
║ EXPLAIN: Retourne le Numéro de Révision du driver XMS. ║
║ EXEMPLE: Writeln('XMSDriver Revision: ','XMSver); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSGetFreeMem ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Free Memory (WORD): Mémoire Libre en Kb. ║
║ EXPLAIN: Retourne la Quantitée de Mémoire Libre en Kb. ║
║ EXEMPLE: Writeln('XMS Libre: ','XMSGetFreeMem); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSGetLargeBlock ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: Largest Free Block (WORD): Block Mémoire le Plus Gros. ║
║ EXPLAIN: Retourne la Taille du Plus gros bloc Mémoire Libre en Kb. ║
║ EXEMPLE: Writeln('XMS Largest Block: ','XMSGetLargeBlock); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION XMSGetMem ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Block (WORD) = ║
║ OUT....: Handle (POINTER) = Handle de la Mémoire Allouée. ║
║ EXPLAIN: Retourne Un Handle sur la Place Mémoire Allouée. ║
║ NB.....: Si il y a une Erreur, le Handle est Invalide. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE XMSGetMem ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Sucrer. ║
║ OUT....: / ║
║ EXPLAIN: Libère la Place Mémoire Allouée par XMSGetMem. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE XMSGetMem ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Sucrer. ║
║ OUT....: / ║
║ EXPLAIN: Permet de Déplacer dans l'XMS des Blocs de Mémoire alloués ║
║ par la Fonction XMSGetMem. ║
║ NB.....: La longueur du Bloc doit être Paire. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE XMSLockBlock ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Figer. ║
║ OUT....: / ║
║ EXPLAIN: Permet de Bloquer un Bloc de Mémoire alloués dans l'XMS. ║
║ On ne peut plus ensuite les déplacer. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE XMSUnLockBlock ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Handle (WORD) = Pointeur sur le Bloc à Débloquer. ║
║ OUT....: / ║
║ EXPLAIN: Permet de Débloquer un Bloc de Mémoire alloués dans l'XMS. ║
║ Cette fonction doit être utilisée aprés XMSLockBlock. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE XMSReallocate ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Handle (WORD) = Pointeur sur le Bloc de Mémoire. ║
║ NewSize (WORD) = Nouvelle Taille du Bloc. ║
║ OUT....: / ║
║ EXPLAIN: Réalloue un Nouveau Bloc de Mémoire XMS avec une Nouvelle Taille.║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE HMAExists ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN) = True Si elle Existe. ║
║ EXPLAIN: Teste si la Mémoire HMA Existe ou pas. ║
║ EXEMPLE: If HMAExists Then Writeln('Mémoire HMA installée.'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE HMARequest ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: RequestType (WORD) = ║
║ OUT....: / ║
║ EXPLAIN: Tente de Réserver 64 Ko de HMA. ║
║ NB.....: Le RequestType doit Etre FFFF = Pour une Application. ║
║ ou bien la Taille Mémoire Demandée s'il s'agit d'un TSR. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE HMARelease ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Libère la Mémoire HMA Allouée Précédement. ║
║ NB.....: Le Code/Datas Stockés dans cette Zones Devienent Inaccéssibles. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GlobalEnableA20 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Permet Globalement le "A20 Line". ║
║ NB.....: Ne doit être Utilisé que par les Programmes Contrôlant la HMA. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GlobalDisableA20 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Empèche Globalement le "A20 Line". ║
║ NB.....: Cette Routine Peut Prendre Beaucoup de Temps / Certains Systemes.║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE LocalEnableA20 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Permet Localement le "A20 Line". ║
║ NB.....: Ne doit être Utilisé que par les Programmes Contrôlant la HMA. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE LocalDisableA20 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Empèche Localement le "A20 Line". ║
║ NB.....: Cette Routine Peut Prendre Beaucoup de Temps / Certains Systemes.║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION QueryA20 ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: True/False (BOOLEAN) = True si le A20 est Physiquement Désactivé.║
║ EXPLAIN: Teste si le A20 est Physiquement Désactivé. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION PtrToLong ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: P (POINTER) = Pointeur à Passer en Long. ║
║ OUT....: Long (LONGINT) = Pointeur Transformé. ║
║ EXPLAIN: Transforme un Poiteur PC en Pointeur 32 Bits Long. ║
║ EXEMPLE: ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_GAD --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le 19.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Gadgets. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need SWA,TOO,ASM,GFX,COL,TXT Units to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURES INIT_SCREEN, DONE_SCREEN ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN/OUT.: / ║
║ EXPLAIN: Initialise le Screen en Graphique ou Reinstalle le Screen Initial║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DEFINE_GADGETS ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN/OUT.: / ║
║ Dessine et Stocke en Mémoire les Gadgets Speciaux Dessinés en Graphique. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE KILL_GADGETS ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN/OUT.: / ║
║ Libere l'espace mémoire allouée pour les Gadgets Spéciaux. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SLIDER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER): Coordonées du Cadre du Slider. ║
║ Qtt (INTEGER):Nombre d'Items Maximums dans la liste. ║
║ Aff (INTEGER):Nombre d'Items Affichés dans le Slider. ║
║ Typ (INTEGER):Type de Slider a Afficher (Vertical ou Horizontal) ║
║ GDep (BOOLEAN):Affichage des Gadgets d'aides (Boutons). ║
║ Sld (SLIDE):Reccord pour Stockage des données du Slider. ║
║ Psl (INTEGER):Valeur de la Position du Gadget dans le Slider. ║
║ OUT....: / ║
║ EXPLAIN: Affiche un Gadget Slider en Mode Graphique selon les Parametres. ║
║ OUT....: Position dans la Liste. ║
║ EXEMPLE: SLIDER(10,50,130,70,500,50,0,True,Sld1,RetSld); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE RADIO_BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER):Position du Radio-Box. ║
║ Style (WORD):Design du Radio-Box. 0=Invisible, 1=Amiga, 2=PC. ║
║ Status (BOOLEAN):Etat du Radio-Box. True=Sélectioné. ║
║ R (RAD):Pointeur sur Structure du Radio-Box. ║
║ EXPLAIN: Affiche un Radio-Box en Graphique selon les Parametres précisés. ║
║ OUT....: / ║
║ EXEMPLE: RADIO_BOX(10,50,1,True,Rad1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE BUTTONG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER):Position du Bouton. ║
║ Size (INTEGER):Taille Horizontale du Boutton. ║
║ Lock (BOOLEAN):Boutton On/Off Pouvant rester Enfoncer (TRUE). ║
║ GagBut (BUT):Reccord pour Stockage des données du Bouton. ║
║ Name (STRING):Nom du Bouton. ║
║ EXPLAIN: Affiche un Boutton en Mode Graphique selon les Parametres. ║
║ OUT....: / ║
║ NB.....: Il n'est pas possible d'avoir un bouton Sélectionné dés le départ║
║ EXEMPLE: BUTTONG(10,50,130,False,But1,'Open File'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CYCLER_BUT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER):Position du Bouton. ║
║ Size (INTEGER):Taille Horizontale du Boutton. ║
║ Num (INTEGER):Numero du Bouton Afiché en Premier. ║
║ GagBut (BUT):Reccord pour Stockage des données du Bouton. ║
║ Name (STRING):Nom du Bouton. ║
║ OUT....: / ║
║ EXPLAIN: Affiche un Bouton Cycle à Plusieurs entrées Textes. ║
║ EXEMPLE: CYCLER_BUT(410,80,99,ButC,' CRUNCH| DECRUNCH| AUTO DETECT|');║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DRAW_SLIDER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: S (Var S:SLIDE): Pointeur sur Structure Slider. ║
║ OUT....: / ║
║ EXPLAIN: Reaffiche le Slider en question à l'écran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DRAW_RADIO_BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: R (SLIDE): Pointeur sur Structure Bouton Radio. ║
║ OUT....: / ║
║ EXPLAIN: Reaffiche le Bouton radio en question à l'écran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DRAW_BUTTONG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: B (ButG): Pointeur sur Structure Boutton. ║
║ OUT....: / ║
║ EXPLAIN: Reaffiche le Bouton en question à l'écran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETMSG_BUT ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: B (BUT) = Pointeur sur Structure BoutonG. ║
║ M (WORD) = Code Bouton + Zone d'activation. ║
║ OUT....: True/False (BOOLEAN) = Gadget Cliqué ou non. ║
║ EXPLAIN: Teste si le Gadget représenté par "B" est cliqué ou pas. ║
║ Dans le cas ou il l'est, la Fonction GADMSG prend la valeur TRUE.║
║ EXEMPLE: If GETMSG_BUT(Gad01,1)=True Then ..... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETMSG_RADIO ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: R (RAD) = Pointeur sur Structure Radio-Box. ║
║ M (WORD) = Code Bouton + Zone d'activation. ║
║ OUT....: True/False (Boolean) = True = Bouton Préssé, False = En Attente. ║
║ EXPLAIN: Renvois l'état d'un Radio-Box définit (Sélectioné ou pas). ║
║ NB.....: L'état TRUE du Bouton est Passagé. Pour tester si le Bouton ║
║ Radio est Sélectionné ou pas, il faut tester le Champs "Status". ║
║ de la Structure Radio. ║
║ EXEMPLE: If GETMSG_RADIO(Rad1,1)=True Then ..... ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GETMSG_SLIDER ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: S (SLIDE) = Pointeur sur Structure Slider. ║
║ M (WORD) = Code Bouton + Zone d'activation. ║
║ OUT....: True/False (Boolean) = Slider Déplacé ou pas. ║
║ EXPLAIN: Teste si le Slider est Déplacé ou pas et gere ses déplacements. ║
║ EXEMPLE: If GETMSG_SLIDER(Sld1,1)=True Then ..... ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_WIN --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le ........ à l'IUT (Montpellier). ║
║ CONTENU..: Windows (Gestion des fenêtres). ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need ZUUL_SWA Unit & ZUUL_TOO Unit to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE INIT_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (INTEGER): Coordonées de la fenêtre. ║
║ IDCMP (WORD): Flags IDCMP de la fenêtre. ║
║ Bit 0 $001 = Active Window Activate. ║
║ Bit 1 $002 = Extended Gadget Extended. ║
║ Bit 2 $004 = Size Gadget Size. ║
║ Bit 3 $008 = Swap Gadget Swap. ║
║ Bit 4 $010 = Close Gadget Close. ║
║ Bit 5 $020 = Backdrop Fenêtre Toujours vers l'arrière. ║
║ Bit 6 $040 = Block Flag Limit Move Window to Screen. ║
║ Bit 7 $080 = Title Fenêtre Avec Titles. ║
║ Bit 8 $100 = Border Fenêtre Avec Bords. ║
║ Bit 9 $200 = Cursor Assignation d'un Curseur à la Fenêtre. ║
║ Bit 10 $400 = Loked Fenêtre Bloquée en Active ou Inactive. ║
║ Bit 11 * $800 = CON/RAW Fenêtre CON si Activé. ║
║ Bit 12 $1000 =Modale Win Modale=Refresh Screen when move. ║
║ Bit 13 $2000 =Transparent Fenêtre Transparente. ║
║ Bit 14 $4000 =Move Fenêtre peut être Déplacée. ║
║ Bit 15 $8000 =Relief Fenêtre Avec Bords en Reliefs. ║
║ Name (STRING): Nom de la fenêtre. ║
║ W (WIN): Pointeur sur Structure Fenêtre allouée. ║
║ OUT....: / ║
║ EXPLAIN: Initialise la structure Fenêtre. ║
║ NB.....: Utilisez le programme "FLAG_WIN" pour définir aisément les bits. ║
║ EXEMPLE: INIT_WINDOW(10,50,450,120,$13DE,'FENETRE 1',Win1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SUP_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Xu,Yu,Xv,Yv (INTEGER): Secondes Coordonées de la fenêtre. ║
║ X1,Y1,X2,Y2 (INTEGER): Size Min et Max de la Fenêtre. ║
║ BarSld (INTEGER): Nombre et position des barres de la Fenêtre. ║
║ Coul (INTEGER): Couleur de fond de la Fenêtre. ║
║ W (WIN): Pointeur sur Structure fenêtre allouée. ║
║ EXPLAIN: Initialise des définitions suplémentaires pour la fenêtre. ║
║ OUT....: /. ║
║ NB.....: Cette Procedure doit toujours être apellée aprés INIT_WINDOW. ║
║ EXEMPLE: SUP_WINDOW(0,0,200,100,80,50,530,200,3,Col5,W); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE DRAW_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN): Pointeur sur Structure Window. ║
║ OUT....: /. ║
║ EXPLAIN: Affiche la fenêtre définie dans INIT_WINDOWG avec ses Gadgets. ║
║ EXEMPLE: DRAW_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE TASK_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN): Pointeur sur Structure Window. ║
║ OUT....: / ║
║ EXPLAIN: Gere le Multifenetrage pour des fenêtres non modales ║
║ Déclarées comme telles (Bit 12 à 1). ║
║ EXEMPLE: TASK_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE RENAME_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN): Pointeur sur Structure Window. ║
║ NewName (STRING): Nouveau nom de la Fenêtre. ║
║ OUT....: / ║
║ RESTRICTIONS: La fenêtre doit posseder une barre de Titre. ║
║ EXPLAIN: Renome la fenêtre (Change son titre). ║
║ EXEMPLE: RENAME_WINDOW('I WANT SOME GIRLS',Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CLEAR_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN): Pointeur sur Structure Window. ║
║ OUT....: / ║
║ EXPLAIN: Nettoie l'interieur de la fenêtre quelquesoit son type. ║
║ EXEMPLE: CLEAR_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION BOX_IN_BOX ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1,X2,Y2 (Integer) = Coordonées 1er Box. ║
║ X3,Y3,X4,Y4 (Integer) = Coordonées 2nd Box. ║
║ OUT....: True/False (BOOLEAN) = True = Ils Sont superposés. ║
║ EXPLAIN: Teste si 2 box sont partiellement ou totalement imbriqués. ║
║ EXEMPLE: If Box_In_Box(1,100,300,200,50,50,500,120)=True Then ║
║ Write('Ils se superposent...'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE CLIP_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: CLIP (BOOLEAN): Clipping Fenêtre Actif ou Pas (True=Actif). ║
║ W (WIN): Pointeur sur Structure Window. ║
║ OUT....: / ║
║ EXPLAIN: Autorise ou pas le clipping dans une fenêtre. ║
║ Tout ce qui sera affiché aprés cette instruction ne pourra ║
║ l'être que dans la fenêtre. ║
║ EXEMPLE: CLIP_WINDOW(True,W1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE ZOOM_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Mode (BOOLEAN): False = Zoom In, True = Zoom Out. ║
║ Window1 (WIN): Pointeur sur Structure Window. ║
║ EXPLAIN: Fait un Zoom sur la Fenêtre en question à partir de la pos Souris║
║ OUT....: / ║
║ EXEMPLE: ZOOM_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE KILL_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN): Pointeur sur Structure Window. ║
║ EXPLAIN: Détruit la fenêtre en question, et libère l'espace mémoire. ║
║ OUT....: / ║
║ EXEMPLE: KILL_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION WINDOW_READY ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Window1 (WIN) = Pointeur sur Structure Window. ║
║ OUT....: True/False (BOOLEAN) = Fenêtre Ok (True). ║
║ EXPLAIN: Prévient si la Fenêtre est prête pour tester les Gadgets. ║
║ EXEMPLE: If WINDOW_READY(Window1) Then ...... <Test Gadgets Personnels> ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE IDCMP_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: IDCMP (WORD): Nouveaux Flags IDCMP de la Fenêtre. ║
║ Window1 (WIN): Pointeur sur Structure Window. ║
║ EXPLAIN: Redéfinit les flags IDCMP pour la Fenêtre Pointée. ║
║ OUT....: / ║
║ EXEMPLE: IDCMP_WINDOW($47DE,Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE IDRES_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: IDRES (WORD): Nouveaux Flags IDRES de la Fenêtre. ║
║ Window1 (WIN): Pointeur sur Structure Window. ║
║ EXPLAIN: Redéfinit les flags IDRES pour la Fenêtre Pointée. ║
║ OUT....: / ║
║ EXEMPLE: IDRES_WINDOW($0003,Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION ACTIVE_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: W (WIN): Pointeur sur Structure Window. ║
║ OUT....: Val (INTEGER): Une Valeur Précisant le type d'activation. ║
║ 1 = Gadget Close Window Activated. ║
║ 2 = Gadget Swap Window Activated. ║
║ 3 = Gadget Extend Window Activated (New Size,Pos).║
║ 4 = Gadget Resize Window Activated. ║
║ 5 = Window Activated. ║
║ 6 = Window Inactived. ║
║ Pas encore fonctionnel 7 = Char or String was Input (CON Window Only). ║
║ 8 = Window has been Swapped and may be Refresh. ║
║ 9 = Window has been Moved. ║
║ EXPLAIN: Permet de gerer une fenêtre (Activation, Gadgets, Extend...). ║
║ EXEMPLE: Even:=ACTIVE_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE MOVE_WINDOW ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: W (WIN): Pointeur sur Structure Window. ║
║ EXPLAIN: Permet le déplacement en mode graphique d'une fenêtre. ║
║ EXEMPLE: MOVE_WINDOW(Window1); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_DIR --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 18.05.94 (IUT Montpellier). ║
║ RELEASE..: Le 18.05.94. à l'IUT (Montpellier). ║
║ CONTENU..: Requesters de Directory. ║
║ CONTAIN..: X Procedures. ║
║ EXTERN...: Need WIN,GAD,SWA,TOO,MSE,TXT,COL,REQ Units to run correctly. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION GET_DEVICE_NAME ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Root (STRING) = Label du Volume (Ex: "C:\"). ║
║ OUT....: Name (STRING) = Nom du Volume. ║
║ EXPLAIN: Renvois le Nom du Volume Spécifié. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION TEST_DEVICES ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: Dev (BYTE): Numero du Device a Tester. ║
║ OUT....: True/False (BOOLEAN): True si le Device Existe. ║
║ EXPLAIN: Teste l'existence d'un directory Précisé par son numéro d'ordre. ║
║ EXEMPLE: If GET_DEVICES(3)=True Then Writeln('"C:" Existe'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE GET_FILEDIR ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER): Position X,Y de la Fenêtre. ║
║ Sv (INTEGER): Taille Verticale de la Fenêtre. ║
║ Name (STRING): Nom de la Fenêtre. ║
║ OkBut(STRING): Nom pour le Gadget 'OK'. ║
║ Mask (STRING): Mask pour le Directory. ║
║ Filordir(BYTE): Utilisé dans la prochaine version de MOS, ║
║ Ici, mettez-le toujours à 0. ║
║ OUT...: DirSel (STRING): Directory Slectionné. ║
║ FilSel (STRING): File Slectionné. ║
║ Size (LONGINT): Taille du Fichier Selectionné. ║
║ EXPLAIN: Affiche et gere un Requester de type File Requester. ║
║ Renvois le nom du Fichier Sélectionné sinon, une Chaine Vide. ║
║ NB.....: Voir les Commentaires du même Requester mais en texte pour ║
║ plus de détails. ║
║ EXEMPLE: GET_FILEDIR(50,30,280,'LOAD','OK','*.*',0,DirSel,FilSel,Size); ║
╚═══════════════════════════════════════════════════════════════════════════╝
**********************
* //\\ *
* // \\ *
* // \\ *
* // /\ \\ *
* \\ \/ // *
* \\ // *
* \\ // *
* \\// *
**********************
╔═══════════════════════════════════════════════════════════════════════════╗
║ --- UNIT ZUUL_REQ --- ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ CREATEUR.: F.Cheveau. ║
║ COMMENCE.: Le 15.12.93 et terminé le 15.12.93 (IUT Montpellier). ║
║ RELEASE..: Le 18.04.94 à l'IUT (Montpellier). ║
║ CONTENU..: Requesters de tous types. ║
║ CONTAINS.: X Procedures. ║
║ EXTERN...: Need ASM,GFX,SWA,COL,MSE,TXT,GAD,TOO,WIN Units to run correctly║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE MAIN_TASK ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: / ║
║ OUT....: / ║
║ EXPLAIN: Gère les principale Tâches telles que les Erreurs pouvant ║
║ Survenir, le Blanker Souris.... etc ║
║ NB.....: Doit être Appelée régulièrement (Procedure d'interruption), ║
║ ou Boucle perpétuelle de test. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ FUNCTION CO_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y = (WORD) Position ou Afficher le Requester. ║
║ SIZ = (WORD) Longeur maximale du Requester à l'écran. ║
║ LEN = (BYTE) Longeur maximale du texte a afficher. ║
║ CoB = (BYTE) Couleur du Background. ║
║ Sty = (BYTE) Style de Design pour le Requester. ║
║ 0 = String Box, 1 = Box Normale. ║
║ IN/OUT.: CIN = (STRING) String renvoyée par le requester. ║
║ EXPLAIN: Affiche un requester de string, le Gere, et renvois "TRUE" quand ║
║ L'utilisateur à Pressé ENTER. Le String est lu dans "CIN". ║
║ EXEMPLE: Cin:='Changez cette phrase'; ║
║ CO_REQUEST(10,10,143,40,Cin); ║
║ NB.....: Si Cin n'est pas une chaine vide avant l'appel du requester, ║
║ Elle sera affichée dans celui-ci. ║
║ Dans le Requester, les touches suivantes sont reconnues: ║
║ Enter, Delete, Backspace, Début, Fin, Flèche Droite,Flèche Gauche║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PROGRESS_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: NAME (STRING) = Nom de la Fenêtre. ║
║ EXPLAIN (STRING) = Label d'Explications d'en dessous de la Barre.║
║ Val (INTEGER) = Valeur du Pourcentage (0-100%). ║
║ CoB (INTEGER) = Couleur de Remplissage du Fond. ║
║ P (TPROGRESS) = Pointeur sur Structure TProgress. ║
║ OUT....: / ║
║ EXPLAIN: Affiche et Gère un Requester d'Indice de Progression en (%). ║
║ NB.....: L'initialisation du Requester se Fait en Plaçant à 0 la ║
║ Variable "Val", et sa Fermeture, en Plaçant a 100 "Val". ║
║ Si le Bouton Abort est Préssé, le Champ "Abort" est mis à TRUE. ║
║ EXEMPLE: PROGRESS_REQUESTG('Computing...','Crunching',33,12,P); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE HARDWARE_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre. ║
║ NAME (STRING) = Nom de la Fenêtre. ║
║ OUT....: / ║
║ EXPLAIN: Affiche et Gère un Requester d'Affichage du Harware de ║
║ l'Ordinateur sur lequel a été Lancé le Requester. ║
║ EXEMPLE: HARDWARE_REQUESTG(200,100,'YOUR HARDWARE CONFIGURATION IS...'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ - PROCEDURE MEMORY REQUESTG - ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre. ║
║ NAME (STRING) = Nom de la Fenêtre. ║
║ OUT....: / ║
║ EXPLAIN: Affiche le Status Mémoire Initial, Actuel, et la Taille ║
║ du plus gros bloc Mémoire Disponible (XMS, Version DOS...). ║
║ EXEMPLE: MEMORY_REQUESTG(200,100,'SEE IT ....'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE SYSTEM_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X1,Y1 (INTEGER) = Coordonées de la Fenêtre. ║
║ NAME (STRING) = Nom de la Fenêtre. ║
║ OUT....: / ║
║ EXPLAIN: Affiche et Gère un Requester de Configuration du Systeme MOS. ║
║ EXEMPLE: SYSTEM_REQUESTG(200,100,'SELECT YOUR CONFIGURATION'); ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE EZ_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: NAME (STRING) = Nom de la Fenêtre. ║
║ TXT (STRING) = Texte a afficher dans le requester. ║
║ GAD (STRING) = Texte des Gadgets a afficher. ║
║ OUT....: NUM (INTEGER) = Numéro du gadget Selectionné. ║
║ EXPLAIN: Affiche au centre de l'écran un requester du type EZ_REQUEST. ║
║ et attends la selection de l'un des gadgets. ║
║ Renvois le numéro du gadget choisit. ║
║ EXEMPLE: NAM:='SYSTEM REQUEST'; ║
║ TXT:='Ok pour le test|des Gadgets|'; ║
║ GAD:='Ok|Cancel|Restore|'; ║
║ EZ_REQUESTG(NAM,TXT,GAD,NUM); ║
║ NB.....: Les fin de lignes et les differents gadgets sont séparés par ║
║ la barre verticale '|'. ║
║ On est limite a maximum 10 gadgets affichables a l'écran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE STRING_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: NAME (STRING) = Nom de la Fenêtre. ║
║ TXT (STRING) = Texte a afficher dans le requester. ║
║ GAD (STRING) = Texte des Gadgets a afficher. ║
║ NbCar (INTEGER) = Nombre de Char Max pouvant être rentrés. ║
║ Size (INTEGER) = Longeur en Pixel de la barre "Input String". ║
║ IN/OUT.: Cin (STRING) = String Envoyé/Renvoyé. ║
║ OUT....: NUM (INTEGER) = Numéro du gadget Selectionné. ║
║ EXPLAIN: Affiche au centre de l'écran un requester du type STRING_REQUEST.║
║ et attends la selection de l'un des gadgets. ║
║ Renvois le numéro du gadget choisit et le String Entré. ║
║ EXEMPLE: NAM:='SYSTEM REQUEST'; ║
║ TXT:='Rentrez un String SVP||Allez-y Quoi !!!|'; ║
║ GAD:='Ok|Hold|Cancel|'; ║
║ EZ_REQUESTG(NAM,TXT,GAD,40,120,Cin,NUM); ║
║ NB.....: Les fin de lignes et les differents gadgets sont séparés par ║
║ la barre verticale '|'. ║
║ On est limite a maximum 10 gadgets affichables a l'écran. ║
╚═══════════════════════════════════════════════════════════════════════════╝
╔═══════════════════════════════════════════════════════════════════════════╗
║ PROCEDURE PALETTE_REQUESTG ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ IN.....: X,Y (INTEGER) = Coordonées du requester Palette à l'Ecran. ║
║ NAME (STRING) = Nom de la Fenêtre. ║
║ OUT....: NUM (SHORTINT) = Numéro du gadget Selectionné. ║
║ EXPLAIN: Affiche un requester de Palette et le gère. ║
║ Renvois le numéro de la couleur choisie dans "NUM". ║
║ EXEMPLE: PALETTE_REQUESTG(100,100,'Please Select a Palette',NUM); ║
╚═══════════════════════════════════════════════════════════════════════════╝
---------------------------- EXEMPLE DE LOGICIEL -----------------------------
---------------------- PROGRAMME AVEC L'INTERFACE DE MOS ---------------------
Il s'agit du logiciel "DS.EXE" qui permet de tester la vitesse
d'écriture sur disque en faisant varier certains paramètres comme la taille
du buffer d'écriture, ou encore la taille du fichier.
Le logiciel se trouve dans le répertoire C:\MOS\EXEMPLES\SOFTS
Les sources du logiciel sont incluses de manière à pouvoir vous rendre compte
des techniques et fonctions de MOS employées pour son développement.
L'interface de ce logiciel à été développée en trois jours grâce à MOS.
Si vous désirez de plus amples informations au sujet de ce logiciel, ou
de MOS, n'hésitez pas à me contacter.
CHEVEAU Frédéric,
8 Passage des grillons,
66000 Perpignan,
FRANCE.
Ou bien pour ceux qui possèdent un minitel,
faites le 36.14, Code "RTEL1" (aprés 10 heures 30 le soir, se serveur
ne coûte que 12 centimes la minute, donc ca ne vous ruinera pas !).
Et laissez moi un message dans ma boite au lettre "BouFFtou".