Page Byte Address Length Description
0 0 0000 4
ROM reset
0 10 000A 8
prepare to execute page_found
0 18 0012 13
clear inhibit_display and set exit_pointer to pointer02
0 56 0038 10
IM 1 interrupt service routine
0 102 0066 3
NMI vector
0 105 0069 529
NMI service routine
2 128 0280 11
Hamming 8/4 decode the byte at address in HL and return it in B
2 139 028B 7
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 11
get the magazine number from the Magazine Row Address Group
2 157 029D 26
get the packet address from the Magazine Row Address Group
2 183 02B7 19
copy packet to row 29 of page receive buffer
2 202 02CA 94
initialization routine
3 40 0328 274
initialize BASIC system variables in a similar way to the BASIC ROM 'NEW' routine and initialize own variables in printer buffer.
4 58 043A 3
jump to NMI service routine. (Copied to NMI_JUMP)
4 61 043D 20
initialise pointers for 48k systems
4 109 046D 20
initialise pointers for 16k systems
6 64 0640 102
display the main menu and wait for enter key to be pressed
6 166 06A6 149
print character to screen
7 59 073B 17
print 4 pixel rows of character bitmap over 8 pixel rows of screen (double height)
7 76 074C 26
write 4 pixel rows of double height character data over 8 pixel rows at column that is a multiple of 4
7 102 0766 26
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 26
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 26
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 17
print 8 pixel rows of font data (a normal height character)
7 197 07C5 14
write character data at column that is a multiple of 4
7 211 07D3 31
write character data at column that is 1 greater than a multiple of 4
7 242 07F2 29
write character data at column that is 2 greater than a multiple of 4
8 15 080F 12
write character data at column that is 3 greater than a multiple of 4
8 27 081B 50
calculate the address in screen RAM of the second byte of character row in A
8 77 084D 99
set screen attributes corresponding to screen address in character screen address variable to value in temp_attr
8 176 08B0 20
clear screen
8 196 08C4 27
clear page display buffer to spaces
8 223 08DF 24
clear all rows except header in page receive buffer
8 247 08F7 161
decode row
9 152 0998 18
alphanumeric colour control code
9 170 09AA 12
handle normal size control code
9 182 09B6 19
handle double height control code
9 201 09C9 34
handle a mosaics colour code
9 235 09EB 16
handle conceal code
9 251 09FB 7
handle contiguous mosaics cotrol code
10 2 0A02 21
handle separated mosaics cotrol code
10 23 0A17 11
clear paper colour bits of temp_attr
10 34 0A22 21
copy ink colour bits of temp_attr to paper colour bits
10 55 0A37 21
handle hold mosaics code
10 76 0A4C 6
handle release mosacis code
10 82 0A52 102
display character
10 184 0AB8 28
translate an alphanumeric colour code to spectrum attribute colour
10 220 0ADC 30
set character_pointer to start of current row in page display buffer
10 250 0AFA 76
wait for page_ready_flag to decode rows, and check for key presses
11 70 0B46 26
decode 24 rows
14 96 0E60 105
initialize font data for contiguous and separated mosaic character sets
14 201 0EC9 52
generate font data for contiguous mosaic with the character code in B at the address in HL
14 253 0EFD 9
Copy blast through alphanumerics font data
15 6 0F06 11
copy 32 contiguous mosaic characters from address in HL to address in DE, separating the columns
15 17 0F11 7
write bitmap in D to three rows of font data
15 24 0F18 7
set right half of mosaic bits
15 31 0F1F 21
get keypress
15 52 0F34 70
scan the keyboard
15 162 0FA2 16
detect if any key is pressed
15 178 0FB2 73
handle a keypress while in teletext mode
15 251 0FFB 14
toggle bright flag
16 9 1009 43
this is the relocatable exit to BASIC routine which is copied to RAM so that it can be run with the ROM paged out. 7 bytes of the following routine are also copied.
16 52 1034 4
break out of printer loop gracefully
16 56 1038 100
printer routine for Sinclair ZX Printer or Alphacom 32
16 156 109C 79
get valid page number and display digits in row 0
16 235 10EB 5
get valid page number then clear the page buffer
16 240 10F0 101
get valid page subcode then clear the page buffer
17 85 1155 14
wait for a keypress in the range 0-9
17 99 1163 97
channel selection and tuning display
17 200 11C8 88
pressed H to hold page
18 32 1220 11
toggle reveal
18 43 122B 24
copy row data to header row
18 67 1243 20
display header row
18 87 1257 32
copy received page data into page display buffer
18 119 1277 28
copy page number display to buffer01 and clear header row to spaces
18 147 1293 19
copy buffer01 into page number display
18 177 12B1 225
this is the relocatable save page routine which is copied to RAM so that it can be run with the ROM paged out. The following 69 bytes are also copied
19 180 13B4 205
create 256 byte look up table of Hamming 8/4 decoded bytes
20 129 1481 33
read the four data bits from hamming coded byte into address in HL
20 170 14AA 4
write $FF
20 174 14AE 13
correct a single bit error at bit position in C
20 187 14BB 26
relocatable "warm start" from BASIC routine
20 213 14D5 27
clear page header to spaces
20 240 14F0 34
copy string in HL to page header
21 18 1512 10
pause for 3 seconds
21 28 151C 22
wait for a keypress in the range 0-9 or A-F
21 50 1532 6
all telesoftware blocks downloaded
21 56 1538 74
determine what to do with telesoftware download based on the footer
21 130 1582 32
setup VARS, and E-LINE and prepare to execute STOP
21 162 15A2 43
setup VARS, E-LINE, and OLDPPC, and prepare to execute CONTINUE
21 205 15CD 28
setup VARS and E-LINE
21 233 15E9 14
relocate and execute jump to machine code routine
21 247 15F7 8
relocatable page out ROM and execute machine code routine
22 0 1600 25
prepare to execute STOP with no variables
22 25 1619 10
load next four low nibbles into address in HL
22 35 1623 15
relocate and execute initialize BASIC routine
22 50 1632 160
relocatable initialize BASIC routine. This routine is copied into the printer buffer to run so that this ROM can be paged out.
23 10 170A 51
Routine at 170A
23 61 173D 19
Routine at 173D
23 80 1750 6
Routine at 1750
23 86 1756 14
Routine at 1756
23 100 1764 29
Routine at 1764
23 131 1783 21
Routine at 1783
23 152 1798 23
Routine at 1798
23 175 17AF 11
Routine at 17AF
23 186 17BA 5
Routine at 17BA
23 191 17BF 6
Routine at 17BF
24 90 185A 147
telesoftware page checksum
24 237 18ED 75
download data from page into memory specified in nibbles at row 23, column 8
25 56 1938 28
see if there are undownloaded blocks remaining
25 84 1954 18
read low nibble of four bytes from address in DE to word at address in HL
25 102 1966 23
copy up to 16 bytes from address in DE to row 0 in page display buffer
25 125 197D 15
Routine at 197D
25 140 198C 48
Routine at 198C
25 188 19BC 55
Routine at 19BC
25 243 19F3 56
Routine at 19F3
26 43 1A2B 51
Routine at 1A2B
26 94 1A5E 48
Routine at 1A5E
26 157 1A9D 30
Routine at 1A9D
26 187 1ABB 6
Routine at 1ABB
26 193 1AC1 55
Routine at 1AC1
26 248 1AF8 41
Routine at 1AF8
27 33 1B21 25
convert hex digit in A to integer in B or $FF if invalid
27 58 1B3A 5
Routine at 1B3A
27 63 1B3F 14
Routine at 1B3F
27 77 1B4D 49
Routine at 1B4D
27 126 1B7E 6
Routine at 1B7E
27 132 1B84 6
Routine at 1B84
27 138 1B8A 51
wait up to 2 minutes for page to load (or enter key pressed)
27 189 1BBD 27
clear 16 characters of header to spaces
27 216 1BD8 57
start telesoftware
28 25 1C19 6
Routine at 1C19
28 31 1C1F 3
Routine at 1C1F
28 34 1C22 100
telesoftware main loop
28 134 1C86 21
Routine at 1C86
29 21 1D15 81
check row 23 of page for telesoftware footer
29 102 1D66 55
reposition the page receive buffer at $4840 and the page display buffer at $5000 (within screen RAM)
29 157 1D9D 14
flash border to colour in A for 300ms
29 178 1DB2 5
Routine at 1DB2
29 183 1DB7 5
Routine at 1DB7
29 188 1DBC 5
Routine at 1DBC
29 193 1DC1 3
Routine at 1DC1
29 196 1DC4 87
Routine at 1DC4
30 27 1E1B 28
Routine at 1E1B
30 55 1E37 8
Routine at 1E37
30 63 1E3F 3
Routine at 1E3F
30 66 1E42 49
Routine at 1E42
31 25 1F19 6
Routine at 1F19
31 31 1F1F 9
Routine at 1F1F
31 40 1F28 24
Routine at 1F28
31 64 1F40 16
Routine at 1F40
31 80 1F50 23
display telesoftware error message and jump into page decode loop
31 103 1F67 24
Routine at 1F67
31 127 1F7F 14
Routine at 1F7F
31 141 1F8D 11
get a hex keypress
31 152 1F98 79
input page number for telesoftware page search