The VM/370 Community Edition offers a remarkably accessible entry point into the world of mainframe computing from the 1970s. This guide walks through setting up an emulated environment, writing and running programs in vintage languages like BASIC and FORTRAN, and navigating the unique file system and command structure of IBM's classic operating system.
The VM/370 Community Edition presents a unique opportunity to experience a pivotal era in computing history. This operating system, originally developed by IBM in the early 1970s, represents a foundational layer for mainframe virtualization and time-sharing. The community edition, available through projects like the one at fun-with-old-mainframes.github.io, allows modern enthusiasts to run this historic software on contemporary hardware, either through Docker containers or the Hercules emulator. This isn't merely an exercise in nostalgia; it's a practical exploration of computing paradigms that shaped the industry and continue to influence system design today.
Setting up the environment is straightforward for those familiar with containerization or system emulation. The Docker approach provides the quickest path: a single command docker run -n vm370 -p 3270:3270 rbanffy/vm370ce launches a fully configured VM/370 instance, accessible via an x3270 terminal emulator on port 3270. For those preferring a native installation, the Hercules emulator—available through most package managers or from its GitHub repository—requires manual configuration guided by resources at vm370.org. The setup process itself is a lesson in historical computing constraints: mainframes weren't designed with user-friendly installers, and the configuration reflects an era when system operators had deep, specialized knowledge of hardware and software interactions.
Once the system boots, the login process immediately highlights the security philosophy of the 1970s. The default user CMSUSER has the password CMSUSER—a practice that would be unthinkable today but was reasonable in an era of isolated, physically secured machines. The system's response to login is telling: pressing ENTER triggers PROFILE EXEC, a startup script analogous to modern shell profiles. Examining it with TYPE PROFILE EXEC reveals the terse, command-line nature of the system. Commands and filenames are case-insensitive, a design choice reflecting the limitations of early terminals and the need for consistency across diverse input devices.
The programming environment showcases the era's language landscape. BASIC, a language designed for accessibility, is available for writing simple programs. Creating a "Hello World" program involves the EDIT command, which launches a line editor reminiscent of vi but with its own idiosyncrasies. The editor operates in a mode where each line is entered separately, automatically converted to uppercase (as indicated by CASE=U), and saved with a specific file type—HELLO BASIC creates a file with the name HELLO and type BASIC. Running the program with BASIC HELLO executes the interpreter, which displays the output and crucial performance metrics: CPU time used (0.84 seconds) and total execution time (2.59 seconds). These metrics were essential in an era of expensive, shared computing resources.
FORTRAN, the workhorse of scientific and engineering computing, demonstrates the compilation and execution workflow. The system includes a sample HELLO FORTRAN program. Compiling it with FORTRAN HELLO produces two output files: a formatted listing (HELLO LISTING) and a text file (HELLO TEXT). The listing is a detailed compilation report, formatted for 132-column printers—the standard for mainframe output devices. It includes the source code, a symbol map, and statistics, providing a complete audit trail of the compilation process. To run the compiled code, you must first LOAD HELLO and then START it. The output, by default, is redirected to a system file (FT06F001), a legacy of batch processing where programs were run with predefined input/output configurations specified in Job Control Language (JCL). The FILEDEF command allows redirection of this output to the terminal, illustrating how interactive use was an adaptation of a primarily batch-oriented system.
The file system in VM/370 is a study in historical storage management. Files are organized on virtual disks, each with an address (like 191) and a label (like CMS190). The QUERY DISK command lists accessible disks, and LISTFILE * * [disk] shows all files on a specific disk. Disks D, E, F, and G are empty by default, while disk S (or 190) contains system utilities like ACCESS, EDIT, and QUERY. Files have types that indicate their purpose: MODULE for binary executables, BASIC or FORTRAN for source code, and VMARC for archives (analogous to ZIP files). The DIR command can filter by type, such as DIR * MODULE S to list all executable modules.
Uploading files to the mainframe is done via the x3270 client's file transfer function, which supports binary transfer for archives. The VMARC utility is used to unpack these archives. For example, downloading the GAMES.VMARC file from the h390-vm group and unpacking it with VMARC UNPACK GAMES VMARC D TICTOE MODULE D installs a Tic Tac Toe game. Running TICTOE launches the game, demonstrating that even vintage systems had entertainment value. Other archives, like those from the VM-370-Games GitHub repository, contain more complex games, including a FORTRAN implementation of ZORK, though running it may require additional configuration.
Creating a personal user account in VM/370 is conceptually different from modern systems. Instead of creating a user, you create a virtual machine (VM) with its own resources and permissions. This involves allocating storage, formatting disks, and configuring the VM's environment—a process that reflects the mainframe's role as a host for multiple isolated virtual machines. For those wanting to personalize their experience, renaming the default CMSUSER VM and changing its password is possible by logging in as MAINT and editing the USER DIRECT directory, though this requires careful handling of the system's administrative tools.
The guide also hints at advanced capabilities, such as networking via TCP/IP (a later addition to mainframes), printing to virtual or physical printers, and connecting multiple Hercules instances for shared storage or distributed computing. These features underscore the flexibility of the VM/370 architecture, which was designed to support diverse workloads and user environments.
In essence, the VM/370 Community Edition is more than a historical artifact; it's a living laboratory for understanding the foundations of virtualization, time-sharing, and system administration. By engaging with its command-line interface, file system, and programming tools, users gain insight into the design decisions that shaped modern computing. The experience is a reminder that today's seamless, user-friendly systems are built on decades of iterative development, each layer addressing the limitations and possibilities of its time.

Comments
Please log in or register to join the discussion