home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / pascal / visionix / test / tcrt.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-12-29  |  8.9 KB  |  561 lines

  1. program tcrt;
  2.  
  3. uses
  4.  
  5.   vtypesu,
  6.   vstringu,
  7.   vgenu,
  8.   voutu,
  9.   vserlu,
  10.   vseru,
  11.   vserhu,
  12.   vfosu,
  13.   vcrtu;
  14.  
  15. {────────────────────────────────────────────────────────────────────────────}
  16.  
  17.  
  18. Type
  19.  
  20.   TWackyParams = RECORD
  21.     LookFor    : CHAR;
  22.     ReplaceWith: CHAR;
  23.   END;
  24.  
  25.   PWackyParams = ^TWackyParams;
  26.  
  27. Var
  28.  
  29.   serh : TSerHandle;
  30.  
  31. {────────────────────────────────────────────────────────────────────────────}
  32.  
  33. Procedure SetupSer( Port : BYTE;
  34.                     Baud : WORD         );
  35.  
  36. Var
  37.  
  38.   err : word;
  39.   cp  : TCommParam;
  40.  
  41. BEGIN
  42.  
  43.   { Create new serial channel }
  44.  
  45.   Err := VSerChanNew( 0,
  46.                       FosSerDriverProc,
  47.                       Port,                    { comport }
  48.                       0,
  49.                       0,
  50.                       SerH );
  51.  
  52.   If Err<>0 Then
  53.   BEGIN
  54.     Writeln(' VserChannew = ',err );
  55.     Halt( 69 );
  56.   END;
  57.  
  58.   { activate/initialize the channel }
  59.  
  60.   CP.BaudRate   := Baud;
  61.   CP.Parity     := 'N';
  62.   CP.DataBits   := 8;
  63.   CP.StopBits   := 1;
  64.  
  65.   Err := VSerChanActivate( SerH, @CP );
  66.  
  67.   If Err<>0 Then
  68.   BEGIN
  69.     Writeln(' VserChanActivate = ',err );
  70.     Halt( 69 );
  71.   END;
  72.  
  73.   VSerAnsiOutSubChanNew( Serh,
  74.                          0,
  75.                          'SERANSI',
  76.                          CrtOCH,
  77.                          TRUE        );
  78.  
  79.  
  80.   VSerPurgeOutBuff( Serh );
  81.   VSerPurgeInBuff( Serh );
  82.  
  83.   TextColors( white, black );
  84.  
  85.   ClrScr;
  86.  
  87.   WriteLn('VisionTools CRT Tester; Version 0.9');
  88.   WriteLn;
  89.   Write('Press % key to start the show...');
  90.  
  91.   VSerWaitCh( Serh, '%', 30000, FALSE );
  92.  
  93. END;
  94.  
  95. {────────────────────────────────────────────────────────────────────────────}
  96.  
  97. Procedure WaitForKey;
  98.  
  99. BEGIN
  100.  
  101.   ReadKey;
  102.  
  103. END;
  104.  
  105. {────────────────────────────────────────────────────────────────────────────}
  106.  
  107.  
  108. Procedure TestClrScr;
  109.  
  110. Var
  111.  
  112.   z : INTEGER;
  113.  
  114. BEGIN
  115.  
  116.   For Z := 0 to 15 do
  117.   BEGIN
  118.  
  119.     TextBackGround( Z );
  120.  
  121.     ClrScr;
  122.  
  123.     Delay( 500 );
  124.  
  125.   END;
  126.  
  127.   WaitForKey;
  128.  
  129. END;
  130.  
  131.  
  132. {────────────────────────────────────────────────────────────────────────────}
  133.  
  134.  
  135. Procedure TestTextColor;
  136.  
  137. Var
  138.  
  139.   Z : INTEGER;
  140.  
  141. BEGIN
  142.  
  143.   TextBackGround( Black );
  144.  
  145.   ClrScr;
  146.  
  147.   Z:=0;
  148.  
  149.   Repeat
  150.     TextColor( Z );
  151.     {WriteLn('Hello, world!');}
  152.     Write('Hello, world! ');
  153.  
  154.     Inc(Z);
  155.     If Z>15 Then
  156.       Z:=0;
  157.  
  158.   Until KeyPressed;
  159.  
  160. (*
  161.   For Z := 0 to 100 Do
  162.   BEGIN
  163.     TextColor( Z MOD 16 );
  164.     WriteLn('Hello, World!');
  165.   END;
  166. *)
  167.  
  168.  
  169.   WaitForKey;
  170.  
  171. END;
  172.  
  173. {────────────────────────────────────────────────────────────────────────────}
  174.  
  175.  
  176. Procedure TestGotoAndWhereXY;
  177.  
  178. var
  179.  
  180.   x,y : BYTE;
  181.   W   : INTEGER;
  182.   Z   : INTEGER;
  183.  
  184. BEGIN
  185.  
  186.   For W := 1 to 5 Do
  187.   BEGIN
  188.  
  189.     Window( w,w, 80,24 );
  190.  
  191.     TextBackGround( W+1 );
  192.     TextColor( BLACK );
  193.  
  194.     ClrScr;
  195.  
  196.     For Z := 1 to 15 Do
  197.     BEGIN
  198.       GotoXY( Z, Z );
  199.       X:=WhereX;
  200.       Y:=WhereY;
  201.       Write( X,',',Y,' (',Z,',',Z,')' );
  202.     END;
  203.  
  204.     WaitForKey;
  205.  
  206.   END;
  207.  
  208. END;
  209.  
  210. {────────────────────────────────────────────────────────────────────────────}
  211.  
  212.  
  213. Procedure TestScroll;
  214.  
  215. var
  216.  
  217.   x,y : BYTE;
  218.   Z   : INTEGER;
  219.  
  220.   Cl  : STRING;
  221.  
  222. BEGIN
  223.  
  224.   CL := '1234567890';
  225.  
  226.   TextBackGround( white );
  227.   TextColor( Red );
  228.  
  229.   WindowScreen;
  230.  
  231.   ClrScr;
  232.  
  233.   Z := 0;
  234.  
  235.   Write('12345678901234567890123456789012345678901234567890123456789012345678901234567890');
  236.   window(5,2,75,11);
  237.   Textbackground( black );
  238.   clrscr;
  239.  
  240.   Repeat
  241.     Inc( Z );
  242.     If Z>Length(CL) Then
  243.       Z:=1;
  244.  
  245.     textbackground(z);
  246.     Write(RepeatString( CL[Z],30 ) );
  247.  
  248.     x:=wherex;
  249.     y:=wherey;
  250.     gotoxy(1,1);
  251.     clreol;
  252.     write( 'x=',x,' y=',y );
  253.     gotoxy(x,y);
  254.  
  255.   Until ReadKey=#27;
  256.  
  257. END;
  258.  
  259. {────────────────────────────────────────────────────────────────────────────}
  260.  
  261.  
  262. Procedure TestRegions;
  263.  
  264. Var
  265.  
  266.   r1 : POINTER;
  267.   r2 : POINTER;
  268.  
  269.   x2,y2 : INTEGER;
  270.  
  271. BEGIN
  272.  
  273.   GetMem( R1, RegionMemQuery( 1 ,1,13,16 ) );
  274.   GetMem( R2, RegionMemQuery( 20,1,32,16 ) );
  275.  
  276.   RegionRead( 1 ,1,13,16, R1 );
  277.  
  278.   Repeat
  279.  
  280.     x2 := random( 80-15 )+1;
  281.     y2 := random( 50-12 )+1;
  282.  
  283.     RegionRead(  X2,Y2, X2+12, Y2+15, R2 );
  284.  
  285.     RegionWrite( X2,Y2, X2+12, Y2+15, R1 );
  286.  
  287.     Delay( 5 );
  288.  
  289.     RegionWrite( X2,Y2, X2+12, Y2+15, R2 );
  290.  
  291.   Until KeyPressed;
  292.  
  293.   ReadKey;
  294.   WaitForKey;
  295.  
  296.   FreeMem( r1, RegionmemQuery( 1 ,1,13,16 ) );
  297.   FreeMem( r2, RegionmemQuery( 20,1,32,16 ) );
  298.  
  299. END;
  300.  
  301.  
  302. Procedure TestRegions2;
  303.  
  304. Var
  305.  
  306.   r1 : POINTER;
  307.   r2 : POINTER;
  308.  
  309.   x2,y2 : INTEGER;
  310.  
  311. BEGIN
  312.  
  313.   GetMem( R1, RegionMemQuery( 5,5,75,20 ) );
  314.  
  315.   RegionRead( 5,5,75,20, R1 );
  316.  
  317.   WaitForKey;
  318.  
  319.   RegionWrite( 5,5,75,20, R1 );
  320.  
  321.   WaitForKey;
  322.  
  323.   FreeMem( r1, RegionmemQuery( 5,5,75,20 ) );
  324.  
  325. END;
  326.  
  327.  
  328.  
  329.  
  330. {────────────────────────────────────────────────────────────────────────────}
  331.  
  332.  
  333. Procedure WackyFilter(       ODP            : POutDriverPacket ); FAR;
  334.  
  335. Type
  336.  
  337.  
  338.   TCharBuff = Array[1..32768] of CHAR;
  339.   PCharBuff = ^TCharBuff;
  340.  
  341.   TWackyFilterIData = Record
  342.  
  343.     Off        : WORD;
  344.     Name       : TProcName;
  345.     LookFor    : CHAR;
  346.     ReplaceWith: CHAR;
  347.  
  348.   END;  { TCRTOutDriverIData }
  349.  
  350.   PWackyFilterIData = ^TWackyFilterIData;
  351.  
  352.   {----}
  353.  
  354. Var
  355.   IData      : PWackyFilterIData;
  356.  
  357.   Z          : INTEGER;
  358.  
  359.  
  360. BEGIN  { CRTOutDriverProc }
  361.  
  362.   IData := ODP^.ID;
  363.  
  364.   If ODP^.Status = 0 Then
  365.   BEGIN
  366.  
  367.     Case ODP^.Func Of
  368.  
  369.       ODF_DriverNew:
  370.       BEGIN
  371.  
  372.         {-----------------------------}
  373.         { are they telling me to new? }
  374.         {-----------------------------}
  375.  
  376.         IF @ODP^.OutDriverProc = @WackyFilter Then
  377.         BEGIN
  378.  
  379.           {-------------------------}
  380.           { Get a new Instance Data }
  381.           { master node.            }
  382.           {-------------------------}
  383.  
  384.           New( Idata );
  385.  
  386.           IData^.Off := 0;
  387.  
  388.           IData^.Name := ODP^.Name^;
  389.  
  390.           If Pointer(ODP^.DriverParam1)<>NIL Then
  391.           BEGIN
  392.             IData^.LookFor     := PWackyParams( ODP^.DriverParam1 )^.LookFor;
  393.             IData^.ReplaceWith := PWackyParams( ODP^.DriverParam1 )^.ReplaceWith;
  394.           END
  395.           ELSE
  396.           BEGIN
  397.             IData^.LookFor     := ' ';
  398.             IData^.replacewith := ' ';
  399.           END;
  400.  
  401.           ODP^.Status    := ODS_Install+ODS_Changed;
  402.           ODP^.ID        := IData;
  403.  
  404.         END; { If ODP^.OutDriverProc --> Us }
  405.  
  406.       END; { ODF_DriverNew }
  407.  
  408.       {----}
  409.  
  410.       ODF_DriverOff:
  411.       BEGIN
  412.  
  413.         If ODP^.Name^ = IData^.Name Then
  414.         BEGIN
  415.  
  416.           Inc( Idata^.Off );
  417.  
  418.         END;  { If ODP^.Name^ }
  419.  
  420.       END;  { ODF_DriverOff }
  421.  
  422.       {----}
  423.  
  424.       ODF_DriverOn:
  425.       BEGIN
  426.  
  427.         If ODP^.Name^ = IData^.Name Then
  428.         BEGIN
  429.  
  430.           If Idata^.Off <> 0 Then
  431.             Dec( Idata^.Off );
  432.  
  433.         END;  { ODP^.Name^ }
  434.  
  435.       END;  { ODF_DriverOn }
  436.  
  437.       {----}
  438.  
  439.       ODF_DriverDispose:
  440.       BEGIN
  441.  
  442.         If ODP^.Name^ = IData^.Name Then
  443.         BEGIN
  444.  
  445.           {RemoveFromOutDriverStack }
  446.  
  447.           Dispose( IData );
  448.  
  449.         END;  { If ODP^.Name^ }
  450.  
  451.       END;  { ODF_DriverDispose }
  452.  
  453.       {----}
  454.  
  455.       ODF_WriteChar:
  456.       BEGIN
  457.  
  458.         If ODP^.Ch=IData^.LookFor Then
  459.           ODP^.Ch := IData^.ReplaceWith;
  460.  
  461.       END;  { ODF_WriteChar }
  462.  
  463.       {----}
  464.  
  465.       ODF_WriteBlock:
  466.       BEGIN
  467.  
  468.         For Z:=1 to ODP^.Size Do
  469.         BEGIN
  470.  
  471.           If PCharBuff( ODP^.BUFF )^[Z]=Idata^.LookFor Then
  472.             PCharBuff( ODP^.BUFF )^[Z] :=Idata^.ReplaceWith;
  473.  
  474.         END; { For Z }
  475.  
  476.  
  477.       END;  { ODF_WriteBlock }
  478.  
  479.       {----}
  480.  
  481.     Else { Else Case }
  482.  
  483.     END;  { Case ODP^.Func }
  484.  
  485.   END; { If ODP^.Status = 0 }
  486.  
  487.   CallNextDriver( ODP );
  488.  
  489. END;  { CRTOutDriverProc }
  490.  
  491.  
  492. {────────────────────────────────────────────────────────────────────────────}
  493.  
  494.  
  495. Procedure TestInstallFilters;
  496.  
  497. Var
  498.  
  499.   Wackyp : TWackyParams;
  500.  
  501.  
  502. BEGIN
  503.  
  504.   wackyp.lookfor := 'H';
  505.   wackyp.replacewith := 'Z';
  506.  
  507.   VOutFilterAttach( CrtOCH,
  508.                     0,
  509.                     'WACKY!',
  510.                     'Bx00VMEM',
  511.                     WackyFilter,
  512.                     longint(@wackyp),0,0         );
  513.  
  514.   wackyp.lookfor := '!';
  515.   wackyp.replacewith := '?';
  516.  
  517.   VOutFilterAttach( CrtOCH,
  518.                     0,
  519.                     'WACKIER!',
  520.                     'Bx00VMEM',
  521.                     WackyFilter,
  522.                     longint(@wackyp),0,0         );
  523.  
  524.  
  525. END;
  526.  
  527.  
  528. {────────────────────────────────────────────────────────────────────────────}
  529. {────────────────────────────────────────────────────────────────────────────}
  530. {────────────────────────────────────────────────────────────────────────────}
  531.  
  532.  
  533. begin
  534.  
  535.   WriteLn('VisionTools CRT tester; version 0.9');
  536.   WriteLn;
  537.  
  538. {  SetupSer( 2 );  } { uncomment this to send output to FOSSIL PORT #2 }
  539.  
  540.   TestClrScr;
  541.  
  542.   TestGotoAndWhereXY;
  543.  
  544.   TestTextColor;
  545.  
  546.   TestScroll;
  547.  
  548.   TestInstallFilters;
  549.  
  550.   TestTextColor;
  551.  
  552.   WindowScreen;
  553.  
  554.   TestTextColor;
  555.  
  556.   TestRegions2;
  557.  
  558.   TestRegions;
  559.  
  560. end.
  561.