home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / microcrn / issue_40.arc / SCANNER.ARC / TESTSCAN.MOD < prev   
Text File  |  1988-01-11  |  2KB  |  49 lines

  1. (* Code from Pascal column of Micro Cornucopia Issue #39 *)
  2.  
  3. MODULE TestScan;
  4. (* First run pixel capture software, all it does is scan and display.
  5.    My results with this show that:
  6.       1. In order to get reasonable resolution, the sensor will have to
  7.          be apertured.
  8.       2. The scanned image WILL need image processing.
  9.       3. The possibility to have lots of fun is good.
  10.                                                                   *)
  11.  
  12. FROM ScrnStuff IMPORT Screen, ClrScr, GraphMode, TextMode, Scan,
  13.                       PixAddress, Buffer, SetBit, SetClock;
  14. FROM Terminal IMPORT KeyPressed;
  15. FROM Config IMPORT Xsize, Ysize;
  16.  
  17. CONST
  18.    TickSize = 1536;      (* real time clock chip divisor, this value gave
  19.                             reasonable results.  Subject to change. *)
  20. VAR
  21.    S [0b000h:0] : Screen; (* use appropriate constants for your adapter *)
  22.    I, J, K, L : CARDINAL;
  23.    B : Buffer;
  24.    A : POINTER TO CHAR;
  25.    BP : CARDINAL;          (* not used except as throwaway parameter *)
  26.    ch : CHAR;
  27.  
  28. BEGIN
  29.    ClrScr(S);              (* clear the screen *)
  30.    GraphMode;              (* put it in graphics mode *)
  31.    SetClock(TickSize);
  32.    FOR J := 0 TO Ysize-1 DO   (* for now, just try for same resolution as screen *)
  33.       Scan(B);                (* capture a line od data *)
  34.       FOR K := 0 TO Xsize-1 BY 8 DO   (* Xsize is bits, do a byte at a time *)
  35.          A := PixAddress(K,J,BP);     (* calculate byte address *)
  36.          ch := 0c;                    (* clear assembly variable *)
  37.          FOR L := 0 TO 7 DO           (* then do each bit in the byte *)
  38.             IF B[K+L] < 7C THEN       (* this inverts image, & monochrome mode *)
  39.                ch := SetBit(ch,7-L);
  40.                END;
  41.             END;
  42.          A^ := ch;             (* actual screen byte update here *)
  43.          END;
  44.       END;
  45.    WHILE NOT(KeyPressed()) DO END;    (* admire the picture for a bit *)
  46.    ClrScr(S);                         (* then do orderly exit *)
  47.    TextMode;                          (* should also SlowClock *)
  48. END TestScan.
  49.