diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/screenview/vms/crudetype.ch |
Initial commit
Diffstat (limited to 'dviware/screenview/vms/crudetype.ch')
-rw-r--r-- | dviware/screenview/vms/crudetype.ch | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/dviware/screenview/vms/crudetype.ch b/dviware/screenview/vms/crudetype.ch new file mode 100644 index 0000000000..1ce66d4025 --- /dev/null +++ b/dviware/screenview/vms/crudetype.ch @@ -0,0 +1,287 @@ +% Andrew Trevorrow, June 1988 +% All my changes (both here and in .WEB file) are flagged with "AKT". +% AKT: Text file Change file for Crudetype. + +@x +*** Attach printer change file here *** +@y +\vskip 0.5in +\centerline{The text file change file for Crudetype starts here} +\vskip 0.5in + +@<Const...@>= device_ID = 'Text file'; + +@ Where will the printed file go to? + +@<Set init...@>= + set_string( print_end, + '.TXT ' , ' ', 32 ) ; + {AKT: was .PRI} + +@ The first lot of data describes the printer's overall style of carriage +control. |fortran| means that the carriage control character gets put at the +start of the line, and it is here assumed that it must be inserted explicitly. +Note also that the program makes no attempt to check all these values for +consistency. + +@<Carriage control constants@>= + fortran = false ; + list = true ; {AKT: was false} + w_l_does_c_r = true ; {AKT: was false} + b_feed_absolute = false ; + b_feed_by_string = false ; + feed_absolute = false ; + b_feed_scream = true ; + b_space_absolute = false ; + b_space_by_string = false ; + space_absolute = false ; + abs_is_incr = false ; + want_split = true ; + is_header = false ; {each page needs a header} + param_type = 'D' ; + +@ This batch is concerned with distances and resolutions. + +@<Const...@>= + l_margin = 0 ; {AKT: was 6} + top_margin = 0 ; {AKT: was 6} + h_resolution = 10 ; {|h_steps| per inch} + v_resolution = 6 ; {|v_steps| per inch} + fixed_width = true ; {printers characters are fixed width} + char_width = 1 ; + {all printer characters are this width, in units of |h_step|. Normally, + |space_dist| will be equal to this, but some printers are not normal!} + gap_width = 1 ; {Intended minimum space between words} + char_ht = 1 ; + +@ The general run of \TeX\ characters are narrower than line-printer chars. So +we spread them out to make them fit. + +@<Set init...@>= + h_fudge := 7.227 {number of points per |h_step|} + / 5.25 ; {A typical design width} + v_fudge := 1.2 ; {AKT: was 2.0 to force double-spacing } + +@ @<Glob...@>= + h_fudge, v_fudge: real_num ; + +@ Next, some constants for rule-setting. + +@<Rule setting const...@>= + rail_width = 1 ; {Height and width of rule chars, in steps} + rail_height = 1 ; + post_width = 1 ; + post_height = 1 ; + rail_types = 2 ; + +@ @<Set rule characters@>= + rail_chars[1] := codes[ 1, 95 ] ; + rail_chars[2] := codes[ 1, 45 ] ; + post_char := codes[ 1, 124] ; + +@ @<Pause constants...@>= + do_pause = false ; + pause_steps = 20 ; + pause_ask = 'PAUSED. Type <return> to continue' ; + +@ The next batch are concerned with fonts. + +@<Const...@>= + min_font = 1 ; + {smallest and largest number of printers resident fonts} + max_font = 1 ; + only_one_font = true ; + can_dl_font = false ; + min_dl_font = 0 ; + max_dl_font = 0 ; {printers down-loadable fonts} + max_codes = 9 ; {AKT: was 8; no. of known \TeX\ coding schemes} + max_char = 255 ; {AKT: was 127; max. no. of chars per \TeX\ or PS font} + max_plain = 4 ; {Max number of a plain text font} + +@ Finally, consider command strings. These are intended to set options, but a +line printer hasnt any. + +@<Set init...@>= + start_stuff := blank ; + stop_stuff := blank ; + page_top := blank ; + pause_after := blank ; + +@* Character code data for the printer. + +Here we actually put data into the |codes| array. In general, I have merely +replaced each character in the PLAIN.TEX coding schemes by the nearest +equivalent in ASCII, when a reasonable one exists ; I have not tried to tackle +either AMSY or AMATHEX ; clearly there will be some scope for doing so. First +we give the scheme names, ( padded to |code_len|) then do stuff for each +scheme in turn. + +@<Assign char...@>= + set_string( known_schemes[ 0 ] , + ' ' , ' ', 32 ) ; + set_string( known_schemes[ 1 ] , + 'TEX EXTENDED ASCII ' , ' ', 32 ) ; + set_string( known_schemes[ 2 ] , + 'TEX TYPEWRITER TEXT ' , ' ', 32 ) ; + set_string( known_schemes[ 3 ] , + 'TEX TEXT ' , ' ', 32 ) ; + set_string( known_schemes[ 4 ] , + 'TEX TEXT WITHOUT F-LIGATURES ' , ' ', 32 ) ; + set_string( known_schemes[ 5 ] , + 'AEFMNOT ONLY ' , ' ', 32 ) ; + set_string( known_schemes[ 6 ] , + 'TEX MATH ITALIC ' , ' ', 32 ) ; + set_string( known_schemes[ 7 ] , + 'TEX MATH SYMBOLS ' , ' ', 32 ) ; + set_string( known_schemes[ 8 ] , + 'TEX MATH EXTENSION ' , ' ', 32 ) ; + set_string( known_schemes[ 9 ] , + 'AKT: This scheme will be used for all unknown schemes; what a hack! ' , ' ', 32 ) ; + +@ Now do scheme 1 = EXTENDED ASCII + +@<Assign char...@>= + alphabet( 32, 95, 1, 1, 32) ; + row( ' . {|v} Z Z & ~ {LC-} Z ' ,1,0,1) ; + row( ' Z Z Z {^|} {+_} {LO+} Z Z ' ,1,1,1) ; + row( ' Z Z Z Z Z Z {LOx} Z ' ,1,2,1) ; + row( ' [{L<-}-] [-{-L>}] {=/} Z {L<_} {L>_} {=_} [or] ' ,1,3,1) ; + +@ Now do scheme 2 = TYPEWRITER. Unfortunately, \.{TANGLE} imposes a limit of 69 +on the length of quoted strings. This causes difficulty because several multi- +character commands are too long for 8 of them to fit neatly into a string of +that length. So I use the Z command to ( effectively) split any complicated +|row_spec| into two. + +@<Assign char...@>= + alphabet( 32, 95, 2, 1, 32) ; + codes[2, 255].IM_char:= 34 ; {AKT: was 2, 127} + row( ' Z [{/_}{_\}] {0-} [/\] Z Z Z Z ' ,2,0,1) ; + {first half row} + row( ' Z Z Z Z <U_{-_}> <U[__][||]> <U_{L>_}> LY ' ,2,0,1) ; + {and second} + row( ' {oI} {u|} Z {^|} {v|} Q ! ? ' ,2,1,1) ; + row( ' i j ` Q Z Z <U_> <U.> ' ,2,2,1) ; + row( ' , {LB_} [ae] [oe] {o/} [LALE] [LOLE] {LO/} ' ,2,3,1) ; + +@ The TEX TEXT scheme is nearly the same, so we start by copying it. + +@<Assign char...@>= + for in_i := 0 to 255 do codes [3, in_i] := codes [2, in_i] ; + {AKT: was 0 to 127} + row( ' Z Z Z [ff] [fi] [fl] [ffi] [ffl] ' ,3,1,1) ; + row( ' Z Z Z Z ! Z ? Z ' ,3,7,1) ; + row( ' Z Z Z Z W Z Z <U.> ' ,3,11,1) ; + row( ' Z Z Z - [--] W ~ W ' ,3,15,1) ; + +@ Recently there has appeared a scheme, called TEX TEXT WITHOUT F-LIGATURES. + +@<Assign char...@>= + for in_i := 0 to 255 do codes [4, in_i] := codes [3, in_i] ; + {AKT: was 0 to 127} + row( ' {oI} {u|} Z {^|} {v|} Q ! ? ' ,4,1,1) ; + +@ and AEFMNOT ONLY (for the Metafont logo). + +@<Assign char...@>= + row( ' Z LA Z Z Z LE LF Z ' ,5,8,1) ; + row( ' Z Z Z Z Z LM LN LO ' ,5,9,1) ; + row( ' Z Z Z Z LT Z Z Z ' ,5,10,1) ; + +@ The MATH ITALIC scheme is almost impossible. + +@<Assign char...@>= + for in_i := 0 to 9 do codes [6, in_i] := codes [2, in_i] ; + alphabet( 48, 43, 6, 1, 48) ; + alphabet( 97, 26, 6, 1, 97) ; + row( ' Z Z . , Z / Z * ' ,6,7,1) ; + +@ MATH SYMBOLS are messy, and no doubt the results will look unpleasant. + +@<Assign char...@>= + alphabet( 65, 26, 7, 1, 65) ; + row( ' - . {\/} * {-:} Z {+_} <U_+> ' ,7,0,1) ; + row( ' {LO+} {LO-} {LOx} {LO/} LO LO o o ' ,7,1,1) ; + row( ' Z {=_} Z Z {L<_} {L>_} {L<_} {L>_} ' ,7,2,1) ; + row( ' ~ <U~~> Z Z [L<L<] [L>L>] L< L> ' ,7,3,1) ; + row( ' [{L<-}-] [-{L>-}] {|^} {|v} Z Z Z Z ' ,7,4,1) ; + row( ' Z Z Z Z [{L<-}{-L>}] / \ {~_} ' ,7,4,1) ; + row( ' [{L<=}=] [={L>=}] {|^} {|v} Z Z Z Z ' ,7,5,1) ; + row( ' Z Z Z Z [{L<=}{=L>}] Z Z Z ' ,7,5,1) ; + row( ' Q [oo] {L(-} {-L)} Z Z Z Z ' ,7,6,1) ; + row( ' Z Z Z Z [{/_}{_\}] <U[__][\/]> / Q ' ,7,6,1) ; + row( ' [{\-}{-/}] <U_[{-_}|]> ~ {0/} LR LT <U_|> {|_}' ,7,7,1) ; + row( ' Z Z Z LU Z {LU+} & [or] ' ,7,11,1) ; + row( ' [{|-}-] [-{-|}] Z Z Z Z L{ L} ' ,7,12,1) ; + row( ' L< L> | [||] {^|v} {^|v} \ Z ' ,7,13,1) ; + row( ' <U[S_]{v/}> [{LI_}{LI_}] <[__][\/]> </|/> Z Z Z Z ' ,7,14,1) ; + +@ And here is a first attempt at the MATH EXTENSION scheme. These codes look +rather peculiar because characters in the Extension font (unlike all others) +have their reference points at the top. Here the restriction of string length +to 69 is a real pain. It seemed that the least bad way to arrange these |row|s +was by splitting each into 2 halves; then most half-rows do fit into one +rowstring. Here are the left hand halves. + +@<Assign char...@>= + row(' <SL(L(> <SL)L)> <SL[L[> <SL]L]> ZZZZ',8,0,1); + row(' <SL{L{> <SL}L}> <S/\> <S\/> ZZZZ',8,1,1); + row(' <SL(L(L(> <SL)L)L)> <SL(L(L(L(> <SL)L)L)L)> ZZZZ',8,2,1); + row(' <SL[|||> <SL]|||> <SL{/\L{> <SL}\/L}> ZZZZ',8,3,1); + row(' <SL(L(L(L(L(> <SL)L)L)L)L)> <SL[|||L[> <SL]|||L]> ZZZZ',8,4,1); + row(' <SL{L|L<|L{> <SL}|L>|L}> <S[S/]/\[S\]> <S\[S\][S/]/> ZZZZ',8,5,1); + row(' <S/||> <S\||> <SL[||> <SL]||> ZZZZ',8,6,1); + row(' <S[S/]|> <S\[S|]> <S|[S\]> <S[S|]/> ZZZZ',8,7,1); + row(' <S||\> <S||/> <S|> <S|> ZZZZ',8,8,1); + row(' <[__]\[{/_}_]> <[__][LILI]> </|/> <S[||][\/]> ZZZZ',8,10,1); + row(' <S[{|_}{|_}]> <S[|S|][{|_}_{_|}]> <U_> <U[__]> ZZZZ',8,12,1); + row(' <SL[L[L[> <SL]L]L]> <S||L[> <S||L]> ZZZZ',8,13,1); + row(' <S{|^}> <S{|v}> / \ ZZZZ',8,15,1); + +@ Here are the right hand halves. + +@<Assign char...@>= + row('ZZZZ <S|L[> <S|L]> <SL[|> <SL]|> ',8,0,1); + row('ZZZZ <S|> <S[||]> <S[S/]/> <Z\[S\]> ',8,1,1); + row('ZZZZ <SL[L[L[L[> <SL]L]L]L]> <S|||L[> <S|||L]> ',8,2,1); + row('ZZZZ <S[S/]/\[S\]> <S\[S\][S/]/> <S[S/][S/]//> <S\\[S\][S\]> ',8,3,1); + row('ZZZZ <S||||L[> <S||||L]> <SL[||||> <SL]||||> ',8,4,1); + row('ZZZZ <S[S/][S/]//> <S\\[S\][S\]> <S[SS/][S/]/> <S\[S\][SS\]> ',8,5,1); + row('ZZZZ <S||L[> <S||L]> <S|> <S|> ',8,6,1); + row('ZZZZ <S[S|]L<[S|]> <S|[SL>]|> <S|> <S|> ',8,7,1); + row('ZZZZ <S[S/]L<[S\]> <S\[SL>]/> <S[{|_}{|_}]> <S[|S|][{|_}S{|_}]> ',8,8,1); + row('ZZZZ <S[/\][||]> <S[|+|][\_/]> <S[/\]> <S[\/]> ',8,10,1); + row('ZZZZ <U[___]> <U~> <U[~~]> <U[~~~]> ',8,12,1); + row('ZZZZ <SL[||> <SL]||> <SL{L{L{> <SL}L}L}> ',8,13,1); + row('ZZZZ \ / <S{|^}> <S{|v}> ',8,15,1); + +@ And here are the half rows that are so long that even half a row must be +further split. + +@<Assign char...@>= + row(' </{|O}/> <S/{|O}|/> <S[/\][\/]> <S[S_][/.\][\_/]> ZZZZ',8,9,1); + row('ZZZZ <S[{/_}{\_}][\/]> <S[S_][{/_}{|_}{_\}][\{|_}/]> ZZ',8,9,1); + row('ZZZZZZ <S[{\/}{/\}][{\/}{/\}]> <[S_][{\/}S{/\}][|{\/}|][{/\}_{/\}]> ',8,9,1); + +@# + row(' <[___]\[SL>][{/_}__]> <[___][|S|][|S|][|S|]> <S/||/> ZZZZZ',8,11,1); + row('ZZZ <S[|S|][|S|][\_/]> <[S_][/S\][|S|][|S|]> ZZZ',8,11,1); + row('ZZZZZ <S[|S|][|+|][\_/]> <SS[S/\][/SS\]> <SS[\SS/][S\/]> ',8,11,1); + +@# + row(' <S[_S|][S\|]> <S[SS|][_S|][S\|]> <S[SS|][SS|][_S|][S\|]> ZZZZZ',8,14,1); + row('ZZZ <S[SS|][SS|][SS|][_S|][S\|]> <S[SS|][_S|][S\|]> ZZZ',8,14,1); + row('ZZZZZ <S|> <U_|> <S[||]> ',8,14,1); + +@ AKT: Now do scheme 9 = unknown (eg. PostScript font). +We simply use the TEX TEXT scheme. + +@<Assign char...@>= + for in_i := 0 to 255 do codes [9, in_i] := codes [3, in_i] ; + +@ This must be done last of all: + +@<Assign char...@>= + @<Set rule characters@> + +@z |