[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]
Program SPOOLIT;
{ Example program to demonstrate the PRINT spooler interface }
{ Define the data structure we need for spooling files }
Uses DOS;
Type
SpoolRecType = Record
Priority : Byte;
Filename : Pointer;
end;
Var
SpoolFile : PathStr;
SpoolBuffer : Array[1..70] of char;
SpoolRec : SpoolRecType;
Regs : Registers;
SpooledOk : Boolean;
Begin
With Regs do begin
AX := $100;
Intr($2F,Regs);
If AL = 0 then Begin
WriteLn('PRINT is not loaded.');
Halt
end
end;
{ Query user for the name of a file to spool }
Write('Enter the filename to print: ');
ReadLn(SpoolFile);
If Length(SpoolFile) = 0 then Halt; {Nothing to do, so quit}
FillChar(SpoolBuffer,SizeOf(SpoolBuffer),0);
Move(SpoolFile[1],SpoolBuffer,Length(SpoolFile));
SpoolRec.Priority := 0;
SpoolRec.Filename := Addr(SpoolBuffer);
{ Send the file on its way }
With Regs do Begin
AX := $101;
DS := DSeg;
DX := Ofs(SpoolRec);
Intr($2F,Regs);
{ Isolate the status fo the spool operation }
SpooledOK := Not ((Flags and 1) = 1);
If SpooledOk then
WriteLn('Your file has been placed in the queue.')
else
WriteLn('Could not spool your file, error code is ',AL)
end
End.
[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]