@nataliapc/mcp-openmsx 1.1.5 → 1.1.8

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.
Files changed (48) hide show
  1. package/README.md +38 -0
  2. package/dist/server.js +110 -23
  3. package/dist/utils.js +17 -0
  4. package/package.json +4 -1
  5. package/resources/audio/toc.json +31 -0
  6. package/resources/bios/Calling_BIOS_from_MSX-DOS.md +75 -0
  7. package/resources/bios/MSX2_SUBROM_BIOS_calls.md +734 -0
  8. package/resources/bios/MSX_BIOS_calls.md +1046 -0
  9. package/resources/bios/toc.json +24 -0
  10. package/resources/book--msx2-technical-handbook/Appendix1__BIOS_Listing.md +1464 -0
  11. package/resources/book--msx2-technical-handbook/Appendix2__Math-Pack.md +427 -0
  12. package/resources/book--msx2-technical-handbook/Appendix3__Bit_Block_Transfer.md +182 -0
  13. package/resources/book--msx2-technical-handbook/Appendix4__Work_Area_Listing.md +1637 -0
  14. package/resources/book--msx2-technical-handbook/Appendix5__VRAM_Map.md +145 -0
  15. package/resources/book--msx2-technical-handbook/Appendix6__IO_Map.md +128 -0
  16. package/resources/book--msx2-technical-handbook/Appendix8_10__Control_Codes_and_Escape_Sequences.md +76 -0
  17. package/resources/book--msx2-technical-handbook/Chapter1__MSX_System_Overview.md +402 -0
  18. package/resources/book--msx2-technical-handbook/Chapter2__BASIC.md +2148 -0
  19. package/resources/book--msx2-technical-handbook/Chapter3__MSX-DOS.md +2577 -0
  20. package/resources/book--msx2-technical-handbook/Chapter4a__VDP_and_Display_Screen.md +2052 -0
  21. package/resources/book--msx2-technical-handbook/Chapter4b__VDP_and_Display_Screen.md +3311 -0
  22. package/resources/book--msx2-technical-handbook/Chapter5a__Access_to_Peripherals_through_BIOS.md +2714 -0
  23. package/resources/book--msx2-technical-handbook/Chapter5b__Access_to_Peripherals_through_BIOS.md +1263 -0
  24. package/resources/book--msx2-technical-handbook/MSX_Kun_BASIC_Compiler.md +220 -0
  25. package/resources/book--msx2-technical-handbook/toc.json +82 -0
  26. package/resources/book--the-msx-red-book/the_msx_red_book.md +10349 -0
  27. package/resources/book--the-msx-red-book/toc.json +12 -0
  28. package/resources/msx-dos/MSX-DOS_2_Function_Specifications.md +1366 -0
  29. package/resources/msx-dos/MSX-DOS_2_Program_Interface_Specification.md +963 -0
  30. package/resources/msx-dos/toc.json +18 -0
  31. package/resources/msx-unapi/Ethernet_UNAPI_specification_1.1.md +369 -0
  32. package/resources/msx-unapi/Introduction_to_MSX-UNAPI.md +132 -0
  33. package/resources/msx-unapi/MSX_UNAPI_specification_1.1.md +679 -0
  34. package/resources/msx-unapi/TCP-IP_UNAPI_specification.md +2361 -0
  35. package/resources/msx-unapi/toc.json +27 -0
  36. package/resources/others/toc.json +11 -0
  37. package/resources/processors/Z80_R800_instruction_set.md +482 -0
  38. package/resources/processors/toc.json +24 -0
  39. package/resources/processors/z80-undocumented.tex +5617 -0
  40. package/resources/processors/z80_detailed_instruction_set.md +2025 -0
  41. package/resources/programming/toc.json +121 -0
  42. package/resources/system/MSX_IO_ports_overview.md +554 -0
  43. package/resources/system/toc.json +18 -0
  44. package/resources/video/V9938_Technical_Data_Book.md +3623 -0
  45. package/resources/video/V9958_Technical_Data_Book.md +417 -0
  46. package/resources/video/V9990_Programmers_Manual_Banzai.html +1582 -0
  47. package/resources/video/VDP_TMS9918A.txt +709 -0
  48. package/resources/video/toc.json +28 -0
@@ -0,0 +1,1637 @@
1
+ # APPENDIX 4 - WORK AREA LISTING
2
+
3
+ <p>&nbsp;</p>
4
+
5
+ ## Index
6
+
7
+ - [Subroutines for read/write calls of the inter-slot](#subroutines-for-readwrite-calls-of-the-inter-slot)
8
+ - [Starting address of assembly language program of USR function, text screen](#starting-address-of-assembly-language-program-of-usr-function-text-screen)
9
+ - [Work for initialisation](#work-for-initialisation)
10
+ - [Area to save VDP registers](#area-to-save-vdp-registers)
11
+ - [Work area for PLAY statement](#work-area-for-play-statement)
12
+ - [Work area for key input](#work-area-for-key-input)
13
+ - [Parameters for Cassette](#parameters-for-cassette)
14
+ - [Work used by BASIC internally](#work-used-by-basic-internally)
15
+ - [Work for user function parameter](#work-for-user-function-parameter)
16
+ - [Work for Math-Pack](#work-for-math-pack)
17
+ - [Data area used by BASIC interpreter](#data-area-used-by-basic-interpreter)
18
+ - [Data area used by CIRCLE statement](#data-area-used-by-circle-statement)
19
+ - [Data area used in PAINT statement](#data-area-used-in-paint-statement)
20
+ - [Data area used in PLAY statement](#data-area-used-in-play-statement)
21
+ - [Work area added in MSX2](#work-area-added-in-msx2)
22
+ - [Data area used by RS-232C](#data-area-used-by-rs-232c)
23
+ - [Data area used by DOS](#data-area-used-by-dos)
24
+ - [Data area used by PLAY statement](#data-area-used-by-play-statement)
25
+ - [Data area](#data-area)
26
+ - [Hooks](#hooks)
27
+ - [Changes from the original](#changes-from-the-original)
28
+
29
+
30
+ <p>&nbsp;</p>
31
+
32
+ [Figure A.5](#figure-a5--work-area) shows the map of the MSX2 work area. In this section, the system work area and hook from F380H to FFCAH in the figure are described. The following notation is used. Length is in bytes.
33
+
34
+ **Label name (address, length)**
35
+
36
+ * Initial value, contents, purpose
37
+
38
+
39
+ ##### _Figure A.5 Work area_
40
+
41
+ ```
42
+ FFFF ---------------------------
43
+ | slot selection register |
44
+ FFFC |-------------------------|
45
+ | reserved |
46
+ FFF8 |-------------------------|
47
+ FFF7 | MAIN-ROM slot address |
48
+ |-------------------------|
49
+ | register reservation |
50
+ | area for new |
51
+ FFE7 | VDP (9938) |
52
+ |-------------------------|
53
+ | program for |
54
+ FFCA | expansion BIOS calls |
55
+ |-------------------------|
56
+ | |
57
+ | hook area |
58
+ FD9A | |
59
+ |-------------------------|
60
+ | |
61
+ | system work area |
62
+ F380 | |
63
+ ---------------------------
64
+ ```
65
+
66
+
67
+ <p>&nbsp;</p>
68
+
69
+ ## Subroutines for read/write calls of the inter-slot
70
+
71
+ #### RDPRIM (F380H, 5)
72
+ * **contents**: read from basic slot
73
+
74
+ #### WRPRIM (F385H, 7)
75
+ * **contents**: write to basic slot
76
+
77
+ #### CLPRIM (F38CH, 14)
78
+ * **contents**: basic slot call
79
+
80
+
81
+ <p>&nbsp;</p>
82
+
83
+ ## Starting address of assembly language program of USR function, text screen
84
+
85
+ #### USRTAB (F39AH, 20)
86
+ * **initial value**: FCERR
87
+ * **contents**: starting address of assembly language program of USR function (0 to 9); the value before defining assembly language program points to FCERR (475AH).
88
+
89
+ #### LINL40 (F3AEH, 1)
90
+ * **initial value**: 39
91
+ * **contents**: screen width per line at SCREEN 0 (set by WIDTH statement at SCREEN 0)
92
+
93
+ #### LINL32 (F3AFH, 1)
94
+ * **initial value**: 32
95
+ * **contents**: screen width per line at SCREEN 1 (set by WIDTH statement at SCREEN 1)
96
+
97
+ #### LINLEN (F3B0H, 1)
98
+ * **initial value**: 29
99
+ * **contents**: current screen width per line
100
+
101
+ #### CRTCNT (F3B1H, 1)
102
+ * **initial value**: 24
103
+ * **contents**: number of lines of current screen
104
+
105
+ #### CLMLST (F3B2H, 1)
106
+ * **initial value**: 14
107
+ * **contents**: horizontal location in the case that items are divided by commas in PRINT statement
108
+
109
+
110
+
111
+ <p>&nbsp;</p>
112
+
113
+ ## Work for initialisation
114
+
115
+
116
+ ### SCREEN 0
117
+
118
+
119
+ #### TXTNAM (F3B3H, 2)
120
+ * **initial value**: 0000H
121
+ * **contents**: pattern name table
122
+
123
+ #### TXTCOL (F3B5H, 2)
124
+ * **contents**: unused
125
+
126
+ #### TXTCGP (F3B7H, 2)
127
+ * **initial value**: 0800H
128
+ * **contents**: pattern generator table
129
+
130
+ #### TXTATR (F3B9H, 2)
131
+ * **contents**: unused
132
+
133
+ #### TXTPAT (F3BBH, 2)
134
+ * **contents**: unused
135
+
136
+
137
+ <p>&nbsp;</p>
138
+
139
+ ### SCREEN 1
140
+
141
+ #### T32NAM (F3BDH, 2)
142
+ * **initial value**: 1800H
143
+ * **contents**: pattern name table
144
+
145
+ #### T32COL (F3BFH, 2)
146
+ * **initial value**: 2000H
147
+ * **contents**: colour table
148
+
149
+ #### T32CGP (F3C1H, 2)
150
+ * **initial value**: 0000H
151
+ * **contents**: pattern generator table
152
+
153
+ #### T32ATR (F3C3H, 2)
154
+ * **initial value**: 1B00H
155
+ * **contents**: sprite attribute table
156
+
157
+ #### T32PAT (F3C5H, 2)
158
+ * **initial value**: 3800H
159
+ * **contents**: sprite generator table
160
+
161
+
162
+ <p>&nbsp;</p>
163
+
164
+ ### SCREEN 2
165
+
166
+
167
+ #### GRPNAM (F3C7H, 2)
168
+ * **initial value**: 1800H
169
+ * **contents**: pattern name table
170
+
171
+ #### GRPCOL (F3C9H, 2)
172
+ * **initial value**: 2000H
173
+ * **contents**: colour table
174
+
175
+ #### GRPCGP (F3CBH, 2)
176
+ * **initial value**: 0000H
177
+ * **contents**: pattern generator table
178
+
179
+ #### GRPATR (F3CDH, 2)
180
+ * **initial value**: 1B00H
181
+ * **contents**: sprite attribute table
182
+
183
+ #### GRPPAT (F3CFH, 2)
184
+ * **initial value**: 3800H
185
+ * **contents**: sprite generator table
186
+
187
+
188
+ <p>&nbsp;</p>
189
+
190
+ ### SCREEN 3
191
+
192
+
193
+ #### MLTNAM (F3D1H, 2)
194
+ * **initial value**: 0800H
195
+ * **contents**: pattern name table
196
+
197
+ #### MLTCOL (F3D3H, 2)
198
+ * **contents**: unused
199
+
200
+ #### MLTCGP (F3D5H, 2)
201
+ * **initial value**: 0000H
202
+ * **contents**: pattern generator table
203
+
204
+ #### MLTATR (F3D7H, 2)
205
+ * **initial value**: 1B00H
206
+ * **contents**: sprite attribute table
207
+
208
+ #### MLTPAT (F3D9H, 2)
209
+ * **initial value**: 3800H
210
+ * **contents**: sprite generator table
211
+
212
+
213
+ <p>&nbsp;</p>
214
+
215
+ ### Other screen settings
216
+
217
+
218
+ #### CLIKSW (F3DBH, 1)
219
+ * **initial value**: 1
220
+ * **contents**: key click switch (0 = OFF, otherwise = ON), set by `<key click switch>` of SCREEN statement
221
+
222
+ #### CSRY (F3DCH, 1)
223
+ * **initial value**: 1
224
+ * **contents**: Y-coordinate of cursor
225
+
226
+ #### CSRX (F3DDH, 1)
227
+ * **initial value**: 1
228
+ * **contents**: X-coordinate of cursor
229
+
230
+ #### CNSDFG (F3DEH, 1)
231
+ * **initial value**: 0
232
+ * **contents**: function key display switch (0 = display, otherwise = no display), set by KEY ON/OFF statement
233
+
234
+
235
+ <p>&nbsp;</p>
236
+
237
+ ## Area to save VDP registers
238
+
239
+
240
+ #### RG0SAV (F3DFH, 1)
241
+ * **initial value**: 0
242
+
243
+ #### RG1SAV (F3E0H, 1)
244
+ * **initial value**: E0H
245
+
246
+ #### RG2SAV (F3E1H, 1)
247
+ * **initial value**: 0
248
+
249
+ #### RG3SAV (F3E2H, 1)
250
+ * **initial value**: 0
251
+
252
+ #### RG4SAV (F3E3H, 1)
253
+ * **initial value**: 0
254
+
255
+ #### RG5SAV (F3E4H, 1)
256
+ * **initial value**: 0
257
+
258
+ #### RG6SAV (F3E5H, 1)
259
+ * **initial value**: 0
260
+
261
+ #### RG7SAV (F3E6H, 1)
262
+ * **initial value**: 0
263
+
264
+ #### STATFL (F3E7H, 1)
265
+ * **initial value**: 0
266
+ * **contents**: stores VDP status (contents of status register 0, in MSX2)
267
+
268
+ #### TRGFLG (F3E8H, 1)
269
+ * **initial value**: FFH
270
+ * **contents**: stores trigger button status of joystick
271
+
272
+ #### FORCLR (F3E9H, 1)
273
+ * **initial value**: 15
274
+ * **contents**: foreground colour; set by colour statement
275
+
276
+ #### BAKCLR (F3EAH, 1)
277
+ * **initial value**: 4
278
+ * **contents**: background colour; set by colour statement
279
+
280
+ #### BDRCLR (F3EBH, 1)
281
+ * **initial value**: 7
282
+ * **contents**: border colour; set by colour statement
283
+
284
+ #### MAXUPD (F3ECH, 3)
285
+ * **initial value**: JP 0000H (C3H, 00H, 00H)
286
+ * **contents**: used by CIRCLE statement internally
287
+
288
+ #### MINUPD (F3EFH, 3)
289
+ * **initial value**: JP 0000H (C3H, 00H, 00H)
290
+ * **contents**: used by CIRCLE statement internally
291
+
292
+ #### ATRBYT (F3F2H, 1)
293
+ * **initial value**: 15
294
+ * **contents**: colour code in using graphics
295
+
296
+
297
+ <p>&nbsp;</p>
298
+
299
+ ## Work area for PLAY statement
300
+
301
+
302
+ #### QUEUES (F3F3H, 2)
303
+ * **initial value**: QUETAB (F959H)
304
+ * **contents**: points to queue table at the execution of PLAY statement
305
+
306
+ #### FRCNEW (F3F5H)
307
+ * **initial value**: 255
308
+ * **contents**: used by BASIC interpreter internally
309
+
310
+
311
+ <p>&nbsp;</p>
312
+
313
+ ## Work area for key input
314
+
315
+
316
+ #### SCNCNT (F3F6H, 1)
317
+ * **initial value**: 1
318
+ * **contents**: interval for the key scan
319
+
320
+ #### REPCNT (F3F7H, 1)
321
+ * **initial value**: 50
322
+ * **contents**: delay until the auto-repeat of the key begins
323
+
324
+ #### PUTPNT (F3F8H, 2)
325
+ * **initial value**: KEYBUF (FBF0H)
326
+ * **contents**: points to address to write in the key buffer
327
+
328
+ #### GETPNT (F3FAH, 2)
329
+ * **initial value**: KEYBUF (FBF0H)
330
+ * **contents**: points to address to read from key buffer
331
+
332
+
333
+ <p>&nbsp;</p>
334
+
335
+ ## Parameters for Cassette
336
+
337
+
338
+ <p>&nbsp;</p>
339
+
340
+ #### CS120 (F3FCH, 5*2)
341
+ * **contents**:
342
+ * 1200 baud:
343
+ * 83 (LOW01): Low width representing bit 0
344
+ * 92 (HIGH01): High width representing bit 0
345
+ * 38 (LOW11): Low width representing bit 1
346
+ * 45 (HIGH11): High width representing bit 1
347
+ * HEADLEN * 2/256: High bytes (HEDLEN = 2000) of header bits for short header
348
+ * 2400 baud
349
+ * 37 (LOW02): Low width representing bit 0
350
+ * 45 (HIGH02): High width representing bit 0
351
+ * 14 (LOW12): Low width representing bit 1
352
+ * 22 (HIGH12): High width representing bit 1
353
+ * HEADLEN * 4/256: High bytes (HEDLEN = 2000) of header bits for short header
354
+
355
+ #### LOW (F406H, 2)
356
+ * **initial value**: LOW01, HIGH01 (by default, 1200 baud)
357
+ * **contents**: width of LOW and HIGH which represents bit 0 of current baud rate; set by `<cassette baud rate>` of SCREEN statement
358
+
359
+ #### HIGH (F408H, 2)
360
+ * **initial value**: LOW11, HIGH11 (by default, 1200 baud)
361
+ * **contents**: width of LOW and HIGH which represents bit 1 of current baud rate; set by `<cassette baud rate>` of SCREEN statement
362
+
363
+ #### HEADER (F40AH, 1)
364
+ * **initial value**: HEADLEN * 2/256 (by default, 1200 baud)
365
+ * **contents**: header bit for the short header of current baud rate (HEADLEN = 2000); set by `<cassette baud rate>` of SCREEN statement
366
+
367
+ #### ASPCT1 (F40BH, 1)
368
+ * **contents**: 256/aspect ratio; set by SCREEN statement to use in CIRCLE statement
369
+
370
+ #### ASPCT2 (F40DH, 1)
371
+ * **contents**: 256 * aspect ratio; set by SCREEN statement to use in CIRCLE statement
372
+
373
+ #### ENDPRG (F40FH, 5)
374
+ * **initial value**: ":"
375
+ * **contents**: false end of program for RESUME NEXT statement
376
+
377
+
378
+ <p>&nbsp;</p>
379
+
380
+ ## Work used by BASIC internally
381
+
382
+ #### ERRFLG (F414H, 1)
383
+ * **contents**: area to store the error number
384
+
385
+ #### LPTPOS (F415H, 1)
386
+ * **initial value**: 0
387
+ * **contents**: printer head location
388
+
389
+ #### PRTFLG (F416H, 1)
390
+ * **contents**: flag whether to send to printer
391
+
392
+ #### NTMSXP (F417H, 1)
393
+ * **contents**: printer (0 = printer for MSX, otherwise not)
394
+
395
+ #### RAWPRT (F418H, 1)
396
+ * **contents**: non-zero when printing in raw-mode
397
+
398
+ #### VLZADR (F419H, 2)
399
+ * **contents**: address of character to be replaced by VAL function
400
+
401
+ #### VLZDAT (F41BH, 1)
402
+ * **contents**: character to be replaced with 0 by VAL function
403
+
404
+ #### CURLIN (F41CH, 2)
405
+ * **contents**: currently executing line number of BASIC
406
+
407
+ #### KBUF (F41FH, 318)
408
+ * **contents**: crunch buffer; translated into intermediate language from BUF (F55EH)
409
+
410
+ #### BUFMIN (F55DH, 1)
411
+ * **initial value**: ","
412
+ * **contents**: used in INPUT statement
413
+
414
+ #### BUF (F55EH, 258)
415
+ * **contents**: buffer to store characters typed; where direct statements are stored in ASCII code
416
+
417
+ #### ENDBUF (F660H, 1)
418
+ * **contents**: prevents overflow of BUF (F55EH)
419
+
420
+ #### TTYPOS (F661H, 1)
421
+ * **contents**: virtual cursor location internally retained by BASIC
422
+
423
+ #### DIMFLG (F662H, 1)
424
+ * **contents**: used by BASIC internally
425
+
426
+ #### VALTYP (F663H, 1)
427
+ * **contents**: used to identify the type of variable
428
+
429
+ #### DORES (F664H, 1)
430
+ * **contents**: indicates whether stored word can be crunched
431
+
432
+ #### DONUM (F665H, 1)
433
+ * **contents**: flag for crunch
434
+
435
+ #### CONTXT (F666H, 2)
436
+ * **contents**: stores text address used by CHRGET
437
+
438
+ #### CONSAV (F668H, 1)
439
+ * **contents**: stores token of constant after calling CHRGET
440
+
441
+ #### CONTYP (F669H, 1)
442
+ * **contents**: type of stored constant
443
+
444
+ #### CONLO (F66AH, 8)
445
+ * **contents**: value of stored constant
446
+
447
+ #### MEMSIZ (F672H, 2)
448
+ * **contents**: highest address of memory used by BASIC
449
+
450
+ #### STKTOP (F674H, 2)
451
+ * **contents**: address used as stack by BASIC; depending on CLEAR statement
452
+
453
+ #### TXTTAB (F676H, 2)
454
+ * **contents**: starting address of BASIC text area
455
+
456
+ #### TEMPPT (F768H, 2)
457
+ * **initial value**: TEMPST (F67AH)
458
+ * **contents**: starting address of unused area of temporary descriptor
459
+
460
+ #### TEMPST (F67AH, 3 * NUMTMP)
461
+ * **contents**: area for NUMTEMP
462
+
463
+ #### DSCTMP (F698H, 3)
464
+ * **contents**: string descriptor which is the result of string function
465
+
466
+ #### FRETOP (F69BH, 2)
467
+ * **contents**: starting address of unused area of string area
468
+
469
+ #### TEMP3 (F69DH, 2)
470
+ * **contents**: used for garbage collection or by USR function
471
+
472
+ #### TEMP8 (F69FH, 2)
473
+ * **contents**: for garbage collection
474
+
475
+ #### ENDFOR (F6A1H, 2)
476
+ * **contents**: stores next address of FOR statement (to begin execution from the next of FOR statement at loops)
477
+
478
+ #### DATLIN (F6A3H, 2)
479
+ * **contents**: line number of DATA statement read by READ statement
480
+
481
+ #### SUBFLG (F6A5H, 1)
482
+ * **contents**: flag for array for USR function
483
+
484
+ #### FLGINP (F6A6H, 1)
485
+ * **contents**: flag used in INPUT or READ
486
+
487
+ #### TEMP (F6A7H, 2)
488
+ * **contents**: location for temporary reservation for statement code; used for variable pointer, text address, and others
489
+
490
+ #### PTRFLG (F6A9H, 1)
491
+ * **contents**: 0 if there is not a line number to be converted,otherwise not
492
+
493
+ #### AUTFLG (F6AAH, 1)
494
+ * **contents**: flag for AUTO command validity (non-zero = valid, otherwise invalid)
495
+
496
+ #### AUTLIN (F6ABH, 2)
497
+ * **contents**: last input line number
498
+
499
+ #### AUTINC (F6ADH, 2)
500
+ * **initial value**: 10
501
+ * **contents**: increment value of line number of AUTO command
502
+
503
+ #### SAVTXT (F6AFH, 2)
504
+ * **contents**: area to store address of currently executing text; mainly used for error recovery by RESUME statement
505
+
506
+ #### ERRLIN (F6B3H, 2)
507
+ * **contents**: line number where an error occurred
508
+
509
+ #### DOT (F6B5H, 2)
510
+ * **contents**: last line number which was displayed in screen or entered
511
+
512
+ #### ERRTXT (F6B7H, 2)
513
+ * **contents**: text address which caused an error; mainly used for error recovery by RESUME statement
514
+
515
+ #### ONELIN (F6B9H, 2)
516
+ * **contents**: text address to which control jumps at error; set by ON ERROR GOTO statement
517
+
518
+ #### ONEFLG (F6BBH, 1)
519
+ * **contents**: flag which indicates error routine execution (non-zero = in execution, otherwise not)
520
+
521
+ #### TEMP2 (F6BCH, 2)
522
+ * **contents**: for temporary storage
523
+
524
+ #### OLDLIN (F6BEH, 2)
525
+ * **contents**: line number which was terminated by Ctrl+STOP, STOP instruction, END instruction, or was executed last
526
+
527
+ #### OLDTXT (F6C0H, 2)
528
+ * **contents**: address to be executed next
529
+
530
+ #### VARTAB (F6C2H, 2)
531
+ * **contents**: starting address of simple variable; executing NEW statement causes [contents of TXTTAB(F676H) + 2] to be set
532
+
533
+ #### ARYTAB (F6C4H, 2)
534
+ * **contents**: starting address of array table
535
+
536
+ #### STREND (F6C6H, 2)
537
+ * **contents**: last address of memory in use as text area or variable area
538
+
539
+ #### DATPTR (F6C8H, 2)
540
+ * **contents**: text address of data read by executing READ statement
541
+
542
+ #### DEFTBL (F6CAH, 26)
543
+ * **contents**: area to store type of variable for one alphabetical character; depends on type declaration such as CLEAR, DEFSTR, !, or #
544
+
545
+
546
+ <p>&nbsp;</p>
547
+
548
+ ## Work for user function parameter
549
+
550
+ #### PRMSTK (F6E4H, 2)
551
+ * **contents**: previous definition block on stack (for garbage collection)
552
+
553
+ #### PRMLEN (F6E6H, 2)
554
+ * **contents**: number of bytes of objective data
555
+
556
+ #### PARM1 (F6E8H, PRMSIZ)
557
+ * **contents**: objective parameter definition table; PRMSIZ is number of bytes of definition block, initial value is 100
558
+
559
+ #### PRMPRV (F74CH, 2)
560
+ * **initial value**: PRMSTK
561
+ * **contents**: pointer to previous parameter block (for garbage collection)
562
+
563
+ #### PRMLN2 (F74EH, 2)
564
+ * **contents**: size of parameter block
565
+
566
+ #### PARM2 (F750H, 100)
567
+ * **contents**: for parameter storage
568
+
569
+ #### PRMFLG (F7B4H, 1)
570
+ * **contents**: flag to indicate whether PARM1 was searched
571
+
572
+ #### ARYTA2 (F7B5H, 2)
573
+ * **contents**: end point of search
574
+
575
+ #### NOFUNS (F7B7H, 1)
576
+ * **contents**: 0 if there is not an objective function
577
+
578
+ #### TEMP9 (F7B8H, 2)
579
+ * **contents**: location of temporary storage for garbage collection
580
+
581
+ #### FUNACT (F7BAH, 2)
582
+ * **contents**: number of objective functions
583
+
584
+ #### SWPTMP (F7BCH, 8)
585
+ * **contents**: location of temporary storage of the value of the first variable of SWAP statement
586
+
587
+ #### TRCFLG (F7C4H, 1)
588
+ * **contents**: trace flag (non-zero = TRACE ON, 0 = TRACE OFF)
589
+
590
+
591
+ <p>&nbsp;</p>
592
+
593
+ ## Work for Math-Pack
594
+
595
+ #### FBUFFR (F7C5H, 43)
596
+ * **contents**: used internally by Math-Pack
597
+
598
+ #### DECTMP (F7F0H, 2)
599
+ * **contents**: used to transform decimal integer to floating-point number
600
+
601
+ #### DECTM2 (F7F2H, 2)
602
+ * **contents**: used at division routine execution
603
+
604
+ #### DECCNT (F7F4H, 2)
605
+ * **contents**: used at division routine execution
606
+
607
+ #### DAC (F7F6H, 16)
608
+ * **contents**: area to set the value to be calculated
609
+
610
+ #### HOLD8 (F806H, 48)
611
+ * **contents**: register storage area for decimal multiplication
612
+
613
+ #### HOLD2 (F836H, 8)
614
+ * **contents**: used internally by Math-Pack
615
+
616
+ #### HOLD (F83EH, 8)
617
+ * **contents**: used internally by Math-Pack
618
+
619
+ #### ARG (F847H, 16)
620
+ * **contents**: area to set the value to be calculated with DAC (F7F6H)
621
+
622
+ #### RNDX (F857H, 8)
623
+ * **contents**: stores last random number in double precision real number; set by RND function
624
+
625
+
626
+ <p>&nbsp;</p>
627
+
628
+ ## Data area used by BASIC interpreter
629
+
630
+ #### MAXFIL (F85FH, 1)
631
+ * **contents**: maximum file number; set by MAXFILES statement
632
+
633
+ #### FILTAB (F860H, 2)
634
+ * **contents**: starting address of file data area
635
+
636
+ #### NULBUF (F862H, 2)
637
+ * **contents**: points to buffer used in SAVE and LOAD by BASIC interpreter
638
+
639
+ #### PTRFIL (F864H, 2)
640
+ * **contents**: address of file data of currently accessing file
641
+
642
+ #### RUNFLG (F866H, 2)
643
+ * **contents**: non-zero value if program was loaded and executed; used by R option of LOAD statement
644
+
645
+ #### FILNAM (F866H, 11)
646
+ * **contents**: area to store filename
647
+
648
+ #### FILNM2 (F871H, 11)
649
+ * **contents**: area to store filename
650
+
651
+ #### NLONLY (F87CH, 1)
652
+ * **contents**: non-zero value if program is being loaded
653
+
654
+ #### SAVEND (F87DH, 2)
655
+ * **contents**: end address of assembly language program to be saved
656
+
657
+ #### FNKSTR (F87FH, 160)
658
+ * **contents**: area to store function key string (16 character x 10)
659
+
660
+ #### CGPNT (F91FH, 3)
661
+ * **contents**: address to store character font on ROM
662
+
663
+ #### NAMBAS (F922H, 2)
664
+ * **contents**: base address of current pattern name table
665
+
666
+ #### CGPBAS (F924H, 2)
667
+ * **contents**: base address of current pattern generator table
668
+
669
+ #### PATBAS (F926H, 2)
670
+ * **contents**: base address of current sprite generator table
671
+
672
+ #### ATRBAS (F928H, 2)
673
+ * **contents**: base address of current sprite attribute table
674
+
675
+ #### CLOC (F92AH, 2)
676
+ * **contents**: used internally by graphic routine
677
+
678
+ #### CMASK (F92CH, 1)
679
+ * **contents**: used internally by graphic routine
680
+
681
+ #### MINDEL (F92DH, 1)
682
+ * **contents**: used internally by graphic routine
683
+
684
+
685
+ #### MAXDEL (F92FH, 2)
686
+ * **contents**: used internally by graphic routine
687
+
688
+
689
+ <p>&nbsp;</p>
690
+
691
+ ## Data area used by CIRCLE statement
692
+
693
+ #### ASPECT (F931H, 2)
694
+ * **contents**: aspect ratio of the circle; set by `<ratio>` of CIRCLE statement
695
+
696
+ #### CENCNT (F933H, 2)
697
+ * **contents**: used internally by CIRCLE statement
698
+
699
+ #### CLINEF (F935H, 1)
700
+ * **contents**: flag whether a line is drawn toward the center; specified by `<angle>` of CIRCLE statement
701
+
702
+ #### CNPNTS (F936H, 2)
703
+ * **contents**: point to be plotted
704
+
705
+ #### CPLOTF (F938H, 1)
706
+ * **contents**: used internally by CIRCLE statement
707
+
708
+ #### CPCNT (F939H, 2)
709
+ * **contents**: number of one eight of the circle
710
+
711
+ #### CPNCNT8 (F93BH, 2)
712
+ * **contents**: used internally by CIRCLE statement
713
+
714
+ #### CPCSUM (F93DH, 2)
715
+ * **contents**: used internally by CIRCLE statement
716
+
717
+ #### CSTCNT (F93FH, 2)
718
+ * **contents**: used internally by CIRCLE statement
719
+
720
+ #### CSCLXY (F941H, 1)
721
+ * **contents**: scale of x and y
722
+
723
+ #### CSAVEA (F942H, 2)
724
+ * **contents**: reservation area of ADVGRP
725
+
726
+ #### CSAVEM (F944H, 1)
727
+ * **contents**: reservation area of ADVGRP
728
+
729
+ #### CXOFF (F945H, 2)
730
+ * **contents**: x offset from the center
731
+
732
+ #### CYOFF (F947H, 2)
733
+ * **contents**: y offset from the center
734
+
735
+
736
+ <p>&nbsp;</p>
737
+
738
+ ## Data area used in PAINT statement
739
+
740
+ #### LOHMSK (F949H, 1)
741
+ * **contents**: used internally by PAINT statement
742
+
743
+ #### LOHDIR (F94AH, 1)
744
+ * **contents**: used internally by PAINT statement
745
+
746
+ #### LOHADR (F94BH, 2)
747
+ * **contents**: used internally by PAINT statement
748
+
749
+ #### LOHCNT (F94DH, 2)
750
+ * **contents**: used internally by PAINT statement
751
+
752
+ #### SKPCNT (F94FH, 2)
753
+ * **contents**: skip count
754
+
755
+ #### MIVCNT (F951H, 2)
756
+ * **contents**: movement count
757
+
758
+ #### PDIREC (F953H, 1)
759
+ * **contents**: direction of the paint
760
+
761
+ #### LFPROG (F954H, 1)
762
+ * **contents**: used internally by PAINT statement
763
+
764
+ #### RTPROG (F955H, 1)
765
+ * **contents**: used internally by PAINT statement
766
+
767
+
768
+ <p>&nbsp;</p>
769
+
770
+ ## Data area used in PLAY statement
771
+
772
+ #### MCLTAB (F956H, 2)
773
+ * **contents**: points to the top of the table of PLAY macro or DRAW macro
774
+
775
+ #### MCLFLG (F958H, 1)
776
+ * **contents**: assignment of PLAY/DRAW
777
+
778
+ #### QUETAB (F959H, 24)
779
+ * **contents**: queue table
780
+ * +0: PUT offset
781
+ * +1: GET offset
782
+ * +2: backup character
783
+ * +3: queue length
784
+ * +4: queue address
785
+ * +5: queue address
786
+
787
+ #### QUEBAK (F971H, 4)
788
+ * **contents**: used in BCKQ
789
+
790
+ #### VOICAQ (F975H, 128)
791
+ * **contents**: queue of voice 1 (1 = a)
792
+
793
+ #### VOICBQ (F9F5H, 128)
794
+ * **contents**: queue of voice 2 (2 = b)
795
+
796
+ #### VOICCQ (FA75H, 128)
797
+ * **contents**: queue of voice 3 (3 = c)
798
+
799
+
800
+ <p>&nbsp;</p>
801
+
802
+ ## Work area added in MSX2
803
+
804
+ #### DPPAGE (FAF5H, 1)
805
+ * **contents**: display page number
806
+
807
+ #### ACPAGE (FAF6H, 1)
808
+ * **contents**: active page number
809
+
810
+ #### AVCSAV (FAF7H, 1)
811
+ * **contents**: reserves AV control port
812
+
813
+ #### EXBRSA (FAF8H, 1)
814
+ * **contents**: SUB-ROM slot address
815
+
816
+ #### CHRCNT (FAF9H, 1)
817
+ * **contents**: character counter in the buffer; used in Roman-kana translation (value is 0 `<`=n `<`=2)
818
+
819
+ #### ROMA (FAFAH, 2)
820
+ * **contents**: area to store character in the buffer; used in Roman-kana translation (Japan version only)
821
+
822
+ #### MODE (FAFCH, 1)
823
+ * **contents**: mode switch for VRAM size
824
+
825
+ ```
826
+ (0000WVV0)
827
+ ---
828
+ |||
829
+ |++--- 00 = 16K VRAM
830
+ | 01 = 64K VRAM
831
+ | 11 = 128K VRAM
832
+ |
833
+ +----- 1 = mask, 0 = no mask
834
+ Flags whether to specify VRAM address
835
+ ANDed with 3FFFH in SCREEN 0 to 3;
836
+ in SCREEN 4 to 8, never masked
837
+ ```
838
+
839
+ #### NORUSE (FAFDH, 1)
840
+ * **contents**: unused
841
+
842
+ #### XSAVE (FAFEH, 2)
843
+ * **contents**: [ I OOOOOOO XXXXXXXX ]
844
+
845
+ #### YSAVE (FB00H, 2)
846
+ * **contents**: [ x OOOOOOO YYYYYYYY ]
847
+
848
+ ```
849
+ I = 1 lightpen interrupt request
850
+ OOOOOOO = unsigned offset
851
+ XXXXXXX = X-coordinate
852
+ YYYYYYY = Y-coordinate
853
+ ```
854
+
855
+ #### LOGOPR (FB02H, 1)
856
+ * **contents**: logical operation code
857
+
858
+
859
+ <p>&nbsp;</p>
860
+
861
+ ## Data area used by RS-232C
862
+
863
+ #### RSTMP (FB03H, 50)
864
+ * **contents**: work area for RS-232C or disk
865
+
866
+ #### TOCNT (FB03H, 1)
867
+ * **contents**: used internally by RS-232C routine
868
+
869
+ #### RSFCB (FB04H, 2)
870
+ * **contents**:
871
+
872
+ * FB04H + 0: LOW address of RS-232C
873
+ * FB04H + 1: HIGH address of RS-232C
874
+
875
+ #### RSIQLN (FB06H, 5)
876
+ * **contents**: used internally by RS-232C routine
877
+
878
+ #### MEXBIH (FB07H, 5)
879
+ * **contents**:
880
+ * FB07H +0: RST 30H (0F7H)
881
+ * FB07H +1: byte data
882
+ * FB07H +2: (Low)
883
+ * FB07H +3: (High)
884
+ * FB07H +4: RET (0C9H)
885
+
886
+ #### OLDSTT (FB0CH, 5)
887
+ * **contents**:
888
+ * FB0CH +0: RST 30H (0F7H)
889
+ * FB0CH +1: byte data
890
+ * FB0CH +2: (Low)
891
+ * FB0CH +3: (High)
892
+ * FB0CH +4: RET (0C9H)
893
+
894
+ #### OLDINT (FB12H, 5)
895
+ * **contents**:
896
+ * FB12H +0: RST 30H (0F7H)
897
+ * FB12H +1: byte data
898
+ * FB12H +2: (Low)
899
+ * FB12H +3: (High)
900
+ * FB12H +4: RET (0C9H)
901
+
902
+ #### DEVNUM (FB17H, 1)
903
+ * **contents**: used internally by RS-232C routine
904
+
905
+ #### DATCNT (FB18H, 3)
906
+ * **contents**:
907
+ * FB18H +0: byte data
908
+ * FB18H +1: byte pointer
909
+ * FB18H +2: byte pointer
910
+
911
+ #### ERRORS (FB1BH, 1)
912
+ * **contents**: used internally by RS-232C routine
913
+
914
+ #### FLAGS (FB1CH, 1)
915
+ * **contents**: used internally by RS-232C routine
916
+
917
+ #### ESTBLS (FB1DH, 1)
918
+ * **contents**: used internally by RS-232C routine
919
+
920
+ #### COMMSK (FB1EH, 1)
921
+ * **contents**: used internally by RS-232C routine
922
+
923
+ #### LSTCOM (FB1FH, 1)
924
+ * **contents**: used internally by RS-232C routine
925
+
926
+ #### LSTMOD (FB20H, 1)
927
+ * **contents**: used internally by RS-232C routine
928
+
929
+ <p>&nbsp;</p>
930
+
931
+ ## Data area used by DOS
932
+
933
+ #### reserved (FB21H to FB34H)
934
+ * **contents**: used by DOS
935
+
936
+
937
+ <p>&nbsp;</p>
938
+
939
+ ## Data area used by PLAY statement
940
+
941
+ _(the following is the same as with MSX1)_
942
+
943
+ #### PRSCNT (FB35H, 1)
944
+ * **contents**:
945
+ * D1 to D0: string parse
946
+ * D7 = 0: 1 pass
947
+
948
+ #### SAVSP (FB36H, 2)
949
+ * **contents**: reserves stack pointer in play
950
+
951
+ #### VOICEN (FB38H, 1)
952
+ * **contents**: current interpreted voice
953
+
954
+ #### SAVVOL (FB39H, 2)
955
+ * **contents**: reserves volume for the pause
956
+
957
+ #### MCLLEN (FB3BH, 1)
958
+ * **contents**: used internally by PLAY statement
959
+
960
+ #### MCLPTR (FB3CH, 1)
961
+ * **contents**: used internally by PLAY statement
962
+
963
+ #### QUEUEN (FB3EH, 1)
964
+ * **contents**: used internally by PLAY statement
965
+
966
+ #### MUSICF (FB3FH, 1)
967
+ * **contents**: interrupt flag for playing music
968
+
969
+ #### PLYCNT (FB40H, 1)
970
+ * **contents**: number of PLAY statements stored in the queue
971
+
972
+
973
+ <p>&nbsp;</p>
974
+
975
+ ### Offset from voice static data area
976
+
977
+ _(offset is in decimal)_
978
+
979
+ #### METREX (+0, 2)
980
+ * **contents**: timer count down
981
+
982
+ #### VCXLEN (+2, 1)
983
+ * **contents**: MCLLEN for this voice
984
+
985
+ #### VCXPTR (+3, 2)
986
+ * **contents**: MCLPTR for this voice
987
+
988
+ #### VCXSTP (+5, 2)
989
+ * **contents**: reserves the top of the stack pointer
990
+
991
+ #### QLENGX (+7, 1)
992
+ * **contents**: number of bytes stored in the queue
993
+
994
+ #### NTICSX (+8, 2)
995
+ * **contents**: new count down
996
+
997
+ #### TONPRX (+10, 2)
998
+ * **contents**: area to set tone period
999
+
1000
+ #### AMPPRX (+12, 1)
1001
+ * **contents**: discrimination of volume and enveloppe
1002
+
1003
+ #### ENVPRX (+13, 2)
1004
+ * **contents**: area to set enveloppe period
1005
+
1006
+ #### OCTAVX (+15, 1)
1007
+ * **contents**: area to set octave
1008
+
1009
+ #### NOTELX (+16, 1)
1010
+ * **contents**: area to set tone length
1011
+
1012
+ #### TEMPOX (+17, 1)
1013
+ * **contents**: area to set tempo
1014
+
1015
+ #### VOLUMX (+18, 1)
1016
+ * **contents**: area to set volume
1017
+
1018
+ #### ENVLPX (+19, 14)
1019
+ * **contents**: area to set enveloppe wave form
1020
+
1021
+ #### MCLSTX (+33, 3)
1022
+ * **contents**: reservation area of stack
1023
+
1024
+ #### MCLSEX (+36, 1)
1025
+ * **contents**: initialisation stack
1026
+
1027
+ #### VCBSIZ (+37, 1)
1028
+ * **contents**: static buffer size
1029
+
1030
+
1031
+ <p>&nbsp;</p>
1032
+
1033
+ ### Voice static data area
1034
+
1035
+
1036
+ #### VCBA (FB41H, 37)
1037
+ * **contents**: static data for voice 0
1038
+
1039
+ #### VCBB (FB66H, 37)
1040
+ * **contents**: static data for voice 1
1041
+
1042
+ #### VCBC (FB8BH, 37)
1043
+ * **contents**: static data for voice 2
1044
+
1045
+
1046
+ <p>&nbsp;</p>
1047
+
1048
+ ## Data area
1049
+
1050
+ #### ENSTOP (FBB0H, 1)
1051
+ * **contents**: flag to enable warm start by [SHIFT+Ctrl+Kana key] (0 = disable, otherwise enable)
1052
+
1053
+ #### BASROM (FBB1H, 1)
1054
+ * **contents**: indicates BASIC text location (0 = on RAM, otherwise in ROM)
1055
+
1056
+ #### LINTTB (FBB2H, 24)
1057
+ * **contents**: line terminal table; area to keep information about each line of text screen
1058
+
1059
+ #### FSTPOS (FBCAH, 2)
1060
+ * **contents**: first character location of line from INLIN (00B1H) of BIOS
1061
+
1062
+ #### CODSAV (FBCCH, 1)
1063
+ * **contents**: area to reserve the character where the cursor is stacked
1064
+
1065
+ #### FNKSW1 (FBCDH, 1)
1066
+ * **contents**: indicates which function key is displayed at KEY ON (1 = F1 to F5 is displayed, 0 = F6 to F10 is displayed)
1067
+
1068
+ #### FNKFLG (FBCEH, 10)
1069
+ * **contents**: area to allow, inhibit, or stop the execution of the line defined in ON KEY GOSUB statement, or to reserve it for each function key; set by KEY(n)ON/OFF/STOP statement (0 = KEY(n)OFF/STOP, 1= KEY(n)ON)
1070
+
1071
+ #### ONGSBF (FBD8H, 1)
1072
+ * **contents**: flag to indicate whether event waiting in TRPTBL (FC4CH) occurred
1073
+
1074
+ #### CLIKFL (FBD9H, 1)
1075
+ * **contents**: key click flag
1076
+
1077
+ #### OLDKEY (FBDAH, 11)
1078
+ * **contents**: key matrix status (old)
1079
+
1080
+ #### NEWKEY (FBE5H, 11)
1081
+ * **contents**: key matrix status (new)
1082
+
1083
+ #### KEYBUF (FBF0H, 40)
1084
+ * **contents**: key code buffer
1085
+
1086
+ #### LINWRK (FC18H, 40)
1087
+ * **contents**: temporary reservation location used by screen handler
1088
+
1089
+ #### PATWRK (FC40H, 8)
1090
+ * **contents**: temporary reservation location used by pattern converter
1091
+
1092
+ #### BOTTOM (FC48H, 2)
1093
+ * **contents**: installed RAM starting (low) address; ordinarily 8000H in MSX2
1094
+
1095
+ #### HIMEM (FC4AH, 2)
1096
+ * **contents**: highest address of available memory; set by `<memory upper limit>` of CLEAR statement
1097
+
1098
+ #### TRAPTBL (FC4CH, 78)
1099
+ * **contents**: trap table used to handle interrupt; one table consists of three bytes, where first byte indicates ON/OFF/STOP status and the rest indicate the text address to be jumped to
1100
+ * FC4CH to FC69H (3 * 10 bytes): used in ON KEY GOSUB
1101
+ * FC6AH to FC6CH (3 * 1 byte): used in ON STOP GOSUB
1102
+ * FC6DH to FC6FH (3 * 1 byte): used in ON SPRITE GOSUB
1103
+ * FC70H to FC7EH (3 * 5 bytes): used in ON STRIG GOSUB
1104
+ * FC7FH to FC81H (3 * 1 byte): used in ON INTERVAL GOSUB
1105
+ * FC82H to FC99H: for expansion
1106
+
1107
+ #### RTYCNT (FC9AH, 1)
1108
+ * **contents**: used internally by BASIC
1109
+
1110
+ #### INTFLG (FC9BH, 1)
1111
+ * **contents**: if Ctrl+STOP is pressed, setting 03H here causes a stop
1112
+
1113
+ #### PADY (FC9CH, 1)
1114
+ * **contents**: Y-coordinate of the paddle)
1115
+
1116
+ #### PADX (FC9DH, 1)
1117
+ * **contents**: X-coordinate of the paddle)
1118
+
1119
+ #### JIFFY (FC9EH, 2)
1120
+ * **contents**: used internally by PLAY statement
1121
+
1122
+ #### INTVAL (FCA0H, 2)
1123
+ * **contents**: interval period; set by ON INTERVAL GOSUB statement
1124
+
1125
+ #### INTCNT (FCA2H, 2)
1126
+ * **contents**: counter for interval
1127
+
1128
+ #### LOWLIM (FCA4H, 1)
1129
+ * **contents**: used during reading from cassette tape
1130
+
1131
+ #### WINWID (FCA5H, 1)
1132
+ * **contents**: used during reading from cassette tape
1133
+
1134
+ #### GRPHED (FCA6H, 1)
1135
+ * **contents**: flag to send graphic character (1 = graphic character, 0 = normal character)
1136
+
1137
+ #### ESCCNT (FCA7H, 1)
1138
+ * **contents**: area to count from escape code
1139
+
1140
+ #### INSFLG (FCA8H, 1)
1141
+ * **contents**: flag to indicate insert mode (0 = normal mode, otherwise = insert mode)
1142
+
1143
+ #### CSRSW (FCA9H, 1)
1144
+ * **contents**: whether cursor is displayed (0 = no, otherwise = yes); set by `<cursor swicth>` of LOCATE statement
1145
+
1146
+ #### CSTYLE (FCAAH, 1)
1147
+ * **contents**: cursor shape (0 = block, otherwise = underline)
1148
+
1149
+ #### CAPST (FCABH, 1)
1150
+ * **contents**: CAPS key status (0 = CAP OFF, otherwise = CAP ON)
1151
+
1152
+ #### KANAST (FCACH, 1)
1153
+ * **contents**: kana key status (0 = kaka OFF, otherwise = kana ON)
1154
+
1155
+ #### KANAMD (FCADH, 1)
1156
+ * **contents**: kana key arrangement status (0 = 50-sound arrangement, otherwise = JIS arrangement)
1157
+
1158
+ #### FLBMEM (FCAEH, 1)
1159
+ * **contents**: 0 when loading BASIC program
1160
+
1161
+ #### SCRMOD (FCAFH, 1)
1162
+ * **contents**: current screen mode number
1163
+
1164
+ #### OLDSCR (FCB0H, 1)
1165
+ * **contents**: screen mode reservation area
1166
+
1167
+ #### CASPRV (FCB1H, 1)
1168
+ * **contents**: character reservation area used by CAS:
1169
+
1170
+ #### BRDATR (FCB2H, 1)
1171
+ * **contents**: border colour code used by PAINT; set by `<border colour>` in PAINT statement
1172
+
1173
+ #### GXPOS (FCB3H, 2)
1174
+ * **contents**: X-coordinate
1175
+
1176
+ #### GYPOS (FCB5H, 2)
1177
+ * **contents**: Y-coordinate
1178
+
1179
+ #### GRPACX (FCB7H, 2)
1180
+ * **contents**: graphic accumulator (X-coordinate)
1181
+
1182
+ #### GRPACY (FCB9H, 2)
1183
+ * **contents**: graphic accumulator (Y-coordinate)
1184
+
1185
+ #### DRWFLG (FCBBH, 1)
1186
+ * **contents**: flag used in DRAW statement
1187
+
1188
+ #### DRWSCL (FCBCH, 1)
1189
+ * **contents**: DRAW scaling factor (0 = no scaling, otherwise = scaling)
1190
+
1191
+ #### DRWANG (FCBDH, 1)
1192
+ * **contents**: angle at DRAW
1193
+
1194
+ #### RUNBNF (FCBEH, 1)
1195
+ * **contents**: flag to indicate BLOAD in progress, BSAVE in progress, or neither
1196
+
1197
+ #### SAVENT (FCBFH, 2)
1198
+ * **contents**: starting address of BSAVE
1199
+
1200
+ #### EXPTBL (FCC1H, 4)
1201
+ * **contents**: flag table for expansion slot; whether the slot is expanded
1202
+
1203
+ #### SLTTBL (FCC5H, 4)
1204
+ * **contents**: current slot selection status for each expansion slot register
1205
+
1206
+ #### SLTATR (FCC9H, 64)
1207
+ * **contents**: reserves attribute for each slot
1208
+
1209
+ #### SLTWRK (FD09H, 128)
1210
+ * **contents**: allocates specific work area for each slot
1211
+
1212
+ #### PROCNM (FD89H, 16)
1213
+ * **contents**: stores name of expanded statement (after CALL statement) or expansion device (after OPEN); 0 indicates the end
1214
+
1215
+ #### DEVICE (FD99H, 1)
1216
+ * **contents**: used to identify cartridge device
1217
+
1218
+
1219
+ <p>&nbsp;</p>
1220
+
1221
+ ## Hooks
1222
+
1223
+ #### H.KEYI (FD9AH)
1224
+ * **meaning**: beginning of MSXIO interrupt handling
1225
+ * **purpose**: adds the interrupt operation such as RS-232C
1226
+
1227
+ #### H.TIMI (FD9FH)
1228
+ * **meaning**: MSXIO timer interrupt handling
1229
+ * **purpose**: adds the timer interrupt handling
1230
+
1231
+ #### H.CHPH (FDA4H)
1232
+ * **meaning**: beginning of MSXIO CHPUT (one character output)
1233
+ * **purpose**: connects other console device
1234
+
1235
+ #### H.DSPC (FDA9H)
1236
+ * **meaning**: beginning of MSXIO DSPCSR (cursor display)
1237
+ * **purpose**: connects other console device
1238
+
1239
+ #### H.ERAC (FDAEH)
1240
+ * **meaning**: beginning of MSXIO ERACSR (erase cursor)
1241
+ * **purpose**: connects other console device
1242
+
1243
+ #### H.DSPF (FDB3H)
1244
+ * **meaning**: beginning of MSXIO DSPFNK (function key display)
1245
+ * **purpose**: connects other console device
1246
+
1247
+ #### H.ERAF (FDB8H)
1248
+ * **meaning**: beginning of MSXIO ERAFNK (erase function key)
1249
+ * **purpose**: connects other console device
1250
+
1251
+ #### H.TOTE (FDBDH)
1252
+ * **meaning**: beginning of MSXIO TOTEXT (set screen in text mode)
1253
+ * **purpose**: connects other console device
1254
+
1255
+ #### H.CHGE (FDC2H)
1256
+ * **meaning**: beginning of MSXIO CHGET (get one character)
1257
+ * **purpose**: connects other console device
1258
+
1259
+ #### H.INIP (FDC7H)
1260
+ * **meaning**: beginning of MSXIO INIPAT (character pattern initialisation)
1261
+ * **purpose**: uses other character set
1262
+
1263
+ #### H.KEYC (FDCCH)
1264
+ * **meaning**: beginning of MSXIO KEYCOD (key code translation)
1265
+ * **purpose**: uses other key arrangement
1266
+
1267
+ #### H.KYEA (FDD1H)
1268
+ * **meaning**: beginning of MSXIO NMI routine (Key Easy)
1269
+ * **purpose**: uses other key arrangement
1270
+
1271
+ #### H.NMI (FDD6H)
1272
+ * **meaning**: beginning of MSXIO NMI (non-maskable interrupt)
1273
+ * **purpose**: handles NMI
1274
+
1275
+ #### H.PINL (FDDBH)
1276
+ * **meaning**: beginning of MSXIO PINLIN (one line input)
1277
+ * **purpose**: uses other console input device or other input method
1278
+
1279
+ #### H.QINL (FDE0H)
1280
+ * **meaning**: beginning of MSXINL QINLIN (one line input displaying "?")
1281
+ * **purpose**: uses other console input device or other input method
1282
+
1283
+ #### H.INLI (FDE5H)
1284
+ * **meaning**: beginning of MSXINL INLIN (one line input)
1285
+ * **purpose**: uses other console input device or other input method
1286
+
1287
+ #### H.ONGO (FDEAH)
1288
+ * **meaning**: beginning of MSXSTS INGOTP (ON GOTO)
1289
+ * **purpose**: uses other interrupt handling device
1290
+
1291
+ #### H.DSKO (FDEFH)
1292
+ * **meaning**: beginning of MSXSTS DSKO$ (disk output)
1293
+ * **purpose**: connects disk device
1294
+
1295
+ #### H.SETS (FDF4H)
1296
+ * **meaning**: beginning of MSXSTS SETS (set attribute)
1297
+ * **purpose**: connects disk device
1298
+
1299
+ #### H.NAME (FDF9H)
1300
+ * **meaning**: beginning of MSXSTS NAME (rename)
1301
+ * **purpose**: connects disk device
1302
+
1303
+ #### H.KILL (FDFEH)
1304
+ * **meaning**: beginning of MSXSTS KILL (delete file)
1305
+ * **purpose**: connects disk device
1306
+
1307
+ #### H.IPL (FE03H)
1308
+ * **meaning**: beginning of MSXSTS IPL (initial program loading)
1309
+ * **purpose**: connects disk device
1310
+
1311
+ #### H.COPY (FE08H)
1312
+ * **meaning**: beginning of MSXSTS COPY (file copy)
1313
+ * **purpose**: connects disk device
1314
+
1315
+ #### H.CMD (FE0DH)
1316
+ * **meaning**: beginning of MSXSTS CMD (expanded command)
1317
+ * **purpose**: connects disk device
1318
+
1319
+ #### H.DSKF (FE12H)
1320
+ * **meaning**: beginning of MSXSTS DSKF (unusde disk space)
1321
+ * **purpose**: connects disk device
1322
+
1323
+ #### H.DSKI (FE17H)
1324
+ * **meaning**: beginning of MSXSTS DSKI (disk input)
1325
+ * **purpose**: connects disk device
1326
+
1327
+ #### H.ATTR (FE1CH)
1328
+ * **meaning**: beginning of MSXSTS ATTR$ (attribute)
1329
+ * **purpose**: connects disk device
1330
+
1331
+ #### H.LSET (FE21H)
1332
+ * **meaning**: beginning of MSXSTS LSET (left-padded assignment)
1333
+ * **purpose**: connects disk device
1334
+
1335
+ #### H.RSET (FE26H)
1336
+ * **meaning**: beginning of MSXSTS RSET (right-padded assignment)
1337
+ * **purpose**: connects disk device
1338
+
1339
+ #### H.FIEL (FE2BH)
1340
+ * **meaning**: beginning of MSXSTS FIELD (field)
1341
+ * **purpose**: connects disk device
1342
+
1343
+ #### H.MKI$ (FE30H)
1344
+ * **meaning**: beginning of MSXSTS MKI$ (create integer)
1345
+ * **purpose**: connects disk device
1346
+
1347
+ #### H.MKS$ (FE35H)
1348
+ * **meaning**: beginning of MSXSTS MKS$ (create single precision real)
1349
+ * **purpose**: connects disk device
1350
+
1351
+ #### H.MKD$ (FE3AH)
1352
+ * **meaning**: beginning of MSXSTS MKD$ (create double precision real)
1353
+ * **purpose**: connects disk device
1354
+
1355
+ #### H.CVI (FE3FH)
1356
+ * **meaning**: beginning of MSXSTS CVI (convert integer)
1357
+ * **purpose**: connects disk device
1358
+
1359
+ #### H.CVS (FE44H)
1360
+ * **meaning**: beginning of MSXSTS CVS (convert single precision real)
1361
+ * **purpose**: connects disk device
1362
+
1363
+ #### H.CVD (FE49H)
1364
+ * **meaning**: beginning of MSXSTS CVS (convert double precision real)
1365
+ * **purpose**: connects disk device
1366
+
1367
+ #### H.GETP (FE4EH)
1368
+ * **meaning**: SPDSK GETPTR (get file pointer)
1369
+ * **purpose**: connects disk device
1370
+
1371
+ #### H.SETF (FE53H)
1372
+ * **meaning**: SPCDSK SETFIL (set file pointer)
1373
+ * **purpose**: connects disk device
1374
+
1375
+ #### H.NOFO (FE58H)
1376
+ * **meaning**: SPDSK NOFOR (OPEN statement without FOR)
1377
+ * **purpose**: connects disk device
1378
+
1379
+ #### H.NULO (FE5DH)
1380
+ * **meaning**: SPCDSK NULOPN (open unused file)
1381
+ * **purpose**: connects disk device
1382
+
1383
+ #### H.NTFL (FE62H)
1384
+ * **meaning**: SPCDSK NTFLO (file number is not 0)
1385
+ * **purpose**: connects disk device
1386
+
1387
+ #### H.MERG (FE67H)
1388
+ * **meaning**: SPCDSK MERGE (program file merge)
1389
+ * **purpose**: connects disk device
1390
+
1391
+ #### H.SAVE (FE6CH)
1392
+ * **meaning**: SPCDSK SAVE (save)
1393
+ * **purpose**: connects disk device
1394
+
1395
+ #### H.BINS (FE71H)
1396
+ * **meaning**: SPCDSK BINSAV (save in binary)
1397
+ * **purpose**: connects disk device
1398
+
1399
+ #### H.BINL (FE76H)
1400
+ * **meaning**: SPCDSK BINLOD (load in binary)
1401
+ * **purpose**: connects disk device
1402
+
1403
+ #### H.FILE (FD7BH)
1404
+ * **meaning**: SPCDSK FILES (displey filename)
1405
+ * **purpose**: connects disk device
1406
+
1407
+ #### H.DGET (FE80H)
1408
+ * **meaning**: SPCDSK DGET (disk GET)
1409
+ * **purpose**: connects disk device
1410
+
1411
+ #### H.FILO (FE85H)
1412
+ * **meaning**: SPCDSK FILOU1 (file output)
1413
+ * **purpose**: connects disk device
1414
+
1415
+ #### H.INDS (FE8AH)
1416
+ * **meaning**: SPCDSK INDSKC (disk attribute input)
1417
+ * **purpose**: connects disk device
1418
+
1419
+ #### H.RSLF (FE8FH)
1420
+ * **meaning**: SPCDSK; re-select previous drive
1421
+ * **purpose**: connects disk device
1422
+
1423
+ #### H.SAVD (FE94H)
1424
+ * **meaning**: SPCDSK; reserve current disk
1425
+ * **purpose**: connects disk device
1426
+
1427
+ #### H.LOC (FE99H)
1428
+ * **meaning**: SPCDSK LOC function (indicate location)
1429
+ * **purpose**: connects disk device
1430
+
1431
+ #### H.LOF (FE9EH)
1432
+ * **meaning**: SPCDSK LOC function (file length)
1433
+ * **purpose**: connects disk device
1434
+
1435
+ #### H.EOF (FEA3H)
1436
+ * **meaning**: SPCDSK EOF function (end of file)
1437
+ * **purpose**: connects disk device
1438
+
1439
+ #### H.FPOS (FEA8H)
1440
+ * **meaning**: SPCDSK FPOS function (file location)
1441
+ * **purpose**: connects disk device
1442
+
1443
+ #### H.BAKU (FEADH)
1444
+ * **meaning**: SPCDSK BAKUPT (backup)
1445
+ * **purpose**: connects disk device
1446
+
1447
+ #### H.PARD (FEB2H)
1448
+ * **meaning**: SPCDEV PARDEV (get peripheral name)
1449
+ * **purpose**: expands logical device name
1450
+
1451
+ #### H.NODE (FEB7H)
1452
+ * **meaning**: SPCDEV NODEVN (no device name)
1453
+ * **purpose**: sets default device name to other device
1454
+
1455
+ #### H.POSD (FEBCH)
1456
+ * **meaning**: SPCDEV POSDSK
1457
+ * **purpose**: connects disk device
1458
+
1459
+ #### H.DEVN (FEC1H)
1460
+ * **meaning**: SPCDEV DEVNAM (process device name)
1461
+ * **purpose**: expands logical device name
1462
+
1463
+ #### H.GEND (FEC6H)
1464
+ * **meaning**: SPCDEV GENDSP (FEC6H)
1465
+ * **purpose**: expands logical device name
1466
+
1467
+ #### H.RUNC (FECBH)
1468
+ * **meaning**: BIMISC RUNC (clear for RUN)
1469
+
1470
+ #### H.CLEAR (FED0H)
1471
+ * **meaning**: BIMISC CLEARC (clear for CLEAR statement)
1472
+
1473
+ #### H.LOPD (FED5H)
1474
+ * **meaning**: BIMISC LOPDFT (set loop and default value)
1475
+ * **purpose**: uses other default value for variable
1476
+
1477
+ #### H.STKE (FEDAH)
1478
+ * **meaning**: BIMISC STKERR (stack error)
1479
+
1480
+ #### H.ISFL (FEDFH)
1481
+ * **meaning**: BIMISC ISFLIO (file input-output or not)
1482
+
1483
+ #### H.OUTD (FEE4H)
1484
+ * **meaning**: BIO OUTDO (execute OUT)
1485
+
1486
+ #### H.CRDO (FEE9H)
1487
+ * **meaning**: BIO CRDO (execute CRLF)
1488
+
1489
+ #### H.DSKC (FEEEH)
1490
+ * **meaning**: BIO DSKCHI (input disk attribute)
1491
+
1492
+ #### H.DOGR (FEF3H)
1493
+ * **meaning**: GENGRP DOGRPH (execute graphic operation)
1494
+
1495
+ #### H.PRGE (FEF8H)
1496
+ * **meaning**: BINTRP PRGEND (program end)
1497
+
1498
+ #### H.ERRP (FEFDH)
1499
+ * **meaning**: BINTRP ERRPTR (error display)
1500
+
1501
+ #### H.ERRF (FF02H)
1502
+ * **meaning**: BINTRP
1503
+
1504
+ #### H.READ (FF07H)
1505
+ * **meaning**: BINTRP READY
1506
+
1507
+ #### H.MAIN (FF0CH)
1508
+ * **meaning**: BINTRP MAIN
1509
+
1510
+ #### H.DIRD (FF11H)
1511
+ * **meaning**: BINTRP DIRDO (execute direct statement)
1512
+
1513
+ #### H.FINI (FF16H)
1514
+ * **meaning**: BINTRP
1515
+
1516
+ #### H.FINE (FF1BH)
1517
+ * **meaning**: BINTRP
1518
+
1519
+ #### H.CRUN (FF20H)
1520
+ * **meaning**: BINTRP
1521
+
1522
+ #### H.CRUN (FF20H)
1523
+ * **meaning**: BINTRP
1524
+
1525
+ #### H.CRUS (FF25H)
1526
+ * **meaning**: BINTRP
1527
+
1528
+ #### H.ISRE (FF2AH)
1529
+ * **meaning**: BINTRP
1530
+
1531
+ #### H.NTFN (FF2FH)
1532
+ * **meaning**: BINTRP
1533
+
1534
+ #### H.NOTR (FF34H)
1535
+ * **meaning**: BINTRP
1536
+
1537
+ #### H.SNGF (FF39H)
1538
+ * **meaning**: BINTRP
1539
+
1540
+ #### H.NEWS (FF3EH)
1541
+ * **meaning**: BINTRP
1542
+
1543
+ #### H.GONE (FF43H)
1544
+ * **meaning**: BINTRP
1545
+
1546
+ #### H.CHRG (FF48H)
1547
+ * **meaning**: BINTRP
1548
+
1549
+ #### H.RETU (FF4DH)
1550
+ * **meaning**: BINTRP
1551
+
1552
+ #### H.PRTF (FF52H)
1553
+ * **meaning**: BINTRP
1554
+
1555
+ #### H.COMP (FF57H)
1556
+ * **meaning**: BINTRP
1557
+
1558
+ #### H.FINP (FF5CH)
1559
+ * **meaning**: BINTRP
1560
+
1561
+ #### H.TRMN (FF61H)
1562
+ * **meaning**: BINTRP
1563
+
1564
+ #### H.FRME (FF66H)
1565
+ * **meaning**: BINTRP
1566
+
1567
+ #### H.NTPL (FF6BH)
1568
+ * **meaning**: BINTRP
1569
+
1570
+ #### H.EVAL (FF70H)
1571
+ * **meaning**: BINTRP
1572
+
1573
+ #### H.OKNO (FF75H)
1574
+ * **meaning**: BINTRP
1575
+
1576
+ #### H.FING (FF7AH)
1577
+ * **meaning**: BINTRP
1578
+
1579
+ #### H.ISMI (FF7FH)
1580
+ * **meaning**: BINTRP ISMID$ (MID$ or not)
1581
+
1582
+ #### H.WIDT (FF84H)
1583
+ * **meaning**: BINTRP WIDTHS (WIDTH)
1584
+
1585
+ #### H.LIST (FF89H)
1586
+ * **meaning**: BINTRP LIST
1587
+
1588
+ #### H.BUFL (FF8EH)
1589
+ * **meaning**: BINTRP BUFLIN (buffer line)
1590
+
1591
+ #### H.FRQI (FF93H)
1592
+ * **meaning**: BINTRP FRQINT
1593
+
1594
+ #### H.SCNE (FF98H)
1595
+ * **meaning**: BINTRP
1596
+
1597
+ #### H.FRET (FF9DH)
1598
+ * **meaning**: BINTRP FRETMP
1599
+
1600
+ #### H.PTRG (FFA2H)
1601
+ * **meaning**: BIPTRG PTRGET (get pointer)
1602
+ * **purpose**: uses variable other than default value
1603
+
1604
+ #### H.PHYD (FFA7H)
1605
+ * **meaning**: MSXIO PHYDIO (physical disk input-output)
1606
+ * **purpose**: connects disk device
1607
+
1608
+ #### H.FORM (FFACH)
1609
+ * **meaning**: MSXIO FORMAT (format disk)
1610
+ * **purpose**: connects disk device
1611
+
1612
+ #### H.ERRO (FFB1H)
1613
+ * **meaning**: BINTRP ERROR
1614
+ * **purpose**: error handling for application program
1615
+
1616
+ #### H.LPTO (FFB6H)
1617
+ * **meaning**: MSXIO LPTOUT (printer output)
1618
+ * **purpose**: uses printer other than default value
1619
+
1620
+ #### H.LPTS (FFBBH)
1621
+ * **meaning**: MSXIO LPTSTT (printer status)
1622
+ * **purpose**: uses printer other than default value
1623
+
1624
+ #### H.SCRE (FFC0H)
1625
+ * **meaning**: MSXSTS SCREEN statement entry
1626
+ * **purpose**: expands SCREEN statement
1627
+
1628
+
1629
+ <p>&nbsp;</p>
1630
+
1631
+ ## Changes from the original
1632
+
1633
+ - Address of [FLAGS](#flags-fb1ch-1) variable is corrected from FB1BH to FB1CH.
1634
+
1635
+ - Address of [MCLLEN](#mcllen-fb3bh-1) variable is corrected from FB39H to FB3BH.
1636
+
1637
+ - Address of [H.FIEL](#hfiel-fe2bh) hook is corrected from DE2BH to FE2BH.