Section courante

A propos

Section administrative du site

EXTMEM

Mémoire étendue
TRS-80 Pascal

Syntaxe

TYPE MEMOPCODE = (M_RELEASE, M_TEST, M_RESERVE, M_GET, M_PUT);
PROCEDURE EXTMEM(OPERATION:MEMOPCODE; BANK:INTEGER; LOCALADDRESS, EXTENDADDRESS, BLOCKSIZE:INTEGER;VAR STATUS:INTEGER); EXTERNAL;

Description

Cette procédure permet à un programme Pascal d'utiliser les 64 premiers Ko de mémoire pour entreposer des données sous le contrôle du programme.

Remarques

Exemple

L'exemple de programme suivant illustre l'utilisation de la procédure EXTMEM. Un tableau est entreposé et récupéré à partir de la mémoire étendue :

  1. PROGRAM EXTMEMSamples;
  2. TYPE
  3.  MEMOPCODE = (M_RELEASE, M_TEST, M_RESERVE, M_GET, M_PUT);
  4.  REAL_ARRAY = ARRAY[0..120] OF REAL;
  5. VAR
  6.  R:REAL_ARRAY;
  7.  STATUS:INTEGER;
  8.  
  9. PROCEDURE EXTMEM(OPERATION:MEMOPCODE; BANK:INTEGER; LOCALADDRESS,EXTENDADDRESS,BLOCKSIZE:INTEGER;VAR STATUS:INTEGER); EXTERNAL;
  10.  
  11. BEGIN
  12.  { allouer la banque 1 de mémoire étendue }
  13.  EXTMEM(M_RESERVE,1,LOCATION(R),#8000,SIZE(REAL_ARRAY),STATUS);
  14.  IF STATUS <> 0 THEN WRITELN('Incapable d''allouer la banque 1')
  15.   ELSE
  16.  BEGIN
  17.   { un code pour entrer des données dans le tableau devrait aller ici stocker les données dans la mémoire étendue }
  18.   EXTMEM(M_PUT,1,LOCATION(R),#8000,SIZE(REAL_ARRAY),STATUS);
  19.  IF STATUS <> 0 THEN BEGIN
  20.   WRITELN('Ne peu pas entreposer les donnees en memoire');
  21.   ESCAPE;
  22.  END;
  23.   { récupérer les données }
  24.  EXTMEM(M_GET,1,LOCATION(R),#8000,SIZE(REAL_ARRAY),STATUS);
  25.  IF STATUS <> 0 THEN BEGIN
  26.   WRITELN('ne peut pas demander les donnees de la memoire etendue');
  27.   ESCAPE;
  28.  END;
  29.  EXTMEM(M_RELEASE,1,LOCATION(R),#8000,SIZE(REAL_ARRAY),STATUS);
  30.  END;
  31.  WRITELN('test complete');
  32. END.


Dernière mise à jour : Vendredi, le 31 Juillet 2020