home *** CD-ROM | disk | FTP | other *** search
- (*************************************************************************)
- (* *)
- (* Epson LQ Printer Configurer - Version 1.0 *)
- (* *)
- (* Author: Forrest A. Blood IV - 11/23/91 *)
- (* Based on the original program for a Gemini 10x by G. Moore - 12/4/87 *)
- (* *)
- (* This program allows you to configure an Epson LQ in various ways *)
- (* including "Ultra Tiny" print. This program has been tested on an *)
- (* LQ-510 and an LQ-570 printer and may not work on other models. The *)
- (* source code is well documented so you can modify the printer codes *)
- (* for your specific printer. You need Personal Pascal Version 2 to *)
- (* compile this. *)
- (* *)
- (* This source code and compiled program are released into the public *)
- (* domain and may not be sold for profit. *)
- (* *)
- (*************************************************************************)
-
- {$S10,D-}
-
- Program Epson_Acc;
-
- {$I GEMSUBS}
- {$I AUXSUBS}
-
- LABEL 1991;
-
- CONST
-
- {The following are all CONST defins from the Resource Construction Program}
- PRT_BOX = 0;
- ULTRATNY = 4;
- PICA = 3;
- ELITE = 5;
- CONDENSE = 6;
- PAPER = 17;
- SKIPOVER = 18;
- D_WIDE = 19;
- D_STRIKE = 21;
- ITALICS = 20;
- BOLD = 22;
- FORMFEED = 16;
- TYPERITE = 14;
- LINEFEED = 12;
- DONE = 13;
- INITIAL = 15;
- LEFT = 25;
- RIGHT = 26;
- DOWN = 28;
- LPP = 27;
- UP = 29;
- LFSIZE = 30;
-
- VAR
-
- {The following capitalized variables represent whether or
- not the indicated button is selected}
-
- PICA_,
- ELITE_,
- CONDENSE_,
- ULTRA_TINY_,
- PAPER_,
- SKIPOVER_,
- D_WIDE_,
- D_STRIKE_,
- ITALICS_,
- BOLD_ : Boolean;
-
- J,
- Choice,
- ToBeEdited, {Which of the four buttons is to be edited}
- CurLeft, {Current Left Margin}
- CurRight, {Current Right Margin}
- CurLPP, {Current Number of Lines Per Page}
- CurLFS : Integer; {Current Line Feed Size}
-
- Box : Dialog_Ptr;
-
- OutStr : Str255; {String to send to the printer}
-
- P : File of Text;
-
- TheScreen : Screen_type;
-
- Initial_Draw, {Has dialog been drawn yet?}
- ChangeSize : Boolean; {Has size changed (eg from PICA to CONDENSED)}
-
- (****************************************************************)
- Function bcostat(device : integer) : boolean;
- BIOS(8);
- (****************************************************************)
- Procedure TypeWriter;
-
- Begin
- Clear_Screen;
- Curs_Home;
- Curs_On;
- Writeln('Typewriter mode -- type /EX to quit');
- Writeln;
- Repeat
- Readln(OutStr);
- If (OutStr <> '/EX') and (OutStr <> '/ex') then Writeln(P,OutStr);
- Until (OutStr = '/EX') or (OutStr = '/ex');
- Curs_Off;
- Clear_Screen;
- End;
- (****************************************************************)
- Procedure UpdateNumber(Index,Value:Integer);
-
- VAR S : Str255;
- NewValue,
- J, K : Integer;
-
- {Gets current resolution: 0 = Low, 1 = Medium, 2 = High}
- Function Get_rez:integer;
- XBIOS(4);
-
- Begin
- {Convert the integer to a string}
- K := Value div 100;
- If K = 0 then S := ' ' else S := Chr(Ord('0') + K);
- If (Value < 10) then S := ' ' else
- begin
- Value := Value mod 100;
- K := Value div 10;
- S := concat(S,Chr(Ord('0') + K));
- Value := Value Mod 10;
- end;
- S := concat(S,Chr(Ord('0') + Value));
-
- {Draw string directly to dialog box since Show_Dialog is WAY too slow}
- Case Index of
- LEFT : J := 99;
- RIGHT : J := 115;
- LPP : J := 131;
- LFSIZE : J := 147;
- end;
-
- If Get_rez = 0 then K := 288 else K := 448;
- If Get_rez = 2 then J := J * 2;
- Draw_Mode(1);
- Draw_String(K,J,S);
-
- End;
- (****************************************************************)
-
- Begin
- If Init_Gem >= 0 then
- Begin
- If not Load_Resource('EPSONLQ.RSC') then
- J := Do_Alert('[3][ EPSONLQ.RSC not | found! ][ ABORT ]',1)
- else
- Begin
- Find_Dialog(PRT_BOX,Box);
- Center_Dialog(Box);
- Init_Mouse;
-
- PICA_ := True;
- ELITE_ := False;
- CONDENSE_ := False;
- ULTRA_TINY_ := False;
- PAPER_ := False;
- SKIPOVER_ := False;
- D_WIDE_ := False;
- D_STRIKE_ := False;
- ITALICS_ := False;
- BOLD_ := False;
-
- ToBeEdited := RIGHT;
-
- CurLeft := 0;
- CurRight := 80;
- CurLPP := 66;
- CurLFS := 30;
-
- Initial_Draw := False;
- ChangeSize := False;
-
- Rewrite(P,'PRN:');
-
- Obj_SetState(Box,LEFT,Selected | Shadowed,Initial_Draw);
-
- Repeat
- If PICA_
- then Obj_SetState(Box,PICA,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,PICA,(Shadowed),Initial_Draw);
-
- If ELITE_
- then Obj_SetState(Box,ELITE,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,ELITE,(Shadowed),Initial_Draw);
-
- If CONDENSE_
- then Obj_SetState(Box,CONDENSE,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,CONDENSE,(Shadowed),Initial_Draw);
-
- If ULTRA_TINY_
- then Obj_SetState(Box,ULTRATNY,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,ULTRATNY,(Shadowed),Initial_Draw);
-
- If PAPER_
- then Obj_SetState(Box,PAPER,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,PAPER,(Shadowed),Initial_Draw);
-
- If SKIPOVER_
- then Obj_SetState(Box,SKIPOVER,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,SKIPOVER,(Shadowed),Initial_Draw);
-
- If D_WIDE_
- then Obj_SetState(Box,D_WIDE,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,D_WIDE,(Shadowed),Initial_Draw);
-
- If D_STRIKE_
- then Obj_SetState(Box,D_STRIKE,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,D_STRIKE,(Shadowed),Initial_Draw);
-
- If ITALICS_
- then Obj_SetState(Box,ITALICS,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,ITALICS,(Shadowed),Initial_Draw);
-
- If BOLD_
- then Obj_SetState(Box,BOLD,(Selected | Shadowed),Initial_Draw)
- else Obj_SetState(Box,BOLD,(Shadowed),Initial_Draw);
-
- Obj_SetState(Box,LINEFEED,Shadowed,Initial_Draw);
- Obj_SetState(Box,FORMFEED,Shadowed,Initial_Draw);
- Obj_SetState(Box,TYPERITE,Shadowed,Initial_Draw);
- Obj_SetState(Box,INITIAL,Shadowed,Initial_Draw);
- Obj_SetState(Box,UP,Normal,Initial_Draw);
- Obj_SetState(Box,DOWN,Normal,Initial_Draw);
-
- If (not Initial_Draw) then Choice := Do_Dialog(Box,0)
- else Choice := Redo_Dialog(Box,0);
-
- OutStr := '';
-
- Initial_Draw := True;
-
- If (Obj_State(Box,PAPER) & Selected) = 0
- then begin
- PAPER_ := False;
- OutStr := Concat(OutStr,#27,#120,#0); {DISABLE LQ Mode}
- end
- else begin
- PAPER_ := True;
- OutStr := Concat(OutStr,#27,#120,#1); {ENABLE LQ Mode}
- end;
-
- If (Obj_State(Box,SKIPOVER) & Selected) = 0
- then begin
- SKIPOVER_ := False;
- OutStr := Concat(OutStr,#27,#79); {DISABLE PERFORATION SKIPOVER}
- end
- else begin
- SKIPOVER_ := True;
- OutStr := Concat(OutStr,#27,#78,#6); {ENABLE PERFORATION SKIPOVER (SKIPS 2 LINES)}
- end;
-
- If (Obj_State(Box,D_WIDE) & Selected) = 0
- then begin
- D_WIDE_ := False;
- OutStr := Concat(OutStr,#27,'W',#0); {DISABLE DOUBLEWIDE PRINT}
- end
- else begin
- D_WIDE_ := True;
- OutStr := Concat(OutStr,#27,'W',#1); {ENABLE DOUBLEWIDE PRINT}
- end;
-
- If (Obj_State(Box,D_STRIKE) & Selected) = 0
- then begin
- D_STRIKE_ := False;
- OutStr := Concat(OutStr,#27,'H'); {DISABLE DOUBLESTRIKE}
- end
- else begin
- D_STRIKE_ := True;
- OutStr := Concat(OutStr,#27,#71); {ENABLE DOUBLESTRIKE}
- end;
-
- If (Obj_State(Box,ITALICS) & Selected) = 0
- then begin
- ITALICS_ := False;
- OutStr := Concat(OutStr,#27,#53); {DISABLE ITALICS}
- end
- else begin
- ITALICS_ := True;
- OutStr := Concat(OutStr,#27,#52); {ENABLE ITALICS}
- end;
-
- If (Obj_State(Box,BOLD) & Selected) = 0
- then begin
- BOLD_ := False;
- OutStr := Concat(OutStr,#27,#70); {DISABLE EMPHASIZED (BOLD) PRINT}
- end
- else begin
- BOLD_ := True;
- OutStr := Concat(OutStr,#27,#69); {ENABLE EMPHASIZED PRINT}
- end;
-
- If (Obj_State(Box,PICA) & Selected) = 0
- then PICA_ := False
- else begin
- If not PICA_ then ChangeSize := True;
- PICA_ := True;
- OutStr := Concat(OutStr,#27,#80); {SELECT PICA (10 CPI)}
- end;
-
- If (Obj_State(Box,ELITE) & Selected) = 0
- then ELITE_ := False
- else begin
- If not ELITE_ then ChangeSize := True;
- ELITE_ := True;
- OutStr := Concat(OutStr,#27,#77); {SELECT ELITE (12 CPI)}
- end;
-
- If (Obj_State(Box,CONDENSE) & Selected) = 0
- then CONDENSE_ := False
- else begin
- If not CONDENSE_ then ChangeSize := True;
- CONDENSE_ := True;
- OutStr := Concat(OutStr,#27,#103); {SELECT CONDENSED PRINT (17 CPI)}
- end;
-
- If (Obj_State(Box,ULTRATNY) & Selected) = 0
- then begin
- ULTRA_TINY_ := False;
- OutStr := Concat(OutStr,#27,#84); {CANCEL SUBSCRIPT MODE}
- If not D_STRIKE_ then OutStr := Concat(OutStr,#27,'H'); {CANCEL DOUBLE STRIKE}
- end
- else begin
- If not ULTRA_TINY_ then ChangeSize := True;
- ULTRA_TINY_ := True;
- OutStr := Concat(OutStr,#27,#83,#0,#15); {SELECT SUPERSCRIPT MODE & CONDENSED}
- D_STRIKE_ := True;
- end;
-
- If ChangeSize then
- begin
- CurLeft := 0;
- UpdateNumber(LEFT,CurLeft);
- end;
-
- If ULTRA_TINY_ and ChangeSize then
- begin
- CurLFS := 17;
- UpdateNumber(LFSIZE,CurLFS);
- CurLPP := 122;
- UpdateNumber(LPP,CurLPP);
- CurRight := 136;
- UpdateNumber(RIGHT,CurRight);
- end;
-
- If (not ULTRA_TINY_) and ChangeSize then
- begin
- CurLFS := 30;
- UpdateNumber(LFSIZE,CurLFS);
- CurLPP := 66;
- UpdateNumber(LPP,CurLPP);
- If PICA_ then CurRight := 80;
- If ELITE_ then CurRight := 96;
- If CONDENSE_ then CurRight := 120;
- UpdateNumber(RIGHT,CurRight);
- end;
-
- ChangeSize := False;
-
- If (Obj_State(Box,LEFT) & Selected) <> 0 then ToBeEdited := LEFT;
- If (Obj_State(Box,RIGHT) & Selected) <> 0 then ToBeEdited := RIGHT;
- If (Obj_State(Box,LPP) & Selected) <> 0 then ToBeEdited := LPP;
- If (Obj_State(Box,LFSIZE) & Selected) <> 0 then ToBeEdited := LFSIZE;
-
- J := 0;
- If (Obj_State(Box,UP) & Selected) <> 0 then J := 1;
- If (Obj_State(Box,DOWN) & Selected) <> 0 then J := -1;
-
- Case ToBeEdited of
- LEFT : If (CurLeft + J > -1) and (CurLeft + J < 136) then
- Begin
- CurLeft := CurLeft + J;
- UpdateNumber(LEFT,CurLeft);
- End;
- RIGHT : If (CurRight + J > 0) and (CurRight + J < 137) then
- Begin
- CurRight := CurRight + J;
- UpdateNumber(RIGHT,CurRight);
- End;
- LPP : If (CurLPP + J > 0) and (CurLPP + J < 128) then
- Begin
- CurLPP := CurLPP + J;
- UpdateNumber(LPP,CurLPP);
- End;
- LFSIZE : If (CurLFS + J > 0) and (CurLFS + J < 256) then
- Begin
- CurLFS := CurLFS + J;
- UpdateNumber(LFSIZE,CurLFS);
- End;
- end; {CASE}
-
- OutStr := Concat(OutStr,#27,#108,Chr(CurLeft)); {SET LEFT MARGIN}
- OutStr := Concat(OutStr,#27,#81,Chr(CurRight)); {SET RIGHT MARGIN}
- OutStr := Concat(OutStr,#27,#67,Chr(CurLPP)); {SET LINES PER PAGE}
- OutStr := Concat(OutStr,#27,#51,Chr(CurLFS)); {SET LINE FEED SIZE in 1/180" INCREMENTS}
-
- If (Obj_State(Box,LINEFEED) & Selected) <> 0
- then OutStr := Concat(OutStr,#10); {SEND LINEFEED}
-
- If (Obj_State(Box,FORMFEED) & Selected) <> 0
- then OutStr := Concat(OutStr,#12); {SEND FORMFEED}
-
- If Choice = INITIAL then
- Begin
- PICA_ := True;
- ELITE_ := False;
- CONDENSE_ := False;
- ULTRA_TINY_ := False;
- PAPER_ := False;
- SKIPOVER_ := False;
- D_WIDE_ := False;
- D_STRIKE_ := False;
- ITALICS_ := False;
- BOLD_ := False;
-
- CurLFS := 30;
- UpdateNumber(LFSIZE,CurLFS);
- CurLPP := 66;
- UpdateNumber(LPP,CurLPP);
- CurRight := 80;
- UpdateNumber(RIGHT,CurRight);
- CurLeft := 0;
- UpdateNumber(LEFT,CurLeft);
-
- OutStr := Concat(#27,#64); {CODE TO INITIALIZE PRINTER TO POWER UP STATE}
- End;
-
- While not bcostat(0) do
- Begin
- J := do_alert('[3][ Printer is not | responding! ][ Abort ]',1);
- If J = 1 then goto 1991;
- End;
-
- Write(P,OutStr); {Send OutStr to the printer!}
-
- If Choice = TYPERITE then
- Begin
- Hide_Mouse;
- Save_Scrn(TheScreen);
- TypeWriter;
- Restr_Scrn(TheScreen);
- Show_Mouse;
- End;
- Until Choice = Done;
-
- END;
-
- 1991:
- Exit_Gem;
- END;
- END.
-
-