Page Byte Address Description
64 0 4000
Loading screen
91 0 5B00
Unused
91 91 5B5B
IM2 vector jump
91 94 5B5E
Unused
92 118 5C76
Pseudo-random store for crushers
92 120 5C78
Unused
92 123 5C7B
Current x co-ordinate
92 124 5C7C
Current y co-ordinate
92 125 5C7D
Abide With Me tune data
92 225 5CE1
Game won message
95 67 5F43
Hidden message
96 0 6000
Bucket
96 128 6080
Miner
97 128 6180
Dog
98 0 6200
Squirrel L
98 128 6280
Squirrel R
99 0 6300
Nut
99 128 6380
Police helmet alien thingy
100 0 6400
Candle
100 128 6480
Bat
101 0 6500
No smoking sign
101 128 6580
Arthur L
102 0 6600
Arthur R
102 128 6680
Aerosol L
103 0 6700
Aerosol R
103 128 6780
Lightbulb
104 0 6800
Jawed critter L
104 128 6880
Jawed critter R
105 0 6900
Star
105 128 6980
Grumpy face
106 0 6A00
Miner's helmet
106 128 6A80
Worried face
107 0 6B00
Snake
107 128 6B80
Ghost L
108 0 6C00
Ghost R
108 128 6C80
Genie L
109 0 6D00
Genie R
109 128 6D80
Waterfall
110 0 6E00
Bee
110 128 6E80
Rock
111 0 6F00
Brick
111 128 6F80
Minecart
112 0 7000
Tipping minecart
112 128 7080
Flying fish (12 frames)
114 0 7200
Shark (16 frames)
118 0 7600
Devil
118 128 7680
Tap
119 0 7700
Pull chain
119 128 7780
(empty)
120 0 7800
Monty up
121 0 7900
Monty climbing
122 0 7A00
Hammer
122 32 7A20
Drill
122 64 7A40
Pick
122 96 7A60
Scroll
122 128 7A80
Axe
122 160 7AA0
Detenator
122 192 7AC0
Dynamite
122 224 7AE0
Stick
123 0 7B00
Club
123 32 7B20
Shovel
123 64 7B40
Bucket
123 96 7B60
Spade
123 128 7B80
Scissors
123 160 7BA0
Key
123 192 7BC0
Shower head
123 224 7BE0
Plant
124 0 7C00
Start room graphics
128 0 8000
Display input options and wait to start
128 105 8069
Toggle the display on every interrupt so the selected option is flashing
128 138 808A
Blank a character on screen
128 146 8092
Print an option on the intro screen
128 209 80D1
Print a character on screen
128 255 80FF
Put a text character's attributes on screen
129 34 8122
Intro string data (5 lines)
129 59 813B
Character set
130 107 826B
Intro string text
130 163 82A3
Game input : 0 - keyboard, 1 - Kempston, 2 - Sinclair
130 164 82A4
Frame counter for input options
130 165 82A5
Set to 0 to print an option, or 1 to hide it
130 166 82A6
Check for player input
131 46 832E
Last input data
131 47 832F
Unused
131 149 8395
Select the graphic for Monty
131 173 83AD
Unused
131 181 83B5
Unused
132 82 8452
Redraw Monty after jumping or falling
132 140 848C
Last address of Monty graphic
132 142 848E
Current frame to draw Monty
132 143 848F
Position off the ground (when jumping)
132 144 8490
Unused
132 146 8492
Pointer to current movement flags
132 148 8494
Current pitch to use when making a jump sound
132 150 8496
Default pitch to use when maing a jump sound
132 152 8498
Time Monty has been jumping
132 153 8499
Temporary storage for redrawing when jumping or falling
132 155 849B
Last input data when jumping or falling
132 156 849C
Monty up
133 28 851C
Monty up (alt)
133 156 859C
Monty left
134 28 861C
Monty right
134 156 869C
Movement table for jumping
134 188 86BC
Unused
135 14 870E
Unused
135 29 871D
Unused
135 47 872F
Unused
135 78 874E
Unused
135 81 8751
Move all the nasties on the screen
136 102 8866
Draw the nasty's attributes
136 125 887D
Draw a type 1 - 3 nasty
136 130 8882
Unused
136 244 88F4
Unused
137 96 8960
Unused
137 98 8962
X co-ordinate for current nasty being drawn
137 99 8963
Y co-ordinate for current nasty being drawn
137 100 8964
Update a type 2 (single direction) nasty
137 212 89D4
Update Monty's position
138 99 8A63
Make Monty jump
138 196 8AC4
Unused
138 211 8AD3
Update Monty while jumping
139 12 8B0C
See if Monty has walked off a ladder, and if so, set some flags
139 31 8B1F
Update Monty and act on room flags
139 144 8B90
Determine where Monty can move to
140 61 8C3D
Check what attributes are around Monty
141 15 8D0F
Update the movement tables (across)
141 46 8D2E
Update the movement tables (down)
141 82 8D52
Room flags
141 83 8D53
Game flags
141 84 8D54
Movement flags
141 88 8D58
Distance fallen by
141 89 8D59
Current attribute address of Monty
141 91 8D5B
Y screen offset for attribute
141 92 8D5C
X screen offset for attribute
141 93 8D5D
X co-ordinate on screen
141 94 8D5E
Y co-ordinate on screen
141 95 8D5F
Return the current screen address
141 125 8D7D
Temp store for screen position
141 127 8D7F
Play death tune
141 205 8DCD
Move a crusher
142 122 8E7A
Crusher graphic
142 154 8E9A
142 155 8E9B
Set the attributes for a crusher
142 221 8EDD
Animate Monty's angel as he has died
143 49 8F31
Update the moving platforms
143 159 8F9F
IM2 routine for main game
144 82 9052
Update one side of a moving platform
144 163 90A3
Update one byte of a moving platform
144 168 90A8
Animate water
144 189 90BD
Animate the shower water in room 11
145 11 910B
Graphic buffer for shower water in room 11
145 43 912B
Graphic index for shower in room 11
145 44 912C
Animate the shower water in room 11 (2)
145 72 9148
Check that a crusher has killed Monty
145 119 9177
Offset for Monty's angel as it is animated
145 121 9179
Frame number for the angel (0-3)
145 122 917A
Make Monty climb a ladder
145 157 919D
Add value of coal to the current score
145 232 91E8
Print the score
146 18 9212
Score position data
146 23 9217
Current score (in reverse digits)
146 28 921C
"SCORE: "
146 35 9223
Current score (in text).
146 40 9228
Check to see if Monty has collided with a nasty
146 88 9258
See if Monty is touching some coal and can collect it
146 126 927E
Check if Monty is touching a (non-coal) collectable item, and if so, pick it up
146 152 9298
Check if Monty has collided with a nasty that can be removed with an item
147 39 9327
Return IX pointing to the index of the nasty Monty is touching, or 0
147 92 935C
Check to see if Monty has moved near any coal, and if so, pick it up
148 12 940C
Enter a room
148 110 946E
Monty has died. Play the "death" tune and lose a life
148 158 949E
Print the number of lives on the screen
148 182 94B6
Lives display position
148 187 94BB
Lives display text
148 195 94C3
Copy the data for the current room into the working buffer
148 217 94D9
Move into a new room
149 47 952F
Put (non coal) collectable objects on screen
149 81 9551
Display the current room
149 104 9568
Pick up an item
149 174 95AE
Reset the index of the collectable item, as it was picked up
149 179 95B3
Animate the coal colours in the room
149 232 95E8
Animate an item of coal in a room.
150 15 960F
Draw the coal in the room
150 67 9643
Unused
150 71 9647
Storage block for calculating coal pickups
150 73 9649
Current room
150 74 964A
Number of lives
150 75 964B
Start position for this room (when a life is lost)
150 77 964D
Array of points given for each 'nth' coal item
150 141 968D
Clear a non-coal item, as it has been collected
150 170 96AA
Refresh any coal in the room.
150 209 96D1
Temporary space for coal data
150 217 96D9
Animate the rolling minecart in room 10
151 151 9797
X co-ordinate of the minecart in room 10
151 152 9798
Y co-ordinate of the minecart in room 10
151 153 9799
Unused
151 155 979B
Monty rolling (not used)
152 27 981B
Unused
154 42 9A2A
Room 00
156 42 9C2A
Room 01
158 42 9E2A
Room 02
160 42 A02A
Room 03
162 42 A22A
Room 04
164 42 A42A
Room 05
166 42 A62A
Room 06
168 42 A82A
Room 07
170 42 AA2A
Room 08
172 42 AC2A
Room 09
174 42 AE2A
Room 0A
176 42 B02A
Room 0B
178 42 B22A
Room 0C
180 42 B42A
Room 0D
182 42 B62A
Room 0E
184 42 B82A
Room 0F
186 42 BA2A
Room 10
188 42 BC2A
Room 11
190 42 BE2A
Room 12
192 42 C02A
Room 13
194 42 C22A
Room 14
196 42 C42A
Static characters on screen
197 26 C51A
"Water" attribute
197 27 C51B
"Fire" attribute
197 28 C51C
"Ladder" attribute
197 29 C51D
"Wall" attribute
197 30 C51E
Offset for Monty's graphic
197 32 C520
Next room UP
197 33 C521
Next room DOWN
197 34 C522
Next room LEFT
197 35 C523
Next room RIGHT
197 36 C524
x co-ordinate of (non coal) collectable item
197 37 C525
y co-ordinate of (non coal) collectable item
197 38 C526
Graphic index of (non coal) collectable item
197 39 C527
x co-ordinate of crusher
197 40 C528
y co-ordinate of crusher
197 41 C529
Crusher bottom column
197 42 C52A
Ticks left until a crusher should fire
197 43 C52B
Set to 0 if a crusher is ascending, or 1 if it is descending
197 44 C52C
Crusher top column
197 45 C52D
Unused
197 55 C537
Coal UDG
197 63 C53F
Positions of coal in the room
197 78 C54E
Static character graphics
197 150 C596
Nasty data
198 34 C622
Moving platform 1 left x co-ordinate
198 35 C623
Moving platform 1 left y co-ordinate
198 36 C624
Moving platform left edge
198 37 C625
Moving platform right edge
198 38 C626
Moving platform 2 right x co-ordinate
198 39 C627
Moving platform 2 right y co-ordinate
198 40 C628
Set bit 7 if the platform is closing, otherwise reset if it is opening
198 41 C629
Unused
198 42 C62A
Copy the room graphic buffer to screen so it is visible
198 65 C641
Unused
199 0 C700
Vector jump table
200 0 C800
Unused
200 80 C850
Unused
200 138 C88A
Unused
202 56 CA38
Unused
202 57 CA39
Unused
202 209 CAD1
Display the "game won" sequence
203 3 CB03
Print a message
203 21 CB15
Scroll a line of the message
203 53 CB35
Print a character in a message
203 99 CB63
Move a line of a message upwards
203 145 CB91
Column to print the next character in a message.
203 146 CB92
Timer used when scrolling the end message
203 147 CB93
Run one frame in the first (outdoor) room
205 38 CD26
Convert a sprite ID to a graphic offset
205 50 CD32
Set to 0 if the bucket has been collected, or 1 if not
205 51 CD33
Timer for animating bucket
205 52 CD34
Animation frame for bucket
205 53 CD35
X co-ordinate of the miner
205 54 CD36
Animation frame for miner
205 55 CD37
Timer for animating miner
205 56 CD38
Squirrel direction
205 57 CD39
X co-ordinate of the squirrel
205 58 CD3A
Timer for animating squirrel
205 59 CD3B
Animation frame for the squirrel
205 60 CD3C
Set to 1 if the squirrel is dropping a nut
205 61 CD3D
Set to 0 if the nut is still falling, or 4F if it is exploding
205 62 CD3E
Current screen position of the nut dropped by the squirrel
205 63 CD3F
Timer for animating nut
205 64 CD40
Animation frame for nut
205 65 CD41
Display the first (outdoor) room
205 196 CDC4
Monty has grabbed the bucket - start the miner chase
205 239 CDEF
Interrupt routine for first room
206 25 CE19
Frame counter (when zero, background animation happens)
206 27 CE1B
Unused
206 204 CECC
Unused
206 205 CECD
Unused
206 239 CEEF
Unused
207 44 CF2C
Unused
207 84 CF54
Screen attribute buffer
210 84 D254
Copy the screen to storage buffer
210 96 D260
Save game to tape
210 144 D290
Main entry point
210 233 D2E9
Unused
213 185 D5B9
Colonel Bogey tune data
218 1 DA01
Unused
234 96 EA60
Offsets from character to relative screen positions
235 224 EBE0
Print an animinated object on screen
236 101 EC65
Unused
236 111 EC6F
Shift a sprite to the right and copy it into a working buffer
236 162 ECA2
Shift a sprite to the left and copy it into a working buffer
236 220 ECDC
Frame number of the next sprite to update
236 221 ECDD
Unused
236 222 ECDE
X co-ordinate of next sprite to update
236 223 ECDF
Y co-ordinate of next sprite to update
236 224 ECE0
Address of next sprite to update
236 226 ECE2
Pointer to position on screen to update
236 228 ECE4
Working buffer for moving sprites
237 22 ED16
Unused
237 46 ED2E
Unused
237 78 ED4E
Chimney smoke for start room
239 46 EF2E
Animate the smoke in the start room
239 107 EF6B
Initialize smoke animation in the start room
239 119 EF77
Pointer to smoke animation graphic
239 121 EF79
Frame number for smoke animation graphic
239 122 EF7A
Screen offset address to draw the smoke animation graphic
239 124 EF7C
Unused
239 126 EF7E
Set up graphics for the start room
239 189 EFBD
Draw static UDGs on the start room
240 65 F041
Pointer to start room data
240 67 F043
Pointer to start room UDGs
240 69 F045
Current position drawing the start room
240 71 F047
Address of UDG currently being printed in the start room
240 73 F049
Screen position to draw the next UDG in the start room
240 75 F04B
End message
240 251 F0FB
Unused
241 53 F135
Unused
241 75 F14B
Pointer to start room UDG data
241 77 F14D
UDGs for start room
243 125 F37D
Attributes for start room
245 173 F5AD
Unused
246 77 F64D
See if Monty has picked up enough coal to open a blocking wall
246 166 F6A6
Hide any blocking walls if sufficient coal has been picked up
246 253 F6FD
Erase a wall from the screen
247 26 F71A
Hide a wall after enough coal has been collected
247 136 F788
Unused
247 199 F7C7
Perform interrupt handler background updates
247 209 F7D1
Flags to indicate which blocking walls can open
247 210 F7D2
Y co-ordinate for the disappearing wall
247 211 F7D3
X co-ordinate for the disappearing wall
247 212 F7D4
Timer state for the disappearing wall
247 213 F7D5
Number of pieces of coal that have been collected
247 214 F7D6
Start a new game
248 23 F817
Print the "game over" message and start a new game
248 88 F858
Print the "game won" message and start a new game
248 108 F86C
Unused
250 38 FA26
Unused
250 51 FA33
Unused
250 64 FA40
Unused
250 77 FA4D
Unused
250 103 FA67
Unused
250 119 FA77
Unused
250 191 FABF
Unused
250 238 FAEE
Unused
251 13 FB0D
Unused
251 46 FB2E
Unused
251 62 FB3E
Unused
251 158 FB9E
Unused
251 180 FBB4
Unused
251 237 FBED
Fill a sprite with an attribute
251 252 FBFC
Fill three rows with an attribute
252 24 FC18
Convert a co-ordinate to an attribute address.
252 60 FC3C
Unused
252 106 FC6A
Unused
252 153 FC99
Unused
252 180 FCB4
Unused
252 219 FCDB
Unused
252 243 FCF3
Unused
253 123 FD7B
Unused
253 155 FD9B
Generate a random time for the crusher
253 185 FDB9
Unused
253 213 FDD5
Print all static characters in the current room
253 234 FDEA
Print a line of characters in a room
254 65 FE41
Print a character in the room
254 134 FE86
Unused
254 143 FE8F
Convert a screen address to a buffer address and store it
254 152 FE98
Unused
254 162 FEA2
Check the attribute at the current position matches the "moving" type
254 192 FEC0
Get the attribute at the specified position
254 231 FEE7
Unused
255 0 FF00
Set control option and reset IY
255 8 FF08
Unused
255 91 FF5B
Halt and run one frame in the first (outdoor) room
255 96 FF60
Monty's angel
255 224 FFE0
Dead Monty