That mainframe login screen can go by many names (VTAM screen, 3270 screen, Telnet screen) but whatever you call it its just the screen used to log on. As with everything in the mainframe world it is ludicrously, stupidly hard to get a straight answer. For example, look at this question in google groups to a really simple question: Manuals on modifying VTAM logon screen? How many pages do you think that is? It’s really not nearly as difficult as these idiots make it look like, but at least these folks where helpful compared to this forum post where a guy gets mocked for a simple question “How to change the logon screen?“.
Anyways, enough complaining about the lack of “community” in the mainframe community and lets get down to business. Changing the logon screen from this:
The easiest way to explain this is that the screen you see is contained in a dataset in assembly, for exampled ADCD.Z111S.VTAMLIB(USSN):
and you need some JCL to generate this crap. The first think you’ll want to do is look at the proclibs for VTAM (ugh, just writing that sentence hurt, I mean, proclib? vtam? who named these things). So look at :
and you should see something like:
remember these settings. You’ll also want to look at:
where you hopefully see
so great, now we can make a JCL to change that horrible screen. Just take this JCL:
Now the easiest way to deal with this is like so:
- You can edit the lines that begin with C’
- Each line on the screen is equal to two lines in this JCL
- At the very bottom is the dataset you want the compiled screen to go in to (around line 190) in this example its ADCD.Z111S.VTAMLIB(USSN). (ADCD.Z111S.VTAMLIB the the line below it has USSN(R)).
Once you’ve made the changes you want (and making sure you have the right permissions) you just submit the job (type ‘sub’ in the command line) and then you need to reset VTAM to load this screen. Easy peasy from the master console:
F vtam_proc_name,TABLE,OPTION=LOAD,NEWTAB=table_name Based on the JCL above it would be: F VTAM,TABLE,OPTION=LOAD,NEWTAB=USSN And you're done! No go check your awesome new logon screen!
Installing Linux on the mainframe is too hard you say?
It’s not so bad. All you do it get the files you need (there’s only three files you need from debian’s site). Create two fake DASD files and startup the emulator.
Then, we just turn on the mainframe
and tell it to IPL 000c (which is the card reader, which the startup files for Debian/390 is in)
To which it boots a normal-ish looking debian install
you basically just setup the networking and then tell it a password to connect and finish the install
it looks no different than a normal install
where you select the harddrives and format them
install the packages you wanted
and setup the default user
Then you reboot, and IPL the DASD you installed this shit on and…
anyway, there, Linux running on z/OS emulator. Maybe I’ll fuck around with this later
Any other requests? This was actually a nice challenge. I guess I could try and setup VM or DOS…
So today let’s talk about Mainframe security.
Those of you not in the know, so about 97% of YosPos, mainframes didn’t initially come with any security of any kind. So about mid 1970 RACF was released and the people rejoiced because now they could finally limit access to things like datasets, resources.. whatever. The problem, it was made by, for, and of, spergs. But because the system we emulate is such an old shit box it doesn’t come with racf but the much older SYS1.UADS.
Let’s launch our TN3270 emulator and I’ll show you what I mean
then we just logon as yospos
and here we…
Uh oh… that’s not good… wait I hear the printer
I’ve been infected
So we tried klingon and had no idea what the hell was going on. But when you look at it on CBT tape it sounds like it’s the sequel to startrek.
Now I’m pretty sure startrek is installed but lets see. First we need to connect with a TN3270, luckily I found a freeware one.
So we just browse on over to SYS1.CMDPROC
And there we go, STARINIT, STARTREK and STARRANK, let’s give this thing a try….
we exit back to the prompt and type ‘starinit’ to get everything setup
and we run startrek to give it a sh-
maybe I can fix this, taking a look at the launch script…
welp.. just so this isn’t a shit update (hint: they’re all shit) let’s upload and execute a job that will print on my printer.
So, we make a job
and then, using the built in FTP server, we upload it and execute it using AAINTRDR
it executed the job and after giving the printer a bit of time….
So, being the classy guy I am on this historical operating system that deserves our respect and addoration, what else would I do…
How I really feel about mainframes
Check out the whole printed job log: YOSGOAT.PDF, you have know idea the level of satisfaction I get from feeding through that garbage through this ancient OS.
So I heard someone had made klingon playable on MVS 380 so I downloaded their files and powered on the mainframe and logged on
First launching my ever reliable TN3270 emulator
whoa wrong IPL, lemme IPL the right one
after a bit…
this looks awful, after some research I found out I can customize this screen, 10 mins and an ASCII generator and here we go
now thats a welcome screen.
Alright so we got the right one but it still shows the default logon screen, let’s change that to something better
ahh much better
so we log on with the default account herc01, how boring let’s make a yospos account
and change the password
so we log off and back on with yospos and browse on over to the dataset with klingon (just to confirm it’s there)
we then exit and at the TSO “prompt” we type KLIGNON, we get some nice graphics that I’m too slow to capture but you can see them in this tape file.
So here we are
who needs instructions
a new game because I’ve never launched it before but I know I’ll be great at it
and we start the game
to be honest this is the best looking game I’ve seen on the mainframe, I’m actually surprised by this. I didn’t read the instructions so I don’t know what the fuck is happening but still, a decent game I guess. Better than Chess for sure.
So we got chess working but it really bugged me that there was no Tic Tac Toe.
Maybe there’s an old Tic Tac Toe game on CBT
So all the CBT tapes are included in YOSPOS/380 the trick is finding out which dataset. After much digging I found out it’s on CBTCOV so time to load up the TN3270 and connect to YOSPOS/380
Then we logon as yospos
We’re presented with RPF. Which is a freeware version of ISPF, which is like your BBS menus but for mainframes. To look at a dataset we select
To view a dataset we pick option 3 (a listing of utilities), followed by option 4
which brings us here:
Now, this probably means nothing to you but think of “level” as the root folder on the mainframe. So we put CBTCOV as the root level
and get presented
We can see that File 160 holds our Tic Tac Toe, so we open file 160 for viewing with the ‘b’ for browse I think
We then see the “members” of File 160. On the mainframe you can have a file that’s partitioned in to multiple parts and each part is a member. TEC012 holds our game so we “browse” that file, which really means “view”.
And we see this game in all it’s glory!
what the shit, god damned fortran is awful
So now let’s try and compile this bugger now that we know where it is, lets take a look at the hello world fortran example
Welp, this is awful and confusing, sorry folks no Tic Tac Toe, you’ll need to relive your W.O.P.R. fantasies elsewhere cause I’m not dealing with this shit
Tic Tac Toe? A game for babies, now Chess, that’s a mans game.
Let’s install DUCHESS
a chess program running on an IBM 370/168 under the MVS operating system, developed by three graduate students at the Duke University in the 70s, Eric Jensen, Tom Truscott and Bruce Wright. Duchess was one of the strongest programs of its time. In 1977, it was runner up at the Second World Computer Chess Championship in Toronto, behind Chess 4.6 winning from Kaissa, and tied first with Chess 4.6 at the Eighth North American Computer-Chess Championship, runner up due to tie breaking points. At the Third World Computer Chess Championship in Linz 1980, Duchess became third only losing from Belle. Duchess played seven ACM North American Computer Chess Championships from 1974 to 1981.
So first thing we need to do is download DUCHESS
Once that’s done we need to make some changes to the JCL file…
//DUCHESS JOB (),'INSTALL DUCHESS',CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//* 1) VOLUME 'PUB000' IS A 3350 AND AVAILABLE FOR USE ON YOUR SYSTEM.
//* 2) 'SYS1.CMDPROC' IS YOUR SYSTEM'S TSO CLIST LIBRARY.
//* 1) CHECK JOB CARD DETAILS AND CHANGE AS APPROPRIATE.
//* 2) CHANGE HLQ 'HERC01' TO APPROPRIATE HLQ FOR YOUR SYSTEM.
//* FOR EXAMPLE, YOU MIGHT CHOOSE 'SYS2'.
//* 3) CHANGE TARGET VOLUME SERIAL 'STG005' TO APPROPRIATE VALUE
//* FOR YOUR SYSTEM. DO NOT USE 'PUB000' AS IT IS USED TO STAGE
//* THE TAPE FILES WHICH ARE IN IEHMOVE UNLOADED FORMAT.
//* IEHMOVE WILL ONLY READ THE FIRST FILE ON THE TAPE, WHICH
//* IS WHY THEY MUST BE STAGED.
//* 4) SUBMIT JOB AND MOUNT TAPE AS REQUIRED.
//* 5) READ IMPORTANT MEMBERS OF 'HERC01.DUCHESS.HELP'.
//* 6) ISSUE THE 'DUCHESS' TSO COMMAND TO INVOKE DUCHESS.
The trick here is finding a volume serial number that’s available for use. So lets logon to YOSPOS/380
Exiting to TSO we launch VOLS which shows me all the available volumes
Not knowing what the fuck any of this means I picked MVSRES cause one of my datasets is on that volume. And then uploaded the JCL file.
DUCHESS also comes with an AWS file. This is a TAPE image file that you mount from the console. First you turn on the tape drive
Then we submit the job and some messages come flying across the master console
The job installs DUCHESS then unmounts the tape.
So lets play some chess
Ugh. Looking at the help file I can see the current board:
Luckily there’s an image update so it looks less shitty. It comes as a simple JCL so it’s uploaded then submitted, then you change the DUCHESS member in SYS2.CMDPROC from DUCHESS6 to DUCHESSG
… and…. didn’t work, it’s supposed to look like this:
But it, much like everything else, doesn’t work. But anyway Chess is now installed, fuck you Tic Tac Toe.
Well then, lets get some classic gaming up in here.
You saw worm:
What else can we play on this… there’s a classic game called ADVENT, otherwise known as Colossal Cave Adventure
Colossal Cave Adventure (also known as ADVENT, Colossal Cave, or Adventure) gave its name to the computer adventure game genre. It was originally designed by Will Crowther, a programmer and caving enthusiast who based the layout on part of the Mammoth Cave system in Kentucky. The Colossal Cave subnetwork has many entrances, one of which is known as Bedquilt. Crowther reproduced portions of the real cave so faithfully that cavers who have played the game can easily navigate through familiar sections in the Bedquilt region on their first visit.
Its the first real text adventure game as it’s claimed that the term ‘Text Adventure” was born of this game. Really it did start the whole genre. If you’ve read Clifford Stoll’s book “Silicon Snake Oil” he devotes basically a whole book about how going outside in a real cave is better than playing ADVENT (he’s the dude who wrote Cuckoo’s Egg).
Word is that this game is included with the install. So let’s give it a go shall we…
and nothing happens, well not nothing but nothing in my TSO screen anyway. Let’s just check the master console:
I see this, repeated over and over again until,
my World Trade Organization buffer is 100% filled. And nothing accepts any input. Welp
And we’re back in business. So someone had this same problem on the mailing list and it’s because some chucklefuck thought it would be a good idea to put a system command in SYS1.CMDLIB (or something) with the name ADVENT and then the game also had the name ADVENT so they were conflicting. It also didn’t help that the text for the game wasn’t “mounted”. So to remedy that we enter:
ALLOC FI(CAVES) DA(‘MVS.ADVGAME.CNTL(ADVNTCAV)’) SHR
which allocated the DASD (or “mounted”) the files we needed to be able to play the game, then we just run the game from it’s specific location instead of the one in our “path”.
(except I fucked up and put “adventure” instead of “advent” but I fixed that the next line).
but then I remembered I hate text adventure games (premptive: mlyp)
If anyone is interested in playing go ahead, I just used the YOSPOS account to load ADVENT so if you really need to read about exploring a cave go for it.
Alright, let’s change the pride parade logon screen:
through some research found out there’s a REXX script(?) to take an ASCII file and make it so lets try to do this.
Using the examples provided I changed the screen:
and ran the script:
which turned my nice screen in to the ASM needed
Luckily I found out that there’s a JCL file to make the change I needed to make. And even better its available in the JCL folder so I can edit it in a modern editor instead of that line-by-line editor. I just replace the assembly already in there and we’re ready to go:
Alright, so we got JCL, otherwise known as Job Control, file now we just need to upload it. Since this is the mainframe world you can’t just FTP, oh no, you use IND$FILE:
So let’s do this, you enter transfer on x3270 which asks you a bunch on questions
and transfers the file to a dataset on the mainframe
So it was at this point I was starting to feel confident, 2.5 days with this monster and I new enough to upload the file, browse to it using RPF and then submit the job to be run
goddamnit, it was at this point that I was about the rage quit when I though about just running it through the “command prompt”, not expecting it to work but whatever
lets reboot VTAM, but I don’t know how to do that, probably “v net” on the master console or something. Anyway, I just reboot the mainframe and here we go:
PROC 0 /* NO PARAMETERS REQUIRED */
WRITE YOSPOS BITCH! /* DISPLAY CONSTANT AT TERMINAL */
EXIT /* RETURN TO TSO READY PROMPT */
So I was thinking about changing TURNKEY to YOSPOS/380. Should be easy enough right…. WRONG!
The standard network solicitor (NETSOL) sign-on screen is rather boring. I have written a little REXX procedure to help me in defining 3270 data streams, and used this for a homegrown SDF (Screen Definition Facility). The first screen designed was a logon screen for the Tur(n)key system. This job (mvs0080) will modify the local NETSOL macro, and includes SYS1.UMODMAC(TURNKEY), the actual screen definition. Run this job, stop, then start VTAM, and you will see the new LOGON screen.
By modifying SYS1.UMODMAC(TURNKEY) you can provide your own screen. I have included the REXX script as file NETSOL.REX in directory REXX on the CDROM. You will also see one or two other sample screens.
So now maybe we should take a look at SYS1.UMODMAC(TURNKEY)
* »»»»»»»»»»» Sample Screen Layout ««««««««««««
* Welcome to MVS3.8J, running under the Hercules emulator
* TTTTTTTT UU UU RRRRRRR NN NN KK KK EEEEEEEE
* TT UU UU RR RR NNN NN KK KK EE
* TT UU UU RR RR NNNN NN KK KK EE
* TT UU UU RRRRRRR NN NN NN KKKK EEEEEEE
* TT UU UU RRRR NN NN NN KK KK EE
* TT UU UU RR RR NN NNNN KK KK EE
* TT UU UU RR RR NN NNN KK KK EE
* TT UUUUUU RR RR NN NN KK KK EEEEEEE Y
* ! _,,,---,,_ brought to
* ZZZzz /,'.-'`' -. ;-;;, Volker Band
* !,4- ) )-,_. ,( ( ''-' vbandke bsp
* '---''(_/--' `-'_)
* Logon ===>
alright pretty easy, let me just PGDN
TURNKEY DS 0C
DC C'Welcome to MVS3.8J, running under the'
DC C' '
DC C' '
Anyway, now that you’ve got some shit running you’ve got to initialize the terminals…
working in this makes Linux look like some pro level shit
alright, now to a civilized OS where I can use a good TN3270 emulator to connect,
and get the same hercules screen as before, welp, now you have to “CLEAR” your screen, whatever that means
anywho, TSO requires a password so I give it “yospos”
and get logged in straight to RPF (a ripoff of SDSF)
which I promptly exit (by pressing x) so I can get to TSO “prompt”
and now time to play some games
note, those are F keys, not 1, 2, 3 etc. The game, like almost everything in MVS is unuseable.
Meet Hercules. It’s unironically pretty awesome in that it emulates old mainframes but this is YosPos so let’s get on with it.
Once you figure out what you need you load hercules for the first time and look at this shit
Thankfully there’s a GUI interface that isn’t shit so we’ll use that.
great its still shit, let just load a conf file (which tells hercules how many terminals to connect, tape drives, printers, dasd’s etc) and get started
I set this up using the MVS Turnkey and MVS380 shadow files. It was a disgusting pain in my ass.
Ok, so I loaded the conf file and nothing. Oh right you gotta turn on the mainframe
still nothing… well now you have to connect a 3270 terminal, I’ll just load the best, free one for XP
great! but pressing enter or anything on this screen gets me a beep…. because my mainframe still isn’t doing shit. It’s on but I haven’t told it to boot yet. I’ll just remedy that
now the mainframe is running, lemme check my 3270 console
that’s all you get cause eventhough I told the MF to boot I need to tell it to do more stuff from this, the master console (hence the r 00,cpla. But that was a typo, let’s try again with r 00,clpa)
at last something is happening!
my card punchers, DASDs etc all come online, great! Just look at all this shit thats going on
it’s even nicer from cathode
What follows is a series of posts I did at something awful about setting up and finally getting running a mainframe implementation.
Keep in mind that this is satire and not an attack on the amazing work that the people at Hercules or Fish have done. It’s to poke fun at the mainframe world which always takes itself so seriously, to the point of ridiculousness.
I also use it to vent my frustrations from having to deal with mainframe people (especial folks from IBM) as I conduct detailed mainframe reviews.