Routines
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