Author: F.Ulivi
License: CC-BY-SA
This recipe demonstrates how an IBM mainframe could be remotely accessed by a RJE (Remote Job Entry) utility on a HP9845B.
The typical setup included:
The "RJE" tool on the HP9845B emulates a 2780/3780 terminal. Synchronous communication with modem is handled by HP98046 module.
This figure shows the block diagram of the emulation setup.
A few notes:
2780_listen is needed to bridge the Hercules and RJE variants of the Bisync protocol. The Hercules side lacks idle characters and CRC bytes whereas RJE on the HP9845 needs them. The 2780_listen is there to remove/add these parts as needed. Another function of this utility is to synchronize the bit stream coming from 98046 by identifying pairs of SYN characters.
The RJE disk, in addition to the RJE tool itself, holds a couple of useful files:
Configuration file for this demo
A ready-made FORTRAN program to compute & print all prime numbers less than 500
cd into os360mvt directory (see Hercules setup)
Start Hercules with hercules -f mvt_hasp_mame.cnf
Connect a 3270 terminal emulator to TCP port 3270
On Hercules console issue ipl 350 command to boot OS/360
The 3270 terminal should display SPECIFY SYSTEM PARAMETERS FOR RELEASE 21.8F MVT, just press ENTER
Reply r 00,'no' to SPECIFY SYS1.DUMP TAPE UNIT ADDRESS OR NO
Reply r 00,u to confirm date & time.
Change the display parameters by typing k s and adjusting the resulting line to read
K S,DEL=rd,SEG=19,CON=n,RNUM=19,RTME=001
Start HASP with s hasp
The first time you run HASP reply r nn,format,noreq to nn $ SPECIFY HASP OPTIONS -- HASP-II VERSION 4.009762; just reply r nn,noreq from the second time on
Issue the following HASP command to start remote line LNE1: $slne1
Status of LNE1 can be checked with command $dlne1
Just run it in a Python 3 interpreter. It waits for connection from MAME side, then tries to connect to Hercules side. Once connection is lost on either side, it returns to listen for incoming MAME connections (though I haven't tested this looping extensively).
Control-C stops this utility.
Start MAME with the following command line (add other options you may need):
mess hp9845b -rompath <whatever> -rom1 datacomm -rom2 bisync -rom3 massd -slot0 98034_hpib -slot0:98034_hpib:ieee_rem remote488 -bitb1 socket.localhost:1234 -slot1 98046 -slot1:98046:rs232 rs232_sync_io -bitb2 socket.localhost:2780 -bitb3 print_out.txt
Ensure emulated system is configured as shown here:
RJE is a fairly sophisticated 2780/3780 emulator. It's entirely written in HP-BASIC. I couldn't find any manual online so I partially reverse engineered it from BASIC listing.
This is a summary of what I found.
This table summarizes the actions associated with function keys.
Key | Function |
---|---|
k0 | Send a line of text |
k1 | Send a file |
k2 | Store a line into edited file |
k3 | Insert a line into edited file |
k4 | Delete a line from edited file |
k5 | Replace a line of edited file |
k6 | Toggle automatic reception |
k7 | Establish connection |
k8 | Move to next field |
k9 | Modify current field |
k10 | Toggle control script |
k11 | Define reader configuration |
k12 | Define printer configuration |
k13 | Define punch configuration |
k14 | Define general configuration |
k15 | Toggle monitor |
k16 (SHIFT + k0) | Toggle EOT insertion |
k17 (SHIFT + k1) | Connection abort |
k18 (SHIFT + k2) | Create a text file |
k19 (SHIFT + k3) | Edit an existing text file |
k20 (SHIFT + k4) | Delete an existing text file |
k21 (SHIFT + k5) | List an existing text file |
k22 (SHIFT + k6) | Copy rest of file when editing |
k23 (SHIFT + k7) | Disconnect |
k24 (SHIFT + k8) | Move to previous field |
k25 (SHIFT + k9) | Modify current field |
k26 (SHIFT + k10) | Define control script |
k30 (SHIFT + k14) | Dump low level tracing |
k31 (SHIFT + k15) | Define monitor configuration |
After RJE starts (see Starting MAME) you can try some canned action by pressing k10 to execute pre-compiled CTL$ script file and then k1 to send PRIME3 file over to S/370 for remote processing. Once this file has been transferred, RJE receives and prints output from mainframe on internal printer (MAME actually stores it in print_out.txt file).
The whole processing of PRIME3 takes about 2 minutes.