Address in hex. Contents / Function
0000
-001F
16 registers for interrupt level 0 (normal execution)
0020
-003F
16 registers for interrupt level 1 (Async. comm.)
0040
-005F
16 registers for interrupt level 2 (Tape/Disk/Printer/Serial I/O)
0060
-007F
16 registers for interrupt level 3 (Keyboard)
0055
Printer Status Byte A
    Bit 0: Print emitter latch 3
    Bit 1: Print emitter latch 2
    Bit 2: Print emitter latch 1
    Bit 3: Wire check or not ready
    Bit 4: Forms emitter B
    Bit 5: Forms emitter A
    Bit 6: Not end of forms
    Bit 7: Left margin signal
0057
Printer Status Byte B
    Bit 0: Print motor latch B (0 = not B)
    Bit 1: Print motor latch A (0 = not A)
    Bit 2: Print emitter interrupt
    Bit 3: Not ready interrupt
    Bit 4: Forms motor latch B (0 = not B)
    Bit 5: Forms motor latch A (0 = not A)
    Bit 6: Forms control interrupt
    Bit 7: Timer interrupt
0082
-008A
Temporary storage for Diskette I/O Supervisor
(save of return address in R2 for internal subroutines)
008F
Tape Status Byte
    Bit 0: End Of Tape (EOT)
    Bit 1: No device address E response
    Bit 2: Tape running
    Bit 3: Cartridge in place
    Bit 4: Erase on
    Bit 5: LED and erase OK
    Bit 6: File protected
    Bit 7: No beginning of tape (BOT)
0090
Internal variable for I/O Supervisor
Diskette:
    Bit 0:
    Bit 1:
    Bit 2: ?
    Bit 3: 1=MFM
    Bit 4: ?
    Bit 5:
    Bit 6:
    Bit 7: ?
009A
Internal variable for I/O Supervisor
Diskette: Cylinder number for I/O
009C
Internal variable for I/O Supervisor
Diskette: Side for I/O (0=Side 0, other=Side 1)
009E
Internal variable for I/O Supervisor
Diskette: Sector number for I/O
00A0
Constant $0000
00A2
System flags
    Bit 0: 1=No retries after CRC errors during Diskette I/O
    Bit 1:
    Bit 2:
    Bit 3:
    Bit 4:
    Bit 5:
    Bit 6:
    Bit 7:

    Bit 8:
    Bit 9:
    Bit 10:
    Bit 11:
    Bit 12:
    Bit 13:
    Bit 14: 1=Withing hexdump routine
    Bit 15:
00A4
System flags
    Bit 0: 1=ATTN pressed
    Bit 1:
    Bit 2:
    Bit 3: 1=Keyboard interrupt without Key Pending Flag
    Bit 4:
    Bit 5: 1=APL, 0=BASIC
    Bit 6: 1=I/O active
    Bit 7: 1=CRT on, 0=CRT off

    Bit 8: Level 0 Mode - 1=RWS, 0=ROS
    Bit 9: Level 1 Mode - 1=RWS, 0=ROS
    Bit 10: Level 2 Mode - 1=RWS, 0=ROS
    Bit 11: Level 3 Mode - 1=RWS, 0=ROS
    Bit 12: Printer status - 1=Printer busy, 0=Printer ready
    Bit 13: Printer status - ???
    Bit 14: Printer status - ???
    Bit 15: (1=Translate scancode?)
00A6
Address to the routine for device test
Tests if a given device (given in IOCB) is present and ready.
R2 = return address, R3 = address of IOCB
If the device is ready the routine jumps back to R2+2 else "ERROR 0xx yyy" in line 16 is printed and a jump to R2 is done.
00A8
Highest available RWS address
After restart it is the same value as in $00AA; after loading some IMFs or Customer Support Routine this value decreases.
00AA
Last available address in R/W Storage (RAM).
This is the location of the last main memory address. A 32kB system will have a value of $7FFF.
00AC
Address of routine to jump into Executable ROS
R2 = return address, R8 = destination address in ROS, eventually with additional parameters depending on the function called
00AE
Address of the I/O Supervisor Routine in Executable ROS that executes all I/O operations controlled by an IOCB.
00B0
Scan- or keycode of last pressed key
00B6
00BE
Address of the first usable memory location, usually $0700.
At ($BE)-$20 the system code 'IBM5100 ' (13 chars.) can be found, like the one needed for the directory entry on a diskette.
Attention: Several ROS routines use that area as temporary storage and for internal variables! For example the vector table for the supervisor routines is located at $07C0.
00C0
Address of the Screen Dump Routine in Executable ROS
This routine is called e.g. by pressing the keys CMD-Print.
00D2
Temporary storage for Diskette I/O Supervisor
Return address to caller of I/O Supervisor
00D8
Address of the vector table containing the entry points to the I/O Supervisor, for device addresses 0 to F. Each table entry consists of two words, the first word is the address of the builtin (ROS) I/O Routine, the second word, if not zero, the address of a user defined routine in RWS.
00E6
$0F40
00E8
Diskette Status Byte A
    Bit 0: Write mode
    Bit 1: Read mode
    Bit 2: Diagnostic mode
    Bit 3: Index
    Bit 4: Erase gate
    Bit 5: Diskette 2
    Bit 6: CRC error
    Bit 7: Read/write overrun
00E9
Diskette Status Byte B
    Bit 0: New media
    Bit 1: MFM mode
    Bit 2: Filter control
    Bit 3: Current select
    Bit 4: Head engaged
    Bit 5: Head selected (0 = head 0)
    Bit 6: Access line
    Bit 7: Access line
00F8
$1000
00FA
$100A
Address of the error message routine in ROS that prints
ERROR 0xx yyzz
in the last line.
Parameters: R3=Address of IOCB, return address in R2
00FC
Address of HOLD routine
00FE
$0D00
Address of hexdump routine
01C0
$0501
01C2
$0202
01C4
$0503
01C6
$0204
01F0
$1DFA
ROS routine that clears the screen to the end.
Parameters: R14=Start address, return address in R2
01F2
$1D4A
ROS routine that converts hex digits into integer
Parameters: R14=Address of the hex digits, result in R15
01F4
$1C7C
01F8
$1CF6
0200
-05FF
Display buffer, 1kB in total.
0600
-0700
Help routines in machine language
$0600 has a jump routine into the Executable-ROS (and back again), $0630 (at least on a 5110) contains the device test routine.
0B00
Load and start address for machine language programs
0B42
-0B55
Addresses of the IOCBs for file numbers FL0 to FL9 in BASIC mode
120E
Start of a BASIC program in token form