Address |
Length |
Description |
7F00 |
96 |
Used by the routines at E9D5, EA80, F0BE, F100, F3A0 and FC57. Each byte of the screen refresh buffer (SRB) corresponds to a segment of 8 character squares on the screen, the leftmost of which will be at x=0, x=8, x=16 or x=24. Each bit set in an SRB byte corresponds to a character square in the segment that needs refreshing. Bit 7 corresponds to the leftmost character square in the segment, bit 0 to the rightmost character square.
Note that, owing to a quirk in the way the SRB-updating routine at E9D5 works, the first 16 bytes of the screen refresh buffer correspond not to any part of the screen, but to the four rows of the play area that are immediately above the currently visible portion of the play area. Therefore, the screen-updating routine at EA80 ignores those bytes and starts inspecting SRB bytes at 7F10 instead.
Note also that the routine at 6EC5 uses the first 16 bytes of the SRB as a temporary backup store for the submessage indicator and submessage addresses at 7F81, and the routine at FC6A uses the first 32 bytes of the SRB as a temporary store for the top row of attribute bytes when scrolling the screen up and down.
|
7F60 |
33 |
Used by the routine at 6EC5 to prepare a message before displaying it. Also used by the routines at F18E and F1BA as temporary storage for one of the character buffers in groups 0xD7-0xDD.
|
7F81 |
16 |
Used by the routine at 6EC5.
|
7F91 |
1 |
|
7F92 |
5 |
Used as a submessage of message 0x2A. This message is cleared by the routine at 76FA when Sam picks up a phone, and updated by the routine at 77D3 as Sam dials.
|
7F97 |
2 |
Used by the routines at 776F and 77A3. Holds either the address of the second byte of the entry in the phone message table at 6B4B or 6B72 that corresponds to the phone that Sam is calling (if the person on the other end has a message for him) or picking up a call from, or the address of the final byte of the phone table at 6B72 (if the person Sam's calling has no message to give); this address contains the number of the message corresponding to the name that Sam must give in order to receive the telephone message, or 0x00 if no name is required to receive the message, or 0xFF if the person Sam's calling will respond with message 0x2E (I DUNNO NO {name}).
|
7F99 |
1 |
Checked by the routine at 76DD and set by the routine at 76FA (to the value of the second byte of the the system variable FRAMES, which is incremented every 5.12s).
|
7F9A |
1 |
|
7F9B |
1 |
Bit(s) |
Meaning if set |
0 |
Unused |
1 |
The telephone call is finished (disconnected) |
2,3 |
Unused |
4 |
A digit is being dialled |
5 |
The destination telephone is ringing |
6 |
Sam must give a name in response to 'WHO'S THERE?' |
7 |
Sam has picked up a ringing telephone |
|
7F9C |
2 |
Checked by the routine at F0BE, and updated by the routine at 6EB1.
|
7F9E |
2 |
|
7FA0 |
2 |
Used by the routine at 6EC5. Holds the two least significant bytes of the system variable FRAMES as they were when the last message was displayed.
|
7FA2 |
6 |
When a fuse is blown, the corresponding delay counter here is initialised by the routine at 74AA. The delay counters are checked and decremented by the routine at F404.
|
7FA8 |
1 |
Used as a temporary buffer by the routines at 73E4, 7425 and 7603. Each bit set here (by the routine at 7425 or 7603) corresponds to an icon that should be displayed in the panel.
Bit(s) |
Icon |
7 |
Fuse/Budgie |
6 |
Door/Hook |
5 |
Light bulb |
4 |
Telephone |
0-3 |
Unused |
|
7FA9 |
1 |
Decremented and checked on every pass through the main loop by the routine at F000, and also checked by the routine at F144.
|
7FAA |
10 |
Used by the routines at F2A8, F748 and F7CD. The bits in each byte here are used as follows:
Bit(s) |
Meaning if set |
7 |
Somebody has just knocked on the door |
6 |
Somebody is going to answer the door |
0-5 |
Unused |
|
7FB4 |
1 |
Used by the routine at F1FC, which stores a non-zero value here if any fuses are currently blown.
|
7FB5 |
1 |
|
7FB6 |
1 |
Used by the routines at 74AA and 75A4. A bit set here indicates that the corresponding fuse has already been blown once. Bits 6 and 7 are unused.
Bit |
Fuse |
0 |
No. 74 |
1 |
Hotel |
2 |
No. 31 |
3 |
No. 19 |
4 |
No. 17 |
5 |
No. 15 |
|
7FB7 |
1 |
|
7FB8 |
8 |
|
7FC0 |
4 |
|
7FC4 |
4 |
|
7FC8 |
1 |
Stores the value of the LSB of the system variable FRAMES as it stood at the end of the last pass through the main loop at F02B or the routine at 790D.
|
7FC9 |
1 |
Checked by the routines at 7222, 739D and 7500 (using the event entry at 605A), and changed by the routine at F95E. Holds the ID of Sam's current disguise.
ID |
Disguise |
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
|
7FCA |
6 |
Used by the routine at 6E1A.
|
7FD0 |
2 |
Used as a submessage of messages 0x24, 0x28, 0x2E and 0x34. The message number of the name is inserted by the routine at 776F; the tens digit of the number of bucks is inserted by the routine at 7B6A or FB52.
|
7FD2 |
1 |
|
7FD3 |
1 |
Set by the routine at 76FA and checked by the routine at 77D3.
|
7FD4 |
2 |
Checked and set by the routine at 7AB6. Holds the value of the two least significant bytes of the system variable FRAMES as they were when the score was last incremented.
|
7FD6 |
5 |
|
7FDB |
3 |
Set by the routines at 71A0 and 7A39, and checked by the routine at 72B1.
|
7FDE |
2 |
Used by the routine at F17F.
|
7FE0 |
7 |
Data is copied here from the game status buffer template at FFE0, but is never used.
|
7FE7 |
1 |
Used by the routine at 65DB.
|
7FE8 |
1 |
|
7FE9 |
1 |
Changed by the routine at 7603, and checked by the routines at 634C, 7500 (using the event entries at 60B0 and 60C6) and 7BE1. Each bit set here corresponds to an object in Sam's possession.
Bit(s) |
Object |
0-5 |
Unused |
6 |
Hook |
7 |
Budgie |
|
7FEA |
1 |
Changed by the routines at 7603 and 7996, and checked by the routines at 7500 (using the event entries at 600A and 6097) and 7A39. Each bit set here corresponds to a key in Sam's possession.
Bit(s) |
Key |
0-2 |
Unused |
3 |
No. 74 |
4 |
No. 31 |
5 |
No. 27 |
6 |
No. 15 |
7 |
No. 19 |
|
7FEB |
1 |
Bit(s) |
Meaning if set |
0 |
Sam is wanted by the police |
1-6 |
Unused |
7 |
Sam is in jail |
|
7FEC |
2 |
The high score is copied here from the game status buffer template at FFE0 by the routine at F8AE, but never used afterwards.
|
7FEE |
1 |
Holds the current game mode (0-4). Checked by the routines at 7500 (using the event entry at 5FE0), 7996, 7AB6 and F080, and updated by the routine at F8AE.
Mode |
Meaning |
0 |
Demo mode |
1 |
The game has just started |
2 |
Sam has entered no. 15 with the key |
3 |
Sam has had the phone call about the key to no. 74 and gone to the top of the apartment building |
4 |
The mob is after Sam |
|
7FEF |
1 |
Used by the routines at 6592 and 7414. A first aid kit will be displayed in the icon panel for every bit that is set.
|
7FF0 |
10 |
Used by the routines at 76BC, F144, F293 and F2A8. In each flag byte here, bits 0-2 hold the door close delay timer (0 if the door is shut), and the set bit (if any) in bits 3-7 indicates the key that is required to unlock the door:
Bit |
Key |
3 |
Key to no. 74 |
4 |
Key to no. 31 |
5 |
Key to no. 27 |
6 |
Key to no. 15 |
7 |
Key to no. 19 |
|
7FFA |
1 |
Set by the routine at 6177, and used by the routine at EAB2. Holds 0x6B ('k') if the Kempston joystick is being used, or 0x00 otherwise.
|
7FFB |
1 |
Used by the routine at F1FC.
|
7FFC |
1 |
Used by the routine at 74D8 to decide how to deal with Sam.
Bit |
Meaning if set |
Routine |
0 |
Sam is being carried by a gangster or policeman |
7AF4 |
1 |
Sam is immobilised (after meeting Lana) |
6100 |
2 |
Unused |
|
3 |
Sam is rolling or somersaulting |
64CD |
4 |
Sam is on the phone |
77D3 |
5 |
Sam is blowing a fuse |
75C2 |
Sam is switching a light on or off |
Sam is raising or lowering a blind |
Sam is throwing the hook |
Sam is picking up an object |
6 |
Sam is knocking on or opening a door |
F308 |
7 |
Sam is falling from the roof of a building |
FB93 |
|
7FFD |
1 |
Set by the main loop at F02B, and checked by the routine at ECE1. Holds the value from the keypress offset table corresponding to the last key pressed.
|
7FFE |
1 |
Checked by many routines, and modified by the routines at E80E and E845.
|
7FFF |
1 |
Checked by many routines, and modified by the routines at E87C and E8B7.
|