Information about IBM IBSYS

IBSYS was the primary operating system for the IBM 7090/7094. It started out as a program called BESYS developed for the 709 by GE and was later enhanced by IBM to become IBSYS. It was also modifed to run on the IBM 7040/44 when that machine came out. IBSYS required a 32K machine with at least one channel, but ran better with at least two channels. It could be placed on disk for quicker loading. But all input and temporary files were primarialy on tape. Disk areas could be assigned to jobs for storage, but IBSYS itself never use the disk other then to store itself.

For system tape image go here

For sample jobs go here

Manuals

From Bitsavers you may wish to download the following PDF manuals to assist in using IBSYS. The version we seem to have recovered in version 13.

IBM 7090 Assembly Programming Information.

GA22-6703-4_7094princOps General CPU instruction set
Saxon-ProgrammingThe7090 Programming class manual
Sherman-ProgrammingThe7090 Programming class manual

Manuals You will probably need:

C28-6355-4_7090oper_Jun65 General IBSYS operators guide
C28-6248-7_v13_IBSYS_Dec66 General operating instructions for IBSYS
C28-6389-1_v13_IBJOB_Jun65 IBJOB users manual
GC28-6393-2_ibjobDbgPkg Debuging IBJOB programs
C28-6390-3_v13_F4_Apr66 FORTRAN IV IBFTC users manual
C28-6391-0_v13_COBOL COBOL IBCBC users manual
C28-6392-4_MAP_Dec66 MAP IBMAP users manual
C28-6386-1_symbUpdPgm_Jan65 UPDATE users manual
C28-6364-5_v13_Utils_Jul65 Disk utilities manual
C28-6054-5_FORTRANII_Apr64 Fortran II language manual
J28-6190-3_FORTRAN_II_IOPkg_Apr66
C28-6066-6_FORTRANII_oper Fortran II operators guide
C28-6235-5_FAP_Apr65 Information on FAP language
C28-6365-1_genSort_Sep64 Sort manual
C28-6345-4_v13_IOCS_Apr65 Information about IOCS for V13
J28-6169-1_CommercialTranslator_Jan62 CT manuals
F28-8043_CommercialTranslatorGenInfMan_Ju60
J28-6166_9PAC_Part1_1961 9PAC manuals
J28-6167_9PAC_Part2_1961
J28-6168_9PAC_Part3_1961
J28-6211-1_9PAC_Upd_1962

Manuals You might need if you have problems:

SBC_usersGuide_Jan66 General guide to IBSYS
C28-6299_IBSYS_PgSyAn_Feb63 Might be usefull to understand IBSYS
C28-6100-2_7090_IOCS Not needed but gives good info on IOCS

IBSYS Basic Job Control

These are the basic IBSYS control cards. If input is from tape, each card must be placed in it's own record (mkbcdtape does this automaticaly).

$JOB
card splits multiple jobs on one input tape. Always remember to and all decks with
$IBSYS
followed by
$STOP
card or the IBSYS will hang in wait loop waiting for next record.
COL           COL                
1 16
$AS SYSUNI,HI ASSIGN LAST ATTACH UNIT TO NAME
$ATTACH UNI,II ATTACH SPECIFIED UNIT
$CARDS NEXT IBSYS CONTROL CARD ON SYSCRD
$DATE MMDDYY ENTER DATE
$DETACH UNI DETACH SPECIFIED UNIT
$ENDFILE SYSUNI WRITE EOF ON SPEC. SYSTEM UNIT
$EXECUTE SYSTEM LOAD AND EXECUTE SPECIFIED SYSTEM
$IBSYS RELOAD'IBSUP'
$JOB FIRST CARD OF A NEW JOB
$IBEDT CALL SYSTEM EDITOR
$ID CALL INSTALLATION ACCOUNTING ROUTINE
$UNITS PRINT STATUS OF ATTACHED UNITS
$PAUSE PAUSE FOR OPERATOR
$PROTECT SYSUNI FILE PROTECT UNIT (HYPER)
$RELEASE SYSUNI RELEASE UNIT FROM SPEC. SYSUNI
$REMOVE SYSUNI REW-UNLOAD SPEC. SYSTEM UNIT
$RESTORE RELOAD 'IBNUC' EXCEPT TAPE POSITIONS
$REWIND SYSUNI REWIND SPECIFIED SYSTEM UNIT
$STOP STOP
$SWITCH SYSUNI,SYSUNI SWITCH UNITS FOR SPEC. SYS. FUNCTIONS
$TAPE NEXT IBSYS CONTROL CARD ON SYSIN1
$LIST LIST IBSYS CONTROL CARDS
$UNLIST SUPPRESS LISTING CONTROL CARDS
$UNLOAD SYSUNI UNLOAD UNIT (HYPER) WITHOUT REWIND
$RESET REASSIGN RELEASED SYSUNI FUNCTIONS
$RESTART N RESTART A JOB ON A SYSIN1 STACK
$*..COMMENT...... COMMENT CARD (NO ACTION)

Where....
 
SYSUNI = ANY NAME FROM THE SET
SYSLB1,SYSLB2,SYSLB3,SYSLB4,SYSCRD,SYSPRT,SYSPCH,SYSIN1,SYSIN2, SYSOU1,SYSOU2,SYSPP1,SYSPP2,SYSUT1,SYSUT2,SYSUT3,SYSUT4,SYSCK1, OR SYSCK2
UNI = SYMBOLIC UNIT REFERENCE OF THE SET
A1,A2,...,A9,A0Channel A tape units
RDAChannel A card reader
PRAChannel A printer
PUAChannel A punch
B1,....,B0,RDB,PRB,PUBChannel B units
etc...To Channel H
AD00/0,...,HD19/1Disk unit channel D access module / select
AN00/0,...,HN08/1Drum unit channel N access module / select
AH0/0,...,HH9/1Hypertape unit channel H drive / select
MMDDYY = MONTH DAY YEAR
SYSTEM = SYSTEM NAME

To find out tape drive assignments for a system use the following job on card reader:

  $UNITS
$PAUSE

And use as follows:

 i7090 

IBM 7090 simulator V3.5-2
sim> at mta1 ../t8_sys.tp                       <--using tape t8_sys.tp here>
sim> dep sw1 1                                  <--read job from cards
sim> at cdr0 u.job                              <--file is $UNITS/$PAUSE>
sim> set lp0 echo                               <--echo console printer
sim> at mtb1 junk.tp                            <--If you get access attempts
sim> bo mta1

$UNITS
     FUNCTION      UNIT
      SYSLB1        A1        HI DEN
      SYSLB2       NONE
      SYSLB3       NONE
      SYSLB4       NONE
      SYSCRD        RDA
      SYSPRT        PRA
      SYSPCH        PUA
      SYSOU1        B1        HI DEN
      SYSOU2        B1        HI DEN
      SYSIN1        A2        HI DEN
      SYSIN2        A2        HI DEN
      SYSPP1        B2        HI DEN
      SYSPP2        B4        HI DEN
      SYSCK1       NONE
      SYSCK2        A5        HI DEN
      SYSUT1        A3        HI DEN
      SYSUT2        B3        HI DEN
      SYSUT3        A4        HI DEN
      SYSUT4        B4        HI DEN
      SYSUT5       NONE
      SYSUT6       NONE
      SYSUT7       NONE
      SYSUT8       NONE
      SYSUT9       NONE
 ATTACHED UNITS NOT ASSIGNED OR RESERVED.
        A6
        A7
        A8
        B5
        B6
        B7
        B8
 INTER SYSTEM RESERVE UNITS.
       NONE
$PAUSE
OPER. ACTION PAUSE
HALT instruction, IC: 02416 (  007400402163   TSX 02163,4)
sim> quit
Goodbye

After you have list of units. Prepare a configuration file to attach tape virtual tapes to each unit listed.

 
set cpu 7090
set cpu 32k
at mta1 system.tp                            <-- system tape.
set mta1 locked                              <-- keep it from being changed.
at mta2 sysin.tp                             <-- Input job stream tape.
set mta2 locked
at mta3 sysut1.tp                            <-- Note subtract one from tape number
at mtb3 sysut2.tp
at mta4 sysut3.tp
at mtb4 sysut4.tp
at mtb1 sysou1.tp
at mta5 sysck2.tp
at mtb2 syspp1.tp
at lp0 sys.log
at cdp0 syspun.crd
dep sw1 0                                    <-- input on SYSIN1

The create a file with the following cards:

 
$JOB           LIST CONFIGURATION OF SYSTEM
$UNITS
$IBSYS
$IBEDT
      *EDIT    MAP
~
$IBSYS
$EXECUTE       IBJOB
$IBJOB IBLIB   NOGO,LOGIC,MAP
$EDIT          LOGIC
~
$IBSYS
$STOP

Run mkbcdtape -o sysin.tp job to create a input tape. Then run simulator with configuration file and use listtape to examine the output. The output will be a list of System names and for IBJOB a list of library routines included in system.

 
mkbcdtape -o sysin.tp your.job

Runing ibsys

i7090 base_sys.ini

IBM 7090 simulator V3.5-0
MTA: creating new file
MTB: creating new file
MTA: creating new file
MTB: creating new file
MTB: creating new file
MTA: creating new file
MTB: creating new file
LP: creating new file
CP: creating new file
sim> boot mta1
...
   Job runs with operator actions or whatever.
...
$STOP


 PERIPHERAL UNIT POSITIONS AT END OF JOBS

 SYSPP1  IS   B2    REC. 00000, FILE 00000
 SYSOU1  IS   B1    REC. 01033, FILE 00000
 SYSIN1  IS   A2    REC. 00003, FILE 00002

END OF JOBS
HALT instruction, IC: 05370 ( -077400200144   AXC 00144,2)
sim> quit

To show how your job ran use:

listtape sysou1.tp

I have provided .ini files for some of the system images. These files hook up the tape drives and other peripherals to specific files. You can also do this manually or modify them to match the system tape(s) you are using. And set some basic switches to run jobs. Base_sys.ini is generic, and works with 1D, stage11. To submit a job via card reader (Note cols 72-80 are dropped!).

sim> attach cdr0 cardjob.job
sim> dep sw1 1
sim> boot mta1 or continue

To switch back to tape:

sim> dep sw1 0
sim> boot mta1 or continue

IBJOB Subsystem

Notes on some things I have found while playing with IBSYS:

IBSFAP
requires that there is a COUNT card in the first block of input. Also there can't be any comment cards before this. IBSFAP and FORTRANII can not take input from cards, only from tape. IBSFAP prefer a blocking of 16 cards (1344 bytes) per record rather then the 10 cards of other IBSYS programs. Also IBSFAP can only assemble, use FORTRAN if you want to have your FAP program run.
FORTRAN
Blocking should be one record per line.
IBEDT
requires that the input be unblocked. Place EOF card or mark after last card of IBEDT deck.
UPDATE
UPDATE xx,xxx,U does not set to unblocked output, user UPDATE xx,xxx,1

Units for update:

	UNIT    NAME
	1       SYSLB1
	2       SYSUT3
	3       SYSUT4
	4       SYSUT1
	5       SYSIN1
	6       SYSOU1
	7       SYSPP1
	8       SYSUT2
	9       SYSCK1
	10      SYSCK2