home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 17 / ascii.hma < prev    next >
Encoding:
Text File  |  1989-12-29  |  1.9 KB  |  69 lines

  1. (* ------------------------------------------------------ *)
  2. (*                       ASCII.HMA                        *)
  3. (*      Verwaltung der ASCII-Tabelle im High Memory       *)
  4. (* ------------------------------------------------------ *)
  5.  
  6. VAR
  7.   SavePage : ^Screen;
  8.   AsciiTable : ^Window;
  9.  
  10. PROCEDURE SaveScreen(CurrentPage : ScreenPtr);
  11.   (* sichert den Bildschirminhalt bei "CurrentPage".      *)
  12. BEGIN
  13.   GlobalEnableA20;
  14.   SavePage^ := CurrentPage^;
  15. END;
  16.  
  17. PROCEDURE RestoreScreen(CurrentPage : ScreenPtr);
  18.   (* restauriert den Bildschirminhalt bei "CurrentPage".  *)
  19. BEGIN
  20.   CurrentPage^ := SavePage^;
  21.   GlobalDisableA20;
  22. END;
  23.  
  24. PROCEDURE DisplayAsciiTable(CurrentPage : ScreenPtr);
  25.   (* bringt die Ascii-Tabelle auf den Bildschirm.         *)
  26. VAR
  27.   Row : BYTE;
  28. BEGIN
  29.   FOR Row:=1 TO RowSize DO BEGIN
  30.     Move(AsciiTable^[Row,1], CurrentPage^[YOfs+Row-1,XOfs],
  31.          ColSize*2);
  32.   END;
  33. END;
  34.  
  35. PROCEDURE AllocateBuffers;
  36.   (* Anforderung und Vorbereitung der benötigten Puffer.  *)
  37. BEGIN
  38.   IF NOT XMS.Installed THEN BEGIN
  39.     FatalError('HIMEM.SYS nicht installiert!');
  40.   END;
  41.   IF NOT XMS.RequestHMA($FFFF) THEN BEGIN
  42.     FatalError('HMA nicht vorhanden oder schon belegt!');
  43.   END;
  44.   GlobalEnableA20;
  45.   SavePage := Ptr($FFFF, $10);
  46.   AsciiTable := Ptr($FFFF, $10+SizeOf(Screen));
  47. END;
  48.  
  49. PROCEDURE DeallocateBuffers;
  50.   (* benötigte Puffer bei Programmende wieder freigeben.  *)
  51. BEGIN
  52.   XMS.ReleaseHMA;
  53. END;
  54.  
  55. PROCEDURE SetTable(Col, Row, Attr : BYTE; Ch : CHAR);
  56.   (* belegt die Tabellenposition (Col,Row) mit dem Zei-
  57.      chen "Ch" und dem Videoattribut "Attr".              *)
  58. BEGIN
  59.   AsciiTable^[Row,Col] := Word(Attr)*256 + Ord(Ch)
  60. END;
  61.  
  62. PROCEDURE PrepareExit;
  63.   (* Maßnahmen für das Installationsende treffen.         *)
  64. BEGIN
  65.   GlobalDisableA20;
  66. END;
  67. (* ------------------------------------------------------ *)
  68. (*                  Ende von ASCII.HMA                    *)
  69.