This is an incomplete list of the allocation of address space in 'zero page'. It is currently maintained by Matthew Wilcox and is currently available as ftp://ftp.barnet.ac.uk/pub/Acorn/zeropage.txt or http://www.york.ac.uk/~mrw103/zeropage.txt. If you can't get it using either of these methods then mail me, asking *nicely*. Permission is granted to copy this document freely as long as it remains intact. Please mail me any corrections or additions to the current maintainer so they can be incorporated into the list. Last updated on Sun 13th October 1996 Contributors (alphabetically) : Andy Armstrong Carol Carpenter Ben Dooks Andrew Miles Gordon Rogers Richard Sargeant Nick Smith Matthew Wilcox Mark Wooding This document is designed to be viewed in a spreadsheet or database that supports variable tab stops. As a result, it is possible that when viewed in a web browser or text editor, some of the items will be misaligned. It now also exceeds 80 columns. Sorry. Each of the columns headed by a number contain information for that version of the operating system. All addresses are given in hexadecimal and refer to the start of the word containing the value. Where a range is given, it is given to the beginning of the last word in the range. Where it is necessary to refer to less than an entire word, the notation
B is used to refer to a byte and
b is used to refer to a bit within a word. These are shown in the order that the bits 0..31 appear. I think this is the most consistent way of showing this; let me know if you have a better method of representing these data. I'd be amused to include details of Arthur (0.1, 1.0 & 1.2), RISC OS 2.01 and RISC OS 3.0, but the chances of finding machines running any of these versions of the OS are negligible. I've reluctantly removed the names for the bits of memory that I didn't know - I quite enjoyed people mailing me and telling me that they'd made a discovery in Garroting Deep, but they've all been split up as people found bits in the middle and some of them do have known uses on different OS. In short, keeping them would have confused me. Sorry. No addresses are guaranteed to remain in the same place between different versions of the OS. Always use the defined system interfaces in preference to direct accesses if possible. No liability is assumed for any loss or damage which may result as the result of yourself or others use, misuse or inability to use any of the information contained in this document. 2.00 3.10 3.50 3.60 3.70 Contents 0 0 0 0 0 Branch Through Zero handler 4 4 4 4 4 Undefined Instruction handler 8 8 8 8 8 Software Interrupt handler C C C C C Prefetch Abort handler 10 10 10 10 10 Data Abort handler 14 14 14 14 14 Address Exception handler 18 18 18 18 18 IRQ handler 1C-FC 1C-FC 1C-FC 1C-FC 1C-FC FIQ routine 100 3AC Address called by ROM IRQ handler routine. 104 b4 Escape condition occured 104 b20 Speaker enabled 108 Value of R13_irq after last IRQ happened 10C Monotonic time 110 B0 RAM speed (low byte) 110 B1 RAM speed (high byte) 110 b16 MEMC1 if clear, MEMC1a or later if set 114 114 114 114 Copy of MEMC control register 118 118 118 Address called on a reset. 118 11C 11C MemoryLimit value 11C 120 398 Undefined instruction handler address 120 124 3A0 Prefetch abort handler address 124 128 3A4 Data abort handler address 128 12C 3A8 Address exception handler address 12C 130 130 Address of Error handler 130 134 134 Address of Error buffer 134 138 138 R0 on entry to Error handler 138 13C 13C R12 on entry to CallBack handler 13C 140 140 Address of CallBack handler 140 144 144 Address of CallBack register buffer 144 148 148 R12 on entry to BreakPoint handler 148 14C 14C BreakPoint handler address 14C 150 150 Address of BreakPoint register buffer 150 154 154 R12 on entry to Escape handler 154 158 158 Address of Escape handler 158 15C 15C R12 on entry to Event handler 15C 160 160 Address of Event handler 164-560 164-560 - - - Page tables for up to 8Mb RAM [1] - - 170 Address of VRAM, if present, else address of screen in DRAM - - 174 Size of VRAM, if present, else max screen size - - 178 Address of DRAM bank 0 - - 17C Size of DRAM bank 0 - - 180 Address of DRAM bank 1 - - 184 Size of DRAM bank 1 - - 1A0 Amount of VRAM present - - 1C0-1EC RAM copy of CMOS bytes 192-239 - - 1F0-2AC RAM copy of CMOS bytes 0-191 - - 2B0-2D0 Dynamic area control block for application workspace [2] - - 2D4-2F4 Dynamic area control block for free memory pool [2] - - 2F8-318 Dynamic area control block for system heap [2] - - 31C Memory move in progress - - 320 RAM copy of MMU control word 564 564 Address of page tables 568 568 Highest page number 160 56C 56C Total amount of RAM in machine in bytes 564 570 570 Application space 568 574 574 R12 on entry to Unused SWI handler 56C 578 578 Unused SWI handler address 570 57C 57C Exit handler address 574 580 580 R12 on entry to Exit handler 578 584 584 R12 on entry to UpCall handler 57C 588 588 UpCall handler address 58C 58C Base of ROM & Podule modules list 590 B0 First key pressed in keyboard internal key format 590 B1 Second key pressed in keyboard internal key format 590 B2 Keyboard driver ID code 590 B3 Old keyboard driver ID code 594 598 B0 598 b8 Caps lock status 598 b9 Num lock status 598 B2 Mouse driver ID 598 B3 Keyboard ID 59C 5A0 5A4 5A8 5AC 5B0 5B4 5A0 Mouse X coordinates 5B8 5A4 Mouse Y coordinates 5BC 5B0 5C0 5AC Mouse X multiplier 5B4 5C4 5B0 Mouse Y multiplier 5C8 5B4 Address of keyboard handler 5CC 5B8 Left coordinate of mouse bounding box 560 5BC Bottom coordinate of mouse bounding box 564 5C0 Right coordinate of mouse bounding box 568 5C4 Top coordinate of mouse bounding box 56C-78C Unknown 880-8BC 790-7CC Addresses of module SWI linked lists 7D0 7D0 Address of Module chain 8C4 7D4 7D4 Currently Active Object pointer 7D8 7D8 UserV (0) 7DC 7DC ErrorV (1) 7E0 7E0 IrqV (2) 7E4 7E4 WrchV (3) 7E8 7E8 RdchV (4) 7EC 7EC CLIV (5) 7F0 7F0 ByteV (6) 7F4 7F4 WordV (7) 7F8 7F8 FileV (8) 7FC 7FC ArgsV (9) 800 800 BGetV (10) 804 804 BPutV (11) 808 808 GBPBV (12) 80C 80C FindV (13) 810 810 ReadLineV (14) 814 814 FSCV (15) 818 818 EventV (16) 81C 81C ?V (17) 820 820 ?V (18) 824 824 ?V (19) 828 828 InsV (20) 82C 82C RemV (21) 830 830 CnpV (22) 834 834 UKVDU23V (23) 838 838 UKSWIV (24) 83C 83C UKPLOTV (25) 840 840 MouseV (26) 844 844 VDUXV (27) 848 848 TickerV (28) 84C 84C UpcallV (29) 850 850 ChngEnvironmentV (30) 854 854 SpriteV (31) 858 858 DrawV (32) 85C 85C EconetV (33) 860 860 ColourV (34) 864 864 PaletteV (35) 868 868 SerialV (36) 86C 86C ?V (37) 870 870 ?V (38) 874 874 ?V (39) 878 878 ?V (40) 87C 87C ?V (41) 880 880 ?V (42) 884 884 ?V (43) 888 888 ?V (44) 88C 88C ?V (45) 890 890 ?V (46) 894 894 ?V (47) 988 898 898 Address of exception registers dump 89C-99C 89C-99C Buffer for errors, GSTransing, etc. 9A0 B0 9A0 B0 Osbyte &A6 9A0 B1 9A0 B1 Osbyte &A7 9A0 B2 9A0 B2 Osbyte &A8 9A0 B3 9A0 B3 Osbyte &A9 9A4 B0 9A4 B0 Osbyte &AA 9A4 B1 9A4 B1 Osbyte &AB 9A4 B2 9A4 B2 Osbyte &AC 9A4 B3 9A4 B3 Osbyte &AD 9A8 B0 9A8 B0 Osbyte &AE 9A8 B1 9A8 B1 Osbyte &AF 9A8 B2 9A8 B2 '50 Hz counter' state (&B0) 9A8 B3 9A8 B3 Input source (&B1) 9AC B0 9AC B0 Osbyte &B2 9AC B1 9AC B1 Osbyte &B3 9AC B2 9AC B2 Osbyte &B4 9AC B3 9AC B3 RS423 input interpretation state (&B5) 9B0 B0 9B0 B0 NoIgnore state (&B6) 9B0 B1 9B0 B1 Osbyte &B7 9B0 B2 9B0 B2 Osbyte &B8 9B0 B3 9B0 B3 Osbyte &B9 9B4 B0 9B4 B0 Osbyte &BA 9B4 B1 9B4 B1 Osbyte &BB 9B4 B2 9B4 B2 Osbyte &BC 9B4 B3 9B4 B3 Osbyte &BD 9B8 B0 9B8 B0 Osbyte &BE 9B8 B1 9B8 B1 RS423 busy flag (&BF) 9B8 B2 9B8 B2 RS423 control byte (&C0) 9B8 B3 9B8 B3 Flash counter (&C1) 9BC B0 9BC B0 Duration of second colour (&C2) 9BC B1 9BC B1 Duration of first colour (&C3) 9BC B2 9BC B2 Keyboard auto-repeat delay (&C4) 9BC B3 9BC B3 Keyboard auto-repeat rate (&C5) 9C0 B0 9C0 B0 *Exec file handle (&C6) 9C0 B1 9C0 B1 *Spool file handle (&C7) 9C0 B2 9C0 B2 Break/Escape effect flags (&C8) 9C0 B3 9C0 B3 Keyboard disable flag (&C9) 9C4 B0 9C4 B0 Keyboard status byte (&CA) 9C4 B1 9C4 B1 RS423 input buffer minimum space (&CB) 9C4 B2 9C4 B2 RS423 ignore flag (&CC) 9C4 B3 9C4 B3 Osbyte &CD 9C8 B0 9C8 B0 Osbyte &CE 9C8 B1 9C8 B1 Osbyte &CF 9C8 B2 9C8 B2 Osbyte &D0 9C8 B3 9C8 B3 Osbyte &D1 9CC B0 9CC B0 Osbyte &D2 9CC B1 9CC B1 Bell sound channel (&D3) 9CC B2 9CC B2 Bell sound volume (&D4) 9CC B3 9CC B3 Bell sound frequency (&D5) 9D0 B0 9D0 B0 Bell sound duration (&D6) 9D0 B1 9D0 B1 Osbyte &D7 9D0 B2 9D0 B2 Length of function key string (&D8) 9D0 B3 9D0 B3 Paged mode line count (&D9) 9D4 B0 9D4 B0 Number of bytes in VDU queue (&DA) 9D4 B1 9D4 B1 Tab key code (&DB) 9D4 B2 9D4 B2 Escape character (&DC) 9D4 B3 9D4 B3 Interpretation of input values &C0-&CF (&DD) 9D8 B0 9D8 B0 Interpretation of input values &D0-&DF (&DE) 9D8 B1 9D8 B1 Interpretation of input values &E0-&EF (&DF) 9D8 B2 9D8 B2 Interpretation of input values &F0-&FF (&E0) 9D8 B3 9D8 B3 Interpretation of function keys (&E1) 9DC B0 9DC B0 Interpretation of Shift-function key (&E2) 9DC B1 9DC B1 Interpretation of Ctrl-function key (&E3) 9DC B2 9DC B2 Interpretation of Ctrl-Shift-function key (&E4) 9DC B3 9DC B3 Escape key status (&E5) 9E0 B0 9E0 B0 Escape effects (&E6) 9E0 B1 9E0 B1 Osbyte &E7 9E0 B2 9E0 B2 Osbyte &E8 9E0 B3 9E0 B3 Osbyte &E9 9E4 B0 9E4 B0 Osbyte &EA 9E4 B1 9E4 B1 Osbyte &EB 9E4 B2 9E4 B2 Character destination status (&EC) 9E4 B3 9E4 B3 Cursor key status (&ED) 9E8 B0 9E8 B0 Numeric keypad interpretation (&EE) 9E8 B1 9E8 B1 Osbyte &EF 9E8 B2 9E8 B2 Country flag (&F0) 9E8 B3 9E8 B3 Osbyte &F1 9EC B0 9EC B0 RS423 baud rates (&F2) 9EC B1 9EC B1 Timer switch state (&F3) 9EC B2 9EC B2 Osbyte &F4 9EC B3 9EC B3 Printer driver type (&F5) 9F0 B0 9F0 B0 Printer ignore character (&F6) 9F0 B1 9F0 B1 Break key actions (&F7) 9F0 B2 9F0 B2 Osbyte &F8 9F0 B3 9F0 B3 Osbyte &F9 9F4 B0 9F4 B0 VDU driver screen bank number (&FA) 9F4 B1 9F4 B1 Display screen bank number (&FB) 9F4 B2 9F4 B2 Osbyte &FC 9F4 B3 9F4 B3 Last break type (&FD) 9F8 B0 9F8 B0 Shift-Ctrl effect on numeric keypad (&FE) 9F8 B1 9F8 B1 Boot option (&FF) 9F8 B2 9F8 B3 9FC B0 9FC B0 Enable count for Output buffer empty event (0) 9FC B1 9FC B1 Enable count for Input buffer full event (1) 9FC B2 9FC B2 Enable count for Character input event (2) 9FC B3 9FC B3 Enable count for ADC end conversion event (3) A00 B0 A00 B0 Enable count for Vertical sync event (4) A00 B1 A00 B1 Enable count for Interval timer event (5) A00 B2 A00 B2 Enable count for Escape event (6) A00 B3 A00 B3 Enable count for RS423 error event (7) A04 B0 A04 B0 Enable count for Econet user remote procedure event (8) A04 B1 A04 B1 Enable count for User event (9) A04 B2 A04 B2 Enable count for Mouse button event (10) A04 B3 A04 B3 Enable count for Key up/down event (11) A08 B0 A08 B0 Enable count for Sound start of bar event (12) A08 B1 A08 B1 Enable count for PC Emulator event (13) A08 B2 A08 B2 Enable count for Econet receive event (14) A08 B3 A08 B3 Enable count for Econet transmit event (15) A0C B0 A0C B0 Enable count for Econet OS remote procedure event (16) A0C B1 A0C B1 Enable count for MIDI event (17) A0C B2 A0C B2 Enable count for ? event (18) A0C B3 A0C B3 Enable count for Internet event (19) A10 B0 A10 B0 Enable count for ? event (20) A10 B1 A10 B1 Enable count for ? event (21) A10 B2 A10 B2 Enable count for Device overrun event (22) A10 B3 A10 B3 Enable count for ? event (23) A14 B0 A14 B0 Enable count for Internet receive event (24) A14 B1 A14 B1 Enable count for Internet transmission status event (25) A14 B2 A14 B2 Enable count for ? event (26) A14 B3 A14 B3 Enable count for ? event (27) A18 B0 A18 B0 Enable count for Portable BMU interrupt event (28) A18 B1 A18 B1 Enable count for ? event (29) A18 B2 A18 B2 Enable count for ? event (30) A18 B3 A18 B3 Enable count for ? event (31) A1C A1C LSW of first copy of system clock A20 B0 A20 B0 MSB of first copy of system clock A20 B1 A20 B2 A20 B3 A24 A24 LSW of second copy of system clock A28 B0 A28 B0 MSB of second copy of system clock A28 B1 A28 B2 A28 B3 A2C A2C LSW of RAM copy of RTC A30 B0 A30 B0 MSB of RAM copy of RTC A30 B1 A30 B2 A30 B3 A34 A38 A38 LSW of interval timer A3C B0 A3C B0 MSB of interval timer A3C B1 A3C B2 A3C B3 A3C B3 Current flash state A40 B0 A40 B1 A40 B2 A40 B3 TV vertical adjust A44 b0 TV interlace flag A48 A4C A50 A54 A58 A5C A60 A64 A64 Address of first free byte in keyboard buffer A68 A68 Address of first free byte in RS423 input buffer A6C A6C Address of first free byte in RS423 output buffer A70 A70 Address of first free byte in printer buffer A74 A74 Address of first free byte in sound channel 0 buffer A78 A78 Address of first free byte in sound channel 1 buffer A7C A7C Address of first free byte in sound channel 2 buffer A80 A80 Address of first free byte in sound channel 3 buffer A84 A84 Address of first free byte in speech buffer A88 A88 Address of first free byte in mouse buffer A8C A8C Address of first used byte in keyboard buffer A90 A90 Address of first used byte in RS423 input buffer A94 A94 Address of first used byte in RS423 output buffer A98 A98 Address of first used byte in printer buffer A9C A9C Address of first used byte in sound channel 0 buffer AA0 AA0 Address of first used byte in sound channel 1 buffer AA4 AA4 Address of first used byte in sound channel 2 buffer AA8 AA8 Address of first used byte in sound channel 3 buffer AAC AAC Address of first used byte in speech buffer AB0 AB0 Address of first used byte in mouse buffer AB4 Address of System Variable data block AB8 [referred to by OS_CLI] ABC [referred to by OS_CLI] AC0 [referred to by OS_CLI] AC4 Return code AC8 Return code limit ACC Current size of sprite area AD0 Current size of RAM filing system AD4 Current size of font cache AD8 AD8 Base of OS_CallEvery/CallAfter list ADC MSW of time that program was started AE0 B0 LSB of time that program was started AE0 B1 AE0 B1 input file handle AE0 B2 AE0 B2 output file handle AE0 B3 AE4 b8 Set if outstanding callbacks AE4 b9 Set if error occured during the last SWI. AE4 b10 Outstanding OS_AddCallback. AE4 b16 IOEB ASIC present AE4 b17 82C710 present AE4 b18 LCD ASIC present AE4 b19 82C711 present AE8-BE4 Program environment string BE8 Register save block on callback from default exit handler BEC BF0 BF4 BF8 BFC C00 C04 C08 C0C C10 C14 C18 C1C C20 C24 C28 page size in bytes C2C C30 C34-C54 IRQ handler routine C58 R12 value for device 0 vector C5C Address of device 0 handler C60 points to next handler for device 0 C64 R12 value for device 1 vector C68 Address of device 1 handler C6C points to next handler for device 1 C70 R12 value for device 2 vector C74 Address of device 2 handler C78 points to next handler for device 2 C7C R12 value for device 3 vector C80 Address of device 3 handler C84 points to next handler for device 3 C88 R12 value for device 4 vector C8C Address of device 4 handler C90 points to next handler for device 4 C94 R12 value for device 5 vector C98 Address of device 5 handler C9C points to next handler for device 5 CA0 R12 value for device 6 vector CA4 Address of device 6 handler CA8 points to next handler for device 6 CAC R12 value for device 7 vector CB0 Address of device 7 handler CB4 points to next handler for device 7 CB8 R12 value for device 8 vector CBC Address of device 8 handler CC0 points to next handler for device 8 CC4 R12 value for device 9 vector CC8 Address of device 9 handler CCC points to next handler for device 9 CD0 R12 value for device 10 vector CD4 Address of device 10 handler CD8 points to next handler for device 10 CDC R12 value for device 11 vector CE0 Address of device 11 handler CE4 points to next handler for device 11 CE8 R12 value for device 12 vector CEC Address of device 12 handler CF0 points to next handler for device 12 CF4 R12 value for device 13 vector CF8 Address of device 13 handler CFC points to next handler for device 13 D00 R12 value for device 14 vector D04 Address of device 14 handler D08 points to next handler for device 14 D0C R12 value for device 15 vector D10 Address of device 15 handler D14 points to next handler for device 15 D18 R12 value for no device D1C address of no device handler D20 points to next handler for no device D24-E20 IRQ register A priority table E24-F20 IRQ register B priority table F24 F24 Address of AddCallBack list F28-F3C F28-F3C Heap manager workspace (USR/SVC) F40-F54 F40-F54 Heap manager workspace (IRQ) F58 F5C Address of printer buffer F60 Size of printer buffer - F64 Unique Machine ID word 0 - F68 Unique Machine ID word 1 F6C F70 F74 F78 F7C - F80 B0 Kernel flag to prevent reentering MessageTrans_ErrorLookup F80 B1 F80 B2 F80 B3 F84 F88 F8C F90 F94 F98 F9C FA0 FA4 FA8 FAC FB0 FB4 FB8 FBC FC0 FC4 FC8 FCC FD0 FD4 FD8 FDC FE0 FE4 FE8 FEC - FF0 Address of SharedCLibrary:Messages messagetrans block FF4 Private workspace pointer for FPEmulator FF8 Bottom 16 bits of task handle FFC Modula-2 private word. Start of VDU workspace. Some of the 'Contents' have a bracketed number after them; these values are available through OS_ReadVduVariables with that reason code. 1000-101C Foreground ECF pattern or repeated colour 1020-103C Background ECF pattern or repeated colour 1040 GCOL action for foreground colour (151) 1044 GCOL action for background colour (152) 1048 Graphics foreground colour (153) 104C Graphics background colour (154) 1050 Left-hand column of the graphics window (128) 1054 Bottom row of the graphics window (129) 1058 Right-hand column of the graphics window (130) 105C Top row of the graphics window (131) 1060 B0 1060 B1 1060 B2 1060 B3 Base of VDU queue 1064-1070 Rest of VDU queue 1074 Offset of top of VDU queue 1078 Address to call when VDU queue full 107C Amount of RAM required by current screen mode 1080 X window limit 1084 Y window limit 1088 Length of a row in pixels 108C 1090 Log2 of (LineLength/5) 1094 b0 Non-graphic mode 1094 b1 Teletext 1094 b2 Gap mode 1098 X Eigenvalue of pixels 109C Y Eigenvalue of pixels 10A0 Log2 of number of bytes per character 10A4 Log2 of number of bits per pixel 10A8 Default ECF, dependent on bits per pixel. 10AC Maximum text column value 10B0 Maximum text row value 10B4 [referred to by ROM PaletteV] 10B8 Log2 of number of pixels per word 10BC Pointer to current GCOL/PLOT colour codes 10C0 Address of the start of screen used by VDU drivers (148) 10C4 Number of pixels per word - 1. 10C8 10CC Log2 of the number of colours 10D0 Log2 of the number of bits by which colours are shifted 10D4 10D8 10DC 10E0 Left-hand column of the text window (132) 10E4 Bottom row of the text window (133) 10E8 Right-hand column of the text window (134) 10EC Top row of the text window (135) 10F0 x coordinate of the graphics origin (ec) (136) 10F4 y coordinate of the graphics origin (ec) (137) 10F8 x coordinate of the graphics cursor (ec) (138) 10FC y coordinate of the graphics cursor (ec) (139) 1100 x coordinate of oldest graphics cursor (ic) (140) 1104 y coordinate of oldest graphics cursor (ic) (141) 1108 x coordinate of previous graphics cursor (ic) (142) 110C y coordinate of previous graphics cursor (ic) (143) 1110 x coordinate of the graphics cursor (ic) (144) 1114 y coordinate of the graphics cursor (ic) (145) 1118 x coordinate of new point (ic) (146) 111C y coordinate of new point (ic) (147) 1120 Text foreground colour (155) 1124 Text background colour (156) 1128 Output text cursor X coordinates 112C Output text cursor Y coordinates 1130 Absolute address on the screen of output cursor 1134 Input text cursor X coordinates 1138 Input text cursor Y coordinates 113C Absolute address on the screen of input cursor 1140 [referred to by VDU 23,8] 1144 Number of lines left to clear in the text block 1148 b0 Printer output enabled by VDU 2 1148 b3 Text window enabled 1148 b4 Shadow mode enabled 114C B0 X Offset of the near corner for VDU 23,8 114C B1 Y Offset of the near corner for VDU 23,8 114C B2 X Offset of the text cursor in the current text window 114C B3 Y Offset of the text cursor in the current text window 1150 B0 X Offset of the far corner for VDU 23,8 1150 B1 Y Offset of the far corner for VDU 23,8 1150 B2 1150 B3 1154 B0 X start coordinate for the VDU 23,8 block 1154 B1 Y start coordinate for the VDU 23,8 block 1154 B2 X end coordinate for the VDU 23,8 block 1154 B3 Y end coordinate for the VDU 23,8 block 1158 Cursor mask 115C Relative address of the top line of the copy cursor 1160 Relative address of the bottom line of the copy cursor 1164 Cursor counter 1168 Delay on cursor toggling (in Vsyncs) 116C Actual value given on last VDU 23,0,10 1170 EOR mask to invert pixels on screen for current mode 1174 Address of routine to display either cursor in this mode 1178 Address of the start of screen used by display hardware (149) 117C 1180 1184 Highest logical colour number available in this mode 1188 118C Current screen mode or pointer to mode selector block 1190 1194 1198 119C 11A0 11A4 11A8 11AC 11B0 11B4 11B8 11BC 11C0 11C4 11C8 11CC 11D0 Current screen mode number 11D4 Tint for text foreground colour (159) 11D8 Tint for text background colour (160) 11DC Tint for graphics foreground colour (157) 11E0 Tint for graphics background colour (158) 11E4 Amount of memory currently allocated to the screen (150) 11E8 Highest mode number available (161) 11EC 11F0 b0 [referenced by ReadVduVars] 11F0 b1 [referenced by ReadVduVars] 11F0 b2 [referenced by ReadVduVars] 11F0 b3 text printing direction vertical if set 11F0 b8 [referenced by OS_Word 22] 11F0 b9 Cursor state 11F0 b21 ChangedBox calculation enabled if set 11F0 b30 [referenced by ReadVduVars] 11F4 Stack of cursor on/off calls 11F8 11FC 1200 1204 1208 120C 1210 1214 1218 121C 1220 1224 1228 VIDC clock speed in kHz (172) 122C - 135C Graphics workspace. Variety of uses. 1360 x size of VDU 5 chars (in pixels) (162) 1364 y size of VDU 5 chars (in pixels) (163) 1368 x spacing of VDU 5 chars (in pixels) (164) 136C y spacing of VDU 5 chars (in pixels) (165) 1370 x size of VDU 4 chars (in pixels) (167) 1374 y size of VDU 4 chars (in pixels) (168) 1378 x spacing of VDU 4 chars (in pixels) (169) 137C y spacing of VDU 4 chars (in pixels) (170) 1380 Address of fast line-draw routine (166) 1384 Address of colour blocks for current GCOLs (171) 1388 First flash colour for logical colour 0 138C First flash colour for logical colour 1 1390 First flash colour for logical colour 2 1394 First flash colour for logical colour 3 1398 First flash colour for logical colour 4 139C First flash colour for logical colour 5 13A0 First flash colour for logical colour 6 13A4 First flash colour for logical colour 7 13A8 First flash colour for logical colour 8 13AC First flash colour for logical colour 9 13B0 First flash colour for logical colour 10 13B4 First flash colour for logical colour 11 13B8 First flash colour for logical colour 12 13BC First flash colour for logical colour 13 13C0 First flash colour for logical colour 14 13C4 First flash colour for logical colour 15 13C8 First flash colour for border 13CC First flash colour for mouse colour 1 13D0 First flash colour for mouse colour 2 13D4 First flash colour for mouse colour 3 13D8 13DC 13E0 13E4 13E8 13EC 13F0 13F4 13F8 Second flash colour for logical colour 0 13FC Second flash colour for logical colour 1 1400 Second flash colour for logical colour 2 1404 Second flash colour for logical colour 3 1408 Second flash colour for logical colour 4 140C Second flash colour for logical colour 5 1410 Second flash colour for logical colour 6 1414 Second flash colour for logical colour 7 1418 Second flash colour for logical colour 8 141C Second flash colour for logical colour 9 1420 Second flash colour for logical colour 10 1424 Second flash colour for logical colour 11 1428 Second flash colour for logical colour 12 142C Second flash colour for logical colour 13 1430 Second flash colour for logical colour 14 1434 Second flash colour for logical colour 15 1438 Second flash colour for border 143C Second flash colour for mouse colour 1 1440 Second flash colour for mouse colour 2 1444 Second flash colour for mouse colour 3 1448 144C 1450 1454 1458 145C 1460 1464 1468 [used by ROM PaletteV in mysterious circumstances] 146C 1470 1474 1478 147C 1480 - 14BC Foreground ECF 14C0 - 14FC Background ECF 1500 - 153C Background ECF masked against background 1540 Dot pattern count down to restarting pattern 1544 Dot pattern current state word 0 1548 Dot pattern current state word 1 154C Dot pattern repeat length 1550b0 Native ECFs (opposed to BBC-style) 1554 Address of system sprite area 1558 - 1564 Name of currently selected sprite 1568 Pointer to current sprite in system sprite area 156C B0 Height of pointer 1 156C B1 Height of pointer 2 156C B2 Height of pointer 3 156C B3 Height of pointer 4 1570 B0 ActiveX of pointer 1 1570 B1 ActiveX of pointer 2 1570 B2 ActiveX of pointer 3 1570 B3 ActiveX of pointer 4 1574 B0 ActiveY of pointer 1 1574 B1 ActiveY of pointer 2 1574 B2 ActiveY of pointer 3 1574 B3 ActiveY of pointer 4 1578 B0 Current pointer number 1578 b7 Pointer not linked 157C Pointer X coordinates 1580 Pointer Y coordinates 1584 Copy of VIDC control register 1588 158C 1590 1594 1598 159C 15A0 B0 ClaimScreenMemory flag 15A0 B1 15A0 B2 15A0 B3 15A4 - 1668 Unknown 166C ChangedBox flag word 1670 ChangedBox x coordinate of left edge 1674 ChangedBox y coordinate of bottom edge 1678 ChangedBox x coordinate of right edge 167C ChangedBox y coordinate of top edge 1680 - 3FFC Unknown 4000-7FFC RISC OS scratch space [0] Sorry for using footnotes, but some entries would be too big otherwise [1] Bottom 28 bits are the logical address of the physical page of RAM that this entry corresponds to. The top nybble is the page protection level. [2] The format of a dynamic area control block is: +00 Address of next entry in list +04 Area number +08 Address of memory associated with memory +0C Flags word (see OS_DynamicArea) +10 Current size of area +14 Maximum size of area +18 r12 for area handler +1C Address of area handler +20 Address of name of area