1 INTRODUCTION - AN INVITATION TO VIEW 2 LOADING PROCEDURE 2.1 Usual 2.2 Non-standard 3 USING VIEW 3.1 Typed commands 3.2 Use of the data switches 3.3 Messages from the program 4 INTERPRETATION OF SD4020 ORDERS 5 HELP 5.1 Continual typing 5.2 Random movements on the screen 5.3 IOPS messages 5.4 Interrupting a search 5.5 Read errors 5.6 Y OR N Appendix 1 Reference list - commands and switch settings Appendix 2 List of messages produced by VIEW
This paper describes a PDP15 program VIEW to read an SD4020 tape and display the contents of selected frames on the VI15 screen.
VIEW is controlled by typing commands at a keyboard. A full description of these commands can be found in Section 3.1 and a list for reference is in Appendix 1.
A user selects a frame with the FRAME command (3.1.2) and the program will find the frame and display it. A frame consists of the SD4020 orders between 2 ADVANCE FRAME orders; the program finds the selected one by reading records off the tape and counting ADVANCE FRAMES.
Before specifying a frame, the user may request the program to skip filemarks; he can do this with the EOF command (3.1.1).
There are also keyboard commands to REWIND the tape and STOP the program. INFO gives information on new facilities in VIEW. All 5 commands can be abbreviated.
The FRAME command can be further controlled by using the data switches on the PDP15 console. The use of these is described in Section 3.2.
The program translates the SD4020 orders themselves and so should be able to read any tape that the Atlas Laboratory SD4020 can read (allowing for the behaviour of tape decks) whichever machine and whichever plotting package wrote the tape, VIEW expects the tape to be 7 track and written at a density of 556 bits/inch and odd parity (like the SD4020).
Some SD4020 features have no meaning and merely cause VIEW to produce messages. Also certain liberties have been taken; firstly repeated drawing of an SD4020 vector translates to an intensity change on the VT15; secondly certain hardware characters which would overlap the edge of the VT15 screen are adjusted in position before being plotted on the screen, This is described in more detail in chapter 4.
If you have been using the previous documentation of July 1971, you should note the following changes.
(a) There is an EOF(or E) command for moving a tape past a filemark (section 3.1.1 and Appendix 1).
(b) There is a STOP (or S) command for stopping the program (Section3.1.5 and Appendix 1).
(c) The tape is not automatically rewound on entering the program,
(d) The DATA SWITCHES are operated differently. Switches 0 to 3 now have distinct meanings (3.2 and Appendix 1). It is, for instance, now possible to choose the speed at which a FRAME is found (3.1.1 and 3.2.2) and is also possible to interrupt a search (3,2,4),
(e) VIEW's messages have been slightly rationalized (Section 3.3).
(f) It is now possible to cope with a read error (3.1.2).
(g) The program is loaded differently (2.1).
(h) There is a command INFO which types out new facilities (3.1.4).
(j) It is possible to count records, a simple facility that does not seem to be allowed by MTDUMP (see 3.2.3).
If you are trying to use the program for the first time, it is not necessary to know the whole paper; but you should be aware of the following:
(a) How to load the program (Section 2.1). If you are new to the PDP15 as well, you will need a demonstration on mounting tapes (DEC tapes and 1/2" tapes).
(b) Some commands to type (Section 3.1) - particularly
EOF FRAME REWIND
Pressing 'Control' and 'C' will terminate VIEW.
(c) Where the data switches are (Section 3.2) - it is suggested that they be left unset (stripes invisible) until the facilities they provide are wanted.
(d) What to do with VIEW's messages. Appendix 2 gives a list in alphabetic order for reference.
(e) If VIEW does something confusing, section 5 may HELP.
(f) However, if you intend to use VIEW fairly heavily, it would be advisable to read the whole paper at some stage.
Information in this section is liable to change depending on the software system being used. Check that the notice boards in the PDP15 area do not display modifications.
The procedure described assumes that the DOS-15 software system is being used.
(1) Check that the monitor is loaded and waiting for a keyboard command. If unsure, you can type 'ctrlC' which loads the monitor if the bootstrap program is in core.
(2) Load the DECtape containing the program (the "core dump tape") on a DECtape unit; the unit number should be set to #2. and the switches to WRITELOCK and REMOTE. The "core dump tape" is currently #308.
(3) Type the following (your typing emphasised - 'return' denotes the RETURN key)
$A DTA2 - 14 return $ GETS VIEW DMP return
(4) Load the SD4020 tape on a deck with unit number set to #1 and put online. The write-permit ring should be left off. Check that of the 9 lights on the top right WRITELOCK, LOAD-POINT, 7 and READY are alight and, of the row in the middle, LOAD, ONLINE, RESET and POWER are alight.
(5) Wait for VIEW to print an identifying message before typing a command (Section 3).
Note that step 4 can occur anywhere. However, since the program has to be sought on DECtape, you have spare time between steps 3 and 5 to load the SD4020 tape.
If this loading procedure is followed, commands are expected from, and program messages are sent to, the control teletype, the KSR 35.
The identifying message will be
TAPE VIEWER followed by the date.
The date refers to the version of VIEW being used, An outline of any change incorporated in the current version can be obtained by using the INFO command (Section 3.1.3).
It is possible during loading and execution to use peripherals other than those mentioned so far. The able below gives a list of DAT slots used by the program and the loader; this information can be used to vary the DAT slot assignments. To take advantage of this, it is necessary to use VIEW in relocatable binary form.
At present the binary to be used under DOS is on DECtape #308 and that under the Advanced Monitor on #305. Proceed as follows: -
$ chosen assignments $ GLOAD return ← VIEW altmode.
Device Slot Use Possible Remarks Number Handlers -5 File .LIBR5 BIN DTC Usual on this device is searched DKC Need to transfer file during loading. beforehand using PIP -4 Binary file VIEW as above containing program -1 System device (for DKC 'A' handlers are handlers from possible for -5 .LIBR BIN) DTC -4 and -1 but unnecessary 1 Magtape software NONE IF MTA or MTF, includes .IODEV 1. MTA must be the same No other references MTF as for slot 7 3 "Command input TT Usual device" LT0 or LU LT1 PR PF 4 "Message output TT Usual device" PP LT1 7 Input from SD4020 MTF MTF is sufficient tape MTA and uses less core 10 VT15 VTA
Sample Assignments
Existing Assignments
It can be assumed that the core dump described in Section 2.1 has the following assignments.
A MTF 1 7,1 A TT 3,4 A V 10
NB Do not use LU with DOS, LTA is sufficient.
VIEW is controlled by typed commands on the "command input device" and by changing the data switches on the PDP-15 console. Error messages, questions and commentary are sent to the "message output device".
If the "usual loading procedure" (2.1) is followed, the KSR35 is both the "command input device" and "message output device".
When VIEW types '←' on the "message output device", a command can be typed. This can be either EOF, FRAME, INFO, REWIND or STOP and may be followed by a number. Each command can be shortened to its initial letter.
The 4 commands are described in full below; in these commands, the symbols d, n and + have the following meaning
d means a non-alphanumeric character (which could be a space) used as a delimiter.
n means an integer
↓ means carriage return
(3.1.1) EOF - skip filemarks
(a) EOFdn↓
(b) Edn↓
(c) EOF ↓
(d) E↓
Formats (a) and (b). If n>0, the tape is spaced forward n filemarks. At the end of the movement, the tape is immediately after a filemark; there should be exactly n filemarks between the final and starting positions of the tape.
Example EOF, 1return.
If n=<0, the tape is moved backwards p filemarks (where p = -n). The tape is positioned immediately after a filemark and there should be exactly p filemarks between final and starting positions of the tape.
Example EOF, -1return.
Formats (c) and (d). Same as E,0. The tape is moved to the beginning of the current file if it is not there already.
Examples
SD4020 software on the ICL 19O6A produces a tape starting with a header label followed by a filemark. So to find actual graphical information type:-
E, 1return
in order to skip past the filemark.
A tape generated by Atlas does not normally contain a starting filemark.
Output
If successful, the program types:-
AFTER FILEMARK n
where n is the total number of filemarks preceding the current tape position.
If the command given would in fact cause the tape to hit load-point, the following question appears:-
TAPE REWIND? Y OR N -
The response 'Yreturn' causes a rewind order to be given to the tape drive. After the response 'Nreturn', the tape is not moved and VIEW waits for another typed command.
If the tape is moved up to the end-of-tape marker, the following is printed:-
EOT AFTER n FILEMARKS
where n is the total number of filemarks skipped so far.
The VT15 screen
The offset region will contain FRAME 0 at the top. The main square portion will be blank.
(3.1.2) FRAME select frame
(a) FRAME dn ↓ (b) Fdn ↓ (c) FRAME ↓ (d) F ↓
Formats (a) and (b). This command causes VIEW to search for the n th frame in the current file and display it. The file can be previously selected if necessary by the EOF command.
Formats (c) and (d). As (a) and (b), but the frame referred to is the next frame.
The program can only re-select the current frame or search for a succeeding one. Attempting to make the program search backwards causes the message:-
BACK?
The program then waits for another command. This same message occurs if there is a syntax error after F or FRAME has been recognised. To display a preceding frame type 'E return' then select the frame.
VIEW looks for the selected frame by counting ADVANCE FRAME orders. While it is searching, the user can choose to see intervening frames displayed in succession or to specify a fast search. The choice is made by setting data switch 1 (section 3-2), which can be changed at any time.
If data switch 1 is off (slow search), all orders in an intervening frame are translated into their VT15 equivalents and added to the display file, An ADVANCE FRAME order causes this display file to be displayed and a new one to be built up. This gives a crude movie effect, which looks best if the individual frames are simple. The animation is not strictly timed.
If a fast search is requested (data switch 1 on), VIEW simply looks for ADVANCE FRAMES. This cuts down computing time considerably.
The selected frame itself is not affected by this switch. In either state, as soon as the immediately previous ADVAICE FRAME is recognized, the display file representing the selected frame is displayed; thus each display item is displayed as soon as it is translated.
If the search is successful, the selected frame is displayed and the following messages are typed:-
m DISPLAY ORDERS FRAME n
where m and n are both integers; m is the number of VT15 orders generated by the frame. There is a current maximum of 12000. The message
FRAME OVERFLOW
occurs if this maximum is reached.
Other messages may be printed here (see section 3.3.3 and 4/37, A46, 50).
The frame number appears at the top of the offset region, thus:
FRAME n
This is not part of the frame contents and the number itself may differ from that produced, if any, by SD4029 software.
Frame numbering begins from the last filemark. If the tape hits another filemark before the selected frame is found the following information is output:-
END OF FILE
followed by frame number (number of previous ADVANCE FRAME orders + 1), the number of records in the file (excluding the EOF itself) and the question
NEW FILE? Y OR N-
Answering Y(es) (type 'Yreturn') moves the tape past the filemark; the first frame of the new file is numbered 1. Answerine; N(o) (type 'Nreturn') causes the tape to remain just before the EOF. Only the final frame can then be reselected.
If the end-of-tape marker is found, a message is output and the user can type another command. The final frame can be reselected.
If a read error is found, the tape is positioned immediately after the bad record and the number of the frame in which the record occurs is printed out. Recover in the following way:-
(a) Any frame after the bad record can be selected.
(b) If the bad record occurred in frame n, VIEW assumes that frame (n+1) begins immediately after the bad record and starts interpreting the SD4020 orders in plotting mode.
Note that both assumptions in (b) could be wrong and this must be allowed for in observing the screen.
It is possible to interrupt the search by changing the setting of data switch 3 (see section 3.2).
(3.1.3) INFO
(a) INFO↓ (b) I↓
A stored message is typed on the "message output device". The message should be about recently added or changed facilities in VIEW.
Whenever the message changes, the prompt will be a change of date in VIEW'S entry message, viz:-
TAPE VIEWER date/month/year.
(3.1.4) REWIND
(a) REWIND ↓ (b) R ↓
Both formats have the same effect. The SD4020 tape is rewound to its load-point. Note that the tape is not automatically rewound when VIEW is first entered (in contrast with an earlier version of the program).
(3.1.5) STOP
(a) STOP ↓ (b) S ↓
Control returns immediately to the monitor.
The same effect can be obtained by typing 'Ctrl C', the usual PDP-15 convention. The STOP command is included in order to make it possible to link VIEW to another program. The STOP command would in that situation return control to the other program.
(3.2) Use of the data switches
The data switches are in a row of 18 on the PDP-15 console. Each switch (or bit) has a numbered label, from 0 to 17 on the upright panel and can be OFF (zero or stripe invisible) or ON (one or stripe visible). The program reads switches 0, 1, 2 and 3.
(3.2.1) Switch 0 - full printout/printing suppressed
With switch 0 on, every SDO2O order that's encountered is printed on the 'message output device", followed by an interpretation of it.
For each SD4020 order encountered, a breakpoint is tested. If it is active, the following message is printed:-
BREAKPOINT
VIEW continues when the user types a number n followed by carriage return. The breakpoint next becomes active after n further orders have been encountered. Anything else in place of n causes n=1.
Note that after BREAKPOINT, '↓' is not an invitation to type a command.
If the selected frame is being translated and switch 0 is on, each display item is screened as soon as it is translated.
This facility was originally included to aid in developing VIEW and is verbose. Full details of the output are not given in this paper. However if it is to be used, note the following points.
(a) Whenever coordinates are typed out they are in SD4020 form. The point (0,0) represents the top left corner of the plotting area.
(b) Whenever SD4020 vector is decoded it is not output immediately. This is because VIEW attempts to discover repeated lines and varies the screen brightness if it encounters an overstruck line.
Switch 0 can be changed at any time and the change is immediately effective.
(3.2.2) Switch 1 - fast search/slow search
The effect of switch 1 is described in the section on the FRAME command. Putting the switch on causes a fast search.
(3.2.3) Switch 2 - Suppress error messages
The following error message could occur while the selected frame is being sought:-
LONG SC4020 RECORD.
It occurs if a record is read that is longer than 170 SD4020 orders. Processing continues but only the first 170 orders are translated.
Setting switch 2 on suppresses this message completely and no others occur during the search. This means that the program can be used as follows to count the number of records in a file even if the tape is not destined for the SD4020.
(a) move tape to beginning of file using the E command.
(b) type 'F 100000' with switch 0 off and switches 1 and 2 on.
(c) when end of file is reached, program types the number of records read.
(3.2.1) Switch 3 - interrupt search for frame
It is very easy to mistype a FRAME command and cause an unstoppable search (by typing F,500 instead of F,50). It may also be desirable to select a frame by content instead of by number. In either of these situations switch 3 may be useful.
While VIEW is searching for a frame selected by FRAME command, change the setting of switch 3. This causes VIEW to stop at and display the next frame. The effect is as if the next frame had been originally selected.
Note that it is the change of state of switch 3 that signals the program. No permanent meaning is attached to the states ON or OFF; unlike switches 0, 1 and 2.
Messages are produced on the "message output device" and can be in one of the following categories. An alphabetic list is given in Appendix 2.
(3.3.1) Normal response - any of the 5 commands E, F, I, R and S has a normal response which is described in the section for the relevant command (3.1.1 to 3.1.5).
(3.3.2) Syntax errors and initial checks on a typed command
(a) If the wrong initial is typed or if the command is spelt wrong:-
NOT RECOGNIZED
(b) Checks on the EOF and FRAME commands (see sections 3,1.1 and 3.1.2)
(3.3.3) Messages about the tape
(a) READ ERROR or END OF FILE while obeying a FRAME command (END OF FILE requires Y or N from the user) (section 3.1.2).
(b) End-of-tape while obeying an EOF or FRAME command.
(c) Unusual contents found while decoding selected frame; printed when frame is complete.
SLIDE PROJECTED 4020 STOPS ADVANCE REPEAT
(see sections 4/37, 46 and 50)
(d) LONG SC4020 RECORD (see 3.2.3- section on switch 2).
(e) FRAME OVERFLOW (too much information on frame).
(3.3.4) Comments on every SD4020 order
For instance:
4020Wdddddd,dddddd [where d is an octal digit] <interpretation> BREAKPOINT ↓
This is controlled by switch 0 - see 3.2.1.
(3.3.5) Program errors should now occur only rarely. When the program discovers some internal contradiction that is probably no fault of the user, it may type:-
PROGRAM ERROR
followed by a list of 2 COMMON blocks. It may be possible to continue; but if not type R or REWIND and start again. If this fails reload the program and restart. In any ever, please:-
(a) Inform JRG or someone who knows the program.
(b) Give him the output.
(c) Attempt to describe the display on the VT15.
(d) Save the magnetic tape.
The system error message IOPS nn may also occur; see section 5.3.
SD4020 orders are only decoded when VIEW is obeying a FRAME command. Its response to each order is given below. The orders are decoded in this way when in plotting mode. A 20 or 22 order causes the SD4020 to switch to typing mode and VIEW simulates this effect. The response of VIEW to each order is based on the list in
GROATS (revised August 1971) appendix 4.
Any code not in that Appendix is ignored by VIEW.
The following points should be noted about the SD4030 and the VT15:
(a) Both devices have a 1023 ×1023 point raster. The SD402O origin is in the top left corner; the VT15 origin is in the bottom left corner.
(b) The hardware characters available are different.
The SD4020 set can be found in
GROATS Appendix 1 .
The VT15 set can be found in
PDP-15 Systems - Graphics-15 Reference Manual Appendix A
(note that code 254 is a comma and 2l7 an apostrophe)
00 plot character C at (x,y)
The VT15 hardware character corresponding to C is plotted at (X, 1023-4). If there is no corresponding character, '<' is plotted; '<' is not present in the SD4020 character set. If x>1009 then x←1009 and if Y > 12 then Y←12; this prevents characters falling outside the edge of the screen. The VT15 beam position after the order is displaced as follows:-
LASTX ← LASTX+4 LASTY ← LASTY
Note that if consecutive orders plot characters 8 raster units apart (which is possible using the SD4020), the VT15 characters overlap. For example 'FRAME n' output by the GROATS package.
The special codes 12, 52 and 56 give rise to a plotted character as in GROATS Appendix 1.
02 expose heavy
04 expose light
An internal variable is set which causes all subsequent VT15 hardware characters to be plotted with brightness 1 if light and 2 if heavy. A character is then plotted in a similar way to 00.
07 ignore rest of record
No further SD4020 orders in the current record are decoded.
The next record is read
12 stop typing>
If already in plotting mode, no effect. For typing mode, see 20.
20 type C at (XY) and enter typing mode
The VT15 hardware character corresponding to C is :plotted at (X, 1023-Y). '<' is plotted if no corresponding character exists.
All subsequent SD4020 orders are assumed to contain 6-bit characters until a 12, 52 or 56 occurs. 52 merely causes a carriage return (LASTY ← LASTY+16; LASTX ← 0) and typing continues. 12 and 56 cause plotting mode to be re-entered; 56 further causes ADVANCE FILM and EXPOSE HEAVY.
If the text reaches the VT15 edge a 52 is obeyed.
Note that, as for 00, the difference in character size on the 2 devices may cause overlap between 2 text-strings.
There is no exact maximum to the number of hardware characters on a frame but 670 is an upper bound.
22 type 5 specified characters at current point
VIEW enters typing mode and the 5 characters are plotted at the current beam position.
30 - X axis
32 - Y axis
X, Y and DX, DY are calculated and a line drawn as for code 6 - (vector).
37- stop SD4020
If this code is found in the selected frame, a message is generated:
STOP SC4020.
otherwise the order has no effect.
41- select microfilm camera
42- select hardcopy camera
43- select both cameras
An internal variable is changed. If switch 0 is set, the currently set camera is printed when a frame is complete.
44 - expand image
45- reduce image
No effect.
46 - advance film and advance repeat
The program uses this order to count frames. The n th frame of a file is terminated by the n th ADVANCE FILM Or ADVANCE REPEAT order.
The ADVANCE REPEAT has no additional effect except at the end of a selected frame when the following is typed:-
ADVANCE REPEAT D TIMES LENGTH OF SEQUENCE m FRAMES n RECORDS
m and n are the number of frames or records respectively since the last ADVANCE REPEAT order.
50 - PROJECT FORM
As for 37, except that
SLIDE PROJECTED
is typed.
56 - RESET
Has the same effect as
STOPTYPING EXPOSE HEAVY ADVANCE FILM
6 - draw vector from (X,Y) to (X+DX,Y+DY)
A line is drawn from (X,1023-Y) to (X+DX, 1023-Y-DY) unless an end-point is off the screen in which case the line is not drawn at all.
If several consecutive orders specify the same line, the output is saved until a different line is specified. The line is then plotted at an intensity dependent on the number of overstrikes. The maximum V15 intensity is 7. This allows a considerable saving in display file storage if several consecutive lines are overstruck by the same amount, For instance the GROATS procedure DARK (a), where n>1, followed by several calls to VECTOR would create such a sequence.
Note that 0=<|DX|,|DY|=<63 since only 6 bits are allocated for magnitude in the SD4020 order format. Therefore no lines on the VT15 screen have X or Y displacement greater than 63 unless generated by one of the axis orders (code 30 or 32).
A few slightly perturbing situations may arise which the user may not know how to deal with. Most of the cases outlined here are in fact discussed earlier in the paper.
The program may produce a large amount of typing on the "message output device". Try and identify it as follows.
(a) If it contains
PROGRAM ERROR
followed by a column of figures, allow it to finish. (see section 3.3.5).
(b) I it finishes with
BREAKPOINT ←
and includes lines beginning
4020W
then data switch 0 is on (see section 3.2.1). To continue without the typing, turn switch off and hit the return key.
(c) If it contains lines beginning with 4020W and typing continues, then again switch 0 is on. Switch it off if not wanted.
You may see random text displayed and whole portions of the picture moving about the screen. This is an untraced bug which sometimes shows itself when a display file occupies more than 4000 orders. There is nothing you can do except sit and watch; it is possible to continue typing commands.
The DEC system software message IOPS nn may appear on the control teletype.
IOPS 3 may be due to an unused peripheral sending an interrupt; make sure for instance, that the display keyboard hasn't been touched accidentally or that the 1906A link is not sending spurious interrupts.
IOPS 4 is recoverable; make sure that all devices are ready and online; then type 'ctrl R'.
For any other IOPS, try and make sense of it by looking in Appendix C of the small booklet:-
Advanced Monitor Software Systems - PDP15/20 User's Guide.
Otherwise type 'ctrl S' . If the program recovers, the number of the current file and frame will be 1.
Make sure that the difficulty is known about by following the instructions (a) - (d) in 3.3.5.
If it is necessary to interrupt VIEW, while searching for a frame, then change the setting of data switch 3. This is described in section 3.2.4.
If it is necessary to interrupt at any other time type 'ctrl S'. The program restarts and numbering begins at zero; the tape remains where it is.
This may occur while VIEW is searching for a frame. See section 3.1.2 on FRAME for details.
The program may produce a message ending with a question followed by
Y ON
The response to this should be:
Y for YES or N for NO
followed by 'return'.
This may occur:-
(a) when an EOF command is being obeyed
The following symbols are used with a special meaning:
d a non alphanumeric separator eg space or , n an integer ↓ carriage return
Command Meaning Examples EdnSD4020 If n>0, move the tape EOFdn↓ forwards in filemark E,1 (just past next If n≤0, move the tape backwards filemark (1-n) filemarks, then forward over 1 filemark E↓ Same as E,0↓ ; tape immediately E EOF↓ after previous filemark Fdn↓ Display the n th frame F^200 FRAMEdn↓ in the current file. F↓ Display next frame F FRAME↓ I↓ Type latest information about I INFO↓ program R↓ Rewind tape R REWIND↓ S↓ Stop the program and return S STOP↓ control to the monitor
Switch number On Off 0 Printing of each Suppress printing SD4020 order 1 Fast search for Slow search = each a frame intervening frame displayed 2 No error messages while Error messages printed searching for a frame 3 Change in state means interrupt search for a frame; neither on or off has any particular meaning
This appendix consists of a list of messages produced by the program. We ignore here the printout produced as a result of leaving data switch 0 set (see section 3.2.1).
The possible contexts are described in section 3.3.