Category:Saturn: Difference between revisions
| Line 67: | Line 67: | ||
Exit \[No\] ? Y | Exit \[No\] ? Y | ||
[[File:BALLISTIC.jpg|thumb]] | [[File:BALLISTIC.jpg|thumb|BALLISTIC.CAL in Calc]] | ||
/ S | / S | ||
S-enter Storage menu (to save,recall,graph, etc.) | S-enter Storage menu (to save,recall,graph, etc.) | ||
Revision as of 14:01, 27 April 2026
Saturn Software
Saturn Systems was a company that produced several software packages for PDP-11s that included:
- Saturn Calc is a spreadsheet program for PDP-11s that was extremely powerful
- Saturn Graph for scientific and business graphics
- Saturn Word Processing for the office
It was distributed as RSX11M task images and it had a licensing system that unfortunately broke at some point so that it was no longer possible to activate the tasks.
I used this software back in the day in a Research & Development Lab. As I've taken up vintage computing as a hobby, I've been trying to hack these RSX task images to run once again.
Saturn Software for RSX
This Saturn software consists of three main components, Calc, Graph, and Word Processing.
SAT.TSK – Master Menu and Document control CAL.TSK – Spreadsheet SIG.TSK – Interactive Graphics WPS.TSK – Word Processing
In this distribution there are 23 RSX tasks that perform various functions and 22 (.SAT) files that contain data and configuration information. In addition there are 4 help (.HLP) files and 18 example spreadsheets (.CAL) and 60 example graphics (.GCL) files and 32 drawing files (.GDF). For word processing there are 13 example files (.WPS).
The software is being made available as a Files-11 disk image (SATURN.DSK) currently available at:
[1](http://rsx11m.com/w/index.php?title=Category:Downloads)
which can be imported into RSX in the following ways:
- Using the RSX VCP utility (see RSX11M+ V4.6 release notes, Chapter 6 for details on using VCP) - Mounted as a uda disk image with a UniBone or QBone on real PDP-11s - Attached as a rq disk in Simh on a PiDP-11/70
The command file INSAT.CMD will copy the Saturn files from the RSX disk drive where you’ve connected the Saturn disk image to a UIC and drive you also specify. It will then install the software by copying the .SAT and .HLP files to LB:\[1,1\], create the SA77: global logical required and install the required tasks.
The command file STARTSAT.CMD should be called during RSX boot-up. This is typically toward the end of either LB:\[1,2\]USERPROG.CMD or LB:\[1,2\]INSPROG.CMD.
Saturn software assumes you have DEC VT terminal emulation including the PF1 – PF4 keys that are used extensively. The rest of the numeric key pad is available for numeric entry. If you don’t have the PF1-PF4 keys mapped, it will be difficult to use the software. If you have a VT125, VT240, VT330 or VT340 or good emulation of the Regis graphics (Gigi or VT LAN 40) you will really enjoy using Saturn Graph.
- PF1 usually backs up a step in the menus to the prior screen. - PF2 is context specific help (like EDT or KED) - PF3 is advance to the next screen in menus - PF4 is exit from the current menu
The documentation for Saturn has been partially recovered. Scanned .pdfs of the following manuals, and miscellaneous documents are available.
- Saturn\_Calc\_Users\_Manual\_1984.pdf (129 pages) - Saturn\_Calc\_System\_Summary\_1985.pdf (17 pages) - Saturn\_Release\_Notes\_1991.pdf (6 pages) - Saturn\_Install\_RT-11\_1984.pdf (63 pages) - Saturn\_Calc\_Quick\_Reference.pdf (quick reference card, duplex legal size) - Saturn\_Graph\_Quick\_Reference.pdf (quick reference card, duplex legal size)
Overview of Saturn Calc
Calc has some similarity to Lotus 1-2-3 in that it uses a / to bring up a line of command choices:
Command (A,B,C,D,E,F,G,I,M,N,O,P,R,S,T,V,W,X,Z,?):
as you use arrow keys to move the cursor over a letter an short explanation appears, e.g. / X X-eXit without saving worksheet Exit \[No\] ? Y
/ S S-enter Storage menu (to save,recall,graph, etc.) choosing an option e.g. S, brings up a secondary menu. Storage option (W,R,C,O,L,G,A,?) : W Name of worksheet to write :FILENAME.CAL
saves the current spreadsheet in FILENAME.CAL One difference from Lotus 1-2-3 is that the spreadsheet results are not calculated until you request it with ! or , These two characters are commands to recalculate the spreadsheet. This saves lots of CPU cycles for the PDP-11. Also, the calculations can run left to right row by row or left to right column by column. Sometimes a cell in for example column C use a value from column F that is not yet calculated. Hitting ! a second time is necessary in that case. Also, the number of recalculation cycles can be set by a global value as can the order of calculations.
This user interface makes it very easy to get around in Calc. Exiting a spreadsheet is /X Y or PF4. Saving is /S W filename.CAL If Filename.CAL exists, you are asked if you want to replace it. Saying yes actually saves a new version number of the file so your previous version is available as Filename.CAL;-1
The Quick Reference Guide will be your best help once you become somewhat familiar with Saturn Calc.
One great feature of Calc is the use of external .CCL command files. You can create an ascii text file that can build a spreadsheet with a .CCL file. The easiest way to see this is to use / S O Filename.CCL
Then use EDT to view the .CCL file and it is pretty easy to see how a spreadsheet could be created by BASIC or FORTRAN. The / S C filename.ccl will execute the comand file and build the spreadsheet.
CCL files can also have loops, if statements, and other elements of a programming language. It is possible to have a spreadsheet model, then use a command file to drive input values through a range and record the results of the model with the various inputs.
Here is an example .CCL file that would recreate SUMFIX.CAL if read in via
/ S O SUMFIX.CCL
>TYP SUMFIX.CCL ~[~Q~c ~! ************ DEFINITION AND DEFAULT SETUP ~c /ZY~C5~C10~c /GWN~c /GSN~c /GOR~c /GRM~c /GI1~c /GC12~c /GF2N,ZR~c /GAN~c ~! ************ FORMAT INFORMATION ~c /F0TL~CA5~c /F0TL~CA8:A9~c /F0TR~CB4:B6~c ~! ************ FORMULAS, TEXT, OR VALUES ~c =A1 2.00~c =B1 3.00~c =C1 A1\*B1~c =D1 PUTV(GET(C1),E1)~c =E1 6.00~c =A2 4.00~c =B2 5.00~c =C2 A2\*B2~c =D2 PUTV(GET(C2),E2)~c =E2 20.00~c =A3 6.00~c =B3 7.00~c =C3 A3\*B3~c =D3 PUTV(GET(C3),E3)~c =E3 42.00~c =B4 SUM~c =C4 SUM(E1.E3)~c =A5 c~c =B5 AVG~c =C5 AVG(E1.E3)~c =B6 STD~c =C6 STD(E1.E3)~c =A8 For Explanation of using SUM on calculated values~c =A9 See SUMFIX.TXT~c ~! ************ CELL PROTECTION ~c ~! ************ JUMP, BETWEEN COLUMN CHAR, AND PAGE STATUS ~c /GAA~c ~N~c=A1~c
Another / S option L can load data from data files a bit like .CSV files are used.
Saturn Graph .GCL files can also be created from Calc with / S G .GCL files are discussed in the Graph overview.
There are two issues when using Saturn Calc.
Saturn software doesn't understand named directories so you should be in a UIC based directory when you use it. If you are in a named directory it will look for files in your protection UIC.
The second problem involves functions that can input a range of cells like SUM, AVG, STD, STDE, MIN or MAX. When cells contain numeric values input from the keyboard, these functions work fine e.g. SUM(C1:C10). However if C1:C10 values contained calculations like A1\*B1, the C1 cell would show the correct value but a function using the range would see 0 in the cells. C1+C2+C3...+C10 would calculate a correct sum however. I came up with a work around that can be used if one really needs that functionality across ranges. See SUMFIX.DOC in the distribution for detailed info on this topic. Also, SUMFIX.CAL is a spreadsheet that illustrates the issue and the work around for it.dir dl1:vector.lst;\*
Overview of Saturn Graph
SIG is the menu based interactive graphics function. It takes you through a series of menus based on the type of chart you want to create. It also allows you to output your graph to a variety of devices. The devices are defined by option 7 Graphics Device Definitions. In that screen, the first field is the name of the device such as TI:, TT4:, or a logical name. The next field is device type which could be VT240, VT330, VT340, HDS220, TEK4010, HP7475, HP7550, HOUSTON, NICOLET, LA100, OKIDATA, and a number of others. The devices defined are stored in GTABLE.SAT Table 4 of the Saturn\_Install\_RT-11.pdf contains a partial list of graphics devices that can be used.
When SIG is told to draw a graph on a particular device, it spawns GRF which creates the file of Regis RGL or HPGL or PLOT10 vectors and spools the output to the device chosen. If the device is a printer, then GRF spawns RAS which converts the vectors into raster based code such as sixels that LA100, LA50 and LA75 printers use.
For someone just starting to use Saturn Graph, the biggest issue is finding a suitable vintage graphics device to display the graphs. Fortunately, Rene Richarz just put the finishing touches on his TEK4010 emulator for Raspberry Pi, Windows and Mac OS. You can find this on github at:
[2](https://github.com/rricharz/Tek4010/)
The best way to use the TEK emulator to log into RSX:
./tek4010 telnet RSXNOD
After logging in, @SETTEK.CMD a command file in the distribution will change some terminal characteristics and define a global logical device name TK: This is the display device that needs to be set up in SIG 7 - Graphics Device Definitions.
Enter the device name TK: \<CR\> and Device type 4010 \<CR\>
SIG should fill in the scale range 1024 and 780. Then use PF3 to advance to the Store definitions. This will create a new LB:\[1,1\]GTABLE.SAT
Now you can choose one of the many .GCL example files and choose 4 to display the graph on TK: Graphs display on the 4010 screen and are really fun to watch being drawn. SIG calls GRF to create the vector graphics, GRF pauses to allow you to view the graph and hitting a \<CR\> will erase the graph amd take you back to SIG.
You can modify the graph with SIG 3 – Edit Chart and then redraw to see the effect of your changes. Once you have the chart perfected you can create a hard copy with a HP plotter or LA printer.
Like the .CCL files of Calc the .GCL files are ascii files that could be created with BASIC or FORTRAN and used via GRF to create graphs. An example of a .GCL file is below. It was created by Calc with the / S G menu but then can be modified by SIG or sent to GRF.
Below is an example of a ballistics chart that was generated by Calc’s / S G command and then displayed by SIG and GRF. You can also just send it to GRF directly \>GRF BALLISTIC.GCL but make sure the Device name on the second line is defined.
>TYPE BALLISTIC.GCL
DEVICE,TK:;100,100
CHAIN,SIG,SY:BALLISTIC.GCL
LINE,~06MM REMINGTON,~095 GR NOSLER,12,1,N,D,1,Y,1.15,1,N,D,D,N,N
2,4 ,~0*,1,0
50.0000, 3162.5073
100.0000, 3051.9802
150.0000, 2943.4194
200.0000, 2836.8245
250.0000, 2732.1953
300.0000, 2629.5320
350.0000, 2528.8347
400.0000, 2430.1035
500.0000, 2238.5386
600.0000, 2054.8376
700.0000, 1878.9995
800.0000, 1711.0255
*, 12
0,700,~0Yards
1500,3500,~0Velocity
*
KEY,95 Nosler
I am in the process of working out how to use the HPGL capabilities of a color laser printer. These printers usually have a RAW port 9100 and RSX11M+ with Johnny Billquist's TCP/IP can send text to be printed directly to this port. An example of how easy this can be is shown in the RSX command file NETPRT.CMD:
>TYP NETPRT.CMD .DISABLE QUIET .ENABLE SUBSTITUTION .IF P1 <> "" .GOTO PR .ASKS P1 Enter file name to print .PR: ; Printing 'P1' PIP TC:"192.168.1.2";9100='P1' >@NETPRT FILE.TXT >; Printing FILE.TXT >PIP TC:"192.168.1.2";9100=FILE.TXT >@ <EOF>
History of this Software
It originally ran on RSX11M, RT-11, and RSTS/E as well as VMS and even MS-DOS. I used Saturn Calc and Graph in an R&D Lab in the 1980s. It was an extremely powerful and easy to learn software package.
I have also been waiting a long time (started in 2013) to be able to use Saturn Calc and Graph. Over the years, I've collected various distributions but the licenses that I had for the RSX version no longer seemed to work. It was distributed as task images, instead of object libraries which would have been easier to hack. The Saturn Calc task would check for a couple files and then if it had not been modified by the license key program it just exited.
I’d like to thank a number of people who had a hand in recovering this software. Norm Byers, the original author of Saturn Calc, who spent time on the phone with me explaining various things. Ken Kunstmann, the former President of Saturn Systems, who was supportive of this effort and connected me with Norm. Malcolm MacLeod, recovered a Saturn dealer’s distribution kit on RX50s in Australia. Most of all, I want to thank Lee Gleason, who developed some fantastic RSX tools that made it possible to disable the license checks.
These task execution tracing tools are able to record a t-bit trace of the executing Saturn Calc task. This trace records the octal value of PC register and the first word of the instruction being executed.
see [3](https://rsx11.blogspot.com/2026/02/) for details
However, RSX works very hard not to allow a task to run with the t-bit trap set. Lee had to modify both INS and LDR in multiple places to NOT clear the t-bit trap in the task header PSW if it is set. When the program exited since the license had not activated it, we would look at the last instruction executed, an EMT 377, to call RSX EXIT$ directive. Then we would work backward to find the conditional branch that could have skipped over the EMT 377. Once that is found change the BLE or BEQ and make it unconditional BR instruction with ZAP.
These tasks are heavily overlaid so the particular overlay of the conditional branch at the correct PC address has to be found. ZAP /LI showed that CAL.TSK had 19 overlays at the address of the EMT 377 and conditional branch. So each has to be checked to find which overlay has the correct octal values in the correct addresses. Then ZAP the BEQ (001403) or BLE (003403) to a BR (000403) to skip over the EMT 377 (104377) that called EXIT$S.
Each of the many Saturn tasks had to be hacked and they each had a couple spots that had to be ZAPped. But then we had working versions of Saturn Calc, Graph and WP and were just checking to see if anything was broke.
This is when we ran into the next hurdle, both Calc and Graph were in a demo mode.
For Graph this meant that each plot that it made had a DEMO Version written diagonally across the chart. This was done at the end of the created plot so you could send the HPGL or RGL code to a file and edit it out but that was no fun. I figured out how too by using the SATKEY task and feeding it old license info, I could remove the DEMO mode. This was the same license KEY that would not unlock things directly I suppose because of a Y2K or similar issue.
Saturn Calc was different, It would allow you to create any size (upto the 16384 max cells) but if you tried to save the spreadsheet, it refused unless you had less than 150 cells. The SATKEY trick did not fix Calc. Lee Gleason solved this one by dumping the entire task image to a .DMP file and looking for the 150 (226 octal) value, decoding instruction around it to see if there was a conditional branch associated with it, then use ZAP to make it an unconditional branch.
So far everything looks good, but there are a couple caveats to know about.
- First, the RSX Saturn software doesn't understand named directories so you should be in a UIC based directory when you use it. - Second, there is an obscure bug that I have not been able to solve and don’t know if it was always there or it was somehow introduced by our hacks and zaps. It involves SUM or AVG calculations across a range when the range of cells when the input values are calculated.
Saturn Graph is working very well. I can create a line, bar or pie chart either in SIG (Saturn Interactive Graphics) or from a Calc spreadsheet. Then it
can be displayed on a VT125, VT240, VT330 or VT340 (Regis) terminal. The VT340 mouse even works with the Saturn drawing program. Also, as mentioned earlier Rene Richarz's TEK4010 works very well as a plotting device to quickly view plots. A standard VT100 emulator can interact with the Saturn Graph and the TEK4010 window can display the results of your changes to the plot. Then when one is ready to make a hard copy, send it to a spooled HP7550 (HPGL) plotter or even a LA50 (sixel) printer.
In addition to the people I mentioned above who assisted in the hacking effort, I'd also like to thanks Rene Richarz for creating an great device to display these plots on telnet sessions from Raspian, Windows or Mac OSX. I also want to thank Oscar Vermeulen and Jorge Hoppe for their work to create the PiDP-11/70 which has brought PDP-11 computing to a much wider audience. Lastly, but not least I want to thank Johnny Billquist for all of his work bringing RSX11M+ into the 21st century with TCP/IP, RPM and many other fantastic tools!
Current Status
I would be interested in a beta tester or two who are somewhat familiar with Saturn to see if there are any issues remaining. Saturn provided many example files and I'm including them as wellI also included a couple of my .CAL spreadsheets: BENCH.CAL has some bench mark data for various PDP-11s and VAXes. BALLISTIC.CAL calculates ballistic tables for bullets given the initial velocity and Ballistic Coefficient. Also, I am in the process of testing some of the other Saturn software such as the Word Processing, Sorting, Drawing and other programs that I am less familiar with They may have problems, but updates will occur as we work through the collection of 23 different tasks.
This distribution contains in total about 7500 blocks in 190 files.
If you have an RSX system on HECnet, you can NFT the Saturn files from RDP1:: (30.11) them back to your system.
>NFT =RDP1::\*.\*/LO
I’ve also packaged everything in a RL02 zipped disk image at:
[ http://rsx11m.com/w/index.php?title=Category:Downloads ] Saturn Software RL02 Disk image .zip download
that can be downloaded with wget to a PiDP-11/70 or QBone. Then just unzip and attach the RL02 disk image to a rl device in simh.
Subcategories
This category has the following 3 subcategories, out of 3 total.