MSX Technical Handbook Appendix
MSX Technical Handbook Appendix
-----------------------
- In description of INITXT (SUB), the needed input in LINL40 has been added.
- In the explanation before Figure A.3, the indication about the excess 64
method has been added.
- In Figure A.3, in the third byte, "63rd power of 10" has been corrected to
"-63rd power of 10".
- In the explanation before Figure A.3, the indication about the excess 64
method has been added.
- In Figure A.3, in the third byte, "63rd power of 10" has been corrected to
"-63rd power of 10".
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This section lists the 126 BIOS entries available to the user.
There are two kinds of BIOS routines, the ones in MAIN-ROM and the ones in
SUB-ROM. They each have different calling sequences which will be described
later. The following is the entry notation.
MAIN-ROM
-----------------------------------------------------------------
* RSTs
Among the following RSTs, RST 00H to RST 28H are used by the BASIC
interpreter. RST 30H is used for inter-slot calls and RST 38H is used for
hardware interrupts.
CHKRAM (0000H) *1
Function: tests RAM and sets RAM slot for the system
Input: none
Output: none
Registers: all
SYNCHR (0008H) *1
Funtcion: tests whether the character of [HL] is the specified
character. If not, it generates SYNTAX ERROR, otherwise it
goes to CHRGTR (0010H).
Input: set the character to be tested in [HL] and the character to
be compared next to RST instruction which calls this routine
(inline parameter).
Example: LD HL,LETTER
RST 08H
DB "A"
.
.
.
LETTER: DB "B"
RDSLT (000CH) *1
Function: selects the slot corresponding to the value of A and reads
one byte from the memory of the slot. When this routine is
called, the interrupt is inhibited and remains inhibited
even after execution ends.
Input: A for the slot number.
F000EEPP
- ----
| ||++-------------- Basic slot number (0 to 3)
| ++---------------- Expansion slot number (0 to 3)
+--------------------- "1" when using expansion slot
CHRGTR (0010H) *1
Function: gets a character (or a token) from BASIC text
Input: [HL] for the character to be read
Output: HL is incremented by one and A receives [HL]. When the
character is numerical, the CY flag is set; the end of the
statement causes the Z flag to be set.
Registers: AF, HL
WRSLT (0014H) *1
Function: selects the slot corresponding to the value of A and writes
one byte to the memory of the slot. When this routine is
called, interrupts are inhibited and remain so even after
execution ends.
Input: specifies a slot with A (same as RDSLT)
Output: none
Registers: AF, BC, D
OUTDO (0018H) *2
Funtion: sends the value to current device
Input: A for the value to be sent
sends output to the printer when PTRFLG (F416H) is other
than 0
sends output to the file specified by PTRFIL (F864H) when
PTRFIL is other than 0
Output: none
Registers: none
CALSLT (001CH) *1
Function: calls the routine in another slot (inter-slot call)
Input: specify the slot in the 8 high order buts of the IY register
(same as RDSLT). IX is for the address to be called.
Output: depends on the calling routine
Registers: depends on the calling routine
DCOMPR (0020H) *1
Function: compares the contents of HL and DE
Input: HL, DE
Output: sets the Z flag for HL = DE, CY flag for HL < DE
Registers: AF
ENASLT (0024H) *1
Function: selects the slot corresponding to the value of A and enables
the slot to be used. When this routine is called, interrupts
are inhibited and remain so even after execution ends.
Input: specify the slot by A (same as RDSLT)
specify the page to switch the slot by 2 high order bits
of HL
Output: none
Registers: all
GETYPR (0028H) *1
Function: returns the type of DAC (decimal accumulator)
Input: none
Output: S, Z, P/V flags are changed depending on the type of DAC:
CALLF (0030H) *1
Function: calls the routine in another slot. The following is the
calling sequence:
RST 30H
DB n ;n is the slot number (same as RDSLT)
DW nn ;nn is the called address
KEYINT (0038H) *1
Function: executes the timer interrupt process routine
Input: none
Output: none
Register: none
* I/O initialisation
INITIO (003BH) *1
Function: initialises the device
Input: none
Output: none
Registers: all
INIFNK (003EH) *1
Function: initialises the contents of function keys
Input: none
Output: none
Registers: all
* VDP access
DISSCR (0041H) *1
Function: inhibits the screen display
Input: none
Output: none
Registers: AF, BC
ENASCR (0044H) *1
Function: displays the screen
Input: none
Output: none
Registers: all
WRTVDP (0047H) *2
Function: writes data in the VDP register
Input: C for the register number, B for data; the register number
is 0 to 23 and 32 to 46
Output: none
Registers: AF, BC
RDVRM (004AH) *1
Function: reads the contents of VRAM. This is for TMS9918, so only the
14 low order bits of the VRAM address are valid. To use all
bits, call NRDVRM.
Input: HL for VRAM address to be read
Output: A for the value which was read
Registers: AF
WRTVRM (004DH) *1
Function: writes data in VRAM. This is for TMS9918, so only the 14 low
order bits of the VRAM address are valid. To use all bits,
call NWRVRM.
Input: HL for VRAM address, A for data
Output: none
Registers: AF
SETRD (0050H) *1
Function: sets VRAM address to VDP and enables it to be read. This is
used to read data from the sequential VRAM area by using the
address auto-increment function of VDP. This enables faster
readout than using RDVRM in a loop. This is for TMS9918, so
only the 14 low order bits of VRAM address are valid. To use
all bits, call NSETRD.
Input: HL for VRAM address
Output: none
Registers: AF
SETWRT (0053H) *1
Function: sets VRAM address to VDP and enables it to be written. The
purpose is the same as SETRD. This is for TMS9918, so only
the 14 low order bits of VRAM address are valid. To use all
bits, call NSETRD.
Input: HL for VRAM address
Output: none
Registers: AF
FILVRM (0056H) *4
Function: fills the specified VRAM area with the same data. This is for
TMS9918, so only the 14 low order bits of the VRAM address
are valid. To use all bits, see BIGFIL.
Input: HL for VRAM address to begin writing, BC for the length of
the area to be written, A for data.
Output: none
Registers: AF, BC
LDIRMV (0059H) *4
Function: block transfer from VRAM to memory
Input: HL for source address (VRAM), DE for destination address
(memory), BC for the length. All bits of the VRAM address
are valid.
Output: none
Registers: all
LDIRVM (005CH) *4
Function: block transfer from memory to VRAM
Input: HL for source address (memory), DE for destination address
(VRAM), BC for the length. All bits of the VRAM address are
valid.
Output: none
Registers: all
CHGMOD (005FH) *3
Function: changes the screen mode. The palette is not initialised. To
initialise it, see CHGMDP in SUB-ROM.
Input: A for the screen mode (0 to 8)
Output: none
Registers: all
CHGCLR (0062H) *1
Function: changes the screen colour
Input: A for the mode
FORCLR (F3E9H) for foreground color
BAKCLR (F3EAH) for background color
BDRCLR (F3EBH) for border colour
Output: none
Registers: all
NMI (0066H) *1
Function: executes NMI (Non-Maskable Interrupt) handling routine
Input: none
Output: none
Registers: none
CLRSPR (0069H) *3
Function: initialises all sprites. The sprite pattern is cleared to
null, the sprite number to the sprite plane number, the
sprite colour to the foregtound colour. The vertical location
of the sprite is set to 209 (mode 0 to 3) or 217
(mode 4 to 8).
Input: SCRMOD (FCAFH) for the screen mode
Output: none
Registers: all
INITXT (006CH) *3
Function: initialises the screen to TEXT1 mode (40 x 24). In this
routine, the palette is not initialised. To initialise the
palette, call INIPLT in SUB-ROM after this call.
Input: TXTNAM (F3B3H) for the pattern name table
TXTCGP (F3B7H) for the pattern generator table
LINL40 (F3AEH) for the length of one line
Output: none
Registers: all
INIT32 (006FH) *3
Function: initialises the screen to GRAPHIC1 mode (32x24). In this
routine, the palette is not initialised.
Input: T32NAM (F3BDH) for the pattern name table
T32COL (F3BFH) for the colour table
T32CGP (F3C1H) for the pattern generator table
T32ATR (F3C3H) for the sprite attribute table
T32PAT (F3C5H) for the sprite generator table
Output: none
Registers: all
INIGRP (0072H) *3
Function: initialises the screen to the high-resolution graphics mode.
In this routine, the palette is not initialised.
Input: GRPNAM (F3C7H) for the pattern name table
GRPCOL (F3C9H) for the colour table
GRPCGP (F3CBH) for the pattern generator table
GRPATR (F3CDH) for the sprite attribute table
GRPPAT (F3CFH) for the sprite generator table
Output: none
Registers: all
INIMLT (0075H) *3
Function: initialises the screen to MULTI colour mode. In this routine,
the palette is not initialised.
Input: MLTNAM (F3D1H) for the pattern name table
MLTCOL (F3D3H) for the colour table
MLTCGP (F3D5H) for the pattern generator table
MLTATR (F3D7H) for the sprite attribute table
MLTPAT (F3D9H) for the sprite generator table
Output: none
Registers: all
SETTXT (0078H) *3
Function: set only VDP in TEXT1 mode (40x24)
Input: same as INITXT
Output: none
Registers: all
SETT32 (007BH) *3
Function: set only VDP in GRAPHIC1 mode (32x24)
Input: same as INIT32
Output: none
Registers: all
SETGRP (007EH) *3
Function: set only VDP in GRAPHIC2 mode
Input: same as INIGRP
Output: none
Registers: all
SETMLT (0081H) *3
Function: set only VDP in MULTI colour mode
Input: same as INIMLT
Output: none
Registers: all
CALPAT (0084H) *1
Funtion: returns the address of the sprite generator table
Input: A for the sprite number
Output: HL for the address
Registers: AF, DE, HL
CALATR (0087H) *1
Function: returns the address of the sprite attribute table
Input: A for the sprite number
Output: HL for the address
Registers: AF, DE, HL
GSPSIZ (008AH) *1
Function: returns the current sprite size
Input: none
Output: A for the sprite size (in bytes). Only when the size is
16 x 16, the CY flag is set; otherwise the CY flag is reset.
Registers: AF
GRPPRT (008DH) *2
Function: displays a character on the graphic screen
Input: A for the character code. When the screen mode is 0 to 8,
set the logical operation code in LOGOPR (FB02H).
Output: none
Registers: none
* PSG
GICINI (0090H) *1
Function: initialises PSG and sets the initial value for the PLAY
statement
Input: none
Output: none
Registers: all
WRTPSG (0093H) *1
Function: writes data in the PSG register
Input: A for PSG register number, E for data
Output: none
Registers: none
RDPSG (0096H) *1
Function: reads the PSG register value
Input: A for PSG register number
Output: A for the value which was read
Registers: none
STRTMS (0099H) *1
Function: tests whether the PLAY statement is being executed as a
background task. If not, begins to execute the PLAY statement
Input: none
Output: none
Registers: all
CHSNS (009CH) *1
Function: tests the status of the keyboard buffer
Input: none
Output: the Z flag is set when the buffer is empty, otherwise the
Z flag is reset
Registers: AF
CHGET (009FH) *1
Function: one character input (waiting)
Input: none
Output: A for the code of the input character
Registers: AF
CHPUT (00A2H) *1
Function: displays the character
Input: A for the character code to be displayed
Output: none
Registers: none
LPTOUT (00A5H) *1
Function: sends one character to the printer
Input: A for the character code to be sent
Output: if failed, the CY flag is set
Registers: F
LPTSTT (00A8H) *1
Function: tests the printer status
Input: none
Output: when A is 255 and the Z flag is reset, the printer is READY.
when A is 0 and the Z flag is set, the printer is NOT READY.
Registers: AF
CNVCHR (00ABH) *1
Function: test for the graphic header and transforms the code
Input: A for the character code
Output: the CY flag is reset to not the graphic header
the CY flag and the Z flag are set to the transformed code
is set in A
the CY flag is set and the CY flag is reset to the
untransformed code is set in A
Registers: AF
PINLIN (00AEH) *1
Function: stores in the specified buffer the character codes input
until the return key or STOP key is pressed.
Input: none
Output: HL for the starting address of the buffer minus 1, the CY
flag is set only when it ends with the STOP key.
Registers: all
INLIN (00B1H) *1
Function: same as PINLIN except that AUTFLG (F6AAH) is set
Input: none
Output: HL for the starting address of the buffer minus 1, the CY
flag is set only when it ends with the STOP key.
Registers: all
QINLIN (00B4H) *1
Function: executes INLIN with displaying "?" and one space
Input: none
Output: HL for the starting address of the buffer minus 1, the CY
flag is set only when it ends with the STOP key.
Registers: all
BREAKX (00B7H) *1
Function: tests Ctrl-STOP key. In this routine, interrupts are
inhibited.
Input: none
Output: the CY flag is set when pressed
Registers: AF
BEEP (00C0H) *3
Function: generates BEEP
Input: none
Output: none
Registers: all
CLS (00C3H) *3
Function: clears the screen
Input: set zero flag
Output: none
Registers: AF, BC, DE
POSIT (00C6H) *1
Function: moves the cursor
Input: H for the X-coordinate of the cursor, L for the Y-coordinate
Output: none
Registers: AF
FNKSB (00C9H) *1
Function: tests whether the function key display is active (FNKFLG).
If so, displays them, otherwise erases them.
Input: FNKFLG (FBCEH)
Output: none
Registers: all
ERAFNK (00CCH) *1
Function: erases the function key display
Input: none
Output: none
Registers: all
DSPFNK (00CFH) *2
Function: displays the function keys
Input: none
Output: none
Registers: all
TOTEXT (00D2H) *1
Function: forces the screen to be in the text mode
Input: none
Output: none
Registers: all
GTSTCK (00D5H) *1
Function: returns the joystick status
Input: A for the joystick number to be tested
Output: A for the joystick direction
Registers: all
GTTRIG (00D8H) *1
Function: returns the trigger button status
Input: A for the trigger button number to be tested
Output: When A is 0, the trigger button is not being pressed.
When A is FFH, the trigger button is being pressed.
Registers: AF
GTPAD (00DBH) *1
Function: returns the touch pad status
Input: A for the touch pad number to be tested
Output: A for the value
Registers: all
GTPDL (00DEH) *2
Function: returns the paddle value
Input: A for the paddle number
Output: A for the value
Registers: all
TAPION (00E1H) *1
Function: reads the header block after turning the cassette motor ON.
Input: none
Output: if failed, the CY flag is set
Registers: all
TAPIN (00E4H) *1
Function: reads data from the tape
Input: none
Output: A for data. If failed, the CY flag is set.
Registers: all
TAPIOF (00E7H) *1
Function: stops reading the tape
Input: none
Output: none
Registers: none
TAPOON (00EAH) *1
Function: writes the header block after turning the cassette motor ON
Input: A = 0, short header; A <> 0, long header
Output: if failed, the CY flag is set
Registers: all
TAPOUT (00EDH) *1
Function: writes data on the tape
Input: A for data
Output: if failed, the CY flag is set
Registers: all
TAPOOF (00F0H) *1
Function: stops writing to the tape
Input: A for data
Output: if failed, the CY flag is set
Registers: all
STMOTR (00F3H) *1
Function: sets the cassette motor action
Input: A = 0 -> stop
A = 1 -> start
A = 0FFH -> reverse the current action
Output: none
Registers: AF
* Miscellaneous
CHGCAP (0132H) *1
Function: alternates the CAP lamp status
Input: A = 0 -> lamp off
A <>0 -> lamp on
Output: none
Registers: AF
CHGSND (0135H) *1
Function: alternates the 1-bit sound port status
Input: A = 0 -> OFF
A <>0 -> ON
Output: none
Registers: AF
RSLREG (0138H) *1
Function: reads the contents of current output to the basic slot
register
Input: none
Output: A for the value which was read
Registers: A
WSLREG (013BH) *1
Function: writes to the primary slot register
Input: A for the value to be written
Output: none
Registers: none
RDVDP (013EH) *1
Function: reads VDP status register
Input: none
Output: A for the value which was read
Registers: A
SNSMAT (0141H) *1
Function: reads the value of the specified line from the keyboard
matrix
Input: A for the specified line
Output: A for data (the bit corresponding to the pressed key will
be 0)
Registers: AF, C
PHYDIO (0144H)
Function: Physical input/output for disk devices
Input: A for the drive number (0 = A:, 1 = B:,...)
B for the number of sector to be read from or written to
C for the media ID
DE for the first sector number to be read rom or written to
HL for the startinga address of the RAM buffer to be
read from or written to specified sectors
CY set for sector writing; reset for sector reading
Output: CY set if failed
B for the number of sectors actually read or written
A for the error code (only if CY set):
0 = Write protected
2 = Not ready
4 = Data error
6 = Seek error
8 = Record not found
10 = Write error
12 = Bad parameter
14 = Out of memory
16 = Other error
Registers: all
ISFLIO (014AH) *1
Function: tests whether the device is active
Input: none
Output: A = 0 -> active
A <>0 -> inactive
Registers: AF
OUTDLP (014DH) *1
Function: printer output.Different from LPTOUT in the following points:
1. TAB is expanded to spaces
2. For non-MSX printers, hiragana is transformed to
katakana and graphic characters are transformed to
1-byte characters.
3. If failed, device I/O error occurs.
Input: A for data
Output: none
Registers: F
KILBUF (0156H) *1
Function: clears the keyboard buffer
Input: none
Output: none
Registers: HL
CALBAS (0159H) *1
Function: executes inter-slot call to the routine in BASIC interpreter
Input: IX for the calling address
Output: depends on the called routine
Registers: depends on the called routine
SUBROM (015CH)
Function: executes inter-slot call to SUB-ROM
Input: IX for the calling address and, at the same time, pushes IX
on the stack
Output: depends on the called routine
Registers: background registers and IY are reserved
EXTROM (015FH)
Function: executes inter-slot call to SUB-ROM
Input: IX for the calling address
Output: depends on the called routine
Registers: background registers and IY are reserved
EOL (0168H)
Function: deletes to the end of the line
Input: H for X-coordinate of the cursor, L for Y-coordinate
Output: none
Registers: all
BIGFIL (016BH)
Function: same function as FILVRM. Differences are as follows:
In FILVRM, it is tested whether the screen mode is 0 to 3.
If so, it treats VDP as the one which has only 16K bytes
VRAM (for the compatibility with MSX1). In BIGFIL, the
mode is not tested and actions are carried out by the
given parameters.
Input: same as FILVRM
Output: same as FILVRM
Registers: same as FILVRM
NSETRD (016EH)
Function: enables VRAM to be read by setting the address
Input: HL for VRAM address
Output: none
Registers: AF
NSTWRT (0171H)
Function: enables VRAM to be written by setting the address
Input: HL for VRAM address
Output: none
Registers: AF
NRDVRM (0174H)
Function: reads the contents of VRAM
Input: HL for VRAM address to be read
Output: A for the value which was read
Registers: F
NWRVRM (0177H)
Function: writes data in VRAM
Input: HL for VRAM address, A for data
Output: none
Registers: AF
SUB-ROM
-----------------------------------------------------------------
.
.
.
LD IX, INIPLT
; Set BIOS entry address
CALL EXTROM
; Returns here
.
.
.
When the contents of IX should not be destroyed, use the call as shown below.
.
.
.
INIPAL: PUSH IX
; Save IX
LD IX, INIPLT
; Set BIOS entry address
JP SUBROM
;Returns caller of INIPAL
.
.
.
GRPRT (0089H)
Function: one character output to the graphic screen (active only in
screen modes 5 to 8)
Input: A for the character code
Output: none
Registers: none
NVBXLN (00C9H)
Function: draws a box
Input: start point: BC for X-coordinate, DE for Y-coordinate
end point: GXPOS (FCB3H) for X-coordinate
GYPOS (FCB5H) for Y-coordinate
colour: ATRBYT (F3F3H) for the attribute
logical operation code: LOGOPR (FB02H)
Output: none
Registers: all
NVBXFL (00CDH)
Function: draws a painted box
Input: start point: BC for X-coordinate, DE for Y-coordinate
end point: GXPOS (FCB3H) for X-coordinate
GYPOS (FCB5H) for Y-coordinate
colour: ATRBYT (F3F3H) for the attribute
logical operation code: LOGOPR (FB02H)
Output: none
Registers: all
CHGMOD (00D1H)
Function: changes the screen mode
Input: A for the screen mode (0 to 8)
Output: none
Registers: all
INITXT (00D5H)
Function: initialises the screen to TEXT1 mode (40 x 24)
Input: TXTNAM (F3B3H) for the pattern name table
TXTCGP (F3B7H) for the pattern generator table
LINL40 (F3AEH) for the length of one line
Output: none
Registers: all
INIT32 (00D9H)
Function: initialises the screen to GRAPHIC1 mode (32x24)
Input: T32NAM (F3BDH) for the pattern name table
T32COL (F3BFH) for the colour table
T32CGP (F3C1H) for the pattern generator table
T32ATR (F3C3H) for the sprite attribute table
T32PAT (F3C5H) for the sprite generator table
Output: none
Registers: all
INIGRP (00DDH)
Function: initialises the screen to the high-resolution graphics mode
Input: GRPNAM (F3C7H) for the pattern name table
GRPCOL (F3C9H) for the colour table
GRPCGP (F3CBH) for the pattern generator table
GRPATR (F3CDH) for the sprite attribute table
GRPPAT (F3CFH) for the sprite generator table
Output: none
Registers: all
INIMLT (00E1H)
Function: initialises the screen to MULTI colour mode
Input: MLTNAM (F3D1H) for the pattern name table
MLTCOL (F3D3H) for the colour table
MLTCGP (F3D5H) for the pattern generator table
MLTATR (F3D7H) for the sprite attribute table
MLTPAT (F3D9H) for the sprite generator table
Output: none
Registers: all
SETTXT (00E5H)
Function: sets VDP in the text mode (40x24)
Input: same as INITXT
Output: none
Registers: all
SETT32 (00E9H)
Function: ses VDP in the text mode (32x24)
Input: same as INIT32
Output: none
Registers: all
SETGRP (00EDH)
Function: sets VDP in the high-resolution mode
Input: same as INIGRP
Output: none
Registers: all
SETMLT (00F1H)
Function: sets VDP in MULTI COLOUR mode
Input: same as INIMLT
Output: none
Registers: all
CLRSPR (00F5H)
Function: initialises all sprites. The sprite pattern is set to null,
sprite number to sprite plane number, and sprite colour to
the foregtound colour. The vertical location of the sprite
is set to 217.
Input: SCRMOD (FCAFH) for the screen mode
Output: none
Registers: all
CALPAT (00F9H)
Funtion: returns the address of the sprite generator table
(this routine is the same as CALPAT in MAIN-ROM)
Input: A for the sprite number
Output: HL for the address
Registers: AF, DE, HL
CALATR (00FDH)
Function: returns the address of the sprite attribute table
(this routine is the same as CALATR in MAIN-ROM)
Input: A for the sprite number
Output: HL for the address
Registers: AF, DE, HL
GSPSIZ (0101H)
Function: returns the current sprite size
(this routine is the same as GSPSIZ in MAIN-ROM)
Input: none
Output: A for the sprite size. The CY flag is set only for the size
16 x 16.
Registers: AF
GETPAT (0105H)
Function: returns the character pattern
Input: A for the character code
Output: PATWRK (FC40H) for the character pattern
Registers: all
WRTVRM (0109H)
Function: writes data in VRAM
Input: HL for VRAM address (0 TO FFFFH), A for data
Output: none
Registers: AF
RDVRM (010DH)
Function: reads the contents of VRAM
Input: HL for VRAM address (0 TO FFFFH) to be read
Output: A for the value which was read
Registers: AF
CHGCLR (0111H)
Function: changes the screen colour
Input: A for the mode
FORCLR (F3E9H) for the foreground color
BAKCLR (F3EAH) for the background color
BDRCLR (F3EBH) for the border colour
Output: none
Registers: all
CLSSUB (0115H)
Function: clears the screen
Input: none
Output: none
Registers: all
DSPFNK (011DH)
Function: displays the function keys
Input: none
Output: none
Registers: all
WRTVDP (012DH)
Function: writes data in the VDP register
Input: C for the register number, B for data
Output: none
Registers: AF, BC
VDPSTA (0131H)
Function: reads the VDP register
Input: A for the register number (0 to 9)
Output: A for data
Registers: F
SETPAG (013DH)
Function: switches the page
Input: DPPAGE (FAF5H) for the display page number
ACPAGE (FAF6H) for the active page number
Output: none
Registers: AF
INIPLT (0141H)
Function: initialises the palette(the current palette is saved in VRAM)
Input: none
Output: none
Registers: AF, BC, DE
RSTPLT (0145H)
Function: restores the palette from VRAM
Input: none
Output: none
Registers: AF, BC, DE
GETPLT (0149H)
Function: obtains the colour code from the palette
Input: D for the palette number (0 to 15)
Output: 4 high order bits of B for red code
4 low order bits of B for blue code
4 low order bits of C for green code
Registers: AF, DE
SETPLT (014DH)
Function: sets the colour code to the palette
Input: D for the palette number (0 to 15)
4 high order bits of A for red code
4 low order bits of A for blue code
4 low order bits of E for green code
Output: none
Registers: AF
BEEP (017DH)
Function: generates BEEP
Input: none
Output: none
Registers: all
PROMPT (0181H)
Function: displays the prompt
Input: none
Output: none
Registers: all
NEWPAD (01ADH)
Function: reads the status of mouse or light pen
Input: call with setting the following data in A;
descriptions in parenthesis are return values.
8 .......... light pen check (valid at 0FFH)
9 .......... returns X-coordinate
10 .......... returns Y-coordinate
11 .......... returns the light pen switch status
(0FFH, when pressed)
12 .......... whether the mouse is connected to the
port 1 (valid at 0FFH)
13 .......... returns the offset in X direction
14 .......... returns the offset in Y direction
15 .......... (always 0)
16 .......... whether the mouse is connected to the
port 2 (valid at 0FFH)
17 .......... returns the offset in X direction
18 .......... returns the offset in Y direction
19 .......... (always 0)
Output: A
Registers: all
CHGMDP (01B5H)
Function: changes VDP mode. The palette is initialised.
Input: A for the screen mode (0 to 8)
Output: none
Registers: all
KNJPRT (01BDH)
Function: sends a kanki to the graphic screen (modes 5 to 8)
Input: BC for JIS kanji code, A for the display mode. The display
mode has the following meaning, similar to the PUT KANJI
command of BASIC.
0 .......... display in 16 x 16 dot
1 .......... display even dots
2 .......... display odd dots
REDCLK (01F5H)
Function: reads the clock data
Input: C for RAM address of the clock
00MMAAAA
------
||++++--- Address (0 to 15)
++------- Mode (0 to 3)
Output: A for the data which were read (only 4 low order bits are
valid)
Registers: F
WRTCLK (01F9H)
Function: writes the clock data
Input: A for the data to be written, C for RAM address of the clock
Output: none
Registers: F
=============================================================================
- In the explanation before Figure A.3, the indication about the excess 64
method has been added.
- In Figure A.3, in the third byte, "63rd power of 10" has been corrected to
"-63rd power of 10".
- In the explanation before Figure A.3, the indication about the excess 64
method has been added.
- In Figure A.3, in the third byte, "63rd power of 10" has been corrected to
"-63rd power of 10".
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
APPENDIX 2 - MATH-PACK
The Math-Pack is the core for the mathematical routines of MSX-BASIC and, by
calling these routines from an assembly language program, floating-point
operations and trigonometrical functions are available.
Any operations involving real numbers in Math-Pack are done in BCD (Binary
Coded Decimal). There are two ways of expressing a real number, "single
precision" and "double precision"; a single precision real number (6 digits)
is expressed by 4 bytes and a double precision real number (14 digits) by 8
bytes (see Figure A.1 and Figure A.2).
MSB 7 6 5 4 3 2 1 0 LSB
--- --- -------------------------------------------------
^ ^ |sign | exponent | 0
| | -------------------------------------------------
| | -------------------------------------------------
| | | mantissa 1st place | mantissa 2nd place | 1
| single -------------------------------------------------
| precision -------------------------------------------------
| | | mantissa 3rd place | mantissa 4th place | 2
| | -------------------------------------------------
| | -------------------------------------------------
| V | mantissa 5th place | mantissa 6th place | 3
double --- -------------------------------------------------
precision -------------------------------------------------
| | mantissa 7th place | mantissa 8th place | 4
| -------------------------------------------------
| -------------------------------------------------
| | mantissa 9th place | mantissa 10th place | 5
| -------------------------------------------------
| -------------------------------------------------
| | mantissa 11th place | mantissa 12th place | 6
| -------------------------------------------------
| -------------------------------------------------
V | mantissa 13th place | mantissa 14th place | 7
--- -------------------------------------------------
1 2 3 4
-------------------------
DAC | 46 | 12 | 34 | 56 |
-------------------------
1 2 3 4 5 6 7 8
-------------------------------------------------
DAC | 46 | 12 | 34 | 56 | 78 | 90 | 12 | 34 |
-------------------------------------------------
7 6 5 4 3 2 1 0 (byte)
-------------------------------------------------
DAC | FF | 99 | 99 | 99 | 99 | 99 | 99 | 99 | -0.99999999999999 E+63
-------------------------------------------------
.
.
.
-------------------------------------------------
| 81 | 10 | 00 | 00 | 00 | 00 | 00 | 00 | -0.10000000000000 E-63
-------------------------------------------------
-------------------------------------------------
| 00 | x | x | x | x | x | x | x | 0
-------------------------------------------------
-------------------------------------------------
| 01 | 10 | 00 | 00 | 00 | 00 | 00 | 00 | +0.10000000000000 E-63
-------------------------------------------------
.
.
.
-------------------------------------------------
| 7F | 99 | 99 | 99 | 99 | 99 | 99 | 99 | +0.99999999999999 E+63
-------------------------------------------------
In the DAC, single precision real numbers, double precision real numbers, and
two-byte integers can be stored. In order to distinguish them, "VALTYP
(F663H)" is used and its value is 4 for single precision real numbers, 8 for
double precision real numbers, and 2 for two-byte integers.
Single and double precision numbers must be stored from the top of the DAC.
For two-byte integers, the low and high bytes should be stored in DAC + 2 and
DAC + 3.
-----------------------------------------------------------------------------
| Label | Address | Size | Meaning |
|-----------+-----------+--------+------------------------------------------|
| VALTYP | F663H | 1 | format of the number in DAC |
| DAC | F7F6H | 16 | floating point accumulator in BCD format |
| ARG | F847H | 16 | argument of DAC |
-----------------------------------------------------------------------------
* Math-Pack entry
Basic operation
-------------------------------------------------
| Label | Address | Function |
|-----------+-----------+-----------------------|
| DECSUB | 268CH | DAC <-- DAC - ARG |
| DECADD | 269AH | DAC <-- DAC + ARG |
| DECNRM | 26FAH | normalises DAC (*1) |
| DECROU | 273CH | rounds DAC |
| DECMUL | 27E6H | DAC <-- DAC * ARG |
| DECDIV | 289FH | DAC <-- DAC / ARG |
-------------------------------------------------
Note: These operations treat numbers in DAC and ARG as the double precision
number. Registers are not preserved.
*1 Excessive zeros in mantissa are removed. (0.00123 --> 0.123 E-2)
Function 1
----------------------------------------------------------------------
| Label | Address | Function | Register modified |
|-----------+-----------+----------------------+---------------------|
| COS | 2993H | DAC <-- COS(DAC) | all |
| SIN | 29ACH | DAC <-- SIN(DAC) | all |
| TAN | 29FBH | DAC <-- TAN(DAC) | all |
| ATN | 2A14H | DAC <-- ATN(DAC) | all |
| LOG | 2A72H | DAC <-- LOG(DAC) | all |
| SQR | 2AFFH | DAC <-- SQR(DAC) | all |
| EXP | 2B4AH | DAC <-- EXP(DAC) | all |
| RND | 2BDFH | DAC <-- RND(DAC) | all |
----------------------------------------------------------------------
Note: These processing routines all have the same function names as those in
BASIC. "All" registers are A, B, C, D, E, H, and L.
Function 2
----------------------------------------------------------------------
| Label | Address | Function | Register modified |
|-----------+-----------+----------------------+---------------------|
| SIGN | 2E71H | A <-- sign of DAC | A |
| ABSFN | 2E82H | DAC <-- ABS(DAC) | all |
| NEG | 2E8DH | DAC <-- NEG(DAC) | A,HL |
| SGN | 2E97H | DAC <-- SGN(DAC) | A,HL |
----------------------------------------------------------------------
Note: Except for SIGN, these processing routines all have the same function
names as those in BASIC. Registers are A, B, C, D, E, H, and L.
Note that for SGN, the result is represented as a 2-byte integer.
Movement
----------------------------------------------------------------------------
| Label | Address | Function | Object | Reg. mod. |
|-----------+-----------+---------------------+--------------+-------------|
| MAF | 2C4DH | ARG <-- DAC | double prec. | A,B,D,E,H,L |
| MAM | 2C50H | ARG <-- (HL) | double prec. | A,B,D,E,H,L |
| MOV8DH | 2C53H | (DE) <-- (HL) | double prec. | A,B,D,E,H,L |
| MFA | 2C59H | DAC <-- ARG | double prec. | A,B,D,E,H,L |
| MFM | 2C5CH | DAC <-- (HL) | double prec. | A,B,D,E,H,L |
| MMF | 2C67H | (HL) <-- DAC | double prec. | A,B,D,E,H,L |
| MOV8HD | 2C6AH | (HL) <-- (DE) | double prec. | A,B,D,E,H,L |
| XTF | 2C6FH | (SP) <--> DAC | double prec. | A,B,D,E,H,L |
| PHA | 2CC7H | ARG <-- (SP) | double prec. | A,B,D,E,H,L |
| PHF | 2CCCH | DAC <-- (SP) | double prec. | A,B,D,E,H,L |
| PPA | 2CDCH | (SP) <-- ARG | double prec. | A,B,D,E,H,L |
| PPF | 2CE1H | (SP) <-- DAC | double prec. | A,B,D,E,H,L |
| PUSHF | 2EB1H | DAC <-- (SP) | single prec. | D,E |
| MOVFM | 2EBEH | DAC <-- (HL) | single prec. | B,C,D,E,H,L |
| MOVFR | 2EC1H | DAC <-- (CBED) | single prec. | D,E |
| MOVRF | 2ECCH | (CBED) <-- DAC | single prec. | B,C,D,E,H,L |
| MOVRMI | 2ED6H | (CBED) <-- (HL) | single prec. | B,C,D,E,H,L |
| MOVRM | 2EDFH | (BCDE) <-- (HL) | single prec. | B,C,D,E,H,L |
| MOVMF | 2EE8H | (HL) <-- DAC | single prec. | A,B,D,E,H,L |
| MOVE | 2EEBH | (HL) <-- (DE) | single prec. | B,C,D,E,H,L |
| VMOVAM | 2EEFH | ARG <-- (HL) | VALTYP | B,C,D,E,H,L |
| MOVVFM | 2EF2H | (DE) <-- (HL) | VALTYP | B,C,D,E,H,L |
| VMOVE | 2EF3H | (HL) <-- (DE) | VALTYP | B,C,D,E,H,L |
| VMOVFA | 2F05H | DAC <-- ARG | VALTYP | B,C,D,E,H,L |
| VMOVFM | 2F08H | DAC <-- (HL) | VALTYP | B,C,D,E,H,L |
| VMOVAF | 2F0DH | ARG <-- DAC | VALTYP | B,C,D,E,H,L |
| VMOVMF | 2F10H | (HL) <-- DAC | VALTYP | B,C,D,E,H,L |
----------------------------------------------------------------------------
Note: (HL), (DE) means the values in memory pointed to by HL or DE. Four
register names in the parentheses are the single precision real numbers
which indicate (sign + exponent), (mantissa 1st and 2nd places),
(mantissa 3th and 4th places), (mantissa 5th and 6th places) from left
to right. Where the object is VALTYP, the movement (2, 4, 8 bytes) is
according to the type indicated in VALTYP (F663H).
Comparison
-----------------------------------------------------------------------------
| Label | Address | Object | Left | Right |Reg. mod.|
|-----------+-----------+--------------------------+------+-------+---------|
| FCOMP | 2F21H | single prec. real number | CBED | DAC | HL |
| ICOMP | 2F4DH | 2-byte integer | DE | HL | HL |
| XDCOMP | 2F5CH | double prec. real number | ARG | DAC | all |
-----------------------------------------------------------------------------
Floating-point input/output
-----------------------------------------------------------------------------
| Label | Address | Function |
|-----------+-----------+---------------------------------------------------|
| FIN | 3299H | Stores a string representing the floating-point |
| | | number in DAC, converting it in real. |
|---------------------------------------------------------------------------|
| Entry condition HL <-- Starting address of the string |
| A <-- First character of the string |
| Return condition DAC <-- Real number |
| C <-- FFH: without a decimal point |
| 0: with a decimal point |
| B <-- Number of places after the decimal point |
| D <-- Number of digits |
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
| Label | Address | Function |
|-----------+-----------+---------------------------------------------------|
| FOUT | 3425H | Converts the real number in DAC to the string |
| | | (unformatted) |
| PUFOUT | 3426H | Converts the real number in DAC to the string |
| | | (formatted) |
|---------------------------------------------------------------------------|
| Entry condition A <-- format |
| bit 7 0: unformatted 1: formatted |
| bit 6 0: without commas 1: with commas every three digits |
| bit 5 0: meaningless 1: leading spaces are padded with "." |
| bit 4 0: meaningless 1: "$" is added before the numerical value |
| bit 3 0: meaningless 1: "+" is added even for positive values |
| bit 2 0: meaningless 1: the sign comes after the value |
| bit 1 unused |
| bit 0: 0: fixed point 1: floating-point |
| B <-- number of digits before and not including the decimal point |
| C <-- number of digits after and including the decimal point |
| Return condition HL <-- starting address of the string |
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
| Label | Address | Function |
|-----------+-----------+---------------------------------------------------|
| FOUTB | 371AH | Converts 2-byte integer in DAC+2, 3 to a |
| | | binary expression string. |
| FOUTO | 371EH | Converts 2-byte integer in DAC+2, 3 to an |
| | | octal expression string. |
| FOUTH | 3722H | Converts 2-byte integer in DAC+2, 3 to a |
| | | hexadecimal expression string. |
|---------------------------------------------------------------------------|
| Entry condition DAC + 2 <-- 2-byte integer |
| VALTYP <-- 2 |
| Return condition HL <-- starting address of the string |
-----------------------------------------------------------------------------
Note: no strings are reserved. The starting address of the string in the
output routine is normally in FBUFFR (from F7C5H). In some cases it
may differ slightly. For the integer in DAC + 2, VALTYP (F663H) must
be 2, even in cases other than FOUTB, FOUTO and FOUTH.
Type conversion
-----------------------------------------------------------------------------
| Label | Address | Function |
|-----------+-----------+---------------------------------------------------|
| FRCINT | 2F8AH | Converts DAC to a 2-byte integer (DAC + 2, 3) |
| FRCSNG | 2FB2H | Converts DAC to a single precision real number |
| FRCDBL | 303AH | Converts DAC to a double precision real number |
| FIXER | 30BEH | DAC <-- SGN(DAC) * INT(ABS(DAC)) |
-----------------------------------------------------------------------------
Note: after execution, VALTYP (F663H) will contain the number (2, 4 or 8)
representing DAC type. No registers are reserved.
Integer operation
-----------------------------------------------------------------------
| Label | Address | Function | Registers modified |
|-----------+-----------+----------------------+----------------------|
| UMULT | 314AH | DE <-- BC * DE | A, B, C, D, E |
| ISUB | 3167H | HL <-- DE - HL | all |
| IADD | 3172H | HL <-- DE + HL | all |
| IMULT | 3193H | HL <-- DE * HL | all |
| IDIV | 31E6H | HL <-- DE / HL | all |
| IMOD | 323AH | HL <-- DE mod HL | alle |
| | | (DE <-- DE/HL) | |
-----------------------------------------------------------------------
Power
-----------------------------------------------------------------------------
| Label | Address | Function | Base | Exp. | Result |
|-----------+-----------+----------------------------+------+------+--------|
| SGNEXP | 37C8H | power of single-prec. real | DAC | ARG | DAC |
| DBLEXP | 37D7H | power of double-prec. real | DAC | ARG | DAC |
| INTEXP | 383FH | power of 2-byte integer | DE | HL | DAC |
-----------------------------------------------------------------------------
=============================================================================
none
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The bit block transfer corresponds to the COPY command in BASIC and is used
to transfer data from RAM, VRAM, and the disk. It is easily executed by the
routine in expansion ROM and available from the assembly language program.
Since it is in expansion ROM, use SUBROM or EXTROM of BIOS for this routine.
1. Transferring in VRAM
* BLTVV (0191H/SUB)
Registers: all
To use the routines below, the following memory space should be allocated as
graphic area for screen modes.
* screen mode 6
number of dots in X direction times number of dots in Y direction/4 + 4
* screen mode 5 or 7
number of dots in X direction times number of dots in Y direction/2 + 4
* screen mode 8
number of dots in X direction times number of dots in Y direction/2 + 4
For disk or RAM, data to indicate the size is added as the array data. The
first two bytes of data indicate the number of dots in X direction; the next
two bytes indicate the number of dots in the Y direction.
* BLTVM (0195H/SUB)
Registers: all
* BLTMV (0199H/SUB)
Registers: all
The filename should be set first to use the disk (specify the filename as
BASIC). The following is an example:
.
.
.
LD HL,FNAME ; Get pointer to file name
LD (FNPTR),HL ; Set it to parameter area
.
.
.
FNAME: DB 22H,"B:TEST.PIC",22H,0 ; "TEST.PIC", end mark
When an error occurs, control jumps to the error handler of the BASIC
interpreter. Set the hook to handle the error in the user program or to call
this routine from MSX-DOS or a ROM cartridge. This hook is H.ERRO (FFB1H).
* BLTVD (019DH/SUB)
Registers: all
* BLTDV (01A1H/SUB)
Registers: all
* BLTMD (01A5H/SUB)
Registers: all
* BLTDM (01A9H/SUB)
Registers: all
=============================================================================
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Figure A.5 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.
FFFF ---------------------------
| slot selection register |
FFFC |-------------------------|
| reserved |
FFF8 |-------------------------|
FFF7 | MAIN-ROM slot address |
|-------------------------|
| register reservation |
| area for new |
FFE7 | VDP (9938) |
|-------------------------|
| program for |
FFCA | expansion BIOS calls |
|-------------------------|
| |
| hook area |
FD9A | |
|-------------------------|
| |
| system work area |
F380 | |
---------------------------
RDPRIM (F380H, 5)
contents: read from basic slot
WRPRIM (F385H, 7)
contents: write to basic slot
LINL40 (F3AEH, 1)
initial value: 39
contents: screen width per line at SCREEN 0 (set by WIDTH statement
at SCREEN 0)
LINL32 (F3AfH, 1)
initial value: 32
contents: screen width per line at SCREEN 1 (set by WIDTH statement
at SCREEN 1)
LINLEN (F3B0H, 1)
initial value: 29
contents: current screen width per line
CRTCNT (F3B1H, 1)
initial value: 24
contents: number of lines of current screen
CLMLST (F3B2H, 1)
initial value: 14
contents: horizontal location in the case that items are divided by
commas in PRINT statement
- SCREEN 0
TXTNAM (F3B3H, 2)
initial value: 0000H
contents: pattern name table
TXTCOL (F3B5H, 2)
contents: unused
TXTCGP (F3B7H, 2)
initial value: 0800H
contents: pattern generator table
TXTATR (F3B9H, 2)
contents: unused
TXTPAT (F3BBH, 2)
contents: unused
- SCREEN 1
T32NAM (F3BDH, 2)
initial value: 1800H
contents: pattern name table
T32COL (F3BFH, 2)
initial value: 2000H
contents: colour table
T32CGP (F3C1H, 2)
initial value: 0000H
contents: pattern generator table
T32ATR (F3C3H, 2)
initial value: 1B00H
contents: sprite attribute table
T32PAT (F3C5H, 2)
initial value: 3800H
contents: sprite generator table
- SCREEN 2
GRPNAM (F3C7H, 2)
initial value: 1800H
contents: pattern name table
GRPCOL (F3C9H, 2)
initial value: 2000H
contents: colour table
GRPCGP (F3CBH, 2)
initial value: 0000H
contents: pattern generator table
GRPATR (F3CDH, 2)
initial value: 1B00H
contents: sprite attribute table
GRPPAT (F3CFH, 2)
initial value: 3800H
contents: sprite generator table
- SCREEN 3
MLTNAM (F3D1H, 2)
initial value: 0800H
contents: pattern name table
MLTCOL (F3D3H, 2)
contents: unused
MLTCGP (F3D5H, 2)
initial value: 0000H
contents: pattern generator table
MLTATR (F3D7H, 2)
initial value: 1B00H
contents: sprite attribute table
MLTPAT (F3D9H, 2)
initial value: 3800H
contents: sprite generator table
CLIKSW (F3DBH, 1)
initial value: 1
contents: key click switch (0 = OFF, otherwise = ON), set by
<key click switch> of SCREEN statement
CSRY (F3DCH, 1)
initial value: 1
contents: Y-coordinate of cursor
CSRX (F3DDH, 1)
initial value: 1
contents: X-coordinate of cursor
CNSDFG (F3DEH, 1)
initial value: 0
contents: function key display switch (0 = display, otherwise = no
display), set by KEY ON/OFF statement
RG0SAV (F3DFH, 1)
initial value: 0
RG1SAV (F3E0H, 1)
initial value: E0H
RG2SAV (F3E1H, 1)
initial value: 0
RG3SAV (F3E2H, 1)
initial value: 0
RG4SAV (F3E3H, 1)
initial value: 0
RG5SAV (F3E4H, 1)
initial value: 0
RG6SAV (F3E5H, 1)
initial value: 0
RG7SAV (F3E6H, 1)
initial value: 0
STATFL (F3E7H, 1)
initial value: 0
contents: stores VDP status (contents of status register 0, in MSX2)
TRGFLG (F3E8H, 1)
initial value: FFH
contents: stores trigger button status of joystick
FORCLR (F3E9H, 1)
initial value: 15
contents: foreground colour; set by colour statement
BAKCLR (F3EAH, 1)
initial value: 4
contents: background colour; set by colour statement
BDRCLR (F3EBH, 1)
initial value: 7
contents: border colour; set by colour statement
MAXUPD (F3ECH, 3)
initial value: JP 0000H (C3H, 00H, 00H)
contents: used by CIRCLE statement internally
MINUPD (F3EFH, 3)
initial value: JP 0000H (C3H, 00H, 00H)
contents: used by CIRCLE statement internally
ATRBYT (F3F2H, 1)
initial value: 15
contents: colour code in using graphics
QUEUES (F3F3H, 2)
initial value: QUETAB (F959H)
contents: points to queue table at the execution of PLAY statement
FRCNEW (F3F5H), 1)
initial value: 255
contents: used by BASIC interpreter internally
SCNCNT (F3F6H, 1)
initial value: 1
contents: interval for the key scan
REPCNT (F3F7H, 1)
initial value: 50
contents: delay until the auto-repeat of the key begins
PUTPNT (F3F8H, 2)
initial value: KEYBUF (FBF0H)
contents: points to address to write in the key buffer
GETPNT (F3FAH, 2)
initial value: KEYBUF (FBF0H)
contents: points to address to read from key buffer
- 1200 baud
- 2400 baud
LOW (F406H, 2)
initial value: LOW01, HIGH01 (by default, 1200 baud)
contents: width of LOW and HIGH which represents bit 0 of current baud
rate; set by <cassette baud rate> of SCREEN statement
HIGH (F408H, 2)
initial value: LOW11, HIGH11 (by default, 1200 baud)
contents: width of LOW and HIGH which represents bit 1 of current baud
rate; set by <cassette baud rate> of SCREEN statement
HEADER (F40AH, 1)
initial value: HEADLEN * 2/256 (by default, 1200 baud)
contents: header bit for the short header of current baud rate
(HEADLEN = 2000); set by <cassette baud rate> of SCREEN
statement
ASPCT1 (F40BH, 1)
contents: 256/aspect ratio; set by SCREEN statement to use in CIRCLE
statement
ASPCT2 (F40DH, 1)
contents: 256 * aspect ratio; set by SCREEN statement to use in CIRCLE
statement
ENDPRG (F40FH, 5)
initial value: ":"
contents: false end of program for RESUME NEXT statement
ERRFLG (F414H, 1)
contents: area to store the error number
LPTPOS (F415H, 1)
initial value: 0
contents: printer head location
PRTFLG (F416H, 1)
contents: flag whether to send to printer
NTMSXP (F417H, 1)
contents: printer (0 = printer for MSX, otherwise not)
RAWPRT (F418H, 1)
contents: non-zero when printing in raw-mode
VLZADR (F419H, 2)
contents: address of character to be replaced by VAL function
VLZDAT (F41BH, 1)
contents: character to be replaced with 0 by VAL function
CURLIN (F41CH, 2)
contents: currently executing line number of BASIC
BUFMIN (F55DH, 1)
initial value: ","
contents: used in INPUT statement
ENDBUF (F660H, 1)
contents: prevents overflow of BUF (F55EH)
TTYPOS (F661H, 1)
contents: virtual cursor location internally retained by BASIC
DIMFLG (F662H, 1)
contents: used by BASIC internally
VALTYP (F663H, 1)
contents: used to identify the type of variable
DORES (F664H, 1)
contents: indicates whether stored word can be crunched
DONUM (F665H, 1)
contents: flag for crunch
CONTXT (F666H, 2)
contents: stores text address used by CHRGET
CONSAV (F668H, 1)
contents: stores token of constant after calling CHRGET
CONTYP (F669H, 1)
contents: type of stored constant
CONLO (F66AH, 8)
contents: value of stored constant
MEMSIZ (F672H, 2)
contents: highest address of memory used by BASIC
STKTOP (F674H, 2)
contents: address used as stack by BASIC; depending on CLEAR statement
TXTTAB (F676H, 2)
contents: starting address of BASIC text area
TEMPPT (F768H, 2)
initial value: TEMPST (F67AH)
contents: starting address of unused area of temporary descriptor
DSCTMP (F698H, 3)
contents: string descriptor which is the result of string function
FRETOP (F69BH, 2)
contents: starting address of unused area of string area
TEMP3 (F69DH, 2)
contents: used for garbage collection or by USR function
TEMP8 (F69FH, 2)
contents: for garbage collection
ENDFOR (F6A1H, 2)
contents: stores next address of FOR statement (to begin execution from
the next of FOR statement at loops)
DATLIN (F6A3H, 2)
contents: line number of DATA statement read by READ statement
SUBFLG (F6A5H, 1)
contents: flag for array for USR function
FLGINP (F6A6H, 1)
contents: flag used in INPUT or READ
TEMP (F6A7H, 2)
contents: location for temporary reservation for statement code; used
for variable pointer, text address, and others
PTRFLG (F6A9H, 1)
contents: 0 if there is not a line number to be converted,otherwise not
AUTFLG (F6AAH, 1)
contents: flag for AUTO command validity (non-zero = valid, otherwise
invalid)
AUTLIN (F6ABH, 2)
contents: last input line number
AUTINC (F6ADH, 2)
initial value: 10
contents: increment value of line number of AUTO command
SAVTXT (F6AFH, 2)
contents: area to store address of currently executing text; mainly
used for error recovery by RESUME statement
ERRLIN (F6B3H, 2)
contents: line number where an error occurred
DOT (F6B5H, 2)
contents: last line number which was displayed in screen or entered
ERRTXT (F6B7H, 2)
contents: text address which caused an error; mainly used for error
recovery by RESUME statement
ONELIN (F6B9H, 2)
contents: text address to which control jumps at error; set by ON
ERROR GOTO statement
ONEFLG (F6BBH, 1)
contents: flag which indicates error routine execution
(non-zero = in execution, otherwise not)
TEMP2 (F6BCH, 2)
contents: for temporary storage
OLDLIN (F6BEH, 2)
contents: line number which was terminated by Ctrl+STOP, STOP
instruction, END instruction, or was executed last
OLDTXT (F6C0H, 2)
contents: address to be executed next
VARTAB (F6C2H, 2)
contents: starting address of simple variable; executing NEW statement
causes [contents of TXTTAB(F676H) + 2] to be set
ARYTAB (F6C4H, 2)
contents: starting address of array table
STREND (F6C6H, 2)
contents: last address of memory in use as text area or variable area
DATPTR (F6C8H, 2)
contents: text address of data read by executing READ statement
PRMSTK (F6E4H, 2)
contents: previous definition block on stack (for garbage collection)
PRMLEN (F6E6H, 2)
contents: number of bytes of objective data
PRMPRV (F74CH, 2)
initial value: PRMSTK
contents: pointer to previous parameter block (for garbage collection)
PRMLN2 (F74EH, 2)
contents: size of parameter block
PRMFLG (F7B4H, 1)
contents: flag to indicate whether PARM1 was searched
ARYTA2 (F7B5H, 2)
contents: end point of search
NOFUNS (F7B7H, 1)
contents: 0 if there is not an objective function
TEMP9 (F7B8H, 2)
contents: location of temporary storage for garbage collection
FUNACT (F7BAH, 2)
contents: number of objective functions
SWPTMP (F7BCH, 8)
contents: location of temporary storage of the value of the first
variable of SWAP statement
TRCFLG (F7C4H, 1)
contents: trace flag (non-zero = TRACE ON, 0 = TRACE OFF)
DECTMP (F7F0H, 2)
contents: used to transform decimal integer to floating-point number
DECTM2 (F7F2H, 2)
contents: used at division routine execution
DECCNT (F7F4H, 2)
contents: used at division routine execution
HOLD (F83EH, 8)
contents: used internally by Math-Pack
RNDX (F857H, 8)
contents: stores last random number in double precision real number;
set by RND function
MAXFIL (F85FH, 1)
contents: maximum file number; set by MAXFILES statement
FILTAB (F860H, 2)
contents: starting address of file data area
NULBUF (F862H, 2)
contents: points to buffer used in SAVE and LOAD by BASIC interpreter
PTRFIL (F864H, 2)
contents: address of file data of currently accessing file
RUNFLG (F866H, 2)
contents: non-zero value if program was loaded and executed; used
by R option of LOAD statement
NLONLY (F87CH, 1)
contents: non-zero value if program is being loaded
SAVEND (F87DH, 2)
contents: end address of assembly language program to be saved
FNKSTR (F87FH, 160)
contents: area to store function key string (16 character x 10)
CGPNT (F91FH, 3)
contents: address to store character font on ROM
NAMBAS (F922H, 2)
contents: base address of current pattern name table
CGPBAS (F924H, 2)
contents: base address of current pattern generator table
PATBAS (F926H, 2)
contents: base address of current sprite generator table
ATRBAS (F928H, 2)
contents: base address of current sprite attribute table
CLOC (F92AH, 2)
contents: used internally by graphic routine
CMASK (F92CH, 1)
contents: used internally by graphic routine
MINDEL (F92DH, 1)
contents: used internally by graphic routine
MAXDEL (F92FH, 2)
contents: used internally by graphic routine
ASPECT (F931H, 2)
contents: aspect ratio of the circle; set by <ratio> of CIRCLE
statement
CENCNT (F933H, 2)
contents: used internally by CIRCLE statement
CLINEF (F935H, 1)
contents: flag whether a line is drawn toward the center; specified
by <angle> of CIRCLE statement
CNPNTS (F936H, 2)
contents: point to be plotted
CPLOTF (F938H, 1)
contents: used internally by CIRCLE statement
CPCNT (F939H, 2)
contents: number of one eight of the circle
CPNCNT8 (F93BH, 2)
contents: used internally by CIRCLE statement
CPCSUM (F93DH, 2)
contents: used internally by CIRCLE statement
CSTCNT (F93FH, 2)
contents: used internally by CIRCLE statement
CSCLXY (F941H, 1)
contents: scale of x and y
CSAVEA (F942H, 2)
contents: reservation area of ADVGRP
CSAVEM (F944H, 1)
contents: reservation area of ADVGRP
CXOFF (F945H, 2)
contents: x offset from the center
CYOFF (F947H, 2)
contents: y offset from the center
LOHMSK (F949H, 1)
contents: used internally by PAINT statement
LOHDIR (F94AH, 1)
contents: used internally by PAINT statement
LOHADR (F94BH, 2)
contents: used internally by PAINT statement
LOHCNT (F94DH, 2)
contents: used internally by PAINT statement
SKPCNT (F94FH, 2)
contents: skip count
MIVCNT (F951H, 2)
contents: movement count
PDIREC (F953H, 1)
contents: direction of the paint
LFPROG (F954H, 1)
contents: used internally by PAINT statement
RTPROG (F955H, 1)
contents: used internally by PAINT statement
MCLTAB (F956H, 2)
contents: points to the top of the table of PLAY macro or DRAW macro
MCLFLG (F958H, 1)
contents: assignment of PLAY/DRAW
QUEBAK (F971H, 4)
contents: used in BCKQ
DPPAGE (FAF5H, 1)
contents: display page number
ACPAGE (FAF6H, 1)
contents: active page number
AVCSAV (FAF7H, 1)
contents: reserves AV control port
EXBRSA (FAF8H, 1)
contents: SUB-ROM slot address
CHRCNT (FAF9H, 1)
contents: character counter in the buffer; used in Roman-kana
translation (value is 0 <=n <=2)
ROMA (FAFAH, 2)
contents: area to store character in the buffer; used in Roman-kana
translation (Japan version only)
MODE (FAFCH, 1)
contents: mode switch for VRAM size
(0000WVV0)
---
|||
|++--- 00 = 16K VRAM
| 01 = 64K VRAM
| 11 = 128K VRAM
|
+----- 1 = mask, 0 = no mask
Flags whether to specify VRAM address
ANDed with 3FFFH in SCREEN 0 to 3;
in SCREEN 4 to 8, never masked
NORUSE (FAFDH, 1)
contents: unused
XSAVE (FAFEH, 2)
contents: [ I OOOOOOO XXXXXXXX ]
YSAVE (FB00H, 2)
contents: [ x OOOOOOO YYYYYYYY ]
LOGOPR (FB02H, 1)
contents: logical operation code
TOCNT (FB03H, 1)
contents: used internally by RS-232C routine
RSFCB (FB04H, 2)
contents: FB04H + 0: LOW address of RS-232C
FB04H + 1: HIGH address of RS-232C
RSIQLN (FB06H, 5)
contents: used internally by RS-232C routine
MEXBIH (FB07H, 5)
contents: FB07H +0: RST 30H (0F7H)
FB07H +1: byte data
FB07H +2: (Low)
FB07H +3: (High)
FB07H +4: RET (0C9H)
OLDSTT (FB0CH, 5)
contents: FB0CH +0: RST 30H (0F7H)
FB0CH +1: byte data
FB0CH +2: (Low)
FB0CH +3: (High)
FB0CH +4: RET (0C9H)
OLDINT (FB12H, 5)
contents: FB12H +0: RST 30H (0F7H)
FB12H +1: byte data
FB12H +2: (Low)
FB12H +3: (High)
FB12H +4: RET (0C9H)
DEVNUM (FB17H, 1)
contents: used internally by RS-232C routine
DATCNT (FB18H, 3)
contents: FB18H +0: byte data
FB18H +1: byte pointer
FB12H +2: byte pointer
ERRORS (FB1BH, 1)
contents: used internally by RS-232C routine
FLAGS (FB1CH, 1)
contents: used internally by RS-232C routine
ESTBLS (FB1DH, 1)
contents: used internally by RS-232C routine
COMMSK (FB1EH, 1)
contents: used internally by RS-232C routine
LSTCOM (FB1FH, 1)
contents: used internally by RS-232C routine
LSTMOD (FB20H, 1)
contents: used internally by RS-232C routine
PRSCNT (FB35H, 1)
contents: D1 to D0 string parse
D7 = 0 1 pass
SAVSP (FB36H, 2)
contents: reserves stack pointer in play
VOICEN (FB38H, 1)
contents: current interpreted voice
SAVVOL (FB39H, 2)
contents: reserves volume for the pause
MCLLEN (FB3BH, 1)
contents: used internally by PLAY statement
MCLPTR (FB3CH, 1)
contents: used internally by PLAY statement
QUEUEN (FB3EH, 1)
contents: used internally by PLAY statement
MUSICF (FC3FH, 1)
contents: interrupt flag for playing music
PLYCNT (FB40H, 1)
contents: number of PLAY statements stored in the queue
METREX (+0, 2)
contents: timer count down
VCXLEN (+2, 1)
contents: MCLLEN for this voice
VCXPTR (+3, 2)
contents: MCLPTR for this voice
VCXSTP (+5, 2)
contents: reserves the top of the stack pointer
QLENGX (+7, 1)
contents: number of bytes stored in the queue
NTICSX (+8, 2)
contents: new count down
TONPRX (+10, 2)
contents: area to set tone period
AMPPRX (+12, 1)
contents: discrimination of volume and enveloppe
ENVPRX (+13, 2)
contents: area to set enveloppe period
OCTAVX (+15, 1)
contents: area to set octave
NOTELX (+16, 1)
contents: area to set tone length
TEMPOX (+17, 1)
contents: area to set tempo
VOLUMX (+18, 1)
contents: area to set volume
MCLSTX (+33, 3)
contents: reservation area of stack
MCLSEX (+36, 1)
contents: initialisation stack
VCBSIZ (+37, 1)
contents: static buffer size
ENSTOP (FBB0H, 1)
contents: flag to enable warm start by [SHIFT+Ctrl+Kana key]
(0 = disable, otherwise enable)
BASROM (FBB1H, 1)
contents: indicates BASIC text location (0 = on RAM, otherwise in ROM)
FSTPOS (FBCAH, 2)
contents: first character location of line from INLIN (00B1H) of BIOS
CODSAV (FBCCH, 1)
contents: area to reserve the character where the cursor is stacked
FNKSW1 (FBCDH, 1)
contents: indicates which function key is displayed at KEY ON
(1 = F1 to F5 is displayed, 0 = F6 to F10 is displayed)
ONGSBF (FBD8H, 1)
contents: flag to indicate whether event waiting in TRPTBL (FC4CH)
occurred
CLIKFL (FBD9H, 1)
contents: key click flag
PATWRK (FC40H, 8)
contents: temporary reservation location used by pattern converter
BOTTOM (FC48H, 2)
contents: installed RAM starting (low) address; ordinarily 8000H
in MSX2
HIMEM (FC4AH, 2)
contents: highest address of available memory; set by <memory upper
limit> of CLEAR statement
RTYCNT (FC9AH, 1)
contents: used internally by BASIC
INTFLG (FC9BH, 1)
contents: if Ctrl+STOP is pressed, setting 03H here causes a stop
PADY (FC9CH, 1)
contents: Y-coordinate of the paddle)
PADX (FC9DH, 1)
contents: X-coordinate of the paddle)
JIFFY (FC9EH, 2)
contents: used internally by PLAY statement
INTVAL (FCA0H, 2)
contents: interval period; set by ON INTERVAL GOSUB statement
INTCNT (FCA2H, 2)
contents: counter for interval
LOWLIM (FCA4H, 1)
contents: used during reading from cassette tape
WINWID (FCA5H, 1)
contents: used during reading from cassette tape
GRPHED (FCA6H, 1)
contents: flag to send graphic character (1 = graphic character,
0 = normal character)
ESCCNT (FCA7H, 1)
contents: area to count from escape code
INSFLG (FCA8H, 1)
contents: flag to indicate insert mode (0 = normal mode,
otherwise = insert mode)
CSRSW (FCA9H, 1)
contents: whether cursor is displayed (0 = no, otherwise = yes);
set by <cursor swicth> of LOCATE statement
CSTYLE (FCAAH, 1)
contents: cursor shape (0 = block, otherwise = underline)
CAPST (FCABH, 1)
contents: CAPS key status (0 = CAP OFF, otherwise = CAP ON)
KANAST (FCACH, 1)
contents: kana key status (0 = kaka OFF, otherwise = kana ON)
KANAMD (FCADH, 1)
contents: kana key arrangement status (0 = 50-sound arrangement,
otherwise = JIS arrangement)
FLBMEM (FCAEH, 1)
contents: 0 when loading BASIC program
SCRMOD (FCAFH, 1)
contents: current screen mode number
OLDSCR (FCB0H, 1)
contents: screen mode reservation area
CASPRV (FCB1H, 1)
contents: character reservation area used by CAS:
BRDATR (FCB2H, 1)
contents: border colour code used by PAINT; set by <border colour>
in PAINT statement
GXPOS (FCB3H, 2)
contents: X-coordinate
GYPOS (FCB5H, 2)
contents: Y-coordinate
GRPACX (FCB7H, 2)
contents: graphic accumulator (X-coordinate)
GRPACY (FCB9H, 2)
contents: graphic accumulator (Y-coordinate)
DRWFLG (FCBBH, 1)
contents: flag used in DRAW statement
DRWSCL (FCBCH, 1)
contents: DRAW scaling factor (0 = no scaling, otherwise = scaling)
DRWANG (FCBDH, 1)
contents: angle at DRAW
RUNBNF (FCBEH, 1)
contents: flag to indicate BLOAD in progress, BSAVE in progress,
or neither
SAVENT (FCBFH, 2)
contents: starting address of BSAVE
EXPTBL (FCC1H, 4)
contents: flag table for expansion slot; whether the slot is expanded
SLTTBL (FCC5H, 4)
contents: current slot selection status for each expansion slot
register
DEVICE (FD99H, 1)
contents: used to identify cartridge device
* Hooks
H.KEYI (FD9AH)
meaning: beginning of MSXIO interrupt handling
purpose: adds the interrupt operation such as RS-232C
H.TIMI (FD9FH)
meaning: MSXIO timer interrupt handling
purpose: adds the timer interrupt handling
H.CHPH (FDA4H)
meaning: beginning of MSXIO CHPUT (one character output)
purpose: connects other console device
H.DSPC (FDA9H)
meaning: beginning of MSXIO DSPCSR (cursor display)
purpose: connects other console device
H.ERAC (FDAEH)
meaning: beginning of MSXIO ERACSR (erase cursor)
purpose: connects other console device
H.DSPF (FDB3H)
meaning: beginning of MSXIO DSPFNK (function key display)
purpose: connects other console device
H.ERAF (FDB8H)
meaning: beginning of MSXIO ERAFNK (erase function key)
purpose: connects other console device
H.TOTE (FDBDH)
meaning: beginning of MSXIO TOTEXT (set screen in text mode)
purpose: connects other console device
H.CHGE (FDC2H)
meaning: beginning of MSXIO CHGET (get one character)
purpose: connects other console device
H.INIP (FDC7H)
meaning: beginning of MSXIO INIPAT (character pattern initialisation)
purpose: uses other character set
H.KEYC (FDCCH)
meaning: beginning of MSXIO KEYCOD (key code translation)
purpose: uses other key arrangement
H.KYEA (FDD1H)
meaning: beginning of MSXIO NMI routine (Key Easy)
purpose: uses other key arrangement
H.NMI (FDD6H)
meaning: beginning of MSXIO NMI (non-maskable interrupt)
purpose: handles NMI
H.PINL (FDDBH)
meaning: beginning of MSXIO PINLIN (one line input)
purpose: uses other console input device or other input method
H.QINL (FDE0H)
meaning: beginning of MSXINL QINLIN (one line input displaying "?")
purpose: uses other console input device or other input method
H.INLI (FDE5H)
meaning: beginning of MSXINL INLIN (one line input)
purpose: uses other console input device or other input method
H.ONGO (FDEAH)
meaning: beginning of MSXSTS INGOTP (ON GOTO)
purpose: uses other interrupt handling device
H.DSKO (FDEFH)
meaning: beginning of MSXSTS DSKO$ (disk output)
purpose: connects disk device
H.SETS (FDF4H)
meaning: beginning of MSXSTS SETS (set attribute)
purpose: connects disk device
H.NAME (FDF9H)
meaning: beginning of MSXSTS NAME (rename)
purpose: connects disk device
H.KILL (FDFEH)
meaning: beginning of MSXSTS KILL (delete file)
purpose: connects disk device
H.IPL (FE03H)
meaning: beginning of MSXSTS IPL (initial program loading)
purpose: connects disk device
H.COPY (FE08H)
meaning: beginning of MSXSTS COPY (file copy)
purpose: connects disk device
H.CMD (FE0DH)
meaning: beginning of MSXSTS CMD (expanded command)
purpose: connects disk device
H.DSKF (FE12H)
meaning: beginning of MSXSTS DSKF (unusde disk space)
purpose: connects disk device
H.DSKI (FE17H)
meaning: beginning of MSXSTS DSKI (disk input)
purpose: connects disk device
H.ATTR (FE1CH)
meaning: beginning of MSXSTS ATTR$ (attribute)
purpose: connects disk device
H.LSET (FE21H)
meaning: beginning of MSXSTS LSET (left-padded assignment)
purpose: connects disk device
H.RSET (FE26H)
meaning: beginning of MSXSTS RSET (right-padded assignment)
purpose: connects disk device
H.FIEL (FE2BH)
meaning: beginning of MSXSTS FIELD (field)
purpose: connects disk device
H.MKI$ (FE30H)
meaning: beginning of MSXSTS MKI$ (create integer)
purpose: connects disk device
H.MKS$ (FE35H)
meaning: beginning of MSXSTS MKS$ (create single precision real)
purpose: connects disk device
H.MKD$ (FE3AH)
meaning: beginning of MSXSTS MKD$ (create double precision real)
purpose: connects disk device
H.CVI (FE3FH)
meaning: beginning of MSXSTS CVI (convert integer)
purpose: connects disk device
H.CVS (FE44H)
meaning: beginning of MSXSTS CVS (convert single precision real)
purpose: connects disk device
H.CVD (FE49H)
meaning: beginning of MSXSTS CVS (convert double precision real)
purpose: connects disk device
H.GETP (FE4EH)
meaning: SPDSK GETPTR (get file pointer)
purpose: connects disk device
H.SETF (FE53H)
meaning: SPCDSK SETFIL (set file pointer)
purpose: connects disk device
H.NOFO (FE58H)
meaning: SPDSK NOFOR (OPEN statement without FOR)
purpose: connects disk device
H.NULO (FE5DH)
meaning: SPCDSK NULOPN (open unused file)
purpose: connects disk device
H.NTFL (FE62H)
meaning: SPCDSK NTFLO (file number is not 0)
purpose: connects disk device
H.MERG (FE67H)
meaning: SPCDSK MERGE (program file merge)
purpose: connects disk device
H.SAVE (FE6CH)
meaning: SPCDSK SAVE (save)
purpose: connects disk device
H.BINS (FE71H)
meaning: SPCDSK BINSAV (save in binary)
purpose: connects disk device
H.BINL (FE76H)
meaning: SPCDSK BINLOD (load in binary)
purpose: connects disk device
H.FILE (FD7BH)
meaning: SPCDSK FILES (displey filename)
purpose: connects disk device
H.DGET (FE80H)
meaning: SPCDSK DGET (disk GET)
purpose: connects disk device
H.FILO (FE85H)
meaning: SPCDSK FILOU1 (file output)
purpose: connects disk device
H.INDS (FE8AH)
meaning: SPCDSK INDSKC (disk attribute input)
purpose: connects disk device
H.RSLF (FE8FH)
meaning: SPCDSK; re-select previous drive
purpose: connects disk device
H.SAVD (FE94H)
meaning: SPCDSK; reserve current disk
purpose: connects disk device
H.LOC (FE99H)
meaning: SPCDSK LOC function (indicate location)
purpose: connects disk device
H.LOF (FE9EH)
meaning: SPCDSK LOC function (file length)
purpose: connects disk device
H.EOF (FEA3H)
meaning: SPCDSK EOF function (end of file)
purpose: connects disk device
H.FPOS (FEA8H)
meaning: SPCDSK FPOS function (file location)
purpose: connects disk device
H.BAKU (FEADH)
meaning: SPCDSK BAKUPT (backup)
purpose: connects disk device
H.PARD (FEB2H)
meaning: SPCDEV PARDEV (get peripheral name)
purpose: expands logical device name
H.NODE (FEB7H)
meaning: SPCDEV NODEVN (no device name)
purpose: sets default device name to other device
H.POSD (FEBCH)
meaning: SPCDEV POSDSK
purpose: connects disk device
H.DEVN (FEC1H)
meaning: SPCDEV DEVNAM (process device name)
purpose: expands logical device name
H.GEND (FEC6H)
meaning: SPCDEV GENDSP (FEC6H)
purpose: expands logical device name
H.RUNC (FECBH)
meaning: BIMISC RUNC (clear for RUN)
H.CLEAR (FED0H)
meaning: BIMISC CLEARC (clear for CLEAR statement)
H.LOPD (FED5H)
meaning: BIMISC LOPDFT (set loop and default value)
purpose: uses other default value for variable
H.STKE (FEDAH)
meaning: BIMISC STKERR (stack error)
H.ISFL (FEDFH)
meaning: BIMISC ISFLIO (file input-output or not)
H.OUTD (FEE4H)
meaning: BIO OUTDO (execute OUT)
H.CRDO (FEE9H)
meaning: BIO CRDO (execute CRLF)
H.DSKC (FEEEH)
meaning: BIO DSKCHI (input disk attribute)
H.DOGR (FEF3H)
meaning: GENGRP DOGRPH (execute graphic operation)
H.PRGE (FEF8H)
meaning: BINTRP PRGEND (program end)
H.ERRP (FEFDH)
meaning: BINTRP ERRPTR (error display)
H.ERRF (FF02H)
meaning: BINTRP
H.READ (FF07H)
meaning: BINTRP READY
H.MAIN (FF0CH)
meaning: BINTRP MAIN
H.DIRD (FF11H)
meaning: BINTRP DIRDO (execute direct statement)
H.FINI (FF16H)
meaning: BINTRP
H.FINE (FF1BH)
meaning: BINTRP
H.CRUN (FF20H)
meaning: BINTRP
H.CRUN (FF20H)
meaning: BINTRP
H.CRUS (FF25H)
meaning: BINTRP
H.ISRE (FF2AH)
meaning: BINTRP
H.NTFN (FF2FH)
meaning: BINTRP
H.NOTR (FF34H)
meaning: BINTRP
H.SNGF (FF39H)
meaning: BINTRP
H.NEWS (FF3EH)
meaning: BINTRP
H.GONE (FF43H)
meaning: BINTRP
H.CHRG (FF48H)
meaning: BINTRP
H.RETU (FF4DH)
meaning: BINTRP
H.PRTF (FF52H)
meaning: BINTRP
H.COMP (FF57H)
meaning: BINTRP
H.FINP (FF5CH)
meaning: BINTRP
H.TRMN (FF61H)
meaning: BINTRP
H.FRME (FF66H)
meaning: BINTRP
H.NTPL (FF6BH)
meaning: BINTRP
H.EVAL (FF70H)
meaning: BINTRP
H.OKNO (FF75H)
meaning: BINTRP
H.FING (FF7AH)
meaning: BINTRP
H.ISMI (FF7FH)
meaning: BINTRP ISMID$ (MID$ or not)
H.WIDT (FF84H)
meaning: BINTRP WIDTHS (WIDTH)
H.LIST (FF89H)
meaning: BINTRP LIST
H.BUFL (FF8EH)
meaning: BINTRP BUFLIN (buffer line)
H.FRQI (FF93H)
meaning: BINTRP FRQINT
H.SCNE (FF98H)
meaning: BINTRP
H.FRET (FF9DH)
meaning: BINTRP FRETMP
H.PTRG (FFA2H)
meaning: BIPTRG PTRGET (get pointer)
purpose: uses variable other than default value
H.PHYD (FFA7H)
meaning: MSXIO PHYDIO (physical disk input-output)
purpose: connects disk device
H.FORM (FFACH)
meaning: MSXIO FORMAT (format disk)
purpose: connects disk device
H.ERRO (FFB1H)
meaning: BINTRP ERROR
purpose: error handling for application program
H.LPTO (FFB6H)
meaning: MSXIO LPTOUT (printer output)
purpose: uses printer other than default value
H.LPTS (FFBBH)
meaning: MSXIO LPTSTT (printer status)
purpose: uses printer other than default value
H.SCRE (FFC0H)
meaning: MSXSTS SCREEN statement entry
purpose: expands SCREEN statement
H.PLAY (FFC5H)
meaning: MSXSTS PLAY statement entry
purpose: expands PLAY statement
FCALL (FFCAH)
contents: hook used by expanded BIOS
DISINT (FFCFH)
contents: used by DOS
ENAINT (FFD4H)
contents: used by DOS
=============================================================================
- The original VRAM mapping figures have been converted to simple text
tables.
- In SCREEN 0 (WIDTH 80) map, different end addresses for the blink table are
indicated for 24 lines mode and 26.5 lines mode.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* SCREEN 1 / GRAPHIC 1
* SCREEN 2 / GRAPHIC 2
* SCREEN 4 / GRAPHIC 3
* SCREEN 5, 6 / GRAPHIC 4, 5
* SCREEN 7, 8 / GRAPHIC 6, 7
=============================================================================
none
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=============================================================================
none
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
APPENDIX 8 - CONTROL CODES
-------------------------------------------------------------------------
| Code | Code | | Corresponding |
| (dec)| (hex)| Function | key(s) |
|------+------+-----------------------------------+---------------------|
| 0 | 00H | | CTRL + @ |
| | | | |
| 1 | 01H | header at input/output of graphic | CTRL + A |
| | | characters | |
| | | | |
| 2 | 02H | move cursor to the top of the | CTRL + B |
| | | previous word | |
| | | | |
| 3 | 03H | end the input-waiting state | CTRL + C |
| | | | |
| 4 | 04H | | CTRL + D |
| | | | |
| 5 | 05H | delete below cursor | CTRL + E |
| | | | |
| 6 | 06H | move cursor to the top of the | CTRL + F |
| | | next word | |
| | | | |
| 7 | 07H | speaker output | CTRL + G |
| | | (same as the BEEP statement) | |
| | | | |
| 8 | 08H | delete a character before cursor | CTRL + H or BS |
| | | | |
| 9 | 09H | move to next horizontal tab stop | CTRL + I or TAB |
| | | | |
| 10 | 0AH | line feed | CTRL + J |
| | | | |
| 11 | 0BH | home cursor | CTRL + K or HOME |
| | | | |
| 12 | 0CH | clear screen and home cursor | CTRL + L or CLS |
| | | | |
| 13 | 0DH | carriage return | CTRL + M or RETURN |
| | | | |
| 14 | 0EH | move cursor to the end of line | CTRL + N |
| | | | |
| 15 | 0FH | | CTRL + O |
| | | | |
| 16 | 10H | | CTRL + P |
| | | | |
| 17 | 11H | | CTRL + Q |
| | | | |
| 18 | 12H | insert mode ON/OFF | CTRL + R or INS |
| | | | |
| 19 | 13H | | CTRL + S |
| | | | |
| 20 | 14H | | CTRL + T |
| | | | |
| 21 | 15H | delete one line from screen | CTRL + U |
| | | | |
| 22 | 16H | | CTRL + V |
| | | | |
| 23 | 17H | | CTRL + W |
| | | | |
| 24 | 18H | | CTRL + X or SELECT |
| | | | |
| 25 | 19H | | CTRL + Y |
| | | | |
| 26 | 1AH | | CTRL + Z |
| | | | |
| 27 | 1BH | | CTRL + [ or ESC |
| | | | |
| 28 | 1CH | move cursor right | CTRL + \ or RIGHT |
| | | | |
| 29 | 1DH | move cursor left | CTRL + ] or LEFT |
| | | | |
| 30 | 1EH | move cursor up | CTRL + ^ or UP |
| | | | |
| 31 | 1FH | move cursor down | CTRL + _ or DOWN |
| | | | |
| 127 | 7FH | delete character under cursor | DEL |
| | | | |
-------------------------------------------------------------------------
=============================================================================
none
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* Cursor movement
* Edit, delete
* Miscellaneous
============================================================================
and