! TYPE.TEC ! ! !!TYPE.TEC V02.01!! ! ! ! ! Last edit on 21-Aug-79 by MHB ! ! ! ! Switches: ! ! ! ! /W Announce file name(s) ! ! /-W Don't announce file name(s) ! ! /H Use VT52 hold screen mode ! ! (/H => /H:n if not VT52) ! ! => /W unless /-W ! ! /H:n Count lines and hold ! ! => /W unless /-W ! ! /T Truncate long lines ! ! /S:"string" Pre-search for "string" ! ! /N:n Start at page n or find nth ! ! occurance of "string" ! ! /P Start at top of page instead ! ! of just before "string" ! ! /V Change controls to visables ! ! /O:n Overprint each line n times ! ! /A:n Print n lines around string ! ! /F:x Flag L(ower) or U(pper) case ! ! /I Inspect for wildcard selection ! ! /L:n List the first n lines only ! ! ! ! Q-regs used: ! ! ! ! 0% <>0 file found; 0 otherwise ! ! 1% <>0 print filename; 0 otherwise ! ! 2% <>0 no wildcards; 0 otherwise ! ! 3% # of lines to hold; 0 otherwise ! ! 4% <>0 print from top of page ! ! 5% current horizontal position ! ! 6% <>0 search for "string" each time ! ! 7% # of lines to list ! ! 8% scratch ! ! 9% scratch ! ! A% # parameter to +/- lines ! ! D% temporary text pointer holder ! ! H% # of lines before hold needed ! ! I% <>0 if inspect mode ! ! L% # of lines left to list ! ! O% # parameter to overprint count ! ! S% # parameter to string search ! ! VT05 VT52 VT100 ! ! 0$ '' or '$F`$G' or '$Fd$G' ! ! 1$ '' or '$Fd$G' or '$F|$G' ! ! 2$ '' or '$Fk$G' or '$Fe$G' ! ! 3$ '' or '$Ff$G' or '$Fb$G' ! ! 4$ '' or '$Fj$G' or '$Fi$G" ! ! 5$ '' or '$Fa$G' or '$Fc$G' ! ! 6$ '' or '$Fc$G' or '$F{$G' ! ! 7$ '^' or '$Fg$G' or '$Fg$G' ! ! 8$ '' or '$Fi$G' or '$F~$G' ! ! 9$ '' or '$F~$G' or '$F`$G' ! ! or '' if not /V ! ! A$ filename as entered ! ! B$ wildcard filename if Q2=0 ! ! C$ all control characters 0..31,127 ! ! D$ temporary text holder ! ! E$ filename switches ! ! H$ 'hold prompt' macro; else null ! ! O$ 'overprint' macro and/or ! ! 'line counting' macro; else null ! ! T$ temporary text for overprint ! ! S$ 'search string' macro; else ! ! V$ 'see all' macro or; ! ! 'hold screen' macro; else HT ! ! ! ! initialize registers and editing mode ! ^D 1,32768ET -1EU 4ED 0ES 0U0 0U1 0U3 0U4 0U6 1UA 0UI 1US @^U9// @^UH// @^UO// @^US/QS< Y >/ @^UV/HT/ ! abort if not entered correctly ! J ::@S%TYPE%"F @^A% ?Illegal command "% HT @^A%"?% 13^T 10^T @O!EXIT! ' ! delete command ! 0,.K ! check all valid switches ! J :@S%/W%"S @FR// 1U1 ' J :@S%/H%"S @FR// 24U3 ET&512"N 2:WU3 0:W"N ::@S%:%"U @I%:0% ^SC ' ' ' ::@S%:%"S @FR// \U1 @FR// Q1-1"G Q1U3 ' -1%3^[ Q3UH @^UV/0U8 J < .-Z; MH0:; T L -1A-12"E -3%H^[ ' -1%H"L 0UH ' ET; > Q8-26"E -1+ '/ @^UH/QH"E @^A%Press RETURN for more % 0,8ET ^TU8 8,0ET 13^T ET&512"N 0:W-6"N 155^T ^^K^T 13^T | F| ' | 10^T ' Q8-13"E ^T^[ ' Q8-10"E 1UH ' Q8-32"E 1UH ' Q8"D Q8-^^0UH ' QH"E Q3UH ' Q8-26"E 10^T HK -1+ ' '/ ' ET&512"N 0:W-6"N 13^T 155^T ^^[^T ^^?^T ^^2^T ^^L+32^T 155^T ^^\^T 155^T ^^H^T 155^T ^^J^T 155^T ^^G^T :QH"E 155^T ^^[^T ' 13^T ' ' 1U1 ' J :@S%/T%"S @FR// 0,256ET ' J :@S%/S:%"S @FR// .U0 @I%QS:@_% .,.+1XS 2@S%^EQS% Q0,.XS Q0,.K 0U0 :@^US/"S Q4"E -QAXD -ZK GD 0,0XD ' '/ J :@S%/A%"S @FR// 3UA ::@S%:%"S @FR// \UA @FR// ' -1U6 ' ' J :@S%/F%"S @FR// 0EU ::@S%:U%"S @FR// 1EU | ::@S%:L%"S @FR// 0EU ' ' ' J :@S%/N%"S @FR// 1US ::@S%:%"S @FR// \US @FR// ' ' J :@S%/L%"S @FR// 24U7 ET&512"N 2:WU7 ' ::@S%:%"S @FR// \U7 @FR// ' Q7UL @^UO/J < QL"E ZK ' .-Z; L -1%L^[ > Z"E QL"E -1+ ' '/ ' J :@S%/O%"S @FR// 1UO ::@S%:%"S @FR// \UO @FR// ' :@^UO/0"E J < .U9 @S%^M^J%; 2R Q9-."E 45< @I% % > 2C | 13@I%% 13@I%% Q9,.XT QO< GT > 2C 13@I%% ' > 0,0XT | -1+ '/ ' J :@S%/P%"S @FR// 1U4 ' J :@S%/V%"S @FR// ET&512"N 0:WU0 | -1U0 ' Q0-6"E -1U0 ' Q0"L | Q3"E 13^T 155^T ^^[^T ^^?^T ^^2^T ^^L+32^T 155^T ^^\^T 13^T 155^T ^^K^T 155^T ^^G^T 13^T ' ' ! VT05 VT52 VT100 ! ! 0$ '' or '$F`$G' or '$Fd$G' ! ! 1$ '' or '$Fd$G' or '$F|$G' ! ! 2$ '' or '$Fk$G' or '$Fe$G' ! ! 3$ '' or '$Ff$G' or '$Fb$G' ! ! 4$ '' or '$Fj$G' or '$Fi$G' ! ! 5$ '' or '$Fa$G' or '$Fc$G' ! ! 6$ '' or '$Fc$G' or '$F{$G' ! ! 7$ '^' or '$Fg$G' or '$Fg$G' ! ! 8$ '' or '$Fi$G' or '$F~$G' ! ! 9$ '' or '$F~$G' or '$F`$G' ! Q0"E 155@^U0// ^^F:@^U0// ^^`:@^U0// 155:@^U0// ^^G:@^U0// 155@^U1// ^^F:@^U1// ^^d:@^U1// 155:@^U1// ^^G:@^U1// 155@^U2// ^^F:@^U2// ^^k:@^U2// 155:@^U2// ^^G:@^U2// 155@^U3// ^^F:@^U3// ^^f:@^U3// 155:@^U3// ^^G:@^U3// 155@^U4// ^^F:@^U4// ^^j:@^U4// 155:@^U4// ^^G:@^U4// 155@^U5// ^^F:@^U5// ^^a:@^U5// 155:@^U5// ^^G:@^U5// 155@^U6// ^^F:@^U6// ^^c:@^U6// 155:@^U6// ^^G:@^U6// 155@^U7// ^^F:@^U7// ^^g:@^U7// 155:@^U7// ^^G:@^U7// 155@^U8// ^^F:@^U8// ^^i:@^U8// 155:@^U8// ^^G:@^U8// 155@^U9// ^^F:@^U9// ^^~:@^U9// 155:@^U9// ^^G:@^U9// ' Q0"G 155@^U0// ^^F:@^U0// ^^d:@^U0// 155:@^U0// ^^G:@^U0// 155@^U1// ^^F:@^U1// ^^|:@^U1// 155:@^U1// ^^G:@^U1// 155@^U2// ^^F:@^U2// ^^e:@^U2// 155:@^U2// ^^G:@^U2// 155@^U3// ^^F:@^U3// ^^b:@^U3// 155:@^U3// ^^G:@^U3// 155@^U4// ^^F:@^U4// ^^i:@^U4// 155:@^U4// ^^G:@^U4// 155@^U5// ^^F:@^U5// ^^c:@^U5// 155:@^U5// ^^G:@^U5// 155@^U6// ^^F:@^U6// ^^{:@^U6// 155:@^U6// ^^G:@^U6// 155@^U7// ^^F:@^U7// ^^g:@^U7// 155:@^U7// ^^G:@^U7// 155@^U8// ^^F:@^U8// ^^~:@^U8// 155:@^U8// ^^G:@^U8// 155@^U9// ^^F:@^U9// ^^`:@^U9// 155:@^U9// ^^G:@^U9// ' Q0"L @^U0%% @^U1%% @^U2%% @^U3%% @^U4%% @^U5%% @^U6%% @^U7%^% @^U8%% @^U9%% ' @^UV/0U8 < 1,0ET ET; J @S%^EGC%; -1AU9 MH0:; 0,.-1T .-1%5^[ 0,.K ET; 0,1ET Q9-09"E :G3 %5^[ -Q5&7< :G8 %5^[ > F< ' Q9-13"E Z"N 0A-10"E :G0 D @O!C! ' ' :G1 !C! 13^T 1,0ET 13^T 10^T 0U5 -1%H^[ F< ' Q9-10"E :G2 Z"E A ' Z"N 0A-13"E :G1 D @O!C! ' ' !S! 13^T 1,0ET 13^T 10^T -1%H^[ MH0:; 0,1ET Q5< :G8 > F< ' Q9-11"E :G4 @O!S! ' Q9-12"E :G5 @O!S! ' Q9-27"E :G6 %5^[ F< ' :G7 1,0ET Q9+64^T 2%5^[ > 1,0ET ET"L HT ' Q8-26"E -1+ '/ @^UC// 0U0 32< Q0:@^UC// %0^[ > 127:@^UC// 0U0 ' J :@S%/-W%"S @FR// -1U1 ' J :@S%/I%"S @FR// 1UI 1U1 ' ! strip all spaces & tabs and post fix extension (if none found) ! HXA HXB 0,0XE 1U2 J :@S%"%"U 0,0XA 0,0XB J < @FS/^ES//; > J < @S%:%; 0,.:XA 0,.K > J :@S%[%"S .-1U9 @S%]% Q9,.:XA Q9,.K ' J :@S%(%"S .-1U9 @S%)% Q9,.:XA Q9,.K ' J :@S%<%"S .-1U9 @S%>% -1EJ-4"E Q9,.:XB | Q9,.:XA ' Q9,.K ' J :@S%/%"S R .,Z:XE .,ZK ' ^^%U8 -1EJ-4"E ^^?U8 J :@S%$%"S ^^$:@^UA%% -D ' J :@S%&%"S ^^&:@^UA%% -D ' J :@S%!%"S ^^!:@^UA%% -D ' J :@S/%/"S ^^%:@^UA%% -D ' J :@S%#%"S ^^#:@^UA%% -D ' J :@S%@%"S ^^@:@^UA%% -D ' ' Z"E -1EJ-5"E @I%*.LIS% | @I%*.LST% ' | J :@S%.%"F HXD ZJ @I%.*% -1EJ-5"E :QA"E :@ER%^EQD^EQE%"S -2D ' ' ' | R ."E @I%*% ' ' ' J GA ZJ GB HXA J :@S%^EU8%"S 0U2 %1^[ ' :@S%*%"S 0U2 %1^[ ' HXB Q2"E @EN/^EQA/ ' '  @EI// ET&256"N -1EJ-4"E 0,32#8ET ^T^[ 32#8,0ET ' ' ! loop for all files ! < Q2"N @O!NOLOOK! ' :@EN//; HK G* HXB !NOLOOK! HK :@ER/^EQB^EQE/"U @O!EOF! ' ! yank first page (possibly more) ! MS ET"G @O!CTRLC! ' Z"E ^E"T 12@I%% ' A ' ! count files ! %0^[ 1,16ET MH0:; 13^T 10^T -1%H^[ 0U5 ! announce file if requested ! Q1"G @^A%File: % :G* -1%H"L 0UH ' QI"N @^A%? % ^T&95U8 Q8-13"E ^T^[ | 13^T 10^T ' Q8-26"E 0; ' Q8-^^Y"N @O!EOF! ' | 13^T 10^T ' 13^T 10^T -1%H"L 0UH ' ' ! now loop until done or no file found ! < ET"G @O!CTRLC! ' .UD 0,0XD < ^E"T ZJ 12@I%% ' QDJ Q6; HXD QA+1L .-Z"E ^E"F ^N"F A F< ' ' ' ZK 0; > MO0:; MV0:; ET"G @O!CTRLC! ' HK Q6"N MH0:; @^A%**********% 13^T 10^T -1%H^[ GD 0,0XD QDJ L MS -Z; | ^N:; Y ' > :Q9"N 0,1ET :G9 13^T 1,0ET 13^T 10^T -1%H"L 0UH ' ' !EOF! Q2"N 0; ' Q7UL > ! if no file found inform as much ! Q0"E @^A" %No file" Q2"E @^A%s% ' @^A% matching "% :GA @^A%"% 13^T 10^T ' @O!EXIT! ! trap CTRL/C for a clean exit ! !CTRLC! -Q3U3 ! restore terminal modes and exit ! !EXIT! 0:W-6"E 0U3 ' Q3"N 1,16ET 155^T ^^\^T ' 0Q0-155"E 155^T ^^G^T ' Q3"L 155^T ^^H^T 155^T ^^J^T ' HK ^C^C