home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 02 / snap / showpic.pas < prev    next >
Pascal/Delphi Source File  |  1987-11-21  |  2KB  |  71 lines

  1. (* ------------------------------------------------------------------- *)
  2. (*                              SHOWPIC.PAS                            *)
  3. (*    Anzeigen, drucken und Text-Konvertierung von Schnappschuessen    *)
  4. (*        unter Verwendung von FASTSCR.INC (PASCAL 7/87, S.88)         *)
  5. PROGRAM ShowPic;
  6.  
  7. CONST  ScreenBaseAdress = $B800;                (* Monochrom = $B000 ! *)
  8.        ScrSize          = 2048;
  9. TYPE   strng            = STRING[255];
  10. VAR    Screen           : ARRAY[1..ScrSize,1..2] OF CHAR
  11.                             ABSOLUTE ScreenBaseAdress:$0000;
  12.        ScrBuf           : ARRAY[1..ScrSize,1..2] OF CHAR;
  13.        ScrFil           : FILE;
  14.        c                : CHAR;
  15.  
  16. PROCEDURE BufScreen;
  17. BEGIN  Move(Screen,ScrBuf,4000);  END;
  18.  
  19. FUNCTION LoadScreen (Name: strng): BOOLEAN;
  20. VAR Anzahl: INTEGER;
  21. BEGIN
  22.   anzahl := 0;  Assign(ScrFil,Name);
  23.   (*$I-*)  ReSet(ScrFil);  (*$I+*)
  24.   IF IOResult = 0 THEN BlockRead(ScrFil,Screen,32,anzahl);
  25.   Close(ScrFil);  LoadScreen := (anzahl >= 31);
  26. END;
  27.  
  28. PROCEDURE convert;
  29. VAR i, j: INTEGER;  TxtFil: TEXT;
  30. BEGIN
  31.   BufScreen;
  32.   Assign(TxtFil,'FOTOFILE.TXT');  ReWrite(TxtFil);
  33.   FOR i := 0 TO 24 DO BEGIN
  34.     FOR j := 1 TO 80 DO Write(TxtFil,ScrBuf[i*80+j]);
  35.     WriteLn(TxtFil);
  36.   END;
  37.   Close(TxtFil);
  38. END;
  39.  
  40. PROCEDURE print_screen;
  41. VAR i, j, k: INTEGER;
  42. BEGIN
  43.   BufScreen;
  44.   FOR i := 0 TO 24 DO BEGIN
  45.     FOR j := 1 TO 80 DO BEGIN
  46.       k := i*80+j;
  47.       (* an dieser Stelle kann das Attribut-Byte "screen[k,2]" ausge-
  48.          wertet und entsprechendes an den Drucker gesendet werden !
  49.          Bei Monochrom z.B. invers, unterstrichen etc. (s. techn. Hand-
  50.          buch des Rechners). Durch entspr. Steuersequenzen fuer Ihren
  51.          Drucker kann die Wiedergabe so verbessert werden!             *)
  52.       Write(Lst,Screen[k,1]);
  53.     END;
  54.     WriteLn(Lst);
  55.   END;
  56. END;
  57.  
  58. BEGIN (* ShowPic *)
  59.   WriteLn;  WriteLn;  WriteLn;
  60.   WriteLn('SNAPSHOT & SHOWPIC  v1.2   (C) 1987  G.Krüger & PASCAL INT.');
  61.   WriteLn;
  62.   Write('a)nzeigen  d)rucken  k)onvertieren ?');
  63.   GotoXY(80,25);  Read(Kbd,c);  c := UpCase(c);
  64.   CASE c OF
  65.     'A': IF LoadScreen('FOTOFILE.PIC') THEN ELSE;
  66.     'D': IF LoadScreen('FOTOFILE.PIC') THEN print_screen;
  67.     'K': IF LoadScreen('FOTOFILE.PIC') THEN convert;
  68.   END;
  69.   IF c = 'A' THEN REPEAT UNTIL KeyPressed;
  70. END.
  71.