May the Fortran be with you.

If you have your own Tops-10 system up and running you might want to do something useful with it. So, the first step for me was to install the Fortran and BASIC programming languages, partly to prove they would work on my own Tops-10 install and partly to give a platform to develop on.

Like the previous steps, I was fortunate to find a recipe for the install and again I could use this essentially verbatim.

TOPS-10 BASIC and TOPS-10 FORTRAN
Installation Log

Created by @asun.net

The attached log shows minimal installation procedures for TOPS-10
BASIC and FORTRAN running on the Simh v2.9-9 simulator. BASIC is
version 17F and FORTRAN is version 11 field test tape 3. Unfortunately,
the real FORTRAN V11 "product" tape isn't yet available.

No official documents for installing BASIC seem to exist. The official
installation instructions for FORTRAN should appear in "TOPS-10 FORTRAN
Installation Guide" AA-P345C-TB.

The install procedures reference the following resources:

Simh simulator by Bob Supnik;
http://simh.trailing-edge.com/

TOPS-10 v7.04 tape images

http://pdp-10.trailing-edge.com/tapes/basic17f.tap.bz2
http://pdp-10.trailing-edge.com/tapes/fortv11.tap.bz2

bzip2 data compressor
http://sources.redhat.com/bzip2/

Tape images must be decompressed before use. The decompressed tape image
file names are:

/var/tmp/t10basic.tap /var/tmp/t10fortran.tap

The log uses the following conventions:
Control-E (^E) escapes to the simh simulator
Control-Z (^Z) and/or control-C (^C) terminates most TOPS-10 utilities
ESC in the sos text editor shows as "$"
ESC in operator utilities (e.g. OPR) auto completes command strings

Script started on Sat 11 May 2002 11:22:48 AM EDT
$ cat pdp10.cfg
set tim y2k
attach rp0 ~/t10.dsk
attach -am dz 2020
boot rp0
$ ./pdp10 pdp10.cfg

PDP-10 simulator V2.9-9
Listening on socket 5
Modem control activated
Auto disconnect activated
BOOT V4(76)

BOOT>sys2.exe[10,7,mon]
[Loading from DSKB:SYS2.EXE[10,7,MON]]

PDP10 07-May-02
Why reload: new
Date:
Time:
Startup option: go
[Rebuilding the system search list from the HOM blocks]

[Rebuilding the active swapping list from the HOM blocks]

[Rebuilding the system dump list from the HOM blocks]

PDP10 11:23:14 CTY system 4097
Connected to Node CENTRA(0) Line # 42
.LOGIN 1,2
.R OPR

[CCPWFD Waiting for file daemon to start]
%%TTY STOMPER - Starting
OPR>
11:23:29 -- Begin auto take file --
File: SYS:SYSTEM.CMD[1,4]

11:23:29 -- End auto take file --
17 lines processed

11:23:29 -- Message from the Accounting System --
Account validation is not required

OPR>set tapE-DRIVE mta0: ? one of the following:
AVAILABLE INITIALIZE UNAVAILABLE
OPR>set tapE-DRIVE mta0: unAVAILABLE
Enter text and terminate with ^Z
^Z
OPR>
11:24:21 Device MTA0 -- Unavailable for use --

OPR>exit

.r credir

Create directory: [100,100]/exit
Created DSKB0:[100,100].UFD/PROTECTION:775

.r setsrc

*cp [100,100]

*^Z

EXIT

.assign mta0: tape:
MTA0 assigned
.^E
Simulation stopped, PC: 000001 (SOJG 6,1)
sim> set tu0 lock
sim> attach tu0 /var/tmp/t10basic.tap
sim> go

.r backup

/tape tape:
/rewind
/print tty:
!Start of save set BASIC-10 V17F DOCUMENTATIONon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:25:36 BACKUP 3(422) tape format 1
Tape number 1

BASIC HLP 7 14-May-81
BAS17F DOC 22 15-Oct-81

End of save set BASIC-10 V17F DOCUMENTATIONon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:25:37 BACKUP 3(422) tape format 1
Tape number 1

Start of save set BASIC-10 V17F EXECUTABLEon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:30:01 BACKUP 3(422) tape format 1
Tape number 1

BASIC EXE 120 14-Oct-81 17F(244)

End of save set BASIC-10 V17F EXECUTABLEon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:30:04 BACKUP 3(422) tape format 1
Tape number 1

Start of save set BASIC-10 V17F SOURCESon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:30:54 BACKUP 3(422) tape format 1
Tape number 1

BASICL MAC 20 31-Aug-81
BASICH MAC 498 12-Oct-81
BASIC CTL 2 14-Oct-81
QUEUER REL 3 11-Oct-73

End of save set BASIC-10 V17F SOURCESon MTA260, reel BASIC
System RZ111A KL #1026/1042 TOPS-10 monitor 702(23322) APR#1026
1600 BPI 9 track 15-Oct-81 14:30:58 BACKUP 3(422) tape format 1
Tape number 1

"Done

/rewind
/files
/restore *.*
! BASIC HLP
BAS17F DOC

"Done

/restore *.*
! BASIC EXE

"Done

/unload tape:

[MTA0: Read(C/H/S) = 617440/0/0]
/exit

.deassign tape:
.dir

BASIC HLP 7 <000> 14-May-81 DSKB: [100,100]
BAS17F DOC 22 <000> 15-Oct-81
BASIC EXE 120 <000> 14-Oct-81 17F(244)
Total of 149 blocks in 3 files on DSKB: [100,100]

.rename [1,4]<055>=*.exe
Files renamed:
DSKB:BASIC.EXE

.rename hlp:<055>=dsk:*.hlp
Files renamed:
DSKB:BASIC.HLP

.rename doc:<055>=dsk:*.doc
Files renamed:
DSKB:BAS17F.DOC

.dir sys:basic.*,hlp:basic.*,doc:bas17f.*

BASIC EXE 120 <055> 14-Oct-81 17F(244) DSKB: [1,4]
BASIC HLP 7 <055> 14-May-81 [2,5]
BAS17F DOC 22 <055> 15-Oct-81 [5,14]
Total of 149 blocks in 3 files

.r setsrc

*cp [,]

*^Z

EXIT

.r opr

OPR>set tapE-DRIVE mta0: avaILABLE (for use by system)
OPR>
11:28:30 Device MTA0 -- Available for use --

11:28:30 Device MTA0 -- Offline --

OPR>exit

.r pip

*dsk:=[100,100].ufd/d
Files deleted:
DSKB:[100,100].UFD
01 Blocks freed
*^Z

.r basic

READY, FOR HELP TYPE HELP.
100 print "Hello World"
200 end
run

NONAME 11:29 11-MAY-:2

Hello World

TIME: 0.01 SECS.

READY
system

EXIT

.mount tape:/reelid:t10for/nowait
[Mount request TAPE queued, request #4]

.r opr

OPR>
21:03:33 -- Magtape mount request #4 --
User: OPR [1,2] Job #2
Volume-set name: TAPE

Volume-ID Write Labels Track Density
--------- ------- ------ ----- -------
T10FOR Locked No 9 1600

OPR>^E
Simulation stopped, PC: 000001 (SOJG 6,1)
sim> set tu0 lock
sim> attach tu0 /var/tmp/t10fortran.tap
sim> go

21:03:56 Device MTA0 -- Unlabeled volume mounted --
Density 1600 BPI, write-Locked

OPR>shoW queUES
OPR>
21:04:05 -- System Queues Listing --

Mount Queue:
Volume Status Type Write Req# Job# User
------- -------- -------- ------- ------ ---- -------------------
T10FOR Waiting Magtape Locked 4 2 OPR [1,2]
Volume-set: TAPE
Label-Type: No, Tracks: 9, Density: 1600 BPI
There is 1 request in the queue

OPR>ideNTIFY (device) mta0: (with) reQUEST-ID 4
OPR>
21:04:29 Device MTA0 -- Volume T10FOR reassigned --
User: OPR [1,2] Job #2

OPR>exit

.r backup

/tape tape:
/rewind
/protection 155
/files
/restore dsk:[10,7,ftndoc]=*.*
! 10DOC DIR
FORTRA DOC
FORDDT HLP
FORTRA BWR
FORTRA HLP
MANUAL MEM
MODULE MEM
EXTEND MAC
EXTEND REL
EXTEND BWR
EXTEND PCO

"Done

/restore dsk:[10,7,ftnsys]=*.*
! 10SYS DIR
FORDDT REL
FORLIB REL
FORO11 EXE
FORTB EXE
FORTC EXE
FORTD EXE
FORTE EXE
FORTF EXE
FORTG EXE
FORTRA EXE

"Done

/skip 1
/restore dsk:[10,7,ftnots]=*.*
! 10OTD DIR
B10FDT CTL
B10FRS CTL
F10LIB CCL
F10OTS CCL
F1DOTS CCL
FDBM5 CCL
FDBM5 CTL
FDBM5 FOR
DBCS1F CMD
F10REL MAC
FDDT MAC
FORBOT MAC
FORBOT REL
FORCHR MAC
FORCHR REL
FORCNV MAC
FORCNV REL
FORCOM MAC
FORCOM REL
FORDBM MAC
FORDBM REL
FORDST MAC
FORDST REL
FORDDT MAC
FORDUM MAC
FORDUM REL
FORERR MAC
FORERR REL
FORFMT MAC
FORFMT REL
FORHST MAC
FORHST REL
FORINI MAC
FORINI REL
FORIO MAC
FORIO REL
FORMEM MAC
FORMEM REL
FORMSC MAC
FORMSC REL
FORMSG MAC
FORMSG REL
FORNML MAC
FORNML REL
FORO11 MAP
FOROP MAC
FOROP REL
FOROPN MAC
FOROPN REL
FOROTS MAC
FOROTS REL
FORPL1 FOR
FORPL1 REL
FORPL2 MAC
FORPL2 REL
FORPRM MAC
FORPRM UNV
FORPSE MAC
FORPSE REL
FORRMS MAC
FORRMS REL
FORRTF MAC
FORRTF REL
FORSRT MAC
FORSRT REL
FORXIT MAC
FORXIT REL
M10REL MAC
MTHARG MAC
MTHARG REL
MTHCDX MAC
MTHCDX REL
MTHCGX MAC
MTHCGX REL
MTHCNV MAC
MTHCNV REL
MTHCPX MAC
MTHCPX REL
MTHDBL MAC
MTHDBL REL
MTHDUM MAC
MTHDUM REL
MTHGDB MAC
MTHGDB REL
MTHHST MAC
MTHMSG MAC
MTHMSG REL
MTHPRM MAC
MTHPRM UNV
MTHSNG MAC
MTHSNG REL
MTHTRP MAC
MTHTRP REL

"Done

/restore dsk:[10,7,ftncmp]=*.*
! 10COM DIR
A CMD
ACT0 BLI
ACT0 REL
ACT1 BLI
ACT1 REL
ALCBLO BLI
ALCBLO REL
ALL CMD
ARRXPN BLI
ARRXPN REL
ASHELP BLI
B CMD
B10FTN CTL
BLD CMD
BLIO BLI
BLIO REL
BUILD BLI
BUILD EXE
BUILD REL
C CMD
CANNON BLI
CANNON REL
CGDO BLI
CGDO REL
CGEXPR BLI
CGEXPR REL
CGSTMN BLI
CGSTMN REL
CMPBLO BLI
CMPBLO REL
CMPLEX BLI
CMPLEX REL
CNSTCM MAC
CNSTCM REL
CODETA BLI
CODETA REL
COMMAN MAC
COMMAN REL
COMSUB BLI
COMSUB REL
D CMD
DA CMD
DATAST BLI
DATAST REL
DB CMD
DBUGIT REQ
DC CMD
DD CMD
DE CMD
DEBUG BLI
DEBUG REL
DEFLT BLI
DEFLT REL
DEFPT BLI
DEFPT REL
DF CMD
DG CMD
DGCMN MAC
DGCMN REL
DNPT MAC
DNPT REL
DOALC BLI
DOALC REL
DOPT MAC
DOPT REL
DORTB EXE
DORTC EXE
DORTD EXE
DORTE EXE
DORTF EXE
DORTG EXE
DORTRA EXE
DOXPN BLI
DOXPN REL
DRIVER BLI
DRIVER REL
E CMD
ERR3 MAC
ERR3 REL
ERROR0 BLI
ERROR0 REL
ERROUT BLI
ERROUT REL
ERROVA BLI
ERROVA REL
ERROVB BLI
ERROVB REL
ERROVC BLI
ERROVC REL
ERROVD BLI
ERROVD REL
ERROVG BLI
ERROVG REL
ERROVR BLI
ERROVR REL
ERRTB3 MAC
ERRTB3 REL
EXOSUP MAC
EXOSUP REL
EXPRES BLI
EXPRES REL
F CMD
F72BNF BLI
F72BNF SYN
FAZ1 BLI
FAZ1 REL
FIRST BLI
FLTGEN MAC
FLTGEN REL
FMTLEX BLI
FORMAT BLI
FORMAT REL
FORTB MAP
FORTC MAP
FORTD MAP
FORTE MAP
FORTF MAP
FORTG MAP
FORTRA MAP
FRMBNF BLI
FRMBNF SYN
FT1SEG REQ
FTTENX MAC
FTTENX REQ
FTTENX UNV
G CMD
GCMNSB BLI
GCMNSB REL
GFOPDF MAC
GFOPDF UNV
GLOBAL BLI
GLOBAL REL
GNRCFN BLI
GNRCFN REL
GOPT2 BLI
GOPT2 REL
GOPTIM BLI
GOPTIM REL
GRAPH BLI
GRAPH REL
INOUT BLI
INOUT REL
INPT BLI
INPT REL
IOFLG BLI
IOPT BLI
IOPT REL
JOBD MAC
JOBD REL
L10FTN CTL
LEFT72 BLI
LEFT72 CMD
LEFT72 EXE
LEFT72 REL
LEFTFM BLI
LEFTFM CMD
LEFTFM EXE
LEFTFM REL
LEXAID BLI
LEXCLA BLI
LEXCLA REL
LEXICA BLI
LEXICA REL
LEXNAM BLI
LEXSUP BLI
LEXSUP REL
LISTNG BLI
LISTNG REL
LISTOU BLI
LISTOU REL
LOOK72 BLI
LOOKFM BLI
MAIN BLI
MAIN REL
MEMCMP BLI
MEMCMP REL
META72 BLI
METAFM BLI
MOVA BLI
MOVA REL
NUMIO1 BLI
NUMIO1 REL
ONESEG REL
OPGNTA MAC
OPGNTA REL
OPTAB BLI
OPTAB REL
OPTMAC BLI
OUTMOD BLI
OUTMOD REL
OUTZ BLI
OUTZ REL
OWNDM MAC
OWNDM REL
P2S1 BLI
P2S1 REL
P2S2 BLI
P2S2 REL
P3R BLI
P3R REL
PEEPOP BLI
PEEPOP REL
PH2S BLI
PH2S REL
PH3G BLI
PH3G REL
PHA2 BLI
PHA2 REL
PHA3 BLI
PHA3 REL
PNROPT BLI
PNROPT REL
QTAB1 MAC
QTAB1 REL
REGAL2 BLI
REGAL2 REL
REGUTL BLI
REGUTL REL
RELBUF BLI
RELBUF REL
REQREL BLI
REVHST MAC
REVHST REL
SCAN0 BLI
SCAN0 REL
SCNR BLI
SCNR REL
SINGLE EXE
SINGLE MAP
SKSTMN BLI
SKSTMN REL
SRCA BLI
SRCA REL
STA0 BLI
STA0 REL
STA1 BLI
STA1 REL
STA2 BLI
STA2 REL
STA3 BLI
STA3 REL
STREGA BLI
STREGA REL
TABLES BLI
TBL BLI
TBL REL
TRACE1 BLI
TRACE1 REL
TSTR BLI
TSTR REL
UNEND BLI
UNEND REL
UTIL BLI
UTIL REL
VER5 BLI
VER5 REL
VLTPPR BLI
VLTPPR REL

"Done

/unload tape:
%BKPPUD Please use .DISMOUNT monitor command instead of UNLOAD
/exit

.dismount tape:

[MTA0:T10FOR Read(C/H/S) = 16959200/0/0]
[MTA0 dismounted]

.r pip

*sys:<055>/x=dsk:[10,7,ftnsys]*.exe
*[1,4]<055>/x=[10,7,ftnsys]for*.rel
*hlp:<055>/x=dsk:[10,7,ftndoc]*.hlp
*doc:<055>/x=dsk:[10,7,ftndoc]*.doc
*^Z

.sos hello.for
Creating HELLO.FOR
00100 PROGRAM HELLO
00200 WRITE(5, 100)
00300 100 FORMAT(1X, 'HELLO WORLD')
00400 STOP
00500 END
00600 $
*e
[DSKB:HELLO.FOR]

.execut hello.for
FORTRAN: HELLO
HELLO
LINK: Loading
[LNKXCT HELLO execution]
HELLO WORLD
CPU time 0.00 Elapsed time 0.22

EXIT

.del hello.*
Files deleted:
DSKB:HELLO.FOR
DSKB:HELLO.REL
02 Blocks freed

.r opr

OPR>
21:11:15 Device MTA0 -- Released --
User: OPR [1,2] Job #2

OPR>set ksys now
OPR>
21:20:22 -- Event KSYS queued, request #5 --

21:20:22 -- Timesharing is over --
Wait for "KSYS processing complete" message before SHUTDOWN

21:20:22 -- Waiting for BATCON to start for KSYS logouts --

OPR>
;;SYSTEM: - Timesharing is over!

21:20:23 -- KSYS processing completed --

OPR>exit

.kjob
[LGNJSP Other jobs same PPN]
Job 2 User OPR [1,2]
Logged-off CTY at 21:20:30 on 14-May-102
Runtime: 0:00:26, KCS:449, Connect time: 0:18:59
Disk Reads:6340, Writes:28675, Blocks saved:0

.^E
Simulation stopped, PC: 000001 (SOJG 6,1)
sim> set fe stop
sim> go
BOOT>^E
Simulation stopped, PC: 706440 (SOJGE 2,706437)
sim> quit
Goodbye
$ exit

script done on Tue 14 May 2002 09:20:56 PM EDT

About Quentin

Im just a normal bloke.
This entry was posted in Retro Computing and tagged , , , , . Bookmark the permalink.

3 Responses to May the Fortran be with you.

  1. Troy Fullwood says:

    Hey, I recently have been trying to get into TOPS-10 — but I can’t for the life of me figure out how I’m supposed to know what the reelid is?? I’m trying to install files from one of the DECUS Lib tapes, I can’t find the volume ID anywhere, and OPR refuses to mount it unless it has the correct reelid.

    • Quentin says:

      Im no expert but I believe there is an alternative to using a user mount request and a reelid, which is to do it directly through the OPR CTY:

      For example:

      OPR>set tap mta0: un
      Enter text and terminate with ^Z
      ^Z
      OPR>
      11:24:21 Device MTA0 — Unavailable for use —

      OPR>push

      .assign mta0: tape:
      MTA0 assigned
      .
      Simulation stopped, PC: 000001 (SOJG 6,1)
      sim> set tu0 lock
      sim> attach tu0 /var/tmp/decustape.tap
      sim> go

      .r backup

      /tape tape:
      /rewind
      /files
      /restore *.*
      /unload tape:
      /exit
      .dir

      In theory, this should have restored the tape into the OPR account [1,2] which you can then copy wherever.

  2. wrzwicky says:

    Worked almost perfectly, thanks! The only thing is that the Fortran test program didn’t work. I had to indent the code 6 spaces to match the old Fortran fixed format.

    00100 PROGRAM HELLO
    00200 WRITE(5, 100)
    00300 100 FORMAT(1X, ‘HELLO WORLD’)
    00400 STOP
    00500 END

Leave a Reply