Fun things to do with your VM/370 CE machine – Fun with big computers
rbanffy.github.io
rbanffy.github.io
The mini disk letters were your command search order, like unix path. But internally it was a linked list so you could rearrange the order it you wanted to.
File mode 0 files were supposedly private, you couldn't see them if you accessed the disk read only. But the access command ran from the transient area, so you could load it, no-op the test for char '0', and then execute it to access the file mode 0 files on a read only disk.
Mini disks supported sparse files. So if operations didn't migrate mini disks correctly, you could put a 100 MB file on your 5 MB mini disk (this was the 70's), that would stop them.
There was a diagnose command to read your 3270 terminal screen including the field attribute chars which you could replace with markup tags so you get screenshots for your documentation.
There was a lot of hacking going on in IBM at the time. Just wasn't public. If Peter Capek's VMNewsletters and some of the internal discussion groups were ever published, you would know.
For programming, they taught us enough to use the XEDIT line editor, the Fortran compiler, CATLIST for the directory.
You'd apply these in rote fashion, the goal was to get through your programming class. It wasn't an a OS design or computer architecture class. It was "calculate Easter Sunday in Fortan" class.
Our Fortran (F77) used channels 4 and 5 for console in and out (which could probably be redirected using some command, no doubt. I don't know if it was. NOS thing or some Fortran thing that we used 4 and 5.
But it had these other things that you'd touch on, if you were geeking a bit in the community. Things like Direct Storage using the ATTACH command (whatever that did), PROC files (scripts), PROC file libraries, DAYFILE (basically your job/command history).
I would like to have a deeper understanding about some of those concepts of how that OS worked, design choices they needed to make, etc.
Today, "everything" is UNIX. Or certainly viewed through UNIX glasses. Even Windows is UNIX today.
I used to work in the computer labs and would regularly have to tell freshmen Fortran students to indent every line one more column.
And the Community Edition even has a handy DIR command for you.
This document has a lot of things left to add - the machines can really be a lot more interesting. So far, I haven't figured out how to connect my real printer over the network, the other machine with shared disks but no OS, and even creating a new VM for our user. I also know there are a lot of other interesting things on the base CE image that can be super cool to show a newcomer.
CMS EDIT was designed when the 3277 was the standard terminal. Those things had a SYSTEM AVALIABLE indicator on the center of the right side of the screen, outside the text area. That was the current-libe marker! When the 3278 came out, all the indicators moved to before the text area, but by then, everyone had moved to EDGAR or XEDIT.
A guide like this is quite handy for an old hand at computers who finds mainframes completely alien. It's even odder that this old version of VM was open, and yet that never really gained much traction outside of diehards keeping the flame alive. I wonder what the computing world would look like today if VM had been put under a copyleft license? I also wonder if an XT/370 could run this thing natively, or if the 370 side was too slow/lacking needed features.
One of the software guys introduced me to VM. Once I got my head around that, he demonstrated running VM itself - within a VM. My head exploded.
1. Press Return before logging in. Simple to remember, but if you don't, you get...nothing after typing LOGON CMSUSER.
2. Use model 3278-4 (which is 80 columns by 43 rows) otherwise you get mystery blank screens.
3. There is no autoscroll. After 60 seconds it will timeout and scroll another screenful. Otherwise press PA2 for the next screenful (useful for lengthy LIST commands.) To interrupt very long output, type HT to halt text. NOTE: PA2 not PF2. See "MORE..." at bottom right indicating there is more text to scroll.
4. The CLI is an overlay mount of CP and CMS. If CMS doesn't recognize a command, it gives it to CP to process. Compare Q DISK and Q DASD, the Q DISK result it from CMS, the Q DASD result is from CP.
5. Use LIST (ISODATE) for more details and modify dates. Abbreviate as L (ISO.
6. Redirect Fortran unit 6 to the terminal with FILEDEF 6 TERMINAL (BLKSIZE 133) and you may be unsurprised to learn this took me three days of searching to find. Now your LOAD HELLO (START will produce output on your screen, not a file.
7. There is GCC with two available runtimes; BISON, DIFF, DIFF3, as well as PL/I, PL/360, Pascal and WATFIV for those old enough to remember the Waterloo Fortran compiler which had actual usable error messages. MINIZIP is there too. No APL, unfortunately.
8. I never did manage to get Hercules to exchange files via the Punch or Printer logical units. So, no file exchange at all. If there is a way to get ascii files or binary files in or out that would be helpful.
9. The 3270 terminal display is programmed with special character pairs indicating fixed text, text fields changeable, double-wide text, etc. So far I haven't found a way for a C or Fortran program to send and receive text from the terminal that can completely control the screen and read back the contents. (A program running under CMS of course.)
I am not surprised at all. This page is more or less the total achievement of a couple years of playing with the system.
> If there is a way to get ascii files or binary files in or out that would be helpful.
There is $INDFILE, which, IIRC, is something from the PC/370 era. The x3278 terminal uses it for its send/receive file facility. $INDFILE doesn't come with plain VM/370 R6, but is part of CE.
Then engineering got a VAX and everything moved to VMS.
Notice in EE the use of [F3] to exit as in the original CUA. As I said at https://news.ycombinator.com/item?id=50026580 .
Unix called it 'text' too. That's why the ETXTBUSY error's traditional message string is "Text file busy".
It's not losing the first character from FORMAT because of some magic line printer discard for the first character. It's losing the first character because you don't understand FORTRAN. FORMAT, as you can see in that example program, uses field descriptors to describe formats. It's losing the 'H' from 'HELLO' because that character means a 'Hollerith string' follows it, which in your case is the Mockney 'ELLO WORLD'. (-: You need an extra 'H', to start with.
In Unix terms, this is akin to the classic mistake of using printf() instead of puts() for your Hello program, and using a percent character in your string. In BASIC terms, this is PRINT USING, not PRINT. And yes, that does mean that technically you are holding it wrong. The text to write should be in the list given to WRITE, and FORMAT should just be specifying the field descriptor.
Only then do you get to the fact that the first column of formatted output specifies the number of printer lines to advance. So you are holding it doubly wrong. (-: There should be a space after the 'H' denoting your Hollerith string that precedes the 'H' of your 'Hello'. Notice that IBM's program has a space between the field descriptor "14H" (14 character Hollerith string) and "PROGRAM ERROR" (13 character string). That's not just random whitespace. It's the first character of the string, it means 1 line of vertical space, and the string is actually " PROGRAM ERROR".
You can get several native versions of REXX for Linux-based operating systems and the BSDs, including ObjectREXX and Regina.
* https://pkgsrc.se/lang/rexx-regina
* https://pkgsrc.se/lang/oorexx
* https://pkgsrc.se/lang/rexx-imc
It's 2026, and I just wrote about FORTRAN 66. Good heavens!
Thank you for the clarifications. I'll dig a little more and add that to the article. I learned Fortran 77 a long time ago, but I never used Fortran 66.
I can remember my Fortran teacher illustrating these with little hand gestures as if he was holding the knob on a typewriter carriage.
I also remember someone at college who had a grudge against the computer minions behind the glass who took your printout and filed it in a cubbyhole for you to pick up. He would run a job to repeatedly print
+________ (…132 total underscores)
which had the effect of cutting the paper off! The paper would just drop out of the bottom of the printer, and the minions had to open up the printer and refeed the paper.
Two problems:
1) The coolest thing about old / unique / non-standard OS is the features. Yes I get it that noobs need to log in and compile hello world but what turns the experience from an hour of fun into months or years of fun is crazy stuff thats just not present in the modern world like JES2 and ISMF (Well... SMF) and CICS (Well... KICKS) and doing weird things with ISAM (like what if your OS by default had a builtin database as a primitive structure just like how unix has built in text processing?)
I think people get turned off by "well OK I can compile and run FORTRAN just like on my emulated PDP-8 or my emulated Nova so why use, in this case, VM/370?" Well I would assume there are features of VM/370 that are as cool as my favorite MVS but I'm no VM expert. THAT'S that selling point to get people into the hobby. Start out trying to get NJE working on JES2 and next thing you know you're binge watching old MOSHIX videos on youtube while eating popcorn and hearing the annoying background music in your sleep.
2) As per above the biggest problem with old iron is the coolest stuff is not entirely legal even in 2026 so instead of running "real CICS" you get the reimplementation KICKS and no ISMF you get plain old SMF which isn't quite as cool. I mean, SMF is cool, just not as cool as licensed ISMF. See also you get to play with RPF not ISPF/PDF. RPF is cool but someday I'd like to legally run ISPF at home.
Long time no see!