home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / M_P_6_0.ZIP / MEGPAINT / MOD_INFO.PAS / MEGA_01.PAS < prev    next >
Pascal/Delphi Source File  |  1990-07-30  |  4KB  |  100 lines

  1. { +--------------------------------------------+ }
  2. { | (C)1990 TommySoftware Thomas Maier, Berlin | }
  3. { |  Version 3.00  Letzte Änderung 29.06.1990  | }
  4. { +--------------------------------------------+ }
  5.  
  6.  
  7. { Dieses Programm ist das Beispielmodul 'MEGA_01.PRG', das von MegaPaint
  8.   aus aufgerufen werden kann. Hiermit soll das Modulkonzept von MegaPaint
  9.   verdeutlicht werden. Damit MegaPaint das Programm aufrufen kann, mu₧ die
  10.   Informationsdatei 'MEGA_01.MOD' vorhanden sein.
  11.   Siehe dazu 'MAKE_MOD.PAS'. }
  12.  
  13.  
  14. program Test_Modul_Version_3_00;
  15.  
  16. type
  17.      str7=string[7];
  18.     str31=string[31];
  19.    str127=string[127];
  20.  
  21. base_page=record                        { Standard-Basepage aus ST Pascal }
  22.             dummy:packed array[0..127]of byte;
  23.               cmd:str127;
  24.           end;
  25.  base_ptr=^base_page;
  26.  
  27.  
  28. { Beispiel-Deklaration der Füll- und Linienmuster, falls benötigt }
  29.  
  30.   pat_typ=array[0..31]of long_integer;  { Ein Muster mit 32 x 32 Punkten }
  31.  pat_feld=record
  32.         kennung:str7;
  33.            fill:array[0..33]of pat_typ; { 34 Füllmuster mit 32 x 32 Punkten }
  34.            line:array[0..17]of integer; { 9 Linienmuster mit 32 Punkten }
  35.           end;
  36.  pat_ptr=^pat_feld;
  37.  
  38.  
  39.  name_typ=array[0..7]of str127;         { Feld mit den bis zu acht übergebenen }
  40.  name_ptr=^name_typ;                    { Dateinamen }
  41.  
  42.  list_typ=record                        
  43.            kennung:str7;                { 'PRG 3.0' }
  44.              maus1:long_integer;        { Zeiger auf den ersten Mausblock }
  45.              maus2:long_integer;        { Zeiger auf den zweiten Mausblock }
  46.              maus3:long_integer;        { Zeiger auf den dritten Mausblock }
  47.             block1:long_integer;        { Zeiger auf den ersten Variablenblock }
  48.             block2:long_integer;        { Zeiger auf den zweiten Variablenblock }
  49.             block3:long_integer;        { Zeiger auf den dritten Variablenblock }
  50.                pat:pat_ptr;             { Zeiger auf die Füll- und Linienmuster }
  51.              names:name_ptr;            { Zeiger auf die übergebenen Dateinamen }
  52.           end;
  53.  list_ptr=^list_typ;
  54.  
  55.  
  56. var
  57.           bp:base_ptr;          { Zeiger auf die Basepage }
  58.         list:list_ptr;          { Zeiger auf den Parameterblock }
  59.            a:integer;           { Zähler für die Ausgabe der Dateinamen }
  60.  
  61.  
  62. function init_ptr(ptr:base_ptr):list_ptr;EXTERNAL;
  63.  
  64. { Diese Funktion rechnet die Zahl in der Kommandozeile in einen Long_integer-
  65.   Wert um und gibt diesen als list_ptr zurück. Dies ist zwar auch in Pascal
  66.   zu realisieren, hier jedoch sehr umständlich. 
  67.   Der Assembler-Code ist in MEGA_MOD.ASM enthalten. Er wurde auf dem Assembler
  68.   von Metacomco geschrieben, mü₧te aber auf allen Assemblern übersetzt werden
  69.   können. }
  70.  
  71.  
  72. { Hauptprogramm }
  73.  
  74. begin
  75.   message('Modul geladen...');writeln;
  76.  
  77.   basepage(bp);list:=init_ptr(bp);
  78.  
  79.   if list=NIL then
  80.     writeln('Fehler in der Kommandozeile...')
  81.  
  82.   else if list^.kennung<>'PRG 3.0' then
  83.     writeln('Ungültiger Parameterblock...')
  84.  
  85.   else with list^ do begin
  86.     writeln('  Kennung: ',kennung);
  87.     writeln('Adresse 1: ',maus1:8:h);
  88.     writeln('Adresse 2: ',maus2:8:h);
  89.     writeln('Adresse 3: ',maus3:8:h);
  90.     writeln('Adresse 4: ',block1:8:h);
  91.     writeln('Adresse 5: ',block2:8:h);
  92.     writeln('Adresse 6: ',block3:8:h);
  93.  
  94.     for a:=0 to 2 do                    { Es wurden 3 Namen angefordert ! }
  95.       writeln('  Datei ',a+1,': ',names^[a]);
  96.   end;
  97.  
  98.   while keypress do get(input);get(input);
  99. end.
  100.