IMD 1.16: 31/05/2007 19:50:25 FOGCPM.102 --FOGCPM102ERGO1 COMERGO1 ASMML92SET COMNECSET ASM NECSET2 COM NECSET2 ASM OKI-TST BAS#OKI-TST DOCOKI92 COMFOKI92 DOCOKI92 PAS  OKITALICCOM !"OKITALICDOC#$%OKITALICASM,&'()*+PRINTER BASo,-./0123456789PRINTER DSC:PRISM132TXT;<=>?@ABCDEFGHIJPRISM132TXT+KLMNOP-07-00 86 PRO BASsQRSTUVWXYZ[\]^_PRO-BAS DOCP`abcdefghiPRO-ADDRBAS!jklmnPRO-ADDRDOCoPROPSPACDIAWpqrstuvwxyzPROWPINS {|}~PSETUP PASPTR8023 COMPTR8023 ASM5SETOK COMSETOK DOCSETOK ASM0TALLY COMTALLY AQMQTYPE BAS TYPE DOCWSOKI DOC>-CPM102 DOC#This is the disk name. : 14(235F3Y6l0 HUSH 80 printer pgm Version 1.0 1 for Condensed 2 for Expanded 3 for Inverse 4 for Condensed off 5 for Expanded off 6 for Inverse off 0 to Reset to defaults ^C to Exit Make Selection :$͍͍ͦ͘͠͠W͠1͍͘͠W͠0͍͘͠I͠1͍͘͠I͠0͠6͍͘@͠R͍ ͦ $ condensed print selected$ condensed print deselected$ expanded print selected$ expanded print selected$ inverse print selected$ inverse print delselected$ printer default reset$ TITLE 'ERGO ergo printer mode pgm' ; ; The ergo hush 80 printer program this ; program sets the hush 80 print modes ; it is not for sale but can be shared ; as long as a profit is not made on it ; ; copyright 1985 Troy Soult ; P.O. Box 620340 ; Woodside,Ca. ; 94062 ; ; the equate table bdos equ 05h boot equ 00h prnt equ 05h scrn equ 09h cr equ 0DH lf equ 0ah reset equ '@' esc equ 1bh ; ; the start of the program org 0100h ; The begining of TPA lxi d,menu ; location of the menu call print ; Print it to screen input: mvi c,06h ; the direct I/O call mvi e,0ffh ; to get char's from call bdos ; the keyboard. cpi 03 ; compare for ^c jz quit ; if got exit the pgm cpi 31h ; is it a "1" then jz conon ; set printer for condensed cpi 34h ; is it a "4" then jz conoff ; turn off condensed cpi 32h ; is it a "2" then jz expon ; turn expanded print cpi 35h ; is it a "5" then jz expoff ; turn off expanded cpi 33h ; is it a "3" then jz invon ; turn on inversed cpi 36h ; is it a "6" then jz invoff ; turn off inversed cpi 30h ; is it a "0" then jz resetp ; reset the printer jmp input ; nothing try again ; menu: db 1ah,lf,lf,cr ; the main menu db ' HUSH 80 printer pgm'; that is displayed db lf,cr,' Version 1.0' db lf,lf,lf,cr ; at the signon db '1 for Condensed' db cr,lf db '2 for Expanded' db cr,lf db '3 for Inverse' db cr,lf db '4 for Condensed off' db cr,lf db '5 for Expanded off' db cr,lf db '6 for Inverse off' db cr,lf db '0 to Reset to defaults' db cr,lf,lf db ' ^C to Exit' db cr,lf db cr,lf,lf db lf,' Make Selection :' db '$' quit: call clrscrn ; the exit routine jmp 0000h ; conon: mvi e,0fh ; the condensed mode call print ; selection routine lxi d,conmsg call shwmsg ; conoff: mvi e,12h ;the routine to turn call print ;to turn it off (condensed) lxi d,coffmsg call shwmsg ; expon: call escape ; escape routine mvi e,57h ; load a "w" to printer call print ; print it mvi e,31h ; now a "1" call print ; print it too lxi d,eonmsg ; now load msg call shwmsg ; print it ; expoff: call escape mvi e,57h call print mvi e,30h call print lxi d,eoffmsg call shwmsg invon: call escape mvi e,'I' call print mvi e,31h call print lxi d,ionmsg call shwmsg invoff: call escape mvi e,'I' call print mvi e,30h call print lxi d,ioffmsg call shwmsg resetp: call escape mvi e,'@' call print lxi d,rstmsg call shwmsg shwmsg: mvi c,scrn ; the rountine to show call bdos ; messages to the screen call clrscrn jmp boot escape: mvi e,esc ; send a escape to the printer mvi c,prnt call bdos ret print: mvi c,prnt ; sends the char in "e" call bdos ; to the printer ret clrscrn:lxi d,clear ; this clears the screen mvi c,9 ; and exits call bdos ret clear: db 1ah,'$' ; conmsg: db lf,cr,'condensed print selected','$' ;the following are ; coffmsg:db lf,cr,'condensed print deselected','$' ; the messages used for ; eonmsg: db lf,cr,'expanded print selected','$' ; identifing the selection ; eoffmsg:db lf,cr,'expanded print selected','$' ; ionmsg: db lf,cr,'inverse print selected','$' ; ioffmsg:db lf,cr,'inverse print delselected','$' ; rstmsg: db lf,cr,'printer default reset','$' ; end msg invoff: call escape mvi e,'I' call print mvi e,30h call print lxi d,ioffmsg call shwmsg resetp: call escape mvi e,'@' call print lxi d,rstmsg call shwmsg shwmsg: mvi c,scrn ; the rountine to show call bdos ; messages to the screen call clrscrn jmp boot escape: mvi e,esc ; send a escape to the printer mvi c,prnt call bdos ret print: mvi c,prnt ; sends the char in "e" call bdos ; to the printer ret clrscrn:lxi d,clear ; this clears the screen mvi c,9 ; and exits call bdos ret clear: db 1ah,'$' ; conmsg: db lf,cr,'condensed print selected','$' ;the following are ; coff*1068 $ OKIDATA Printer options v1.3 APR 1983 0 = Correspondence mode 1 = 10 CPI 2 = 17 CPI 3 = Double Width Characters 4 = 12 CPI 5 = Data processing mode 6 = 6 LPI 7 = Launch Tomahawk Cruise Missle 8 = 8 LPI Select: $"1͆͘0!ʝ1!ʝ2!ʝ3! ʝ4!ʝ5! ʝ6!ʝ8!ʝ7͘} } ~7_#Ý; PROGRAM NECSET.ASM ; ; WRITTEN BY KENT WALKER ; OCTOBER, 1982 ; ; 8080 ASSEMBLER CODE ; USING CP/M BDOS FUNCTIONS ; ; THIS PROGRAM IS DESIGNED ; TO SET THE ; >>>>>>>>NEC-8023A-C<<<<<<<< ; 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 SO EQU 000EH ;SOCODE SI EQU 000FH ;SI 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,PICA ;TEST FOR 'B' CPI 'B' JZ LIST ; LXI H,ELITE ;TEST FOR 'C' CPI 'C' JZ LIST ; LXI H,MICRON ;TEST FOR 'D' CPI 'D' JZ LIST ; LXI H,PROP ;TEST FOR 'P' CPI 'P' JZ LIST ; LXI H,EMPH ;TEST FOR 'E' CPI 'E' JZ LIST ; LXI H,NOEMPH ;TEST FOR 'F' CPI 'F' JZ LIST ; LXI H,DBLWD ;TEST FOR '2' CPI '2' JZ LIST ; LXI H,SNGLWD ;TEST FOR '1' CPI '1' JZ LIST ; LXI H,SIXLPI ;TEST FOR '6' CPI '6' JZ LIST ; LXI H,EITLPI ;TEST FOR '8' CPI '8' 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 ;MOVE 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,'NEC-8023 PRINTER FUNCTIONS',CR,LF,LF DB TAB,'B = 10 CHARACTERS PER INCH',CR,LF DB TAB,'C = 12 CHARACTERS PER INCH',CR,LF DB TAB,'D = 17 CHATACTERS PER INCH',CR,LF DB TAB,'P = PROPORTIONAL SPACING' ,CR,LF,LF DB TAB,'E = EMPHASIZED PRINT' ,CR,LF DB TAB,'F = NON-EMPHASIZED PRINT' ,CR,LF,LF DB TAB,'2 = DOUBLE WIDTH PRINT' ,CR,LF DB TAB,'1 = SINGLE WIDTH PRINT' ,CR,LF,LF DB TAB,'6 = 6 LINES PER INCH' ,CR,LF DB TAB,'8 = 8 LINES PER INCH' ,CR,LF,LF DB '$' ; ; TABLE OF PRINTER ESCAPE CODES ; PICA DB ESC,'N$' ELITE DB ESC,'E$' MICRON DB ESC,'Q$' PROP DB ESC,'P$' EMPH DB ESC,'!$' NOEMPH DB ESC,'"$' DBLWD DB SO, '$' SNGLWD DB SI, '$' SIXLPI DB ESC,'A$' EITLPI DB ESC,'B$' ; ; STACK AREA ; DS 10H STACK ; END G A CPI '$' ;IS IT THE TERMINATOR ($) ? JZ LOOP ;RETURN IF YES JMP LIST ;ELSE REPEAT ; ; END OF SUBROUTINE ; ; ; MESSAGES ; MESAGE DB CLRSCR,TAB,'NEC-8023 PRINTER FUNCTIONS',CR,LF,LF DB TAB,'B = 10 CHARACTERS PER INCH',CR,LF DB TAB,'C = 14 _{ .  $ NEC-8023 PRINTER FUNCTIONS [r.d.arkush, 11/84] N = Pica (10 characters per inch) E = Elite (12 characters per inch) P = Proportional type Q = Condensed (17 characters per inch) ! = Enhanced print " = Non-enhanced ^N = Double width characters ^O = Normal " " Lnnn = Left margin at nnn (e.g., L008 for 8 spaces in) A = 6 Lines per inch (normal) line spacing B = 8 Lines per inch line spacing Tnn = Line height of nn/144s of an inch Be sure to use capitals where indicated. Turn on printer. Press ^C to quit. ==> $; NECSET.ASM ; by david arkush, 11/84 ; ; PROGRAM TO SET A NEC-8023 OR C.ITOH ; PROWRITER PRINTER VIA KEYBOARD INPUT. ; ; INPUT IS TERMINATED BY A CARRIAGE RETURN. ; ORG 100H BDOS EQU 0005H CR EQU 000DH ;CARRIAGE RETURN LF EQU 000AH ;LINE FEED TAB EQU 0009H ;TAB CHARACTER CLRSCR EQU 001AH ;CLEAR SCREEN - CTRL Z ; LXI SP,STACK ;SET UP STACK LXI D,MESSAGE ;POINT TO MESSAGE MVI C,9 ;PRINT STRING FUNCTION CALL BDOS ; LOOP MVI C,1 ;CONSOLE INPUT FUNCTION CALL BDOS ;GET CHARACTER CPI 3 ;TEST FOR ^C JZ 0 ;IF YES, QUIT MOV E,A ;ELSE MOVE IT TO E PUSH D ;SAVE IT MVI C,5 ;SEND TO PRINTER CALL BDOS ; POP D ;GET IT BACK MOV A,E CPI 01BH ;TEST FOR ESC. JNZ LOOP ;IF NOT, GET ANOTHER CHAR. ; LXI D,ESCMSG ;IF YES, ECHO ESCMSG TO SCREEN MVI C,9 ;PRINT STRING FUNCTION CALL BDOS JMP LOOP ESCMSG DB '$' ; MESSAGE DB CLRSCR,TAB,'NEC-8023 PRINTER FUNCTIONS',TAB,TAB,'[r.d.arkush, 11/84]',CR,LF,LF DB 'N = Pica (10 characters per inch)',CR,LF DB 'E = Elite (12 characters per inch)',CR,LF DB 'P = Proportional type' ,CR,LF DB 'Q = Condensed (17 characters per inch)',CR,LF,LF DB '! = Enhanced print' ,CR,LF DB '" = Non-enhanced' ,CR,LF DB ' ^N = Double width characters',CR,LF DB ' ^O = Normal " "' ,CR,LF,LF DB 'Lnnn = Left margin at nnn (e.g., L008 for 8 spaces in)',CR,LF DB 'A = 6 Lines per inch (normal) line spacing',CR,LF DB 'B = 8 Lines per inch line spacing',CR,LF DB 'Tnn = Line height of nn/144s of an inch',CR,LF,LF DB TAB,'Be sure to use capitals where indicated.',CR,LF DB TAB,'Turn on printer.',CR,LF DB TAB,'Press ^C to quit.',CR,LF,LF DB '==> $' ; ; STACK AREA ; DS 10H STACK ; END TAB,'Turn on printer.',CR,LF DB TAB,'Press ^C to quit.',CR,LF,LF DB '==> $' ; ; STACK AREA ; DS CLRSCR,TAB,'NEC-8023 PRINTER FUNCTIONS',TAB,TAB,'[r.d.arkush, 11/84]',CR,LF,LF DB 'N = Pica (10 characters per inch)',10 REM PROGRAM NAME IS OKI-TST by Terry Whalin 20 PRINT CHR$(26) 30 PRINT:PRINT:PRINT " OKIDATA TESTING PROGRAM ":PRINT:PRINT 40 PRINT "This program tests the various print features of " 50 PRINT "the Okidata Microline 92 and 93 printers. The " 60 PRINT "various type possibilities will print on your " 70 PRINT "Okidata only if the printer is properly hooked " 80 PRINT "up and turned on. The basic information for this " 90 PRINT "program is taken from Okidata manual Chapter 4 " 100 PRINT "entitled 'Bells and Whistles' pages 63-89. " 110 PRINT 120 PRINT "NOTE The program is designed to pause for adding " 130 PRINT "another sheet of paper but works faster with two " 140 PRINT "connected pages of fan fold computer paper." 150 PRINT "Good testing!" 160 PRINT 170 PRINT 180 PRINT "PLEASE TURN ON YOUR PRINTER & PRESS ANY KEY TO BEGIN" 190 Y$=INPUT$(1) 200 LPRINT CHR$(30);"HELLO! This is normal printing" 210 LPRINT CHR$(31);"HELLO! This is double the normal width." 220 LPRINT 230 LPRINT 240 LPRINT CHR$(30);"Here is an example of various character sizes." 250 LPRINT 260 LPRINT "PICA pica 10 CPI" 270 LPRINT CHR$(28);"ELITE elite 12 CPI" 280 LPRINT CHR$(29);"CONDENSED condensed 17.1 CPI" 290 LPRINT CHR$(30);"PICA again" 300 LPRINT CHR$(31);"DOUBLE Pica" 310 LPRINT CHR$(28);CHR$(31);"DOUBLE Elite" 320 LPRINT CHR$(29);CHR$(31);"DOUBLE Condensed" 330 LPRINT CHR$(30);"Pica ";CHR$(28);"Elite ";CHR$(29);"Condensed ";CHR$(30);"Pica again" 340 LPRINT 350 LPRINT CHR$(27);CHR$(49);"Correspondence Quality printing" 360 LPRINT 370 LPRINT "PICA pica 10 CPI" 380 LPRINT CHR$(28);"ELITE elite 12 CPI" 390 LPRINT CHR$(29);"CONDENSED condensed 17.1 CPI" 400 LPRINT CHR$(30);"PICA again" 410 LPRINT CHR$(31);"DOUBLE Pica" 420 LPRINT CHR$(28);CHR$(31);"DOUBLE Elite" 430 LPRINT CHR$(29);CHR$(31);"DOUBLE condensed" 440 LPRINT CHR$(30);"Pica ";CHR$(28);"Elite ";CHR$(29);"Condensed ";CHR$(30);"Pica again" 450 LPRINT 460 LPRINT CHR$(27);CHR$(48);"Data Processing" 470 LPRINT 480 LPRINT "PICA pica 10 CPI" 490 LPRINT CHR$(28);"ELITE elite 12 CPI" 500 LPRINT CHR$(29);"CONDENSED ondensed 17.1 CPI" 510 LPRINT CHR$(30);"PICA again" 520 LPRINT CHR$(31);"DOUBLE Pica" 530 LPRINT CHR$(28);CHR$(31);"DOUBLE Elite" 540 LPRINT CHR$(29);CHR$(31);"DOUBLE Condensed" 550 LPRINT CHR$(30);"Pica ";CHR$(28);"Elite ";CHR$(29);"Condensed ";CHR$(30);"Pica again" 560 LPRINT 570 LPRINT CHR$(27);CHR$(49);"Character spacing (Correspondence quality only)" 580 LPRINT "NORMAL SPACING - 3/120 IN." 590 LPRINT CHR$(27);CHR$(78);CHR$(11); 600 LPRINT "SPACING 14/120 IN." 610 LPRINT CHR$(27);CHR$(78);CHR$(0); 620 LPRINT "NORMAL SPACING AGAIN" 630 LPRINT CHR$(27);CHR$(48); "Back to Data processing" 640 LPRINT 650 LPRINT "The following is to test line spacing:" 660 LPRINT CHR$(27);"1" 670 FOR I=1 TO 6 680 LPRINT "6 lines per inch" 690 NEXT I 700 LPRINT CHR$(27);"8" 710 FOR J=1 TO 8 720 LPRINT "8 lines per inch" 730 NEXT J 740 PRINT CHR$(26):PRINT:PRINT 750 INPUT "Clean sheet of paper in position (Y or N) ";N$ 760 IF N$="Y" THEN GOTO 800 770 IF N$="y" THEN GOTO 800 780 IF N$="N" THEN GOTO 750 790 IF N$="n" THEN GOTO 750 800 FOR K=0 TO 15 810 LPRINT CHR$(27); "%9";CHR$(K); 820 LPRINT "variable line spacing" 830 NEXT K 840 LPRINT CHR$(27);"6" 850 LPRINT "Return to 6 lines per inch" 860 LPRINT "6 lines per inch" 870 LPRINT 880 LPRINT CHR$(27);CHR$(48); "EMPHASIZED and ENHANCED print" 890 LPRINT "only in the Data mode ":LPRINT 900 LPRINT "The word ";CHR$(27);CHR$(84);"Emphasized ";CHR$(27);CHR$(73);"is in emphasized print." 910 LPRINT CHR$(27);CHR$(84);"This whole like is emphasized.";CHR$(27);CHR$(73) 920 LPRINT "The word ";CHR$(27);CHR$(72);"enhanced ";CHR$(27);CHR$(73);"is enhanced print." 930 LPRINT CHR$(27);CHR$(84);CHR$(27);CHR$(72);"Emphasized and Enhanced together,";CHR$(27);CHR$(73);"normal" 940 LPRINT 950 LPRINT "UNDERLINING" 960 LPRINT 970 LPRINT "Start ";CHR$(27);CHR$(67);"underlined printing";CHR$(27);CHR$(68); " stop" 980 LPRINT 990 LPRINT "SUPERSCRIPTS & SUBSCRIPTS":LPRINT 1000 LPRINT "OKIGRAPH";CHR$(27);CHR$(74);"tm";CHR$(27);CHR$(76);" H";CHR$(27);CHR$(76);"2";CHR$(27);CHR$(74);"0" 1010 LPRINT 1020 LPRINT "DIRECT LINE SKIP" 1030 LPRINT "FIRST LINE"; 1040 LPRINT CHR$(27);CHR$(11);"05";"SKIPPED FIVE LINES" 1050 LPRINT 1060 END "DIRECT LINE SKIP" 1030 LPRINT "FIRST LINE"; 1040 LPRINT CHR$(27);CHR$(11);"05";"SKIPPED FIVE LINES" 105ED and ENHANCED print" 890 LPRINT "only in the Data mode ":LPRINT 900 LPRINT "The word ";CHR$(27);CHR$(84);"Emphasized ";CHR$(27);CHR$(73);"is in emphasized print." 910 LPRINT CHR$(27);CHR$(84);"This whole like is emphasized.";CHR$(27);CHR$(73) 920 LPRINT "The word ";CHR$(27);CHR$(72);"enhanced ";CHR$(27);CHR$(73);"is enhanced print." 930 LPRINT CHR$(27);CHR$(84);CHR$(27);CHR$(72);"Emphasized and Enhanced together,";CHR$(27);CHR$(73);"normal" 940 LPRINT 950 LPRINT "UNDERLINING" 960 LPRINT 970 LPRINT "Start ";CHR$(27);CHR$(67);"underlined printing";CHR$(27);CHR$(68); " stop" 980 LPRINT 990 LPRINT "SUPERSCRIPTS & SUBSCRIPTS DOCUMENTATION FOR OKI-TST.BAS by W. Terry Whalin Thi progra test th variou prin feature o th Okidat Microlin 9 an 9 printers Th variou typ possibilitie wil prin o you Okidat onl i th printe i properl hooke u an turne on Th basi informatio fo thi progra i take fro Okidat manua Chapte entitled 'Bells and Whistles' pages 63-89. NOTŠ Th progra i designe t paus fo addin anothe shee o pape bu work faste wit tw connecte page o fa fol compute paper. Good testing!  ͫCopyright (C) 1985 BORLAND IncB Osborne 1al selectedP)(= ERT()~7#~= oͦkԄ!!"~#(}:$= +*!5!*!!:(2!5:(>2!!!:O::O:!*! !45(! +/ 0y0( d!k5!{5__o&  :(͠|(  *"x2y( >28!"9!! og2"">~22 9/4*9 Co&ͦͣ} [ (!e{ͦA8Q0G: x@!\w# (͂ ?(*( .( w^. ^!h6# (?( *( ͂( w#>?> w#ͦ 8 !ɿ .,;:=?*[]<>{}a{ |ʹ}ͽƐ'@'7||}>2ͯ*Bڨ  "og"2>2! ""*B"[Ru*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#Eͺw}8' RB0 >' RqRR!+ Ͱ R!+ Ͱ r!+ Ͱ r!+ Ͱ r!# Ͱ r!+ Ͱ T]KB!z> S>))0 = | |̀̀DMgo>jB0 7?= H͒<z5a)a<z {0Gɯgo||~}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'd } ) W _}8(8J`9{T]=o`9y ) >' ́ ͬ͗ }>' xˆ }} ˸T}ٕ(0D=z ,= ( ͒ 0%{ , 7 ?(8ͬ x ͆ - r 8˸x ͏  ,-xG}r }مM 9r .>#n0͒ { = - nx ͇ ,-(-˸G,-r }ٕ?M 9.> 8ͬ ?= u+-(>͆ 0ͬ ͆ 8 ?x ͇ , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx( ?}ٽ }ցr <(r 7{ = |٤g{٣_z٢Wy١Ox٠G{ ͬ ́ }x>' ͬ}ƀ/ƀo -́ }0͎-́ ͎,}l˸ 8 4 ͗ x( - 8́ - 8,́ }l8;*!͗ ! >4ͬ͗ ͗ ͬ--- ́ ,,,-xGg?+2n*8t z~,->' x' ͘}. ͆́ , ! >4,͢- o&0%,͗ }gr }؉}颋.:}8c~I$I~L*͢ٷx˸ }0G,<},-(-́ !>I0 ͗͘ o8 ͆ >' m.`1pF,t6|!wS<.z}[|%FXc~ur1}͆ٯx(<˸ 8 !~J 0.O!>s 8 =  n s͗ ͆ .n 0 ͎-́ OT0 j oD,:j !I}袋.}8c~I$I~L! >ͬ͗ I× nn ͗ = ͆ nf^VNF!DLT\I!!53!r1!͒!> x #-= o˸x͆(- }(x>8(z ,z `iÃ!>' |r |̀>)=|(DMbo˸88x(0 8> ̀x(>-{(ay( z(>. ( {>E>+|(|Dg>-|/ 0:p# ~# +>0w#,-  60#}˸}րogM| .(z = ~> x0w#xG%͇ %͇ ZJDM%͇ = _~65+~hìx-Sx9?+{Η@}|z z gZJDM0{ ,7}o˸? #yO!@9i&?  #?w#?/w#?w#!9! E9!!9~(+Fͺ!"9!(#>2*"| >"2:( Ͷ *w*6 !\$![ (ͦ( #:~CONTRMKBDLSTCAUXUSR>2i:*ˮ~0:*:(@q##pZ* :(  ~* < >26"!"""~>2""v>2>"!"ˮ(!~8>~O6~*"w(6(2(-()(6 (8 0 :(* y(~#+ (( 66 #6 #"*: y~o p .##~ͺ(.6w4._~ =*##55= *[R8*~#"= ͣ}== ͯ}͵}*#w+#~+>*~('k!0(ˮ]k!8ˮ!]~-#8~>27kˮw>O$6̃s #r$ͣ6̏ k ( (ˮ qk(ˮ ( k ˮ*O:~ ##~._q4((=ʦ==ʩ=ʬò*:4^q*##~6ͺ>2}*|(̓|( ̓6-#[RM8( G> A~#*'C! !TRUEFALSE!9N#Y~#( G~#> >    "~(kѻ(( !0 (ˮ!!>2Sz:0:*6##ww#w$w#w:  ##N#F*B>2w#w#[s#r> "~ͮ*-w#ww##> ͮÁ""~>2:ZR0 *4#4>2:ZR> *4 #4(> >22*f(/˦:G(##~++ :O x yC!ͺ Q*:G(##~._.͚f<\=<͚*##w ͮ +4 #4x >>2:G("ͮ"*nˮ*0 SZѷR8@* N#F#s#r, 0})jS\*##w+ N#FB ͮr+s>2!T]>)j)0 0= ]R!#]*^#V#N#F#^#V>2Ͱ:0:*6 #-Nw#Fwq#p#6#w#w#w"~Á>">!DM!":*B:!>(>2>">!"2"~ʰ*w#wx(9* :O *-4 #4!*4 #4 *-N#Fq#pV+^Bq#pSZѷR&* s#r$ s#rL <?*L!\  <( !\$>2>2L:>!(* \$\<(!3: [1ð\!(7"~> 2"S"Ns#FrB(Z#\: \<(?*"}K\! !*}#"}! x \* *>) 2""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* uKB!0>' ~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6#K*K*!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#V""6#>O"w2x2*"!F"" &y*"*>2"*"!F"""!\*: Nr!~6go(\R*s#r_2x( s x(T]DMx(R0 U(͝O/o&9q# (!>F0#( ~ ( #]( ~ ( (#}(  i&T-a%â}ͦo*!~6o&|:2 2}:__zѯ2*|KB " z ^C User break+=  I/O Run-time error {ʹ, PC=*ͯNot enough memory Program aborted :ʎ'1!d!#d>"0168 >͛ͺ! OKIDATA PRINT CONTROL UTILITY ͛ͺ! Bob Scott  ͛ ͛ͺ0 (or RETURN) Exit program ͛ ͛ͺ 1 Draft mode ͛ͺ 2 NLQ mode ͛ͺ3 6 lines per inch ͛ͺ4 8 lines per inch ͛ͺ 5 10 CPI ͛ͺ 6 12 CPI ͛ͺ 7 17 CPI ͛ͺ8 Top of form ͛ͺ9 Clear printer ͛ k!ͺͺInput selection: ̈́;!!ͩ!l͎ !l:ͣ!E&#!0e.!l!l:!v!n*n!E"! *v)^#V"p!*pfzʝ#"r!!*v))*r+)^#V"t!ͺ*t" *r#b#!ͺ!["*v!&ͺ]  *v!E"> V"p!*pfz"r!!*v))*r+)^#:2 2}:__zѯ2*|KB " z ^C User break+=  I/O Run-time error {ʹ, PC=*ͯNot enough memory Program aborted :ʎ'1!d!#d>" OKI92.PAS is a Turbo pascal program to set options on the Oki 80 and 90 series printers. It is easy to modify for other printers by changing the menu items and control codes. The program handles both one and two byte control sequences as written, and would be easy to modify for longer lengths. The .COM file is a CP/M complied version for those without access to a TURBO compiler. Bob Scott  for longer lengths. The .COM file is a CP/M complied version for those without access to a TURBO cprogram setprt; { menu driven okidata 92 setup utility } { author: bob scott date: dec 85 } const {len: is the length of the control seqs (one or two bytes)} {control: is the actual control sequences} len : array [0..9] of integer = (1,2,2,2,2,1,1,1,1,1) ; control : array [0..9,1..2] of integer = ( (0,0),(27,48),(27,49),(27,54),(27,56),(30,0),(28,0), (29,0),(12,0),(24,0) ); var selection, out, i, lim, code : integer; user_input : string [1]; procedure print_menu; begin clrscr; writeln (' OKIDATA PRINT CONTROL UTILITY'); writeln (' Bob Scott '); writeln ; writeln ('0 (or RETURN) Exit program'); writeln; writeln ('1 Draft mode'); writeln ('2 NLQ mode'); writeln ('3 6 lines per inch'); writeln ('4 8 lines per inch'); writeln ('5 10 CPI'); writeln ('6 12 CPI'); writeln ('7 17 CPI'); writeln ('8 Top of form'); writeln ('9 Clear printer'); writeln; lowvideo; write (con,'Input selection:'); normvideo; end; begin print_menu; repeat repeat read (kbd,user_input); if length (user_input) = 0 then user_input := '0'; val (user_input,selection,code); until code=0; lim := len[selection]; for i:=1 to lim do begin out:=control[selection, i]; write (lst,chr(out)); end; write (con,'[',selection,'] '); until selection=0; clrscr; end. ob Scott '); writeln ; writeln ('0 (or RETURN) Exit program'); writeln; writeln ('1 Draft mode'); writeln ('2 NLQ mode'); writeln ('3 6 lines per inch'); writeln ('4 8 lines per inch'); writeln ('5 10 CPI'); writeln ('6 12 CPI'); writeln ('7 17 CPI'); writeln ('8 Top of form'); writeln ('9 Clear printer! ~_# %A %A!@%A"%A#``%A$$b#%A%A"D"A %A&0BH"P%A'%A(8D%A)@ %A* (%A+( %D,@(%A-%A.@ @ %A/@ %A08BA!%A1@bF%A2@`PH%A3 AIM2%A4b%A5 AA!%A60HHH0%A7@! %A80FAA1%A9@  %A:@(D(%D;@* %A<$@%A=%A>@ %A?@%A@8BHD%AA@ %AB`FHH1%AC8DAA!%AD`F@ %AE`CAA%AF`%AG8DAI %AH``%AI@aG%AJ0@@ %AK`"@%AL`F@@%AM` b%AN``%AO0LAA %AP` %AQ8BQ!P%AR`(A%AS FII1%ATa%AU0L@@0 %AV %AW`#`%AX@!$@%AYd%AZ@ QIE%A[`F@%A\ 0@%A]@@`%A^%D_@@@@@%A`%Aa PPP$X%Ab`GD$%Ac0@@@%Ad0@@`%Ae0H@@%Afd%Dg RQ1 %Ah`d%Ai@dD%Dj %Ak` H%Al@`F%Amd`d%And`%Ao0H@$%Dp` %Dq q %Ar`%As@@@ %At0LD%Au0L@@0L%Av| %Awp  `%Ax@$ H%DyB$%Az@dTL%A{ XA%A|@ %A}@A0 %A~%AX$BI! Character download complete $%A@8BHD%AA@ %AB`FHH1%AC8DAA!%AD`F@ %AE`CAA%AF`%AG8DAI %AH``%AI@aG%AJ0@@ %AK`"@%AL`F@@%AM` b%AN``%AO0LAA %AP` %AQ8BQ!P%AR`(A%AS FII1%ATa%AU0L@@0 %AV %AW`#`%AX@!$@%AYd%AZ@ QIE%A[`F@%A\ 0@%A]@@`%A^%D_@@@@@%A`%Aa PPP$X% (METTS-G.OKI) OKITALIC.COM for CP/M & Okidata 92/93 AUTHOR: Glenn Metts Fog Member #10220 Osborne Users Club of Houston (OUCH) OKITALIC downloads an italic character set to the "downline loadable character generator." Italics can then be used with WordStar or any other program by sending the sequence 1Bh,32h (ESC 2) to the printer. Although it has been used on an Osborne 1 DD with an Okidata ML92 with a parallel interface, it should run on any CP/M system with the ML92 or 93 printer with serial or parallel interface. This is the same as the Epson FX italic characters except that the lower case "j" has no dot. The italics can be printed in 10, 12 or 17 cpi (normal or double width), superscript or subscript, or underlined by combining control codes. Listed below are the patches I use with WordStar 2.26. The only tricky one is ^PR (double width characters). Evidently, WordStar doesn't send the ^PN sequence unless a ^PA has been previously encountered in the text (and vice versa). Since the ^Px sequence is needed to shift from double-width back to normal width, it is necessary to put in ^PA^PN to shift back to 10 cpi or ^PN^PA to shift back to 12 cpi. You can avoid the hassle if you don't need double-width by leaving the code out for USER4:. Italics are started with ^PE and ended with ^PW (for data processing mode) or ^PQ (for correspondece mode). Label Contents (Hex) Command Action PALT: 01,1C,0,0,0 ^PA Starts 12 cpi & cancels double-width PSTD: 01,1E,0,0,0 ^PN Starts 10 cpi & cancels double-width ROLUP: 02,1B,4A,0,0 ^PT Starts superscripts or ends subscripts ROLDOW: 02,1B,4C,0,0 ^PV Starts subscripts or ends superscripts USR1: 02,1B,31,0,0 ^PQ Starts correspondence quality mode USR2: 02,1B,30,0,0 ^PW Starts data processing mode USR3: 02,1B,32,0,0 ^PE Starts italics USR4: 01,1F,0,0,0 ^PR Starts double-width letters RIBBON: 02,1B,43,0,0 ^PY Starts continuous underline RIBOFF: 02,1B,44,0,0 ditto Cancels continuous underline PSINIT: 02,18,0D,0,0,0, 0,0,0,0,0,0,0, Initializes printer with and 0,0,0 "clear buffer" If you are using the ML92 with pin-feed, as I do most of the time, the following changes may be useful. They reset the top margin to zero and the bottom margin to 11 lines. Since the tear bar is an inch above the print head, Wordstar can start and finish with the paper perforations at the tear bar, while leaving a one-inch top margin and a half-inch bottom margin. INITPF:+5 0,0,0 Sets top margin to zero lines INITPF:+D 0B,58,0 Sets bottom margin to 11 lines s correspondence quality mode USR2: 02,1B,30,0,0 ^PW Starts data processing mode USR3: 02,1B,32,0,0 ^PE Starts italics USR4: 01,1F,0,0,0 ^PR Starts double-width letters RIBBON: 02,1B,43,0,0 ^PY Starts continuous underline RIBOFF: 02,1B,44;okitalic.asm 10/23/84 ;by Glenn Metts FOG Member #10220 bdos equ 5 ; Register Usage outpr equ 5 ; BC | | bdos call | conbuff equ 9 ; DE | | output char.| cr equ 13 ; HL | pointer for output data | lf equ 10 ; org 0100h ;start lxi h,italics ;initialize pointer begin: mov a,m ;get a byte cpi 255 ;end of data? jz done ;yes, print confirmation mov e,a ;prepare to send mvi c,outpr ;to printer push h ;save pointer call bdos ;send pop h ;retrieve pointer inx h ;increment pointer jmp begin ;return done: lxi d,confirm ;prepare to send confirmation mvi c,conbuff ;to console call bdos ;send jmp 0000h ;exit and re-boot italics: db 27,37,65,32,0,0,0,0,0,0,0,0,0,0,0 ;sp db 27,37,65,33,0,0,64,0,16,8,4,2,1,0,0 ;e p db 27,37,65,34,0,0,4,2,1,0,4,2,1,0,0 ;" db 27,37,65,35,0,20,96,28,3,20,96,28,3,20,0 ;# db 27,37,65,36,0,0,36,8,98,28,35,8,18,0,0 ;$ db 27,37,65,37,0,2,65,34,17,8,68,34,65,32,0 ;% db 27,37,65,38,0,48,8,66,5,72,21,34,80,8,0 ;& db 27,37,65,39,0,0,0,0,0,2,1,0,0,0,0 ;' db 27,37,65,40,0,0,0,0,56,68,2,0,1,0,0 ;( db 27,37,65,41,0,0,64,0,32,17,14,0,0,0,0 ;) db 27,37,65,42,0,8,32,10,20,8,20,40,2,8,0 ;* db 27,37,65,43,0,8,0,40,16,8,4,10,0,8,0 ;+ db 27,37,68,44,0,0,64,16,40,16,8,0,0,0,0 ;, db 27,37,65,45,0,8,0,8,0,8,0,8,0,8,0 ;- db 27,37,65,46,0,0,0,64,32,64,32,0,0,0,0 ;. db 27,37,65,47,0,0,64,32,16,8,4,2,1,0,0 ;/ db 27,37,65,48,0,56,4,66,0,65,0,33,16,14,0 ;0 db 27,37,65,49,0,0,64,0,98,24,70,1,0,0,0 ;1 db 27,37,65,50,0,64,2,96,1,80,1,72,1,6,0 ;2 db 27,37,65,51,0,32,0,65,0,73,0,77,50,1,0 ;3 db 27,37,65,52,0,16,8,16,4,16,98,28,3,16,0 ;4 db 27,37,65,53,0,32,6,65,4,65,4,33,24,1,0 ;5 db 27,37,65,54,0,48,72,4,72,2,72,1,48,0,0 ;6 db 27,37,65,55,0,1,64,33,16,9,4,1,2,1,0  ;7 db 27,37,65,56,0,48,70,8,65,8,65,8,49,6,0 ;8 db 27,37,65,57,0,6,64,9,32,9,16,9,6,0,0 ;9 db 27,37,65,58,0,0,0,64,40,68,40,4,0,0,0 ;: db 27,37,68,59,0,0,64,16,42,17,10,1,0,0,0 ;; db 27,37,65,60,0,0,8,16,36,64,2,0,1,0,0 ;< db 27,37,65,61,0,16,4,16,4,16,4,16,4,0,0 ;= db 27,37,65,62,0,0,64,0,32,1,18,4,8,0,0 ;> db 27,37,65,63,0,2,64,1,16,1,8,1,6,0,0 ;? db 27,37,65,64,0,56,4,66,1,72,17,68,17,14,0 ;@ db 27,37,65,65,0,64,32,16,8,20,2,17,0,127,0 ;A db 27,37,65,66,0,96,25,70,1,72,1,72,49,6,0 ;B db 27,37,65,67,0,56,68,2,65,0,65,0,33,2,0 ;C db 27,37,65,68,0,96,25,70,1,64,1,32,17,14,0 ;D db 27,37,65,69,0,96,28,67,8,65,8,65,0,1,0 ;E db 27,37,65,70,0,96,28,3,8,1,8,1,0,1,0 ;F db 27,37,65,71,0,56,68,2,65,0,73,32,25,2,0 ;G db 27,37,65,72,0,96,28,3,8,0,8,96,28,3,0 ;H db 27,37,65,73,0,0,64,0,97,24,71,0,1,0,0 ;I db 27,37,65,74,0,48,64,0,64,1,32,25,6,1,0 ;J db 27,37,65,75,0,96,28,3,8,4,16,34,64,1,0 ;K db 27,37,65,76,0,0,96,24,70,1,64,0,64,0,0 ;L db 27,37,65,77,0,96,28,3,0,12,0,98,28,3,0 ;M db 27,37,65,78,0,96,28,3,4,8,16,96,28,3,0 ;N db 27,37,65,79,0,48,76,2,65,0,65,32,25,6,0 ;O db 27,37,65,80,0,96,24,6,9,0,9,0,9,6,0 ;P db 27,37,65,81,0,56,4,66,0,81,0,33,80,14,0 ;Q db 27,37,65,82,0,96,24,6,1,8,17,40,65,6,0 ;R db 27,37,65,83,0,32,70,0,73,0,73,0,49,2,0 ;S db 27,37,65,84,0,1,0,97,24,7,0,1,0,1,0 ;T db 27,37,65,85,0,48,76,3,64,0,64,48,12,3,0 ;U db 27,37,65,86,0,0,127,0,32,16,8,4,2,1,0 ;V db 27,37,65,87,0,96,28,35,16,8,16,96,28,3,0 ;W db 27,37,65,88,0,64,33,18,4,24,36,64,2,1,0 ;X db 27,37,65,89,0,1,2,100,24,0,4,0,2,1,0 ;Y db 27,37,65,90,0,64,32,81,0,73,0,69,2,1,0 ;Z db 27,37,65,91,0,0,96,24,70,1,64,1,0,1,0 ;[ db 27,37,65,92,0,0,0,3,12,48,64,0,0,0,0 ;\ db 27,37,65,93,0,64,0,64,1,96,25,6,1,0,0 ;] db 27,37,65,94,0,0,4,0,2,0,1,2,4,0,0 ;^ db 27,37,68,95,0,64,0,64,0,64,0,64,0,64,0 ;_ db 27,37,65,96,0,0,0,0,1,2,0,0,0,0,0 ; db 27,37,65,97,0,32,80,4,80,4,80,36,88,0,0 ;a db 27,37,65,98,0,96,24,71,0,68,0,36,24,0,0 ;b db 27,37,65,99,0,48,8,64,4,64,4,64,4,0,0 ;c db 27,37,65,100,0,48,8,64,4,64,4,96,28,3,0 ;d db 27,37,65,101,0,48,72,20,64,20,64,20,8,0,0 ;e db 27,37,65,102,0,4,0,100,24,6,0,5,0,1,0 ;f db 27,37,68,103,0,12,82,0,81,0,49,12,3,0,0 ;g db 27,37,65,104,0,96,24,7,0,4,0,100,24,0,0 ;h db 27,37,65,105,0,0,64,0,100,24,68,1,0,0,0 ;i db 27,37,68,106,0,32,0,32,0,25,6,1,0,0,0 ;j db 27,37,65,107,0,96,24,6,17,32,72,0,4,0,0 ;k db 27,37,65,108,0,0,64,0,96,25,70,1,0,0,0 ;l db 27,37,65,109,0,100,24,4,96,28,0,100,24,0,0 ;m db 27,37,65,110,0,100,24,4,0,4,96,24,0,0,0 ;n db 27,37,65,111,0,48,72,0,4,64,0,36,24,0,0 ;o db 27,37,68,112,0,96,28,3,16,1,16,9,6,0,0 ;p db 27,37,68,113,0,12,18,0,17,0,113,12,3,0,0 ;q db 27,37,65,114,0,96,28,0,8,4,0,4,0,0,0 ;r db 27,37,65,115,0,64,8,64,20,64,20,32,4,0,0 ;s db 27,37,65,116,0,0,4,48,76,3,68,0,4,0,0 ;t db 27,37,65,117,0,48,76,0,64,0,64,48,76,0,0 ;u db 27,37,65,118,0,0,124,0,32,0,16,8,4,0,0 ;v db 27,37,65,119,0,112,12,32,0,24,32,0,96,28,0 ;w db 27,37,65,120,0,64,0,36,8,16,32,72,0,4,0 ;x db 27,37,68,121,0,1,66,36,16,8,4,2,1,0,0 ;y db 27,37,65,122,0,64,0,100,0,84,0,76,0,4,0 ;z db 27,37,65,123,0,0,8,32,88,6,65,0,1,0,0 ;l br db 27,37,65,124,0,0,64,32,16,4,2,1,0,0,0 ;| db 27,37,65,125,0,0,64,0,65,48,13,2,8,0,0 ;r br db 27,37,65,126,0,2,1,0,1,2,4,0,4,2,0 ;tilde db 27,37,65,127,0,88,36,66,16,73,4,33,18,13,0 ;0 db 255 confirm: db 'Character download complete',cr,lf,'$' end ,0,100,24,4,96,28,0,100,24,0,0 ;m db 27,37,65,110,0,100,24,4,0,4,96,24,0,0,0 ;n db 27,37,65,111,0,48,72,0,4,64,0,36,24,0,0 ;o db 27,37,68,112,0,96,28,3,16,1,16,9,6,0,0 ;p db 27,37,68,113,0,12,18,0,17,0,113,12,3,0,0 ;q db 27,37,65,114,0,96,28,0,8,4,0,4,0,0,0 ;r db 27,37,65,115,0,64,8,64,20,64,20,32,4,0,0 ;s db 27,37,65,116,0,0,4,48,76,3,68,0,4,0,0 ;t db 27,37,65,117,0,48,76,0,64,0,64,48,76,0,0 ;u db 27,37,65,118,0,0,124,0,32,0,16,8,4,0,0 ;v db 27,37,65,119,0,112,12,32,0,24,32,0,100 S1$="*******************PRINTER***********************" 110 S2$=" " 120 S3$="PRINTER configures the PRISM 80 or 132 for" 130 S4$="software programmable parameters..." 140 S5$="Brian C. Dugle, Major, USAF, 21 Nov 82" 150 S6$=" " 160 S7$="*************************************************" 170 REM 180 REM ******INITIALIZE DEFAULT PARAMETERS******* 190 REM 200 PW=8.5: REM PW= page width (inches) 210 PL=11: REM PL= paper length (inches) 220 PS=.25: REM PS= paper offset from left edge printline (inches) 230 ML=1.5: REM ML= left margin (inches) 240 MR=1: REM MR= right margin (inches) 250 MB=0: REM MB= bottom margin (inches) 260 CPI%=0: REM CPI%= char per inch 270 PRPL%=0: REM PRPL%= proportional selector 280 JUST%=0: REM JUST%= justify selector 290 MODE%=2: REM MODE%= print mode selector (normal/expanded) 300 FONT%=1: REM FONT%= font selection 310 TH%=0: REM TH%= number of horiz tabs 320 TV%=0: REM TV%= number of vert tabs 330 LF%=8: REM LF%= linefeed size (48th s) 340 N=0: REM N= initial paper feed (lines) 350 ROLUP%=4: REM ROLUP%= superscript linefeed (48ths) 360 ROLDOW%=4: REM ROLDOW%=subscript linefeed (48ths) 370 REM B= linefeed input 380 REM J%= gosub counter 390 REM K%= counter for tab loop 400 REM MB%= bottom margin position (48ths) 410 REM ML%= left margin position (120ths) 420 REM MR%= right margin position (120ths) 430 REM S= temp tab position (inches) 440 REM TBH%= horiz tab position (120ths) 450 REM TBV%= vert tab position (48ths) 460 REM V%= choice, configuration settings 470 REM W$= Y/N answer 480 REM X%= choice: print, change or quit, etc. 490 REM 500 REM ******DEFINE PROMPT STRING CONSTANTS****** 510 REM 520 D$=CHR$(26):REM Clear screen... 530 D0$=CHR$(27)+CHR$(84):REM Deletes to end of line... 540 D1$="Use decimals for fractional margin and page sizes" 550 D2$="Which choice?" 560 DEF FNCURSOR$(YPOS%,XPOS%)=CHR$(13)+CHR$(27)+"="+CHR$(YPOS%+31)+CHR$(XPOS%+31) 570 REM "YPOS" is line number on screen, "XPOS" is column and CHR$(13) is without LF, resets MBasic Characters per Line counter... 580 D3$=D$+FNCURSOR$(10,2) 590 D4$=FNCURSOR$(12,2)+D0$ 600 D5$=FNCURSOR$(15,2) 610 D6$=FNCURSOR$(20,2) 620 D7$=FNCURSOR$(23,2) 700 REM 710 REM ******INITIALIZE PROGRAM****************** 720 REM 730 DIM TBV%(8) 740 DIM TBH%(21):REM This is the only subscripted variable with more than 10 values... 750 WIDTH 52: WIDTH LPRINT 255 760 REM 800 REM 810 REM ******FIRST SECTION - CHOOSE DATA********* 820 REM 830 PRINT D$;FNCURSOR$(3,2);S1$:PRINT S2$:PRINT TAB(5) S3$:PRINT TAB(5) S4$ 840 PRINT TAB(5) S5$:PRINT S6$:PRINT TAB(3) S7$ 850 PRINT FNCURSOR$(11,5); 860 PRINT"Press:" 870 PRINT" <1> to use default parameters" 880 PRINT" <2> to read last saved parameters" 890 PRINT" <3> to select all new print parameters" 900 PRINT D6$;D2$;:X0%=VAL(INPUT$ (1)) 910 IF X0%<1 OR X0%>3 THEN PRINT" <1>, <2>, or <3> response only, please try again...": GOTO 900 920 ON X0% GOSUB 2010,4610,2210 930 REM 940 REM ***CHECK CODES*** 950 PRINT D$:PRINT 960 PRINT"Check the configuration codes:":PRINT 970 PRINT" Page size:";PW;"X";PL;"Left edge is set";PS 980 PRINT" inches left of 1st printable character" 990 PRINT" Margins: left:";ML;"right:";MR;"and bottom:";MB 1000 PRINT" leaving";PL-MB;"inches vertical space for text" 1010 ML%=INT((ML-PS)*120):IF ML%<0 THEN ML%=0 1020 MR%=INT((PW-PS-MR)*120):IF MR%>((PW-PS)*120)THEN MR%=(PW-PS)*120-15 1030 M=(MR%-ML%)/120:IF CPI%=0 THEN CPI=13.3 1040 IF CPI%=29 THEN CPI=10 1050 IF CPI%=30 THEN CPI=12 1060 IF CPI%=31 THEN CPI=16.8 1070 M1=M*CPI 1080 PRINT" Printline is";M;"inches long, or";M1;"characters" 1090 PRINT" at";CPI;"fixed spacing" 1100 IF TH%<=0 THEN PRINT" No horizontal tabs set":GOTO 1170 1110 PRINT" Horizontal tabs set at:"; 1120 FOR K%=1 TO TH% 1130 PRINT TBH%(K%)/120; 1140 IF TH%-K%=1 THEN PRINT"and"; 1150 NEXT 1160 PRINT"inches from zero print position" 1170 IF TV%<=0 THEN PRINT" No vertical tabs set":GOTO 1240 1180 PRINT" Vertical tabs set at:"; 1190 FOR K%=1 TO TV% 1200 PRINT TBV%(K%)/48; 1210 IF TV%-K%=1 THEN PRINT"and"; 1220 NEXT 1230 PRINT"inches from top of form" 1240 PRINT" Print mode: ";:IF MODE%=2 THEN PRINT"Normal" ELSE PRINT"EXPAND" 1250 PRINT" Font:";FONT%;"is ";:IF FONT%=1 THEN PRINT"Correspondence" ELSE PRINT"Draft" 1260 IF CPI%=0 THEN PRINT" No character size set, printer defaults to SWs 1 and 2 or last software setting" ELSE PRINT" Char code:";CPI%;" (29=10cpi, 30=12, 31=16.8)" 1270 PRINT" Proportional print ";:IF PRPL%=1 THEN PRINT"ON" ELSE PRINT"OFF" 1280 PRINT" Justified print ";:IF JUST%=1 THEN PRINT"ON" ELSE PRINT"OFF" 1290 PRINT" Linefeed set to";LF%;"48ths inches, or";48/LF%;"lpi" 1300 PRINT" Initial paper position";N;"lines from top" 1310 PRINT D7$;"Are the settings correct ?";:W$=INPUT$ (1) 1320 IF W$="Y" OR W$="y" GOTO 1610 1330 REM 1400 REM ***SELECT CODES TO CHANGE*** 1410 PRINT D$:PRINT 1420 PRINT"Select which configuration to set:":PRINT 1430 PRINT" <1> Paper Size" 1440 PRINT" <2> Margins (left, right, bottom)" 1450 PRINT" <3> Tab settings (horiz and vert)" 1460 PRINT" <4> Print Mode" 1470 PRINT" <5> Character size/Font" 1480 PRINT" <6> Proportional print" 1490 PRINT" <7> Justification (at printer)" 1500 PRINT" <8> Initial paper feed" 1510 PRINT" <9> Linefeed size (incl sub/supr script)" 1520 PRINT" <0> All" 1530 PRINT D6$;D2$;:V%=VAL(INPUT$ (1)) 1540 PRINT D3$;:ON V%+1 GOSUB 2210,3310,3110,4110,3710,3510,3810,3910,4010,4410 1550 GOTO 950:REM Return to display to check values... 1580 REM 1590 REM ******SEND OR SAVE GOOD DATA************* 1600 REM 1610 PRINT D3$;"Do you want to send these to the printer or save":PRINT" on disk?" 1620 PRINT" <0>=No, quit" 1630 PRINT" <1>=Yes, just save these settings on disk" 1640 PRINT" <2>=Yes, just send to printer, do not save" 1650 PRINT" <3>=Yes, send to printer and save on disk" 1660 PRINT D6$;D2$;:X1%=VAL(INPUT$ (1)) 1670 IF X1%<0 OR X1%>3 THEN PRINT" <0>, <1>, <2>,or <3> only please...": GOTO 1660 1680 ON X1%+1 GOS UB 2010,5210,4810,2110 1690 END 1700 REM ******CONTROL SUBROUTINES***************** 2000 REM 2010 RETURN:REM Goes back to display section without changing default settings... 2090 REM 2100 REM ***SEND & SAVE*** 2110 GOSUB 4810:REM First LPRINT to Printer... 2120 GOSUB 5210:REM Then save on disk... 2130 RETURN 2190 REM 2200 REM ***LOOP THRU ALL INPUTS*** 2210 FOR J%=1 TO 9 2220 ON J% GOSUB 3310,3110,4110,3710,3510,3810,3910,4010,4410 2230 NEXT 2240 RETURN 2990 REM 3000 REM ******INPUT/CHANGE SUBROUTINES************ 3090 REM 3100 REM ***MARGINS*** 3110 PRINT D3$;"Select the margins desired:" 3120 PRINT" <1> left= 1, right= 1, bottom= 0 (WordStar)" 3130 PRINT" <2> left=.5, right=.5, bottom=.8 (LLISTs)" 3140 PRINT" <3> Other" 3150 PRINT D6$;D2$;:X2%=VAL(INPUT$ (1)) 3160 IF X2%<1 OR X2%>3 THEN PRINT"<1>, <2>, or <3> only please...":GOTO 3150 3170 IF X2%=1 THEN ML=1:MR=1:MB=0 3180 IF X2%=2 THEN ML=.5:MR=.5:MB=.8 3190 IF X2%<>3 GOTO 3250 3200 PRINT D3$;D1$ 3210 PRINT D4$;:INPUT"Left margin SIZE desired: ; ";ML 3220 PRINT D4$;:INPUT"Right margin SIZE desired: ; ";MR 3230 PRINT D5$;"Use a bottom margin for printing program listings":PRINT"and so on, leave at zero for printing WordStar":PRINT"documents" 3240 PRINT D4$;:INPUT"Bottom margin SIZE desired: ; ";MB 3250 RETURN 3290 REM 3300 REM ***PAPER SIZE & POSITION*** 3310 PRINT D3$;"Select the paper size:" 3320 PRINT" <1> Single sheet 8.5 x 11, at 'C' mark" 3330 PRINT" <2> Single sheet 8.5 x 14" 3340 PRINT" <3> Other" 3350 PRINT D6$;D2$;:X3%=VAL(INPUT$ (1)) 3360 IF X3%<1 OR X3%>3 THEN PRINT"<1>, <2>, or <3> only please...":GOTO 3350 3370 IF X3%=1 THEN PW=8.5:PL=11:PS=.25 3380 IF X3%=2 THEN PW=8.5:PL=14:PS=.25 3390 IF X3%<>3 GOTO 3490 3400 PRINT D3$;D1$; 3410 PRINT D4$;:INPUT"Paper width ; ";PW 3420 PRINT D5$;"Input the position of the left edge of the paper" 3430 PRINT"from the leftmost print column. A positive value" 3440 PRINT"may be read directly from the gage if you have the" 3450 PRINT"sheet feeder." 3460 PRINT D4$;:INPUT"Paper edge position ; ";PS 3470 PRINT D3$;D1$;D5$;"This length must agree exactly with WordStar to":PRINT"avoid text creeping up or down on succeeding pages" 3480 PRINT D4$;:INPUT"Paper length ; ";PL 3490 RETURN 3500 REM ***CHARACTER SIZE & FONT*** 3510 PRINT D3$;"Character size:" 3520 PRINT" <0>=None (old or default value)" 3530 PRINT" <1>=10 cpi" 3540 PRINT" <2>=12 cpi" 3550 PRINT" <3>=16.8 cpi" 3560 PRINT D6$;D2$;:CPI%=VAL(INPUT$ (1)) 3570 IF CPI%<0 OR CPI%>3 THEN PRINT" <0>, <1>, <2>, or <3> only please...": GOTO 3560 3580 IF CPI%>0 THEN CPI%=CPI%+28 3590 PRINT D3$;"Font:" 3600 PRINT" <1> for correspondence" 3610 PRINT" <2> for draft" 3620 PRINT D6$;D2$;:FONT%=VAL(INPUT$ (1)) 3630 IF FONT%<1 OR FONT%>2 THEN PRINT" <1> or <2> only please...": GOTO 3620 3640 RETURN 3690 REM 3700 REM ***PRINT MODE*** 3710 PRINT D3$;"Mode:" 3720 PRINT" <1> for EXPANDED (doublewidth) characters" 3730 PRINT" <2> for NORMAL characters" 3740 PRINT D6$;D2$;:MODE%=VAL(INPUT$ (1)) 3750 IF MODE%<1 OR MODE%>2 THEN PRINT" <1> or <2> only please...": GOTO 3740 3760 RETURN 3790 REM 3800 REM ***PROPORTIONAL*** 3810 PRINT D3$;"Do you want the print PROPORTIONAL ";:W$=INPUT$ (1) 3820 IF W$="Y" OR W$="y" THEN PRPL%=1 ELSE PRPL%=0:REM Only Y or y response evaluated, all others result in "No" response... 3830 RETURN 3900 REM ***JUSTIFIED*** 3910 PRINT D3$;"Do you want the print JUSTIFIED ";:W$=INPUT$ (1) 3920 IF W$="Y" OR W$="y" THEN JUST%=1 ELSE JUST%=0 3930 RETURN 3990 REM 4000 REM ***INITIAL LINEFEEDS*** 4010 PRINT D$;D5$;"If you have a listing program that inserts linefeeds" 4020 PRINT"to skip over perforations, putting about half that" 4030 PRINT"number of linefeeds here allows equalizing the top" 4040 PRINT"and bottom margins. Do not use this for WordStar" 4050 PRINT"documents--you can also use Form Set to set the top" 4060 PRINT"line position for listing programs, but do not use" 4070 PRINT"it in WordStar." 4080 PRINT FNCURSOR$(10,2);:INPUT"Number of linefeeds to position paper; ";N 4090 RETURN 4100 REM ***TABS HORIZ/VERT*** 4110 PRINT D3$; 4120 INPUT"HOW MANY horizontal tabs (0 to 21); ";TH%:IF TH%<=0 GOTO 4210 4130 IF TH%>21 THEN PRINT" The max number of horizontal tabs is 21, try again...": GOTO 4120 4140 PRINT:PRINT"Identify tab positions from the left edge of the" 4150 PRINT"paper, in order":PRINT 4160 FOR K%=1 TO TH% 4170 PRINT"Tab #";K%;"(inches from left); ";:INPUT S 4180 TBH%(K%)=INT((S-PS)*120) 4190 IF K%>1 THEN IF TBH%(K%-1)>TBH%(K%) THEN PRINT"Tabs must be in left to right (small to large) order":GOTO 4170 4200 NEXT 4210 PRINT D3$; 4220 INPUT"HOW MANY vertical tabs (0 to 8); ";TV%:IF TV%<=0 GOTO 4310 4230 IF TV%>8 THEN PRINT"The max number of vertical tabs is 8, try again..": GOTO 4220 4240 PRINT:PRINT"Identify tab positions from the top edge" 4250 PRINT"of the paper, in order.":PRINT 4260 FOR K%=1 TO TV% 4270 PRINT"Tab #";K%;"(inches from top); ";:INPUT S 4280 TBV%(K%)=INT(S*48) 4290 IF K%>1 THEN IF TBV%(K%-1)>TBV%(K%) THEN PRINT"Tabs must be in top to bottom (small to large) order":GOTO 4270 4300 NEXT 4310 RETURN 4390 REM 4400 REM ***LINEFEED SIZES*** 4410 PRINT D3$;"Linefeed is";LF%;"48ths, select:" 4420 PRINT" <0> No change, leave at above or" 4430 PRINT" <1> Change in inches per linefeed or" 4440 PRINT" <2> In lines per inch (lpi) or" 4450 PRINT" <3> In 48ths of an inch" 4460 PRINT D6$;D2$;:V%=VAL(INPUT$ (1)):PRINT 4470 IF V%<0 OR V%>3 THEN PRINT"<0>, <1>, <2>, or <3> only please...": GOTO 4460 4480 PRINT D6$;:ON V%+1 GOTO 4540,4490,4510,4530 4490 INPUT"Size of linefeed in inches; ";B 4500 LF%=INT(B*48):GOTO 4540 4510 INPUT"Number of lines per inch; ";B 4520 LF%=INT(48/B+.5):GOTO 4540 4530 INPUT"Number of 48ths inch per linefeed; ";LF% 4540 PRINT D3$;"The printer is set to use a half linefeed (4 48ths":PRINT"inches) for subscripts and superscripts." 4550 PRINT D5$;"Do you want to change these ?";:W$=INPUT$ (1) 4560 IF W$="Y" OR W$="y" THEN PRINT"How many 48ths (<0> to <9>)?";:R%=VAL(INPUT$ (1)):ROLUP%=R%:ROLDOW%=R% 4570 RETURN 4590 REM 4600 REM ***INPUT FROM DISK FILE "PRINTER.DAT"*** 4610 OPEN "I",#1,"PRINTER.DAT" 4620 INPUT#1,PL,PW,PS,ML,MR,MB,TH%,TV%,LF%,ROLUP%,ROLDOW%,FONT%,MODE%,CPI%,PRPL%,JUST% 4630 IF TH%<1 GOTO 4670 4640 FOR K%=1 TO TH% 4650 INPUT#1,TBH%(K%) 4660 NEXT 4670 IF TV%<1 GOTO 4710 4680 FOR K%=1 TO TV% 4690 INPUT#1,TBV%(K%) 4700 NEXT 4710 CLOSE#1 4720 RETURN 4790 REM 4800 REM ***LPRINT CODES TO PRINTER*** 4810 LPRINT CHR$(27)+"J",ML%,MR%,"$"; 4820 LPRINT CHR$(27)+"R",FONT%,"$"; 4830 IF CPI%<>0 THEN LPRINT CHR$(CPI%); 4840 LPRINT CHR$(27)+"L",(INT((PL*48)+.5));:IF MB<>0 THEN LPRINT (INT((PL-MB)*48)); 4850 LPRINT"$"; 4860 IF PRPL%=1 THEN LPRINT CHR$(16); ELSE IF CPI%<>0 THEN LPRINT CHR$(6); 4870 IF JUST%=1 THEN LPRINT CHR$(4); ELSE IF CPI%<>0 THEN LPRINT CHR$(5); 4880 LPRINT CHR$(27)+"B",LF%,"$"; 4890 IF ROLUP%=4 AND ROLDOW%=4 GOTO 4920 4900 LPRINT CHR$(27)+"C",ROLDOW%,"$"; 4910 LPRINT CHR$(27)+"D",(-ROLUP%),"$"; 4920 IF N<1 GOTO 4970 4930 WHILE N>.5 4940 LPRINT CHR$(10); 4950 N=N-1 4960 WEND 4970 IF TH%<1 GOTO 5030 4980 LPRINT CHR$(27)+"F"; 4990 FOR K%=1 TO TH% 5000 LPRINT TBH%(K%); 5010 NEXT 5020 LPRINT"$"; 5030 IF TV%<1 GOTO 5090 5040 LPRINT CHR$(27)+"E"; 5050 FOR K%=1 TO TV% 5060 LPRINT TBV%(K%); 5070 NEXT 5080 LPRINT"$"; 5090 LPRINT CHR$(MODE%); 5100 RETURN 5190 REM 5200 REM ***SAVE IN FILE "PRINTER.DAT"*** 5210 OPEN "O",#1,"PRINTER.DAT" 5220 WRITE#1,PL,PW,PS,ML,MR,MB,TH%,TV%,LF%,ROLUP%,ROLDOW%,FONT%,MODE%,CPI%,PRPL%,JUST% 5230 IF TH%<1 GOTO 5270 5240 FOR K%=1 TO TH% 5250 WRITE#1,TBH%(K%) 5260 NEXT 5270 IF TV%<1 GOTO 5310 5280 FOR K%=1 TO TV% 5290 WRITE#1,TBV%(K%) 5300 NEXT 5310 CLOSE#1 5320 RETURN 5330 END 0 NEXT 5270 IF TV%<1 GOTO 5310 5280 FOR K%=1 TO TV% 5290 WRITE#1,TBV%(K%) 5300 NEXT 5310 CLOSE#1 5320 RETURN LPRINT CHR$(27)+"B",LF%,"$"; 4890 IF ROLUP%=4 AND ROLDOW%=4 GOTO 4920 4900 LPRINT CHR$(27)+"C",ROLDOW%,"$"; 4910 LPRINT CHR$PRINTER.BAS, submitted by Maj. Brian Dugle of Ft. Leavenworth, KS, is an MBASIC program for sending special print commands to an IDS Prism printer. It is described in PRISM132.TXT, which was originally printed in the FOGHORN, Vol. 2, Nbr. 7, 4/83. Place PRINTER.BAS in drive A and MBASIC.COM in drive B. At the A> prompt, type B:MBASIC PRINTER Make sure the printer is turned on. PRINTER $$$.PO0 Talkin t Pris Printe wit WordSta an th Osborn 1 b Bria Dugle Fighte Pilo an sometim student... (Majo Dugl i a Ai Forc F-1 pilo presentl attendin schoo wit th Arm a F Leavenworth KS) Thi articl shoul b o interes t man othe neophyt hacker ou ther wh ar workin a learnin WordSta an gettin i t tal t variou do matri printers Severa article hav appeare i th FOGHOR abou interfacin WordSta an th th Epso MX-80/100 bu foun th informatio somewha fragmented--n doub du t m lac o experienc wit wha wa bein described I thi articl wil attemp t describ m experience i enoug detai s tha som o yo ne guys/gal ou ther ca lear fro them fo wha the are Specifically a goin t tal abou SETUP INSTALLin WordStar th capabilitie hav foun i m Pris 13 fro Integra Dat Systems an ho go i runnin wit m blu cas Osborn 1. fe week afte go th compute m mai orde printe showe up s decide t jum righ i an hoo i up ordere a RS-23 cabl wit th printer th cabl cam wit ta readin "Alto t Pape Tiger" picke th seria cabl becaus i wa available th ID printer us D 2 connecto fo eithe seria o paralle communications bu th edg connecto fo th Osborn wa no availabl ove th phon t hoo u t th paralle port. surve o th User' Referenc Guid fro th Osborn an th Owner' Manua fro th Pris Printe indicate tha neede t us SETUP progra o th Osborn CP/ Syste disk t configur th compute t tal t th printer di thi b puttin tha dis i driv A an th W dis i driv B: an typin SETU Th prompt i SETU ar self-explanatory th selection mad include Diabl (XON/XOFF seria protoco an 120 baud SETU als allow yo t assig value t th "specia functio keys" ^ thr ^9 I yo hav no don i already sugges yo loa commonl use string suc a "LB: an som other wil identif later. Afte completin th setu o m WordSta disk hooke u th cabl t th printe ( als se it jumper an di switche fo seria dat a 120 baud an turne i on--i worked di fin i wa necessar t cycl th OF LINE/O LIN switc sometimes thi turne ou t b cause b th protoco wa using. Th Pris Printe i ver "smart" i know whe i ha pape i it fo instance an wil no "go withou it A lon a yo leav i of lin (i ma b turne o an hooke up an pu i o lin onl whe yo wan t sen i tex o contro codes i wil wor fine. soo foun tha th programmabl functions describe i Tabl 6- o th Owner' Manual require sendin "escap sequences t th printer WordSta doe no see t lik non- printin character lik escape s wen bac t th books Th Use Guid include sectio o "Modifyin WordSta o th Osborn 1 b Tho Hoga startin o pag A-1 Thi sectio describe progra name INSTAL whic i o th CP/ Utilit disk INSTAL allow yo t chang th terminal printer communication protocol and/o th prin drive i th WS.CO progra an als allow yo t mak byt b byt patches I INSTAL yo wil fin brie explanation ar give o eac option Selectin on doe no commi yo t changin th W progra file--i allow yo t "bac out o an selectio befor makin i permanent Thi let yo chec ou an rea abou al th option befor yo chang anything Tr it. di no chang th termina selectio (selectio "U i "n change") a usin th Teletype-lik printe optio righ now selectio "A" bu selectio "C (backspacin teletype work also Sinc th protoco i handle outsid o WS th "n protocol optio an us o th CP/ Lis Drive see t b th correc choice t INSTALL thir an fourt questions O th othe hand ra i fo whil wit XON/XOF se i bot W an i CP/ an i stil worked s wh knows? A thi poin yo wil hav indicate choice o "n change (selectio "U" t INSTALL question abou th terminal printer communication protocol an prin driver Th nitty- gritt par come nex i th "specia modifications section INSTAL allow yo t ad specia characte sequence t hav you printe respon correctl t WordSta commands Thes includ hal lin advance backspace alternat characte set an s on whic ma var fro on printe t th next Eac sequenc i addresse b labe store i INSTAL o b fou digi he memor address ( kno o n complet inde t thes label an addresse bu rea WordSta Referenc Manual o th Customizatio Note probabl explai them Som ar liste i th Use Guid (mentione below an other hav bee identifie i othe FOGHOR articles.) Th Pris Printe respond t th standar ASCI code fo suc command a backspace linefeed an carriag return I als wil accep mor complicate command beginnin wit a escap characte whic establis th valu o som functions e.g. th siz o linefee o th positio o margin o ta stops. Tabl 6-4 mentione above list 1 programmabl functio parameter tha ma b se b sendin variou escap sequence t th printer A exampl i th Left/Righ Margi command Th tw argumen value ar th position o th lef an righ margin i 120th o a inc measure fro th left-mos printabl characte positio o th printer Escap i ASCI characte 2 (decimal) o 1 (hex) Th comman character J an th argumen value mus b separate b comm o spac characters Th terminato mus b non-numeri characte othe tha comm o space th dolla sig i suggeste sinc i i printin character bu perio o othe characte wil work. A exampl o th margi settin comman sequenc describe abov woul b CHR$(27) J 0 780 $ Thi sequenc woul se th lef margi a th left-mos positio an th righ margi a 1/ inche t th right Thi sequenc coul b loade int WordSta usin th specia modification par o th INSTAL program bu require a leas byte o space. loo a th "specia modifications label an th spac allotte t eac o page A-1 an A-1 o th Use Guid show tha findin plac fo thi comman coul b difficult Th onl are lon enoug i th initializatio sequenc whic allow u t 1 characters Puttin thi margi comman ther woul requir startin a th labe PSINIT an insertin th character 09h 1Bh 4Ah 2Ch 30h 2Ch 37h 38h 30h an 24h Thes enterie ar facilitate b hittin RETUR fo label afte th firs one INSTAL increment th labe addres b on whe yo hi RETUR instea o givin i ne labe o a address Onl th tw he value fo eac characte ar type in th lowe cas "h jus identifie eac a representin byt i hex. Inspectin th exampl abov ma giv ris t som questions Th firs byte 09h i cu t th W progra tellin i th numbe o character i thi comman string 1B i th ASCI escap characte an 4A i th ASCI cod fo "J i hex 2C i th comm use a separator 30h 37h an 38h ar th ASCI code fo th number "0" "7" an "8" an 24 i "$" Althoug thi sequenc wil fi here i i no reall ver flexible Yo ma wan t se som o th code tha wil fi suc a PALT: PSTD: ROLUP: ROLDOW: an USR1 thr USR4: Tabl 6- o th printe Owner' Manua list th contro code fo prin mode characte size typ spacin an s on PSTD an PALT coul b use t switc betwee 1 cp an 1 cp densitie (characte sizes) fo example Thi woul requir th following: PSTD 0 Numbe o characters PSTD + 1 1 cp densit cod fo th Pris Printer PALT 01 PALT + 1 1 cp densit code Usin thes code i WordSta document woul requir ^P fo standar an ^P fo alternat densit selection ROLUP an ROLDOW coul b loade wit 01h 19h an 01h 14 respectivel t allo printin subscript an superscripts Th USRx function migh b use t tur variou combination o proportiona an justifie prin mode o an off fo example: USR1 02 USR1 + 0 Printe justif ON USR1 + 1 Select proportiona spacin mode USR2 02 USR2 + 0 Printe justif OFF USR2 + 0 Select fixe spacin mode Thes mode woul b selecte i th documen b ^P an ^P respectively Thes coul b spli u int individua control fo eac paramete i n othe "user function wer needed. Mos o th location ar no lon enoug t le W pas escap sequence effectivel t th printer However thi sectio o INSTAL ca als chang an byt i th WS.CO program Som thing tha ar hand t chang her ar byte tha determin ho W configure itsel o startup Th followin addres label wer consolidate fro severa FOGHOR article reprinte i th Portabl Companion. ITITOG 0 Start W wit INSER OFF INITWF:+ 0 Start W wit Justificatio OFF ITPOPN F Default t OMI pag numbers WID 7 Set termina displa scree widt t 12 character (ma valu withou th warnin message) Minimu valu i 4 he o 6  decimal. 038 0 Default t rule lin OFF INITWF:+ 0 Default t Hyphe Hel OFF ITHELP 0 Default Hel leve t (0 i normal) DEL3 1 Set dela tim i hex delay th displa o "hel screens longe o shorte a desired DEL4 i normall 40h. Afte yo hav mad an change yo wan t try mak th las label/addres "0 (zero) INSTAL wil giv yo on las chanc t chang you mind I al i a yo desir it INSTAL wil sav you modifie WS.CO fil o th driv yo designate a th beginning O m machin thi take while jus wai til th drive qui turning Yo ca the tr you creatio b puttin th W dis i th defaul drive giv i ^C an the W . Thi bring m t th incredibl lon progra listin tha follow th tex o thi article MBasi allow sendin an ASCI character t th printe wit a LPRIN CHR$(xx statement s starte writin littl progra t mak fe smal computations chec them an sen the t th printe befor startin printin session gues go carrie away... starte ou b LPRINTin th code wante t sen t th printe directly Thi wa littl cumbersome s adde som routine t tak a inpu pag siz an som margi size an figur th value fo eac programmabl comman argumen fro thes inputs wante t chec wha ha befor sen i t th printer s pu i PRIN (t th screen sectio first Thi eventuall gre t th progra liste here Yo wil not tha decima ASCI code ar easie t us i BASIC s 1B (escape i no CHR$(27) PRINTER.BA i men drive progra tha ask yo fo al th informatio neede t configur you printer Margin an pag size ar pu i i inches muc easie tha thinkin i 48th an 120ths an th progra figure ou th cod neede b th printe t giv yo wha yo want No al th Pris Printe option ar covere (sinc don' hav colo i particular) bu mos are I i mor oriente t th shee feeder sinc tha i wha use bu i wil wor wit pin-fee pape also I i mostl self-explanatory bu som comment ma hel yo follo wha di an why. Th strin variable startin a lin 10 jus mak i easie t identif th progra o listin whil usin th sam line fo sign-o message Mos o th variable use ar liste an explaine i th nex section Th firs 1 ar give "default value i th process thes ma b change t whateve yo lik i mos cases Th string beginnin wit "D ar use t kee fro havin t typ th sam thin ove agai man time late i th program. DE F i use t implemen curso positionin o th screen CHR$(13 (C withou LF i i jus reset MBasic character pe lin counte s tha extraneou CR ar no inserte o th display. Althoug th progra gre wit man revision an modifications trie t kee th cod "to down a muc a possible Ther ar fe conditiona GOTO tha ski ove part tha ar sometime no neede bu onl on majo reroutin o th flo (155 GOT 950 i used Th res o i i handle wit GOSUB whic shoul allo eas understandin o wha i goin on. firs wrot th sectio i line 95 t 131 t prin th code o th scree a the wer t b sen t th printer bu tha mad i har t se wha yo had Yo coul substitut th subroutin fro lin 480 modifie t PRIN instea o LPRIN an t displa " instea o CHR$(27 (whic i non-printin o th display a thi locatio i yo prefe t se exactl wha yo ar sendin t th printer (Not tha som boundar check ar mad t kee fro sendin margin tha ar of th pape o negativ values thes shoul b retaine i som form.) Al o th "gotchas foun i usin WordSta wit m Pris 13 ar explaine i th scree comment include i th program Th bigges one com fro attemptin t us smar tex formattin progra wit a equall smar printer WordSta know th lengt o eac pag becaus yo tel i (defaul P i 6 lines) s i "knows i mus sen tha man linefeed t ge t th botto o page I yo leav th printer boundar ski switc ON fo example,i wil caus tex o subsequen page t craw dow abou a inc fo eac page Similarly i yo chang th siz o th linefee t somethin othe tha 8/48th ( lpi) followin pag format wil b wron unles yo redefin th pag lengt t WS. hav th Sprin Optio whic flie alon a 20 cp i draf font Correspondenc fon i printe a abou 11 cp i FIXE spacin mod o u t 15 cp i PROPORTIONA spacing On  thin include wit th Sprin mod i draf fon characte spacin o 13. cpi--th onl wa t ge thi spacin i no t sen AN characte setting includin size font o typ spacin command t th printer Then i th di switche wer se t th 13. siz an draf fon a printe turn-on yo ca us tha siz characters Thi cause som o th otherwis extraneou conditiona statement i th LPRIN sectio (lin 4800). I yo us pi fe continuou pape yo wil us th printer FOR SE switc t se th to o for a th perforations FOR SE i no require whe printin wit WordSta an shee fe paper T LLIS MBasi programs FOR SE shoul b use t positio th firs printe line Usin FOR SE t pu th firs lin som distanc dow th pag subtract tha amoun fro th printabl are wit shee fe pape ( 1 botto margi remain a 1 i othe words) Left/righ margin ca b controlle wit WIDT LPRIN statemen t lis program withou settin margin a th printer A lon a yo d no wan th printe t justif you printing WordSta margi control wil wor fin fo printin documents I margin ar se i th printe an WordSta send lin tha i to long th printe wil ad a extr carriag retur an prin dangler. Microjustificatio i no supporte betwee WordSta an th Pris Printer T ge proportiona printin fro th printe require th printe justificatio O an require settin margins hav foun th mos reliabl metho fo usin thi capabilit i t compos th tex i WordSta "N (non-document mode Thi mod doe no ad CR o LF a th en o eac line Th printe woul rathe d it ow wor wrappin i thi mod anyway Th proble i tha th numbe o character pe inc change i th proportiona prin mod (the ar muc close together) an ther i n eas wa t figur ou wher line wil end Th printe wil justif line ende wit CR bu the mus b mor tha 75 o th margi widt an n greate tha th margi width I yo se 1/2 printline tur W justificatio off an us th defaul lin lengt i W o 6 character yo wil fin som line sprea ou t cove th widt o th pag bu mos wil b to short I othe words th actua spacin yo ge i 1 character pe inc proportiona i 1 o 13 Unfortunately hav foun n wa t determin th resultin spacin accuratel becaus i depend o wha letter eac lin has "i's tak u ver littl roo compare t "m's" An lin wit to man lon letter i i ma en u wit th printe wrappin word Sinc W inserte CR/L a th en o th line th printe wil leav dangle whil screwin u th pag forma wit a extr linefee tha W i no counting. Th botto lin abou th printer proportiona spacin mod i tha i doe i b itsel ver nicely bu WS attempt a formattin ar no ver compatible T prin non-documen tex fil us PI LST:=. ERAsin th SAMPLE.TX fil o th W dis allow roo fo PI wit singl densit drives PI ca the b use vi th WordSta comman withou leavin WS. Th pretties justificatio fro WordSta "D mod file i t tur W justifyin OFF leav th printe justifyin O an proportiona OFF an se th margin appropriately Thi techniqu make al space o eac lin equal Don' forge t reforma (^B th fil i yo wrot i wit W justificatio on Paragrap indentin wil var som an tabula dat wil no lin u exactl wit justif O becaus eac lin i stretche ou differen amoun t fil th widt o th margins On wa aroun thi proble i t se horizonta tab fo paragrap indentin o column an us specia ta characte i on o th "user function (se i u wit INSTALL) Anothe wa i t leav th justificatio of fo numbers lists o othe columna data. Configurin th printe wit th PRINTE progra i mos easil accomplishe b copyin you MBasi disk ERAsin th uneede CBasi files an puttin cop o PRINTER.BA o tha disk Whe yo ar read t prin documen o file sav i wit ^KD Tak th dis wit you tex fil ou o driv B an pu th MBasic/PRINTER.BA dis i it place Us WordStar "R comman t ru progra an typ MBASI i respons t th prompt Afte MBasi i loade typ LOA "PRINTER" Afte i ha loade typ RU an answe th program men questions D NO selec th "rea las save parameters optio th firs tim throug becaus ther wil no b PRINTER.DA fil t read sav th defaul parameter o you choice o tha firs ru an i wil creat th dat fil fo you Th printe mus b O LIN an hav pape i i (FAUL ligh OFF t accep th code yo sen it I everythin stop whe yo sen code o tex t th printer jus cycl th mod switc t OF LIN an bac t O LIN t sen "go signa t th CP/ Lis Drive protoco checker Whe th printe ha accepte th code an yo hav th MBasi promp back remov th MBasi disk pu th documen dis bac i driv B: an typ th MBasi comman SYSTEM Thi wil sen yo bac t WordSta whic ask yo t hi an key the i reload itself Thi proces i ver quic an eas i yo progra thre "specia functio keys o you W dis (us SETUP wit th command RMBASIC LOA "PRINTER",R an SYSTEM Yo mus hav driv B logge i a defaul i W fo thi procedur t wor correctl a describe (thi assume W i driv A an you tex fil i replace wit MBasi i driv B:). Tha i al ther i t it a sur yo wil wan t chang th progra t d thing you way suc a ignorin draf v correspondenc fon i yo d no hav th Sprin mod o configurin th defaul value fo us o rol pape rathe tha sheet i yo don' hav th shee feeder I shoul b relativel eas t chang cop fro th FO librar (whe i goe in o a yo ke i i yourself I yo hav som othe typ printer thi ma giv yo som idea o ho t ge i workin th wa yo want Hav fun! key the i reload itself Thi proces i ver quic an eas i yo progra thre "specia functio keys o you W dis (us SETUP wit th command RMBASIC LOA "PRINTER",R an SYSTEM Yo mus hav driv B logge i a defaul i W fo thi procedur t wor correctl a describe (thi assume W i driv A an you tex fil i replace wit MBasi i driv B:). Tha i al ther i t it a sur yo wil wan t chang th progra t d thing you way suc a ignorin draf v correspondenc fon i yo d no hav th Sprin mod o configurin th defaul value fo us10 PRINT CHR$(26):PRINT 20 PRINT" *************************************************" 30 PRINT" * PROPORTIONAL PRINTING WITH C ITOH PROWRITER *" 40 PRINT" *************************************************":PRINT 50 INPUT " Was PIP with [Z] used on file to be printed? (Y/N)";Y$:PRINT 60 IF Y$ = "Y" OR Y$ = "y" THEN GOTO 210 70 IF Y$ = "N" OR Y$ = "n" THEN GOTO 80 ELSE 50 80 PRINT:PRINT " Return to CP/M and PIP file with [Z] parameter as follows:":PRINT 90 PRINT " PIP D:NEWFILEN.AME = D:OLDFILEN.AME[Z] ":PRINT 100 PRINT" To return to CP/M, on Ok prompt type SYSTEM ":PRINT 105 PRINT" To return to program, on Ok prompt type RUN ":PRINT 110 GOTO 7040 210 DATA 19,26,111,19,26,103,94,14,5,195,5,0 220 RESTORE 210 230 FOR I = 0 TO 11 240 READ XX 250 POKE &H40+I,XX 260 NEXT I 270 DEF USR 0 = &H40 280 GOTO 2890 450 FOR III = 1 TO LEN(D$) 460 C$ = MID$(D$,III,1) 470 IF GRAPHFLAG = 1 THEN GOTO 580 480 IF ASC(C$) < &H20 THEN GOTO 640 490 IF STRIKEFLAG = 1 THEN GOTO 1770 510 Z$ = USR 0 (C$) 520 IF INTFLAG > 0 THEN GOTO 1850 540 NEXT III 550 RETURN 580 IF C$ = "Z" THEN GRAPHFLAG = 0 : GOTO 540 590 C$ = CHR$(ASC(C$) + 128) 600 GOTO 510 640 ON ASC(C$) GOTO 790, 820, 920, 840, 1020, 1050 660 ON ASC(C$)-6 GOTO 540, 1110, 540, 510, 540 680 ON ASC(C$)-11 GOTO 540, 510, 1150, 1050, 540 700 ON ASC(C$)-16 GOTO 1180, 1210, 1240, 1340, 540 720 ON ASC(C$)-21 GOTO 1500, 1670, 1740, 540, 540 740 IF ASC(C$) = &H1B THEN GOTO 510 745 IF ASC(C$) = &H1F THEN C$ = "-" : GOTO 510 760 GOTO 540 790 PITMEM$ = "E" : CON$ = "E"+CHR$(&H1B) : GOTO 1810 820 GOTO 840 840 BOLDFLAG = (BOLDFLAG + 1) MOD 2 850 IF BOLDFLAG = 0 THEN GOTO 880 860 BLDMEM$ = "!" : CON$ = "!"+CHR$(&H1B) : GOTO 1810 880 BLDMEM$ = CHR$(&H22) 890 CON$ = CHR$(&H22)+CHR$(&H1B) : GOTO 1810 920 PRINT "A Control C in the text has stopped the print" 930 PRINT "Press any key to resume" + CHR$(7) 940 ISTOP = 0 960 CON$ = INKEY$ : ISTOP = ISTOP + 1 970 IF ISTOP > 150 THEN PRINT CHR$(7) : ISTOP = 0 980 IF CON$ = "" GOTO 960 990 GOTO 540 1020 GRAPHFLAG = 1: GOTO 540 1050 IF PITCH <> 0 THEN GOTO 1080 1060 CON$ = "6"+CHR$(27)+"6"+CHR$(27) : GOTO 1810 1080 C$ = " " : GOTO 510 1110 CON$ = "]"+CHR$(&H1B)+CHR$(8)+"["+CHR$(&H1B) 1120 GOTO 1810 1150 PITMEM$ = "P" : CON$ = "P"+CHR$(&H1B) : GOTO 1810 1180 PITMEM$ = "Q" : CON$ ="Q"+CHR$(&H1B) : GOTO 1810 1210 PITMEM$ = "N" : CON$ = "N"+CHR$(&H1B) : GOTO 1810 1240 UNDERFLAG = (UNDERFLAG + 1) MOD 2 1250 IF UNDERFLAG = 0 GOTO 1280 1260 CON$ = "X"+CHR$(&H1B) : GOTO 1810 1280 CON$ = "Y"+CHR$(&H1B) : GOTO 1810 1340 SUPERFLAG = (SUPERFLAG +1) MOD 2 1350 IF SUPERFLAG = 0 GOTO 1430 1360 C$ = RIGHT$(STR$(SR),2) 1370 IF MID$(C$,1,1) = " " THEN MID$(C$,1,1) = "0" 1380 C$ = RIGHT$(C$,1) + LEFT$(C$,1) 1390 CON$ = "r"+CHR$(27)+"["+CHR$(27) 1400 CON$ = "f"+CHR$(27)+CHR$(10)+C$+"T"+CHR$(27)+CON$ 1410 GOTO 1810 1430 C$ = RIGHT$(STR$(LH),2) 1440 IF MID$(C$,1,1) =" " THEN MID$(C$,1,1) = "0" 1450 CON$ = RIGHT$(C$,1)+LEFT$(C$,1) 1460 CON$ = "]"+CHR$(27)+CON$+"T"+CHR$(27)+CHR$(10) 1470 GOTO 1810 1500 SUBFLAG = (SUBFLAG + 1) MOD 2 1510 IF SUBFLAG = 0 GOTO 1590 1520 C$ = RIGHT$(STR$(SR),2) 1530 IF MID$(C$,1,1) =" " THEN MID$(C$,1,1) = "0" 1540 C$ = RIGHT$(C$,1) + LEFT$(C$,1) 1550 CON$ = "f"+CHR$(27)+"["+CHR$(27) 1560 CON$ = "r"+CHR$(27)+CHR$(10)+C$+"T"+CHR$(27)+CON$ 1570 GOTO 1810 1590 C$ = RIGHT$(STR$(LH),2) 1600 IF MID$(C$,1,1) = " " THEN MID$(C$,1,1) = "0" 1610 CON$ = RIGHT$(C$,1)+LEFT$(C$,1) 1620 CON$ = "]"+CHR$(27)+"f"+CHR$(27)+CON$ 1630 CON$ = CON$ +"T"+CHR$(27)+CHR$(10) 1640 GOTO 1810 1670 WIDEFLAG = (WIDEFLAG + 1) MOD 2 1680 IF WIDEFLAG = 0 GOTO 1710 1690 C$ = CHR$(&HE) : GOTO 510 1710 C$ = CHR$(&HF) : GOTO 510 1740 STRIKEFLAG = (STRIKEFLAG + 1) MOD 2 1750 GOTO 540 1770 CON$ = "-"+"]"+CHR$(&H1B)+CHR$(8)+C$+"["+CHR$(&H1B) 1780 GOTO 1810 1810 INTFLAG = LEN(CON$) - 1 1820 C$ = RIGHT$(CON$,1) : GOTO 510 1850 C$ = MID$(CON$,INTFLAG,1) 1860 INTFLAG = INTFLAG - 1 : GOTO 510 1920 IZ = INSTR(FIRSTCOL,FILLIN$," ") 1930 IF IZ <> 0 THEN GOTO 1960 1940 RETURN 1960 RGTPART$ = RIGHT$(FILLIN$,LEN(FILLIN$)-IZ-1) 1970 FILLIN$ = LEFT$(FILLIN$,IZ)+RGTPART$ 1980 GOTO 1920 2050 IZ = LEN(FILLIN$) 2080 IF IZ = 0 THEN IZ = 1 : GOTO 2130 2090 IF MID$(FILLIN$,IZ,1) <> " " GOTO 2130 2100 IZ = IZ - 1 : GOTO 2080 2130 FILLIN$ = LEFT$(FILLIN$,IZ) 2140 IF IZ = 1 THEN GOTO 2220 2150 IZ = 1 2180 IF MID$(FILLIN$,IZ,1) <> " " GOTO 2220 2190 IZ = IZ + 1 : GOTO 2180 2220 FIRSTCOL = IZ 2230 IF MID$(FILLIN$,IZ,1) = CHR$(15) THEN GOTO 2260 2240 GOSUB 1920 2260 LASTCOL = LEN(FILLIN$) : RETURN 2320 DOTSUM = 0 2330 ENDINDEX = LASTCOL 2340 IF LASTCOL < LEN(FILLIN$) THEN ENDINDEX = LEN(FILLIN$) 2350 FOR IZ = FIRSTCOL TO ENDINDEX 2360 IF IZ > LEN(FILLIN$) THEN GOTO 2630 2370 DOTIND = ASC(MID$(FILLIN$,IZ,1))-&H20 2380 IF DOTIND < 0 THEN GOTO 2470 2390 IF PITCH <> 0 THEN GOTO 2430 2400 DOTSUM = DOTSUM + DOTS(DOTIND)*SIZE 2410 GOTO 2600 2430 DOTSUM = DOTSUM + PITCH*SIZE 2440 GOTO 2600 2470 IF DOTIND <> 8 - 32 THEN GOTO 2530 2490 IZ = IZ +1 2500 IF MID$(FILLIN$,IZ,1) < CHR$(&H20) THEN GOTO 2490 2510 GOTO 2600 2530 IF DOTIND=1-32 THEN PITCH =13.3333 : GOTO 2600 2540 IF DOTIND=14-32 THEN PITCH=0 : GOTO 2600 2550 IF DOTIND=17-32 THEN PITCH=9.41177 : GOTO 2600 2560 IF DOTIND=18-32 THEN PITCH=16 : GOTO 2600 2570 IF DOTIND=23-32 THEN SIZE = (SIZE MOD 2) + 1 2580 IF DOTIND=15-32 THEN DOTSUM = DOTSUM + 12 2600 NEXT IZ 2630 DOTSUM = INT(DOTSUM +.5) : RETURN 2750 DATA 7 , 7 , 10 , 14 , 12 , 16 , 13 , 7 2760 DATA 7 , 7 , 12 , 12 , 7 , 12 , 7 , 12 2770 DATA 12 , 12 , 12 , 12 , 12 , 12 , 12 , 12 2780 DATA 12 , 12 , 7 , 7 , 12 , 12 , 12 , 12 2790 DATA 14 , 16 , 15 , 14 , 15 , 15 , 15 , 14 2800 DATA 15 , 9 , 13 , 12 , 13 , 17 , 16 , 15 2810 DATA 13 , 16 , 15 , 12 , 14 , 15 , 16 , 17 2820 DATA 11 , 14 , 11 , 12 , 12 , 12 , 12 , 12 2830 DATA 7 , 12 , 12 , 10 , 12 , 12 , 10 , 12 2840 DATA 12 , 8 , 7 , 10 , 8 , 16 , 12 , 12 2850 DATA 12 , 12 , 10 , 12 , 10 , 12 , 12 , 16 2860 DATA 12 , 12 , 10 , 10 , 7 , 10 , 12 , 0 2890 DIM DOTS(95) 2940 RESTORE 2750 2950 FOR I = 0 TO 95 2960 READ DOTS(I) 2970 NEXT I 3010 INPUT "Enter name of file to print"; FILENAME$ 3020 OPEN "I",1,FILENAME$ 3040 PRINT CHR$(26) 3050 PRINT " PRINTING ";FILENAME$:PRINT 3060 D$ = CHR$(&H1B) + "P" 3070 GOSUB 450 3100 LH = 24 : PL = 66 : MT = 3 : MB = 8 : HM = 2 : FM = 2 3110 OP = 8 : PN = 1 : SR = 9 : POFF = 30 3120 PAGEFLAG = 1 : HEADERFLAG = 0 3130 FOOTERFLAG = 0 : JUSTFLAG = 1 3140 SIZE = 1 : PITCH = 0 : PLENGTH = 1584 : PLINES = 0 3150 PITMEM$ = "P" : BLDMEM$ = CHR$(&H22) 3180 GOTO 4880 3250 CONRET = 0 3260 DOTSPEC$ = MID$(FILLIN$,2,2) 3270 IF DOTSPEC$ = "PA" THEN CONRET = 1 : RETURN 3280 IF DOTSPEC$ = "CP" THEN GOTO 3580 3290 IF DOTSPEC$ = ".C" THEN GOTO 3640 3300 IF DOTSPEC$ = "HE" THEN GOTO 3730 3310 IF DOTSPEC$ = "FO" THEN GOTO 3840 3320 IF DOTSPEC$ = "OP" THEN PAGEFLAG = 0 : RETURN 3330 IF DOTSPEC$ = "LH" THEN GOTO 4230 3340 IF DOTSPEC$ = "PL" THEN GOTO 4370 3350 IF DOTSPEC$ = "MT" THEN GOTO 4430 3360 IF DOTSPEC$ = "MB" THEN GOTO 4480 3370 IF DOTSPEC$ = "HM" THEN GOTO 4530 3380 IF DOTSPEC$ = "FM" THEN GOTO 4580 3390 IF DOTSPEC$ = "PO" THEN GOTO 4710 3400 IF DOTSPEC$ = ".T" THEN GOTO 3950 3410 IF DOTSPEC$ = ".P" THEN GOTO 4070 3420 IF DOTSPEC$ = ".S" THEN GOTO 4120 3430 IF DOTSPEC$ = "UJ" THEN GOTO 4630 3440 IF DOTSPEC$ = "SR" THEN GOTO 4330 3450 IF DOTSPEC$ = "PN" THEN GOTO 4020 3460 IF DOTSPEC$ = ".." THEN RETURN 3470 PRINT "UNRECOGNIZED DOT-COMMAND": RETURN 3510 SPECNUM = 0 3520 IF LEN(FILLIN$) < 4 THEN RETURN 3530 SPECNUM = VAL(MID$(FILLIN$,4,2)) 3540 RETURN 3580 GOSUB 3510 3590 IF PL - MB - LINENUMBER >= SPECNUM THEN RETURN 3600 CONRET = 1 : RETURN 3640 GOSUB 3510 3650 COLUMNS = SPECNUM 3670 IF COLUMNS < 1 THEN COLUMNS = 1 3680 IF COLUMNS > 3 THEN COLUMNS = 3 3690 RETURN 3730 I = LEN(FILLIN$)-3 3740 IF I < 1 THEN RETURN 3750 HEADERFLAG = 1 3760 HEADER$ = RIGHT$(FILLIN$,I) + CHR$(&HD) + CHR$(&HA) 3770 HDRK = INSTR(1,HEADER$,CHR$(11)) 3780 HDRN = INSTR(1,HEADER$,"#") 3790 IF HDRK <> 0 THEN MID$(HEADER$,HDRK,1) = " " 3800 IF HDRN <> 0 THEN MID$(HEADER$,HDRN,1) = " " 3810 RETURN 3840 I = LEN(FILLIN$) - 3 3850 IF I < 1 THEN RETURN 3860 FOOTERFLAG = 1 3870 FOOTER$ = RIGHT$(FILLIN$,I) + CHR$(&HD) + CHR$(&HA) 3880 FTRK = INSTR(1,FOOTER$,CHR$(11)) 3890 FTRN = INSTR(1,FOOTER$,"#") 3900 IF FTRK <> 0 THEN MID$(FOOTER$,FTRK,1) = " " 3910 IF FTRN <> 0 THEN MID$(FOOTER$,FTRN,1) = " " 3920 RETURN 3950 TITLEFLAG = 1 3960 I = LEN(FILLIN$) - 3 3970 IF I < 1 THEN RETURN 3980 TITLE$ = RIGHT$(FILLIN$,I)+CHR$(&HD)+CHR$(&HA) 3990 RETURN 4020 GOSUB 3510 4030 PN = SPECNUM : RETURN 4070 PLENGTH = VAL(MID$(FILLIN$,4,4)) 4080 RETURN 4120 FILLIN$ = RIGHT$(FILLIN$,LEN(FILLIN$)-3) 4130 GOSUB 2050 4140 GOSUB 2320 4150 DOTSAMPLE = DOTSUM 4160 GOSUB 4750 4170 FILLIN$ = "." + FILLIN$ 4180 RETURN 4230 GOSUB 3510 4240 IF SPECNUM > 99 THEN SPECNUM = 99 4250 LH = SPECNUM 4260 D$ = RIGHT$(STR$(LH),2) 4270 IF MID$(D$,1,1) = " " THEN MID$(D$,1) = 0 4280 D$ = CHR$(&H1B)+"T"+D$ 4290 GOSUB 450 4300 RETURN 4330 GOSUB 3510 4340 SR = SPECNUM : RETURN 4370 GOSUB 3510 4380 PL = SPECNUM 4390 RETURN 4430 GOSUB 3510 4440 MT = SPECNUM 4450 RETURN 4480 GOSUB 3510 4490 MB = SPECNUM 4500 RETURN 4530 GOSUB 3510 4540 HM = SPECNUM 4550 RETURN 4580 GOSUB 3510 4590 FM = SPECNUM 4600 RETURN 4630 GOSUB 3510 4640 JUSTFLAG = SPECNUM 4650 RETURN 4710 GOSUB 3510 4720 POFF = (SPECNUM - 8)*16 + 30 4750 OFFSET = INT((1280 - DOTSAMPLE)/2) + POFF 4760 OFFS$ = STR$(OFFSET) 4770 IF MID$(OFFS$,1,1) = " " THEN MID$(OFFS$,1,1) = "0" 4780 IF MID$(OFFS$,2,1) = " " THEN MID$(OFFS$,2,1) = "0" 4790 OFFS$ = CHR$(&H1B)+"F"+RIGHT$("000"+OFFS$,4) 4800 RETURN 4880 LINE INPUT#1,FILLIN$ 4890 IF LEN(FILLIN$) < 3 THEN GOTO 4920 4900 IF MID$(FILLIN$,2,2) = ".S" THEN GOTO 5130 4920 DOTSAMPLE = 0 4930 FOR I = 1 TO 20 4950 LINE INPUT#1,FILLIN$ 4960 IF LEN(FILLIN$) = 0 THEN GOTO 4950 4970 IF ASC(FILLIN$) = ASC(".") THEN GOTO 4950 4980 GOSUB 2050 4990 GOSUB 2320 5000 IF DOTSUM > DOTSAMPLE THEN DOTSAMPLE = DOTSUM 5020 NEXT I 5050 DOTSAMPLE = DOTSAMPLE + 40 5080 GOSUB 4750 5130 CLOSE 5140 OPEN "I",1,FILENAME$ : ON ERROR GOTO 7030 5150 GOTO 5640 5180 CONRET = 0 5190 FOR IY = 1 TO PL-MB-LINENUMBER 5200 LPRINT 5210 LINENUMBER = LINENUMBER + 1 : PLINES = PLINES + LH 5220 NEXT IY 5250 IF FOOTERFLAG = 0 THEN GOTO 5440 5260 FOR I = 1 TO FM 5270 LPRINT 5280 NEXT I 5290 IF FTRK > 2 THEN MID$(FOOTER$,FTRK-2,3) = " " 5300 IF FTRN > 2 THEN MID$(FOOTER$,FTRN-2,3) = " " 5310 IZ = FTRK 5320 IF (FTRK <> 0) AND ((PN MOD 2) = 0) THEN GOTO 5360 5330 IF FTRN = 0 THEN GOTO 5390 5340 IZ = FTRN 5360 PNUM$=STR$(PN) : PNUMLEN = LEN(PNUM$) 5370 MID$(FOOTER,IZ-PNUMLEN+1,PNUMLEN) = PNUM$ 5390 RESTOR$ = CHR$(27)+BLDMEM$+CHR$(27)+PITMEM$ 5400 D$ = OFFS$ + FOOTER$ + RESTOR$ : GOSUB 450 5410 PLINES = PLINES + LH 5440 PN = PN + 1 5450 RMA144 = PLENGTH - (PLINES MOD PLENGTH) 5460 NUMBERLF = INT(RMA144/LH) 5470 IF NUMBERLF < 1 THEN GOTO 5530 5480 FOR I = 1 TO NUMBERLF 5490 LPRINT 5500 RMA144 = RMA144 - LH 5510 NEXT I 5530 IF RMA144 = 0 THEN GOTO 5640 5540 D$ = RIGHT$(STR$(RMA144),2) 5550 IF MID$(D$,1,1) = " " THEN MID$(D$,1,1) ="0" 5560 D$ = CHR$(27)+"T"+D$+CHR$(13)+CHR$(10) : GOSUB 450 5570 D$ = RIGHT$(STR$(LH),2) 5580 IF MID$(D$,1,1) = " " THEN MID$(D$,1,1) = "0" 5590 D$ = CHR$(27)+"T"+D$ : GOSUB 450 5640 LINENUMBER = 1 : PLINES = 0 5650 LINE INPUT#1, FILLIN$ 5660 PRINT FILLIN$ 5670 IF LEN(FILLIN$) = 0 THEN GOTO 5760 5680 IF ASC(FILLIN$) <> ASC(".") THEN GOTO 5760 5690 GOSUB 3250 5700 IF CONRET = 1 THEN GOTO 5180 5710 GOTO 5640 5760 IF MT - HM < LINENUMBER THEN GOTO 5850 5770 LPRINT 5780 LINENUMBER = LINENUMBER + 1 5790 PLINES = PLINES + LH 5800 GOTO 5760 5850 IF PN <> 1 GOTO 5930 5860 IF TITLEFLAG = 0 GOTO 5930 5870 D$ = TITLE$ : GOSUB 450 5880 LINENUMBER = LINENUMBER + 1 5890 PLINES = PLINES + LH 5900 GOTO 6100 5930 IF HEADERFLAG = 0 THEN GOTO 6100  5940 IF HDRK > 2 THEN MID$(HEADER$,HDRK-2,3) = " " 5950 IF HDRN > 2 THEN MID$(HEADER$,HDRN-2,3) = " " 5960 IZ = HDRK 5970 IF (HDRK <> 0) AND ((PN MOD 2) = 0) THEN GOTO 6010 5980 IF HDRN = 0 THEN GOTO 6040 5990 IZ = HDRN 6010 PNUM$ = STR$(PN) : PNUMLEN = LEN(PNUM$) 6020 MID$(HEADER$,IZ-PNUMLEN+1,PNUMLEN) = PNUM$ 6040 RESTOR$ = CHR$(27)+BLDMEM$+CHR$(27)+PITMEM$ 6050 D$ = OFFS$+HEADER$ + RESTOR$ : GOSUB 450 6060 LINENUMBER = LINENUMBER + 1 6070 PLINES = PLINES + LH 6100 IF LINENUMBER > MT THEN GOTO 6210 6110 LPRINT 6120 LINENUMBER = LINENUMBER + 1 6130 PLINES = PLINES + LH 6140 GOTO 6100 6180 LINE INPUT #1, FILLIN$ 6190 PRINT FILLIN$ 6210 IF PAGEFLAG = 0 THEN GOTO 6340 6220 IF LEN(FILLIN$) = 0 THEN GOTO 6180 6230 GOTO 6340 6280 IF PAGEFLAG = 0 THEN GOTO 6310 6290 IF LINENUMBER > (PL - MB) THEN GOTO 5250 6310 LINE INPUT #1, FILLIN$ 6320 PRINT FILLIN$ 6340 IF LEN(FILLIN$) = 0 THEN GOTO 6400 6350 IF ASC(FILLIN$) = ASC(".") THEN GOSUB 3250 6360 IF CONRET = 1 THEN GOTO 5180 6370 IF ASC(FILLIN$) = ASC(".") THEN GOTO 6280 6380 IF JUSTFLAG <> 0 THEN GOTO 6480 6400 D$ = FILLIN$+CHR$(&HD)+CHR$(&HA) 6410 GOSUB 450 6420 LINENUMBER = LINENUMBER + 1 6430 PLINES = PLINES + LH 6440 GOTO 6280 6480 GOSUB 2050 6490 GOSUB 2320 6500 ADJDOTS = DOTSAMPLE-DOTSUM 6510 IF ADJDOTS < 0 THEN GOTO 6400 6540 NUMSPACE = 0 6550 FOR I = FIRSTCOL TO LASTCOL 6560 IF MID$(FILLIN$,I,1) <> " " THEN GOTO 6590 6570 NUMSPACE = NUMSPACE + 1 6590 NEXT I 6630 IF NUMSPACE = 0 THEN GOTO 6710 6640 ADDDOTS = 1 + INT(ADJDOTS/NUMSPACE) 6670 IF ADDDOTS > 36 THEN ADDDOTS = 12 6710 D$ = OFFS$ 6720 GOSUB 450 6730 FOR I = FIRSTCOL TO LASTCOL 6740 D$ = MID$(FILLIN$,I,1) 6750 IF D$ <> " " THEN GOTO 6940 6760 IF ADJDOTS = 0 THEN GOTO 6940 6770 IF ADJDOTS < ADDDOTS THEN ADDDOTS = ADJDOTS 6780 ADJDOTS = ADJDOTS - ADDDOTS 6790 NOWDOTS = ADDDOTS 6810 IF NOWDOTS > 6 THEN GOTO 6860 6820 D$ = CHR$(&H1B)+CHR$(NOWDOTS+48) 6830 GOSUB 450 6840 GOTO 6920 6860 D$ = CHR$(&H1B)+"6" 6870 GOSUB 450 6880 NOWDOTS = NOWDOTS - 6 6890 IF NOWDOTS = 0 THEN GOTO 6920 6900 GOTO 6810 6920 D$ = " " 6940 GOSUB 450 6950 NEXT I 6960 D$ = CHR$(&HD) + CHR$(&HA) 6970 GOSUB 450 6980 LINENUMBER = LINENUMBER + 1 6990 PLINES = PLINES + LH 7000 GOTO 6280 7030 CLOSE 7040 END  CHR$(&HA) 6970 GOSUB 450 6980 LINENUMBER = LINENUMBER + 1 6990 PLINES = PLINES + LH 7000 GOTOLLIN$,I,1) <> " " THEN GOTO 6590 6570 NUMSPACE = NUMSPACE + 1 6590 NEXT I 6630 IF NUMSPACE = 0 THEN GOTO 6710 6640 ADDDOTS = 1 + INT(ADJDOTS/NUMSPACE) 6670 IF ADDDOTS > 36 THEN ADDDOTS = 12 6710 D$ = OFFS$ 6720 GOSUB 450 6730 FOR I = FIRSTCOL TO LASTCOL 6740 D$ = MID$(FILLIN$,I,1) 6750 IF D$ <> " " THEN GOTO 6940 6760 IF ADJDOTS = 0 THEN GOTO 6940 6770 IF ADJDOTS < ADDDOTS THEN ADDDOTS = ADJDOTS 6780 ADJDOTS = ADJDOTS - ADDDOTS 6790 NOWDOTS = ADDDOTS 6810 IF NOWDOTS > 6 THEN GOTO 6860 6820 D$ = CHR$(&H1B)+CHR$(NOWDOTS+48) 6830 GOSUB 450 6840 GOTO 6920 6860 D$ = CHR$(&H1B)+"6" 6870 GOSUB 450Name of this file: Documentation for: PRO-BAS.DOC PRO.BAS Type of program: MBasic Utility Program Function: Prints right justified output from a WordStar file using the C Itoh ProWriter dot matrix printer's proportional font. Should also work with NEC 8023A and similar printers. Source: Bob Thomson Tacoma, WA Author - Mark Gardner, Interface Age Jan 84 Procedure to use: Prepare normal WordStar file in the (D)ocument mode. Use Normal commands (see below). Before printing PIP the file to a new filename with the [Z] parameter. Run PRO in MBasic and call up the PIPped file for printing. On Screen Messages: ************************************************** * PROPORTIONAL PRINTING WITH C ITOH PROWRITER * ************************************************** Was PIP with [Z] used on file to print (Y/N)? Y Enter name of file to print: _ Notes: The file should normally be between 79 and 104 columns for a normal 8-1/2" by 11" page. Printing is quite slow since the program calculates the number of dot spaces for each letter and the spaces between them and the words on a line. For more information, read the Interface Age article. Each file to be printed should be terminated with a .PA to show a page break. Leading spaces will be ignored unless preceded by ^PO. ^PO can also be used to prevent large spaces between few words on the last line of a paragraph. Text will be justified on the longest line length in the first twenty lines. Line length to be used for justification can be forced by placing the desired line after ..S at the beginning of the file. Below is the list of commands recognized and used by the program. You may find it handy to print the command summary, given below, for future reference. ==================================================== WordStar Formatting Command Codes Used By PRO.BAS Command Description  ^S Underscore Toggle. Underlines all characters and spaces between the bracketing ^S command codes. ^D Boldface/Doublestrike Toggle. Uses the ProWriter bold print characters "significantly darker than normal characters." ^X Strikeout Toggle. Bracketed characters are struck over with a hyphen. Must not be used including normal spaces, use instead of space, or bracket individual words. ^V Subscript Toggle. Bracketed characters are printed as a subscript. The paper is rolled forward before printing. ^T Superscript Toggle. Bracketed characters are printed as a superscript. The paper is rolled backward before printing. ^C Stop Print. The print operation is suspended until you press a key on the keyboard. A message is put on screen with a beep. ^A Select Elite Pitch. Switches font to 12 pitch ProWriter set. The lines containing these characters are still justified. ^N Select Proportional Set. Switches font to the ProWriter proportional set. The lines are justified. ^K Left Page Number Position. Used in headers and footings to position the page number on even number pages. If not present, the # sign is used to locate page number on all pages, not just odd number pages. Page number is suppressed unless specifically called out in a header or footing. ^O Non-Break Space. Prints as a space, but the justification process will not include it in calculations, nor add extra space to it when justifying the line. It prints 12 dot columns wide, more than a normal space of seven dots. ^H Overstrike. Causes the printhead to backspace before printing the next character. The ProWriter correctly centers the narrow accent marks over wider letter characters, and puts the next character in correctly.  Several ^H command characters may be put in in a row. ^Q Selecte Condensed font. Switches to the ProWriter condensed font at 17 cpi. The lines containing these characters are still justified. ^W Wide Character Toggle. Bracketed characters are printed doble wide. The lines containing these characters are still justified, but indiscriminate use can make the lines dot length too big for PRO to correct. ^E Alternate Font Select. First of two character sequences selecting "other" fonts. If the character following ^E is printable, its high bit is set, turning it into one of the graphics and Greek letter symbols in the ProWriter's extended character set. This continues until the letter z is encountered, which causes the program to stop setting the high bit. No control codes in the sequence will be recognized, but will be converted to graphics characters. The letter z is used as the stop, since it has no graphic assigned, and is mnemonically related to the ^Z used to terminate CP/M ASCII files. (See Table 9-2 in the printer manual). If the character following the ^E is ^A, ^E, ^N, ^Q, ^R, or ^W, then external fonts are selected (but not in the version of the program shown here), and a single character control code (e.g. ^N) will terminate the external font use. ^R Select Pica Font. Switches to the 10 cpi font. The lines containing these characters will still be justified.  ..S Force Justification Size. This command causes PRO to use the character string on the line with ..S to calculate the justification parameters. If this command is used as the first line in the file, PRO will not sample 20 lines to find typical line length. x xx xxxx Note about numbers. Many of the dot commands below have numeric arguments. These are indicated with x, xx, or xxxx, depending on how many digits there are. the digits you use to specify the argument must be placed precisely where the x's are, and you must use leading 0's where required to fill out the  argument to the number of digits required. .LHxx Line Height. Sets line-to-line spacing to xx/144 of an inch. All margins will be spaced with the newly set line spacing. You should set a page size (in lines) with .PL that reflects the number of lines of your selected spacing that will fit on the form length you are using. PRO accumulates vertical dots, not lines, in order to perform the "form feed" function. Will not be confused by mixing different line spacings on a page, as long as you don't run across a page boundary by having the page size (in lines) set too long. .PL Page Size. Sets the number of lines PRO can get on a page. This is used to determine when to break text at footing margins. See note with .LH and ..P. ..Pxxxx Page Length. Sets the page length in dots at 144 per inch. The default is 1584 for 11 inch dorms. PRO uses this information to do "form feeds". .MTxx Top Margin. The number of lines from the top of the paper to the beginning of the body of the text on the page. .MBxx Bottom Margin. The number of lines at bottom of page not used for text. .HMxx Heading Margin. The number of blank lines between page header and the start of the body of the text on the page. .FMxx Footing Margin. The number of blank lines between the body of the text and the footing. .POxx Page Offset. If left at default of eight, the PRO output will be centered on the page. Making it more or less than eight will increase or decrease the size of the left margin in increments of about 1/10 inch. .PA Unconditional Page. Terminates a page or column. The paper is rolled forward so the footing appears appropriately. This command should always end a file, since PRO will otherwise not correctly position the footing on the final page of the document. .CPxx Conditional Page. Forces the next xx lines to print together, moving to the next page or column if they wont fit in the current page or column. .HE(text) Heading. This command causes PRO to use the character string on the line with the command as a heading, printing it on the top of each subsequent page. may contain ^K and # sign to determine page numbering, even with text between them (page numbers are substituted right justified to the ^K or #, so be sure to leave sufficient space in front of each). If a title is defined, the heading will not print on the first page. ..T(text) Title. This command causes PRO to use the character string on the line with the command as a title, printing it in the heading location on the first page. .FO(text) Footing. This command causes PRO to use the character string on the line with the command as a footing, printing it on the bottom of each subsequent page. May contain page number specification, see .HE, and note that no page number will appear on the page unless specified in the header or footing. .OP Cancel Pagination. Cancels line counting, causing a continuous print of the remainder of the file without headers, footings, or top or bottom margins. Cannot be restored. .PNxx Set page number. Set the page number to the value given. Useful for printing documents broken into several files. .SRxx Subscript/Superscript Roll. Defines the forward and reverse roll distance for superscripts and subscripts. The distance is set to xx/144 of an inch. The normal spacing (from default or .LH command) is reset after the subscript/superscript operation. .UJ x Justification on/off. x = 0 sets off, x = 1 sets on. When justification is off, PRO prints the lines literally from the file. This can be useful for charts, etc. ...(text) Comments. The text on the remainder of this command line is not processed by PRO for any purpose. 5 CLS$=CHR$(26) 10 REM "ADDRESSR.BAS" COPR 1983 MARK GARDNER 20 ELITE$ = CHR$(27)+"E" :EDGE=4 : CENTER = 36 : TRACTOR = 1 25 ' Enter Return Address in Lines 20 - 70 30 DATA "Robert J. Thomson" 40 DATA "1808 Lenore Drive" 50 DATA "Tacoma, WA, 98406" 60 DATA "" 70 DATA "" 80 DIM A$(25,4) : FOR I = 0 TO 4 : READ RETADR$(I) : NEXT I : PRINT 85 PRINT CLS$:PRINT:PRINT:PRINT 90 RETFLAG = 1 : PRINT "Choose one: 'E' for envelopes" 100 PRINT " 'L' for labels" 110 PRINT " ' to exit program"; : GOSUB 810 120 PRINT ANS$ : PRINT : IF ANS$="L" OR ANS$="l" THEN GOTO 140 130 GOTO 160 140 GOSUB 790 150 GOTO 180 160 IF ANS$<>"E" AND ANS$<>"e" THEN SYSTEM 170 GOSUB 800 180 PRINT "Choose one: for regular operation " 190 PRINT " 'N' for no return addresses " 200 PRINT " 'S' for self-addressed sets" 210 PRINT " 'C' for combination of 'N' and 'S' ";: GOSUB 810 220 PRINT ANS$ : PRINT 230 IF ANS$="N" OR ANS$="n" OR ANS$="C" OR ANS$="c" THEN RETFLAG = 0 240 IF ANS$="S" OR ANS$="s" OR ANS$="C" OR ANS$="c" THEN GOTO 730 250 PRINT " "+WHAT$+"Addressing Program; Enter Addresses --" 260 PRINT " Terminate each address with one empty line." : PRINT 270 ADDRESS = 0 : ALINE = 0 280 GOSUB 840 290 A$(ADDRESS,ALINE) = C$ : PRINT 300 IF A$(ADDRESS,ALINE) <> "" THEN GOTO 380 310 LINES(ADDRESS) = ALINE - 1 320 PRINT " Hit return if address Ok, 'N' if not"; 330 GOSUB 810 340 IF ANS$="N" OR ANS$="n" THEN GOTO 360 350 ADDRESS = ADDRESS + 1 360 PRINT CHR$(13)+" Enter address (#"ADDRESS+1") or a '.' to start printing." 370 ALINE = 0 : PRINT : GOTO 280 380 IF A$(ADDRESS,ALINE)="." THEN GOTO 410 390 ALINE = ALINE + 1 : IF ALINE = 5 THEN PRINT : GOTO 310 400 GOTO 280 410 MAXADR = ADDRESS - 1 : ADDRESS = 0 420 PRINT "Insert "+WHAT$+" in printer, hit " : INPUT DUMMY 430 LPRINT ELITE$; 440 IF RETFLAG=1 THEN FOR I = 0 TO 4 : LPRINT SPC(MARGIN1) RETADR$(I) : NEXT I 450 IF RETFLAG=1 AND LABELS=0 THEN LPRINT 460 IF RETFLAG=0 AND LABELS=0 THEN FOR I = 1 TO 7 : LPRINT : NEXT I 470 IF RETFLAG=1 THEN LPRINT 480 FOR I = 0 TO LINES(ADDRESS) : LPRINT SPC(MARGIN2) A$(ADDRESS,I) : NEXT I 490 IF LABELS = 1 THEN GOTO 510 500 FOR I = 0 TO 3 :LPRINT : NEXT I : GOTO 530 510 EXTRA = 5-((LINES(ADDRESS)+1) MOD 6) 520 FOR I = 0 TO EXTRA : LPRINT : NEXT I 530 ADDRESS = ADDRESS + 1 :IF ADDRESS > MAXADR THEN GOTO 560 540 IF LABELS=0 THEN GOTO 420 550 IF LABELS=1 THEN GOTO 440 560 PRINT : PRINT "Done! Enter 'R' to restart ... OR" 570 PRINT "Hit to annotate addresses "; : GOSUB 810 580 PRINT ANS$ : PRINT : IF ANS$="R" OR ANS$="r" THEN RUN 590 IF SELFFLAG = 1 THEN PRINT "SAE's -- skipping annotation" : RUN 600 PRINT "Put paper in printer (top of form) and enter date - ";: GOSUB 840 610 PRINT : LPRINT " Mail sent -- notes for " C$ : LPRINT : LINES =0 620 FOR J = 0 TO MAXADR 630 FOR I = 0 TO LINES(J): PRINT SPACE$(10)+A$(J,I) : NEXT I 640 PRINT "Give annotation to go with the above address:" : GOSUB 840 650 LPRINT : LPRINT SPACE$(10)+C$ : LINES = LINES+2 : PRINT : PRINT 660 FOR I = 0 TO LINES(J) : LPRINT SPACE$(20)+A$(J,I) 670 LINES = LINES + 1 : NEXT I 680 IF LINES < 55 THEN GOTO 710 690 LPRINT CHR$(12) : LPRINT : LPRINT : LINES = 0 700 IF TRACTOR = 0 THEN INPUT "Put in new page, hit ."; DUMMY 710 NEXT J 720 RUN 730 INPUT "How many sets do you want?"; NUMSLF 740 IF NUMSLF > 25 THEN NUMSLF = 25 750 FOR J = 0 TO NUMSLF-1 760 FOR I = 0 TO 4 762 A$(J,I) = RETADR$(I) 766 NEXT I 770 LINES(J) = 4 775 NEXT J 780 MAXADR = NUMSLF-1 782 SELFFLAG = 1 784 GOTO 420 790 LABELS = 1:WHAT$ = "LABELS" : MARGIN1 = EDGE : MARGIN2 = EDGE : RETURN 800 LABELS = 0:WHAT$ = "ENVELOPE ": MARGIN1 = 1 : MARGIN2 = CENTER : RETURN 810 ANS$ = INKEY$ : IF ANS$ = "" THEN GOTO 810 820 IF ANS$ =CHR$(13) THEN ANS$ = "" 830 RETURN 840 C$ = "" 850 B$ = INKEY$ : IF B$ = CHR$(13) THEN RETURN 860 IF B$ <> CHR$(8) AND B$ <> CHR$(127) THEN GOTO 890 870 PRINT CHR$(8)+" "+CHR$(8); 880 IF LEN(C$)>0 THEN C$=LEFT$(C$,LEN(C$)-1) : GOTO 850 890 PRINT B$; : C$ = C$ + B$ : GOTO 850  PRINT CHR$(8)+" "+CHR$(8); 880 IF LEN(C$)>0 THEN C$=LEFT$(C$,L= LINES + 1 : NEXT I 680 IF LINES < 55 THEN GOTO 710 690 LPRINT CHR$(12) : LPRINT : LPRINT : LINES = 0 700 IF TRACTOR = 0 THEN INPUT "Put in new page, hit ."; DUMMY 710 NEXT J 720 RUN 730 INPUT "How many sets do you want?"; NUMSLF 740 IF NUMSLF > 25 THEN NUMSLF = 25 750 FOR J = 0 TO NUMSLF-1 760 FOR I = 0 TO 4 762 A$(J,I) = RETADR$(I) 766 NEXT I 770 LINES(J) = 4 775 NEXT J 780 MAXADR = NUMSLF-1 782 SELFFLAG = 1 784 GOTO 420 790 LABELS = 1:WHAT$ = "LABELS" : MARGIN1 = EDGE : MARGIN2 = EDGE : RETURN 800 LABELS = 0:WHAT$ = "ENVELOPE ": MARGIN1 = 1 : MARGIN2 = CENTER : RETURN 810 ANS$ = INKEY$ : IF ANS$ = "" THEN GOTO 810 820 IF ANS$ =CHR$(13) THEN ANS$ = "" 830 RETURN 840 C$ = "" 850 B$ = INKEY$ : IF B$ = CHR$(13) THEN RETURN 860 IF B$ <> CHR$(8) AND B$ <> CHR$(127) THEN GOTO 890 870 PRINT CHR$(8)+" "+CHR$(8); 880 IF LEN(C$)>0 THEN C$=LEFT$(C$,LOwn Name: PRO-ADDR.DOC Subject Name: PRO-ADDR.BAS Program Type: MBasic Application Program Function: Prints Envelopes and address labels using proportional font of C Itoh ProWriter dot matrix printer. Author: Mark Gardiner, Glendale CA Program Notes: Author Mark named this program ADDRESSR.BAS. I have renamed it PRO-ADDR.BAS to retain its relationship with PRO.BAS which will print a letter with the C Itoh ProWriter proportional font, right justified. This is a companion program to PRO.BAS which will print an envelope with the specified return address in the upper left corner and the address in the center of the envelope. Other options include printing self addressed envelopes and printing mailing labels. All instructions are self explanatory. Bob Thomson, Tacoma, WA  Proportional Spacing With the Diablo 630 Using WordStar by Don M. McLaughlin Here's a scheme to make your Diablo 630 do nifty proportional spacing, creating the prettiest text this side of typesetting. This same idea will create variable pitch non- proportional print, microjustified. The secret is the program DIABLO.COM which allows setting of the margins on the 630. These printer margins determine the length of the printed line. The length of the WordStar RULER line determines the number of CHARACTERS to be placed within the printer's set margins. Sorry, It ain't free. Proportional print looks really good only when you use a proportional spacing (PS) printwheel. They are about $50. each. If you are going to spring, let me suggest the Xerox Roman PS wheel. This combination together with your mailing database will produce a form letter that no one will suspect was not individually typed. I've had clients ask where they could buy such a beautiful typewriter. When your form letters get READ and get RESULTS your money has been spent wisely! The first step is to assemble all the programs you will need on a special diskette with system tracks. WS.COM (Unmodified by ANY add ons like Math) All the WordStar overlay programs, including mergeprint. DIABLO.COM If you are a double density user the following can fit on the main diskette: INSTALL.COM SETUP.COM Run INSTALL. When asked if you want a normal first time installation : answer N When asked for filename of WordStar to be installed answer : WS.COM if WordStar and Install are on the same drive or B:WS.COM if you are running Install on A: and WordStar on B:. Next Install asks "filename for saving installed WordStar":. It is possible to have several versions of WS.COM on the same disc all sharing the same overlay files. I keep three versions. One version with the Diablo installed as a standard daisy wheel (option E), one with the installation described here, and one version for my IDS prism. I name the standard daisy version DSTD.COM, this version DPRO.COM and the version for the dot matrix printer IDS.COM. Name this version with any filename that you wish. Be sure to specify the drive name B:filename.extension if WordStar is being installed on drive B: When you see the terminal choice menu answer U for unchanged. Next Install will present a printer menu. Choose oprion C , a TTY-like printer that can backspace. Specify none for communications protocol. When asked if modifications are complete answer N for ''. Enter the following values by typing the label or address of the function changeable by the user. When entering labels be sure to follow the label with a colon. Addresses do not require colons. Entries here are shown in "shorthand", separated by commas. In Install type LABEL: , INSTALL will reply with a new line showing the address, old value, and a blank space for a new value. Enter ONE value of the string shown below on a separate line. Follow each value with TWO carriage returns, except only ONE carriage return for the last value in the string. ~l SHORTHAND USE DOES LABEL & VALUES THIS THIS FUNCTION PALT:03,1B,1E,07 (^PA) Sets print line to 8 lines/inch. PSTD:03,1B,1E,09 (^PN) Sets print line to 6 lines/inch. ROLUP:02,1B,44 (^PT) Superscript negative half line feed. ROLDOW:02,1B,55 (^PV) Subscript half line feed. USR1:01,1B (^PQ) Issues Escape Character USR2:03,1B,1F,0B (^PW) Sets spacing to 12 char./inch. USR3:03,1B,0D,50 (^PE) Printer Remote Reset USR4: (^PR) Left open for HexPrintR RIBBON:02,1B,41 (^PY) Red Ribbon Toggle RIBOFF:02,1B,42 (^PY) Black Ribbon Toggle NEXT TWO FOR SCREEN PAC USERS ONLY (USING MONITORS) WID:67  Sets Flag line column 104 INITRM:66 Sets Ruler line 103 columns And then: ITITOG:00 Insert defaults to OFF Following are addresses, use no colon after. 037E 00 Sets WS page offset to zero 0386 00 WS Justification Default OFF Exit INSTALL Run SETUP.COM Set Printer Standard Serial or Diablo Xon/Xoff Set Baud 1200 Set Arrows WORDSTAR Set Scroll ON (for 52 column users) Set Scroll OFF (for screen pac users) Set Screen size 104 (for screen pac users) Set Special Function Keys: 0 DIABLO :Access margin setting program 1 ^PQ :Sends Escape Code 2 ^PQE :Enable Continuous Underscore 3 ^PQR :Disable Continuous Underscore 4 ^PQM :Enable auto justify 5 ^PQ= :Enable Auto Center, Clears  6 ^PQO :Enable Bold Printing 7 ^PQW :Enable Shadow Printing 8 ^PQ& :Quit Bold or Shadow Printing 9 ^PQX :Cancel all commands except Proportional Spacing Save Setup on New WordStar Disk. Press RESET and RETURN to read setup information into memory. Manual Commands: ^1P Enable Proportional Spacing ^1S Return All Spacing to Switch Default Setting ^19 Set left margin at print head position ^10 Set right margin at print head position Now program the operator: ALWAYS compose text with WordStar word-wrap turned ON and WordStar Justification OFF. When composing text set the WordStar ruler line (the right margin (^OR)) for about 20% more spaces than normal at 10 pitch for the most pleasing results. (a 6.5 inch print line will need WordStar's right margin at 80.) When composing headings to be centered, compose them against the left margin, they will be printed centered, by the PRINTER. EXample:^PQ=PRINTED CENTERED HEADING^PQ& Forget using the normal WordStar ^OC print command which centers text, use instead the command above. When text is to be printed justified to the right margin, place the control code for auto justify (^PQM or ^4) preceeding the first line of text or at the beginning of the first line of text. If auto justify is not turned on the printer will ignore its right margin setting and print whatever line length is sent to it by WordStar with a ragged right edge. It's a good idea to turn auto justification off at the end of a document which has been justified. Use (^PQX or ^9). This code should be placed on the line below the end of text. HINT : In auto justify mode, print density (in characters per inch) will be equal to the line length in inches (set by DIABLO. COM) divided by the number value of WordStar's right margin (the R on the ruler line). The printer prints this text micro-justified. This allows print pitches which are almost infinately variable. Usable ratio is from 10 cpi to 15 cpi. HINT #2: Beware of paragraph last lines approximately 5/8 filled. This will result in 5/8 line being spread across entire line. Try to compose text so that paragraph last lines are less than half filled or nearly filled. PROPORTIONAL spacing may be used with or without auto justify. Control codes are used the same way as for justify and may be grouped with the justify codes. The proportional spacing mode defaults to 12 characters per inch, so at least this many characters should be sent from each WordStar composed line. Capital letters on proportional wheels are very fat and it is possible to overcrowd a line that is all capitals. Usually even a full line of capitals will fit at 12 cpi. PRINTER MARGINS are set from the no-file menu. Make sure that the printer is turned on. Use the R option and when asked for name of command press ^0. The program DIABLO.COM will load and ask you for the left margin setting and the length of print line. After returning to the no-file menu, press the printer platen knob inward and adjust paper so that top of form is at the top of the ribbon. This is by far the best method of setting printer margins as it allows several different documents to be printed or merge-printed without resetting margins. Margins may also be set from the document its self. Using this method merge-printing without specifing mailmerge to wait for paper changes between documents is not possible. The margins get all goofed up. To setup margins during document composition, place the reset code (^PE) in the first column of the first line of the document following any dot commands. On the next line use the space bar or tab key to space inward the number of spaces required for the left margin and type ^19 then advance the cursor the number of spaces desired for the print line length and type ^10. In this manner the document will set it's own margins as it begins to print. Notes Installing WordStar for 104 column screen offsets page numbering. For letters I usually turn page numbers off with the .OP command. If page numbering is desired set each document with a .PCnn where nn is equal to 1/2 the WordStar margin setting. Superscripts and Subscripts are accomplished by half line platen roll and are not as attractive as 3/48 line roll provided when WordStar is installed for a Daisy Wheel printer. This document is meant to be printed for your reference by WordStar BEFORE this installation is accomplished. A sister document called DIABLO.PRN is provided to be printed after installation is made as a check on performance. DIABLO.PRN should be printed with the newly installed disk and with a PS print wheel installed in the printer. Print wheel changes also require changing the left hand rotary switch to match the wheel used. DIABLO.DIR is a file you may print as a reference card for the new in-document control codes to be used with this scheme. PAGE.COM is a program which sets the Diablo 630 page length to any number of lines you wish. This allows you to use form feeds with WordStar when printing on non standard (not 11") paper. It is not a really useful program used with WordStar, but for use with other programs like DataStar that use form feeds for page ejection it's the berries. DIABLO.COM and PAGE.COM are written in CBASIC COMPILER. I have included the source code for DIABLO.COM, DIABLO.BAS so that it may be easily transmitted by modem. I have sent DIABLO.COM, BAS, PRN, DIR, DOC (the original of this article) and PAGE.COM to the FOG Disk Library. David e sent DIABLO.COM, BAS, PRN, DIR, DOC (the newly installed disk and with a PS print wheel installed in the printer. Print wheel changes also require changing the le.OP .MT 0 Print 60 lines/page .MB 6 OSBORNE I Pin Assignments for PROWRITER  ......OSBORNE I...... (**) .....PROWRITER...... Dat Bi 1 ( 1) 2 Data Bit 1 Data Bit 5 2 (13) 6 Data Bit 5 Data Bit 2 3 ( 2) 3 Data Bit 2 Data Bit 6 4 (14) 7 Data Bit 6 Data Bit 3 5 ( 3) 4 Data Bit 3 Data Bit 7 6 (15) 8 Data Bit 7 Data Bit 4 7 ( 4) 5 Data Bit 4 Data Bit 8 8 (16) 9 Data Bit 8 .. 9 Remote Enable 10 Out Strobe 11 ( 6) 1 Data Strobe In Ground 12 (18) 19 Twisted Pair to 1  ... 1 Ground 14 Bus 15 ( 8) 11 Input-Bus Ground 16 (20) 29 Twisted Pair to 11 Input Ready 17 Ground 18 In Strobe 19 (10) 13 Select Ground 20 (22) 20 Data 1 Ground ... 21 Ground 22 Shield Chassis Ground 23 (12) 17 Chassis Ground Logic Ground 24 ... 25 ... 26 * Thes ar th pi number tha th edg connecto correspond t o a IEE 24-pi ribbo connector Th cabl configuratio use has a 26-pi edg connecto o shor lengt o fla ribbo t IEE 24-pi connecto whic mate t roun cabl wit 1 wire (1 signa an twiste pai plu shield). DIP SWITCH SETTINGS ON THE PROWRITER: Dipswitc Dipswitc 2 8 Open x x x x x x Open x - - x x x Closed x x Closed x - - x Dipswitch 21 1 2 3 4 5 6 7 8 Dipswitch 22 1 2 3 4 Open x x x x x x Open x - Closed x x Closed x x - Dipswitch 23 1 2 3 4 5 6 Dipswitch 24 1 2 3 4 5 6 7 8 Open x x x x Open x x x x Closed x x Closed x x x x Th Prowrite underlin characte (5Fh doe no prin wit pi 9 bu wit pi 7 T ge underscor i Wordstar us eithe th graphic characte 80h o th underscor Escap sequence.  Dal Allan 408-867-6630 DIP SWITCH SETTINGS ON THE PROWRITER: Dipswitc Dipswitc 2 8 Open x x x x x x Open x - - x x x Closed x x Closed x - - x Dipswitch 21 1 2 3 4 5 6 7 8 Dipswitch 22 1 2 3 4 Open x x x x x x Open x - Closed x x Closed x x - Dipswitch 23 1 2 3 4 5 6 Dipswitch 24 1 2 3 4 5 6 7 8 Open x x x x Open x x x x Closed x x Closed x x x x Th Prowrite underlin characte (5Fh doe no prin wit pi 9 bu wit pi 7 T ge underscor i Wordstar us eithe th graphic characte 80h o th underscor Escap sequence. program PSETUP; { This program is intended to send setup code sequences to a Panasonic KX-P1092 printer. Written by Kent Walker, September, 1985, using Turbo Pascal v2.0 } var A: char; N: integer; const { Printer Codes } PrinterCode: array[0..14] of string[6] = ( #$0F , #$12 , #$1B'2', #$1B'M', #$1B'Wn', #$1B'Wm', #$1B'7', #$1B'6', #$1B'E', #$1B'F', #$1B'G', #$1B'H', #$1B'A12'#$1B'2', #$1B'0', #$0C#$1B'@' ); { Messages matching above Printer Codes } Message: array[0..14] of string[25] = ( 'Compressed Print', 'Non-Compressed Print', 'Pica - 10 cpi', 'Elite - 12 cpi',  'Double Width Print Set', 'Double Width Print Reset', 'IBM-PC Graphics Mode 1', 'IBM-PC Graphics Mode 2', 'Emphasized Print Set', 'Emphasized Print Reset', 'Double Strike Print Set', 'Double Strike Print Reset', '6 Lines Per Inch', '8 Lines Per Inch', 'Reset Printer' ); begin { Display the menu } ClrScr; Writeln( ' Panasonic Printer Setup Program '); Writeln( ' ' ); for N := 0 to 14 do begin A := chr( N + ord( 'A' ) ) ; Writeln( A:15, ' ', Message[N] ); end; GotoXY(15,23); Write('Press RETURN to terminate'); { Request input until a RETURN is entered} repeat GotoXY(15,22); Write( 'Please enter your selection(s) ' ); read( KBD, A ); { Convert the letter to upper case & a number starting  with A = 0 } N := ord( UpCase( A ) ) - ord( 'A' ); { If number is in range } if ( N >= 0 ) and ( N <= 14 ) then begin { send the code to the printer } write( LST, PrinterCode[N] ); { Point on the screen to the selection made } GotoXY( 10, N+3 ); write( '>>>'#$07 ); Delay(1000); GotoXY( 10, N+3 ); write( ' ' ); end until A = #$0D ; { Write out a final message } ClrScr; write( ' Printer is Configured' ); end.  begin A := chr( N + ord( 'A' ) ) ; Writeln( A:15, ' ', Message[N] ); end; GotoXY(15,23); Write('Press RETURN to terminate'); { Request input until a RETURN is entered} repeat GotoXY(15,22); Write( 'Please enter your selection(s) ' ); read( KBD, A ); { Convert the letter to upper case & a number starting 1  2_: 5~6ʄ8ʐ1ʖ2ʛ7ʥ_2RʴBʊPʠDʪLʯQSʼE ÖÛàå>N>E>P>Q>!>">A>B2!"^{$*# PRINTER OPTIONS MENU 5 : 5 CPI ENLARGED PICA 6 : 6 CPI ENLARGED ELITE B : 7.5 CPI ENLARGED CONDENSED 8 : 8.5 CPI ENLARGED PROPORTIONAL 1 : 10 CPI PICA (default) 2 : 12 CPI ELITE P : 15 CPI PROPORTIONAL 7 : 17 CPI CONDENSED (CAN'T DARKEN) R : RETURN FROM ENLARGED CHARACTERS D : DARKEN L : LIGHTEN default (Return from darken) S : 1/6 " SPACING (default) E : 1/8 " SPACING Q : QUIT * Warm Boot* ENTER OPTION... $ NO SUCH OPTION... TRY AGAIN $ $PROWPINS {|}~PSETUP PASPTR8023 $$$; TITLE PTR A PROGRAM TO CONFIGURE THE NEC-8023 A-C ; OUTSIDE OF A TEXT EDITOR ; AUTHOR David Allan Giunti ; in 8080 ASSEMBLER ; USE ASM.COM TO COMPILE ; DATE OCT 1983 ; PURPOSE TO SET PRINT STYLE FOR LISTINGS ; AN ENHANSEMENT OF ROBERT LA FARA'S PRINTER SETTING ; UTILITY IN THE OCTOBER 83 EDITION OF MICROSYSTEMS ; ; NOTES FOR ADAPTATION TO OTHER PRINTERS ; NOTE THAT THIS PROGRAM OUTPUTS TO THE LiST DEVICE ; 2 SORTS OF CODE SEQUENCES + CHR , AND ; JUST 1 CHR AT A TIME ; YOUR PRINTER DOCUMENTATION SHOULD TELL YOU WHICH ; YOU NEED FOR WHAT. MODIFICATION FOR DIFFERENT ; ESC & CHR SEQUENCES IS CHANGING THE EQUates AT ; THE HEADING, MODIFICATION OF THE PARSE-ING ROUTINE ; SO THAT THE ROUTIEN IT CALLS CALLS THE APPROPRIATE ; SEQUENCE TO DO THE WORK. BDOS EQU 5 ; CALL HERE FOR CPM SERVICE ; ; in response to HOWTOHACK.DOC ... CALL here ; do not use addresses peaked here to jump into ; BIOS... ; and please forgive the EQUates , they make the ; code 1 BYTE smaller per use and are twice as ; fast as address references ; ... when you update object code (AND(NOT(source))) ; you create undocumented features ; CONOUT EQU 2 ; OUTPUT TO CONSOLE, 1 CHR AT A TIME LSTOUT EQU 5 ; OUT TO PRINTER, 1 CHR AT A TIME CONDIR EQU 6 ; GET-CHR FROM CONSOLE, 1 CHR AT A TIME PRTSTR EQU 9 ; OUTPUT TO CONSOLE, END STRING WITH $ LF EQU 0AH CR EQU 0DH BELL EQU 7 ; CHIME CHR FSTR EQU 0CH ; FORM_FEED CHR ESCAPE EQU 1BH ; ESCAPE CHR ; NEC-8023 DIRECTIONS, WITH OUT ESCAPE ENL EQU 0EH ; ENLARGED CHRS IN ALL STYLES ENLCXL EQU 0FH ; CANCEL ENLARGEMENT DARK EQU 21H ; DOUBLE STRIKE ENHANSED LIGHT EQU 22H ; RETURN FROM ENHANSED ; NEXT TWO WERE NOT IMPLEMENTED LVFU EQU 1DH ; START LOAD OF VFU BUFFER FINVFU EQU 1EH ; END OF FILL ; EQUS FOR ESCAPES IN NEC 8023 A-C PICA EQU 4EH ; 10 CPI PROP EQU 50H ; PROPORTIONAL CHRS ; ESC 1 TO 6 SET MIN DOTSPACES BETWEEN WORDS (NOT IMPLEMENTED) COND EQU 51H ; 12 CPI ELIT EQU 45H ; 17 CPI ALPHA EQU 24H ; SET ALPHANEUMERIC EIGHT EQU 42H ; 1/8 LINE SPACING SIXT EQU 41H ; 1/6 LINE SPACING ; FOLLOWING NOT USED HERE IG EQU 23H ; GREEK & INTERNAL GRAPHICS INCRE EQU 5BH ; PRINT AS RECIEVED FROM LOGICS EQU 5DH ; LOGIC SEEKING MODE CLRTAB EQU 32H ; CLEAR PRESET TABS UNL EQU 58H ; START UNDERLINE UUL EQU 59H ; STOP UNDERLINE FORWRD EQU 66H ; FEED PAPER FORWARD REVRSE EQU 72H ; REVERSE PAPER FEED ORG 100H ;FIRST ADDRESS IN CPM ; that is all yours LXI SP,STKTOP ;SET STACK AFTER PROG MENU: MVI C,PRTSTR ;DISPLAY MENU ;PRAM REG, FCN TO CALL LXI D,MENDAT ; LOAD ADDRESS IN DE CALL BDOS ; WITH REGS LOADED CALL CPM CHARIN: MVI C,CONDIR ;DIRECT CONSOLE INPUT MVI E,0FFH ;ASK FOR INPUT CALL BDOS CPI 0 ;IS ANYTHING TYPED ? JZ CHARIN ; IF NOT LOOP STA CHAR ;IF SOMTHING SAVE IT MVI C,CONOUT ;ECOE TO SCREEN MOV E,A CALL BDOS ; ; PARSER CHECKS VALID INPUT, CALLS WORKING ROUTIENS ; AND IF NOT A VALID COMAND INFORMS USER ; ; TEST INPUT FOR VALID CHARACTERS ; JuMP ACCORDINGLY ; LDA CHAR ;START TEST AGAINST ACCUM CPI ' ' ; ComPair to ' ' JZ CHARIN ; SKIP SPACES CPI '5' ; LARGE PICA JZ LP ; CPI '6' ; LARGE ELITE JZ LEL ; CPI '8' ; JZ LCON ; LARGE CONDENSED CPI '1' ; PICA JZ PIC ; CPI '2' ; ELITE JZ EL ; CPI '7' ; CONDENSED JZ CON ; ; IF IT ISN'T A NUMBER IT'S A LETTER ANI 5FH ; AND TO CONVERT TO UPPERCASE STA CHAR ; STASH UCASED CHR IN CHAR CPI 'R' ; RETURN TO SMALL CHRS JZ SMAL CPI 'B' ; LARGE PROPORTIONAL JZ LPR CPI 'P' ; PROPORTIONAL JZ PRO ; CPI 'D' ; ENHANSED DOUBLE STRIKE JZ ENH ; CPI 'L' ; RETURN FROM ENHANSED JZ UNEN ; CPI 'Q' ; COLD BOOT JZ QUIT ; CPI 'S' ; 1/6 " SPACING JZ SIX ; CPI 'E' ; 1/8 " SPACING JZ EIG ; ; ; IF YOU GOT THIS FAR AND NOTHING MATCHED ; INPUT WAS NOT VALID ISSUE ERROR MESSAGE ; ERMSG: MVI C,PRTSTR ; PRINTSTRING FCN LXI D,ERRMSG ; ADDRESS OF MSG IN DE CALL BDOS JMP MENU ; ; SUBROUTIENS HERE ARE RECURSIVE ; SOME REQUIRE CHR OUTPUT THEN CHR ; OUTPUT ; LP: CALL BIGPR JMP PIC LEL: CALL BIGPR JMP EL LPR: CALL BIGPR JMP PRO LCON: CALL BIGPR JMP CON PIC: MVI A,PICA JMP EPTR EL: MVI A,ELIT JMP EPTR PRO: MVI A,PROP JMP EPTR CON: MVI A,COND JMP EPTR ENH: MVI A,DARK JMP EPTR UNEN: MVI A,LIGHT JMP EPTR SMAL: MVI E,ENLCXL CALL SPR JMP MENU SIX: MVI A,SIXT JMP EPTR EIG: MVI A,EIGHT JMP EPTR ; ; THIS ROUTINE GIVES THE ARGUMENT LOADED IN A TO ; A LOCATION SET ASIDE IN RAM (ARG1) ; THE ROUTINE EPTR1 DOES NOT CARE HOW MANY ; CHARACTERS YOU WISH TO PRINT AFTER THE ESCAPE ; IF YOUR PRINTER WANTS MORE CHARACTERS AFTER ; THE SEE THE NOTES DOWN AT THE END ; EPTR: STA ARG1 LXI H,ESTR ; POINT TO ESCAPE STRING EPTR1: SHLD INDEX ; STORE ADDRESS MOV E,M ; GET CHR MOV A,E ; PUT IN A ALSO CPI '$' ;CHECK TRAILOR CARD JZ MENU ; IF SO END MVI C,LSTOUT ; PRINT 1 CHR  CALL BDOS ; DO IT LHLD INDEX ; RELOAD POINTER INX H ; POINT TO NEXT CHR JMP EPTR1 BIGPR: MVI E,ENL ; SUBROUTIEN TO LOAD ENLARGE SPR: MVI C,LSTOUT ; WHEN YOU LAND HERE YOU HAVE ; ALLREADY LOADED E WITH THE ; CHR YOU WISH TO OUTPUT ; TO PRINT BUFFER CALL BDOS ; NO CR REQUIRED RET QUIT: MVI C,0 CALL BDOS ; WARM BOOT MENDAT: DB CR,LF,' PRINTER OPTIONS MENU',CR,LF,LF DB ' 5 : 5 CPI ENLARGED PICA',CR,LF DB ' 6 : 6 CPI ENLARGED ELITE',CR,LF DB ' B : 7.5 CPI ENLARGED CONDENSED',CR,LF DB ' 8 : 8.5 CPI ENLARGED PROPORTIONAL',CR,LF DB ' 1 : 10 CPI PICA (default)',CR,LF DB ' 2 : 12 CPI ELITE',CR,LF DB ' P : 15 CPI PROPORTIONAL',CR,LF DB ' 7 : 17 CPI CONDENSED (CAN''T DARKEN)',CR,LF,LF DB ' R : RETURN FROM ENLARGED CHARACTERS',CR,LF DB ' D : DARKEN',CR,LF DB ' L : LIGHTEN default (Return from darken)',CR,LF DB ' S : 1/6 " SPACING (default)',CR,LF DB ' E : 1/8 " SPACING',CR,LF DB ' Q : QUIT * Warm Boot*',CR,LF,LF DB ' ENTER OPTION... ' DB '$' ; the dollar sign IS required for the screen ERRMSG: DB CR,LF,BELL,'NO SUCH OPTION... TRY AGAIN',CR,LF,'$' ; ; THIS IS THE FABELED ESCAPE SEQUENCE ESTR: DB ESCAPE ARG1 DS 1 ; ESCAPES ARGUMENT ; YOU CAN DS (Define Space) IN ; BYTES TO YOUR HEARTS CONTENT DB CR ; ... REMEMBER MOST PRINTERS ; WANT A CR TO GET THE BALL ROALING ; AND THE OUTPUT ROUTIEN WANTS THE ; $ CHR TO KNOW WNEN TO STOP DB '$' ; the dollar sign is optional here ; ...any other unused value ; would work as well ; CHAR: DS 1 INDEX: DS 2 DS 32 ; 16 LEVEL STACK STKTOP: END DB ' 2 : 12 CPI ELITE',CR,LF DB ' P : 15 CPI PROPORTIONAL',CR,LF DB ' 7 : 17 CPI CONDENSED (CAN''T DARKEN)',CR,LF,LF DB ' R : RETURN FROM ENLARGED CHARACTERS',CR,LF DB ' D : DARKEN',CR,LF DB ' L : LIGHTEN default (Return from darken)',CR,LF DB ' S : 1/6 " SPACING (default)',CR,LF DB ' E : 1/8 " SPACING',CR,LF DB ' Q : QUIT * Warm Boot*',CR,LF,LF DB ' 368686868 $ OKIDATA 83A Printer options v1.1 3/31/1983 0 - 10 CPI, 6 LPI 1 - 10 CPI, 8 LPI 2 - 16.5 CPI, 6 LPI 3 - 16.5 CPI, 8 LPI 4 - 8.3 CPI, 6 LPI 5 - 8.3 CPI, 8 LPI 6 - 5 CPI, 6 LPI 7 - 5 CPI, 8 LPI Select: $"10ͧ!ì͕0!ʬ1!ʬ2! ʬ3!ʬ4!ʬ5!ʬ6!#ʬ7!(ʬF-ͧʌ ʌ ~F_#ìPRINTER DSC:PRISM132TXT;<=>?@ABCDEFGHIJPRISM132TXT+KLMNOPPRO BASsQRSTUVWXYZ[\]^_PRO-BAS DOCP`abcdefghiPRO-ADDRBAS!jklmnPRO-ADDRDOCoPROPSPACDIAWpqrstuvwxyzPROWPINS {|}~PSETUP PASPTR8023 COMPTR8023 ASM5SETOK $$$TITLE: SETOK BY : IRV HOFF DATE : 10 OCT 82 TOPIC: PRESETTING OKIDATA PRINTER OPTIONS This simple program allows OKIDATA 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 64 or 80 chars. per line 6 or 8 vertical lines per inch wide print reset to normal default values To use, turn on the Okidata printer and then call up SETOK.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 80 characters per line 6 vertical lines per inch 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 SETOK.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 red if mis-typed. If RET is immediately typed it defaults to a standard configuration. Default is: 10 characters per inch 80 characters per line 6 vertical lines per inch Af; SETOK v1.0 OKIDATA PRINTER UTILITY 10/10/82 ; ; by ; IRVIN M. HOFF ; LOS ALTOS HILLS, CA 94022 ; ; ; This program sets an OKIDATA printer to various configur- ; ations such as: ; ; 10 CPI or 16.5 CPI ; 6 or 8 vertical lines per inch ; 64 (short) or 80 (long) char. per line ; ; 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 OKIDATA PRINTER: ; ; 17 CTL Q Enable printer to receive data ; 27,'A' ESC A 80 char. per line starting col. 3 ; 27,'B' ESC B 64 char. per line starting col. 9 ; 29 CTL-SHFT-M 16.5 Characters per inch ; 30 CTL-SHFT-N 10 Characters per inch ; 31 CTL-SHFT-O Wider characters ; 27,'6' ESC 6 6 vertical lines per inch (Normal) ; 27,'8' ESC 8 8 vertical lines per inch ; ; + + + + + + + + + + + + + + + + + + ; ; 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 EPXON MX-80 PRINTER ; CN: DB ESC,'A',29,ESC,'6',0 ;16.5 CPI, NORMAL UCN: DB ESC,'A',30,ESC,'6',0 ;10 CPI, NORMAL DEFLT: DB 17,ESC,'A',30,ESC,'6',0 ;DEFAULT PARAMETERS EMPH: DB 31,0 ;EMPHASIZED EIGHT: DB ESC,'8',0 ;8 LINES PER INCH SHORT: DB ESC,'B',0 ;64 CHAR. LINES AT COL. 9 TURNUP: DB CR,LF,'$' ;..... ; ; ; SIGN-ON MESSAGE ; SOM: DB CR,LF,LF,LF,LF,LF,LF,LF DB TAB,TAB,'OKIDATA 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 = 16.5 CPI, Normal' DB CR,LF,LF,TAB,TAB,'3 = Wider Characters' DB CR,LF,TAB,TAB,'4 = 64 Char. lines starting at col. 9' DB CR,LF,TAB,TAB,'8 = 8 vertical lines per inch' DB CR,LF,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,CN ;16.5 CPI, NORMAL JZ PSTRNG ; CPI '3' LXI H,EMPH ;EMPHASIZED JZ PSTRNG ; CPI '4' LXI H,S HORT ;64 CHARACTER LINES STARTING AT COL. 9 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:1 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 NEW ANSWER IF ZERO ; 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 ROOM FOR STACK ; STACK DS 0 ; END Lowell L. Ashbaugh, 1118 Decatur Court, Davis, CA. 95616[=z[>z[:z[ = EXIT to CP/M $ Draft Mode Menu NORMAL WIDTH DOUBLE WIDTH 1 = 10 CPI 5 = 5 CPI 2 = 12 CPI 6 = 6 CPI 3 = 16.7 CPI 7 = 8.3 CPI 4 = 20 CPI 8 = 10 CPI = Return to main menu $ Correspondence Mode Menu 1 = 10 CPI 2 = 12.5 CPI 3 = Proportional Spacing ON 4 = Auto Right Justify ON 5 = Auto Right Justify OFF 6 = Auto Centering ON 7 = Set HMI = Return to main menu $ Forms and Miscellaneous Menu 1 = 6 LPI 2 = 8 LPI 3 = Emphasis ON 4 = Emphasis OFF 5 = Disable PAPER OUT Switch 6 = Enable PAPER OUT Switch 7 = Set Margins 8 = Set Form Length = Return to main menu $ 1 = Set Left Margin 0-9 (Default 0) 2 = Set Right Margin (Default 160) = Return to Forms menu $ Enter form length (Default 66): $ This is ignored if proportional spacing is enabled Enter HMI value : $ Language Set Menu 1 = United Kingdom 2 = USA 3 = Norwegian/Danish 4 = Swedish/Finnish 5 = German 6 = French 7 = Spanish = Return to main menu$ $ Enter value : $  $"f1F A`!"$ h0!nu e1ʆ23v 4 HZTStS!u` e~# _#u_`!"$ !}uh1!u2!u3!u4!u5!u6!u7!u8!u HZØ:`!"$ !uh1!u2!u3!u4!u5!u6!u7A HZ`h j 2>02h j :22!"$ !u'`! "$ h1!;u2!@u3!Eu4!Ju5!du6!iu7 8ʙ HZ !`h v 1 2B Z `h 0 2S>02R2Qh 0 :S2R2Sh 0 :R2Q:S2R2S`! "$ !Ou`h ʇ 2[>02Y2Zh ʇ :[2Z2[h ʇ :Z2Y:[2Z2[`! "$ !Vu`h 2a>02`h :a2`2a!v "$ !^u`!"$ h 1!u2!u3!u4!u5!u6!u7!uHZ 5 = German 6 = French 7 = Spanish = Return to main menu$ $ Enter value : $  $"f1F A`!"$ h0!nu e1ʆ23v 4 HZTStS!u` e~# _#u_`!"$ !}uh1!u2!u3!u4!u5!u6!u7!u8!u HZØ:`!"$ !uh1!vLTALLY.ASM`  !"#$%&'()*+o,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_9~yO?awqrvt׳gW~bl?ǣO1~p/_5[>mE{'<\][q'xNjgcXH2f ۱ ll91[p&G"ҫ50ict)' j'PbUrrrIZab2[dK a#A9Xr@V82Q(d$)K+Z ʔעtdW+lfB!^9zW+܇/X ]H@V8ʒFBNbl^ @J3Ы@rZ%HL0*͘d@V?-P4ʧE @rD9F͢܌0*͘d, ?(&Krcl1`XyI*c5(X%gl1V^ OݏGOb_|[ y~xxя}xb>mE>O>Ɩc($YrcV;?^7P:il$_%5/<i_guԼ0FHc#Ab,mInyҾuWqؖ1elKc[00O@ouWqilK26Q}7m(# cY9ce <i_r`s&FQ83vH2 O@^7P41IFf^>xQ9a~L^!nlV HڟJV:LFieԯXr- O@u\"a ʨ_+BxyҾ !MMcp n $H@7VAuEI crrW!_$wc} =5I1ƠQicǔiyҾOnd 2arp<i_g{@A|o726W;? G }S Hڟ? #{xMǫ}|u=Bڠo<';?|u=B'œ)Vc O@c(p">@}ϯ>!7|An >GMp푱>)}?\& ǔ 3nv' kS(p)cՓ Hڟ? {=}S6I- Hڟ_}uIjIX%"VN1r3&g2 HڟnqIqLC2aCueu)rsN#%HLUaSF́IG푱.InyҾKfܟspJ/=2VA H?,nה^<(^pG푱3}nz@IpoGB/;^7P!ܛG푱<i_^7Pt N=2Ifa7QIIs^j0LüM]jDrۋϧN~{g?'޼cӍ-y&iKh^>x|_~|{ݯu??^ly/5ucl91[2 Vml1;Fr>.ic!OqD|?x֫c!Oqo~ǣO1~p/_KCC0 ykۣ^8T'與xY8rm^j*Xt+FDH29O8rm^j*Xtx{n ?>=?9W/5d, :3x~#=:KCC0 yW/kxv}ثaucGr>.ic!O1;y/G8b%TPP`, uDw;zɏ#~9a^jj*XtC "zRP9LB#^5^}~^8T'۽_;{r'/1^8T'ó(/ߞO\^j*Xt'x]op'LЫa2^cxxvѽ\^j*Xt7x Qơơr^#KC0 y }}{~{qizRP9LB#>kyz-4L+xqm^j*XtxtrGB#2g?ơr.ia2Qa<y ǣzqq&c!Oד/xsqwzq&c!OWzRP9LB#ktw}k;?KC0 yqwtm^j*Xt7x^88T'7F9:{x|wtw-cpV C͢ܬ-Ɩc''ؼXj^7/y)݂' .(7D1q;xqqNΎϟ>9- y! Ij*0^'I++Gc"ywƂ1"(V(31%HL}r:E2|S7($}7⁂ ibԩLB5r364r3@2*6|S ce 9!(Ћ~=,a`]dž0KGr+j3|SЯ:@1@ٮcCN\& Gr+j3|Swb,laT:6䄣Ҟb Ҫq$ ):@1vrܼPgCL_($Ȥ^X!F(F)gĨV9؂J#Kpz  @1ţ8ectX;ca|WrƂ1"L9ic!8oh/8)6|S9zca{ tXbc؂\F͢܌rLbl14rXcu(313 iD^5r$@(f]I3I$X @k-9MSzl,U/6 |J3@iB-!'2NF;caLj(31NP9$fcaI&1*wc @bQ0,5LƂrH1,4͢ PrB栜tbl,a`S&$iebl916Kxg,f V(314`00Vc!kfe, }r:E2⁂j9C1,5tKNj33L\Ic`\5 @Rǔ L!g!1 % cʄ^< ۱A,j9be&F Ip4ONHƂo a(JbxP|~)ca{ M(7 )Ϻ,5WrAߔ=Y'X @y>14͢l,BPDy!(FnerMfQn64r~ @R&%a\[ͨY14͢l,?B zo.x`˨ؠife\F^<[Nw-cpV>95urdl1;*w:$Gr+CBZcpH2jɭƂ1B,E˨9ONHBʵL%^Hx(rJ/=wca{ ѭ1n{xMc40AfP(7 m $~ < 1}b,h+\1=& kc!q|Pxy -5EEcB Ix hNBrr1ȬjfcFƸ @AS &*GPfb 9 ii)w#c!kfeTl,Ke&Ɛ֘ʡHUrƂ^b)C9 b` LB3⁂rӀ1Ȭjfca;6hE4QQtblA5/cY9Ĭll1+cy@AqPfb 9 ii&ilEX!FȚEhr#'X!FP PfbKXMca{ 7Ƃ2|`,zI*=tfcAs\(*F尉rLEX@ ʐE dVX!FP Pfbtt 3/ePNwca{ 7=i<9a5rV@(.)jNB 3 &1b c'%czL 3 *˨. @˨. -5EEcB Ip4od rhNB.|b,#(V(31::`KXM2(B=qk4b5rV@(.)jNB 3s\>(ecBcAs\(x!Bd r m,h cg'RPX=&KI#jX@ O$qcƖ&11ȬjfcƊ[c쌅x )w#(314ʑC5r3@2*6⁂Af2cYHkLAfPS$*9cA/1!@ќP1I0&A!^ @Re Pfb 9 ii@Q8C͢l,lM(7&1*6[-qH2b$7bl1;*_ (uH2FrPcz1c083|fQn(%!'\]&\F^6|k+NVVx105ƍ9do,z  I+cA/Ƹ1ڪB$}cAs!xye,   Inq3⁂J{2cYHkLAfPS$*9cA/1!@ќP1I0&A!^ @R$#@1,5$#Fr3/YؠifD9FƖcL0jbml1wBY(7M.b>9" @RǠ@ќ0,5ǠV43L\Ic`c5EwƂ1rme2_$8H'S$c7^ʠ Ơ@yOOq 9Ñj,vb,K]oJAYbxܜӈ~ <&64r3@2*FND9&1|SЯ,uA{N1e4%HLXC,Ƃo n,KuIrpP\4NspJ/ 3 jbca{ M(7 )Ϻ,UA9(5eA9~ <&64r @Rg18(3%HLXC,Ƃo n,K_ B/ 3 jbca{ M(7 )o,U^ %HLXC,Ƃ13i6|&8eY(7M.b>9" @RǠ@ќ0,5ǠV43L\Ic`c5EwƂ1rme2_$8H'S$c7^ʠ Ơ@yOOq 9Ñj,vb,K]oJAYbxܜӈ~ <&64r3@2*FND9&1|SЯ,uA{N1e4%HLXC,Ƃo n,KuIrpP\4NspJ/ 3 jbca{ M(7 )Ϻ,UA9(5eA9~ <&64r @Rg18(3%HLXC,Ƃo n,K_ B/ 3 jbca{ M(7 )o,U^ %HLXC,Ƃ13i6|&8e prompt. Screen 1 appears: "Select source for configuration" Select: From Drive B Screen 2: "Select the items you want to change" Select: Key definitions (CR) Move curser to "Arrow Settings", then (CR) Screen 3: "Select standard arrow key definition" Move curser to "Wordstar Standard", then (CR) Press (ESC) key to return to Screen 2. Press (ESC) key again. Screen 2. Move curser to "Printer Port", then (CR) Configuration is: Baud rate = 1200 Protocol = no protocol Device Selection = Other (AUXIN:/AUXOUT:) Initialization String = none Move curser to "Parallel Port", then (CR) Configuration is: Protocol = Centronics Device Selection = Printer (LST:) Initialization String = 1 (Note: press Escape key, release it, press 1 key, release it, then press (CTRL)(CR) Move curser to: "Exit to Save Menu", then (CR) Save Setup to: Drive B Important note: All of the above SETUP configurations should be saved on your CP/M and SuperCalc disks, EXCEPT, under Parallel Port, the Initialization String = none. The 1 string instructs the printer to print in correspondence mode. A menu-driven program named INSTALL, included on the Wordstar package, is the second program to run. This program allows you to tell Wordstar what kind of printer you are using and how it operates. (References: vol. 2, pp. 176-189 Executive Guide, and Nov. 1983 FOGHORN, p. 32). Wordstar operates many of the same functions as the Microline Printer, including boldface, double strike, underscoring, and other word processing features. Insert Wordstar INSTALL in Drive A. Insert Wordstar disk in Drive B. Boot the system. Answer the questions upon prompt. You will then get to the Installation Menu. Select "C" Menu of Printers Select either "standard printer" or "Okidata ML84A" (if you have this model). Communications Protocol = "A" none Driver = "A" operating system primary list device. Select "D" Custom Installation of Printer A menu will appear. Select "F" Boldfacing (^PB) The patches are as follows: 80 82A/83A 84/92/93 -- ------- -------- 03 no patch 03 Select "I" Ribbon Selection (^PY) The patches are entered as hexadecimal. Precede each number with a comma. Press (CR) after each number. Eg. ,03 (CR) "Alternate Ribbon Selection - first ^PY" This patch toggles between underlining and not underlining. 80 82A/83A 84/92/93 -- ------- -------- no patch no patch 02 1B 43 (CR) "Stardard Ribbon Selection - second ^PY" 80 82A/83A 84/92/93 -- ------ -------- no patch no patch 02 1B 44 (CR) Select "J" Vertical Motion (^PT and ^PV) "Start Vertical Motion - ^PT" (superscript) 80 82A/83A 84/92/93 -- ------ -------- no patch no patch 02 1B 4A (CR) "Stop Vertical Motion - ^PV" (subscript) 80 82A/83A 84/92/93 -- ------ -------- no patch no patch 02 1B 4C (CR) VMI minimum value = -1 VMI range value = -2 Line Feed Function Code = (empty) Reverse Line Feed Function Code = (empty) Select "O" User Defined Function "User function #1" (^PQ) 80 82A/83A 84/92/93 Mode -- ------ -------- ---- 01 01 01 80 = 16.5 cpi 1D 1D 1C 82A/83A = 16.5 cpi (CR) (CR) (CR) 84/92/93 = 12 cpi (CR) (CR) (CR) "User function #2" (^PW) 01 01 01 % 80 = 5 cpi 1F 1F 1F 82A/83A = 5 cpi (CR) (CR) (CR) 84/92/93 = 5 cpi (CR) (CR) (CR) "User function #3" (^PE) 01 02 01 80 = 10 cpi 1E 1D 1D 82A/83A = 8.3 cpi (CR) 1F (CR) 84/92/93 = 17 cpi (CR) (CR) (CR) "User function #4" (^PR) 01 01 01 80 = 10 cpi 1E 1E 1E 82A/83A = 10 cpi 0 0 0 84/92/93 = 10 cpi (CR) (CR) (CR) Select "Q" Character Pitch "Select alternate pitch" (^PA) 80 82A/83A 84/92/93 -- ------ ------- 02 02 02 80 = 8 lpi 1B  1B 1B 82A/83A = 8 lpi 38 38 31 84/92/93 = corresp. (CR) (CR) (CR) "Select standard pitch" (^PN) 02 02 02 80 = 6 lpi 1B 1B 1B 82A/83A = 6 lpi 36 36 30 84/92/93 = data (CR) (CR) (CR) Notes: 1. If you ML-84 printer is not a Step 2 printer, then the codes for 12 cpi and 17 cpi will be switched. 2. Correspondence mode is not supported in 17 cpi on the ML-92 and ML-93. ------------------------ Wordstar (R) is a registered trademark of MicroPro International Corporation. Select "Q" Character Pitch "Select alternate pitch" (^PA) 80 82A/83A 84/92/93 -- ------ ------- 02 02 02 80 = 8 lpi 1B  This is the release date of the disk. ERGO1 ASM  ML92SET COM NECSET ASM NECSET2 COM NECSET2 ASM OKI-TST BAS OKI-TST DOC OKI92 COM #OKI92 DOC OKI92 PAS OKITALICCOM !OKITALICDOC # OKITALICASM &PRINTER BAS ,7OKI92 .DOC E3 C3 512 4 OKI92 .PAS F9 EF 1664 13 OKITALIC.COM 6A C8 1536 12 OKITALIC.DOC DF 35 2816 22 OKITALIC.ASM 9F 8A 5632 44 PRINTER .BAS 00 78 14208 111 PRINTER .DSC BE DF 512 4 PRISM132.TXT 68 46 21888 171 PRO .BAS C5 3D 14720 115 PRO-BAS .DOC CF 34 10240 80 PRO-ADDR.BAS 14 A2 4224 33 PRO-ADDR.DOC 56 F1 1024 8 PROPSPAC Fog Library Disk FOG-CPM.102 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. Printer Setting Programs. Filename Description -07-00 .86 This is the release date of the disk. -CPM102 .DOC This is the description of the disk contents. ERGO1 .COM 5B41 1K [ERGO1 1 of 2] Sets the Ergo Hush-80 printer modes from a menu. ASseMbler source is included. ERGO1 .ASM 73D5 4K [ERGO O1 2 of 2] ML92SET .COM FBCA 1K Sets Okidata ML92 print modes from a menu. NECSET2 .COM 3C8C 1K ver. 2 [NEC SET 2 of 3] Set print modes for the NEC 8023A-C and C.Itoh Prowriter printers. Two versions of the ASseMbler source included. NECSET .ASM 5765 3K [NEC SET 1 of 3] NECSET2 .ASM A264 2K ver. 2 [NEC SET 3 of 3] OKI-TST .BAS 70B9 5K [Okidata test 1 of 2] Microline 92 and 93 printers test demo program. Needs MBasic. OKI-TST .DOC FBD7 1K [Oki-test 2 of 2] OKI92 .COM 9CF6 9K [Okidata 92 1 of 3] Menu-driven program to set print modes on Microline 92. OKI92 .DOC E3C3 1K [OKI 92 2 of 3] OKI92 .PAS F9EF & 2K [OKI 92 3 of 3] OKITALIC.COM 6AC8 2K [OKITALIC 1 of 3] Downloads an italic character set to the Microline 92 or 93 printers which can be accessed from your software. ASseMbler source code also included. OKITALIC.DOC DF35 3K [OKITALIC 2 of 3] OKITALIC.ASM 9F8A 6K [OKITALIC 3 of 3] PRINTER .BAS 0078 14K [Prism 132 1 of 3] Sends print control codes to an ADS Prism 132. Basic source code is included. PRINTER .DSC BEDF 1K [Prism 132 2 of 3] PRISM132.TXT 6846 22K [Prism 132 3 of 3] PRO .BAS C53D 15K [PRO 1 of 2] Prints WordStar file with proportional spacing on an NEC8023A Requires MBasic. PRO-BAS .DOC CF34 10K [PRO 2 of 2] PRO-ADDR.BAS 14A2 5K [PRO-ADDR 1 of 2] Prints envelopes and address labels in proportional font on NEC 8023A or C.Itoh Prowriter. Requires MBasic. PRO-ADDR.DOC 56F1 1K [PRO-ADDR 2 of 2] PROPSPAC.DIA 0853 11K Notes on getting proportional spacing on the Diablo 630 printer. PROWPINS. 7792 4K How to interface the Prowriter to the Osborne 1. PSETUP .PAS 9462 3K Panasonic KX-P1092 setup that is Menu Driven. PTR8023 .COM 72A3 1K [PTR 8023 1 of 2] Menu-driven setup for NEC 8023A-C printer. ASseMbler source code is included. PTR8023 .ASM 0807 7K [PTR 8023 2 of 2] SETOK .COM D929 1K [SETOK 1 of 3] Set the Okidata printer codes from a menu. Documentation and Assembler code is included. SETOK .DOC 9A1C 2K [SETOK 2 of 3] SETOK .ASM D6B1 6K [SETOK 3 of 3] TALLY .COM 1328 3K [TALLY 1 of 2] Sets Mannesman Tally MT160L printer codes from a menu. Squeezed ASseMbler source code is included. TALLY .AQM 8078  11K [TALLY 2 of 2] TYPE .BAS 2520 2K [TYPE 1 of 2] MBasic program for setting Okidata print codes from a menu. TYPE .DOC B39E 1K [TYPE 2 of 2] WSOKI .DOC 219D 8K Tips for setting Okidata Printers up with WS 3.0 LIC.DOC DF35 3K [OKITALIC 2 of 3] OKITALIC.ASM 9F8A 6K [OKITALIC 3 of 3] PRINTER .BAS 0078 14K [Prism 132 1 of 3] Sends print control codes to an ADS Prism 132. Basic s'