home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpm
/
txtutl
/
pgprint.lbr
/
PPG.PZS
/
PPG.PAS
Wrap
Pascal/Delphi Source File
|
1988-05-09
|
4KB
|
148 lines
program PPG2;
{PagePrinterII text pagination program (c) 1988 by Sam Bellotto Jr.}
{ ------------------------- Printer Control Codes --------------------------- }
const PEDoff =#27#56; {disable paper end detector}
LeftMar1 =#27#108#1; {set left margin at 1}
LeftMar10 =#27#108#10; {set left margin at 10}
Elite =#27#77; {set printer to 12 cpi mode}
ClrLst =#27#64; {reset printer}
{ ------------------------- for Epson compatibles --------------------------- }
type texst =string[80];
var page,lines :integer;
letter,rev :char;
tag :string[60];
fname :string[14];
fmt :string[3];
filvar :text;
prompt :string[30] absolute $80; {mem addr of comline suffix}
procedure SyntaxError;
begin
writeln;
writeln(^G,'++ Syntax Error ++'); {^G is bell}
writeln;
writeln('PPG2 d:FILENAME.EXT');
halt
end;
procedure OpenFile;
begin
if length(prompt)=0 then SyntaxError
else begin
fname:=copy(prompt,2,length(prompt)-1);
assign(filvar,fname);
{$I-} reset(filvar); {$I+}
if ioresult<>0 then
begin
writeln;
writeln(^G,'++ File Does Not Exist ++');
halt
end
end;
if copy(fname,2,1)=':' then delete(fname,1,2)
end;
procedure Display(mess:texst);
begin
delline;
write(mess)
end;
procedure SignOn;
begin
page:=1;lines:=0;
writeln('PagePrinterII version 1.0');
writeln('(c)1988 by Sam Bellotto Jr.');
writeln('---------------------------');
writeln;
Display(' Heading? ');
read(tag);
Display(' Starting page? ');
read(page);
Display('Reverse margins? ');
read(kbd,rev);
Display(' Starting line? ');
read(lines);
Display(' printing ... ');
write(lst,PEDoff,Elite);
if lines>0 then lines:=lines+3
end;
procedure DoPage;
var title:string[80];
var st:string[3];
begin
str(page,st);
if fmt='evn' then begin
title:=concat('Page ',st,'/ ',fname,' ',tag);
write(lst,LeftMar1);
write(lst,title)
end else begin
title:=concat(fname,' ',tag,'/ ','Page ',st);
write(lst,LeftMar10);
write(lst,title:79)
end;
writeln(lst);writeln(lst)
end;
procedure SetUpPage;
begin
fmt:='odd';
if upcase(rev)='Y' then begin
if lines>0 then fmt:='evn'
else if odd(page) then fmt:='evn'
end else begin
if not odd(page) then fmt:='evn'
end;
DoPage
end;
procedure PrintOnePage;
begin
repeat
read(filvar,letter);
write(lst,letter);
if letter=chr(13) then lines:=lines+1 {0DH is CR or EOL}
until (lines=50) or (eof(filvar));
if not eof(filvar) then write(lst,#12) {form feed}
end;
procedure Wait;
Begin
page:=page+1;lines:=0;
delline;
Write(^G,'Ready to print page ',page,'? ');
repeat
delay(100)
until keypressed;
Display(' printing ... ')
end;
procedure SignOff;
begin
close(filvar);
writeln(lst,#10,ClrLst); {line feed}
write(^G);
Display('++ COMPLETED ++');
writeln;
writeln('++ ON PAGE ',page);
writeln('++ ON LINE ',lines)
end;
begin {main}
OpenFile;
SignOn;
while not eof(filvar) do begin
SetUpPage;
PrintOnePage;
if not eof(filvar) then Wait
end;
SignOff
end. {of PagePrinterII}