X7$ ?BOOT-U-No boot on volume ߋtv ϣ-SRT11A DECRT11A Iq p*rԀp*rbV[p*s@vNp*s#[p*s#"" p*s#3p*s#vJp*s^[p*s^v$p*s#[ 9g&Q   ϣ-ELN024 ELN0114 KITBUILD DECFILE11B 067$ELN024.AL [KITBUILD.INSTALL]XBDRIVER.PAS;1;aU;1{s!ELN024.ABACKUP/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY SYS$SYSDEVICE:[KITBUILD.INSTALL]*.*; DUA1:[0,0]ELN024.A/LABEL=(ELN01,ELN02,ELN03,ELN04,ELN05,ELN06,ELN07,ELN08,ELN09,ELN10)/SAVE/INIT/BLOCK=9000/GROUP=25VAX/VMFiles for RTCALC 05-Jul-84 README.1ST 3 05-Jul-84 (this message) RTCALC.DOC 18 05-Jul-84 (operation instructions ver. 2.95) RTCALC.ERR 11 26-May-82 (error messages) RTCALC.HLP 5 05-JUL-84 (abbreviated file of instructions) RTCALC.SAV 74 02-Jun-82 (VERSION 2.95) RTCAL2.SAV 78 26-Apr-83 (VERSION 2.96 - can print output) The program RTCAL2.SAV is the one that can print the spreadsheet. To use it all you do is type "RUN RTCAL2". When you want to print out a spreadsheet, type the command "/E". The program will then ask if you want to exit or print. Tell it you want to print. Then it will ask for a filename; type in "LP:". This will send the output to the printer. I notice that on the LA36 with a small spreadsheet, it doesn't start to print until the buffer is full or the file is closed or until you do something else (I'm not exactly sure what the reason is, but it doesn't start to print right away!) But it does eventually print it! Also note that there appears to be a bug in that when multipage spreadsheets are printed out you may lose an occasional column 1 listing (at the page boundaries?). You'll just have to edit the appropriate information back in. RUNOFF QUICK REFERENCE 1.0 INITIATING RUNOFF 1.1 MCR COMMAND MCR>RNO MCR>RNO filespec 1.2 DEFAULT FILE SPECIFICATIONS Input: SY:RUNOFF.RNO Output: SY:RUNOFF.DOC 2.0 RNO SWITCHES /SW sets the switch action; /-SW negates the switch action, and /NOSW also negates the switch action. Decimal values may be terminated by a decimal point. Values preceded by a number sign (#) are octal; Any numeric value may be preceded with a + or a - sign; if the number sign (#) is used, the + or - must precede it. The following are valid switch specifications. /SW:27:XXX:29. /-SW /NOSW:NOSWITCH:- 50 Seven switches control the RNO program. These switches, des cribed below, may be specified on either the input or output file specification. /-SP -- Inhibit spooling of output file /UC -- Force ALL uppercase output /FF -- Force Form-feeds (instead of multi-LFs) /WA -- Wait for CR input at beginning of each page /PA:L:H -- Output only indicated page range (functions as described only for source files that are not chapter oriented) L=lowest page number printed H=highest page number printed /HY -- Hyphenate output /UL:B -- Underline with a spacing-backspace /UL:L -- Underline via line overprint with underline character /UL:S -- Simulate underline with hyphen character on next line /UL:N -- Underlining suppressed RNO switch default: /SP/-UC/-FF/-WA/-PA/HY/UL:N 3.0 SPECIAL CHARACTERS ^ CONVERT FOLLOWING CHAR TO UPPER CASE \ CONVERT FOLLOWING CHAR TO LOWER CASE ^^ CHANGE MODE TO UPPER CASE \\ CHANGE MODE TO LOWER CASE Any actual lower case letters (codes 141 to 172 octal) appearing in the source will be transmitted unchanged. < CAPITALIZE FOLLOWING WORD (PRECEDE WITH .FLAGS CAPITALIZE) = DON'T HYPHENATE FOLLOWING WORD (PRECEDE WITH .FLAGS HYPHENATE) & UNDERSCORE FOLLOWING CHAR ^& UNDERSCORE ALL FOLLOWING CHAR \& STOP UNDERSCORING # SPACE, (NOT A WORD SEPARATOR) _ FOLLOWING CHAR IS NOT A SPECIAL CHAR (FOR ABOVE CHARS) 4.0 RUNOFF COMMANDS 4.1 SEPARATORS ; SEPARATES MULTIPLE COMMANDS ON A LINE . SEPARATES MULTIPLE COMMANDS ON A LINE 4.2 COMMANDS .BREAK CURRENT LINE UNJUSTIFIED, NEXT WORD ON NEXT LINE .BR .SKIP n CURRENT LINE UNJUSTIFIED, SKIP N LINES. N MAY BE NEG .S n .BLANK n LIKE SKIP, NOT AFFECTED BY LINE SPACING .B n .FIGURE n LEAVE N LINES BLANK, IF OVERFLOWS PAGE THEN N LINES ON .FG n NEXT PAGE .INDENT n BREAK, NEXT LINE STARTS N SPACES RIGHT OF LEFT MARGIN .I n N MAY BE NEG .PARAGRAPH n, v, t BREAK, [N SPACES TO INDENT, DEFAULT 5], [V LINES .P n, v, t BETWEEN PARAGRAPHS, DEFAULT TO LINE SPACING], [T TEST PAGE] .CENTER n;text BREAK, CENTER TEXT AT N/2, [N DEFAULTS TO PAGE WIDTH] .CENTRE n;text N MAY BE RELATIVE (+/-N) .C n;text .FOOTNOTE n N LINES AT FOOT OF PAGE SAVED FOR FOOTNOTE .FN n FOOTNOTE TEXT FOLLOWS .FOOTNOTE, TERMINATE WITH ! BEGINNING A LINE (REST OF LINE WILL BE IGNORED) .NOTE text START AN INDENTED NOTE, BLANK 2, REDUCE MARGINS BY .NT text 15, CENTER THE WORD NOTE, BLANK 1, INSERT TEXT .END NOTE TERMINATES THE .NOTE, BLANKS 2, RESTORES MARGINS .EN .LIST n START AN INDENTED LIST WITH N SPACING, LEFT MARGIN .LS n 9 SPACES RIGHT FOR 1ST, 4 MORE FOR SUBSEQUENT .LISTs NORMAL FILL AND JUSTIFY REMAIN IN EFFECT .LIST ELEMENT;text START AN ITEM IN THE LIST (USE WITH .LIST) .LE;text ELEMENTS NUMBERED SEQUENTIALLY .END LIST TERMINATE .LIST .ELS .COMMENT text IGNORES THIS TEXT, NOT PRINTED IN OUTPUT FILE .PAGE BREAK, ADVANCE TO NEW PAGE (UNLESS ON EMPTY PAGE) .PG .TEST PAGE n IF LESS THAN N LINES LEFT THEN BREAK, PAGE .TP n .NUMBER n START PAGE NUMBERING, N IS STARTING PAGE NUMBER .NM n (DEFAULT IS 1) .NONUMBER STOP PAGE NUMBERING, PAGES CONTINUE TO BE COUNTED .NNM CORRECT NUMBER WILL APPEAR IF NUMBERING CONTINUED .CHAPTER text START NEW CHAPTER, USE TEXT AS TITLE .CH text BREAK, PAGE, BLANK 12, CENTER CHAPTER N, BLANK 2, CENTER text, BLANK 3 .NUMBER CHAPTER n SUPPLIES A NUMBER TO BE USED IN SUBSEQUENT CHAPTERS .HEADER LEVEL n text START A SECTION AT THE LEVEL SPECIFIED, .HL n text FOLLOWING TEXT IS THE HEADER, N FROM 1 TO 5 BREAK, TEST PAGE 9, BLANK 3, SECTION NUMBER SECTION NAME .TITLE text USES TEXT AS TITLE, OUTPUT ON LINE 0 OF EACH PAGE .T text .FIRST TITLE text SPECIFY TITLE OF FIRST PAGE (ONLY WAY TO PRINT .FT text A TITLE LINE ON 1ST PAGE) .SUBTITLE text REMAINING TEXT IS SUBTITLE, OUTPUT DIRECTLY UNDER .ST text THE TITLE ON EACH PAGE .INDEX text TEXT IS A KEYWORD, ADDED TO INTERNAL INDEX BUFFER .PRINT INDEX PRINTS CONTENTS OF INDEX BUFFER IN ALPH ORDER AND .PX EMPTIES BUFFER .SUBPAGE NEW PAGE WITHOUT CHANGING PAGE NUMBER, APPENDS LETTER TO THE PAGE NUMBER .END SUBPAGE DISENGAGES THE SUBPAGE .APPENDIX text START AN APPENDIX USING TEXT AS THE TITLE, BREAK, .AX PAGE, BLANK 12, CENTER APPENDIX A (A IS INCREMENTED ALPHABETICALLY), BLANK 2, CENTER text, BLANK 3 APPENDIX NAME BECOMES THE TITLE .NUMBER APPENDIX a SPECIFY LETTER TO BE USED FOR SUPSEQUENT APPENDIX .HEADER arg PRINT PAGE HEADER, ARG MAY BE UPPER, LOWER, MIXED .HD .NOHEADER OMIT PAGE HEADER, START TEXT AT TOP MARGIN .NHD 4.3 MODE SETTING .JUSTIFY BREAK, JUSTIFY SUBSEQUENT LINES (SPACES BETWEEN WORDS) .J .NOJUSTIFY RAGGED RIGHT .NJ .FILL BREAK, SUBSEQUENT LINES FILLED FROM TEXT BUFFER .F TILL ADDING WORD WILL PASS RIGHT MARGIN IF HYPHENATION NOT DISABLED, WILL TRY TO BREAK WORD .NOFILL DISENGAGE FILL, JUSTIFY (ALLOWS INSERTION OF A TABLE) .NF .UPPER CASE SET OUTPUT MODE TO UPPER CASE (SAME AS ^^) .UC (DEFAULT) .LOWER CASE SET OUTPUT MODE TO LOWER CASE (SAME AS \\) .LC .FLAGS CAPITALIZE ENABLE < AS A SPECIAL CHARACTER .FL CAPITALIZE .NO FLAGS CAPITALIZE DISABLE < AS A SPECIAL CHARACTER (DEFAULT) .NFL .HYPHENATION ENGAGE HYPHENIZATION (DEFAULT) .HY .NO HYPHENATION DISENGAGE HYPHENIZATION .NHY .FLAGS HYPHENATE ENABLE = AS A SPECIAL CHARACTER .PERIOD PUT TWO SPACES AFTER EVERY . FOLLOWED BY A SEPARATOR .PR .NOPERIOD DISENGAGE .PERIOD (DEFAULT) .NPR .LITERAL DISENGAGE FILL AND JUSTIFY .END LITERAL REENGAGE FILL AND JUSTIFY 4.4 PARAMETER SETTING .LEFT MARGIN SET LEFT MARGIN TO N (DEFAULT 0) .LM n .RIGHT MARGIN n SET RIGHT MARGIN TO N (DEFAULT 60) .RM n .PAPER SIZE n,m SET PAGE SIZE TO N LINES BY M COLUMNS (DEFAULT 60,58) .PAGE SIZE n,m .PS n.m .SPACING n SET NUMBER OF SPACES BETWEEN LINES, N FROM 1 TO 5 .SP n (DEFAULT 1) .STANDARD n RETURN ALL SETTINGS TO STANDARD DEFAULTS .SD n N= 60 THEN LM 0, RM 60, PS 60.58 N= 70 THEN " RM 70, PS 70.64 .TAB STOPS n,n,... SETS TABS, MUST BE POS, LISTED IN ASCENDING ORDER .TS n,n,... CLEARS PREVIOUS TAB STOPS COMMAND (DEFAULT 9, 17, 25, 33, 41, 49, 57, 65) FILL/JUSTIFY MUST BE DISENGAGED FOR TAB STOPS TO WORK. .AUTOPARAGRAPH ANY BLANK LINE, ANY LINE STARTING WITH SPACE OR TAB .AP STARTS NEW PARAGRAPH UNLESS FOLLOWED BY RNO COMMAND .NOAUTOPARAGRAPH DISENGAGE AUTOPARAGRAPH .NAP ------------------ | DECUS RUNOFF | ------------------ Release Notes for Version M02.4 -- December, 1981 Prepared by Robert B. Denny Creative System Design Co. Padadena, CA RUNOFF - Version M02.4 PAGE 2 Release Notes (December, 1981) 1.0 NEW FEATURES This version of DECUS RUNOFF has a significant new feature. It now supports embedded control strings, called "raw text". As described in the manual, this facility allows escape sequences to be "hidden" from RUNOFF's fill and justification processing. This makes it possible to put printer control information in the text so that RUNOFF users may control special printer features such as bolding, shadow printing and special characters. The raw text feature was implemented to support TEXT, a mathematical formatting pre-processor for RUNOFF and the NEC spinwriter. TEXT generates the raw text necessary to perform complex mathematical formatting within a RUNOFF document. 2.0 CHANGES AND UPGRADES Version M02.4 incorporates several upgrades from the original M02 version last released by the text processing SIG. First, the hyphenation processor has been modified to improve its action. The modifications are in line with the "sister" algor- ithm currently in UNIX's NROFF formatter. In addition, RUNOFF will no longer hyphenate 2 lines in a row, nor will it hyphenate after less than three characters. The RSX version now supports exit with status, and the RSX build procedure has been complete- ly revamped. The procedure now resembles a mini-sysgen, carrying on a Q&A dialog about the features and defaults to be set up. WB&fe<BJ%@& fEAr} w r}?r}G_ }_ }_ Z_ _ _ h_  $wwwwww0wrwww&wZ(wM rwy  @w0%w& x2 w$ ew ww w"*wwU2.96=>ww."& p6e2.96=>7p A & o7pe7rp oeA 67ppe TpwD& d[& d c;& d cH& tdw4& fdY& \de&& Lde&& & nR e[7m[mwwHwwwwwwfwZw(wwww wwwwZw wwww:w^& & d]    ]B`ve2.96=>& & ] BC   f]`œ0 e&/w^  &  BzBC   ]`œ |[z0 r[z wee& 8\& & & & & @  *wef  wD r*w2ef  Z Vz 4 w "R U&  Uw v w6& &   e & (  lV  w& @z  w   zz 0e)& Z& e&e& @w z w8 A Z Z @aW W  Z ` wΗ@| w A Z Z Ca   zZ `Ew½} .w׬ w z wlEw$&  P w:½} Vw z w e& & .Y)w )   zYB`& V B@e&/wH AW W  .YAa   Y` wef zW& @z wJv&  &&& 5&  &&& e& Xe & We)& W N w%w y `@@w\Ü A Z W Ca   W `Ue tEww Xw w & @ X A Z |L @aW W  ^L ` wX  A Z :L @aW W  L `@ed  e[7m[m fK & e&e&e & ֋w&  e& K6 A Z hK Cae   FK B` w   K B`   J B`AEef  W W  J `1 &   W W  JAaWEwAv   `J B`e ef L W W  .J `BU@2e& /w@    I` W W  IAapE we ze e  I Lw& d=R. =X. =w& 0=`. p=w 6     I@aE)we   H@aEw6 & e&e&e&  w  w   lH@aEwj& e&e&e& 6֋w< w   e && & whe&&  &&  &/we &   wewee && & wbe&&  &&  &/w&  \ wewew6w&  X&     F@aE Aww&5&  @@w ` , : ~:e[1;5mWorking[mww4w0wbww& E ^wDW,`w e  B`   EBaI ^ `w w> 0 w `e2.96=>& D bBb   TEBaI& & 49 pb C A De& /w| ~C ? C >B  e06 bBb   DBaI& & 8  A wze e& Cvv6 w Aef @e& @AwF%w< x0 wZ wR 6wD 6w6w,w"00000000000000000w2 bBb   |CBa?I?& ^7wt-  v- BЗA v Bw0 & 6w&  ve & ZB6 6 6 0 bAef n/ 6 & 6 bwAef ZWw 6bwWw w whe& /w& 5 b we6,b A Bw6 w w6wAef W  W A@W A@wW  W  w @4 ;& N : A@w& Nf & N& 4 bbW W  @AaqI AW  Bw  6bw Ww  $w & p4W   w @w@e& , bw Z4w$ & 4/ Z4 & 4 bwte P & f?qdfq,dbw5wBd   ?BaI d BiW  W  DwqW_w BE e& & > w$&  w7 03 w& 2wqb^wBde^B^e `w V7 2w& V2 7 2e&Bd fb/w,   >@a& I& 1 wew& 17 2B^e ` w\eOR [7m[m&7< 0 Z\,wlef *7& \ 6w 0\]w8ef 7, 6w ,]w>$$ L1 *1 ,\wjAw$ef 6? 6 6e$f 6 ,]e w$e& l6 ? d6 6e$& t6e& H6* 5 Ae:f *6& N 5 A@w Zp e 8 ZZW W P ;`q Ae:f 5& N l5w Z& P:ef&Z/wN&&&  Bz"W W P ;`A f 9z0 9z we 0fd*]w,? 5e& 56  iABeB 4& N 4 BW" BiCwZef 4) H4w8p ef t4> l4 4ef |4 )]wNef B4+ 3w40 ef "4> 4 4ef *4 +]e && (we"& 3&  3 W W ( 9Aaq A@wBe& 3> ~3& %& ' 2 3e& ~3 ]wZe> :3e& .3 3> "3 3w", e Re &&  w`e& 2&  2 W W  8Aaq< A@wwe ,w6 0fd]w,] ]w)]w  ] ]w"%w yv< dwedww ` " A Z 4# Cae66E6E 6 W W  " ` w W W  " `B w 6  6    A@ww)  & V&/w6w)e   ""`& &  wewn) & w     A@wt&/w6w)e   !`& & ~ wew(   & Vwp wf&/w6w(e   !`& &  wew`( & w z w z w ?w@Η@| zw _w½} Xw*&/ww'& & 6 wewV ww'$&  w wd' wL' & ww8'  &  6 wRe2 hW 6 e&/w:    D@ak w "ew we~W N& : 6e&/w2$   a w we@w@el @e7%e&W& x 6@/6 ,/ 6./ 6// A Z  @aEm 6 -  / w/ -  w / 6/e*&.f/w(& 6& 94 w$  wew$ & H/we2Enter output filename: .LST %w%% Xj}-h`7T$7$7 @$7 >$7 <$7 .$w#w#@ew#w#AeP͕ eQh~     #Q@#Q  Vw#@ 7 |#{ U`>|X5r#@#@#wBad compiler version $&.|X$"#7n Trap to 4 #7XReserved instruction trap D${ 5|"w"   $&f&f""v"p"p"& & &&"& Νr"&  |-b"UeC hЕ:C \C VCЕ. H6 !""wleERZ  C CbRZ(@ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789 w!!5 @   -F!-D! ,{ >| @!faf&f6! 7x File not open w 5 7B Can't readEH 7* End of file5  @- u% @E  U =U@w $5 7Put not allowed 6Uu-uU  @@- 4em@5@E @m@5@@mf5@@@E@m@4 5 uuB ` 7! File overflowB` R 5 777  7 5 E @@e 5`ɇeu5  <E@@m@-U&ff V  ^ -%-" f@ 8 @ 5@ P 4@ @ Rw ,5  E eu!j}h}& !j}V V  @  0 {? --f n @E Eڡ7P֡5 >|&fP ЕPmHm5Hm  (AEE$_P$     5~ WE7V  @ >|9 5`:U 3*'5*׭ 7F!Transfer error70Channel not open7!Write past eof 5`AA&f@E  eAm A W  =>|R ҕ RRR >|B ,w @5 5@ ҕ w 5v 5@ UE@ v 5P xw R5@ |  7No channels available H/P$w/Dw8  { 5 @5 eeE%@-5f A  B5 `h|v|  Rh|@ H    5 "RP7 NFS access to file device  K l> f^`h|B| 6j|   "]U@h|Aa  @ 0 { f ? b7 Bad file name7 pa&`J| \D: <K. W J|* b.. /( N  fd0 !ы E  ZA L  3W J|0 :J||dJ|3J|" h|e (  0 E  d j|"@"  BUUUU@쀵U䀵 UE ĥ za  W |SEEKSPANODTTEMPBUFFERSIZEGOSIZENFSdddd d(d0d8dD&ff>w!7 Can't rewrite(input)  c , z U@(f I5 W-h~ @ 0 {  P 6P Zv|H h|p 0  L9 % U5 LU0eu5  e E9 @ r|H 0 ׆ *7J Rewrite failureTMPw & 7Seek out of range57Seek on sequential fileE 5B 'B B  `  Be  @ @ `@  C B DDDD AmuC`B ` jEUm   fC @     ! C A @ N!A @ C   `@ a D @w &&   Vh 1E bh - %  B   ee/ (  n@'d =U u%u@@m@- Ptw &   Bw  $w   h v`@ T w 6 ^ibi - 6 6TRUEFALSE  6 6 Pt&f&f$f @ &Հ& & &l<l024  C B A C B A % #p    0!mmm    E Vl   C B A N6 6 *6 6 va @!@6@ & & @@m@+@+ fE  e%   !!& 5      B* Bm   eu, ,D   &  - Ae0 A . ve0 l   E ZB- + F  e @e0 ,e0 "F(4e ee && J  q48&oiw3333333(\\F]܈ce1F<RV7>zTf& C B A C B A eC B A eB A eA e C B A 6df   & 6 6 6  ebC B A hB A hA h       e 5     D C B A fPPQ6  C B A V&f @- ?!BEpn ae ŒB %ѕ 7FSet element out of range&%?6  a6 E6pn% @)& 6666 &  ef&ee7PDPDPDPDe7PTPTPTPT7I PDI PDI PDI PD7P$P$P$P$e7PDPDPDPDe7fDDDD]A f&    6 _ C  ` 7 EXP overflow tS;@ >  @ r? eysf&f& [\pC  f& =@B  & @  E `  & @ & f& | 7 LOG of zero or a negative number E \EU@5@ f&5@  f&f& V@ "v@ f& @8A  & @    ?r1@    - -6 % 6 &f  W&f  >M&f  4D&f @ 9&f @ ,&f @ ! 7$Integer overflow 7Division by zerov&C   `@ `     & "&& Ea         6 6 &f&   N @ @ 6 6 6 v&f& &f -    87Trunc/Round overflow  V A  vf&a% 7Stack exceeded memory&f& v <-݂f7Subscript out of boundsB&f6 E%|BL|2 /A 7` W j}N@-174New() exceeded memory7New() of zero length2%`& " `Arf& _ E  |  e e`D e &|   l!<l2B`w 7 ( K #K@b%3 %7"Dispose() of Nil7Duplicate Dispose() &z%E v7Reserved instruction trapwww&w6 7&x6 7x6 7w6 7Rxf&feBCDE   EU UE7Rx7w7x7xf&f H& @  A& A  e@`@&EUEUD&    6A   @D`C B CaB c% w   7& A  =& @  e@@&EUEUe   E E C B  D 5  w7Division by zero   e& m j @ b` [N`EU D  UEU B  U .   A      W     @`C B CaB a C B  B  v C%PQL5 e   5 D C B ‹ C B  5e7Floating point overflow  ŒBP  & Bw8%w. xz{  2w,{  w{ wzzd 헭wX w.{  d "& ^ {    r l{ z R LeWarning: ?I/O error: ?Fatal error: Filename: " I/O status: Program counter: vwwRww UP$2.96=> EP$w<) ~&A& Nw A Z @ae&@ & e&f/wD  A Z v @aW W  X `1 wewXee& 55 \ ᵕ   W_w @E 5WZ WA W- @΋w7 逓@wleEnter the name of the bottom right slot (e.g. Z100): wN eF&@/w2L  @ aApwv l۾ weeA&A& NwJG A Z Cae@3w @ w ھwev@vD  & B& 6D ^҃,, j @e& & N& (Wy WY w 6 LeA&A& Fw G A Z CaeeL&N/w@6Nw ٗNweT&/w2Z   @aApwz pپ wevTM -R A@wTW W  `efXe& @RW W  ~ `BTU@2eV&X/w2\   6`Apw ؾ we w7Eww zew< XeV&X/ww$ ؾ we w"ewe Lwp'' L ( -Lw. zw4 f< V uwuu-wueNOld table size: ; Do you want to change it? [Press Y or N]: Due to table resizing, the contents of slot wass were lost; [Please press ]: ) w& : h} X 6 2N-- @ @e& & N& Wy WY w z w0 | @el& @ۀe&/wT   D@a5kW_w"   @aAE pk we@e7d@el&@e& x  @w2&  @el& ΋w "eRTCALC -- version Are you creating a new file? [Press Y or N]: Enter input filename: .RTCCan't open file ~ &  & \& & Z& @e&/w@e& R weWZ 5 & Jw( & &<& w X [?2lVT100VT52) @ej7RP0.@e& j w*@ej7PD,@e& 65 L&AZwJ A Z V @a  A Z 6 @aweZA` @e:& X @eB& e&/w&   @a k we55e SY:RTCALC.ERR/SeekDK:RTCALC.ERR/Seek .<<>AEINOT"#$() *!+",#-$.%/&<'=(>)@*[+],^-5.A/C0D1E2F3G4J5L6Q7R8T9W:.<==>>=?N@LAFBOCRDHEFnw   @E R , B +-U  $0% U @`  `U‹7>Illegal value for integerv&ffw!  ~ 7Reset and no file7 Can't reset(output) 2Q l-h~ @ 0 {  zW T v|H h|0  C % U5 Ueu5   U  e 4E9r|H 0 ͆ nl7 Reset failure wwZww8wwΈww:w…wrwƆwl& rUP$e2.96=>^& @| 6 ^e\&/w:b   n@ak wbdew we ^w8 n@el&b Z Jw 6eB&  6[ef/w6W W  aWG wa we[@w@eleB @e7eD&& ReKsssef@/w6@B  @ aw8 ۾ wee fA& NwÜ A Z | Cae@B A Z V Baw >@B A Z * Baw ۾wnee fA& NwÜ A Z Caeeff/wL B   ` w1 w @ H w LW wAW W  , `BE5 ef/w6@D!! Daw: پ we eff/w6@D!! z`w fپ we wewVe@ȕ w *e`Enter output filename; Press to output to : : .RTC& & XC A Z Caee&ff/wW W  x `@&&7Ew @w- @Aw& $ d& N & - @Aw&   w0e e[7m[m&  v fe Ε[@G6C A Z X Cae-%w& ,F$$ l@e& & N& .Wy WY we :wl  wR- w& ~ @e& r& N& h WE We w e |e wWP Wp wR      & Nf& e w  w*-(w6 @I 6e&/w> e   0@aEe06 weE] & w-#w8WH$w w6 E] e wL-&w ~w,-!wWH w U3w E3   >@aE*w    @aE 66 e&/w@ $ m   @aEe06 weE] 3e w -'wHWH 5w 0& . w-w& Ί++ N@e& & N& Wy WY w.e &A& Nw A Z Baee&f/wW W  J ` wzW W  `fW W  `@Ee& W W  `1 wLewe& w w-w > ^eQuit; are you sure? [Press Y or N]: No quit; continueExit or Print? [Press E or P]: Write to print file completedInvalid ResponseClear table; are you sure? [Press Y or N]: Table not cleared R T C A L C *********** Version 2.95 ------------ 1.0 GETTING STARTED Welcome to RTCALC. Here is a description to help you get started using RTCALC. RTCALC is a video accounting sheet, that helps you to, for example, balance a budget, fill out expense reports, or generate sales reports. RTCALC allows you to view, store, and dynamically update your data, using a table consisting of up to 600 entry slots. You can assign labels such as "Total Cost", values like the number 50, or formulas such as C2=A2*B2 to any slot. If you make a change to entries in any slot, RTCALC automatically recalculates and updates all related entries. The RTCALC table is similar to a grid, and is made up of vertical columns and horizontal rows. The columns are labeled with the letters A-Z, and the rows are labeled with the numbers 1-100. Each intersection of a column and row is called a slot, into which you can enter information. You can store the information in a file for later retrieval. 2.0 GENERAL PROCEDURES To run RTCALC, type R (RTCALC on SY:) or RUN RTCALC (RTCALC on DK:). RTCALC asks you if you are creating a new file. Type "Y" the first time you use RTCALC, and each time you create a new file. The filename is specified when you exit the program. Next, you will be asked to enter the slot name that you want as the bottom right point on the grid (e.g. I40 or Z100). If you aren't creating a new file, type "N" and the input filename. To select a slot on the table into which you want to enter information, type the slot's coordinates (such as N15 or Z30) followed by a or PAGE 2 use the directional arrow keys to move the pointer (large block) to that slot's position on the screen. As you move the pointer around the screen, the name of the current slot is displayed next to the arrow prompt at the top of the screen. When the pointer is at the correct slot, type an equals sign <=>, the slot's contents, and . Examples of the types of information you can place in a slot are: 1. A LABEL. The label must always be in quotes. An example is: A1="CHECK NO." 2. An ARITHMETIC VALUE. Some examples are: A2=50 or B3=10.5 or C5=-200 or D4=1.3E2 3. An ARITHMETIC FORMULA. Some examples are: C2=A2+B2 or F6=D6*E5 To delete a slot's contents, move the cursor to that slot. Then type = and press after the slot name at the arrow prompt. 3.0 SYSTEM COMMANDS You can use system commands to format the RTCALC table, and to exit from RTCALC. Each system command begins with a slash (/) character. The commands are listed below: 1. /C CLEAR TABLE To clear the RTCALC table, type /C. Then type Y if you're sure. 2. /E EXIT To exit from RTCALC and close the current output file, type /E at the prompt line. RTCALC asks you to specify the name of the output file. If you don't specify a file extension, RTCALC assigns the default extension .RTC. 3. /F$ = SPECIFY DOLLAR VALUE /FX = NUMBER OF DECIMAL PLACES 4. /JR = RIGHT JUSTIFY COLUMN (DEFAULT) /JL = LEFT JUSTIFY COLUMN Specify either R (Right) or L (Left) to have the last character in each column aligned on the right or left margin. 5. /Q QUIT PAGE 3 To discard the open output file, type /Q. Then type Y if you're sure. 6. /R REPAINT To repaint the screen, type /R. 7. /T+ TURN EVALUATION ON (DEFAULT) /T- TURN EVALUATION OFF To have all values continually evaluated on the screen, type /T+. To have values evaluated only for the current slot, type /T-. This procedure allows for faster typing, as the screen is not updated. 8. /WX X = COLUMN WIDTH (DEFAULT IS 8 CHARACTERS) 4.0 ASSIGNMENT MODE In Assignment Mode you can assign a label, value, or formula to a slot or range of slots. The assignment statement must contain an equals (=) sign. The slot name goes on the left of the = sign, and the label, value, or formula goes on the right of the = sign. In addition to the examples given in GETTING STARTED, you can perform the following functions using Assignment Mode: 4.1 ASSIGNMENT TO MORE THAN ONE SLOT You can assign a label, value, or formula to more than one slot at a time. For example: N15,M20,Z10,P4=A2*5 (where the commas separate the slots) A2..A10=100 (where the two dots represent a range of slots, in this case slots A2,A3,A4,A5,A6,A7,A8,A9,10) 4.2 ASSIGNMENT USING SLOT DESIGNATORS You can assign a label, value, or formula to a slot using a slot designator in place of a slot name. A designator is always contained in brackets ([]). For example: PAGE 4 [3,3]=45 The slot designator [3,3] corresponds to the slot name C3. 4.3 RELATIVE SLOT DESIGNATORS The @ symbol can be used as a relative slot designator. If the current slot is C3, then [@,@] represents C3. Designator [@-1,@] would represent the previous column and the current row. Similarily, [@,@+1], represents the current column and the next row. Again assuming that the current slot is C3, then a relative slot designator can be combined with with the ".." assignment convention to represent a group of slots. For example: C3..C8=[@+1,@]+[@+2,@] This is a shorthand method of entering the following: C3=D3+E3 C4=D4+E4 . . . C8=D8+E8 5.0 SLOT EXAMINATION As you become familiar with using RTCALC, you will probably notice that each slot can have two types of contents. The first type is the value or label that is displayed in the slot. For example, if you specify A2=50, the value 50 will appear in the slot A2. Or, if you specify B1="MILEAGE", the label MILEAGE will appear in the slot B3. If the label is larger that the slot's width, it will appear truncated. The second type is either the formula used to calculate the first type, or the non-truncated label you specified. The formula or label is displayed in RTCALC's "Echo Region" located beneath the prompt line. For example, if you specify C3=A2+B2, the sum of A2+B2 will appear in the slot C3, but the formula C3=A2+B2 will be displayed in the Echo Region. Or, if the label specified was greater than the slot's width, the entire, non-truncated label will be displayed in the Echo Region. Use the arrow keys to move the pointer to the slot you want to examine or type the slot name at the prompt line and press . PAGE 5 A slot containing '????'s means that the slot's value is UNKNOWN; it depends on an illegal slot (off of the grid) or on a slot which contains a label. A slot containing '****'s means that the slot's value is RECURSIVE; it depends, in some way, on itself, and is hence recursive. The '****' marked slots will show the path of this recursion. A slot containing '____'s means that the slot's value is PENDING; it's value depends upon other slots which are either empty or PENDING themselves. 6.0 ARITHMETIC OPERATIONS 6.1 PRECEDENCE OF ARITHMETIC OPERATIONS 1. Parentheses () 2. Exponentiation E 3. Multiplication and Division * and / 4. Addition and Subtraction + and - The list above shows the order in which arithmetic formulas are evaluated by RTCALC. A formula contained in parentheses is evaluated first. Formulas containing exponents are evaluated next, followed by formulas which perform multiplication or division. Formulas which perform addition and subtraction are evaluated last. In the case where formulas contain two or more operations at the same level of precedence, the order of evaluation is from left to right. Enter the quoted text of this label! Enter the closing quotation mark! Enter a "label" (in quotes), or a comparison! Enter a comparison, preceded by a NOT operator if appropriate! Enter a "label", slot name, slot designator, or comparison! Enter an = or <> sign to compare the "label" to a slot's contents! Enter an = or <> sign to compare the slot to a "label"! Enter a right parenthesis to complete the formula or comparison! Enter a relational operator, i.e. =, <>, <, >, <=, or >=! Enter a decimal point or else an E for exponent! Enter the digits of the fraction or else an E for exponent! Enter an E for exponent! Enter an E for exponent! Enter the exponent, preceded by a plus or minus sign if appropriate! Enter the exponent! Enter a number or a decimal point! Enter the fractional part of the number! Enter a possibly signed: slot name or designator, number, function or formula! Enter a number, slot name or designator, function or formula! Enter the closing parenthesis! Enter the name of the function! Enter the parameters that the function is to operate on, starting with a (! Enter a comma followed by another parameter, or a left parenthesis! Enter any one of: a power, multiply, divide, add, or subtract operator! Enter the slot's column letter or a left bracket (if a designator)! Enter the slot's row number! Enter a comma between the column and row components of the slot designator! Enter the right bracket of the slot designator! Enter a command letter, i.e. C, D, E, F, J, Q, R, T, or W! Enter the column width or an A for automatic mode! Enter an L for left justify, or an R for right justify! Enter a dollar sign to specify money or the number of decimal places! Enter a the number of decimal places or press ! Press ! Enter the column letter or row number of the slots you want displayed! Enter .. for a range of slots, a comma, or press ! Enter another column letter! Enter another row number! Enter a comma and then more column letters or row numbers, or press ! Enter a "label", number, slot name or designator, or function! Enter a system command (/), or a slot name to be assigned or examined! Press to examine this slot's contents! Enter a .. for a range of slots, a comma and another slot, or an = sign! Enter a comma and more slots, or an = sign to make an assignment! Enter a conditional, number, slot name, expression, function or "label"! Enter the word THEN! Enter the word ELSE, or press ! Press if the conditional is complete! Press to complete the assignment! Enter an exponent which is less than 32! The column letter is outside the range you specified! The row number is outside the range you specified! Zero is an illegal row number! *** CONDITIONALS NOT YET IMPLEMENTED ***! Columns are from A to Z; rows are from 1 up! {INTERNAL ERROR -- STACK OVERFLOW}! {INTERNAL ERROR -- STACK UNDERFLOW}! Attempt to divide by zero! Attempt to raise a negative number to a non-integral power! Illegal slot! Enter a + to turn full evaluation on, or a - to turn full evaluation off! *** /D (DISPLAY) COMMAND NOT YET IMPLEMENTED ***! Unknown or unimplemented function! Incorrect number of parameters for function! *** # (FUNCTION CALL) FACILITY NOT YET IMPLEMENTED ***! R T C A L C ==================================================================== 1) To run RTCALC RTCALC Are you creating a new file [Y,N]: Y Enter the name of the bottom right slot (e.g Z100): If for this question you answer E5... you will get a table with columns A,B,C,D,E and rows 1,2,3,4,5. ==================================================================== 2) Command Summary: / = display all commands. /C = clear table. /E = enter output file name: TEST.FOO /Fn = display positions to right of decmal point. /F$ = insert dollar sign. /JR = right justify column. /JL = left justify column. /Q = quit. /R = repaint. /T+ = full evaluation ON. /T- = full evaluation OFF. /Wn = set width of current column to n. ==================================================================== 3) Cursor Control: Cursor control may be accomplished by two methods: 1) By Specifying the column and row you wish the cursor to go to: B3 ...go to column B row 3. A5 ...go to column A row 5. 2) By using the four keys in the right-hand corner of the keyboard (starting from left to right): 1st key (^) ...move up one row. 2nd key (v) ...move down one row. 3rd key (<) ...move left one column. 4th key (>) ...move right one column. ==================================================================== 4) Labels: Labels are specified within double quotes: A1 = "TRAVEL" ...position (A1) contains the label TRAVEL. B1 = "LODGING" ...position (B1) contains the label LODGING. C1 = "MEALS" ...position (C1) contains the label MEALS. D1 = "TOTAL" ...pisition (D1) contains the label TOTAL. ==================================================================== 5) Values and Expressions: Values and expressions are inserted by setting the row and column position equal to a value or expression: B2 = 100.00 B3 = 200.00 B4 = B2+B3 B5 = (B2*B3)/(B2+B3) A1..A4 = 10 ...set all values from A1 to A4 equal to 10. ==================== [@,@] = ...[current column,current row] [@-1,@-1] = ...[current column-1,current row-1] EXAMPLE: ======== (1) A4=A3+A2+A1 (is the same as) A4=[@-1,@]+[@-2,@]+[@-3,@] (2) B4 = B3+B2+B1+A3+A2+A1 (is the same as) B4 = [@-1,@]+[@-2,@]+[@-3,@]+[@-1,@-1]+[@-2,@-1]+[@-3,@-1] ==================================================================== PPB&fe<BJ%@& fEAu w Ru;uC_ u_ 0u_ {_ B~_ >_ _  {wwwwww0wrwww2HwzJw5 iwp  @w0%w& x2 w$ B]w ww w"*wwN2.95=>w>wND& dh6e2.95=>72h A & (g70he7h rgeA 67he gwD& @\[& 6\ ^[;& \ H[H& \w4& [Y& [e&& [e&& [e& Xg& [ w0.. [w wfwjo& Y@jW W P rg`W!w*@jW W P Ng`& N& 4[ ww` j[ BZ <[eMessage text file (RTCALC.ERR) can't be openedError message # 7Bf- w w 7& J e[7m[mwwHwDwvww& FU ^wDW,`w e  B`   ~UBaG ^ `w w> 0 w `e2.95=>& T bBb   TBaG& & H pb ZS P Se& /w| (S bO S Q  e06 bBb   ^TBaG& & >H  Q wze e& Svv6 w Aef @e& @AwF%w< x wZ wR 6wD 6w6w,w"w2 bBb   &SBa?G?& Gwt-  v- BЗA v Bw0 & Fw&  ve & R6 6 6 0 bAef n F & *F bwAef ZWw 6bwWw w whe& /w& E b we6,b A Bw6 w w6wAef W  W A@W A@wW  W  w @ J& N \J A@w& Nf & N& D bbW W  PAaqG AW  Bw  6bw Ww  $w & DW   w @w@e& , bw Dw$ & C D & C bwte P & Oqdfq,dbw5wBd   POBaG d BiW  W  DwqW_w BE e& & PN w$&  w B w& Bwqb^wBde^B^e `w V dBw& B @Be&Bd fb/w,   M@a& G& A wew& A AB^e ` w\eOR [7m[m&7L 0 Z\,wlef F& \ Fw 0\]w8ef F, bFw ,]w&$$ @ @ ,\wjAw$ef XF& PF Fe$f `F ,]e w$e& F& F ^Fe$& Fe& E* E Ae8f E& N E A@w Zp e 8 ZZW W P K`q Ae8f hE& N Ew Z& Ief&Z/wN&&&  Bz"W W P *K`A f Iz0 Iz we 0fd*]w,& De& D6  iABe@ D& N :D BW" BiCwZef >D) Cw8p ef D& D Def &D )]wNef C+ Cw40 ef C& C .Def C +]e && (we"& C&  2C W W ( IAaq A@wBe& 0C& (C& %& ' RB Ce& (C ]wZe& Be& B PC& B ZCw", e Re &&  w`e& B&  :B W W  HAaq: A@wwe ,w6 0fd]w,] ]w)]w  ] ]w"%w yb$ dwedww L$T$^$L$^$T$ ]+we & ZZW W P G`1 iABe@ LABe8 @A A& N @ BW"  CiBw`0fd Z AiBw,] ef @& ] f@we w0 ^ @    F@a B]CW])w$ @    tF@ap CwW]+ W]* w @    (F@aBZ Ce&fZ/wD @    E@a  P EB` C we 6](7>EeInternal error - NEXTTOKEN not found& & Di& e' > w& e& x' > 0ie& & "D& e& ( V> R w, J& e& e & (> $w0]\ef > e,  & C6d & e& * = w$6d & e& * = , ] w%w y) Z& e& * <= 8  ~& e& e& =  w0]\ L& e& * < ,we& < Fw5* < j6] ,w"& e& ef t< p wDw@())V))))))))))))))))))))))))))))) ,w dw* ;e f  h<w& e2& , >9 8e& & >& e& - 8 *w  w$& e& - 8  ef 8& ] B8w"& e& e f f8 be& & =& e& / 8 / 8& 7w& e& / 7 ] w%w y // 7 \w& e& / 7 & e& / p7 lz/ Z7 ]whw|0]\ wl0]\ef 7 0]\wDw@j./T./////./////.///////////////..& e& e & 6 ﶕe@ @(( & ; F0 66e& *6 6 ]w>0 6& ] 5w60 5& ] 5w e & Z;& e& r2 5 w%w| x25 w& e3& j2 J5 Fv & e& b2 &5 "&&f 9 8w& e4& Z2 4 && 9 w& e5& R2 4 && 9 ef/w@ @    :@a W W  |:Aap C wewd6jjJ2 4 B2 4 jw&w"12222222222222220e )& 09& e& 4 d3 `쀕w% w x`4& e=& 4 .3 *축w& e& 4 3 축wf& e& 4 2 붕wD& e & 4 2 뗥 w& e!& 4 2 붕0]\]w"4 z2 vw& e#& 4 \2 X붕& e$& 4 >2 :֋wh)w %w&& e& 4 2& &  *1 궕& e'& 4 1 궕]wJ0]\ww3\403\43\4\4\422& e"& 4 1 궕eP & & 6& e(5 0e& 0 B1 逕ef 0& x0wV] w, & e& e & 0 鶕w0]\ef d0 e,  & 50h& e)& .8 0 闥w  zw0]\&8 /e f 0*  $& e+8 /e& / 0 趕 w48 /e & /6 ]w  w0]\& e,8 L/e& @/ / 8藥wT]w& e-& 8 / 藥wp͕.7 . /7 . ]w07 . & e6& 7 . 綕 w͕0]\17 t. jw͕hw& eA& 7 F. B綕 e @, BBl 36 ^a6i6j,\ \d5  jelww(wwwwwwFw:wwwwwwbwww:wwwwww>& & 2    23B`ve2.95=>& & 2 BC   2`œ0 e&/w^  &  BzBC   z2`œ 0z0 0z wee& 1& & & & & @  *wef  wD r*w2ef  &0 `,z 4 w "r; F+&  *w v w6& &   e & (  +  w& @z  w   zz 0e)& 00& e&e& @w z w8 A Z ^0 @aW W  @0 ` wΗ@| w A Z 0 Ca   / `Ew½} .w׬ w z wlEw$&  P w:½} D,w z w e& & .)w )   .B`& V B@e&/wH AW W  .Aa   .`  wef ,& @z wJv&  &&& 5&  &&& e& z-e & X-e)& 8- N w%w y? `@@w\Ü A Z ^- Ca   >- `Ue tEww Xw w ???????????????>6?e& +&  @  d , @a&& z (w we& T+ jw  l w e& +  e& & *   Bw 6 &   w e& l* X |e& & @* V  Bw 6 &  8 w e& ) l  a e  ) A Z * Cae W W  ) ` w W W  ) `BEwj wJv5 & e&e &  w7EwE@@@w8 &w& & ww"w& & j e & B( w\& D efP %/w & D we&& N& NwW AW Z ( AaApEp   lpw   p& & & 0lw`ee#6 &w& JE  w x |w l de&f@ &/w0   &    we   & f w& |E   e [7m[0m & %666 v w w A Z % @a6E6 wxAw*w ww6 w w  w v w 6w  6 w,w 5w 5ae & $ T" uW-w& @e &f 5u-w& @ & 5e $6 v w Ε-  v-  w  w &  vw@ A Z # @a6Em6 6w e@ &m & e7"& Nf@eD& &  @w < n67"e) " - A@6w|@w"& Nf F& & & J &  & jJ wD@w4& Nf&  & ,& & >&  X A Z ! @aW W  ! ` wX  A Z ! @aW W  ! `@ed  e[7m[m  & e&e&e & ֋w&  e& 6 A Z Cae   B` w   B`   t B`AEef  W W  @ `1 &   W W  AaWCwA v    B`e ef L W W   `BU@2e& /w@    X` W W  BAapC we ze e   Lw& rP xP w& P w 6     x@aC)we   P@aCw6 & e&e&e&  w  w   @aCwj& e&e&e& 6֋w< w   e && & whe&&  &&  &/we &   wewee && & wbe&&  &&  &/w&  \ wewew6w&  X&     :@aC Aww&5&  @@w ` ,  e[1;5mWorking[m |$wr$% Qu-ld7"7"7 "7 "7 "7 "w"w"@ew"w"AeP͕ eQh~     J"Q@0"Q  VwP"@ 7 "s U`sQ5 "!!w RBad compiler version <#&sQ"#!7n Trap to 4!7XReserved instruction trap "s 5sj!wr!   "&f&f:!:!! ! !& & &&!& Ν !& s- UeC hЕ:C \C VCЕ. H6 .   wleENS  C CbNS(@ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789 w!4 5 @   -- ,s s faf&f 7x File not open w 5 7B Can't readEH 7* End of file5  @- u% @E  U =U@w $5 7Put not allowed 6Uu-uU  @@- 4em@5@E @m@5@@mf5@@@E@m@4 5 uuB ` 7! File overflowB` R 5 78767 2 7$ 5 E @@e 5`ɇeu5  <E@@m@-U&ff V vrp ^h -6%-4" f@  @ 5@ P 4@ @ Rw ,5  E eu!u:8t& !uV V   @  0 s? -~vvp-phhbf  @E Eި7Pڨ5 s&fP ЕPmHm5Hm  (AEE$_P$ @>    5 WE7Z  @ s9 5`>U 3*+5*׭  7F!Transfer error70Channel not open7!Write past eof 5`AA&f@E  eAm A W  =sR ҕ RRR sB w @5 5@ ҕ Zw 5v 5@ UE@ v 5P :w R5@ s  7No channels available H/w/w  s 5 @5 eeE%@-5f ,A  B5 `s t  s@ H    5 "7 NFS access to file device    ss t   w]U@sAaR  @ 0 s f ? 7 Bad file name7 a&`s \D: <. W s* b. /( N  f]0 !ы E  ZA L  h3W s0 :sx]s3s" se (  0 E  ] t"@"  UUUU@쀵U䀵 UE ĥ za  W 8tdSEEKSPANODTTEMPBUFFERSIZEGOSIZENFS]\ ]]]$],]4]w & 7xSeek out of range57PSeek on sequential fileE 5B 'B B  `  Be  @ @ `@  C B DDDD AmuC`B ` EUm   B fC @     ! C A @ N!A @ C   `@ a D @w X&&   _ 1E _ - %  B   ee/ (  n@'d =U u%u@@m@- Ptw    <Bw Z $w <   h v`@ T w 6 `` - 6 6TRUEFALSE  6 6 Pt&f&f$f @ &Հ& & &(d<dd024  C B A C B A % #p    0!mmm    E c   C B A N6 6 *6 6 va @!@6@ & & @@m@+@+ fE  e%   !!& 5      B* Bm   eu, ,D   &  - Ae0 A . ve0 l   E ZB- + F  e @e0 ,e0 "F(4e ee && J  q48&oiw3333333(\\F]܈ce1F<RV7>zTf& C B A C B A eC B A eB A eA e C B A 6df   & 6 6 6  ebC B A hB A hA h       e 5     D C B A fPPQ6  C B A V&f @- ?!BEf ae ŒB %ѕ 7Set element out of range&%?6  a6 E6f% @)& 6666 &  ef&ee7PDPDPDPDe7PTPTPTPT7I PDI PDI PDI PD7P$P$P$P$e7PDPDPDPDe7fDDDD]A f&    6 _ C  ` 7 EXP overflow tS;@ >  @ r? eysf&f& [\pC  f& =@B  & @  E `  & @ & f& | 7. LOG of zero or a negative number E \EU@5@ f&5@  f&f& V@ "v@ f& @8A  & @    ?r1@    - -6 % 6 &f  W&f  >M&f  4D&f @ 9&f @ ,&f @ ! 7Integer overflow 7jDivision by zerov&C   `@ `     & "&& Ea         6 6 &f&   N @ @ 6 6 6 v&f& &f -    87Trunc/Round overflow  V A  vf&a% 7lStack exceeded memory&f& v <-݂f7Subscript out of boundsB&f6 E%sBLs2 /A 7` W uN@-17New() exceeded memory7|New() of zero length2%`& " `Arf& _ E  s  e e`D e &s   l!<l2B`w 7 ( K #K@b%3 %7X"Dispose() of Nil7>Duplicate Dispose() &z%E n7Reserved instruction trapnnnn6 7&p6 7zp6 7No6 7of&feBCDE   EU UE7o7No7zp7pf&f H& @  A& A  e@`@&EUEUD&    6A   @D`C B CaB c% w   7& A  =& @  e@@&EUEUe   E E C B  D 5  w7Division by zero   e& m j @ b` [N`EU D  UEU B  U .   A      W     @`C B CaB a C B  B  v C%PQL5 e   5 D C B ‹ C B  5e7nFloating point overflow  ŒBP  & Bw8%w. xxr s  2w,*s  w8s wPr EP$w) ~&A& Nw A Z @ae&@ & e&f/wD  A Z v @aW W  X `1 wewXee& v55 \ ⵕ   2W_w @E 5WZ WA W- @΋w7 逓@wleEnter the name of the bottom right slot (e.g. Z100): wN eF&@/w2L  @ aApwv ܾ weeA&A& NwJG A Z Cae@3w Z@ w Jܾwev@vD V{ & B& 6D ^h{,, j @e& & N& (Wy WY w 6 LeA&A& Fw G A Z CaeeL&N/w@6Nw *ۗNweT&/w2Z   @aAp wz ھ wevTM -R A@wTW W  `efXe& @RW W  ~ `BTU@2eV&X/w2\   6`Apw پ we"w7Eww zew< XeV&X/ww$ پ we w"ewe Lwp{'' L { -Lw{ zw{ f{ V ]: ) w& } h&u X 6 2}-- @ @e& & N& Wy WY w z w0 ~ @el&  ܀e&/wT   D@a5kW_w"   @aAE pk we@e7d@el&*~@e& x  @w2& 0~ @el& ΋w "eRTCALC -- version Are you creating a new file? [Press Y or N]: Enter input filename: .RTCCan't open file ~ & , & \& & Z& @e&/w@e& R weWZ 5 & Jw(2 & &<& w8 X [?2lVT100VT52) @ej7RPƀĀ@e& j w*@ej7Pڀ€@e& 65 L&AZwJ A Z V @a  A Z 6 @aweZA @e8&  @e@& e&/w&   @a k we55e SY:RTCALC.ERR/SeekDK:RTCALC.ERR/Seek .<<>AEINOT"#$()*+ ,!-".#/$<%=&>'@([)]*^+5,A-C.D/E0F1G2J3L4Q5R6T7W8.:=;><==N>L?F@OARBHCFnw   @E  ,  +-U  0% U @`  `U‹7Illegal value for integerv&ffw! ~ ~ * 7LReset and no file72 Can't reset(output) < Q l-h~ @ 0 s  W T 8 tH s0  0C % U5 0Ueu5   ,U  e E9tH 0 ͆ nl7 Reset failure wZwĎwwwdww4ww8^& zy $6 ^e\&/w:b   @ak wbdew we ^w8y @el&b z wz peB& F6[ef/w6W W  aWG wa we[@w@eleB @e7eD&z& V eKsssef@/w6@B  @ awr bݾ wee fA& NwÜ A Z Cae@B A Z Baw @B A Z d Baw ܾwnee fA& NwÜ A Z  Caeeff/wL B   ` w1 w @ H w W wAW W  f `BE5 ef/w6@D!! Da wt d۾ we eff/w6@D!! `w ۾ we wewVe@ȕ w e`2.95=>Enter output filename; Press to output to : : .RTC& & C A Z Caee&ff/wW W  `@&&7Ew pw- @Aw& TV{ & N & - @Aw& Z{ H w0e e[7m[m& N e 2Ε[@E6C A Z Cae-%w& \$$ @e& 2& N& 0 ^Wy WY we :wր 2 wV- w e e w*-(w6 @G 6e&/w> e   \@aCe06 weE] & w-#w8WF$w w6 E] e wL-&w w,-!wWF w U3w E3   j@aC*w    F@aC 66 e&/w@ P m   @aCe06 weE] 3e w -'wHWF 5w X& R 6w-w& :++ z@e& & N&  eQuit; are you sure? [Press Y or N]: No quit; continueClear table; are you sure? [Press Y or N]: Table not clearedz&fftw!F7 Can't rewrite(input)  c  U@ \I5 W-h~ @ 0 s  P P  tH sp 0  9 % U5 U0eu5  e nE9 @ tH 0 ׆ :87 Rewrite failureTMP DECUS RUNOFF Revision Date: December 1, 1981 Program Version: M02.4 (Raw text support added) Document Revision December 1,1981 Revised Version by Robert B. Denny Creative System Design Co. Pasadena, CA and Dan Dill Boston University Boston, MA NOTICE: This document describes a program which the Digital Equipment Corporation has no committment to offer or support at this time. This document is, however, believed to be an accu- rate description of RUNOFF. CHAPTER 1 INTRODUCTION RUNOFF (RNO) is a PDP-11 program to facilitate the preparation of typed or printed manuscripts, such as memos, manuals, etc. The user prepares his material on any regular PDP-11 terminal, and writes it onto a file using an appropriate editor. The user includes not only textual material, but also case and formatting information. RUNOFF then takes the file and reproduces it onto the line printer, terminal or other file to produce a final copy or final file image. It performs the formatting and case shift- ing as directed, and will also perform line justification, page numbering and titling, etc., as desired. The principal benefit of such a program is that files prepared for use with it may be easily edited and corrected. Small or large amounts of material may be added or deleted, and unchanged material need not be retyped. After a set of changes, the pro- gram may be operated to produce a new copy which is properly paged and formatted. Documentation may thus be updated as necessary without requiring extensive retyping. CHAPTER 2 RSX/IAS OPERATING PROCEDURES 2.1 RUNOFF OUTPUT FILE FORMAT The files produced by RUNOFF are not normal RSX/FCS "text" files. RUNOFF supports overprint underlining, and RSX text files (FD.CR attributes) cannot handle overprint. RUNOFF there- fore produces output files with unspecified (null) attributes, and includes explicit carriage return and line feed characters in each record. When PIP is used to send RUNOFF output files to serial printer units (e.g., LA120, Diablo) underlining works properly. On line printer devices, however, embedded and characters produce a variety of actions, depending on the controller and/or printer. Be hereby warned. When FLX is used to copy RUNOFF output files to DOS format tape, it defaults to transfer the file in its "formatted ASCII" mode, ending each record with a sequence. Since the RUNOFF output file already has sequences imbedded, the result is a file which is double spaced. If you are using FLX to record RUNOFF files on DOS tape, you must set the FLX "/IM" (image mode) switch to avoid a double spaced file. Alternately, you can "filter" the .DOC file with TECO as shown below. Again, watch out for the effects of underlining sequences. EDITING RUNOFF OUTPUT RUNOFF output files may not be edited normally with the standard RSX/IAS file editors. To edit RUNOFF output, the output file must first be processed by TECO with a command of the format: *EBFILESPEC/-CR$EX$$ Note that underlining information may still produce unexpected results. RSX/IAS OPERATING PROCEDURES PAGE 2-2 2.2 INITIATING RUNOFF RUNOFF can be initiated in several ways. The general formats for RSX-11 users are: If RUNOFF is installed: >RNO command-string >RNO RNO>command-string If RUNOFF is not installed: >RUN [uic]RNO RNO>command-string 2.3 RNO COMMAND STRING System programs usually require a command string to specify such things as input files and various options. A standard command string has one of the following forms: output-file=input-file or @command-file Both output-file and input-file are strings comprising a file specification. The second form of command string (@command-file) is used to specify an indirect command file. In this case each record of the file is used as a command string before any commands follow- ing the indirect command are accepted. The command string syntax is described more completely in the User's Guide for the relevant operating system. 2.3.1 FILE SPECIFICATIONS An RSX-11 file specification has the following form: Dev:[UIC]Filename.Typ;Ver In this specification Dev must be a legal device code. The default value is SY:, the system disk. UIC must be a valid User Identification Code. Filename is any 1- to 9-character alphanu- meric string which specifies a file name. Typ is a 1- to 3-character alphanumeric file type. System programs default to an appropriate standard type so the typical user will not have to explicitly specify it. Finally, Ver is a number which is the version number of the file. This field also normally can be omitted since it defaults on input to the highest existing ver- RSX/IAS OPERATING PROCEDURES PAGE 2-3 sion number for the file and on output to the highest existing version number plus one. Default file specifications (any part of which may be overrid- den): Input: SY:RUNOFF.RNO Output: SY:RUNOFF.DOC 2.3.2 RNO SWITCHES A file specification may have one or more switches associated with it. A switch is an indicator, consisting of a slash and a two-character ASCII name, used to select program options. The switch itself may have three forms. If the switch designator, for example, is SW, then: /SW sets the switch action; /-SW negates the switch action, and /NOSW also negates the switch action. In addition the switch identifier may be followed by any number of values. The permitted values are ASCII strings, octal numbers, and decimal numbers. The default for a value is octal. Decimal values may be terminated by a decimal point. Values preceded by a number sign (#) are octal; the octal option is included for explicit documentation purposes. Any numeric value may be preceded with a + or a - sign; if the number sign (#) is used, the + or - must precede it. The following are valid switch specifications. /SW:27:XXX:29. /-SW /NOSW:NOSWITCH:-#50 RSX/IAS OPERATING PROCEDURES PAGE 2-4 Nine switches control the RNO program. These switches, des- cribed below, may be specified on either the input or output file specification. the defaults may be set by the system man- ager at Task Build time. /SP -- Spool the output file /-SP -- Inhibit spooling of output file /UC -- Force ALL uppercase output /UC -- Allow normal case conversion /FF -- Force Form-feeds (instead of multi-LFs) /-FF:n -- Simulate Form-feeds with Line-feeds n is paper length, default set by your system manager. /WA -- Wait for CR input at beginning of each page /-WA -- Continue printing each page with no wait /PA:L:H -- Output only indicated page range* L=lowest page number printed H=highest page number printed The default setting is to print all pages. /PS:m:n - Set Page Size to m,n (See PAGE SIZE command.) Default is /PS:58:60. /HY -- Hyphenate output /-HY -- Do not hyphenate output /UL:B -- Underline with a spacing-backspace /UL:L -- Underline via line overprint with underline character /UL:S -- Simulate underline with hyphen character on next line /UL:N -- Underlining suppressed. /RA -- Pass raw text (default; See Section 5.3) /-RA -- Strip off raw text ---------- *PA:L:H functions as described only for source files that are not chapter oriented. CHAPTER 3 RSTS/E OPERATING PROCEDURES 3.1 INITIATING RUNOFF For RSTS/E users, RUNOFF is run by the general command format: RUN $RNO RNO> filespec If the RNO CCL command has been added to the system, the follow- ing format may also be used: RNO filespec 3.2 RNO COMMAND STRING RUNOFF resquire a command string to specify input files and various options. A command string has one of the following forms: output-file=input-file or @command-file Both output-file and input-file are strings comprising a file specification. The second form of command string (@command-file) is used to specify an indirect command file. In this case each record of the file is used as a command string before any commands follow- ing the indirect command are accepted. The command string syntax is described more completely in the User's Guide for the relevant operating system. RSTS/E OPERATING PROCEDURES PAGE 3-2 3.2.1 FILE SPECIFICATIONS A RSTS/E file specification has the following form: Dev:[PPN]Filename.Typ In this specification Dev must be a legal device code. The default value is SY:, the system disk. PPN must be a valid Pro- grammer- Project Number. Filename is any 1- to 6-character alphanumeric string which specifies a file name. Typ is a 1- to 3-character alphanumeric file type. System programs default to an appropriate standard type so the typical user will not have to explicitly specify it. Default file specifications (any part of which may be overrid- den): Input: SY:RUNOFF.RNO Output: SY:RUNOFF.DOC Under RSTS/E, RUNOFF uses the RSX Run-Time System and may be task-built to output its data as an RMS compatible sequential file which may be printed by the RSTS/E spooling package without further processing. To convert the output to a standard (ASCII-stream) RSTS/E file, the FLX system program may be used as follows: RUN $FLX FLX> OUTPUT.TXT/FA=OUTPUT.DOC where OUTPUT.DOC was output by RNO. Normally, RSTS/E systems will use the "ASCII-stream" version of RNO.TSK. Files output by this version of RUNOFF are compatible with BASIC-PLUS I/O for- mats. NOTE Source file input to RSTS/E RUNOFF may be either in RMS compatible sequential file format or in BASIC-PLUS compatible ASCII-stream format. In the latter case, all input lines must be terminated by or sequences. Other sequences, such as may cause erroneous output. RSTS/E OPERATING PROCEDURES PAGE 3-3 3.2.2 RNO SWITCHES A file specification may have one or more switches associated with it. A switch is an indicator, consisting of a slash and a two-character ASCII name, used to select program options. The switch itself may have three forms. If the switch designator, for example, is SW, then: /SW sets the switch action; /-SW negates the switch action, and /NOSW also negates the switch action. In addition the switch identifier may be followed by any number of values. The permitted values are ASCII strings, octal numbers, and decimal numbers. The default for a value is octal. Decimal values may be terminated by a decimal point. Values preceded by a number sign (#) are octal; the octal option is included for explicit documentation purposes. Any numeric value may be preceded with a + or a - sign; if the number sign (#) is used, the + or - must precede it. The following are valid switch specifications. /SW:27:XXX:29. /-SW /NOSW:NOSWITCH:-#50 RSTS/E OPERATING PROCEDURES PAGE 3-4 Seven switches control the RNO program. These switches, des- cribed below, may be specified on either the input or output file specification. the defaults may be set by the system man- ager at Task Build time. /UC -- Force ALL uppercase output /-UC -- Allow normal case conversion /FF -- Force Form-feeds (instead of multi-LFs) /-FF:n -- Simulate Form-feeds with Line-feeds n is paper length, default set by your system manager. /WA -- Wait for CR input at beginning of each page /-WA -- Continue printing each page with no wait /PA:L:H -- Output only indicated page range* L=lowest page number printed H=highest page number printed The default setting is to print all pages. /PS:m:n - Set Page Size to m,n (See PAGE SIZE command.) Default is /PS:58:60. /HY -- Hyphenate output /-HY -- Do not hyphenate output /UL:B -- Underline with a spacing-backspace /UL:L -- Underline via line overprint with underline character /UL:S -- Simulate underline with hyphen character on next line /UL:N -- Underlining suppressed. ---------- *PA:L:H functions as described only for source files that are not chapter oriented. CHAPTER 4 RT-11 OPERATING PROCEDURES 4.1 INITIATING RUNOFF RUNOFF is initiated with the RUN or R command: .R(UN) RUNOFF * 4.2 RUNOFF COMMAND STRING RUNOFF's command string follows the format of most other RT-11 system programs: outfile{/sw...}=infile{/sw...} Only one input file is allowed. The switch(es) may be applied to either file with no difference in effect. See the RT-11 User's Guide for more information on command string syntax. 4.2.1 FILE SPECIFICATIONS An RT-11 file specification has the following form: dev:filnam.typ{[n]} In this specification, dev is a legal physical or logical device name. The default is DK:, the user's default disk. Filenam is any 1- to 6- character alphanumeric string which specifies a file. The filename may be omitted for non directory-structured devices such as TT:, LP: or PC:. Typ is the file "extension". The default extension for input files is .RNO, and for output files, it is .DOC. Finally, the number [n] may be used only on output files. It is used to reserve space for the output file on disk. It is normally not needed, as the default reservation is for 1/2 the largest free space on the disk, or the entire second largest space, whichever is larger. See the RT-11 manu- RT-11 OPERATING PROCEDURES PAGE 4-2 als for more information on it's useage. 4.2.2 RUNOFF/RT-11 SWITCHES A file specification may have one or more "switches" associated with it. The syntax is: /o:oval or /o:dval. or /o:x{xx} The o is an option letter, oval is an octal value (default), dval is a decimal value which is signaled by a period after the number, and the x{xx} is a 1 to 3 character alphanumeric string which must begin with a letter. See the RT-11 User's Guide con- cerning the command string interpreter for more information. RUNOFF/RT-11 recognizes the following switches: /B:n -- Start printing with page n** /E:n -- Stop printing after page n** /F -- Simulate FF's with 66 lines/page (uses multi-LF's) /F:n -- Simulate FF's with n lines/page (uses multi-LF's) /H:NO -- Disable hyphenation /H:YES -- Enable hyphenation (default) /I -- Display useage information /S -- Strip off raw text (See Section 5.3) /U:B -- Underline with spacing-backspace (LA-36) /U:L -- Use overprint-underscore (default) /U:N -- Supress underlining /U:S -- Simulate with hyphen on next line /V -- Display version of this program /W -- Wait for RET> before each page ---------- **the /B:n and /E:n switches do nothing on source files which are chapter oriented. CHAPTER 5 SOURCE FILE FORMAT The source file contains the textual material which will appear on the final copy, plus information to specify formatting. Most importantly, upper and lower case information also may be sup- plied so that copy can be prepared on the terminal or other such device which can input only upper case letters. All command information consists of regular ASCII printing characters so that a listing of the source file may be examined if the final copy is not exactly as desired. All material in the source file is taken to be source text except those lines beginning with a period. A line beginning with a period is assumed to be a command, and must match one of those listed in chapter 4. The commands provide the formatting information, and control various optional modes of operation. Usually the text is filled and justified as it is processed. That is, the program FILLS a line by adding successive words from the source text until one more word would cause the right margin to be exceeded. The line is then JUSTIFIED by making the word spacings larger until the last word in the line exactly meets the right margin. The user may occasionally wish to reproduce the source text exactly, which is done by disabling filling and justification or by use of the LITERAL command. The program may be set to fill but not justify, in which case the output will be normal except that lines will not be justified to the right margin. The pro- gram may also be set to justify but not fill, although this would probably produce peculiar results and is not recommended. When the fill mode is on, spaces, and carriage returns occurring in the source text are treated only as word separators. Multiple separators are ignored. Some of the commands cause a BREAK in the output. A break means that the current line is output without justification, and the next word goes at the beginning of the next line. This occurs at the end of paragraphs. The program will advance to new pages as necessary, placing the title (if given) and the page number at the top of each page. SOURCE FILE FORMAT PAGE 5-2 The user may call explicitly for a page advance where desired, and may inhibit the occurrence of a page advance within speci- fied material. 5.1 CASE INFORMATION Specification of case for files prepared on the terminal is done with two characters, circumflex (^, 136 octal), and back-slash (\, 134 octal). The appearance of a circumflex causes the letter immediately following to be transmitted in upper case. The appearance of a back-slash causes the letter immediately following to be converted to lower case. Any letter not pre- ceeded by one of these characters is transmitted in the current mode. The mode is initially upper case, and is changed by the occurrance of two successive case control characters. Two cir- cumflexes (^^) cause the mode to be set to upper case, and two back-slashes (\\) cause the mode to be set to lower case. The use of the above corresponds to the use of the shift and shift-lock keys on a typewriter. Usually, typing appears in lower case. To type one letter in upper case, the shift key is used. The shift-lock is set to type a series of upper case letters, after which it is released. The following shows the uses of the case control characters: ^HERE IS A ^SAMPLE ^SENTENCE IN ^^UPPER CASE\\ AND LOWER CASE. becomes: Here is a Sample Sentence in UPPER CASE and lower case. NOTE Case conversion takes place only on ASCII codes 101 to 132 octal, that is, the upper case letters. Any actu- al lower case letters (codes 141 to 172 octal) appearing in the source will be transmitted unchanged. If the source is prepared on a device such as a DECwriter or model 37 Teletype which produce letters of the proper case, the mode should be set to upper case at the beginning of the file and left unchanged for the remainder. An additional character, less-than (<, 074 octal), capitalizes the entire word it precedes. It then returns the file to the current case. This character is not engaged unless preceded by the FLAGS CAPITALIZE command. Similarly, the FLAGS HYPHENATE command engages the special character equals (=, 075 octal), which causes hyphenization to be suspended for the word it pre- SOURCE FILE FORMAT PAGE 5-3 cedes. 5.2 SPECIAL CHARACTERS & Ampersand Underscoring The character ampersand (&, 046 octal) is used to specify underscoring. The ampersand will cause the character fol- lowing it to be underscored, e.g. &f&o&o becomes foo. ___ Underlining of a string of characters can also be specified in a manner similar to that of the shift lock operations described above. An appearance of ampersand preceded by circumflex (^&) will cause underlining of all following characters except space. An appearance of ampersand pre- ceded by backslash (\&) will disable this mode. # Number Sign Explicit space It is occasionally necessary to include spaces in the text which should not be treated as word separators. For this purpose, RUNOFF treats the number-sign character (#, 043 octal) as a quoted space; i.e. it will print as exactly one space in the output, will never be expanded nor changed to a carriage return. _ Underline Quote next character To allow the appearance of the special characters (amper- sand, number-sign, circumflex, or back-slash) in the output, the underscore character (_, 137 octal) is used as a quote character. The character immediately following an underscore will be transmitted to the output with no for- matting effect. The underscore itself is thus another case requiring quoting. The following five cases occur: _&, _^, _\, __, and _#. ^ Circumflex Upper-case shift or mode lock As described above, the circumflex character (^) is used to convert the letter following to upper-case. It is also used to lock the case mode in upper case, and the underline mode to "underline all text". If it is to appear in the printed text, it must be preceded by the quote character (_^). \ Backslash Lower-case shift or mode unlock As described above, the backslash character (\) is used to output the letter following in lower-case. It is also used to lock the case mode in lower-case, and to disable under- lining. If it is to appear in the printed text, it must be preceded by the quote character (_\). SOURCE FILE FORMAT PAGE 5-4 < Less-than Capitalize next word If FLAGS CAPITALIZE has been engaged, the less-than character (<) is a special character used to capitalize the entire word it precedes. If it is to appear in the printed text, it must be preceded by the quote character (_<). = Equals-sign Hypenation disable If FLAGS HYPHENATE has been engaged, the equals character (=) used to disable hyphenation for the word it preceeds. If it is to appear in the printed text, it must be preceded by the quote character (_=). 5.3 RAW TEXT It is possible to pass text strings transparently through RUNOFF, bypassing all RUNOFF processing. In particular, this raw text facility permits (typically non-printing) control sequences to be passed to the output device without affecting the RUNOFF fill and justification computations. Raw text strings are identified to RUNOFF by the format , i.e., by immediately preceding a string of COUNT bytes of raw text with an octal 33 () and the count byte (). For example, the 10-byte string "raw string", would be preceded by the 2-byte header 33,12 (octal). Processing by RUNOFF removes the header , leaving only in the output. Alternatively, RUNOFF can strip off the raw text, e.g., to allow output to devices that do not support the control sequences. These alternatives are con- trolled by the switch /RA (RSX-11M) or the switch /S (RT-11). Under RSX-11M, /RA will cause RUNOFF to pass the RAw text to the output, while /-RA (or /NORA) will cause RUNOFF to strip off the raw text. Under RT-11, raw text will be passed to the output, unless /S is specified to Strip it off. RESTRICTION Processing of raw text is strictly serial. Therefore, it must not appear as part of text that is output by ___ RUNOFF non-serially. Thus, raw text may not appear in the text of commands such as .TITLE, .SUBTITLE, .INDEX, etc. Similarly, raw text may not be included in footnotes. CHAPTER 6 RUNOFF COMMANDS The following commands will be recognized if they are at the beginning of a line started with a period. Any line in the source file beginning with a period is assumed to be one of these commands. If it is not, an error diagnostic will be typed and the line will be ignored. Some commands take one or more decimal numeric arguments. These are separated from the command by a space. More than one command may be entered on a single line by separating the commands with a semicolon (;) or a period (.). Multi-word commands may appear in any form. Thus, .NO HEADER and .NOHEADER are both legal. Many commands may be abbreviated. Standard abbreviations are given below each command. 6.1 TEXT FORMATTING .BREAK .BR causes a break, i.e. the current line will be output with no justification, and the next word of the source text will be placed at the beginning of the next line. .SKIP n .SK n .S n causes a BREAK after which n is multiplied by the number of spaces between lines. The result is the number of lines skipped. Output is advanced to the top of the next page if there is no room on the current page. If the current page is empty, SKIP does nothing. RUNOFF COMMANDS PAGE 6-2 .BLANK n .B n causes the current line to be output with no justification, skips n line spaces, and then starts output of the current source text. BLANK is like SKIP, except that the space to be left is independent of line spacing. If the page is empty, BLANK does nothing. .FIGURE n .FG n leaves n lines blank to make room for a figure or diagram. If fewer than n lines remain on the current page, text con- tinues to fill this page, then the page is advanced and n blank lines are left at the top of the next page. .INDENT n .I n causes a BREAK and sets the next line to begin n spaces to the right of the left margin. The n can be negative to allow beginning a line to the left of the left margin. However, a line cannot begin to the left of column 0. If n is not supplied, the current paragraph indent is used. .PARAGRAPH n, v, t .P n, v, t causes a BREAK and formats the output paragraphs. The n is optional and, if present, sets the number of spaces the paragraph is to be indented. The default value for n is 5 (n can also have a negative value). v is the vertical spacing between paragraphs. v can range from 0 to 5. (1 is single spacing, 2 is double spacing, etc.) t causes an automatic TEST PAGE (see the TEST PAGE command). .CENTER n;text .CENTRE n;text .C n;text causes a BREAK and centers the following text in the source file. The centering is over column (n + left margin)/2. If n is not given, it is assumed to be the right margin. NOTE CENTER, RIGHT MARGIN, LEFT MARGIN, PAGE SIZE, and STANDARD take both relative and absolute values. Relative values are expressed as +n or -n, while absolute values of n are unsigned. RUNOFF COMMANDS PAGE 6-3 .FOOTNOTE n .FN n saves n lines at the bottom of the current page for a foot- note. The n is multiplied by the number of spaces set with the SPACING command. If insufficient room remains on the current page, space is allocated at the bottom of the fol- lowing page. The text of the footnote should begin on the line following the FOOTNOTE command. Indentation, case lock, justify, margins, spacing, and fill are preserved around footnotes. However, commands that affect page for- matting are illegal in a footnote. Tab stops are illegal because they are not preserved. A footnote within a foot- note is also illegal. The actual space taken by a footnote can be more or less than specified by n. If necessary adjust n after examining a draft printout. The footnote is terminated with a line beginning with an exclamation point (the remainder of which is ignored). .NOTE text .NT text starts an indented note. This command BLANKs 2, reduces both margins, centers the text (if no text is given, it centers the word "NOTE"), and then BLANKS 1. At this point you enter the text of the note. If the left margin is at 0, the margin reduction is 15, otherwise it is 5. .END NOTE .EN terminates the NOTE command, BLANKs 2, and reverts the mar- gins and spacing modes to their settings before the last NOTE command. .LIST n .LS n starts an indented list with n spacing, moves the left mar- gin 9 spaces to the right for the first LIST command, and 4 more spaces for each subsequent nested LIST. The normal FILL and JUSTIFY modes remain in effect. Therefore, you must disengage them just after the LS command if you want a ragged right. RUNOFF COMMANDS PAGE 6-4 .LIST ELEMENT;text .LE;text starts an item in the list, used in conjunction with the LIST comand. The elements are numbered sequentially and the number is given a negative indent so that the list lines up. The number is followed by a period and two spaces so that the indent will be by -4. The list elements are separated by the standard paragraph spacing and TEST PAGE. If you want to type the text on the same line as the command, you must separate the text from the command with any number of intervening spaces or tabs, or (optionally) one semicolon. .END LIST .ELS terminates the LIST command and returns to settings before the last LIST command. .COMMENT text .; text causes the line to be ignored. The text is not printed in the output file, but rather is used as a comment line in the source text. 6.2 PAGE FORMATTING .PAGE .PG causes a BREAK and an advance to a new page. If the cur- rent page is empty, this command does not advance the page. Just like an automatic page advance, this command prints the title (if given) and page numbers on every page. .TEST PAGE n .TP n causes a BREAK followed by a conditional page advance. It skips to the next page if fewer than n lines are left on the page. This capability is to ensure that the following n lines are all output on the same page. This command has the form t as an optional argument to the PARAGRAPH com- mand. RUNOFF COMMANDS PAGE 6-5 .NUMBER n .NM n starts page numbering. This is the default so there is no reason to issue this command unless page numbering is disengaged. If resumption of page numbering is desired at a certain page, specify n. .NONUMBER .NNM disengages page numbering. However, pages continue to be counted, so that the normal page number can appear if page numbering is re-entered with the NUMBER command. .CHAPTER text .CH text starts a new chapter using the text as the title of the chapter. This command acts as if the following command string were entered: .BREAK;.PAGE;.BLANK 12;.CENTER;CHAPTER n The n is incremented by 1 automatically. After the CHAPTER n is typed on the page, .BLANK 2;.CENTER;text;.BLANK 3 occurs. This command then resets the case, margins, spac- ing, and justify/fill modes. It also clears any subtitles and sets the chapter name as the title. .NUMBER CHAPTER n supplies a number (n) to be used in a subsequent CHAPTER command. NUMBER CHAPTER would be used when a chapter of a document occupies a source file of its own. In such a case, NUMBER CHAPTER would be the first command of the source file. .HEADER LEVEL n text .HL n text starts a section at the level specified and takes the fol- lowing text as the header. n can range from 1 to 5. The sections are incremented by 1 automatically, and the number is output in the form i.j.k.l.m. If this is a chapter oriented document, the i is the chapter number. Otherwise, it is the number of the .HL 1 level. This command acts as a .BREAK;.TEST PAGE 9;.BLANK 3 followed by the section number, two spaces, and the section RUNOFF COMMANDS PAGE 6-6 name. HEADER LEVELS 1 and 2 end with a BREAK. HEADER LEV- ELS 3,4, and 5 end with a space-dash-space combination (#-#). .TITLE text .T text takes the remaining text as the title and outputs it on every page at line 0. The default is no title. If a title is desired, this command must be entered in the source file. .FIRST TITLE text .FT text Same as TITLE, but used to specify the title to be printed on the first page of the document. This command must pre- cede all text in the source file. Use of the FIRST TITLE command is the only way to print a title line on the first page of the document. .SUBTITLE text .SUBTTL text .ST text takes the remaining text as the subtitle and outputs it on every page. It appears directly under the title. The sub- title is not indented, but indentation can be achieved by typing leading spaces. .INDEX text .X text takes the remaining text on the line as a keyword and adds it, along with the current page number, to the internal index buffer. The command does not cause a break. It should appear immediately before the item to be indexed. A keyword may be indexed more than once. .DO INDEX text .DX text forces a new page, centers the text, if given, otherwise it centers the word "INDEX". This command prints the entire contents of the index buffer. Entries are printed in alphabetic order and are set against the left margin. Regular line spacing is used, except that a blank line is left between entries of different first letters. The page number of each entry is placed on the same line as the entry and in the middle of the page. Additional page numbers for multiple entries follow, separated by commas. The index buffer is left empty. RUNOFF COMMANDS PAGE 6-7 .PRINT INDEX .PX forces a new page after which it prints the entire contents of the index buffer. Entries are printed in alphabetical order and are set against the left margin. Regular line spacing is used, except that a blank line is left between entries of different first letters. The number of the first page on which each entry appeared is put on the same line as the entry, beginning at the middle of the line (midway betweeen the left and right margins). Additional page numbers for multiple entries follow, separated by com- mas. The index buffer is left empty. .PRINT INDEX and .DO INDEX perform the same task. The only difference is that .PRINT INDEX does not interrupt the nor- mal chapter and page sequencing. .SUBPAGE executes a PAGE with page numbering suspended. The page number is unchanged, but letters are appended to the page number. This permits insertion of additional pages within an existing document without changing the existing page numbering. .END SUBPAGE disengages the SUBPAGE command by executing a PAGE command with page numbering resumed. .APPENDIX text .AX text starts a new appendix using the text as the title of the appendix. This command acts as if the following command string were entered: .BREAK;.PAGE;.BLANK 12;.CENTER;APPENDIX a The a is a letter that is incremented alphabetically auto- matically. After the APPENDIX A is typed on the page, .BLANK 2;.CENTER;text;.BLANK 3 occurs. This command then resets the case, margins, spacing, and justify/fill modes. It also clears any subti- tles and sets the appendix name as the title. .NUMBER APPENDIX a supplies a letter (a) to be used as the letter for a subsequent APPENDIX command. RUNOFF COMMANDS PAGE 6-8 .HEADER arg .HD arg causes the page header (title, subtitle, and page number) to be printed. Arg should be UPPER to specify upper case characters for the title text, LOWER to specify lower case, or MIXED. The initial setting is HEADER UPPER. .NOHEADER .NHD causes the page header (title, subtitle, and page number) to be omitted. The header lines are completely omitted, so that text begins at the top of the page with no top margin. 6.3 MODE SETTING .JUSTIFY .J Causes a break and sets subsequent output lines to be jus- tified (initial setting). The command increases the spaces between words until the last word exactly meets the right margin. .NOJUSTIFY .NJ Causes a break and prevents justification of subsequent output lines to make a ragged right margin. .FILL .F Causes a break and specifies that subsequent output lines be filled (inital setting). Sets the justification mode to be that specified by the last appearance of JUSTIFY or NOJUSTIFY. FILL adds successive words from the source text until the adding of one more word will exceed the right margin. It stops before putting the last word in. (If hyphenation has not been disabled, RNO will attempt to break words which cause line overflow into syllables.) .NOFILL .NF disengages the FILL and JUSTIFY modes. This command is used to permit typing a table. RUNOFF COMMANDS PAGE 6-9 NOTE 1. The nofill-nojustify mode need be used only where there are several lines of material to be copied exactly. A single line example will not require using these commands if there are breaks before and after. 2. Normally FILL and NOFILL are used to turn both filling and justification on and off. It is usu- ally desirable to do both. A subsequent appearance of a justification command will over- ride the fill command however. 3. Because of the action of FILL, a single occurrance of NOJUSTIFY will cause the remainder of the file to be unjustified, with filling as specified. In order to justify but not fill (not recommended), a JUSTIFY command must follow every NOFILL command. .UPPER CASE .UC sets the output mode to upper case. This comand acts the same as typing two circumflexes (^^). This is the default mode. There is no need to type this command unless the mode was previously altered to lower case. .LOWER CASE .LC sets the typeout mode to lower case. This command acts the same as typing two backslashes (\\). .FLAGS CAPITALIZE .FL CAPITALIZE enables the less-than (<) character to capitalize the entire word it precedes. It then returns the file to the current case mode. This special character is usually off and must be typed at the very beginning of the source text to enable this character. Typing a space or another less-than (<) returns the file to the current case lock. .NO FLAGS CAPITALIZE .NFC disengages the FLAG CAPITALIZE command (inital setting). RUNOFF COMMANDS PAGE 6-10 .HYPHENATION .HY engages hyphenization (initial setting). .NO HYPHENATION .NHY disengages hyphenization. .FLAGS HYPHENATE .FL HYPHENATE enables the equals character (=) to disengage hyphenization for the word it precedes. This special character is ini- tially off and must be typed at the beginning of the source file to enable this character. The FLAGS HYPHENATE character is used to disengage hyphenization for words improperly hyphenated by the hyphenization algorithm. .NO FLAGS HYPHENATE .NFH Disengages the FLAGS HYPHENATE command (initial setting). .NFL Disengages the FLAGS CAPITALIZE and the FLAGS HYPHENATE commands (initial setting). .PERIOD .PR enables printing of two spaces after every period (.) that is followed by at least one separator character (initial setting). .NOPERIOD .NPR disengages conversion of period/separator to period/two spaces. .LITERAL .LIT disengages FILL/JUSTIFY to permit printing of text exactly as entered in source file. .END LITERAL .ELI used after LITERAL command to re-engage FILL/JUSTIFY. RUNOFF COMMANDS PAGE 6-11 6.4 PARAMETER SETTING .LEFT MARGIN n .LM n sets the left margin to n. The n must be less than the right margin but not less than 0. The initial setting is 0. If n is not supplied, 0 is used. .RIGHT MARGIN n .RM n sets the right margin n. The n must be greater than the left margin. The initial setting is 60. If n is not sup- plied, the current page width (set with the PAGE SIZE command) is used. .PAPER SIZE n,m .PAGE SIZE n,m .PS n,m sets the size of the page n lines by m columns and sets the right margin to m. The default setting is 58,60. SPACING n .SP n sets the number of spaces between lines. The n can range from 1 to 5. The default setting is 1. SPACING 1 is like single spacing on a typewriter and SPACING 2 is like double spacing. SPACING 2 puts one blank line between lines of text. .STANDARD n .SD n returns all parameters to their initial settings and sets n as the page width. If STANDARD 60 is specified, margins are reset LM 0, RM 60, PAGE SIZE 58,60, SPACING 1, para- graph indent 5, and FILL and JUSTIFY are enabled. STANDARD 70 sets right margin to 70 and page size to 58,70. .TAB STOPS n,n,... .TS n,n,... sets tabs. The n must be greater than 0 and listed in ascending order. If tabs already exist, the issuing of another TAB STOPS command clears all previous tabs before setting new ones. The default tabs are set at eight-column intervals to match the Digital hardware standard. These tabs are at columns 8, 16, 24, 32, 40, 48, 56, 64, 72, and 80. The tabs are converted to the appropriate number of non-expandable spaces. If there are no regular spaces to the left of the tabs, they will print out at the appropri- RUNOFF COMMANDS PAGE 6-12 ate position, even if FILL is on. If LITERAL is on, the tabs are not converted to spaces, but are output as tabs. .AUTOPARAGRAPH .AP causes any blank line or any line starting with a space or tab to be considered as the start of a new paragraph. This command allows normally typed text to be justified without special commands. It does not cause a paragraph if blank lines are followed by a command. .NOAUTOPARAGRAPH .NAP disengages the AUTOPARAGRAPH mode. APPENDIX A RNO ERROR MESSAGES RUNOFF produces error messages in the following format: RNO -- error message This appendix tabulates the error messages produced by RNO. Most of the error messages are self-explanatory. In some cases, RNO prints the line in which the error has occurred, so that the user can examine the source line which caused the problem and correct it. The RT-11 version has some system-specific messages which are listed at the end of this appendix. 1. RNO -- INTERNAL BUFFER OVERFLOW This message is an internal program error and should never occur in normal use. 2. RNO -- ILLEGAL COMMAND text ON OUTPUT PAGE nn where nn is the page on which the command text occurred. 3. RNO -- CAN'T JUSTIFY LINE: text where text is a line containing no spaces (other than quoted spaces), so that RNO is unable to justify it. 4. RNO -- FATAL ERROR, ABORTING This an message is internal program error and should never occur under normal use. 5. RNO -- ERROR ON OUTPUT FILE A write error has occurred on the output file. One of the following conditions exists: 1. The device is full or is write protected. 2. The hardware has failed. RNO ERROR MESSAGES PAGE A-2 3. The user does not have write access privileges to the file. 6. RNO -- ERROR ON INPUT FILE A read error has occurred on an input file. One of the following conditions may exist: 1. A problem exists with a physical device (e.g. device cycled down). 2. The file is corrupted or the format is wrong. 3. The file is a nonsource file. (Object file, etc.) 4. The record length exceeds 510. bytes. (does not apply to RT-11) 7. RNO -- NOT ENOUGH MEMORY The input file contained either too many INDEX entries and RNO ran out of index buffer space or a FOOTNOTE command has caused overflow of the buffer reserved for footnotes. RNO stops processing the input file. The user should delete some index entries and/or reduce the amount of footnote text for the last page processed. 8. RNO -- CAN'T INDENT LIST ELEMENT The user has nested lists that cause RNO to attempt indenting beyond the right margin. 9. RNO -- CAN'T REDUCE MARGINS A NOTE command occurred after the margins were set to values that prevent the NOTE command from reducing mar- gins by 15. 10. RNO -- COMMAND SYNTAX ERROR The user has entered a command in a format that does not conform to syntax rules. 11. RNO -- OUTPUT FILE SPECIFICATION ERROR An error exists in the output file specification. Correct the specification and re-enter the command. 12. RNO -- OUTPUT FILE OPEN FAILURE The file system, while attempting to open the output file, has detected an error. One of the following con- ditions may exist: RNO ERROR MESSAGES PAGE A-3 1. The user's directory file is protected against an open. 2. A problem exists with the physical device. 3. The volume is not mounted. 4. The specified file directory does not exist. 5. The device is full of write protected. 13. RNO -- INPUT FILE SPECIFICATION ERROR An error exists in the input file specification. Correct the specification and re-enter the command. 14. RNO -- INPUT FILE OPEN ERROR The file system, while attempting to open an input file, has detected an error. One of the following con- ditions may exist. 1. The user directory file is protected against an open. 2. A problem exists with the physical device. 3. The volume is not mounted. 4. The specified file directory does not exist. 5. The file does not exist as specified. 15. RNO -- RAW TEXT RING BUFFER FULL Raw text is passed from input to output via a 1024. byte ring buffer. This buffer fills if there are many/long control sequences in a given I/O buffer of text. The ring buffer size (module RNRT11.MAC or RNFIO.MAC) can be increased if necessary. 16. ?CSI-F-error message (RT-11 only) The RT-11 command string interpreter was unable com- plete successfully. see the RT-11 System Messages Manual for the meanings of these messages. 17. Bad switch /x (RT-11 only) The indicated switch is not recognized by RUNOFF/RT-11. 18. Bad value with /x switch. (RT-11 only) RNO ERROR MESSAGES PAGE A-4 The value given with the indicated switch was invalid. APPENDIX B BUILDING RUNOFF RSX-11M and RSX-11M-PLUS All command files follow the standard RSX-11M conventions. Procedure: 1. Transfer all files to an empty UIC. It is important that no other files be present in this UIC! You should be a privileged user. 2. Type @RNOBLD and respond to the questions asked. 3. Set the UIC to the system UIC (usually [1,54]). 4. Copy RNO.TSK to the system UIC. 5. If desired, install RNO. It is built to run in GEN partition. RSX-11M UNMAPPED SYSTEMS Users of unmapped systems should follow the procedure outlined for mapped systems, but selecting UICs as appropriate. File RNOBLD.CMD will have to be edited to delete the /MM switch and to change the PAR directive to match system requirements. RSX-11D/IAS Users of RSX-11D/IAS should follow the procedure outlined for users of RSX-11M Mapped systems. Since the conventions for source and object files are installation dependent, all .CMD and .ODL files should be edited accordingly. Additionally, RSX-11D/IAS users should alter RNOBLD.CMD to change the /MM switch to /MU and to change the PAR directive as needed. Alternatively, IAS users may use command file RNOIAS.CMD to assemble and build RUNOFF. The command file contains parameters to set the default switches, default paper size (for /-FF) and default underline mode. BUILDING RUNOFF PAGE B-2 RSTS/E To build RUNOFF under RSTS/E V06C-03 systems, run the $BUILD program and specify the RNOBLD.CTL control file on the distribu- tion medium. RNOBLD.CTL assumes that all files have been copied to account [100,100] (use PIP.SAV). If users desire to build directly from the distribution or from another account, it will be necessary to edit RNOBLD.CLT to change references to [100,100] to the [p,pn] used in the distribution. Both the RT11 and RSX Run-Time Systems are assumed present in the system, as the PIP.SAV, MAC.TSK, LBR.TSK, and TKB.TSK programs are required in the build procedure. The Task Builder run will normally pro- duce the message: ?TKB -- *DIAG*-MODULE ERR MULTIPLY DEFINES SYMBOL EOF This is not an error. At the (successful) completion of the procedure, RNO will be ready to run. The last step of RNOBLD.CTL copies the files necessary to use RNO (i.e., RNO.TSK and RUNOFF.RNO) to account [1,2]. This step should be deleted or changed if users do not desire to store RNO in [1,2]. To use the Concise-command language feature of RSTS/E, the fol- lowing CCL command should be installed: CCL RNO=[P,PN]RNO.TSK RNO.TSK is not a privileged program. It should, however, be installed with an <104> protection code if it is desirable for all users on the system to access it. RT-11 First copy all of the files from the distribution medium to a disk with at least 500 blocks free. Delete the files RUNOFF.RNO and RUNOFF.DOC from the disk. Assign that disk as DK:Then type: @RNOASM After the assembly is complete, link RUNOFF by typing: @RNOLNK There should be no error messages. RUNOFF takes approximately 8KW of memory. If it is desired to make RUNOFF smaller, the definition of the symbol H$$PHN in the file RNPRE.MAC may be edited out, which will eliminate the hyphenation feature. then the file RNOLNK.COM should be edited to remove the line which links HYPHEN.OBJ into RUNOFF. Reassemble RUNOFF.MAC and relink. A good test is to process the RUNOFF.RNO documentation file. BUILDING RUNOFF PAGE B-3 DISTRIBUTION FILES RNOASM .CMD RNOBLD .CMD RNOBLDFCS.CMD RNOIAS .CMD RSTASM .CMD RSTBLD .CMD RNOASM .COM RNOLNK .COM RNOBLD .CTL CMTAB .MAC COMND .MAC ERMSG .MAC FMTCM .MAC HYPHEN .MAC INDEX .MAC PINDX .MAC RNCMD .MAC RNFIO .MAC RNORSX .MAC RNPRE .MAC RNRT11 .MAC RSTS .MAC RT11 .MAC RUNOFF .MAC SMAC .MAC START .MAC UARITH .MAC SMAC .MLS RNO .ODL RNOBLD .ODL RNOBLDFCS.ODL RNOIAS .ODL RUNOFF .DOC RUNOFF .RNO APPENDIX C SPECIAL CHARACTERS Below is a list of RUNOFF's special characters. To appear in the text, each must be preceded by the underscore character (it- self a special character). ^ shift character for upper case \ shift character for lower case < flag character for upper case * # quoted space character = flag character for disabling hyphenation ** & underscore _ quote special character ---------- *Only becomes a special character if FLAGS CAPITALIZE is engaged. **Only becomes a special character if FLAGS HYPHENATE is engaged. APPENDIX D List of Commands (Alphabetical) Command or Abbreviation Related Commands _______ __ ____________ _______ ________ AP (=autoparagraph) APPENDIX text (AX) NUMBER APPENDIX a AX (=appendix) AUTOPARAGRAPH (AP) NOAUTOPARAGRAPH (NAP) B (=blank) BLANK n (B) SKIP n (S) BR (=break) BREAK (BR) C (=centre) CENTER (=centre) CENTRE n;text (C) CH (=chapter) CHAPTER text (CH) NUMBER CHAPTER n COMMENT text DO INDEX text (DX) PRINT INDEX (PX) DX (=do index) ELS (=end list) EN (=end note) END LIST (ELS) LIST n (LS) END LITERAL (ELI) LITERAL (LIT) END NOTE (EN) NOTE text (NT) END SUBPAGE SUBPAGE F (=fill) FG (=figure) FIGURE n (FG) FILL (F) NOFILL (NF) FIRST TITLE text (FT) TITLE text FLAGS CAPITALIZE (FL CAPITALIZE) NO FLAGS CAPITALIZE (NFL) FLAGS HYPHENATE (FL HYPHENATE ) NO FLAGS HYPHENATE (NFH) List of Commands (Alphabetical) PAGE D-2 FN (=footnote) FOOTNOTE n (FN) FT (=first title) HD (=header) HEADER arg (HD) NOHEADER (NHD) [arg=UPPER, LOWER, or MIXED] HEADER LEVEL n text (HL) HL (=header level) HY (=hyphenation) HYPHENATION (HY) NO HYPHENATION (NHY) I (=indent) INDENT n (I) INDEX text (X) J (=justify) JUSTIFY (J) NOJUSTIFY (NJ) LC (=lower case) LE (=list element) LEFT MARGIN n (LM) RIGHT MARGIN n (RM) LIST n (LS) END LIST (ELS) LIST ELEMENT;text (LE) END LIST (ELS) LIT (=literal) LITERAL (LIT) END LITERAL (ELI) LM (=left margin) LOWER CASE (LC) UPPER CASE (UC) LS (=list) NAP (=noautoparagraph) NF (=nofill) NFC (=no flags capitalize) NFH (=no flags hyphenate) NFL (=no flags capitalize AND no flags hyphenate) NHD (=no header) NHY (=no hyphenation) NJ (=no justify) NM (=number) NNM (=no number) NOAUTOPARAGRAPH (NAP) AUTOPARAGRAPH (AP) PARAGRAPH n,v,t (P) NOFILL (NF) FILL (F) NO FLAGS CAPITALIZE (NFL) FLAGS CAPITALIZE (FL CAPITALIZE) NO FLAGS HYPHENATE (NFH) FLAGS HYPHENATE (FL HYPHENATE) NOHEADER (NHD) HEADER arg (HD) NO HYPHENATION (NHY) HYPHENATION (HY) NOJUSTIFY (NJ) JUSTIFY (J) List of Commands (Alphabetical) PAGE D-3 NONUMBER (NNM) NUMBER n (NM) NOPERIOD (NPR) PERIOD (PR) NOTE text (NT) END NOTE (EN) NPR (=no period) NT (=note) NUMBER APPENDIX a APPENDIX text NUMBER CHAPTER n CHAPTER text P (=paragraph) PAGE (PG) PAGE SIZE (=paper size) PAPER SIZE v,h (PS, PAGE SIZE) PARAGRAPH h,v,t (P) PERIOD (PR) NOPERIOD (NPR) PG (=page) PRINT INDEX (PX) DO INDEX text (DX) PS (=paper size) PX (=print index) RIGHT MARGIN n (RM) RM (=right margin) S (=skip) SD (=standard) SKIP n (S) BLANK n (B) SP (=spacing) SPACING n (SP) ST (=subtitle) SUBPAGE END SUBPAGE SUBTITLE text (ST) T (=title) TAB STOPS n,n, ... ,n (TS) TEST PAGE n (TP) TITLE text (T) TP (=test page) TS (=tab stops) UC (=upper case) UPPER CASE (UC) LOWER CASE (LC) X (=index) APPENDIX I INDEX (RUNOFF commands appear in upper case.) APPENDIX . . . . . . . . 6-7 AUTOPARAGRAPH . . . . . 6-12 BLANK n . . . . . . . . 6-2 BREAK . . . . . . . . . 5-1, 6-1 Case . . . . . . . . . . 2-4, 3-4 Case Information . . . . 5-2 CENTER n . . . . . . . . 6-2 CENTRE n . . . . . . . . 6-2 CHAPTER . . . . . . . . 6-5 Command format . . . . . 6-1 Command string . . . . . 2-2, 3-1, 4-1 Commands, formatting . . 6-1 Commands, mode setting . 6-8 Commands, page formatting 6-4 COMMENT . . . . . . . . 6-4 DO INDEX . . . . . . . . 6-6 END LIST . . . . . . . . 6-4 END LITERAL . . . . . . 6-10 END NOTE . . . . . . . . 6-3 END SUBPAGE . . . . . . 6-7 Error messages . . . . . A-1 FIGURE n . . . . . . . . 6-2 File Specifications . . 2-2, 3-2, 4-1 FILL . . . . . . . . . . 6-8 Filling of text . . . . 5-1 FIRST TITLE . . . . . . 6-6 FLAGS CAPITALIZE . . . . 6-9 FLAGS HYPHENATE . . . . 6-10 FOOTNOTE n . . . . . . . 6-3 Form-feeds . . . . . . . 2-4, 3-4 Formatting . . . . . . . 6-1 INDEX PAGE I-2 HEADER . . . . . . . . . 6-8 HEADER LEVEL n . . . . . 6-5 HYPHENATION . . . . . . 6-10 Hyphenation . . . . . . 2-4, 3-4, 5-2 INDENT n . . . . . . . . 6-2 INDEX . . . . . . . . . 6-6 Justification of text . 5-1 JUSTIFY . . . . . . . . 6-8 LEFT MARGIN n . . . . . 6-11 LIST ELEMENT . . . . . . 6-4 LIST n . . . . . . . . . 6-3 LITERAL . . . . . . . . 6-10 Literals . . . . . . . . 5-1 LOWER CASE . . . . . . . 6-9 Mode Setting . . . . . . 6-8 NO FLAGS CAPITALIZE . . 6-9 NO FLAGS HYPHENATE . . . 6-10 NO HYPHENATION . . . . . 6-10 NOAUTOPARAGRAPH . . . . 6-12 NOFILL . . . . . . . . . 6-8 NOHEADER . . . . . . . . 6-8 NOJUSTIFY . . . . . . . 6-8 NONUMBER . . . . . . . . 6-5 NOPERIOD . . . . . . . . 6-10 NOTE . . . . . . . . . . 6-3 NUMBER APPENDIX a . . . 6-7 NUMBER CHAPTER n . . . . 6-5 NUMBER n . . . . . . . . 6-5 Operation . . . . . . . 2-1, 3-1, 4-1 PAGE . . . . . . . . . . 6-4 Page formatting . . . . 6-4 Page Numbering . . . . . 5-1 PAGE SIZE n,m . . . . . 6-11 PAPER SIZE n,m . . . . . 6-11 PARAGRAPH n,v,t . . . . 6-2 Parameter setting . . . 6-11 PERIOD . . . . . . . . . 6-10 PRINT INDEX . . . . . . 6-7 Quote character . . . . 5-3 Quoted Space . . . . . . 5-3 Raw text . . . . . . . . 2-4, 5-4, A-3 Relative arguments . . . 6-2 RIGHT MARGIN n . . . . . 6-11 RSTS/E output formats . 3-2 rsx output file format . 2-1 Runoff Commands . . . . 6-1 INDEX PAGE I-3 SKIP n . . . . . . . . . 6-1 Source File Format . . . 5-1 Space . . . . . . . . . 5-1, 5-3 SPACING n . . . . . . . 6-11 Special characters . . . 5-3, C-1 Spooling . . . . . . . . 2-4 STANDARD n . . . . . . . 6-11 SUBPAGE . . . . . . . . 6-7 SUBTITLE . . . . . . . . 6-6 Switches . . . . . . . . 2-3, 3-3 TAB STOPS n,n . . . . . 6-11 TEST PAGE n . . . . . . 6-4 TITLE . . . . . . . . . 6-6 Title . . . . . . . . . 5-1 Underlining . . . . . . 2-4, 3-4 Underscoring . . . . . . 5-3 UPPER CASE . . . . . . . 6-9 Word spacing . . . . . . 5-1 dbGLB N,33 5W wW wW w W wW  w 7 l tR5TN5"0J nBE  | wȋ7 j0 d7 ^*f1ŀ w t b  $ 7F @@ŀ2 |& mm V   w5x/ W W W  n%: %; %!%?W .   l  w~| r  %. %; W \* JW  5wV t7 w0W 5650 -% % % ' % % %   % % %.#w  # % W .w B 5 w`w p ε@  ε   ֵ ^ * E. / J  /  Ee@ / - /F: 1f  e0w/ :Fw.B  A Z a zJHr7 7 7 ~||vp l w;c9 & RW 5%.2%;/W ,.W W %+ W -N  W 9 W 0   e0C`W ,   ew % % %;w 7  257 &7  < l RElBh>V * . . 7 !m64mr   /7P P mwB7 m H  W W  fE L֋ Z- : R H     ,w  z|w 0 5xx7 tl  w. j)"_ - F, , +7 :”4 < + &  \`7 7 ,  ,v   :7"4  W  _ n+W  wX+  :7FA7;U &%z%a;%A %Z 2m/ %# % % % 7 %< W _,W ^,W \@W & L%=W # B % % w , Հ j dW &)W ^ p |%aԂ%zч  6W &W \ 6 N%A%Ze 7   7p5dw0*7  Ew:( w 7  L`   4 F R*7 $ B 87 5n-jvdp f:f7 7 7"杕 L 7""U @w -7 ""C򷕼pjNHE`\ q D] N5 -, Bnmh  Ý r %' b bb 4( e@ ' N- ' > xe ' . 7:w|%d %   $*f  e0wz'5% j' .P ' 7 ~ %  ex %l Ew%wp%$ %;w,<tpV  @ $ 1 DW 1 5 "R5-ʵ wZT7j7ah h @W zW `E  W 5wL w wwww&77777 3 3 7r7o7 p7 n7 nffdd^7 ^7 \77:<B:7 :7 8.    PH7 d(bPAGE $ ZZ7 7 pxe  7&7 (7 V#7 x17 APPENDIX CHAPTER LOWERpage MIXEDPage NOTEUPPERPAGE <<7 .,&B"f()/ /// @/N@//_?OU3u&'=  //`O@//?@/0e:ou36t(OUH/,oL+/???L?>???o,O=U5/63'V /)P./0>._|-ݶm?o//3"? /?@~(wf"J?H2*s0 P0 o UͯfV/ @p o~%hlr"gjC@ `@P0@ `0 @P@`0r&bY*FH0"p @` `P P @@``&@`6%XfXC@  ``P P"`q"cr Q"0`S!Q"0P`Sp!)Vha0f6uP p`@`aR pc"b'cP `0a@ `@``HU)rPUWDD*` p`0  ˙`.`p`5"0 f`av!!!"K$\$$R%_%u%%,&&&''(rrrlhhetalsisipiytotaniniciathinmlilhfdiaaiorororararuararoarariararararoooooonentanananololieliiaiaitetrererevleDalce%edeade$edduceeteaeaarzanzalzrdzelvnivievoninuuuquatuttatatortentatouslosisisasr$urigr#rtororherrrrcopyntonhononen$nn%ainlininomomimllllillcklllllalfalalbllalalalikgagiagergmgkgdgifnifereeidididuenclunc&esncerncinc%ancerncarncancalncincusicticieclacrooeli$ieoontintrinrinpinninminlinlinlin%sinrinlinnlinkinlinlinlinlinlinyhineethnehingindinbinnoutortittiseispisrisnislisuislisbisgisdissraporugurgicaairhifedorooalracacuselelheltalalvukthtchadua#uaur%gaonaiaia%ririiiiaaeaciaiaaaauoi#i#eivsisiisals$es$asoooaowowurpoooooo alaioaiolioio%sioionoioiooooiiiiiiteiaightomeoekeeee#aomaiaia$eaiaia#ehieearro#o$iizov%useost%ise%ese%asetearert%meaeropaewn$seonrmlldleleknheaheeihethshhechdgrdoundldiducncBa&aca&eca&ica&ega$uuiouiouiou$iueoueoueubesesb%pibCeCeDshDchionsinsalslishtsisgesgsdesdsasearooironrinenieninrighrighligheighhifraf$dgoaoaoainha$esst%quii%osiinni(failailaililiurouar$urenaionrirnlglalfalalbllk&gahleeckeodeedaaJ)  |)d7  W U 5 H)wJR7 J)@ pW aE  aE @  @ * D f7>24  \  0     7 $&  J)e4 & fe 7! ߷|4 hbt INDEX .ڼBB7 42,BU7 2 8 (  . -~~ * m`^ڂ   և& VAW aE N N  :wd H~|    Z*B  HAe@  @ - @ @p- p-p-, \   |v7 Շ7 Շ7 7 Շ7 7 Շ7 ՇՇՇ7 Շ  wև 5B  wՇ շnՇ7 hՇ-\Ո\Շ^ \ V+wZL  @<ՇN.@:U  ~| ԇ    ‚ w @պ *  z-B ߇ w m wj w  ԇ.7B u V% D lw T -D  Bm4w w .߇  tw `ww U(ӇUEU5EE7  w w | %  tW  jW  ~mJmׂ m@ x wJ w4 : w` 7p%  XW  L W  >W %!w҇7 ҇7 ҇r[dG333Bh8Er8F|8H8I8S8U8V8W93 77 U@$z3& 7pn @Ujf Tr7 }e  B RV MQET BD ;#YE. %/5hCw:H- $# w3#Ww& #vw#K  /CwU 7 Bw p`7 J7 D7 J@Bx1:d^FT@P:N z w pwW T- - wP F   J EW W jfe&@  &@5  U$E$ `w0 R ""w " -73 * -73 7;LJ8Gw+ -73 -73 ^ 7Ƈ zw4&38p/0 ߋ* F o/ Cwb&3 x10 Bw4x1 -? &  m ef A v  l>o>6,x>6,{><,><,><,>.>.>.>>> >->->->>>>? ????t,(?t,*?,1?,4?,>?,I?,L?,V?,a?,d?-j?-m?-v?-?-?,?,??,?,?-?-?-?-?-?,?,?,?,?,?,@.- @.-@-@-@-$@-&@-)@-.@-0@\.6@\.8@b.@@b.C@b.M@~.X@~.[@~.d@h.n@h.p@x.u@x.x@x.@-@-@-@.@.@~)@~)@P/@P/@V/@V/@V/@*@*@*@p+@p+@p+@.@.A AA)A7A,FA,IA,PA,TA,]A:.gA:.kAP.sAP.wAP.AAAAAA,A,APAPAPAAAAAAB,AL,AL,AL, B\,B\,!B\,2BR,EBR,SBR,cBb,tBb,Bb,Bh,Bh,Bn,Bn,Bn,BAXAPPENDIXAPAUTOPARAGRAPHNAPNOAUTOPARAGRAPHNO AUTOPARAGRAPHCCENTERCENTRECHCHAPTERCOMMENTFTFIRSTTITLEFIRST TITLEHLHEADERLEVELHEADER LEVELHDHEADERNHDNOHEADERNO HEADERIINDENTUCUPPERCASEUPPER CASELCLOWERCASELOWER CASEBRBREAKPSPAGESIZEPAGE SIZEPAPERSIZEPAPER SIZEPGPAGESUBPAGEENDSUBPAGEEND SUBPAGETTITLESTSUBTTLSUBTITLERMRIGHTMARGINRIGHT MARGINLMLEFTMARGINLEFT MARGINPPARAGRAPHSPSPACINGSSKSKIPBBLANKJJUSTIFYNJNOJUSTIFYNO JUSTIFYTSTABSTOPSTAB STOPSFFILLNFNOFILLNO FILLTPTESTPAGETEST PAGEFGFIGUREXINDEXPRPERIODNPRNOPERIODNO PERIODDXDOINDEXDO INDEXPXPRINTINDEXPRINT INDEXFNFOOTNOTENUMBERAPPENDIXNUMBER APPENDIXNUMBERCHAPTERNUMBER CHAPTERNMNUMBERNNMNONUMBERNO NUMBERLITLITERALELIENDLITERALEND LITERALNTNOTEENENDNOTEEND NOTESDSTANDARDLELISTELEMENTLIST ELEMENTLSLISTELSENDLISTEND LISTNFLNFCNOFLAGSCAPITALIZENO FLAGS CAPITALIZENFHNOFLAGSHYPHENATENO FLAGS HYPHENATEFL CAPITALIZEFLAGSCAPITALIZEFLAGS CAPITALIZEFL HYPHENATEFLAGSHYPHENATEFLAGS HYPHENATEHYHYPHENATIONNHYNOHYPHENATIONNO HYPHENATIONBad value with /? switch.Bad switch /?RNO -- ERROR ON OUTPUT FILERNO -- ERROR ON INPUT FILERUNOFF/RT-11 Version M02.4 December 1981 /I for Infooutfile.{DOC} = infile.{RNO} Switches: /B:n Start printing with page n /E:n Stop printing on page n /F Simulate FF's with 66 lines/page /F:n Simulate FF's with n lines/page /H:NO Disable hyphenation /H:YES Enable hyphenation (default) /I Display useage information /S Strip off raw text /U:B Underline with space-backspace /U:L Use overprint-underscore (default) /U:N Supress underlining /U:S Simulate with hyphen on next line /V Display version of this program /W Wait for between pagesRNO -- INTERNAL BUFFER OVERFLOWRNO -- ILLEGAL COMMANDON OUTPUT PAGE RNO -- CAN'T JUSTIFY LINE: RNO -- FATAL ERROR, ABORTINGRNO -- ERROR ON OUTPUT FILERNO -- ERROR ON INPUT FILERNO -- NOT ENOUGH MEMORYRNO -- CAN'T INDENT LIST ELEMENTRNO -- CAN'T REDUCE MARGINSRNO -- COMMAND SYNTAX ERRORRNO -- OUTPUT FILE SPECIFICATION ERRORRNO -- OUTPUT FILE OPEN FAILURERNO -- INPUT FILE SPECIFICATION ERRORRNO -- INPUT FILE OPEN FAILURERNO -- RAW TEXT RING BUFFER FULL  R T C A L C *********** Version 2.95 ------------ 1.0 GETTING STARTED Welcome to RTCALC. Here is a description to help you get started using RTCALC. RTCALC is a video accounting sheet, that helps you to, for example, balance a budget, fill out expense reports, or generate sales reports. RTCALC allows you to view, store, and dynamically update your data, using a table consisting of up to 600 entry slots. You can assign labels such as "Total Cost", values like the number 50, or formulas such as C2=A2*B2 to any slot. If you make a change to entries in any slot, RTCALC automatically recalculates and updates all related entries. The RTCALC table is similar to a grid, and is made up of vertical columns and horizontal rows. The columns are labeled with the letters A-Z, and the rows are labeled with the numbers 1-100. Each intersection of a column and row is called a slot, into which you can enter information. You can store the information in a file for later retrieval. 2.0 GENERAL PROCEDURES To run RTCALC, type R (RTCALC on SY:) or RUN RTCALC (RTCALC on DK:). RTCALC asks you if you are creating a new file. Type "Y" the first time you use RTCALC, and each time you create a new file. The filename is specified when you exit the program. Next, you will be asked to enter the slot name that you want as the bottom right point on the grid (e.g. I40 or Z100). If you aren't creating a new file, type "N" and the input filename. To select a slot on the table into which you want to enter information, type the slot's coordinates (such as N15 or Z30) followed by a or PAGE 2 use the directional arrow keys to move the pointer (large block) to that slot's position on the screen. As you move the pointer around the screen, the name of the current slot is displayed next to the arrow prompt at the top of the screen. When the pointer is at the correct slot, type an equals sign <=>, the slot's contents, and . Examples of the types of information you can place in a slot are: 1. A LABEL. The label must always be in quotes. An example is: A1="CHECK NO." 2. An ARITHMETIC VALUE. Some examples are: A2=50 or B3=10.5 or C5=-200 or D4=1.3E2 3. An ARITHMETIC FORMULA. Some examples are: C2=A2+B2 or F6=D6*E5 To delete a slot's contents, move the cursor to that slot. Then type = and press after the slot name at the arrow prompt. 3.0 SYSTEM COMMANDS You can use system commands to format the RTCALC table, and to exit from RTCALC. Each system command begins with a slash (/) character. The commands are listed below: 1. /C CLEAR TABLE To clear the RTCALC table, type /C. Then type Y if you're sure. 2. /E EXIT To exit from RTCALC and close the current output file, type /E at the prompt line. RTCALC asks you to specify the name of the output file. If you don't specify a file extension, RTCALC assigns the default extension .RTC. 3. /F$ = SPECIFY DOLLAR VALUE /FX = NUMBER OF DECIMAL PLACES 4. /JR = RIGHT JUSTIFY COLUMN (DEFAULT) /JL = LEFT JUSTIFY COLUMN Specify either R (Right) or L (Left) to have the last character in each column aligned on the right or left margin. 5. /Q QUIT PAGE 3 To discard the open output file, type /Q. Then type Y if you're sure. 6. /R REPAINT To repaint the screen, type /R. 7. /T+ TURN EVALUATION ON (DEFAULT) /T- TURN EVALUATION OFF To have all values continually evaluated on the screen, type /T+. To have values evaluated only for the current slot, type /T-. This procedure allows for faster typing, as the screen is not updated. 8. /WX X = COLUMN WIDTH (DEFAULT IS 8 CHARACTERS) 4.0 ASSIGNMENT MODE In Assignment Mode you can assign a label, value, or formula to a slot or range of slots. The assignment statement must contain an equals (=) sign. The slot name goes on the left of the = sign, and the label, value, or formula goes on the right of the = sign. In addition to the examples given in GETTING STARTED, you can perform the following functions using Assignment Mode: 4.1 ASSIGNMENT TO MORE THAN ONE SLOT You can assign a label, value, or formula to more than one slot at a time. For example: N15,M20,Z10,P4=A2*5 (where the commas separate the slots) A2..A10=100 (where the two dots represent a range of slots, in sync interface on { the DMF32n{{ { Inputs:{ ){ std. interrupt_service procedure inputsu{e { Outputs:{@{ device reinitialized and circuit processes waiting to transmit { signaled{ {--}vare i : integer;begin.# { First, reinit the interface } initialize_interface ( xreg, xregion );nG { Now reinit each line and check for xmtting circuit processes thatn were waiting }$ for i := 0 to max_line_number do begin { Initialize this line }c4 initialize_line ( i, xregion^.line_char[i], xreg );- { Anyone waiting to transmit on this line? }d if xregion^.xmt_waiting[i] then* signal_device ( device_number := i );" xregion^.xmt_waiting[i] := false; end; { for }_+ { Set the CSR up for the current line }g% write_register ( xreg^.async_csr,l rx_int_ena := true, tx_int_ena := true,: ind_reg_address := xregion^.indirect_register::bits$5);end; e0procedure set_default_params ( line : integer );{++e{eJ{ This procedure will set the line characteristics for LINE to the default{ values{r{--}beginp' with xmt_region^.line_char[line] do_ begin& char_length := default$char_length;$ stop_bits := default$stop_bits;( parity_enable := default$parity_enable; sense := default$sense;$ rx_baud_rate := default$baud_rate;$ tx_baud_rate := default$baud_rate; modem := default$modem;# hardcopy := default$hardcopy;g& ANSI_escape := default$ANSI_escape; echo := default$echo; " passall := default$passall;# eightbit := default$eightbit;i0 ddcmp_protocol:= default$ddcmp_protocol; end;u) xmt_region^.line_valid[line] := true; end; pAprocedure store_line_characteristics ( jparam : builder_params );f{++ {iJ{ This procedure is used to store user-specified line characteristics into5{ the parameter record of the data base for this lineh{i{--} begino/ with xmt_region^.line_char[jparam.line] doe beginG { Set the characteristics for this line - note: for now, you can'ttG set the character length and # of stop bits via the system builder }0 parity_enable := jparam.parity_enable;( sense := jparam.sense;- rx_baud_rate := jparam.comm_speed;a- tx_baud_rate := jparam.comm_speed;c+ hardcopy := jparam.hardcopy;h. ANSI_escape := jparam.ANSI_escape;' echo := jparam.echo;e* passall := jparam.passall;- if jparam.character_length = 3 thenr eightbit := trued else! eightbit := false;eC { Set the modem flag and if line is a modem, clear the valid bit }( modem := jparam.modem;F`]$ELN024.A> [KITBUILD.INSTALL]YCDRIVER.PAS;1Q\5"- if modem then< xmt_region^.line_valid[jparam.line] := false;2 ddcmp_protocol := jparam.ddcmp_protocol; if ddcmp_protocol then begini$ ANSI_escape := false;$ echo := false;# passall := true;;# eightbit := true;t? rec_region^.ddcmp_protocol[jparam.line] := true;m end; end end; a8procedure initialize_line ( line : integer;( line_parameters : ln_param_rec;* register_location : register_ptr );{ { K{ This procedure will write the line parameters for this line to the properrM{ line parameters register and enable the line for transmitting and receiving { { Inputs:t{ "{ line number specifies which line<{ line_parameters contains the characteristics for this line8{ register_location points to the dmf32 device registers{ { Outputs:{t{ line initialized{i1{ Note: This routine assumes device IPL or higher_{t{--}vary lparam : lpr; begin  with line_parameters do begin { Set line parameters }h7 write_register ( register_location^.line_param, ' line_select := line,e* char_length := char_length,, parity_enable := parity_enable,$ even_odd_parity := sense,( stop_code := stop_bits,+ rx_baud_rate := rx_baud_rate, - tx_baud_rate := tx_baud_rate );e 6 write_register ( register_location^.async_csr, rx_int_ena := true,t tx_int_ena := true,m ind_reg_address := line+8 );; { Enable this line for receiving and transmitting }a5 write_register ( register_location^.ind_8_15,b tx_en := true, rx_en := true, ds_change_en := modem,) tx_auto_xo := not passall );u end { with }end; aJinterrupt_service async_input_interrupt ( device_registers : register_ptr;+ inp : rec_region_ptr );q{++ { D{ Async_input_interrupt : async line input interrupt service routine{eH{ This is the input interrupt service routine for the async lines on theI{ DMF-32. It reads characters from the input silo and puts them into the J{ input buffer which is located in the input device record region. If theM{ input buffer state changes from empty to non-empty, the device is signaled. { ,{ Inputs : registers - pointer to registers{ region - pointer to region.{n{ Outputs : none={u{--}var 3 rx_data : rxb; {receive buffer}w begini{r{ Read the input registeri{}< rx_data := read_register ( device_registers^.rx_buff );{rC{ As long as there is input in the silo, put it in the input buffere{} while rx_data.data_valid do begin= if not inp^.ddcmp_protocol [ rx_data.rx_line ] then  begin0D { If the input buffer is not full, put the character in it }K if ( ( inp^.put+1 ) mod input_buffer_size ) <> inp^.get theni beginO { If input buffer goes from empty to non-empty, signal dispatcher }f/ if inp^.put = inp^.get thenn( signal_device (O device_number := eln$ddcmp_term_device_number ); J { Store the character in input buffer and update put pointer }5 inp^.buffer[inp^.put] := rx_data;iF inp^.put := ( inp^.put + 1 ) mod input_buffer_size end;  end* else begin*) if eln$ddcmp_receive_isr (+N address ( inp^.ddcmp_region [ rx_data.rx_line ] ),2 rx_data.rx_char ) thenG signal_device ( device_number := rx_data.rx_line );  end; { if }M { Now read input register again to see if more characters are there }oA rx_data := read_register ( device_registers^.rx_buff );8 end; { while }  end; oKinterrupt_service async_output_interrupt ( device_registers : register_ptr;r- xregion : xmt_region_ptr );n{++ {VF{ Async_output_interrupt : async line output interrupt service routine{1I{ This is the output interrupt service routine for the async lines on thesK{ DMF-32. It reads the CSR to determine which line interrupted and signals { the appropriate device.s{9){ Inputs : reg - pointer to registerse#{ region - pointer to region,{8{ Outputs : nones{){--}varc: async_csr : csr; {control status register}N this_line : integer; {line number on which interrupt was received}begini{{ Read the CSR{}? async_csr := read_register ( device_registers^.async_csr );r# this_line := async_csr.tx_line;1{5{ Signal the interrupt and clear the xmt waiting flage{}1 signal_device ( device_number := this_line );h- xregion^.xmt_waiting[this_line] := false;nend; r2procedure process_modem_change ( line : integer );{++a{eD{ This procedure will update the status of a modem line based on the{ current state of the lines{ {--}type% ASCII_char = [byte] packed record= low7 : 0..127;d high : 0..1 end; { record }ovar  stat : boolean;  modem_status : ir0_7;y not_passall : boolean;begine! { Only valid on modem lines }a- if xmt_region^.line_char[line].modem then% begina { Read the modem status }! disable_interrupt ( async_ipl );%/ write_register ( register_location^.async_csr,0 rx_int_ena := true,6 tx_int_ena := true,e ind_reg_address := line );> modem_status := read_register ( register_location^.ind_0_7 );4 { On modem status change, clear type ahead buffer }+ clear_typeahead_buffer ( yc_struc[line] );08 not_passall := not xmt_region^.line_char[line].passall; { What happened? }n$ if modem_status.ring_indicator then begin { Answer the phone } 3 write_register ( register_location^.async_csr, rx_int_ena := true, tx_int_ena := true,p$ ind_reg_address := line+8 );2 write_register ( register_location^.ind_8_15, tx_en := true,a rx_en := true,l$ tx_auto_xo := not_passall, ds_change_en := true,l dtr := true ); + xmt_region^.line_valid[line] := false;  end elsee) { Check for dsr and carrier detect }y) if xmt_region^.line_valid[line] then begin) if not ( modem_status.data_set_ready or - modem_status.carrier_detect ) thena begint9 { When line goes down, put a terminator in the type 2 ahead buffer and flush the transmit silo }, xmt_region^.line_valid[line] := false;. dispatch_character ( yc_struc[line], control_z_character, ) xmt_region^.line_char[line].passall, * xmt_region^.line_char[line].eightbit, put_chars ); 4 write_register ( register_location^.async_csr," rx_int_ena := true, tx_int_ena := true,) ind_reg_address := line+8 );w: write_register ( register_location^.ind_8_15,1 tx_en := true,g1 rx_en := true, * ds_change_en := true,* flush_tx_silo := true,: tx_auto_xo := not_passall ); end; endp else ; { Otherwise, if the line came up, set line_valid }$ if modem_status.data_set_ready and% modem_status.carrier_detect then + xmt_region^.line_valid[line] := true;  enable_interrupt; endend; Ifunction line_valid of type check_line_valid; { (line_number : integer )}xbegin 6 line_valid := xmt_region^.line_valid[line_number];end; e8function check_silo ( line_number : integer ) : boolean;{++ {eH{ This function will check the tx silo for the specified line and return2{ true if the silo is full, or false if it is not.{e{--}varo tx_csr : csr;l tx_silo : ir0_7;begintJ {********************************************************************} { Synchronize with device }x$ disable_interrupt ( async_ipl );K { Write our line number into the CSR as the indirect register address }n2 write_register ( register_location^.async_csr, rx_int_ena := true,  tx_int_ena := true, ( tx_lG $ELN024.A> [KITBUILD.INSTALL]YCDRIVER.PAS;1Q\0">ine := line_number::bits$3 ); { Check the silo }< tx_silo := read_register ( register_location^.ind_0_7 ); { Restore IPL }r enable_interrupt;eI {*******************************************************************}r { Was it full? }8 check_silo := (tx_silo.tx_silo_count = tx_silo_max);end; i-function put_chars of type output_characters;i" { ( line_number : integer;" number_of_chars : integer;@ var output_buffer : string(number_of_chars) ) : boolean; }{++.{3{ This function outputs characters to an async line { { Inputs:e{{ line number specifies line){ number_of_chars specifies buffer lengthe.{ output_buffer points to buffer of characters{t { Outputs:{ %{ characters output on specified line ={ function returns false if line goes invalid, true otherwisek{r{--}var  output_character : char; tx_silo : ir0_7;  tx_csr : csr;e full : boolean;  count : integer;  done : boolean;  max_output,loop : integer; 6[inline] function minimum ( a,b : integer ) : integer;begin  if a <= b then minimum := as else minimum := b end;beginc count := 0;  done := false;f( { See if the tx silo has some room }' full := check_silo ( line_number ); 2 { Loop until all characters have been output } repeat< { If the silo is full, wait for it to become empty } if full then3 wait_any ( async_output[line_number] );nK { Now pump characters into the silo until it's full or we're done }E {******************************************************************}c$ { Raise IPL to synchronize }( disable_interrupt ( async_ipl );O { Write our line number into the CSR as the indirect register address }e5 xmt_region^.indirect_register := line_number; 6 write_register ( register_location^.async_csr, rx_int_ena := true,e tx_int_ena := true,% ind_reg_address := line_number );C { Get the silo count and compute max characters to output }h@ tx_silo := read_register ( register_location^.ind_0_7 );4 max_output := minimum ( (32-tx_silo.tx_silo_count), (number_of_chars-count) ); if odd(max_output) then begin count := count + 1;: write_register ( register_location^.ind_byte1,/ substr(output_buffer,count,1) );e end; & { Loop outputting characters }. for loop := 1 to (max_output div 2) do begin / { Output two characters at a time }9 write_register ( register_location^.ind_word,eA substr(output_buffer,count+1,2)::packed_word.wd );  count := count + 2; end;e { More to output? }a+ done := (count >= number_of_chars);. { Restore IPL }_ enable_interrupt;eC {****************************************************************}i; { If we aren't done, the silo must have been full }e full := true; ; { Raise IPL to powerfail IPL and set the xmt waiting bit } " disable_interrupt ( IPL$_power );. xmt_region^.xmt_waiting[line_number] := true; enable_interrupt; until done;e- { Wait for the transmitting to complete }b+ wait_any ( async_output[line_number] ); J { Check for line valid to return status. True is returned only if theD line is up. If not, wait to see if it comes back (checking inF midstream). Caller of this routine can then check line_valid to5 determine which dap status to return to user. } put_chars := true;3 if not xmt_region^.line_valid[line_number] then  begin put_chars := false;$ wait_any ( time := modem_timeout );0 if not xmt_region^.line_valid[line_number] then( wait_any ( time := modem_timeout ); end; end; 9process_block circuit_process ( circuit_struc : ct_ptr );e{++e{aI{ Circuit process : This process is started to service an i/o request for^{ the specified line.e{ I{ Inputs : circuit_struc - a structure containing information peculiar tov{ this circuit{i{ Outputs : none{x{--}var 3 read_buff : terminal_read_buffer;r( saved_record_attributes : dap$b_rat;@ saved_record_format: dap$b_rfm; { Record format from open }I saved_fixed_control_size: dap$b_fsz; { Fixed control size from open } & this_line : integer;& context : integer;& status : integer;- circuit_flags : terminal_flags;) --function open_action of type dap$open_action; {++ {g${ Open_action - open action routine{{I{ This routine is called by the dap$server routine when the user process R{ executes an open statement.i{r { Inputs:{t{ create - create/open flagn"{ file_access - file access mode{ share - share accessr${ organization - file organization!{ record_format - record formate({ record_attributes - record attributes,{ maximum_record_size - maximum record size{ file_options - file options;({ device_char - device characteristics:{ device_dependent_char - device dependent characteristics*{ file_specification - file specification){ fixed_control_size - fixed control size 0{ context - driver specific parameter (unused){ t { Outputs:b{e${ organization - file organization!{ record_format - record format({ record_attributes - record attributes,{ maximum_record_size - maximum record size{ file_options - file optionse({ device_char - device characteristics:{ device_dependent_char - device dependent characteristics{x{ return value = success{t{--}begin( { Save specified record attributes }1 saved_record_attributes := record_attributes;) saved_record_format := record_format;a3 saved_fixed_control_size := fixed_control_size;]0 { Set max record size and read buffer size }# if (maximum_record_size = 0) or- (maximum_record_size > max_read_buffer_size)g then- maximum_record_size := max_read_buffer_size; ; circuit_struc^.read_buffer_size := maximum_record_size;) { Set some other various parameters }_ organization := dap$k_seq;! {record_format := dap$k_var;}8 file_options := []; L device_char := [ dap$v_devrec, dap$v_devccl, dap$v_devtrm, dap$v_devidv, dap$v_devodv ];  { Set up the flags record }r with circuit_flags don begin6 passall := circuit_struc^.local_pass;6 echo := circuit_struc^.local_echo;? hardcopy := xmt_region^.line_char[this_line].hardcopy;aB escape_recognize := xmt_region^.line_char[this_line].ANSI_escape; end;t- { If max record size is 1, special case }  if maximum_record_size = 1 then begin circuit_flags.passall := true;. circuit_flags.echo := false; end;p { Success !!}t open_action := dap$k_successend; x+function get_action of type dap$get_action;r{++ {n"{ Get_action - get action routine{)I{ This routine is called by the dap$server routine when the user process _-{ executes a get (read/readln/etc) statement.u{ { Inputs:{d4{ record_access - type of access to be used in get 1{ record_number - number of record to read (lbn) 4{ record_options - record options to be used in get.{ buffer - address of buffer to receive data3{ buffer_length - length of buffer to receive data_0{ get_buffer - routine to get new larger buffer0{ context - driver specific parameter (unused){ e { Outputs: {{.{ buffer_length - length of actual datum read{ return value = success{s{--}vard i, read_length: integer; read_status: boolean;i count: integer;: eof: boolean;l tmp_buff: ^anytype;nbegin# { If the line is up, continue }e( if xmt_region^.line_valid[this_line] then begin {C { If the record access is keyed and the record number is non-zero,kA { then the record number represents a mask of control characterso { that are to be awaited. {}sG if ( record_access = dap$k_key_acc ) and ( record_number <> 0 ). then- beginr count := 1;rA read_buff[1] := await_ctrl_key ( yc_struc[this_line],*( record_number :: ctrl_key_set, circuit_struc^.port);r eof := false;  read_status := true;t endi else { Normal read }r< read_status := read_chars ( yc_struc[this_line], read_buff,r, HʈK$ELN024.A> [KITBUILD.INSTALL]YCDRIVER.PAS;1;aU;1Q\Ocircuit_struc^.read_buffer_size, count,c circuit_flags,s eof,_ put_chars,e line_valid ); { { If success, return the data3 { For VFC files, place a control field on the data* {}* if read_status* thenr begin' if saved_record_format = dap$k_vfc_ then=1 read_length := count + saved_fixed_control_sizeo elseu read_length := count;eC { Check the buffer for overflow. If so, allocate new buffer. } # if read_length > buffer_length then;$ buffer := get_buffer(read_length);D { Copy the input to the supplied buffer and return the length }' if saved_record_format = dap$k_vfcl thenu begine+ for i := 1 to saved_fixed_control_size dot1 buffer^::terminal_read_buffer[i] := chr(0);uB tmp_buff::integer := buffer::integer + saved_fixed_control_size; end elsec tmp_buff := buffer;x; tmp_buff^::string(count) := substr(read_buff,1,count);l" buffer_length := read_length; { Set the return status } if eofe thena beginl get_action := dap$k_eof; eof := false end else  get_action := dap$k_success  end else * get_action := dap$k_device_not_ready; end else& get_action := dap$k_device_not_ready; tend; s+function put_action of type dap$put_action;b{++ {"{ Put_action - put action routine{eI{ This routine is called by the dap$server routine when the user process o/{ executes a put (write/writeln/etc) statement.t{y { Inputs:{[3{ record_access - type of access to be used in puto2{ record_number - number of record to write (lbn)4{ record_options - record options to be used in put.{ buffer - address of buffer containing data4{ buffer_length - length of data in buffer to write0{ context - driver specific parameter (unused){ g { Outputs: {{ return value = success{r{--}varl start : integer; i : integer; number_of_chars : integer; first_char : char;  write_status : boolean;begin 6 write_status := write_chars ( yc_struc[this_line], buffer,  buffer_length, saved_record_attributes, put_chars, line_valid );o if write_status then put_action := dap$k_success else& put_action := dap$k_device_not_ready;end; 5function truncate_action of type dap$truncate_action; {++ { ,{ Truncate_action - truncate action routine{H{ This routine is called by the dap$server routine when the user process { executes a truncate statement.{* { Inputs:{V8{ record_access - type of access to be used in truncate{ { Outputs:{ { return value = success{a{--}varo stat : boolean;dbegine- if xmt_region^.line_valid[this_line] thenr begin) if circuit_struc^.local_echo thenr begind; stat := write_newline ( this_line, put_chars );*5 {yc_struc[this_line].lf_needed := false;} 3 {yc_struc[this_line].lf_output := true}r end;( truncate_action := dap$k_success end else+ truncate_action := dap$k_device_not_ready;end; a{++{ { Circuit process code{e{--}begin 0 eln$allocate_stack ( 4096 ); { eight pages }{-{ Save the line number in an accessible place {}% this_line := circuit_struc^.line; {c{ Let DAP do it {}A status := dap$server (circuit_port := circuit_struc^.port,:$ open_action := open_action,# get_action := get_action,e# put_action := put_action,a) truncate_action := truncate_action);a{!{ Get rid of what we're not usingn{}# delete ( circuit_struc^.port );n dispose ( circuit_struc );END; n,process_block line_process ( line : integer; evt : event );e{++s{o,{ Line_process : async process for each line{7{ This procedure is started as a process for each line.o@{ Once the line has been properly initialized, it then waits forA{ connect requests and starts a circuit process for each request.e{r{--}vara: my_port : port; {line unique port}? port_name : varying_string (32); {the name of this line}** process_name : name; {name ID}I circuit_db : ct_ptr; {pointer to circuit data base struct.} F sub_process : process; {process ID for circuit processes} begin_. eln$allocate_stack ( 1024 ); { two pages }@ { Create a port and a universally known name for this line } create_port ( my_port );s< port_name := controller_name + chr ( line + ord('0') ); create_name ( process_name, port_name,t my_port );s( { Allocate the line data structure }- allocate_terminal_data ( yc_struc[line], # line,i0 handle_xon_xoff );< { Initialize the line and signal the job when complete }% disable_interrupt ( async_ipl ); initialize_line ( line,3 xmt_region^.line_char[line], + register_location );e enable_interrupt;7 if xmt_region^.line_char[line].ddcmp_protocol then Q eln$ddcmp_initialize_line ( address ( rec_region^.ddcmp_region[line] ),e' line,{, async_ipl,4 async_input[line],, my_port ); signal ( evt );I { Create port to be used for the DAP circuit and wait for connect re-tJ quest. Upon receipt of request, start up a process to service it. } while true do beginI { Create a new port and the data structure to pass to the circuite process }@ if not xmt_region^.line_char[line].ddcmp_protocol then begins r" new ( circuit_db );( circuit_db^.line := line;M circuit_db^.local_pass := xmt_region^.line_char[line].passall;nJ circuit_db^.local_echo := xmt_region^.line_char[line].echo;0 create_port ( circuit_db^.port );& { Wait for a connect request }( accept_circuit ( my_port,> connect := circuit_db^.port );% { Start the circuit process }s, create_process ( sub_process,0 circuit_process,- circuit_db );  end else begins> accept_circuit ( my_port, full_error := true );Q eln$ddcmp_start_running ( address(rec_region^.ddcmp_region[line]), 1 put_chars );  end; { if }a end;d end;end;IOV$ELN024.AR[KITBUILD.INSTALL]XQBOOT.EXP"';aU;1QAۀ90.4{%9+\}nr,#?9I"KG6薫}mpth=405}O(FrKێ$ sLj#ZS_m"~~F|CvB2=܎sbs~C}1DGdV%ڋD8ٔjQ٤EQ01cH=jgm.0xOړ*/n'cБ;_ Knm8DH|7m>+ tcpzTzQt@h 5Ql'/zxX f@(?uLDtʹaXaX^z#0]Tْbk,w2T[jn=9o}s7 5RYfe2tƟziy8׆[ɥ~l|⼶nEW 3 ,ן0w 3xTP:mwB_t{ '^˹za#Ek+V( *K2!7s#GWs-"'>І=#n#@ !ae<2(QG[)wf[\([Z )˟Kx%qGY.Ap0&_H-?/oB!+05 *Vp"B{Nk22Ȭ:,VjȖ`&9X*.a e˜ =vy_AL-T^=@1Su/a յjEeռc&Ÿ@_s?o΁fGw\D\=И", ;Rw^2&1iL ,h+nJYm)}ܽ5'I 8h8a&* j䊭Kq{iYd ARem#Q_ [ pK|``_VVV2S-Bl E1>~%`^fz)[_XK׾T \,j'Gv"ݱ\=zGz/_p.,CEm&Ȑ/~T)Xx9wH3՟-6bŻv)uXYؤYv t]$K)=fL}r4&Ѯ~VS'VސNFt H3T AID @1Ί&V§8%!?(Ktcd N^Z}%w<켗K=="Hǭ ~Cwse+U))QqN5 az+uQl/rb#u䘿SxMQCpTWK|/bE .qjd0\o՘?xJe5@h#+.C`i  Mk@A\Gmc~ d-Uy(hY,;(6m y }*tH1Xz{ycLrSW.ރ)>3-V̆T.e:,s8Di)g$m!6m'ip,ԖVwM_|E'_m~0% w0>״ L'\DCQySU7 c}"w1GMpL.e6W3T&5 "H.EG'ÝI-Ԧg#8 vI {kt$A@ YkD9 $'@A,TXjKCzWpA3[pA2*BdԸ"BAk_<[_?hLw9:Nt) >ƯaS#^ϏiJF4Gj7h("QNk#Ç Xzct*f]~K6z<8&{خ&ɡI<>'L{m1Rob4L3բ. *l=}qeXH#eAwK9!A~!M@qv,hUENK&^YZ)ѻ돠"\;'UwziSrFd\Rݕ]BCpv>y.AױQk_roҮT5g~XEEPSl 9p9nVQH2L5;!xtbWKGUwފ:jlǞ HX4tjW`!%f͞&wb7!ݿȅԡj܉6!j[ /&jT1w[1㐿lFɬ vPɠ"^Sw( Ng ﷾Ud 'pVF_OG\OOZoU vg1/ %g.2U$_>p8>9c#7i'W Ǝыt |7Ŧߥ+7YMp. P5"E5+n+JiCrҀK2%+,"QlC]~&Lc#9*L|#6qtX䦆i6x} 9AK4n_SaGVd(% R) ksGg WY; VWUNHDlGb32HffƭWp\ta+}nF7(-~V(9k):ze<IAm=e7}8@ʖvh҃) `3 .D| * [8]AHl&D-( O1&k7 eu9I o#h)ex6~`,4:;QFkjd`q(URgGY68qvWDgw^3t1Bl{ \L/tHLS&oAGFy.[v~l d*""w8FDfN q"tu r>4E>hĠ%#*w0>5x #3 422:cKŅN(\=4,iMXGv(<z>oOlBPrgH B-}u'?IE=FK8r"e,^t,a QI}WǜΈބƘՆuҽƆۀo䑢᮵˵ؕߒNƵ՘޵䛁ͻ&mpy}җ8De6֯Ňۂåm]S奾ΡЙ´ʯēq|j`%;(_P}NJ=J8ăץ1 s[1rDcPMDHp'}xh\4(+}|OoS!o 6Y0\9~r5fMY p=kgRO"zzbPW4k<Wj:_k-Ge #+can+(?baei n/h'C.Xr bG%NL#%B(yUelURK8+VR#b1]@UP3LJOUFnz$SUgS[;p6.v@ ]]4C?6O[j>J)j9kC $۞̟JףۮƱψKU귟ͳҟ삦-ݲ󉺵VƎ͇ͯ߫y~XGߕ#BNśœ󭢣s^-܎څߖ˂ƃWVT=MuG']8*ZVG O0Nm CZe>\Edo +-> &|lBqQ6Izq|z36 8y/aBj6NOUaHPNsvX;HcezVTs&! ˣ5;&FGi2s.POG˸#utΚj 5~xn|@ 5Bd  q:hK]nlN+YJFNP(/p4`|"Z|t\Pi}@WO&E.lݵKKF%fDOK7pr,K2 gq f%8!M1U%GZvI:^`;IU=("y)myp.l)YvW;nWR%hDVZCT+gQG"bX(k?@n9 ^ @&`_bRxx= ;ح3gXSLr*?2fڅ%spvwO#ZoOy$&R U֯,ג5+։dq*^".5Xhۖh!Y]C'|Ljq(h7ظDj(Ѽۘ6`#iz;$mGv?^Q/;2{âQJ'Z>.FCj<7|0ˢQ1R7}~unԻf彷ϢUR:kG;7̋Y͋Xib|jfw:ihSq?6lM39ҁ@m M_I̳ig, ,PSX7ߜjz8R>Kٹ Ւ _*ɏOen2=-2*Bm=IDLSzo ( ͝>nl#8jfSof` M"E\x B<{ܭOJbe%*̾;HE!303.C{b]) a+Z[\8HLp}wKJ *>5ծzr=H*;)SK*DM}ҒmOhQJ^ycu\3`PQUʌMJXPNj17QBDo{".k޳Udrҡ ӬA9Ȉس~]i#6KlgE:l3uAǘY4`o}Z+2N}Hi=Nwz:Za|rs榮 GSkiv(eB^ls4ROjrZJ}HWǭ]m|_mSGʸfwewECrEE&~sw0Wǹ 膄^CinDKqzIQi fD>`2xqoV7Ex-xbe+/RNxKIwF*d 48 4k9C؇F [W% zR-?Ddm`tXtJoeV#XCtBsr)s6V[2gƥmYk T*_@˃"F\9:E"}tߟV$*Q\Fgi1~l?B?ҵD,P̄bjD$wT_.-%y L^ఐ1hyvِt3"x*~{%H&Vf ;|+kE@(3dxxzJx@S)"UW O0PJ87fzܸ, ^@m5"~פ-(1N/pyJ/Z!p= B$ju lxlxXBWœ/+ "aSFyW7𰤇m8ÈcS9/CZ%D?MT7!IxL,MZ }"ix O$b r,U|}Pl-,>(D/!kk*1ܳCӕNHX4LRA̠&#,zclN{{!o_۴DUˠ[Ws5Tx5Ef+ujaX N)ychskzX̼)unS͛N^M3;Xb:CIJos*ٺha8?%Ds^.^ oz4!-z'Xk%on^h|^H4{% ]Fĩ;`;p L]o= Obڃّ*rN'$8n[([mw>pMO+>f{"USFKTQ֓xd;ߛTwzWaA !j˯FBw\4Iٞ@[Tۉx|)*W?m%LٕI¥Wr& nyD\H95W Q\כ;6YalP0c9b%e\~bTpP%QjW"m"[Y^x]mV&"_xX-AUIYo&C?lG|ꄅ(Mfn5%25TҟL|h_5xipMZMSt/ Cs7 b4KJHDz5O|ǮD c؁!T #iG ^` ߅zwz8:.h؃h^G^|jQI[.&VK} G bD)3h8B`8௖j=AY)EJ):ƸVj.Apz~oa~5B pa8.yr i"* Y83c~^W@:-/II6K((" ;{Z1[& kL"NI(!B7RP`uZ%p wpq?*&e9 jxmMAl//)p?A${BJ$#vG05}i^=c&HwTgnb:L G|j,fNm#veQT`0