home *** CD-ROM | disk | FTP | other *** search
- {$TITLE:'Epson MX-100 TabSet Procedure',$PAGESIZE:57,$LINESIZE:132,$LINE+}
-
- {This program is another version of the preceding program; this version
- shows how the same functions can be done by accessing the printer as
- as a binary file with PUTs.}
-
- PROGRAM TabTest (Input,Output);
-
- VAR
- I, Col, Count: INTEGER;
- Flag: BOOLEAN;
- Answer: CHAR;
- Tabs: ARRAY[1..132] OF BOOLEAN;
- Printer: FILE OF CHAR;
-
- PROCEDURE TabSet (TabCol: INTEGER; VerifyFlag: BOOLEAN);
-
- CONST
- Escape = CHR(27);
- CarRet = CHR(13);
- LineFeed = CHR(10);
- 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 }
- Printer.Mode:= TERMINAL;
- REWRITE (Printer);
- Printer^:= Escape; { Send Escape D }
- PUT (Printer);
- Printer^:= 'D';
- PUT (Printer);
- FOR I:= 2 TO 132 DO { Send column numbers for tab settings }
- IF Tabs[I] THEN
- BEGIN
- Printer^:= CHR(I-1);
- PUT (Printer)
- END;
- Printer^:= NullChar; { Send null to terminate sequence }
- PUT (Printer);
-
- IF VerifyFlag = TRUE THEN
- BEGIN
- Printer^:= '-';
- PUT (Printer);
- FOR I:=2 TO 132 DO
- BEGIN
- IF Tabs[I] THEN
- Printer^:= '+'
- ELSE
- Printer^:= '-';
- PUT (Printer)
- END;
- Printer^:= CarRet;
- PUT (Printer);
- Printer^:= LineFeed;
- PUT (Printer);
- FOR I:= 1 TO Count DO
- BEGIN
- Printer^:= HorTab;
- PUT (Printer);
- Printer^:= '+';
- PUT (Printer)
- END;
- Printer^:= CarRet;
- PUT (Printer);
- Printer^:= LineFeed;
- PUT (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.