Digital PDFs
Documents
Guest
Register
Log In
XX-ED056-25
June 1977
71 pages
Original
6.8MB
view
download
Document:
Lick 32K FOCAL Users Guide 197706
Order Number:
XX-ED056-25
Revision:
Pages:
71
Original Filename:
http://bitsavers.org/pdf/dec/pdp8/focal/Lick_32K_FOCAL_Users_Guide_197706.pdf
OCR Text
ALPHABETICAL INDEX OF 32K FUNCTIONS NAME PAGE DESCRIPTION ADDQ% ADDR* ADV AND ASK BAK BIG BRK CADO CALL CHAN CHEK CHOP* CLOS CNT* COMB* COMP CORL* COTY CPEN CRT CT* DEC* DIS DIVD DLTQ* DMUL DO DONE* DTIM* EDIT END EDF ERAS EXCR FILE FLIP* GO HDTS* HI HUNT U10 34 21.3 26.1 14 21.3 26.1 ADD ITEM TO END OF 5 ELEMENT QUEUE OCTAL ADDRESS OF LAST WORD USED BY X ZAP ADVANCE IBM TAPE ONE RECORD AND TWO 24-BIT NUMBERS TOGETHER READ A FOCAL FLOATING PT. VARIABLE FROM DECTAPE BACKSPACE IBM TAPE ONE RECORD CONVERT 12-BIT SIGNED INTEGER TO 24 BITS BREAK OUT OF A FOCAL DO GROUP OR FOR LOOP DO A LINE OR GROUP IN ANOTHER PROGRAM CALL AND OPTIONALLY START ANOTHER PROGRAM RETURN VALUE OF A SINGLE CHANNEL RETURN SCANNER/PUSHBUTTON STATUS; UPDATE LEDS MOVES 120" TELESCOPE CLOSE OUT DATA-CHAINED DECTAPE BUFFER START 3-PHOTOMULTIPLIER COUDE DEVICE COMBINE ADJACENT 12-BIT WORDS IN A BUFFER DRAW STRAIGHT LINES ON CRT OR CALCOMP CROSS-CORRELATION FUNCTION ON A BUFFER PRINT TEXT FROM I.D. BUFFERS ON CRT OR TELETYPE RAISE/LOWER CALCOMP PEN PLOT SCANS ON CRT OR CALCOMP READ AND ZERO SCANNER MEMORY COUNTING TIMERS CONVERT OCTAL TO DECIMAL DISPLAY A DOT ON CRT DIVIDE BUFFER BY ANOTHER BUFFER OR A CONSTANT RETURN AND DELETE ITEM FROM END OF QUEUE MULTIPLY BUFFER BY ANOTHER BUFFER OR A CONSTANT COMPUTED FOCAL DO COMMAND RETURN STATUS OF QUICK IBM COMMANDS APPLY DEADTIME CORRECTION TO A BUFFER SET VALUE OF A SINGLE CHANNEL RETURN TO CALLING PROGRAM WRITE AN END OF FILE MARK ON IBM TAPE SET ALL OR PART OF A BUFFER TO ZERO EXCHANGE/CIRCULAR SHIFT ROUTINE SAVE A PROGRAM ON DECTAPE REVERSE ORDERING OF CHANNELS IN A BUFFER COMPUTED FOCAL GO COMMAND RUN HIGH SPEED DATA TAKING SYSTEM RETURN HI-ORDER 12 BITS OF 24 BIT INTEGER HUNT FOR DOUBLE END OF FILE ON IBM TAPE NOTES: *1 *2 U6 U7 12 17 C3 15 *1 18 33 11 18 34 11 U10 11 U10 29 17 11 21.1 17 20 13 -11 ~~ 26+1 21.2 * IN NAME FIELD INDICATES COMMAND IS IN AN OVERLAY SEE DOCUMENTATION FDR 3-PHOTOMULTIPLIER COUDE DEVICE SEE DOCUMENTATION FOR 32K DATA TAKING SYSTEMS ALPHABETICAL INDEX OF 32K FUNCTIONS <CONT.> ~1E:3CI=( ! IBM .l.H1"ll::. IEL:O* IN IND* INTP IPHD* IPUT IT1:'.il·\ 30 u :l.~5 •''\•""'I .-::. .,.·:. '")'") .·:•• 1.:•• ,.J1'•iP* ,JMS* !... ED 1...0 1...0G:O* 1...CJOI"\* 1...l=(EC 26. :I. MCEN* MCCH MEMC MEME MEMR MEMW MEMX* MEMY>l< MGET U :L:L 32 ..., ... ) . :> . ... MO~JE MP><* i"1l~:C~* U:l.2 M~)1~1V :I. '7 Nr~ME :1.2 OCT* OUT ::~4 P1:'.\I<~* U:l.2 F' i'.1U'.~) F'E1~1l·\ :l 7 PIXL* i::"CJLY* i::·osN* PUT PUTN U:l.4 NOTES: *1 *2 I PT I DN :1.4 17 RE"fl.JRN IBM TAPE STATUS ERASE 4 FEET OF IBM TAPE RETURNS FIELD DF LAST WORD USED BY X ZAP ADD 2 BUFFERS TOGETHER FIRST MOMENT PEAK FINDER RETURN AND SET MASK OF P/S MONITOR DISPLAY VARIABLE DENSITY PIXELS ON CRT WRifE A :1.2 OR 24 BIT WORD TO I.D. BUFFER RETURN 12 OR 24 BIT WORD FROM I.D. BUFFER SIMULATES A PDP-8 JMP INSTRUCTION SIMULATES A PDP-8 JMS INSTRUCTION DISPLAY NUMBERS ON LEDS RETURN LO-ORDER :1.2 BITS OF A 24-BIT INTEGER TAKE :l.OOOO*LOG BASE :1.0 OF A BUFFER PLOT INTENSITY MAP ON CRT <FOR MAPPING TUBE> RETURN RECORD LENGTH/LOG I OF LAST IBM RECORD SET ~3WEEP CENTEI=< START SCANNER COUNTING WITH EXTERNAL CLOCK PULSE START SCANNER COUNTING OR RETURN REMAINING TIME ERASE ALL OF SCANNER MEMORY READ SCANNER MEMORY WITHOUT ERASING IT WRITE SCANNER MEMORY LOAD/READ X SWEEP LOAD/READ Y SWEEP READ A 2048-CHANNEL SCAN AND I.D. FROM DECTAPE COPY FROM BUFFER TO BUFFER TRANSMIT/RECEIVE FROM/TO SERIAL MULTIPLEXER READ SCANNER MEMORY, ERASING WHAT IS READ WRITE A 2048 CHANNEL SCAN AND I.D. TO DECTAPE READ AND ACTIVATE FOCAL COMMANDS FROM OVERLAY CONVERT FROM DECIMAL TO OCTAL SUBTRACT A BUFFER FROM ANOTHER PACK LO PART OF N CHANNELS IN N WORDS ~:)T(.~h:T/~3TDP sc·ANNEI~: Fl=(OM COUNTING; NO TIME CHr~NGE FIND PEAK IN A DUFFER SET SCREEN PARAMETERS FOR X IPHO GENERATE POLYNOMIAL IN A BUFFER RETURN POSITION COORDINATES OF :1.20" TELESCOPE WRITE A :1.2-BIT WORD TD DECTAPE LOAD A BUFFER WITH LINEAR DATA * IN NAME FIELD INDICATES COMMAND IS IN AN OVERLAY SEE DOCUMENTATION FDR 3-PHOTOMULTIPLIER COUDE DEVICE SEE DOCUMENTATION FOR 32K DATA TAKING SYSTEMS ALPHABETICAL INDEX OF 32K FUNCTIONS <CONT.> Ii::· TI ON N1~!'i[ Pt:~GE :OE~:;CF( 1:<1~'.:lT::l< *2 MOVE :1.20" TELESCOPE WHILE SCANNER IS COUNTING READ 3-PHOTOMULTIPl...IER COUDE DEVICE QUICK IBM READ COMMAND READ A RECORD FROM IBM TAPE REFORMAT BUFFER FROM/TO 32K/BK FORMAT RETURN POSITION OF X-Y STAGE 1;;:EWIND IBM TAPE SET COEFFICIENTS FOR X POLY SCRUNCH/EXPAND SCANSv CONSERVING COUNTS FIND AL.I... PEAKS IN A BUFFER SET FUNCTION BUFFER IN 3-PMT COUDE DEVICE SHIFT BUFFER BY INTEGRAL/FRACTIONAL CHANNELS COMPANION FUNCTION TO FIND TRANSMIT/RECEIVE TO/FROM SPECTROGRAPH CONTROL MOIJE X·-Y ST1~GE SWITCH OUTPUT BETWEEN TELETYPE AND CRT STEP 3-PHOTOMULTIPLIER COUDE DEVICE SAVE A FOCAL FLOATING PT. VARIABLE ON DECTAPE READ SWITCHES; LIGHT LAMPS; ERASE CRT READ A 12-BIT WORD FROM DECTAPE READ TIME/DATE FROM TIME STANDARD CORRECTION FOR ATMOSPHERIC EXTINCTION TOTAL OF CHANNEL CONTENTS IN A BUFFER TRANSLATE DATA THRU ARBITRARILY DEFINED FUNCTION RETURN POSITION ANGLE OF TUB STORE CHARACTERS FROM TELETYPE INTO I.D. BUFFER UNPACK N 12-BIT WORDS INTO N CHANNELS ERASE UNWANfED FOCAL VARIABLES LIST OVERLAYS ON DECTAPE WRITE A RECORD TO IBM TAPE QUICK IBM WRITE COMMAND IN'.:)PECT/MODIFY r~L.L ~321"\ OF MEMOl:;:y ZERO CALCOMP PLOTTER ORIGIN F<CNT;:< i:(DQ* 1:(E1°~D F<EFM f<TCL* F(l.llND SAV»: ~3Cl:;;N* '.3EEI"\* '.3ET :~<:I. UB 2:1. :1.9 *2 2:1. ....·. '") :~·? 3:1. ~5 :I. *:I. ~>HOV :1.6 ~:;I G* 30 ~;)PEC>K ;{<2 '.:lT1'iG* >K::~ STt1T 1 :I. *:I. :1.4 1 :t :1.4 ~:>TEF· STOI:;; !:;WIT TAI"\ TIME* TINC>K TOTI... TF((.~N>K TUB* TYCO UNPI"\ lJAF< l,JHr::iT ~,Jf( IT 32 29 :I. "7 U:l.!'5 *::.~ , ... ... ) ...·......_ U:l.3 :I. :I. :l. :I. WF<C~* U'? z,:1Px< 34 :I. fl ZCOM NOTi:::'.3: >:<:I. >K2 ..... 2:1. +,fl,. . . * IN NAME FIELD INDICATES COMMAND IS IN AN OVERLAY SEE DOCUMENTATION FOR 3-PHOTOMULTIPLIER COUDE DEVICE SEE DOCUMENTATION FOR 32K nATA TAKING SYSTEMS 1 Ackno;.;rledgments In addition to Jack Baldwin, who did the bulk of the original system design, I would like to thank the following people: Sandy Faber and Heywood Sobel, who, as the first users of the system, helped to locate a number of weak points in the system that have now (hopefully)been eliminated. Dave Burstein, Steve Grandi, and Ed Kemper, for their advice on deadtime corrections, peak finding, and IBKtapes, respectively. Ted Cantrall, for his suggestions on having 32K Focal adapt itself to various size machines. Alan Koski, who suggested that 32K Focal should be able to handle scans longer than 2048 channels. And finally, Lloyd Robinson, whose suggestions are too numerous to elaborate, and who always managed to find something else ne;; to add to the system. 2 ABSTRACT This report is designed as a User's Glide to the Lick 32K Focal System. It assumes some familiarity with Digital Equipment Corporation's Focal 1969 language. Although this report makes numerous comparisons with the Lick 8K Focal System (which is described in previous Lick Technical Reports), an understanding of Lick 8K Focal is not a prerequisite. The first part of this report describes the similarities and differences between the Lick 8K Focal System and the Lick 32K Focal System. It also describes some of the new features and concepts one needs to understand to efficiently use the system. The second part describes the operation of specific groups of 32K Focal functions, and serves as an e:l!!tended summary of all the commartds that are a resident part of 32K Focal. The third part describes additional commands that are available as overlays. ** Appendix A gives a seriesof indices and cross-references of Focal function names and related codes. Appendix B gives a complete list of error codes and their associated meanings. It is probable that updated versions (or additional pages for this version) will appear from time to time. ** Appendix A was deleted when this report was amended in June 1977. 3 INDEX I. II. Introduction a) Background 5 b) Mtjor Differences Between Lick 8K and 32K Focal 6 c) Similarities Between 8K and 32K Focal 7 d) The Five Core-Data Buffers 7 32K Focal Resident Functions a) Equivalent functions 11 b) Program/Name functions 12 c) Buffer independent Dectape I/O functions 14 d) Single buffer functions 16 e) IBM tape functions 21 I.D. functions 21. 9 f) III. IV. g) Scanner memory control functions 23 h) Double buffer instructions 24 i) Notes and miscellaneous instructions 26 32K Focal Overlay Functions a) Description 27 b) Polynomial Overlay 27 c) Deadtime, extinction, and logarithm overlay 29 d) Peak finding and linearization overlay 30 e) Sweep, time, position overlay 32 f) Cross correlation overlay 33 g) Debugging utility overlay 34 h) Intensity map overlay 36 32K FOCAL update - June 20, 1977 Ul 4 APPENDICES B-1 Error Diagnostics of Focal, 19 69 B-2 32K Focal Resident Function Error Diagnostics B-3 32K Focal Overlay Function Error Diagnostics 5 32K FOCAL USER'S WIDE I. a) Introduction Background To assist in data acquisition and data reduction, three PDP SI computers were installed at Lick Chservatory in the early 1970's. Since these computers were to be programmed by astronomers and researchers and not by programming specialists, a programming language was needed that was: 1. Easy to learn 2. Simple to use 3. Able to perform specific operations on large arrays of nunbers at high speed 4. Ab le to interact with a wide variety of specialized electronic hard- ware. Digital Equipment Corporation, the manufacturer of the PDP-SI, supplied an interactive programming language called Focal 1969, which met the first tlYo criteria. Lick then made extensive modifications to Focal so that it satisfied the latter two. The end product of those modifications, Lick SK Focal, is extensively documented in previous Lick Technical Reports. Although Lick SK Focal has evolved considerably since its inception, its gro;vth in certain directions has been constrained by a lack of core memory. Despite such useful features as the extended disk buffer, many operations involved in processing scanner data remain cunbersome and awkw"ard to program. Further, as the volume of data to process has grown, the PDP SI' s have become increasingly backlogged. But without additional core memory, little could be done to improve Focal. When less expensive add-on core memories for the PDP-SI became available in the mid-1970's, the idea of developing a more efficient Focal became feasible. The decision was made to upgrade the PDP-SI's to their maximum memory capacity of 32K of core, and to expand Focal to utilize this additional memory. tinued Work on 32K Focal began in 1975 ·by Jack Baldvin, and con- through M3.y 19 76 at which point it was taken over by Bob Kib rick. This report describes the result. 6 b) Mljor differences between Lick 8K Focal and Lick 32K Focal 1. Where SK Focal had 2 core data buffers of 512 channels each, 32K Focal has 5 core data buffers of 204S channels each. As a result, it is much simpler to manipulate 2048 channel scans in 32K focal. 2. In the 8K Focal System only a few Focal functions could be in core memory at any one time. Because of this space limitaton, the Focal functions were stored on the disk. If a Focal function was not already in core at the time it was needed, a copy of it was read from disk to core. Read time~ 100 msec. In the 32K Focal system, all of the Focal functions (excepting those brought in with the X NAM: command) are core resident for faster access. 3. The text area for Focal programs has been expanded so one can write larger programs and thus not have to do as much chaining between programs. 4. The DF 32 disk is no longer used. Data can nOW" be transferred directly from buffers to IBM tape without having to be written onto the disk. 5. The Lick Focal functions are nOW" faster and simpler to use. 6. X NAM: overlays written for the SK system cannot be used on the 32K system, and vice versa. 7. F<X:al programs written for one system generally will not work the same on the other system. S. 'J.Wo X NAM: overlays can be in the core memory at the same time. 9. The SK Focal and 32K Focal systems record scans on Dectape in different formats, although they both use the same amount of space for each scan. 10. A total of 36 scans of 204S channels each could be stored on a Dectape under the 8K system; 46 scans can be stored on a Dectape using the 32K system. As a result, the scans are numbered differently inthe 2 systems. 8K scan O starts in block 500 octal (320 decimal) while 32K scan 0 starts in block O. SK scan #N is located on the same place on the Dectape as 32K scan #N+lO. 11. In the SK Focal System, if one erased the CRT and then immediately tried to write on the screen, the resulting image would be too faint. As a result, one had to insert Focal delay loops to wait 0.5 seconds between CRT erase and CRT write commands. In 32K Focal, all commands which write on the CRT check a hardware flag and wait until the CRT has finished erasing before beginning to write on the screen. 7 12. In the 8K Focal System, if a Lick Focal function was called with invalid arguments or asked to operate on invalid data, the function would often proceed with its calculations and return a result as if nothing were wrong. This would make program debugging difficult. In the 32K Focal system, wherever possible, if a Lick Focal function detects invalid arguments or data, it will print c) a specific error message and stop execution. Similarities Between Lick 8K Focal and Lick 32K Focal 1. The layout of the program Dectape is very much the same for both systems. X NA:IB Overlay 1 begins on block 134 (octal); Program 0 begins in block 160 (octal). Thus, the Focal tape copiers can still be used on 32K Focal tapes. 2. The 32K Focal system and 8K Focal systems record scans on tape in different formats, although they both use the same amount of space for each scan. However, the 32K system can read scans written in either format and will automatically perform any needed conversions. also write scans in either format. The 32K system can At present, (Jan/77) the 8K system can only read and write scans in 8K format. 3. d) The bootstrap procedure for 32K Focal is the same as that for 8K Focal. The 5 Core Data Buffers The object of 32K Focal is to make processing scans of 2048 channels both faster and easier. a Five core data buffers are available, each with capacity of 2048 channels. 'IWo different modes of addressing allow one to treat these buffers as 5 separate 2048-channel buffers, or to treat groups of these buffers as if they were a single, longer buffer. For example, 2 of the buffers can be treated as if they were a single 4096channel buffer; or 5 of the buffers could be treated as if they were a single 10,240 channel buffer. CHANNEL 0 BUFFER 0 2 0 4 7 2 048 40 9 5 4 0 96 S 14 3 6144 8 I 9 I 8192 I 0 23 9 2047 2048 4095 4096 6143 6144 ~ 0 2047 2048 4095 4096 6143 0 2047 2048 4095 . _I_____.....I____-"'-1-----1------~ ........_....................~ . . .0 BUFFER B'UFFER 2 I I~ BUFFER 3 ·o BUFFER 4' 2047· ~~ 8 The above diagram illustrates hew the same area of memory can be addressed in a variety of different ways. Specifying channels 0-2047 of buffer 4 (hashed in area) is equivalent to specifying channels 6144-8191 of buffer 1, or channels 8192-10239 of buffer 0. The different addressing modes are best illustrated by example. FTOTL is a Focal function which sums up the counts in a specified number of channels. The form of the FTOTL command is: Buffer nurrb er ~Starting ~~Nunber channel nunber of channels to process Set D = FTOTL (A,C,N) To get the sum of the counts in channels 1-20 of buffer 0, one could code Set D = FTOTL (0,1, 20). To get the sum of channels 2051-2055 of buffer 0 one could code Set D = FTOTL (1,3,5), since channel 2051 of buffer 0 is equivalent to channel 3 of buffer 1. It is often the case that one wishes to treat the buffer area as 5 distinct buffers of 2048 channels each, and to have a command operate on all 2048 channels of each such buffer. To simplify coding in these cases, if the starting channel number (C) and the number of channels to process (N) are both left to default to zero, then the first 2048 channels of a buffer are processed; that is Set D = FTOTL (A) is equivalent to Set D = FTOTL (A, 0, 2048). In the case wtere N is zero but C is not, the processing begins in the channel specified by C and continues through channel 2047 of that buffer; that is Set D = FTOTL (A,C) is equivalent to Set D = FTOTL (A,C, 2048-C) (to apply this rule in cases where C > 2047, adjust A to bring C into the range O <= C <= 2047, i.e., Set D = FTOTL (0,2051) is equivalent to Set D = FTOTL(l,3), which is equivalent to Set D = FTOTL (1,3,2045). On the other hand, one may often want to operate on scans longer than 2048 channels, and that is the reason for the other mode of addressing. To get the sum of channels 0-4095 of buffer 0, one would code Set D = FTOTL (0,0,4096). To sum channels 4096-10239 of buffer 0 one would code Set D = FTOTL (O, 4096, 6144) or equivalently Set D = FTOTL (2,0,6144). In this last case, one is 9 effectively treating the buffer area as if it were only 2 long buffers -- buffer 0 which has 4096 channels and buffer 2 which has 6144 channels. Note: operations need not begin or end on channel nwnbers which are even multiples of 2048. To sum up channels 2001-10000 of buffer 0, one would code Set D = FTOTL (O, 2001, 8000). A few words of caution are in order on this point. The dual mode of ad- dressing allows one to concisely refer to scans of exactly 2048 channels while at the same time providing the flexibility to manipulate in a single command scans in excess of 2048 channels. However, the ability to refer to the same area of memory in more than one way also makes it easier to get confused and to try to use the same area of storage at the same time for mutually exclusive purposes. For example, if one wants to maintain a long scan of 6144 channels in channels 0-6143 of buffer 0, he must remember that in essence he is also occupying channels 0-2047 of buffers 1 and 2. Buffers 3 and 4 are still safe to use in this case as they do not overlap with the area in which the long scan is being stored. If one is only working with scans of 2048 channels and as long as there is no need to specify a non-zero number of channels (N), then different buffer nwnbers will never refer to overlapping areas of memory. That is, Set D = FTOTL (A,C) and Set D = FTOTL (B,C) will always reference mutually exclusive areas of memory (provided A~ B, of course!). It is also possible to specify combinations of buffer nwnbers (A), starting channel nwnbers (C), and numbers of channels to process (N), which are plainly illegal, and some which perhaps should be legal but are not. Here are some examples of INVALID commands: Set D = FTOTL (5) - Buff er 4 is highest legal buffer number (on a machine with 32K memory - see next section). Set D = FTOTL (3,5100) The highest legal channel in buffer 3 is 4095. Set D = FTOTL(3;6144,10240)- Nice try but it won't work. Although channel 6144 buffer 0 is equivalent to channel 0 buffer 3, channel -6144 buffer 3 is not equivalent to channel 0 buffer 0. Negative chan- nel numbers are completely taboo! Set D = FTOTL (0,2047,-2048)-Nice try again~ no you can't start at the righthand side and count backwards to the left. Negative numbers of channels to process are also taboc 10 If you use any of these illegal varieties of buffer specifications, Focal will print an error message and refuse to execute the command. (Error messages are listed in Appendix B.) It is also possible to come up with specifications of A,C, and N which, although not really proper, will be executed without giving an error message. As an example Set D = FTOTL (3,0, 8192) is not really correct in that there are only 4096 channels available if one starts at channel 0 of buffer 3. No error mes- sage is given and the command is treated as if it had been Set D = FTOTL (3,0, 4096). As a final note on the data buffers, it should be noted that although Lick 32K Focal is designed to operate on a PDP-8 with 32K of core memory, it can still be used on PDP-8's with less than 32K of core. buffers are available. If less core is available, fewer The following table relates the number of available buf- fers to the amount of core memory available. Amount of Memory Available Buffer Numbers 32K 0, l, 2, 3, 4 28K 0, 1, 2, 3 24K 20K 0, 1' 2 0, 1 16K 0 12K No buffers available Extended instructions not usuable SK No buffers available Extended instructions not available Only 1 X NAME buffer available Nothing available. 4K When Lick 32K Focal is bootstrapped, it automatically determines the amount of core memory available on the machine, and adjusts itself accordingly. to Attempts use buffers that are not available will be diagnosed by Focal as errors. Thus, the command: Set D = FTOTL (2) will work correctly on machines with 24K or more of core, but will cause an error message to be printed if used on a machine with less than 24K of core. 11 II. 32K FOCAL Functions a) Eouivalent Functions The following Lick FOCAL functions work the same in both 8K and 32K FOCAL and are always available: X CPEN(P,T)------------ P = 0: Pen Up. P = 1: Pen Down. Pause for a time about lO*T msec. Pen motion needs about 100 msec, which can be used for computation, or by the pause. X DIS(X,Y)-----------Store a dot on the CRT at location (X,Y). Full scale is 1023. X GO(S,L)~-------------~Like ordinary GO, DO but with computed arguments. X DO(S,L) (Subroutines, line L.) X END(O) ~-------------Return to calling program; next line ,..---------Quantity to be displayed (2 23 ~N '2: -2 23 ) ,-----------LED number for lowest precision digit (1-8) ,-----------Number of digits ,..-------Non-zero to display blanks Non-zero to suppress overflow warning ,---------Non-zero to suppress negative number check X LED(X,Ll,NL,B,O,M) Display numbers on LED digits on switch panel , - - - - - - - - X origin #- 0 origin#- 0 /; ,------------------Letter size ,.--------------y X STAT(X,Y,S) Direct all future printing to the CRT. Redirect printing to teletype if X = -1 or for CTRL·C, or for any error diagnostic. X SWIT(·l) - - - - - - - - - Erase CRT (Can be followed immediately by CRT write). X SWIT(O,L)--------------------Load lamps L. Lamps are coded 1,2,4,8,16,32. SET D = FSWIT(N,S, O, O,M) -----Read switch N, S to D. Set M=4095 to read all of group Nat once (Use 4094 to read all of group 3). M=l29 would read switch 1 & 8, weighted. M = 0 to read only switch N,S. SET D = FSWIT(3, 11,X, Y) -----Display joystick marker on CRT at (X, Y). When switch 3,11 is pushed, return 1024*Xl + Yl where (Xl,Yl) is final marker location on CRT. SET D = FVAR(O) - - - - - - - - S e t D to end point of FOCAL variable list. X VAR(D)---------------------Erase all variables defined beyond point D in list. X WHAT(N,M)--------------Type the names of M user generated overlay programs as found on program DECtape, starting at overlay :ffN. 12 b) Program/NAME Functions The following Lick Focal Commands are also always available, but are slightly different than their SK counterparts X NAME(N,F) - Reads into name buff er #F and makes available for use the commands from user generated machine language overlay #N. There are 2 name buffers (numbered 1 and 2) on machines with 12K or more of core; only name buffer 1 is available on machines with less than 12K of core. Note: A) F ~ 2 is treated as if it were F = 1 B) X NAME(O) is treated the same as X NAME(l), except that X NAME (0) will always cause a fresh copy of overlay #1 to be read in from tape. The commands in NAME overlay 1 are read into name buffer 1 at bootstrap time. X CALL(N,S) (For greater versatility in calling, see the X CADO command, pg. U7) - Call Program N from Dec tape. If S.> O, starts program N at subroutine s. (Code S*l28 + L to start program N at line L of subroutine S). Use X END(O) to return to the line following the X CALL command in the calling program. Important Notes: A) It is illegal to use either X CALL or X END from inside a DO group or FOR loop. B) If FOCAL's text area contains new or modified text that has not yet been filed (See X FILE command below), then execution of X CALL or X END will cause FOCAL to type "REALLY?" on the teletype, and then to wait for a reply. Any reply other than "Y" will cause the X CALL or X END command to be supressed, and the contents of the text area to be preserved. A reply of ''Y" will cause the command to proceed and the contents of the text area to be lost. C) If X CALL is used to address a program area on the Dectape that does not contain a FOCAL program, the following action is taken: 13 1) If the program area addressed by X CALL is not completely empty, the error message BAD PROGRAM nnnn is printed, where nnnn is an octal number indicating the number of non-empty (i.e., non-zero) locations in the program area. Focal's text area is erased, and is marked as not containing any program. 2) If the program area addressed by X CALL is completely empty, no error message is printed. Focal's text area is erased, and marked as containing the requested program. x FILE(N) File program N on Dectape. If program N was not first called in using X CALL (N), the message OK? will be printed. If the previous program (or perhaps old data on the tape) is to be overwritten, type "Y." To avoid writing, type "N" or CTRL-C. The program is still intact in core after being filed (or not filed) on tape. X FILE also prints last address used for text;highest address=l2567. A note on adding new programs: Before one starts typing in a new program, one should decide which program number to try to file it under. program number is in use. in use, type X CALL(N). Next, one should check to see if that To check if the area on the tape for program N is If this area on the tape contains data or an over- lay, one will get the message BAD PROGRAM nnnn If this happens, another program number should be used (unless one doesn't care about losing the data or overlay). If one doesn't get the message BAD PROGRAM nnnn then the area of tape referenced by X CALL(N) either contains a valid Focal program or is empty. Type W to list the program. Continue hunting for an available program number until you find an empty portion of tape or until you find a program that you no longer need. 14 c) Buffer Independent DECtape I/o Functions X PUT (W,B,U,I) - Store integer I in word W of Dectape block B on Dectape unit U. SET I = FTAK (W,B,U) - Return single precision value of word W in Dectape block B from Dectape unit U (Note integers have values of 0 <=I<=4095) X STOR(W,B,U;V) - Store variable V starting at word W of Dectape block B on Dectape unit U. (Note Semicolon!) SET V = FASK(W,B,U) - Return 10-digit floating point format variable starting at word W in Dectape block B from Dectape unit U (Note - each floating point variable occupies 4 words) Note; on the use of W,B, and U in PUT, TAK, ASK, STOR 1. There are 129 words in each block numbered 0-128 2. There are 1474 blocks on a Dectape, numbered 0-1473 3. If one counts total words on a Dectape, starting at word O block 0, there are 190146 words, numbered 0-190145. The location of a given word on the Dectape can be specified in a number of different ways. For example, word 128 block 1473 is equivalent to word 190145 block O; word 0 block 1 is equivalent to word 129 block 0. 4. If B=W=O, the previously used Dectape location will be incremented (by 1 for PUT and FTAK; by 4 for STOR and FASK) and taken as the Dectape location to be used for the current command. However, if the unit specified (U)is not the same as the immediately previously used unit, an error message will be given. 5. One block of the Dectape is usually kept in core. If a negative unit number is specified,(use -8 for -0 ), and the desired block is already in core, the Dectape will not be re-read or rewritten. A block in core will only be saved in this case when a different block needs to be brought in. This process is called data chaining and saves time since the Dectape doesn't have to be read and written as often. 15 If a positive unit number is used, the specified block is always re-read from the Dectape, regardless of whether it is already in core. In the case of PUT and STOR using positive unit numbers, the desired block is read into core, modified, and then immediately written back out to tape. Although data chaining is faster, it is more dangerous and should be used with caution. Since a block that has been brought into core and modified is not written back out to tape until a different block is read in, one could lose information and also unintentionally write on the wrong tape if one switches tapes while data chaining is in progress. To avoid this problem, and to also provide other useful information, a companion command to PUT/TAK/ASK/STOR has been implemented, called CLOS. X CLOS(O) X CLOS(-1) SET D = FCLOS(l) - Closes the Dectape buffer. That is, if the core buff er contains a chained tape block that has been modified and needs to be written to tape, this will cause it to be written. IF DATA CHAINING HAS BEEN USED, 111IS COMMAND SHOULD BE GIVEN BEFORE SWITCHING TAPES OR UNITS. - Purges the Dectape buffer. That is, if the core buffer contains a chained tape block that needs to be written to tape, X CLOS(-1) will turn off the data chaining flag and make it appear as if the block had been written to tape, without actually writing it. The contents of the Dectape buffer remains the same. X CLOS(-1) should not normally need to be used unless you get into trouble. - D is set to the absolute word address of the next available word on the Dectape. X PUT(l27, 1473) followed by SET D = FCLOS(l) would cause D to be set to 190145. It should be noted that certain other commands use the Dectape buffer for scratch space - in particular X WHAT uses the buffer. These commands effectively execute an X CLOS(O) before they begin execution. 16 A Note on Write Protection Lick 32K Focal has a write protection feature that prevents conunands like X PUT and X STOR from writing over. the Focal system, the user generated machine language overlays, or the user's Focal programs up to program #65. Only write operations to unit 0 are protected -- writes to any other unit can reference any block. Different Focal tapes may have different numbers of blocks protected. Currently, Jan./77,(and this is likely to change) write attempts below block 640 decimal (block 1200octal or start of program -66 or start of scan 20) are prevented. Please note that the physical reel of tape itself is not protected -- it is only protected when it is mounted on unit O; the same physical reel of tape is unprotected if it is mounted on a unit other than 0. d) Single Buffer Functions The following instructions are available only on machines with 16K or more of core. Although these commands operate on only one buffer, this buffer can be up to 10,240 channels long. Remember- for functions of the form X ~(A, ••• ,C,N), unless otherwise noted, the following compact forms apply: X ~(A) is equivalent to X ~(A, ••• ,0,2048) X ~(A, ••• ,c) is equivalent to X ~(A, .... ,c,2048-C) (See section I-d., "The Five Core Data Buffers", on page 7) Buffer ,..----Positive or negative shift (Fractional shift in units of l/4096th of a channel) - - - - - - Starting channel Number of channels X SHOV (A, 4096*0,C,N) A(x) = A(x+D), where A(x) means channel x of buffer A.. Shifts scan by both integral and fractional amounts. If N=O, channels shifted past channel 0 or 2047 are lost. If N~O, channels can be shifted past buffer boundaries. For example, X SHOV(0,8192,20) will shift channels 20 to 2045 of buffer 0 into channels 22 to 2047; the original contents of channels 2046 & 2047 are lost. X SHOV(0,8192 1 20, 2048) will shift channels 20 to 2067 into channels 22 to 2069. 17 ---Buffer Starting channel Number of channels Returns contents of peak channel if = 0 Returns peak channel # if > 0 Returns # of monotonically increasing channels from C if< O If non-zero, ignore channels whose content / is 1ess than DEF. S D = FPEAK(A,C,N,MODE,DEF) ---Buffer /"""~Starting channel /!';-----Number of channels S D = FTOTL(A,C,N) Total of counts in N channels ,..------ Buffer ~---------- ~ X ERAS(A,C,N) Starting channel Number of channels A(X) = O; for X = C to C+N-1 /Channel //Buffer S D = FCHAN(C,A) D = A(C) returns value of specified channel to store set value of specified channel ,..---- Buffer - - - Increment Initial value / / Starting channel //Number of channels X PUTN(A,INC,XO,C,N) Load N successive channels with lineardata: X'O, XO+INC, X0+2*INC, .... XO+(N-l)*INC 18 S D = FZCOM(R) Resets plotting or1g1n to R returns previous plotting origin. Used with'X CRT to plot scans. Plotting origin is set to 4095 bootstrap. Buffer Double precision vertical scale Double precision vertical offset (+ or -) of CRT sweeps if >O (default 3 ) Calcomp without dots if -1 Calcomp with dots if ~2 Points/chan if >o Chans/point if <O (default 2) Starting channel f /Number of channels ;';--starting X value on CRT X CRT (A,SC,OR,SW,P,C,N,XO) Display.scan on CRT or Plot on calcomp Note: if P > 0 and P <= 4, then each channel value will be displayed using P adjacent dots on CRT. For P> 4, only 4 adjacent dots will be displayed. (Note, to display P adjacent dots when P > 4, code P+4096) X distance Y distance =0 for line Y, then line X ~O for diagonal line =O for Calcomp plotter ~o for CRT X origin on CRT Y origin on CRT X COMP(X,Y,D,SW,XO,YO) Draw a line Y units in Y, then X units in X. Move diagonally i f D ~ O. IMPORTANT NOTE ON CALCOMP PLOTTING In order to speed up data taking operations, the X CRT and X COMP commands have been modified so that they can be interrupted by the scanner memory (see App end ix C) • 19 Buff er (BUFFER SPANNING NOT ALLOWED) Scan number (0-45) Dectape unit (0-7) ~Format selection (8K Fo:nnat if~ 0) / / / E r r o r control (returns -1 for error i f ~ O). Set D= FMSAV(A, S, U, M, E) Saves 2048 channel buffer A and its 31 word ID area as scan S on Dectape unit U.* Translates to 8K scan format if M I- 0; otherwise writes without translation. If E f 0 returns control to focal with a value of -1 if tape error occurs; otherwise types TAPE? TAPE? ETC. (Note: unit 0 is write protected against MSAV - see PUT and STOR) also note: if MI- 0 the buffer is left in BK scan format after the write has completed. To translate buffer back to 32K format, use X REFM command. ,.----Buffer (BUFFER SPANNING NOT ALLOWED) - - - - Scan number ~~~:~at ~~;---Error control Set D = FMGET (A, S, U, M , E) Reads scans from dectape unit U into 2048-channel buffer A and its 31 word I.D. area~· If M= 0, performs format conversion automatically if needed. If Ml- 0, forces BK to 32K translation to be done (even if data is already 32K). Error control same as in MSAV. Buffer /;,----[:=~ ~: X REFM(A, MODE) "'~Each (BUFFER SPANNING NOT ALLOWED) translate from 8K to 32K format translate from 32K to BK format Translates Buffer A and its associated I.D. area according to MODE* of the five 2048-channel data buffers has a 31 word I.D. area associated with it. (See page 22) 20 Buffer (BUFFER SPANNING NOT ALLOWED) ----Starting word -----Number of words to operate on (Must be <= 2048) -----Number of places shifted (ignored i f mode~ 0) >O shifts right;<O shifts left <O HI LO HI LO ... HI LO -LO LO ... LO HI HI .. HI = circular shift >O LO LO ... LO HI HI .... Hi-HI LO HI LO ... HI LO X EXCR(A,S,L,D, MODE) General Purpose Exchange Routine performs exchange on an area L words (not channels) long beginning at word (not channel) S in buffer A. Mode specifies type of exchange. If mode = 0, exchange is a circular shift of D places starting at word S in buff er A. (D > 0 to shift right,< Oto shift left). If mode> 0, takes L/2 low order words followed by L/2 high order words, starting at word S in buff er A, and pairs them in order HI LO HI LO ... HI LO. (Similar to X pair in 8K Focal) If mode< 0, takes L/2 pairs of words (HI,LO) starting at word S in buffer A, and shuffles them into L/2 low order words followed by L/2 high order words. Note: If mode f 0, L must be an even number. 21 e) IBM Tape Functions The 9-track, IBM compatible tape transports connected to the PDP 8I computers can be controlled using commands in the Lick 32K FOCAL language. These commands allow reading or writing of single records of up to 2048 channels of data. The PDP 8I's use two 12-bit words per IBM 32-bit word, ignoring the most significant 8 bits of each IBM word. Positive and negative numbers of magnitude less than 2 22 -1 are handled correctly. Data is written as "records" or "blocks" at a density of 800 8-bit bytes per inch, up to 8200 bytes per record (8192 bytes data, 8 bytes control information). Records are separated by a record gap of 0.6" or larger of erased tape. "Tape Marks" or "End of File" marks are followed by about 3.5" of erased tape. In order to locate a particular record on tape, one must count records from the beginning of the tape, or one may count "End of File" marks and then count records within a particular file. When writing tape, a "read after write" error test is made. If an error is detected, the tape will backspace over the bad record, erase 5" of tape, and try again on the next segment of tape. The IBM format allows gaps of any length greater than 0-.6", so that large segments of bad tape can be safely skipped over by the writing program. The following IBM tape commands are available: Buffer (BUFFER SPANNING NOT ALLOWED) ~~ Channel (-1 to read 31 words into I.D. area A) ~ Number of Channels (ignored if C= -1) ~~------------------Starting SET D=FREAD(A,C,N) Reads N channels from IBM tape to buffer A starting at channel C. Reads to end of buffer i f N=O. D=4096 for normal read. D=O for end of file. Tape left positioned past end of file. D is negative if read parity error occurs more than 3 times; reads anyway. Notes: 1. If the number of channels on tape record exceeds N, excess channels are ignored, and no error indication i~ given. These excess channels are skipped completely; they will not be read by the next READ. 2. If the number of channels on tape record is less thant N,d?nf~ydavaanidlable channels are read. Remaining channels in core are no mo i ie , no error indication is given. See LREC command for READ length. 21. 1 Buffer (BUFFER SPANNING NOT ALLOWED) r~-~-~-~ Starting / '/ ' 1/' ~ SET D=FWRIT(A,C,N) channel (-1 to write 31 words from I:D. area A) Number of channels (ignored if C= -1) Writes N channels to IBM tape from buffer A starting in channel C. Writes €1l end of buffer i f N=O. D=O if write successful on first try. D>O gives count of number of segments of tape that had to be erased before write was successful. D<O if write fails after 3 attempts. Tape is left positioned prior to start of last bad write attempt. Notes: 1. If C= -1, the 31 word I.D. area is written. This I.D. area.will appear on tape as a 16 channel record. 2. In order to detect tape slippage, FWRIT will time out if it does not find a record gap pulse within 0.1 seconds of finishing a write. If slippage is detected, FOCAL quits with a ?2-5151?00.00 error message. If this happens, try cleaning tape capstan. 3. When writing many records, or whenever you are writing to a fairly full tape, the tape status should be checked after every write (See FIBM command below)~ When "end of tape" is sensed after a write, two end of file marks should be written (See X EOF cotmnand below). Then the tape should be rewound, unloaded, and a new tape mounted in its place. If one fails to check for end of tape, in the course of a long night of data taking, one might fill a tape and end up winding the tape off the end of the reel, thus losing data and time. X IBME (0) - - - - - - - - - - - - - E r a s e s 4 feet of tape. X EOF(O)----------- Writes an' end of file mark. Tape is left positioned past file mark. Notes: 1. In order to do any operation that writes on the tape, a WRITE RING must be inserted into the back side of the tape reel hub. If one uses any of the FOCAL commands which write on the tape (WRIT-, EOF, or IBME) on a tape without a WRITE RING, FOCAL will start printing PROTECT every 2 seconds. If writing is actually desired, and i f the writing is to conmence at the start of the tape, then one should: a) Switch tape drive to OFF LINE~ (FOCAL now starts printing OFF ~ instead of WRITE RINGJ b) Rewind and unload tape. c) Insert WRITE RING into back of tape reel hub. d) Remount tape and position at load point. e) Switch tape drive to ON LINE. FOCAL will stop printing OFF LINE and will write the d~sired record at start of tape-.- 2. One can check for a WRITE RING before attempting to write by using the FIBM command to check the tape status. 21. 2 SET D=FIBM(M) D is set equal to the tape status, masked by M unless M=O. Status bit values: 2048 - END OF TAPE (Use this when writing) 1024 - TAPE READY (Tape unit power is on, and tape is tensioned, positioned on or past load point) 512 - FILE PROTECT (No write ring is in tape reel hub i.e., tape cannot be written on) 256 - REWINDING (Tape drive is busy rewinding) 128 - BEGINNING OF TAPE (Tape is positioned at beginning, i.e., load point or B.O.T.) 8 - ON LINE (Tape transport is switched on line. This is like the REMOTE position on DECtape drives; OFFLINE is like LOCAL) X RWND(O) ~~~~~~~~~~~~~Rewind up to beginning of tape (BOT). X HUNT(O)~~~~~~~~~~~~~-Used to locate end of ·data on tape (not physical end of tape). Moves forward till double end of file (EOF) is found and stops following the double EOF. The teletype will type "EOF" each time a file mark passes the read head, so that one can use X HUNT to count the number of files on a tape. 21.3 SET D=FADV(N,J) ~----- Advances N records. If J=O, stops past EOF if EOF found. If J~O, continues advancing past EOF. D is set= 4096*(# of file marks passed) + # of records with parity errors SET D=FBAK(N,J) ------Backspaces N records. If J=O, stops past EOF if EOF found. Note- Two "EOF" messages are printed: 1 for backspacing over the EOF, and 1 for advancing back over it. D is set to 4096 plus # of records with parity errors. If J~O, continues backspacing past EOF. D is set = 4096 * (# of file marks passed) + # of records with parity errors. =O for record length =-1 for record number SET D=FLREC(MODE) If MODE=O, D is set to the length (in channels) of the last record read or written on IBM tape. If MODE= -1, D is set to the record number (modulo 4096) of the last record read or written to IBM tape. The record number is a count of the number of records (including EOFs) from the start of the tape. Notes 1. The IBM tape record number counter is set to 0 by X RWND(O) 2. File marks are counted the same as data records. 3. The IBM tape record number counter is displayed in the MQ register while the tape is in motion during X BAK or X ADV. 4. File marks do not have a defined length, i.e., if FLREC(O) is used immediately after reading or writing a file mark, the length returned is unpredictable. 5. Remember that the IBM tape record counter counts modulo 4096; thus FLREC(-1)=0 does not necessarily mean one is at the beginning of tape. A FINAL NOTE ON IBM TAPE COMMANDS By adding 4096 to the first argument of the following commands, the printing of the "EOF" messages on the teletype is suppressed: READ HUNT ADV BAK 21. 9 f) I.D. Functions Each of the 5 2048-channel data buffers has a 31 word ID area associated with it. All 5 of these I.D. areas are available as long as the computer being used has at least 12K of core memory. In addition to these 5 I.D. areas (numbered 0-4), there is an additional 31 word I.D. area which can be referenced by using a buffer number of -1. All of these I.D. areas are safe over bootstrapping. (NOTE - Words 0 to 3 of I.D. buffer -1 are used by the P/S monitor; see Appo C) The MSAV and MGET commands (see page 19) transfer both the I.D. buffer and its corresponding data buffer to and from the DECtape. However, as there is no data buffer -1, I.D. buffer -1 cannot be transferred to or from DECtape using MSAV or MGET. Neither can the IBM tape commands READ or WRIT be used with I.D. · buffer -1. The conversion table below shows the correspondence between the location of the I.D. words on an SK format DECtape scan, and the 32K FOCAL I.D. buffer locations that these I.D. words will occupy. Note that this table applies to 204S channel scans; the I.D. information from a 4096 channel scan will occupy two separate I.D. buffers. CONVERSION TABLE - LOCATION OF I.D. WORDS - 8K .VS. 32K FORMAT 8K WORD 1fa 121 122 123 124 125 126 127 128 7 0 1 2 3 4 5 6 7 15 8 9 10 11 12 13 14 15 23 16 17 18 19 20 21 22 23 31 24 25 26 27 28 29 30 ** SK BLOCK 1J: 32K FOCAL I.D. Buffer Word Numbers are shown in corresponding box ** Reserved for use by 32K FOCAL 22 Word (0-30) Buffer Variable to Store ~ t P X IPUT (W ,A, D,P) 0 for double precision Store single (or double) precision variable D into word(s) W (and W+l) of I.D. area A. Word (0-30) f ~Buffer ,!' ~ P t 0 for double precision Set D=FITAK(W,A,O,P) Read single precision variable from word W, I.D. area A (or double precision variable from words W, W+l) 1st Word number (0-30) Buffer I ;1~--~~- No. ;1 X TYCO(W,A,N) of characters (1-62) (rounded up to next even number) Accept up to a maximum of N characters from the teletype and pack them 2 characters per word starting at word W in I.D. area A. If used in the function form (i.e., SD= FTYCO ( ... ) ) returns the number of characters accepted, or -1 if ESCAPE or ALTMOD was hit. - - - - - - 1st word number (0-30) Buffer No. of characters (1-62) (rounded up to next even number) X COTY(W,A,N) Starting at word W in I.D. area A, unpack and print I.D. information for up to a maximum of N characters. Characters are assumed to be in packed format, 2 characters per word. Printing stops if a null character is encountered. PRINTS ON EITHER TELETYPE OR CRT. If used in the function form (i.e., S D=FCOTY( ... ) ) returns the number of characters printed. 23 g) Scanner Memory Control Functions X MEME(O) Set D = FMEMC(N) X MEMW(W,N, OR) Erase scanner memory Set counting time N cycles (~ 222 -1). Returns remaining counting time. Stops if N=O. Doesn't set time if already counting. Write N channels starting at Channel 0 (N<=2048) Buff er 0 of core memory to scanner memory, starting at scanner channel W. Writes Low 12 bit part if OR=O, otherwise writes High 12 bit part. Set D = FMEMR (A,B,H) Read scanner memory to core. First 2048 channels read to buffer A (not read if A = -1) second 2048 channels read to buffer B (not read if B = -1) reads all 24 bits of each channel if H = O; reads only Low 12 bits if H ~ 0 (much faster). Sets D if counting (SD= F MEMR( ... ) ) X PAUS(N) Stop counting if N = 0, continue if N = 1. No change in actual live time. 24 h) Double Buffer Instructions (require at least 20K of core) Output buff er Input buffer - - - - - - - Starting channel in buffer A Starting channel in buff er B Number of channels Moves N channels, starting at channel CB in buffer B,to buffer A, starting at channel CA. Contents of buffer B unchanged A(x) = B(y) For X = CA to CA+N-1 Y = CB to CB+N-1 , . - - - - - - - - - Augend register ,________ Addend register -------Starting channel in buffer A - - - - - - - - Starting channel in buffer B -------Number of channels Adds N channels, starting with channel CB in buffer B,to buffer A, starting at channel CA. Contents of buffer B unchanged A(x) = A(x) + B(y) For X = CA to CA+N-1 Y = CB to CB+N-1 ,------------ Minuend buffer ----------- Subtrahend buff er ------Starting channel in buffer A Starting channel in buffer B -----Number of channels Subtracts N channels, starting with channel CB in buffer B,from buffer A, starting at channel CA. Contents of B unchanged For X = CA to CA+N-1 A(x) = A(x) - B(y) y = CB to CB+N-1 25 ,.--~~~~---Multiplier/Product Buffer Mul tiplican:;I Buffer ---~~~~~Double Precision Constant Multiplicandt ,-----~~Single Precision Divisor for scaling -----Starting channel in Buff er A / ~Starting channel in Buff er B ~~Number of channels to process Does Double precision multiply of N channels starting at channel CA in buffer A and CB in buffer B. Result goes to buffer A; Buffer B is unchanged. Result is divided by single precision constant D, which defaults to 1. X DMUL(A,B,M,D,CA,CB,N) A(X) = (A(x) * B(y) ) / D for x=CA to CA+N-1 for y=CB to CB+n-1 . tif Mt 0, Buffer A is multiplied by constant M, i.e., A(x) = [A(x)*M)/D] for x =CA to CA+N-1. (B and CB are ignored in this case) ,--~-----Dividend/Quotient ..---~--~-Divisor Buffer Buffer r------Single precision Multiplier for scaling ~----~-Double precision constant divisor * ,------Starting channel in Buff er A / ~ Starting channel in Buffer B ~ ~ Number X DIVD(A,B,M,D,CA,CB,N) of channels to process Does double precision divide of N channels in buffer A by N channels in buff er B starting at channel CA in Buff er A and in channel CB in buffer B. Result goes to buffer A; buffer B is unchanged. Result is multiplied by single precision constant M, which defaults to 1. A(x) = (A(x) * M) / B(y) for x=CA to CA+N-1 for y=CB to CB+N-1 * If D f 0, Buffer A is divided by constant D, i.e., A(x) = [A(x) * M]/D for x=CA to CA+N-1 (B and CB are ignored in this case) Note: Division by zero results in a value of zero. 26 i) Notes A NOTE ON ARITHMETIC FUNCTIONS DMUL DIVD LOGB PUTN IN OUT POLY PUTN If these commands are used in the function form (i.e., SD= FDMUL ( ... etc.) ), D is set equal to the number of channels in which arithmetic overflow occurred. Negative overflows are set to -(2 23 -1); positive overflows to +2 23 -1. Notes on Double Buffer Instructions 1. If N=O, the instruction terminates as soon as channel 2047 of either buffer has been processed. 2. Channels are processed one by one, from left to right. 3. If N~O and N exceeds the number of channels remaining in either buffer, the instruction terminates as soon as the last available channels in either buffer has been processed: NO ERROR MESSAGE IS GIVEN IN 11IIS CASE. 4. IF 11IE AREAS OF MEMORY IMPLIED BY (A, CA, N) AND (B, CB, N) OVERLAP, RESULTS MAY NOT BE THOSE DESIRED: NO ERROR MESSAGE IS GIVEN IF OVERLAP OCCURS: Overlap cannot occur if N=O and A;fB. Overlap is sometimes desirable; for example, a quick way to multiply a buffer by 2 is to add it to. itself. i.e .• X INCA.A). Care should be exercised when specifying arguments that cause overlap to occur. 26. 1 Miscellaneous commands SET D=FLO (X) Return as an unsigned 12-bit integer the low-order 12 bits of 24-bit signed integer X. SET D=FHI (X) Return as an unsigned 12-bit integer the high-order 12 bits of 24-bit signed integer X. SET D=FAND(X,Y) Returns as a signed 24-bit integer the logical AND of the two 24-bit signed integers X and Y. SET D=FBIG (X) Return as a 24-bit signed integer the 12-bit signed integer in X. (The 12- bit number X is copied into the low order 12 bits of D; then the sign bit of X is extended into the high order 12-bits of D.) 27 III. 32K FOCAL OVERLAY FUNCTIONS a) Description The commands that have been described to this point are the ones most frequently used and as such have been made a permanent part of 32K FOCAL. Additional commands that are used less frequently can be added to the program DECtape as "overlays" using the system program TOVR (see LOTR 32K Focal System Description). The commands in these overlays can then be made available to a Focal program by using the X NAME command (see pg. 12 ). An "overlay" can contain from 1 to 10 Focal functions, depending on the length of each function. All ofthe functions residing in the same over- lay become available whenever that overlay is loaded into either of the 2 NAME buffers. All of the overlays described on the following pages can be used in either of the 2 NAME buffers. However overlays operating on the data buffers will run slightly faster in NAME buffer 2, and overlays using the Serial Data Multiplexer (see LOTR 16) will run slightly faster in NAME buffer 1. In the future, additional overlays are likely to be developed and described in other technical reports. b) Polynomial Overlay I r~~~~~~~~~~ Position of coefficient (O<= POS<= 10) ,.-~~~~~~~coefficient X SAV(POS; COEFF) Sets coefficients for X POLY. Note: No X NAME commands should be given in between setting coefficients with X SAV and using them with X POLY because the coefficients are stored in the overlay area with X SAV and POLY! NOTE SEMICOLON BEFORE COEFF. 28 Buffer - - - - - - Order of Polynomial ,..-~~~~~ Starting channel (O<= ORDER<=lO) ------Number of channels Generates a polynomial of order "ORDER" on contents of buffer A, starting at channel C and processing N channels. Coefficients are set using the X SAV conunand. Note: no X NAME conunands should be given and in between setting coefficients with X SAV and using them with X POLY, because the coefficients are stored inthe overlay area with X SAV and X POLY! 29 c) Dead.tiue, Extinction, Logarithm Overlay ,______ Data buff er ,____ K-lambda buffer ----- 256* air mass starting channel in A ; - starting channel in B / ;-Number of channels SET D=FTINC(A,B,Z,CA,CB,N) Extinction correction. Expects a table of 4096*1), in buffer B (~ = extinction coefficient for each channel). Data in buffer A is multiplied by exp(~Z). D is set to number of times overflow occurred. Data buff er Dwell Time (seconds) l/(131072*deadtime) seconds /;--- SET Q=FTIM(A,T,D,C,N) Starting channel Number of channels Deadtime correction finds number of real counts from observed. For each channel, computes x --) NR = counts* (1 + 1-x where x = (counts*4096/T)*D Q is set to number of times overflow occurred. A(X) = lOOOO*LOG lO(A(X)) 30 d) Peak Finding and Linearization Overlay ------Buffer r----- Peak channel ,.-----Continuum - - - Threshold Mininrum peak width (<4096) Starting channel of channels SET Dl = FIND(A,XP,CT,CD,MW,C,N) 1st moment peak finder. This routine SET D2 = FSIG(O) - Dummy argument finds an accurate position for a peak whose approximate position is already known (see LOTR #12 pg. 14). 12 ~Number Returns: D2 = :. FCHAN (J +C) J =0 N Dl = ~ J* FCHAN(J+C) J =0 or Dl < 0 if error occurs (overflow or peak too narrow) FOCAL Routine to Use FIND/FSIG 1.10 SET PK=FIND(A, ••• ,C,N); IF (PK)l.2; SET PK=(PK/FSIG(O))+C; GO 1.3 l.20 C - error recovery 1.30 C - continue Note that FIND returns number of peak position relative to channel c. FSIG 31 ....------- Input buff er .-------Threshold (Double precision) ,,..._____ Replacement flag ,-----Replacement value (double precision) Starting channel in A Number of channels in A ;' ~utpu~ buff er ~~Starting channel in B SET D= FSEEK(A,TH,RF,RV, CA,N,B,CB) Course peak finder and wild point destroyer searches for peaks in buffer A starting at channel CA and searching N channels. (A peak is a series of consecutive channels all of whose values are >=to the threshold TH). The mean position of eac~ peak (truncated to the nearest integer channel number) is stored in buffer B. The position of the Nth peak is stored.in channel CB+N of buffer B. The position recorded for the peak is a point halfway between where the peak sticks up through the threshold and where it falls back below it again . . The number of peaks found is returned as D and is also stored in channel CB of Buffer B. If RF~O, any point >TH is replaced with RV 1 . Bin size table buffer and scrunched data output buffer Channel offset Unscrunched data input buffer Starting channel in Buffer A Number of Scrunched channels Starting channel in Buff er B SET D = FSCRN(A,W,B,CA,N,CB) Scrunches data from buffer B to a table of bin sizes in Buffer A. W specifies the position in the unscrunched data of the ~ft edge of bin 0, times 4096. For instance, the middle of channel 1 has W = 6144 (l.5*4096). The bin size table contains the number of unscrunched channels, times 4096, in each scrunched channel. Bin sizes must be greater than or equal to 0. 32 e) Sweep,Time, Position Overlay (Uses Serial Multiplexer) 0 for Mux unit 3; 1 for Mux unit 4(coude) X MCEN(C,0,0,M) Offsets sweep center by C (+, -) ,.--~~~~~~~~~o to suppress ramp; 1 for normal sweep ~------~~----~~sweep /; center (+,-) 1 ,/ 0 to write; 1 to read ,/ J 0 for MUx unit 3; 1 for Mux unit 4 X MEMX(N,C,R,M) Loads X sweep ~----~----~~~~-Sweep //" ~/,,/' X MEMY ( O, C, R, M) center (+,-) 0 to write; 1 to read 0 for Mux unit 3; 1 for Mux unit 4 Loads Y sweep 5-PST calendar 4-UT calendar 3-Sidereal calendar 2-PST clock 1-UT clock 0-Sideral clock SET D=FTIME(C) Returns time in seconds or date coded 3600*month + 60*day + year where Year is the last 2 digits of the year. <O for HA in seconds of time { ~~~~-=O for RA in l/lO's of seconds of time / SET D=FPOSN(C) >o for DEC in seconds of arc Reads telescope position 33 f) Cross correlation overlay - - - - Data buffer ------- Smoothing function buffer SET Q=FCORL(A,B,CA,NC,CB,NS,D) Convolves data in buffer A with smoothing function in buffer B. Computes: A(J)=(A(J)*B(CB)+A(J+l)*B(CB+l)+ ... ... +A(J+NS-l)*B(CB+NSl))/D; for J=CA,CA+NC-NS A(J)=O for J=CA+NC-NS+l,NC Notes 1. Number of channels to process (NC) MUST BE NON-ZERO. NC=O will give an error message. Use NC=2048 to process a full 2048 channel buffer. 2. Length of smoothing function (NS) MUST BE NON-ZERO. NS=O will give an error message. 3. NS must be less than or equal to NC. 4. Single precision divisor D defaults to 1. 5. Result Q is set to number of times overflow occurred. -------Buffer I / - - - - - - - Starting channel //------Number of channels X FLIP(A,C,N) Reverse content of channels A(C) = A(C+N-1) A(C+l) = A(C+N-2) A(C+N-1) = A(C) 34 g) Debugging utility overlay Core address ,/" ~~----------------- Verify value ~ ~,.---------------~ Replacement SET D=FZAP(FLD,LOC,VER,REP) value Inspects, verifies, and replaces specified location in core memory. Returns in decimal-coded octal the contents of location LOC in field FLD. FLD, I.DC, VER, and REP are all specified in decimal-coded octal. If either VER or REP is non-zero, replaces the contents of LOC in field FLD with the value REP, provided that the value of VER identically matches the current contents of LOC. If VER does not match, location LOC is not changed, and an error message is printed. If FLD=LOC=VER=REP=O, returns in decimal-coded octal the contents of the next sequential location. This feature is useful for core dumps, and can spill across field boundaries. SET D=FADDR(O)------------------------------~Returns in decimal-coded octal the core address of the last location referenced with ZAP. SET D=FIELD(O)------------------------------~Returns in decimal-coded octal the memory field of the last location referenced with ZAP. SET D=FDEC(X)------------------~----------~Returns decimal value of decimal-coded octal number X. TYPE FDEC(7777) would print 4095 on teletype. Only accepts numbers from 0-7777. Returns in decimal-coded octal the value of decimal number D. TYPE FOCT(409 would print 7777 on teletype. Only accepts numbers from 0-4095. 35 // ------------~Function word word /'"-----------oData Public, 1 Private = SET D=FMPX(FUNC,DATA,BUS) = Transmits function word FUNC and data word DATA to serial multiplexer. FUNC and DATA are both specified in decimal-coded octal. Returns data received in decimal-coded octal • SET D=FMPX(650) would read data from Cable 8, Unit 5. X MPX(4320,20) would send Pulse 1 to Cables 8 and 18, Unit 3. See LOTR #16, page 5. --------Instruction field r--------Data field ,...-------Entry point address --------AC contents - - - - - - - MQ contents - - - - - - L i n k value SET D=FJMS(IF,DF,EPAD,AC,MQjLlNK) Does a PDP-81 JMS machine command to location EPAD in field IF. Immediately prior to executing the JMS the data field is set to DF, the AC to AC, the MQ to MQ, and the link to LINK. IF and DF must be in the range 0 to 7. EPAD, AC, and MQ are all specified in decimal-coded octal. LINK can only be 0 or 1. Result D is set to 24-bit contents of AC and MQ upon eventual return (if ever) to FOCAL. - - - - - - - - - Instruction field - - - - - - - - D a t a field - - - - - - - E n t r y point address - - - - - - - A C contents - - - - - - - MQ contents - - - - - - L i n k value SET D=FJMP(IF ,DF ,EPAD,AC,MQ, LINK) Does a PDP-81 ·JMP machine command to location EPAD in field IF. DF, AC, MQ, and LINK are set as described in FJMS instruction above. It is unlikely that control will ever return to this command. 36 h) Intensity map overlay r--~~~~~~~~~~Data buffer origin ,--~~~~~~~~-Y origin --~~~~~~~~~x Spacing between lines (X) Counts per dot ,--~~~~~~~ Starting channel ,--~~~~~~-Number X LOOK(A,X,Y,ST,SC,C,N) of channels Draw an intensity map. Uses low 12 bits of channel, only. Plots N vertical lines of varying density, starting at X,Y, with X spacing ST, intensity scale factor SC, starting at channel C in buffer A. Ul IV. 32K FOCAL UPDATE - June 20, 1977 Significant changes have been made to the 32K Focal System. The current version of 32K FOCAL (version 77B) is described in Lick Observatory Technical Report 1121, "32K FOCAL User's Guide" (Feb. '77). Effective June 20, 1977, version 77B of 32K FOCAL was replaced by version 77C*. This update describes the differences between the two versions, and the updates to be made to LOTR #21 so that it will correspond to version 77C. The differences between version 77B and 77C fall into the following areas: I. Modifications/corrections of resident functions II. Corrections of overlay functions III. Addition of new resident functions IV. Addition of new overlay functions V. Relocation of resident functions VI. Correction of inherited bugs. Robert Kibrick * The version number of any 32K FOCAL System DECtape or floppy disk appears in the title line that is printed whenever a FOCAL WRITE command is executed. U2 I. MODIFICATIONS/CORRECTIONS OF RESIDENT FUNCTIONS A. Corrections 1. SET D = FMEMR (A,B,H) (See p. 23, LOTR #21) The "read only low 12 bits" option (H :f: 0) now works correctly. In version 77B, use of this option would give correct results, but would actually run slower than if all 24 bits were read. 2. SET D = FCHEK (O) (See p. C-3, LOTR #21) Counting time display now counts dovm. correctly to 0. In version 77B, counting time display would count down past 0 and leave a final display of 4095. Counting time now counts down in minutes/seconds; in version 77B countdown was in seconds only. B. Modifications 1. X CALL (N,S,Q) a) (See pgs. 12-13, LOTR #21) Calls can no longer be nested to 10 levels as could be done in version 77B. Attempts to use the nesting option (Q :f: 0) now generate a ?5422?00.00 error message. Nested calls can now be done using the new CALL/bo function (See X CADO command, pg. U7 of this update) Changes to text of LOTR #21 1) p. 12, delete these 2 sentences under X CALL "If Q = 1, calls can be nested to 10 levels. Nesting cleared for Q = O." 2) p. B2, insert error code ?5422?00.00 "5422 X CALL NESTING NO LONGER SUPPORTED. INSTEAD." 3) p. Bl, delete error code ?22.24. USE X CADO U3 b) Using the X CALL (or X END) command from inside a DO group or FOR loop has always been illegal (see LOTR #1, pg. Z9, paragraph C). However, such illegal uses were never detected in either SK FOCAL or 32K FOCAL version 77B, and would cause unpredictable results. In version 77C, such illegal uses of X CALL or X END are detected, and a ?5440?00.00 error message is printed. Changes to text of LOTR #21 1) p. B2, insert error code ?5440?00.00: "5440 X CALL or X END FROM WITHIN A DO GROUP OR FOR LOOP" c) In both 8K and 32K FOCAL version 77B, one could easily wipe out many minutes worth of keypunching FOCAL text if one accidentally started a new (or modified) program that contained an X CALL (or X END) command, before one had filed the new program on DECtape or floppy disk. In version 77C: If FOCAL's text area contains new or modified text that has not yet been filed, then execution of X CALL (or X END) will cause FOCAL to type REALLY? on the teletype, and then to wait for a reply. Any reply other than 'Y' will cause the X CALL (or X END) command to be supressed, and the contents of the text area to be preserved. A reply of 'Y' will cause the X CALL (or X END) to proceed, and the contents of the text area to be lost. U4 Changes to text of LOTR #21: 1) Cut off bottom half of this page; paste on pg._ 12_. LOTR tnl over 2. X CALL (N,S,Q) X END (0) (See pg. 11, LOTR #21) Modifications b) and c) as described under X CALL above apply also to X END. 3. X FILE (N) (See pg. 13, LOTR #21) The contents of FOCAL's text area is written to DECtape or floppy disk as program N; then the program N just written out is read back into FOCAL's text area, as if an X CALL (N) had been used. In version 77B, the text area is written out but not read back. The user should not notice any real difference between the two versions, except that the version 77C X FILE command will take slightly longer. Place over bottom half of page 12, LOTR #21 Cut here ------------------------------------------------------------------------------X CALL(N,S) (For greater versatility in calling, see the X CADO command, pg. U7) • Call Program N from Dec tape. If S> O, starts program N at subroutine s. (Code 8*128 + L to start program N at line L of subroutine S). Use X END(O) to return to the line following the X CALL command in the calling program. Important Notes: A) It is illegal to use either X CALL or X END from inside a DO group or FOR loop. B) If FOCAL's text area contains new or modified text that has not yet been filed (See X FILE command below), then execution of X CALL or X END will cause FOCAL to type "RF.ALLY?" on the teletype, and then to wait for a reply. Any reply other than "Y" will cause the X CALL or X END command to be supressed, and the contents of the text area to be preserved. A reply of ''Y" will cause the connnand to proceed and the contents of the text area to be lost. C) If X CALL is used to address a program area on the Dectape that does not contain a FOCAL program, the following action is taken: us II. CORRECTIONS TO OVERLAY FUNCTIONS A. Sweep, Time, Position Overlay (See p. 32, LOTR #21) The commands in this overlay have been changed so that they work correctly in either NAME buffer. This new overlay (dated 5/16/77) will not work if used with version 77B FOCAL. The old Sweep, Time, Position overlay (dated 2/14/77) will not work with version 77C FOCAL. The old Sweep, Time, Position overlay worked correctly if used in NAME buffer 1, but caused occasional MUX errors if used in NAME buffer 2. When copying version 77C to your FOCAL tape, be sure to copy an updated version of this overlay. Changes to text of LOTR #21 p. B3: B. Change error code 6171 to 6165, 6174 to 6170. DebuggingUtility Overlay 1. (See p. 34, LOTR #21) The X MPX counnand in this overlay has been changed so that it works correctly in either NAME buffer. (The X MPX command had the same problem as the connnands in the Sweep, Time, Position overlay, and the same considerations apply. The new Debugging Utility Overlay is dated 5/4/77; the old one was dated 2/23/77). 2. The X MPX command no longer hangs up the spectrograph control panel at the 120" readout room; the previous version did. ·u6 III. ADDITION OF NEW RESIDENT FUNCTIONS A. X BRK(O) One of the problems with FOCAL is that: "If a GOTO or IF conmand that is inside a DO group transfers control to a line outside the DO group, that line is executed and control then returns to the connnand following the DO." (see DEC. FOCAL manual) A similar problem exists with GOTO or IF statements that are used inside of FOR loops. This feature of FOCAL makes it awkward to bail out of a DO group or FOR loop, as is illustrated by the following example program. *01. 10 FOR J=l,3;DO 2 '*01. 20 TYPE ! "L 1. 2" *O 1. 30 TYPE ~ "L 1. 3" ;QUIT *02. 10 TYPE %2,J;DO 3 *02.20 TYPE !"L 2.2" *03.10 IF (J-2)3,3,3.2,3.3 *03. 20 TYPE l "L 3. 2" *03. 25 GO L 2 *03. 30 TYPE t ''L 3·. 3" *GO 1 L 3.3 2 L 2.2 L 3. 2· L 1. 2 3 L 2.2 L 3. 3 L 2. 2 L 1. 2 L 1. 3* The X BRK connnand solves this problem by purging FOCAL's pushdown list, which is where FOCAL stores information relating to the nesting of DO groups and the control of FOR loops. The effect of the X BRK command is to break one out of the inside of any DO groups or FOR loops, as illustrated by the example below. Note that any commands on the same line following an X BRK command are ignored, and execution continues with the next sequential line. *01.10 FOR J=l,3;DO 2 *01. 20 TYPE t "L 1. 2" *01. 30 TYPE l "L 1. 3" ;QUIT *02. 10 TYPE %2,J;DO 3 *02.20 TYPE ~"L 2.2" *03.10 IF (J-2)3.3,3.2,3.3 *03. 20 TYPE t "L 3. 2" ;X BRK(O) ;TYPE "ABC" *03. 25 TYPE ! "L 3. 25" ;GO 1. 2 *03. 30 TYPE !-"L 3. 3" *GO 1 L 3. 3 L 2.2 L 3. 2 L 3.25 L 1.2 L 1. 3* 2 U7 Program / ( ; Group Step B. X CADO (P,G,S) This command functions exactly like a FOCAL DO command, except it allows one to "DO" text that is in another FOCAL program. Program P is called, then FOCAL 'DO'es group G, step S, as if it were part of the calling program. If S = 0, all of group G is "done." G = S = 0, all of program P is "done". If When the specified text has been "done," control returns to the statement following X CADO in the calling program. The X CADO command can be used anywhere a FOCAL DO command can be used, and X CADO's can be nested. The degree of nesting allowed depends upon space available in the pushdown list; X CADO requires l more word of pushdown list space than does a regular FOCAL DO statement. Note - If FOCAL's text area contains new or modified text that has not yet been filed, then execution of an X CADO connnand will result in a ?3336?00.00 error. Changes to text of LOTR #21 p. B2, insert error code 3336 "3336 X CADO EXECUTED FROM MODIFIED TEXT BUFFER. FIRST." USE X FILE U7.l --..ouffer Starting channel ~Number of channels C. X INV(A,C,N) Negative of buffer A(X) = -A(X); for X = C to C + N - 1 ouble Precision increment /{'Starting channel j r-Num.ber of channels D. X INCR (A, I , C, N) Increment a buff er by a constant A(X) = A(X} + I; for x = c to c + N - 1 FINCR(. •• ) re.turns overflow count • .-----Starting word in A ,.....~~~~-Output buffer ,.--~~~~~umber of words to copy E. Copies NW words of I.D. information from I.D. buffer B starting at word WB to I.D. buffer A starting at word WA. F. 2 new functions, X PV and GV allow one to store 18 single precision numbers into an area of memory that is safe over both power failures U7.2 and re-bootstrapping on any of our PDP-8s. A location (0-17) ~A single precision number (0-4095) X PV(LOC,VAL) Stores value into indicated location. rA location (0-17) S D = FGV(LOC) Sets D equal to value of location LOC. G. Occasionally, one needs to execute a sequence of FOCAL commands without interruption. The X IOF command allows one to prevent FOCAL from responding to the CONTROL/C key, while leaving the computer's interrupt enabled. X IOF(O) Causes FOCAL to ignore any subsequent CONTROL/C's until the next X IOF (-1) command. X IOF(-1) Causes FOCAL to respond to any subsequent CONTROL/C's until the next X IOF(O) command. If one has mistakenly set X IOF(O) and needs to abort the FOCAL program, hit the STOP button on the CPU. Then set switch registers to octal 0200, hit load address, and START. This implicitly executes an X IOF(-1) and executes the same restart sequence as if FOCAL had been aborted with CONTROL/C. One need not re-bootstrap. U8 IV. ADDITION OF NEW OVERLAY FUNCTIONS A. Quick Data Overlay - - Buffer (BUFFER SPANNING NOT ALLOWED) __ ,__ Starting channel (-1 to read 31 words into I.D. area A) of channels (ignored if C = -1) SET D = Starts reading N channels from IBM tape to buffer A. of buffer if N = O. 1) Reads to end Works like READ command except: Control returns to FOCAL as soon as the IBM tape starts moving. Data transfer can go on in parallel with computing. (One must be careful not to use the portion of buffer A into which the data is being transferred until the transfer is completed! Use DONE* command to check for completion.) 2) D returns the status of any previous IBM read or write operation, not the status of this command. See DONE command for description of status value returned. 3) If the tape drive is still busy processing a previous RDQ or WRQ command when the current command is executed, three options are available w= 0 A ?6062?00.00 error is printed and the FOCAL program w< 0 is terminated The current command is ignored and control returns immediately to the FOCAL program. is set -1 >'<'The DONE command is described on page UlO D U9 w> 0 The current command waits for the previous IBM tape operation to complete. Then the current command is carried out. 4) If the IBM tape is at END OF TAPE (EOT), the tape drive will appear "busy". The same actions are possible as described in 3) above, except that in the case of W < 0, D will be set to -2. Buffer (BUFFER SPANNING NOT ALLOWED) Starting channel ,.--- (-1 to write 31 words from I. D. area A) (ignored if C = -1) SET D = FWRQ Starts writing N channels to IBM tape from buffer A, starting in channel C. Writes to end of buffer if N = O. Works like WRIT command except for the same 4 differences described under the RDQ command above. Also, if a WRQ command is directed to a write protected IBM tape, a ?6273?00.00 error is given. Notes: The RDQ and WRQ commands can be used interchangeably with READ and WRIT, and are fully compatible with all other resident IBM tape commands, with the exception that one should allow approximately a 20 millisec delay after using X BAK before using X RDQ or X WRQ. Changes to text of LOTR #21: p. B3 - add error codes 6062 and 6273 "6062 RDQ or WRQ USING 'NO WAIT' OPTION FOUND IBM TAPE BUSY 6273 WRQ FOUND IBM TAPE WITHOUT WRITE RING" UlO SET D = FDONE(O) Returns status of last READ or WRITE operation. D = 0 if last RDQ or WRQ operation completed successfully D < 0 if last RDQ or WRQ operation has not yet completed D > 0 if tape error on last RDQ or WRQ, or if last record was a file mark. The low 12 bits of D contain the remaining word count The high 12 bits of D contain: BIT 11 is 1 if last record was file mark (4096 bit) BIT 10 is 1 is parity error on last record (8192 bit) BITS 1-9 unused BIT 0 is 0 ,--~~~-Number to be queued. (0 .:s_ A .:s_ 4095) SET D = FADDQ (A) Appends A to the end of a 5 element queue.* D = 0 if successful. If queue is already full, D is set < 0 and queue remains unchanged. SET D = FDLTQ (O) Sets D to the value of the front element of a 5 element queue*, then removes this element from the queue. Sets D < 0 if queue already empty. Notes: 1. ADDQ and DLTQ are useful for maintaining a queue of buffers to be read or written using the RDQ and WRQ commands. By queueing data, one can handle instantaneous data rates * A queue works on the basis of first in, first out. Ull that exceed that average data transfer rate of the IBM tape drive. Such situations occur in high speed data taking applications. 2. The storage area used for the queue is contained within the overlay. The queue is initially empty when the overlay is brought in with X NAME. No X NAME commands should address the buffer containing this overlay in between saving queue elements with ADDQ and retrieving them with DLTQ. ~Number of scanner cycles to count / / S w i t c h mask SET D = FMCQ (N, MASK) If scanner is already counting or if N < 0, returns remaining counting time, and leaves scanner unchanged. If scanner is not counting and N ~ 0, then 1) Waits for a pulse to be detected on the switch(es) in group 3 selected by MASK. (External clock pulses can be brought in across switches 3.8, 3.9, and 3.10. Pulse width should be at least 30 µsec) 2) Waits to synchronize with scanner memory (max. 4.4 millisec). D returns time spent waiting to synchronize with memory in units of 13.25 µsec. 3) Once synchronized, sets counting time of N scanner cycles and starts counting. 1 scanner cycle is ::::: 4.4 µsec. a counting time of ::::: 10 hours). (N = 0 gives Ul2 ~~~~~~~~Buffer ~;1~~~~~~-Buffer for 1st 2048 channels (right slit) for 2nd 2048 channels (left slit) X MRQ (A,B) Wait for current scan to complete, then read scanner memory to core. First 2048 channels read to buffer A, (starting in channel 0) and erased from scanner memory as they are read (Not read or erased if A= -1). Similarly for 2nd 2048 channels and buffer B. Reads all 24 bits normally. To read only the low 12 bits of each scanner channel, and to pack 2 of these 12 bit scanner channels per 24 bit buffer channel, add 4096 to the buffer number. B. Data Compaction Overlay Output Buffer Input Buff er Starting word in A (0 .::. WDA _:::. 4095) ~~Starting word /~Number X PAK (A,B,WDA,WDB,N) in B (0 .::. WDB .::. 4095) of channels in B Packs N channels into N words Each channel in B consists of 2 12-bit words. Starting at WDB in buffer B and processing N such channels, the low order word of each channel is stored into consecutive words in buffer A, starting at WDA. The high order words of each channel in B are ignored. Ul3 Output Buffer Input Buffer Starting word in A /j Starting word in B //Number of channels in.A:' X UNPK (A,B,WDA,tIDB,N) Reverse of PAK. Starting at WDB in buffer B and processing N words, appends a high order word of 0 to each word and stores into successive channels in buffer A, starting at WDA. Changes to text of LOTR #21: p. B3 - add error code 6255 "6255 starting word(s) <O or >4095 in PAK or UNPK" C. Isophote Display Overlay (Insert as pg. 38 of LOTR #21) Buffer ~/Starting channel //Number of channels SET D =·FIPHO (A,C,N) Takes data values in the range 0, 1, or 2 and displays them as PIXELS of 3 different densities on CRT. 0 displays as a blank PIXEL. 1 displays as a lined PIXEL. 2 displays as a solid PIXEL. Display consumes 1 channel of data per PIXEL, sweeping the CRT in a raster pattern. PIXEL size and CRT screen parameters are set using the X PIXL connnand. by this command. D is set to number of PIXELS displayed Ul4 Changes to text of LOTR #21: p. B3 insert error code 6344. "6344 screen full in XIPHO or XPIXL not called first." PIXEL size (CRT dots on a side) PIXELS per line Lines per screen X origin for picture on CRT Y origin for picture on CRT ~Oto / raster from bottom to top ~ 1 to raster from top to bottom X PIXL (PS,PL,LS,X0,Y0,YSWEP) Defines PIXEL size and screen parameters used by IPHO command. The input arguments must pass the following tests: 1) PS must be 2 or a multiple of 4 2) PL, LS, X0, Y0 must all be > 0 3) PL*PS+X0 must be < 1024 4) LS*PS+Y0 must be < 1024 Changes to LOTR #21: p. B3 insert error codes 6301, 6302, 6303 "6301 Bad PIXEL size in X PIXL 6302 Bad combination of PL, PS, X0 in X PIXL 6303 Bad combination of LS, PS, Y0 in X PIXL" Ul5 Data Buffer Translate Buffer Length of translate buffer Starting channel in B Starting channel in A Number of channels to translate //Default low (Dbl Pree.) Ir Default high (Dbl. Pree.) X TRAN (A,B,NSB,CB,CA,N,TL,TH) This command allows one to apply an arbitrarily defined function to a buffer of data. The function values are assumed to have been previously computed and stored into the translate buffer. The function value stored into a given channel of the translate buffer is simply the value obtained by applying the function to the number of the channel. Specifically, the TRAN co'lllDB.nd operates as follows: Translates buffer A, starting at channel CA and translating N channels. Buffer B contains the translate table, starting in channel CB and running NSB channels long. The following operation is performed on each indicated channel: The value of the channel in buff er A is used as an index into the translate table in buffer B. If this index value is >O and <NSB, the value of the indexed channel in buffer B is used to replace the value of the indexing channel in buffer A. If the value of the indexing channel in buffer A is <O, then it is replaced with the double precision value TL. > If the value is = NSB, then it is replaced with the double precision value TH. ·u16 V. RELOCATION OF RESIDENT FUNCTIONS The starting addresses of the following resident functions have been moved. In some cases, this has caused a corresponding change in the error messages produced by these functions. Appendices Al-A3, and B2 should be updated accordingly. NAME OLD ADDR. NEW ADDR. ADV AND 5257 3730 5256 4770 CHEK 3722 3732 END 5537 5550 FILE 5473 5501 PAUS 3630 3627 RWND VAR 5121 5260 5120 5255 OLD ERROR NEW ERROR 5273 5270 5277 5274 Ul7 VI. CORRECTION OF INHERITED BUGS A. If one used a DO statement to invoke a single line that contained an error, FOCAL diagnosed the error as occuring on the line containing the DO, and not on the line in which the error actually occurred. Example *E A *1. 2 DO 2.1 *1. 3 c >t2 .1 TYPE A/r/J *G ?28.73@ 1.20 B. error should be diagnosed on line 2.1 The Lick FOCAL functions X DO and X GO did not behave the same as the standard FOCAL DO and GO commands. In particular, these commands had the same effect as the new X BRK connnand. That is, X DO and X GO would purge FOCAL's pushdown list and cause the program to break out of any DO groups or FOR loops in which it was nested. Also, any text following X DO on the same line was ignored. In 32K FOCAL version 77C, X DO and X GO now work exactly like FOCAL's DO and GO commands. C. If the X EOF(O) command was immediately followed by an X BAK(l 1 1) command, one would fail to backspace behind the file mark. Now fixed. D. If an IBM tape were backspaced to beginning of tape (BOT) using the X BAK command, or rewound using the X RWND command, the IBM tape drive was erroneously left in the "start" state. If another IBM Ul8 tape command immediately followed, it could possibly start too soon and cause I/O errors. This problem fixed in version 77C. APPENDIX Bl - ERROR DIAGNOSTICS OF FOCAL :1.969 CODE CONTROL-C FROM KEYBOARD OR MANUAL START ILLEGAL STEP OR LINE NUMBER USED GF::oup NUMf:EF;: I'.:; TOO L.(:1F;:GE DOUBLE PERIODS FOUND IN A LINE NUMBER ?():I.{•; ~5 LINE NUMBER IS TOO LARGE "?():l~!i4 GROUP ZERO IS AN ILLEGAL LINE NUMBER NONEXISTANT GROUP REFERENCED BY 'DO' NONEXISTANT LINE REFERENCED BY 'DO' ?()2 ?9 STORAGE WAS FILLED BY PUSH-DOWN LIST NONEXISTANT LINE USED AFTER 'GOTO' OR 'IF' ILLEGAL COMMAND USED LEFT OF "=" IN ERROR IN 'FOR' OR 'SET' E><CE '.:;s 1:< I GHT TE F<M I N(:1T01:;;~:; ENCCJUr··~ TEF~E:.D 'i'()4 ., (~,() ILLEGAL TERMINATOR IN 'FOR' COMMAND ? () .:'.} t. :.":) LINE TOO L.ONG ?O~.::i*tl PROGl:;;1'~M TOO L.OND BAD ARGUMENT TO 'MODIFY' IL.LEGAL USE OF FUNCTION OR NUMBER ?Oci. ~~i4 STORAGE IS FILLED BY VARIABLES T 0 ·.:.~· .:- ~.:.~ ~. :~ OPERATOR MISSING IN EXPRESSION OR DOUBLE 'E' ?0'7 ~ :·5B NO OPERATOR USED BEFORE PARENTHESIS ?0?.:7 (?07.:9) NO ARGUMENT GIVEN AFTER FUNCTION CALL ILLEGAL FUNCTION NAME OR DOUBLE OPERATORS USED PARENTHESIS DO NOT MATCH '!'O?. l :I. BAD ARGUMENT IN 'ERASE' STORAGE WAS FILL.ED BY TEXT LOGARITHM OF ZERO REQUESTED 'IF' ARGUMENT NOT ENCLOSED IN (), [J, OR<> LITERAL NUMBER IS TOD LARGE ~ POWER IS TOO LARGE OR NEGATIVE DIVISION BY ZERO REQUESTED IMAGINARY SQUARE ROOTS REQUIRED EXCESSIVE RIGHT ·rERMINATORS IN 'TYPE' ILLEGAL CHARACTER, UNAVAILABLE COMMAND, OR UNAVAILABLE FUNCTION USE. ATTEMPT TO USE FOCAL 'I...' COMMAND CTAPE COPIER) AFTER TOO MUCH TEXT ENTERED ?()(). 00 0 ::2 ~:5 () o::} :r. <:·:i () :.:) .4 () 03'.'.'.il 0440 0464 O'S:l.7 O.::i0'.'5 (),:'):::)4 :1.047 :1.0.;:,4 1074 11.4? 13.<:\'.'5 :1.2,so :l.40(S :l.753 2 0~5 7 2:? :l. 3 2~.5~51 5042 '.'.'i :I. 7;:=j ~i,S44 7:1.:l.l /40~.5 /~.~_;4 :I. TO :l. • 4() (+ (> IF PUSH DOWN LIST OVERFLOWS, TRY 'TYPE $' TO SEE IF UNWANTED VARIABLES ARE PRESENT. USE 'ERASE', TO REMOVE VARIABLES, BUT RETAIN PROGRAM. APPENDIX B2 - 32K FOCAL RESIDENT FUNCTION ERROR DIAGNOSTICS THE FOLLOWING ERROR DIAGNOSTICS PRINT OUT AS ?NNNN?00.00 CODE ME(IN I NG 03 17 I !... L. E G(:11... F: EC UF<: ~:; I Z E U~:; E 0 F 1'~ I... I CI< F 0 Ct1 L FUN CT I 0 N ATTEMPT TO PASS A NUMBER > IN MAGNITUDE THAN 2~23-1 ()8388607) ATTEMPT TO USE TAPE COPIER OPTION 1 ON PDPS WITH <12K OF CORE X CADO EXECUTED FROM MODIFIED TEXT BUFFER. USE X FILE FIRST FLOATING POINT ARGUMENT TO LICK FOCAL FUNCTION NOT LAST IN LIS' SEMICOLON MISSING IN x STORCB,w,u,D>. SHOULD BE x STOR(B,w,u;D PUT, STORr OR MSAV TRIED TO WRITE TO PROTECTED AREA ON TAPE 10 DECTAPE/FLOPPY BLOCK NUMBER IS <O OR >1481 DECTAPE I/O AT'fEMPTED BEFORE FLOPPY I/O DONE OR ACKNOWLEDGED ILLEGAL UNIT NUMBER SPECIFIED IN PUT, TAK, ASK, OR STOR BI... 0 CI< NU MB E F< ~;; PE C I F I E D I N 1:· U T , T 1'~ !·\ , ,:~ E) I< , 0 F~ ~;; T CJ F\: I ~:; <0 0 i:;: >:l. 4 7 : UNIT I CHANGED DURING USE OF PUT, TAK, ASK, OR STOR WITH B=W=O WORD NUMBER < 0 SPECIFIED IN PUT, TAK, ASK, OR STOR. WORD NUMBER > 190:1.45 SPECIFIED IN PUT, TAK, ASK, OR STOR COMBINATION OF WORD AND BLOCK ts TOO BIG CPUT,TAK~AsK, OR STOR NEGATIVE CHANNEL NUMBER SPECIFIED NEGATIVE BUFFER NUMBER SPECIFIED COMBINATION OF BUFFER & STARTING CHANNEL > AVAILABLE MEMORY NUMBER OF CHANNELS TO PROCESS > TOTAL AVAILABLE CHANNELS SAME AS EITHER 5103 OR 5105 ATTEMPT TO USE X NAME BUFFER 2 ON PDP8 WITH < 12K OF CORE NEGATIVE OVERLAY NUMBER REQUESTED LOCATION < 03200 (OCTAL) SPECIFIED IN X VAR LOCATION > 04600 <OCTAL.> SPECIFIED IN X VAR NEGATIVE PROGRAM i SPECIFIED IN X CALL., X FILE, DR X CADO X CALL NESTING NO LONGER SUPPORTED. USE X CADO INSTEAD. X CALL OR X END USED WITHIN A DO GROUP OR FOR LOOP ATTEMPT TO USE X NAME BUFFER 2 WHEN THIS FEATURE IS DISABLED :c1::iD C)',)EF<L_(l { F Dl.Ji'-1)) ClN T1:)p[ .... oi:;: Cl 1v'EF\'.1 ... {i y FOUND I'.:; NOT :·:)21< FUCt1!... NON-EXISTENT PROGRAM CALLED WITH X CALL OR X CADO TOO MANY DECTAPE/FLOPPY DISC ERRORS AT'fEMPT TO USE FIELD 2 ROUTINES ON PDP8 WITH < 12K OF CORE 0455 2002 3336 4360 4411 4560 4567 4573 4615 4 ,;~ 2 3 4642 4647 '.5:1.03 '.'.'! 1 O'.~i '.'5 :I. 10 '.'52 l (:) c:• •""'t _. ..I 1:.~..t ..... ~ .~·:. \..l :.s~:::(:;,3 ~) .-:~;. 0 {1 54:~.'.4 :::;44;,;~ ? () ~~~ ·.: -·.:? 0 ~:.=j () .• ., .-, 1::· / ., ·~1 ,.,·:. ~.) .,;) .t" ... ) •••.::. ··:.• .~·- J / THE FCJLLCJWING ERROR CODES PRINT OUT A ?2-NNNN?OO.OO 2-1006 2··.. I. 2<'.)0 2-2013 2-2120 2-2511 2-2542 2-5151. 2-7003 2-7011 2-7032 2-7363 2-7370 2-7432 2-7441 2-7444 2··.. 74~50 2-7453 2-7474 SINGLE PRECISION DIVISOR IN DMLJL IS <O OR >4095 1·1 I CPCJPHCJ TOMETEF;: Ot...'EF~L.1~~ Y FUNCTION u:~;ED Fl~:OM ~3C(iNNEF: FOC(1L WORD COUNT > 2048 SPECIFIED IN X EXCR DISASTER IN 32K TO 8K TAPE FORMAT TRANSLATCJR. REPOR'f THIS ILLEGAL UNIT NUMBER SPECIFIED IN MGET OR MSAV NON-EVEN WORD COUNT SPECIFIED IN X EXCR AND MODE NOT 0 GAP NOT FOUND WHEN WRITING IBM TAPE. CHECK FOR DIRTY CAPSTAN NUMBER OF WOPDS <O IN X CID t OF CHARACTERS )62 IN TYCO OR COTY, OR i OF WORDS >31 IN CID i OF CHARACTERS <O IN TYCO OR COTY NEGATIVE BUFFER NUMBER SPECIFIED BUFFER SPECIFIED NOT AVAILABLE ON THIS SIZE MACHINE ITAK OR IPUT TRIED TO READ OR WRITE 24-BIT t OFF ID BUFFER END ID BUFFER WORD t < 0 IN IPUT, ITAK, TYCO, COTY, OR CID ID BUFFER WORD t > 30 IN IPUT, ITAK• TYCO, COTY, OR CID :C:UFFEF~ < .... :!. 3F'E:CIFIED IN IPUT, IT1:;1<, TYCOv CUTY:• Of< CID BUFFER > 4 SPECIFIED IN IPUT, ITAK, TYCOv COTY, OR CID LOCATION ( 0 OR > 17 SPECIFIED IN X PV OR GV APPENDIX B3 - 32K FOCAL OVERLAY FUNCTION ERROR DIAGNOSTICS THE FOLLOWING ERROR DIAGNOSTICS PRINT OUT EITHER AS ?NNNN?00.00 OR AS ?2-NNNN?OO.OO CODE MEANING 6045 6046 6051 6053 6055 6056 6060 AREA SCANNER NOT ATTACHED OR NOT TURNED ON NUMBER OF CHANNELS < 0 OR > 4095 IN FIND COEFFICIENT POSITION > 10 IN X SAV OR X COEF SINGLE PRECISION DIVISOR IN x CORL rs < 0 OR > 4095 MINIMUM PEAK WIDTH < 0 OR > 4095 IN FIND COEFFICIENT IN X SAV OR X COEF NOT PRECEDED BY VALUE IS < 0 OR > 4095 IN X PUTW X RDQ OR X WRQ WITH 'NO WAIT' OPTION FOUND IBM TAPE BUSY STARTING WORD <W> < 0 IN X GETW, PUTW, COPY? RBLK OR WBLK NEGATIVE DATA FOUND BY X LOOK SMOOTHING FUNCTION OF LENGTH 0 SPECIFIED IN X CORL PEAK CHANNEL > 4095 CHANNELS AWAY FROM STARTING CHANNEL IN FIN INVALID UNIT IN RIT, LFTv UP1 DN I OF CHANNELS TO PROCESS < SMOOTHING FUNCTION LENGTH IN X CORL X POSF TRIED TO POSITION TO PROTECTED AREA OF FLOPPY ON UNIT 0 X BIN OUT OF ROOM FOR OUTPUT DATA X POSF TRIED TD POSITION TO FLOPPY BLOCK <1 INTERNAL MICROPHOTOMETER SYSTEM ERROR. REPORT THIS. GAP NOT FOUND IN X RJPL. CHECK FOR DIRTY IBM TAPE CAPSTAN. ZERO CHANNELS TO PROCESS SPECIFIED IN X CORL ORDER OF POLYNOMIAL > 9 SPECIFIED IN X POLN CLOCK/CALENDAR SELECT CODE <O SPECIFIED IN FTIME ORDER OF POLYNOMIAL > 10 SPECIFIED IN X POLY CLOCK/CALENDAR SELECT CODE >5 SPECIFIED IN FTIME INVALID AREA SCANNER ADDRESS IN X ASCR DR ASCW AIR MASS*256 CZ> IS < 0 OR > 4095 IN X TINC CHANNEL OFFSET (W) rs < 0 IN x SCRN FIELD IS < 0 OR > 4095 IN FZAP, FJMP, OR FJMS ANY OF THE ARGUMENTS IS < 0 DR > 4095 IN X SIZE BUFFER 0 NOT ALLOWED IN X SET PX, py, PPL, OR LPS IS =O IN X SIZE I OF BITS TO SHIFT > 11 IN X COMB X BIN RAN OUT OF UNBINNED INPUT DATA A ZERO BIN SIZE IN BIN PX*PPL*MU+XO IS > 1024 IN X SIZE X SCRN RAN OUT OF UNSCRUNCHED DATA STARTING WORD<S> <O OR >4095 IN X PAK OR X UNPK STARTING WORD <W> < 0 IN X RJPL NO WRITE RING IN IBM TAPE WHEN USING X WRQ NEGATIVE BINSIZE FOUND BY X SCRN BAD PIXEL SIZE IN X PIXL OR X SIZE BAD COMBINATION OF Pl• PS, XO IN X PIXL BAD COMBINATION OF LS• PS, YO IN X PIXL X SET NOT CALLED BEFORE X CALB VERIFY FAILED IN FZAP INVALID MAILBOX MEMORY LOCATION SPECIFIED INVALID FLOATING POINT BUFFER LOCATION SEMICOLON MISSING IN x PUTVCS,B,v>. SHOULD BE x PLJTVcs,B;V> I OF WORDS MODULOCI OF CHANNELS TO COMBINE> NOT 0 IN X COMB INVALID OCTAL NUMBER IN FZAPv FDEC? FJMP~ FJMS1 DR FMPX READ WILL SPILL OFF END OF MEMORY IN X RJPL INVALID STARTING WORD <WA> SPECIFIED IN X ASTV SCREEN FULL IN X IPHO OR X PIXL NOT CALLED FIRST 6062 6102 6105 6106 6113 6120 6124 6134 6137 6140 6153 6155 6160 6162 6165 6166 6170 6174 6204 6205 6206 6210 6216 6222 6231 6234 6244 6250 6251 6255 6270 6273 6274 6301 6302 6303 6311 6313 6317 6331 6332 6333 6335 6340 6343 6344 6362 6363 6364 6365 6366 6373 6412 6422 6434 6442 6445 6462 6472 6475 6520 6521 6537 6542 6545 6546 6547 6550 6556 6571 . ' _., 1 oou. 6603 6604 6607 6615 6626 . 6627 6644 6661 6665 6670 6703 6706 6711 6713 6714 6715 6725 6735 6742 6757 OF WORDS TO READ CNW> <= 0 IN X RJPL ATTEMPT TO TAKE MICROPHOTOMETER DATA DIRECTLY TO DECTAPE INVALID X COORDINATE IN X TVJY INVALID Y COORDINATE IN X TVJY INVALID MULTIPLIER FACTOR <MU> IN X TVJY PY*LPS*MU+YO IS > 1024 IN X SIZE DECTAPE I/O PENDING OR NOT ACKNOWLEDGED IN X RJPL SCREEN FULL IN X PICT OR X SIZE NOT CALLED FIRST INVALID STARTING BLOCK CSB> IN X RBLK OR WBLK PATTERN BUFFER LENGTH CNSB> TOO BIG FOR PIXEL SIZE IN X PICT ILLEGAL UNIT NUMBER SPECIFIED IN X RBLK OR WBLK INVALID NUMBER OF BLOCKS CNB> IN X RBLK OR WBLK DECIMAL NUMBER < 0 OR > 4095 IN FOCT COMBINATION OF W AND NB SPILLS ACROSS FIELD IN X RBLK OR WBLK X BIN OR INT CALLED WITHOUT CALLING X TABE FIRST X HDTS OVERLAY REUSED~ OR QUICK IBM OVERLAY NOT LOADED EXTERNAL GATE IN ONE STATE > 55 SECONDS IN X ASCT INTERNAL MICROPHOTOMETER SYSTEM ERROR INVALID STARTING ROW <SR) IN X ASTV OR TVOF INVALID NUMBER OF ROWS CNR> IN X ASTV OR TVOF INVALID NUMBER OF COLUMNS <NC) IN X ASTV OR TVOF INVALID MULTIPLIER FACTOR IN X ASTV OR TVOF I OF BITS TO SHIFT >= IN MAGNITUDE TO 24 IN X SHFT FLOPPY I/O ERROR WHILE TAKING MICROPHOTOMETER DATA AREA SCANNER MODE SET INCORRECTLY IN X ASCT STARTING DATA WORD CWA> < 0 IN X HIST DWELL TIME < 0 OR > 4095 IN X DTIM DEADTIME FACTOR CD> IS < 0 OR > 4095 IN X DTIM BUFFER 0 USED IN X SRCH ILLEGAL MODE PARAMETER IN X ASCT LOW OR HIGH BOUNDARY <LB OR HB) IS < 0 OR ? 4095 IN X HIST HIGH BOUNDARY CHB) < LOW BOUNDARY CLB) IN X HIST ODD NUMBER OF WORDS PER ROW CNC> IN X TVOF. MUST BE EVEN NUMBER OF DATA WORDS CNW) < 0 IN X HIST MICROPHOTOMETER DATA RATE EXCEEDS FLOPPY DATA RATE PEAK WITH A WIDTH > 4095 CHANNELS FOUND BY FSEEK SPILLED BACKWARDS OFF END OF MEMORY IN FLIP. REPORT THIS. BIT NUMBER OF LENGTH <O OR >24 IN X BIT INVALID UNIT IN X RDF OR WRF END OF BUFFER SPACE IN X SRCH X INT RAN OUT OF UNINTERPOLATED INPUT DATA UNIT SPECIFIED IN X RDF OR WRF NOT POSITIONED WITH X POSF i OF BLOCKS <O OR >31 SPECIFIED IN X RDF OR WRF FSEEK RAN OUT OF OUTPUT BUFFER SPACE X RDF OR WRF WITH 'NO WAif' OPTION FOUND FLOPPY BUSY t DECTAPE ERROR MESSAGE DECODING MESSAGE MEANING T~PE?U---60-- MARK TRACK ERROR TAPE?U---50-- END OF TAPE ERROR TAPE?LJ---44-- SELECT ERROR TAPE?U---42-- PARITY ERROR TAPE?U---41-- TIMING ERROR NOTES: 1. "U" INDICATES THE UNIT ON WHICH THE ERROR OCCURRED; DECTAPE UNIT 8 IS INDICATED AS UNIT O. •-• INDICATES ANY DIGIT BETWEEN 0 AND 7; THESE DIGITS ARE NOT SIGNIFICANT IN DECODING THE MESSAGE. 2. SELECT ERRORS ARE THE MOST COMMON AND INDICATE A USER ERROR. SELECT ERRORS ARE CAUSED IF THE DESIRED UNIT IS NOT SELECTED~ OR IF ONE TRIES TO WRITE TO A UNIT WHICH IS SWITCHED TO READ ONLY OR WRITE LOCK. 3. AN END OF TAPE ERROR IS ALSO PROBABLY A USER ERROR; IT MEANS YOU TRIED TO ACCESS INFORMATION OFF THE END OF THE TAPE. 4. TIMING ERRORS INDICATE A HARDWARE PROBLEM AND SHOULD BE REPORTED IMMEDIATELY. 5. MARK TRACK AND PARITY ERRORS MAY INDICATE A MARGINAL DISK; IF THEY OCCUR REPEATEDLY, THE DISK OR TAPE IS PROBABLY GOING BAD. MULTIPLEXER ERROR MESSAGE DECODING PRIVATE MULTIPLEXER UNIT NOT RESPONDING PRIVATE MULTIPLEXER CHECK BITS TEST FAILED PRIVATE MULTIPLEXER FUNCTION ECHO FAILED PUBLIC MULTIPLEXER UNIT NOT RESPONDING PUBLIC MULTIPLEXER CHECK BITS TEST FAILED i'il.JX ff f' f 2 70 :!. PUBLIC MULTIPLEXER FUNCTION ECHO FAILED PUBLIC MULTIPLEXER BUSY BUS BUSY > 95 MILLISEC. SAME AS MUXff ff5305 110 TE~:;;: 1. "ffff" IS THE OCTAL REPRESENTATION OF THE FUNCTION WORD BEING TRANSMITTED WHEN fHE ERROR OCCURRED. THIS FUNCTION WORD INDICATES WHICH MULTIPLEXER UNIT WAS BEING ADDRESSED, AND WHAT OPERATION WAS BEING PERFORMED. TO DECODE THE FUNCTION WORD, SEE PAGE 4 OF LICK OBSERVATORY TECHNICAL REPORT t:!.6, "SERIAL DATA MULTIPLEXER - EL-331", BY T.P. RICKETTS AND L.B. ROBINSON, FEBRUARY :!.976, 2. NOTE THAT MULTIPLEXER UNIT 3 CAN ONLY BE ADDRESSED BY THE READ OUT ROOM COMPUTER, AND CANNOT BE ADDRESSED BY THE ECHELLE COMPUTER. SIMILARLY, MULTIPLEXER UNIT 4 CAN ONLY BE ADDRESSED BY THE ECHELLE COMPUTER AND CANNOT BE ADDRESSED BY THE READ OUT ROOM COMPUTER. MULTIPLEXER UNITS :!. AND 2 CAN BE ADDRESSED BY EITHER COMPUTER. ~. fURNING EITHER COMPUTER ON OR OFF CAN CAUSE THE OTHER COMPUTER TD GET A FEW MULTIPLEXER ERRORS. WHEN EI'fHER COMPUTER IS BEING USED FOR OBSERVING, i:~ N Y U N i'l E CE ~:; ~:; 1') P Y 1=· 0 kl E F'. I N C! U F' Cl r:~ D CJ l.<J N 0 F E I T H E F< COMPUTER SHOULD BE AVOIDED. 4. PLEASE REPORT ANY OF THE ABOVE LISTED MULTIPLEXER· ERRORS TO BOB KIBRICK, TERRY RICKETTS, OR LLOYD ROBINSON. PLEASE RECORD WHICH COMPUTER OR COMPUTERS WERE IN OPERATION AT THE TIME THE ERROR OCCURRED. ALSO RECORD WHICH DATA TAKING SYSTEM OR SYSTEMS WERE IN USE.
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies