home *** CD-ROM | disk | FTP | other *** search
- {$TITLE:'Epson MX-100 TabSet Procedure',$PAGESIZE:57,$LINESIZE:132,$LINE+}
-
- {This program is an elementary-level Pascal program, illustrating how
- procedures are incorporated into programs, how a printer file is
- defined and used and how control characters can be defined and used.
- The program was written for an Epson MX-100; it can presumably be
- used on the MX-80 with virtually no change.}
-
- PROGRAM TabTest (Input,Output);
-
- VAR
- I, Col, Count: INTEGER;
- Flag: BOOLEAN;
- Answer: CHAR;
- Tabs: ARRAY[1..132] OF BOOLEAN;
- Printer: TEXT;
-
- PROCEDURE TabSet (TabCol: INTEGER; VerifyFlag: BOOLEAN);
-
- CONST
- Escape = CHR(27);
- HorTab = CHR(9);
- NullChar = CHR(0);
-
- BEGIN
-
- IF TabCol < 0 THEN
- BEGIN
- Count:= 0;
- FOR I:= 1 TO 132 DO
- Tabs[I]:= FALSE
- END
-
- ELSE IF (TabCol >= 1) AND (TabCol <= 132) AND (Count < 12) THEN
- BEGIN
- Count:= Count+1;
- Tabs[TabCol]:= TRUE
- END
-
- ELSE IF TabCol = 0 THEN
- BEGIN
- ASSIGN (Printer,'LPT1:'); { Open print file }
- REWRITE (Printer);
- WRITE (Printer,Escape,'D'); { Send Escape D }
- FOR I:= 2 TO 132 DO { Send column numbers for tab settings }
- IF Tabs[I] THEN WRITE (Printer,CHR(I-1));
- WRITELN (Printer,NullChar); { Send null to terminate sequence }
-
- IF VerifyFlag = TRUE THEN
- BEGIN
- WRITE (Printer,'-');
- FOR I:=2 TO 132 DO
- BEGIN
- IF Tabs[I] THEN WRITE (Printer,'+')
- ELSE WRITE (Printer,'-');
- END;
- WRITELN (Printer);
- FOR I:= 1 TO Count DO
- BEGIN
- WRITE (Printer,HorTab,'+');
- END;
- WRITELN (Printer);
- END;
- CLOSE (Printer)
- END;
- END;
-
- BEGIN
- WRITE ('Will You Want To Display Tab Settings (Y/N)? ');
- READLN (Answer);
- IF (Answer='Y') OR (Answer='y') THEN
- BEGIN
- Flag:= TRUE;
- WRITELN ('Tab Settings Will Be Displayed . . .')
- END
- ELSE
- BEGIN
- Flag:= FALSE;
- WRITELN ('Tab Settings Will Not Be Displayed . . .')
- END;
- TabSet (-1,Flag);
- WRITELN;
- WRITELN ('Enter Up To Ten Tabs, Each On A Separate Line.');
- WRITELN ('Enter A "0" To Stop Column Prompts . . .');
- WRITELN;
- REPEAT
- READLN (Col);
- TabSet (Col,Flag);
- IF Col <>0
- THEN WRITELN ('A Tab Will Be Set in Column ', Col:1)
- ELSE WRITELN ('Tab Setting Completed.')
- UNTIL Col=0
- END.