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 >
Wrap
Pascal/Delphi Source File
|
1990-07-30
|
4KB
|
100 lines
{ +--------------------------------------------+ }
{ | (C)1990 TommySoftware Thomas Maier, Berlin | }
{ | Version 3.00 Letzte Änderung 29.06.1990 | }
{ +--------------------------------------------+ }
{ Dieses Programm ist das Beispielmodul 'MEGA_01.PRG', das von MegaPaint
aus aufgerufen werden kann. Hiermit soll das Modulkonzept von MegaPaint
verdeutlicht werden. Damit MegaPaint das Programm aufrufen kann, mu₧ die
Informationsdatei 'MEGA_01.MOD' vorhanden sein.
Siehe dazu 'MAKE_MOD.PAS'. }
program Test_Modul_Version_3_00;
type
str7=string[7];
str31=string[31];
str127=string[127];
base_page=record { Standard-Basepage aus ST Pascal }
dummy:packed array[0..127]of byte;
cmd:str127;
end;
base_ptr=^base_page;
{ Beispiel-Deklaration der Füll- und Linienmuster, falls benötigt }
pat_typ=array[0..31]of long_integer; { Ein Muster mit 32 x 32 Punkten }
pat_feld=record
kennung:str7;
fill:array[0..33]of pat_typ; { 34 Füllmuster mit 32 x 32 Punkten }
line:array[0..17]of integer; { 9 Linienmuster mit 32 Punkten }
end;
pat_ptr=^pat_feld;
name_typ=array[0..7]of str127; { Feld mit den bis zu acht übergebenen }
name_ptr=^name_typ; { Dateinamen }
list_typ=record
kennung:str7; { 'PRG 3.0' }
maus1:long_integer; { Zeiger auf den ersten Mausblock }
maus2:long_integer; { Zeiger auf den zweiten Mausblock }
maus3:long_integer; { Zeiger auf den dritten Mausblock }
block1:long_integer; { Zeiger auf den ersten Variablenblock }
block2:long_integer; { Zeiger auf den zweiten Variablenblock }
block3:long_integer; { Zeiger auf den dritten Variablenblock }
pat:pat_ptr; { Zeiger auf die Füll- und Linienmuster }
names:name_ptr; { Zeiger auf die übergebenen Dateinamen }
end;
list_ptr=^list_typ;
var
bp:base_ptr; { Zeiger auf die Basepage }
list:list_ptr; { Zeiger auf den Parameterblock }
a:integer; { Zähler für die Ausgabe der Dateinamen }
function init_ptr(ptr:base_ptr):list_ptr;EXTERNAL;
{ Diese Funktion rechnet die Zahl in der Kommandozeile in einen Long_integer-
Wert um und gibt diesen als list_ptr zurück. Dies ist zwar auch in Pascal
zu realisieren, hier jedoch sehr umständlich.
Der Assembler-Code ist in MEGA_MOD.ASM enthalten. Er wurde auf dem Assembler
von Metacomco geschrieben, mü₧te aber auf allen Assemblern übersetzt werden
können. }
{ Hauptprogramm }
begin
message('Modul geladen...');writeln;
basepage(bp);list:=init_ptr(bp);
if list=NIL then
writeln('Fehler in der Kommandozeile...')
else if list^.kennung<>'PRG 3.0' then
writeln('Ungültiger Parameterblock...')
else with list^ do begin
writeln(' Kennung: ',kennung);
writeln('Adresse 1: ',maus1:8:h);
writeln('Adresse 2: ',maus2:8:h);
writeln('Adresse 3: ',maus3:8:h);
writeln('Adresse 4: ',block1:8:h);
writeln('Adresse 5: ',block2:8:h);
writeln('Adresse 6: ',block3:8:h);
for a:=0 to 2 do { Es wurden 3 Namen angefordert ! }
writeln(' Datei ',a+1,': ',names^[a]);
end;
while keypress do get(input);get(input);
end.