IMD 1.16: 31/05/2007 19:47:30 FOGCPM.100 --FOGCPM100BARCODE BASBARCODE DOC EPUP COM( EPUP DOCF EPUPMOD COM(WSL2 SUBWSLMOD2 COM( SEND COM!SEND DOC"SETPRC10COMR#$%&'()*+,-SETPRC10DOCK./01234567EPSET2 COM8EPSET2 ASM9:;EPSNPRTRCOM<=>EPSNPRTRDOC?EPSNPRTRASM\@ABCDEFGHIJKEPSON BAS/LMNOPQPRINT BAS1RSTUVWXPRINT DOCYPRINTSETCOMwZ[\]^_`abcdefghPRINTSETDOC ijPRINTSETBAS/klmnopSETMX COMqSETMX DOCrsSETMX ASM4tuvwxyzGEMINI15COM {|GEMINI15ASM%}~GEMSET DOCGEMSET ASMaKPGEMSETCOMOSGEMSETCOMPRNTR COMPRNTR ASMSETSTAR COMSTARSET COM STARSET ASM7-07-00 86 -CPM100 DOC%This is the disk name. 10 REM UNIVERSAL PRODUCT CODE - A 20 CLEAR 2000:DIM R(255),DL$(9),DR$(9),A(10) 30 DG$="01010":DC=0 40 DATA "0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011" 50 DATA "1110010","1100110","1101100","1000010","1011100","1001110","1010000","1000100","1001000","1110100" 60 FOR I=0 TO 9:READ DL$(I):NEXT I 70 FOR I=0 TO 9:READ DR$(I):NEXT I 80 PRINT CHR$(26) 90 PRINT"UNIVERSAL PRODUCT CODE - A":PRINT:PRINT 100 INPUT "CODE DECIMAL CHARACTER = 0. ENTER NEW CHARACTER, OR FOR NO CHANGE ";I 110 IF I>0 AND I<10 THEN DC=I 120 DC$=DL$(DC) 130 PRINT CHR$(26) 140 PRINT"UNIVERSAL PRODUCT CODE - A":PRINT:PRINT 150 INPUT "ENTER DATA TO BE ENCODED (10 DIGITS) ";D$ 160 IF LEN(D$)>10 THEN GOTO 130 170 FOR I=1 TO 10:I$=MID$(D$,I,1) 180 IF VAL(I$)<0 OR VAL(I$)>9 THEN GOTO 130 190 NEXT I 200 A0$=LEFT$(D$,1):A0=VAL(A0$) 210 A1$=MID$(D$,2,1):A1=VAL(A1$) 220 A2$=MID$(D$,3,1):A2=VAL(A2$) 230 A3$=MID$(D$,4,1):A3=VAL(A3$) 240 A4$=MID$(D$,5,1):A4=VAL(A4$) 250 A5$=MID$(D$,6,1):A5=VAL(A5$) 260 A6$=MID$(D$,7,1):A6=VAL(A6$) 270 A7$=MID$(D$,8,1):A7=VAL(A7$) 280 A8$=MID$(D$,9,1):A8=VAL(A8$) 290 A9$=RIGHT$(D$,1):A9=VAL(A9$) 300 OD=DC+A1+A3+A5+A7+A9:EV=A0+A2+A4+A6+A8 310 CH=3*OD+EV:CK=10-CH MOD 10 320 T$=DG$+DC$+DL$(A0)+DL$(A1)+DL$(A2)+DL$(A3)+DL$(A4)+DG$+DR$(A5)+DR$(A6)+DR$(A7)+DR$(A8)+DR$(A9)+DR$(CK)+DG$ 330 FOR I=1 TO LEN(T$) 340 IF MID$(T$,I,1)="0" THEN R(I-1)=0 ELSE R(I-1)=255 350 NEXT I 360 ' ***** PRINT UPC-A CODE ****** 370 WIDTH LPRINT 255 380 LPRINT "UNIVERSAL PRODUCT CODE - A":LPRINT 390 N6=LEN(T$):N4=FIX(N6/256) 400 K=0:H=12 410 FOR M=1 TO H 420 LPRINT CHR$(27)"A"CHR$(4); 430 LPRINT CHR$(27)"L"CHR$((2*N6/256-N4)*256)CHR$(N4); 440 FOR I=0 TO N6-1 450 LPRINT CHR$(R(I)); 460 LPRINT CHR$(R(I)); 470 NEXT I 480 LPRINT 490 LPRINT CHR$(27)"@"; 500 NEXT M 510 IF K=0 THEN FOR J=0 TO N6-1:R(J)=0:NEXT J:R(1)=255:R(3)=255:R(48)=255:R(50)=255:R(95)=255:R(97)=255:K=1:H=1:GOTO 410 520 LPRINT CHR$(27)"@"; 530 LPRINT CHR$(27)CHR$(14); 540 LPRINT " ";LEFT$(D$,5);" ";RIGHT$(D$,5) 550 LPRINT CHR$(27)"@"; 560 LPRINT 570 GOTO 130 530 LPRINT CHR$(27)CHR$(14); 540 LPRIN$) 290 A9$=RIGHT$(D$,1):A9=VAL(A9$) 300 OD=DC+A1+A3+A5+A7+A9:EV=A0+A2+A4+A6+A8 310 CH=3*OD+EV:CK=10-CH MOD 10 320 T$=DG$+DC$+DL$(A0)+DL$(A1)+DL$(A2)+DL$(A3)+DL$(A4)+DG$+DR$(A5)+DR$(A6)+DR$(A7)+DR$(A8)+DR$(A9)+DR$(CK)+DG$ 330 FOR I=1 TO LEN(T$) 340 IF MID$(T$,I,1)="0" THEN R(I-1)=0 ELSE R(I-1)=255 350 NEXT I 360 ' ***** PRINT UPC-A CODE ****** 370 WIDTH LPRINT 255 380 LPRINT "UNIVERSAL PRODUCT CODE - A":LPRINT 390 N6=LEN(T$):N4=FIX(N6/256) 400 K=0:H=12 410 FOR M=1 TO H 420 LPRINT CHR$(27)"A"CHR$(4); 430 LPRINT CHR$(27)"L"CHR$((2*N6/256-N4)*256)CHR$(N4); 440 FOR I=0 TO N6-1 450 LPRINT CHR$(R(I)); 460 LPRINT CHR$(R(I)); 470 NEXT I 480 LPRINT 490 LPRINT CHR$(27)"@"; 500 NEXT M 510 IF K=0 THEN FOR J=0 TO N6-1:R(J)=0:NEXT J:R(1)=255:R(3)=255:R(48)=255:R(50)=255:R(95)=255:R(97)=255:K=1:H=1:GOTO 410 520 LPRINT CHR$(27)"@"; 530 LPRINT CHR$(27)CHR$(14); 540 LPRIN PRINT UNIVERSAL PRODUCT CODE ON THE MX-80 by Gobind Singh Khalsa Ever onc i whil w Osborn uses ca fin somethin usefu i magazin ostensibl devote t anothe microcomputer Ther wer som suc article i th Novembe '8 issu o 80MICR magazine One b Dave S Thornton explaine thre popula barcod format o 9 interleave o 5 an codaba an provide sourc listin t allo yo t prin thes ba code o a MX-8 printe wit Graftrax Al tha ha t b don t conver thi progra t ru o th Osborn i t chang ever "CLS t "PRIN CHR$(26)" secon articl b Mr Thornto explaine th variou format o th Universa Produc Code bu gav sourc listin i assembl languag tha wa dependan o TRS-8 syste call tha I fo one wa no familia with S cam u wit th followin progra i Basi tha print th UPà "A forma - cod character te digits an chec character- o th MX-8 wit Graftrax Now doe anyon hav plans and software so that we can get Ossie to read barcodes? suc article i th Novembe '8 issu o 80MICR magazine One b Dave S Thornton explaine thre popula barcod format o 9 interleave o 5 an codaba an provide sourc listin t allo yo t prin thes ba code o a MX-8 printe wit Graftrax Al tha ha t b don t conver thi progra t ru o th Osborn i t chang ever "CLS t "PRIN CHR$(26)" secon articl b Mr Thornto explaine th variou format o th Universa Produc Code bu gav sourc listin i assembl languag tha wa dependan o TRS-8 syste call tha I fo one wa no familia with S cam u wit th followin progra i Basi tha print th UPà "A forma - cod character G M W$PP S11!(4 ------------------------MENU------------------------ ^Q TO EXIT TO CPM |---------SETUPS-------- 0. RESET PRINTER | A. CONDENSED FOR ASM 1. RESET PRINTER-PRINTHEAD | B. ELITE ds L8 32 2. PRINTER ON & EXIT TO CPM | C. ENLARGED L2 36 3. SETUP W/HEX CODES | D. PICA ds L6 4. MARGIN | E. PICA L6 sp6 5. MODE | F. FORM FEED 6. FONT | G. LINE FEED 7. SKIP OVER PERFORATION | H. MINI PRINT 8. LINE SPACING | I. MODE40 L2 52 9. FORM LENGTH IN INCHES J. UNIDIRECTIONAL PRINT K. KEYBOARD DIRECT L. INCREMENTAL MODE M. INTERNATIONAL CHARACTER SET CHOICE: ?$LST.COM, FOR EPSON FX80VER. FIFTEEN 2/9/851 }"r} ͞ 3 :@ 2E ͻ :E YrD* w* 6D͞ Ô2> 2@ 8͞ w :E DGқ0ڛ@P 2E ͯ ! OG ͵ ͞ Û; ͞ Û6͞ * 6D͞ w :E ʍ͞ 2? w :E ʍ!? _ͯ  ͞ ̓ :@ ʍ>lͣ  ͞ ̓ :@ ʍ>Qͣ ?͞ ̓ :@ ʍ>!ͣ gw͞ w :E ʍ:ғ0ړ2E ͯ ! OG ͵ ͞ Ö>P2E w͞ Ö>M2E ͞ Ö ͞ Ö>s2E >12G ͞ Ö>W2E >2G ͞ Ö>E2E ͞ Ö>42E ͞ Ö>p2E >2G ͞ Ö>G2E ͞ Ö͞ ̓ :@ ʍͯ Nͯ :E _ͯ %Î͞ w :E ʍ6ҳ0ڳ2E ͯ !, OG ͵ ͞ öͯ ͯ ͞ ö>12E ͞ ö>22E ͞ ö͞ ̓ :@ ʍ>3ͣ ͞ ö͞ ̓ :@ ʍ>Aͣ  ͞ ö?͞ ̓ :@ ʍ] ͞ ̓ :@ ʍ>Cͣ xx! ͞ Û! ͞ Û!# ͞ Û!3 ͞ Û!C ͞ Û!S~ #^   ͞ Û!s~ #^ "  ͞ Û!~; #^ >  ͞ Û!~W #^ Z  ͞ Û͞ ͯ ͯ  :2E !:E = 2E #~ʫ ^ͯ Å ͤ 3͞ s ͤ Í͞ w :E ʍ:Ҳ 0ڲ 2E ͯ Rͯ :E _ͯ õ >U2E >2G a ͞ Û>i2E >2G I ͞ Û͵ ~2E #~2G #~ #~ #~( #~6 #~2E ? #~2E N #~2E ] #~2E z #~2E ͉  ͞ 2G >2E 3 !> F0} :} 2E 2A  3 !> F0} :} 2B !G 2E 3 !> F0} :} :B  :G 2E :A }  !E :G 2E :@ 2E ɧG2G :G 2G  G2G :G d2G $ 2>  7 2@ ̘ ̘ N̘ n̘ >2E ^ͯ #:E =2E c  w 2E @ͻ :E 2E   ͯ  ͯ >@2E ͯ @ͯ ͯ Kͯ ͯ ͯ ͯ :E ͯ :E _ͯ :E ͯ :E _ͯ :G _ͯ ͯ >G2E >p2E >2G >E2E :E >lͣ :E >Qͣ :E ͯ Cͯ ͯ :E _ͯ :E >Nͣ :E >3ͣ >2> ɇ:E 2G 2E :E Gô :E a _2E <tÓËóuè÷ + G c ò þJw6^+P INCREMENTAL MODE SET$ UNIDIRECTIONAL PRINT SET$ WRONG VERSION NUMBER! TYPE "Y" TO CONTINUE OR ANY OTHER KEY TO EXIT $ ERROR: ENTER DECIMAL DIGITS BETWEEN 0 & 255 TRY AGAIN ?$ ***INTERNATIONAL CHARACTER SET MENU*** USE ^Q TO RETURN TO MAIN MENU 0. U.S.A. 1. FRANCE 2. GERMANY 3. ENGLAND 4. DENMARK 5. SWEDEN 6. ITALY 7. SPAIN 8. JAPAN CHOICE ?$ KEYBOARD TO LST DIRECT USE ^C TO RETURN TO CPM WHEN CURSOR IS AT BEGINNING OF LINE ^Q RETURNS TO MAIN MENU 1|||:||||1||||:||||2||||:||||3||||:||||4||||:||||5||||:||||6||||:||||7||||:||||8 $ SETUP I$ SETUP H$ SETUP G$ SETUP F$ SETUP E$ SETUP D$ SETUP C$ SETUP B$ SETUP A$ SET SKIP OVER PERFORATION ^Q TO RETURN TO MAIN MENU ENTER NUMBER OF LINES ?$ SET FORM LENGTH IN INCHES ^Q TO RETURN TO MAIN MENU ENTER INCHES ?$ enter # of lines ?$ HEX OUT ^Q TO RETURN TO MAIN MENU ENTER HEX: ?$ ENTER "N" ?$ 1/8 SET$ 7/72 SET$ 1/6 SET$ N/216 SET$ N/72 SET$ ###### LINE SPACING MENU ###### ^Q TO RETURN TO MAIN MENU 0. RESET PRINTER 1. 1/8 2. 7/72 3. 1/6 (NORMAL) 4. N/216 5. N/72 CHOICE ?$ SKIP OVER PERFORATION SET $ SET MARGIN USE ^Q TO RETURN TO MAIN MENU SET LEFT MARGIN:?$ Set Right Margin?$ SET MODE ENTER MODE NUMBER 0 TO 63 USE ^Q TO RETURN TO MAIN MENU MODE NUMBER:?$ PICA SET$ PRINTER RESET$ ELITE SET$ CONDENSED SET$ HALF SPEED SET$ ENLARGED SET$ EMPHASIZED SET$ ALTERNATE SET$ PROPORTIONAL/EMPHASIZED SET$ DOUBLE STRIKE SET$ ********** FONT MENU ********** ^Q TO RETURN TO MAIN MENU 0. RESET PRINTER 1. ALTERNATE 2. CONDENSED 3. DOUBLE STRIKE 4. ELITE 5. EMPHASIZED 6. ENLARGED 7. HALF SPEED PRINT 8. PICA (NORMAL) 9. PROPORTIONAL SPACING CHOICE ?$ PRINTER OFF & PRINT BUFFER CANCELED $ PRINTER ON$ PRINTER SETUP PROGRAM COPYRIGHT 1985, P.P.P. ALL RIGHTS RESERVED$ $ 4. ELITE 5. EMPHASIZED 6. ENLEPUP.DOC DOCUMENTATION FOR EPUP.COM , EPUPMOD.COM & WSL2.SUB COPYRIGHT 1985 (C) BY PHIL PFLAGER MAY BE USED FOR NON-COMMERCIAL PURPOSES ONLY RIGHTS TO COPY FOR COMMERCIAL DISTRIBUTION RESERVED BY AUTHOR USE: FOR SENDING CONTROL CODES TO PRINTERS SUCH AS THE EPSON FX-80 OR PRINTERS USING SIMILAR CONTROL CODES. THE PROGRAM IS WRITTEN IN Z80 ASSEMBLY LANGUAGE FOR COMPUTERS USING CP/M 2.2 SUMMARY: ALLOWS CONTROL CODES OR A SERIES OF CONTROL CODES TO BE SENT TO THE PRINTER BY PRESSING A SINGLE KEY. KNOWLEDGE OF HEXADECIMAL OR CONTROL CODES IS NOT REQUIRED. CHOICES ARE OFFERED BY A MENU OR A SERIES OF MENUS. SOME CHOICES REQUIRE A NUMBER TO BE INPUT IN DECIMAL. CHOICE #3 FROM THE MAIN MENU ALLOWS SENDING HEX CODES DIRECTLY TO THE PRINTER. ALL OTHER DATA IS ENTERED IN DECIMAL. SEE "SETUPS" FOR A DESCRIPTION OF USER DEFINABLE CONTROL CODE STRINGS. CHOICE "K" FROM THE MAIN MENU ALLOWS YOU TO USE THE KEYBOARD TO TYPE A LINE OF TEXT DIRECTLY TO THE  PRINTER. ****BE SURE TO TURN YOUR PRINTER ON BEFORE RUNNING EPUP.**** HOW I USE EPUP: I CREATE MY TEXT FILES WITH A WORD PROCESSOR WITHOUT PRINT COMMANDS. WHEN I WANT A PRINTED COPY I USE EPUP TO SET MARGIN, FONT AND PAGE LENGTH. THE WORD PROCESSOR OR ANY PROGRAM THAT WILL PRINT A FILE CAN BE USED TO SEND THE TEXT TO THE PRINTER. AS LONG AS THE PROGRAM DOES NOT RESET THE PRINTER FOR YOU, THE FILE WILL BE PRINTED IN THE FORMAT YOU SET WITH EPUP. MAIN MENU: YOU MAY SELECT ANY OF THE CHOICES FROM THE MAIN MENU BY PRESSING THE APPROPRIATE KEY AT THE PROMPT; "CHOICE ?". TYPE ^Q TO EXIT TO CPM. SOME CHOICES FROM THE MAIN MENU WILL ENABLE A SECONDARY MENU. SECONDARY MENUS: SOME OF THE SECONDARY MENUS ALLOW SELECTING SEVERAL CHOICES AT ONCE. THE FONT MENU ALLOWS CONDENSED, DOUBLE STRIKE ETC. TO BE SELECTED AT THE SAME TIME. SOME MENUS WILL TOGGLE BETWEEN TWO CHOICES. IT IS NOT NECESSARY TO DEFINE ALL CHOICES. TYPE CARRIAGE RETURN TO SKIP A CHOICE AND LEAVE IT UNCHANGED. TYPE ^Q TO RETURN TO THE MAIN MENU. SETUPS: ON THE RIGHT SIDE OF THE MAIN MENU ARE A SERIES OF SETUPS, A THROUGH I. WHEN ONE OF THESE ARE SELECTED A STRING OF CONTROL CODES ARE SENT TO THE PRINTER. THE STRING OF CODES CAN BE CHANGED WITH THE PROGRAM EPUPMOD.COM. EPUPMOD.COM IS A MENU DRIVEN PROGRAM THAT ALLOWS PRE-SETTING CHOICES A THROUGH I. NO KNOWLEDGE OF HEXADECIMAL OR PRINTER CONTROL CODES IS REQUIRED. HOWEVER, CHOICES F THROUGH I CAN BE PRESET WITH UP TO THIRTY HEX CODES EACH, ENTERED FROM THE KEYBOARD. SEE "MODIFYING SETUPS F THROUGH I." EPUPMOD.DOC DOCUMENTATION FOR EPUPMOD.COM EPUPMOD.COM IS A PROGRAM USED TO MODIFY CHOICES A THROUGH I OF EPUP.COM. WHEN ONE OF THESE CHOICES IS SELECTED A SERIES OF UP TO THIRTY CONTROL CODES ARE SENT TO THE PRINTER. BY USING EPUPMOD.COM THE SERIES OF CODES THAT ARE SENT CAN BE PRE-SET. EPUPMOD.COM REQUIRES NO KNOWLEDGE OF HEXADECIMAL OR PRINTER CONTROL CODES. HOWEVER IT IS POSSIBLE TO ENTER HEX CODES IF DESIRED. SEE "MODIFYING SETUPS F THROUGH I." TO USE EPUPMOD.COM: TYPE EPUPMOD AT THE CPM PROMPT. THE PROGRAM WILL LOAD AND YOU WILL BE ASKED IF YOU WOULD LIKE TO MODIFY EPUP.COM ON DRIVE A. IF YOU HAVE RENAMED EPUP.COM OR IF IT IS ON ANOTHER DRIVE, RESPOND "N". YOU WILL BE ASKED FOR A CPM FILE NAME. IF YOU RESPOND "Y", EPUPMOD.COM WILL BE LOADED AND YOU WILL BE PRESENTED WITH A MENU WITH CHOICES 1 THROUGH 4 AND CHOICES A THROUGH I. TO SETUP SELECTIONS A THROUGH E: SELECT "A" THROUGH "E" AT THE MENU. YOU WILL THEN BE LED THROUGH A SERIES OF QUESTIONS WHICH ALLOW YOU TO SET FONT, MARGINS, PAGE LENGTH. SKIP OVER PERFORATION AND SPACING BETWEEN LINES. ANSWER "Y" TO SET A FONT OR ENTER A DECIMAL NUMBER TO SET A MARGIN OR PAGE LENGTH. A CARRIAGE RETURN WITH NO OTHER CHARACTER WILL SKIP THAT SELECTION AND IT WILL REMAIN UNCHANGED. THIS IS USEFUL BECAUSE IT ALLOWS YOU TO CHANGE ONE THING AND SKIP OVER EVERYTHING ELSE. ENTERING "0", "00", OR "000" WILL CAUSE THAT SELECTION TO REMAIN SET TO THE DEFAULT VALUE THE PRINTER SETS WHEN IT IS TURNED ON. A POINT TO REMEMBER IS THAT THERE ARE CERTAIN COMBINATIONS THAT THE PRINTER WILL NOT ACCEPT. FOR EXAMPLE ELITE CAN NEVER BE EMPHASIZED. IF YOU SELECT ELITE AND EMPHASIZED THEN THE EMPHASIZED COMMAND WILL BE IGNORED. PROPORTIONAL PRINTING IS ALWAYS EMPHASIZED SO ELITE CAN NEVER BE PROPORTIONAL. IF YOU ARE HAVING TROUBLE GETTING THE SETUPS YOU WANT, RESET THE PRINTER, TRY AGAIN AND MAKE SURE THE PRINTER WILL ACCEPT THE COMBINATION. WATCH OUT FOR PROGRAMS THAT RESET THE PRINTER FOR YOU! MODIFYING SETUPS F THROUGH I: WHEN F THROUGH I ARE SELECTED YOU WILL BE ASKED IF YOU WOULD LIKE TO DO A HEX SETUP. IF YOU ANSWER "N", THE SETUP WILL BE IDENTICAL TO SETUPS A THROUGH E. IF YOU ANSWER "Y", YOU WILL BE ABLE TO ENTER UP TO THIRTY HEX CONTROL CODES. THESE WILL BE SENT TO THE PRINTER IN THE ORDER THEY ARE ENTERED. THIS TYPE OF SETUP WAS ADDED TO ALLOW FOR ANY POSSIBLE COMBINATION OF CODES. IN ADDITION TO ALLOWING MODIFICATION OF SETUPS, THE EPUPMOD MENU HAS THE FOLLOWING CHOICES: 1. EXIT AND SAVE THE CHANGES TO DISC 2. EXIT NO CHANGES (^C WILL WORK ALSO) 3. DISPLAY SETUPS 4. MODIFY MENU 1. EXIT AND SAVE THE CHANGES TO DISC: YOU WILL BE ASKED FOR A CPM FILE NAME. YOU CAN SAVE EPUP.COM UNDER A NEW NAME OR UNDER THE SAME NAME. 2. EXIT NO CHANGE 3. DISPLAY SETUPS: DISPLAYS THE HEX NUMBERS STORED IN MEMORY WHICH CONTROL SETUPS A THROUGH I. 4. MODIFY MENU: WHEN THE SETUPS ARE CHANGED IT IS CONVENIENT TO CHANGE THE MENU TO DESCRIBE THE NEW SETUP. THIS MENU WILL BE TRANSFERRED TO THE NEW EPUP.COM YOU ARE CREATING. EACH SETUP HAS NINETEEN SPACES FOR A DESCRIPTION OF ITS' FUNCTION. AFTER SELECTING "4" AT THE MENU YOU WILL BE PRESENTED WITH A SCREEN WITH THE CURSOR UNDER THE FIRST CHARACTER OF SELECTION A. A CARRIAGE RETURN WILL SKIP THAT SELECTION LEAVING IT UNCHANGED. TO MAKE CHANGES, JUST TYPE OVER THE EXISTING DESCRIPTION. WHEN YOU HAVE MADE ALL THE CHANGES, USE CARRIAGE RETURNS TO RETURN TO THE MENU. YOU CAN CHANGE THE DESCRIPTIONS AS MANY TIMES AS YOU WANT BECAUSE THEY ARE NOT SAVED TO DISC UNTIL "1" IS SELECTED AT THE MENU. ATTACHING EPUP TO WORDSTAR 2.26: I HAVE INCLUDED, WSL2.SUB, A SUBMIT TYPE PROGRAM WHICH ENABLES YOU TO ATTACH EPUP TO YOUR WORDSTAR 2.26. THIS WILL ALLOW THE PRINTER TO BE SET UP EVERY TIME A FILE IS PRINTED. ALSO INCLUDED IS WSLMOD2.COM WHICH FUNCTIONS LIKE EPUPMOD.COM EXCEPT IT IS USED WHEN EPUP IS ATTACHED TO WORDSTAR. WSL2.SUB: WSL2.SUB IS A SUBMIT TYPE PROGRAM USED TO ATTACH EPUP, MY PRINTER SETUP PROGRAM, TO THE END OF YOUR WORDSTAR. ONCE ATTACHED, EPUP WILL BE CALLED EVERY TIME A FILE IS PRINTED AND EVERY TIME A FILE FINISHES PRINTING. THIS ALLOWS SETTING UP THE PRINTER BEFORE PRINTING AND SENDING FORM FEEDS AFTER PRINTING. TO ATTACH EPUP TO YOUR WORDSTAR 2.26, COPY THE FOLLOWING FILES TO A FORMATTED DISC: WS.COM SUBMIT.COM XSUB.COM DDT.COM L2.PTH WSL2.SUB (ALWAYS USE COPIES - NEVER USE MASTERS!) AT THE CPM "A>" PROMPT TYPE THE FOLLOWING: SUBMIT WSL2.SUB AFTER YOU TYPE A CARRIAGE RETURN, SEVERAL PROGRAMS WILL LOAD AND RUN. THE FINAL RESULT WILL BE A FILE CALLED WSTEST.COM. TRANSFER WSTEST.COM TO YOUR WORDSTAR DISC AND TEST IT.(BE SURE YOU ARE USING A COPY OF YOUR WORDSTAR DISC. THE ORIGINAL SHOULD BE IN A SAFE PLACE.) TRY PRINTING A FILE TO SEE IF EPUP IS CALLED. IF THE PROGRAM WORKS, YOU CAN RENAME IT TO WS.COM. BE SURE TO START WITH AN INSTALLED WS.COM. IF YOU RUN INSTALL.COM IT WILL ONLY SAVE WORDSTAR. THE EPUP ROUTINE YOU JUST ADDED WILL BE CUT OFF AND YOU WILL HAVE TO DO THE WHOLE THING OVER AGAIN. WSLMOD2 - THIS PROGRAM IS USED TO MODIFY THE EPUP PROGRAM ATTACHED TO WORDSTAR. IT WORKS JUST LIKE EPUPMOD.COM EXCEPT THAT IT LOADS YOUR MODIFIED WORDSTAR INTO MEMORY INSTEAD OF JUST LOADING EPUP.COM. WHEN YOU RUN WSLMOD, YOU WILL BE PROMPTED FOR A CPM TYPE FILE NAME. RESPOND WITH THE NAME THAT YOU HAVE GIVEN TO WSTEST.COM. WSLMOD2.COM WORKS JUST LIKE EPUPMOD.COM SO SEE EPUP.DOC FOR DETAILS. IF YOU FIND ANY BUGS OR HAVE ANY COMMENTS, I CAN BE REACHED AT THE FOLLOWING ADDRESS: PHIL PFLAGER P.O. BOX 435 CUPERTINO, CALIFORNIA 95051 TRADEMARKS: CP/M IS A TRADEMARK OF DIGITAL RESEARCH WORDSTAR IS A TRADEMARK OF MICROPRO INTERNATIONAL EPSON IS A TRADEMARK OF EPSON AMERICA INC. OM. IF YOU RUN INSTALL.COM IT WILL ONLY SAVE WORDSTAR. THE EPUP ROUTINE YOU JUST ADDED WILL BE CUT OFF AND YOU WILL HAVE TO DO THE WHOLE THING OVER AGAIN. WSLMOD2 - THIS PROGRAM IS USED TO MODIFY THE EPUP PROGRAM ATTACHED TO VERSIX 9/30/85 EPUPMOD.COM!9" 1 * 0:ɧG28 :8 28 >G28 :8 d28 Tp ͣ & _ y29 @:9 29 \ :; 9ʸ<2; >02; :: <2: G ͣ:: r:; r>2 *< ~2   ɗ2  2 ̰̰N̰n̰*9 "9 2 ͣ28 >29 ! F0&:&29 2< 7! F0&:&2= !8 29 ! F0&:&:= 7:8 29 :< &M!9 :8 29 : 29 >2 ɇ/2 /2 :9 Gͣ: a_ͻ:) ::( !\w) :<2\' !\#.>w%.P!d#wCw`#S:9 < 29 :: OG :< OG Q : G ڏ{ڑ> w#Ä    2 2> !] > w#!hw#!' > w# Y2> >2> \ ͣ"ͻc͚3͛\Fͤ! w#w! "9 \s* #" Sʹͭ!3!##>ʙ ͣ*29 >$2: 2< !!yQ ͣy:9 * ʮ1ڮ5:ڮCҮ@P 29 ! OG F ͣ! "< 2 >F2> >2 >A29 rC ͣ>2 *< #~"< : r: r> r! 4>sG ͣ: s: s2 ? ͣ! : -: ‹G ͣ2 :9 <29 !> :9 Jһ>J2> >2 G ͣ:9 wͣî29 > 2: >$2< !!.Q!!}G!"}e !7"}!m"})!"}8!"}G!#}V!E#}e!{#}Ù! "6 Kͣ>Ar! "6 Kͣ>Br!# "6 Kͣ>Cr!3 "6 Kͣ>Dr!C "6 Kͣ>Er!S "6 Kͣ>Fr\ͣT!s "6 Kͣ>Gr\ͣT! "6 Kͣ>Hr\ͣT! "6 Kͣ>Ir\ͣT*6 >w#"< !: >0w#wͣͣy:9 ʮ ˆíͶ2 y:9 ʮ ¦í! w*< : w#"< :: 3:; 1ͩXoeͣ ñsͣy:9 ʮ Y1529 ! OG *6 w#wY*6 >Mw#wY*6 >Ww>#wYͣ,: ʮ N:9 Y*6 >!w:9 #wͣ*6  tʮwͣ*6  ʏʮwͣ*6  ʪʮwͣ*6  ʮw7ͣ,: ʮN :9 *6 :9 wKͣ,: ʮN'  :9 ' *6 :9 w`ͣ,: ʮNX M :9 X *6 :9 w~ͣ,: ʮNʉ ~ :9 ʉ *6  :9 wͣ,: ʮNʺ ¯ :9 ʺ *6  :9 wͣ ñ>2 : *! >wͻc:' ͭʹ͚   :> ʹ \\7    ! "9 \, * +|c }c t " *9 "9 > \*6  :9 wͣ,: ʮNʺ ¯ :9 ʺ *6  :9 h|Ðäø2 #0 A:EPUP.COM $: $ $ WOULD YOU LIKE DISC FILE CREATED ?$ ENTER CPM TYPE FILENAME:$ FILE EXISTS--OVERWRITE? (Y/N)$ DISK FULL TRY AGAIN$ --------FILE NOT ON DISK----------TRY AGAIN--------$ -------------UNABLE TO OPEN FILE--TRY AGAIN--------$ ??? ENTER A NUMBER BETWEEN 0 & 255 ! ?$ EPUPMOD.COM MODIFICATION PROGRAM FOR EPUP.COM COPYRIGHT 1985, P.P.P. MAY BE USED FOR NON-COMMERCIAL PURPOSES ONLY RIGHTS TO COPY FOR COMMERCIAL DISTRIBUTION  RESERVED BY AUTHOR THIS PROGRAM WILL ALLOW YOU TO CHANGE SETUPS A THROUGH I TO YOUR SPECIFICATIONS WOULD YOU LIKE TO MODIFY EPUP.COM ON DIRVE A ?$ WRONG VERSION OR FILE NOT EPUP.MOD MODIFICATION PROGRAM WILL NOT WORK!$ ------------------------MENU------------------------ ^C TO EXIT TO CPM |---- MODIFY SETUPS ---- | A. 1. EXIT WITH CHANGES | B. 2. EXIT NO CHANGES | C. 3. DISPLAY SETUPS | D. 4. MODIFY MENU | E. | F. | G. | H. | I. CHOICE: ?$ MODIFY SETUP $ DO HEX SETUP (Y/N)?$ --------FONT MENU-------- ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN TO SKIP OVER CHOICE 1. PICA (NORMAL) 2. ELITE 3. ENLARGED 4. MODE CHOICE ?$ ANSWER (Y/N), ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN OR ENTER 00 TO SKIP CHOICE SET CONDENSED ?$ SET DOUBLE-STRIKE ?$ SET PROPORTIONAL MODE ?$ SET EMPHASIZED ?$ CHOICE ?$ SETUP COMPLETED$ MODIFY MENU ^C TO EXIT TO CPM USE CARRIAGE RETURIN TO SKIP | A. $ | B. $ | C. $ | D. $ | E. $ | F. $ | G. $ | H. $ | I. $ SET LEFT MARGIN ?$ SET RIGHT MARGIN ?$ SET PAGE LENGTH IN INCHES ?$ SET N LINES SKIP OVER PERFORATION?$ SET SPACING TO N/216 ?$ ENTER MODE NUMBER 0 TO 63 ?$ ENTER UP TO 31 HEX PRINT CONTROL CODES USE ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN TO SKIP WITH NO CHANGE 00 FF$ ENTER HEX: $ HEX SETUP DONE$ DISPLAY DONE - HIT ANY KEY TO RETURN TO MAIN MENU$XSUB DDT IWS.COM R G0 SAVE 62 WS.NEW DDT IL2.PTH R M100,1460,3F00 IWS.NEW R A100 JMP 3F00 . A70D JMP 7321 . A710 JMP 7321 . S35C 00 87 . S06A8 02 0D 0A 00 00 00 00 . S37E 00 . F06E7,0707,00 G0 SAVE 82 WSTEST.COM $LMOD2 FOR EPUP ATTACHED TO WS2.26!9" 1 * 0:ɧG2D :D 2D EG2D :D d2D [| ͪ 2 _ ʀ2E @:E 2E \ :G 9ʿ<2G >02G :F <2F S ͪ:F y:G y>2 *H ~2   ɗ2  2 ̷̷N̷n̷*E "E > ͪ2D >2E ! F0-:-2E 2H >! F0-:-2I !D 2E ! F0-:-:I >:D 2E :H -T!E :D 2E : 2E >2 ɇ62 62 :E Gͪ: a_:5 ::4 !\w5 ':<2\3 !\#.Ew,.W!d#wJwg#Z:E < 2E :F OG :H OG X : G ږ{ژ> w#Ë    2 2J !] > w#!hw#!3 > w# Y 2J >2J h ͪj͡/͢\Bͫ! w#w! "E \o* #" "Oͻʹ!B_>Wœ#>Sœ#>2œ#>.œ#>2œå ͪ12E >$2F 2H _!qX ͪ̀:E 1 ʺ1ں5:ںCҺ@P 2E ! OG R ͪ!^"H 2 >F2J >2 >A2E yO ͪ>2 *H #~"H : y: y> y! 4>S ͪ: : 2 K ͪ! : 9: —S ͪ2 :E <2E !J +:E J>J2J >2 S ͪ:E +oͪú2E > 2F >$2H _!&X!_̈́?!`̈́]!F`̈́{&!|`̈́5!`̈́D!`̈́S!ä́b!Tä́q!ä́å!^"B Cͪ>Ay!"^"B Cͪ>By!2^"B Cͪ>Cy!B^"B Cͪ>Dy!R^"B Cͪ>Ey!b^"B Cͪ>FyTͪ`!^"B Cͪ>GyTͪ`!^"B Cͪ>HyTͪ`!^"B Cͪ>IyTͪ`*B >w#"H !F >0w#wͪͪ̀:E ʺ ”ùͽ2 ̀:E ʺ ²ù! w*H : w#"H :F 3:G 1ͰP{]ͪ ýkͪ̀:E ʺ e152E ! OG *B w#we*B >Mw#we*B >Ww>#weͪ3: ʺ Z:E e*B >!w:E #w ͪ*B  ʀʺwzͪ*B  ʛʺwͪ*B  ʶʺwͪ*B  ʺw/ͪ3: ʺN :E  *B :E  wCͪ3: ʺN3 ( :E 3 *B :E wXͪ3: ʺNd Y :E d *B :E wvͪ3: ʺNʕ Š :E ʕ *B  :E wͪ3: ʺN » :E *B  :E wͪ ý>2 : 1! >wj:3 ʹͻ͡+   :J ͻ \\C    ! "E \8 * +|o }o À " *E "E J \1B  :E wͪ3: ʺN » :E *B  :E tÈÜð>#/< A:LST.COM $: $ $ WOULD YOU LIKE DISC FILE CREATED ?$ ENTER CPM TYPE FILENAME:$ FILE EXISTS--OVERWRITE? (Y/N)$ DISK FULL TRY AGAIN$ --------FILE NOT ON DISK----------TRY AGAIN--------$ -------------UNABLE TO OPEN FILE--TRY AGAIN--------$ ??? ENTER A NUMBER BETWEEN 0 & 255 ! ?$ LMOD2.COM COPYRIGHT 1985 (C) BY PHIL PFLAGER MAY BE USED FOR NON-COMMERCIAL PURPOSES ONLY RIGHTS TO COPY FOR COMMERCIAL DISTRIBUTION RESERVED BY AUTHOR MODIFICATION PROGRAM FOR EPUP ATTACHED TO WS2.26 THIS PROGRAM WILL ALLOW YOU TO CHANGE SETUPS A THROUGH I TO YOUR SPECIFICATIONS $ WRONG VERSION OR FILE NOT EPUP.MOD MODIFICATION PROGRAM WILL NOT WORK!$ ------------------------MENU------------------------ ^C TO EXIT TO CPM |---- MODIFY SETUPS ---- | A. 1. EXIT WITH CHANGES | B. 2. EXIT NO CHANGES | C. 3. DISPLAY SETUPS | D. 4. MODIFY MENU | E. | F. | G. | H. | I. CHOICE: ?$ MODIFY SETUP $ DO HEX SETUP (Y/N)?$ --------FONT MENU-------- ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN TO SKIP OVER CHOICE 1. PICA (NORMAL) 2. ELITE 3. ENLARGED 4. MODE CHOICE ?$ ANSWER (Y/N), ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN OR ENTER 00 TO SKIP CHOICE SET CONDENSED ?$ SET DOUBLE-STRIKE ?$ SET PROPORTIONAL MODE ?$ SET EMPHASIZED ?$ CHOICE ?$ SETUP COMPLETED$ MODIFY MENU ^C TO EXIT TO CPM USE CARRIAGE RETURIN TO SKIP | A. $ | B. $ | C. $ | D. $ | E. $ | F. $ | G. $ | H. $ | I. $ SET LEFT MARGIN ?$ SET RIGHT MARGIN ?$ SET PAGE LENGTH IN INCHES ?$ SET N LINES SKIP OVER PERFORATION?$ SET SPACING TO N/216 ?$ ENTER MODE NUMBER 0 TO 63 ?$ ENTER UP TO 31 HEX PRINT CONTROL CODES USE ^C TO RETURN TO MAIN MENU USE CARRIAGE RETURN TO SKIP WITH NO CHANGE 00 FF$ ENTER HEX: $ HEX SETUP DONE$ DISPLAY DONE - HIT ANY KEY TO RETURN TO MAIN MENU$Ü SEND V1.1 -- (C) 1984 MJ GUERRA $ This program allows you to send special characters to your printer. The command takes the form SEND xx yy zz ... where "xx", "yy", "zz", etc., are valid hexadecimal representations of the character(s). From one to more than forty characters can be entered on a single command line. Examples: SEND 9 will send a tab char SEND 1B 45 for Epson emphasized Literal text can be sent "as is" if you enclose the text in double quotes: SEND 1D "OKIDATA COMPRESSED" D will select compressed print, print the text, and issue a carriage return on an Okidata. Lower case is made upper case.$ s<1:> 2  {<_ͽ0? ?0 ))))o+ó <--- Not valid. Nothing sent. $ó! (ʀ"ʝ8 ( (8}o!4 "ʀ "ʀ> ͽ Sent. $!F>#^wó"ʴʀ!4ͽo" ( (8}o!4 "ʀ "ʀ> ͽ Sent. $SEND.COM Send is a handy program to send a byte or a series of bytes directly to your printer. You will be given a brief synopsis of the proper syntax by typing SEND without any parameters. Credit for this program also goes to Joel Guerra. r syntax by typing SEND without any parameters. Credit for this p v4Copyright (C) 1983 BORLAND IncNelden Osborne 1=0000 ()TER<~7#~= o&ͦoͦc|ͣ}!!" ~#(}:8= +ͥ*!v-!pͥ*|!!:(=2!-: <2!~!!Y:jO:l:kO:m!ͥ*n! !i45(!+/ 0y0( d!9-!I-[[o&  :(y ͠|( r*"x2y( >28!"9!!>2 0&+!0 [ (!ePWA8Q0G: x@!\w# (   L). )!h6# (*(.(!8}(*(Ww#>?> w#a{ |e}nƐ'@'ý7||}>"C ""*B"[R*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#EMw}8"RB0 >RRR!+k = R!+k = !+k = !+k = !#k = !+k = T]KB!z> S>))0 = |  DMgo>jB0 7?= H<͡z5)<z {0Gɯgo|| }||/g}/o#}o&K[xAJSJDM!b"!6J"DM'oodo o} $yWj _}8(8J`9{T]=o`9y $͙ >" 8# }>(́ x }} ˸T}ٕ(0D= ,= (  0% , 7 R ?(88 x  - 8˸x   ͠ ,-xG} }م 9 .>#n0  = - nx  ,-(-˸G,- }ٕ? 9.>R 88 ?= u+-(> 08  8R ?x  , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨u xx( ?}ٽR }ց <( 7 = |٤g{٣_z٢Wy١Ox٠G 8͉ }x>"8}ƀ/ƀó ͙ - }0- ,}l˸k 8 ́ # x(͙ -k 8 -k 8, }l8;*!# ! >8# # 8---͙ ,,,-xGg?+2n*8t z~,->"x"$}.́  ,͙ ́ ! >,.-͙ o&0%͔,# ͙ }g }؉}颋.:}8c~I$I~L*.ٷx˸́ }0G,\<}͔,-(- ! >0 $# o8 Á >"m.`1pF,t6|!wS<.z}[|%FXc~ur1}ٯx(<˸k 8́ !~Jk 0ͺO!Z>k 8 =  ͙ # ͙ ́ ͺ͙ 0 - OT0 j oD,:j !I}袋.}8c~I$I~L!>8# # ͙ # = Ù nf^VNF!DLT\I!!53!r1!!> x #-= o˸x(-͙ }(x>8( , `i!>"| | >)=|(DMbo˸y88yx(0 8> x(>-q{(ay(oe z(>.q (o =e{>Eq>+|(|Dg>-q|/ 0:p# ~# +>0w#,-  60# ˸}րogM͇| .( = ~> x0w#xG% % ZJDM% = _~65(+~hìx-Sx9?+{Η@}|  gZJDM0 ,7}o˸ #yO!@9i&  #w#/w#w#!9! E9!!9~(+FM!"9!(#>2*u"|>":( E *6#w*6#6 !\$!u[ (W( #:~CONTRMKBDLSTAUXUSR>2ͭ*#~ u*:> >w###6Õ  #6++p>2Su:*6###ww#w$w#w: ͳ##N#F*B>w#w#[s#rò>2u*6 #-Nw#Fwq#p#6#w#w#w͞* :( Q: *^ F* < >26"~^*-w# ww#Ͳ^"~ <@*u!\  >2*|>! * \$\<(!: [1Á\!(f"́> 2:!"F( #~#6$>!"N>!~8>O6*"w (=(&("( :( 8y(~#ͽ7+ (6*#~́*#~ *~(h#"b=  8ͽ ̶J= B== ͯ}8= ͵}/l !*###~-_~(46*>2>*##w:>*##~*#~(E͋ ( ( ( ͕!] ( ( ((w#(͕́̕6!]~-#8~>7́ Õ͕>O*{͍̈́s #r*{/͍ d͋ ͕ (( #w(͕́̕q*#~ʶ (͕́ ͕ Õ*##~6[O*#~(08ʦ=ʦ==ʩ=ʬò+###~-_q46`>*:4^q}Q*|(|( 6-#Sy[R8 (G> QC~Q#*ͳyC!' !+TRUEFALSEy!9^#~#(G~Q#> Q> Q "F!(#R0ͳ*4#4>R *4 #4(Ͳ>>2*V(/˖:(#~+ x y!t( =( X:(R*:(###~-_-K< =>:("^"*^˞*V˖0 SѷR8A* N#F#s#r 0})jS\*###w* N#FB ^r+s>!T]>)j)0 0= R!#*^#V#N#F#^#V>">!2DM"~ʲx(L* :O(o:" C}=( ?*-N#Fp+qq#p! * F+N+++V+^Bq#p>>>SѷR* s#r$ s#r*"[R0s#r>"[^#VS!9[R8[R>O"w2x2!"" ͵*>2"!"""!\u*: ͭ!~6go(\R*s#r_2x( s x(T]DMR0 -a%Ù}Wo*!~6o&͠|ͣ}^C User break1: I/O Run-time error e, PC=[R"` Program aborted*1!`!)ͅ(6!!@Printer Setup ProgramO!!@version @1.0O! !@Copyright (C) @1985@ by James W. NeldenOc!!@0All rights reserved. This program may be freelyO@1 copied and used under the following conditions:OO@!1)This notice must remain intact.O@22)It cannot be sold either alone or in combinationO@7 with other programs except by non-profit organizationO@ and then only for disk cost.O@93)The documentation file is distributed with the program.O@84)Program name must remain unchanged during distributionO@= SETPRCxx.COM for CP/M, and SETPRMxx.COM for MS-DOS version.O@; The "xx" in the file name is reserved for version number.OO@=Turbo Pascal Compiler copyright 1984 by Borland InternationalO|">"@!Bu}2Q!*>s! }29*@!B*@͎!}28*Q&RR¿!*8&}oEʴ!!!͐@Cannot open input file !B!0Oü!!*>sÕ"WR•"*8&Eʄ"!!͐@0File exists, do you want to replace? (Y/N/Quit):!!9͚*9&}29*9&!Y$!N$!Q$! $E"*9&!YEʁ"!*>s*@͍Õ"!*>s*@͍!!͐ì".SET"6!!@Enter printer name:O@$ alone will abort program.O!!͐*6*60!EM#!!r*6!!! e.2Ev#!}2"#!!͐!ͱ@1Please enter a printer name, or to abort.O*"&E#*6!"*6u"*","."0*0**P*0!P!*,s#r*0\}oEʀ$*0!]*,^#V+))))))P*,^#V!*,s#r/$*0ͭ"P!!u"rta6!4!!0R!͡*s#r*^#V!JE$!*s#r*^#V!@Printer Setup Program*^#V!!!!0*^#V!!!!0zs%"!-ͱ*#U%*^#V!@ 0. EXIT programc@ (or ENTER alone)|!*r!Rzb&"*! 7E&*^#V*!&*^#V!*!*!͵@. !t*+))))))!!!0*#%!!c@Make |@SUREc@ that your printer is |@ON c@and |@SELECTED!!@"Enter number of setup and :""a!*+))))))!!;P!Su!S!!!!K!*z'"!S*!͇!!!K!*ͱ*#Å'""a!%!͐!"!!!!K*!*!*!R.}oE'*!ET(r!(!c@<<|@ PRINTER NOT READY c@>>|*!*!!*ͱ!** '!E'͔!ͣ"!R!!!!*&E )!!]!!V#è)!ͱO@ ERROR - the !!0@ file not available.O@4Check your directory for files with .SET extensions.Or!]*!V!͊$c&!]**'rt available.O@4Check your directory *^#V!*!*!͵@. !t*+))))))!!!0*#%!!c@Make |@SUREc@ that your printer is |@ON c@and |@SELECTED!!@"Enter number of setup and :""a!*+))))))!!;P!Su!S!!!!K!*z'"!S*!͇!!!K!*ͱ*#Å'""a!%!͐!"!!!!K*!*!*!R.}oE'*!ET(r!(!c@<<|@ PRINTER NOT READY c@>>|*!*!!*ͱ!** '!E'͔!ͣ"!R!!!!*&E Set Print Program by James W. Nelden June 3, 1985 THE LEGAL STUFF Just to make the legal types feel at home, this program and this documentation are copyrighted (c) 1985 by James W. Nelden, 720 Lara Rd., Normal, Illinois, 61761. All rights are reserved. You are permitted to copy and use this program under the following conditions: 1. Copyright notices remain intact on both the .COM and .DOC files associated with this program. 2. This program cannot be sold either alone or in combina- tion with other programs except by non-profit organization and then only for disk cost. 3. This documentation file is distributed with the program. 4. Program name must remain unchanged during distribution. SETPRCxx.COM for CP/M, and SETPRMxx.COM for MS-DOS version. The "xx" in the file name is reserved for version number. You may, of course, rename the program in your working copy to something simpler, like "SP", or "SETPRINT", or "PRINTSET", or "GEORGE". Turbo Pascal is copyrighted 1983,1984,1985 Borland International, 4807 Scotts Valey Drive, Scotts Valey, CA 95066. CP/M is copyrighted by Digital Research Inc. MS-DOS is copyrighted by Microsoft Corp. PURPOSE So much for the legals, on to more interesting subjects. This program provides a means of changing the font, spacing, or any other software adjustable settings on computer printers. The program is generic, that is it will work with ANY PRINTER that can receive and interpret ESCape or other character sequences as orders to change optional settings. The data file to provide these sequences is relatively easy to make and change using any text editor that creates a purely ASCII file. This means no high bits or other word processor tricks in the file. This program is available for both MS-DOS and for CP/M machines. By avoiding use of machine specific tricks, I was able to use the same source code for both operating system, and just recompile with the appropriate version of Turbo Pascal. Both programs work the same, and have been tested on Osborne 1, Compaq Plus, and IBM PC/XT/AT using a variety of screen types. The program was written on an OSBORNE 1 with a 52 wide screen, which means it will work with any CP/M computer that uses Televideo 9XX series screen controls. It should with all IBM compatible screen types. Other terminals might work too, but don't count on it. Set Print Documentation page 2 of 5  HOW IT WORKS The program, when started, displays a copyright notice and requests the name of the printer. What it really wants is the name of the data file, which is usually named after the printer, and MUST have the extension .SET to work. If the data file is located in other than the default disk drive, the drive must be designated in the printer name, eg B:NEC. Capitalization of the input is not important. The program reads the data file into a single dimension string array and parses the required information for a menu display. As you select from the menu by entering the menu number and a carriage return, the program will place an asterix (*) next to the menu choice, and flashes a message next to the entry prompt. If the printer is not turned on, selected and ready, this message will freeze, and wait until the prin ter is made ready. There will be no message flash if the input is outside the displayed menu range. Exit from the program is by entering 0 (zero) or just at the prompt. Set Print Documentation page 3 of 5 CREATING A DATA FILE The data file MUST follow this format for the program to operate. 1. Data file name must have a .SET extension. 2. The first line contains the menu heading that you want displayed. I recommend that this be descriptive, and short; although the program will accept up to 80 characters. 3. The second line is a dummy line which the program will ignore totally, up to 80 characters long. Note that the second line in the sample data file NEC.SET has a simple description for the following lines. 4. There can be up to 17 lines of data following the dummy line. This is the limit due to screen size. All numbers are in DECIMAL. The format is: 20 characters menu description. 2 digit with count of setups for this menu item. SPACE 3 digit ASCII code for character to be sent to the printer. SPACE 3 digit ASCII code for character to be sent to the printer. REPEAT AS NECESSARY. You have up to 80 characters per menu line, so a pretty long string can be sent if necessary. That should help you HP printer users out there. Set Print Documentation page 4 of 5 SAMPLE DATA FILE I know that the following data file works with the NEC 8023A-C printer because that's the printer I use. I call it NEC.SET and store it on the same disk as the program. An advantage of this method of printer setup is that if you have several printers, you just need one data file (1K) for each printer, not a whole new program. Note that if you have several printers, the setup strings will be sent to whatever is currently selected, and through the current LST: port. It is up to you to set this up prior to using this program. NEC 8023A-C or C.ITOH 8150 setup name ## ddd DDD ddd DDD ddd DDD ddd DDD ddd DDD Pica 10cpi (default)07 027 078 027 034 015 027 065 Elite 12cpi 02 027 069 Compressed 17cpi 02 027 081 Proportional Font 02 027 080 Enhanced ON 02 027 033  Enhanced OFF 02 027 091 Enlarged ON 01 014 Enlarged OFF 01 015 1/8" line space 02 027 066 1/6" line space 02 027 065 14/144" line space 04 027 084 049 052 Underline ON 02 027 088 Underline OFF 02 027 089 Left Margin 5 05 027 076 048 048 053 explanation of data lines: ____Decimal count of following codes. | Menu Description | _____Decimal ASCII codes for setups. __________________ / / / / / / / \/\ / \ / \ / \ / \ / \ Left Margin 5 05 027 076 048 048 053 This particular setup requires a 5 character sequence of: ESC L 0 0 5. NOTE: It is necessary that all lines, including the last one, end with a Carriage Return. If you have a problem with your setup menu not displaying the last choice, check for this. Set Print Documentation page 5 of 5 FUTURE EMBELLISHMENTS I am currently considering adding optional command line printer setup to the present menu system. This would have the advantage of allowing batch or submit file use, and give experts an additional tool. The disadvantage is that I will have to use different procedures for CP/M and MS-DOS, so I will no longer be able to use the same source code for both systems. If anybody has a good Turbo Pascal procedure for command line processing in either CP/M or MS-DOS, I would appreciate them passing it along. FINI Users are encouraged to share their setup data files. I would be interested in seeing them as well. If you have bug reports, suggestions for future updates, or just want to send money, my address is on the front of this document, or you can send me EMAIL through CompuServe to 72257,575. Jim Nelden t file use, and give experts an additional tool. The disadvantage is that I will have to use different procedures for CP/M and MS-DOS, so I will no longer be able to use the same source code for both systems. If anybody has a good Turbo Pascal procedure for command line processing in either CP/M or MS-DOS, I would appreciate them passing it along. FINI Users are encouraged to share their setup data files. I would be interested in seeing them as well. If you have bug reports, suggestions for future u1   !Cp!Dp!Ep!Fp!2p!1p!Ip!Jp!6p!8p!Rp ^#~$ p EPSON PRINTER FUNCTIONS use UPPER case letters press RETURN to terminate C = COMPRESSED PRINT D = NON-COMPRESSED PRINT E = EMPHASIZED PRINT F = NON-EMPHASIZED PRINT 2 = DOUBLE STRUCK PRINT 1 = SINGLE STRUCK PRINT I = ITALIC PRINT J = NON-ITALIC PRINT 6 = 6 LINES PER INCH 8 = 8 LINES PER INCH R = RESET PRINTER $P$Q$E$F$G$H$4$5$2$0$@$; PROGRAM EPSET.ASM ; ; WRITTEN BY KENT WALKER ; OCTOBER, 1982 ; ; 8080 ASSEMBLER CODE ; USING CP/M BDOS FUNCTIONS ; ; THIS PROGRAM IS DESIGNED ; TO SET THE ; >>>>>>>>EPSON<<<<<<<< ; PRINTER PARAMETERS ; VIA KEYBOARD INPUT. ; ; A TABLE OF OPTIONS IS PRESENTED ON THE MONITOR. ; INPUT IS TERMINATED BY A CARRIAGE RETURN. ; INPUT CHARACTERS MUST BE IN UPPER CASE. ; ORG 100H BDOS EQU 0005H INCHR EQU 1 ;KEYBOARD INPUT FUNCTION LSTCHR EQU 5 ;CHARACTER TO LIST DEVICE FUNCTION CR EQU 000DH ;CARRIAGE RETURN LF EQU 000AH ;LINE FEED TAB EQU 0009H ;TAB CHARACTER CLRSCR EQU 001AH ;CLEAR SCREEN - CTRL Z - OSBORNE & TELEVIDEO ESC EQU 001BH ;ESCAPE CODE PRSTR EQU 9 ;PRINT STRING FUNCTION BOOT EQU 0 ;WARM BOOT ; LXI SP,STACK ;SET UP STACK LXI D,MESAGE ;POINT TO MESSAGE MVI C,PRSTR ;STRING PRINT FUNCTION CALL BDOS ; LOOP MVI C,INCHR CALL BDOS CPI CR ;CARRIAGE RETURN ENDS INPUT JZ BOOT ; LXI H,COMP ;TEST FOR 'C' CPI 'C' JZ LIST ; LXI H,UNCOMP ;TEST FOR 'D' CPI 'D' JZ LIST ; LXI H,EMPH ;TEST FOR 'E' CPI 'E' JZ LIST ; LXI H,NOEMPH ;TEST FOR 'F' CPI 'F' JZ LIST ; LXI H,DBLSTR ;TEST FOR '2' CPI '2' JZ LIST ; LXI H,SNGLSTR ;TEST FOR '1' CPI '1' JZ LIST ; LXI H,ITALIC ;TEST FOR 'I' CPI 'I' JZ LIST ; LXI H,NOITAL ;TEST FOR 'J' CPI 'J' JZ LIST ; LXI H,SIXLPI ;TEST FOR '6' CPI '6' JZ LIST ; LXI H,EITLPI ;TEST FOR '8' CPI '8' JZ LIST ; LXI H,RESET ;TEST FOR 'R' CPI 'R' JZ LIST ; JMP LOOP ; ; ; SUBROUTINE TO OUTPUT ESCAPE CODE TO PRINTER ; LIST MOV E,M ;MOVE CHAR TO REG E PUSH H ;SAVE STRING POINTER MVI C,LSTCHR ;SET UP FOR LINE PRINTER CALL BDOS ;PRINT CHARACTER POP H ;RESTORE STRING POINTER INX H ;POINT TO NEXT CHAR MOV A,M ;MVVE NEXT CHAR TO REG A CPI '$' ;IS IT THE TERMINATOR ($) ? JZ LOOP ;RETURN IF YES JMP LIST ;ELSE REPEAT ; ; END OF SUBROUTINE ; ; ; MESSAGES ; MESAGE DB CLRSCR,TAB,'EPSON PRINTER FUNCTIONS' ,CR,LF DB TAB, 'use UPPER case letters' ,CR,LF DB TAB, 'press RETURN to terminate' ,CR,LF,LF DB TAB,'C = COMPRESSED PRINT' ,CR,LF DB TAB,'D = NON-COMPRESSED PRINT' ,CR,LF,LF DB TAB,'E = EMPHASIZED PRINT' ,CR,LF DB TAB,'F = NON-EMPHASIZED PRINT' ,CR,LF,LF DB TAB,'2 = DOUBLE STRUCK PRINT' ,CR,LF DB TAB,'1 = SINGLE STRUCK PRINT' ,CR,LF,LF DB TAB,'I = ITALIC PRINT' ,CR,LF ;GRAPHTRAX ONLY! DB TAB,'J = NON-ITALIC PRINT' ,CR,LF,LF DB TAB,'6 = 6 LINES PER INCH' ,CR,LF DB TAB,'8 = 8 LINES PER INCH' ,CR,LF,LF DB TAB,'R = RESET PRINTER' ,CR,LF,LF DB '$' ; ; TABLE OF PRINTER ESCAPE CODES ; COMP DB ESC,'P$' UNCOMP DB ESC,'Q$' EMPH DB ESC,'E$' NOEMPH DB ESC,'F$' DBLSTR DB ESC,'G$' SNGLSTR DB ESC,'H$' ITALIC DB ESC,'4$' NOITAL DB ESC,'5$' SIXLPI DB ESC,'2$' EITLPI DB ESC,'0$' RESET DB ESC,'@$' ; ; STACK AREA ; DS 10H STACK ; END ESSAGES ; MESAGE DB CLRSCR,TAB,'EPSON PRINTER FUNCTIONS' ,CR,LF DB TAB, 'use UPPER case letters' ,CR,LF DB TAB, 'prep *****EPSON PRINTER PROGRAM*****  !!!!! Load the PAPER FIRST! ***** Then TURNON the PRINTER****  Hit Any Key To Start The Program $ *****HELP INFORMATION***** This program will setup your Epson printer until you turn on it off or select a new set of options. The enlarged print option was not included since it resets to normal size after each line printed You can select emphasized and then doublestrike to get boldface type. HIT ANY KEY TO CONTINUE $ ***SETUP PRINTER*** 1. Select Typesize 2. Select Line Spacing 3. Select Paper Out Mode 4. Select International Font 5. Help Information 6. Exit Program Enter Your Selection $ ***SELECT LINE SPACING 1. 6 lines/inch (Default) 2. 8 lines/inch 3. Choose special spacing! Enter Your Selection $ ***VARIABLE LINE SPACING*** You can set line spacing between 1/72 to 85/72 of an inch  Enter a number between 1 and 85 $ ***SELECT TYPEFACE*** 1. Emphasized Print On 2. Condensed Print On 3. Emphasized Print Off 4. Condensed Print Off 5. Double Strike On 6. Double Strike Off 7. No change Enter your Selection $ ***SELECT PAPER OUT MODE*** 1. Select Paper End Detector 2. Deselects Paper End Detector Enter your Selection $ ***SELECT CHARACTER SET*** 0. U.S.A. 1. France 2. Germany 3. England 4. Denmark 5. Sweden 6. Italy 7. Spain Enter Your Selection $ DEFAULT USED $ 2. Deselects Paper End Detector Enter your Selection $ !9"!>*8 O * \ 8 O  h * \ 6ʗʘʪv a8 O * \ a8 O ;* \ h Rh 0_h h a8 O * \ h 28h a9h a8 O * \ 7aAKUZdiah Hph Gpph Fpph Eh a8 O * h \ 2˜0h a3ʦ1h a8 O G* Ah !T]6#6b !~##  ~+~ a0  w~# V _h +~60#w >0w h * a >@ _> @ > @  >Qa h L 2. Deselects Paper End Detector Enter your Selection $ ***SELECT CHARACTER SET*** 0. U.S.A. 1. France 2. Germany 3. England 4. Denmark 5. Sweden 6. Italy 7. Spain Enter Your Selection $ DEFAULT USED $ 2. Deselects Paper End Detector Enter your Selection $ !9"!>*8 O * \ 8 O  h * \ 6ʗʘʪv a8 O * \ a8 O ;* \ h Rh 0_h h a8 O * \ h 28h a9h a8 O * \ 7aAKUZdiah Hph Gpph Fpph Eh a8 O * h \ 2˜0h a3ʦ1h a8 O G* Ah !T]6#6b !~##  ~+~ a0  w~# EPSON PRINTER OPTION PROGRAM This program provides most of the options that the EPSON printer allows. The Assembly program is well documented and is easily modified to provide the additional options of GRAFTRAX PLUS. Just enter EPSNPRTR and follow the menu. If you have any problems call Merrill Hessel, (301) 2295182 nights and weekends.EPSET2 COM8EPSET2 ASM9:;EPSNPRTRCOM<=>EPSNPRTR$$$ ;******************************** ;* * ;* Setup Epson Printer * ;* For a CPM system * ;* Written by M.M. Hessel * ;* 2/15/82 * ;* * ;******************************** ; ORG 0100H JMP START ; START IN THE MAIN PROGRAM ; ; DATA STORAGE AREA ; NTRY EQU 0005H ; CPM OUTPUT SUBROUTINE PSTR EQU 09 ; PRINT BUFFER FUNCTION GSTR EQU 0AH ; READ BUFFER FUNCTION PRTR EQU 05 ; PRINTER WRITE CHAR FUNCTION RFUNC EQU 01 ; CONSOLE READ CHAR FUNCTION WFUNC EQU 02 ; CONSOLE WRITE CHAR FUNCTION CS EQU 1AH ; ^Z, CLEAR SCREEN (HARDWARE DEPENDENT) CR EQU 0DH ; CARRIAGE RETURN LF EQU 0AH ; LINE FEED ; ; WRITTEN DATA STORAGE ; PRINON DB 0DH DB ' *****EPSON PRINTER PROGRAM*****' DB 0AH,0AH,0AH,0AH,07H,0DH DB ' !!!!! Load the PAPER FIRST!',0DH,0AH,0AH,0AH DB ' ***** Then TURNON the PRINTER****',0DH,0AH,0AH,0AH,07H DB ' Hit Any Key To Start The Program $' ; HLP DB 0DH DB '*****HELP INFORMATION*****',0DH,0AH,0AH,0AH  DB 'This program will setup your Epson printer until you',0DH,0AH DB 'turn on it off or select a new set of options.',0DH,0AH,0AH DB 'The enlarged print option was not included since',0DH,0AH DB 'it resets to normal size after each line printed',0DH,0AH,0AH DB 'You can select emphasized and then doublestrike',0DH,0AH DB 'to get boldface type.',0DH,0AH,0AH,0AH,0AH DB 'HIT ANY KEY TO CONTINUE $' ; SETUP DB 0DH DB ' ***SETUP PRINTER***',0DH,0AH,0AH DB ' 1. Select Typesize',0DH,0AH,0AH DB ' 2. Select Line Spacing',0DH,0AH,0AH DB ' 3. Select Paper Out Mode',0DH,0AH,0AH DB ' 4. Select International Font',0DH,0AH,0AH DB ' 5. Help Information',0DH,0AH,0AH DB ' 6. Exit Program',0DH,0AH,0AH DB ' Enter Your Selection $' ; SLINSP DB ' ***SELECT LINE SPACING',0DH,0AH,0AH DB ' 1. 6 lines/inch (Default)',0DH,0AH,0AH DB ' 2. 8 lines/inch',0DH,0AH,0AH DB ' 3. Choose special spacing!',0DH,0AH,0AH DB ' Enter Your Selection $' ; SPSPC DB ' ***VARIABLE LINE SPACING***',0DH,0AH,0AH DB ' You can set line spacing between 1/72 to',0DH,0AH DB ' 85/72 of an inch',0DH,0AH,0AH,07H DB ' Enter a number between 1 and 85 ',0DH,0AH,0AH,'$' ; TSIZE DB ' ***SELECT TYPEFACE***',0DH,0AH,0AH DB ' 1. Emphasized Print On',0DH,0AH,0AH DB ' 2. Condensed Print On',0DH,0AH,0AH DB ' 3. Emphasized Print Off',0DH,0AH,0AH DB ' 4. Condensed Print Off',0DH,0AH,0AH DB ' 5. Double Strike On',0DH,0AH,0AH DB ' 6. Double Strike Off',0DH,0AH,0AH DB ' 7. No change',0DH,0AH,0AH DB ' Enter your Selection $' ; PSEL DB ' ***SELECT PAPER OUT MODE***',0DH,0AH,0AH DB ' 1. Select Paper End Detector',0DH,0AH,0AH DB ' 2. Deselects Paper End Detector',0DH,0AH,0AH DB ' Enter your Selection $' ; INTFONT DB ' ***SELECT CHARACTER SET***',0DH,0AH,0AH DB ' 0. U.S.A.',0DH,0AH,0AH DB ' 1. France',0DH,0AH,0AH DB ' 2. Germany',0DH,0AH,0AH DB ' 3. England',0DH,0AH,0AH DB ' 4. Denmark',0DH,0AH,0AH DB ' 5. Sweden',0DH,0AH,0AH DB ' 6. Italy',0DH,0AH,0AH DB ' 7. Spain',0DH,0AH,0AH DB ' Enter Your Selection $' ; ERRMSG DB 07H,' DEFAULT USED $' ; SPCNG DS 4 ; Stores line spacing OLDSTK DS 2 DS 60 STACK EQU $ ; Allows 30 items on the stack ; ;******************************** ;* Subroutine "Savstk" * ;* Saves CPM registers/stack * ;* Define SP * ;******************************** SAVSTK POP B LXI H,0000 ; Clear HL DAD SP ; Get Stack Pointer SHLD OLDSTK ; Save SP LXI H,STACK ; Set HL with address of SP SPHL ; Set new Stack Pointer PUSH B ; Return address set RET ; ;******************************** ;* Subroutine "Restor" * ;* Restores stack to CPM * ;******************************** ; RESTOR LHLD OLDSTK ; Get old Stack Pointer SPHL ; Put it in the register RET ; This returns to CPM ; ;******************************** ;* Subroutine "TURNON" reminds * ;* you to turn on the printer * ;******************************** ; TURNON CALL CLEAR CALL CRLF LXI D,PRINON CALL PRINT CALL READ RET ; ;******************************** ;* Subroutine "Menu" the main * ;* selection menu. Program * ;* returns to this menu after * ;* selecting option. Exit goes * ;* back to CPM * ;******************************** ; MENU CALL CLEAR CALL CRLF MVI E,CR CALL PCHAR LXI D,SETUP CALL PRINT CALL READ MVI B,36H CMP B JZ EXIT ; EXIT TO CPM DCR B CMP B JZ HELP ; TO WRITE HELP INFORMATION DCR B CMP B JZ CHARSET ; CHARACTER SET FONT DCR B CMP B JZ PSMODE ; PAPER SELECTOR DCR B CMP B JZ LINESP ; LINE SPACING DCR B CMP B JZ TYPE ; TYPESIZE JMP MENU ; INCORRECT NUMBER SELECTED EXIT RET ; RETURN TO CPM ; ;******************************** ;* Subroutine "HELP" prints * ;* information about program * ;******************************** HELP CALL CLEAR CALL CRLF LXI D,HLP CALL PRINT CALL READ JMP MENU ; ;******************************** ;* Subroutine "CHARSET" selects * ;* one of an eight possible * ;* character sets U.S.A.,France,* ;* Germany,etc. * ;******************************** ; CHARSET CALL CLEAR CALL CRLF LXI D,INTFONT CALL PRINT CALL READ MVI E,1BH CALL PCHAR ; Escape to Printer MVI E,52H CALL PCHAR ; "R" to Printer SUI 30H ; Convert console input fom ASCII to Binary CMP B ; Is input < 0 ? JC INCORR ; If yes invalid MVI B,08H CMP B ; Is input > 7 ? JZ SKIP JNC INCORR ; If yes invalid SKIP MOV E,A CALL PCHAR ; "Character Set" to printer JMP FIN INCORR MVI E,00H CALL PCHAR ; Default Set is USA FIN JMP MENU ; End of Character Set!! ; ;******************************** ;* Subroutine "PSMODE" turn * ;* the paper end detector off * ;* or on. Default is on * ;******************************** PSMODE CALL CLEAR CALL CRLF LXI D,PSEL CALL PRINT CALL READ MVI E,1BH  CALL PCHAR MVI B,32H CMP B JNZ SELECT MVI E,38H CALL PCHAR JMP MENU SELECT MVI E,39H CALL PCHAR JMP MENU ; ;******************************** ;* Subroutine "TYPE" sets the * ;* typeface * ;******************************** ; TYPE CALL CLEAR CALL CRLF LXI D,TSIZE CALL PRINT CALL READ MVI B,37H ; Test the selection CMP B JZ MENU ; No change DCR B CMP B JZ DSOFF ; Doublestrike off DCR B CMP B JZ DSON ; Doublestrike on DCR B CMP B JZ CNOFF ; Condensed printing off DCR B CMP B JZ EMOFF ; Emphasized printing off DCR B CMP B JZ CNON ; Condensed printing on DCR B CMP B JZ EMON ; Emphasized printing on JMP MENU ; To Menu DSOFF MVI E,1BH CALL PCHAR MVI E,48H ; Doublestrike off JMP PTR DSON MVI E,1BH CALL PCHAR MVI E,47H ; Doublestrike on JMP PTR CNOFF MVI E,12H ; ^R Condensed off JMP PTR EMOFF MVI E,1BH ; Escape to printer CALL PCHAR MVI E,46H ; "F" emphasized off JMP PTR CNON MVI E,0FH ; ^O Condensed on JMP PTR EMON MVI E,1BH ; Escape to printer CALL PCHAR MVI E,45H ; "E" emphasized on PTR CALL PCHAR NOCHG JMP MENU ; ;******************************** ; Subroutine "LINESP" provides a* ; choice of 1 - 85/72 of an inch* ; spacing on the Epson. * ;******************************** LINESP CALL CLEAR CALL CRLF LXI D,SLINSP CALL PRINT ; Your choice line of spacing MVI E,1BH CALL PCHAR ; Send escape to the printer CALL READ MVI B,32H CMP B JNZ SPSP MVI E,30H ; 8 Lines/inch CALL PCHAR ; To the printer JMP MENU SPSP MVI B,33H CMP B JZ SPECL DFL MVI E,31H CALL PCHAR ; 6 Lines/inch (Default) JMP MENU SPECL CALL CLEAR ; Variable line spacing CALL CRLF LXI D,SPSPC CALL PRINT MVI E,41H CALL PCHAR ; Send "A" to printer(Esc A) LXI H,SPCNG ; Address of console buffer MOV D,H ; Put H & L in MOV E,L ; D & E registers MVI M,02 ; Maximum buffer length = 2 INX H ; Point to character count byte MVI M,00 ; Zero charcter count CALL CHRSTR ; Console buffer read subroutine CKCHR LXI H,SPCNG+1 ; This routine checks input is it 1 to 85? MOV A,M ; Character counter CPI 02H ; Two characters? INX H INX H ; Point to units digit JZ CTES ; If yes process two digits CPI 1 ; One character? JZ SHIFT ; If yes shift tens to unit position JMP DEF ; If 0 set default CTES MOV A,M ; Put units digit in A CALL TEST ; Test if it is in the range 0 to 9 TENS DCX H ; Point to tens digit MOV A,M CALL BLANK ; Is it blank? CALL TEST ; Test for 0 to 9 CALL CONV ; Convert to hex from decimal JMP MENU ; Done! TEST SUI 30H ; Tests for digit JC DEF ; <0 CPI 0AH JNC DEF ; >9 MOV M,A ; Store digit RET CONV MOV A,M ; Converts tens input to hex ADD A ; *2 ADD A ; *4 ADD M ; *5 ADD A ; *10 INX H ; point M to units ADD M ; Conversion complete CPI 0 ; Is it 0 JZ DEF CPI 86 ; Is it >85 JNC DEF MOV E,A CALL PCHAR ; Send spacing to printer RET SHIFT DCX H ; Point to tens digit MOV A,M ; Move it to accumulator MVI M,30H ; Store ASCII 0 in tens INX H ; Point to units digit MOV M,A ; Put tens in unit place JMP CTES BLANK CPI 20H ; Is it blank? RNZ MVI A,30H ; Yes put an ASCII 0 in A. MOV M,A ; Store it RET DEF POP D DEFLT MVI E,0CH CALL PCHAR ; Send 12/72 to printer 6 lines/inch LXI D,ERRMSG CALL PRINT JMP MENU ; ;******************************** ;* Subroutine "Print" a string * ;* on the console. String must * ;* end with a $ sign * ;******************************** ; PRINT PUSH H ; PRESERVE REGISTERS PUSH D PUSH B PUSH PSW MVI C,PSTR CALL NTRY POP PSW POP B POP D POP H RET ; ;******************************* ;* Subroutine "Clear Screen" * ;* for Osborne ^Z =1AH * ;******************************* ; CLEAR PUSH PSW MVI A,CS CALL WCHAR POP PSW RET ; ;******************************* ;* Subroutine "Write" one * ;* character to the console * ;******************************* ; WCHAR PUSH H PUSH D PUSH B PUSH PSW MOV E,A ; PUT CHAR IN THE E REGISTER MVI C,WFUNC ; WRITE CHARACTER FUNCTION CALL NTRY POP PSW POP B POP D POP H RET ; ;******************************* ;* Subroutine CRLF * ;******************************* ; CRLF PUSH PSW MVI A,CR ; Carriage return CALL WCHAR MVI A,LF ; Line Feed CALL WCHAR POP PSW RET ; ;******************************** ;* Subroutine "READ" character* ;* from the console * ;******************************** ; READ EQU $ ; REGISTERS NOT SAVED MVI C,RFUNC CALL NTRY ; STORES THE CHARACTER IN A RET ; ;******************************** ;* Subroutine "CHRSTR" reads a * ;* string of characters from * ;* the console * ;******************************** ; CHRSTR MVI C,GSTR CALL NTRY RET ; ;******************************** ; Subroutine "PCHAR" lists a * ; character on the printer * ;******************************** ; PCHAR PUSH PSW MVI C,PRTR CALL NTRY POP PSW RET ; ;******************************** ;* MAIN PROGRAM * ;******************************** ; START CALL SAVSTK ; Preserves CPM registers/stack CALL TURNON ; Reminds you to turn on printer CALL MENU MVI E,0AH ; Send CR to printer CALL PCHAR CALL RESTOR ; Returns to CPM END 0100H***** ;* Subroutine "READ" character* ;* from the console * ;******************************** ; READ EQU $ ; REGISTERS NOT SAVED MVI C,RFUNC CALL NTRY ; STORES THE CHARACTER IN A RET ; ;******************************** ;* Subroutine "CHRSTR" reads a * ;* string of characters from * ;* the console * ;******************************** ; CHRSTR MVI C,GSTR CALL NTRY RET ; ;******************************** ; Subroutine "PCHAR" lists a *10 REM ********* EPSON.BAS ********** REV 2.O ********** 08/20/83 ******** 20 ' 40 ' 50 PRINT CHR$(26) 60 INPUT "52 or 80 column";COLUMN% 70 IF COLUMN%=52 THEN WIDTH 52 80 IF COLUMN%=80 THEN WIDTH 80 90 ' 100 PRINT CHR$(26) 110 PRINT:PRINT TAB(14); " ****************************************" 120 PRINT TAB(14);"***** *****" 130 PRINT:PRINT:PRINT TAB(14); " T U R N O N P R I N T E R " 140 PRINT:PRINT:PRINT TAB(14);"***** *****" 150 PRINT TAB(14);" ******************************************" 160 PRINT:PRINT:INPUT " PRESS RETURN WHEN READY";Y$ 170 ' 180 LPRINT CHR$(27)"@"; 190 A1$=" ":A2$=" ":A3$=" ":A4$=" ":A5$=" ":A6$=" ":A7$=" ":A8$=" " 200 B1$="OFF":B2$="OFF":B3$="OFF":B4$="OFF":B5$="OFF":B6$="OFF" 210 B7$="OFF":B8$="OFF" 220 PRINT CHR$(26) 230 PRINT TAB(18);"PRINT MODE MENU" 240 PRINT :PRINT 250 PRINT TAB(14);"["A1$"]";TAB(19);"["B1$"]";" 1 COMPRESSED" 260 PRINT TAB(14);"["A2$"]";TAB(19);"["B2$"]";" 2 DOUBLE WIDTH" 270 PRINT TAB(14);"["A3$"]";TAB(19);"["B3$"]";" 3 DOUBLE STRIKE" 280 PRINT TAB(14);"["A4$"]";TAB(19);"["B4$"]";" 4 EMPHASIZED" 290 PRINT TAB(14);"["A5$"]";TAB(19);"["B5$"]";" 5 SUPERSCRIPT" 300 PRINT TAB(14);"["A6$"]";TAB(19);"["B6$"]";" 6 SUBSCRIPT" 310 PRINT TAB(14);"["A7$"]";TAB(19);"["B7$"]";" 7 UNDERLINE" 320 PRINT TAB(14);"["A8$"]";TAB(19);"["B8$"]";" 8 ITALICS" 330 PRINT:PRINT TAB(26);"9 GO TO FORMAT MENU" 340 PRINT:PRINT TAB(25);"10 TO EXIT" 350 PRINT:PRINT "Scripts do not work with DOUBLE WIDTH or EMPHASIZED." 360 PRINT "Turning off scripts leaves printer in DOUBLE STRIKE." 370 PRINT:INPUT "ENTER OPTION NUMBERS AND PRESS RETURN AFTER EACH ONE";SELECT% 380 ON SELECT% GOTO 410,450,490,530,570,610,640,680,730,1300 390 PRINT "Enter only 1 THROUGH 10": GOTO 370 400 ' 410 IF A1$="ON" THEN 430 420 LPRINT CHR$(15);:A1$="ON":B1$=" ":GOTO 220 430 LPRINT CHR$(18);:A1$=" ":B1$="OFF":GOTO 220 440 ' 450 IF A2$="ON" THEN 470 460 LPRINT CHR$(27) "W" CHR$(1);:A2$="ON":B2$=" ":GOTO 220 470 LPRINT CHR$(27)"W"CHR$(0);:A2$=" ":B2$="OFF":GOTO 220 480 ' 490 IF A3$="ON" THEN 510 500 LPRINT CHR$(27) "G";:A3$="ON":B3$=" ":GOTO 220 510 LPRINT CHR$(27) "H";:A3$=" ":B3$="OFF":GOTO 220 520 ' 530 IF A4$="ON" THEN 550 540 LPRINT CHR$(27) "E";:A4$="ON":B4$=" ": GOTO 220 550 LPRINT CHR$(27) "F";:A4$=" ":B4$="OFF": GOTO 220 560 ' 570 IF A5$="ON" THEN 590 580 LPRINT CHR$(27) "S"CHR$(O);:A5$="ON":B5$=" ":GOTO 220 590 LPRINT CHR$(27) "T";:A5$=" ":B5$="OFF":A3$="ON":B3$=" ":A6$=" ":B6$="OFF":GOTO 220 600 ' 610 IF A6$="ON" THEN 590 620 LPRINT CHR$(27) "S"CHR$(1);:A6$="ON":B6$=" ": GOTO 220 630 ' 640 IF A7$="ON" THEN 660 650 LPRINT CHR$(27) "-" CHR$(1);:A7$="ON":B7$=" ": GOTO 220 660 LPRINT CHR$(27) "-" CHR$(0);:A7$=" ":B7$="OFF": GOTO 220 670 ' 680 IF A8$="ON" THEN 700 690 LPRINT CHR$(27) "4";:A8$="ON":B8$=" ":GOTO 220 700 LPRINT CHR$(27) "5";:A8$=" ":B8$="OFF": GOTO 220 710 ' 720 ' 730 C1$=" 0":C2$="80":C3$="11":C4$="66":C5$="36" 740 D1$=" ":D2$=" ":D3$=" ":D4$=" ":D5$=" " 750 PRINT :PRINT:PRINT CHR$(26) 760 PRINT TAB(18);"PAGE FORMAT MENU" 770 PRINT:PRINT :PRINT TAB(4);"Standard " 780 PRINT TAB(5);"Values" 790 PRINT TAB(6);"["C1$"]";TAB(14);"["D1$"]";" 1 SKIP PERFORATION" 800 PRINT TAB(6);"["C2$"]";TAB(14);"["D2$"]";" 2 SET PAPER WIDTH" 810 PRINT TAB(6);"["C3$"]";TAB(14);"["D3$"]";" 3 SET PAPER LENGTH IN INCHES" 820 PRINT TAB(22);"OR" 830 PRINT TAB(6);"["C4$"]";TAB(14);"["D4$"]";" 4 SET PAPER LENGTH IN LINES" 840 PRINT TAB(6);"["C5$"]";TAB(14);"["D5$"]";" 5 SET LINE SPACING" 850 PRINT:PRINT TAB(21);"6 GO TO PRINT MODE MENU" 860 PRINT: PRINT TAB(21);"7 TO EXIT" 870 PRINT:INPUT "ENTER OPTION NUMBERS AND PRESS RETURN AFTER EACH ONE";CHOICE% 880 ON CHOICE% GOTO 910,980,1060,1140,1210,220,1300 890 PRINT "ENTER ONLY 1 THROUGH 7":GOTO 870 900 ' 910 INPUT "Spaces to skip";P 920 IF P=0 THEN LPRINT CHR$(27)"O";:D1$=" ":GOTO 750 930 IF P>0 AND P<10 THEN D1$=" "+STR$(P)  940 IF P>9 AND P<100 THEN D1$=STR$(P) 950 IF P>99 THEN D1$=RIGHT$(STR$(P+1000),3) 960 LPRINT CHR$(27)"N"CHR$(P);:GOTO 750 970 ' 980 INPUT "Number of spaces for paper width";W 990 IF W=0 THEN PRINT "ZERO WIDTH IS NOT POSSIBLE":GOTO 980 1000 IF W>0 AND W<10 THEN D2$=" "+STR$(W) 1010 IF W>9 AND W<100 THEN D2$=STR$(W) 1020 IF W>99 THEN D2$=RIGHT$(STR$(W+1000),3) 1030 LPRINT CHR$(27)"Q"CHR$(W);:GOTO 750 1040 ' 1050 PRINT "Number of inches for paper length" 1060 INPUT "Enter a number from 1 to 22";I 1070 IF I=0 THEN PRINT "ZERO LENGTH IS NOT POSSIBLE":GOTO 1050 1080 IF I>0 AND I<10 THEN D3$=" "+STR$(I) 1090 IF I>9 AND I<100 THEN D3$=STR$(I) 1100 IF I>99 THEN D3$=RIGHT$(STR$(I+1000),3) 1110 LPRINT CHR$(27)"C"CHR$(0)CHR$(I);:GOTO 750 1120 ' 1130 PRINT "Number of lines for paper length" 1140 INPUT "Enter a number from 1 to 127";L 1150 IF L=0 THEN PRINT "ZERO LENGTH IS NOT POSSIBLE":GOTO 1130 1160 IF L>0 AND L<10 THEN D4$=" "+STR$(L) 1170 IF L>9 AND L<100 THEN D4$=STR$(L) 1180 IF L>99 THEN D4$=RIGHT$(STR$(L+1000),3) 1190 LPRINT CHR$(27)"C"CHR$(L);:GOTO 750 1200 ' 1210 PRINT "Sets line spacing in 1/216ths of an inch." 1220 PRINT "3/216= 1/72; 21/216= 7/72; 27/216=1/8" 1230 INPUT "Enter a number between 1 and 255";S 1240 IF S=0 THEN PRINT "ZERO SPACING IS NOT POSSIBLE":GOTO 1230 1250 IF S>0 AND S<10 THEN D5$=" "+STR$(S) 1260 IF S>9 AND S<100 THEN D5$=STR$(S) 1270 IF S>99 THEN D5$=RIGHT$(STR$(S+1000),3) 1280 LPRINT CHR$(27)"3"CHR$(S);:GOTO 750 1290 ' 1300 IF A1$="ON" THEN LPRINT "COMPRESSED" 1310 IF A2$="ON" THEN LPRINT "DOUBLE WIDTH" 1320 IF A3$="ON" THEN LPRINT "DOUBLE STRIKE" 1330 IF A4$="ON" THEN LPRINT "EMPHASIZED" 1340 IF A5$="ON" THEN LPRINT "SUPERSCRIPT" 1350 IF A6$="ON" THEN LPRINT "SUBSCRIPT" 1360 IF A7$="ON" THEN LPRINT "UNDERLINE" 1370 IF A8$="ON" THEN LPRINT "ITALICS" 1380 PRINT CHR$(26):PRINT 1390 CHAIN "P  1360 IF A7$="ON" THEN LPRINT "T POSSIBLE":GOTO 1130 1160 IF L>0 AND L<10 THEN D4$=" "+STR$(L) 1170 IF L>9 AND L<100 THEN D4$=STR$(L) 1180 IF L>99 THEN D4$=10 REM ********* PRINT.BAS ********** REV 2.O ********** 08/20/83 ******** 20 ' 30 ' by STEVE CUTTER & PAT WATTERS 40 ' 50 PRINT CHR$(26) 60 INPUT "52 or 80 column";COLUMN% 70 IF COLUMN%=52 THEN WIDTH 52 80 IF COLUMN%=80 THEN WIDTH 80 90 ' 100 PRINT CHR$(26) 110 PRINT:PRINT TAB(14); " ****************************************" 120 PRINT TAB(14);"***** *****" 130 PRINT:PRINT:PRINT TAB(14); " T U R N O N P R I N T E R " 140 PRINT:PRINT:PRINT TAB(14);"***** *****" 150 PRINT TAB(14);" ******************************************" 160 PRINT:PRINT:INPUT " PRESS RETURN WHEN READY";Y$ 170 ' 180 LPRINT CHR$(27)"@"; 190 A1$=" ":A2$=" ":A3$=" ":A4$=" ":A5$=" ":A6$=" ":A7$=" ":A8$=" " 200 B1$="OFF":B2$="OFF":B3$="OFF":B4$="OFF":B5$="OFF":B6$="OFF" 210 B7$="OFF":B8$="OFF" 220 PRINT CHR$(26) 230 PRINT TAB(18);"PRINT MODE MENU" 240 PRINT :PRINT 250 PRINT TAB(14);"["A1$"]";TAB(19);"["B1$"]";" 1 COMPRESSED" 260 PRINT TAB(14);"["A2$"]";TAB(19);"["B2$"]";" 2 DOUBLE WIDTH" 270 PRINT TAB(14);"["A3$"]";TAB(19);"["B3$"]";" 3 DOUBLE STRIKE" 280 PRINT TAB(14);"["A4$"]";TAB(19);"["B4$"]";" 4 EMPHASIZED" 290 PRINT TAB(14);"["A5$"]";TAB(19);"["B5$"]";" 5 SUPERSCRIPT" 300 PRINT TAB(14);"["A6$"]";TAB(19);"["B6$"]";" 6 SUBSCRIPT" 310 PRINT TAB(14);"["A7$"]";TAB(19);"["B7$"]";" 7 UNDERLINE" 320 PRINT TAB(14);"["A8$"]";TAB(19);"["B8$"]";" 8 ITALICS" 330 PRINT:PRINT TAB(26);"9 GO TO FORMAT MENU" 340 PRINT:PRINT TAB(25);"10 TO EXIT" 350 PRINT:PRINT "Scripts do not work with DOUBLE WIDTH or EMPHASIZED." 360 PRINT "Turning off scripts leaves printer in DOUBLE STRIKE." 370 PRINT:INPUT "ENTER OPTION NUMBERS AND PRESS RETURN AFTER EACH ONE";SELECT% 380 ON SELECT% GOTO 410,450,490,530,570,610,640,680,730,1300 390 PRINT "Enter only 1 THROUGH 10": GOTO 370 400 ' 410 IF A1$="ON" THEN 430 420 LPRINT CHR$(15);:A1$="ON":B1$=" ":GOTO 220 430 LPRINT CHR$(18);:A1$=" ":B1$="OFF":GOTO 220 440 ' 450 IF A2$="ON" THEN 470 460 LPRINT CHR$(27) "W" CHR$(1);:A2$="ON":B2$=" ":GOTO 220 470 LPRINT CHR$(27)"W"CHR$(0);:A2$=" ":B2$="OFF":GOTO 220 480 ' 490 IF A3$="ON" THEN 510 500 LPRINT CHR$(27) "G";:A3$="ON":B3$=" ":GOTO 220 510 LPRINT CHR$(27) "H";:A3$=" ":B3$="OFF":GOTO 220 520 ' 530 IF A4$="ON" THEN 550 540 LPRINT CHR$(27) "E";:A4$="ON":B4$=" ": GOTO 220 550 LPRINT CHR$(27) "F";:A4$=" ":B4$="OFF": GOTO 220 560 ' 570 IF A5$="ON" THEN 590 580 LPRINT CHR$(27) "S"CHR$(O);:A5$="ON":B5$=" ":GOTO 220 590 LPRINT CHR$(27) "T";:A5$=" ":B5$="OFF":A3$="ON":B3$=" ":A6$=" ":B6$="OFF":GOTO 220 600 ' 610 IF A6$="ON" THEN 590 620 LPRINT CHR$(27) "S"CHR$(1);:A6$="ON":B6$=" ": GOTO 220 630 ' 640 IF A7$="ON" THEN 660 650 LPRINT CHR$(27) "-" CHR$(1);:A7$="ON":B7$=" ": GOTO 220 660 LPRINT CHR$(27) "-" CHR$(0);:A7$=" ":B7$="OFF": GOTO 220 670 ' 680 IF A8$="ON" THEN 700 690 LPRINT CHR$(27) "4";:A8$="ON":B8$=" ":GOTO 220 700 LPRINT CHR$(27) "5";:A8$=" ":B8$="OFF": GOTO 220 710 ' 720 ' 730 C1$=" 0":C2$="80":C3$="11":C4$="66":C5$="36" 740 D1$=" ":D2$=" ":D3$=" ":D4$=" ":D5$=" " 750 PRINT :PRINT:PRINT CHR$(26) 760 PRINT TAB(18);"PAGE FORMAT MENU" 770 PRINT:PRINT :PRINT TAB(4);"Standard " 780 PRINT TAB(5);"Values" 790 PRINT TAB(6);"["C1$"]";TAB(14);"["D1$"]";" 1 SKIP PERFORATION" 800 PRINT TAB(6);"["C2$"]";TAB(14);"["D2$"]";" 2 SET PAPER WIDTH" 810 PRINT TAB(6);"["C3$"]";TAB(14);"["D3$"]";" 3 SET PAPER LENGTH IN INCHES" 820 PRINT TAB(22);"OR" 830 PRINT TAB(6);"["C4$"]";TAB(14);"["D4$"]";" 4 SET PAPER LENGTH IN LINES" 840 PRINT TAB(6);"["C5$"]";TAB(14);"["D5$"]";" 5 SET LINE SPACING" 850 PRINT:PRINT TAB(21);"6 GO TO PRINT MODE MENU" 860 PRINT: PRINT TAB(21);"7 TO EXIT" 870 PRINT:INPUT "ENTER OPTION NUMBERS AND PRESS RETURN AFTER EACH ONE";CHOICE% 880 ON CHOICE% GOTO 910,980,1060,1140,1210,220,1300 890 PRINT "ENTER ONLY 1 THROUGH 7":GOTO 870 900 ' 910 INPUT "Spaces to skip";P 920 IF P=0 THEN LPRINT CHR$(27)"O";:D1$=" ":GOTO 750 930 IF P>0 AND P<10 THEN D1$=" "+STR$(P) 940 IF P>9 AND P<100 THEN D1$=STR$(P) 950 IF P>99 THEN D1$=RIGHT$(STR$(P+1000),3) 960 LPRINT CHR$(27)"N"CHR$(P);:GOTO 750 970 ' 980 INPUT "Number of spaces for paper width";W 990 IF W=0 THEN PRINT "ZERO WIDTH IS NOT POSSIBLE":GOTO 980 1000 IF W>0 AND W<10 THEN D2$=" "+STR$(W) 1010 IF W>9 AND W<100 THEN D2$=STR$(W) 1020 IF W>99 THEN D2$=RIGHT$(STR$(W+1000),3) 1030 LPRINT CHR$(27)"Q"CHR$(W);:GOTO 750 1040 ' 1050 PRINT "Number of inches for paper length" 1060 INPUT "Enter a number from 1 to 22";I 1070 IF I=0 THEN PRINT "ZERO LENGTH IS NOT POSSIBLE":GOTO 1050 1080 IF I>0 AND I<10 THEN D3$=" "+STR$(I) 1090 IF I>9 AND I<100 THEN D3$=STR$(I) 1100 IF I>99 THEN D3$=RIGHT$(STR$(I+1000),3) 1110 LPRINT CHR$(27)"C"CHR$(0)CHR$(I);:GOTO 750 1120 ' 1130 PRINT "Number of lines for paper length" 1140 INPUT "Enter a number from 1 to 127";L 1150 IF L=0 THEN PRINT "ZERO LENGTH IS NOT POSSIBLE":GOTO 1130 1160 IF L>0 AND L<10 THEN D4$=" "+STR$(L) 1170 IF L>9 AND L<100 THEN D4$=STR$(L) 1180 IF L>99 THEN D4$=RIGHT$(STR$(L+1000),3) 1190 LPRINT CHR$(27)"C"CHR$(L);:GOTO 750 1200 ' 1210 PRINT "Sets line spacing in 1/216ths of an inch." 1220 PRINT "3/216= 1/72; 21/216= 7/72; 27/216=1/8" 1230 INPUT "Enter a number between 1 and 255";S 1240 IF S=0 THEN PRINT "ZERO SPACING IS NOT POSSIBLE":GOTO 1230 1250 IF S>0 AND S<10 THEN D5$=" "+STR$(S) 1260 IF S>9 AND S<100 THEN D5$=STR$(S) 1270 IF S>99 THEN D5$=RIGHT$(STR$(S+1000),3) 1280 LPRINT CHR$(27)"3"CHR$(S);:GOTO 750 1290 ' 1300 IF A1$="ON" THEN LPRINT "COMPRESSED" 1310 IF A2$="ON" THEN LPRINT "DOUBLE WIDTH" 1320 IF A3$="ON" THEN LPRINT "DOUBLE STRIKE" 1330 IF A4$="ON" THEN LPRINT "EMPHASIZED" 1340 IF A5$="ON" THEN LPRINT "SUPERSCRIPT" 1350 IF A6$="ON" THEN LPRINT "SUBSCRIPT" 1360 IF A7$="ON" THEN LPRINT "UNDERLINE" 1370 IF A8$="ON" THEN LPRINT "ITALICS" 1380 PRINT CHR$(26):PRINT 1390 INPUT "DO YOU WANT TO EXIT TO CP/M"; S$ 1400 IF S$<>"Y" THEN 1420 1410 LPRINT CHR$(12): SYSTEM 1420 PRINT:PRINT "EXIT FROM PROGRAM" 1430 END TO EXIT TO CP/M"; S$ 1400 IF S$<>"Y" THEN 1420 1410 LPRINT CHR$(12): SYSTEM 1420 PRINT:PRINT "EXIT0 PRINT "Sets line spacing in 1/216ths of an inch." 1220 PRINT "3/216= 1/72; 21/216= 7/72; 27/216=1/8" 1230 INPUT "Enter a number between 1 and 255";S 1240 IF S=0 THEN PRINT "ZERO SPACING IS NOT POSSIBLE":GOTO 1230 1250 IF S>0 AND S<10 THEN D5$=" "+STR$(S) 1260 IF S>9 AND S<100 THEN D5$=STR$(S) 1270 IF S>99 THEN D5$=RIGHT$(STR$(S+1000),3) 1280 LPRINT CHR$(27)"3"CHR$(S);:GOTO 750 1290 ' 1300 IF A1$="ON" THEN LPRINT "COMPRESSED" 1310 IF A2$="ON" THEN LPRINT "DOUBLE WIDTH" 1320 IF A3$="ON" THEN LPRINT "DOUBLE STRIKE" 1330 IF A4$="ON" THEN LPRINT "EMPHASIZED" 1340 IF A5$="ON" THEN LPRINT "SUPERSCRIPT" 1350 IF A6$="ON" THEN LPRINT "SUBSCRIPT" 1360 IF A7$="ON" THEN LPRINT "UNDERLINE" 1370 IF A8$="ON" THEN LPRINT "ITALICS" 1380 PRINT CHR$(26):PRINT 1390 INPUT "DO YOU WANT TO EXIT TO CP/M"; S$ 1400 IF S$<>"Y" THEN 1420 1410 LPRINT CHR$(12): SYSTEM 1420 PRINT:PRINT "EXIT MBASIC PROGRAM TO CONFIGURE THE EPSON PRINTER by Steve Cutter and Pat Watters Thi progra make i possibl t choos severa differen prin type and/o pag format befor printin document Th menu contai prompt tha ar bug-fre an self-explanatory Th printe wil 'remember th instruction tha thi progra give i an wil continu t prin i th chose forma unti give differen instructions o unti th power is turned off. Th sourc cod i eas t rea an follow an ca easil b change t sen differen printe code for different printers. Th progra ma b copie o altered bu i no t be sold. Steve & Pat September, 1983 I+"6# x+:!]ÀI=Iq!C%'!Z!'!Z!)!!lZ!)!!)!!Z!)!!mZ!)!'!'!Z!!)Z!)!!Z)!!Z!)!!(Z!)!'!'! '!'!s'!'!6'!'!'!'!'!z'!K'!'!'!'!'!o'!'!7ͪ!3F! ͏ E !/͂!͏ A !+͂!͏ = !'͂!͏ 9 !#͂!͏ 5 !͂!͏ 1 !͂!͏ - !͂!+͏ ) !͂!=͏ %, E'! Z!!Z!)!!RZ!)!! Z!)!!Z!)!Ëý'! Z!!Z!)!!RZ!)!! Z!)!͍"!'!'!'!'!~'!'!o'!'!Dͪ!3F!͏E!@͂!>͏!<͂!P͏!8͂!b͏!4͂!t͏,E'! Z!!Z!)!!RZ!)!! Z!)!!Z!)! '! Z!!Z!)!!RZ!)!! Z!)!͍"'! '!'! '! '!'!o'!'!] ͪ!3F!͏E!Y ͂!u͏!U ͂!͏!Q ͂!͏!M ͂!͏,E'! Z!!Z!)!!RZ!)!! Z!)!!Z!)!A+'! Z!!Z!)!!RZ!)!! Z!)!͍"'! '!'! '! '!'!o'!'! ͪ!3F!#͏&E#!Y ͂!͏& #!U ͂!͏& #! ͂!͏& #! ͂!͏& ,&E&'! Z!!Z!)!!RZ!)!! Z!)!!Z!)!xb'! Z!!Z!)!!RZ!)!! Z!)!͍".'!= '!͏*'! '! ,͍**ü'! '!Y '! ,͍**'! '!'!o'!'! ͪ!3F!.͏1E.!#͂!>͏1.!͂!P͏11k.!͂!k͏11.! ͂!}͏1.!͂!͏11.! ͂!͏1,1E'! Z!!Z!)!!RZ!)!! Z!)!!Z!)! ͏5*1 '! Z!!Z!)!!RZ!)!! Z!)!͍"5!1͕!͕|g}o!͕|g}oͅ9!1͕|g}o}o|g|ʡ !9͕}o|gͅ9=!Z!! )!! ͕"EZ!)!!Z!)!! )!!9͕Z!)!!Z!)!!+)!*EZ!)!!Z!)!!&͕Z!)!'!'!'!H '!!PC%LK P R I N T E R I S S E T - R E A D Y F O R P R I N T I N G  ! j 17 10; Awaiting your input for C H A R A C T E R P I T C H : 6 For 17.14 characters per inch, type 17 6# For 12 characters per inch, type 12 6\ For 10 characters per inch, type 10 6 For 8.57 characters per inch, type 8 6 For 6 characters per inch, type 6 6 For 5 characters per inch, type 5 B@ The available C H A R A C T E R P I T C H E S are as follows: I i3 Awaiting your input for P R I N T S T Y L E : & For italic style type I & For regular style type R 8 The available P R I N T S T Y L E S are as follows:P XT xX R\ r7` Awaiting your input for P R I N T D E N S I T Y : + For extra-dark density type X + For regular density type R > The available P R I N T D E N S I T I E S are as follows:7L;l?DCd7G Awaiting your input for P R I N T Q U A L I T Y : ' For letter quality type L ' For draft quality type D = The available P R I N T Q U A L I T I E S are as follows:1298"6&5*4.3226 5: Awaiting your input for L I N E S P A C I N G : Lr Use the <- key to make corrections; follow your selection by hitting ENTER , For 12 lines per inch, type 12 , For 9 lines per inch, type 9 , For 8 lines per inch, type 8 ,N For 6 lines per inch, type 6 ,} For 5 lines per inch, type 5 , For 4 lines per inch, type 4 , For 3 lines per inch, type 3 ,  For 2 lines per inch, type 2 :9 The available L I N E S P A C I N G S are as follows:Bv appear below, by typing a single character chosen from each menu.N an Epson FX-80 printer. You choose the desired attributes from menus whichN  This program lets you set LINE SPACING, PRINT QUALITY and CHARACTER PITCH onF] Developed by Alan T. Chattaway, Daybreak Productions, Canada <P R I N T S E T - Print Size Setter for FX-80 Printers  @PTF`@X,XXF[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 Í~##~ODM*"!*##"!w>22*^#V"##^#V" 2!!!""!c"`6#6P>2g>2f>2ë͇́_PRINTSETBASRELCRFPRN. FËÌ!9".͖ !͖ʚ!q!3!R"l!O"n͖|> /6#s#r#=>2(>2+>2*2-!!":!$\"0>&22ͦ$6#}|a% STO͌*:.. . ........#*H|:E‡*C|ʇ͍͖  s#r͖  {w#6"F*.*C>2E !9N#F͖~#~ҿ~+~#~ڿ+^#V###Ý###Ý|~#fo!a% Internal Error - No Line Number !͖~#na% at line͍!Ì>U<:N$U<:01N6}_|W!d͒2~#fo>a% at address|ͅ%}ͅ%Ì> 1> 1~#*͒2~#foIkInput Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erro PRINT:N#"!9""y2*8|*P!"HA~#*i͆2:p~ʊ''"i@L&*3*3*3*3Y]'*3Y%*3*3*i͆2}~#"i, :p~!"H~,"•#"~ʩʩ# ˜"¯#"ix" +~ ʹyͼ#Ya%?Redo from Start *#!F*:O*+~+* +w 5++~#fo "!5*D~2E#~#^#VS%++#0:i+++"y=*">:=2|=*y= G:?C ND2=2=2=2=2=2=2=<2=2=Ců2x=E.>ͷE#> šD>2x=!=ͫE> 2#>2+>2">y,2=D:x=2=E4>:=D1>ͷE#>:">2~= 2}=D:x=@2x=!=ͫEy=7E 7`"ͷE">E 7!=ͫE:x=!=܋E!=:=FE=1ͩûͩûͩûͩͭûͩͩͩͩBͩËͩËͩËͩBË33"3H~# x2%:[²͂1͹)ͭ#<~*S1#͹)~- S1#4>2%:[²F#~#fox͂yp~#S1dy#͂>"S1G:_x͂1*`+~<ʮ=ʮ###~®*V1!-*\*`~=/<=> S1͂>,S1W*`#^  += :c= 1z{%{_!c"`!"82[S!f"`!"82[S!^~6#w~!ss%Njͺi&: G:++++:X^#V#d"*::^#4:^#V#^ "~2"ͩ**:2:[2:v̓e88f98̓66'5 4͒2~#fo^#V#^#V#>2^#V#>232^#V#32ß&22&)))͖>!>!>!>!>!>^#V#^#V#B>3>3>3>3>3>^#V#^#V#aM Gͩ ]l Gͩ ʀ~#foÂ##F:2pͩͩäͩ[2&2|/ͩͩø:p( !67:p+ !e8:323:3G Q :3 ! |/g}/o7:3Q !3P ͩ G !ͺ,:3goW*3|7gm :3m +>| |/g}/oڅ !ښ G|ʖ Í o& Gȯ|g}oÝ ͳ > ~+~?~ +# + ͖ͩ# !~##++d$>͗2+V+^+!+r+sͮ$ͩ ~#ͩ/T#J!J!##~#~#fo͗2ͩ|/!9>ͼ#>É!>É!>É!>É!>É!>͜!ʘ!~#fo##GN!y!#~#fo~#fo!#! ·! y!y<.!)!)##K7!!"!!!"$"" "#"""~"""+_!!40"5*!"!~#N#F#p"J" ͒23"yxU" 3"+++6@#yw#xw+++6###!!~6ځ"͖"0""*!#~#~0"ͺ&!*!"!~#^#V#""͒2ã"|"ã"++~_w#~Ww#ã"͖"*!DM~#^#V#:#""+z$+{$##{z~#q#p_"y/#x/#DM"~#/#"YP+++"!6@###{_zW+r+sɷʉ#*!|g#ͺ) "^#V+"!w#s#r+++r+s##!##*?%{z*A%?ҫ#}|~# ±#yGT#x͗2GT#x#N#F& #͖#d$î$*?%*A%ͥ2$$ $d$ͮ$####9$a% during G.C. !9$a% !a% Internal Error - String Space Corrup#N#F*!yxک$*!yxҩ$++`i+V+^ͥ2.$##6+6+~6  >@++*!"!s#r+"*!#~_#~W$ͺ5r+s##6"!###!!~#fo$ͥ2$<*!"!*!}o|g6@#s#r#6"!*A%*?%"!}w>#w##ͥ2&%++6+6! "|/}/!dwɧ~1#=U%g%~1#g%G~#ʃ%#u%++͎%0:ڙ%1OyO!i5OM>.!rN#G.xʮO}!iG!/%*3}/o|/g#"3|&F:%!3~wɯ23!/&7&*3&F:!/&ͥ7>>'~ #!& %!3?&>!332F&# E&!36!3&'Ͷ3>>h&>|}+!''5&Ͳ:+6!3>h723!'8!''5!3'5~_#~W#~O;h8!.e8:&ɇ<o&&F:*3*3&"3`i"3!3^#V#N#F#!'f9;x{;!36Ϳ:wg>G<<*':%Gw#*'%'?'!3&'3!/3!/'*3||2%͹&ajû' L}%&/>2%`h̼'~&h(~%ʭ(#ʾ(!ʿ(dh(D((/2//m)(_{_((ƒ(%!/!&'!/ (((/!&!]'((/(%&!/&&=!/&r&DGh*"3`i"3#~+*-ʷ*0OxG*#~ž*`xE*y ҉*>2%*|҉**É*"3`i"3&#W,:%++!+!+͓-60&ͺ-+~00+.&b+!/>"w#6+S+6-/</ U+:#p#w#6!%#z+چ,͋-zg-R.{p&=g-)ʘ+p#6!%#:%~ ʝ+*ʝ+++/-+_:0{0+#/+++w+Þ++6%ڍ,,.U&,͹)+6%͹&+',8,_xg-~-ͺ-w-Ħ-Å+_y(C,(E,{_xa,g-~-r,g-yͪ-Og-GOͺ-},*%=g-PÎ+&ѯʓ,'7,y(OzWO(,,/<-=60#h-w-ͦ-60#=s-{ ͦ-/><&-><&p#=-!3&.ͳ&>'&.?ͦ-&/{_#zW#yO++*.͡&#&p#.>X..>ͦ-N#F#*3/}o|gk."3p#=X.ͦ-w1_cƤ~@zZrN vH Tʚ;@B''d #~: / / /0?<=:%./7-++//OM/HM/+Y/b/ͼ'H#ʎ/h/ͺ,M!z/x/}0?)))صoz/M!͠/ڞ/}/0? ڶ/? ))))صoà/a{ ]'!/:3:3í&:%2%2%ͺ,ͺ,!"8!i"i0:E'0a%?'0pM1[0:1>\21A0&0"1+U0~"1i0+"1i0"11!i21l0M1O-0:1ʂ0>\"121y0%17 1 0 ¦0'00%1'00'0"1> "1>N00>#U0061!i71i0 i0x<>0yq#"1 i0> "1M11 i0l0:E1wEÌ1>^"1@"11~ F1> "1"1#71R*` j1#~+ S1~=1*`!c"`S1"`> S1> S1:f=2> > *Q1^#V#&2ɷ!3B2!3=23B23B2w#w#w#w#m2mEh2>3n2>3S2 ~#=r2!S2#~ ʅ2 ʅ2Ʌo$ɧGw#›2{zpop8pFnInnkn{#nn>nqqq\opJqqqquq`qqqqq5r8qqoo$srrp0t_ts~sss.s's!spsksrrrrrrs sssszsUsNh7623:36F+N+=4!35!3>q#p#=5!3'5"2444*27ʺ;:3ʺ;!3N#F;9Q7qd5Gܖ6͔7x M5D56!3p7\5j0 TeB׳]h!I.k 4;ͥ7ë54͜7!3'5\!3q#~++w+q5<DNn"~`35zr1{r1h!I748 8\;B8;08!36Ϳ:g>G<|ԛ:!>8ak;Q89Q8wOk8X:8;ʉ:<ȯG;9"3y23Fo͠:ͩ:!D*3:3O934ʉ;29B9g.*3:3Oz9B9g.*3:3(9x<=Y9{_zWxG)yOHGÚ;X:i9;;<;9y+F+F+Fw`h|ʶ9gyҚ9:3O|g}oxG-|Ž9}‰9:ElaOÈ9!3~Gx9ƀʹ;wͲ:w+ɷ;ú;;x{;!36Ϳ:wg9z9 >G<|Ԭ;{>23:/.< -<7>{_zW}o|g=$<|g}oVOk8X:8;ʉ:<ȯG;9"3y23Fo͠:ͩ:!D P R I N T S E T . C O M ======================= This program runs on the Osborne 1 computer and allows the user to set the Epson FX-80 printer to any desired: * line spacing - lines per inch, vertically. * print quality - draft- or letter-quality. * print density - regular or extra-dark. * pitch - characters per inch, along the line. * character set - standard or italic. The program provides very simple menus for each choice; you must make a valid choice from each menu, to go on to the next! When "letter-quality" is used, the FX-80 disables some pitches, so the menu will not offer them. Similarly, using 6 or 12 pitch disables "letter-quality"; you get "extra dark" instead. For reference: the settings you get when you first turn on the FX-80 are 10 pitch, 6 lines per inch and draft quality. Alan T. Chattaway 1984-Jan-21 uns on the Osborne 1 computer and allows the user to set the Epson FX-80 printer to any desired: * line spacing - lines per inch, vertically. * print quality - draft- or letter-quality. * print density - regular or extra-dark. * pitch - characters per inch, along the line. * character set - standard or italic. The program provides very simple menus for each choice; you must make a valid choice from each menu, to go on to the next! When "letter-quality" is used, the FX-80 disables some pitches, so the menu will not offer them. Similarly, using 6 or 12 pitch disables "letter-quality"; you get "extra dark" instead. For reference: the settings you get when you first turn on the FX-80 are 10 pi100 WIDTH 255 110 PRINT CHR$(26) 'clear screen 120 PRINT " "+CHR$(27)+CHR$(&H6C)+"P R I N T S E T - Print Size Setter for FX-80 Printers"+CHR$(27)+CHR$(&H6D):PRINT 130 PRINT CHR$(27)+CHR$(&H29)+" Developed by Alan T. Chattaway, Daybreak Productions, Canada "+CHR$(27)+CHR$(&H28):PRINT 140 PRINT " This program lets you set LINE SPACING, PRINT QUALITY and CHARACTER PITCH on" 150 PRINT " an Epson FX-80 printer. You choose the desired attributes from menus which" 160 PRINT " appear below, by typing a single character chosen from each menu.":PRINT 170 PRINT " The available L I N E S P A C I N G S are as follows:":PRINT 180 PRINT " For 2 lines per inch, type 2 " 190 PRINT " For 3 lines per inch, type 3 " 200 PRINT " For 4 lines per inch, type 4 " 210 PRINT " For 5 lines per inch, type 5 " 220 PRINT " For 6 lines per inch, type 6 " 230 PRINT " For 8 lines per inch, type 8 " 240 PRINT "  For 9 lines per inch, type 9 " 250 PRINT " For 12 lines per inch, type 12 ":PRINT 260 PRINT " Use the <- key to make corrections; follow your selection by hitting ENTER ":PRINT 270 PRINT " Awaiting your input for L I N E S P A C I N G : ";:INPUT " ",RAWLINESPACE$ 280 LINESPACE=99 290 IF RAWLINESPACE$="2" THEN LINESPACE=108 300 IF RAWLINESPACE$="3" THEN LINESPACE=72 310 IF RAWLINESPACE$="4" THEN LINESPACE=54 320 IF RAWLINESPACE$="5" THEN LINESPACE=43 330 IF RAWLINESPACE$="6" THEN LINESPACE=36 340 IF RAWLINESPACE$="8" THEN LINESPACE=27 350 IF RAWLINESPACE$="9" THEN LINESPACE=24 360 IF RAWLINESPACE$="12" THEN LINESPACE=18 370 IF LINESPACE=99 THEN PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB)+CHR$(7):GOTO 270'ask again 380 FOR BACKUP=1 TO 14:PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB):NEXT BACKUP'clear bottom half of screen 390 PRINT " The available P R I N T Q U A L I T I E S are as follows:":PRINT 400 PRINT " For draft quality type D " 410 PRINT "  For letter quality type L ":PRINT 420 PRINT " Use the <- key to make corrections; follow your selection by hitting ENTER ":PRINT 430 PRINT " Awaiting your input for P R I N T Q U A L I T Y : ";:INPUT " ",RAWQUALITY$ 440 QUALITYMASK=99 450 IF RAWQUALITY$="d" THEN QUALITYMASK=0 460 IF RAWQUALITY$="D" THEN QUALITYMASK=0 470 IF RAWQUALITY$="l" THEN QUALITYMASK=8 480 IF RAWQUALITY$="L" THEN QUALITYMASK=8 490 IF QUALITYMASK=99 THEN PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB)+CHR$(7):GOTO 430'ask again 500 FOR BACKUP=1 TO 8:PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB):NEXT BACKUP'clear bottom half of screen 510 PRINT " The available P R I N T D E N S I T I E S are as follows:":PRINT 520 PRINT " For regular density type R " 530 PRINT " For extra-dark density type X ":PRINT 540 PRINT " Use the <- key to make corrections; follow your selection by hitting ENTER ":PRINT 550 PRINT " Awaiting your input for P R I N T D E N S I T Y : ";:INPUT " ",RAWDENSITY$  560 DENSITYMASK=99 570 IF RAWDENSITY$="r" THEN DENSITYMASK=0 580 IF RAWDENSITY$="R" THEN DENSITYMASK=0 590 IF RAWDENSITY$="x" THEN DENSITYMASK=16 600 IF RAWDENSITY$="X" THEN DENSITYMASK=16 610 IF DENSITYMASK=99 THEN PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB)+CHR$(7):GOTO 550'ask again 620 FOR BACKUP=1 TO 8:PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB):NEXT BACKUP'clear bottom half of screen 630 PRINT " The available P R I N T S T Y L E S are as follows:":PRINT 640 PRINT " For regular style type R " 650 PRINT " For italic style type I ":PRINT 660 PRINT " Use the <- key to make corrections; follow your selection by hitting ENTER ":PRINT 670 PRINT " Awaiting your input for P R I N T S T Y L E : ";:INPUT " ",RAWSTYLE$ 680 STYLE=99 690 IF RAWSTYLE$="r" THEN STYLE=53 700 IF RAWSTYLE$="R" THEN STYLE=53 710 IF RAWSTYLE$="i" THEN STYLE=52 720 IF RAWSTYLE$="I" THEN STYLE=52 730 IF STYLE=99 THEN PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB)+CHR$(7):GOTO 670'ask again 740 FOR BACKUP=1 TO 8:PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB):NEXT BACKUP'clear bottom half of screen 750 PRINT " The available C H A R A C T E R P I T C H E S are as follows:":PRINT 760 LINES12=12 770 PRINT " For 5 characters per inch, type 5 " 780 PRINT " For 6 characters per inch, type 6 " 790 IF QUALITYMASK=8 THEN LINES12=LINES12-1: GOTO 810 800 PRINT " For 8.57 characters per inch, type 8 " 810 PRINT " For 10 characters per inch, type 10 " 820 PRINT " For 12 characters per inch, type 12 " 830 IF QUALITYMASK=8 THEN LINES12=LINES12-1: GOTO 850 840 PRINT " For 17.14 characters per inch, type 17 " 850 PRINT:PRINT " Use the <- key to make corrections; follow your selection by hitting ENTER ":PRINT 860 PRINT " Awaiting your input for C H A R A C T E R P I T C H : ";:INPUT " ",RAWCHARPITCH$ 870 MODEMASK=99 880 IF RAWCHARPITCH$="5" THEN MODEMASK=32 890 IF RAWCHARPITCH$="6" THEN MODEMASK=33 900 IF QUALITYMASK=8 THEN 920 910 IF RAWCHARPITCH$="8" THEN MODEMASK=36 920 IF RAWCHARPITCH$="10" THEN MODEMASK=0 930 IF RAWCHARPITCH$="12" THEN MODEMASK=1 940 IF QUALITYMASK=8 THEN 960 950 IF RAWCHARPITCH$="17" THEN MODEMASK=4 960 IF MODEMASK=99 THEN PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB)+CHR$(7):GOTO 860'ask again 970 FOR BACKUP=1 TO LINES12:PRINT CHR$(&HB)+CHR$(27)+CHR$(&H52)+CHR$(&HB):NEXT BACKUP'clear bottom half of screen 980 PRINTMASK=MODEMASK OR QUALITYMASK OR DENSITYMASK 990 IF ((MODEMASK AND 1) AND (QUALITYMASK=8)) THEN PRINTMASK=PRINTMASK OR 16 1000 LPRINT CHR$(27)+"j"+CHR$(LINESPACE)+CHR$(27)+"!"+CHR$(PRINTMASK)+CHR$(27)+"3"+CHR$(LINESPACE)+CHR$(27)+CHR$(STYLE) 1010 PRINT:PRINT:PRINT " P R I N T E R I S S E T - R E A D Y F O R P R I N T I N G " : PRINT 1020 WIDTH 80  1010 PRINT:PRINT:PRINT " P R I N T E R I S S E TT C H : ";:INPUT " ",RAWCHARPITCH$ 870 MODEMASK=99 880 IF RAWCHARPITCH$="5" THEN MODEMASK=32 890 IF RAWCHARPITCH$="6" THEN M8FG2FH2FH2EFG2FH20 $ MX-80 Printer options v1.0 10/11/82 0 = Reset to default parameters 1 = 10 CPI, Normal 2 = 10 CPI, Double Strike 3 = 16.5 CPI, Normal 4 = 16.5 CPI, Double Strike 5 = Emphasized 8 = vertical lines per inch Select: $"15ͤ!é͒0!ʩ1!'ʩ2!ʩ3! ʩ4!ʩ5!ʩ8!/ʩK2ͤʉ ʉ ~K_#éEPSNPRTRASM\@ABCDEFGHIJKEPSON BAS/LMNOPQPRINT BAS1RSTUVWXPRINT DOCYPRINTSETCOMwZ[\]^_`abcdefghPRINTSETDOC ijPRINTSETBAS/klmnopSETMX $$$TITLE: SETMX BY : IRV HOFF DATE : 10 OCT 82 TOPIC: PRESETTING EPSON MX-80 PRINTER OPTIONS This simple program allows EPSON MX-80 users to preset a number of options. The printer can then be satisfactorily used with the TYPE command (via CTL-P) or other normal listing programs. These options include: 10 or 16.5 chars. per inch 6 or 8 vertical lines per inch single strike or double strike emphasized print reset to normal default values To use, turn on the Epson printer and then call up SETMX.COM. It will display various options on its menu. Several selections can be made at the same time or a number reentered if mis-typed. If RET is immediately typed it defaults to a standard configuration. Default is: 10 characters per inch 6 vertical lines per inch single strike print After the appropriate answers have been typed, hit RET to leave the program (or CTL-C). The printer now has the options you selected. The TYPE command (via CTL-P) may then be used or any other LIST routine desired. Obviously some options were not included. The SETMX.ASM file can be edited and then reassembled. (ASM.COM works fine for this purpose.) Even if the operator is not too familiar with using source code, there are enough examples already included to make the job of adding some ad- ditional feature fairly simple. Irv Hoff Los Altos Hill, CA 94022 e or a number reentered if mis-typed. If RET is immediately typed it defaults to a standard configuration. Default is: 10 characters per inch 6 vertical lines per inch single strik; SETMX v1.0 EPSON MX-80 PRINTER UTILITY 10/10/82 ; ; by ; IRVIN M. HOFF ; LOS ALTOS HILLS, CA 94022 ; ; ; This program sets the EPSON MX-80 printer to various ; configurations such as: ; ; 10 CPI or 16.5 CPI ; Normal or Double Strike ; 6 or 8 vertical lines per inch ; Emphasized print ; ; There are numerous other selections that could be added. ; This program should give you the background to include ; other options, if desired, yourself. These seemed the ; most important. ; ; ; ; COMMAND CHARACTERS FOR THE EPSON PRINTER: ; ; 17 CTL-Q Enable printer to receive data ; 27,'0' ESC 0 8 vertical lines per inch ; 27,'2' ESC 2 6 vertical lines per inch (Normal) ; 27,'E' ESC E Emphasized print ; 27,'F' ESC F Non-emphasized print (Normal) ; 27,'G' ESC G Double-strike print ; 27,'H' ESC H Single-strike print (Normal) ; 27,14 ESC CTL-N Double-width print on ; 27,20 ESC CTL-T Double-width print off (Normal) ; 15 or 27,15 ESC CTL-O 16.5 Characters per inch (Compressed) ; 18 or 27,18 ESC CTL-R 10 characters per inch (Normal) ; ; + + + + + + + + + + + + + + + + + + ; ; ORG 100H ; ; JMP START ;JUMP INTO PROGRAM ; ; ; GENERAL EQU'S ; BDOS EQU 5 ;SYSTEM CALL ENTRY POINT CONIN EQU 1 ;GET KEYBOARD CHARACTER CR EQU 0DH ;CONTROL-M FOR CARRIAGE RETURN CONOUT EQU 2 ;CRT OUTPUT ROUTINE CTLC EQU 3 ;CONTROL-C TO TERMINATE ESC EQU 1BH ;ESCAPE CHARACTER LF EQU 0AH ;CONTROL-J FOR LINE FEED LIST EQU 5 ;LIST DEVICE OUTPUT STRING EQU 9  ;PRINT STRING ON CONSOLE TAB EQU 09H ;CONTROL-I FOR HORIZONTAOL TAB ;..... ; ; ; DATA STRINGS TO CONTROL EPSON PRINTER ; CD: DB 15,ESC,'F',ESC,'G',ESC,'2',0 ;16.5 CPI, DOUBLE STRIKE CN: DB 15,ESC,'F',ESC,'H',ESC,'2',0 ;16.5 CPI, NORMAL DEFLT: DB 17,18,ESC,'F',ESC,'H',ESC,'2',0 ;DEFAULT PARAMETERS EMPH: DB ESC,'E',0 ;EMPHASIZED UCD: DB 18,ESC,'F',ESC,'G',ESC,'2',0 ;10 CPI, DOUBLE STRIKE UCN: DB 18,ESC,'F',ESC,'H',ESC,'2',0 ;10 CPI, NORMAL EIGHT: DB ESC,'0',0 ;8 LINES PER INCH TURNUP: DB CR,LF,'$' ;..... ; ; ; SIGN-ON MESSAGE ; SOM: DB CR,LF,LF,LF,LF,LF,LF,LF DB TAB,TAB,'MX-80 Printer options v1.0 10/11/82' DB CR,LF,LF,TAB,TAB,'0 = Reset to default parameters' DB CR,LF,LF,TAB,TAB,'1 = 10 CPI, Normal' DB CR,LF,TAB,TAB,'2 = 10 CPI, Double Strike' DB CR,LF,TAB,TAB,'3 = 16.5 CPI, Normal' DB CR,LF,TAB,TAB,'4 = 16.5 CPI, Double Strike' DB CR,LF,LF,TAB,TAB,'5 = Emphasized' DB CR,LF,TAB,TAB,'8 = vertical lines per inch' DB CR,LF,LF,LF,LF,LF,LF,TAB,'Select: ' DB '$' ;..... ; ; ;**********************************************************************; ; ; ; PROGRAM STARTS HERE ; ; ; ;**********************************************************************; ; ; START: POP H ;RETURN ADDRESS TO 'CCP' SHLD EXIT1+1 ;STORE LXI SP,STACK ;SET UP STACK LXI D,SOM ;SIGNON MESSAGE CALL DSTRNG ;SHOW ON THE CRT LXI H,DEFLT ;SET THE PRINTER TO NORMAL CONDITIONS JMP PSTRNG ;... ; ; SELECT: CALL INPUT ;GET A CHAR. ; CPI '0' ;RESET TO DEFAULT PARAMETERS LXI H,DEFLT JZ PSTRNG ; CPI '1' LXI H,UCN ;10 CPI, NORMAL JZ PSTRNG ; CPI '2' LXI H,UCD ;10 CPI, DOUBLE STRIKE JZ PSTRNG ; CPI '3' LXI H,CN ;16.5 CPI, NORMAL JZ PSTRNG ; CPI '4' LXI H,CD ;16.5 CPI, DOUBLE STRIKE JZ PSTRNG ; CPI '5' LXI H,EMPH ;EMPHASIZED JZ PSTRNG ; CPI '8' LXI H,EIGHT ;GO TO 8 VERTICAL LINES PER INCH JZ PSTRNG ; JMP SELECT ;IF NONE OF THESE, ASK AGAIN ;..... ; ; ;======================================================================; ; ; ; ROUTINES START HERE ; ; ; ;======================================================================; ; ; EXIT: LXI D,TURNUP ;TURN UP SOME EXTRA LINES CALL DSTRNG ;DISPLAY ON THE CRT ; EXIT1: JMP 0 ;FILLED BY 'START' FOR RETURN TO 'CCP' ;..... ; ; ; GET A KEYBOARD CHARACTER ; INPUT: MVI C,CONIN ;KEYBOARD ROUTINE CALL BDOS ANI 7FH ;STRIP AWAY ANY PARITY CPI CTLC ;CONTROL-C? JZ EXIT ;IF YES, ALL FINISHED CPI CR ;CONTROL-M FOR RETURN? JZ EXIT ;IF YES, ALL FINISHED RET ;..... ; ; ; DISPLAY A STRING ON THE CRT ; DSTRNG: MVI C,STRING ;CONSOLE STRING ROUTINE JMP BDOS ;SEND TO THE CRT ;..... ; ; ; PRINT A STRING OF CHARS. ON THE EPSON MX-80 ; PSTRNG: MOV A,M ;GET THE CHARACTER IN THE STRING ORA A ;SEE IF FINISHED YET JZ SELECT ;GET ANOTHER ANSWER IF FINISHED ; PUSH H ;SAVE THE ADDRESS IN THE STRING MVI C,LIST ;PRINTER ROUTINE MOV E,A ;PUT THE CHAR. INTO 'E' REG. CALL BDOS ;SEND TO THE PRINTER POP H ;BACK TO THE STRING ADDRESS INX H ;NEXT LOCATION JMP PSTRNG ;DO THE NEXT ONE ;..... ; ; ; STACK AREA ; DS 20H ;ALLOW SPACE FOR STACK ; STACK DS 0 ; END I CR ;CONTROL-M FOR RETURN? JZ EXIT ;IF YES, ALL FINISHED RET ;..... ; ; ; DISPLAY A STRING ON THE CRT ; DSTRNG: MVI C,STRING ;CONSOLE STRING ROUTINE JMP BDOS ;SEND TO THE CRT ;..... ; ; ; PRINT A STRING OF CHARS. ON THE EPSON MX-80 ; PSTRNG: MOV A,M ;GET THE CHARACTER IN THE STRING ORA A ;SEE IF FINISHED YET JZ SELECT ;GET ANOTHER ANSWER IF FINISHED ; PUSH1}  [!IAkak!MBkbk!QCkck!SDkdk!]Ekek!`Fkfk!cGkgk!fHkhk!Ikik!Jkjk!UKkkk!YLklk!iMkmk!mNknk!Sksk!Tktk!Ukuk!Vkvk!yWkwk!}Xkxk!qYkyk!uZkzk!6k!8k!9k!Rkrk b $ ^#~$ k GEMINI-15 PRINTER FUNCTIONS Press RETURN to terminate A = Beeper OFF B = Beeper ON C = Compressed D = Non-compressed E = Emphasized F = Non-emphasized G = Double struck H = Single struck I = Italics font J = Regular font K = Pica pitch L = Elite pitch M = Bi-directional print N = Uni-directional print S = Paper-end sensor ON T = Paper-end sensor OFF U = Underlining ON V = Underlining OFF W = Double-wide pitch X = Single-wide pitch Y = Slashed zeroes Z = Unslashed zeroes 6 = 6 lines per inch 8 = 8 lines per inch 9 = 10.2 lines per inch R = Reset printer to default settings Select ==> $Y$Y$$$B$B$E$F$G$H$U$U$V$V$W$W$0$1$2$4$5$8$9$@$-$-$ zeroes yWkwk!}Xkxk!qYkyk!uZkzk!6k!8k!9k!Rkrk b $ ^#~$ k GEMINI-15 PRINTER FUNCTIONS Press RETURN to terminate A = Beeper OFF B = Beeper ON C = Compressed D = Non-compressed E = Emphasized F = Non-emphasized G = Double struck H = Single struck I = Italics font J = Regular font K = Pica pitch L = Elite pitch M = Bi-directional print N = Uni-directional print S = Paper-end sensor ON T = Paper-end sensor OFF U = Underlining ON V = Underlining OFF W = Double-wide pitch X = Single-wide pitch Y = Slashed zeroes Z = Unslashed zeroes 6 = 6 lines per inch 8 = 8 lines per inch 9 = 10; ***** GEMINI.ASM ***** ; ; Written by Jim Schenkel, 2/10/83 ; ; Adapted from EPSET2.ASM, written ; by Kent Walker, 10/82 and ; corrected by Jim Woolley, 11/82 ; ; 8080 ASSEMBLER CODE ; USING CP/M BDOS FUNCTIONS ; ; THIS PROGRAM IS DESIGNED TO SET ; GEMINI-15 DOT MATRIX PRINTER ; PARAMETERS VIA KEYBOARD INPUT. ; ; A TABLE OF OPTIONS IS PRESENTED ON THE MONITOR. ; INPUT IS TERMINATED BY A CARRIAGE RETURN. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++ ORG 100H BDOS EQU 0005H INCHR EQU 1 ;KEYBOARD INPUT FUNCTION LSTCHR EQU 5 ;LIST DEVICE FUNCTION CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED TAB EQU 09H ;TAB CHARACTER CLRSCR EQU 1AH ;CLEAR SCREEN - CTRL Z ESC EQU 1BH ;ESCAPE CODE PRSTR EQU 9 ;PRINT STRING FUNCTION BOOT EQU 0 ;WARM BOOT LXI SP,STACK ;SET UP NEW STACK LXI D,MESAGE ;POINT TO MESSAGE MVI C,PRSTR ;STRING PRINT FUNCTION CALL BDOS LOOP MVI C,INCHR CALL BDOS CPI CR ;CARRIAGE RETURN ENDS INPUT JZ EXIT ;KEYBOARD DISPATCH TABLE LXI H,BELOFF CPI 'A' JZ LIST CPI 'a' JZ LIST LXI H,BELON CPI 'B' JZ LIST CPI 'b' JZ LIST LXI H,COMP CPI 'C' JZ LIST CPI 'c' JZ LIST LXI H,UNCOMP CPI 'D' JZ LIST CPI 'd' JZ LIST LXI H,EMPH CPI 'E' JZ LIST CPI 'e' JZ LIST LXI H,NOEMPH CPI 'F' JZ LIST CPI 'f' JZ LIST LXI H,DBLSTR CPI 'G' JZ LIST CPI 'g' JZ LIST LXI H,SNGLSTR CPI 'H' JZ LIST CPI 'h' JZ LIST LXI H,ITALIC CPI 'I' JZ LIST CPI 'i' JZ LIST LXI H,NOITAL CPI 'J' JZ LIST CPI 'j' JZ LIST LXI H,PICA CPI 'K' JZ LIST CPI 'k' JZ LIST LXI H,ELITE CPI 'L' JZ LIST CPI 'l' JZ LIST LXI H,BIPRN CPI 'M' JZ LIST CPI 'm' JZ LIST LXI H,UNIPRN CPI 'N' JZ LIST CPI 'n' JZ LIST LXI H,SENSOR CPI 'S' JZ LIST CPI 's' JZ LIST LXI H,IGNSEN CPI 'T' JZ LIST CPI 't' JZ LIST LXI H,ULINE CPI 'U' JZ LIST CPI 'u' JZ LIST LXI H,NOUL CPI 'V' JZ LIST CPI 'v' JZ LIST LXI H,WIDE  CPI 'W' JZ LIST CPI 'w' JZ LIST LXI H,NARROW CPI 'X' JZ LIST CPI 'x' JZ LIST LXI H,SLASH CPI 'Y' JZ LIST CPI 'y' JZ LIST LXI H,NOSLSH CPI 'Z' JZ LIST CPI 'z' JZ LIST LXI H,SIXLPI ;TEST FOR '6' CPI '6' JZ LIST LXI H,ATELPI ;TEST FOR '8' CPI '8' JZ LIST LXI H,TENLPI ;TEST FOR '9' CPI '9' JZ LIST LXI H,RESET ;TEST FOR 'R' CPI 'R' JZ LIST CPI 'r' JZ LIST JMP LOOP EXIT CALL EXIT1 DB CR,LF,LF,'$' ;EXTRA LINES GOING OUT EXIT1 POP D MVI C,PRSTR CALL BDOS JMP BOOT ; SUBROUTINE TO OUTPUT ESCAPE CODE TO PRINTER LIST MOV E,M ;MOVE CHAR TO REG E PUSH H ;SAVE STRING POINTER MVI C,LSTCHR ;SET UP FOR LINE PRINTER CALL BDOS ;PRINT CHARACTER POP H ;RESTORE STRING POINTER INX H ;POINT TO NEXT CHAR MOV A,M ;MVVE NEXT CHAR TO REG A CPI '$' ;IS IT THE TERMINATOR ($) ? JZ LOOP ;RETURN IF YES JMP LIST ;ELSE REPEAT ; END OF SUBROUTINE ; MESSAGES MESAGE DB CLRSCR,TAB,'GEMINI-15 PRINTER FUNCTIONS' ,CR,LF DB TAB ,' Press RETURN to terminate' ,CR,LF,LF DB 'A = Beeper OFF B = Beeper ON' ,CR,LF DB 'C = Compressed D = Non-compressed' ,CR,LF DB 'E = Emphasized F = Non-emphasized' ,CR,LF DB 'G = Double struck H = Single struck' ,CR,LF DB 'I = Italics font J = Regular font' ,CR,LF DB 'K = Pica pitch L = Elite pitch' ,CR,LF DB 'M = Bi-directional print N = Uni-directional print' ,CR,LF DB 'S = Paper-end sensor ON T = Paper-end sensor OFF' ,CR,LF DB 'U = Underlining ON V = Underlining OFF' ,CR,LF DB 'W = Double-wide pitch X = Single-wide pitch' ,CR,LF DB 'Y = Slashed zeroes Z = Unslashed zeroes' ,CR,LF,LF DB '6 = 6 lines per inch' ,CR,LF DB '8 = 8 lines per inch' ,CR,LF DB '9 = 10.2 lines per inch' ,CR,LF,LF DB 'R = Reset printer to default settings',CR,LF,LF DB TAB,'Select ==> ' DB '$' ; TABLE OF PRINTER ESCAPE CODES BELOFF DB ESC,'Y',01,'$' BELON DB ESC,'Y',00,'$' COMP DB 0FH,'$' UNCOMP DB 12H,'$' PICA DB ESC,'B',01,'$' ELITE DB ESC,'B',02,'$' EMPH DB ESC,'E$' NOEMPH DB ESC,'F$' DBLSTR DB ESC,'G$' SNGLSTR DB ESC,'H$' BIPRN DB ESC,'U',00,'$' UNIPRN DB ESC,'U',01,'$' SLASH DB ESC,'V',01,'$' NOSLSH DB ESC,'V',00,'$' WIDE DB ESC,'W',01,'$' NARROW DB ESC,'W',00,'$' ATELPI DB ESC,'0$' TENLPI DB ESC,'1$' SIXLPI DB ESC,'2$' ITALIC DB ESC,'4$' NOITAL DB ESC,'5$' IGNSEN DB ESC,'8$' SENSOR DB ESC,'9$' RESET DB ESC,'@$' ULINE DB ESC,2DH,01,'$' NOUL DB ESC,2DH,00,'$' ; STACK AREA DS 10H STACK DW 0 END X = Single-wide pitch' ,CR,LF DB 'Y = Slashed zeroes Z = Unslashed zeroes' ,CR,LF,LF DB '6 = 6 lines per inch' ,CR,LF DB '8 = 8 lines per inch' ,CR,LF DB '9 = 10.2 lines per inch' ,CR,LF,LF DB 'R = Reset printer to default settings',CR,LF,LF DB TAB,'Select ==> ' DB '$' ; TABLE OF PRINTER ESCAPE CODES BELOFF DB ESC,'Y',01,'$' BELON DB ESC,' GEMSET.DOC ----- Set-Up Utility for Gemini 10 or 15X Printer 01/16/86 (c)Copyright January 17, 1986 All rights reserved Curt Edwards NOTICE: I release this program to the public domain, to be used freely and distributed among users. But under no circumstance shall it be used for profit or monetary gain. CREDITS: This program is almost a complete rewrite of the original GEMINI.ASM by Jim Schenkel on 2/10/83 found on an old FOG UTL library disk. He adapted his version from EPSET2.ASM written by, Kent Walker in 10/82 and corrected by Jim Wooley in 11/82. MODIFICATIONS: 1) Added capitialization routine to knock down the redundency of evaluating user input. 2) Added the ability to patch screen codes to pretty up the screen display. 3) Added some screen clean up routines for after a selection is made. Also added status prompts to acknowledege what function was selected. PURPOSE: This program allows setting all the availible parameters of a Gemini 10 or 15X printer from the keyboard. The user is presented with a menu of options to choose from. Please note not all combinations of options will work together some will and some won't. To be sure consult your printer manual. The program is terminated with a carriage return. PATCHING: The porgarm allows patching of your screen code to pretty up the menu. The patchs availible are, 6 bytes for reverse/half intensity video on, 6 bytes for reverse/half intensity off and 1 byte for clear screen. The following are the patch locations; Purpose Bytes Hex Address ------- ----- ----------- Clear Screen 1 0157 Video on 6 0161 Video off 6 0171 The patch locations should be easy to find as I have embeded TEXT pointers in the code. To find the locations with DDT or EDFILE just look for CLSCR-->, REVON--> and REVOFF-->, the location immediately following these pointers are the patch areas. Or if you prefer the ASM file is also included so you can just patch the source code before assembly. I also have included versions already patched for the Kaypro and Osborne-1, since that is the majority of users on my system. UPDATES: I would appreciate it if any updates or modifications could be sent to me at the following address or by modem to my system. Curt Edwards, Sysop SoftStone RCP/M FOG System #24 P.O. Box 694 Louisville, Ky 40014 (502) 241-4109 24hrs 7 days - 300/1200 baud Use and Enjoy! -----  0171 The patch locations should be easy to find as I have embeded TEXT pointers in the code. To find the locations wit;(((((((((((((((((( GEMSET.ASM )))))))))))))))))) ; 01/16/86 ; (c)Copyright January 17, 1986 ; All rights reserved ; Curt Edwards ; ; ;NOTICE: ;I release this program to the public domain, to be used ;freely and distributed among users. But under no ;circumstance shall it be used for profit or personal ;monetary gain. ; ;CREDITS: ;This program is almost a complete rewrite of the ;original GEMINI.ASM by Jim Schenkel on 2/10/83. He ;adapted his version from EPSET2.ASM written by, ;Kent Walker in 10/82 and corrected by Jim Wooley ;in 11/82. ; ;MODIFICATIONS: ; ; 1) Added capitialization routine to knock down the ; redundency on evaluating user input. ; ; 2) Added the ability to patch screen codes to pretty ; up the screen display. ; ; 3) Added some screen clean up routines for after a ; selection is made. Also added status prompts ; to acknowledege what function was selected. ; ;PURPOSE: ;This program allows setting all the availible parameters ;of a Gemini 10 or 15X printer from the keyboard. ;The user is presented a menu of options to choose ;from. The program is terminated with a carrige ;return. ; ;UPDATES: ;I would appreciate it if any updates or modifications ;could be sent to me at the following address or by modem ;to my system. ; ; Curt Edwards, Sysop ; SoftStone RCP/M FOG System #24 ; P.O. Box 694 ; Louisville, Ky 40014 ; (502) 241-4109 ; 24hrs 7 days - 300/1200 baud ; ; ;Now on with the code.... ; ;-------------------------------------------------- ;<<<<<<<<<<<<<<<<<<<< Bdos Call Equates >>>>>>>>>>> ;-------------------------------------------------- ; bdos equ 05h ;bdos boot equ 00h ;reset (warm boot) conin equ 01h ;console input conout equ 02h ;console output prints equ 09h ;print string lstchr equ 5 ;lst device function ; ;--------------------------------------------------- ;<<<<<<<<<<<<<<<<<<<< Misc Equates >>>>>>>>>>>>>>>>> ;--------------------------------------------------- ; bs equ 08h ;back space bell equ 07h ;bell cr equ 0dh ;carrige return lf equ 0ah ;line feed tab equ 09h ;tab esc equ 1bh ;escape ; ;-------------------------------------------------- ;<<<<<<<<<<<<<<<<<<<< End of Equates >>>>>>>>>>>>> ;-------------------------------------------------- ;Offical Start of program | ;-------------------------- ; org 100h jmp begin ; ;----------------------- ;Code some info in file | ;----------------------- ; coding: db 'GEMSET.ASM ' db 'Version 2.0 ' db 'By Curt Edwards ' db '(c)May 17, 1985 ' ; ;------------------------------------------- ;This is the area to patch for screen codes | ;------------------------------------------- ; db ' PATCH AREA ' db ' CLSCR->' ;Embeds ASCII pointer to bytes clscr: db 0,'$' ;for clear screen db ' REVON->' ;ASCII pointer to bytes revon: db 0,0,0,0,0,0,'$' ;for reverse or half ON db ' REVOFF->' ;ASCII pointer to bytes revoff: db 0,0,0,0,0,0,'$' ;for reverse or half OFF ; ;------------------- ;Set up Local Stack | ;------------------- ; begin: lxi h,0 ;zero hl register pair dad sp ;add the stack pointer shld oldsp ;store oldsp to restore when done lxi sp,stktop ;point to new local stack ; ;------------------------------- ;Actual working code starts here | ;-------------------------------- ; start: call cls ;clear screen call prntmenu ;print the menu getit: mvi c,conin ;get input call bdos cpi cr ;is it a carrige return jz fini ;yes then exit call case ;translate to upper case ;Let's see what they want lxi h,belon lxi d,belonm cpi 'A' jz list lxi h,beloff lxi d,beloffm cpi 'B' jz list lxi h,comp lxi d,compm cpi 'C' jz list lxi h,uncomp lxi d,uncompm cpi 'D' jz list lxi h,emph lxi d,emphm cpi 'E' jz list lxi h,noemph lxi d,noemphm cpi 'F' jz list lxi h,dblstr lxi d,dblstrm cpi 'G' jz list lxi h,snglstr lxi d,snglstrm cpi 'H' jz list lxi h,italic lxi d,italicm cpi 'I' jz list lxi h,noital lxi d,noitalm cpi 'J' jz list lxi h,pica lxi d,picam cpi 'K' jz list lxi h,elite lxi d,elitem cpi 'L' jz list lxi h,biprn lxi d,biprnm cpi 'M' jz list lxi h,uniprn lxi d,uniprnm cpi 'N' jz list lxi h,sensor lxi d,sensorm cpi 'S' jz list lxi h,ignsen lxi d,ignsenm cpi 'T' jz list lxi h,uline lxi d,ulinem cpi 'U' jz list lxi h,noul lxi d,noulm cpi 'V' jz list lxi h,wide lxi d,widem cpi 'W' jz list lxi h,narrow lxi d,narrowm cpi 'X' jz list lxi h,slash lxi d,slashm cpi 'Y' jz list lxi h,noslsh lxi d,noslshm cpi 'Z' jz list lxi h,sixlpi lxi d,sixlpim cpi '6' jz list lxi h,atelpi lxi d,atelpim cpi '8' jz list lxi h,tenlpi lxi d,tenlpim cpi '9' jz list lxi h,reset lxi d,resetm cpi 'R' jz list jmp getit fini: call cls lxi h,oldsp ;load h with old stack pointer sphl ;put it in the stack pointer jmp wmboot ;reset the disk system ret ;back to cpm ; ;-------------------------------------------------- ;<<<<<<<<<< E N D O F P R O G R A M >>>>>>>>>> ;-------------------------------------------------- ;-------------------------------------------------- ;<<<<<<<<<<<<<<<<< SUBROUTINES >>>>>>>>>>>>>>>>>>>> ;-------------------------------------------------- ;Clears Screen | ;-------------- ; cls: push d! push b! push h lxi d,clscr mvi c,prints call bdos pop h! pop b! pop d ret ; ;-------------------------------------------------- ;Prints the Menu | ;---------------- ; prntmenu: push d! push b! push h lxi d,signon mvi c,prints call bdos call vidon lxi d,head mvi c,prints call bdos call vidoff lxi d,menu mvi c,prints call bdos call vidon lxi d,prompt mvi c,prints call bdos call vidoff pop h! pop b! pop d ret ; ;---------------- ;Menu Text Table | ;---------------- ; signon: db ' GEMSET Vers 20 - By Curt Edwards' ,cr,lf db '(c) May 17, 1985 All Rights Reserved',cr,lf,'$' head: db 'Star Micronics GEMINI 10 & 15X Set-Up Utility' ,cr,lf,lf,'$' menu: db tab,' PRESS RETURN TO EXIT' ,cr,lf,lf db 'A = Bell ON B = Bell OFF' ,cr,lf db 'C = Compressed ON D = Compressed OFF' ,cr,lf db 'E = Emphasized ON F = Emphasized OFF' ,cr,lf db 'G = Double Strike ON H = Double Strike OFF' ,cr,lf db 'I = Italics Font J = Regular Font' ,cr,lf db 'K = Pica Pitch L = Elite Pitch' ,cr,lf db 'M = Bi-directional ON N = Bi-directional OFF' ,cr,lf db 'S = Paper-end Sensor ON T = Paper-end Sensor OFF',cr,lf db 'U = Underlining ON V = Underlining OFF' ,cr,lf db 'W = Double Wide Pitch ON X = Double Wide Pitch OFF',cr,lf db 'Y = Slashed Zeroes ON Z = Slashed Zeroes OFF' ,cr,lf db '  6 = 6 Lines Per Inch' ,cr,lf db ' 8 = 8 Lines Per Inch' ,cr,lf db ' 9 = 10.2 Lines Per Inch' ,cr,lf,lf db 'R = Reset Printer to Standard Settings' ,cr,lf,lf db tab,'$' prompt: db 'Enter Selection ]--> ','$' ; ;-------------------------------------------------- ;Turn on enhanced video | ;----------------------- vidon: push d! push b! push h ;save enviroment lxi d,revon mvi c,prints call bdos pop h! pop b! pop d ;restore enviroment ret ;return to calling routine ; ;-------------------------------------------------- ;Turn off enhanced video | ;------------------------ ; vidoff: push d! push b! push h ;save enviroment lxi d,revoff mvi c,prints call bdos pop h! pop b! pop d ;restore enviroment ret ;return to calling routine ; ;-------------------------------------------------- ;Translate lower case to uppercase | ;---------------------------------- ; case: push b! push d! push h cpi 'a' ;is it in the lower case range? rc cpi 'z'+1 rnc ani 5fh ;yes mask it pop h! pop d! pop b ret ;and return ; ;--------------------------------------------------- ;Sends printer string to printer & message to | ;console. | ;--------------------------------------------- ; list: push h! push d ;save string pointers call cls ;clear screen lxi d,lines ;Send 10 line feeds to center message mvi c,prints ;print them call bdos call vidon ;turn on video pop d ;restore message pointer mvi c,prints ;print it call bdos call vidoff ;turn of video mvi b,3 ;set up outside delay counter delay1: lxi d,0ffffh ;set up inside delay counter delay2: dcx d ;dcr second mov a,e ;get it in a ora d ;is it zero jnz delay2 ;do it again dcr b ;dcr first jnz delay1 ;not zero so loop pop h ;restore pointer loop: mov e,m ;first byte in e reg push h ;save pointer mvi c,lstchr ;set up output to printer call call bdos  ;send it pop h ;restore pointer inx h ;bump it mov a,m ;get next char in a cpi '$' ;is the the end? jz start ;yes, go get next user input jmp loop ;no, get next char lines: db lf,lf,lf,lf,lf,lf,lf,lf,lf,'$' ; ;--------------------------------------------------- ;Reset System (warm boot) | ;------------------------- wmboot: push b! push d! push h mvi c,boot call bdos pop h! pop d! pop b ret ; ;--------------------------------------------------- ;Storage areas for printer codes and console status | ; messages | ;--------------------------------------------------- ; ; beloff db esc,'Y',01,'$' beloffm db cr,lf,lf,lf,07h,'Bell is now OFF !','$' belon db esc,'Y',00,'$' belonm db cr,lf,lf,lf,07h,'Bell is now ON !','$' comp db 0fh,'$' compm db cr,lf,lf,lf,07h,'Compressed mode is now ON !','$' uncomp db 12h,'$' uncompm db cr,lf,lf,lf,07h,'Compressed mode is now OFF !','$' pica db esc,'B',01,'$' picam db cr,lf,lf,lf,07h,'Pica Font is now ON !','$' elite db esc,'B',02,'$' elitem db cr,lf,lf,lf,07h,'Elite Font is now ON !','$' emph db esc,'E','$' emphm db cr,lf,lf,lf,07h,'Emphasized mode is now ON !','$' noemph db esc,'F','$' noemphm db cr,lf,lf,lf,07h,'Emphasized mose is now OFF !','$' dblstr db esc,'G','$' dblstrm db cr,lf,lf,lf,07h,'Double Strike mode is now ON !','$' snglstr db esc,'H','$' snglstrm db cr,lf,lf,lf,07h,'Double Strike mode is now OFF !','$' biprn db esc,'U',00,'$' biprnm db cr,lf,lf,lf,07h,'Bi-Directional print is now ON !','$' uniprn db esc,'U',01,'$' uniprnm db cr,lf,lf,lf,07h,'Bi-Directional print is now OFF !','$' slash db esc,'V',01,'$' slashm db cr,lf,lf,lf,07h,'Zeroes will now be Slashed !','$' noslsh db esc,'V',00,'$' noslshm db cr,lf,lf,lf,07h,'Zeroes will not be Slashed !','$' wide db esc,'W',01,'$' widem db cr,lf,lf,lf,07h,'Double-wide mode is now ON !','$' narrow db esc,'W',00,'$' narrowm db cr,lf,lf,lf,07h,'Double-wide mode is now OFF !','$' atelpi db esc,'O','$' atelpim db cr,lf,lf,lf,07h,'Printer is now in 8 lines per inch mode !','$' tenlpi db esc,'1','$' tenlpim db cr,lf,lf,lf,07h,'Printer is now in 10.2 lines per inch mode !','$' sixlpi db esc,'2','$' sixlpim db cr,lf,lf,lf,07h,'Printer is now in 6 lines per inch mode !','$' italic db esc,'4','$' italicm db cr,lf,lf,lf,07h,'Italics mode is now ON !','$' noital db esc,'5','$' noitalm db cr,lf,lf,lf,07h,'Italics mode is now OFF !','$' ignsen db esc,'8','$' ignsenm db cr,lf,lf,lf,07h,'Paper sensor is now OFF !','$' sensor db esc,'9','$' sensorm db cr,lf,lf,lf,07h,'Paper sensor is now ON !','$' reset db esc,'@','$' resetm db cr,lf,lf,lf,07h,'Your gemini is now RESET to it''s defaults settings!','$' uline db esc,2dh,01,'$' ulinem db cr,lf,lf,lf,07h,'Underline mode is now ON !','$' noul db esc,2dh,00,'$' noulm db cr,lf,lf,lf,07h,'Underline mose is now OFF !','$' ; ;Reserve Memory For Local Stack ; oldsp: ds 2 ;old stack pointer ds 32 ;new stack  stktop: ; end 100h ' tenlpim db cr,lf,lf,lf,07h,'Printer is now in 10.2 lines per inch mode !','$' sixlpi db esc,'2','$' sixlpim db cr,lf,lf,lf,07h,'Printer is now in 6 lines per inch mode !','$' italic db esc,'4','$' italicm db cr,lf,lf,lf,07h,'Italics mode is now ON !','$' noital db esc,'5','$' noitalm db cr,lf,lf,lf,07h,'Italics mode is now OFF !','$' ignsen db esc,'8','$' ignsenm db cr,lf,lf,lf,07h,'Paper sensor is now OFF !','$' sensor db esc,'9','$' sensorm db cr,lf,lf,lf,07h,'Paper sensor is now ON !','$' reset db esc,'@','$' resetm db cr,lf,lf,lf,07h,'Your gemini is now RESET to it''s defaults settings!','$' uline db esc,2dh,01,'$' ulinem db cr,lf,lf,lf,07h,'Underline mode is now ON !','$' noul db esc,2dh,00,'$' noulm db cr,lf,lf,lf,07h,'Underline mose is now OFF !','$' ; ;Reserve Memory For Local Stack ; oldsp: ds 2 ;old stack pointer ds 32 ;new stackxGEMSET.ASM Version 2.0 By Curt Edwards (c)May 17, 1985 PATCH AREA CLSCR->$ REVON->B1B0$ REVOFF->C1C0$!9" 1  ʶi!Ax!Bx!Cx!!#Dx!Ex!Fx!Gx!Hx!  Ix!  Jx!EIKx!dhLx! Mx!FJNx!  Sx!  Tx!e i Ux!  Vx!Wx!Xx!quYx!Zx!q t 6x!  8x!< ? 9x!) , RxÈ! ýW  KM Z~ K5 Z GEMSET Vers 20 - By Curt Edwards (c) May 17, 1985 All Rights Reserved $Star Micronics GEMINI 10 & 15X Set-Up Utility $ PRESS RETURN TO EXIT A = Bell ON B = Bell OFF C = Compressed ON D = Compressed OFF E = Emphasized ON F = Emphasized OFF G = Double Strike ON H = Double Strike OFF I = Italics Font J = Regular Font K = Pica Pitch L = Elite Pitch M = Bi-directional ON N = Bi-directional OFF S = Paper-end Sensor ON T = Paper-end Sensor OFF U = Underlining ON V = Underlining OFF W = Double Wide Pitch ON X = Double Wide Pitch OFF Y = Slashed Zeroes ON Z = Slashed Zeroes OFF 6 = 6 Lines Per Inch 8 = 8 Lines Per Inch 9 = 10.2 Lines Per Inch R = Reset Printer to Standard Settings $Enter Selection ]--> $a q a{_ K Z{–“^#~$ʂá $Y$ Bell is now OFF !$Y$ Bell is now ON !$$ Compressed mode is now ON !$$ Compressed mode is now OFF !$B$ Pica Font is now ON !$B$ Elite Font is now ON !$E$ Emphasized mode is now ON !$F$ Emphasized mose is now OFF !$G$ Double Strike mode is now ON !$H$ Double Strike mode is now OFF !$U$ Bi-Directional print is now ON !$U$ Bi-Directional print is now OFF !$V$ Zeroes will now be Slashed !$V$ Zeroes will not be Slashed !$W$ Double-wide mode is now ON !$W$ Double-wide mode is now OFF !$O$ Printer is now in 8 lines per inch mode !$1$ Printer is now in 10.2 lines per inch mode !$2$ Printer is now in 6 lines per inch mode !$4$ Italics mode is now ON !$5$ Italics mode is now OFF !$8$ Paper sensor is now OFF !$9$ Paper sensor is now ON !$@$ Your gemini is now RESET to it's defaults settings!$-$ Underline mode is now ON !$-$ Underline mose is now OFF !$ Compressed mode is now ON !$$ Compressed mode is now OFF !$B$ Pica Font is now ON !$B$ Elite Font is now ON !$E$ Emphasized mode is now ON !$F$ Emphasized mose is now OFF !$G$ Double Strike mode is now ON !$H$ Double Strike mode is now OFF !$U$ Bi-Directional print is now ON !$U$ Bi-Directional print is now OFF !$V$ Zeroes will now be Slashed !$V$ Zeroes will not be Slashed !$W$ Double-wide mode is now ON !$W$ Double-wide mode is xGEMSET.ASM Version 2.0 By Curt Edwards (c)May 17, 1985 PATCH AREA CLSCR->$ REVON->)$ REVOFF->($!9" 1  ʶi!Ax!Bx!Cx!!#Dx!Ex!Fx!Gx!Hx!  Ix!  Jx!EIKx!dhLx! Mx!FJNx!  Sx!  Tx!e i Ux!  Vx!Wx!Xx!quYx!Zx!q t 6x!  8x!< ? 9x!) , RxÈ! ýW  KM Z~ K5 Z GEMSET Vers 20 - By Curt Edwards (c) May 17, 1985 All Rights Reserved $Star Micronics GEMINI 10 & 15X Set-Up Utility $ PRESS RETURN TO EXIT A = Bell ON B = Bell OFF C = Compressed ON D = Compressed OFF E = Emphasized ON F = Emphasized OFF G = Double Strike ON H = Double Strike OFF I = Italics Font J = Regular Font K = Pica Pitch L = Elite Pitch M = Bi-directional ON N = Bi-directional OFF S = Paper-end Sensor ON T = Paper-end Senso!r OFF U = Underlining ON V = Underlining OFF W = Double Wide Pitch ON X = Double Wide Pitch OFF Y = Slashed Zeroes ON Z = Slashed Zeroes OFF 6 = 6 Lines Per Inch 8 = 8 Lines Per Inch 9 = 10.2 Lines Per Inch R = Reset Printer to Standard Settings $Enter Selection ]--> $a q a{_ K Z{–“^#~$ʂá $Y$ Bell is now OFF !$Y$ Bell is now ON !$$ Compressed mode is now ON !$$ Compressed mode is now OFF !$B$ Pica Font is now ON !$B$ Elite Font is now ON !$E$ Emphasized mode is now ON !$F$ Emphasized mose is now OFF !$G$ Double Strike mode is now ON !$H$ Double Strike mode is now OFF !$U$ Bi-Directional print is now ON !$U$ Bi-Directional print is now OFF !$V$ Zeroes will now be Slashed !$V$ Zeroes will not be Slashed !$W$ Double-wide mode is now ON !$W$ Double-wide mode is now OFF !$O$ Printer is now in 8 lines per inch mode !$1$ Printer is now in 10.2 lines per inch mode !$2$ Printer is now in 6 lines per inch mode !$4$ Italics mode is now ON !$5$ Italics mode is now OFF !$8$ Paper sensor is now OFF !$9$ Paper sensor is now ON !$@$ Your gemini is now RESET to it's defaults settings!$-$ Underline mode is now ON !$-$ Underline mose is now OFF !$ Compressed mode is now ON !$$ Compressed mode is now OFF !$B$ Pica Font is now ON !$B$ Elite Font is now ON !$E$ Emphasized mode is now ON !$F$ Emphasized mose is now OFF !$G$ Double Strike mode is now ON !$H$ Double Strike mode is now OFF !$U$ Bi-Directional print is now ON !$U$ Bi-Directional print is now OFF !$V$ Zeroes will now be Slashed !$V$ Zeroes will not be Slashed !$W$ Double-wide mode is now ON !$W$ Double-wide mode is AOBXCaDjEsN|IʅSʎPʗRʠLʩUX!!!!!!!!!!!0_!~^#  GEMINI INITIALIZATION - MARK AALDERING 11/83 SELECT DESIRED OPTION: A .. STANDARD 10 CPI B .. ELITE 12 CPI C .. CONDENSED 17 CPI D .. DISREGARD PAPER OUT SIGNAL E .. ENLARGED MODE N .. NORMAL SIZE MODE L .. LEFT MARGIN SELECT I .. ITALIC FONT S .. STANDARD FONT P .. PERFORATION SKIP R .. REGARD PAPER-OUT SIGNAL U .. USE ALTERNATE DESCENDER SET X .. END SELECTION PROCESS $ MARGIN = ? $B8WW45N9M**p *q *,@,*;[{*j0@@@?*g @ @ @?$ ;PRNTR.ASM 11/2/83 MARK M. AALDERING ;GEMINI 10X/15X INITIALIZATION FOR CP/M SYSTEMS ;WRITTEN FOR THE CP/M 8080 ASM.COM ASSEMBLER org 0100h CLEAR EQU 26 PBUFF EQU 9 BDOS EQU 5 CR EQU 0dh LF EQU 0ah EF EQU 0FFh LMENU LXI D,MENU CALL PRINT MVI C,1 CALL BDOS CPI 41H JZ PT1 CPI 42H JZ PT2 CPI 43H JZ PT3 CPI 44H JZ PT4 CPI 45H JZ PT5 CPI 4EH JZ PT6 CPI 49H JZ PT7 CPI 53H JZ PT8 CPI 50H JZ PT9 CPI 52H JZ PTA CPI 4CH JZ PTB CPI 55H JZ PTC CPI 58H JZ PTX JMP LMENU PT1 LXI H,PLINE1 CALL LPRINT JMP LMENU PT2 LXI H, PLINE2 CALL LPRINT JMP LMENU PT3 LXI H, PLINE3 CALL LPRINT JMP LMENU PT4 LXI H, PLINE4 CALL LPRINT JMP LMENU PT5 LXI H,PLINE5 CALL LPRINT JMP LMENU PT6 LXI H, PLINE6 CALL LPRINT JMP LMENU PT7 LXI H, PLINE7 CALL LPRINT JMP LMENU PT8 LXI H,PLINE8 CALL LPRINT JMP LMENU PT9 LXI H, PLINE9 CALL LPRINT JMP LMENU PTA LXI H, PLINEA CALL LPRINT JMP LMENU PTB LXI D,LM CALL PRINT MVI C,1 CALL BDOS PUSH A LXI H,PLINEB CALL LPRINT POP A SUI 30H MOV E,A MVI C,5 CALL BDOS JMP LMENU PTC LXI H,PLINEC CALL LPRINT JMP LMENU PTX MVI E,CLEAR MVI C,2 CALL BDOS RET LPRINT MOV A,M CPI 0FFh RZ MOV E,M MVI C,5 INX H PUSH H CALL BDOS POP H JMP LPRINT PRINT MVI C,PBUFF JMP BDOS MENU: db CLEAR,CR,LF,LF,'GEMINI INITIALIZATION - MARK AALDERING 11/83' db CR,LF,LF,2,'SELECT DESIRED OPTION:',CR,LF,LF db 2,'A .. STANDARD 10 CPI',CR,LF db 2,'B .. ELITE 12 CPI',CR,LF db 2,'C .. CONDENSED 17 CPI',CR,LF db 2,'D .. DISREGARD PAPER OUT SIGNAL',CR,LF db 2,'E .. ENLARGED MODE',CR,LF db 2,'N .. NORMAL SIZE MODE',CR,LF db 2,'L .. LEFT MARGIN SELECT',CR,LF db 2,'I .. ITALIC FONT',CR,LF db 2,'S .. STANDARD FONT',CR,LF db 2,'P .. PERFORATION SKIP',CR,LF db 2,'R .. REGARD PAPER-OUT SIGNAL',CR,LF db 4,'U .. USE ALTERNATE DESCENDER SET',CR,LF db 2,'X .. END SELECTION PROCESS',CR,LF,'$' LM: db CR,LF,LF,'MARGIN = ? ','$' PLI"NE1: db 18,EF PLINE2: db 27,66,2,EF PLINE3: db 15,EF PLINE4: db 27,56,EF PLINE5: db 27,87,1,EF PLINE6: db 27,87,0,EF PLINE7: db 27,52,EF PLINE8: db 27,53,EF PLINE9: db 27,78,6,EF PLINEA: db 27,57,EF PLINEB: db 27,77,EF PLINEC: db 27,42,0 db 27,42,1,112,1,127,0,9,0,9,0,9,6,0 db 27,42,1,113,1,6,9,0,9,0,9,0,127,0 db 27,42,1,44,1,0,64,44,0,28,0,0,0,0 db 27,42,1,59,1,0,91,0,123,0,0,0,0,0 db 27,42,1,106,1,48,64,1,64,1,64,63,0,1 db 27,42,1,103,1,6,9,64,9,64,9,64,63,0 db 27,36,1,EF END R,LF db 2,'B .. ELITE 12 CPI',CR,LF db 2,'C .. CONDENSED 17 CPI',CR,LF db 2,'D .. DISREGARD PAPER OUT SIGNAL',CR,LF db 2,'E .. ENLARGED MODE',CR,LF db 2,'N .. NORMAL SIZE MODE',CR,LF db 2,'L .. LEFT MARGIN SELECT',CR,LF db 2,'I .. ITALIC FONT',CR,LF db 2,'S .. STANDARD FONT',CR,LF db 2,'P .. PERFORATION SKIP',CR,LF db 2,'R .. REGARD PAPER-OUT SIGNAL',CR,LF db 4,'U .. USE ALTERNATE DESCENDER SET',CR,LF db 2,'X .. END SELECTION PROCESS',CR,LF,'$' LM: db CR,LF,LF,'MARGIN = ? ','$' PLI1  !A!B!C!D!E!F!G!H!I!J!K!K!M!N!O!P!Q!S!T!R!U ^#~$  GEMINI-10X/15X PRINTER FUNCTIONS Use UPPER case letters, press RETURN to terminate A = SET 10 CPI L = SET L.F. TO 12/72 IN.(6LPI) B = SET 12 CPI M = SET L.F. TO 9/72 IN.(8LPI) C = SET 17 CPI N = SET L.F. TO 7/72 IN. O = SET L.F. TO 6/72 IN. P = SET L.F. TO 5/72 IN. D = DOUBLE-WIDE Q = ENABLE BUZZER E = NON-DOUBLE-WIDTH S = DISABLE BUZZER F = EMPHASIZED T = DOUBLE STRUCK G = NON-EMPHASIZED U = SINGLE STRUCK H = ITALIC PRINT I = NON-ITALIC PRINT J = SELECT UNI-DIRECTIONAL PRINT MODE K = SELECT BI-DIRECTIONAL PRINT MODE R = RESET PRINTER $B$B$B$W$W$Y$Y$U$U$E$F$G$H$A$A$1$0$2$4$5$@$1z  !A!C!P!E!%T!F!G!M!N!U!V!D!S! I!J!6!8!WR!,K!0H!43!;4!B5!IQ!PL!LO ^#~$  STAR MICRONICS / EPSON PRINTER FUNCTIONS use UPPER case letters press RETURN to terminate A = CANCEL TINY PRINT & RESET TO 6 LINES PER INCH C = COMPRESSED PRINT E = ELITE PRINT P = PICA PRINT T = TINY PRINT @ 12 LINES PER INCH (CHOOSE COMPRESSED AS WELL) F = EMPHASIZED PRINT G=NON-EMPHASIZED (default) M = MONSTROUS ENLARGED PRINT (double current size) N = NORMAL SIZE FOR WHATEVER SIZE YOU ARE IN (default) D = DOUBLE STRUCK PRINT S = SINGLE STRUCK PRINT (default) U = UNDERLINE EVERYTHING V = CANCEL UNDERLNING (default) I = ITALIC PRINT J = NON-ITALIC PRINT (default) VERTICAL LINE SPACING: 3 = 3 LINES PER INCH (PL=33) (double space) 4 = 4 LPI (PL=44) 5 = 5 LPI (PL=55) 6 = 6 LINES PER INCH (PL=66) 8 = 8 LINES PER INCH (PL=88) LEFT MARGIN SETTINGS: H = 17 COLUMNS K = 10 COLUMNS L = ENABLE SKIP OVER PERFORATION (2 LINES) O = ONE DIRECTION PRINTING Q = TURN OFF PAPER OUT (use for sheet feeding) R = RESET PRINTER (set to defaults) $$$B$E$F$G$H$W$W$T2$4$5$-$-$2CB$0CX$S3 $M $M$30C!$AC,$3C7$8$U1$NR$@$LINES PER INCH C = COMPRESSED PRINT E = ELITE PRINT P = PICA PRINT T = TINY PRINT @ 12 LINES PER INCH (CHOOSE COMPRESSED AS WELL) F = EMPHASIZED PRINT G=NON-EMPHASIZED (default) M = MONSTROUS ENLARGED PRINT (double current size) N = NORMAL SIZE FOR WHATEVER SIZE YOU ARE IN (default) D = DOUBLE STRUCK PRINT S = SINGLE STRUCK PRINT (default) U = UNDERLINE EVERYTHING V = CANCEL UNDERLNING (default) I = ITALIC PRINT J = NON-ITALIC PRINT (default) VERTICAL LINE SPACING: 3 = 3 LINES PER INCH (PL=33) (double space) 4 = 4 LPI (PL=44) 5 = 5 LPI (PL=55) 6 = 6 LINES PER INCH (PL=66) 8 = 8 LINES P; PROGRAM STARSET.ASM ADAPTED APRIL 1984 BY TJ OLNEY FROM ; PROGRAM EPSET.ASM ; (SORRY THE MENU NO LONGER FITS 52 COLUMNS) ; ; WRITTEN BY KENT WALKER ; OCTOBER, 1982 ; corrected by Jim Woolley, 11/82 ; ; 8080 ASSEMBLER CODE ; USING CP/M BDOS FUNCTIONS ; ; THIS PROGRAM IS DESIGNED ; TO SET THE ; STAR MICRONICS GEMINI 10X (AND POSSIBLY OTHERS) ; PRINTER PARAMETERS ; VIA KEYBOARD INPUT. ; ; A TABLE OF OPTIONS IS PRESENTED ON THE MONITOR. ; INPUT IS TERMINATED BY A CARRIAGE RETURN. ; ; INPUT CHARACTERS MUST BE IN UPPER CASE. ; ; EACH ESCAPE CODE IS OUTPUT IMMEDIATELY TO THE PRINTER SO ; IF TWO CONFLICT, THE LAST ONE ISSUED WILL BE IN EFFECT ; ; NOTE THAT THE TINY PRINT PLACES THE PRINTER ; PERMANTLY IN SUBSCRIPT MODE UNTIL CANCELLED BY RESET ; TURNING THE PRINTER OFF, OR BY ISSUING THE CANCEL SUB/SUPER ; WHICH IS PART OF THE MENU OPTION A ; ; THIS PROGRAM IS EASILY ADAPTED TO OTHER PRINTERS BY CHANGING THE TABLE ; OF ESCAPE CODES ; SOME OF THE OPTIONS MAY BE OF LIMITED USE AN#D CAN BE ELIMINATED TO EASE ; CONGESTION ON THE MENU ; ; NOTE THAT CHANGING THE NUMBER OF LINES PER INCH ALSO CHANGES THE NUMBER OF ; LINES PER PAGE BY ISSUING TWO INSTRUCTIONS ; ; IF SOMEONE WHO KNOWS WHAT THEY'RE DOING IS INTERESTED, IT WOULD BE ; NICE TO HAVE A PROGRAM LIKE THIS ACCEPT DECIMAL NUMBERS FOR, THE NUMBER OF ; LINES PER INCH, NUMBER OF CHARACTER MARGINS, AND THE NUMBER OF LINES TO SKIP ; AT A PERFORATION. ; ; ORG 100H BDOS EQU 0005H INCHR EQU 1 ;KEYBOARD INPUT FUNCTION LSTCHR EQU 5 ;CHARACTER TO LIST DEVICE FUNCTION CR EQU 000DH ;CARRIAGE RETURN LF EQU 000AH ;LINE FEED TAB EQU 0009H ;TAB CHARACTER CLRSCR EQU 001AH ;CLEAR SCREEN - CTRL Z - OSBORNE & TELEVIDEO ESC EQU 001BH ;ESCAPE CODE PRSTR EQU 9 ;PRINT STRING FUNCTION BOOT EQU 0 ;WARM BOOT ; LXI SP,STACK ;SET UP STACK LXI D,MESAGE ;POINT TO MESSAGE MVI C,PRSTR ;STRING PRINT FUNCTION CALL BDOS ; LOOP MVI C,INCHR CALL BDOS CPI CR ;CARRIAGE RETURN ENDS INPUT JZ BOOT ; LXI H,CNCLTNY ;TEST FOR 'A' CPI 'A' JZ LIST ; LXI H,COMP ;TEST FOR 'C' CPI 'C' JZ LIST ; LXI H,PICA ;TEST FOR 'P' CPI 'P' JZ LIST ; LXI H,ELITE ;TEST FOR 'E' CPI 'E' JZ LIST ; LXI H,DOZLPI ;TEST FOR 'T' CPI 'T' JZ LIST ; LXI H,EMPH ;TEST FOR 'F' CPI 'F' JZ LIST ; LXI H,NOEMPH ;TEST FOR 'G' CPI 'G' JZ LIST ; LXI H,ENLRG ;TEST FOR 'M' CPI 'M' JZ LIST ; LXI H,UNENLRG ;TEST FOR 'N' CPI 'N' JZ LIST ; LXI H,UNLINE ;TEST FOR 'U' CPI 'U' JZ LIST ; LXI H,NOUNLN ;TEST FOR 'V' CPI 'V' JZ LIST ; LXI H,DBLSTR ;TEST FOR 'D' CPI 'D' JZ LIST ; LXI H,SNGLSTR ;TEST FOR 'S' CPI 'S' JZ LIST ; LXI H,ITALIC ;TEST FOR 'I' CPI 'I' JZ LIST ; LXI H,NOITAL ;TEST FOR 'J' CPI 'J' JZ LIST ; LXI H,SIXLPI ;TEST FOR '6' CPI '6' JZ LIST ; LXI H,EITLPI ;TEST FOR '8' CPI '8' JZ LIST ; LXI H,RESET ;TEST FOR 'R' CPI 'R' JZ LIST ; LXI H,MARTEN ;TEST FOR 'K' CPI 'K' JZ LIST ; LXI H,MARSEV ;TEST FOR 'H' CPI 'H' JZ LIST ; LXI H,THRELPI ;TEST FOR '3' CPI '3' JZ LIST ; LXI H,FOURLPI ;TEST FOR '4' CPI '4' JZ LIST ; LXI H,FIVELPI ;TEST FOR '5' CPI '5' JZ LIST ; LXI H,PAPOUT ;TEST FOR 'Q' CPI 'Q' JZ LIST ; LXI H,SKIPERF ;TEST FOR 'L' CPI 'L' JZ LIST ; LXI H,ONEDIR ;TEST FOR 'O' CPI 'O' JZ LIST ; JMP LOOP ; ; ; SUBROUTINE TO OUTPUT ESCAPE CODE TO PRINTER ; LIST MOV E,M ;MOVE CHAR TO REG E PUSH H ;SAVE STRING POINTER MVI C,LSTCHR ;SET UP FOR LINE PRINTER CALL BDOS ;PRINT CHARACTER POP H ;RESTORE STRING POINTER INX H ;POINT TO NEXT CHAR MOV A,M ;MVVE NEXT CHAR TO REG A CPI '$' ;IS IT THE TERMINATOR ($) ? JZ LOOP ;RETURN IF YES JMP LIST ;ELSE REPEAT ; ; END OF SUBROUTINE ; ; MESSAGES ; MESAGE DB CLRSCR,TAB,'STAR MICRONICS / EPSON PRINTER FUNCTIONS' ,CR,LF DB TAB, 'use UPPER case letters' ,CR,LF DB TAB, 'press RETURN to terminate' ,CR,LF,LF DB TAB,'A = CANCEL TINY PRINT & RESET TO 6 LINES PER INCH' ,CR,LF DB TAB,'C = COMPRESSED PRINT E = ELITE PRINT P = PICA PRINT',CR,LF DB TAB,'T = TINY PRINT @ 12 LINES PER INCH (CHOOSE COMPRESSED AS WELL)',CR,LF DB 'F = EMPHASIZED PRINT G=NON-EMPHASIZED (default)',CR,LF DB TAB,'M = MONSTROUS ENLARGED PRINT (double current size)' ,CR,LF DB TAB,'N = NORMAL SIZE FOR WHATEVER SIZE YOU ARE IN (default)' ,CR,LF DB 'D = DOUBLE STRUCK PRINT S = SINGLE STRUCK PRINT (default)' ,CR,LF DB TAB,'U = UNDERLINE EVERYTHING V = CANCEL UNDERLNING (default)',CR,LF DB TAB,'I = ITALIC PRINT J = NON-ITALIC PRINT (default)',CR,LF,LF DB 'VERTICAL LINE SPACING:',' 3 = 3 LINES PER INCH (PL=33) (double space)',CR,LF DB TAB,'4 = 4 LPI (PL=44) 5 = 5 LPI (PL=55)',CR,LF DB TAB,'6 = 6 LINES PER INCH (PL=66)',TAB,'8 = 8 LINES PER INCH (PL=88)' ,CR,LF DB LF,'LEFT MARGIN SETTINGS: H = 17 COLUMNS K = 10 COLUMNS',CR,LF DB 'L = ENABLE SKIP OVER PERFORATION (2 LINES)',TAB,' O = ONE DIRECTION PRINTING',CR,LF DB TAB,'Q = TURN OFF PAPER OUT (use for sheet feeding)',CR,LF,LF DB TAB,'R = RESET PRINTER (set to defaults)' ,CR,LF DB '$' ; ; TABLE OF PRINTER ESCAPE CODES ; COMP DB 0fh,'$' ;changed from ESC,'P' by Jim W. PICA DB 12h,'$' ;CHANGE TO PICA FROM UNCOMP TJ ;changed from ESC,'Q' by Jim W. ELITE DB ESC,42H,02H,'$' ;TJ ADDED FOR STAR MICRONICS EMPH DB ESC,'E$' NOEMPH DB ESC,'F$' DBLSTR DB ESC,'G$' SNGLSTR DB ESC,'H$' ENLRG DB ESC,'W',01H,'$' ; STAR MICRONICS CHANGE TJ OLNEY UNENLRG DB ESC,'W',00H,'$' ; STAR MICRONICS CHANGE TJ OLNEY CNCLTNY DB ESC,'T',ESC,'2','$' ;CHANGE TJ CANCELS SUBSCRIPT MODE ;AND RETURNS TO 6 LINES PER INCH ITALIC DB ESC,'4$' NOITAL DB ESC,'5$' UNLINE DB ESC,'-',01H,'$' ; UNDERLINE STAR CHANGE TJ NOUNLN DB ESC,'-',00H,'$' ; NO UNDERLINE STAR CHANGE TJ SIXLPI DB ESC,'2',ESC,'C',42H,'$' ;TJ ADD THE 66 LINES PER PAGE EITLPI DB ESC,'0',ESC,'C',58H,'$' ;TJ ADD THE 88 LINES PER PAGE DOZLPI DB ESC,'S',01H,ESC,'3',0CH,'$'; STAR CHANGE TJ ;SUBSCRIPT MODE FOR TINY PRINT AND LINE FEED 12/IN TJ MARTEN DB ESC,'M',0BH,'$' ;TJ ELEVEN SPACE LEFT$ MARGIN APPROX 1 INCH IN PICA & ELITE MARSEV DB ESC,'M',11H,'$' ;TJ SEVENTEEN SPACE LEFT MARGIN THRELPI DB ESC,'3','0',ESC,'C',21H,'$' ;TJ 3 LINES PER INCH (DOUBLE SPACED) 48/144 LINE FEED ;33 LINES PER PAGE FOURLPI DB ESC,'A',12H,ESC,'C',2CH,'$' ;TJ FOUR LINES PER INCH 18/72 LINE FEED TJ ;44 LINES PER PAGE FIVELPI DB ESC,'3',1DH,ESC,'C',37H,'$' ;TJ APPROX FIVE LINES PER INCH 29/144 LINE FEED TJ ;55 LINES PER INCH PAPOUT DB ESC,'8','$' ;TJ DISABLE PAPER OUT (FOR SHEET FEEDING) RESET FOR OFF ONEDIR DB ESC,'U','1','$' ;TJ TURN ON UNIDIRECTIONAL PRINTING RESET FOR OFF SKIPERF DB ESC,'N',02H,ESC,'R',02H,'$' ;TJ ENABLE SKIP AT 2 LINES BEFORE END OF PAGE ;& MOVE FIRST LINE TO ;LINE 2 OF NEXT PAGE TJ RESET FOR OFF RESET DB ESC,'@$' ; ; STACK AREA ; DS 20H STACK ; END H,'$'; STAR CHANGE TJ ;SUBSCRIPT MODE FOR TINY PRINT AND LINE FEED 12/IN TJ MARTEN DB ESC,'M',0BH,'$' ;TJ ELEVEN SPACE LEFT This is the release date of the disk. !K"K$K%K&K'K(K)K+K,K-K.K/K2K3K4K5K6K7K8K9K:K;KK?K@KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxKyKzK{K|K}K~KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLSETPRC10.COM E8 07 10496 82 SETPRC10.DOC 9C B5 9600 75 EPSET2 .COM 04 E4 512 4 EPSET2 .ASM BD E0 2944 23 EPSNPRTR.COM BB 46 2304 18 EPSNPRTR.DOC C4 6A 384 3 EPSNPRTR.ASM 50 80 11776 92 EPSON .BAS 97 A7 6016 47 PRINT .BAS 86 3C 6272 49 PRINT .DOC B5 11 768 6 PRINTSET.COM 3D D1 15232 119 PRINTSET.DOC 48 B0 1152 9 PRINTSET Fog Library Disk FOG-CPM.100 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Programs to set printer parameters. Filename Description -07-00 .86 This is the release date of the disk.  -CPM100 .DOC This is the description of the disk contents. BARCODE .BAS 77B1 3K [Barcode 1 of 2] MBasic program to allow Epson MX-80 with Graftrax (and many later models) to print 3 of 9, interleaved 2 of 5, codabar barcodes, etc. BARCODE .DOC 6624 2K [Barcode 2 of 2] EPUP .COM 4135 5K [EPUP 1 of 5] Allows control codes to be sent to the printer from a menu interface to set print type, margins, etc. For Epsons, complete with EPUPMOD which lets you change menu coding and WSL2, a special version for WordStar 2.26 EPUP .DOC 021F 9K [EPUP 2 of 5] EPUPMOD .COM 27A0 5K [EPUP 3 of 5] WSL2 .SUB A881 1K [EPUP 4 of 5] WSLMOD2 .COM 4ED7 5K [EPUP 5 of 5] SEND .COM BB5D 1K [Send Printer Code 1 of 2] Allows you to send a byte or series of bytes directly to your  printer. SEND .DOC 9951 1K [Send Printer Code 2 of 2] SETPRC10.COM E807 11K ver. 1.0 [Set Printer Codes 1 of 2] Allows you to sent printer control codes from a menu-driven interface. Users multiple data files for different printers. SETPRC10.DOC 9CB5 10K ver. 1.0 [Set Printer Codes 2 of 2] EPSET2 .COM 04E4 1K ver. 2.0 [Epson Set 1 of 2] Menu-driven program for setting Epson printer modes. EPSET2 .ASM BDE0 3K ver. 2.0 [Epson Set 2 of 2] EPSNPRTR.COM BB46 3K [Epson Printer 1 of 3] Sets Epson printer parameters. Includes ASseMbler source code EPSNPRTR.DOC C46A 1K [Epson Printer 2 of 3] EPSNPRTR.ASM 5080 12K [Epson Printer 3 of 3] EPSON .BAS 97A7 6K MBasic program to set Epson printer parameters. PRINT .BAS 863C 7K [PRINT 1 of 2] MBasic program to set Epson printer parameters. PRINT .DOC B511 1K [PRINT 2 of 2] % PRINTSET.COM 3DD1 15K [Printset 1 of 3] Program to set Epson printer parameters. MBasic source is included. PRINTSET.DOC 48B0 2K [Printset 2 of 3] PRINTSET.BAS A4BC 6K [Printset 3 of 3] SETMX .COM BAD1 1K [SETMX 1 of 3] Set parameters for Epson MX series printers. Includes ASseMbler source code. SETMX .DOC 95C8 2K [SETMX 2 of 3] SETMX .ASM D3EE 7K [SETMX 3 of 3] GEMINI15.COM 4000 2K [GEMINI15 1 of 2] Sets parameters for Gemini 15 printers. Includes ASM source. GEMINI15.ASM 6FAD 5K [GEMINI15 2 of 2] GEMSET .DOC DF1D 3K [Gemini Set 1 of 4] Customized version (Kaypro and Osborne) of a program to set parameters for Gemini printers. ASseMbler source included. GEMSET .ASM C573 13K [Gemini Set 2 of 4] KPGEMSET.COM 0770 3K [Gemini Set 3 of 4] OSGEMSET.COM 90C7 3K [Gemini Set 4 of 4] PRNTR .COM D7B7 1K [Printer 1 of 2] Sets parameters for Gemini 10/15 printers. ASseMbler source is included. PRNTR .ASM DAC0 3K [Printer 2 of 2] SETSTAR .COM 883A 1K [Set Gemini Star 1 of 3] Sets parameters for Gemini Star model printers. Includes the ASseMbler source code. STARSET .COM 498D 2K [Set Gemini Star 2 of 3] STARSET .ASM 9E1F 7K [Set Gemini Star 3 of 3]  Program to set Epson printer parameters. MBasic source is included. PRINTSET.DOC 48B0 2K [Printset 2 of 3] PRINTSET.BAS A4BC 6K [Printset 3 of 3] SETMX .COM BAD1 1K [SETMX 1 of 3] Set parameters for Epson MX series printers. Includes ASseMbler source code. SETMX .DOC 95C8 2K [SETMX 2 of 3] SETMX .ASM D3EE 7K [SETM&'