home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* LOADPIC.PAS *)
- (* Laden der mit SNAPSHOT abgespeicherten Screens *)
- (* ------------------------------------------------------ *)
-
- PROGRAM loadPic;
- (*$I REGS8088.INC *)
- (*$I SCREENIO.INC *)
-
- TYPE extension = STRING[3];
- Line = STRING[80];
- index = ARRAY[0..99] OF Line;
-
- VAR lname, lindex, pfad : name;
- a_x, a_y : INTEGER;
- lmodus, lseite : BYTE;
- ch : CHAR;
- picindex : index;
- Tdatei : TEXT;
-
- (* ------------------------------------------------------ *)
- PROCEDURE cursor (x, y : INTEGER);
-
- VAR regs : regs8088_ ;
-
- BEGIN
- regs.AH := $02; regs.BH := 0;
- regs.DH := y; regs.DL := x;
- INTR($10, regs);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Titel;
-
- BEGIN
- GotoXY(10, 1); ClrEol;
- WriteLn('LoadPic (C) 1988 Dietmar Bueckart & PASCAL',
- ' Int. ');
- GotoXY(10, 3); ClrEol;
- WriteLn('Aktueller Pfad: ', pfad);
- GotoXY(10, 4); ClrEol;
- WriteLn('Indexdatei : ',lindex);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE getpfad;
-
- BEGIN
- GotoXY(10, 3); ClrEol; pfad := '';
- Write('Pfad im Format < Ziel-Laufwerk:\Directory\ >',
- ' eingeben');
- GotoXY(10, 4); ClrEol;
- Write('Neuer Pfad: '); ReadLn(pfad);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE getnamen (VAR picname : name);
-
- VAR fertig : BOOLEAN;
-
- BEGIN
- ClrScr; picname := '';
- GotoXY(10, 10); Write('Namen der Bilddatei eingeben: ');
- GotoXY(10, 12);
- REPEAT
- Read(Kbd, ch);
- IF ch <> #13 THEN BEGIN
- ch := UpCase(ch); Write(ch);
- picname := picname + ch; END
- ELSE fertig := TRUE;
- UNTIL fertig;
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE hercPrint;
-
- VAR x, y : INTEGER;
-
- BEGIN
- Write(Lst, #27#65#7 );
- FOR x := 0 TO 89 DO BEGIN
- Write(Lst, #27#75#92#1 );
- FOR y := 347 DOWNTO 0 DO
- Write(Lst, Chr(screen^[ByteOffset(x*8, y)] ) );
- WriteLn(Lst);
- END;
- Write(Lst, #13#10#12#27#50);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE CgaPrint;
-
- VAR regs : regs8088_ ;
-
- BEGIN
- INTR($5, regs); Write(Lst, #13#10#12#27#50);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE hardcopy(ext : extension);
-
- BEGIN
- IF ext = 'CGA' THEN CgaPrint;
- IF (ext = 'HGG') OR (ext = 'HGC') THEN hercPrint;
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE displayPic (TEXT : name);
-
- VAR index : INTEGER;
- picname : name;
- picext : extension;
- dum : TEXT;
-
- BEGIN
- lmodus := get_modus(lseite);
- picname := ''; picext := '';
- Delete (TEXT, 13, 80); picname := TEXT;
- index := Pos('.', TEXT);
- Delete(TEXT, 1, index); picext := TEXT;
- picname := pfad + picname;
- Assign(dum, picname);
- {$I-} ReSet(dum); {$I+}
- IF IOResult <> 0 THEN Exit;
- IF picext = 'CGA' THEN cgaload(picname);
- IF picext = 'EGA' THEN egaload(picname);
- IF picext = 'HGC' THEN BEGIN
- set_modus(7);
- hercload(picname);
- END;
- IF picext = 'HGG' THEN BEGIN
- set_modus(7); GraphMode;
- hercload(picname);
- END;
- cursor(0, 48);
- Read(Kbd, ch);
- IF ch = #27 THEN hardcopy(picext);
- IF picext = 'HGG' THEN TextMode;
- set_modus(lmodus);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE getindex;
-
- VAR I, J, Imax : INTEGER;
-
- BEGIN
- GotoXY(10, 4); ClrEol;
- Write('Indexdatei: '); ReadLn(lindex);
- IF Pos('.', lindex) = 0 THEN lindex := lindex + '.IDX';
- lindex := pfad + lindex; Titel;
- Assign(Tdatei, lindex);
- {$I-} ReSet(Tdatei); {$I+}
- IF IOResult <> 0 THEN BEGIN
- lindex := '';
- Exit;
- END;
- I := -1;
- WHILE NOT Eof(Tdatei) DO BEGIN
- I := Succ(I);
- ReadLn(Tdatei, picindex[I]);
- END;
- Imax := I; J := 0;
- WINDOW(1, 7, 80, 25); ClrScr; WINDOW(1, 1, 80, 25);
- REPEAT
- FOR I := 1 TO Imax DO BEGIN
- GotoXY(4, 7+J); WriteLn(I : 2, ': ', picindex[I]);
- J := Succ(J);
- IF (J = Imax) OR (J = 16) THEN BEGIN
- GotoXY(4, 25);
- Write('weiter: <RETURN> Ende: <E> ',
- ' Datei: <D>');
- Read(Kbd, ch); ch := UpCase(ch);
- IF ch = 'E' THEN Exit ELSE IF ch = 'D' THEN BEGIN
- GotoXY(37, 25); ClrEol;
- Write('Nummer: '); ReadLn(J);
- lname := picindex[J]; displayPic(lname);
- END;
- J := 0;
- ClrScr; Titel;
- END;
- END;
- UNTIL ch = 'E';
- END;
-
- (* ------------------------------------------------------ *)
- FUNCTION menue : CHAR;
-
- BEGIN
- ClrScr; Titel;
- GotoXY(10, 7); WriteLn('< P > neuen Pfad definieren');
- GotoXY(10, 9);
- WriteLn('< I > neue Indexdatei definieren');
- GotoXY(10, 11);
- WriteLn('< D > Dateinamen frei eingeben');
- GotoXY(10, 13); WriteLn('< Q > LoadPic verlassen');
- GotoXY(10, 15); Write('Ihre Wahl ? ');
- REPEAT
- Read(Kbd, ch); ch := UpCase(ch);
- UNTIL ch IN ['P', 'I', 'D', 'Q'];
- menue := ch;
- END;
-
- (* ------------------------------------------------------ *)
-
- BEGIN
- ClrScr; ConOut := ConOutPtr;
- pfad := ''; lindex := '';
- REPEAT
- ch := menue;
- CASE ch OF
- 'P' : getpfad;
- 'D' : BEGIN
- getnamen(lname); displayPic(lname);
- END;
- 'I' : getindex;
- END;
- UNTIL ch = 'Q';
- END.
-
- (* ------------------------------------------------------ *)
- (* Ende von LOADPIC.PAS *)
-