X7$ ?BOOT-U-No boot on volume ߋtv ϣ-SRT11A DECRT11A o![T6E%@ NNm< 3S-GJ˦9؞~+havꦂJ}ΦEccP⭶n| 6é5湂ߓ_Cmcf:8<~ X>_/ɝ^L^;8 %'8q#4{%kEJz@E:wv_ MOӊ LQhh( {BdFW7,:?6 FG;("Cg1%i*2T|I9iTGjfw佳x/, +y*yz2Ƅ" Ses"P6 !( AƳ"~ʡa#df9Fv‡=\+V&X%9 )_\mփcEqղȒVE`: cᙀ'pT >QAh̆uCc1~o ۝`9;b& z}B('& (QfQ5҇W I XDV&FTL.[V\O ˯MemN&k-];kLy7,&Z@(m~W;9p|v1ގJ23ck'=/B٩P)a(5io2)oV?B=ji@k\>Q|'|F%Kq2zC]aqMq0555e7:#k;Th*.1FBX$v'0T{H U5HUx>޼W̡)'*v$Bi_({ '4aVv\ʼ%CyaF3V>blHr5lT4\ Ò< 룇f+F?|{(: 4shkH>22G:z0w odAXR9?@ o'LtϱS@9м~!ܻZh1b-([U tt)Qm $WG6rGF&4)y &_D^Bla~C4;@Hͼ=(Oe8*5]\-0A ub3FM!/`LGU"?=+.:^eUCX]6{^(PLX{nMBQ(@jD>Ώ[lۛ]a|Q:(f `~5V/Q夷TjՑM 8A /g !$T?-~ѵ!-@:2sTEJ\i=89vNRʚu!oCE|`d=7g"w)LIG AX%\Y1j@wGQ`zrku>k=k*w r\Ӳx{'lM=ٌ{t_)-H]$0mIk`r0 ƁΉ ڦy-D>kfeVR%:8dwq/–B`yBhxrp* p* rp*xkQp*' [p*' 3p*' vp*2Kmp*d{%p*Df&`'p*rpTp*x`"{p*x`"zp*x`"R2p*}}'p*}}Ԁp*}KDp*}Kd p*x^q xvq x`"RC x`"RD H<@UaKS INK X1ӵUDdž.J;A9޳Q+ȁB VpAI9@D=9*6$gO Ƭc8BLdpk QG n{ +zeXR:q== ug &/pUTJF~Bf%rCF"d__MoTmWA6:Rcibd"mgKZ"S7X=cCU,k/ͽǀ_\PڇGI2~PN3b/ ;cVԦ$L2>3Ȳ0ʅ׆dA,[Ky&T"PSBhKCFŚ&d،f?Uqk3rp9OM0uZDvvGuV"ͤ%ųT FSWz[bIed%\%bGV;]2Vk'ec>hLbU)ױeͨt CLe,nCz/*t$HfXN_SX产iP){ʈxU͐5!rdx`vY(XzE7R&X[U=(\ބg1{iTj2/ZU`3[9"mC$;Lruy *)8)M#yy*`m[1rbOGApɔb@GJ'de?Q(ᐲZhiU KRZZV@ԥ~ JŬ,W4V`J5:6sQ2 cv\tQxC&OB:Bab?c@ .jcs%;57l•IS5@Kޑo!aU)\E>c[N $y%]:#)EW7}3{^U'}{$eZ~M>{#cQDIw p=ף A ADVERTISING (SALES)u=(\ A BAD DEBTS (SALES)u=(\ A COMMISSIONS (SALES) =(\ !A DELIVERY (SALES)!e=A`7K"A GROUP INSURANCE (P/R)"> p=ף #A INTEREST (NOTES)#? $A SELLING (SALES)$=nO %A TRADE SHOWS (SALES)%Dq- ?pPGN NN N ?xE`N N!N N# ?E`N N!N N# ?E`N N!N N# ?F NN  @A ENDING INVENTORY @lE@@qEN N"30*@qEN N"30*@qEN N"30* @qENN Aq- BA COST OF SALES BAGTN N N N BEN M BEN M BEN M BBF@ NN  Cq-B DA GROSS PROFIT DFFN N N N DDN N N N DDN N N N DDN N N N DE NN  FAOPERATING EXPENSES: HA SALARY-OFFICERSHzDHBHBHB HC NN  IA SALARY-OFFICEIDIBIBIB IC NN  JA SALARY-SALESJ%DJBJBJB J pC NN  KA PAYROLL TAXESKpCKA N NN NN N K*A N NN NN N K9A N NN NN N  K@B NN  LA ADVERTISINGLD LHBN N LPBN N LXBN N L_C NN  MA BAD DEBT PROVISIONM%D MgBN N MoBN N MwBN N M~C NN  NA COMMISSIONSND N,C N N N,C N N N,C N N ND NN  OA DELIVERYO;D OB!N N OB!N N OB!N N OpC NN  PA DEPRECIATIONPCPBPBPB PB NN  QA GROUP INSURANCEQCQA N NN NN N "QA N NN NN N "QA N NN NN N " QB NN  RA INSURANCERCRBRBRB RB NN  SA INTERESTSCS`B#12NNMS@B#12NNMS0B#12NNM S#C NN  TA LEGAL & ACCOUNTINGT8CTATATA T*pB NN  UA MOTOR VEHICLESU$CUAUAUA U1@B NN  VA OFFICE SUPPLIESVCVAVAVA V8@B NN  WA RENTW@CWAWAWA W?@B NN  XA REPAIRS & MAINT.XLCXAXAXA XFpB NN  YA SELLINGYC YN0B$N N YV0B$N N Y^0B$N N YeC NN  ZA TAXES-OTHERZpBZAZAZA ZlA NN  [A TELEPHONE[B[@A[@A[@A [sB NN  \A TRADE SHOWS\B \{A%N M \A%N M \A%N M \PB NN  ]A TRAVEL]pC ]A&N M ]A&N M ]A&N M ]B&N M^q- _AOPERATING EXPENSES _F N N  _D N N  _D N N  _D N N  _IE@ N N  `q- aAINCOME BEFORE TAXES a+EN N N N aCN N N N aCN N N N aCN N N N aD NN  bAINCOME TAXES DUEbD bHC'N N b LC'N N bLC'N N bD'N Ncq-KLdA NET INCOME d$DN N N N d,CN N N N d4CN N N N d<CN N N N dDBDN N N NgA A & A PRODUCTS, INC.hA.BALANCE SHEET PROJECTION FOR 1ST QUARTER, 1981iA(000'S)kQACTUALlQ1980lQJAN.lQFEB.lQMAR.mq-mAnAASSETS: oA CURRENT ASSETS:pA CASHpDpRE N N N N 30+p`E N N N N 30+pnE N N N N 30+ qA ACCOUNTS REC.qFpqxF N M30,qF N M30,qF N M30, rA INVENTORYrlE@ rqEN M rqEN M rqEN M sA PREPAID ITEMSsDsDsDsDtq-tA uATOTAL CURR ASSETS u^F N N ujFp N N ujF0 N N ujF N N wAPRPTY PLNT EQUIPwDwD NN N NH N MwD NN N NH N MwD NN N NH N M yA OTHER ASSETSyCyCyCyCzq-zAp {A TOTAL ASSETS {~F N N {FH N NN NN N{F0 N NN NN N{F( N NN NN N|q=P|A}A"LIABILITIES & SHAREHOLDER'S EQUITY ~A LIABILITIES:A CURRENT LIABILITIES: A NOTES PAYABLEEnE N N% N N# N N" N N!XE N N% N N# N N" N N!*@E N N% N N# N N" N N! A ACCOUNTS PAYABLEkE4E@N M30->E N M30-HE N M30- A ACCRUED EXPENSESD_;D N M N M N M N M N M 30.v9D N M N M N M N M N M 30.8D N M N M N M N M N M 30. A INCOME TAXES CC NN N M N N@ D NN N M N N@-D NN N M N N@q-A ATOTAL CURR LIABILITY F0 N N F N N* N N( N N"F N N* N N( N N"F N N* N N( N N" ALONG TERM DEBT4D1D NN N N3 N N;.D NN N N3 N N;+D NN N N3 N N;q-AASHAREHOLDER'S EQUITY: A COMMON STOCK DDDD A RETAINED EARNINGSE` E`NN N M ENN N M ENN N Mq-R A A TOTAL EQUITY E N N E N N $E N N +E  N N q- `Aπ`7 ATOTAL LIAB. & EQUITY6~F N NN NN N ;FHN N @F0N N EF(N N A A & A PRODUCTS, INC.A, CASH FLOW PROJECTION FOR 1ST QUARTER 1981Q(0A00'S)QJAN.QFEB.QMAR.q-A  ACASH BEGINNING JDNM OENN2 TENN2 AA/R COLLECTING_E NMN M N MjE NMN M N MuE NMN M N M ALONG TERM DEBTq- Aw ATOTAL AVAILABLE |E@ N N E N N E@ N N ADISBURSEMENTS: A PRPTY PLNT EQUIP B B B A ACCOUNTS PAYABLE?E NNN M N NE NNN M N NE NNN M N N A ACCRUED EXPENSESD NNN M N M N ND NNN M N M N ND NNN M N M N N A LONG TERM DEBT@A@A@A A INCOME TAXES BNN2q-A@ ATOTAL DISBURSEMENTS E N N E N N E N N q-= Aw 7ACASH BEFORE NOTE REPAY/ADDS 'EN N N N EN N N N EN N N NANOTE REPAYMENT(+)/ADDITION(-) DNM N M CNM N M  CNM N Mq-A A CASH ENDING (EN N N N 0EN N N N 8EN N N Nq=W-A  JAN FEB MAR --- --- --- 1209 1339 1427 ---- ---- ----    635 856 826 791 521 561 ---- ---- ---- 1426 1376 1387 856 826 832 ---- ---- ---- 571 551 555 ---- ---- ----  359 346 349 ---- ---- ----   10 10 10 29 28 29 5 5 5 15 15 15 36 35 35 6 6 6 8 8 8 9 9 9 11 11 11 ---- ---- ---- 129 127 128 ---- ---- ---- 1059 1024 1031 380 484 536 ---- ---- ---- 1439 1507 1567 484 536 571 ---- ---- ---- 955 972 996 790 967 1071 ---- ---- ---- 1745 1939 2067 967 1071 1142 ---- ---- ---- 778 868 926 ---- ---- ---- 431 471 501 ---- ---- ----   20 20 20 2 2 2 24 27 29 60 67 71 10 10 10 24 27 29 12 13 14 ---- ---- ---- 152 165 174 ---- ---- ----  60 60 60 5 5 5 2 2 2 5 5 5 10 10 10 5 5 5 7 7 7 12 13 14 3 3 3 3 3 3 ---- ---- ---- 112 113 114 ---- ---- ----  40 40 40 3 3 3 5 5 5 6 6 6 4 4 4 3 3 3 ---- ---- ---- 61 61 61 ---- ---- ---- 326 340 350 ---- ---- ---- 106 131 152  46 58 67 ---- ---- ---- 59 74 85 ==== ==== ====P  AB & B PRODUCTS, INC. ADATA FILE: P150QJAN QFEBQMARwenQTOTALQ---pQ---Q---ateQ-----l A SALES GROWTH: @ffffffAR.M. INVENTORY COST %(SLS)?333333AR.M. INVENTORY TURN (DAYS)4C ADIRECT LABOR %(SLS) L? APAYROLL TAXES %(LABOR) > p=ף AFACTORY SUP & EXP %(SLS) = p=ף a- A ADVERTISING = p=ף A COMMISSIONSAL> ATRADE SHOW EXPENSEu=(\ATRAVEL & ENTERTAINMENT< p=ףAPROVISION DOUBTFUL ACTS#= p=ף AINCOME TAXES %?GzHa- ASALES FORECAST: APROD-XYZ UNITS/1000 AA SALES PRICE ($)HD A -CAB UNITS/1000 &AffffffA SALES PRICE ($)C A -SHL UNITS/1000 SA333333A SALES PRICE ($) C A -DIV UNITS/1000@AA SALES PRICE ($)B A -IND UNITS/10000B A SALES PRICE ($)  B !A -DRA UNITS/1000! A"A SALES PRICE ($)"B#a-%ASALES%QACTUAL%QJAN%QFEB%QMAR%QTOTAL&IGh 'A PRODUCT:XYZ 'DN NN N 'DNN  'DNN  (A CAB ( DN NN N ((DNN  (0DNN  )A SHL )8DN NN N )@ DNN  )HDNN  *A DIV *PCN NN N *XCNN  *`CNN  +A IND +hCN NN N +pCNN  +xCNN  ,A DRA ,CN NN N ,CNN  ,CNN -Q----Q----Q--- .ATOTAL PRODUCT SALES: .E N ' .E N ' .E` N ' .aF N  /Q----/Q----/Q----/Q------0AINVENTORY, W.I.P. BEGINNING 0De 0DNN% 0DNN%1AINVENTORY, F.G. BEGINNING1EE 1dENN% 1oENN%3AINVENTORY, W.I.P % OF SALES3 ?3 ?3 ?4AINVENTORY, F.G. % OF SALES4 L@4 L@4 L@5AINVENTORY, W.I.P. ENDING 5DN NN N 5DN NN N 5DN NN N6AINVENTORY, F.G. ENDING 6dEN NN N 6oEN NN N 6{EN NN N 8AINVENTORY CHANGE8HD N N N NN NN N8C N N N NN NN N8"C N N N NN NN N9AINVENTORY CHANGE SALES VAL %9 @9 @9 @:Q---:Q---:Q---:Q----;AINVENTORY CHANGE SALES VALUE ;*DN NN N ;2CN NN N ;:CN NN N ;AD N  <Q---<Q---<Q---<Q----=ASALES & INV. CHANGE SLS VALUE =IE`N NN N =QEN NN N =YEN NN N =aFxN NN N>Q---->Q---->Q---->Q----@QACTUALAQ1980AQJANAQFEBAQMARAQTOTALBQ---BQ---BQ---BQ------CA NET SALES:CIGh CfEN N CkEN N CpE`N N CwaF N  DQ----DQ----DQ----DQ---- EACOST OF SALES: GAMATERIAL COSTS:HA INVENTORY, R.M. BEGINNING H|ENN$ H=E@NN$ H*ENN$ HENN IA PURCHASES INCL. FREIGHT IEN N" N N IDN N" N N IE@N N" N N IE@ N  JQ----JQ----JQ----JQ----KA TOTAL KEN N!N N# KE`N N!N N# KEN N!N N# KF N N LAINVENTORY, R.M. ENDLEL=E@N N"30L*EN N"30L3EN N"30 L3ENN MQ----MQ----MQ----MQ---- NA MATERIAL COSTS NDN N NDN N NDN N N E N  OQ----OQ----OQ----OQ---- QA DIRECT LABOR QD N N QD N N Q#D N N Q*ME N  TAMANUFACTURING OVERHEAD: UA INDIRECT LABORU BU BU B U1B N  VA PAYROLL TAXESV=B N NN N  VIB N NN N  VUB N NN N  V\C N  WA DEPRECIATION-BUILDINGWAWAWA WcpB N  XA DEPRECIATION-EQUIPMENTXpBXpBXpB Xj4C N  YA FACTORY SUP & EXPENSE YrB N N YzB N N YB N N YC N  ZA HEAT, LIGHT & POWERZAZAZA ZB N  [A INSURANCE[B[B[B [B N  \A RENT\B\B\B \B N  ]A REPAIRS & MAINTENANCE]0B]0B]0B ]C N  ^Q----^Q----^Q----^Q----_ATOTAL MANUFACTURING OVERHEAD: _C N N _C N N _C N N _D N N `Q----`Q----`Q----`Q----acE N N N NN NaOE N N N NN NaXE N N N NN Na"F N N N NN N bAINVENTORY,W.I.P. BEG bDNN# bDNN# bDNN# bDNN cQ----YcQ----YcQ----cQ---- dE@ N N dE N N dE  N N d:F N N eAINVENTORY,W.I.P. ENDeD e"DN M e'DN M e,DN M e1DNN fQ----fQ----fQ----fQ---- gACOST OF GDS MFGRD. g9PE@N N N N gAIE@N N N N gIREN N N N gQFN N N N hAINVENTORY,F.G. BEG hVEENN# h[dENN# h`oENN# heEENN iQ----iQ----iQ----iQ---- jlE N N jsE N N jzE  N N jLF` N N kAINVENTORY,F.G. ENDkEE kdEN M koEN M k{EN M k{ENN lQ----lQ----lQ----lQ---- mA COST OF SALES m1EN N N N m=EN N N N mFEN N N N m FpN N N NnQ----nQ----nQ----nQ---- oA GROSS PROFIT oDN M N N oDN M N N oDN M N N oE N M N NpQ----pQ----pQ----pQ----k qAOPERATING EXPENSES:rA SELLING:sA SALARIESsBsBsB spC N  tA PAYROLL TAXES tAN N tAN N tAN N tA N  uA ADVERTISING uB N M u B N M uB N M uC N  vA COMMISSIONS v"dCN M v*pCN M v2|CN M v94D N  wA TELEPHONEw Bw Bw B w@B N  xA TRADE SHOWS xHBN M xPBN M xXBN M x_XC N  yA TRAVEL & ENTERT. ygAN M yoAN M ywAN M y~B N  zQ----zQ----zQ----zQ----{ATOTAL SELLING EXPENSE: {D N N { D N N {D N N {D N N |Q----|Q----|Q----|Q----}AGENERAL & ADMINISTRATIVE~A SALARIES~pC~pC~pC ~4D N  A PAYROLL TAXES A N N A N N A N N `B N  A DEPRECIAITONAAA A N  A INTERESTAAA pB N  A OFFICE SUP & EXP B B B B N  A PROFIT SHARINGAAA pB N  A PROFESSIONAL FEESAAA B N  A PROVISION DOUBTFUL ACCTS 0BN M @BN M PBN M C N  A TAXES, OTHER@A@A@A  B N  A TELEPHONE@A@A@A B N  Q----0,Q----OLQ---->3Q---- 1ATOTAL GEN & ADMIN EXPENSE3 C N N C N N %C N N ,D N N ARESEARCH & DEVELOPMENTA SALARIES* C C C 3C N  A PAYROLL TAXES ;@A N N C@A N N K@A N N R B N  A CONSULTINGAAA YpB N  A DEPRECIATIONSAAA `B N  A LABORATORY SUP & EXPMAAA g@B N  A MISCELLANEOUS@A@A@A nB N  Q----,*Q----61Q----] Q---- /A TOTAL RES & DEVELOP:, utC N N |tC N N tC N N 8D N N Q----#/Q----~AQ----SEQ----#/ATOTAL OPERATING EXPENSE:D N NN NN ND N NN NN ND N NN NN NjE N NN NN NQ----*4Q----*1Q----Q----AINCOME BEFORE INC TAXES CN M N N CN M N N DN M N N DN M N N A INCOME TAXES \CN N `CN N CN N 0DN NQ----0FQ----63Q----#/Q----*1A NET INCOME CN N N N CN N N N CN N N N `DN N N NQ====SUQ====16Q====65Q====;From: APEHUB::SISSY::B_LYONS 27-MAR-1984 13:21 ;Subj: ENCLOSED IS THE RT11 SOURCE FOR A CLOCK PROGRAM...FOR GENERAL DISTRIBUTION. ; updated `CLOCK.MAC' RT11 program ... inputs from field test included .TITLE CLOCK ; CCC L OOO CCC K K ; C C L O O C C K K ; C L O O C KK ; C C L O O C C K K ; CCC LLLL OOO CCC K K ; ; Continuously print the time-of-day on a VT100 ; ; Version 1.2 .ENABL LC .MCALL .GTIM,.PRINT .GLOBL $DIVTK,$DIV60 ESC = 33 EMTBLK: .BLKW 2 TIMIN: .BLKB 4 CVTTBL: .WORD 10. ;Pseudo-divisors .WORD 1 .WORD 0 TIMTXT: .ASCII "[7;10H""#6" HRSTXT: .BYTE 40,40,72 MINTXT: .BYTE 40,40,72 SECTXT: .BYTE 40,40,40 POSTXT: .ASCIZ "AM" HOURS: .BYTE 0 MINS: .BYTE 0 SECS: .BYTE 0 WORDS: .ASCII "[H""[J""[5;10H""#6The Time is "<200> .EVEN START: .PRINT #WORDS AGAIN: MOV #TIMIN,R1 .GTIM #EMTBLK,R1 MOV TIMIN,R0 MOV TIMIN+2,R1 CALL $DIVTK ;R3 now has # of ticks CALL $DIV60 MOVB R3,SECS CALL $DIV60 MOVB R3,MINS MOVB R1,HOURS MOVB R1,R0 10$: CALL CVTASC MOV R0,HRSTXT MOV #HRSTXT,R0 CMPB (R0),#60 ;Check for leading 0 in hours BNE 20$ MOVB #40,(R0) INC R0 CMPB (R0),#60 ;Check for 00:xx:xx just after midnight BNE 20$ MOV #12.,R0 ;Use 12:xx for midnight BR 10$ 20$: MOVB MINS,R0 CALL CVTASC MOVB R0,MINTXT SWAB R0 MOVB R0,MINTXT+1 MOVB SECS,R0 CALL CVTASC MOV R0,SECTXT MOVB HOURS,R0 CMP R0,#11. ;Grater than 11:00 hours is PM BLE 30$ MOVB #120,POSTXT ;Put a `P' in for `PM' CMP R0,#12. BEQ 40$ ;Keep 12:xx for noon time SUB #12.,R0 ;Change to 12 hour time MOVB R0,HOURS BR 10$ 30$: .PRINT #TIMTXT JMP AGAIN 40$: CMPB MINTXT,#60 ;Is minutes = `00' BNE 30$ CMPB MINTXT+1,#60 BNE 30$ MOVB #40,POSTXT ;Use `M' only (not AM/PM) for noon BR 30$ CVTASC: MOV R0,R1 ;Routine to convert R0 to ASCII MOV #CVTTBL,R2 ;Select first divisor CLR R0 CLR R3 CLC CVTPT1: CMP (R2), #1. ;At or past the 1's digit? BLO XCVTPT ;Return if beyond BHI 1$ ;Skip if before INC R3 ;Force 1's digit 1$: CLRB R0 ;Clear quotient 2$: SUB (R2),R1 BCS 3$ INC R0 ;Increment quotient BR 2$ 3$: ADD (R2)+,R1 ;Undo underflow; point to next divisor ADD #60,R0 ;Make it ASCII SWAB R0 BR CVTPT1 ;Next digit XCVTPT: RETURN .END START This FOCAL kit only installs what is neccessary to run the FOCAL language. However, it also contains all source files and some examples. To access these you should restore the save set (FOCAL.A) to a subdirectory as convenient. BUILD.COM builds FOCAL.EXE in the current directory, and also a help library, FOCAL.HLB. If object modules are available they are used, otherwise it builds from the sources. Note that to do this you will need the optional BLISS compiler. If you have MMS and prefer to use it, there is also a MMS descriptor file. The LIST.COM file produces a listing of all FOCAL source components. The file DO.COM is used by BUILD.COM in the build. FOCAL is inserted into the DCL tables using FOCAL.CLD, on a system wide basis by the installation procedure, so that it may be used in a DCL command with a file specification, e.g.: $ FOCAL filespec FOCAL uses help libraries in the following way. If there is a logical name FOC$HELP then this is used as the help library. If this name does not translate then the system help library is used instead, that is SYS$HELP:HELPLIB.HLB. The FOCAL help text (FOCAL.HLP) is inserted into the system help library during installation. Providing an alternative FOC$HELP allows for help in other languages than English. If neither library is available, or does not contain help on FOCAL, then no help is available from within FOCAL. This latest version of FOCAL uses the VMS message file facilities. To substitute other messages, or messages in a different language, the file FOCMSG.MSG may be edited and either used in a rebuild of FOCAL or used to create a per-process message file. See the chapter on the message compiler in the Utilities manual for more details on this. More message codes may be added, but none should be removed because they are referenced in many places in the code. Compilation parameters control the maximum number of subscripts allowed on arrays, and the maximum depth on help files. Another parameter controls how return nesting works when a jump is made outside the range of a "DO" subroutine. There are also parameters (in the DATMAN module) to control the size of the hash tables for simple variables and arrays. Since array search time will be hardly affected by the array hashing, there should be no reason to change that parameter. Very large programmes, for which FOCAL is not suitable in any case, may benefit from an increase in the simple variable hash table size. The .FOC files are mostly my test programmes, but some may be useful as examples. FOPR12.FOC is a translation of the Whetstone benchmark. FOCAL is an interpreter rather than a compiler, so for computational programmes it executes much slower than Fortran. However, for simple programmes FOCAL can have executed them before the FORTRAN compiler could have compiled them! 1 FOCAL  FOCAL is not a DEC product.+ It is an interpretive interactive language1 It was written for VAX in MACRO-32 and Bliss-32.. In many aspects it is similar to FOCAL-8, but( there are both omissions and additions.5 See FOCAL.DOC for imformation on how to set up FOCAL on your system. (Dave Monahan)2 Syntax0 Lines input to the Focal interpreter are either, immediate commands or additional lines for / the stored programme. If a line does not start0 with a line number it is an immediate command.4 Focal does not distinguish between upper and lower4 case except in quoted strings, or variables holding text. 3 Variables2 Up to 4 characters are allowed in variable names.4 The first character must be alphabetic and not "F".2 The rest of the name may contain any alphanumeric2 characters. Variables may be subscripted (arrays)1 and the subscripts may be any legal expressions.5 Up to 3 (assembly parameter) subscripts are allowed.3 The first reference to an array decides its number- of subscripts, and a later reference using a2 different number of subscripts will be flagged as illegal by FOCAL. Legal variables: ITEM A AR3(5,X) Illegal variables: FRED (starts with "F") 9NY (starts with digit)' AR3(5,AR3(5)) (number of subscripts) K2@3 (non alphanumeric) 3 Expressions' Operator precedence in expressions is: 1)Unary minus 2)Exponentiation (^) 3)Division 4)Multiplication 5)Addition and Subtraction9 Otherwise priority is left to right. Order of evaluation/ may be altered or made more clear by brackets.8 Expressions are acceptable in most places where a value2 is required. The major exception is as a label on3 programme text, where it could be confused with an9 immediate mode command. To avoid confusion with A format6 do not start an expression in format control with "A" (use "0+A..." instead).3 Line numbers/ Line numbers have the form of a decimal number, with two digits before and two digits after* the decimal point (e.g. 23.17) The digits, before the decimal point are referred to as0 the group number. Leading or trailing zeros may/ be omitted (e.g. 01.10 may be entered as 1.1).1 Several commands that take line number arguments6 (such as DO or ERASE) will also take a group argument/ (fractional part equal to 0) to mean all lines5 with that group number, or zero to mean all lines in the programme.E 3 Commands3 Commands start with an imperative verb (e.g. TYPE)5 which may be abbreviated to a single letter (e.g.T).6 They usually have arguments (for these see individual commands).3 Several commands may be placed on a line separated by a ";".* Each command has its own detailed syntax.4 Ask2 The ASK command gets input from the current input/ stream. It may include a quoted prompt. Format3 modifiers may be used. Numeric formats will accept- only valid numbers. Alpha formats accept theH. specified number of characters (up to 4) into each variable.1 See TYPE command for formats.& example: ASK 'Give a number ',%6.03,I4 Begin 4 The BEGIN command switches INPUT, OUTPUT or COMMAND2 stream to the specified channel number. The ERROR/ stream may not be switched to another channel.  example: BEGIN INPUT XI 4 Comment"1 COMMENT statements are ignored. They may contain  any text including ";". - example: C -- this is a comment; so is this. 4 Do6 The DO statement calls a FOCAL line or group of lines as a subroutine. example: DO 34 Erase 2 The ERASE statement erases lines, groups of lines0 or the whole programme text. There is currently# no facility for erasing variables. # example: ERASE 2;C deletes group 24 For 3 The FOR statement initialises a loop. The form is: ! FOR var=start,end,increment;... / The variable is initialised to the start value 3 and incremented by the increment value (default 1)E0 until the limit is reached. Negative increments* may be used. The increment defaults to 1. example: FOR I=1,10;DO 2 4 Goto5 The GOTO statement switches control to the specified . line or group (or starts the whole programme) example: GOTO 22.634 Help5 The help command obtains on-line help from the FOCAL  help library.< example: HELP SYNTAX COMMAND FOR;C -get help on FOR command (keywords may be abbreviated). 4 If 2 The IF statement tests an expression and switches& control on the result. The format is:$ IF (expr)line1[,line2[,line3]];...( The order of the lines use is -ve,0,+ve2 If line numbers are omitted control drops through to the next statement. $ example: IF (X-7)2.3,2.4;T "X > 7"!4 Klose 2 The KLOSE statement closes the specified channel.1 It is not possible to close one of the permanent14 channels (see File Handling). If a stream is active0 on the closed channel it reverts to its initial default. example: KLOSE Xr4 Open: The OPEN statement opens a named file, creates a channel,9 and assigns the channel number to a variable, to be useds3 in later BEGIN or KLOSE statements. The format is:n" OPEN [INPUT ] var="filename";... [OUTPUT]o! example: OPEN INPUT X='FRED.DAT'(4 Quit4 The QUIT statement returns control from a programme to command level.) example: 01.45 QUIT;C - end of programmes4 Return5 The RETURN statement returns one level of subroutine call as called by DO command. example: 01.10 DO 2 01.20 QUITs 02.10 c---u . . . 02.57 RETURNr4 Setr2 The SET statement sets a variable to the value of an expression. The format is: SET var=expr;...r example: SET VAR=X^2+2X+14 Type4 The TYPE statement prints variables, quoted strings4 or expressions on the current output stream. It may% also include formatting expressions:l( %Aexpr sets a number of ASCII chars to) subscripts are allowed.) output for each subsequent expression.i0 %expr Integer part sets size of numeric field.( Fractional part sets number of digits) after the decimal point (e.g. %06.02).L % sets floating point format.  ! causes new lines # causes carriage return.t/ example: TYPE %6.03,X+Y,Z," ARE THE ANSWERS"!!)2 Note that a format expression sets the format for0 the stream until the next format expression. If0 an ASK or TYPE does not do what you expect, try resetting the format first.4 Vanish5 The VANISH statement allows return of a status valuel5 to the VMS system. FOCAL exits with the value maskedm into its exit status.0 example: VANISH 24; C-tell system what happened4 Writel2 The WRITE statement prints programme text (lines,- groups or all) to the current output stream.  example: WRITE 2m 3 Functions / FOCAL supports a number of built-in functions.e+ These all have names beginning with "F" to0. distinguish them from variables, for which an+ initial "F" is illegal. They are called bym+ giving the name, followed by any argumentsa in brackets, e.g. 01.30 SET X=FSIN(Y)i3 calculates a sine function. If a function requirest. multiple arguments separate them with commas.4 FSIN2 Takes 1 argument and calculates the natural sine. e.g. FSIN(3.14)i4 FCOS4 Takes 1 argument and calculates the natural cosine. e.g. FCOS(0) ...returns 1r4 FATN4 Takes 1 argument and returns the natural arctangent e.g. FATN(1) ...returns pi/44 FLOG3 Takes 1 argument and returns the natural logarithme e.g. FLOG(X)4 FEXP: Takes 1 argument and returns its exponentiation to base e e.g. FEXP(0.1)4 FSQT- Takes 1 argument and returns its square rootv e.g. FSQT(9) ...returns 3a4 FABS6 Takes 1 argument and returns its absolute value (+ve)4 FITR8 Takes 1 argument and returns the nearest integer value.4 FNCR8 Takes no arguments and returns the number of characters& read in the last A format ASK command+ e.g. 01.10 ASK 'Give a string ',%A,I,J,K,Lh5 01.20 TYPE %6.00,'You typed ',FNCR(),' characters'!c4 FSGN: Takes 1 argument and returns +1, 0 or -1 depending on its5 sign and value. 0 is returned for an argument of 0. e7 Otherwise 1 is returned for a positive argument and -1n for a negative argument.a4 FRAN6 Takes no arguments and returns a random number (using$ the VMS clock). The range is 0 to 14 FRND6 Takes no arguments and returns the next random number : from a pseudo-random sequence. Note that FRAN will change: the starting point of this sequence. The range is 0 to 1.4 FTXT8 Takes 1 quoted string argument and returns its internal' value. I may do this better in future.r$ e.g. IF (A-FTXT("YES"))1.7,1.6,1.74 FUPR4 Takes 1 argument, treats it as a text string value,- and converts lower case characters to upper.s# e.g. ASK %A,TXT;SET TXT=FUPR(TXT)t2 File-Handling./ The FOCAL I/O commands (ASK, TYPE, WRITE), theu - immediate mode input, and any error messagesu are directed to "streams".e1 At any time a stream is directed to a particularn/ open "channel", though it may be redirected to + another open channel by the BEGIN command. 1 The OPEN and KLOSE commands operate on channels. / Streams are identified by name, INPUT, OUTPUT,l- COMMAND (and ERROR). Channels are identified/ by a number assigned by FOCAL when the channelO is opened. 3 Streamsa3 FOCAL handles 4 current I/O streams: INPUT, OUTPUT7 and COMMAND which may be redirected to other channels,n( and ERROR which has a fixed assignment./ The INPUT stream is used by the ASK statement.i6 Note that the ASK statement does a "read with prompt"/ so prompt text does not get printed if you area reading from a disk file.6 The OUTPUT stream is used by TYPE and WRITE commands.5 The COMMAND stream is used by the top level of FOCALn0 for accepting programme text and immediate mode commands.closed channel it reverts to its initial9 The ERROR stream is used to output FOCAL error messages.m/ When a stream reads to end of file on an inputs. channel that channel is closed and the stream% redirected to channel 0 (SYS$INPUT).. 3 Channels0 There are 3 permanent channels, 0 is SYS$INPUT,. 1 is SYS$OUTPUT, 2 is SYS$ERROR. Channel 3 is5 opened and used for the command stream if an initialr) file is specified in a DCL command line. 4 Initially INPUT and COMMAND streams are directed tot returns one level of subroutine5 channel 0 and OUTPUT is directed to channel 1. ERROR2$ has a fixed direction to channel 2.; Other channels may be opened to named files using the OPENe1 statement which returns the number of the opened  channel to a FOCAL variable.;0 A channel may be freed for re-use by KLOSing it6 If channel 0 reads to end of file (^Z at the terminal6 or line starting with "$" in batch) then Focal exits.3 The maximum number of simultaneously open channelsIchars to) subscripts are allowed.5 is an assembly parameter, but is currently set to 6.n2 New Features2 There are several features added compared to some" simpler implementations of FOCAL./ They are detailed elsewhere in the appropriatet2 section of help, but listed here for convenience.9 %An format operator for ASCII I/O (see TYPE for syntax).t Additional intrinsic functionsh3 4 character variable names and multiple subscriptss HELP commandS VANISH commandt 2 Omissionspt, try resetting the format first.4 Vanish2 There are many versions of FOCAL and no standard,1 so this list is with respect to FOCAL-8 which ise' the one with which I am most familiar.p. There are several other versions in the DECUS/ library, as well as the DEC products FOCAL 15,i RT-11 FOCAL, etc.. & Please feel free to add to this list. 3 MODIFY 5 -If you want to do more than simple line replacementn7 use the SOS or EDT editors. Note that FOCAL (like DCL)d5 uses VMS Print format files, and editing these loses0 the carriage control because the editors do not understand them.l3 TYPE $4 -Of dubious value to type the symbol table when its2 size is only limited by the virtual address space 3 "?" Tracer2 I never got round to this one. I forgot it when I0 designed this, and to add it now (or even if it0 had been designed in) would severely impact the0 speed, because of the current use of VAX string. instructions in-line for the syntax analysis. 3 LOCATIONS nt e.g. FATN(1) ...returns pi/40 The memory addresses that FOCAL-8 gives on this3 command would not be useful on VAX. Besides, othern, versions of FOCAL use "L" for other things. 3 "*" Command 3 The file commands implemented are more suitable to8 the VAX environment than this simple way of redirection of I/O to paper tape.2 Stored ProgrammesT9 Programmes may be saved in disk files, and then restoredN7 later for execution. For example the current programmee& may be saved in the file PROG.FOC by:+ FOC>OPEN OUTPUT XX='PROG';C Open the fileh, FOC>BEGIN OUTPUT XX;C Switch stream to it$ FOC>WRITE;C Output the programme& FOC>TYPE "GO"!;C Run it when loaded! FOC>KLOSE XX;C Close the filer" The programme may then be run by:* FOC>OPEN INPUT YY='PROG';C Open the file5 FOC>BEGIN COMMAND YY;C Read it instead of terminaln or by the DCL command:  $ FOCAL PROG2 Note that the TYPE command when the programme was0 saved added an immediate mode GO command to put 4 the programme into execution as soon as it is read.3 If FOCAL already has programme lines in its bufferg3 the new programme will be merged, unless you do an 3 ERASE at the terminal, or have one at the front ofr the programme file. 4TIPPEE ;RECHNE ERRORC ;U- ;U- ;j#$).6 "~< px+H+++~+"+?r+<+RKPTLf f Mw w w w w w w xw h ;;=SHORT FINERR ;CR=DUMB C:FOCAL-11S V1-B (RT-11) 08-JAN-76O  H  ^ d  4 ~ p ~(P: TZD ~'^('$ t f ( 8  t  `   fz   z4 +-/*^([<)]>,; =%"!#$}  X  4PP DFXIBTZVOCMISX GdHReNeT A$W` D@Z&&&&I074*& @RvN 'NezwB7E&  ȋ  6&  E .7 7 \ 3=1xq7  6 > `h^j2!*҉U$7 t7 r e    F& ?  ATA  7 7 7 7 & U$ f7= --* wЉ -1!PCX v"d w 톖 w # Ĕĥ E7&7 (‰AbeJwN6whw  ĥ. ĥF E0:QA ы A AcEADы7O ĥAf 73%D9w"Հw 6,d$DDL0 B  ЉjE%e w q\i7c\<  D D% h-~pd5` ] Z&ĥ 7 -L<  x7 7=7 ĥ&7 7 $ĥĥ_ ĥ-^U   7twoĔĥ? b 77Z Ĕ E6 ce6BAd C `C ,e   ` &  9  ĥAĥXAZ  45  l q  $ &U 7%ĔB?x UwlV & Ĕĥd  g TĥA   ‰  8@7 <&HF S.r $E,w" " P!d  3 !&  2eĥ* Ĕ3_[ 7x~e F Ĕ44& & & @33 , v$Ĕ [ bĔ e     7 e   ]  N eEeV1@aW fw >&z& (FX@5  䇪=V1 E a&fz E( f  @> 0!̂a !&= w&A큗  & f60U&9v  U9v E>   mb mZ  ! V#Q ee eJ   e N#9%6 ,e P`  `w " " " "    &%Ĕ ,e jLff? b  Dne6 9W efAf9@=։,e  lj f @E!e w@f&N 5*9W w58N J5ʉȋ$Z!ċ 3t ' hҕ= 2! Z!ˉF2!ĉ6e7|ԉʉp2!e  Pʉ2!N  &ȉ7N  ʼnN 4ȉ 7ʉ55N UN UN  N 5F 7 pIFj!Z !V!ʉpʉ5 &0 ΉỦ 7,,0 U !:  e 9E ʉ0 5 Ήw E (& 7 JCw>6  f7 ' 7 p񚉇2!ȉʼn7 fʉ " \-XMHA w>ʉ̉ȉp0  e  Dɉʉ  eƉPeJ7F҉ bAdA=>6@a Y<N%7 wh1 Vw E eH $ % 7 w^5& &ȉʉEMm& m e& ʉ5@ 4>!'ʕ9  e >f0H  N  e0R f&ʉ55@ÉW ̉ ΉD` pf&ʉ55@ÉW ̉ w L pl!U & &ȉ *ʉU@flʉ U =J  x7 :& ՝wN 5 8 ĕC㋰47e"   -ĥwĔĥĥ"  <OBIDT"6   w  9 B S  z w  & " E ! 2!ȕ 7e   &w & Ee 2! ȕ   7^&f&3E@.첉=%C @9w첉 E-  X&  E-: 4  0  m eQ B@;&  $ & 2.  f -- `@ $E+-  e09De0  39=< &2e .3? d   e 6-0& - ?&f&    ċ ) %.EE&t3=   E39`@&  &  e <9 _ߋE=E*:32!0A ( =3=&4 eex fBJ,~JW &   Ɖb~9 Jĉ2 2!ȕ 0 #  ƉJb~ ĉ2!ȕ 0  x$< ` 2! ȕ p" f e E&  7jd7`6ԉfE Հ ` w 2p  ef e E!w p   5?  @7҉& ef0w!*/S DEDE (5B)=B涉 U% U%w!ڇB,B =S &= @j涉 w  ->7   e0'd @H 7 9L A A A A J =G杭w v巕岉=fi岉9&D7Q=w * *34&ĕ 9f& ĥ  5#MM9Nĥ9EE AA= 5AA7 ҉w e E&  mmm!& H,e7H( 77U $*&,\%EeH e0%-Ee!-E e0% Dⲉ? w6 JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DECEf,e "ft Hpt wBZ wR:"f7'$A 3=1 1e 0 "7 t  7 "w0 t 7 "e } W!wn "} V & t`@  87D* $  &f@A &,e # #9fW "pW m$1 @He t"H @" e Hr,5 2!p5 9W )r 9r9r"%e%   ω9 [" e ω&p 9 p09f9p =H& f @ @ c@ ,5 c@ @ f @ @ e@ ef& 8%ω9B- ω2  2 FOR CHANNE,5|%pfAw  |%1m1q m& 1, 1, H,5 |%0 B,@H J,5눇  @`eq   H ,5 w |%w, w,w ω 9,e 2'&@&z@`7 p$7 h!7hbPD 7VP@`7 N7DH@`D 74ބ'!P ȭ~ nЋ0 Ћ0  !Pы !P  m w ((  7 77z݀ w &-؂ &!eP % v "&!P m07 (&݁ w z 6Нv   !Ղ @ e!eP7@ w&ffW@ E@ W  *6܂x>)N)R)V)^)f)l)t)z)@ee  @e@@e7ˉ9 )^)*)))))* ~*^*~3*^) ~*^*z3*^) ~*^*2*^) ~*^*1*^) \7 <* *)*)^*)*.**-4**)^*r*)*-*~*^*.**^*"*)4*)^*"*)7\\  H.  0/  \ \^ 7ڟ U\e\\\ \ \ \ځv\ \F  \\ T\ \B+* +<+D+T+B+l+-d5\7 n^-+v^  @ Eڇ U ڇ&f7 .*^h+^0J1,0 0H.D.0/ &f&w ^^T م7م ʉf͋ɉ@ ,fx,V",F,",,-b--H HV RRU$ $V  a RR  UBEB@ BA ɉ Uu  ep  @̉uΉBm^&&GbG ! w V;Z-j j  w Vw 9J U w =Z- w =w 0V xH   Nw z9J @  (w T9EJ E  @%  @ %   &\\6 6 &  f 6A  v  6N\& Dr)&&\   5@5@ z3.~32..1....1~31~31~31~3...1~3/1/0/f&\  \& \\r1@\[?\ eω?U?*@ڪAD e C_  fW & @&&&& /1-/./2z3/1~32~3~32/~3/1/e\\;@\ \N @   =@f&ysE[\pCf&f&\% a @ʉˉ  D& &&@ ~380D& && 6  A 20 1z300 10z3000101~31~31~31~31|0 e\ \S\ e& @ ~30`0e\0f& \:יc&>X4%]@D C %     @  f&\fE@͉  2  бC  B e@&  Aaa C C Aa@ aA B   C A   A @ @A& &CBf @ E   E `ʉˉ  9e  &  @  @ CaB a@ CaB a   C B CA eC`B \@A& &f Qf KN @@ʉ?=e  ! C D.3 DDC D@ C @ %83 ` ` D@ B \ˉ  ̉ @e@A& &e&f . 1fABAD5 a C%!e e B V  B\E CP   D a@ C`B `%ֆ C ӆBEІʉ  %C ‹Á  C B ‹ B ˉ     0 FREE SPACE (ABLE TO BE ALLOCATED) ; -1...-128 SYSTEM CODES ; ; 1...127 USER AREA (USER ASSIGNED NUMBER) ; ; THESE OWNER CODES PROVIDE FOR SELECTIVE RELEASE OF MEMORY WITHOUT ; PRECISE INFORMATION ON THEIR LOCATION. ; ; THE MANAGEMENT SYSTEM PROVIDES FOR ALLOCATION, STATUS, ; AND DELETION OF MEMORY OWNERSHIP. ; .GLOBL IDENT ;HOLDS ID * Supercomp Twenty Help FileQ!! 21 General Help (automatically invoked by pressing in value mode2 Supercomp Twenty V1.22 RT-11= (C) Copyright 1981, 1982,1983 Access Technology, Inc.+Help is available for the following topics:A {ZI}INTRODUCTION - Intro to How to Use Supercomp, for beginnersD {ZS}SPECIAL KEYS - Description of the use of each Key in Supercomp9 {ZV}VALUE - Entering Values, Labels and FormulasI {/}COMMAND - List of Commands, how to invoke them, how to use them> {>}GOTO - Moving the cell-cursor about the WorksheetC {ZR}RECALCULATE - Telling Supercomp to Recalculate the Worksheet@ {E}EDITING - Modifying a line while you are typing it, orA modifying the contents already stored in a CellFPress: - to select the topic you would like help with8 - to obtain Help with that topic5 - to return to your Worksheet!!ZV 20LIn VALUE mode Supercomp expects you to enter a number, a label or a formula,%followed by carriage-return ( ).EYou may edit what you are typing in (that is, modify it) by using the0editing keys, which are described under EDITING.DWhen you type , Supercomp will enter the value, label or formula<you have typed, into the current cell of the worksheet. TheDcoordinates of the current cell are indicated in the upper left handBcorner of the screen. The old contents of the cell will be erased!when the new contents are stored.DIf you have changed your mind and do not wish to change the contents=of the current cell, type until there are no characters2following the prompt "VALUE or / :" on the screen. Additional Help:= {VN}NUMBERS {VL}LABELS {VF}FORMULAS {E}EDITING {!}GENERAL HELP!!/ 18DTo enter COMMAND mode from VALUE mode, type the single character "/"Ain response to the prompt "VALUE or / :". (You can always obtain>this prompt by pressing until it appears on the screen.)?In response to your typing "/" Supercomp will prompt you with:0 COMMAND (B,C,D,E,F,G,I,M,O,P,R,S,T,V,W,X) :=Press the single key corresponding to the command you wish to@execute. Additional help is available for each of the commands:7 {B}BLANK {C}CLEAR {D}DELETE {E}EDIT7 {F}FORMAT {G}GLOBAL {I}INSERT {M}MOVE: {O}OPTION {P}PRINT {R}REPLICATE {S}STORAGE: {T}TITLES {V}VERSION {W}WINDOW {X}(X)EXITAInstead of typing "/" in response to "VALUE or / :" you may type4certain special keys (such as the arrow keys). See:/ {ZS}SPECIAL KEYS {!}GENERAL HELP! !VN 22@To enter a number into a cell, type the number followed by .#Some examples of valid numbers are: 1 -.00045 12.77e-5 ( actual value: .0001277 )5 -6.2E3 ( actual value: -6200 )?Also, you may type an arithmetic expression, and Supercomp will>evaluate it for you, and store the result in the current cell. For example,A If you type: Supercomp will enter in the current cell:" 1 + 27 * 2 55+ MAX (100/7, 250/17) 14.70588235# SIN (30 * PI/180) 0.5FRemember that internally Supercomp retains about 15 digits of accuracyCfor every number, while on the worksheet, you will only see as manyAdigits as are allowed by the FORMAT in effect for the given cell.Additional Help:> {F}FORMAT {ZV}VALUE {VL}LABELS {VF}FORMULAS {!}GENERAL HELP! !VL 22DInstead of entering a number or formula into a cell, you may enter aDLABEL. A label may be up to about 250 characters in length, and mayEcontain any characters you choose. You must type a special characterD(usually either a single quote (') or a double quote (") ) preceding?the label, to tell Supercomp how you would like the label to bedisplayed on the worksheet.GThe single quote (') tells Supercomp to "left-justify" the label. ThisCmeans the label will be displayed beginning at the left edge of the@cell it occupies. If the label is longer than the width (on theBworksheet) of the column it is in, Supercomp will extend it to the<right into adjacent cells, as long as those cells are empty.BThe double quote (") tells Supercomp to "right-justify" the label,$when displaying it on the worksheet.AThere is another type of label called a Repeating Label, which isDuseful for drawing lines across the worksheet. See Additional Help.Additional Help:E {VLR}REPEATING LABELS {VF}FORMULAS {VN}NUMBERS {ZV}VALUE {!}GENERAL HELP! !VLR 22DA REPEATING LABEL is actually a single character that you place in aBcell, which Supercomp will copy, or propagate, to the right acrossAthe worksheet. You precede the character by a backslash (}. For example, if you type: * Cin response to the "VALUE or / :" prompt, Supercomp will display anCasterisk in every character position of the current cell, then willCextend the string of asterisk as far as it can, until it is stoppedAby the right margin of the worksheet, or by an occupied cell. In>response to the above entry, you would see a row of asterisks:C *********************************************************1on your worksheet, beginning at the current cell.AA special case of the Repeating Label, called the right-justifiedBRepeating Label, is entered using a double quote (") following the%backslash. If you enter: "* ,into a cell, you will see on your worksheet:A ******* ******* ****** ******* ******* ******* *******?Supercomp has left the leftmost character position of each cellCblank. This type of Repeating Label is very useful for underlining@columns of numbers (usually using the hyphen or underline char).Additional Help:$ {VL}LABELS {!}GENERAL HELP! !ZI 22@ You can learn the basics of using Supercomp in a few minutes,Busing nothing more than this Help text. Once you know the basics,Byou can use this Help text further to learn how to use Supercomp's@"commands." In no time at all you'll be creating advanced work->sheets -- also called "models" -- that will help your business?to do sophisticated financial planning and forecasting, regularAaccounting (Profit & Loss, cash flow, balance sheets, and so on),-and financial report generation and analysis.@ Later, by referring to the outstanding tutorial guide "How to@Use Supercomp" and to the "Supercomp Handbook," you'll learn howBto use Supercomp's more advanced features. You'll obtain the full@power and assistance of your computer in performing the businessAplanning operations important to your business, and in displaying@your reports, plans and results in a most useful and presentablemanner.@ If you have not used Supercomp before and would like to learn@now, press HELP to continue. Otherwise press TAB, then HELP, to return to the General Help text.: {IN2}INTRO - 2 {!}GENERAL HELP! !VF 22AYou may enter a FORMULA into a cell by simply typing the formula,Dfollowed by . The formula is just an instruction to Supercomp,>telling it how to determine the value that should be placed inAa given cell. Each time Supercomp recalculates the worksheet, itAevaluates every formula, and places the resulting value (which isAusually a number, but may be a label, or sometimes "ERR" or "NA")into the corresponding cell.@Formulas are constructed by combining constants, operators (suchCas + - * / ), references to cells, and references to functions.AHere are a few sample formulas. For further details, consult theAdditional Help." Formula ValueC [2,7] + 5 Contents of cell at column 2 row 7, plus 5" 4 * IF( [5,5] = 3, [1,2], 7)D If the contents of cell [5,5] equal 3, thenD 4 times the value of cell [1,2]; otherwise# 4 times 7.nA SUM ( [2..4,1]^ 2 ) The sum of the squares of the numbers ini: cells [2,1], [3,1], and [4,1]Additional Help:A {VFF}FUNCTIONS {VFO}OPERATORS {VFR}RANGES in formulasc' {VFE}ERR and NA {!}GENERAL HELPw! !> 21, GOTO -- '>' key or (PF4) keyKIn response to Supercomp's "VALUE or / :" prompt, you may press the ">" key M(also called the GOTO key). This informs Supercomp that you wish to move theOKcell-cursor to some other cell on the worksheet, and make that new cell theO0"current" cell. Supercomp will prompt you with: GOTO (c,r):T@Type the column number, followed by a comma, followed by the rowDnumber, of the cell you wish to move the cursor to. The cell-cursorAwill move to that cell, and you will be able to examine it and/or @change its contents. Note that Supercomp will move the "window"?through which you are seeing your worksheet horizontally and/or)<vertically as necessary, to bring that cell onto the screen. Additional Help:' {KA}ARROW keys and PAGE (PF3) key9 {W}WINDOWS {ZS}SPECIAL KEYS {!}GENERAL HELP ! !I 17I - INSERT8This command inserts a new blank column or row into your-worksheet. In response to your typing: / IiSupercomp prompts:' INSERT COLUMN OR ROW (C,R):e8Use the Arrow keys to position the cursor, then type "C":to insert a column, or "R" to insert a row. The new blank8column or row will be inserted just before the column or8row you placed the cursor in. The remaining columns (or:rows) of the worksheet will move, to make room for the new7column (or row), so Supercomp will automatically adjustw:all formulas on your worksheet to account for this change. Additional Help:; {DIM2}INSERT - 2 {M}MOVE {!}GENERAL HELPG!R!M 22 M - MOVE9This command allows you to Move an entire column (or row)t8of your worksheet, to another position on the worksheet.:To Move a row, type: / M and when Supercomp prompts:* MOVE COLUMN OR ROW (C,R):9position the cursor (using the Arrow keys) to any cell in(:the row you wish to move, then type "R". Now you will seethe prompt: TARGET ROW:8You now type the row number telling where you would like;this row to be moved to. Remember that when the row is re-L:moved from its present location, all following rows on the:worksheet will be moved back, as if you had done a DELETE.<Then the row that was removed will be inserted at the TARGETROW position you selected.6After the Move, all formulas on your worksheet will be;adjusted to account for the Move. This can lead to illegalZ<formulas; so be sure to check the Additional Help categories:"MOVE - 2" and "DELETE" to find out what to do about this. Additional Help:d6 {DIM2}MOVE - 2 {D}DELETE {!}GENERAL HELP! !P 22 P - PRINT0;You may print (to your line printer, or to a file which you;may later list on a line printer), either the values of anyp;rectangular portion of your worksheet exactly as they woulde;be displayed on the screen (this includes column-widths andl;individual formats of cells), or you may Print the formulas 9for a rectangular portion of your worksheet. You receive(the prompt: Print (V,F):8and you type "V" to select "Print Values", "F" to select"Print Formulas".v5Print Values is extremely useful for producing nicelymformatted reports.9Print Formulas is useful for obtaining a hardcopy listingn:of the formulas of your worksheet. If you print to a file:instead of to the Printer, the formulas will be saved in a:format that can be read back using the STORAGE C command.9There is additional information in the HELP for "OPTION".n5 {O}OPTION {S}STORAGE {!}GENERAL HELPu!t !ZS 22aASome of the keys on your terminal's keyboard have been designated(?as SPECIAL KEYS. Each of these keys tells Supercomp to performh<some particular operation. Within this Help text as well as@throughout your Supercomp documentation, these keys are referredto by the following names  (Help is available for each):@ {KB}BACKSPACE {KB}DELETE (PF1) {KH}HELP (PF2) {KH}TAB% {KA}PAGE (PF3) {KA}ARROW KEYSp9 Three other keys also sometimes have a special meaning:o {ZR}SPACE {>}> {KS};q?Check the help text available for each to learn what these keysy@do. If the locations of these keys are not clearly indicated on<your terminal's keyboard, consult your system manager or the.person who installed Supercomp on your system. Additional Help:% {E}EDITING {!}GENERAL HELPM!S !ZR 19UDIf you press the SPACE bar in response to the "VALUE or / :" prompt,BSupercomp will Recalculate your worksheet. That is, it will eval-Auate every formula of your worksheet, and place the result in ther?corresponding cell. You can also tell Supercomp to recalculateeByour worksheet every time you enter a new value or formula for anyBcell. You do this using the GLOBAL ( / G ) command, and selecting1option "R" (which stands for "Recalculate mode").fAYou can also tell Supercomp the order in which to recalculate theeAcells of your worksheet. You do this by selecting the "O" optionwAof the GLOBAL command. You may tell Supercomp to recalculate the*?cells in column-wise order, or in row-wise order, instead of inhBthe "natural" order you would use yourself. This can be useful inscientific modeling.5For further information, consult the Additional Help:g: {G}GLOBAL {ZS}SPECIAL KEYS {!}GENERAL HELP!l!V 11V - VERSION :This command tells you the Version number of the Supercomp8Twenty program that you are currently using. You should;refer to this Version number in all correspondence concern-uing Supercomp Twenty.u Additional Help:4 {/}COMMANDS {!}GENERAL HELP! !X 16 X - EXIT7This is the command you use to eXit from Supercomp. Iff6your worksheet is important to you, you should save itbefore exiting.tSupercomp will prompt you with:a EXIT (Y or N):.You may type "N" (or ) if you have change"your mind and do not wish to exit. Additional Help:4 {/}COMMANDS {!}GENERAL HELP! !KB 20e- BACKSPACE -- BS key C BACKSPACE is used to tell Supercomp that you do not wish to Crespond to the present prompt, or question, on the screen, but thattByou wish to go back to a previous question, or all the way back toBthe "VALUE or / :" prompt. You may press the BACKSPACE key at anyCtime, even if you have already begun to answer the question. Pressc?the BACKSPACE key until you are at the prompt you wish to begin =again from, or until you are all the way back at the startinge"VALUE or / :" prompt.- ERASE -- Delete key or, (PF1)eCIf you wish to simply erase a character on the line you are typing,.Duse the ERASE key. This key will erase the character at the presentBposition of the blinking cursor. (To learn how to move the cursor9back and forth on the edit line, check the EDITING help.)y Additional Help:; {E}EDITING {ZS}SPECIAL KEYS {!}GENERAL HELPm! !KA 20h, ARROW -- the four arrow keys@ PAGE (PF3) -- NEXT SCREEN key or PREV SCREEN keyOThe ARROW keys are used to move the cell-cursor about the worksheet one cell at Oa time. Pressing the PAGE key before an ARROW key, will move the cursor a fullgM"page" at a time -- that is, by an entire "screenful" of cells, to the right, Nleft, up, or down. Experiment with the ARROW keys and the PAGE key, until youOare comfortable with them and understand what they do. Be sure the "VALUE or / K:" prompt is on the screen, with no characters following it, when you start Nyour experimenting -- because these keys have a different meaning when you are&entering or changing (EDITING) a line.DBe sure to check "EDITING" for further information about these keys. Additional Help J {E}EDITING {ZS}SPECIAL KEYS {>}GOTO (PF4) {!}GENERAL HELP!i !KH 18<The HELP and TAB keys are used for accessing this Help text.:You may press the HELP key at any time, and Supercomp will=display Help text applicable to the command you are currently >executing. If you are in Value mode (responding to the prompt9"VALUE or / :" ) you will receive the General Help, from>7which you can obtain all other Help Supercomp contains.m<After you have pressed HELP, besides Help text there will be:several other categories of "Additional Help" listed. YouAmay press the TAB key or the ARROW key as many times as necessaryeA to select which category of additional Help you would like, thenr,press HELP or DO to have the text displayed.=When you wish to return to your worksheet (when you no longer 4wish to examine Help text), press the BACKSPACE key. Additional Help:0 {ZS}SPECIAL KEYS {!}GENERAL HELP! !E 21y>EDITING means changing what you are typing in, or changing the@formula, number, or label presently contained in a cell. If you>are typing something in, then you are already in Editing mode.<If you have the "VALUE or / :" prompt on the screen, with no>characters following it, and you wish to enter Editing mode to=edit the contents of a cell; then position the cell-cursor toR@the cell you wish to edit, and type "/", and then in response to=the "COMMAND" prompt, type "E". This will place the contentsk;of the current cell into the edit line (following the wordso0"VALUE or / :") and you will be in Editing mode.?In Editing mode you use certain special keys to move the cursoro>about the editing line and to erase characters. Also, you may?tell Supercomp you wish to "point to" the worksheet -- that is,l@move the cursor down onto the worksheet so you may select a cellC-- and Supercomp will place a reference to the cell you select intoe=the formula or text you are currently editing. (Continued ino EDITING - 2) Additional Help:3 {ZE2}EDITING - 2 {!}GENERAL HELP ! !T 22T - TITLES:The / T command "fixes," or establishes, certain rows or9columns on your screen as titles, and thereafter does not>scroll them off the screen when you move the cell-cursor about=your worksheet. You position the cursor to a cell just below =the rows you wish to "fix" as titles, or just to the right ofo>the columns you wish to fix. Then, in response to the prompt: Titles (H,V,B,N): 5type "H" if you wish to fix Horizontal titles (rows);n6type "V" if you wish to fix Vertical titles (columns);@type "B" if you wish to fix both Horizontal and Vertical titles;>type "N" if you wish to "unfix" the titles you already have --= that is, if you wish neither Horizontal nor Verticalt titles.=If you have two Windows, the titles you set in one Window areP>independent of the titles you set tin the other Window (unless=you synchronize the windows, in which case the titles will ber forced to be synchronized also). Additional Help:u6 {W}WINDOW {!}GENERAL HELP!e!S 22S - STORAGEd;The most important use of this command is to save copies ofr<your worksheet while you are creating it (and after you have:finished) so that you will have backup copies in the event<of unexpected malfunctions by the system's hardware or soft-8ware. You create such backup copies using the STORAGE W7(Write) command, and read them back using the STORAGE Rr:(Read) command. Other STORAGE commands are also provided,9so that you can save your worksheet in formats convenientl;for communication with BASIC, FORTRAN, COBOL, and the otherElanguages on your system.d:In response to your typing: / S Supercomp will prompt:& Storage (A,B,C,D,E,I,M,R,W,X):;W - tells Supercomp to Write your current worksheet to diskd; in a format which the STORAGE R command can understand.t< All window information, format and column-width informa-; tion, recalculation order and mode, will also be saved.t Additional Help:7 {S2}STORAGE - 2 {P}PRINT {!}GENERAL HELPe!r!O 22O - OPTION7In response to typing: /O you receive the prompt:} COMMAND (D,P,T):p8Type "P" if you would like to change the default Printer6options (the Printer-width, or the default device/file5name for the Printer). Type "T" if you would like tok7inform Supercomp of the type of Terminal you are using. 8Type "D" if you would like to change the default import/:export terminator char (used by the Storage M (iMport) and8Storage X (eXport) commands). The default import/exportchar is normally "#".U<When you select "P", Supercomp prompts you with a line like:' (LEN, DEFAULT): 80, /dev/lpo6Edit the default width and default file name using the8editing keys (just as you would edit information you had#typed in yourself), then type .t Additional Help:2 {O2}OPTION - 2 {O}OPTION {S}STORAGE {!}GENERAL HELP!h !VFE 18>You can enter the value NA or ERR directly into a cell, byAtyping NA or ERR followed by , in response to Supercomp's ?"VALUE or / :" prompt. Later, when you recalculate your work-i?sheet, any other cell whose formula depends upon this cell wille7also be given the value NA or ERR (as appropriate).d=A cell will also be given the value ERR automatically, when ?(during recalculation of the worksheet) its formula is found to=contain an actual error: for example, division by zero, or an ?invalid argument to a function, or a reference to a blank cell. ;If you recalculate your worksheet and several cells come upe<ERR unexpectedly, check their formulas, and check the valuesof the cells they depend upon. Additional Help:9 {VFF}FUNCTIONS {VF}FORMULAS {!}GENERAL HELPn!H !O2 22 8When you select "T" in response to the OPTION command'sprompt, Supercomp prompts: Terminal:<Type the terminal name (such as VT100, H19) as it appears in<the "terminal file" that Supercomp is using. If you are not;sure what this name should be, consult your system manager,"5or the person who installed Supercomp on your system.w8When you select "D" in response to the OPTION command's"prompt, you receive a prompt like: Delimiter (#): ;Type the new delimiter-char you would like to use, followed :by . This "delimiter" is the char that Supercomp will8write (in the STORAGE eXport command) to separate cells,9and will expect to find between successive cells when you 7are reading new cells using the STORAGE iMport command.C Additional Help:i1 {P}PRINT {S}STORAGE {O}OPTIONs {!}GENERAL HELPn! !ZE2 22+The following keys are used during EDITING:u@ ERASE - erases the character at the present position of the? cursor (making your editing line one char shorter)w> Right-Arrow - moves the cursor one position to the right;8 does not erase the character it spaces over? Left-Arrow - moves the cursor one position left, without e  erasing? PAGE (PF3) followed by Right-Arrow - moves the cursor all H; the way to the end of the text you are editingL> PAGE (PF3) followed by Left-Arrow - moves the cursor all B the way to the beginning of the text you are editing.@ Down-Arrow - This is very special. It causes the cursor toB move down to the worksheet, to the current cell. NowB you may use the Arrow keys and PAGE key in the normal= way, to move the cursor about the worksheet to aw? particular cell you wish to select. When you haver> reached that cell, you type a "d" (or sometimes a> different char as explained below), and Supercomp: places a reference to that cell, for example:@ "[14,2]" into the formula or text you are editing. Continued in:9 {ZE3}EDITING - 3 {!}GENERAL HELPt!e !ZE3 22?When you are editing a formula and you have used the "point to"G=feature (by typing Down-Arrow and then selecting a cell), youk>may type one of the following three characters instead of "d":? * Typing an asterisk tells Supercomp you wish to inserte? a "Relative" reference to the cell you have selected,u> rather than a Direct reference, into the formula you: are editing. So, for example, if you have typed< Down-Arrow and "pointed to" cell [3,7], Supercomp? will insert the string "[*3,*7]" into your formula.o> c Typing "c" tells Supercomp you wish only the column-< number to be Relative. For the above example, the: string placed in your formula would be: "[*3,7]"? r Typing "r" tells Supercomp only the row-number shouldw; be Relative. Using the above example, the stringK would be: "[3,*7]": Continued in: : {ZE4}EDITING - 4 {!}GENERAL HELP!g !IN2 20= We're going to perform an exercise that will teach you thelAbasics of using Supercomp. You will have to remember the follow-ring two simple rules:dBACKSPACE RuleA When you wish to have Supercomp display the worksheet (insteadi@ of this Help text), press the BACKSPACE key. Press it again,: and again if necessary, until the words "VALUE or / :"> appear on the second line of the screen, with no characters following.T HELP RuleeA When you wish to refer back to this Help text (for example, ifh> you forget the above rule), press the HELP key. Press HELP> again, until the section of Help text you are interested in is on the screen. ({IN3}Press HELP to continue)! !ZE4 22= Pressing the Carriage-Return (RETURN key ) , is howc? you tell Supercomp you are finished editing, and thatp? what is on the edit line is your intended response too? the Supercomp's prompt or question. If there is any- % will still be in Edit-mode.E> If you have changed your mind and do not wish= to edit the cell you are editing, or respond to thew? present prompt, press until Supercomp has> "backed up" out of Edit mode, to the prompt you wishA to start from. When you exit Edit mode by means of the < key, Supercomp will not try to use the? text or formula you were typing. That is, your work- $ sheet will not be changed.A If you have typed Down-Arrow, and now have changed yourt> mind and do not wish to "point to" a cell, but would> like to continue editing your text or formula, press once.v Additional Help:3 {E}EDITING {!}GENERAL HELPt!e!C 21 C - CLEARd?This command clears your worksheet, erasing all numbers, labelse=and formulas from the cells, and restoring the worksheet to ad=single window if there were formerly two windows. You shoulde>be extremely careful with this command. Use the Storage Write>command ( / S W ) to save your worksheet on the disk, if you6wish to preserve it, before issuing the / C command.;To further protect you, Supercomp will respond to the CLEARicommand with the prompt: CLEAR? (Y or N):<Supercomp will only clear the worksheet if you respond "Y".<The CLEAR command will not affect the current Global format,9column width, recalculation order, or recalculation mode.a Additional Help:3 {S}STORAGE {X}(X)EXIT {!}GENERAL HELPe!u!W 22W - WINDOW9The / W command allows you to split the screen into twoh;"windows", so that you can look at two separate portions ofi9your worksheet simultaneously. The position of the cell-D;cursor determines where on the screen the split will occur.o8When you have only one window on the screen and you type%/ W Supercomp will prompt you with:f Window (H,V):c3Tell Supercomp whether you want to split the screen #horizontally (H) or vertically (V).i5Once you have two windows on the screen, you may typeN0/ W again, and Supercomp will prompt you with: Window (1,S,U):  Continued in:m4 {W2}WINDOW - 2 {!}GENERAL HELP!i !S2 22e& Storage (A,B,C,D,E,I,M,R,W,X)::R - reads back a worksheet saved by the Storage W command.< for this and all STORAGE commands, Supercomp will prompt you for the file name.9B - a special command that restores your worksheet to itso< condition just prior to the most recent Move, Insert, or Delete command you issued.;C - tells Supercomp you would like input to be taken from aP< disk file (called a "Command file") rather than from the; keyboard. Supercomp will prompt you for the file name,l9 then will proceed to read the response to its promptsr6 from that file, instead of waiting for you to type8 responses. See the "Supercomp Handbook" for further details. Additional Help:; {S3}STORAGE - 3 {M}MOVE {I}INSERT {D}DELETEi2 {S}STORAGE {P}PRINT {!}GENERAL HELP!i !S3 22t& Storage (A,B,C,D,E,I,M,R,W,X):D - Delete a file from disku;E - Extract. This is like STORAGE Write, but it only saves ; a rectangular portion of your worksheet, instead of alli2 of it. You will be prompted: EXTRACT RANGE:= to which you should reply with a range specification sucht9 as you would supply for a BLANK or REPLICATE command.e> The other information that would be saved by the STORAGE W? command (column widths, recalc. order and mode, etc.) *is* > saved, so you can read back this rectangular portion using= the STORAGE R command, as if it were an entire worksheet. >A - Add. This is like STORAGE R (it can read any file created< by STORAGE W or STORAGE E), but it Adds the worksheet it@ reads to your current worksheet, rather than replacing your? current worksheet altogether. You position the cell-cursor > (prior to typing "A") to tell Supercomp where you want the> upper left corner of the rectangle of cells you are adding to be placed.nE {S4}STORAGE - 4 {S}STORAGE {P}PRINT {!}GENERAL HELPt!h !S4 22m( Storage (A,B,C,D,E,I,M,R,W,X):7I - STORAGE Input. Reads a text file (such as might be = created by BASIC or COBOL), placing successive numbers it = finds into successive cells. (Non-numeric information in ; the file is ignored.) Cells are added to the worksheete< starting at the current position of the cell-cursor; the: contents of successive lines of the file are stored in% successive rows of the worksheet. =M - STORAGE iMport. Very much like STORAGE I, but there is ai: delimiter-char (see the OPTION command) separating the< values in the text file, and those values may be labels.= To see what an iMport file looks like, write a portion of ; a worksheet to a file using the STORAGE eXport command.c>X - STORAGE eXport. Like STORAGE Extract, but produces a text< file, in a format such that the file can be read back by using the STORAGE M command. Additional Help:= {S}STORAGE {P}PRINT {O}OPTION {!}GENERAL HELP(!) !W2 22y.In response to the prompt: Window (1,S,U):9You may type "1" to return to one window, or you may type :"S" (synchronize windows), or "U" (unsynchronize windows).;When two windows are side-by-side (that is, split vertical-l8ly) and synchronized, this means Supercomp will keep the9row-numbers being displayed in the two windows, the same.t7So when you move the cursor down (or up) in one window,s8the portion of the worksheet visible in the other window;will also change (if necessary) so that you will be lookinga!at the same rows in both windows.p;When the windows are split top-bottom (that is, horizontal- 6ly), synchronization means the column-numbers are kept9the same. Experiment with windows, synchronizing and un-37synchronizing them and moving the cursor about with thea9Arrow keys and Semicolon (;) key, to see how synchroniza-t8tion works. (To move the cell-cursor from one window to2the other, you use the Semicolon (;) key. See theadditional Help.)  Additional Helpe4 {KS}; (Semicolon key) {!}GENERAL HELP!l!R 22R - REPLICATEy=Replicate means copy. You may copy the contents of one cell,o=or of one or more rows of cells, or columns of cells, or of ao9rectangle of cells, to another portion of your worksheet.,<Instead of copying the entire contents of the cells, you may<copy only the values contained within the cells (not copying<the formulas), or you may copy only the formats of the cells%(not copying the formulas or values).p+Supercomp prompts: Replicate (E,V,F): >and you select whether you want to copy the Entire cells, just9the Values and formats of the cells, or just the Formats.<Supercomp will then prompt you for a SOURCE RANGE, and for a=TARGET RANGE. The SOURCE RANGE tells Supercomp exactly which 9cells are to be copied. The TARGET RANGE tells Supercomp :where to copy the source cells *to*. The Additional Help,8below, gives some examples that will help you to use the=Replicate command now. Refer to the "Supercomp Handbook" forn;a detailed description of the many ways you may specify thesranges.,D {R2}REPLICATE - 2 {VFR}RANGES {E}EDITING {!}GENERAL HELP!n !VFO 22@The Operators which you may use in formulas, with their relativepriorities, are: Operator Priority -------- --------) ^ 7 exponentiationt, - 6 (unary) negation) * 5 multiplication# / 5 divisione# + 4 addition& - 4 subtraction2 < or 3 (comparison) less than5 > or 3 (comparison) greater than . = or 3 (comparison) equal2 != or 3 (comparison) not equal; <= or 3 (comparison) less than or equalC> >= or 3 (comparison) greater than or equal' ! or 2 logical NOTs' 1 logical ANDr& 1 logical OR Additional Help:B {VF}FORMULAS {VFF}FUNCTIONS {ZV}VALUE {!}GENERAL HELP!y !KS 17t7Whenever the cursor is visible in the worksheet portiono8of your screen (instead of on the Editing line), you may7press the SEMICOLON key (;) if you currently have twon7windows, and Supercomp will move the cell-cursor to then6other window, making that window the "current" window.6Now when you move the cell-cursor using the ARROW keys8or the PAGE key, you will be moving it within that wind-7ow, and if you set a Global format or column-width, youD7will be setting it for that window (each window has its $own Global format and column-width).8You can move the cell-cursor back to the original window by pressing the ";" key again. Additional Help:9 {W}WINDOWS {ZS}SPECIAL KEYS {!}GENERAL HELPe!c !VFR 228When a RANGE is required, such as for a BLANK command, a9REPLICATE, a PRINT RANGE, or a Storage EXTRACT RANGE, youe,may specify it in one of the following ways:: 5..7, 3..6 or [5..7, 3..6] or [5,3]..[7,6]8You can use the "point to" capability of the editor (see:EDITING Help), to produce the third type of specification,;by moving the cell-cursor to the upper left and lower righto9corners of the rectangle you are specifying (in the above'example, [5,3] and [7,6] respectively).{7Non-contiguous ranges can also be specified, for BLANK,D:REPLICATE, and PRINT RANGE. See the "Supercomp Handbook".-An example is: [(5..7,9,14..17), (1,5)]p=which specifies 16 cells, 8 of them in row 1, and 8 in row 5.n=Within formulas, certain functions allow Ranges as arguments. =These ranges must be contiguous, and only one of the two sub-o<scripts may vary. Example valid ranges within formulas are:. [1...7,3] [3,5]..[3,12] [10.14,1];Note that the 2nd form can be produced using the "point to"y6capability of the editor, while typing in the formula. Additional help:: {E}EDITING {B}BLANK {R}REPLICATE {P}PRINT2 {S}STORAGE {VFF}FUNCTIONS {!}GENERAL HELP!A !VFF 22;Functions supported by Supercomp Twenty (see the "Supercompd"Handbook" for further information);-----------------------------------------------------------o*ABS (E) EXP (E) NA2ACOS (E) FV (E,Range) NA (Range)*ASIN (E) IF (log expr,E1,E2) PI4ATAN (E) INT (E) PV (E,Range)+ATAN2 (E1,E2) IRR (E,Range) ROWt5AVG (Range) LABEL (Range) SEL (E,Range)f/BLANK (Range) LN (E) SIN (E)o6COL LOG (E) SORT (E,Range)0COS (E) LOOKUP (E,Range) SQRT (E)/COUNT (Range) LSQ ("xx",yRange) STD (E),DATE (E) LSQ ("xx",yRange,xRange)3DAYS ("date") MAX (Range) SUM (Range) /DEPR ("xx",E1,E2) MIN (Range) TAN (E)DERR MOD (E1,E2)}ERR (Range) MONTH (E)S Additional Help:gI {VF}FORMULAS {VFE}ERR and NA {VFR}RANGES {!}GENERAL HELPh!i!B 22 B - BLANK 7This command is used to "blank", or erase, the contents,:of a cell or of a range of cells. To blank a single cell,7position the cell-cursor to the cell you wish to blank,ithen type: / BSupercomp will prompt you with:r BLANK RANGE:h8In response to this, simply press . Supercomp willblank the cell. 7If you wish to blank more that one cell, you must enter 5the range of cells to be blanked before typing .h2You may enter the range by typing it directly, for'example: BLANK RANGE: 3..7 , 4..6t6This tells Supercomp to blank all the cells in columns3 through 7, rows 4 through 6.  Continued in:/ {B2}BLANK - 2 {!}GENERAL HELP !r !B2 20e' BLANK RANGE: 3..7 , 4..6o4Notice that the cells in the above range are all the7cells contained within the rectangle (on the worksheet)l4which has cell [3,4] as its upper left corner, and2cell [7,6] as its lower right corner. You couldtherefore have typed( BLANK RANGE: [3,4]..[7,6]8If you choose to use this second method, notice that you8do not have to actually type the cell references "[3,4]"7and "[7,6]" -- you could instead use Supercomp's "pointa1to" capability. This is described under EDITING.d6There are additional ways to specify ranges, including5a way to specify ranges that are non-contiguous. SeesRANGES.i Additional Help:4 {E}EDITING {VFR}RANGES {!}GENERAL HELP! !D 22D - DELETE5This command allows you to delete an entire column ora4row from your worksheet. In response to your typing/ D Supercomp will prompt:$ DELETE COLUMN OR ROW (C,R):5Use the Arrow keys to position the cursor to any cell 3in the column or row you wish to delete. Then typeL2"C" to delete the column the cursor is in, or type2"R" to delete the row the cursor is in. Supercomp6will automatically move the adjacent columns (or rows)3to fill the vacated space, and will also adjust allL6formulas on your worksheet to account for the movement6that has occurred. Occasionally, after doing a DELETE6or a MOVE, you will see the error message "Bad Formula8at [...]" the next time you recalculate your worksheet.1This means that the formula at the named cell was 5referencing a column or row that has been deleted, soi7the formula is now illegal. You will have to edit thattformula before proceeding. Additional Help:o5 {DIM2}DELETE - 2 {!}GENERAL HELPs!h5!DIM2 14 (second part of DELETE, INSERT, MOVE)e3Prior to actually performing any DELETE, INSERT, ors1MOVE command, Supercomp saves your worksheet in ao5temporary file on the disk. After you have performedE5the DELETE, INSERT, or MOVE, if you should decide youn5are dissatisfied with the alterations you have intro- 4duced into your worksheet, you may reclaim the prior1copy of the worksheet from the temporary file, byo4using Supercomp's Storage Backup command ( / S B ).1You may execute this command at any time prior toK*your next DELETE, INSERT, or MOVE command. Additional Help: 6 {D}DELETE {I}INSERT {M}MOVE {S}STORAGE {!}GENERAL HELP!o!F 22F - FORMAT2With this command you set the "format" for a cell,2which determines how the numerical contents of the3cell will be displayed on your screen. In responsey/to Supercomp's FORMAT: prompt, type one of:e2nF - (a number from 0 to 15, followed by "F") to4 tell Supercomp you wish to display the number3 as a regular decimal number, with "n" places 1 to the right of the decimal point. If you 3 specify "n" as zero, Supercomp will not dis-H play the decimal point.3n$ - just like the "F" format above, except a "$"l0 will be displayed just before the number.3n% - like "F" format, but the (number x 100) will3 be displayed, followed by "%". For example,c2 if the number in the cell is .0738, with 2F0 format you would see .07, while with 1%! format you would see 7.4%p5 {F2}FORMAT -2 {G}GLOBAL {!}GENERAL HELP ! !F2 22s7nE - this format displays the number in "exponential"F6 format, showing a number in "F" format, and the1 power-of-10 it must be multiplied by. Fore3 example, if a cell contained .07387, and you 5 set the cell's format to 2E the number wouldo be displayed as 7.39e-2H0C - this sets the column-width for the entire1 column (not just one cell), overriding the"/ Global column width currently in effect.o, Supercomp will prompt COLUMN WIDTH:1 to which you reply with a number from 2 to 2 126, followed by . If you wish to set2 the width back to the default Global column4 width, simply respond (with no number)1B - bar-graph format. This tells Supercomp tot4 fill in this cell with a special bar-graphing3 if the value of the cell is non-zero, and to 0 display the cell as blank if the value is2 zero. This is very useful for constructing$ bar graphs on your worksheet./ {F3}FORMAT - 3 {!}GENERAL HELPn!g !F3 15 7G - This tells Supercomp to display the value of the 6 cell as a series of plus signs (it the value is6 positive), or a series of minus signs (if nega-5 tive). If the value of the cell were 4.7, forl, example, the display would be: ++++7default - To restore the format of a cell to the Global 3 format currently in effect, (also called theM2 "default" format), simply respond to2 Supercomp's "FORMAT:" prompt, rather than' typing any of the above letters.( Additional Help:e- {G}GLOBAL {!}GENERAL HELPc!e!G 21G - GLOBAL1This command allows you to set the default format /Supercomp will use for cells which you have not5specifically entered a format for; the default column0width for columns which you have not specified a3width for; the order in which your worksheet shouldw2be recalculated; and the recalculation "mode". Inresponse to your typing: / GSupercomp will prompt you with:  COMMAND (C,F,O,R):2Respond "C" to set global column width, "F" to set1Global format, "O" to set order-of-recalculation,E1and "R" to set recalculation mode. These optionsn-are further described in the additional Help.n Additional HelpI4 {G2}GLOBAL - 2 {F}FORMAT {!}GENERAL HELP!i !G2 22e&If you respond "C", Supercomp prompts: DEFAULT COLUMN WIDTH:[0Enter a number from 2 to 126, followed by .1This will become the column width for all columnse.which you have not specifically given a column"width by using the FORMAT command.,If you respond "F" (to the Global "COMMAND":%prompt), you will receive the prompt:t DEFAULT FORMAT:r%Respond with one of: nF nE n$ n%."n" is a number from 0 to 15. (See the FORMAT0command for further information on the formats.) Additional Help:4 {G3}GLOBAL - 3 {F}FORMAT {!}GENERAL HELP!n !G3 22c3If you respond "R" to the Global "COMMAND:" prompt,aSupercomp displays:u% SET RECALCULATION MODE (A,M):t2Respond "M" for "manual", meaning you will have to3press the bar each time you wish to recalc-e2ulate the worksheet. Respond "A" for "automatic",/if you would like Supercomp to recalculate yourh2worksheet automatically, each time you enter a newvalue or formula into a cell.P3If you respond "O" to the Global "COMMAND:" prompt,PSupercomp prompts:( SET RECALCULATION ORDER (C,R,N): Additional Help:5 {G4}GLOBAL - 4 {F}FORMAT {!}GENERAL HELP-!- !G4 22-( SET RECALCULATION ORDER (R,C,N):2"N" stands for "natural" order, and is the default0order in effect when you start up Supercomp. It.means Supercomp recalculates the cells of your2worksheet in the same natural order you would: you/would recalculate each cell only when the other 3cells it references have already been recalculated, /and you would recalculate all the cells of your 2worksheet. Therefore, when you were done with one3"recalculate", all the cells would have their finalR%values. This is what Supercomp does.S2Sometimes, in a scientific application, it is more1convenient to have the cells recalculated exactlyn/once, in a predictable left-to-right or top-to-,2bottom order. This is what the row-wise ("R") and!column-wise ("C") orders are for.E Additional Help:5 {G5}GLOBAL - 5 {F}FORMAT {!}GENERAL HELP !!G5 22( SET RECALCULATION ORDER (R,C,N):3Row-wise ("R") tells Supercomp that when it recalc-g3ulates the worksheet, it should recalculate all thes/cells in the top row, then all the cells in thep3next row, and so on down to the bottom of the work-s4sheet. (In each row, the cells will be recalculatedleft-to-right.).Column-wise ("C") tells Supercomp that when it1recalculates the worksheet, it should recalculatei2all the cells in the leftmost column, then all the0cells in the next column, and so on to the right2edge of the worksheet. (In each column, the cells$will be recalculated top-to-bottom.)0To return to the "natural" order, respond "N" to the prompt.L Additional Helpe0 {F}FORMAT {G}GLOBAL {!}GENERAL HELP!t !IN3 22A Although the steps in this exercise are numbered and appear togBbe "instructions," feel free to experiment a little on your own --Ayou'll be surprised how quickly you learn what Supercomp is doingfAwith the numbers and expressions you are typing in. You may evencAwant to advance to the Help text for the "commands" before you'vet?completed these exercises. Nothing wrong with that -- when youiDwant to go on to the Help text for the commands, by all means do so.A Remember the following. Any time you feel you are in trouble,g@you may use the BACKSPACE rule: Press BACKSPACE until the words@"VALUE or / :" appear on the second line of the display, with noAcharacters following. If you still don't like the way the screen >looks after that, you may type the following sequence of three characters:  / C Y<This will clear the worksheet so you can start over from theAbeginning. Remember that you can always press HELP, to have thisstext redisplayed.t ({IN4}Press HELP to continue)!o !IN4 16 Okay, here goes.C(1) Press BACKSPACE until "VALUE or / :" appears on line 2 of thetC display, alone; then experiment a little with moving the cursorlA around the worksheet using the Arrow keys (Right-Arrow, Left-sA Arrow, Up-Arrow, and Down-Arrow). Try pressing Right-Arrow a ? few times, then Down-Arrow a few times. Watch the blinkingrC cursor move, and notice also what happens to the numbers in thec@ upper left corner of the screen as you press the Arrow keys.A These two numbers (within brackets) tell you which "cell" theeC cursor is located at. The first number is the "column" number, . and the second number is the "row" number.B {IN5}After you have tried instruction (1) above, press HELP to continue to the next step.!u !R2 22e Sample Replicates -----------------3Replicate (E,V,F): E (copy entire cells)d6SOURCE RANGE: 1..3, 7 or [1,7] .. [3,7]/TARGET RANGE: 10, 50 or [10,50]o! copies cell [1,7] to [10,50] ! [2,7] to [11,50] ! [3,7] to [12,50]t? the TARGET RANGE could also have been specified explicitly as > 10..12, 50 or [10,50]..[12,50] or [10..12,50]@---------------------------------------------------------------->Replicate (E,V,F) V (copy Values and formats only)SOURCE RANGE: 1..3, 7TARGET RANGE: 10, 50..51o; copies [1..3, 7] to [10..12, 50], as above, then alsow% copies [1..3, 7] to [10..12, 51]"@----------------------------------------------------------------@ {R}REPLICATE {VFR}RANGES {E}EDITING {!}GENERAL HELP! !IN5 22C(2) Now we're going to tell Supercomp exactly which cell to put the C cursor at, without using the Arrow keys. After using the BACK-FB SPACE rule to get back to your worksheet in "VALUE" mode, type. the following sequence of five characters:$ > 0 , 0 D That is, type right-angle-bracket (">"), zero, comma, zero, thenB press RETURN or ENTER. (We'll use to mean the CARRIAGEE RETURN or ENTER key throughout this Help text.) If you accident-aE ally make a mistake while typing these characters, and don't knowLC how to correct it -- use the BACKSPACE rule, then type the five  characters again..? Notice how Supercomp has moved the cursor to the upper leftoB corner of the worksheet -- cell [0,0]. You have just executed= a "GOTO" command. The ">" character is called the "GOTO"  character.I {IN6}After you have performed step (2) above, press HELP to continue.d!l !IN6 21B(3) Now we're going to enter a value into cell [0,0]. Press BACK-D SPACE to get your worksheet displayed again, then type a number,? such as 51 followed by . Don't forget to press .e@ Notice where the number appears as you are typing it in, and@ then notice what happens to it after you press -- it is- placed in the "current" cell, cell [0,0].eC(4) Go back to the worksheet (using BACKSPACE), and with the numbere@ 51 in cell [0,0], type Right-Arrow twice to move the cursor> over to cell [2,0]. Type another number, such as 17 = (again, don't forget to type the ). Now you have twop numbers on your worksheet.@ Now that there are two numbers on the worksheet, we're ready@ to enter a simple formula. Formulas are the foundation uponA which Supercomp's modeling capabilities are built. You'll bem5 surprised how easy formulas are to enter and use.e! ({IN7}Press HELP to continue)!i !IN7 19@(5) After using the BACKSPACE rule to get back to your worksheetA in VALUE mode, type Right-Arrow twice to move the cursor overe? to cell [4,0], then enter the following formula. Just type # exactly the characters you see:& sum ( [0..2,0] ) > This tells Supercomp that the value of cell [4,0] is not aB simple number, like 51 or 17, but is the sum of the numbersB in the cells [0,0], [1,0], and [2,0] -- that is, the cells' of columns 0 through 2, row 0.< After you have typed the formula, remember to type .? (Notice how the formula then appears on the top line of the<@ screen.) However, the cell [4,0] on the worksheet may still> be blank. Press the SPACE bar once, and see what happens.> {IN8}When you have done the above, press HELP to continue.!y !IN8 17= Supercomp evaluated the sum, and placed it in cell [4,0].o@Pressing the SPACE bar in fact told Supercomp to recalculate all>the cells of your worksheet, and place the resulting values in@the corresponding cells. You can press the SPACE bar to recalc->ulate, any time you have the "VALUE or / :" prompt on line 2.of your display, with no characters following.@(6) Now move the cursor to cell [1,0] (which should be the blank> cell between the two numbers you entered earlier) and type( in a number there, such as 12 = The "12" should appear in the cell. Press the SPACE bar,e7 and watch what happens to the number in cell [4,0].u% Supercomp has recomputed the sum.t! ({IN9}Press HELP to continue)c! !IN9 18C As a final exercise, we are going to enter a LABEL into a cell.{A(7) After using BACKSPACE to get back to your worksheet, move the C cursor down to an unoccupied cell, such as cell [2,3], and typer the following: 'That was easy. C Notice the single-quote character (or apostrophe) preceding thee> label. That character tells Supercomp that a label (not a? number or formula) follows. When you press , Supercompe> enters the label into the current cell (within Supercomp'sB memory), and displays the label at that cell's position on the worksheet.D ({IN10}Press HELP one more time, for the final paragraph of this Introduction)c!p !IN10 19iD You now know enough about Supercomp to generate a quite sophisti-Ccated worksheet. By examining other Help text, such as for VALUES,hAFORMULAS, the commands BLANK (allows you to erase cells), STORAGEiF(allows you to save any worksheet on the disk, and retrieve it later),Eand FORMAT (allows you to declare how cells should be displayed), youlCcan, if you wish, begin generating useful and attractive worksheetseBright now. Later, don't forget to refer to the excellent tutorial@guide "How to Use Supercomp" and to the "Supercomp Handbook," to.learn about Supercomp's advanced capabilities.? Supercomp is written to employ your computer's full power inaDcarrying out the many menial tasks involved in constructing reports,Dbusiness plans, forecasts, and other types of models -- while allow->ing you complete freedom to create these according to your own>design, in accordance with the specific needs of your business environment.5 ({!}Press HELP to return to the General Help text)T! ASS PD1 DK: LOAD LP R S20 -C22 -HSY:HFIL -DSY:TFIL.PDT CC VMS Focal V3.0 16-DEC-1982 09:40:10.31 -not a DEC product,01.10 T 'PONTOON GAME'!!;S YES=FTXT('YES') 01.20 D 3201.30 S HAND(1,0)=0;S HAND(2,0)=0;S P=1;S TOTL=0 01.35 T !!'01.40 T 'YOUR CARDS ARE'!;F I=1,2;D 4A01.50 I (21-TOTL) 2.3,1.8401.60 A %A,'ANOTHER ',A;I (FUPR(A)-YES)1.8,1.7,1.801.70 D 4;G 1.501.80 D 5;S P=2;S TOTL=0%01.90 T 'MY CARDS ARE'!;F I=1,2;D 4602.10 I (21-TOTL) 2.4;D 5;I (SCOR(1)-SCOR(2))2.3,2.302.20 D 4;G 2.102.30 T 'I WIN'!;G 1.302.40 T 'YOU WIN'!;G 1.3503.10 T 'SHUFFLE'!;S CARD=52;F II=0,51;S CARD(II)=1&04.10 S RAN=FITR(CARD*FRAN());S K=-1/04.20 F J=0,51;S K=K+CARD(J);I (RAN-K)4.3,4.3804.30 S SUIT=FITR(J/13);S NUMB=J+1-13*SUIT;S CARD(J)=0-04.40 D 7+NUMB/100;T ' OF ';D 7.21+SUIT/100&04.50 S CARD=CARD-1;S TOTL=TOTL+NUMB804.60 S HAND(P,0)=HAND(P,0)+1;S HAND(P,HAND(P,0))=NUMB04.70 I (CARD)4.8,4.8;R04.80 T 'RE';D 3-05.10 S FLAG=0;S TOTL=0;F I=1,HAND(P,0);D 6(05.20 I (TOTL-21)5.3,5.3;S SCOR(P)=0;RC05.30 I (FLAG*(TOTL-10))5.4,5.4;I (2-HAND(P,0))5.4;S SCOR(P)=40;R )05.40 I (HAND(P,0)-5)5.5;S SCOR(P)=30;R ,05.50 I (11-TOTL)5.6;S SCOR(P)=TOTL+FLAG;R05.60 S SCOR(P)=TOTL;R206.10 S TOTL=TOTL+HAND(P,I);I (HAND(P,I)-2)6.2;R06.20 S FLAG=10;RA07.01 T 'ACE'F07.02 T 'TWO'707.03 T 'THREE'.07.04 T 'FOUR'07.05 T 'FIVE'07.06 T 'SIX';07.07 T 'SEVEN' 07.08 T 'EIGHT';07.09 T 'NINE'07.10 T 'TEN' 07.11 T 'JACK';S NUMB=1007.12 T 'QUEEN';S NUMB=10307.13 T 'KING';S NUMB=1007.21 T 'CLUBS'!07.22 T 'DIAMONDS'!R07.23 T 'HEARTS'!07.24 T 'SPADES'!CGOPQHEATERCCCCCCC CN0N  CN0N CN0N CN0N CN0N CN0N C.C NN NNNN!NN 4>C NN NNNN!NN 4NC NN NNNN!NN 4^C NN NNNN!NN 4nC NN NNNN!NN 4~C NN NNNN!NN 4C CN0N CN0N CN0N CN0N CN0N CN0N CC NN NNNN!NN 4C NN NNNN!NN 4C NN NNNN!NN 4C NN NNNN!NN 4C NN NNNN!NN 4C NN NNNN!NN 4 QWALL C  CN0N  CN0N   CN0N  CN0N  CN0N  CN0N  C QWALL *C NN NNNN!NN 4 :C NN NNNN!NN 4 JC NN NNNN!NN 4 ZC NN NNNN!NN 4 jC NN NNNN!NN 4 zC NN NNNN!NN 4 C  CN0N  CN0N  CN0N  CN0N  CN0N  CN0N  C C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C  CN0N  CN0N  CN0N   CN0N  CN0N  CN0N  C &C NN NNNN!NN 4 6C NN NNNN!NN 4 FC NN NNNN!NN 4 VC NN NNNN!NN 4 fC NN NNNN!NN 4 vC NN NNNN!NN 4 C  {CN0N  CN0N  CN0N  CN0N  CN0N  CN0N  C C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C NN NNNN!NN 4 C C C C C CQWALL(FBa&fe@BJ%@& fEA  w ZZPsZR Z_s Zl 2v2x2z_ \_  J_  r_  ֧_  ._  _  Ԩ_  _  h_  ʪ_  >_  Z_ _ _ _ _ \_ _ _ 4_ f_ $n_ $_ $ڸ_ $(_ $^_ $_ $_ *4||| 1164 122316 131 10514157553=6120212223?63242526-4527312829$36,44 32!33"34%37&38'39(40)41#3530*42.46+43149/47048@64A65B66C673514522500\Fe* PFe*  @%  @ %   `&\\Ee* Ee*6 6 &  f 6A  v  6N\&f$&  h % % U@     < .`D A @ 耎     e     e &f  ”E   CPQCQBm     v   &   5@%PeE T  <5eN N (E D A @  eb" b"    D A @ &f&f eD A @ eA @ e@ e&f&f   <%PeE D A @ E@E ED &f& @ &   6&C  8   h   6c6#m    (   # 6 ඌ cmd ` ҕ- 9 |E@ e0Ґ (   ) eC Hҕ ( %% ҕ0ҕ. ҕ0 Ґ+-  Ґʕ/ e:rC e e ҕ* effffeffff& & & && & & & Ae*Ae*e&f&   v v v !N v v v 6 6 6 6    w>v Da       B A @  A @  @ 7%   D%"& N % Be %e B A @ N B    m B A @ m A @ m@ m00         C B A D 6 ve\          B A @  A @  @ 0 B A @      @effff & & & &$?e*&f    & N & QR  v  6    66 6 6 6 "v     1 %6 6 6 6 ?     |6  l6  \6  L e%v 6 6 6  D v v v 6e\  B A @ -  - --     effff & & & &6=e*&f f &  6    6 v %w     6        e B A @  B A @ *%%B    C B A @  6 ve\      mB A @ E mA @ E m@ E m E      m@ E m E    &    C 5UA B C C  \ &    \B`  ;huj  "&=f&  R'5  < 65X& :   &!+7H:<:E&6:&E" &P!ۃe" stsuvxF3l3 X# s ! R5 #9"e!ePe"Pj3h3|3z  U $  &  fW  u"\?Err 59 USR not locked?Err 62 FORTRAN start fail&Lf&AE8@ lB`)  rrwʊ@ҋ=< ^  R X΋ + +H8  wvF( 8z|  3 7? DW=W?E A @ @)%鈇& e:   낃 (   3 E`E& N U%@"wL?Err 60 stack overflowed ABCDEFGHIJKLMNOPQRSTUVWXYZ$. 0123456789fromin routine "" line ?Err (PC=U\N E\N MEP\ ' ' \\%&&Af&  e\f&6 35w"ȋw> 5,4( 54- x.pt,p&朢d V.3 &   5@a3 s 5@55& &e& w 0 @ 3@3 r3 p3!  #p   3 3?& & & & 4e*e,& & & && & & && & & && & & &  CR$ $$ "` \ `C \ f B % % e@ ( B`  ` A@^   A ^”E eBCIE `-    D E A@D D e0bb %- ҕ* V  ɥFɥT Kѥ K Е ȕT‹ȕFK\\PH\PP& P   \%\e&&&&\  \\5@5#E 5m5 ҕ   mU t &&e 1d  H ~1gV`b Xw b>13p\413r\(1p1r @ 3@œ r@E dht"603 Dt~ h0t~3 r3 p3 X 3\w %c mD0@ ы@ e"    ;3  ,FF3 F V  {` `3 V3 Tl ,FFBFF R w  3oAsk R g  L  X[ `X DTB ;  J  @ B   D \$w V- D  ׬RDD .3 V3  .3 F  `P B3 \ n@  bEx@ H3I \sJ 6sL% (sN DL׬I( R%RNN @ 3`"  ,    - JœH @ & %NR W w  %D C& & EF   @(4-w @¥Ef P(-w DR%% $J J N ꇁ   Е `CBД w SD @` ,>Nzbd^`VZ\X^nbd^`VZ\X\  `\ `\e\e\e\e\e\e\g\g\g\\%\%\%\%\%\'\'\'\&\\&\\\\&\\\&\\\& \ \ \\\\ \ \& \ \ \& \&e\ b\b\b\b\&%\ "\"\"\"\&\ \&\\\ \\&\ \\\\\\\\\\\\\&\\&\\\&\\\\ \\\\\ \& \\\\\֋\܋\\ȋ\fffD B H`"wH`"w%\AH`"wZH`"wZ%\A  "w$ "w "w \&&&f<)  f&) ե W(c3 "3 $3 (3 &  @ Z@090 ` `P & (8 $#Eq#3 (2# S!!!!#!+!9!L! !oU& " &ec9`3 " &[ "V y t $ $,$?R d $\   D O :f II  d x@  -$')(/.,: & 0 " &W W0W9e ( & " ݁U ; , ‡:ddddn::: ~"$&43 ( j "3((3 "3 (W   @ " .@ v "5  &  "  >j& %tw&4 4-45@E4   $&vC j5EUe  & 4-2 . >%& &v    E5@ߋ*3 pr 5U3 rpw^f&%$  J"Kv v&f& $ D\ h&j&l&+$ f3! ,f$ f nH5$ j&STOP --  %P$t&& fAP  t\ %$t \\ \ \ \ #& eN t RD \RD ^ & e\& ew&& e\ e&\& g\ g&\& e\& e\&&&e\e&\&g\g&\&e\&e\&&&g\&g\&&NT$(.6666> @@@ @Ћ @7 HFb Pb RHN65L/037( J Jx* J>x* J!x+ J/x+ J x( J x( Jxd+ J+x+ J-x+ J(x+ J@x+ J.x+ J0  J9v P + J  Jx L n+6F8GGA J")7( JJ> )6(VLXLD?VLXLJ'BL: Lxn*((J( J$(Jh LVLXLv@XL:v6* XL:VL T+6(6(L/(t9(7 G6 G8@G8HHAXG87( J Jx/ Jx/ J`,0 J ( J JA  JZ~ L /0 JA0~x,,, -(---/.//.///./..//././/p/VLXL(( JVLXLD?VLXLJ(h $(Jh G'J}'JBL: Jx  Jx L0 NP x,/G( x/8@/d$VLXL(J   J P /6G8HHAVLXL'}(A> x/VLXL( x-6d$VLXLD?LVLXLv@/Hx/6G8G87( J Jx/ Jx/ J`:.0 J ( J JFR.Hx/ JAf.b N/ JMz.b N/ JC.b O/ JR/b O/d$d$d$ .d$ Nx.L/d$d$0d$H( x/HBjt96d$7 &HXAB(H&HAlB"H8 \LJ'JLJJJ JJ9JJJJ0JdJ`L/ ZLJJJlB*H7,H7&HJJJJ9BJ \LJJJ( x60 JJdJ`L0J\L|0 \LJJJJJJJJJ1dJJN0JdJ^L/d$7 .HJJJv0J@JKK708H7JA >KK7d$7 X>HK`K&K(( K'KL K((&K~`1l111bHP K9d$ K-1 KK`K'}(A9d$ KR1 KK`K'}(A8d$ KK`K'}(AT8d$K`K'BLK KK>: x 2d$ KGxV2 KIxl2 K*x2 K$x2 K%x3 K0  K9v P \3dH KK9|34 KfH KK9$( KeLh |3 K K2rK K KXH9'KL KKK9d$dH KK9)K()eLK K x3BK K2|3$(KeLh $|3`H  KKBKKrK CKK9$( KeLh %$( KfLh |30 K0$K$K KK9fL8d$7 hHXAlBXL0VLz;pH8VLXL(~33 4&4HPtH8|4H804H8VLXL1|4H8VLXL'}(A(,K,K-v^4-,K,KVLXL'}(AT8:BHHA N4H84 O4H84H8H> @00K0K9VL ZLbLdLXL>2K\L~.5 \L.K'.KL*Kf*KdL*Kd.K2K5dLbLAVLXL1B Rxb5H b RHHAd$7 HdLbLAVLXL1d$7 H \L4K RL6K 6K6K'4KL6K&6K544K4KLv5 4K`LB`Ld$7 lI `L8K RL:K :K:K'8KL:K&:KB6B8K&8K~6 8K\L4\Ld$7 $ITLZL>^L^LLvv6 L^Ld$7 I^L TL0ZLZL6$ZLd$7 I$I"IA:B$I IA:Bd$7 &IVLXLD?>KK$(FKh  NxJ7 In(JK&JKv7b$JK7 FI P7LKv(NKNKx7d$LKd$7 jNI$RKRK>4(PK $8d$RKv88VIPRK>.(PK74RK87 XI$XKXK>4(TK x8zXKVKvz8d$XK>.(TK74XK^8VK XK0ZKZK9d$7 `I\K(bK^KfK bKfKfK9$dK.(\K`K `K8d$`K74`KD!dK^K8d$7 bhI$lKnK2(hK 49pIPznKjK@9d$lK>4(hK T9$lKlK>.(hK74lK4nK497 rIzI7d$7 |IpK9d$$rKI7D!rKpK9d$7 IvK6;zKIxKfLt!tK''vKfLh fL8d$7 zIK6;KK6;KIKfLt!~K&'KfLh d$7 4Ib KKKKx^:X$Kb KKcx:Kbx ;KK KK9I8K@ KIK K KK0 KK7 KK0 KK7X$KKK KK9I8X$KKK KK9I8X$K7  K x> K x; Kx= Kxt> Kx= K >KOx>4L4KL0KK< KK$(KLK$(KLKF KKBKBK !KK<$(LL< K LK$(KLKK74KdKK<:B;&K~IAL0KK~f= KK$(KLK$(KLKF KKK74K4KdKKF=BLBK<LKx>LKK~= KK$(KLK$(KLKF KKK74K4KdKK=BK<&Lx>IIAKL0KK~2> KK$(KLK4K$(KL\ KK74KdKK>L KK<&Lx>BL;LK>4L;L; KL;C~ >b>j>P>@>>>>>&Kx<t9;$(KLh $Lb KX$K7 Ib LK; KX$K7 IK(0K$K(LK.(KKF KK4K4KdKK?I; KX$K7 .IK`K(K   K P xv?d$K`K'}KK K> L x?IP@ @>~ L x?IP$(KA(0KK~?IP$K$KKKK'}LKv.@'K}L KdK~ L x@JP@ L>~$A @ LB L$L.(LL LL(A\ L4LdL L@L`L'}@ L@d$L`LL'BL:'L}$(Lh b Rd$7 JJ7J7J7d$7 JLAd$$LJ7D!LLAd$7 J.J7(J7LL4LLz;*J7LL4LLz;,J7d$7 j0J>J78J7:J74((L.L xD .L xD .Lx ( ,LX$,L7 &J4L6Lb 8L2L0LD xzDX$8L2L>:L4(0L4(0L=L A  =LZ~ L xDX$8L2L>4(0LA04L82L2L>>L4(0L@L `E:(>L0L0 @L , 2L>4(0LAL A  ALZ~ L ZE4L0 ALA04L82L2L>4(0LBL 0  BL9~ L xEX$8L6L 2L>4(0L06L82L2L>4(0LCL 0  CL9v P E4LEX$8L6LEX$8L4LLvEX$8L6LLvFX$8Lb 8LX$8L7 hJb PLJLHLFLDLLD 8FX$PLFLDLD `FFL>4(DL :xvFHLLLJLNLb PLX$PL8FLNLLLFLDLLD FX$PLHLLLvFX$PLJLNLvFX$PLb PLX$PL :J>!/+-(@.09 Label: "Number or Expression:xxJAuto-advance Blankcell Clearsheet Delete Edit Format Global Insert Load Print Replicate Save Version eXit AZAGClear Sheet: Editing: Format Auto-recalc Manual-Recalc recalc-by-Columns recalc-by-Rows FAMCRExit: /d@J  \g$JA A\gK-RGI*$%09* $%y[(K (blank) (label) (number) (expression) ManRowCol?Not enough room in heap to store cellF_q4K%&$4K(&$8K%&r d$,LL xȞLLD xȞ68> Pd$.LL xȞLLD xȞb X ,T .Vd$7 ֆ4b 620D xƟX$62>84(0: `:(800 : , 2>4(0; A  ;Z~ L xX$62>4(0A04822><4(0> `d:(<00 > , 2>4(0? A  ?Z~ L 40 ?A04824X$64Lv X$6b 6X$6w*Advance No-advance NnAaBeginning Column:Ending Column::d$0AZAZ D C %     @  f&\$e*&&  \fD @ C:  f#e&&&&\);@ FR FR FF |^& & & @e&&& V DO    G6Af& l>f&"yB V " V XV 4R  fffD   a  \e\ \%6  \&&&&\\\ \@3eޘ@7Q@׋@êg{H& fDezr&&&&A  e35@e35@ R jV |F V V V V V V V | V e    C f&&&&&  \\& \\zr1@\ r(7[?\ -?v9?uοMc?kA`5?I2f?(*@ A/fEA77B  e@ & & f& & ff& & f V J ffff      \CEf&\& P\&W @ EE Emާ B @0 f %&&\f&\J\ e\ e\\\&\\\\\Be*6 6 e*   e*&fU%f& )( $  "  f& ž ev\@    7 (6&8AZ87(  xX xX `0  (  -x& $x& %x& *x& Gx& Ix& Rx& 0  9v P & Wxt9X FVLXL(< X$$(< dLTdLJL/d$68> xXLL| xRLLD xR (~ L R 'XLL$$'LdL5`LXL> XL\L$6L/3d$t96d$7 $$Ķ( 'Ķ}B ʦt9ƶ'BL x'ƶBL\L `L~ LZL L^L~ L  ZL>ȶ\L~h \L¶'¶Lfd¶ȶTA1 O4:v$4 xԩжζLLLD xܩLLD xܩжζd$6d$赖 d$7 |Ҷ ҶL~ L xd$Զ ԶL~ L x*d$b ֶҶ\L Ҷ`Lv P `Ҷ\L56b ֶԶZL Զ^Lv P ԶZLN6x6b ֶ ֶ5L/ҶXLԶVL6d$7 {b b n ܶ$趬ڶ>4(ض(  `0  (  xګ ,xګ xګ x (x +x -x0 *xX /xh ^xx )x @x .x 0  9v P  A  Zv P ƭb 㶂b 8ڶ4~$( h $(h ԫ 㶆 b b 嶂6b b 嶂6 㶆Hb b 嶂6b b 嶂6b b 嶂6b b 嶂6b b 嶂6&x((  xά ~ڬ,ڶضڰ xB8ڶʫ,ڶضڰ x8ڶʫڶض x4~$( < $(h b 㶦 x,ڶضڰ xb n ܶ'^ ޶ڶض  x4~'^޶ʫn ܶڶضLD x4~'^춰궖'BLZ'^ xʫ0޶&xP((p嶎Pv4~$( < $(< 嶂ԫ P,ڶضڰ x6趂޶X$.ڶضڰ x~'^޶b X$7 hw2F8>4( 0  9v P  .8>4( 0  9v P L0vx>4( Ex  ex L dx L xȯ:(h D>4( DR8>4( +x  -x L x8>4( 0  9~ L 8>4( 0  9v P * >.( xb X$8b X$7 uZ6;  ΰ~!&b X$b X$7 ubb (( : ~ X P 0 :~<@h4ZҲ>b'V'V'^V ZB̳'V'V'^R ZB̳'V'V'^ ZB̳'V'V'^ ZB̳'V'V'^ΣZB̳̳'^'^DZ̳&. &. .& '^'^\46 6Z̳'^'^Z̳'^'^žZ̳'^'^Z̳'^'^Z̳'^'^ Z̳j.r.X$X$4~'^.B X$7 rt @B@̢Bx&n@b >X$>@<X$>7 4r|DFFx ( NX$N7 rTRVXZTPd$7 qb b`^\D xX$b^>4(\d 0  d9~ L xδX$b` ^>4(\0`8^^>4(\e 0  e9v P δb bX$b'$ % * 0 thru 9 General IntegerRight Width - -$%*GIR09WColumn width:Kq#ʶζoWζq 5ζK}ζ,.8^ζGoto cell position:?Bad Cell position_XkfҶ"Kض ,(+-*/^)@.09AZb:dZ09.09EedDD+-0909o gfIA!hcYPs<=;PsD,.""P:d:\0909(D00.0 )re3d & {35 5  X@@c@c "Xœ u3 r3 3&5 w zX֫  b{35&z :U   U N`5 &* U   U 5    DRSҋ3 te \^ ҪD  sN7$S sLls & V LL &E x0lL @ B(w ^yPѕ ѕ(s b .D,  J) s  ʋsN& &  LcN& &  *w xhl   3d X @E`se K  VsW7s5rX5@EEW 5@W U5W ÉX@@c@c RN*XœeNU X5E33 r3 &5 w wX5@U@X5,Nɥ R  <& & & f@ rw >weeXN55@X5W U5@CW UU 56W UX5@5)  pqw vĉX5  ‰ U@ X5. 5@5@UX5  5UX 5UX5‰5X5X5ÉX5@5 &  A t tX5ÉX5ÉXf&̋TT 5 Eť1 ť+ť$ 3 Tť0 H̋  <̋s  Ş@{s @ s ツ̋m 54 w~& L E &t 4 U5@ 5 &  n&pSD   \ƥ \% 0m UJ  \ D  3-^5 ~4 E^ %\    ^  , w^ f  BB@Qs^3\ \`D Da E & 8 x   A pU@3 3&e &&& &ڦ&P0&~ j = 5F: Σ 6 0 l plpEE&B~  ˁ  U5B&f x}0 Dl0E&l&  V! ̋w}0 p  plpw} ޢS 0D0,  `&l   E  |lʋDD V&l   E 4f ppNl /Uc 0, & { > n ff& %N* +ABC    C΢   E3  e  ADE % b %e ee e  (@7 |jlRb jxԩd$ֳֳRlֳ`ҳֳҳԳ ҳllLd':'<'@'N&O&ҳllL$n'Lff'fdn:R$n$ppn( xҪҳllLn'p'pnt'BL&'t}'$(t&$(t&dp~ L x8 : < @8 N8 On$'L'd:n''&'&&&x'BL'}$(< $(< n$(A&4d@0tnn@d$ d$ 0 8@N tnnd$7 xvn 68A> 6d$L($(Lh =$(Lh Lܨ&xV d$Z,(h :,(Z,( h .,( Z,(h $ $ .( x  x L  >.(\ 4 4n  >.(h n d$7 Tw68 A> \6d$$L*(&$LL F xLLD x " xd$  "Ȱ   b P  &,,6. $006( x8 0.d0(.$~ $02,2240441d0.P76d,*b P6d$b Pδ d$b P䴖 d$7 u 8x 8x"4:$(:9\ 8:x4d$:d$&:~4$:b : $>(9<<&4:L:d$f&f&  e `e& e eBj N"Q$B(< U& 8 u @ 3 & @  RuPA&eW! f'& f@! ! & etPw pgw jgw dg# B   ` ׮PU ׮PU, U1 0 555U U& @&&5¥.  , &@ #& 5ff@ & 5 EE 爄 Mxdxd zv@RSave into file: ?Cannot OPEN file?EOF or I/O error writing fileAYMvLoad from file:?Cannot OPEN file?Data in file is in wrong format ?Saved spreadsheet is too big?EOF or I/O error reading fileR,&=?Bad filespec typed:. fZRange for Print: Print into file: ?Bad range specified ?Cannot open file?EOF or I/O erroryu8 ֞&LFآj ƣ֣&Z򣼢2xx N7 Я6د87( 2 2xʞ 2xʞ 2Cx  2cx L Ҟ 2Rx  2rx L ؠt96d$XL:~ʞ:L ::':L.':L00.$<F:FP'JL'PBLZ'P}'P}$(P((P, $(P((P, Fd<<.0 !:XL'XLL $<HXLHR'BL:'R}$(Rh $(Rh GHd<<4:$:$<J:J( $L$4864LL:J'}(Ah xN6XL446864L®$(4Lh <T>>:V@@D?LTVv@Jd<<؟d::Ο5`LXLʠ XL\L56L/d$VL<~ʞXL XLp'pLb'pLddb$np'BL'JLZ'}'}$(((, $(((, dn<bddp~':L $n:'BL:'}$(h $(h Gdn<B::T$:$p$np( "$L$hljhLLp'}(Ah xؤjXLvBjljhL®~$(hLh nttpvvD?Lv@dnVL$p 4(( >.(< 8 @xާ A  Zv P a  zv PL ( xX$8>4(( >.(< 8 X$>4( (ާxFLD xZb X$z|>.(>4(, 48Z7 }68> x̪LL F xLLD x68> x̪±LL F xLLD x Ʊ ııƱ̱( '̱}(A̬dıTdƱN:v :±L4L4((LA( $(豑L< 汦 x0 P x$(LA0 P, LLBLD x$(A< ޱ``L®$(豑L((A, 걐LLܱڱv@d$7 yҰ6ڰ8 A$74>4((  @xT A  Zv P a  zv PL  d$74>4(( ~d$>4( (T 74>4((  `Э0  (  A  Zv P 0  9v PL 7(  `$0  (  Ax RX>.(>(L, t97 x 4>4( d$>4(P xx:(0 P, x7 w  v @&   >.(A >, 8>.( A >, 8 @d (  @ * & ~&>.( 0 , 8>.(0 , 8>.(0 , 8d$:$",insert-Column insert-Row CcRrGG?Too many columns or rows to do inserte"`delete-Column delete-Row CcRrGG9wW@AZaz(XqSource range:Destination range: ?Bad range syntaxj!αTq8^ڱzQDAbsolute or Relative:@AZaz(AZ09AR} AA000d 7 >nb ,$28>4(( 0 0 x 0 x 0(x 0`0 0 ( 0 0A  0Z~ L 00  09~ LP xĸX$,2vҸX$,$(2< 042J8>4(4 x 4 x 4(xX$,8$2'..xD.n2 (X$,b ,2@ ((2@ X$,7 mb @LFJD86 F X$@86D xX$@8>4(6 )x̹X$@88b @8>8: DB JHHBN(P   P P F'NBL F'NBL ::n>( @>dHLdBF&>~p<X$@n: >A8d$7 mB$:$<$@b Nb O$'L $(h $(h G'}'BL:dLdLd$7 lL$XL$VL$\L$ZL5N6L/d$7 \lT\^4\`4\b4\d4\f4\h4d$7 kjt7r7d$y:v$\g""x&](zType a "Y" to confirmYyZx SHEET Version 1.0x Copyright (C) 1984 by Randall MeyersxGy:Fw|e X<*7 >nܸB世8~dtĸ8j8j8j@8jl8jz8j8jd$m?SHEET-F-Bad STRPTR in HPFREE HEAPFF is badNull string in heap--heap has been messed up Attempt to store a null string in the heap Bad cell typeString not ASCIZ Cannot repeat null(ºFBa&fe@BJ%@& fEA  w ĺOsQ ^s k uwy_ _  _  ĥ_  (_  _  ܧ_  &_  p_  _  _  _  _ _ _ p_ <_ _ _ ا_ _ _ $_ $_ $,_ $z_ $_ $8_ $h_ *||| 1164 122316 131 10514157553=6120212223?63242526-4527312829$36,44 32!33"34%37&38'39(40)41#3530*42.46+43149/47048@64A65B66C673514522500Ee* Ee*  @%  @ %   `&\\>Ee* 2Ee*6 6 &  f 6A  v  6N\&f$&  h % % U@     < .`D A @ 耎     e     e &f  ”E   CPQCQBm     v   &   5@%PeE T  <5eN N (E D A @  eb" b"    D A @ &f&f eD A @ eA @ e@ e&f&f   <%PeE D A @ E@E ED &f& @ &   6&C  8   h   6c6#m    (   # 6 ඌ cmd ` ҕ- 9 |E@ e0Ґ (   ) eC Hҕ ( %% ҕ0ҕ. ҕ0 Ґ+-  Ґʕ/ e:rC e e ҕ* effffeffff& & & && & & & @e*@e*e&f&   v v v !N v v v 6 6 6 6    w>v Da       B A @  A @  @ 7%   D%"& N % Be %e B A @ N B    m B A @ m A @ m@ m00         C B A D 6 ve\          B A @  A @  @ 0 B A @      @effff & & & &t>e*&f    & N & QR  v  6    66 6 6 6 "v     1 %6 6 6 6 ?     |6  l6  \6  L e%v 6 6 6  D v v v 6e\  B A @ -  - --     effff & & & & 5,4( 54- x.pt,p&朢d V.3 &   5@a3 s 5@55& &e& w 0 @ 3@3 r3 p3!  #p   3 3?& & & & 3e*e,& & & && & & && & & && & & &  CR$ $$ "` \ `C \ f B % % e@ ( B`  ` A@^   A ^”E eBCIE `-    D E A@D D e0bb %- ҕ* V  ɥFɥT Kѥ K Е ȕT‹ȕFK\\PH\PP& P   \%\e&&&&\  \\5@5#E 5m5 ҕ   mU t &&e 0d  H 0gV`b Xw b03p\03r\x0pj0r @ 3@œ r@E dht"603 Dt~ h/t~3 r3 p3 X 3\w %c m/@ ы@ e"    ;3  ,FF3 F V  {` `3 V3 Tl ,FFBFF R w  3oAsk R g  L  X[ `X DTB ;  J  @ B   D \$w V- D  ׬RDD .3 V3  .3 F  `P B3 \ n@  bEx@ H3I \sJ 6sL% (sN DL׬I( R%RNN @ 3`"  ,     - JœH @ & %NR W w  %D C& & EF   @(,w @¥Ef P(d,w DR%% $J J N ꇁ   Е `CBД w SD @` ,>Nzbd^`VZ\X^nbd^`VZ\X\  `\ `\e\e\e\e\e\e\g\g\g\\%\%\%\%\%\'\'\'\&\\&\\\\&\\\&\\\& \ \ \\\\ \ \& \ \ \& \&e\ b\b\b\b\&%\ "\"\"\"\&\ \&\\\ \\&\ \\\\\\\\\\\\\&\\&\\\&\\\\ \\\\\ \& \\\\\֋\܋\\ȋ\fffD B H`"wH`"w%\AH`"wZH`"wZ%\A  "w$ "w "w \&&&f(  f&f( ե W(c3 "3 $3 (3 &  @ Z@090 ` `P & (8 $#Eq#3 (2# S!!!!#!+!9!L! !oU& " &ec9`3 " &[ "V y t $ $,$?R d $\   D O :f II  d x@  -$')(/.,: & 0 " &W W0W9e ( & " ݁U ; , ‡:ddddn::: ~"$&43 ( j "3((3 "3 (W   @ " .@ v "5  &  "  >% %tw&4 4-45@E4   $&vC j5EUe  & 4-2 . >%& &v    E5@ߋ*3 pr 5U3 rpw^f&%$  J"Kv v&f& 0$ D\ h&j&l&+# f3! ,f$ f nH5$ j&STOP --  %#t&& fAP  t\ %f#t \\ \ \ \ #& eN t RD \RD ^ & e\& ew&& e\ e&\& g\ g&\& e\& e\&&&e\e&\&g\g&\&e\&e\&&&g\&g\&&NT$(.6666bڧ @@@ @Ћ @7 H,Fb b HN65L/037( (J (Jx* (J>x* (J!x+ (J/x+ (J x( (J x( (Jxd+ (J+x+ (J-x+ (J(x+ (J@x+ (J.x+ (J0  (J9v P + (J  (Jx L n+6JF8lFjFA (J")7( (J(J> )6(KKD?KK*J'K: Kxn*((*JA( )J$(*JAh KKKv@Kv6* KKvF* K )Jx  )Jx L0 P xj**KK,J(Ah ',J|6(B~ n+****n+n+n+n+5(5(5(5(((+(6TF8lFjFA(J> T+6(6(L/(t9(7 nF6vF8F8~G|GAF87( .J .Jx/ .Jx/ .J`,0 .J ( .J .JA  .JZ~ L /0 .JA0~x,,, -(---/.//.///./..//././/p/KK(A( /JKKD?KK0J(Ah $(0JYh G'0J|'0JK: /Jx  /Jx L0 P x,/F( x/8@/d$KK(A2J   2J P /6 G8~G|GAKK'|(> x/KK(A x-6d$KKD?KKKv@/Gx/6G8BG87( .J .Jx/ .Jx/ .J`:.0 .J ( .J .JFR.Gx/ .JAf.b / .JMz.b / .JC.b / .JR/b /d$d$d$ .d$ x.L/d$d$0d$rG( x/zGdBjt96d$7 &GXAAGGA(BG8 K8J'8J6L6J6J>J >J>J9@J8J@J@J06Jd8JK/ K8J8JHJ(BG7G7GBJ8JBJBJ9FB:J KPJPJ70G7LJA >RJRJ7d$7 XGVJ`TJvJ(Y( ZJ'TJ6L\J((vJA~`1l111GP\J9d$ ZJ-1\JVJ`TJ'|(9d$ ZJR1\JVJ`TJ'|(8d$\JVJ`TJ'|(T8d$VJ`TJ'K^J\J^J>: x 2d$ ZJGxV2 ZJIxl2 ZJ*x2 ZJ$x2 ZJ%x3 ZJ0  ZJ9v P \3G\J^J9|34\JG\J^J9$(\JKh |3\J ^J2r^J\J\JG9'TJ6L \JhJhJ9d$G\J^J9)fJ()KXJ XJ x3BXJ fJ2|3$(fJKh $|3G \JjJBjJjJr^J ClJlJ9$(\JKh %$(\JKh |30 ZJ0tJtJ\J^J9K8d$7 GXA(BK0Kz;G8KK(A~33 4&4RHPG8|4G804G8KK1|4H8KK'|((|J|J-v^4-|J|JKK'|(T8 BVHTHA 4H84 4"H84&H8RH 0JJ9K KKKK>JK~.5 K~J'~J6LzJfzJKzJd~JJ5KKAKK1FB xb5*H b THXHAd$7 ZHKKAKK1d$7 bH KJ KJ JJ'J6LJ&J54JJ4Lv5 JKBKd$7 ljH KJ KJ JJ'J6LJ&JB6BJ&J~6 JK4Kd$7 $rHKK>KK6Lvv6 6LKd$7 zHK K0KK6$Kd$7 HHHA BHHA Bd$7 HKKD?JJKK J J7H b JKKJ'KJ$(JAh  xJ7 Jx7KK(Ah KKKv@Kv7 KKv7 K Jx76d$7 Hn(J&Jv7b$J7 H 7Jv(JJx7d$Jd$7 jH$JJ>4(J $8d$Jv88HPJ>.(J74J87 H$JJ>4(J x8zJJvz8d$J>.(J74J^8J J0JJ9d$7 HJ(JJJ JJJ9$J.(JJ J8d$J74JD!JJ8d$7 bH$JJ2(J 49HPzJJ@9d$J>4(J T9$JJ>.(J74J4J497 HH7d$7 HJ9d$$JH7D!JJ9d$7 HJ6;JHJKt!J''JKh K8d$7 zHJ6;JJ6;JIJKt!J&'JKh d$7 4Ib JJJJx^:X$Jb JJcx:Jbx ;JJ JJ9 I8J@ JIJ J JJ0 JJ7 JJ0 JJ7X$JJJ JJ9I8X$JJJ JJ9I8X$J7 <IJKK@ 00( J.IK 00( J JJb$J7 0I$KK v;KKcv;KKK9d$7 8IDIBIAK8K(K KK Kx;R KK<KBIA7( K Kxr= Kx@> K x> K x; Kx= Kxt> Kx= K >KOx>4K4KK0"KK< KK$(KK K$(KK KF K KB KB K !K"K<$(KK< K KK$(KKKK74KdKK< B;&K~@IvAK0$KK~f= $KK$(KKK$(KKKF KKK74K4KdKKF=BKBK<KKx>K&KK~= &KK$(KKK$(KKKF KKK74K4KdKK=BK<&Kx>DIBIA KK0(KK~2> (KK$(KKK4 K$( KK\ KK74KdKK>K  KK<&Kx>BK;KK>4K;K; KK;B~ >b>j>P>@>>>>>&Kx<t9;$(KKh $Kb KX$K7 FIb K*K; ,KX$,K7 NI.K(0:K$8K(K2K.(.K4KF 4K2K42K44Kd8K:K?VI; 0KX$0K7 .XI>K`K`4(zKK xC K xC Kx ( ~KX$~K7 IKKb KKKzC xCX$KK>K4(KK `D:(KK0 K , K>4(KK A  KZ~ L x:DX$KK>4(KA0K8KK>K4(KK `D:(KK0 K , K>4(KK A  KZ~ L DK0 KA0K8KK>4(KK 0  K9~ L xDX$KK K>4(K0K8KK>4(KK 0  K9v P DK@EX$KKNEX$KK4Lv\EX$KK6LvjEX$Kb KX$K7 Jb KKKKKC EX$KKKzC EK>4(K :xEKKKKb KX$K8KKKKKC FX$KKKvFX$KKKv"FX$Kb KX$K :(J>!/+-(@.09 Label: "Number or Expression:xx.JAuto-advance Blankcell Clearsheet Delete Edit Format Global Insert Load Print Replicate Save Version eXit AZAGClear Sheet: Editing: Format Auto-recalc Manual-Recalc recalc-by-Columns recalc-by-Rows FAMCRExit: /d@4J  \g$JJA A\gTJ-RGI*$%09* $%y[xJ (blank) (label) (number) (expression) ManRowCol?Not enough room in heap to store cellF_qJ%&$J(&$J%&rJ(&rJJ_X#J?Bad expression]9x}J\gJ\gvJ\gxJ\gyJ\gXqJT KJAyJ \g:J(/@J(a""JERR00N/ADEP o;@J00 00 \g<K,K,v*K.K4Mq Nd$~KK xKKzC x6Z8j> d$KK xKKzC xb ~ d$7 lb zC xX$>4( `F:(0  , >4( A  Z~ L xnX$>4(A08>4( `:(0  , >4( A  Z~ L 0 A08X$4LvX$b X$w|Advance No-advance NnAaBeginning Column:Ending Column::d$AZAZ D C %     @  f&\"e*&&  \fD @ C:  f#e&&&&\);@ BR P`R V ΢& & & @e&&& V O    G6Af& l>f&"yB V t V V R ؟ fffD   a  \e\ \%6  \&&&&\\\ \@3eޘ@7Q@׋@êg{H& fDezr&&&&A  e35@e35@ R V ڠڠ ΢ V V V V V V V Π젢 V e    C\f&&&&& \\\& \\zr1@\ r(7[?\ -?v9?uοMc?kA`5?I2f?(*@ A/fEA77B  e@ & & f& & ff& & f V ffff      \CEf&\& P\&W @ EE Emܧ B @0 f %&&\f&\J\ e\ e\\\&\\\\\@e*6 6 e*  e*&fU%f& )( $  " ܟ f& h ev\@    7 ւp6x8괖A87(  x x `0  (  -xx $xx %xx *xx Gxx Ixx Rxx 0  9v P x WxԤt9 KK(Y< $$(Y< d6Ld4LL/d$6ܴ8촖> xKKγ xKKzC x (~ L  T'K6Lv$'6Ld4Lb5KK KKv6L/3d$t96d$7 $$(A ֦'|  t9'K  x֦'K K K~ LK LK~ L ֦ K>K~ K'6LfdA1 4vҥ$4vҥd$4vҥ$4vҥd$7 J 8d$3KbK K4Bd$ K4Bd$7 ~Kt9d$BKKKd$K K0KKȧ$KN6L/d$7 ~K6Lt9d$4KKK~d$ KKN6x6L/d$7 L~K4L>t9d$4KKK~Nd$ KK56L/d$7 ~Kt9d$BKKKd$ KK65L/d$7 }6&8N> x&" KKC x.KKzC x." Bd$6d$: d$7 0}P$ $4L~ L xbd$& &6L~ L x|d$b ($K $Kv P $K56b (&K &Kv P ⩲&KN6x6b ( (5L/$K&K6d$7 V|Xb 2b 5n .ZX$:,>4(*( 4 4`h0 4 ( 4 4 x, 4,x, 4 x, 4x 4(x4 4+xZ 4-x 4*x 4/x 4^xʫ 4)xګ 4@xR 4.x 40  49v P  4A  4Zv P b 5@b 58,@4ZZ~$(Z[h $(Zoh & 5rb 6b 7b 6b 7 5b 6b 7b 6b 7b 6b 7b 6b 7b 6b 7&Zx((Z[@ x  @~,:~,*, xګBZ8,:~,*, x8,86,* x4ZZ~$(Z[< 6$(Zoh b 5 8x@:~,*, xb 5n .'X F@0,*\ x4XX~'X0n .><,*C x4XX~'X><'KZ'X x0P&Zx((Zo¢7ࡢȭҭ4ZZ~$(Z[< 6$(Zo< 7& 7:~,*, x::0X$2Z<:,*, xX~'X0b 2X$27 xDJFD8DD>4(BN 0  N9v P l N.Ԯ8DD>4(BO 0  O9v P J0DvگDJxگD>P4(BR Ex  Rex L Rdx L x:(PBh DD>4(B D8DD>4(BS +x  S-x L xX8DD>4(BT 0  T9~ L گ8DD>4(BU 0  U9v P |FDL JLLJ>.(B xگb HX$H8Fb HX$H7 vX6;^X\V ~!Z&b dX$db dX$d7 Fvb nZ((Z[ ~ X jP 0 ~ 2Zhұ$HlزⲂX'X'X'XV ZBXX'X'X'XR ZBXX'X'X'X ZBXX'X'X'X ZBXX'X'X'X ZBXXX'X'XZxphf xphf xphf X'X'XrZX'X'XZX'X'XZX'X'XܟZX'X'X؟ZX'X'X\ZĵlX$nlX$n4XX~'XBZlB nX$n7 0sƵ xxnNb X$b X$7 rεx ( X$7 rֵd$7 r޵b zC xX$>4( 0  9~ L x X$ >4(08>4( 0  9v P  b X$'$ % * 0 thru 9 General IntegerRight Width - -$%*GIR09WColumn width:Kq# oW q 5 K} ,.8^ Goto cell position:?Bad Cell position_Xkf$"K* ,(+-*/^)@.09AZb:dZB09.09EedDD+-0909o VgffIA!hcYPs=;Ps,."":d:0909(D00.0 )pe3d & |35 5  X@@c@c tXœ v3 r3 3&5 w {Xԫ  |35&( :U   U `5 &؆ U   U L5    DRSҋ3 te \^ ЪD  sN$S sLls & V LL &E xlL B(w zPѕ ѕ(s b ,D,  J) s  ʋsN& &  LcN& &  ؇w dyڟ2   3d X @E`se K  TsW7s5rX5@EEW 5@W U5W ÉX@@c@c RN|XœeNU X5E33 r3 &5 w LxX5@U@X5,Nɥ R  <& & & f@ rw weeX55@X5W U5@CW UU 56W UX5@5)  rw NwĉX5  ‰ U@ X5. 5@5@UX5  5UX 5UX5‰5X5X5ÉX5@5 &  A t tX5ÉX5ÉXf&̋TTT 5 Eť1 ť+ť$ 3 Tť0 H̋  <̋s  Ş@{s @ s ツ̋m 54 w,&: L E &" 4 U5@ 5 &  n&nSD   \ \% 0m UJ  \ D  3-^5 P4 E^ %\    ^  , w  f  BB@Q~s^3\ \`D Da E & 8 x   A pU@3 3&e &&& &,&P0&X j = 5F: ̣J 6 0 l plpEE&~  ˁ  U5B&f &~0 Dl0E&l&  V! ̋w`~0 p  plpwN~ ܢS 0D0,  `&l   E  l}lʋDD V&l   E 4f ppNl /Uc 0, & \| > n ff& %N* +ABC    C΢   E3  e  ADE % b %e ee e  (@7 v}ֲ޲ x&d$((($($& 8$''''&&$$'6L'd$$´´(A x$$'´'´ƴ'K&'ƴ|'$(ƴA&$(ƴY&d´©d$*'*',&*'  $$Ĵ(&4dĴ*$$6d$ d$ *($4d$7 {6ȴش> xd$ijȴijij³ 8جج6''''&&ڴ4L~ 6L~ L괐~ L ʬ8 䴌 洎 괒8 8 جج6$'6Lܴܴ'ܴd䴌ګجج6''&'&&&xf洰'K'|$(A< $(Y< جج6$(޴޴&4޴dƳ@d$N d$`  8@ Ƴd$7 hyȳn 68A> N6d$K(X$(XKh =$(XKh TKR.Z&Zxҳ d$,(h :,(쳖,( h .,(  ,(h $\$^.(V Vx V x L :\>.(\ V4\4Vn^\>.(h  n d$7 x68`^A`> 6d$$K|zxvKKtE xKKzC xrt`p rxd$^^`tZZ^^Zb 8b \ x~~ v(A x dzpvЯ v~1d`7d~|fb `ZZ6d$b   d$b 6 d$7 6vd xn xt4$(\ xd$d$&~$b rnh$(&4dd$f&f&  e `e& e eB N"Q$B(< U& 8 u @ 3 & @  vPA6&eW!8 '& f@! ! & etw hw hw h# B   ` ׮PU ׮PU, U1 0 555U U& @&&5¥.  , &@ #& 5ff@ & 5 EE 爄 Mxdxd zv@Save into file: ?Cannot OPEN file?EOF or I/O error writing fileAYMȴLoad from file:?Cannot OPEN file?Data in file is in wrong format ?Saved spreadsheet is too big?EOF or I/O error reading fileR,&=?Bad filespec typed:. fZ`Range for Print: Print into file: ?Bad range specified ?Cannot open file?EOF or I/O erroryu (x*򠼢r(8xDNxx N7 Ĉ"6*87(  x x Cx  cx L $ Rx  rx L *t96d$K~4Lܡ '8L'6L$'K'KZ'|'|$(B((A, $(Z((Y, db !KR'K6L $K'K:'|$(Ah $(Yh Gdܞ4$$(A $K$KK'|( xK4KF$(Kh D?Kv@d*d 5KK KK56L/d$K~6Lܡ$ 'dL'KZ'*}'|$([((A, $(s((Y,  !KTdB$K'K:'|$(Ah $(Yh Gd4$$(A $K$KK'|( xtKZ4K$(Kh D?Kv@ddL/d$^ d$7 t687(  xl xl Cx  cx L t Rx  rx L t96d$K~l$ İİİKD?d>ܰKD K°'°6L'°8L$Ұ°Ұް'K'ްKZ'ް|'ް|$(ްA((ްB, $(ްY((ްZ, Ұdࢬd°ܰТ'6L $԰԰ఊ'K:'|$(Ah $(Yh G԰dXB$$°$ְ°ְ(A t$K$KK°ְ'|( x*KvBKУ$(Kh ưư°ȰȰD?K䰖v@ְdd°5KK KK56L/d$K~l$°Kʰ°ʰʰD?d°K¤>Kj$° ̰B̰ Kذ°ذ氊'K'dLZ'|'*}$(A(([, $(Y((s, ذd̰d°$°°谊'K:'|$(Ah $(Yh Gd°nB$$°$ڰ°ڰ(A $K$KK°ڰ'|( x>Kv$BK$(Kh ΰΰ°ааD?K찖v@ڰdȥd°L/d$7 ¯b Φ8>4(( >.(< 8 @x0 A  Zv P a  zv PL z ʦX$8>4(( >.(< 8 dX$>4( (0ʦFC xb X$zΦ>.(>4(, 487 ~֯6ޯ8> x  KKtE xKKzC x6쯖8> xKKtE xKKzC x  (A Ҩ'|(d d v v    v  :4 vb 4 vb d$dЩ  :4 v 4 v dd|  '|(d ܩd ֩b X$ $6b X$7 8| $x "&x P xZd$&$D?&`$('K"` *'KZ$((Y((*Y, $((A((*A, ((*A~ª֪ª&`$'|d$"` '|(&$v@d$&$" &$ d$7 R{2`0'|>K:4K4:((K( 8$(:K< 8 8x0 8P x@$(K0 8P, K<>@KC x$(<< 8@0`4@>2`6>>@:KH$(:K((<, 4(B( D D@x DA  DZv P Da  Dzv PL 欦 DJd$D74FF>4(BJ( D JЬd$F>4(B (J FHD74FF>4(B( D D`"0 D ( D DA  DZv P D0  D9v PL 쬖7( E E`v0 E ( E EAxX ERH>L.(B>(LBL, Xt9N7 x^P4PP>4(N d$P>R4(NTP xʭ:(RN0 TP, ʭ7 ^xfZ^^vd^@`x^ ^X>.(V`A >, 8XX>.(V^A >, 8X\@d^z\ bb@ `|b b&^Ю&`ꮂX>.(V^0 , 8XX>.(V`0 , 8XX>.(Vb0 , 8Xd$:$"~insert-Column insert-Row CcRrGG?Too many columns or rows to do inserte"delete-Column delete-Row CcRrGG9wW@AZaz(XqSource range:Destination range: ?Bad range syntaxj! Tq8^,zQDBAbsolute or Relative:@AZaz(AZ09AR} NVAA000d 7 nԹb ~$8  >4( (  x6 x6 (xh `0  (  A  Z~ L 0  9~ LP xX$~v$X$~$(< 48  >4(  x6 x6 (xhX$~8 $'xn zX$~b ~@ ((q@ X$~7 mb tE X$zC xX$>4( )xX$8b 88  (A    P 'K 'K n( @d == | + | - == | * | / == | ^ == - | + | | ( ) | | == @ABS( ) | @AVERAGE( ) | @COUNT( ) | @EXP( ) | @INT( ) | @LN( ) | @LOG10( ) | @NA() | Page 3 @PI() | @SQRT( ) | @SUM( ) == : == | == == . | . | == E | E + | E - | D | D + | D - | In other words, the following operators are available: OPERATOR FUNCTION PRECEDENCE ASSOCIATIVITY -------- ---------- ---------- ------------- () Grouping 5 - unary minus 4 + unary plus 4 ^ exponentiation 3 left-to-right * multiply 2 right-to-left / division 2 right-to-left + addition 1 right-to-left - subtraction 1 right-to-left Note that the @AVERAGE, @COUNT, and @SUM functions take a range as their argument. These functions operate on all the cells in the rectangular array specified by the two end points of the range. The first cell in a range specifier gives the upper left corner of the rectangle, and the second cell in the range specifier gives the lower right corner of the rectangle. Thus, @SUM(A1:B3) sums the cells A1, A2, A3, B1, B2, and B3. A degenerate case of a rectangle can be a row or column: for example, @AVERAGE(A1:A5) averages the cells A1, A2, A3, A4, and A5. Page 4 The following functions are available: @ABS() Take the absolute value of the expression. @AVERAGE() Take the average of the specified range. This function ignores blank and label cells in the range. @COUNT() Return the number of expressions and numbers in the specified range. @EXP() Raise e to a power. @INT() Throw away the fractional part of a number. This function has the bug that it also causes the number to lose precision: The result's mantissa is only accurate to 7.2 decimal digits of precision. @LN() Take the natural logarithm. @LOG10() Take the base 10 logarithm. @NA() Cause the cell's value to be displayed as N/A. The @NA() function is used as a prompt: in general purpose spreadsheets, cells marked N/A are to be filled in by the user of the spreadsheet. @PI() Returns the value of pi. @SQRT() Take the square root of a number. @SUM() Sum all the elements of the indicated range. 4.0 OPERATION There are two version of SHEET: SHEET.62 (the SAV file for VT62 or VT52 systems) and SHEET.100 (the SAV file for VT100 systems). To install SHEET, copy one of those two files to either SY: or DK:, and then rename it to have the extension ".SAV". SHEET is a very big program. In general, the foreground job and most device handlers should be unloaded. If this is not done, SHEET may fail to start, or the commands which do file I/O may fail. (This last is most dangerous because you may have spent an hour typing in a spreadsheet before you discover that you can not save your work!) You may want to try a load or save command right after starting SHEET to make sure that there is sufficient memory for load, save, and print to work later. SHEET has a heap that it uses to store labels and expressions. If Page 5 this heap becomes full, SHEET will not allow any new expressions or labels to be stored until space in the heap is freed. Space in the heap is freed anytime the length of a label or expression is changed to be smaller (i.e., when the cell is blanked, the cell is edited, or a new string is typed in, etc.). SHEET uses the top three lines of the terminal screen to provide feedback on the state of the spreadsheet. Line one displays the current cell address, the cell's type, and the cell's contents. The far right of line one tells you the recalculation order and the number of characters of heap remaining. Line two is used for prompts and for error messages. Line three is sometimes used for prompts, but usually this line is used as an echo area when expressions, numbers, filespecs, and the like are typed in. SHEET starts is a state where it is waiting for the user to type a command or a new value for a cell. SHEET decides if the input is a command, a label to be stored in the current cell, or an expression to be stored in the cell on the basis of the first character typed: The following characters signal the start of a command (see the next section): / " ! > ^R The following characters signal the start of an expression (or number): 0 1 2 3 4 5 6 7 8 9 + - ( @ . Any other printing character signals the start of a label. The next section will discuss commands in detail. Value type in will be discussed now. When SHEET was determined that a label or expression is being typed in, it will write either "Label:" or "Expression:" in the prompt line, and will echo the user's input into the echo line. During type in, various editing keys can be used: Up arrow Go to beginning of line Down arrow Go to end of line Right arrow Go right one character Left arrow Go left one character Delete Delete the character left of the cursor CTRL/D Delete the character at the cursor CTRL/U Delete the text left of the cursor CTRL/K Delete the test right of the cursor If all the text on the line is deleted, then SHEET aborts value type in, and returns to its normal state of waiting for a command or value type in. Value type in is ended by pressing return at any point in the line. If a label was being typed in, then the cell becomes of type label and Page 6 has the line assigned as its value. If an expression was being typed in, then the expression is evaluated. If the expression is a constant expression (does not reference any cells in the sheet) then the cell become type number with the value of the expression. If the expression is not a constant expression, then the cell becomes of type expression and stores the both the expression and the expression value. If the recalculation mode is automatic and a expression is typed in, then all expressions in the spreadsheet are reevaluated after the current cell gets its new value. (Recalculation mode is on by default.) If autoadvance mode is on and a new cell value is typed in, then the cursor moves to the next cell in the autoadvance region. (Autoadvance is off by default.) 5.0 COMMANDS Commands to SHEET are one one character long, but several commands may display menus of additional one character commands to be typed, or prompt for additional information. The commands to SHEET are: / Begin a muti-level command. A menu of the second level commands will be displayed in the second and third lines of the screen. ! Recalculate the spreadsheet. This command is most used the manual recalculation mode, but it can also be used in automatic recalculation mode to force a recalculation. > Go to a particular cell. The command will prompt for the cell name of the new location. " Start a label. This command is used to start a label that begins with a character which normally begins an expression. SHEET will write "Label:" in the prompt line and begin label type in mode. The quote is not part of the label value. ^R Redraw the screen. Useful if the screen becomes corrupted because of RT echoing typeahead. Up arrow Move to cell on the preceding row Down arrow Move to cell on the next row Left arrow Move to cell in the preceding column Right arrow Move to cell in the next column. Page 7 As is noted above and below, some commands prompt for additional information like filenames, cell positions, ranges, etc. While typing an answer to one of these prompts, the same editing keys used for value type in can be used. Note that the entire command is aborted if all the text being typed in is deleted. Thus, if you mistakenly begin a /L (load) command, you can abort it by typing a CONTROL/U or delete to the filename prompt. After a "/" command, SHEET puts up a small menu of secondary commands which can be given. The secondary commands are all one letter long; the commands are the capital letters in the words in the menu. The following is a list of the commands which can be given after "/": Word Command in Menu Function ------- ------- ------------------------------------------ A Autoadvance Controls autoadvance mode B Blankcell Blanks the current cell C Clearsheet Blanks all of the spreadsheet D Delete Deletes a row or column E Edit Allows editing of labels or expressions F Format Controls the format (typeout) of a cell G Global Controls properties of entire spreadsheet I Insert Inserts a new row or column L Load Loads in a saved spreadsheet from disk P Print Prints a portion of the spreadsheet R Replicate Copies and relocates portions of the sheet S Save Save a copy of the spreadsheet on disk V Version Show the version number of SHEET X eXit Exit to RT 5.1 Autoadvance Command The Autoadvance command controls autoadvance mode. When autoadvance mode is on, SHEET will automaticly move to the "next" cell after a value is entered in the current cell. This allows data to be entered into a large number of cells in a spreadsheet rapidly without the user having to use the arrow keys to position to the next cell. The autoadvance command will display a menu in line two of the screen, and wait for a one letter command: Word Command in Menu Function ------- ------- ------------------------------------------ A Advance Turn on autoadvance mode N No-advance Turn off autoadvance mode If the "A" subcommand is given, SHEET will prompt for a beginning column and an ending column. These two columns will define the autoadvance region. After a value is typed into a cell, SHEET will either move to: Page 8 the cell in the next column, if the new column is less than or equal to the ending column; or, the cell in the next row whose column position is the beginning column. 5.2 Blankcell Command The Blankcell command causes the current cell to become of type blank. The cell's numeric value becomes zero; any label or expression stored by the cell is deallocated from the heap; and the cell's format is set to "G". 5.3 Clearsheet Command This command will ask to be confirmed by typing the letter "y". If the command is confirmed, the all cells in the sheet will be blanked (see the Blankcell command). 5.4 Delete Command The Delete command allows you to Delete a row or column at the current cell position. A "C" in response to the Delete command menu causes the current column to be deleted; a "R" in response to the Delete command menu causes the current row to be deleted. The delete command automaticly adjusts all expressions in the spreadsheet to reflect the deletion of the row or column. However, expressions which contained references to the deleted row or column may now be logically invalid, and should be reviewed by the user. 5.5 Edit Command This command allows you to edit that value of the current cell (if the cell is of type label or expression). The current value of the cell will appear in the echo area, and the usual editing keys may be used to change its value. Note that it is not possible to change a label into an expression (or the reverse) by use of the Edit command. Page 9 5.6 Format Command This command sets the format of a cell or the width of a column. The cell's format controls how it is displayed. A menu of options is displayed. The "W" or Width command sets the width of the current column. After the "W" is typed, SHEET will prompt for the integer to use as the new width of the current column. The remaining options to the Format command set the format of the current cell. The following formats are valid for cells of type label: Format Meaning ------ ------------------------------------------- G General--Display the label left justified R Right--Display the label right justified - Duplicate label across entire width of cell The following formats are valid for type number and expression: Format Meaning ------ ------------------------------------------- G Display 2 digits past decimal point 0 Display 0 digits past decimal point 1 Display 1 digit past decimal point 2 Display 2 digits past decimal point 3 Display 3 digits past decimal point 4 Display 4 digits past decimal point 5 Display 5 digits past decimal point 6 Display 6 digits past decimal point 7 Display 7 digits past decimal point 8 Display 8 digits past decimal point 9 Display 9 digits past decimal point $ Display the number with a dollar sign and two digits past the decimal point % Display the number as a percentage. (Multiply number by 100, and put "%" after number.) * Bar graph--Display @INT(cell) asterisks. I Display the number as an integer (no decimal point). If a cell's format is not valid for the type of cell that it is, then the "G" format will be used when displaying the cell. 5.7 Global Command The global command controls general properties of the spreadsheet. A menu is displayed which has the following commands: Word Command in Menu Function ------- ------- ------------------------------------------ F Format Set the format of all cells Page 10 A Auto-recalc Set automatic recalculation mode M Manual-Recalc Set manual recalculation mode C recalc-by-Columns Set the recalculation order to column major R recalc-by-Rows Set the recalculation order to row major The F subcommand will prompt for format information just like the /F command. All the cells in the spreadsheet will have their format set to the new value. The A subcommand turns on automatic recalculation mode. In this mode, SHEET will recalculate all the expressions in the spreadsheet anytime a new value is entered for a cell of type number or expression. This is the default mode. The M subcommand turns off automatic calculation mode. SHEET will only recalculate the expressions in the spreadsheet when an "!" command is given. When automatic calculation mode is off, SHEET informs you of this fact by writing "Man" in the upper right corner of the screen ("Man" stands for "manual mode"). The C subcommand set the recalculation order to column major order. When the spreadsheet is being recalculated, SHEET will evaluate all the expressions in column A, then column B, etc. SHEET will remind you that the recalculation order in column major by writing "Col" in the upper right corner of the screen. This is the default recalculation order. The R subcommand set the recalculation order to row major order. When the spreadsheet is being recalculated, SHEET will evaluate all the expressions in row 1, then row 2, etc. SHEET will remind you that the recalculation order in row major by writing "Row" in the upper right corner of the screen. 5.8 Insert Command The Insert command allows you to insert a new row or column at the current cell position. A "C" in response to the Insert command menu causes a new column to be inserted; a "R" in response to the Insert command menu causes a new row to be inserted. All expressions in the spreadsheet are adjusted to reflect the insertion of the new row or column. 5.9 Load Command This command loads a saved spreadsheet into memory from a file. SHEET will prompt for an RT filespec. The default device is DK:, and the default extension is ".SHE". Page 11 5.10 Print Command This command causes a region of the spreadsheet to be written out to a file in the same format as it is displayed on the terminal screen. SHEET will prompt for an RT filespec. The default device is DK:, and the default extension is ".LST". 5.11 Replicate Command This command will copy one region of the spreadsheet into another region of the spreadsheet performing optional relocation on the cell references in expressions. The command first prompts for a source range. This range has the same meaning as the range for the @SUM function. If the colon and second cell reference is left off, the range is the one cell named in the range. Then the command will prompt for a destination range (to be given in the same format as the source range). Then for every expression in the source range, the user will have to mark each cell reference as being either absolute or relative. SHEET will display the expressions, one by one, and will pause after each cell reference. The user then types "A" to mark the cell reference as absolute; "R" to mark it as relative. As SHEET copies an expression into a cell in the destination range, it will relocate all the cells marked as relative. When SHEET replicates a cell, it also copies the current numeric value (if any) and format from the source cell to the destination cell. The source and destination ranges may overlap. 5.12 Save Command This command saves the current spreadsheet into a file. SHEET will prompt for an RT filespec. The default device is DK:, and the default extension is ".SHE". 5.13 Version Command This command causes the version number of SHEET to be displayed. Page 12 5.14 eXit Command This command will ask for confirmation with the letter "Y". If the command is confirmed, SHEET will exit to RT. 6.0 ERRORS IN CALCULATION If certain exceptional conditions occur when an expression's value is calculated, then the following will be displayed right justified as the cell's value: ERR01 Syntax Error in expression ERR02 Expression too complex ERR03 Floating Overflow ERR04 Floating Underflow ERR05 Zero divide ERR06 Square root of a negative number ERR07 Undefined Exponentiation ERR08 Log of zero or negative number N/A Not available--expression references the @NA() function DEP Expression references a cell in error or DEP or N/A BC VMS Focal V3.0 25-AUG-1983 11:59:23.49 -not a DEC product401.10 open output msg="test.txt"; begin output msg01.20 set w=4801.30 for i=1,w; do 2.201.40 type !;do 2.2; do 3E01.45 type "This box is ",%3.00,w," characters wide "; do 3; do 2.201.47 type !K01.50 do 2.2; do 3; type " Focal IVP passed "; do 3; do 2.2%01.60 set astr=ftxt('****'); type !!01.70 for i=1,w/4; type %a,astr!01.80 klose msg; vanish fsqt(2) 02.10 quit02.20 type "*"; return; quit'03.10 set n=7; c the number of spaces03.20 for m=1,n; type ' ' 04.10 quitgo1 FOCAL FOCAL is not a DEC product. It is an interpretive interactive language It was written for VAX in MACRO-32 and Bliss-32. In many aspects it is similar to FOCAL-8, but there are both omissions and additions. See FOCAL.DOC for imformation on how to set up FOCAL on your system. (Dave Monahan) 2 Syntax Lines input to the Focal interpreter are either immediate commands or additional lines for the stored programme. If a line does not start with a line number it is an immediate command. Focal does not distinguish between upper and lower case except in quoted strings, or variables holding text. 3 Variables Up to 4 characters are allowed in variable names. The first character must be alphabetic and not "F". The rest of the name may contain any alphanumeric characters. Variables may be subscripted (arrays) and the subscripts may be any legal expressions. Up to 3 (assembly parameter) subscripts are allowed. The first reference to an array decides its number of subscripts, and a later reference using a different number of subscripts will be flagged as illegal by FOCAL. Legal variables: ITEM A AR3(5,X) Illegal variables: FRED (starts with "F") 9NY (starts with digit) AR3(5,AR3(5)) (number of subscripts) K2@3 (non alphanumeric) 3 Expressions Operator precedence in expressions is: 1)Unary minus 2)Exponentiation (^) 3)Division 4)Multiplication 5)Addition and Subtraction Otherwise priority is left to right. Order of evaluation may be altered or made more clear by brackets. Expressions are acceptable in most places where a value is required. The major exception is as a label on programme text, where it could be confused with an immediate mode command. To avoid confusion with A format do not start an expression in format control with "A" (use "0+A..." instead). 3 Line numbers Line numbers have the form of a decimal number with two digits before and two digits after the decimal point (e.g. 23.17) The digits before the decimal point are referred to as the group number. Leading or trailing zeros may be omitted (e.g. 01.10 may be entered as 1.1). Several commands that take line number arguments (such as DO or ERASE) will also take a group argument (fractional part equal to 0) to mean all lines with that group number, or zero to mean all lines in the programme. 3 Commands Commands start with an imperative verb (e.g. TYPE) which may be abbreviated to a single letter (e.g.T). They usually have arguments (for these see individual commands). Several commands may be placed on a line separated by a ";". Each command has its own detailed syntax. 4 Ask The ASK command gets input from the current input stream. It may include a quoted prompt. Format modifiers may be used. Numeric formats will accept only valid numbers. Alpha formats accept the specified number of characters (up to 4) into each variable. See TYPE command for formats. example: ASK 'Give a number ',%6.03,I 4 Begin The BEGIN command switches INPUT, OUTPUT or COMMAND stream to the specified channel number. The ERROR stream may not be switched to another channel. example: BEGIN INPUT X 4 Comment COMMENT statements are ignored. They may contain any text including ";". example: C -- this is a comment; so is this. 4 Do The DO statement calls a FOCAL line or group of lines as a subroutine. example: DO 3 4 Erase The ERASE statement erases lines, groups of lines or the whole programme text. There is currently no facility for erasing variables. example: ERASE 2;C deletes group 2 4 For The FOR statement initialises a loop. The form is: FOR var=start,end,increment;... The variable is initialised to the start value and incremented by the increment value (default 1) until the limit is reached. Negative increments may be used. The increment defaults to 1. example: FOR I=1,10;DO 2 4 Goto The GOTO statement switches control to the specified line or group (or starts the whole programme) example: GOTO 22.63 4 Help The help command obtains on-line help from the FOCAL help library. example: HELP SYNTAX COMMAND FOR;C -get help on FOR command (keywords may be abbreviated). 4 If The IF statement tests an expression and switches control on the result. The format is: IF (expr)line1[,line2[,line3]];... The order of the lines use is -ve,0,+ve If line numbers are omitted control drops through to the next statement. example: IF (X-7)2.3,2.4;T "X > 7"! 4 Klose The KLOSE statement closes the specified channel. It is not possible to close one of the permanent channels (see File Handling). If a stream is active on the closed channel it reverts to its initial default. example: KLOSE X 4 Open The OPEN statement opens a named file, creates a channel, and assigns the channel number to a variable, to be used in later BEGIN or KLOSE statements. The format is: OPEN [INPUT ] var="filename";... [OUTPUT] example: OPEN INPUT X='FRED.DAT' 4 Quit The QUIT statement returns control from a programme to command level. example: 01.45 QUIT;C - end of programme 4 Return The RETURN statement returns one level of subroutine call as called by DO command. example: 01.10 DO 2 01.20 QUIT 02.10 c--- . . . 02.57 RETURN 4 Set The SET statement sets a variable to the value of an expression. The format is: SET var=expr;... example: SET VAR=X^2+2X+1 4 Type The TYPE statement prints variables, quoted strings or expressions on the current output stream. It may also include formatting expressions: %Aexpr sets a number of ASCII chars to output for each subsequent expression. %expr Integer part sets size of numeric field. Fractional part sets number of digits after the decimal point (e.g. %06.02). % sets floating point format. ! causes new lines # causes carriage return. example: TYPE %6.03,X+Y,Z," ARE THE ANSWERS"!! Note that a format expression sets the format for the stream until the next format expression. If an ASK or TYPE does not do what you expect, try resetting the format first. 4 Vanish The VANISH statement allows return of a status value to the VMS system. FOCAL exits with the value masked into its exit status. example: VANISH 24; C-tell system what happened 4 Write The WRITE statement prints programme text (lines, groups or all) to the current output stream. example: WRITE 2 3 Functions FOCAL supports a number of built-in functions. These all have names beginning with "F" to distinguish them from variables, for which an initial "F" is illegal. They are called by giving the name, followed by any arguments in brackets, e.g. 01.30 SET X=FSIN(Y) calculates a sine function. If a function requires multiple arguments separate them with commas. 4 FSIN Takes 1 argument and calculates the natural sine. e.g. FSIN(3.14) 4 FCOS Takes 1 argument and calculates the natural cosine. e.g. FCOS(0) ...returns 1 4 FATN Takes 1 argument and returns the natural arctangent e.g. FATN(1) ...returns pi/4 4 FLOG Takes 1 argument and returns the natural logarithm e.g. FLOG(X) 4 FEXP Takes 1 argument and returns its exponentiation to base e e.g. FEXP(0.1) 4 FSQT Takes 1 argument and returns its square root e.g. FSQT(9) ...returns 3 4 FABS Takes 1 argument and returns its absolute value (+ve) 4 FITR Takes 1 argument and returns the nearest integer value. 4 FNCR Takes no arguments and returns the number of characters read in the last A format ASK command e.g. 01.10 ASK 'Give a string ',%A,I,J,K,L 01.20 TYPE %6.00,'You typed ',FNCR(),' characters'! 4 FSGN Takes 1 argument and returns +1, 0 or -1 depending on its sign and value. 0 is returned for an argument of 0. Otherwise 1 is returned for a positive argument and -1 for a negative argument. 4 FRAN Takes no arguments and returns a random number (using the VMS clock). The range is 0 to 1 4 FRND Takes no arguments and returns the next random number from a pseudo-random sequence. Note that FRAN will change the starting point of this sequence. The range is 0 to 1. 4 FTXT Takes 1 quoted string argument and returns its internal value. I may do this better in future. e.g. IF (A-FTXT("YES"))1.7,1.6,1.7 4 FUPR Takes 1 argument, treats it as a text string value, and converts lower case characters to upper. e.g. ASK %A,TXT;SET TXT=FUPR(TXT) 2 File-Handling The FOCAL I/O commands (ASK, TYPE, WRITE), the immediate mode input, and any error messages are directed to "streams". At any time a stream is directed to a particular open "channel", though it may be redirected to another open channel by the BEGIN command. The OPEN and KLOSE commands operate on channels. Streams are identified by name, INPUT, OUTPUT, COMMAND (and ERROR). Channels are identified by a number assigned by FOCAL when the channel is opened. 3 Streams FOCAL handles 4 current I/O streams: INPUT, OUTPUT and COMMAND which may be redirected to other channels, and ERROR which has a fixed assignment. The INPUT stream is used by the ASK statement. Note that the ASK statement does a "read with prompt" so prompt text does not get printed if you are reading from a disk file. The OUTPUT stream is used by TYPE and WRITE commands. The COMMAND stream is used by the top level of FOCAL for accepting programme text and immediate mode commands. The ERROR stream is used to output FOCAL error messages. When a stream reads to end of file on an input channel that channel is closed and the stream redirected to channel 0 (SYS$INPUT). 3 Channels There are 3 permanent channels, 0 is SYS$INPUT, 1 is SYS$OUTPUT, 2 is SYS$ERROR. Channel 3 is opened and used for the command stream if an initial file is specified in a DCL command line. Initially INPUT and COMMAND streams are directed to channel 0 and OUTPUT is directed to channel 1. ERROR has a fixed direction to channel 2. Other channels may be opened to named files using the OPEN statement which returns the number of the opened channel to a FOCAL variable. A channel may be freed for re-use by KLOSing it If channel 0 reads to end of file (^Z at the terminal or line starting with "$" in batch) then Focal exits. The maximum number of simultaneously open channels is an assembly parameter, but is currently set to 6. 2 New Features There are several features added compared to some simpler implementations of FOCAL. They are detailed elsewhere in the appropriate section of help, but listed here for convenience. %An format operator for ASCII I/O (see TYPE for syntax). Additional intrinsic functions 4 character variable names and multiple subscripts HELP command VANISH command 2 Omissions There are many versions of FOCAL and no standard, so this list is with respect to FOCAL-8 which is the one with which I am most familiar. There are several other versions in the DECUS library, as well as the DEC products FOCAL 15, RT-11 FOCAL, etc.. Please feel free to add to this list. 3 MODIFY -If you want to do more than simple line replacement use the SOS or EDT editors. Note that FOCAL (like DCL) uses VMS Print format files, and editing these loses the carriage control because the editors do not understand them. 3 TYPE $ -Of dubious value to type the symbol table when its size is only limited by the virtual address space 3 "?" Trace I never got round to this one. I forgot it when I designed this, and to add it now (or even if it had been designed in) would severely impact the speed, because of the current use of VAX string instructions in-line for the syntax analysis. 3 LOCATIONS The memory addresses that FOCAL-8 gives on this command would not be useful on VAX. Besides, other versions of FOCAL use "L" for other things. 3 "*" Command The file commands implemented are more suitable to the VAX environment than this simple way of redirection of I/O to paper tape. 2 Stored Programmes Programmes may be saved in disk files, and then restored later for execution. For example the current programme may be saved in the file PROG.FOC by: FOC>OPEN OUTPUT XX='PROG';C Open the file FOC>BEGIN OUTPUT XX;C Switch stream to it FOC>WRITE;C Output the programme FOC>TYPE "GO"!;C Run it when loaded FOC>KLOSE XX;C Close the file The programme may then be run by: FOC>OPEN INPUT YY='PROG';C Open the file FOC>BEGIN COMMAND YY;C Read it instead of terminal or by the DCL command: $ FOCAL PROG Note that the TYPE command when the programme was saved added an immediate mode GO command to put the programme into execution as soon as it is read. If FOCAL already has programme lines in its buffer the new programme will be merged, unless you do an ERASE at the terminal, or have one at the front of the programme file.  Terminal Definition File!VT100 24 80 VT-100;; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >;) INPUT = \12\200\200\15\200\200 LF CRH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <---6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, TabC< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\207\3 erase to end of line) es = \33[J\207\12 erase to end of screen\ ri = \33[C right-arrowT nl = \15\12 newline char39 fs = \12 sequence that causes forward-scrolling (normal)\1 rs = \33M sequence that causes reverse-scrollingT= dc = \33[\204\1;\205\1H\207\10 direct cursor with 8 fillersI4 sc = \33[\204\1;\205\1r\207\5 set scrolling region g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In*;initialization sequence for 80-col VT100:2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse video 2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparoundt; is = \33[?1l set arrow keys to give cursor movement codes,e1 is = \33> numeric keypad to give numeric codes`: is = \33)0\17 set G1 char set to be special graphic chars!t3!VT100S 10 20 VT-100 small vt100 for hard workT;:; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >l;)) INPUT = \12\200\200\15\200\200 LF CRiH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <--- 6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, TabC< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\207\3 erase to end of line) es = \33[J\207\12 erase to end of screen\ ri = \33[C right-arrowT nl = \15\12 newline char39 fs = \12 sequence that causes forward-scrolling (normal)\1 rs = \33M sequence that causes reverse-scrollingT= dc = \33[\204\1;\205\1H\207\10 direct cursor with 8 fillersI5; sc = \33[\204\1;\205\1r\207\5 set scrolling regionI g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In*;initialization sequence for 80-col VT100:2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse videoh2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparound ; is = \33[?1l set arrow keys to give cursor movement codes,g1 is = \33> numeric keypad to give numeric codes`: is = \33)0\17 set G1 char set to be special graphic chars!t!C10 24 80 Colorscan 10o;e; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >(;t) INPUT = \12\200\200\15\200\200 LF CRmH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <---v6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, TabC< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\207\3 erase to end of line) es = \33[J\207\12 erase to end of screen\ ri = \33[C right-arrowT nl = \15\12 newline char39 fs = \12 sequence that causes forward-scrolling (normal)\1 rs = \33M sequence that causes reverse-scrollingT= dc = \33[\204\1;\205\1H\207\10 direct cursor with 8 fillersI5; sc = \33[\204\1;\205\1r\207\5 set scrolling regionI( g1 = \33[21;12m\16\200` blue bg, red fg' g2 = \33[22;13m\16\200a red bg, grn fg0' g3 = \33[23;14m\16\200` grn bg, yel fg' g4 = \33[24;15m\16\200a yel bg, mag fg ( g5 = \33[25;16m\16\200` mag bg, cyan fg9 gf = \17\33[20;17;0m exit with Shift-in and normal charsw*;initialization sequence for 80-col VT100:2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse videog2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparoundg; is = \33[?1l set arrow keys to give cursor movement codes,41 is = \33> numeric keypad to give numeric codes0: is = \33)0\17 set G1 char set to be special graphic chars!d!TVI950 24 79; H; IMPORTANT: Because of the automatic wraparound feature of the TVI950,@; Supercomp must be limited to a width of 79 NOT 80!;(; HELP = LINE ERASE keyi; PAGE = PAGE ERASE keye; BACKUP = SEND key6#; DELETE = CHARACTER DELETE keys; GOTO = F11 key or >g;i) INPUT = \12\200\200\15\200\200 LF CRoH INPUT = \13\200\1\26\200\2\14\200\3\10\200\4 UP DOWN --> <--K INPUT = \33Y\13\200\11\33Y\26\200\12 Page UP Page DOWN K INPUT = \33Y\14\200\13\33Y\10\200\14 Page --> Page <--TA INPUT = \33Y\33Y\200\377 Page-PageTI INPUT = \33W\200\177\33T\200\15\11\200\16 Delete, Help, Tab M INPUT = \33\67\200\10 (SEND key) Special Backspace key1< INPUT = \01J\15\200\076 GOTO+ ho = \36 home (cursor to line 0, column 0)  el = \33t erase to end of line=! es = \33y erase to end of screen 3 ri = \14 right-arrow (non-destructive right-space)0+ nl = \15\12 Unix newline char (does CR-LF) 0 fs = \12 sequence that causes forward-scrolling9 rs = \33j reverse line feed (used for reverse scrolling)\; dc = \33=\201\40\202\40 direct cursor: ESC = l+040 c+040\G; use gx = \33$\200y for graphics characters where y = upper case A-O\ g1 = \33G0\200# g2 = \33G0\200= g3 = \33G0\200X g4 = \33G0\200O g5 = \33G0\200* g6 = \33G0\200^! gf = \33%\33G0 graphic mode offe is = \36\33Y blank screen1> is = \33( set write protect (half intensity) off!l!ZEPHYR 24 79; H; IMPORTANT: Because of the automatic wraparound feature of the ZEPHYR,@; Supercomp must be limited to a width of 79 NOT 80!;S; HELP = F16 key; PAGE = HOME keyh; BACKUP = SEND PAGE key; DELETE = DEL CHAR INS key !; GOTO = SEND LINE key or > ;3: INPUT = \15\200\200 CRJ INPUT = \13\200\1\12\200\2\14\200\3\10\200\4 UP DOWN --> <--K INPUT = \36\13\200\11\36\12\200\12 Page UP Page DOWN K INPUT = \36\14\200\13\36\10\200\14 Page --> Page <-- A INPUT = \36\36\200\377 Page-PageC INPUT = \33Q\200\177\11\200\16 Delete, Tab < INPUT = \01O\15\200\15 (F16) HELP> INPUT = \33\65\200\10 (SEND PAGE key) BACKUP< INPUT = \33\64\200\076 (SEND LINE key) GOTO+ ho = \36 home (cursor to line 0, column 0)1& el = \33T erase to end of line( es = \33y erase to end of screen: ri = \14 right-arrow (non-destructive right-space)/ nl = \37 Unix newline char (does CR-LF) 7 fs = \37 sequence that causes forward-scrolling @ rs = \33E reverse line feed (used for reverse scrolling)I dc = \33=\201\40\202\40 direct cursor: ESC = l+040 c+040  g1 = \33$\200\# g2 = \33$\200\= g3 = \33$\200\X g4 = \33$\200\O g5 = \33$\200\* g6 = \33$\200\^ gf = \33% graphic mode off  is = \36\33Y blank screen\! !ID100 24 80 ID-100c;n; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >t;u) INPUT = \12\200\200\15\200\200 LF CReH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> --<@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWN@ INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <--6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)I INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, Tab=< INPUT = \33OS\200\076 GOTO ho = \33[H home, el = \33[K erase from cursor to end of line. es = \33[J erase from cursor to end of screen ri = \33[C right-arrow[? nl = \12 sequence that causes CR/LF - Unix uses "newline" char30 fs = \12 sequence that causes forward scrolling4 rs = \33M reverse line feed (for reverse scrolling)/ dc = \33[\204\1;\205\1H direct cursor addressa/; sc = \33[\204\1;\205\1r set scrolling region\3 g1 = \33[1;2m\16\200a enter graphic mode with SO\$ g2 = \33[1;4m\16\200a red& g3 = \33[2;4m\16\200a green% g4 = \33[2m\16\200a cyane' g5 = \33[4m\16\200a yellowe( g6 = \33[1m\16\200a magenta) gf = \17\33[0m exit graphic mode with SIn3; initialization sequence for VT100, (80 column):l@ is = \33< if it is a VT100 in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse videoh2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparoundn? is = \33[?1l set arrow keys to give cursor-movement codes, and C is = \33> numeric keypad "numeric" codes, instead of "application"\2 is = \33)0 set G1 char set to be special graphics!q!ID100W 24 132 ID-100m;l; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >f;o) INPUT = \12\200\200\15\200\200 LF CRdH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> --<@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWN@ INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <--6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)I INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, Tab=< INPUT = \33OS\200\076 GOTO ho = \33[H home, el = \33[K erase from cursor to end of line. es = \33[J erase from cursor to end of screen ri = \33[C right-arrow[? nl = \12 sequence that causes CR/LF - Unix uses "newline" char30 fs = \12 sequence that causes forward scrolling4 rs = \33M reverse line feed (for reverse scrolling)/ dc = \33[\204\1;\205\1H direct cursor addressa/; sc = \33[\204\1;\205\1r set scrolling region\3 g1 = \33[1;2m\16\200a enter graphic mode with SO\$ g2 = \33[1;4m\16\200a red& g3 = \33[2;4m\16\200a green% g4 = \33[2m\16\200a cyane' g5 = \33[4m\16\200a yellowe( g6 = \33[1m\16\200a magenta) gf = \17\33[0m exit graphic mode with SIn3; initialization sequence for VT100, (80 column):l@ is = \33< if it is a VT100 in VT52 mode, put back in VT100 mode is = \33[?3h set to 132 colso> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse videoS2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparound? is = \33[?1l set arrow keys to give cursor-movement codes, and C is = \33> numeric keypad "numeric" codes, instead of "application"32 is = \33)0 set G1 char set to be special graphics!e!TVI912 24 79;iH; IMPORTANT: Because of the automatic wraparound feature of the TVI912,@; Supercomp must be limited to a width of 79 NOT 80!;o; HELP = BLOCK CONV keyo; PAGE = HOME keyi; BACKUP = CLEAR SPACE key; DELETE = DEL key; GOTO = >;a: INPUT = \15\200\200\ CRJ INPUT = \13\200\1\12\200\2\14\200\3\10\200\4 UP DOWN --> <--K INPUT = \36\13\200\11\36\26\200\12 Page UP Page DOWN K INPUT = \36\14\200\13\36\10\200\14 Page --> Page <-- A INPUT = \36\36\200\377 Page-PageoI INPUT = \01@\15\200\177\33C\200\15\11\200\16 Delete, Help, Tab> INPUT = \32\200\10 BACKUP+ ho = \36 home (cursor to line 0, column 0)  el = \33t erase to end of lineT! es = \33y erase to end of screen03 ri = \14 right-arrow (non-destructive right-space)\/ nl = \37 Unix newline char (does CR-LF)e0 fs = \12 sequence that causes forward-scrolling? rs = \33E reverse line feed (used for reverse scrolling) ; dc = \33=\201\40\202\40 direct cursor: ESC = l+040 c+0407 g1 = \200\200#0 g2 = \200\200=e g3 = \200\200XI g4 = \200\200O  g5 = \200\200*  g6 = \200\200^  gf = \200 graphic mode off is = \36\33Y blank screen3> is = \33( set write protect (half intensity) off! !TVI920 24 79;eH; IMPORTANT: Because of the automatic wraparound feature of the TVI920,@; Supercomp must be limited to a width of 79 NOT 80!;n; HELP = F2 keye; PAGE = HOME key2; BACKUP = CLEAR SPACE key; DELETE = F1 key ; GOTO = F11 key or >; : INPUT = \15\200\200\ CRJ INPUT = \13\200\1\12\200\2\14\200\3\10\200\4 UP DOWN --> <--K INPUT = \36\13\200\11\36\26\200\12 Page UP Page DOWN K INPUT = \36\14\200\13\36\10\200\14 Page --> Page <--tA INPUT = \36\36\200\377 Page-Page9I INPUT = \01@\15\200\177\01A\15\200\15\11\200\16 Delete, Help, Tab > INPUT = \32\200\10 BACKUP< INPUT = \01J\15\200\076 GOTO+ ho = \36 home (cursor to line 0, column 0)0 el = \33t erase to end of line-! es = \33y erase to end of screen63 ri = \14 right-arrow (non-destructive right-space)P/ nl = \37 Unix newline char (does CR-LF) 0 fs = \12 sequence that causes forward-scrolling? rs = \33E reverse line feed (used for reverse scrolling)7; dc = \33=\201\40\202\40 direct cursor: ESC = l+040 c+040\ g1 = \200\200#  g2 = \200\200=  g3 = \200\200X g4 = \200\200O2 g5 = \200\200*  g6 = \200\200^  gf = \200 graphic mode off is = \36\33Y blank screen3> is = \33( set write protect (half intensity) off! $!D132C 24 132 Displaymaster 132-C) INPUT = \12\200\200\15\200\200 LF CR(9 INPUT = \33R\1\200\11\33R\2\200\12 Page UP Page DOWNi9 INPUT = \33R\3\200\13\33R\4\200\14 Page --> Page <--r& INPUT = \33R\33R\200\377 Page-Page; INPUT = \33Q\200\15\11\200\16\5\200\177 Help, Tab, Delete2 el = \33K erase to end of line0! es = \33J erase to end of screen0, ho = \33H home (cursor to line 0, column 0)4 ri = \33C right-arrow (non-destructive right-space)( nl = \12 Unix newline char (does CR-LF)0 fs = \12 sequence that causes forward-scrolling< dc = \33Y\204\1;\205\1\15 dir. cursor: ESC Y lll ; ccc C; gr = s the graphic-Bar (B) format char, if graphixe> g1 = \33$ terminal graphic-mode on, to enable display of "gr" g2 = \33$ g3 = \33$ g4 = \33$ g5 = \33$ g6 = \33$1 gf = \33% graphic-mode off, back to normal charsn4; is = \33!6\12\60\12 set "setup" & col-width = 132; is = 8\12\12\3g>; is = \33!8\12\61\12\3 set "setup" & reverse video (datavue)! !VT52 24 80 DEC VT52u) INPUT = \12\200\200\15\200\200 LF CR3D INPUT = \33A\200\1\33B\200\2\33C\200\3\33D\200\4 UP DOWN --> <--= INPUT = \33R\33A\200\11\33R\33B\200\12 Page UP Page DOWN$> INPUT = \33R\33C\200\13\33R\33D\200\14 Page --> Page <---& INPUT = \33R\33R\200\377 Page-PageI INPUT = \33P\200\177\33Q\200\15\11\200\16 Delete, Help, Tab1 el = \33K erase to end of line=! es = \33J erase to end of screen3, ho = \33H home (cursor to line 0, column 0)4 ri = \33C right-arrow (non-destructive right-space)( nl = \12 Unix newline char (does CR-LF); fs = \12 forward scroll\; rs = \33I reverse scroll; dc = \33Y\201\40\202\40 direct cursor: ESC Y l+040 c+040W@ g1 = \33F\200a graphic char for "B" format with value 1, is 'a'> g2 = \200O char for value=2 is capital 'O' (not graphic char) g3 = \200X\ g4 = \200= g5 = \200* g6 = \200#e gf = \33G graphic mode off= is = \33\134 init seq!f#!VT100R 24 80 Reverse-Video VT100l; ; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >s;\) INPUT = \12\200\200\15\200\200 LF CR0H INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <--- 6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, TabC< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\207\3 erase to end of line) es = \33[J\207\12 erase to end of screen\ ri = \33[C right-arrowT nl = \12 newline char9 fs = \12 sequence that causes forward-scrolling (normal)31 rs = \33M sequence that causes reverse-scrollingI= dc = \33[\204\1;\205\1H\207\10 direct cursor with 8 fillers 5; sc = \33[\204\1;\205\1r\207\5 set scrolling region) g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In3;initialization sequence for 80-col VT100, reverse:o2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5h reverse instead of normal video 2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparound ; is = \33[?1l set arrow keys to give cursor movement codes, 1 is = \33> numeric keypad to give numeric codes1: is = \33)0\17 set G1 char set to be special graphic chars!f"!VT100W 24 132 132-column VT-100;o; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >a;f) INPUT = \12\200\200\15\200\200 LF CRnH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <---e6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, TabC< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\1\1\1 erase to end of line, es = \33[J\1\1\1\1\1 erase to end of screen ri = \33[C right-arrow= nl = \12 newline char9 fs = \12 sequence that causes forward-scrolling (normal)[1 rs = \33M sequence that causes reverse-scrollingP? dc = \33[\204\1;\205\1H\1\1\1\1\1 direct cursor with 5 fillersI8; sc = \33[\204\1;\205\1r\1\1\1\1\1 set scrolling region g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In+;initialization sequence for 132-col VT100:d2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3h set to 132 colsn> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse videoe2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparoundl; is = \33[?1l set arrow keys to give cursor movement codes,n5 is = \33> numeric keypad to give numeric codes : is = \33)0\17 set G1 char set to be special graphic chars!h/!D80C 24 80 Displaymaster 132-C, 80-col mode0) INPUT = \12\200\200\15\200\200 LF CR 9 INPUT = \33R\1\200\11\33R\2\200\12 Page UP Page DOWNe9 INPUT = \33R\3\200\13\33R\4\200\14 Page --> Page <--5& INPUT = \33R\33R\200\377 Page-Page; INPUT = \33Q\200\15\11\200\16\5\200\177 Help, Tab, Delete  el = \33K erase to end of line ! es = \33J erase to end of screenc, ho = \33H home (cursor to line 0, column 0)4 ri = \33C right-arrow (non-destructive right-space)( nl = \12 Unix newline char (does CR-LF)0 fs = \12 sequence that causes forward-scrolling< dc = \33Y\204\1;\205\1\15 dir. cursor: ESC Y lll ; ccc C; gr = s the graphic-Bar (B) format char, if graphixe> g1 = \33$ terminal graphic-mode on, to enable display of "gr" g2 = \33$ g3 = \33$ g4 = \33$ g5 = \33$ g6 = \33$1 gf = \33% graphic-mode off, back to normal charsn5; is = \33!6\12\61\12\3 set "setup" & col-width = 80 >; is = \33!8\12\61\12\3 set "setup" & reverse video (datavue)! !D200 24 79 Data General D200) INPUT = \12\200\200\15\200\200 LF CRiA INPUT = \27\200\1\32\200\2\30\200\3\31\200\4 UP DOWN --> <-- 9 INPUT = \10\27\200\11\10\32\200\12 Page UP Page DOWNr9 INPUT = \10\30\200\13\10\31\200\14 Page --> Page <--l% INPUT = \10\10\200\377 Page-Page . INPUT = \36\136\200\10 funny backspace is C3? INPUT = \13\200\15\11\200\16\36\134\200\177 Help, Tab, Delete" el = \13 erase to end of line es = \14 erase to end of screen+ ho = \10 home (cursor to line 0, column 0)a3 ri = \30 right-arrow (non-destructive right-space) + nl = \15\12 Unix newline char (does CR-LF)\0 fs = \12 sequence that causes forward-scrolling/; dc = \20\202\200\201\200 dir. cursor: 20 l c 0- is = \22\14\10 roll on, clear screen, home!P#!DUMB 24 79 Any old dumb terminalI' INPUT = \12\200\200\15\200\200 LF CR > INPUT = \24\200\1\26\200\2\7\200\3\6\200\4 UP DOWN --> <--7 INPUT = \22\24\200\11\22\26\200\12 PAGE UP PAGE DOWNe4 INPUT = \22\7\200\13\22\6\200\14 PAGE --> PAGE <--# INPUT = \22\22\200\377 PAGE PAGEr9 INPUT = \33\200\177\1\200\15\11\200\16 Delete, Help, TabC) ho = \33H home will differ, this is vt52a nl = \12 new line" ri = \33C move right in vt52 mode!c;; ;2;4I; *** NOTE: Before adding terminal descriptions to this file, please makeI&; a backup copy of the file.;;PC; *** A description of a terminal in this file consists of 4 parts:\;2J; (1) The top line, which tells the name of the terminal, and the size of>; the screen. For example: !VIDEO-A 24 80G; defines a terminal which can be referenced by the name "VIDEO-A", andiJ; which has 24 lines, and 80 characters per line. There may be any numberJ; of spaces or tabs preceding the 24 and 80, but the "!VIDEO-A" must be at; the start of the line.; I; (2) A series of lines called INPUT lines, defining character sequencesaN; which Supercomp-20 may receive from the terminal, which are to be translatedK; by Supercomp-20 into an internal code. Each internal code indicates that K; some particular action is required. Here are the internal codes, and thea; actions they cause:h2; internal octal code action taken by Supercomp-202; ------------------- ---------------------------- ; 1 up-arrowt; 2 down-arrowu; 3 right-arrow; 4 left-arrow; 10 ; 11 Page up-arrow ; 12 Page down-arrowe; 13 Page right-arrow; 14 Page left-arrowf ; 15 HELP ; 16 r1; 177 Erase, or Delete (Erase char on edit-line)n%; 200 or t ; 377 ignorer;u; F; Assume your terminal has a key which (whenever struck) transmits the; sequence: CONTROL-B DlA; Let us say you would like to use this key to mean "left arrow".-K; The octal code for "CONTROL-B" is 002, and the octal code for "D" is 104.lE; So you could include the following INPUT statement in your terminalr; description:9; INPUT = \2\104\200\4 translate ^B D to left-arrowB; or6; INPUT = \2D\200\4 translate ^B D to left-arrow;A; Note the following:TF; (a) There should be exactly one space preceding the word INPUT, and6; one space preceding and following the "=" sign.J; (b) Octal codes are indicated by backslash (\) followed by octal value.J; (c) A normal printing char, such as the letter "D", can be indicated by$; itself, or by its octal code.H; (d) The sequence to be translated is terminated by an octal 200 code,G; followed immediately by the internal code the sequence should beB; translated into. ;eH; The "LINE FEED" key on most terminals transmits the single ASCII octalH; code 12. Let's say we want to use the LINE FEED key as Supercomp-20's<; key. (That is, the or key),; We could include the following INPUT line:; INPUT = \12\200\200G; This says "translate any sequence consisting of the single ASCII codecG; octal 12, into internal code octal 200. Internal code 200 means m; to Supercomp-20.J; If there is also a key on your keyboard, and this key transmitsN; octal code 15, and you wish to also use this as a key for Supercomp-20,; you could include:; INPUT = \15\200\200;mF; You could combine all three of the above specifications on one line:D; INPUT = \2D\200\4\12\200\200\15\200\200 translate ^B D, LF, CR;s/; You may have as many input lines as you like.i;e;CF; (3) A series of lines, using two-character abbreviations, that tellI; Supercomp-20 what sequences *it* must send to the terminal, in order toeG; cause certain things to happen on the screen. The abbreviations, and ; what they mean, are:;r>; ho "home" (cause the cursor to move to the upper left corner; of the screen) B; el erase from current cursor position to end of the current line@; es erase from current cursor position to end to the screen, or; erase the whole screeno>; ri non-destructive right-space (cause the cursor to move oneA; character position to the right, *without* erasing the currente ; character)nB; nl sequence that causes the cursor to go to the beginning of theA; next line. Usually, this will be a Carriage-Return/Line Feed,u=; or \15\12. For Unix systems, \12 is usually sufficient.nB; fs forward scroll. For many terminals, you can cause the screen?; to scroll upward automatically, by moving the cursor off the @; bottom of the screen. If your terminal does this when a LINE=; FEED is sent to it while the cursor is on the bottom line,t?; then set fs = \12. If some other sequence must be sent,h@; set fs = that other sequence. (If the terminal does not haveB; a scrolling capability, omit the "fs" specification altogether)@; rs Some terminals can do reverse scrolling (scroll *downward*,?; when a certain sequence is sent to it with the cursor on theu@; top line of the screen). The DEC VT100 terminal, for example?; does this when M is sent, so the VT100 definitionn; would contain: rs = \33MD; dc "direct cursor." This should be set to the sequence Supercomp-;; 20 must send to the terminal to cause the cursor to movenA; directly to a particular location on the screen. The sequenceaB; must tell what Line (on the screen) and what Column to move to.?; This is accomplished using the octal codes \204 and \205, or +; \201 and \202. Here are three examples:T<; (a) The DEC VT52 definition is: dc = \33Y\201\40\202\40>; This says direct cursor movement is accomplished by sending9; Y, followed by the Line number plus octal 40,q<; followd by the Column number plus octal 40. So the above=; definition tells Supercomp-20 that if it wants to move thec;; cursor to Line 2, Column 5, it must send the sequence ofa(; characters (octal): 33 131 42 459; (Note: this is really the third line and sixth column; B; Supercomp-20 calls the upper left corner of the screen, Line 0,?; Column 0.) Note that a \201 or \202 is always followed by an9; constant to be added to the Line (or Column) number. eA; (b) For the Data General Corporation Dasher D200 terminal, theoA; sequence is CONTROL-P, followed by Column Number, followed by .; Line number. So: dc = 20\202\200\201\200?; The \200 is a special code in this instance meaning "don't1@; add anything." To move the cursor to Line 2, Column 5 on the<; D200 terminal, Supercomp-20 will send (octal): 20 5 2A; (c) A third example is the DEC VT100 terminal, which uses \204d%; and \205 instead of \201 and \202:L; dc = \33[\204\1;\205\1H(@; The above sequence says to send , followed by a left?; bracket, followed by the Line number plus one, followed by a?; semicolon, followed by the Column number plus 1, followed bya?; "H". However, the \204 means that the line number should be >; sent *as a string of decimal ASCII digits*. So to move the@; cursor to Line 15, Column 44, Supercomp-20 will actually send0; the ASCII codes for the following characters:); [ 1 6 ; 4 5 Hd?; Note that the DEC VT52 would only have been sent four chars,C"; (octal): 33 131 57 1146; And the D200 would have been sent three characters,; (octal): 20 54 17 ,; to move the cursor to Line 14, column 44.; g1,g2,g3,g4,g5,g6 and gf<; These abbreviations are used to define the sequences that;; Supercomp-20 may send to the terminal to turn on specialS=; "graphic" modes. The graphic modes are used together witho:; the "B" (Bar-graph) format, usually to draw bar graphs.>; When a cell using the "B" format has a value of 1, 2, 3, 4,=; 5, or greater than 5, then the graphic mode defined by g1,a?; g2, g3, g4, g5, or g6, respectively, is used to display thatt@; cell. (If the cell has a value of zero, it will be displayed; as blank.) Examples:8; (a) The VT100 terminal definition contains the line:; g1 = \16\200am?; This says that to enable graphic mode 1, Supercomp-20 shoulda9; transmit the sequence: octal 16 (the \200 is used tol?; terminate the sequence, so this particular sequence consists A; of just one character, octal 16). Having thus enabled graphice?; mode 1, Supercomp-20 should then display the character whose ;; code is lower-case "a" (or octal 141) in each character- @; position of the cell. What will happen here is that the \16,9; when sent to the VT100, will select a special graphics=; character set, and the "a" will actually be displayed as aa?; white rectangle (which happens to be very useful for drawingt?; bar graphs). When Supercomp-20 is done displaying the cell,o<; it will turn off the graphic mode by issuing the sequence6; defined by abbreviation "gf", which is: gf = \17?; (On the VT100, this selects the normal character set again.)a<; (b) The ID100 terminal is like the VT100, but it is alsoA; capable of displaying colors. To turn on the green color, forc.; example, you would send the ASCII sequence: ; [ 2 ; 4 m>; The definition for graphic mode 3 of the ID100 terminal is:; g3 = \33[2;4m\16\200ao<; This says turn on the green color, switch to the graphicsA; character set (accomplished by \16), and display the rectangle:=; character in each character position of the cell. So, fore?; the ID100 with the above definition, any cell having the "B" ?; format and having a value of 3, will be displayed as a greenn<; bar. Once again there is a line specifying "gf", namely:; gf = \17\33[0mA; which turns off the graphics character set ( \17 ), then turnsm8; off the colors and restores black & white ( \33[0m ).<; (c) Some terminals simply do not have any graphic modes.A; Still, tolerable bar graphs can be drawn using characters likeh0; "O", "X", "*", and so on. A definition like:; g1 = \200X<; says for graphic mode 1, Supercomp-20 should send nothing>; special to the terminal to enable the mode, and should justB; display the character upper-case "X" in each character positionA; of the cell (that is, any cell using the "B" format and having ; a value of 1). <; Some manufacturers descriptions of the terminals' graphic>; capabilities are quite confusing, but remember that you can>; experiment with Supercomp-20 and keep editing your terminal1; description until it does what you want it to.oB; is This is the final abbreviation you are allowed, and it stands@; for "initialization sequence". Many terminals have "options"?; that can be selected (such as "reverse video", for example).(>; The "is" lines you include in your terminal definition give>; Supercomp-20 a sequence of characters it should send to the=; terminal upon starting up. This allows you to assure thatuA; the options you are interested in will be selected, regardlesslB; of the previous state of the terminal. You may include as many; "is" lines as you wish.; filler chars (nulls)<; For some operations, such as "erase to end of screen", or?; direct cursor addressing, the terminal may require a certainl@; amount of time to perform the operation, and the manufacturer>; may recommend that the terminal be sent a certain number of?; null or "filler" characters to assure that the terminal willuB; have time to complete the operation before some other operation;; is attempted. You can use the octal code \207 to tella?; Supercomp-20 to send filler characters. Here is an example:r8; The VT100 definition for "erase to end of screen" is:; es = \33[J\207\12n@; This says to perform this operation, Supercomp-20 should sendA; [ J followed by ten nulls (zero characters).e$; (Remember that the \12 is octal.);lK; (4) A terminal definition must always be ended with a line consisting ofo; the single character "!".o;oJ; Whenever you are using the above explanations to implement support for aM; a new terminal in this terminal file, you should also refer to the existing0K; terminal definitions themselves. These will usually answer any questions ; you may have.h Terminal Definition File!VT100 24 80 VT-100;; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >;) INPUT = \12\200\200\15\200\200 LF CRH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <---6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, Tab< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\207\3 erase to end of line) es = \33[J\207\12 erase to end of screen ri = \33[C right-arrow nl = \15\12 newline char9 fs = \12 sequence that causes forward-scrolling (normal)1 rs = \33M sequence that causes reverse-scrolling= dc = \33[\204\1;\205\1H\207\10 direct cursor with 8 fillers4 sc = \33[\204\1;\205\1r\207\5 set scrolling region g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In*;initialization sequence for 80-col VT100:2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3l set to 80 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse video2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparound; is = \33[?1l set arrow keys to give cursor movement codes,1 is = \33> numeric keypad to give numeric codes: is = \33)0\17 set G1 char set to be special graphic chars!!VT52 24 80 DEC VT52) INPUT = \12\200\200\15\200\200 LF CRD INPUT = \33A\200\1\33B\200\2\33C\200\3\33D\200\4 UP DOWN --> <--= INPUT = \33R\33A\200\11\33R\33B\200\12 Page UP Page DOWN> INPUT = \33R\33C\200\13\33R\33D\200\14 Page --> Page <---& INPUT = \33R\33R\200\377 Page-PageI INPUT = \33P\200\177\33Q\200\15\11\200\16 Delete, Help, Tab el = \33K erase to end of line! es = \33J erase to end of screen, ho = \33H home (cursor to line 0, column 0)4 ri = \33C right-arrow (non-destructive right-space)( nl = \12 Unix newline char (does CR-LF); fs = \12 forward scroll; rs = \33I reverse scroll; dc = \33Y\201\40\202\40 direct cursor: ESC Y l+040 c+040@ g1 = \33F\200a graphic char for "B" format with value 1, is 'a'> g2 = \200O char for value=2 is capital 'O' (not graphic char) g3 = \200X g4 = \200= g5 = \200* g6 = \200# gf = \33G graphic mode off is = \33\134 init seq!"!VT100W 24 132 132-column VT-100;; BACKUP = BACKSPACE key ; DELETE = PF1 or DELETE key; HELP = PF2 key; PAGE = PF3 key; GOTO = PF4 key or >;) INPUT = \12\200\200\15\200\200 LF CRH INPUT = \33[A\200\1\33[B\200\2\33[C\200\3\33[D\200\4 UP DOWN --> <--@ INPUT = \33OR\33[A\200\11\33OR\33[B\200\12 Page UP Page DOWNA INPUT = \33OR\33[C\200\13\33OR\33[D\200\14 Page --> Page <---6 INPUT = \33OR\33OR\200\377 Page-Page (0377=ignore)? INPUT = \33OP\200\177\33OQ\200\15\11\200\16 Delete, Help, Tab< INPUT = \33OS\200\076 GOTO ho = \33[H home& el = \33[K\1\1\1 erase to end of line, es = \33[J\1\1\1\1\1 erase to end of screen ri = \33[C right-arrow nl = \12 newline char9 fs = \12 sequence that causes forward-scrolling (normal)1 rs = \33M sequence that causes reverse-scrolling? dc = \33[\204\1;\205\1H\1\1\1\1\1 direct cursor with 5 fillers8; sc = \33[\204\1;\205\1r\1\1\1\1\1 set scrolling region g1 = \16\200a g2 = \16\200n g3 = \16\200` g4 = \16\200O g5 = \16\200X g6 = \16\200* gf = \17 exit with Shift-In+;initialization sequence for 132-col VT100:2 is = \33< if in VT52 mode, put back in VT100 mode is = \33[?3h set to 132 cols> is = \33[?4l set jump-scrolling (instead of smooth-scrolling)- is = \33[?5l normal instead of reverse video2 is = \33[?6l absolute instead of relative origins is = \33[?7l no wraparound; is = \33[?1l set arrow keys to give cursor movement codes,5 is = \33> numeric keypad to give numeric codes: is = \33)0\17 set G1 char set to be special graphic chars!6xDi>@i@ .(Dj #6 : : AM#6The Time is 'p w@ 7$B'HLbifi>ni>0 ȕ 0  X7m7hn F7^` PQ  7Fw`׭-0׭&0 !b[6  "   de0`  D| #6 : : AM#6The Time is 'p w@ 70 ȕ 0  X7m7hn F7^` PQ  7Fw`׭-0׭&0 !  "   de02& 05 <  @ C   @&5 1.0 SHEET--A SPREADSHEET PROGRAM SHEET is a spreadsheet program modeled after VISICALC and SUPERCALC. SHEET requires no special hardware, and has almost all of the features of its more famous counterparts. Features: No special PDP-11 hardware required. Version available for VT62 (or VT52) or VT100. All calculations done in double precision. Very fast: Overlay scheme keeps most of program memory resident most of time. Full function spreadsheet: INSERT, DELETE, PRINT, REPLICATE. Most math functions available. Real expression syntax with operator precedence. Similar to VISICALC in most respects. Extensive prompting. Disadvantages: Memory pig: requires 24K+ words. Spreadsheets can only be 26 columns by 60 rows. Logical functions not implemented. Sources not (yet) available. 2.0 BASICS The spreadsheet is made up of cells in a rectangular array. The columns in the array are identified by letters, and the rows in the array are identified by numbers. Each cell in the spreadsheet has a unique name that is derived from its column and row position. The cell that is in column A and row 5 is named A5. Currently, last cell in the spreadsheet is Z60. There are four types of cells: Page 2 1. Blank: These cells provide whitespace in the spreadsheet. Initially all cells in the spreadsheet are blank. 2. Label: These cells contain a string. They are used as titles and labels in the spreadsheet. 3. Number: These cells contain a number. Their values are used by expressions stored in other cells. 4. Expression: These cells contain an expression to be evaluated when the value of a cell changes. Both cells of type number and expression get their value the same way: you type an expression as their value. The only difference is that if the expression has a constant value (does not contain any references to cells in the spreadsheet) then it is only evaluated once, and only the value, not the expression is stored. If the value of a cell of type blank or label is used as in an expression, then a value of zero is used in most cases. The exceptions are the @SUM, @AVERAGE, and @COUNT functions, which merely ignore the reference to the cell. 3.0 EXPRESSIONS Expressions look like what you learned about in high school: == | + | - == | * | / == | ^ == - | + | | ( ) | | == @ABS( ) | @AVERAGE( ) | @COUNT( ) | @EXP( ) | @INT( ) | @LN( ) | @LOG10( ) | @NA() | Page 3 @PI() | @SQRT( ) | @SUM( ) == : == | == == . | . | == E | E + | E - | D | D + | D - | In other words, the following operators are available: OPERATOR FUNCTION PRECEDENCE ASSOCIATIVITY -------- ---------- ---------- ------------- () Grouping 5 - unary minus 4 + unary plus 4 ^ exponentiation 3 left-to-right * multiply 2 right-to-left / division 2 right-to-left + addition 1 right-to-left - subtraction 1 right-to-left Note that the @AVERAGE, @COUNT, and @SUM functions take a range as their argument. These functions operate on all the cells in the rectangular array specified by the two end points of the range. The first cell in a range specifier gives the upper left corner of the rectangle, and the second cell in the range specifier gives the lower right corner of the rectangle. Thus, @SUM(A1:B3) sums the cells A1, A2, A3, B1, B2, and B3. A degenerate case of a rectangle can be a row or column: for example, @AVERAGE(A1:A5) averages the cells A1, A2, A3, A4, and A5. Page 4 The following functions are available: @ABS() Take the absolute value of the expression. @AVERAGE() Take the average of the specified range. This function ignores blank and label cells in the range. @COUNT() Return the number of expressions and numbers in the specified range. @EXP() Raise e to a power. @INT() Throw away the fractional part of a number. This function has the bug that it also causes the number to lose precision: The result's mantissa is only accurate to 7.2 decimal digits of precision. @LN() Take the natural logarithm. @LOG10() Take the base 10 logarithm. @NA() Cause the cell's value to be displayed as N/A. The @NA() function is used as a prompt: in general purpose spreadsheets, cells marked N/A are to be filled in by the user of the spreadsheet. @PI() Returns the value of pi. @SQRT() Take the square root of a number. @SUM() Sum all the elements of the indicated range. 4.0 OPERATION There are two version of SHEET: SHEET.62 (the SAV file for VT62 or VT52 systems) and SHEET.100 (the SAV file for VT100 systems). To install SHEET, copy one of those two files to either SY: or DK:, and then rename it to have the extension ".SAV". SHEET is a very big program. In general, the foreground job and most device handlers should be unloaded. If this is not done, SHEET may fail to start, or the commands which do file I/O may fail. (This last is most dangerous because you may have spent an hour typing in a spreadsheet before you discover that you can not save your work!) You may want to try a load or save command right after starting SHEET to make sure that there is sufficient memory for load, save, and print to work later. SHEET has a heap that it uses to store labels and expressions. If Page 5 this heap becomes full, SHEET will not allow any new expressions or labels to be stored until space in the heap is freed. Space in the heap is freed anytime the length of a label or expression is changed to be smaller (i.e., when the cell is blanked, the cell is edited, or a new string is typed in, etc.). SHEET uses the top three lines of the terminal screen to provide feedback on the state of the spreadsheet. Line one displays the current cell address, the cell's type, and the cell's contents. The far right of line one tells you the recalculation order and the number of characters of heap remaining. Line two is used for prompts and for error messages. Line three is sometimes used for prompts, but usually this line is used as an echo area when expressions, numbers, filespecs, and the like are typed in. SHEET starts is a state where it is waiting for the user to type a command or a new value for a cell. SHEET decides if the input is a command, a label to be stored in the current cell, or an expression to be stored in the cell on the basis of the first character typed: The following characters signal the start of a command (see the next section): / " ! > ^R The following characters signal the start of an expression (or number): 0 1 2 3 4 5 6 7 8 9 + - ( @ . Any other printing character signals the start of a label. The next section will discuss commands in detail. Value type in will be discussed now. When SHEET was determined that a label or expression is being typed in, it will write either "Label:" or "Expression:" in the prompt line, and will echo the user's input into the echo line. During type in, various editing keys can be used: Up arrow Go to beginning of line Down arrow Go to end of line Right arrow Go right one character Left arrow Go left one character Delete Delete the character left of the cursor CTRL/D Delete the character at the cursor CTRL/U Delete the text left of the cursor CTRL/K Delete the test right of the cursor If all the text on the line is deleted, then SHEET aborts value type in, and returns to its normal state of waiting for a command or value type in. Value type in is ended by pressing return at any point in the line. If a label was being typed in, then the cell becomes of type label and Page 6 has the line assigned as its value. If an expression was being typed in, then the expression is evaluated. If the expression is a constant expression (does not reference any cells in the sheet) then the cell become type number with the value of the expression. If the expression is not a constant expression, then the cell becomes of type expression and stores the both the expression and the expression value. If the recalculation mode is automatic and a expression is typed in, then all expressions in the spreadsheet are reevaluated after the current cell gets its new value. (Recalculation mode is on by default.) If autoadvance mode is on and a new cell value is typed in, then the cursor moves to the next cell in the autoadvance region. (Autoadvance is off by default.) 5.0 COMMANDS Commands to SHEET are one one character long, but several commands may display menus of additional one character commands to be typed, or prompt for additional information. The commands to SHEET are: / Begin a muti-level command. A menu of the second level commands will be displayed in the second and third lines of the screen. ! Recalculate the spreadsheet. This command is most used the manual recalculation mode, but it can also be used in automatic recalculation mode to force a recalculation. > Go to a particular cell. The command will prompt for the cell name of the new location. " Start a label. This command is used to start a label that begins with a character which normally begins an expression. SHEET will write "Label:" in the prompt line and begin label type in mode. The quote is not part of the label value. ^R Redraw the screen. Useful if the screen becomes corrupted because of RT echoing typeahead. Up arrow Move to cell on the preceding row Down arrow Move to cell on the next row Left arrow Move to cell in the preceding column Right arrow Move to cell in the next column. Page 7 As is noted above and below, some commands prompt for additional information like filenames, cell positions, ranges, etc. While typing an answer to one of these prompts, the same editing keys used for value type in can be used. Note that the entire command is aborted if all the text being typed in is deleted. Thus, if you mistakenly begin a /L (load) command, you can abort it by typing a CONTROL/U or delete to the filename prompt. After a "/" command, SHEET puts up a small menu of secondary commands which can be given. The secondary commands are all one letter long; the commands are the capital letters in the words in the menu. The following is a list of the commands which can be given after "/": Word Command in Menu Function ------- ------- ------------------------------------------ A Autoadvance Controls autoadvance mode B Blankcell Blanks the current cell C Clearsheet Blanks all of the spreadsheet D Delete Deletes a row or column E Edit Allows editing of labels or expressions F Format Controls the format (typeout) of a cell G Global Controls properties of entire spreadsheet I Insert Inserts a new row or column L Load Loads in a saved spreadsheet from disk P Print Prints a portion of the spreadsheet R Replicate Copies and relocates portions of the sheet S Save Save a copy of the spreadsheet on disk V Version Show the version number of SHEET X eXit Exit to RT 5.1 Autoadvance Command The Autoadvance command controls autoadvance mode. When autoadvance mode is on, SHEET will automaticly move to the "next" cell after a value is entered in the current cell. This allows data to be entered into a large number of cells in a spreadsheet rapidly without the user having to use the arrow keys to position to the next cell. The autoadvance command will display a menu in line two of the screen, and wait for a one letter command: Word Command in Menu Function ------- ------- ------------------------------------------ A Advance Turn on autoadvance mode N No-advance Turn off autoadvance mode If the "A" subcommand is given, SHEET will prompt for a beginning column and an ending column. These two columns will define the autoadvance region. After a value is typed into a cell, SHEET will either move to: Page 8 the cell in the next column, if the new column is less than or equal to the ending column; or, the cell in the next row whose column position is the beginning column. 5.2 Blankcell Command The Blankcell command causes the current cell to become of type blank. The cell's numeric value becomes zero; any label or expression stored by the cell is deallocated from the heap; and the cell's format is set to "G". 5.3 Clearsheet Command This command will ask to be confirmed by typing the letter "y". If the command is confirmed, the all cells in the sheet will be blanked (see the Blankcell command). 5.4 Delete Command The Delete command allows you to Delete a row or column at the current cell position. A "C" in response to the Delete command menu causes the current column to be deleted; a "R" in response to the Delete command menu causes the current row to be deleted. The delete command automaticly adjusts all expressions in the spreadsheet to reflect the deletion of the row or column. However, expressions which contained references to the deleted row or column may now be logically invalid, and should be reviewed by the user. 5.5 Edit Command This command allows you to edit that value of the current cell (if the cell is of type label or expression). The current value of the cell will appear in the echo area, and the usual editing keys may be used to change its value. Note that it is not possible to change a label into an expression (or the reverse) by use of the Edit command. Page 9 5.6 Format Command This command sets the format of a cell or the width of a column. The cell's format controls how it is displayed. A menu of options is displayed. The "W" or Width command sets the width of the current column. After the "W" is typed, SHEET will prompt for the integer to use as the new width of the current column. The remaining options to the Format command set the format of the current cell. The following formats are valid for cells of type label: Format Meaning ------ ------------------------------------------- G General--Display the label left justified R Right--Display the label right justified - Duplicate label across entire width of cell The following formats are valid for type number and expression: Format Meaning ------ ------------------------------------------- G Display 2 digits past decimal point 0 Display 0 digits past decimal point 1 Display 1 digit past decimal point 2 Display 2 digits past decimal point 3 Display 3 digits past decimal point 4 Display 4 digits past decimal point 5 Display 5 digits past decimal point 6 Display 6 digits past decimal point 7 Display 7 digits past decimal point 8 Display 8 digits past decimal point 9 Display 9 digits past decimal point $ Display the number with a dollar sign and two digits past the decimal point % Display the number as a percentage. (Multiply number by 100, and put "%" after number.) * Bar graph--Display @INT(cell) asterisks. I Display the number as an integer (no decimal point). If a cell's format is not valid for the type of cell that it is, then the "G" format will be used when displaying the cell. 5.7 Global Command The global command controls general properties of the spreadsheet. A menu is displayed which has the following commands: Word Command in Menu Function ------- ------- ------------------------------------------ F Format Set the format of all cells xS|WUt~U߭ЭRWRP͠ݏXS Ѝ 1MR>BgЭTTH[M͜SЩ ЭTS~U߭ЭWW͠ݏ@S V 1ȣ͠ݏ`S 3͜UV[1[Щ ЭUS~S߭ЭWW Џ@SWETDe%DeSxTRSRRReV S VTЩ R 9%SR)<R#Џ-1 1rBcH%1ռ41RRRRм4 Ф4R4*<RRХDFզDݤ8ݤ4ݤ0PФ40Ф881HФ4RUФ4ScR>Bcռ8RRR 8ռ<<ռDDռH HHxYyXXЬ\RѢYbX S}bЬ`RѢYbX S}bЬdRѢYbX S}b&ЬhRѢYbX S}b.ռpФ4Rмp<мpH޼tSBcS}0}4}&8}.<<@Ц4RТ1{ 0n Џ,1gʘIxЪ04Ъ88Ъ0RS cRRW[11<R ѭR1Щ0RRR >1ЭTФ(S[JФhfVRØFzà|~à@Ø3uЏ^ У04У881 1ЭTФ(SæTTYiQSTXBk ZCdܚ:RRS>CdZЭ[ѭZ+2ЭRRW1RWR$RЭ[ѭZ|~XPRH߭߭F ...V1.MCALLF .MACS.MACS.NENDC...CM6 ,17,0,<>,<>,EШ,351|$||yl ys D:u0uD?g RԀkfԀ !RԀkfԀ !;"6;"T;"h;"e;" ;"T;"i;"m;"e;" ;"i޼U: ^K@z Xh|y`'@yf s  y@%@ OX%OX ֯W(|@ @K@sy}wDŞYz گr֯l%@ w ѱL! q @hex|42}S|;wPzxdw wK % @nK6n6OXT@povyhez| @@l!!v 0wD`Y+|W*|DiYk|y,P4|9wXb|P| `$|  $ ,P2|?|)&zi}d r n+6 zd9|( zy@KK@x!|\XHvn!6 @y~De{|%鰼R | d ֯ |Q%|De;|@ W.|  K@A֯xz@R} ,P0|D9Mo|D0f,|@ P|ձyp@ @v@ d>|r P|K  R}s %!S@ R}n6YT%@DM|M@D wPn,6 n N6ձ@QD Zm|n&X6s: nHX6n}\ H%zDM?|KDZ-|~@ryh@%@R@8@ ; s: n.6~%@Kf@pT@8 S%@The||nK6T@ 34d8|D KK@y@S@ @wv*&4Ԁ***'u~Ԁ*D?g*ys*DkfԀ*!wԀ*RԀ*Rv*%m4xs*$Yp:*J\!k*i@u~p:* *~**(****"9wW"|AyW#|| "| X#,H: ~he}|,P1|P@|| $D0M/|[M || " %@~@y@ zW)|| #,P6|| | !D9fl| ;"s ;"  \ #EMTBLKR1 , .MCALL ...4 CM0,...CM1,...< CM2,...CM3,...D CM4,...CM5,...L CM6,...CM7...V1=3.$R1E51$  Vl yq:t .IF B <> | CLR -(SP).IFF .IF IDN <>, #0 CLR -(SP) .IFF.IIF IDN <> <0> .ERRO R;?SYSMAC-W-In valid argument , use #0, not 0; MOV ,-(S P).ENDC.ENDC .IF NB <> EMT ^o<>.ENDC  @8 Wa'+  :!} ...C!M5 <>...V2=!0.IF B <>.!IIF B <>,... !V2=1.IFF.IIF(! DIF <>,SET,0!...V2=1.ENDC8!.IF NE ...V2.@!IF IDN <>,<#H!0> CLRB @R0.P!IFF.IF NB <X!> MOVB ,@R0`!.ENDC.ENDC.h!IFF.IF B <>p! MOVB #.,1(x!R0).IFF.NTYP!E ...V2,.IF! EQ ...V2-^o27! MOV +<.*!^o400>,@R0.IF!F MOV #.*^o!400,@R0 MOVB !,@R0.ENDC.!ENDC.ENDC.II!F IDN <> <0>! .ERROR;?SYSMA!C-W-Invalid ar!gument, use #0!, not 0;...CM!2 <>,2,,,! ^w":}" .IF B <">.IF NB <>".IF NE ...V1- "3. CLR .(("R0).ENDC.END0"C.IFF.IF IDN8" <>,#0 CLR@" .(R0).IFFH".IIF IDN <>P" <0> .ERROR;?SX"YSMAC-W-Invali`"d argument, ush"e #0, not 0; p"MOV ,.(Rx"0).ENDC.ENDC".IF NB <> "EMT ^o375.ENDC"W8".IF B <> "MOV #.*^o400",R0.IFF.NTYP"E ...V2,.IF" EQ ...V2-^o27" MOV +<.*"^o400>,R0.IFF" MOV #.*^o4"00,R0 BISB ",R0.ENDC.ENDC EMT ^o374" @#F}W#8@.I#IF IDN <>,NO#SET ...CM1 < #>,,,<>.II(#F DIF <>,NOS0#ET ...CM1 <>8#,,#0,<>..@#.CM2 <>,4..H#.CM2 <>,6..P#.CM2 <>,8,E`#y:h# .IF NBp# <>.IF DIF x#<>,R0 MOV# ,R0.ENDC.#ENDC.IF NB <#> EMT ^o<>.ENDC# @8#Wa'+# :#} ...C#M5 <>.IF B #<>.IF NB <#> MOV #.*^#o400+.,@R0.#ENDC.IFF.IF #IDN <>,SET #MOV #.*^o400#+.,@R0.ENDC$.ENDC...CM2 $<>,2,,,$  @W $F}($kW80$@X8$ .IF NE ...V1@$-1...CM1 <>H$,,<>,<>,P$<>...CM2 ,4...CM2 <`$>,6...CM2 ,8,E.MEXITp$.ENDC...CM5 ...CM0 <$>...CM0 <>$...CM0 <>,< +>\  ^  ~$\ #$$R12E #,XƆ$ELN024.A[KITBUILD.INSTALL]FILE.OLB;1;16-9" !"#$%&'()*- +? m jct;1OTES;10hJ $ĄcmAw@Q`QTXpO/\kKw#^QxqތEOa1%ey*s\8­>xnk7ф>>(#Em}Un6R$=|7\X0,^Яrlq Q .}S_Z+Y-O/Heh+[M9P^L.Jh M}.x;$ԙ&^}! 7N4 V|FF3[I{qxm,C?`zMvFƂ#*4#xO|/ mS?9RvFuXhA g,O_<:bj,wwEr-Z"٢dA@ !W"AUB[oD+X5ۃg39S끢a4<&f&:YaHoSم}Nuޣ|@@}b0;9_W.B@Ms?)_ ؀$Nc0”Gfm3%%"6ȌFd*İvp5A~!N}ܖ?e`Xqii13J8պы Zf^f} L\jA 8lC@QJ0=GἩjuM8|@cSV~XqL 2Y9J#(RE&zjk,ɳ+iv?A*Avc|Z_1V*[nYCԎ(* KC&n)qmf;YpmN'ZFsAݑrHQ2T63CTR+mƍXci~'ǨՖ} iwn&ɴj+{;d]p~}rJ R0}It*(\8t/a}L9"#M֚2r^p WْjgILZ:|Gǽҡd&ZQ6Պ~rlZ0&/1tWRM#0z|Om{w6eTd[L`יB"iḑ]pa+:E,ˁn[Mg1U(t׾o-(?{<|-uխ1'z%)_y>PB~Ѣ2٧Fɴ^;Գ[us|Z9(0K&&u\gqVu)th)nrrb*:R$f8h9{ L6YBJT4zֈ)T_P)z2(+Mj%s\䑒ؚ&P7g:eRM*2p ku>gܥ˂@}'&d(Z$祜* "%&~nwT2-e IP+0uGj#ޞH/6`OPֆa6iGh{4VW 4rrA(-蜈'O^U|D8ڣcr Sѥ9ocO66|]|L;/ KrE1er7lf}kU =r*UR6o b:?6xOPUat=k>J-$u֓Б/ԼDCթi7<.tK,eF[pMHCV{'*Ё@ainkNѷ{hhs큝e Vy,lš'هogWYwQ5vsg TA7' ֒N$K7+x-R|s٩`ޡO2*beHpy Lfi#'$I c[ؤٰJlq8 XX}u0/IYeU,H ΟbsQJKrӔ(֊I=X|~ށx< Gr\M1F`+{תl.Wo"K^N`SbnH}3Hƹb'- v(?.3%ؑG=Y\ 擷fI'٧4?1dM5uYQ5'E.fVv JWڮ!VlÖ&OnW ʉFZކ⑷wN-U:CQF:z`2yiS-=x=>#"iㆇ6jXI9Py)O>Ftj-Q_R(u4rFn5.U̴ϋN")aPbE'K Fr'X ͟X\f{Zum뎮$@3lIov֊FK9w[+?ŢPL[Ex5i-E Ȁ/'1!rHo"Ǧzuh.Qqd̊4 |Idbs Lnzt;uf._-j <UYٵs Q̓S"*D2w3{1 ^buRkA7[K{8h~ 5ȋ"LKQsa/L٥ dNJ¬2Ӛ|P 9ZWd󼚢we֧.Wvv\eoV}aC^GhTxڍK0KDfּؤ r!:d m`d͞O#}&ThQ޵zȌ]TL/Fi Nj"K閸MͣS#{? JNJ!, WIggޡ3'%0+lS1 }t{xǃZQo25#&Bָ{s.˹c/~$cJ.*]E޹%煢DB[}jdUZecI ~;8:e[xLk2K1GICSc6?p֗* sM'}WU3(EU5P(2T< &ܙ@*+&)Z} Yܜ+Ȓ3([A}5.pR}On/[J?tDq-vF sϴGqZ`Dl hЩNTyGr_;iVe=mT3.ک]޸|wI.EfB(v$w4c&.r:mEv_7~T/JZ_1v'rrw Wp&[uI"Ԕo%)罙[c$^tۣ/ϫ`,Dv?x^pb'~!CutG@8A=bs;0Dܝ^;~D n|ܯ& XPIĂ `n9@\|J>oVm^7SUfha`~v_4;낾T^|4Syˢ(5.u5a#rJw}6Я.vi9mcBwބA_$tĿ Kzq x :64Fw QuŪ]O-to%AnޭA?UTo`48HQ/輼a{%4-+TPj ^i5AN5$"dyonyaP-(ƹ`avVʯD206Ġ`,H~Ƭ6Z\A }78JBQ_&=Яj#W3ߍwB1[Wiτ;t{P;_ӘkB84ELbFư\c LQq=]ts+P+ύi }ȳ-