home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 02 / download.pas next >
Pascal/Delphi Source File  |  1987-10-29  |  8KB  |  159 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                              DOWNLOAD.PAS                               *)
  3. (*  Ein Prog. zum Definieren eigener Zeichensaetze mit einem Matrixdrucker *)
  4. (*  verwendeter Drucker     :   STAR SG - 10                               *)
  5. (*  Modus                   :   STAR - MODUS  ( DIP - SWITCH 2-2 ON ! )    *)
  6. (*  Programmiersprache      :   Turbo - Pascal 3.0                         *)
  7. (* ----------------------------------------------------------------------- *)
  8. PROGRAM DOWN_LOAD_DEMO;
  9.  
  10.   (* Definiert die Sonderzeichen und schreibt diese in's RAM des Druckers  *)
  11.   PROCEDURE write_download_character;
  12.   CONST
  13.     zeichen_anzahl = 16;
  14.     zeilen_anzahl = 11;     (* Anzahl der Zeilen/Zeichen, Druckerabhaengig *)
  15.            (* Hier werden die druckerspezifischen Steuerzeichen definiert.
  16.               Dieser Teil muss an den jeweiligen Drucker angepasst werden.
  17.               Die angegebenen Steuerzeichen beziehen sich auf den Matrix-
  18.               drucker STAR SG - 10 im 'Star-Modus'. Die Zeichenfolge
  19.               '#dez.-Zahl' ermoeglicht die Angabe von nicht druckbaren Zei-
  20.               chen als CHARacter mittels ihres ASCII-Codes. Erlaubt Ihr
  21.               Compiler dies nicht, muessen die Konstanten als Variablen
  22.               deklariert und im Anweisungsteil initialisiert werden.       *)
  23.     defined_download_character = #27'*'#01;
  24.     copies_rom_to_ram          = #27'*'#00;
  25.     download_character_on      = #27'$'#01;
  26.     download_character_off     = #27'$'#00;
  27.       (* Type-Definition fuer den Aufbau der Zeichen. Ist Druckerabhaengig
  28.          und muss ggf. an andere Drucker angepasst werden. (s. Handbuch !) *)
  29.   TYPE
  30.     zeichen = RECORD
  31.                 kommentar : STRING[23];
  32.                 taste     : CHAR;
  33.                 matrix    : ARRAY[0 .. zeilen_anzahl] OF INTEGER;
  34.               END;
  35.  
  36.      (* Im Array 'zeichen_satz' stehen die definierten Zeichen. Aus Kom-
  37.         patibilitaetsgruenden wurde zunaechst der USA-Zeichensatz auf die
  38.         entsprechenden Tasten gelegt. Nicht-Turboisten muessen das Array
  39.         als Variable deklarieren und mittels Zuweisungen initialisieren:   *)
  40.   CONST
  41.     zeichen_satz : ARRAY[1 .. zeichen_anzahl] OF zeichen =
  42.                 ((kommentar : 'Eckige Klammer auf';
  43.                   taste     : '[';
  44.                   matrix    : (139,0,254,0,130,0,130,0,0,0,0,0)),
  45.                  (kommentar : 'Eckige Klammer zu';
  46.                   taste     : ']';
  47.                   matrix    : (139,0,130,0,130,0,254,0,0,0,0,0)),
  48.                  (kommentar : 'Klammeraffe';
  49.                   taste     : '@';
  50.                   matrix    : (139,124,0,130,16,170,0,170,0,122,0,0)),
  51.                  (kommentar : 'Schraegstrich';
  52.                   taste     : '\';
  53.                   matrix    : (139,0,128,64,32,16,8,4,2,0,0,0)),
  54.                  (kommentar : 'Geschweifte Klammer auf';
  55.                   taste     : '{';
  56.                   matrix    : (139,0,16,0,108,130,0,130,0,0,0,0)),
  57.                  (kommentar :'Geschweifte Klammer zu';
  58.                   taste     : '}';
  59.                   matrix    : (139,130,0,130,108,0,16,0,0,0,0,0)),
  60.                  (kommentar : 'Senkrechter Strich';
  61.                   taste     : '|';
  62.                   matrix    : (139,0,0,0,0,0,255,0,0,0,0,0)),
  63.                  (kommentar : 'Tilde';
  64.                   taste     : '~';
  65.                   matrix    : (139,64,128,0,128,64,32,0,32,64,0,0)),
  66.                  (kommentar : 'Alpha';
  67.                   taste     : 'a';
  68.                   matrix    : (139,28,0,34,0,34,20,8,20,34,0,0)),
  69.                  (kommentar : 'Beta';
  70.                   taste     : 'b';
  71.                   matrix    : (11,127,128,0,128,18,128,106,4,0,0,0)),
  72.                  (kommentar : 'Gamma';
  73.                   taste     : 'c';
  74.                   matrix    : (11,35,20,9,20,35,0,0,0,0,0,0)),
  75.                  (kommentar : 'Delta';
  76.                   taste     : 'd';
  77.                   matrix    : (139,6,1,8,33,88,1,78,0,32,0,0)),
  78.                  (kommentar : 'Omega';
  79.                   taste     : 'O';
  80.                   matrix    : (139,49,72,135,0,128,0,135,72,49,0,0)),
  81.                  (kommentar : 'Telefon';
  82.                   taste     : 'T';
  83.                   matrix    : (139,206,16,194,32,130,32,130,32,194,16,206)),
  84.                  (kommentar : 'Logisch und';
  85.                   taste     : '&';
  86.                   matrix    : (139,0,2,4,8,16,32,16,8,4,2,0)),
  87.                  (kommentar : 'Vollkreis';
  88.                   taste     : '0';
  89.                   matrix    : (139,56,68,186,68,186,68,186,68,56,0,0)));
  90.      (* Nach Aendern der Konstanten zeichen_anzahl koennen hier weitere
  91.         Tasten mit Sonderzeichen problemlos wie o.a. belegt werden.        *)
  92.   VAR
  93.     i, k   : INTEGER;
  94.     b1, b2 : BYTE;
  95.     c      : CHAR;
  96.  
  97.   BEGIN  (* write_download_character *)
  98.     Write(Lst,copies_rom_to_ram);  (* Drucker soll kopieren von ROM n. RAM *)
  99.     WriteLn('Folgende Tasten werden mit Sonderzeichen belegt :');  WriteLn;
  100.     FOR k := 1 TO zeichen_anzahl DO BEGIN
  101.         (* Der folgende Drucksteuerbefehl muss jedesmal gegeben werden, da
  102.            in der FOR-Schleife jeweils nur ein Zeichen definiert wird  !   *)
  103.       Write(Lst,defined_download_character);
  104.       WITH zeichen_satz[k] DO BEGIN
  105.            (* Der folgende Drucksteuerbefehl muss 2 mal gegeben werden. Der
  106.               Drucker verlangt die Angabe von Taste .. bis Taste. Bei nur
  107.               eine Zeichen, muss die gleiche Taste also 2 mal zum Drucker  *)
  108.         Write(Lst,taste,taste);
  109.         Write(' ',taste);             (* Bildschirmausgabe, kann entfallen *)
  110.         Write(' : ',kommentar,'':35-Length(kommentar));
  111.                     (* Hier wird endlich das Zeichen Punktweise definiert! *)
  112.         FOR i := 0 TO zeilen_anzahl DO Write(Lst,Chr(matrix[i]));
  113.       END;
  114.     END;
  115.     (* -------------------------------------------------------------------
  116.           Das Folgende ist lediglich eine Testausgabe, die beim Definieren
  117.           neuer Zeichen aufgerufen werden kann, indem man das Kommentar-
  118.           endezeichen an das Ende dieses Textes setzt ------------------->
  119.     Write(lst,download_character_on);
  120.     FOR i := 1 TO zeichen_anzahl DO Write(lst,zeichen_satz[i].taste:4);
  121.     Write(lst,download_character_off);  Writeln(lst);
  122.  
  123.       --------------------------------------------------------------------
  124.     ^-- und hier, d.h. an den Anfang obiger Zeile ein Kommentaranfang-
  125.         zeichen einfuegt !                                                 *)
  126.   END;
  127. (* ----------------------------------------------------------------------- *)
  128. (*                   Demonstration von Sonderzeichen:                      *)
  129.   PROCEDURE adresse;
  130.        (* Die nachfolgenden Konstanten sind z.T. 2 mal definiert worden,
  131.          weil es sich bei der Prozedur 'adresse' lediglich um eine Demon-
  132.          stration handelt !                                                *)
  133.   CONST
  134.     expandet_print_on       = #27'W'#01;     (* Schaltet Breitdruck ein    *)
  135.     expandet_print_off      = #27'W'#00;     (*    "         "      aus    *)
  136.     download_character_on   = #27'$'#01;
  137.     download_character_off  = #27'$'#00;
  138.     deutscher_zeichensatz   = #27'7'#2;
  139.     fettschrift             = #27'E'#27'G';
  140.  
  141.     Name                    = 'Lieschen Mueller          ';
  142.     Strasse                 = '   Um Bruch 72 z';
  143.     Ort                     = '                            4711  Luemmeln';
  144.     Telefon                 = ' 01234 - 5678';
  145.  
  146.   BEGIN
  147.     Write(Lst,deutscher_zeichensatz);    Write(Lst,expandet_print_on);
  148.     Write(Lst,fettschrift);              Write(Lst,Name);
  149.     Write(Lst,expandet_print_off);       Write(Lst,Strasse);
  150.     WriteLn(Lst);                        Write(Lst,download_character_on);
  151.     Write(Lst,'T':9);                 (* Hier ensteht ein Telefonsymbol !! *)
  152.     Write(Lst,download_character_off);   Write(Lst,Telefon);
  153.     Write(Lst,Ort);                      WriteLn(Lst);
  154.   END;
  155. (* ----------------------------------------------------------------------- *)
  156. BEGIN (* DOWN_LOAD_DEMO *)
  157.   write_download_character;  adresse;
  158. END.
  159.