@nataliapc/mcp-openmsx 1.2.10 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/dist/chunker.js +187 -0
- package/dist/embedder.js +250 -0
- package/dist/server.js +6 -1
- package/dist/server_tools.js +6 -5
- package/dist/vectordb.js +94 -35
- package/package.json +4 -8
- package/resources/audio/chipsfmpacpr1_en.md +209 -0
- package/resources/audio/chipsfmpacpr2_en.md +170 -0
- package/resources/audio/toc.json +12 -0
- package/resources/book--msx-top-secret-3/MTS3-Appendix-English-Upd2.pdf +0 -0
- package/resources/book--msx-top-secret-3/MTS3-Complete-English.pdf +0 -0
- package/resources/book--msx2-technical-handbook/toc.json +1 -1
- package/resources/book--the-msx-red-book/Chapter1_Programmable_Peripheral_Interface.md +112 -0
- package/resources/book--the-msx-red-book/Chapter2_Video_Display_Processor.md +308 -0
- package/resources/book--the-msx-red-book/Chapter3_Programmable_Sound_Generator.md +168 -0
- package/resources/book--the-msx-red-book/Chapter4_ROM_BIOS.md +2528 -0
- package/resources/book--the-msx-red-book/Chapter5_ROM_BASIC_Interpreter.md +3975 -0
- package/resources/book--the-msx-red-book/Chapter6_Memory_Map.md +1963 -0
- package/resources/book--the-msx-red-book/Chapter7_Machine_Code_Programs.md +1238 -0
- package/resources/book--the-msx-red-book/Introduction.md +104 -0
- package/resources/book--the-msx-red-book/toc.json +38 -3
- package/resources/processors/toc.json +3 -3
- package/resources/processors/z80-undocumented.md +141 -0
- package/resources/sdcc/1_Introduction.md +199 -0
- package/resources/sdcc/2_Installing_SDCC.md +533 -0
- package/resources/sdcc/3_Using_SDCC.md +1758 -0
- package/resources/sdcc/4_Notes_on_supported_Processors.md +1638 -0
- package/resources/sdcc/5_Debugging.md +210 -0
- package/resources/sdcc/6_Tips_and_Support.md +258 -0
- package/resources/sdcc/7_SDCC_Technical_Data.md +489 -0
- package/resources/sdcc/8_Compiler_internals.md +477 -0
- package/resources/sdcc/toc.json +44 -2
- package/vector-db/msxdocs.lance/_indices/4d3bd360-e3c6-408d-b0ff-a4d6bd9580cb/metadata.lance +0 -0
- package/vector-db/msxdocs.lance/_indices/4d3bd360-e3c6-408d-b0ff-a4d6bd9580cb/part_0_docs.lance +0 -0
- package/vector-db/msxdocs.lance/_indices/4d3bd360-e3c6-408d-b0ff-a4d6bd9580cb/part_0_invert.lance +0 -0
- package/vector-db/msxdocs.lance/_indices/4d3bd360-e3c6-408d-b0ff-a4d6bd9580cb/part_0_tokens.lance +0 -0
- package/vector-db/msxdocs.lance/_transactions/0-6f47c9fc-3657-40f0-9dd4-c7226b2a4805.txn +0 -0
- package/vector-db/msxdocs.lance/_transactions/1-2bb7426e-a4b0-40ea-9a58-00c4985fc6a9.txn +0 -0
- package/vector-db/msxdocs.lance/_versions/18446744073709551613.manifest +0 -0
- package/vector-db/msxdocs.lance/_versions/18446744073709551614.manifest +0 -0
- package/vector-db/msxdocs.lance/_versions/latest_version_hint.json +1 -0
- package/vector-db/msxdocs.lance/data/110001110001011010001000876c134b8296fbc47762d1e1ab.lance +0 -0
- package/resources/book--the-msx-red-book/the_msx_red_book.md +0 -10349
- package/resources/processors/z80-undocumented.tex +0 -5617
- package/resources/sdcc/lyx2md.py +0 -745
- package/resources/sdcc/sdccman.lyx +0 -81574
- package/resources/sdcc/sdccman.md +0 -5557
- package/vector-db/index.json +0 -1
|
@@ -0,0 +1,1963 @@
|
|
|
1
|
+
# 6. Memory Map
|
|
2
|
+
|
|
3
|
+
A maximum of 32 KB of RAM is available to the BASIC Interpreter to hold the program text, the BASIC Variables, the Z80 stack, the I/O buffers and the internal workspace. A memory map of these areas in the power-up state is shown below:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────┐
|
|
7
|
+
│ Workspace Area │
|
|
8
|
+
HIMEM=F380H ─────> ├─────────────────────────┤
|
|
9
|
+
│ I/O Buffer 1 │
|
|
10
|
+
├─────────────────────────┤
|
|
11
|
+
│ FCB 1 │
|
|
12
|
+
├─────────────────────────┤
|
|
13
|
+
│ I/O Buffer 0 │
|
|
14
|
+
NULBUF=F177H ────> ├─────────────────────────┤
|
|
15
|
+
│ FCB 0 │
|
|
16
|
+
├─────────────────────────┤
|
|
17
|
+
│ F277H (FCB 1) │
|
|
18
|
+
│ F16EH (FCB 0) │
|
|
19
|
+
FILTAB=F16AH ────> ├─────────────────────────┤
|
|
20
|
+
│ 00H │
|
|
21
|
+
├─────────────────────────┤
|
|
22
|
+
MEMSIZ=F168H ──┬─> │ │
|
|
23
|
+
FRETOP=F168H ──┘ │ String Storage Area │
|
|
24
|
+
│ │
|
|
25
|
+
STKTOP=F0A0H ────> ├─────────────────────────┤
|
|
26
|
+
│ Z80 Stack │
|
|
27
|
+
└─────────────────────────┘
|
|
28
|
+
STREND=8003H ────>
|
|
29
|
+
┌─────────────────────────┐
|
|
30
|
+
│ Array Storage Area │
|
|
31
|
+
ARYTAB=8003H ────> ├─────────────────────────┤
|
|
32
|
+
│ Variable Storage Area │
|
|
33
|
+
VARTAB=8003H ────> ├─────────────────────────┤
|
|
34
|
+
│ Program Text Area │
|
|
35
|
+
TXTTAB=8001H ────> ├─────────────────────────┤
|
|
36
|
+
│ 00H │
|
|
37
|
+
└─────────────────────────┘
|
|
38
|
+
```
|
|
39
|
+
**Figure 50:** Memory Map 8000H to FFFFH
|
|
40
|
+
|
|
41
|
+
The Program Text Area is composed of tokenized program lines stored in line number order and terminated by a zero end link, when in the "`NEW`" state only the end link is present. The zero byte at 8000H is a dummy end of line character needed to synchronize the Runloop at the start of a program.
|
|
42
|
+
|
|
43
|
+
The Variable and Array Storage Areas are composed of string or numeric Variables and Arrays stored in the order in which they are found in the program text. Execution speed improves marginally if Variables are declared before Arrays in a program as this reduces the amount of memory to be moved upwards.
|
|
44
|
+
|
|
45
|
+
The Z80 stack is positioned immediately below the String Storage Area, the structure of the stack top is shown below:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
STKTOP ────────> ├───────┤
|
|
49
|
+
│ 00H │
|
|
50
|
+
│ 00H │
|
|
51
|
+
Mainloop SP ───> ├───────┤
|
|
52
|
+
│ 46H │
|
|
53
|
+
│ 01H │
|
|
54
|
+
Statement SP ──> └───────┘
|
|
55
|
+
```
|
|
56
|
+
**Figure 51:** Z80 Stack Top
|
|
57
|
+
|
|
58
|
+
Whenever the position of the stack is altered, as a result of a "`CLEAR`" or "`MAXFILES`" statement, two zero bytes are first pushed to function as a terminator during "`FOR`" or "`GOSUB`" parameter block searches. Assuming no parameter blocks are present the Z80 SP will therefore be at [STKTOP](#stktop)-2 within the Interpreter Mainloop and at [STKTOP](#stktop)-4 when control transfers from the Runloop to a statement handler.
|
|
59
|
+
|
|
60
|
+
The String Storage Area is composed of the string bodies assigned to Variables or Arrays. During expression evaluation a number of intermediate string results may also be temporarily present under the permanent string heap. The zero byte following the String Storage Area is a temporary delimiter for the "`VAL`" function.
|
|
61
|
+
|
|
62
|
+
The region between the String Storage Area and [HIMEM](#himem) is used for I/O buffer storage. I/O buffer 0, the "`SAVE`" and "`LOAD`" buffer, is always present but the number of user buffers is determined by the "`MAXFILES`" statement. Each I/O buffer consists of a 9 byte FCB, whose address is contained in the table under FCB 0, followed by a 256 byte data buffer. The FCB contains the status of the I/O buffer as below:
|
|
63
|
+
|
|
64
|
+
|0|1|2|3|4|5|6|7|8|
|
|
65
|
+
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
|
66
|
+
|Mod|00H|00H|00H|DEV|00H|POS|00H|PPS|
|
|
67
|
+
|
|
68
|
+
**Figure 52:** File Control Block
|
|
69
|
+
|
|
70
|
+
The MOD byte holds the buffer mode, the DEV byte the device code, the POS byte the current position in the buffer (0 to 255) and the PPS byte the "`PRINT`" position. The remainder of the FCB is unused on a standard MSX machine.
|
|
71
|
+
|
|
72
|
+
<a name="workspace_area"></a>
|
|
73
|
+
## Workspace Area
|
|
74
|
+
|
|
75
|
+
The section of the Workspace Area from F380H to FD99H holds the BIOS/Interpreter variables. These are listed on the following pages in standard assembly language form:
|
|
76
|
+
|
|
77
|
+
<a name="f380h"></a><a name="rdprim"></a>
|
|
78
|
+
<a name="f382h"></a>
|
|
79
|
+
<a name="f383h"></a>
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
F380H RDPRIM: OUT (0A8H),A ; Set new Primary Slot
|
|
83
|
+
F382H LD E,(HL) ; Read memory
|
|
84
|
+
F383H JR WRPRM1 ; Restore old Primary Slot
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This routine is used by the [RDSLT](#rdslt) standard routine to switch Primary Slots and read a byte from memory. The new Primary Slot Register setting is supplied in register A, the old setting in register D and the byte read returned in register E.
|
|
88
|
+
|
|
89
|
+
<a name="f385h"></a><a name="wrprim"></a>
|
|
90
|
+
<a name="f387h"></a>
|
|
91
|
+
<a name="f388h"></a><a name="wrprm1"></a>
|
|
92
|
+
<a name="f389h"></a>
|
|
93
|
+
<a name="f38bh"></a>
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
F385H WRPRIM: OUT (0A8H),A ; Set new Primary Slot
|
|
97
|
+
F387H LD (HL),E ; Write to memory
|
|
98
|
+
F388H WRPRM1: LD A,D ; Get old setting
|
|
99
|
+
F389H OUT (0A8H),A ; Restore old Primary Slot
|
|
100
|
+
F38BH RET
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
This routine is used by the [WRSLT](#wrslt) standard routine to switch Primary Slots and write a byte to memory. The new Primary Slot Register setting is supplied in register A, the old setting in register D and the byte to write in register E.
|
|
104
|
+
|
|
105
|
+
<a name="f38ch"></a><a name="clprim"></a>
|
|
106
|
+
<a name="f38eh"></a>
|
|
107
|
+
<a name="f38fh"></a>
|
|
108
|
+
<a name="f392h"></a>
|
|
109
|
+
<a name="f393h"></a>
|
|
110
|
+
<a name="f394h"></a>
|
|
111
|
+
<a name="f396h"></a>
|
|
112
|
+
<a name="f397h"></a>
|
|
113
|
+
<a name="f398h"></a><a name="clprm1"></a>
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
F38CH CLPRIM: OUT (0A8H),A ; Set new Primary Slot
|
|
117
|
+
F38EH EX AF,AF' ; Swap to AF for call
|
|
118
|
+
F38FH CALL CLPRM1 ; Do it
|
|
119
|
+
F392H EX AF,AF' ; Swap to AF
|
|
120
|
+
F393H POP AF ; Get old setting
|
|
121
|
+
F394H OUT (0A8H),A ; Restore old Primary Slot
|
|
122
|
+
F396H EX AF,AF' ; Swap to AF
|
|
123
|
+
F397H RET
|
|
124
|
+
F398H CLPRM1: JP (IX)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This routine is used by the [CALSLT](#calslt) standard routine to switch Primary Slots and call an address. The new Primary Slot Register setting is supplied in register A, the old setting on the Z80 stack and the address to call in register pair IX.
|
|
128
|
+
|
|
129
|
+
<a name="f39ah"></a><a name="usrtab"></a>
|
|
130
|
+
<a name="f39ch"></a>
|
|
131
|
+
<a name="f39eh"></a>
|
|
132
|
+
<a name="f3a0h"></a>
|
|
133
|
+
<a name="f3a2h"></a>
|
|
134
|
+
<a name="f3a4h"></a>
|
|
135
|
+
<a name="f3a6h"></a>
|
|
136
|
+
<a name="f3a8h"></a>
|
|
137
|
+
<a name="f3aah"></a>
|
|
138
|
+
<a name="f3ach"></a>
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
F39AH USRTAB: DEFW 475AH ; USR 0
|
|
142
|
+
F39CH DEFW 475AH ; USR 1
|
|
143
|
+
F39EH DEFW 475AH ; USR 2
|
|
144
|
+
F3A0H DEFW 475AH ; USR 3
|
|
145
|
+
F3A2H DEFW 475AH ; USR 4
|
|
146
|
+
F3A4H DEFW 475AH ; USR 5
|
|
147
|
+
F3A6H DEFW 475AH ; USR 6
|
|
148
|
+
F3A8H DEFW 475AH ; USR 7
|
|
149
|
+
F3AAH DEFW 475AH ; USR 8
|
|
150
|
+
F3ACH DEFW 475AH ; USR 9
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
These ten variables contain the "`USR`" function addresses. Their values are set to the Interpreter "`Illegal function call`" error generator at power-up and thereafter only altered by the "`DEFUSR`" statement.
|
|
154
|
+
|
|
155
|
+
<a name="f3aeh"></a><a name="linl40"></a>
|
|
156
|
+
|
|
157
|
+
F3AEH LINL40: DEFB 37
|
|
158
|
+
|
|
159
|
+
This variable contains the [40x24 Text Mode](#40x24_text_mode) screen width. Its value is set at power-up and thereafter only altered by the "`WIDTH`" statement.
|
|
160
|
+
|
|
161
|
+
<a name="f3afh"></a><a name="linl32"></a>
|
|
162
|
+
|
|
163
|
+
F3AFH LINL32: DEFB 29
|
|
164
|
+
|
|
165
|
+
This variable contains the [32x24 Text Mode](#32x24_text_mode) screen width. Its value is set at power-up and thereafter only altered by the "`WIDTH`" statement.
|
|
166
|
+
|
|
167
|
+
<a name="f3b0h"></a><a name="linlen"></a>
|
|
168
|
+
|
|
169
|
+
F3B0H LINLEN: DEFB 37
|
|
170
|
+
|
|
171
|
+
This variable contains the current text mode screen width. Its value is set from [LINL40](#linl40) or [LINL32](#linl32) whenever the VDP is initialized to a text mode via the [INITXT](#initxt) or [INIT32](#init32) standard routines.
|
|
172
|
+
|
|
173
|
+
<a name="f3b1h"></a><a name="crtcnt"></a>
|
|
174
|
+
|
|
175
|
+
F3B1H CRTCNT: DEFB 24
|
|
176
|
+
|
|
177
|
+
This variable contains the number of rows on the screen. Its value is set at power-up and thereafter unaltered.
|
|
178
|
+
|
|
179
|
+
<a name="f3b2h"></a><a name="clmlst"></a>
|
|
180
|
+
|
|
181
|
+
F3B2H CLMLST: DEFB 14
|
|
182
|
+
|
|
183
|
+
This variable contains the minimum number of columns that must still be available on a line for a data item to be "`PRINT`"ed, if less space is available a CR,LF is issued first. Its value is set at power-up and thereafter only altered by the "`WIDTH`" and "`SCREEN`" statements.
|
|
184
|
+
|
|
185
|
+
<a name="f3b3h"></a><a name="txtnam"></a>
|
|
186
|
+
<a name="f3b5h"></a><a name="txtcol"></a>
|
|
187
|
+
<a name="f3b7h"></a><a name="txtcgp"></a>
|
|
188
|
+
<a name="f3b9h"></a><a name="txtatr"></a>
|
|
189
|
+
<a name="f3bbh"></a><a name="txtpat"></a>
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
F3B3H TXTNAM: DEFW 0000H ; Name Table Base
|
|
193
|
+
F3B5H TXTCOL: DEFW 0000H ; Colour Table Base
|
|
194
|
+
F3B7H TXTCGP: DEFW 0800H ; Character Pattern Base
|
|
195
|
+
F3B9H TXTATR: DEFW 0000H ; Sprite Attribute Base
|
|
196
|
+
F3BBH TXTPAT: DEFW 0000H ; Sprite Pattern Base
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
These five variables contain the [40x24 Text Mode](#40x24_text_mode) VDP base addresses. Their values are set at power-up and thereafter only altered by the "`BASE`" statement.
|
|
200
|
+
|
|
201
|
+
<a name="f3bdh"></a><a name="t32nam"></a>
|
|
202
|
+
<a name="f3bfh"></a><a name="t32col"></a>
|
|
203
|
+
<a name="f3c1h"></a><a name="t32cgp"></a>
|
|
204
|
+
<a name="f3c3h"></a><a name="t32atr"></a>
|
|
205
|
+
<a name="f3c5h"></a><a name="t32pat"></a>
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
F3BDH T32NAM: DEFW 1800H ; Name Table Base
|
|
209
|
+
F3BFH T32COL: DEFW 2000H ; Colour Table Base
|
|
210
|
+
F3C1H T32CGP: DEFW 0000H ; Character Pattern Base
|
|
211
|
+
F3C3H T32ATR: DEFW 1B00H ; Sprite Attribute Base
|
|
212
|
+
F3C5H T32PAT: DEFW 3800H ; Sprite Pattern Base
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
These five variables contain the [32x24 Text Mode](#32x24_text_mode) VDP base addresses. Their values are set at power-up and thereafter only altered by the "`BASE`" statement.
|
|
216
|
+
|
|
217
|
+
<a name="f3c7h"></a><a name="grpnam"></a>
|
|
218
|
+
<a name="f3c9h"></a><a name="grpcol"></a>
|
|
219
|
+
<a name="f3cbh"></a><a name="grpcgp"></a>
|
|
220
|
+
<a name="f3cdh"></a><a name="grpatr"></a>
|
|
221
|
+
<a name="f3cfh"></a><a name="grppat"></a>
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
F3C7H GRPNAM: DEFW 1800H ; Name Table Base
|
|
225
|
+
F3C9H GRPCOL: DEFW 2000H ; Colour Table Base
|
|
226
|
+
F3CBH GRPCGP: DEFW 0000H ; Character Pattern Base
|
|
227
|
+
F3CDH GRPATR: DEFW 1B00H ; Sprite Attribute Base
|
|
228
|
+
F3CFH GRPPAT: DEFW 3800H ; Sprite Pattern Base
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
These five variables contain the [Graphics Mode](#graphics_mode) VDP base addresses. Their values are set at power-up and thereafter only altered by the "`BASE`" statement.
|
|
232
|
+
|
|
233
|
+
<a name="f3d1h"></a><a name="mltnam"></a>
|
|
234
|
+
<a name="f3d3h"></a><a name="mltcol"></a>
|
|
235
|
+
<a name="f3d5h"></a><a name="mltcgp"></a>
|
|
236
|
+
<a name="f3d7h"></a><a name="mltatr"></a>
|
|
237
|
+
<a name="f3d9h"></a><a name="mltpat"></a>
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
F3D1H MLTNAM: DEFW 0800H ; Name Table Base
|
|
241
|
+
F3D3H MLTCOL: DEFW 0000H ; Colour Table Base
|
|
242
|
+
F3D5H MLTCGP: DEFW 0000H ; Character Pattern Base
|
|
243
|
+
F3D7H MLTATR: DEFW 1B00H ; Sprite Attribute Base
|
|
244
|
+
F3D9H MLTPAT: DEFW 3800H ; Sprite Pattern Base
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
These five variables contain the [Multicolour Mode](#multicolour_mode) VDP base addresses. Their values are set at power-up and thereafter only altered by the "`BASE`" statement.
|
|
248
|
+
|
|
249
|
+
<a name="f3dbh"></a><a name="cliksw"></a>
|
|
250
|
+
|
|
251
|
+
F3DBH CLIKSW: DEFB 01H
|
|
252
|
+
|
|
253
|
+
This variable controls the interrupt handler key click: 00H=Off, NZ=On. Its value is set at power-up and thereafter only altered by the "`SCREEN`" statement.
|
|
254
|
+
|
|
255
|
+
<a name="f3dch"></a><a name="csry"></a>
|
|
256
|
+
|
|
257
|
+
F3DCH CSRY: DEFB 01H
|
|
258
|
+
|
|
259
|
+
This variable contains the row coordinate (from 1 to [CTRCNT](#ctrcnt)) of the text mode cursor.
|
|
260
|
+
|
|
261
|
+
<a name="f3ddh"></a><a name="csrx"></a>
|
|
262
|
+
|
|
263
|
+
F3DDH CSRX: DEFB 01H
|
|
264
|
+
|
|
265
|
+
This variable contains the column coordinate (from 1 to [LINLEN](#linlen)) of the text mode cursor. Note that the BIOS cursor coordinates for the home position are 1,1 whatever the screen width.
|
|
266
|
+
|
|
267
|
+
<a name="f3deh"></a><a name="cnsdfg"></a>
|
|
268
|
+
|
|
269
|
+
F3DEH CNSDFG: DEFB FFH
|
|
270
|
+
|
|
271
|
+
This variable contains the current state of the function key display: 00H=Off, NZ=On.
|
|
272
|
+
|
|
273
|
+
<a name="f3dfh"></a><a name="rg0sav"></a>
|
|
274
|
+
<a name="f3e0h"></a><a name="rg1sav"></a>
|
|
275
|
+
<a name="f3e1h"></a><a name="rg2sav"></a>
|
|
276
|
+
<a name="f3e2h"></a><a name="rg3sav"></a>
|
|
277
|
+
<a name="f3e3h"></a><a name="rg4sav"></a>
|
|
278
|
+
<a name="f3e4h"></a><a name="rg5sav"></a>
|
|
279
|
+
<a name="f3e5h"></a><a name="rg6sav"></a>
|
|
280
|
+
<a name="f3e6h"></a><a name="rg7sav"></a>
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
F3DFH RG0SAV: DEFB 00H
|
|
284
|
+
F3E0H RG1SAV: DEFB F0H
|
|
285
|
+
F3E1H RG2SAV: DEFB 00H
|
|
286
|
+
F3E2H RG3SAV: DEFB 00H
|
|
287
|
+
F3E3H RG4SAV: DEFB 01H
|
|
288
|
+
F3E4H RG5SAV: DEFB 00H
|
|
289
|
+
F3E5H RG6SAV: DEFB 00H
|
|
290
|
+
F3E6H RG7SAV: DEFB F4H
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
These eight variables mimic the state of the eight write-only [VDP Mode Registers](#vdp_mode_registers). The values shown are for [40x24 Text Mode](#40x24_text_mode).
|
|
294
|
+
|
|
295
|
+
<a name="f3e7h"></a><a name="statfl"></a>
|
|
296
|
+
|
|
297
|
+
F3E7H STATFL: DEFB CAH
|
|
298
|
+
|
|
299
|
+
This variable is continuously updated by the interrupt handler with the contents of the [VDP Status Register](#vdp_status_register).
|
|
300
|
+
|
|
301
|
+
<a name="f3e8h"></a><a name="trgflg"></a>
|
|
302
|
+
|
|
303
|
+
F3E8H TRGFLG: DEFB F1H
|
|
304
|
+
|
|
305
|
+
This variable is continuously updated by the interrupt handler with the state of the four joystick trigger inputs and the space key.
|
|
306
|
+
|
|
307
|
+
<a name="f3e9h"></a><a name="forclr"></a>
|
|
308
|
+
|
|
309
|
+
F3E9H FORCLR: DEFB 0FH ; White
|
|
310
|
+
|
|
311
|
+
This variable contains the current foreground colour. Its value is set at power-up and thereafter only altered by the "`COLOR`" statement. The foreground colour is used by the [CLRSPR](#clrspr) standard routine to set the sprite colour and by the [CHGCLR](#chgclr) standard routine to set the 1 pixel colour in the text modes. It also functions as the graphics ink colour as it is copied to [ATRBYT](#atrbyt) by the [GRPPRT](#grpprt) standard routine and used throughout the Interpreter as the default value for any optional colour operand.
|
|
312
|
+
|
|
313
|
+
<a name="f3eah"></a><a name="bakclr"></a>
|
|
314
|
+
|
|
315
|
+
F3EAH BAKCLR: DEFB 04H ; Dark blue
|
|
316
|
+
|
|
317
|
+
This variable contains the current background colour. Its value is set at power-up and thereafter only altered by the "`COLOR`" statement. The background colour is used by the [CLS](#cls) standard routine to clear the screen in the graphics modes and by the [CHGCLR](#chgclr) standard routine to set the 0 pixel colour in the text modes.
|
|
318
|
+
|
|
319
|
+
<a name="f3ebh"></a><a name="bdrclr"></a>
|
|
320
|
+
|
|
321
|
+
F3EBH BDRCLR: DEFB 04H ; Dark blue
|
|
322
|
+
|
|
323
|
+
This variable contains the current border colour. Its value is set at power-up and thereafter only altered by the "`COLOR`" statement. The border colour is used by the [CHGCLR](#chgclr) standard routine in [32x24 Text Mode](#32x24_text_mode), [Graphics Mode](#graphics_mode) and [Multicolour Mode](#multicolour_mode) to set the border colour.
|
|
324
|
+
|
|
325
|
+
<a name="f3ech"></a><a name="maxupd"></a>
|
|
326
|
+
<a name="f3edh"></a>
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
F3ECH MAXUPD: DEFB C3H
|
|
330
|
+
F3EDH DEFW 0000H
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
These two bytes are filled in by the "`LINE`" statement handler to form a Z80 JP to the [RIGHTC](#rightc), [LEFTC](#leftc), [UPC](#upc) or [DOWNC](#downc) standard routines.
|
|
334
|
+
|
|
335
|
+
<a name="f3efh"></a><a name="minupd"></a>
|
|
336
|
+
<a name="f3f0h"></a>
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
F3EFH MINUPD: DEFB C3H
|
|
340
|
+
F3F0H DEFW 0000H
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
These two bytes are filled in by the "`LINE`" statement handler to form a Z80 JP to the [RIGHTC](#rightc), [LEFTC](#leftc), [UPC](#upc) or [DOWNC](#downc) standard routines.
|
|
344
|
+
|
|
345
|
+
<a name="f3f2h"></a><a name="atrbyt"></a>
|
|
346
|
+
|
|
347
|
+
F3F2H ATRBYT: DEFB 0FH
|
|
348
|
+
|
|
349
|
+
This variable contains the graphics ink colour used by the [SETC](#setc) and [NSETCX](#nsetcx) standard routines.
|
|
350
|
+
|
|
351
|
+
<a name="f3f3h"></a><a name="queues"></a>
|
|
352
|
+
|
|
353
|
+
F3F3H QUEUES: DEFW F959H
|
|
354
|
+
|
|
355
|
+
This variable contains the address of the control blocks for the three music queues. Its value is set at power-up and thereafter unaltered.
|
|
356
|
+
|
|
357
|
+
<a name="f3f5h"></a><a name="frcnew"></a>
|
|
358
|
+
|
|
359
|
+
F3F5H FRCNEW: DEFB FFH
|
|
360
|
+
|
|
361
|
+
This variable contains a flag to distinguish the two statements in the "`CLOAD/CLOAD?`" statement handler: 00H=CLOAD, FFH=CLOAD?.
|
|
362
|
+
|
|
363
|
+
<a name="f3f6h"></a><a name="scncnt"></a>
|
|
364
|
+
|
|
365
|
+
F3F6H SCNCNT: DEFB 01H
|
|
366
|
+
|
|
367
|
+
This variable is used as a counter by the interrupt handler to control the rate at which keyboard scans are performed.
|
|
368
|
+
|
|
369
|
+
<a name="f3f7h"></a><a name="repcnt"></a>
|
|
370
|
+
|
|
371
|
+
F3F7H REPCNT: DEFB 01H
|
|
372
|
+
|
|
373
|
+
This variable is used as a counter by the interrupt handler to control the key repeat rate.
|
|
374
|
+
|
|
375
|
+
<a name="f3f8h"></a><a name="putpnt"></a>
|
|
376
|
+
|
|
377
|
+
F3F8H PUTPNT: DEFW FBF0H
|
|
378
|
+
|
|
379
|
+
This variable contains the address of the put position in [KEYBUF](#keybuf).
|
|
380
|
+
|
|
381
|
+
<a name="f3fah"></a><a name="getpnt"></a>
|
|
382
|
+
|
|
383
|
+
F3FAH GETPNT: DEFW FBF0H
|
|
384
|
+
|
|
385
|
+
This variable contains the address of the get position in [KEYBUF](#keybuf).
|
|
386
|
+
|
|
387
|
+
<a name="f3fch"></a><a name="cs1200"></a>
|
|
388
|
+
<a name="f3fdh"></a>
|
|
389
|
+
<a name="f3feh"></a>
|
|
390
|
+
<a name="f3ffh"></a>
|
|
391
|
+
<a name="f400h"></a>
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
F3FCH CS1200: DEFB 53H ; LO cycle 1st half
|
|
395
|
+
F3FDH DEFB 5CH ; LO cycle 2nd half
|
|
396
|
+
F3FEH DEFB 26H ; HI cycle 1st half
|
|
397
|
+
F3FFH DEFB 2DH ; HI cycle 2nd half
|
|
398
|
+
F400H DEFB 0FH ; Header cycle count
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
These five variables contain the 1200 baud cassette parameters. Their values are set at power-up and thereafter unaltered.
|
|
402
|
+
|
|
403
|
+
<a name="f401h"></a><a name="cs2400"></a>
|
|
404
|
+
<a name="f402h"></a>
|
|
405
|
+
<a name="f403h"></a>
|
|
406
|
+
<a name="f404h"></a>
|
|
407
|
+
<a name="f405h"></a>
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
F401H CS2400: DEFB 25H ; LO cycle 1st half
|
|
411
|
+
F402H DEFB 2DH ; LO cycle 2nd half
|
|
412
|
+
F403H DEFB 0EH ; HI cycle 1st half
|
|
413
|
+
F404H DEFB 16H ; HI cycle 2nd half
|
|
414
|
+
F405H DEFB 1FH ; Header cycle count
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
These five variables contain the 2400 baud cassette parameters. Their values are set at power-up and thereafter unaltered.
|
|
418
|
+
|
|
419
|
+
<a name="f406h"></a><a name="low"></a>
|
|
420
|
+
<a name="f407h"></a>
|
|
421
|
+
<a name="f408h"></a><a name="high"></a>
|
|
422
|
+
<a name="f409h"></a>
|
|
423
|
+
<a name="f40ah"></a><a name="header"></a>
|
|
424
|
+
|
|
425
|
+
```
|
|
426
|
+
F406H LOW: DEFB 53H ; LO cycle 1st half
|
|
427
|
+
F407H DEFB 5CH ; LO cycle 2nd half
|
|
428
|
+
F408H HIGH: DEFB 26H ; HI cycle 1st half
|
|
429
|
+
F409H DEFB 2DH ; HI cycle 2nd half
|
|
430
|
+
F40AH HEADER: DEFB 0FH ; Header cycle count
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
These five variables contain the current cassette parameters. Their values are set to 1200 baud at power-up and thereafter only altered by the "`CSAVE`" and "`SCREEN`" statements.
|
|
434
|
+
|
|
435
|
+
<a name="f40bh"></a><a name="aspct1"></a>
|
|
436
|
+
|
|
437
|
+
F40BH ASPCT1: DEFW 0100H
|
|
438
|
+
|
|
439
|
+
This variable contains the reciprocal of the default "`CIRCLE`" aspect ratio multiplied by 256. Its value is set at power-up and thereafter unaltered.
|
|
440
|
+
|
|
441
|
+
<a name="f40dh"></a><a name="aspct2"></a>
|
|
442
|
+
|
|
443
|
+
F40DH ASPCT2: DEFW 01C0H
|
|
444
|
+
|
|
445
|
+
This variable contains the default "`CIRCLE`" aspect ratio multiplied by 256. Its value is set at power-up and thereafter unaltered. The aspect ratio is present in two forms so that the "`CIRCLE`" statement handler can select the appropriate one immediately rather than needing to examine and possibly reciprocate it as is the case with an operand in the program text.
|
|
446
|
+
|
|
447
|
+
<a name="f40fh"></a><a name="endprg"></a>
|
|
448
|
+
<a name="f410h"></a>
|
|
449
|
+
<a name="f411h"></a>
|
|
450
|
+
<a name="f412h"></a>
|
|
451
|
+
<a name="f413h"></a>
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
F40FH ENDPRG: DEFB ":"
|
|
455
|
+
F410H DEFB 00H
|
|
456
|
+
F411H DEFB 00H
|
|
457
|
+
FE12H DEFB 00H
|
|
458
|
+
F413H DEFB 00H
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
These five bytes form a dummy program line. Their values are set at power-up and thereafter unaltered. The line exists in case an error occurs in the Interpreter Mainloop before any tokenized text is available in [KBUF](#kbuf). If an "`ON ERROR GOTO`" is active at this time then it provides some text for the "`RESUME`" statement to terminate on.
|
|
462
|
+
|
|
463
|
+
<a name="f414h"></a><a name="errflg"></a>
|
|
464
|
+
|
|
465
|
+
F414H ERRFLG: DEFB 00H
|
|
466
|
+
|
|
467
|
+
This variable is used by the Interpreter error handler to save the error number.
|
|
468
|
+
|
|
469
|
+
<a name="f415h"></a><a name="lptpos"></a>
|
|
470
|
+
|
|
471
|
+
F415H LPTPOS: DEFB 00H
|
|
472
|
+
|
|
473
|
+
This variable is used by the "`LPRINT`" statement handler to hold the current position of the printer head.
|
|
474
|
+
|
|
475
|
+
<a name="f416h"></a><a name="prtflg"></a>
|
|
476
|
+
|
|
477
|
+
F416H PRTFLG: DEFB 00H
|
|
478
|
+
|
|
479
|
+
This variable determines whether the [OUTDO](#outdo) standard routine directs its output to the screen or to the printer: 00H=Screen, 01H=Printer.
|
|
480
|
+
|
|
481
|
+
<a name="f417h"></a><a name="ntmsxp"></a>
|
|
482
|
+
|
|
483
|
+
F417H NTMSXP: DEFB 00H
|
|
484
|
+
|
|
485
|
+
This variable determines whether the [OUTDO](#outdo) standard routine will replace headered graphics characters directed to the printer with spaces: 00H=Graphics, NZ=Spaces. Its value is set at power-up and thereafter only altered by the "`SCREEN`" statement.
|
|
486
|
+
|
|
487
|
+
<a name="f418h"></a><a name="rawprt"></a>
|
|
488
|
+
|
|
489
|
+
F418H RAWPRT: DEFB 00H
|
|
490
|
+
|
|
491
|
+
This variable determines whether the [OUTDO](#outdo) standard routine will modify control and headered graphics characters directed to the printer: 00H=Modify, NZ=Raw. Its value is set at power-up and thereafter unaltered.
|
|
492
|
+
|
|
493
|
+
<a name="f419h"></a><a name="vlzadr"></a>
|
|
494
|
+
<a name="f41bh"></a><a name="vlzdat"></a>
|
|
495
|
+
|
|
496
|
+
```
|
|
497
|
+
F419H VLZADR: DEFW 0000H
|
|
498
|
+
F41BH VLZDAT: DEFB 00H
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
These variables contain the address and value of any character temporarily removed by the "`VAL`" function.
|
|
502
|
+
|
|
503
|
+
<a name="f41ch"></a><a name="curlin"></a>
|
|
504
|
+
|
|
505
|
+
F41CH CURLIN: DEFW FFFFH
|
|
506
|
+
|
|
507
|
+
This variable contains the current Interpreter line number. A value of FFFFH denotes direct mode.
|
|
508
|
+
|
|
509
|
+
<a name="f41eh"></a><a name="kbfmin"></a>
|
|
510
|
+
|
|
511
|
+
F41EH KBFMIN: DEFB ":"
|
|
512
|
+
|
|
513
|
+
This byte provides a dummy prefix to the tokenized text contained in [KBUF](#kbuf). Its function is similar to that of [ENDPRG](#endprg) but is used for the situation where an error occurs within a direct statement.
|
|
514
|
+
|
|
515
|
+
<a name="f41fh"></a><a name="kbuf"></a>
|
|
516
|
+
|
|
517
|
+
F41FH KBUF: DEFS 318
|
|
518
|
+
|
|
519
|
+
This buffer contains the tokenized form of the input line collected by the Interpreter Mainloop. When a direct statement is executed the contents of this buffer form the program text.
|
|
520
|
+
|
|
521
|
+
<a name="f55dh"></a><a name="bufmin"></a>
|
|
522
|
+
|
|
523
|
+
F55DH BUFMIN: DEFB ","
|
|
524
|
+
|
|
525
|
+
This byte provides a dummy prefix to the text contained in [BUF](#buf). It is used to synchronize the "`INPUT`" statement handler as it starts to analyze the input text.
|
|
526
|
+
|
|
527
|
+
<a name="f55eh"></a><a name="buf"></a>
|
|
528
|
+
|
|
529
|
+
F55EH BUF: DEFS 259
|
|
530
|
+
|
|
531
|
+
This buffer contains the text collected from the console by the [INLIN](#inlin) standard routine.
|
|
532
|
+
|
|
533
|
+
<a name="f661h"></a><a name="ttypos"></a>
|
|
534
|
+
|
|
535
|
+
F661H TTYPOS: DEFB 00H
|
|
536
|
+
|
|
537
|
+
This variable is used by the "`PRINT`" statement handler to hold the current screen position (Teletype!).
|
|
538
|
+
|
|
539
|
+
<a name="f662h"></a><a name="dimflg"></a>
|
|
540
|
+
|
|
541
|
+
F662H DIMFLG: DEFB 00H
|
|
542
|
+
|
|
543
|
+
This variable is normally zero but is set by the "`DIM`" statement handler to control the operation of the variable search routine.
|
|
544
|
+
|
|
545
|
+
<a name="f663h"></a><a name="valtyp"></a>
|
|
546
|
+
|
|
547
|
+
F663H VALTYP: DEFB 02H
|
|
548
|
+
|
|
549
|
+
This variable contains the type code of the operand currently contained in [DAC](#dac): integer, 3=String, 4=Single Precision, 8=Double Precision.
|
|
550
|
+
|
|
551
|
+
<a name="f664h"></a><a name="dores"></a>
|
|
552
|
+
|
|
553
|
+
F664H DORES: DEFB 00H
|
|
554
|
+
|
|
555
|
+
This variable is normally zero but is set to prevent the tokenization of unquoted keywords following a "`DATA`" token.
|
|
556
|
+
|
|
557
|
+
<a name="f665h"></a><a name="donum"></a>
|
|
558
|
+
|
|
559
|
+
F665H DONUM: DEFB 00H
|
|
560
|
+
|
|
561
|
+
This variable is normally zero but is set when a numeric constant follows one of the keywords `GOTO`, `GOSUB`, `THEN`, etc., and must be tokenized to the special line number operand form.
|
|
562
|
+
|
|
563
|
+
<a name="f666h"></a><a name="contxt"></a>
|
|
564
|
+
|
|
565
|
+
F666H CONTXT: DEFW 0000H
|
|
566
|
+
|
|
567
|
+
This variable is used by the [CHRGTR](#chrgtr) standard routine to save the address of the character following a numeric constant in the program text.
|
|
568
|
+
|
|
569
|
+
<a name="f668h"></a><a name="consav"></a>
|
|
570
|
+
|
|
571
|
+
F668H CONSAV: DEFB 00H
|
|
572
|
+
|
|
573
|
+
This variable is used by the [CHRGTR](#chrgtr) standard routine to save the token of a numeric constant found in the program text.
|
|
574
|
+
|
|
575
|
+
<a name="f669h"></a><a name="contyp"></a>
|
|
576
|
+
|
|
577
|
+
F669H CONTYP: DEFB 00H
|
|
578
|
+
|
|
579
|
+
This variable is used by the [CHRGTR](#chrgtr) standard routine to save the type of a numeric constant found in the program text.
|
|
580
|
+
|
|
581
|
+
<a name="f66ah"></a><a name="conlo"></a>
|
|
582
|
+
|
|
583
|
+
F66AH CONLO: DEFS 8
|
|
584
|
+
|
|
585
|
+
This buffer is used by the [CHRGTR](#chrgtr) standard routine to save the value of a numeric constant found in the program text.
|
|
586
|
+
|
|
587
|
+
<a name="f672h"></a><a name="memsiz"></a>
|
|
588
|
+
|
|
589
|
+
F672H MEMSIZ: DEFW F168H
|
|
590
|
+
|
|
591
|
+
This variable contains the address of the top of the String Storage Area. Its value is set at power-up and thereafter only altered by the "`CLEAR`" and "`MAXFILES`" statements.
|
|
592
|
+
|
|
593
|
+
<a name="f674h"></a><a name="stktop"></a>
|
|
594
|
+
|
|
595
|
+
F674H STKTOP: DEFW F0A0H
|
|
596
|
+
|
|
597
|
+
This variable contains the address of the top of the Z80 stack. Its value is set at power-up to [MEMSIZ](#memsiz)-200 and thereafter only altered by the "`CLEAR`" and "`MAXFILES`" statements.
|
|
598
|
+
|
|
599
|
+
<a name="f676h"></a><a name="txttab"></a>
|
|
600
|
+
|
|
601
|
+
F676H TXTTAB: DEFW 8001H
|
|
602
|
+
|
|
603
|
+
This variable contains the address of the first byte of the Program Text Area. Its value is set at power-up and thereafter unaltered.
|
|
604
|
+
|
|
605
|
+
<a name="f678h"></a><a name="temppt"></a>
|
|
606
|
+
|
|
607
|
+
F678H TEMPPT: DEFW F67AH
|
|
608
|
+
|
|
609
|
+
This variable contains the address of the next free location in [TEMPST](#tempst).
|
|
610
|
+
|
|
611
|
+
<a name="f67ah"></a><a name="tempst"></a>
|
|
612
|
+
|
|
613
|
+
F67AH TEMPST: DEFS 30
|
|
614
|
+
|
|
615
|
+
This buffer is used to store string descriptors. It functions as a stack with string producers pushing their results and string consumers popping them.
|
|
616
|
+
|
|
617
|
+
<a name="f698h"></a><a name="dsctmp"></a>
|
|
618
|
+
|
|
619
|
+
F698H DSCTMP: DEFS 3
|
|
620
|
+
|
|
621
|
+
This buffer is used by the string functions to hold a result descriptor while it is being constructed.
|
|
622
|
+
|
|
623
|
+
<a name="f69bh"></a><a name="fretop"></a>
|
|
624
|
+
|
|
625
|
+
F69BH FRETOP: DEFW F168H
|
|
626
|
+
|
|
627
|
+
This variable contains the address of the next free location in the String Storage Area. When the area is empty [FRETOP](#fretop) is equal to [MEMSIZ](#memsiz).
|
|
628
|
+
|
|
629
|
+
<a name="f69dh"></a><a name="temp3"></a>
|
|
630
|
+
|
|
631
|
+
F69DH TEMP3: DEFW 0000H
|
|
632
|
+
|
|
633
|
+
This variable is used for temporary storage by various parts of the Interpreter.
|
|
634
|
+
|
|
635
|
+
<a name="f69fh"></a><a name="temp8"></a>
|
|
636
|
+
|
|
637
|
+
F69FH TEMP8: DEFW 0000H
|
|
638
|
+
|
|
639
|
+
This variable is used for temporary storage by various parts of the Interpreter.
|
|
640
|
+
|
|
641
|
+
<a name="f6a1h"></a><a name="endfor"></a>
|
|
642
|
+
|
|
643
|
+
F6A1H ENDFOR: DEFW 0000H
|
|
644
|
+
|
|
645
|
+
This variable is used by the "`FOR`" statement handler to hold the end of statement address during construction of a parameter block.
|
|
646
|
+
|
|
647
|
+
<a name="f6a3h"></a><a name="datlin"></a>
|
|
648
|
+
|
|
649
|
+
F6A3H DATLIN: DEFW 0000H
|
|
650
|
+
|
|
651
|
+
This variable contains the line number of the current "`DATA`" item in the program text.
|
|
652
|
+
|
|
653
|
+
<a name="f6a5h"></a><a name="subflg"></a>
|
|
654
|
+
|
|
655
|
+
F6A5H SUBFLG: DEFB 00H
|
|
656
|
+
|
|
657
|
+
This variable is normally zero but is set by the "`ERASE`", "`FOR`", "`FN`" and "`DEF FN`" handlers to control the processing of subscripts by the variable search routine.
|
|
658
|
+
|
|
659
|
+
<a name="f6a6h"></a><a name="flginp"></a>
|
|
660
|
+
|
|
661
|
+
F6A6H FLGINP: DEFB 00H
|
|
662
|
+
|
|
663
|
+
This variable contains a flag to distinguish the two statements in the "`READ/INPUT`" statement handler: 00H=INPUT, NZ=READ.
|
|
664
|
+
|
|
665
|
+
<a name="f6a7h"></a><a name="temp"></a>
|
|
666
|
+
|
|
667
|
+
F6A7H TEMP: DEFW 0000H
|
|
668
|
+
|
|
669
|
+
This variable is used for temporary storage by various parts of the Interpreter.
|
|
670
|
+
|
|
671
|
+
<a name="f6a9h"></a><a name="ptrflg"></a>
|
|
672
|
+
|
|
673
|
+
F6A9H PTRFLG: DEFB 00H
|
|
674
|
+
|
|
675
|
+
This variable is normally zero but is set if any line number operands in the Program Text Area have been converted to pointers.
|
|
676
|
+
|
|
677
|
+
<a name="f6aah"></a><a name="autflg"></a>
|
|
678
|
+
|
|
679
|
+
F6AAH AUTFLG: DEFB 00H
|
|
680
|
+
|
|
681
|
+
This variable is normally zero but is set when "`AUTO`" mode is turned on.
|
|
682
|
+
|
|
683
|
+
<a name="f6abh"></a><a name="autlin"></a>
|
|
684
|
+
|
|
685
|
+
F6ABH AUTLIN: DEFW 0000H
|
|
686
|
+
|
|
687
|
+
This variable contains the current "`AUTO`" line number.
|
|
688
|
+
|
|
689
|
+
<a name="f6adh"></a><a name="autinc"></a>
|
|
690
|
+
|
|
691
|
+
F6ADH AUTINC: DEFW 0000H
|
|
692
|
+
|
|
693
|
+
This variable contains the current "`AUTO`" line number increment.
|
|
694
|
+
|
|
695
|
+
<a name="f6afh"></a><a name="savtxt"></a>
|
|
696
|
+
|
|
697
|
+
F6AFH SAVTXT: DEFW 0000H
|
|
698
|
+
|
|
699
|
+
This variable is updated by the Runloop at the start of every statement with the current location in the program text. It is used during error recovery to set [ERRTXT](#errtxt) for the "`RESUME`" statement handler and [OLDTXT](#oldtxt) for the "`CONT`" statement handler.
|
|
700
|
+
|
|
701
|
+
<a name="f6b1h"></a><a name="savstk"></a>
|
|
702
|
+
|
|
703
|
+
F6B1H SAVSTK: DEFW F09EH
|
|
704
|
+
|
|
705
|
+
This variable is updated by the Runloop at the start of every statement with the current Z80 SP for error recovery purposes.
|
|
706
|
+
|
|
707
|
+
<a name="f6b3h"></a><a name="errlin"></a>
|
|
708
|
+
|
|
709
|
+
F6B3H ERRLIN: DEFW 0000H
|
|
710
|
+
|
|
711
|
+
This variable is used by the error handler to hold the line number of the program line generating an error.
|
|
712
|
+
|
|
713
|
+
<a name="f6b5h"></a><a name="dot"></a>
|
|
714
|
+
|
|
715
|
+
F6B5H DOT: DEFW 0000H
|
|
716
|
+
|
|
717
|
+
This variable is updated by the Mainloop and the error handler with the current line number for use with the "." parameter.
|
|
718
|
+
|
|
719
|
+
<a name="f6b7h"></a><a name="errtxt"></a>
|
|
720
|
+
|
|
721
|
+
F6B7H ERRTXT: DEFW 0000H
|
|
722
|
+
|
|
723
|
+
This variable is updated from [SAVTXT](#savtxt) by the error handler for use by the "`RESUME`" statement handler.
|
|
724
|
+
|
|
725
|
+
<a name="f6b9h"></a><a name="onelin"></a>
|
|
726
|
+
|
|
727
|
+
F6B9H ONELIN: DEFW 0000H
|
|
728
|
+
|
|
729
|
+
This variable is set by the "`ON ERROR GOTO`" statement handler with the address of the program line to execute when an error occurs.
|
|
730
|
+
|
|
731
|
+
<a name="f6bbh"></a><a name="oneflg"></a>
|
|
732
|
+
|
|
733
|
+
F6BBH ONEFLG: DEFB 00H
|
|
734
|
+
|
|
735
|
+
This variable is normally zero but is set by the error handler when control transfers to an "`ON ERROR GOTO`" statement. This is to prevent a loop developing if an error occurs inside the error recovery statements.
|
|
736
|
+
|
|
737
|
+
<a name="f6bch"></a><a name="temp2"></a>
|
|
738
|
+
|
|
739
|
+
F6BCH TEMP2: DEFW 0000H
|
|
740
|
+
|
|
741
|
+
This variable is used for temporary storage by various parts of the Interpreter.
|
|
742
|
+
|
|
743
|
+
<a name="f6beh"></a><a name="oldlin"></a>
|
|
744
|
+
|
|
745
|
+
F6BEH OLDLIN: DEFW 0000H
|
|
746
|
+
|
|
747
|
+
This variable contains the line number of the terminating program line. It is set by the "`END`" and "`STOP`" statement handlers for use with the "`CONT`" statement.
|
|
748
|
+
|
|
749
|
+
<a name="f6c0h"></a><a name="oldtxt"></a>
|
|
750
|
+
|
|
751
|
+
F6C0H OLDTXT: DEFW 0000H
|
|
752
|
+
|
|
753
|
+
This variable contains the address of the terminating program statement.
|
|
754
|
+
|
|
755
|
+
<a name="f6c2h"></a><a name="vartab"></a>
|
|
756
|
+
|
|
757
|
+
F6C2H VARTAB: DEFW 8003H
|
|
758
|
+
|
|
759
|
+
This variable contains the address of the first byte of the Variable Storage Area.
|
|
760
|
+
|
|
761
|
+
<a name="f6c4h"></a><a name="arytab"></a>
|
|
762
|
+
|
|
763
|
+
F6C4H ARYTAB: DEFW 8003H
|
|
764
|
+
|
|
765
|
+
This variable contains the address of the first byte of the Array Storage Area.
|
|
766
|
+
|
|
767
|
+
<a name="f6c6h"></a><a name="strend"></a>
|
|
768
|
+
|
|
769
|
+
F6C6H STREND: DEFW 8003H
|
|
770
|
+
|
|
771
|
+
This variable contains the address of the byte following the Array Storage Area.
|
|
772
|
+
|
|
773
|
+
<a name="f6c8h"></a><a name="datptr"></a>
|
|
774
|
+
|
|
775
|
+
F6C8H DATPTR: DEFW 8000H
|
|
776
|
+
|
|
777
|
+
This variable contains the address of the current "`DATA`" item in the program text.
|
|
778
|
+
|
|
779
|
+
<a name="f6cah"></a><a name="deftbl"></a>
|
|
780
|
+
<a name="f6cbh"></a>
|
|
781
|
+
<a name="f6cch"></a>
|
|
782
|
+
<a name="f6cdh"></a>
|
|
783
|
+
<a name="f6ceh"></a>
|
|
784
|
+
<a name="f6cfh"></a>
|
|
785
|
+
<a name="f6d0h"></a>
|
|
786
|
+
<a name="f6d1h"></a>
|
|
787
|
+
<a name="f6d2h"></a>
|
|
788
|
+
<a name="f6d3h"></a>
|
|
789
|
+
<a name="f6d4h"></a>
|
|
790
|
+
<a name="f6d5h"></a>
|
|
791
|
+
<a name="f6d6h"></a>
|
|
792
|
+
<a name="f6d7h"></a>
|
|
793
|
+
<a name="f6d8h"></a>
|
|
794
|
+
<a name="f6d9h"></a>
|
|
795
|
+
<a name="f6dah"></a>
|
|
796
|
+
<a name="f6dbh"></a>
|
|
797
|
+
<a name="f6dch"></a>
|
|
798
|
+
<a name="f6ddh"></a>
|
|
799
|
+
<a name="f6deh"></a>
|
|
800
|
+
<a name="f6dfh"></a>
|
|
801
|
+
<a name="f6e0h"></a>
|
|
802
|
+
<a name="f6e1h"></a>
|
|
803
|
+
<a name="f6e2h"></a>
|
|
804
|
+
<a name="f6e3h"></a>
|
|
805
|
+
|
|
806
|
+
```
|
|
807
|
+
F6CAH DEFTBL: DEFB 08H ; A
|
|
808
|
+
F6CBH DEFB 08H ; B
|
|
809
|
+
F6CCH DEFB 08H ; C
|
|
810
|
+
F6CDH DEFB 08H ; D
|
|
811
|
+
F6CEH DEFB 08H ; E
|
|
812
|
+
F6CFH DEFB 08H ; F
|
|
813
|
+
F6D0H DEFB 08H ; G
|
|
814
|
+
F6D1H DEFB 08H ; H
|
|
815
|
+
F6D2H DEFB 08H ; I
|
|
816
|
+
F6D3H DEFB 08H ; J
|
|
817
|
+
F6D4H DEFB 08H ; K
|
|
818
|
+
F6D5H DEFB 08H ; L
|
|
819
|
+
F6D6H DEFB 08H ; M
|
|
820
|
+
F6D7H DEFB 08H ; N
|
|
821
|
+
F6D8H DEFB 08H ; O
|
|
822
|
+
F6D9H DEFB 08H ; P
|
|
823
|
+
F6DAH DEFB 08H ; Q
|
|
824
|
+
F6DBH DEFB 08H ; R
|
|
825
|
+
F6DCH DEFB 08H ; S
|
|
826
|
+
F6DDH DEFB 08H ; T
|
|
827
|
+
F6DEH DEFB 08H ; U
|
|
828
|
+
F6DFH DEFB 08H ; V
|
|
829
|
+
F6E0H DEFB 08H ; W
|
|
830
|
+
F6E1H DEFB 08H ; X
|
|
831
|
+
F6E2H DEFB 08H ; Y
|
|
832
|
+
F6E3H DEFB 08H ; Z
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
These twenty-six variables contain the default type for each group of BASIC Variables. Their values are set to double precision at power-up, "`NEW`" and "`CLEAR`" and thereafter altered only by the "`DEF`" group of statements.
|
|
836
|
+
|
|
837
|
+
<a name="f6e4h"></a><a name="prmstk"></a>
|
|
838
|
+
|
|
839
|
+
F6E4H PRMSTK: DEFW 0000H
|
|
840
|
+
|
|
841
|
+
This variable contains the base address of the previous "`FN`" parameter block on the Z80 stack. It is used during string garbage collection to travel from block to block on the stack.
|
|
842
|
+
|
|
843
|
+
<a name="f6e6h"></a><a name="prmlen"></a>
|
|
844
|
+
|
|
845
|
+
F6E6H PRMLEN: DEFW 0000H
|
|
846
|
+
|
|
847
|
+
This variable contains the length of the current "`FN`" parameter block in [PARM1](#parm1).
|
|
848
|
+
|
|
849
|
+
<a name="f6e8h"></a><a name="parm1"></a>
|
|
850
|
+
|
|
851
|
+
F6E8H PARM1 : DEFS 100
|
|
852
|
+
|
|
853
|
+
This buffer contains the local Variables belonging to the "`FN`" function currently being evaluated.
|
|
854
|
+
|
|
855
|
+
<a name="f74ch"></a><a name="prmprv"></a>
|
|
856
|
+
|
|
857
|
+
F74CH PRMPRV: DEFW F6E4H
|
|
858
|
+
|
|
859
|
+
This variable contains the address of the previous "`FN`" parameter block. It is actually a constant used to ensure that string garbage collection commences with the current parameter block before proceeding to those on the stack.
|
|
860
|
+
|
|
861
|
+
<a name="f74eh"></a><a name="prmln2"></a>
|
|
862
|
+
|
|
863
|
+
F74EH PRMLN2: DEFW 0000H
|
|
864
|
+
|
|
865
|
+
This variable contains the length of the "`FN`" parameter block being constructed in [PARM2](#parm2)
|
|
866
|
+
|
|
867
|
+
<a name="f750h"></a><a name="parm2"></a>
|
|
868
|
+
|
|
869
|
+
F750H PARM2: DEFS 100
|
|
870
|
+
|
|
871
|
+
This buffer is used to construct the local Variables owned by the current "`FN`" function.
|
|
872
|
+
|
|
873
|
+
<a name="f7b4h"></a><a name="prmflg"></a>
|
|
874
|
+
|
|
875
|
+
F7B4H PRMFLG: DEFB 00H
|
|
876
|
+
|
|
877
|
+
This variable is used during a Variable search to indicate whether local or global Variables are being examined.
|
|
878
|
+
|
|
879
|
+
<a name="f7b5h"></a><a name="aryta2"></a>
|
|
880
|
+
|
|
881
|
+
F7B5H ARYTA2: DEFW 0000H
|
|
882
|
+
|
|
883
|
+
This variable is used during a Variable search to hold the termination address of the storage area being examined.
|
|
884
|
+
|
|
885
|
+
<a name="f7b7h"></a><a name="nofuns"></a>
|
|
886
|
+
|
|
887
|
+
F7B7H NOFUNS: DEFB 00H
|
|
888
|
+
|
|
889
|
+
This variable is normally zero but is set by the "`FN`" function handler to indicate to the variable search routine that local Variables are present.
|
|
890
|
+
|
|
891
|
+
<a name="f7b8h"></a><a name="temp9"></a>
|
|
892
|
+
|
|
893
|
+
F7B8H TEMP9: DEFW 0000H
|
|
894
|
+
|
|
895
|
+
This variable is used for temporary storage by various parts of the Interpreter.
|
|
896
|
+
|
|
897
|
+
<a name="f7bah"></a><a name="funact"></a>
|
|
898
|
+
|
|
899
|
+
F7BAH FUNACT: DEFW 0000H
|
|
900
|
+
|
|
901
|
+
This variable contains the number of currently active "`FN`" functions.
|
|
902
|
+
|
|
903
|
+
<a name="f7bch"></a><a name="swptmp"></a>
|
|
904
|
+
|
|
905
|
+
F7BCH SWPTMP: DEFS 8
|
|
906
|
+
|
|
907
|
+
This buffer is used to hold the first operand in a "`SWAP`" statement.
|
|
908
|
+
|
|
909
|
+
<a name="f7c4h"></a><a name="trcflg"></a>
|
|
910
|
+
|
|
911
|
+
F7C4H TRCFLG: DEFB 00H
|
|
912
|
+
|
|
913
|
+
This variable is normally zero but is set by the "`TRON`" statement handler to turn on the trace facility.
|
|
914
|
+
|
|
915
|
+
<a name="f7c5h"></a><a name="fbuffr"></a>
|
|
916
|
+
|
|
917
|
+
F7C5H FBUFFR: DEFS 43
|
|
918
|
+
|
|
919
|
+
This buffer is used to hold the text produced during numeric output conversion.
|
|
920
|
+
|
|
921
|
+
<a name="f7f0h"></a><a name="dectmp"></a>
|
|
922
|
+
|
|
923
|
+
F7F0H DECTMP: DEFW 0000H
|
|
924
|
+
|
|
925
|
+
This variable is used for temporary storage by the double precision division routine.
|
|
926
|
+
|
|
927
|
+
<a name="f7f2h"></a><a name="dectm2"></a>
|
|
928
|
+
|
|
929
|
+
F7F2H DECTM2: DEFW 0000H
|
|
930
|
+
|
|
931
|
+
This variable is used for temporary storage by the double precision division routine.
|
|
932
|
+
|
|
933
|
+
<a name="f7f4h"></a><a name="deccnt"></a>
|
|
934
|
+
|
|
935
|
+
F7F4H DECCNT: DEFB 00H
|
|
936
|
+
|
|
937
|
+
This variable is used by the double precision division routine to hold the number of non-zero bytes in the mantissa of the second operand.
|
|
938
|
+
|
|
939
|
+
<a name="f7f6h"></a><a name="dac"></a>
|
|
940
|
+
|
|
941
|
+
F7F6H DAC: DEFS 16
|
|
942
|
+
|
|
943
|
+
This buffer functions as the Interpreter's primary accumulator during expression evaluation.
|
|
944
|
+
|
|
945
|
+
<a name="f806h"></a><a name="hold8"></a>
|
|
946
|
+
|
|
947
|
+
F806H HOLD8: DEFS 65
|
|
948
|
+
|
|
949
|
+
This buffer is used by the double precision multiplication routine to hold the multiples of the first operand.
|
|
950
|
+
|
|
951
|
+
<a name="f847h"></a><a name="arg"></a>
|
|
952
|
+
|
|
953
|
+
F847H ARG: DEFS 16
|
|
954
|
+
|
|
955
|
+
This buffer functions as the Interpreter's secondary accumulator during expression evaluation.
|
|
956
|
+
|
|
957
|
+
<a name="f857h"></a><a name="rndx"></a>
|
|
958
|
+
|
|
959
|
+
F857H RNDX: DEFS 8
|
|
960
|
+
|
|
961
|
+
This buffer contains the current double precision random number.
|
|
962
|
+
|
|
963
|
+
<a name="f85fh"></a><a name="maxfil"></a>
|
|
964
|
+
|
|
965
|
+
F85FH MAXFIL: DEFB 01H
|
|
966
|
+
|
|
967
|
+
This variable contains the number of currently allocated user I/O buffers. Its value is set to 1 at power-up and thereafter only altered by the "`MAXFILES`" statement.
|
|
968
|
+
|
|
969
|
+
<a name="f860h"></a><a name="filtab"></a>
|
|
970
|
+
|
|
971
|
+
F860H FILTAB: DEFW F16AH
|
|
972
|
+
|
|
973
|
+
This variable contains the address of the pointer table for the I/O buffer FCBs.
|
|
974
|
+
|
|
975
|
+
<a name="f862h"></a><a name="nulbuf"></a>
|
|
976
|
+
|
|
977
|
+
F862H NULBUF: DEFW F177H
|
|
978
|
+
|
|
979
|
+
This variable contains the address of the first byte of the data buffer belonging to I/O buffer 0.
|
|
980
|
+
|
|
981
|
+
<a name="f864h"></a><a name="ptrfil"></a>
|
|
982
|
+
|
|
983
|
+
F864H PTRFIL: DEFW 0000H
|
|
984
|
+
|
|
985
|
+
This variable contains the address of the currently active I/O buffer FCB.
|
|
986
|
+
|
|
987
|
+
<a name="f866h"></a><a name="filnam"></a>
|
|
988
|
+
|
|
989
|
+
F866H FILNAM: DEFS 11
|
|
990
|
+
|
|
991
|
+
This buffer holds a user-specified filename. It is eleven characters long to allow for disc file specs such as "`FILENAME.BAS`".
|
|
992
|
+
|
|
993
|
+
<a name="f871h"></a><a name="filnm2"></a>
|
|
994
|
+
|
|
995
|
+
F871H FILNM2: DEFS 11
|
|
996
|
+
|
|
997
|
+
This buffer holds a filename read from an I/O device for comparison with the contents of [FILNAM](#filnam).
|
|
998
|
+
|
|
999
|
+
<a name="f87ch"></a><a name="nlonly"></a>
|
|
1000
|
+
|
|
1001
|
+
F87CH NLONLY: DEFB 00H
|
|
1002
|
+
|
|
1003
|
+
This variable is normally zero but is set during a program "`LOAD`". Bit 0 is used to prevent I/O buffer 0 being closed during loading and bit 7 to prevent the user I/O buffers being closed if auto-run is required.
|
|
1004
|
+
|
|
1005
|
+
<a name="f87dh"></a><a name="savend"></a>
|
|
1006
|
+
|
|
1007
|
+
F87DH SAVEND: DEFW 0000H
|
|
1008
|
+
|
|
1009
|
+
This variable is used by the "`BSAVE`" statement handler to hold the end address of the memory block to be saved.
|
|
1010
|
+
|
|
1011
|
+
<a name="f87fh"></a><a name="fnkstr"></a>
|
|
1012
|
+
|
|
1013
|
+
F87FH FNKSTR: DEFS 160
|
|
1014
|
+
|
|
1015
|
+
This buffer contains the ten sixteen-character function key strings. Their values are set at power-up and thereafter only altered by the "`KEY`" statement.
|
|
1016
|
+
|
|
1017
|
+
<a name="f91fh"></a><a name="cgpnt"></a>
|
|
1018
|
+
<a name="f920h"></a>
|
|
1019
|
+
|
|
1020
|
+
```
|
|
1021
|
+
F91FH CGPNT: DEFB 00H ; Slot ID
|
|
1022
|
+
F920H DEFW 1BBFH ; Address
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
These variables contain the location of the character set copied to the VDP by the [INITXT](#initxt) and [INIT32](#init32) standard routines. Their values are set to the MSX ROM character set at power-up and thereafter unaltered.
|
|
1026
|
+
|
|
1027
|
+
<a name="f922h"></a><a name="nambas"></a>
|
|
1028
|
+
|
|
1029
|
+
F922H NAMBAS: DEFW 0000H
|
|
1030
|
+
|
|
1031
|
+
This variable contains the current text mode VDP Name Table base address. Its value is set from [TXTNAM](#txtnam) or [T32NAM](#t32nam) whenever the VDP is initialized to a text mode via the [INITXT](#initxt) or [INIT32](#init32) standard routines.
|
|
1032
|
+
|
|
1033
|
+
<a name="f924h"></a><a name="cgpbas"></a>
|
|
1034
|
+
|
|
1035
|
+
F924H CGPBAS: DEFW 0800H
|
|
1036
|
+
|
|
1037
|
+
This variable contains the current text mode VDP Character Pattern Table base address. Its value is set from [TXTCGP](#txtcgp) or [T32CGP](#t32cgp) whenever the VDP is initialized to a text mode via the [INITXT](#initxt) or [INIT32](#init32) standard routines.
|
|
1038
|
+
|
|
1039
|
+
<a name="f926h"></a><a name="patbas"></a>
|
|
1040
|
+
|
|
1041
|
+
F926H PATBAS: DEFW 3800H
|
|
1042
|
+
|
|
1043
|
+
This variable contains the current VDP Sprite Pattern Table base address. Its value is set from [T32PAT](#t32pat), [GRPPAT](#grppat) or [MLTPAT](#mltpat) whenever the VDP is initialized via the [INIT32](#init32), [INIGRP](#inigrp) or [INIMLT](#inimlt) standard routines.
|
|
1044
|
+
|
|
1045
|
+
<a name="f928h"></a><a name="atrbas"></a>
|
|
1046
|
+
|
|
1047
|
+
F928H ATRBAS: DEFW 1B00H
|
|
1048
|
+
|
|
1049
|
+
This variable contains the current VDP Sprite Attribute Table base address. Its value is set from [T32ATR](#t32atr), [GRPATR](#grpatr) or [MLTATR](#mltatr) whenever the VDP is initialized via the [INIT32](#init32), [INIGRP](#inigrp) or [INIMLT](#inimlt) standard routines.
|
|
1050
|
+
|
|
1051
|
+
<a name="f92ah"></a><a name="cloc"></a>
|
|
1052
|
+
<a name="f92ch"></a><a name="cmask"></a>
|
|
1053
|
+
|
|
1054
|
+
```
|
|
1055
|
+
F92AH CLOC: DEFW 0000H ; Pixel location
|
|
1056
|
+
F92CH CMASK: DEFB 80H ; Pixel Mask
|
|
1057
|
+
```
|
|
1058
|
+
|
|
1059
|
+
These variables contain the current pixel physical address used by the [RIGHTC](#rightc), [LEFTC](#leftc), [UPC](#upc), [TUPC](#tupc), [DOWNC](#downc), [TDOWNC](#tdownc), [FETCHC](#fetchc), [STOREC](#storec), [READC](#readc), [SETC](#setc), [NSETCX](#nsetcx), [SCANR](#scanr) and [SCANL](#scanl) standard routines. [CLOC](#cloc) holds the address of the byte containing the current pixel and [CMASK](#cmask) defines the pixel within that byte.
|
|
1060
|
+
|
|
1061
|
+
<a name="f92dh"></a><a name="mindel"></a>
|
|
1062
|
+
|
|
1063
|
+
F92DH MINDEL: DEFW 0000H
|
|
1064
|
+
|
|
1065
|
+
This variable is used by the "`LINE`" statement handler to hold the minimum difference between the end points of the line.
|
|
1066
|
+
|
|
1067
|
+
<a name="f92fh"></a><a name="maxdel"></a>
|
|
1068
|
+
|
|
1069
|
+
F92FH MAXDEL: DEFW 0000H
|
|
1070
|
+
|
|
1071
|
+
This variable is used by the "`LINE`" statement handler to hold the maximum difference between the end points of the line.
|
|
1072
|
+
|
|
1073
|
+
<a name="f931h"></a><a name="aspect"></a>
|
|
1074
|
+
|
|
1075
|
+
F931H ASPECT: DEFW 0000H
|
|
1076
|
+
|
|
1077
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the current aspect ratio. This is stored as a single byte binary fraction so an aspect ratio of 0.75 would become 00C0H. The MSB is only required if the aspect ratio is exactly 1.00, that is 0100H.
|
|
1078
|
+
|
|
1079
|
+
<a name="f933h"></a><a name="cencnt"></a>
|
|
1080
|
+
|
|
1081
|
+
F933H CENCNT: DEFW 0000H
|
|
1082
|
+
|
|
1083
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the point count of the end angle.
|
|
1084
|
+
|
|
1085
|
+
<a name="f935h"></a><a name="clinef"></a>
|
|
1086
|
+
|
|
1087
|
+
F935H CLINEF: DEFB 00H
|
|
1088
|
+
|
|
1089
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the two line flags. Bit 0 is set if a line is required from the start angle to the centre and bit 7 set if one is required from the end angle.
|
|
1090
|
+
|
|
1091
|
+
<a name="f936h"></a><a name="cnpnts"></a>
|
|
1092
|
+
|
|
1093
|
+
F936H CNPNTS: DEFW 0000H
|
|
1094
|
+
|
|
1095
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the number of points within a forty-five degree segment.
|
|
1096
|
+
|
|
1097
|
+
<a name="f938h"></a><a name="cplotf"></a>
|
|
1098
|
+
|
|
1099
|
+
F938H CPLOTF: DEFB 00H
|
|
1100
|
+
|
|
1101
|
+
This variable is normally zero but is set by the "`CIRCLE`" statement handler if the end angle is smaller than the start angle. It is used to determine whether the pixels should be set "inside" the angles or "outside" them.
|
|
1102
|
+
|
|
1103
|
+
<a name="f939h"></a><a name="cpcnt"></a>
|
|
1104
|
+
|
|
1105
|
+
F939H CPCNT: DEFW 0000H
|
|
1106
|
+
|
|
1107
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the point count within the current forty-five degree segment, this is in fact the Y coordinate.
|
|
1108
|
+
|
|
1109
|
+
<a name="f93bh"></a><a name="cpcnt8"></a>
|
|
1110
|
+
|
|
1111
|
+
F93BH CPCNT8: DEFW 0000H
|
|
1112
|
+
|
|
1113
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the total point count of the present position.
|
|
1114
|
+
|
|
1115
|
+
<a name="f93dh"></a><a name="crcsum"></a>
|
|
1116
|
+
|
|
1117
|
+
F93DH CRCSUM: DEFW 0000H
|
|
1118
|
+
|
|
1119
|
+
This variable is used by the "`CIRCLE`" statement handler as the point computation counter.
|
|
1120
|
+
|
|
1121
|
+
<a name="f93fh"></a><a name="cstcnt"></a>
|
|
1122
|
+
|
|
1123
|
+
F93FH CSTCNT: DEFW 0000H
|
|
1124
|
+
|
|
1125
|
+
This variable is used by the "`CIRCLE`" statement handler to hold the point count of the start angle.
|
|
1126
|
+
|
|
1127
|
+
<a name="f941h"></a><a name="csclxy"></a>
|
|
1128
|
+
|
|
1129
|
+
F941H CSCLXY: DEFB 00H
|
|
1130
|
+
|
|
1131
|
+
This variable is used by the "`CIRCLE`" statement handler as a flag to determine in which direction the elliptic squash is to be applied: 00H=Y, 01H=X.
|
|
1132
|
+
|
|
1133
|
+
<a name="f942h"></a><a name="csavea"></a>
|
|
1134
|
+
|
|
1135
|
+
F942H CSAVEA: DEFW 0000H
|
|
1136
|
+
|
|
1137
|
+
This variable is used for temporary storage by the [SCANR](#scanr) standard routine.
|
|
1138
|
+
|
|
1139
|
+
<a name="f944h"></a><a name="csavem"></a>
|
|
1140
|
+
|
|
1141
|
+
F944H CSAVEM: DEFB 00h
|
|
1142
|
+
|
|
1143
|
+
This variable is used for temporary storage by the [SCANR](#scanr) standard routine.
|
|
1144
|
+
|
|
1145
|
+
<a name="f945h"></a><a name="cxoff"></a>
|
|
1146
|
+
|
|
1147
|
+
F945H CXOFF: DEFW 0000H
|
|
1148
|
+
|
|
1149
|
+
This variable is used for temporary storage by the "`CIRCLE`" statement handler.
|
|
1150
|
+
|
|
1151
|
+
<a name="f947h"></a><a name="cyoff"></a>
|
|
1152
|
+
|
|
1153
|
+
F947H CYOFF: DEFW 0000H
|
|
1154
|
+
|
|
1155
|
+
This variable is used for temporary storage by the "`CIRCLE`" statement handler.
|
|
1156
|
+
|
|
1157
|
+
<a name="f949h"></a><a name="lohmsk"></a>
|
|
1158
|
+
|
|
1159
|
+
F949H LOHMSK: DEFB 00H
|
|
1160
|
+
|
|
1161
|
+
This variable is used by the "`PAINT`" statement handler to hold the leftmost position of a LH excursion.
|
|
1162
|
+
|
|
1163
|
+
<a name="f94ah"></a><a name="lohdir"></a>
|
|
1164
|
+
|
|
1165
|
+
F94AH LOHDIR: DEFB 00H
|
|
1166
|
+
|
|
1167
|
+
This variable is used by the "`PAINT`" statement handler to hold the new paint direction required by a LH excursion.
|
|
1168
|
+
|
|
1169
|
+
<a name="f94bh"></a><a name="lohadr"></a>
|
|
1170
|
+
|
|
1171
|
+
F94BH LOHADR: DEFW 0000H
|
|
1172
|
+
|
|
1173
|
+
This variable is used by the "`PAINT`" statement handler to hold the leftmost position of a LH excursion.
|
|
1174
|
+
|
|
1175
|
+
<a name="f94dh"></a><a name="lohcnt"></a>
|
|
1176
|
+
|
|
1177
|
+
F94DH LOHCNT: DEFW 0000H
|
|
1178
|
+
|
|
1179
|
+
This variable is used by the "`PAINT`" statement handler to hold the size of a LH excursion.
|
|
1180
|
+
|
|
1181
|
+
<a name="f94fh"></a><a name="skpcnt"></a>
|
|
1182
|
+
|
|
1183
|
+
F94FH SKPCNT: DEFW 0000H
|
|
1184
|
+
|
|
1185
|
+
This variable is used by the "`PAINT`" statement handler to hold the skip count returned by the [SCANR](#scanr) standard routine.
|
|
1186
|
+
|
|
1187
|
+
<a name="f951h"></a><a name="movcnt"></a>
|
|
1188
|
+
|
|
1189
|
+
F951H MOVCNT: DEFW 0000H
|
|
1190
|
+
|
|
1191
|
+
This variable is used by the "`PAINT`" statement handler to hold the movement count returned by the [SCANR](#scanr) standard routine.
|
|
1192
|
+
|
|
1193
|
+
<a name="f953h"></a><a name="pdirec"></a>
|
|
1194
|
+
|
|
1195
|
+
F953H PDIREC: DEFB 00H
|
|
1196
|
+
|
|
1197
|
+
This variable is used by the "`PAINT`" statement handler to hold the current paint direction: 40H=Down, C0H=Up, 00H=Terminate.
|
|
1198
|
+
|
|
1199
|
+
<a name="f954h"></a><a name="lfprog"></a>
|
|
1200
|
+
|
|
1201
|
+
F954H LFPROG: DEFB 00H
|
|
1202
|
+
|
|
1203
|
+
This variable is normally zero but is set by the "`PAINT`" statement handler if there has been any leftwards progress.
|
|
1204
|
+
|
|
1205
|
+
<a name="f955h"></a><a name="rtprog"></a>
|
|
1206
|
+
|
|
1207
|
+
F955H RTPROG: DEFB 00H
|
|
1208
|
+
|
|
1209
|
+
This variable is normally zero but is set by the "`PAINT`" statement handler if there has been any rightwards progress.
|
|
1210
|
+
|
|
1211
|
+
<a name="f956h"></a><a name="mcltab"></a>
|
|
1212
|
+
|
|
1213
|
+
F956H MCLTAB: DEFW 0000H
|
|
1214
|
+
|
|
1215
|
+
This variable contains the address of the command table to be used by the macro language parser. The "`DRAW`" table is at 5D83H and the "`PLAY`" table at 752EH.
|
|
1216
|
+
|
|
1217
|
+
<a name="f958h"></a><a name="mclflg"></a>
|
|
1218
|
+
|
|
1219
|
+
F958H MCLFLG: DEFB 00H
|
|
1220
|
+
|
|
1221
|
+
This variable is zero if the macro language parser is being used by the "`DRAW`", statement handler and non-zero if it is being used by "`PLAY`".
|
|
1222
|
+
|
|
1223
|
+
<a name="f959h"></a><a name="quetab"></a>
|
|
1224
|
+
<a name="f95ah"></a>
|
|
1225
|
+
<a name="f95bh"></a>
|
|
1226
|
+
<a name="f95ch"></a>
|
|
1227
|
+
<a name="f95dh"></a>
|
|
1228
|
+
<a name="f95fh"></a>
|
|
1229
|
+
<a name="f960h"></a>
|
|
1230
|
+
<a name="f961h"></a>
|
|
1231
|
+
<a name="f962h"></a>
|
|
1232
|
+
<a name="f963h"></a>
|
|
1233
|
+
<a name="f965h"></a>
|
|
1234
|
+
<a name="f966h"></a>
|
|
1235
|
+
<a name="f967h"></a>
|
|
1236
|
+
<a name="f968h"></a>
|
|
1237
|
+
<a name="f969h"></a>
|
|
1238
|
+
<a name="f96bh"></a>
|
|
1239
|
+
<a name="f96ch"></a>
|
|
1240
|
+
<a name="f96dh"></a>
|
|
1241
|
+
<a name="f96eh"></a>
|
|
1242
|
+
<a name="f96fh"></a>
|
|
1243
|
+
|
|
1244
|
+
```
|
|
1245
|
+
F959H QUETAB: DEFB 00H ; AQ Put position
|
|
1246
|
+
F95AH DEFB 00H ; AQ Get position
|
|
1247
|
+
F95BH DEFB 00H ; AQ Putback flag
|
|
1248
|
+
F95CH DEFB 7FH ; AQ Size
|
|
1249
|
+
F95DH DEFW F975H ; AQ Address
|
|
1250
|
+
|
|
1251
|
+
F95FH DEFB 00H ; BQ Put position
|
|
1252
|
+
F960H DEFB 00H ; BQ Get position
|
|
1253
|
+
F961H DEFB 00H ; BQ Putback flag
|
|
1254
|
+
F962H DEFB 7FH ; BQ Size
|
|
1255
|
+
F963H DEFW F9F5H ; BQ Address
|
|
1256
|
+
|
|
1257
|
+
F965H DEFB 00H ; CQ Put position
|
|
1258
|
+
F966H DEFB 00H ; CQ Get position
|
|
1259
|
+
F967H DEFB 00H ; CQ Putback flag
|
|
1260
|
+
F968H DEFB 7FH ; CQ Size
|
|
1261
|
+
F969H DEFW FA75H ; CQ Address
|
|
1262
|
+
|
|
1263
|
+
F96BH DEFB 00H ; RQ Put position
|
|
1264
|
+
F96CH DEFB 00H ; RQ Get position
|
|
1265
|
+
F96DH DEFB 00H ; RQ Putback flag
|
|
1266
|
+
F96EH DEFB 00H ; RQ Size
|
|
1267
|
+
F96FH DEFW 0000H ; RQ Address
|
|
1268
|
+
```
|
|
1269
|
+
|
|
1270
|
+
These twenty-four variables form the control blocks for the three music queues ([VOICAQ](#voicaq), [VOICBQ](#voicbq) and [VOICCQ](#voiccq)) and the RS232 queue. The three music control blocks are initialized by the [GICINI](#gicini) standard routine and thereafter maintained by the interrupt handler and the [PUTQ](#putq) standard routine. The RS232 control block is unused in the current MSX ROM.
|
|
1271
|
+
|
|
1272
|
+
<a name="f971h"></a><a name="quebak"></a>
|
|
1273
|
+
<a name="f972h"></a>
|
|
1274
|
+
<a name="f973h"></a>
|
|
1275
|
+
<a name="f974h"></a>
|
|
1276
|
+
|
|
1277
|
+
```
|
|
1278
|
+
F971H QUEBAK: DEFB 00H ; AQ Putback character
|
|
1279
|
+
F972H DEFB 00H ; BQ Putback character
|
|
1280
|
+
F973H DEFB 00H ; CQ Putback character
|
|
1281
|
+
F974H DEFB 00H ; RQ Putback character
|
|
1282
|
+
```
|
|
1283
|
+
|
|
1284
|
+
These four variables are used to hold any unwanted character returned to the associated queue. Although the putback facility is implemented in the MSX ROM it is currently unused.
|
|
1285
|
+
|
|
1286
|
+
<a name="f975h"></a><a name="voicaq"></a>
|
|
1287
|
+
<a name="f9f5h"></a><a name="voicbq"></a>
|
|
1288
|
+
<a name="fa75h"></a><a name="voiccq"></a>
|
|
1289
|
+
<a name="faf5h"></a><a name="rs2iq"></a>
|
|
1290
|
+
|
|
1291
|
+
```
|
|
1292
|
+
F975H VOICAQ: DEFS 128 ; Voice A queue
|
|
1293
|
+
F9F5H VOICBQ: DEFS 128 ; Voice B queue
|
|
1294
|
+
FA75H VOICCQ: DEFS 128 ; Voice C queue
|
|
1295
|
+
FAF5H RS2IQ: DEFS 64 ; RS232 queue
|
|
1296
|
+
```
|
|
1297
|
+
|
|
1298
|
+
These four buffers contain the three music queues and the RS232 queue, the latter is unused.
|
|
1299
|
+
|
|
1300
|
+
<a name="fb35h"></a><a name="prscnt"></a>
|
|
1301
|
+
|
|
1302
|
+
FB35H PRSCNT: DEFB 00H
|
|
1303
|
+
|
|
1304
|
+
This variable is used by the "`PLAY`" statement handler to count the number of completed operand strings. Bit 7 is also set after each of the three operands has been parsed to prevent repeated activation of the [STRTMS](#strtms) standard routine.
|
|
1305
|
+
|
|
1306
|
+
<a name="fb36h"></a><a name="savsp"></a>
|
|
1307
|
+
|
|
1308
|
+
FB36H SAVSP: DEFW 0000H
|
|
1309
|
+
|
|
1310
|
+
This variable is used by the "`PLAY`" statement handler to save the Z80 SP before control transfers to the macro language parser. Its value is compared with the SP on return to determine whether any data has been left on the stack because of a queue-full termination by the parser.
|
|
1311
|
+
|
|
1312
|
+
<a name="fb38h"></a><a name="voicen"></a>
|
|
1313
|
+
|
|
1314
|
+
FB38H VOICEN: DEFB 00H
|
|
1315
|
+
|
|
1316
|
+
This variable contains the current voice number being processed by the "`PLAY`" statement handler. The values 0, 1 and 2 correspond to PSG channels A, B and C.
|
|
1317
|
+
|
|
1318
|
+
<a name="fb39h"></a><a name="savvol"></a>
|
|
1319
|
+
|
|
1320
|
+
FB39H SAVVOL: DEFW 0000H
|
|
1321
|
+
|
|
1322
|
+
This variable is used by the "`PLAY`" statement "`R`" command handler to save the current volume setting while a zero-amplitude rest is generated.
|
|
1323
|
+
|
|
1324
|
+
<a name="fb3bh"></a><a name="mcllen"></a>
|
|
1325
|
+
|
|
1326
|
+
FB3BH MCLLEN: DEFB 00H
|
|
1327
|
+
|
|
1328
|
+
This variable is used by the macro language parser to hold the length of the string operand being parsed.
|
|
1329
|
+
|
|
1330
|
+
<a name="fb3ch"></a><a name="mclptr"></a>
|
|
1331
|
+
|
|
1332
|
+
FB3CH MCLPTR: DEFW 0000H
|
|
1333
|
+
|
|
1334
|
+
This variable is used by the macro language parser to hold the address of the string operand being parsed.
|
|
1335
|
+
|
|
1336
|
+
<a name="fb3eh"></a><a name="queuen"></a>
|
|
1337
|
+
|
|
1338
|
+
FB3EH QUEUEN: DEFB 00H
|
|
1339
|
+
|
|
1340
|
+
This variable is used by the interrupt handler to hold the number of the music queue currently being processed. The values 0, 1 and 2 correspond to PSG channels A, B and C.
|
|
1341
|
+
|
|
1342
|
+
<a name="fb3fh"></a><a name="musicf"></a>
|
|
1343
|
+
|
|
1344
|
+
FB3FH MUSICF: DEFB 00H
|
|
1345
|
+
|
|
1346
|
+
This variable contains three bit flags set by the [STRTMS](#strtms) standard routine to initiate processing of a music queue by the interrupt handler. Bits 0, 1 and 2 correspond to [VOICAQ](#voicaq), [VOICBQ](#voicbq) and [VOICCQ](#voiccq).
|
|
1347
|
+
|
|
1348
|
+
<a name="fb40h"></a><a name="plycnt"></a>
|
|
1349
|
+
|
|
1350
|
+
FB40H PLYCNT: DEFB 00H
|
|
1351
|
+
|
|
1352
|
+
This variable is used by the [STRTMS](#strtms) standard routine to hold the number of "`PLAY`" statement sequences currently held in the music queues. It is examined when all three end of queue marks have been found for one sequence to determine whether dequeueing should be restarted.
|
|
1353
|
+
|
|
1354
|
+
<a name="fb41h"></a><a name="vcba"></a>
|
|
1355
|
+
<a name="fb43h"></a>
|
|
1356
|
+
<a name="fb44h"></a>
|
|
1357
|
+
<a name="fb46h"></a>
|
|
1358
|
+
<a name="fb48h"></a>
|
|
1359
|
+
<a name="fb49h"></a>
|
|
1360
|
+
<a name="fb50h"></a>
|
|
1361
|
+
<a name="fb51h"></a>
|
|
1362
|
+
<a name="fb52h"></a>
|
|
1363
|
+
<a name="fb53h"></a>
|
|
1364
|
+
<a name="fb54h"></a>
|
|
1365
|
+
<a name="fb56h"></a>
|
|
1366
|
+
|
|
1367
|
+
```
|
|
1368
|
+
FB41H VCBA: DEFW 0000H ; Duration counter
|
|
1369
|
+
FB43H DEFB 00H ; String length
|
|
1370
|
+
FB44H DEFW 0000H ; String address
|
|
1371
|
+
FB46H DEFW 0000H ; Stack data address
|
|
1372
|
+
FB48H DEFB 00H ; Music packet length
|
|
1373
|
+
FB49H DEFS 7 ; Music packet
|
|
1374
|
+
FB50H DEFB 04H ; Octave
|
|
1375
|
+
FB51H DEFB 04H ; Length
|
|
1376
|
+
FB52H DEFB 78H ; Tempo
|
|
1377
|
+
FB53H DEFB 88H ; Volume
|
|
1378
|
+
FB54H DEFW 00FFH ; Envelope period
|
|
1379
|
+
FB56H DEFS 16 ; Space for stack data
|
|
1380
|
+
```
|
|
1381
|
+
|
|
1382
|
+
This thirty-seven byte buffer is used by the "`PLAY`" statement handler to hold the current parameters for voice A.
|
|
1383
|
+
|
|
1384
|
+
<a name="fb66h"></a><a name="vcbb"></a>
|
|
1385
|
+
|
|
1386
|
+
FB66H VCBB: DEFS 37
|
|
1387
|
+
|
|
1388
|
+
This buffer is used by the "`PLAY`" statement handler to hold the current parameters for voice B, its structure is the same as [VCBA](#vcba).
|
|
1389
|
+
|
|
1390
|
+
<a name="fb8bh"></a><a name="vcbc"></a>
|
|
1391
|
+
|
|
1392
|
+
FB8BH VCBC: DEFS 37
|
|
1393
|
+
|
|
1394
|
+
This buffer is used by the "`PLAY`" statement handler to hold the current parameters for voice C, its structure is the same as [VCBA](#vcba).
|
|
1395
|
+
|
|
1396
|
+
<a name="fbb0h"></a><a name="enstop"></a>
|
|
1397
|
+
|
|
1398
|
+
FBB0H ENSTOP: DEFB 00H
|
|
1399
|
+
|
|
1400
|
+
This variable determines whether the interrupt handler will execute a warm start to the Interpreter upon detecting the keys CODE, GRAPH, CTRL and SHIFT depressed together: 00H=Disable, NZ=Enable.
|
|
1401
|
+
|
|
1402
|
+
<a name="fbb1h"></a><a name="basrom"></a>
|
|
1403
|
+
|
|
1404
|
+
FBB1H BASROM: DEFB 00H
|
|
1405
|
+
|
|
1406
|
+
This variable determines whether the [ISCNTC](#iscntc) and [INLIN](#inlin) standard routines will respond to the CTRL-STOP key: 00H=Enable, NZ=Disable. It is used to prevent termination of a BASIC ROM located during the power-up ROM search.
|
|
1407
|
+
|
|
1408
|
+
<a name="fbb2h"></a><a name="linttb"></a>
|
|
1409
|
+
|
|
1410
|
+
FBB2H LINTTB: DEFS 24
|
|
1411
|
+
|
|
1412
|
+
Each of these twenty-four variables is normally non-zero but is zeroed if the contents of the corresponding screen row have overflowed onto the next row. They are maintained by the BIOS but only actually used by the [INLIN](#inlin) standard routine (the screen editor) to discriminate between logical and physical lines.
|
|
1413
|
+
|
|
1414
|
+
<a name="fbcah"></a><a name="fstpos"></a>
|
|
1415
|
+
|
|
1416
|
+
FBCAH FSTPOS: DEFW 0000H
|
|
1417
|
+
|
|
1418
|
+
This variable is used to hold the cursor coordinates upon entry to the [INLIN](#inlin) standard routine. Its function is to restrict the extent of backtracking performed when the text is collected from the screen at termination.
|
|
1419
|
+
|
|
1420
|
+
<a name="fbcch"></a><a name="cursav"></a>
|
|
1421
|
+
|
|
1422
|
+
FBCCH CURSAV: DEFB 00H
|
|
1423
|
+
|
|
1424
|
+
This variable is used to hold the screen character replaced by the text cursor.
|
|
1425
|
+
|
|
1426
|
+
<a name="fbcdh"></a><a name="fnkswi"></a>
|
|
1427
|
+
|
|
1428
|
+
FBCDH FNKSWI: DEFB 00H
|
|
1429
|
+
|
|
1430
|
+
This variable is used by the [CHSNS](#chsns) standard routine to determine whether the shifted or unshifted function keys are currently displayed: 00H=Shifted, 01H=Unshifted.
|
|
1431
|
+
|
|
1432
|
+
<a name="fbceh"></a><a name="fnkflg"></a>
|
|
1433
|
+
|
|
1434
|
+
FBCEH FNKFLG: DEFS 10
|
|
1435
|
+
|
|
1436
|
+
Each of these ten variables is normally zero but is set to 01H if the associated function key has been turned on by a "`KEY(n) ON`" statement. They are used by the interrupt handler to determine whether, in program mode only, it should return a character string or update the associated entry in [TRPTBL](#trptbl).
|
|
1437
|
+
|
|
1438
|
+
<a name="fbd8h"></a><a name="ongsbf"></a>
|
|
1439
|
+
|
|
1440
|
+
FBD8H ONGSBF: DEFB 00H
|
|
1441
|
+
|
|
1442
|
+
This variable is normally zero but is incremented by the interrupt handler whenever a device has achieved the conditions necessary to generate a program interrupt. It is used by the Runloop to determine whether any program interrupts are pending without having to search [TRPTBL](#trptbl).
|
|
1443
|
+
|
|
1444
|
+
<a name="fbd9h"></a><a name="clikfl"></a>
|
|
1445
|
+
|
|
1446
|
+
FBD9H CLIKFL: DEFB 00H
|
|
1447
|
+
|
|
1448
|
+
This variable is used internally by the interrupt handler to prevent spurious key clicks when returning multiple characters from a single key depression such as a function key.
|
|
1449
|
+
|
|
1450
|
+
<a name="fbdah"></a><a name="oldkey"></a>
|
|
1451
|
+
|
|
1452
|
+
FBDAH OLDKEY: DEFS 11
|
|
1453
|
+
|
|
1454
|
+
This buffer is used by the interrupt handler to hold the previous state of the keyboard matrix, each byte contains one row of keys starting with row 0.
|
|
1455
|
+
|
|
1456
|
+
<a name="fbe5h"></a><a name="newkey"></a>
|
|
1457
|
+
|
|
1458
|
+
FBE5H NEWKEY: DEFS 11
|
|
1459
|
+
|
|
1460
|
+
This buffer is used by the interrupt handler to hold the current state of the keyboard matrix. Key transitions are detected by comparison with the contents of [OLDKEY](#oldkey) after which [OLDKEY](#oldkey) is updated with the current state.
|
|
1461
|
+
|
|
1462
|
+
<a name="fbf0h"></a><a name="keybuf"></a>
|
|
1463
|
+
|
|
1464
|
+
FBF0H KEYBUF: DEFS 40
|
|
1465
|
+
|
|
1466
|
+
This buffer contains the decoded keyboard characters produced by the interrupt handler. Note that the buffer is organized as a circular queue driven by [GETPNT](#getpnt) and [PUTPNT](#putpnt) and consequently has no fixed starting point.
|
|
1467
|
+
|
|
1468
|
+
<a name="fc18h"></a><a name="linwrk"></a>
|
|
1469
|
+
|
|
1470
|
+
FC18H LINWRK: DEFS 40
|
|
1471
|
+
|
|
1472
|
+
This buffer is used by the BIOS to hold a complete line of screen characters.
|
|
1473
|
+
|
|
1474
|
+
<a name="fc40h"></a><a name="patwrk"></a>
|
|
1475
|
+
|
|
1476
|
+
FC40H PATWRK: DEFS 8
|
|
1477
|
+
|
|
1478
|
+
This buffer is used by the BIOS to hold an 8x8 pixel pattern.
|
|
1479
|
+
|
|
1480
|
+
<a name="fc48h"></a><a name="bottom"></a>
|
|
1481
|
+
|
|
1482
|
+
FC48H BOTTOM: DEFW 8000H
|
|
1483
|
+
|
|
1484
|
+
This variable contains the address of the lowest RAM location used by the Interpreter. Its value is set at power-up and thereafter unaltered.
|
|
1485
|
+
|
|
1486
|
+
<a name="fc4ah"></a><a name="himem"></a>
|
|
1487
|
+
|
|
1488
|
+
FC4AH HIMEM: DEFW F380H
|
|
1489
|
+
|
|
1490
|
+
This variable contains the address of the byte following the highest RAM location used by the Interpreter. Its value is set at power-up and thereafter only altered by the "`CLEAR`" statement.
|
|
1491
|
+
|
|
1492
|
+
<a name="fc4ch"></a><a name="trptbl"></a>
|
|
1493
|
+
<a name="fc4fh"></a>
|
|
1494
|
+
<a name="fc52h"></a>
|
|
1495
|
+
<a name="fc55h"></a>
|
|
1496
|
+
<a name="fc58h"></a>
|
|
1497
|
+
<a name="fc5bh"></a>
|
|
1498
|
+
<a name="fc5eh"></a>
|
|
1499
|
+
<a name="fc61h"></a>
|
|
1500
|
+
<a name="fc64h"></a>
|
|
1501
|
+
<a name="fc67h"></a>
|
|
1502
|
+
<a name="fc6ah"></a>
|
|
1503
|
+
<a name="fc6dh"></a>
|
|
1504
|
+
<a name="fc70h"></a>
|
|
1505
|
+
<a name="fc73h"></a>
|
|
1506
|
+
<a name="fc76h"></a>
|
|
1507
|
+
<a name="fc79h"></a>
|
|
1508
|
+
<a name="fc7ch"></a>
|
|
1509
|
+
<a name="fc7fh"></a>
|
|
1510
|
+
<a name="fc82h"></a>
|
|
1511
|
+
<a name="fc85h"></a>
|
|
1512
|
+
<a name="fc88h"></a>
|
|
1513
|
+
<a name="fc8bh"></a>
|
|
1514
|
+
<a name="fc8eh"></a>
|
|
1515
|
+
<a name="fc91h"></a>
|
|
1516
|
+
<a name="fc94h"></a>
|
|
1517
|
+
<a name="fc97h"></a>
|
|
1518
|
+
|
|
1519
|
+
```
|
|
1520
|
+
FC4CH TRPTBL: DEFS 3 ; KEY 1
|
|
1521
|
+
FC4FH DEFS 3 ; KEY 2
|
|
1522
|
+
FC52H DEFS 3 ; KEY 3
|
|
1523
|
+
FC55H DEFS 3 ; KEY 4
|
|
1524
|
+
FC58H DEFS 3 ; KEY 5
|
|
1525
|
+
FC5BH DEFS 3 ; KEY 6
|
|
1526
|
+
FC5EH DEFS 3 ; KEY 7
|
|
1527
|
+
FC61H DEFS 3 ; KEY 8
|
|
1528
|
+
FC64H DEFS 3 ; KEY 9
|
|
1529
|
+
FC67H DEFS 3 ; KEY 10
|
|
1530
|
+
FC6AH DEFS 3 ; STOP
|
|
1531
|
+
FC6DH DEFS 3 ; SPRITE
|
|
1532
|
+
FC70H DEFS 3 ; STRIG 0
|
|
1533
|
+
FC73H DEFS 3 ; STRIG 1
|
|
1534
|
+
FC76H DEFS 3 ; STRIG 2
|
|
1535
|
+
FC79H DEFS 3 ; STRIG 3
|
|
1536
|
+
FC7CH DEFS 3 ; STRIG 4
|
|
1537
|
+
FC7FH DEFS 3 ; INTERVAL
|
|
1538
|
+
FC82H DEFS 3 ; Unused
|
|
1539
|
+
FC85H DEFS 3 ; Unused
|
|
1540
|
+
FC88H DEFS 3 ; Unused
|
|
1541
|
+
FC8BH DEFS 3 ; Unused
|
|
1542
|
+
FC8EH DEFS 3 ; Unused
|
|
1543
|
+
FC91H DEFS 3 ; Unused
|
|
1544
|
+
FC94H DEFS 3 ; Unused
|
|
1545
|
+
FC97H DEFS 3 ; Unused
|
|
1546
|
+
```
|
|
1547
|
+
|
|
1548
|
+
These twenty-six three byte variables hold the current state of the interrupt generating devices. The first byte of each entry contains the device status (bit 0=On, bit 1=Stop, bit 2=Event active) and is updated by the interrupt handler, the Runloop interrupt processor and the "`DEVICE 0=ON/OFF/STOP`" and "`RETURN`" statement handlers. The remaining two bytes of each entry are set by the "`ON DEVICE GOSUB`" statement handler and contain the address of the program line to execute upon a program interrupt.
|
|
1549
|
+
|
|
1550
|
+
<a name="fc9ah"></a><a name="rtycnt"></a>
|
|
1551
|
+
|
|
1552
|
+
FC9AH RTYCNT: DEFB 00H
|
|
1553
|
+
|
|
1554
|
+
This variable is unused by the current MSX ROM.
|
|
1555
|
+
|
|
1556
|
+
<a name="fc9bh"></a><a name="intflg"></a>
|
|
1557
|
+
|
|
1558
|
+
FC9BH INTFLG: DEFB 00H
|
|
1559
|
+
|
|
1560
|
+
This variable is normally zero but is set to 03H or 04H if the CTRL-STOP or STOP keys are detected by the interrupt handler.
|
|
1561
|
+
|
|
1562
|
+
<a name="fc9ch"></a><a name="pady"></a>
|
|
1563
|
+
|
|
1564
|
+
FC9CH PADY: DEFB 00H
|
|
1565
|
+
|
|
1566
|
+
This variable contains the Y coordinate of the last point detected by a touchpad.
|
|
1567
|
+
|
|
1568
|
+
<a name="fc9dh"></a><a name="padx"></a>
|
|
1569
|
+
|
|
1570
|
+
FC9DH PADX: DEFB 00H
|
|
1571
|
+
|
|
1572
|
+
This variable contains the X coordinate of the last point detected by a touchpad.
|
|
1573
|
+
|
|
1574
|
+
<a name="fc9eh"></a><a name="jiffy"></a>
|
|
1575
|
+
|
|
1576
|
+
FC9EH JIFFY: DEFW 0000H
|
|
1577
|
+
|
|
1578
|
+
This variable is continually incremented by the interrupt handler. Its value may be set or read by the "`TIME`" statement or function.
|
|
1579
|
+
|
|
1580
|
+
<a name="fca0h"></a><a name="intval"></a>
|
|
1581
|
+
|
|
1582
|
+
FCA0H INTVAL: DEFW 0000H
|
|
1583
|
+
|
|
1584
|
+
This variable holds the interval duration set by the "`ON INTERVAL`" statement handler.
|
|
1585
|
+
|
|
1586
|
+
<a name="fca2h"></a><a name="intcnt"></a>
|
|
1587
|
+
|
|
1588
|
+
FCA2H INTCNT: DEFW 0000H
|
|
1589
|
+
|
|
1590
|
+
This variable is continually decremented by the interrupt handler. When zero is reached its value is reset from [INTVAL](#intval) and, if applicable, a program interrupt generated. Note that this variable always counts irrespective of whether an "`INTERVAL ON`" statement is active.
|
|
1591
|
+
|
|
1592
|
+
<a name="fca4h"></a><a name="lowlim"></a>
|
|
1593
|
+
|
|
1594
|
+
FCA4H LOWLIM: DEFB 31H
|
|
1595
|
+
|
|
1596
|
+
This variable is used to hold the minimum allowable start bit duration as determined by the [TAPION](#tapion) standard routine.
|
|
1597
|
+
|
|
1598
|
+
<a name="fca5h"></a><a name="winwid"></a>
|
|
1599
|
+
|
|
1600
|
+
FCA5H WINWID: DEFB 22H
|
|
1601
|
+
|
|
1602
|
+
This variable is used to hold the LO/HI cycle discrimination duration as determined by the [TAPION](#tapion) standard routine.
|
|
1603
|
+
|
|
1604
|
+
<a name="fca6h"></a><a name="grphed"></a>
|
|
1605
|
+
|
|
1606
|
+
FCA6H GRPHED: DEFB 00H
|
|
1607
|
+
|
|
1608
|
+
This variable is normally zero but is set to 01H by the [CNVCHR](#cnvchr) standard routine upon detection of a graphic header code.
|
|
1609
|
+
|
|
1610
|
+
<a name="fca7h"></a><a name="esccnt"></a>
|
|
1611
|
+
|
|
1612
|
+
FCA7H ESCCNT: DEFB 00H
|
|
1613
|
+
|
|
1614
|
+
This variable is used by the [CHPUT](#chput) standard routine ESC sequence processor to count escape parameters.
|
|
1615
|
+
|
|
1616
|
+
<a name="fca8h"></a><a name="insflg"></a>
|
|
1617
|
+
|
|
1618
|
+
FCA8H INSFLG: DEFB 00H
|
|
1619
|
+
|
|
1620
|
+
This variable is normally zero but is set to FFH by the [INLIN](#inlin) standard routine when insert mode is on.
|
|
1621
|
+
|
|
1622
|
+
<a name="fca9h"></a><a name="csrsw"></a>
|
|
1623
|
+
|
|
1624
|
+
FCA9H CSRSW: DEFB 00H
|
|
1625
|
+
|
|
1626
|
+
If this variable is zero the cursor is only displayed while the [CHGET](#chget) standard routine is waiting for a keyboard character. If it is non-zero the cursor is permanently displayed via the [CHPUT](#chput) standard routine.
|
|
1627
|
+
|
|
1628
|
+
<a name="fcaah"></a><a name="cstyle"></a>
|
|
1629
|
+
|
|
1630
|
+
FCAAH CSTYLE: DEFB 00H
|
|
1631
|
+
|
|
1632
|
+
This variable determines the cursor style: 00H=Block, NZ=Underline.
|
|
1633
|
+
|
|
1634
|
+
<a name="fcabh"></a><a name="capst"></a>
|
|
1635
|
+
|
|
1636
|
+
FCABH CAPST: DEFB 00H
|
|
1637
|
+
|
|
1638
|
+
This variable is used by the interrupt handler to hold the current caps lock status: 00H=Off, NZ=On.
|
|
1639
|
+
|
|
1640
|
+
<a name="fcach"></a><a name="kanast"></a>
|
|
1641
|
+
|
|
1642
|
+
FCACH KANAST: DEFB 00H
|
|
1643
|
+
|
|
1644
|
+
This variable is used to hold the keyboard Kana lock status on Japanese machines and the DEAD key status on European machines.
|
|
1645
|
+
|
|
1646
|
+
<a name="fcadh"></a><a name="kanamd"></a>
|
|
1647
|
+
|
|
1648
|
+
FCADH KANAMD: DEFB 00H
|
|
1649
|
+
|
|
1650
|
+
This variable holds a keyboard mode on Japanese machines only.
|
|
1651
|
+
|
|
1652
|
+
<a name="fcaeh"></a><a name="flbmem"></a>
|
|
1653
|
+
|
|
1654
|
+
FCAEH FLBMEM: DEFB 00H
|
|
1655
|
+
|
|
1656
|
+
This variable is set by the file I/O error generators but is otherwise unused.
|
|
1657
|
+
|
|
1658
|
+
<a name="fcafh"></a><a name="scrmod"></a>
|
|
1659
|
+
|
|
1660
|
+
FCAFH SCRMOD: DEFB 00H
|
|
1661
|
+
|
|
1662
|
+
This variable contains the current screen mode: 0=[40x24 Text Mode](#40x24_text_mode), 1=[32x24 Text Mode](#32x24_text_mode), 2=[Graphics Mode](#graphics_mode), 3=[Multicolour Mode](#multicolour_mode).
|
|
1663
|
+
|
|
1664
|
+
<a name="fcb0h"></a><a name="oldscr"></a>
|
|
1665
|
+
|
|
1666
|
+
FCB0H OLDSCR: DEFB 00H
|
|
1667
|
+
|
|
1668
|
+
This variable holds the screen mode of the last text mode set.
|
|
1669
|
+
|
|
1670
|
+
<a name="fcb1h"></a><a name="casprv"></a>
|
|
1671
|
+
|
|
1672
|
+
FCB1H CASPRV: DEFB 00H
|
|
1673
|
+
|
|
1674
|
+
This variable is used to hold any character returned to an I/O buffer by the cassette putback function.
|
|
1675
|
+
|
|
1676
|
+
<a name="fcb2h"></a><a name="bdratr"></a>
|
|
1677
|
+
|
|
1678
|
+
FCB2H BDRATR: DEFB 00H
|
|
1679
|
+
|
|
1680
|
+
This variable contains the boundary colour for the "`PAINT`" statement handler. Its value is set by the [PNTINI](#pntini) standard routine and used by the [SCANR](#scanr) and [SCANL](#scanl) standard routines.
|
|
1681
|
+
|
|
1682
|
+
<a name="fcb3h"></a><a name="gxpos"></a>
|
|
1683
|
+
|
|
1684
|
+
FCB3H GXPOS: DEFW 0000H
|
|
1685
|
+
|
|
1686
|
+
This variable is used for temporary storage of a graphics X coordinate.
|
|
1687
|
+
|
|
1688
|
+
<a name="fcb5h"></a><a name="gypos"></a>
|
|
1689
|
+
|
|
1690
|
+
FCB5H GYPOS: DEFW 0000H
|
|
1691
|
+
|
|
1692
|
+
This variable is used for temporary storage of a graphics Y coordinate.
|
|
1693
|
+
|
|
1694
|
+
<a name="fcb7h"></a><a name="grpacx"></a>
|
|
1695
|
+
|
|
1696
|
+
FCB7H GRPACX: DEFW 0000H
|
|
1697
|
+
|
|
1698
|
+
This variable contains the current graphics X coordinate for the [GRPPRT](#grpprt) standard routine.
|
|
1699
|
+
|
|
1700
|
+
<a name="fcb9h"></a><a name="grpacy"></a>
|
|
1701
|
+
|
|
1702
|
+
FCB9H GRPACY: DEFW 0000H
|
|
1703
|
+
|
|
1704
|
+
This variable contains the current graphics Y coordinate for the [GRPPRT](#grpprt) standard routine.
|
|
1705
|
+
|
|
1706
|
+
<a name="fcbbh"></a><a name="drwflg"></a>
|
|
1707
|
+
|
|
1708
|
+
FCBBH DRWFLG: DEFB 00H
|
|
1709
|
+
|
|
1710
|
+
Bits 6 and 7 of this variable are set by the "`DRAW`" statement "`N`" and "`B`" command handlers to turn the associated mode on.
|
|
1711
|
+
|
|
1712
|
+
<a name="fcbch"></a><a name="drwscl"></a>
|
|
1713
|
+
|
|
1714
|
+
FCBCH DRWSCL: DEFB 00H
|
|
1715
|
+
|
|
1716
|
+
This variable is used by the "`DRAW`" statement "`S`" command handler to hold the current scale factor.
|
|
1717
|
+
|
|
1718
|
+
<a name="fcbdh"></a><a name="drwang"></a>
|
|
1719
|
+
|
|
1720
|
+
FCBDH DRWANG: DEFB 00H
|
|
1721
|
+
|
|
1722
|
+
This variable is used by the "`DRAW`" statement "`A`" command handler to hold the current angle.
|
|
1723
|
+
|
|
1724
|
+
<a name="fcbeh"></a><a name="runbnf"></a>
|
|
1725
|
+
|
|
1726
|
+
FCBEH RUNBNF: DEFB 00H
|
|
1727
|
+
|
|
1728
|
+
This variable is normally zero but is set by the "`BLOAD`" statement handler when an auto-run "`R`" parameter is specified.
|
|
1729
|
+
|
|
1730
|
+
<a name="fcbfh"></a><a name="savent"></a>
|
|
1731
|
+
|
|
1732
|
+
FCBFH SAVENT: DEFW 0000H
|
|
1733
|
+
|
|
1734
|
+
This variable contains the "`BSAVE`" and "`BLOAD`" entry address.
|
|
1735
|
+
|
|
1736
|
+
<a name="fcc1h"></a><a name="exptbl"></a>
|
|
1737
|
+
<a name="fcc2h"></a>
|
|
1738
|
+
<a name="fcc3h"></a>
|
|
1739
|
+
<a name="fcc4h"></a>
|
|
1740
|
+
|
|
1741
|
+
```
|
|
1742
|
+
FCC1H EXPTBL: DEFB 00H ; Primary Slot 0
|
|
1743
|
+
FCC2H DEFB 00H ; Primary Slot 1
|
|
1744
|
+
FCC3H DEFB 00H ; Primary Slot 2
|
|
1745
|
+
FCC4H DEFB 00H ; Primary Slot 3
|
|
1746
|
+
```
|
|
1747
|
+
|
|
1748
|
+
Each of these four variables is normally zero but is set to 80H during the power-up RAM search if the associated Primary Slot is found to be expanded.
|
|
1749
|
+
|
|
1750
|
+
<a name="fcc5h"></a><a name="slttbl"></a>
|
|
1751
|
+
<a name="fcc6h"></a>
|
|
1752
|
+
<a name="fcc7h"></a>
|
|
1753
|
+
<a name="fcc8h"></a>
|
|
1754
|
+
|
|
1755
|
+
```
|
|
1756
|
+
FCC5H SLTTBL: DEFB 00H ; Primary Slot 0
|
|
1757
|
+
FCC6H DEFB 00H ; Primary Slot 1
|
|
1758
|
+
FCC7H DEFB 00H ; Primary Slot 2
|
|
1759
|
+
FCC8H DEFB 00H ; Primary Slot 3
|
|
1760
|
+
```
|
|
1761
|
+
|
|
1762
|
+
These four variables duplicate the contents of the four possible Secondary Slot Registers. The contents of each variable should only be regarded as valid if [EXPTBL](#exptbl) shows the associated Primary Slot to be expanded.
|
|
1763
|
+
|
|
1764
|
+
<a name="fcc9h"></a><a name="sltatr"></a>
|
|
1765
|
+
<a name="fccdh"></a>
|
|
1766
|
+
<a name="fcd1h"></a>
|
|
1767
|
+
<a name="fcd5h"></a>
|
|
1768
|
+
<a name="fcd9h"></a>
|
|
1769
|
+
<a name="fcddh"></a>
|
|
1770
|
+
<a name="fce1h"></a>
|
|
1771
|
+
<a name="fce5h"></a>
|
|
1772
|
+
<a name="fce9h"></a>
|
|
1773
|
+
<a name="fcedh"></a>
|
|
1774
|
+
<a name="fcf1h"></a>
|
|
1775
|
+
<a name="fcf5h"></a>
|
|
1776
|
+
<a name="fcf9h"></a>
|
|
1777
|
+
<a name="fcfdh"></a>
|
|
1778
|
+
<a name="fd01h"></a>
|
|
1779
|
+
<a name="fd05h"></a>
|
|
1780
|
+
|
|
1781
|
+
```
|
|
1782
|
+
FCC9H SLTATR: DEFS 4 ; PS0, SS0
|
|
1783
|
+
FCCDH DEFS 4 ; PS0, SS1
|
|
1784
|
+
FCD1H DEFS 4 ; PS0, SS2
|
|
1785
|
+
FCD5H DEFS 4 ; PS0, SS3
|
|
1786
|
+
|
|
1787
|
+
FCD9H DEFS 4 ; PS1, SS0
|
|
1788
|
+
FCDDH DEFS 4 ; PS1, SS1
|
|
1789
|
+
FCE1H DEFS 4 ; PS1, SS2
|
|
1790
|
+
FCE5H DEFS 4 ; PS1, SS3
|
|
1791
|
+
|
|
1792
|
+
FCE9H DEFS 4 ; PS2, SS0
|
|
1793
|
+
FCEDH DEFS 4 ; PS2, SS1
|
|
1794
|
+
FCF1H DEFS 4 ; PS2, SS2
|
|
1795
|
+
FCF5H DEFS 4 ; PS2, SS3
|
|
1796
|
+
|
|
1797
|
+
FCF9H DEFS 4 ; PS3, SS0
|
|
1798
|
+
FCFDH DEFS 4 ; PS3, SS1
|
|
1799
|
+
FD01H DEFS 4 ; PS3, SS2
|
|
1800
|
+
FD05H DEFS 4 ; PS3, SS3
|
|
1801
|
+
```
|
|
1802
|
+
|
|
1803
|
+
These sixty-four variables contain the attributes of any extension ROMs found during the power-up ROM search. The characteristics of each 16 KB ROM are encoded into a single byte so four bytes are required for each possible slot. The encoding is:
|
|
1804
|
+
|
|
1805
|
+
```
|
|
1806
|
+
Bit 7 set=BASIC program
|
|
1807
|
+
Bit 6 set=Device handler
|
|
1808
|
+
Bit 5 set=Statement handler
|
|
1809
|
+
```
|
|
1810
|
+
|
|
1811
|
+
Note that the entries for page 0 (0000H to 3FFFH) and page 3 (C000H to FFFFH) will always be zero as only page 1 (4000H to 7FFFH) and page 2 (8000H to BFFFH) are actually examined. The MSX convention is that machine code extension ROMs are placed in page 1 and BASIC program ROMs in page 2.
|
|
1812
|
+
|
|
1813
|
+
<a name="fd09h"></a><a name="sltwrk"></a>
|
|
1814
|
+
|
|
1815
|
+
FD09H SLTWRK: DEFS 128
|
|
1816
|
+
|
|
1817
|
+
This buffer provides two bytes of local workspace for each of the sixty-four possible extension ROMs.
|
|
1818
|
+
|
|
1819
|
+
<a name="fd89h"></a><a name="procnm"></a>
|
|
1820
|
+
|
|
1821
|
+
FD89H PROCNM: DEFS 16
|
|
1822
|
+
|
|
1823
|
+
This buffer is used to hold a device or statement name for examination by an extension ROM.
|
|
1824
|
+
|
|
1825
|
+
<a name="fd99h"></a><a name="device"></a>
|
|
1826
|
+
|
|
1827
|
+
FD99H DEVICE: DEFB 00H
|
|
1828
|
+
|
|
1829
|
+
This variable is used to pass a device code, from 0 to 3, to an extension ROM.
|
|
1830
|
+
|
|
1831
|
+
<a name="the_hooks"></a>
|
|
1832
|
+
## The Hooks
|
|
1833
|
+
|
|
1834
|
+
The section of the Workspace Area from FD9AH to FFC9H contains one hundred and twelve hooks, each of which is filled with five Z80 RET opcodes at power-up. These are called from strategic locations within the BIOS/Interpreter so that the ROM can be extended, particularly so that it can be upgraded to Disk BASIC. Each hook has sufficient room to hold a far call to any slot:
|
|
1835
|
+
|
|
1836
|
+
```
|
|
1837
|
+
RST 30H
|
|
1838
|
+
DEFB Slot ID
|
|
1839
|
+
DEFW Address
|
|
1840
|
+
RET
|
|
1841
|
+
```
|
|
1842
|
+
|
|
1843
|
+
The hooks are listed on the following pages together with the address they are called from and a brief note as to their function.
|
|
1844
|
+
|
|
1845
|
+
|ADDRESS |NAME |SIZE |FROM |FUNCTION|
|
|
1846
|
+
|---------------------------|-------|-------|---------------|---------------------------------|
|
|
1847
|
+
|<a name="fd9ah"></a>FD9AH |HKEYI: |DEFS 5 |0C4AH |Interrupt handler|
|
|
1848
|
+
|<a name="fd9fh"></a>FD9FH |HTIMI: |DEFS 5 |0C53H |Interrupt handler|
|
|
1849
|
+
|<a name="fda4h"></a>FDA4H |HCHPU: |DEFS 5 |08C0H |[CHPUT](#chput) standard routine|
|
|
1850
|
+
|<a name="fda9h"></a>FDA9H |HDSPC: |DEFS 5 |09E6H |Display cursor|
|
|
1851
|
+
|<a name="fdaeh"></a>FDAEH |HERAC: |DEFS 5 |0A33H |Erase cursor|
|
|
1852
|
+
|<a name="fdb3h"></a>FDB3H |HDSPF: |DEFS 5 |0B2BH |[DSPFNK](#dspfnk) standard routine|
|
|
1853
|
+
|<a name="fdb8h"></a>FDB8H |HERAF: |DEFS 5 |0B15H |[ERAFNK](#erafnk) standard routine|
|
|
1854
|
+
|<a name="fdbdh"></a>FDBDH |HTOTE: |DEFS 5 |0842H |[TOTEXT](#totext) standard routine|
|
|
1855
|
+
|<a name="fdc2h"></a>FDC2H |HCHGE: |DEFS 5 |10CEH |[CHGET](#chget) standard routine|
|
|
1856
|
+
|<a name="fdc7h"></a>FDC7H |HINIP: |DEFS 5 |071EH |Copy character set to VDP|
|
|
1857
|
+
|<a name="fdcch"></a>FDCCH |HKEYC: |DEFS 5 |1025H |Keyboard decoder|
|
|
1858
|
+
|<a name="fdd1h"></a>FDD1H |HKYEA: |DEFS 5 |0F10H |Keyboard decoder|
|
|
1859
|
+
|<a name="fdd6h"></a>FDD6H |HNMI: |DEFS 5 |1398H |[NMI](#nmi) standard routine|
|
|
1860
|
+
|<a name="fddbh"></a>FDDBH |HPINL: |DEFS 5 |23BFH |[PINLIN](#pinlin) standard routine|
|
|
1861
|
+
|<a name="fde0h"></a>FDE0H |HQINL: |DEFS 5 |23CCH |[QINLIN](#qinlin) standard routine|
|
|
1862
|
+
|<a name="fde5h"></a>FDE5H |HINLI: |DEFS 5 |23D5H |[INLIN](#inlin) standard routine|
|
|
1863
|
+
|<a name="fdeah"></a>FDEAH |HONGO: |DEFS 5 |7810H |"`ON DEVICE GOSUB`"|
|
|
1864
|
+
|<a name="fdefh"></a>FDEFH |HDSKO: |DEFS 5 |7C16H |"`DSKO$`"|
|
|
1865
|
+
|<a name="fdf4h"></a>FDF4H |HSETS: |DEFS 5 |7C1BH |"`SET`"|
|
|
1866
|
+
|<a name="fdf9h"></a>FDF9H |HNAME: |DEFS 5 |7C20H |"`NAME`"|
|
|
1867
|
+
|<a name="fdfeh"></a>FDFEH |HKILL: |DEFS 5 |7C25H |"`KILL`"|
|
|
1868
|
+
|<a name="fe03h"></a>FE03H |HIPL: |DEFS 5 |7C2AH |"`IPL`"|
|
|
1869
|
+
|<a name="fe08h"></a>FE08H |HCOPY: |DEFS 5 |7C2FH |"`COPY`"|
|
|
1870
|
+
|<a name="fe0dh"></a>FE0DH |HCMD: |DEFS 5 |7C34H |"`CMD`"|
|
|
1871
|
+
|<a name="fe12h"></a>FE12H |HDSKF: |DEFS 5 |7C39H |"`DSKF`"|
|
|
1872
|
+
|<a name="fe17h"></a>FE17H |HDSKI: |DEFS 5 |7C3EH |"`DSKI$`"|
|
|
1873
|
+
|<a name="fe1ch"></a>FE1CH |HATTR: |DEFS 5 |7C43H |"`ATTR$`"|
|
|
1874
|
+
|<a name="fe21h"></a>FE21H |HLSET: |DEFS 5 |7C48H |"`LSET`"|
|
|
1875
|
+
|<a name="fe26h"></a>FE26H |HRSET: |DEFS 5 |7C4DH |"`RSET`"|
|
|
1876
|
+
|<a name="fe2bh"></a>FE2BH |HFIEL: |DEFS 5 |7C52H |"`FIELD`"|
|
|
1877
|
+
|<a name="fe30h"></a>FE30H |HMKI$: |DEFS 5 |7C57H |"`MKI$`"|
|
|
1878
|
+
|<a name="fe35h"></a>FE35H |HMKS$: |DEFS 5 |7C5CH |"`MKS$`"|
|
|
1879
|
+
|<a name="fe3ah"></a>FE3AH |HMKD$: |DEFS 5 |7C61H |"`MKD$`"|
|
|
1880
|
+
|<a name="fe3fh"></a>FE3FH |HCVI: |DEFS 5 |7C66H |"`CVI`"|
|
|
1881
|
+
|<a name="fe44h"></a>FE44H |HCVS: |DEFS 5 |7C6BH |"`CVS`"|
|
|
1882
|
+
|<a name="fe49h"></a>FE49H |HCVD: |DEFS 5 |7C70H |"`CVD`"|
|
|
1883
|
+
|<a name="fe4eh"></a>FE4EH |HGETP: |DEFS 5 |6A93H |Locate FCB|
|
|
1884
|
+
|<a name="fe53h"></a>FE53H |HSETF: |DEFS 5 |6AB3H |Locate FCB|
|
|
1885
|
+
|<a name="fe58h"></a>FE58H |HNOFO: |DEFS 5 |6AF6H |"`OPEN`"|
|
|
1886
|
+
|<a name="fe5dh"></a>FE5DH |HNULO: |DEFS 5 |6B0FH |"`OPEN`"|
|
|
1887
|
+
|<a name="fe62h"></a>FE62H |HNTFL: |DEFS 5 |6B3BH |Close I/O buffer 0|
|
|
1888
|
+
|<a name="fe67h"></a>FE67H |HMERG: |DEFS 5 |6B63H |"`MERGE/LOAD`"|
|
|
1889
|
+
|<a name="fe6ch"></a>FE6CH |HSAVE: |DEFS 5 |6BA6H |"`SAVE`"|
|
|
1890
|
+
|<a name="fe71h"></a>FE71H |HBINS: |DEFS 5 |6BCEH |"`SAVE`"|
|
|
1891
|
+
|<a name="fe76h"></a>FE76H |HBINL: |DEFS 5 |6BD4H |"`MERGE/LOAD`"|
|
|
1892
|
+
|<a name="fe7bh"></a>FE7BH |HFILE: |DEFS 5 |6C2FH |"`FILES`"|
|
|
1893
|
+
|<a name="fe80h"></a>FE80H |HDGET: |DEFS 5 |6C3BH |"`GET/PUT`"|
|
|
1894
|
+
|<a name="fe85h"></a>FE85H |HFILO: |DEFS 5 |6C51H |Sequential output|
|
|
1895
|
+
|<a name="fe8ah"></a>FE8AH |HINDS: |DEFS 5 |6C79H |Sequential input|
|
|
1896
|
+
|<a name="fe8fh"></a>FE8FH |HRSLF: |DEFS 5 |6CD8H |"`INPUT$`"|
|
|
1897
|
+
|<a name="fe94h"></a>FE94H |HSAVD: |DEFS 5 |6D03H, 6D14H |"`LOC`", "`LOF`",|
|
|
1898
|
+
| | | |6D25H, 6D39H |"`EOF`", "`FPOS`"|
|
|
1899
|
+
|<a name="fe99h"></a>FE99H |HLOC: |DEFS 5 |6D0FH |"`LOC`"|
|
|
1900
|
+
|<a name="fe9eh"></a>FE9EH |HLOF: |DEFS 5 |6D20H |"`LOF`"|
|
|
1901
|
+
|<a name="fea3h"></a>FEA3H |HEOF: |DEFS 5 |6D33H |"`EOF`"|
|
|
1902
|
+
|<a name="fea8h"></a>FEA8H |HFPOS: |DEFS 5 |6D43H |"`FPOS`"|
|
|
1903
|
+
|<a name="feadh"></a>FEADH |HBAKU: |DEFS 5 |6E36H |"`LINE INPUT#`"|
|
|
1904
|
+
|<a name="feb2h"></a>FEB2H |HPARD: |DEFS 5 |6F15H |Parse device name|
|
|
1905
|
+
|<a name="feb7h"></a>FEB7H |HNODE: |DEFS 5 |6F33H |Parse device name|
|
|
1906
|
+
|<a name="febch"></a>FEBCH |HPOSD: |DEFS 5 |6F37H |Parse device name|
|
|
1907
|
+
|<a name="fec1h"></a>FEC1H |HDEVN: |DEFS 5 | |This hook is not used.|
|
|
1908
|
+
|<a name="fec6h"></a>FEC6H |HGEND: |DEFS 5 |6F8FH |I/O function dispatcher|
|
|
1909
|
+
|<a name="fecbh"></a>FECBH |HRUNC: |DEFS 5 |629AH |Run-clear|
|
|
1910
|
+
|<a name="fed0h"></a>FED0H |HCLEA: |DEFS 5 |62A1H |Run-clear|
|
|
1911
|
+
|<a name="fed5h"></a>FED5H |HLOPD: |DEFS 5 |62AFH |Run-clear|
|
|
1912
|
+
|<a name="fedah"></a>FEDAH |HSTKE: |DEFS 5 |62F0H |Reset stack|
|
|
1913
|
+
|<a name="fedfh"></a>FEDFH |HISFL: |DEFS 5 |145FH |[ISFLIO](#isflio) standard routine |
|
|
1914
|
+
|<a name="fee4h"></a>FEE4H |HOUTD: |DEFS 5 |1B46H |[OUTDO](#outdo) standard routine|
|
|
1915
|
+
|<a name="fee9h"></a>FEE9H |HCRDO: |DEFS 5 |7328H |CR,LF to [OUTDO](#outdo)|
|
|
1916
|
+
|<a name="feeeh"></a>FEEEH |HDSKC: |DEFS 5 |7374H |Mainloop line input|
|
|
1917
|
+
|<a name="fef3h"></a>FEF3H |HDOGR: |DEFS 5 |593CH |Line draw|
|
|
1918
|
+
|<a name="fef8h"></a>FEF8H |HPRGE: |DEFS 5 |4039H |Program end|
|
|
1919
|
+
|<a name="fefdh"></a>FEFDH |HERRP: |DEFS 5 |40DCH |Error handler|
|
|
1920
|
+
|<a name="ff02h"></a>FF02H |HERRF: |DEFS 5 |40FDH |Error handler|
|
|
1921
|
+
|<a name="ff07h"></a>FF07H |HREAD: |DEFS 5 |4128H |Mainloop "`OK`"|
|
|
1922
|
+
|<a name="ff0ch"></a>FF0CH |HMAIN: |DEFS 5 |4134H |Mainloop|
|
|
1923
|
+
|<a name="ff11h"></a>FF11H |HDIRD: |DEFS 5 |41A8H |Mainloop direct statement|
|
|
1924
|
+
|<a name="ff16h"></a>FF16H |HFINI: |DEFS 5 |4237H |Mainloop finished|
|
|
1925
|
+
|<a name="ff1bh"></a>FF1BH |HFINE: |DEFS 5 |4247H |Mainloop finished|
|
|
1926
|
+
|<a name="ff20h"></a>FF20H |HCRUN: |DEFS 5 |42B9H |Tokenize|
|
|
1927
|
+
|<a name="ff25h"></a>FF25H |HCRUS: |DEFS 5 |4353H |Tokenize|
|
|
1928
|
+
|<a name="ff2ah"></a>FF2AH |HISRE: |DEFS 5 |437CH |Tokenize|
|
|
1929
|
+
|<a name="ff2fh"></a>FF2FH |HNTFN: |DEFS 5 |43A4H |Tokenize|
|
|
1930
|
+
|<a name="ff34h"></a>FF34H |HNOTR: |DEFS 5 |44EBH |Tokenize|
|
|
1931
|
+
|<a name="ff39h"></a>FF39H |HSNGF: |DEFS 5 |45D1H |"`FOR`"|
|
|
1932
|
+
|<a name="ff3eh"></a>FF3EH |HNEWS: |DEFS 5 |4601H |Runloop new statement|
|
|
1933
|
+
|<a name="ff43h"></a>FF43H |HGONE: |DEFS 5 |4646H |Runloop execute|
|
|
1934
|
+
|<a name="ff48h"></a>FF48H |HCHRG: |DEFS 5 |4666H |[CHRGTR](#chrgtr) standard routine|
|
|
1935
|
+
|<a name="ff4dh"></a>FF4DH |HRETU: |DEFS 5 |4821H |"`RETURN`"|
|
|
1936
|
+
|<a name="ff52h"></a>FF52H |HPRTF: |DEFS 5 |4A5EH |"`PRINT`"|
|
|
1937
|
+
|<a name="ff57h"></a>FF57H |HCOMP: |DEFS 5 |4A54H |"`PRINT`"|
|
|
1938
|
+
|<a name="ff5ch"></a>FF5CH |HFINP: |DEFS 5 |4AFFH |"`PRINT`"|
|
|
1939
|
+
|<a name="ff61h"></a>FF61H |HTRMN: |DEFS 5 |4B4DH |"`READ/INPUT`" error|
|
|
1940
|
+
|<a name="ff66h"></a>FF66H |HFRME: |DEFS 5 |4C6DH |Expression Evaluator|
|
|
1941
|
+
|<a name="ff6bh"></a>FF6BH |HNTPL: |DEFS 5 |4CA6H |Expression Evaluator|
|
|
1942
|
+
|<a name="ff70h"></a>FF70H |HEVAL: |DEFS 5 |4DD9H |Factor Evaluator|
|
|
1943
|
+
|<a name="ff75h"></a>FF75H |HOKNO: |DEFS 5 |4F2CH |Factor Evaluator|
|
|
1944
|
+
|<a name="ff7ah"></a>FF7AH |HFING: |DEFS 5 |4F3EH |Factor Evaluator|
|
|
1945
|
+
|<a name="ff7fh"></a>FF7FH |HISMI: |DEFS 5 |51C3H |Runloop execute|
|
|
1946
|
+
|<a name="ff84h"></a>FF84H |HWIDT: |DEFS 5 |51CCH |"`WIDTH`"|
|
|
1947
|
+
|<a name="ff89h"></a>FF89H |HLIST: |DEFS 5 |522EH |"`LIST`"|
|
|
1948
|
+
|<a name="ff8eh"></a>FF8EH |HBUFL: |DEFS 5 |532DH |Detokenize|
|
|
1949
|
+
|<a name="ff93h"></a>FF93H |HFRQI: |DEFS 5 |543FH |Convert to integer|
|
|
1950
|
+
|<a name="ff98h"></a>FF98H |HSCNE: |DEFS 5 |5514H |Line number to pointer|
|
|
1951
|
+
|<a name="ff9dh"></a>FF9DH |HFRET: |DEFS 5 |67EEH |Free descriptor|
|
|
1952
|
+
|<a name="ffa2h"></a>FFA2H |HPTRG: |DEFS 5 |5EA9H |Variable search|
|
|
1953
|
+
|<a name="ffa7h"></a>FFA7H |HPHYD: |DEFS 5 |148AH |[PHYDIO](#phydio) standard routine|
|
|
1954
|
+
|<a name="ffach"></a>FFACH |HFORM: |DEFS 5 |148EH |[FORMAT](#format) standard routine|
|
|
1955
|
+
|<a name="ffb1h"></a>FFB1H |HERRO: |DEFS 5 |406FH |Error handler|
|
|
1956
|
+
|<a name="ffb6h"></a>FFB6H |HLPTO: |DEFS 5 |085DH |[LPTOUT](#lptout) standard routine|
|
|
1957
|
+
|<a name="ffbbh"></a>FFBBH |HLPTS: |DEFS 5 |0884H |[LPTSTT](#lptstt) standard routine|
|
|
1958
|
+
|<a name="ffc0h"></a>FFC0H |HSCRE: |DEFS 5 |79CCH |"`SCREEN`"|
|
|
1959
|
+
|<a name="ffc5h"></a>FFC5H |HPLAY: |DEFS 5 |73E5H |"`PLAY`" statement|
|
|
1960
|
+
|
|
1961
|
+
</a>
|
|
1962
|
+
|
|
1963
|
+
The Workspace Area from FFCAH to FFFFH is unused. (on MSX 1)
|