Jelajahi Sumber

first commit

Eric Streit 3 minggu lalu
melakukan
0fe14180d4
9 mengubah file dengan 378 tambahan dan 0 penghapusan
  1. TEMPAT SAMPAH
      EssaiVT521
  2. 31 0
      EssaiVT521.mod
  3. 11 0
      EssaiVT521.mod~
  4. TEMPAT SAMPAH
      TestVT52N1
  5. 39 0
      TestVT52N1.mod
  6. 74 0
      VT52.def
  7. 207 0
      VT52.mod
  8. TEMPAT SAMPAH
      VT52.o
  9. 16 0
      git.txt

TEMPAT SAMPAH
EssaiVT521


+ 31 - 0
EssaiVT521.mod

@@ -0,0 +1,31 @@
+MODULE EssaiVT521;
+
+FROM STextIO IMPORT WriteChar, WriteString, WriteLn,ReadChar;
+
+(*
+Erasing
+From cursor to end of line 	ESC [ K or ESC [ 0 K
+From beginning of line to cursor 	ESC [ 1 K
+Entire line containing cursor 	ESC [ 2 K
+From cursor to end of screen 	ESC [ J or ESC [ 0 J
+From beginning of screen to cursor 	ESC [ 1 J
+Entire screen 	ESC [ 2 J
+*)
+
+CONST ESC = CHR(27);
+CONST ClrScr = "[2J";
+CONST ClrLn = "[1K";
+
+VAR Chaine : ARRAY[0..4] OF CHAR;
+VAR a : CHAR;
+
+BEGIN
+     (*WriteString(" Test effacement d'écran");
+     ReadChar(a);
+     Chaine := ESC + ClrScr;			     
+     WriteString(Chaine);*)
+     WriteString(" Test d'effacement de ligne");
+     ReadChar(a);
+     Chaine := ESC + ClrLn;
+     WriteString(Chaine);
+END EssaiVT521.

+ 11 - 0
EssaiVT521.mod~

@@ -0,0 +1,11 @@
+MODULE EssaiVT521;
+
+From STextIO IMPORT WriteChar, WriteStr;
+
+VAR Chaine : String;
+
+BEGIN
+Chaine := CHR(27) + "E";
+WriteString(Chaine);
+     
+END EssaiVT521.

TEMPAT SAMPAH
TestVT52N1


+ 39 - 0
TestVT52N1.mod

@@ -0,0 +1,39 @@
+MODULE TestVT52N1;
+
+IMPORT VT52, Delay;
+
+FROM STextIO IMPORT WriteChar, WriteString, WriteLn;
+
+BEGIN
+    (* VT52.vt52; *)
+    VT52.cls;
+    (* Delay.Delay(2000);
+    (* VT52.cursorpos(40,20); *)
+    WriteChar("d");
+    VT52.cursordn;VT52.cursordn;VT52.cursordn;VT52.cursordn;
+    VT52.cursorrt;VT52.cursorrt;VT52.cursorrt;VT52.cursorrt;
+    WriteChar("f");
+    VT52.cursorup; VT52.cursorup;VT52.cursorlf;VT52.cursorlf;
+    WriteChar("x");
+    Delay.Delay(2000);
+    VT52.cursorhome;
+    Delay.Delay(2000);
+    VT52.cleareos;
+    Delay.Delay(2000);
+    WriteChar("d");
+    VT52.cursordn;VT52.cursordn;VT52.cursordn;VT52.cursordn;
+    VT52.cursorrt;VT52.cursorrt;VT52.cursorrt;VT52.cursorrt;
+    WriteChar("f");VT52.cursorup; VT52.cursorup;
+    Delay.Delay(2000);
+    VT52.cleareos;
+    Delay.Delay(2000);
+    WriteString("Une petite maison sur la colline");
+    VT52.cursorlf;VT52.cursorlf;VT52.cursorlf;VT52.cursorlf;
+    Delay.Delay(2000);
+    VT52.cleareol;
+    Delay.Delay(2000); *)
+    VT52.cursorpos(20,20);
+    WriteString("    hi hi !");
+    Delay.Delay(5000);
+    WriteLn;
+END TestVT52N1.

+ 74 - 0
VT52.def

@@ -0,0 +1,74 @@
+DEFINITION MODULE VT52;
+
+
+(*#
+#  All codes below are for use in VT52 compatibility mode.
+#
+
+altkeypad             Enter alternate keypad mode            ^[=
+numkeypad             Exit alternate keypad mode             ^[>
+
+setgr                 Use special graphics character set     ^[F
+resetgr               Use normal US/UK character set         ^[G
+
+cursorup              Move cursor up one line                ^[A
+cursordn              Move cursor down one line              ^[B
+cursorrt              Move cursor right one char             ^[C
+cursorlf              Move cursor left one char              ^[D
+cursorhome            Move cursor to upper left corner       ^[H
+cursorpos(v,h)        Move cursor to v,h location            ^[Y<v><h>
+revindex              Generate a reverse line-feed           ^[I
+
+cleareol              Erase to end of current line           ^[K
+cleareos              Erase to end of screen                 ^[J
+
+ident                 Identify what the terminal is          ^[Z
+identresp             Correct response to ident              ^[/Z
+
+Cursor positioning
+The ESC Y code was used to position the cursor anywhere on the screen, using two parameters
+representing the X and Y coordinates of the cursor position, with the upper left corner of the screen being
+position 1,1. These numbers were sent as ASCII characters of that value, adding 31. For instance, to
+position the cursor at column 30 and line 20, you would add 31 to each value to get 61 and 51, then look
+up those ASCII characters, = and 3 . The complete command would then be ESC Y 3 = (note the
+row, column ordering, not X, Y).[10] Adding 31 ensures that the characters are shifted out of the control
+range into the printable character range, so they will transmit properly.
+
+Terminal identifier codes
+The ESC Z command allowed the host computer to identify the capabilities of the terminal. There were
+eight possible responses.
+ModelWithout printerWith printer
+VT50ESC / A(not available)
+VT50HESC / HESC / J
+VT52ESC / KESC / L
+VT55ESC / EESC / E
+
+Enter/exit ANSI mode (VT52)   ESC <
+
+*)
+
+PROCEDURE vt52;
+
+PROCEDURE altkeypad; 
+PROCEDURE numkeypad;
+
+PROCEDURE setgr;
+PROCEDURE resetgr; 
+
+PROCEDURE cursorup;
+PROCEDURE cursordn;
+PROCEDURE cursorrt;
+PROCEDURE cursorlf; 
+PROCEDURE cursorhome;
+PROCEDURE cursorpos(X : CARDINAL; y : CARDINAL); 
+PROCEDURE revindex;
+
+PROCEDURE cleareol;
+PROCEDURE cleareos;
+
+PROCEDURE ident;
+PROCEDURE identresp;
+
+PROCEDURE cls;
+
+END VT52.

+ 207 - 0
VT52.mod

@@ -0,0 +1,207 @@
+IMPLEMENTATION MODULE VT52;
+
+FROM STextIO IMPORT WriteString, WriteChar, WriteLn;
+FROM NumberIO IMPORT WriteCard;
+FROM ASCII IMPORT esc;
+FROM Strings IMPORT Concat, Length, String1;
+FROM NumberIO IMPORT WriteHex;
+
+(* CONST
+    ALTKEYPAD   = "=";
+    NUMKEYPAD   = ">";
+    SETGR       = "F";
+    RESETGR     = "G";
+    CURSORUP    = "A";
+    CURSORDN    = "B";
+    CURSORRT    = "C";
+    CURSORLF    = "D";
+    CURSORHOME  = "H";
+    CURSORPOS   = "Y";
+    REVINDEX    = "I";
+    CLEAREOL    = "K";
+    CLEAREOS    = "/Z";
+    IDENTRESP   = "KL";
+    VT52C        = "<"; *)
+
+VAR
+    altkeypadStr    : ARRAY[0..2] OF CHAR;
+    numkeypadStr    : ARRAY[0..2] OF CHAR;
+    setgrStr        : ARRAY[0..2] OF CHAR;
+    resetgrStr      : ARRAY[0..2] OF CHAR;
+    cursorupStr     : ARRAY[0..2] OF CHAR;
+    cursordnStr     : ARRAY[0..2] OF CHAR;
+    cursorrtStr     : ARRAY[0..2] OF CHAR;
+    cursorlfStr     : ARRAY[0..2] OF CHAR;
+    cursorhomeStr   : ARRAY[0..2] OF CHAR;
+    cursorposStr    : ARRAY[0..2] OF CHAR;
+    revindexStr     : ARRAY[0..2] OF CHAR;
+    cleareolStr     : ARRAY[0..2] OF CHAR;
+    cleareosStr     : ARRAY[0..2] OF CHAR;
+    identStr        : ARRAY[0..2] OF CHAR;
+    identrespStr    : ARRAY[0..2] OF CHAR;
+    clsStr          : ARRAY[0..5] OF CHAR; 
+    vt52Str         : ARRAY[0..3] OF CHAR; 
+
+VAR
+    i : CARDINAL;
+
+    PROCEDURE vt52;                 (* Enter/exit ANSI mode (VT52)            ^[< *)
+    BEGIN
+        WriteString(vt52Str)
+    END vt52;
+
+    PROCEDURE altkeypad;             (* Enter alternate keypad mode            ^[= *)
+    BEGIN
+        WriteString(altkeypadStr)
+    END altkeypad;
+
+    PROCEDURE numkeypad;             (* Exit alternate keypad mode             ^[> *)
+    BEGIN
+        WriteString(numkeypadStr)
+    END numkeypad;
+
+
+    PROCEDURE setgr;                 (* Use special graphics character set     ^[F *)
+    BEGIN
+        WriteString(setgrStr)
+    END setgr;
+
+    PROCEDURE resetgr;               (* Use normal US/UK character set         ^[G *)
+    BEGIN
+        WriteString(resetgrStr)
+    END resetgr;
+
+
+    PROCEDURE cursorup;              (* Move cursor up one line                ^[A *)
+    BEGIN
+        WriteString(cursorupStr)
+    END cursorup;
+
+    PROCEDURE cursordn;              (* Move cursor down one line              ^[B *)
+    BEGIN
+        WriteString(cursordnStr)
+    END cursordn;
+
+    PROCEDURE cursorrt;              (* Move cursor right one char             ^[C *)
+    BEGIN
+        WriteString(cursorrtStr)
+    END cursorrt;
+
+    PROCEDURE cursorlf;              (* Move cursor left one char              ^[D *)
+    BEGIN
+        WriteString(cursorlfStr)
+    END cursorlf;
+
+    PROCEDURE cursorhome;            (* Move cursor to upper left corner       ^[H *)
+    BEGIN
+        WriteString(cursorhomeStr)
+    END cursorhome;
+
+    PROCEDURE cursorpos(x : CARDINAL; y : CARDINAL);        (* Move cursor to v,h location            ^[<v><h> *)
+        VAR
+            tempString      : ARRAY[0..15] OF CHAR;
+            tempString1,
+            tempString2,
+            tempString3     : String1;
+            xPos, yPos      : CARDINAL;
+    BEGIN
+        tempString := "";
+        (* tempString3[0] := "f"; *)
+        Concat(tempString,cursorposStr, tempString);
+        xPos := x + 31; 
+        yPos := y + 31; 
+        tempString1[0] :=  CHR(yPos);
+        tempString2[0] :=  CHR(xPos);
+        Concat(tempString,tempString1, tempString);
+        Concat(tempString,tempString2, tempString);
+        (* Concat(tempString,tempString3, tempString); *)
+        WriteString(tempString);
+
+    END cursorpos;
+
+    PROCEDURE revindex;              (* Generate a reverse line-feed           ^[I *)
+    BEGIN
+        WriteString(revindexStr)
+    END revindex;
+
+    PROCEDURE cleareol;              (* Erase to end of current line           ^[K *)
+    BEGIN
+        WriteString(cleareolStr)
+    END cleareol;
+
+    PROCEDURE cleareos;              (* Erase to end of screen                 ^[J *)
+    BEGIN
+        WriteString(cleareosStr)
+    END cleareos;
+
+    PROCEDURE ident;                 (* Identify what the terminal is          ^[Z *)
+    BEGIN
+        WriteString(identStr)
+    END ident;
+
+    PROCEDURE identresp;             (* Correct response to ident              ^[/Z *)
+    BEGIN
+        WriteString(identrespStr)
+    END identresp;
+
+    PROCEDURE cls;
+    BEGIN
+        WriteString(clsStr)
+    END cls;
+
+BEGIN
+    (**** VT52 *****)
+    Concat(esc,"[<",vt52Str);
+
+    (**** altkeypad *****)
+    Concat(esc,"[=", altkeypadStr);
+
+    (**** numkeypad *****)
+    Concat(esc,"[=>",numkeypadStr);
+
+    (**** setgr *****)
+    Concat(esc,"[F",setgrStr);
+
+    (**** resetgr *****)
+    Concat(esc,"[G",resetgrStr);
+
+    (**** cursorup *****)
+    Concat(esc,"[A",cursorupStr);
+
+    (**** cursordn *****)
+    Concat(esc,"[B",cursordnStr);
+
+    (**** cursorrt *****)
+    Concat(esc,"[C",cursorrtStr);
+
+    (**** cursorlf *****)
+    Concat(esc,"[D",cursorlfStr);
+
+    (**** cursorhome *****)
+    Concat(esc,"[H",cursorhomeStr);
+
+    (**** cursorpos *****)
+    Concat(esc,"[Y",cursorposStr);
+
+    (**** revindex *****)
+    Concat(esc,"[I",revindexStr);
+
+    (**** cleareol *****)
+    Concat(esc,"[K",cleareolStr);
+
+    (**** cleareos *****)
+    Concat(esc,"[J",cleareosStr);
+
+    (**** ident *****)
+    Concat(esc,"[Z",identStr);
+
+    (**** identresp *****)
+    Concat(esc,"[/Z",identrespStr);
+ 
+    (**** cls *****)
+    clsStr := "";
+    Concat(esc,"[H",clsStr);
+    Concat(clsStr,esc,clsStr);
+    Concat(clsStr,"[J",clsStr);
+    (****)
+END VT52.

TEMPAT SAMPAH
VT52.o


+ 16 - 0
git.txt

@@ -0,0 +1,16 @@
+
+Créer un nouveau dépôt en ligne de commande
+
+touch README.md
+git init
+git add README.md
+git commit -m "first commit"
+git remote add origin http://git.yojik.eu/eric/VT52.git
+git push -u origin master
+
+Soumettre un dépôt existant par ligne de commande
+
+git remote add origin http://git.yojik.eu/eric/VT52.git
+git push -u origin master
+
+