Address Label Description
6300 ENTRY
Where the BASIC loader enters the game
A631 START
Start the game
A647 AFTER_GAME
Back to the menu after a game, set up a game, and run it
A6C0 OBJECT_DONE
After each object's update routine; the end of a turn
A749 COLOUR_PANEL
Colour the screen and the panel for the room
A7A3 PRINT_CHAMBERS
Print the count of chambers activated
A7AE COLOUR_CLOCK_BOX
Colour the light-years box
A7DC CLEAR_WIPE_FLAGS
Clear every object's wipe flag
A8F0 NO_UPDATE
An update routine that does nothing
A8F1 R_CHECK_LEFTOVER
A leftover that returns at once
A8F9 LEAPER
A leaper (graphic 130)
A95A SCENE_ROBOT_TOP
The robot's top in the ending (graphic 93)
A971 OILED_ROBOT
The robot being oiled, in the ending (graphic 92)
A9B1 FRAGILE
A thing that breaks when moved (graphic 129)
A9C7 REMOTE_ROBOT
A remote-controlled robot (graphics 124 to 127)
AA4D REMOTE_PAD
The remote-control pad (graphic 128)
AA63 REMOTE_BUTTON
A remote-control button (graphics 122 and 123)
AA89 SLOW_CHASER
A thing that homes in on the player (graphics 120 and 121)
AAA1 CLOCKWORK_MOUSE
A clockwork mouse (graphics 116 to 119)
AB1F FACE_BY_STEP_UNUSED
Unused: face by the signs of the steps
AB61 SCENE_TOOL
A tool in the re-programming (graphics 81 to 83)
ABF5 SCENE_SPARKS
The sparks over the robot (graphic 80)
AC6B SUMMARISE_CHAMBERS
Count the chambers and the cryonauts for the summary
AD13 CEILING_DROP
A thing that drops from the ceiling (graphic 73)
AD54 THUD_ON_LANDING
A thud, once, when it lands
AD66 RUN_CLOCK
Count down the light years, and show them
ADB0 PRINT_ROLLING_DIGIT
Print a digit rolled
ADC9 CLOCK_BORROW
Take a light year off
ADE5 ROLL_CLOCK
Roll the clock's digits a row
ADF3 SET_WIPE_AND_DRAW_IY
Mark the object at IY to be wiped and redrawn
AE03 FIND_GRAPHIC_HERE
Find the room's first object with a graphic in a range
AE17 WANTED_VALVE
The picture of the valve a socket wants (graphics 104 to 107)
AE33 SOCKET_SPARKLE
A socket's sparkle (graphics 108 to 111)
AE5D SEATED_VALVE
A valve seated in its socket (graphics 100 to 103)
AE68 SOCKET
A chamber's socket (graphics 112 to 115)
AE81 ANY_SPECIAL_HERE
Is anything lying in the room from the places?
AE8A CALC_PIXEL_XY_IY
Project the object at IY onto the screen
AE96 CRYONAUT
A frozen cryonaut (graphic 74)
AE99 FIND_SPECIAL_OBJS_HERE
Bring in what lies in the room from the places
AF05 UPDATE_SPECIAL_OBJS
Write the valves in the room back to their places
AF3F INIT_SPECIAL_OBJECTS
Deal the valves and the extra lives to their places
AF79 LOOSE_VALVE
A valve (graphics 96 to 99), and activating a chamber
B055 LOWER_HALF
The update routine for the lower half of a two-part creature (graphic 11)
B06B WANDERER
The update routine for a creature that wanders at random (graphics 94 and 95)
B0AD TURN_QUARTER
Turn a creature a quarter
B0DD TURN_QUARTER_BACK
Turn a creature a quarter the other way
B0E7 STEP_FROM_FACING
Set a creature's step from the way it faces
B110 PACER
The update routine for a creature that paces to and fro (graphics 86 and 87)
B165 MOVE_TOWARDS_PLAYER
Point an object at the player
B185 TOGGLE_FRAME
Flip between an object's two frames
B18C NEXT_FRAME_MOD4
Step an object through four frames
B19C SPARK_CHASER
The update routine for the thing that chases the player (graphics 76 to 79)
B1AE FACE_ALONG_STEP
Turn a creature to face the way it is stepping
B1E5 PUT_UNDER_UPPER
Put a lower half under its upper half
B1FA JOIN_HALVES
Make a two-part creature one box for its move
B20B PART_HALVES
Part a two-part creature again after its move
B21C SHUTTLE_V
The update routine for a block that shuttles to and fro in V (graphic 67)
B224 SHUTTLE_U
The update routine for a block that shuttles to and fro in U (graphic 66)
B267 CONVEYOR_PLUS_V
The update routine for a conveyor that carries things forwards in V (graphic 68)
B27A CONVEYOR_PLUS_U
The update routine for a conveyor that carries things forwards in U (graphic 69)
B280 CONVEYOR_MINUS_V
The update routine for a conveyor that carries things back in V (graphic 70)
B286 CONVEYOR_MINUS_U
The update routine for a conveyor that carries things back in U (graphic 71)
B28C COLLAPSING_BLOCK
The update routine for a block that collapses when landed on (graphic 45)
B29F STILL_DEADLY
The update routine for things that kill but never move (graphics 72 and 75)
B2A4 SPIKES
The update routine for the spikes (graphic 46)
B2B0 DEADLY_AND_DRAW
Make an object deadly both ways, and redraw it
B2B6 DROPPING_BLOCK
The update routine for a block that sinks while something stands on it (graphic 44)
B2D9 SAVE_UVZ
Keep an object's position
B2EB SAME_UVZ
Is an object where it was?
B2FF PUSHABLE
The update routine for a block that can be pushed (graphic 28)
B31A PUSHABLE_INVERTED
The update routine for the other block that can be pushed (graphic 29)
B31F LIFT
The update routines for the lift (graphic 47) and the bobbing block (graphic 31)
B39A START_SPARKLE
Start the sparkle an object vanishes in
B3A4 SPARKLE_STEP
The update routine for a frame of the sparkle (graphics 48 to 54, and 64)
B3B0 SPARKLE_END_PLACE
The update routines for the last frame of a sparkle (graphics 65 and 55)
B4A1 PLAY_TUNE_ONCE
Play the menu's tune, once, until a key is pressed
B4BA PLAY_TUNE
Play the tune at DE
B4C5 PLAY_NOTE
Play one note
B5EE SPARKLE_SOUND
The sparkle's sound
B604 MATERIALISE_SOUND
The sound of the robot materialising
B619 THUD_SOUND
The sound of a thud
B62C JUMP_SOUND
The sound of a jump
B63C BEEP_BY_Z
A note pitched by an object's Z
B64A BEEP_BY_U
A note pitched by an object's U
B64F BEEP_BY_V
A note pitched by an object's V
B654 BEEP_BY_UVZ
A note pitched by an object's position
B65F TRANSFORM_SOUND
Unused: Knight Lore's werewolf sound
B676 CRASH_SOUND
The sound of a crash
B690 WARBLE_SOUND
A warble for the remote-controlled robots
B6B1 PLAIN_BEEP
A plain beep: 16 waves at half-wave count 128
B6B6 PAUSE_BEEP
A beep: 24 waves at half-wave count 80
B6BB HIGH_BEEP
A beep: 32 waves at half-wave count 48
B6C0 LOWER_HALF_STEP
A footstep for a creature's lower half
B6CE FOOTSTEP
The robot's footstep
B702 CLICK
One wave
B712 DO_ANY_OBJS_INTERSECT
Does this object overlap any other?
B74D IS_OBJECT_NOT_IGNORED
Does this object take part in collisions?
B759 READ_KEYS
Read a half-row of the keyboard
B761 GAME_ENDED
The game is over
B804 SET_UP_SCENE
Put the scene's objects in the object records
B863 MARK_ROOM_SEEN
Mark the robot's room as seen
B881 COUNT_ROOMS_SEEN
Count the rooms seen
B899 WAIT_KEY_OR_TIME
Wait for a key, or for a while
B8A9 ARRIVAL_SCREEN
The game is won: the arrival screen
BA36 PRINT_SUMMARY_COUNTS
Print the summary's three counts
BA57 PRINT_LIVES
Print the number of lives
BA7E MENU
The menu
BAFB FLASH_MENU
Flash the chosen lines on the menu
BB9D PRINT_TEXT_SINGLE_COLOUR
Print a string in one colour
BBB1 PRINT_TEXT
Print a string whose first byte is its colour
BBEB PRINT_CHAR
Print a character into the screen buffer
BC15 TOGGLE_SELECTED
Flash one of B attributes, and steady the rest
BC1C FLASH_NEXT_ONE
The rest of TOGGLE_SELECTED
BC25 DISPLAY_MENU
Draw the menu
BC56 MULTIPLE_PRINT_SPRITE
Draw a sprite several times in a line
BC70 PLAYER_APPEARING
The update routine for the robot appearing (graphics 56 to 62)
BC83 PLAYER_APPEARED
The update routine for the robot's last frame of appearing (graphic 63)
BC9D SHOW_CARRIED
Show the carried things on the panel, if they have changed
BD58 CHK_PICKUP_DROP
Is the pick-up control pressed?
BD6B TAKE_OR_LEAVE
Pick up, or put down
BEA7 CAN_PICK_UP
Can this thing be picked up?
BED6 IS_OBJ_MOVING
Is the object moving?
BEE0 EXTRA_LIFE
The update routine for an extra life (graphic 12)
BF2F BLIT_2X8
Copy a 16 by 8 pixel patch from the buffer to the screen
BF3D DRAW_AT_L16_D9
Drawing nudge X -16, Y -9 (graphic 30)
BF47 DRAW_AT_L12_D8
Drawing nudge X -12, Y -8
BF4C DRAW_AT_L16_D7
Drawing nudge X -16, Y -7
BF51 DRAW_AT_L12_D7
Drawing nudge X -12, Y -7 (graphic 13)
BF56 DRAW_AT_L16_D6
Drawing nudge X -16, Y -6
BF5B DRAW_AT_L12_D6
Drawing nudge X -12, Y -6
BF60 DRAW_AT_L12_D5
Drawing nudge X -12, Y -5
BF65 DRAW_AT_L8_D5
Drawing nudge X -8, Y -5 (graphic 15)
BF6A DRAW_AT_L12_D4
Drawing nudge X -12, Y -4
BF6F DRAW_AT_L16_D3
Drawing nudge X -16, Y -3
BF74 DRAW_AT_L4_D3
Drawing nudge X -4, Y -3 (graphic 14)
BF7E DRAW_AT_L8_D2
Drawing nudge X -8, Y -2
BF83 FILL_BOX
Fill a box of bytes, B wide and C rows high, with A
BF97 FILL_BOX_STORES
The eight stores of FILL_BOX
BFAB SET_WIPE_AND_DRAW_FLAGS
Mark an object to be rubbed out and redrawn
BFB6 DEC_DZ_AND_UPDATE_UVZ
Fall, and move
BFD8 SECOND_PILLAR
The update routine for the second pillar of a doorway (graphic 3)
BFEA FIRST_PILLAR
The update routine for the first pillar of a doorway (graphic 2)
C050 NUDGE_ALONG_V
Nudge along V
C069 NUDGE_ALONG_U
Nudge along U
C082 CHK_PLYR_NEAR_ARCH
Is the robot in the doorway?
C099 IS_NEAR_TO
Is an object near a point?
C0BE PLAYER_LEGS
The update routine for the robot's legs (graphics 16 to 23)
C117 CHK_PLYR_OOB
Is he inside the room's walls?
C13C HANDLE_LEFT_RIGHT
Turn the robot
C1E2 TURNING_LEGS
The robot's legs while he turns (graphics 24 to 27)
C23D HANDLE_JUMP
Start a jump
C25E HANDLE_FORWARD
Step the legs
C296 MOVE_PLAYER
Move the robot
C2F6 CALC_PLYR_DUV
Add a step in the direction he faces
C319 GET_SPRITE_DIR
Which way an object faces
C337 STEP_U_DOWN
Step towards lower U
C340 STEP_U_UP
Step towards higher U
C347 STEP_V_UP
Step towards higher V
C350 STEP_V_DOWN
Step towards lower V
C357 ADJ_DZ_FOR_OUT_OF_BOUNDS
Shorten dZ at the floor
C36D HANDLE_EXIT_SCREEN
Has the robot walked out of the room?
C386 SHORTEN_DELTA
Shorten a move by one unit
C397 EXIT_LOW_U
Out through the wall at low U?
C3F0 EXIT_HIGH_U
Out through the wall at high U?
C40B EXIT_HIGH_V
Out through the wall at high V?
C426 EXIT_LOW_V
Out through the wall at low V?
C442 ADJ_FOR_OUT_OF_BOUNDS
Cut a move short against the room and the other objects
C497 ADJ_DU_FOR_OBJ_INTERSECT
Shorten dU against the other objects
C4E6 ADJ_DV_FOR_OBJ_INTERSECT
Shorten dV against the other objects
C535 ADJ_DZ_FOR_OBJ_INTERSECT
Shorten dZ against the other objects
C5A9 DO_OBJS_INTERSECT_ON_U
Do two objects overlap in U?
C5BE DO_OBJS_INTERSECT_ON_V
Do two objects overlap in V?
C5D3 DO_OBJS_INTERSECT_ON_Z
Do two objects overlap in Z?
C5E9 ADJ_DU_FOR_OUT_OF_BOUNDS
Shorten dU at the walls
C613 ADJ_DV_FOR_OUT_OF_BOUNDS
Shorten dV at the walls
C63D CALC_2D_INFO
Work out an object's screen rectangle
C657 SET_DRAW_OBJS_OVERLAPPED
Mark every object the moving object's old or new rectangle touches
C6E4 TOP_FOLLOWS_LEGS
The robot's top (graphics 32 to 43)
C71C LIST_DRAWN
List the objects to be drawn
C785 SORT_AND_DRAW
Draw the listed objects, back to front
C869 ORDER_UNCONSTRAINED
A pair with no order between them
C86C CANDIDATE_ALREADY_FIRST
The candidate is behind the other object
C86F IY_GOES_FIRST
The other object must be drawn first
C8AB BOXES_INTERSECT
Two boxes occupy the same space
C8D5 DRAW_CANDIDATE
Draw the candidate and start the next pass
C8EA ALL_DRAWN
All the listed objects are drawn
C8FF READ_CONTROLS
Read the controls
CA07 NEW_LIFE
Start a life
CA6D NEW_GAME_START
Set the start records for a new game
CAA2 ENTER_ROOM
Build the room he is in
CAD2 RESET_ROOM_COLOURS
Give every room back its own colour
CAF1 TRANSFER_SPRITE
Copy a sprite's four bytes into the drawing record
CB06 TRANSFER_SPRITE_AND_PRINT
Copy a sprite's four bytes and draw it
CB0F DISPLAY_PANEL
Draw the panel's scroll-work and icons at the foot of the screen
CB8A PRINT_BORDER
Draw the border round the screen
CC01 ADJUST_PLYR_UVZ_FOR_ROOM_SIZE
Put the robot in the doorway he came in by
CC6D ADJUST_PLYR_Z_FOR_ARCH
Stand the robot on the floor of the arch he comes in by
CC96 GET_PTR_OBJECT
The address of the object record numbered A
CCA7 BUILD_ROOM
Build a room's object records from the room directory
CE06 ADD_HL_A
HL = HL + A
CE0D HL_EQUALS_DE_X_A
HL = DE * A
CE1C ZERO_DE
Clear B bytes from DE
CE22 HANDLE_PAUSE
Pause, when SPACE is pressed on its own
CE4E CLEAR_OBJECTS
Clear all 56 object records
CE60 CLR_BITMAP_MEMORY
Clear the display bitmap
CE68 CLR_ATTRIBUTE_MEMORY
Set every attribute to bright red on black
CE73 CLEAR_SCRN
Clear the screen and make the border black
CE7B CLEAR_SCRN_BUFFER
Clear the screen buffer
CE85 SHOW_BUFFER
Copy the screen buffer to the screen
CEAB RENDER_DYNAMIC_OBJECTS
Redraw what changed and copy it to the screen
CF85 BLIT_TO_SCREEN
Copy a rectangle of the buffer to the screen
CFA7 BUILD_LOOKUP_TBLS
Build the drawing tables
CFD2 CALC_PIXEL_XY
Project an object's position onto the screen
CFFE FLIP_SPRITE
Find an object's sprite and make it face the right way
D013 CALC_PIXEL_XY_AND_RENDER
Draw one object from the draw list
D08F SPRITE_ALIGNED_RUN
The unrolled row of a byte-aligned sprite
D0B9 SPRITE_ROW
Start a row of a sprite
D0BD SPRITE_SHIFTED_RUN
The unrolled row of a shifted sprite
D120 CALC_VIDBUF_ADDR
Buffer address of a pixel position
D135 CALC_VRAM_ADDR
Display address of a pixel position
D157 CALC_ATTRIB_ADDR
Attribute address of a pixel position
D174 VFLIP_SPRITE_DATA
Turn a sprite's stored data the way its object faces