📜 ⬆️ ⬇️

Older OS: IBM VM / 370

Hello, dear Khabarchans!
I am interested in "ancient" computers and operating systems. Despite their antiquity, many of them are much more thoughtful than modern systems and are better suited as examples. Windows and Linux have a lot to learn from many outdated OSs.
In my opinion, the most interesting of the old systems are mainframes and late minicomputers (supermini). Unlike early minicomputers, which were often molded on the end user's knee to fit his needs, mainframe and supermini systems were designed from the very beginning for people who do not have a complete understanding of how a computer works or have no time to develop a separate architecture for each task. At the same time, unlike modern systems (4 gigabytes of RAM for the set of this post), mainframes and especially supermini were very limited in resources and did not usually grow.
In this post I will describe the process of installing the operating system VM / 370. VM / 370 is the IBM operating system for IBM System / 370 computers. This is a multiuser OS control program (CP) based on the hypervisor principle: each user is provided with a virtual machine in which he can run the desired OS, in particular the CP hypervisor itself (few modern hypervisors are capable of such a trick) and CMS is a single-user OS, grandmother MS -Dos The direct VM-zVM descendant is still used on IBM System z mainframes. Read more about VM in Wikipedia .
For those who want not to redden, but just to see the final result: there are ready-made images of the system with detailed instructions (though in English). The rest of the article can not read.


Materials and tools


To install and work we need:


Training.


I place all the project files in the / home / link / Programming / LEGACY / SYSTEMS / System360 / vm370habr folder (hereinafter simply vm370habr). Downloaded images are saved in the folder vm370habr / DISTR. In vm370habr I create a subfolder IO.
')
Creating disc images

link@link-K73BY ~/Programming/LEGACY/SYSTEMS/System360/vm370habr/DASD $ dasdinit -z VMREL6 3330-11 VMREL6 HHCDU044I Creating 3330 volume VMREL6: 808 cyls, 19 trks/cyl, 13312 bytes/track HHCDU041I 808 cylinders successfully written to file VMREL6 HHCDI001I DASD initialization successfully completed. link@link-K73BY ~/Programming/LEGACY/SYSTEMS/System360/vm370habr/DASD $ dasdinit -z CPR6L0 3330 CPR6L0 HHCDU044I Creating 3330 volume CPR6L0: 404 cyls, 19 trks/cyl, 13312 bytes/track HHCDU041I 404 cylinders successfully written to file CPR6L0 HHCDI001I DASD initialization successfully completed. link@link-K73BY ~/Programming/LEGACY/SYSTEMS/System360/vm370habr/DASD $ 

Disks in terms of System360 are called DASD . The dasdinit program creates clean disk images. The first image is a model 3330 disk labeled VMREL6. On it we will write the starting system. The second disk is CPR6L0, model 3330-11 (twice as large as capacity), we will install a hypervisor on it. Disks are archived (option -z), this option is better not to use on slow computers.

Monitor configuration file

Create a text file hercules.cnf in the vm370habr folder
with the following content:
 ARCHMODE S/370 #     S/370, CPUMODEL 3158 #  3158. CPUSERIAL 000777 #     . ECPSVM NO #    (     ). MAXCPU 1 #  . NUMCPU 1 #       (, ) OSTAILOR VM #     ""   ,    VM . LOADPARM 0120....#  ,      . MAINSIZE 16 # 16    (   - ). XPNDSIZE 0 #    (CP   ). #     . DEFSYM MyDir /home/link/Programming/LEGACY/SYSTEMS/System360/vm370habr #  TCP/IP   telnet. CNSLPORT 3270 ################################################## ##  ## ################################################## #  System/370   (  ) #   : # -  , # -   , # -  . #        . #        . #   -  . #  - . #   ,    .    #     . 008 3215-C NOPROMPT #     . 009 3215 NOPROMPT #     . 00C 3505 #  . 00D 3525 $(MyDir)/IO/punch ascii crlf #  . 00E 1403 $(MyDir)/IO/printer crlf # . 020-02F 3270 #  . ########  130 3330 $(MyDir)/DASD/CPR6L0 131 3330 $(MyDir)/DASD/VMREL6 ####### 180-18F 3420 * #  . 


Reason: this configuration file should not just be copied, but carefully read, interpret and change to fit your needs (at least, change the path).

Disk tuning


 link@link-K73BY ~/Programming/LEGACY/SYSTEMS/System360/vm370habr $ hercules #...  Command ==>devinit 180 DISTR/starter-3330.aws HHCTA004I 0180: DISTR/starter-3330.aws is a AWS Format tape file HHCPN098I Device 0:0180 initialized 

In another terminal:
 link@link-K73BY ~/Programming/LEGACY/SYSTEMS/System360/vm370habr $ telnet localhost 3270 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hercules version 3.07 built on Jun 19 2011 04:29:21 running on link-K73BY (Linux-3.0.0-26-generic.#43-Ubuntu SMP Tue Sep 25 17:19:22 UTC 2012 x86_64 MP=2) Connected to device 0:0009 

In the window with Hercules:
 Command ==>ipl 180 

(ipl, in mainframe jargon - the same as boot).
The following will appear in the window with telnet:
 VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6 ENTER FORMAT OR ALLOCATE: 


Formatting disks

In System / 370, the concept of data on the disk was different from the modern one: the sizes of sectors could be different even on one track and were often determined by the application, and not by the operating system. Disks connected to a CP can be of two types: resident CP disks (for system information and page files) and user disks, which can be divided into cylinders into several mini-disks. The CMS wrapper breaks all the disk space allocated to it into 800-byte sectors and builds a file system like FAT.
As I understand it, the starting system disk (CPR6L0) is a data disk with a special kernel assembly in the first cylinders. As a resident disk, the startup system (and the new kernel installation) will use the VMREL6 disk. To do this, we need to allocate space on the VMREL6 volume for paging files and temporary disks. I also formatted CPR6L0 because I'm not sure that the images generated by dasdinit are suitable for VM.
On the tape with the image of the launch system there is a formatting program
In the window with telnet:
 ENTER FORMAT OR ALLOCATE:FORMAT FORMAT FUNCTION SELECTED ENTER DEVICE ADDRESS (CCU):131 ENTER DEVICE TYPE:3330-11 ENTER START CYLINDER (XXX) OR "LABEL":000 ENTER END CYLINDER (XXX):807 ENTER DEVICE LABEL:VMREL6 FORMAT STARTED FORMAT DONE 000 NO. PAGE RECORDS WITH READ-CHECK ERRORS ENTER FORMAT OR ALLOCATE:ALLOC ALLOCATE FUNCTION SELECTED ENTER DEVICE ADDRESS (CCU):131 ENTER DEVICE TYPE:3330-11 ENTER DEVICE LABEL:VMREL6 ENTER ALLOCATION DATA FOR VOLUME VMREL6 TYPE CYL CYL .... ... ... PERM 000 012 DRCT 013 016 TEMP 017 201 PERM 202 202 TEMP 203 389 TDSK 390 402 PERM 403 807 END ALLOCATION RESULTS PERM 000 012 DRCT 013 016 TEMP 017 201 PERM 202 202 TEMP 203 389 TDSK 390 402 PERM 403 807 DEVICE 131 VOLUME VMREL6 ALLOCATION ENDED ENTER FORMAT OR ALLOCATE:FORMAT FORMAT FUNCTION SELECTED ENTER DEVICE ADDRESS (CCU):130 ENTER DEVICE TYPE:3330 ENTER START CYLINDER (XXX) OR "LABEL":000 ENTER END CYLINDER (XXX):403 ENTER DEVICE LABEL:CPR6L0 FORMAT STARTED FORMAT DONE 000 NO. PAGE RECORDS WITH READ-CHECK ERRORS 


Here, we first format the future system disk, then allocate sections on it (the selection is taken from the installation instructions) and format the disk for the starting system.

Copy start system

In the window with Hercules enter:
 stop ipl 180 

In telnet appears:
 VM/370 DASD DUMP/RESTORE PROGRAM RELEASE 6 ENTER CARD READER ADDRESS OR CONTROL STATEMENTS ENTER: 

Enter:
 ENTER CARD READER ADDRESS OR CONTROL STATEMENTS ENTER: SYSPRINT 00E ENTER: INPUT 180 3420 ENTER: OUTPUT 130 3330 CPR6L0 ENTER: RESTORE ALL RESTORING CPR6L0 

Wait a few minutes and Hercules starts to issue error messages. The fact is that in the DDR program there is an error that did not affect the behavior on the real hardware, but hangs up emulators.
Quit Hercules with quit and restart Hercules.

Starting and setting up a startup system


Connect the display emulator to Hercules (how to do this - see the emulator manual). In Hercules, type the command "ipl 130" and press the enter key in the display window.
The following image will appear on the display:
In principle, the 3270 display in the CMS version is similar to a regular console. The only serious difference is that the console does not scroll automatically; you must clear the screen with the Clear button. Everything else, in principle, can be found at random.


Setting up a starting system

Building the kernel of the launch system is different in that the addresses of the devices are not firmly sewn into the code, but are set at each start. For my configuration
The answers are:
VM / 370 STARTER SYSTEM RELEASE 6.0
ENTER PRINTER ADDRESS (CUU):
00e
ENTER DEVICE TYPE (1403,1443,3211,3203,3800):
1403
ENTER PUNCH ADDRESS (CUU):
00d
ENTER DEVICE TYPE (2540P, 3525):
3525
ENTER READER ADDRESS (CUU):
00c
ENTER DEVICE TYPE (2501,2540R, 3505):
3505
ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU):
180
ENTER DEVICE TYPE (2401,2415,2420,3420):
3420
ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU):
181
ENTER DEVICE TYPE (2401,2415,2420,3420):
3420
=== Press the Clear key ===
ENTER DEVICE ADDRESS WHERE SYSTEM RESIDENCE WILL BE BUILT (CUU):
131
ENTER DEVICE TYPE:
3330
=== Repeat settings ===
ARE THE ABOVE SETTINGS CORRECT?
YES
=== Screen is cleared ===
CHANGE TOD CLOCK (YES | NO):
13:36:14 NO
13:36:14 START ((COLD | WARM | CKPT | FORCE) (DRAIN)) | (SHUTDOWN):
13:36:21 COLD
13:36:21 DMKLNK117E ​​CPGEN 351 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 DMKLNK117E ​​CPGEN 352 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 DMKLNK117E ​​CPGEN 353 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 AUTO LOGON *** CPGEN USERS = 001 BY SYSTEM
13:36:21


DMKCPI952I 0512K SYSTEM STORAGE

DMKCPI957I STOR 00512K, NUC 156K, DYN 00320K, TRA 008K, FREE 0028K, V = R 00000K
13:36:21 FILES: NO RDR, NO PRT, NO PUN

Now I configure the console:
 spool console start terminal mode vm 

These settings are needed so that when the CMS starts up, the hypervisor transfers control to the console to it. But while we have not yet launched the CMS, the commands to the virtual machine will go into void. Therefore, watch the inscription in the lower right corner of the screen and enter commands only on the CP READ signal. If in the corner of the screen the inscription RUNNING, you need to press the Enter key, and if HOLDING - CLEAR.
Install definition

Enter the QUERY VIRTUAL DASD command to check which drives are connected. The result should be:
 13:52:55 DASD 190 3330 CPR6L0 R/O 085 CYL 13:52:55 DASD 191 3330 CPR6L0 R/W 001 CYL 13:52:55 DASD 194 3330 CPR6L0 R/W 027 CYL 13:52:55 DASD 350 3330 VMREL6 R/W 808 CYL 

Now you need to connect the VMREL6 volume to the virtual machine under the same number as in the real one:
define 350 as 131.

Tape connection

Create an empty scratch.aws file in the vm370habr folder and enter the following commands into Hercules:
 devinit 180 DISTR/ptf-616.aws devinit 180 scratch.aws 

The first tape is the patch system, and the second is the empty tape on which the core will be written.
Now we connect these tapes to the virtual machine. In the display window:
 attach 180 to cpgen as 181 attach 181 to cpgen as 182 


CMS download

Enter the following command in the display window: “ipl 190 parm seg = null”. A message appears: "RELEASE 6 CMS 12/25/78". Press enter key. Now you are running a CMS and you can not worry about losing commands.
Next, create a temporary disk (you need it to build the kernel) with the command “define t3330 192 11” and format it with the command format 192 d. (d - drive letter in CMS). Then everything is just like in DOS. You can assign any label, I chose TMP192 (as in the instructions).
A few words about CMS files: the CMS file name is written like this: after a space, eight characters of the name, eight characters of the extension, a drive letter. That is, as in the early DOS, but with exactly the opposite.

Patch application


Disable write protection on the CMS system disk: “link cmssys 190 190 w write”.
Copy the contents of disk a to disk d with the command “copy * * a = = d” The “equal” symbol in the CMS templates means “no change”.
Copy the patch files to the d: "vmfplc2 load * * d" disk. VMFPLC2 will list the following files:
  LOADING..... 5749010 061638 D1 VMSERV EXEC D1 5749010 EXEC D1 VMFPLC2 MODULE D2 END-OF-FILE OR END-OF-TAPE 

Now apply the patches:
 access 192 c release a vmserv nomemo noipl 

VMSERV will display a greeting and start asking which patches to apply. We need the “5749010” service and the CP VM / 370 patch. “CP BASE STAGING AREA DISK ADDRESS” - 194. Also, answer “yes” to the question “IS THIS THE INITIAL SYSGEN OF THIS SYSTEM?”.
After that, VMSERV will apply the patches to the CP and restart the CMS. When the CMS displays the greeting, connect the temporary disk as drive a: “access 192 a”.

Preparing to build the kernel


Enter "generate srvcpgm". This command will output punch cards with service programs (we will not need them on the emulator). The program will then ask whether to print an example of a user directory. Answer “yes” - the directory may come in handy. And maps with configuration files are not needed - I will give them below.

Kernel configuration


The kernel is configured using several source codes in assembly language and descriptions of the user directory. Those who want to customize them “to taste” will have to dig into manuals for a long time, and I cite
ready option:
 ID CPGEN :READ MYVM DIRECT * CHANGE THE NEXT ENTRY FOR YOUR SYSTEM RESIDENCE DEVICE DIRECTORY 131 3330 VMREL6 * USER OPERATOR OPERATOR 320K 1M ABCDEG ACCOUNT ACT1 OPERATOR CONSOLE 009 3215 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 008 005 CPR6L0 WR READ WRITE LINK MAINT 194 194 RR LINK MAINT 190 190 RR * USER CE CE 320K 1M EFG ACCOUNT ACT2 CE CONSOLE 009 3215 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 013 004 CPR6L0 WR READ WRITE LINK MAINT 194 194 RR LINK MAINT 190 190 RR * USER MAINT CPCMS 720K 16M BCEG ACCOUNT ACT3 MAINT OPTION ECMODE REALTIMER CONSOLE 009 3215 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 190 3330 030 085 CPR6L0 MR READ MDISK 191 3330 017 007 CPR6L0 WR READ MDISK 194 3330 115 027 CPR6L0 MR READ MDISK 199 3330 029 001 CPR6L0 WR READ * MDISK 300 3330 000 808 VMREL6 MW * * THE ABOVE ENTRY SHOULD BE MODIFIED TO MATCH THE ADDRESS AND LABEL * OF YOUR SYSTEM RESIDENCE VOLUME. IT MAY THEN BE USED BY THIS ID * TO LOAD A DIRECTORY AND WRITE A CP NUCLEUS. * DELETE THE ' * ' (IN FRONT OF MDISK) ALSO. * CHANGE THE '404' TO A '808' IF YOURS IS A 3330-11 * ***** USER IVPM1 IVPASS 320K 16M G ACCOUNT ACT4 IVPM1 CONSOLE 009 3210 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 001 001 CPR6L0 WR READ WRITE LINK MAINT 194 194 RR LINK MAINT 190 190 RR * USER IVPM2 IVPASS 320K 1M G ACCOUNT ACT5 IVPM2 CONSOLE 009 3210 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 002 001 CPR6L0 WR READ WRITE LINK MAINT 194 194 RR LINK MAINT 190 190 RR * USER RSCS RSCS 512K ACCOUNT ACT6 RSCS OPTION ECMODE CONSOLE 009 3215 SPOOL 001 2540 READER A SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 003 005 CPR6L0 WR READ WRITE LINK MAINT 190 190 RR DEDICATE 0B1 078 DEDICATE 0B2 079 DEDICATE 0B3 07A * USER ECMODE ECMODE 512K 1M G ACCOUNT ACT7 ECMODE OPTION ECMODE REALTIMER CONSOLE 009 3215 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L MDISK 191 3330 024 005 CPR6L0 WR READ WRITE LINK MAINT 194 194 RR LINK MAINT 190 190 RR * USER OPERATNS OPERATNS 512K 1M BCEG ACCOUNT ACT8 OPERATNS CONSOLE 009 3215 SPOOL 00C 2540 READER A SPOOL 00D 2540 PUNCH P SPOOL 00E 1403 L LINK MAINT 190 190 RR **************** * * THE FOLLOWING MINIDISK ENTRY IS PROVIDED AS AN EXAMPLE OF * THE SPACE RECOMMENDED FOR AN IPCS VIRTUAL MACHINE. * IF YOU INTEND TO USE THE OPERATNS USERID AS YOUR IPCS * VIRTUAL MACHINE, YOU SHOULD CHANGE THE FOLLOWING STATEMENT * TO ALLOCATE MINIDISK SPACE ON ONE OF YOUR SYSTEM DASD VOLUMES. * * MDISK 191 3330 XXX 015 YYYYYY WR READ WRITE * **************** * * * CYLINDERS 142 TO 403 ARE UNUSED AND MAY BE USED FOR * ANY OTHER VIRTUAL MINI DISK SPACE. IT CAN ALSO BE * USED FOR PAGING, SPOOLING OR T-DSK SPACE. * * * :READ DMKRIO ASSEMBLE DMKRIO CSECT ******** Device definitions: * ****** Teletype RDEVICE ADDRESS=008,DEVTYPE=3215 * ****** Card reader RDEVICE ADDRESS=00C,DEVTYPE=3505,CLASS=(R) * ****** Card punch RDEVICE ADDRESS=00D,DEVTYPE=3525,CLASS=(P) * ****** Printer RDEVICE ADDRESS=00E,DEVTYPE=1403,FEATURE=UNVCHSET,CLASS=(L) * ****** Terminals RDEVICE ADDRESS=(020,16),DEVTYPE=3277 * ****** DASDs: * **** System disks. RDEVICE ADDRESS=(130,2),DEVTYPE=3330,MODEL=11 * **** User disks. RDEVICE ADDRESS=(150,8),DEVTYPE=3330,MODEL=11 * ****** Tapes. RDEVICE ADDRESS=(180,16),DEVTYPE=3420,MODEL=8,FEATURE=DUALDENS * ******** Control unit definitions: * ****** Printer (I don't know if this is requed): RCTLUNIT ADDRESS=000,CUTYPE=3811 * ****** Slow IO: RCTLUNIT ADDRESS=008,CUTYPE=2821 * ****** Terminals: RCTLUNIT ADDRESS=020,CUTYPE=3272,FEATURE=16-DEVICE * ****** System disks: RCTLUNIT ADDRESS=130,CUTYPE=3880,FEATURE=16-DEVICE * ****** User disks: RCTLUNIT ADDRESS=150,CUTYPE=3880,FEATURE=16-DEVICE * ****** Tapes: RCTLUNIT ADDRESS=180,CUTYPE=3803,FEATURE=16-DEVICE * ******** Channel definitions. RCHANNEL ADDRESS=0,CHTYPE=MULTIPLEXOR RCHANNEL ADDRESS=1,CHTYPE=BLKMPXR * RIOGEN CONS=008 END :READ DMKSYS ASSEMBLE SYS TITLE 'DMKSYS FOR 3330 RELEASE 6' 00001000 DMKSYS CSECT 00002000 SYSOWN (VMREL6,TEMP) 00003000 SYSRES SYSVOL=VMREL6,SYSRES=131,SYSTYPE=3330, X00004000 SYSNUC=7,SYSWRM=10,SYSERR=11,SYSCKP=202 00005000 SYSMON AUTO=NO 00006000 SYSJRL 00007000 SYSCOR RMSIZE=16M,AP=NO 00008000 SYSOPR SYSOPER=OPERATOR,SYSDUMP=OPERATNS 00009000 SYSTIME ZONE=5,LOC=WEST,ID=EST 00010000 SYSLOCS 00011000 END 00012000 :READ DMKSNT ASSEMBLE *. 00003000 * MODULE NAME - 00004000 * DMKSNT 00005000 * 00006000 * FUNCTION - 00007000 * 00008000 * THIS MODULE WILL BE ASSEMBLED BY THE INSTALLATION SYSTEM 00009000 * PROGRAMMER. IT WILL DESCRIBE THE THE SYSTEM TO BE SAVED VIA 00010000 * THE 'SAVESYS' COMMAND AND TO BE IPL'ED BY NAME. SHARED SEG- 00011000 * MENTS MAY BE SPECIFIED. THESE SEGMENTS MUST CONSIST OF 00012000 * ALL REENTRANT CODE. 00013000 * 00014000 * 00015000 * INPUT TO THE NAMESYS MACRO IS SPECIFIED IN THE FOLLOWING 00016000 * FORMAT: 00017000 * 00018000 * LABEL NAMESYS SYSSIZE=NNNK,SYSNAME=CCCCCC,VSYSRES=CCCCCC, 00019000 * VSYSADR=XXX,SYSVOL=CCCCCC,SYSCYL=NNN, 00020000 * SYSSTRT=(CC,P),SYSPGCT=NN, 00021000 * SYSPGNM=(NN,NN,NN-NN,......), 00022000 * SYSHRSG=(N,N,...) 00023000 * 00024000 * WHERE: 00025000 * 00026000 * SYSSIZE - THIS IS THE MINUMUM STORAGE SIZE NEEDED TO 00027000 * OPERATE THE SAVED SYSTEM. 00028000 * SYSNAME - IS THE NAME GIVEN THE SYSTEM TO BE USED FOR 00029000 * IDENTIFICATION BY 'SAVESYS' AND 'IPL'. 00030000 * VSYSRES - IS THE VOLUME SERIAL OF THE DASD CONTAINING THE 00031000 * SYSTEM TO BE SAVED 00032000 * VSYSADR - IS THE VIRTUAL ADDRESS OF THE DASD CONTAINING 00033000 * THE SYSTEM. 00034000 * SYSCYL - THE CYLINDER ADDRESS OF THE 'MINI-DISK' 00035000 * FOR THE SYSTEM TO BE SAVED. 00036000 * SYSVOL - IS THE VOLUME SERIAL OF THE DASD DESIGNATED TO 00037000 * RECEIVE THE SAVED SYSTEM. THIS MUST BE A 00038000 * 'CP-OWNED' VOLUME. 00039000 * SYSSTRT - THIS DESIGNATES THE STARTING CYLINDER AND PAGE 00040000 * ADDRESS ON 'SYSVOL' THAT THIS NAMED SYSTEM IS TO 00041000 * BE SAVED. DURING THE SAVESYS AND IPL PROCESSING, 00042000 * THIS WILL BE USED TO MAKE UP THE 'CCPD' ADDRESS 00043000 * FOR THE DASD OPERATIONS. THESE NUMBERS ARE TO 00044000 * SPECIFIED IN DECIMAL. 00045000 * SYSPGCT - IS THE TOTAL NUMBER OF PAGES TO BE SAVED. 00046000 * SYSPGNM - THESE ARE THE NUMBERS OF THE PAGES TO BE SAVED. 00047000 * SPECIFICATION MAY BE DONE AS GROUPS OF PAGES OR 00048000 * AS SINGLE PAGES. FOR EXAMPLE - IF PAGES 0,4, AND 00049000 * 10 THRU 13 ARE TO BE SAVED, USE THE FORMAT: 00050000 * SYSPGNM=(0,4,10-13). 00051000 * SYSHRSG - THESE ARE THE SEGMENT NUMBERS DESIGNATED AS 00052000 * SHARED. THE PAGES IN THESE SEGMENTS WILL BE SET 00053000 * UP AT IPL TIME TO BE USED BE ANY USER 00054000 * IPL'ING BY THIS NAME. 00055000 * 00056000 * THE FOLLOWING IS A SAMPLE OF INPUT FOR THIS MODULE: 00057000 * 00058000 * DMKSNTBL CSECT 00059000 * FSTNAME NAMESYS SYSSIZE=256K,SYSNAME=CMS,VSYSRES=CPDSK1, 00060000 * SYSVADR=190,SYSCYL=100,SYSVOL=CPDSK2, 00061000 * SYSSTRT=(400,1),SYSPGCT=10, 00062000 * SYSPGNM=(0-5,10-13),SYSHRSG=(1,2) 00063000 * 00064000 * ATTRIBUTES - 00065000 * 00066000 * PAGEABLE 00067000 * 00068000 * ENTRY POINTS - 00069000 * 00070000 * DMKSNTBL 00071000 * 00072000 * NOTES - 00073000 * 00074000 * THERE IS NO EXECUTABLE CODE IN THIS MODULE. 00075000 * 00076000 * 00077000 *. 00078000 EJECT 00079000 * 00080000 *********************************************************************** 00081000 * 00082000 * THE FOLLOWING ENTRIES ARE BASED ON THE INFORMATION INCLUDED 00083000 * IN THE SAMPLE DMKSYS PROVIDED WITH THE STARTER SYSTEM, 00084000 * AND THE SAMPLE ALLOCATIONS PROVIDED IN THE SYSTEM 00085000 * GENERATION PROCEDURE. 00086000 * 00087000 *********************************************************************** 00088000 * 00089000 SPACE 00090000 DMKSNTBL CSECT 00091000 SPACE 00092000 * 00093000 * THE SPACE FOR CMS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00094000 * CYL 1, PAGE 01 TO CYL 1, PAGE 34 (34 PAGES) 00095000 * TOTAL = 34 PAGES 00096000 * 00097000 CMS NAMESYS SYSSIZE=256K,SYSNAME=CMS, X00098000 VSYSADR=190,SYSVOL=VMREL6,SYSCYL=030,SYSSTRT=(001,1), X00099000 SYSPGCT=33,SYSPGNM=(0-32),SYSHRSG=(1),VSYSRES=CPR6L0 00100000 EJECT 00101000 * 00102000 * THE SPACE FOR CMSSEG IS ALLOCATED ON VMREL6, AS FOLLOWS: 00103000 * CYL 1, PAGE 35 TO CYL 1, PAGE 51 (17 PAGES) 00104000 * TOTAL = 17 PAGES 00105000 * 00106000 CMSSEG NAMESYS SYSNAME=CMSSEG,SYSVOL=VMREL6,SYSCYL=, X00107000 SYSSTRT=(001,35),SYSPGCT=16,SYSHRSG=(16), X00108000 SYSPGNM=(256-271),SYSSIZE=64K,VSYSRES=,VSYSADR=IGNORE 00109000 EJECT 00110000 * 00111000 * THE SPACE FOR CMSVSAM IS ALLOCATED ON VMREL6, AS FOLLOWS: 00112000 * CYL 1, PAGE 52 TO CYL 1, PAGE 57 ( 6 PAGES) 00113000 * CYL 2, PAGE 01 TO CYL 2, PAGE 57 (57 PAGES) 00114000 * CYL 3, PAGE 01 TO CYL 3, PAGE 34 (34 PAGES) 00115000 * TOTAL = 97 PAGES 00116000 * 00117000 CMSVSAM NAMESYS SYSNAME=CMSVSAM,SYSVOL=VMREL6,SYSPGNM=(272-367), X00118000 SYSSTRT=(001,52),SYSPGCT=96,SYSSIZE=384K,SYSCYL=, X00119000 SYSHRSG=(17,18,19,20,21),VSYSRES=,VSYSADR=IGNORE 00120000 EJECT 00121000 * 00122000 * THE SPACE FOR CMSAMS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00123000 * CYL 3, PAGE 35 TO CYL 3, PAGE 57 (23 PAGES) 00124000 * CYL 4, PAGE 01 TO CYL 4, PAGE 57 (57 PAGES) 00125000 * CYL 5, PAGE 01 TO CYL 5, PAGE 49 (49 PAGES) 00126000 * TOTAL = 129 PAGES 00127000 * 00128000 CMSAMS NAMESYS SYSNAME=CMSAMS,SYSVOL=VMREL6,SYSPGNM=(368-495), X00129000 SYSSTRT=(003,35),SYSPGCT=128,SYSSIZE=448K,SYSCYL=, X00130000 SYSHRSG=(23,24,25,26,27,28),VSYSRES=,VSYSADR=IGNORE 00131000 EJECT 00132000 * 00133000 * THE SPACE FOR CMSDOS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00134000 * CYL 5, PAGE 50 TO CYL 5, PAGE 57 ( 8 PAGES) 00135000 * CYL 6, PAGE 01 TO CYL 6, PAGE 01 ( 1 PAGE ) 00136000 * TOTAL = 9 PAGES 00137000 * 00138000 CMSDOS NAMESYS SYSNAME=CMSDOS,SYSVOL=VMREL6,SYSHRSG=(31), X00139000 SYSSTRT=(005,050),SYSPGCT=8,SYSSIZE=32K,SYSCYL=, X00140000 SYSPGNM=(496-503),VSYSRES=,VSYSADR=IGNORE 00141000 EJECT 00142000 * 00143000 * THE SPACE FOR INSTVSAM IS ALLOCATED ON VMREL6, AS FOLLOWS: 00144000 * CYL 6, PAGE 02 TO CYL 6, PAGE 10 ( 9 PAGES) 00145000 * TOTAL = 9 PAGES 00146000 * 00147000 INSTVSAM NAMESYS SYSNAME=INSTVSAM,SYSVOL=VMREL6,SYSHRSG=(254), X00148000 SYSSTRT=(006,002),SYSPGCT=8,SYSSIZE=32K,SYSCYL=, X00149000 SYSPGNM=(4064-4071),VSYSRES=,VSYSADR=IGNORE 00150000 * 00151000 EJECT 00152000 * 00153000 * THE SPACE FOR 3800 PRINTER IMAGES ON VMREL6 IS ALLOCATED: 00154000 * CYL 6, PAGE 11 TO CYL 6, PAGE 16 ( 6 PAGES) 00155000 * TOTAL = 6 PAGES 00156000 * 00157000 NAME3800 CPNAME=IMAG3800,SYSVOL=CPR6L0,SYSSTRT=(006,11), X00158000 SYSPGCT=5 00159000 EJECT 00160000 * 00161000 * THE FOLLOWING SPACE IS AVAILABLE FOR SAVED SYSTEMS ON VMREL6: 00162000 * CYL 6, PAGE 17 TO CYL 6, PAGE 57 (41 PAGES) 00163000 * TOTAL = 47 PAGES 00164000 * 00165000 END 00166000 


Copy all this text into the sysconf.txt file.

Kernel build


Enter in the console Hercules: "devinit 00c sysconf.txt ascii eof".
And on the display: "generate vm370"
GENERATE will ask for the name of the file with the directory (I have MYVM DIRECT). Then the configuration files will be compiled, and GENERATE will ask whether we are going to use a multiprocessor system or the V = R option. Answer no. Then there will be a lot of text and (if you're lucky) at the end will appear: "NUCLEUS LOADED ON VMREL6".
Save the kernel memory card and turn off the startup system:
 close ptr 15:06:30 IPL 190 PARM SEG=NULL 15:06:30 PRT FILE 0019 TO CPGEN COPY 01 NOHOLD RELEASE 6 CMS 12/25/78 access 194 a CMSSEG SYSTEM NAME 'NULL ' NOT AVAILABLE. R; T=0.01/0.01 15:06:36 read cpipcs map a RECORD LENGTH IS '132' BYTES. R; T=0.25/1.24 15:06:50 drain all 15:08:18 RDR 00C DRAINED SYSTEM 15:08:18 PUN 00D DRAINED SYSTEM CLASS = A SEP 15:08:18 PRT 00E DRAINED SYSTEM CLASS = A SEP R; T=0.01/0.02 15:08:18 shutdown DMKCKP960I SYSTEM WARM START DATA SAVED DMKCKP961W SYSTEM SHUTDOWN COMPLETE 


Disk partitioning


In order to use the CPR6L0 drive, you need to remap it. Load FORMAT / ALLOCATE in the same way as when copying the system.
 VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6 ENTER FORMAT OR ALLOCATE:ALLOCATE ALLOCATE FUNCTION SELECTED ENTER DEVICE ADDRESS (CCU):130 ENTER DEVICE TYPE:3330 ENTER DEVICE LABEL:CPR6L0 ENTER ALLOCATION DATA FOR VOLUME CPR6L0 TYPE CYL CYL .... ... ... DRCT 000 000 PERM 001 403 END ALLOCATION RESULTS DRCT 000 000 PERM 001 403 DEVICE 130 VOLUME CPR6L0 ALLOCATION ENDED 

Stop the program with the stop command.

Starting a new system


Boot from the system disk with the IPL 131 command. In the Hercules window the prompt will appear:
 NOW 14:14:40 EST MONDAY 08/26/13 CHANGE TOD CLOCK (YES NO) 

You are currently working in the integrated console. From the point of view of VM / CMS, this is the same console as the telnet connection. To enter text into the built-in console, enter it into the console of Hercules through a slash ("/"):
 CHANGE TOD CLOCK (YES NO) : /(0008) no 14:17:49 START ((COLD WARM CKPT FORCE) (DRAIN)) (SHUTDOWN) : /(0008) cold 14:17:51 AUTO LOGON *** OPERATOR USERS = 001 BY SYSTEM DMKCPI957I STOR 16384K, NUC 224K, DYN 14900K, TRA 240K, FREE 1020K, V=R 00000K 14:17:51 FILES: NO RDR, NO PRT, NO PUN 14:17:51 FORMATTING ERROR RECORDING AREA 


Formatting minidiskov

Everything is simple:
  /(0008) ipl 190 parm seg=null 14:22:39 RELEASE 6 CMS 12/25/78 V /(0008) access (nodisk CMSSEG SYSTEM NAME 'NULL ' NOT AVAILABLE. DISK 'A' NOT ACCESSED. DISK 'A' NOT ACCESSED. R; T=0.01/0.01 14:22:49 /(0008) format 191 a DMSFOR603R FORMAT WILL ERASE ALL FILES ON DISK 'A(191)'. DO YOU WISH TO CONTINUE? (YES NO): /(0008) yes DMSFOR605R ENTER DISK LABEL: /(0008) OPR191 FORMATTING DISK 'A'. HHCCP048I 0130:CCW=07F06608 40100006=>00000FFF 00000000 00000000 000F8918 ..............i. HHCCP075I 0130:Stat=0E00 Count=0000 HHCCP076I 0130:Sense=80000000 380C1204 00000000 00000000 00000000 00000000 HHCCP077I 0130:Sense=CMDREJ '5' CYLINDERS FORMATTED ON 'A(191)'. R; T=0.01/0.11 14:23:13 /(0008) logoff 14:23:34 CONNECT= 00:05:42 VIRTCPU= 000:00.06 TOTCPU= 000:00.39 14:23:34 LOGOFF AT 14:23:34 EST MONDAY 08/26/13 VM/370 ONLINE /(0008) logon maint ENTER PASSWORD: XXXXXXXX /(0008) cpcms LOGON AT 14:23:45 EST MONDAY 08/26/13 /(0008) define storage 2m STORAGE = 02048K /(0008) ipl 190 parm seg=null RELEASE 6 CMS 12/25/78 /(0008) access (nodisk CMSSEG SYSTEM NAME 'NULL ' NOT AVAILABLE. DISK 'A' NOT ACCESSED. DISK 'A' NOT ACCESSED. R; T=0.01/0.01 14:25:26 /(0008) format 191 a DMSFOR603R FORMAT WILL ERASE ALL FILES ON DISK 'A(191)'. DO YOU WISH TO CONTINUE? (YES NO): /(0008) yes DMSFOR605R ENTER DISK LABEL: /(0008) MNT191 FORMATTING DISK 'A'. HHCCP048I 0130:CCW=07F07BB0 40100006=>00000FFF 00000000 00FFF280 000F6F38 ..........2...?. HHCCP075I 0130:Stat=0E00 Count=0000 HHCCP076I 0130:Sense=80000000 38171204 00000000 00000000 00000000 00000000 HHCCP077I 0130:Sense=CMDREJ '7' CYLINDERS FORMATTED ON 'A(191)'. R; T=0.02/0.26 14:26:30 /(0008) logout CONNECT= 00:02:49 VIRTCPU= 000:00.07 TOTCPU= 000:00.52 LOGOFF AT 14:26:35 EST MONDAY 08/26/13 VM/370 ONLINE /(0008) logon operator ENTER PASSWORD: XXXXXXXX /(0008) operator 14:28:10 LOGON AT 14:28:10 EST MONDAY 08/26/13 14:28:10 LINE 008 LOGON AS OPERATOR USERS = 002 /enable all ===    === 



MAINT :
 LOGON MAINT ENTER PASSWORD: DASD 190 LINKED R/W; R/O BY OPERATOR DASD 194 LINKED R/W; R/O BY OPERATOR LOGON AT 14:30:29 EST MONDAY 08/26/13 CP IPL 190 PARM SEG=NULL RELEASE 6 CMS 12/25/78 CMSSEG SYSTEM NAME 'NULL ' NOT AVAILABLE. R; T=0.01/0.01 14:30:54 

— CPCMS.
MAINT ( ):
 devinit 180 ./DISTR/ptf-616.aws HHCTA101I 0180: AWS Tape ./DISTR/starter-3330.aws closed HHCTA004I 0180: ./DISTR/ptf-616.aws is a AWS Format tape file HHCPN098I Device 0:0180 initialized /(0008) attach 180 to maint as 181 14:32:43 14:32:43 TAPE 180 ATTACH TO MAINT 181 


:
 vmfplc2 rew R; T=0.01/0.01 14:33:26vmfplc2 load LOADING..... 5749010 061638 A1 VMSERV EXEC A1 5749010 EXEC A1 VMFPLC2 MODULE A2 END-OF-FILE OR END-OF-TAPE R; T=0.02/0.10 14:33:33 access 191 c '191 A ' RELEASED R; T=0.01/0.01 14:34:16 vmserv restart 5749010 cp nomemo 

. — , , . .

CMS


CP , — Named Systems. — CMS. CMS , :
 define storage 2m STORAGE = 02048K CP ENTERED; DISABLED WAIT PSW '00020000 00000000' IPL 190 PARM SEG=NULL RELEASE 6 CMS 12/25/78 CMSSEG SYSTEM NAME 'NULL µ' NOT AVAILABLE. R; T=0.01/0.01 14:42:14 access 190 B/A B (190) R/O 190 ALSO = S-DISK cmsxgen 100000 SYSTEM SAVED CMSXGEN COMPLETE define storage 960k STORAGE = 00960K CP ENTERED; DISABLED WAIT PSW '00020000 00000000' IPL 190 RELEASE 6 CMS 12/25/78 savesys cms SYSTEM SAVED RELEASE 6 CMS 12/25/78 


, CP/CMS . , shutdown. , warm start.
PS: -, . .
IPL-!

PS: — , .

Update: hsmishka . System/370:
image
, Bellcore.


Bugfix: . , .

Source: https://habr.com/ru/post/191602/


All Articles