michigan terminal system (mts) v6.0 installation notes for hercules v3.07 | |||||
---|---|---|---|---|---|
I've wanted to play with MTS for quite some time, but it's only just recently that the source, binary tape images and documentation were released for public consumption. I've had a lot of fun getting MTS up and running and I put together the following page to distill all the installation documentation down and get you through some potential snags. | |||||
You can download the MTS binary tape images from Bitsavers. | |||||
You can download the official MTS documentation and other published ephemera from Bitsavers. | |||||
1. Set up a Hercules configuration file like the following: | |||||
ARCHMODE ESA/390 CPUSERIAL 000611 CPUMODEL 3090 CPUVERID FD NUMCPU 8 MAINSIZE 128 XPNDSIZE 0 CNSLPORT 3270 LOADPARM ........ SYSEPOCH 1928 TZOFFSET -0000 PANRATE FAST # .-----------------------------Device number # | .-----------------------Device type # | | .---------------File name # | | | # V V V #--- ---- -------------------- 0180 3420 0181 3420 0182 3480 0183 3480 0260 3380 dasd/mts600.3380 0009 3270 console 0001 3270 * 0002 3270 * 0003 3270 * 0004 3270 * 000E 1403 mvslog.txt |
|||||
What's this all about? Basically what we've done is configure Hercules to emulate an IBM 3090, which is one of the later machines supported by MTS (development ceased in the late 1980s or early 1990s). Just for fun, and to test the claim that MTS will support up to 8 CPUs (it does), we've configured same, although I don't believe any system so large was ever built historically. 128 MB of main memory is configured, which I believe is generally consistent with 3090 minimums.
We define a few tape devices, both 3420 and 3480, because some of the tape images seem to like one device, while some will only work with the other. I'll note explicitly when that happens later on down the page as it comes up during the installation. One 3380 disk drive is defined on which to install MTS and subsequently boot from. Five 3270 terminals are defined. One will be used for the system console, the other four will be used for timesharing sessions. One 1403 printer was defined in case it was required for test or debug (it turned out to be not required). It can also serve as a way to get textual data out of MTS. Besides the number of defined CPUs, this is a pretty basic system configuration. It's certainly possible to grow from here and emulate a system with greater capacity, but the configuration above is realistically the bare minimum required to get you started running MTS. |
|||||
N.B. For historical purists: I do know "technically" a 3090 is an ESA/370 system but this is not an option in Hercules and setting ARCHMODE to ESA/390 seems to make both Hercules and MTS happy. | |||||
2. Build the DASD device. We can fit the full MTS D6.0 release and layered products with plenty of space left over on one 3380 unit: | |||||
dasdinit -a dasd/mts600.3380 3380 MTS600 |
|||||
3. Start Hercules: | |||||
hercules -f mts.cnf |
|||||
4. Load the first DR tape into the first 3420 tape drive. | |||||
devinit 0180 mts/d6.0/d6.0dr1.aws |
|||||
5. Connect your TN3270 emulator to port 3270 on the machine running Hercules.
6. IPL the emulator |
|||||
ipl 0180 |
|||||
7. Wait for the prompt "Do you want to run the current system (yes or no)?" in the 3270 window.
8. At the Hercules console, type: |
|||||
devinit 0181 mts/d6.0/d6.0util.aws |
|||||
Note that you need to mount the utility tape on a 3420 device or else MTS will throw errors when trying to read it (just a bug in this distribution, I guess).
9. In the 3270 window, type: |
|||||
run *ipl.mp.ndsk addr=0181 |
|||||
10. When prompted about the time, just type "ok" and hit RETURN.
11. At the message: |
|||||
DMGR Volume MTS600 not found. "RETRY" to retry, "CANCEL" if unavailable |
|||||
type "CANCEL" and hit RETURN.
12. You should see: |
|||||
DMGR ERROR - Can't add PVN 1. |
|||||
This is normal, ignore it.
13. Type: |
|||||
JOBS MAS |
|||||
and hit RETURN. You should see the first two lines at the top of the screen change to show some system statistics.
14. Type: |
|||||
MTS NDSK OPER |
|||||
and hit RETURN.
15. Type: |
|||||
SIGNON MTS. |
|||||
16. You will see: | |||||
"*MACRTNS": hardware error or software inconsistency. Enter a new file/device name, "CANCEL", or "HELP". |
|||||
This is normal.
17. Type "CANCEL" and hit RETURN. 18. At the Hercules console, load another copy of the UTIL tape on a 3480 device: |
|||||
devinit 0182 mts/d6.0/d6.0util.aws |
|||||
It's important to use a 3480 device to read the tape this time, otherwise MTS will throw an error when you try to run DASDI (some sort of bug in this release, I guess).
19. Attach to the utility tape: |
|||||
$GET >T902 $CONTROL *AFD* VOLUME=MTSUTL |
|||||
20. Initialize the disk volume onto which you will be restoring MTS: | |||||
$CONTROL *AFD* POSN=DASDI $RUN *AFD* PROT=OFF D400 MTS600 VX 1 IPL OK |
|||||
Wait while the disk is formatted. When done (prompted to "Enter next input line") , type: | |||||
$ENDFILE |
|||||
21. Restore the D6.0 system from the DR tapes to the disk: | |||||
$CONTROL *AFD* POSN=DISKCOPY $RUN *AFD* PROT=OFF |
|||||
Go back to the Hercules console and load another copy of the DR1 tape on a 3480 device (it's picky): | |||||
devinit 0183 mts/d6.0/d6.0dr1.aws |
|||||
Note that you will need to use a 3480 type device for all three of the DR tapes to successfully read them.
Then go back to the 3270 window and continue: |
|||||
TAPE >T903 DISK D400 MTS600 IPL |
|||||
Wait a while for the first DR tape to copy to disk.
When the first tape is finished, go back to the Hercules console and load the second DR tape: |
|||||
devinit 0183 mts/d6.0/d6.0dr2.aws |
|||||
Then go back to the 3270 window and continue: | |||||
>T903 |
|||||
Wait for the second DR tape to copy to disk.
When the third tape is finished, go back to the Hercules console and load the third DR tape: |
|||||
devinit 0183 mts/d6.0/d6.0dr3.aws |
|||||
Then go back to the the 3270 window and continue: | |||||
>T903 |
|||||
Wait for the third tape to copy. When it is all done, you should see a message: | |||||
Volume labels are unchanged: 75598 data pages copied, 0 relocations Enter "FROM" device type (DISK/TAPE) |
|||||
At that point, exit DISKCOPY | |||||
$ENDFILE |
|||||
22. This should complete the installation of MTS to the disk. Go back to the Hercules console and exit: | |||||
quit |
|||||
(Should we do SHUTDOWN ALL in MTS first? I didn't do it and it didn't seem to hurt anything. Docs are unclear)
23. Restart Hercules, reconnect your 3270 and IPL from the disk. At the Hercules console, type: |
|||||
ipl 0260 |
|||||
24. At the prompt, | |||||
"Do you want to run the current system (yes or no)?" |
|||||
Type: | |||||
run name=*ipl.mp |
|||||
When prompted for the time, type "ok" and hit RETURN.
25. When prompted for initials and reason for reloading, say something descriptive: |
|||||
stc initial system ipl |
|||||
and hit RETURN
26. You will receive a message about some devices found to be missing at IPL time. Clear the alert by sending PA2 in your TN3270 emulator. 27. Start up MTS: |
|||||
mts *las |
|||||
If you want to run more 3270 terminals for timesharing sessions (you should have at least one in addition to the console), it's recommended to connect them up before typing mts *las at the console.
I have found that as long as MTS is running and terminal ports (as defined in the Hercules configuration file) are available, further TN3270 sessions may be established at any time on port 3270 after MTS has started with no problem. If the signon screen does not immediately appear, try sending PA1 or a few carriage returns. At this point, you should see the MTS signon screen on the non-console 3270 sessions. 28. On one of the non-console terminals, go ahead and sign on to MTS! You basically have two options at signon time. The first is to sign in using a privileged account i.e. mts or acc or net or host or oper or sys (and so on) that will give you special access on different portions of the system. The second is to simply sign in with a user level account. There are a number of user level accounts created by default on D6.0 i.e. st01 ... st99. |
|||||
signon mts |
|||||
signon st01 |
|||||
If you signed on to one of the privileged accounts (i.e. mts, acc, etc) you first get a password prompt for that. By default in D6.0, the password is "aardvarks". You will subsequently be required to enter credentials for a valid user level account as well! At the ID? prompt, enter a valid user level account i.e. st01.
If you signed on with a user level account to begin with, you will land directly at the user level password prompt. Enter the corresponding password for the user level account when prompted i.e. st01 will be the password for account st01. NOTE: All default user level accounts and passwords follow the same format, so the second account is st02 with password st02, the third is st03 with a password of st03 and so forth. 29. Now you have a working MTS 6.0 starter system! The signon and signoff commands log you in and out and help will give you an excellent full screen interactive help system. In general, to learn about commands built in to the MTS command interpreter, look in Section 3 of the online help system, MTS_Commands. To learn more about the layered products such as compilers and other applications, look in Section 5 of the online help system, Public_Files. There is a fair amount of layered software included in the D6.0 MTS distribution including a working *FORUM and at least twenty or thirty compilers and assemblers (although a few of them are broken) so we can enjoy MTS in some depth. 30. Example: List files in your user area
|
|||||
# f FORUM.PART HELLO.C HELLO.EXE HELLO.PAS HELLO.PL1 MNHATTAN.EXE MNHATTAN.FOR TEST.EXE TEST.FOR TEST2.EXE TEST2.FOR # |
|||||
31. Example: Show running tasks
|
|||||
# sy ta - Job # Job Name JobTbl VP Status - 00006 PDP 00056D20 Dormant ; - 00002 OPERATOR 00056E80 1 Dormant ; DS01 - 00003 DMGR 00056FE0 ?Wt FF22C028 ; D400 - 00038 MTS 000572A0 98 Monitor Idle MAIL WMTS *MGR; - 00028 MM 00057400 13 Monitor Idle NETP NONE PIP; - 00033 MTS 00057560 315 DE Wait DS03 ST01 ST01; DS03 - 00032 MTS 000576C0 40 Ready ST01 ST01; DS02 - 00018 MTS 00057820 117 Privileged SYS. WOPN *CMD; - 00012 JOBS 00057980 1 Time Wait MAS; - 00034 MTS 00057AE0 19 DE Wait DS04 DS04; DS04 - 00039 MTS 00058060 52 TLNT Manager HOST WMTS *TCM; - 656 pages in use. # |
|||||
32. Example: Stat users and jobs
|
|||||
# sy u - There are 5 terminal users, 0 batch jobs, 1 available lines, - and 5 non-MTS jobs using 1935 virtual pages and 2476 real pages. # |
|||||
33. Example: Stat machine type (consistent with our Hercules configuration)
|
|||||
# di machine Mode: 370-XA Model: IBM 3090//FD Serial number: 611. # |
|||||
34. Example: Print the contents of a file to the terminal
|
|||||
# l hello.c 1 #include |
|||||
35. Example: Run BASIC |
|||||
# run *basic # Execution begins 23:55:54 :/open test & "TEST" has been created. : 10 for i = 1 to 10 : 20 print i : 30 next i : /list 10 for i = 1 to 10 20 print i 30 next i & End-Of-File :/run 1 2 3 4 5 6 7 8 9 10 + Program Ends :/quit & Off at 23:57:41 on 07-20-87 # Execution terminated 23:57:41 T=0.15 # |
|||||
36. Example: Run LISP
|
|||||
# run *utilisp # Execution begins 00:06:57 > (plus 2 3) 5 > (quit) # Execution terminated 00:33:19 T=0.161 # |
|||||
37. Example: Enter, compile and run a PL/1 program
|
|||||
# create hello.pl1 File "HELLO.PL1" has been created. # edit hello.pl1 : insert ? HELLO: PROC OPTIONS(MAIN); ? DCL MESSAGE CHAR(16); ? MESSAGE = 'Hello, world!'; ? DISPLAY(MESSAGE); ? END HELLO; ? : close : end of file # create hello.exe File "HELLO.EXE" has been created. # run *pl1f scards=hello.pl1 spunch=hello.exe par=deck # Execution begins 21:49:41 PROCEDURE HELLO: SYNTAX CHECK COMPLETED. COMPILATION CONTINUES. NO ERRORS OR WARNINGS DETECTED. # Execution terminated 21:49:44 T=0.422 # run hello.exe+*pl1flib # Execution begins 21:50:36 Hello, world! # Execution terminated 21:50:37 T=0.006 # |
|||||
38. Example: Enter, compile and run a FORTRAN program
|
|||||
# create test2.for File "TEST2.FOR" has been created. # edit test2.for : insert ? C FIND LENGTHS OF SIDES OF RIGHT TRIANGLE ? 1 FORMAT (F7.2,F6.3) ? 2 FORMAT (5H HYP=,F7.2,4H A=,F6.3,8H SIDEA=,F7.2,8H SIDEB=,F7.2) ? C START ? 10 READ 1,HYP,A ? IF (HYP-99999.99) 20,30,30 ? 20 RADA=A/57.29578 ? SIDEA=HYP*COS(RADA) ? SIDEB=HYP*SIN(RADA) ? PRINT 2,HYP,A,SIDEA,SIDEB ? GO TO 10 ? 30 STOP ? END ? : close : end of file # create test2.exe File "TEST2.EXE" has been created. # run *ftn scards=test2.for spunch=test2.exe par=deck # Execution begins 22:36:26 No errors in MAIN # Execution terminated 22:36:26 T=0.094 # run test2.exe # Execution begins 22:45:42 5,76/ HYP= 5.00 A=,76.000 SIDEA=, 1.21 SIDEB=, 4.85 1,45/ HYP= 1.00 A=,45.000 SIDEA=, 0.71 SIDEB=, 0.71 end of file # |
|||||
39. When ready to shut the system down, go to the MTS console and type: |
|||||
SHUTDOWN ALL |
|||||
and hit RETURN. Wait until the message "SHUTDOWN Shutdown All complete." is received, then issue "quit" from the Hercules console.
NOTE: If you want to start MTS on the operator console, type the command: |
|||||
MTS OPER |
|||||
Then log in using the "SIGNON" command as usual.
Note that if the system gets away from you, the "PA1" key seems to serve as interrupt. PA2 seems to serve as end-of-file. A "long" PA2 can often dump you out of something confusing back to the MTS command interpreter. It's helpful to have a TN3270 emulator that can send PF1-PF16 and PA1-3 for full MTS functionality (TCP3270 works great on Windows while x3270 has been confirmed to work well on UNIX). |
|||||
NOTE: At some point, set the default "kernel" that is run when the system is IPL'd. Sign on as user MTS and do either of: | |||||
# ren *ipl.mp *ipl.0 |
|||||
|
|||||
# dup *ipl.mp *ipl.0 |