APPLICATIONSDISQUE ★ COMPACT (AMSTAR&CPC) ★

Compact - 1re partie (Amstar&CPC)Compact - 2eme partie (Amstar&CPC)
Vous voulez réduire la taille de vos pages-écrans ou déplacer des fenêtres graphiques ? Compact vous y aidera grâce à une batterie de RSX. Mais attention, il s'agit de la seconde partie et le mode d'emploi est contenu dans le numéro précédent, donc pas de précipitation : il vous faut impérativement les deux parties pour faire tourner Compact.

UTILISATION DES COMMANDES

  • L'utilisation des nouvelles commandes est très facile, mais afin de les utiliser avec un maximum d'efficacité, quelques connaissances dans la structure de la RAM sont requises. C'est pourquoi nous en ferons un bref rappel dans la rubrique suivante. Les commandes seront ensuite étudiées et détaillées une par une et largement illustrées d'exemples.
Rappel sur l'organisation de la RAM des CPC

COMPACT a été créé pou le CPC 6128 mais toutefois la deuxième BANK n'étant pas utilisée par le programme, celui-ci est compatible avec le CPC 664. Néanmoins sa vocation étant d'être utilisé sur 6128, c'est l'organisation de la RAM d'un 6128 que nous allons étudier ici.

Pour ceux d'entre vous qui se poseraient la question de savoir ce qu'est la RAM, on peut tout simplement dire qu'il s'agit de la mémoire sur laquelle on peut écrire et lire des données. Par contre, la ROM est la mémoire qui ne peut être que lue. Le 6128 possède une RAM de 128 Ko divisée en 2 BANK de 64 Ko elles-mêmes divisées en 4 blocs de 16 Ko chacun, numérotés de Ûà3.

La BANK 0

L'écran exploite le bloc 3 de ia BANK 0 (1), c'est-à-dire de l'adresse 8Il nous reste donc une zone comprise entre les adresses 8c 170 et 8tA36F (3), zone réservée pour vos programmes BASIC et vos fichiers binaires. L'encodage de lignes de programme BASIC commence à l'adresse 8cl70 (368 en décimal) et se poursuit en montant jusqu'à la fin du programme. C'est à cet endroit qu'il vous faudra fixer la commande MEMORY (voir manuei de l'utilisateur), les fichiers binaires pourront être logés dans la partie immédiatement au-dessus. SI votre programme BASIC utilise toute la place disponible en BANK 0, les fichiers devront être logés en BANK 1.

Oui, mais comment connaître l'adresse la plus élevée utilisée par le BASIC ?

Une méthode simple vous est donnée ici. Provoquez un RESET, chargez votre programme et entrez toutes les
variables numériques, alphanumériques et les tableaux contenus dans votre programme.

EX: a=10:nobr=3000:nom$="COU-COU":a$="casserole":DIM a$(300):

Tapez ENTER, puis cette ligne :

PRINT HEX$ ((HIMEM-FRE(0)) * 4000)

Le résultat obtenu est l'adresse à laquelle Il vous faudra fixer votre MEMORY. ATTENTION : ne pas oublier de variables sinon en cours de programme vous risquez de tomber sur le message : Memory full. Si par la suite, vous effectuez une modification sur votre programme, il est préférable de renouveler l'opération.

La BANK 1

La deuxième BANK du 6128 est située parallèlement à la BANK 0, c'est-à-dire qu'elle est comprise entre les adresses &0000 et &FFFF. elle est constituée de manière Identique, soit quatre blocs de 16 K octets chacun.
La difficulté pour y accéder réside dans le fait que le Cœur de votre ordinateur, qui est le microprocesseur Z80, ne permet de gérer que 64 K octets à la fois. On ne peut y parvenir que par un moyen détourné. Ce moyen est la commutation des blocs, c'est-à-dire que nous allons remplacer un bloc situé en BANK 0 par un bloc situé en BANK 1.

Cette précision est très importante car en effet si la commutation ne peut se faire que bloc par bloc, on ne
pourra gérer que 16384 octets à la fois ; particularité qui amènera certaines restrictions à la commande I CHARGE décrite plus loin.

Autre particularité de la BANK 1 : lors de l'Initialisation de l'ordinateur, c'est-à-dire lors de l'allumage ou après un RESET, la BANK 1 n'est pas vide. En effet, au lieu d'être à 0 les octets sont soit à 0 soit à 255. détail qui pourrait nuire au bon fonctionnement des nouvelles commandes. C'est pour pallier cet Inconvénient qu'a été créée la commande |NETTOIE étudiée plus loin.

LES COMMANDES

* Les commandes sont au nombre de cinq. Elles permettent une parfaite gestion des fichiers créés par COMPACT. Elles sont accessibles à partir de nouveaux «mots clés* appelés RSX ou à partir de l'Instruction BASIC CALL La principale différence entre les deux, c'est que «CALL» est plus court de 59 octets, et si vous disposez d'un dés-assembleur. Il peut être incorporé à un programme en assembleur. Ces commandes seront étudiées sous leurs deux formes.

Le programme «RSX» a une taille de 1098 octets et il est situé de l'adresse &9F24 à l'adresse &A36D. Le programme «CALL» a une taille de 1039 octets. Il est situé de l'adresse &9F5F à l'adresse &A36D. Il faudra donc tenir compte de ces adresses afin d'éviter tout effacement par le chargement d'un fichier.
Pour charger les commandes, faites pour le programme «RSX» :

LOAD "RSX.BIN":CALL &9F24
Pour le programme «CALL» :
LOAD"CALL.BIN"
ATTENTION. Il est fortement déconseillé de charger deux fois de suite les programmes «RSX» ou «CALL» sans effectuer de RESET entre les deux, car ceci désactiverait les commandes propres à AMSDOS ( |ERA, |REN, lA... )
A noter que toutes les commandes sont accompagnées de paramètres. Si l'un d'entre eux est oublié, la commande ne sera pas exécutée. Il se pourrait que lors d'une fausse manœuvre de votre part, un message d'erreur propre à COMPACT apparaisse à l'écran. Il vous faudra vous reporter à la rubrique «les messages d'erreurs de COMPACT». En effet, les programmes «RSX» et «CALL» sont dotés de messages d'erreurs qui. ajoutés aux messages du BASIC, permettent une parfaite utilisation des commandes. Ces messages peuvent être activés ou désactivés à volonté. Il suffit pour les désactiver de mettre à 0 l'octet situé à l'adresse &9F63 et de le mettre à 1 pour les activer.

EX : POKE &9F63,0 OU POKE &9F63,1

Si les messages sont désactivés et qu'une erreur a été détectée, aucun message ne sera envoyé mais la commande ne sera pas exécutée. Je vous propose donc de les activer avant de passer aux commandes suivantes.

Nous allons maintenant étudier la terminologie et la syntaxe de chaque commande. Après initialisation de votre ordinateur, introduisez votre disquette et tapez :

MEMORY &4000:LOAD "RSX.BIN":CALL &9F24:POKE &9F63,1

La commande NETTOIE

|NETTOIE , « adresse de début », « taille », « bank »

CALL &A30C , « adresse de début », « taille », « bank »

COMMANDE : efface une partie de la mémoire.

Paramètre 1 : « adresse de début »

Spécifie l'adresse à laquelle le nettoyage doit débuter.

Paramètre 2 : « taille »

Spécifie la longueur sur laquelle l'effacement doit être effectué. SI le «nettoyage» se situe en BANK 1 la taille de l'effacement ne doit pas être supérieure à 16384 octets ou 8(4000 en hexadécimal (voir rappel «l'organisation des CPC») sous peine de débordement en BANK 0 (voir exemple).

Paramètre 3 « bank »

Spécifie sur quelle BANK le «nettoyage» doit être effectué.

Exemple de qu'il ne faut pas faire :

|NETTOIE, &9000, &1000, 0 (1)
|NETTOIE, &0,20000,1 (2)
|NETTOIE, &8000, &4010,1 (2)
(1) = Effacement du programme «RSX»
(2) = Débordement en BANK 0

Exemple de ce qu'il faut faire, tapez ces lignes :

|NETTOIE, &4000, &5F00,0
|NETTOIE, &0, 16384,1
|NETTOIE, 16384,&4000,1
|NETTOIE, &8000,&4000,1
Cette commande s'utilise donc pour effacer les blocs de la BANK 1, après une initialisation et pour effacer les fichiers se trouvant à un emplacement mémoire sur lequel on désire charger un autre fichier.

La commande CHARGE

|CHARGE ,« nom de fichier » ,« adresse relogement » , « bank »

CALL &A28A ,« nom de fichier » ,« adresse relogement » , « bank »

COMMANDE : charge en mémoire un fichier binaire se trouvant sur la disquette. Cette commande a la même fonction que l'instruction BASIC LOAD. mais possède un plus très important : elle permet de charger des fichiers et des programmes binaires dans la BANK 1.

Paramètre 1 : nom du fichier

Spécifie le nom du fichier à charger. Le nom peut être accompagné de son Indicateur de type ou remplacé par une variable alphanumérique.

Paramètre 2 : adresse de relogement

Spécifie à quelle adresse doit être chargé le fichier.

Paramètre 3 : bank

Spécifie dans quelle BANK doit être chargé le fichier. Si la BANK dans laquelle doit être effectué le chargement est la BANK 1, le fichier à charger ne doit pas dépasser la longueur de 16384 octets (voir précédemment •Rappel sur l'organisation des CPC» et «La commande NETTOIE»).

La commande PAGE

|PAGE, «adresse du fichier » , « bank »

CALL &9FA2, «adresse du fichier » , « bank »

COMMANDE : «décompacte» et affiche à l'écran les fichiers traités avec COMPACT.

Paramètre 1 : «adresse du fichier »

Spécifie l'adresse à laquelle la commande doit chercher le fichier.

Paramètre 2 : « bank »

Spécifie dans quelle BANK se situe le fichier.

Remarquez que lorsque deux instructions PAGE se suivent, il est nécessaire de mettre une boucle de temporisation ou un arrêt de déroulement du programme entre les deux sinon le décompactage est trop rapide et la première page reste invisible. Tapez ces lignes :

|PAGE, &4868, 0:FOR I=0 TO 1000:|PAGE.&1308.1 IPAGE.&5DE9,0:PRINT "APPUYEZ SUR UNE TOUCHE":CALL &BB06:|PAGE,&9675,0

La commande FENETRE

|FENETRE , «adresse écran de relogement » , «adresse du fichier » , « bank»
CALL &9FAC , «adresse écran de relogement » , «adresse du fichier » , « bank»

COMMANDE : «décompacte» et affiche à l'écran les fichiers traités avec COMPACT.

Paramètre 1 : «adresse écran de relogement »

Spécifie l'adresse écran de coin supérieur gauche sur lequel la fenêtre doit apparaître. La valeur 0 permet de faire apparaître la fenêtre à l'emplacement sur lequel la fenêtre a été compactée.

Paramétre 2 : «adresse du fichier »

Spécifie l'adresse à laquelle la commande doit chercher le fichier. ATTENTION : toute adresse dépassant te cadre de la mémoire écran serait susceptible d'effacer un fichier en mémoire et pourrait même provoquer le plantage de votre ordinateur. Si cela se produisait, le seul remède serait r initialisation complète de votre machine par RESET.

Paramètre 3 : bank

Spécifie dans quelle BANK se situe le fichier.

La commande ADR

|ADR, «adresse écran » , « variable numérique entière» , « direction »
CALL &A16D, «adresse écran » , « variable numérique entière» , « direction »

COMMANDE : calcule la valeur de l'adresse écran contiguè à l'adresse spécifiée par le premier paramètre dans la direction déterminée par le troisième paramètre et charge le résultat dans la variable numérique entière nommée par le deuxième paramètre. La structure de la mémoire écran étant ce quelle est. il est très difficile de calculer l'adresse d'un octet périphérique à un autre. Cette commande s'en charge pour vous.

Paramètre 1: «adresse écran »

Spécifie l'adresse écran par rapport à laquelle le calcul devra être effectué.

Paramètre 2 : « variable numérique entière»

Spécifie dans quelle variable le résultat doit être chargé, cette variable doit être une variable numérique entière.
Elle doit être précédée par l'instruction BASIC VARPTR (@) et doit obligatoirement être suivie de l'indicateur de type (%) ou alors l'Instruction BASIC DEFINT doit figurer au début de votre programme (voir manuel de l'utilisateur).

Paramètre 3 : indicateur de direction

Spécifie dans quelle direction se trouve l'octet dont l'adresse est à déterminer,

0 : Haut
1 : Haut droite
2 : Droite
3 : Droite bas
4 : Bas
5 : Bas gauche
6 : Gauche
7 : Gauche haut
Pour une meilleure compréhension, tapez ce programme :
10 MODE 1
20 b=&DBE8 30 a%=0 40 FOR I=0 TO 7
50 |ADR,&DBE8.@a%,1
60 POKE a%, 15
70 LOCATE 1,1: PRINT "Indicateur de direction N" ; i
80 LOCATE 1,3: PRINT "Adresse écran du point => &";HEXS(a%)
90 LOCATE 1.5: PRINT "APPUYEZ SUR UNE TOUCHE"
100 CALL &BB06
110 NEXT I

RUN

Maintenant tapez la ligne ci-dessous, remplacez sur tout le programme la variable (%) par (a) et relancez le programme.

25 DEFINT a

LES MESSAGES D'ERREURS DE COMPACT

COMPACT est doté d'un jeu de quatre messages destinés à signaler une erreur commise sur une instruction de COMPACT. Ces messages ont été créés dans le but d'éviter pratiquement tout plantage de vos programmes.

-ADRESSE ERRONEE

Une adresse mémoire accompagnant l'instruction PAGE ou FENETRE ne correspond pas à un fichier.

— FICHIER FENETRE

Une adresse mémoire accompagnant l'instruction PAGE correspond à un fichier FENETRE.

— FICHIER PAGE

Une adresse mémoire accompagnant l'instruction FENETRE correspond à un fichier PAGE,

— ARGUMENT INCORRECT

Le paramètre d'une commande n'est pas acceptable.

Eric CINGET , Amstar & CPC n°32

★ EDITEUR: AMSTAR&CPC
★ ANNÉES: 1988 , 1989
★ CONFIG: 128K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: ERIC CINGET
 


★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Compact    (AmstarCPC)    (RSX.BIN)    FRENCHDATE: 2023-03-29
DL: 269
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 Cyls
.HFE: Χ

» Compact    (AmstarCPC)    FRENCH    LISTINGDATE: 2023-03-29
DL: 281
TYPE: PDF
SiZE: 3298Ko
NOTE: 8 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Crown Cruncher
» Applications » Turbo Cruncher
» Applications » Compacteur Écran v2.0 (Stéphane SAINT-MARTIN)
» Applications » Ditacopy: Compact Copy from Disc to Tape
» Applications » Text File Compacter (Computing With the Amstrad)
» Applications » Mega Cruncher
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop
Page créée en 572 millisecondes et consultée 2791 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.