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
download_complete: All telesoftware blocks downloaded.
21 56 1538
parse_download: Determine what to do with telesoftware download based on the footer.
21 130 1582
execute_basic_stop: Setup VARS, and E-LINE and prepare to execute STOP.
21 162 15A2
execute_basic_continue: Setup VARS, E-LINE, and OLDPPC, and prepare to execute CONTINUE.
21 205 15CD
setup_vars_eline: setup VARS and E-LINE.
21 233 15E9
execute_code: Relocate and execute jump to machine code routine.
21 247 15F7
page_out_to_code: Relocatable page out ROM and execute machine code routine.
21 255 15FF
Unused
22 0 1600
return_to_STOP: Prepare to execute STOP with no variables.
22 25 1619
load_next_nibbles: Load next four low nibbles into address in HL.
22 35 1623
execute_basic: Relocate and execute initialize BASIC routine.
22 50 1632
page_out_to_basic: Relocatable initialize BASIC routine.
22 209 16D1
Unused
24 90 185A
check_page: Telesoftware page checksum.
24 237 18ED
download_data: Download data from page into memory specified in nibbles at row 23, column 8.
25 56 1938
block_downloaded: See if there are undownloaded blocks remaining.
25 84 1954
load_nibbles: Read low nibble of four bytes from address in DE to word at address in HL.
25 102 1966
write_header_message: Copy up to 16 bytes from address in DE to row 0 in page display buffer.
25 125 197D
Unused
27 138 1B8A
wait_for_page: Wait up to 2 minutes for page to load (or enter key pressed).
27 189 1BBD
clear_header_start: Clear 16 characters of header to spaces.
27 216 1BD8
start_telesoftware: Load the telesoftware index on Channel 4 page 460.
28 17 1C11
Unused
28 31 1C1F
telesoftware_jump.
28 34 1C22
telesoftware_main: Main telesoftware interface loop.
28 134 1C86
display_message: Display telesoftware error and prompt for input.
28 155 1C9B
Telesoftware downloader messages.
29 21 1D15
check_footer: Check row 23 of recieved page for telesoftware footer.
29 102 1D66
buffers_in_screen: Reposition the page receive buffer at $4840 and the page display buffer at $5000 (within screen RAM).
29 157 1D9D
border_flash: Flash border to colour in A for 300ms.
29 171 1DAB
Unused
31 141 1F8D
get_hex: Get a hexadecimal keypress.
31 152 1F98
telesoftware_number: Input page number for telesoftware page search.
31 231 1FE7
Unused
31 238 1FEE
ROM authors message.
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 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
download_pointer
91 129 5B81
checksum_nibbles
91 131 5B83
blocks_remaining
91 133 5B85
number_of_blocks
91 137 5B89
footer_buffer
91 165 5BA5
prog_length
91 167 5BA7
vars_length
91 169 5BA9
command_length
91 171 5BAB
start_address
91 204 5BCC
warm_start_vector
91 213 5BD5
telesoftware_pointer
91 215 5BD7
print_pointer
91 217 5BD9
temporary_stack
91 253 5BFD
telesoftware_RAMT