Page Byte Address Description
0 0 0000
START: ROM reset
0 4 0004
Unused
0 10 000A
ignore_subcode: Prepare to execute page_found.
0 18 0012
inhibit_display_clear: Clear inhibit_display and set exit_pointer to backup_exit_pointer.
0 31 001F
Unused
0 56 0038
MASK_INT: IM 1 maskable interrupt service routine
0 66 0042
Unused
0 102 0066
NMI: Non-Maskable interrupt vector
0 105 0069
NMI_ISR: Non-Maskable Interrupt service routine
2 122 027A
Unused
2 128 0280
hamming_decode_hl: Hamming 8/4 decode the byte at address in HL and return it in B.
2 139 028B
set_hardware_counter: Reads a byte from the decoder's SRAM but doesn't retain it. This sets an internal 4 bit counter to bits 6-9 of the read address.
2 146 0292
decode_magazine_number: Get the magazine number from the Magazine Row Address Group.
2 157 029D
decode_packet_number: Get the packet address from the Magazine Row Address Group.
2 183 02B7
store_packet_30: Copy packet to row 29 of page receive buffer.
2 202 02CA
init_memory: Main initialization routine.
3 40 0328
init_variables: Initialize BASIC system variables in a similar way to the BASIC ROM 'NEW' routine and initialize own variables in printer buffer.
4 58 043A
NMI_VECTOR: Jump to NMI service routine (Copied to NMI_JUMP).
4 61 043D
init_48k: Initialise pointers for 48k systems.
4 81 0451
48k_pointer_table.
4 109 046D
init_16k: Initialise pointers for 16k systems
4 129 0481
16k_pointer_table.
4 157 049D
initial_CHINFO: BASIC channel information initialization data.
4 178 04B2
initial_STRMS: BASIC stream addresses initialization data.
4 192 04C0
menu_data: Main menu page data (with teletext control codes).
6 64 0640
display_menu: Display the main menu and wait for enter key to be pressed.
6 166 06A6
print_character: Print character to the screen
7 59 073B
print_half_row: Print 4 pixel rows of character bitmap over 8 pixel rows of screen (double height).
7 76 074C
print_double_column_0: Write 4 pixel rows of double height character data over 8 pixel rows at column that is a multiple of 4.
7 102 0766
print_double_column_1: Write 4 pixel rows of double height character data over 8 pixel rows at column that is 1 greater than a multiple of 4.
7 128 0780
print_double_column_2: Write 4 pixel rows of double height character data over 8 pixel rows at column that is 2 greater than a multiple of 4.
7 154 079A
print_double_column_3: Write 4 pixel rows of double height character data over 8 pixel rows at column that is 3 greater than a multiple of 4.
7 180 07B4
print_normal: Print 8 pixel rows of font data (a normal height character).
7 197 07C5
print_column_0: Write character data at column that is a multiple of 4.
7 211 07D3
print_column_1: Write character data at column that is 1 greater than a multiple of 4.
7 242 07F2
print_column_2: Write character data at column that is 2 greater than a multiple of 4.
8 15 080F
print_column_3: Write character data at column that is 3 greater than a multiple of 4.
8 27 081B
screen_address: Calculate the address in screen RAM of the second byte of character row in A.
8 77 084D
set_attrs: Set screen attributes corresponding to screen address in character screen address variable to value in temp_attr.
8 176 08B0
clear_screen: Clear display bitmap and attributes.
8 196 08C4
clear_page_buffer: Clear page display buffer to spaces.
8 223 08DF
clear_receive_rows: Clear all rows except header in page receive buffer.
8 247 08F7
decode_row: Decode row of teletext data and render it to the screen.
9 152 0998
alpha_colour_code: Alphanumeric colour control code.
9 170 09AA
normal_code: Handle normal size control code.
9 182 09B6
double_code: Handle double height control code.
9 201 09C9
mosaics_colour_code: Handle a mosaics colour code.
9 235 09EB
conceal_code: Handle conceal code.
9 251 09FB
contiguous_code: Handle contiguous mosaics cotrol code.
10 2 0A02
separated_code: Handle separated mosaics cotrol code.
10 23 0A17
black_background_code: Clear paper colour bits of temp_attr.
10 34 0A22
new_background_code: Copy ink colour bits of temp_attr to paper colour bits.
10 55 0A37
hold_mosaics_code: Handle hold mosaics code.
10 76 0A4C
Release_mosaics_code: Handle release mosaics code.
10 82 0A52
code_set_at: Display character.
10 184 0AB8
translate_colour: Translate an alphanumeric colour code to spectrum attribute colour.
10 212 0AD4
colour_translation_table.
10 220 0ADC
set_character_pointer: Set character_pointer to start of current row in page display buffer.
10 250 0AFA
wait_and_decode_page: Wait for page_ready_flag, and check for key presses.
11 70 0B46
decode_page: Decode and render 24 rows.
11 96 0B60
font_data: Alphanumeric character set font data.
14 96 0E60
init_mosaics: Initialize font data for contiguous and separated mosaic character sets.
14 201 0EC9
generate_mosaics: Generate font data for contiguous mosaic with the character code in B at the address in HL.
14 253 0EFD
copy_blast_through: Copy blast through alphanumerics font data.
15 6 0F06
Copy 32 contiguous mosaic characters from address in HL to address in DE, separating the columns.
15 17 0F11
write_top_sixels: Write bitmap in D to three rows of font data.
15 24 0F18
set_right_bits: Set right half of mosaic bits.
15 31 0F1F
get_keypress.
15 52 0F34
scan_keyboard: Loop through keyboard rows to detect a keypress and return return key code.
15 122 0F7A
keyboard_lookup_table: Mapping between spectrum keyboard port read and keycode.
15 162 0FA2
detect_any_key: Detect if any key is pressed.
15 178 0FB2
handle_keypress: Handle a keypress while in teletext mode.
15 251 0FFB
toggle_bright: Toggle bright flag.
16 9 1009
exit_routine: Relocatable exit to BASIC routine.
16 52 1034
no_printer: Break out of printer loop gracefully.
16 56 1038
print: Printer routine for Sinclair ZX Printer or Alphacom 32.
16 156 109C
enter_page: Get valid page number and display digits in row 0.
16 235 10EB
enter_page_and_clear: Get valid page number then clear the page buffer.
16 240 10F0
enter_subcode_and_clear: Get valid page subcode then clear the page buffer.
17 85 1155
get_dec_digit: Wait for a keypress in the range 0-9.
17 99 1163
select_channel: Channel selection and tuning display.
17 196 11C4
hold_indicator: Page hold string.
17 200 11C8
hold_page: Pressed H to hold page.
18 32 1220
toggle_reveal.
18 43 122B
data_to_header_row: Copy header row data from recieve buffer to page display buffer.
18 67 1243
display_header_row: Decode and display the header row.
18 87 1257
copy_page_data: Copy received page data into page display buffer.
18 119 1277
clear_page_number: Copy page number display to number_display_buffer and clear to spaces.
18 147 1293
restore_number: Copy number_display_buffer into page number display.
18 166 12A6
pagename_string: String which gets copied to RAM_pagename_string.
18 177 12B1
save_routine: Relocatable save page routine.
19 146 1392
Unused
19 148 1394
save_instruction: BASIC save instruction string.
19 180 13B4
init_hamming_table: Create 256 byte look up table of Hamming 8/4 decoded bytes.
20 129 1481
store_hamming_nibble: Read the four data bits from hamming coded byte into address in HL
20 162 14A2
hamming_error_bits_table: Values to XOR with byte to correct hamming errors.
20 170 14AA
store_hamming_error
20 174 14AE
correct_and_store_nibble: Correct a single bit error at bit position in C.
20 187 14BB
warm_start_routine: Relocatable "warm start" from BASIC routine.
20 213 14D5
clear_header: Clear page header to spaces.
20 240 14F0
copy string in HL to page header
21 18 1512
pause_3s: Pause for 3 seconds
21 28 151C
get_hex_digit: Wait for a keypress in the range 0-9 or A-F.
21 50 1532
downloader_not_present: Display downloader not present message for 3 seconds.
21 58 153A
downloader_not_present_message
21 81 1551
OELRoutine02
22 169 16A9
command_pointers_1
22 219 16DB
command_pointers_2
22 229 16E5
OELBytes01
22 251 16FB
Unused
23 10 170A
OELRoutine03
23 61 173D
copy_pointer_to_escape_table
23 80 1750
OELRoutine05
23 86 1756
OELRoutine06
23 100 1764
OELRoutine07
23 152 1798
OELRoutine08
23 175 17AF
OELRoutine09
23 186 17BA
OELRoutine10
23 191 17BF
OELRoutine11
23 197 17C5
telesoftware messages
24 90 185A
OELRoutine12
25 95 195F
OELRoutine13
25 117 1975
OELRoutine14
26 43 1A2B
OELRoutine15
26 94 1A5E
OELRoutine16
26 142 1A8E
Data block at 1A8E
26 157 1A9D
OELRoutine17
26 187 1ABB
parity_error
26 193 1AC1
OELRoutine18
26 248 1AF8
OELRoutine19
27 33 1B21
hex_to_int: Convert hex digit in A to integer in B or $FF if invalid.
27 58 1B3A
OELRoutine20
27 63 1B3F
OELRoutine21
27 77 1B4D
OELRoutine22
27 80 1B50
OELRoutine23
27 126 1B7E
illegal_type: Display illegal_type_message and jump into page decode loop.
27 132 1B84
missing_operand: Display parity_error_message and jump into page decode loop.
27 138 1B8A
datatype_and_hardware: Parse Datatype and Hardware command.
28 31 1C1F
OELRoutine24
29 178 1DB2
Routine at 1DB2
29 183 1DB7
Routine at 1DB7
29 188 1DBC
Routine at 1DBC
29 193 1DC1
Routine at 1DC1
29 196 1DC4
Routine at 1DC4
30 27 1E1B
Routine at 1E1B
30 55 1E37
Routine at 1E37
30 63 1E3F
Routine at 1E3F
30 66 1E42
Routine at 1E42
30 115 1E73
telesoftware error messages
31 25 1F19
Routine at 1F19
31 31 1F1F
Routine at 1F1F
31 40 1F28
Routine at 1F28
31 64 1F40
Routine at 1F40
31 80 1F50
display_error: Display error message and jump into page decode loop.
31 103 1F67
Routine at 1F67
31 127 1F7F
Routine at 1F7F
31 141 1F8D
get_hex: Get a hexadecimal keypress.
31 152 1F98
Unused
32 0 2000
decoder_RAM: Packet buffer in decoder RAM
91 0 5B00
temp_attr
91 1 5B01
save_return_pointer
91 3 5B03
char_addr
91 7 5B07
mosaics_flag
91 8 5B08
separated_mosaics_flag
91 9 5B09
double_height_flag
91 10 5B0A
row_has_double_flag
91 11 5B0B
column_offset
91 12 5B0C
character_code
91 13 5B0D
character_pointer
91 15 5B0F
hold_mosaic_character
91 16 5B10
skip_next_row_flag
91 17 5B11
row_number
91 18 5B12
hold_mosaics_flag
91 19 5B13
ignore_packets_flag
91 20 5B14
page_found_flag
91 21 5B15
packet_data_pointer
91 23 5B17
magazine_number
91 24 5B18
page_tens
91 25 5B19
page_units
91 26 5B1A
control_register
91 27 5B1B
bright_attr
91 28 5B1C
current_attr_address
91 30 5B1E
page_ready_flag
91 31 5B1F
held_separated_flag
91 32 5B20
conceal_flag
91 33 5B21
reveal_flag
91 34 5B22
number_display_buffer
91 42 5B2A
parity_flags
91 46 5B2E
hamming_table_counter
91 47 5B2F
input_buffer
91 58 5B3A
inhibit_display
91 59 5B3B
disable_rolling_headers
91 60 5B3C
interrupt_reset_flag
91 61 5B3D
backup_exit_pointer
91 63 5B3F
RAM_pagename_string
91 80 5B50
NMI_JUMP
91 83 5B53
colour_attr
91 85 5B55
field_header_flag
91 86 5B56
subpage_search_flag
91 87 5B57
subcode_digits
91 97 5B61
counter_reset_address
91 99 5B63
OELWord01
91 101 5B65
lone_table_pointers
91 103 5B67
escape_table_pointers
91 105 5B69
lone_table_values
91 107 5B6B
escape_table_values
91 109 5B6D
page_display_buffer_pointer
91 111 5B6F
page_receive_buffer_pointer
91 113 5B71
mosaics_font_pointer
91 115 5B73
hamming_decode_table_pointer
91 117 5B75
contiguous_blast_through
91 119 5B77
separated_blast_through
91 121 5B79
warm_start_pointer
91 123 5B7B
exit_pointer
91 125 5B7D
save_page_pointer
91 127 5B7F
OELWord06
91 129 5B81
OELWord07
91 131 5B83
OELWord08
91 133 5B85
OELWord09
91 135 5B87
OELWord10
91 137 5B89
OELWord11
91 139 5B8B
OELVariable01
91 140 5B8C
OELVariable02
91 141 5B8D
OELWord12
91 143 5B8F
OELWord13
91 147 5B93
OELVariable03
91 148 5B94
OELVariable04
91 149 5B95
OELVariable05
91 150 5B96
OELVariable06
91 151 5B97
OELVariable07
91 152 5B98
OELVariable08
91 153 5B99
OELBuffer01
91 185 5BB9
OELVariable09
91 186 5BBA
OELFlag01
91 187 5BBB
OELVariable10
91 188 5BBC
OELVariable11
91 189 5BBD
OELWord14
91 191 5BBF
OELWord15
91 203 5BCB
OELVariable12
91 204 5BCC
warm_start_vector
91 207 5BCF
OELVariable13
91 208 5BD0
OELVariable14
91 209 5BD1
OELVariable15
91 212 5BD4
OELFlag02
91 213 5BD5
telesoftware_pointer
91 215 5BD7
print_pointer
91 217 5BD9
OELWord17
91 219 5BDB
OELWord18
91 221 5BDD
OELWord19
91 223 5BDF
OELWord20
91 225 5BE1
OELWord21
91 227 5BE3
OELWord22
91 229 5BE5
OELWord23
91 238 5BEE
OELWord24