@nataliapc/mcp-openmsx 1.1.14 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -12
- package/dist/server.js +198 -69
- package/dist/utils.js +54 -7
- package/dist/vectordb.js +60 -0
- package/package.json +10 -3
- package/resources/audio/MGSC111.txt +669 -0
- package/resources/audio/msx-midi.md +872 -0
- package/resources/audio/opl4tech.txt +688 -0
- package/resources/audio/psg_registers.md +281 -0
- package/resources/audio/sound_cartridge_scc.md +123 -0
- package/resources/audio/sound_cartridge_scci.md +250 -0
- package/resources/audio/toc.json +18 -7
- package/resources/book--msx2-technical-handbook/toc.json +1 -1
- package/resources/msx-unapi/toc.json +2 -2
- package/resources/processors/toc.json +4 -4
- package/resources/processors/z80_detailed_instruction_set.md +80 -68
- package/resources/programming/basic_wiki/ABS().md +36 -0
- package/resources/programming/basic_wiki/AND.md +71 -0
- package/resources/programming/basic_wiki/ASC().md +38 -0
- package/resources/programming/basic_wiki/ATN().md +36 -0
- package/resources/programming/basic_wiki/AUTO.md +39 -0
- package/resources/programming/basic_wiki/BASE().md +147 -0
- package/resources/programming/basic_wiki/BEEP.md +27 -0
- package/resources/programming/basic_wiki/BIN$().md +36 -0
- package/resources/programming/basic_wiki/BLOAD.md +63 -0
- package/resources/programming/basic_wiki/BSAVE.md +61 -0
- package/resources/programming/basic_wiki/CALL.md +391 -0
- package/resources/programming/basic_wiki/CALL_ADJUST.md +40 -0
- package/resources/programming/basic_wiki/CALL_IMPOSE.md +28 -0
- package/resources/programming/basic_wiki/CALL_OPTIONS.md +26 -0
- package/resources/programming/basic_wiki/CALL_PAUSE.md +119 -0
- package/resources/programming/basic_wiki/CALL_PCMPLAY.md +60 -0
- package/resources/programming/basic_wiki/CALL_PCMREC.md +70 -0
- package/resources/programming/basic_wiki/CDBL().md +36 -0
- package/resources/programming/basic_wiki/CHR$().md +51 -0
- package/resources/programming/basic_wiki/CINT().md +36 -0
- package/resources/programming/basic_wiki/CIRCLE.md +51 -0
- package/resources/programming/basic_wiki/CLEAR.md +39 -0
- package/resources/programming/basic_wiki/CLOAD.md +27 -0
- package/resources/programming/basic_wiki/CLOAD?.md +31 -0
- package/resources/programming/basic_wiki/CLOSE.md +44 -0
- package/resources/programming/basic_wiki/CLS.md +51 -0
- package/resources/programming/basic_wiki/COLOR.md +143 -0
- package/resources/programming/basic_wiki/COLOR=.md +93 -0
- package/resources/programming/basic_wiki/COLOR_SPRITE$().md +83 -0
- package/resources/programming/basic_wiki/COLOR_SPRITE().md +85 -0
- package/resources/programming/basic_wiki/CONT.md +23 -0
- package/resources/programming/basic_wiki/COPY.md +215 -0
- package/resources/programming/basic_wiki/COPY_SCREEN.md +61 -0
- package/resources/programming/basic_wiki/COS().md +37 -0
- package/resources/programming/basic_wiki/CSAVE.md +35 -0
- package/resources/programming/basic_wiki/CSNG().md +36 -0
- package/resources/programming/basic_wiki/CSRLIN.md +33 -0
- package/resources/programming/basic_wiki/DATA.md +47 -0
- package/resources/programming/basic_wiki/DEFDBL.md +40 -0
- package/resources/programming/basic_wiki/DEFINT.md +40 -0
- package/resources/programming/basic_wiki/DEFSNG.md +40 -0
- package/resources/programming/basic_wiki/DEFSTR.md +40 -0
- package/resources/programming/basic_wiki/DEF_FN.md +49 -0
- package/resources/programming/basic_wiki/DEF_USR.md +33 -0
- package/resources/programming/basic_wiki/DELETE.md +49 -0
- package/resources/programming/basic_wiki/DIM.md +59 -0
- package/resources/programming/basic_wiki/DRAW.md +77 -0
- package/resources/programming/basic_wiki/ELSE.md +45 -0
- package/resources/programming/basic_wiki/END.md +32 -0
- package/resources/programming/basic_wiki/EOF().md +36 -0
- package/resources/programming/basic_wiki/EQV.md +76 -0
- package/resources/programming/basic_wiki/ERASE.md +35 -0
- package/resources/programming/basic_wiki/ERL.md +34 -0
- package/resources/programming/basic_wiki/ERR.md +143 -0
- package/resources/programming/basic_wiki/ERROR.md +145 -0
- package/resources/programming/basic_wiki/EXP().md +38 -0
- package/resources/programming/basic_wiki/FIELD.md +48 -0
- package/resources/programming/basic_wiki/FIX().md +44 -0
- package/resources/programming/basic_wiki/FN.md +61 -0
- package/resources/programming/basic_wiki/FOR...NEXT.md +80 -0
- package/resources/programming/basic_wiki/FRE().md +66 -0
- package/resources/programming/basic_wiki/GET_DATE.md +60 -0
- package/resources/programming/basic_wiki/GET_TIME.md +34 -0
- package/resources/programming/basic_wiki/GOSUB.md +41 -0
- package/resources/programming/basic_wiki/GOTO.md +41 -0
- package/resources/programming/basic_wiki/HEX$().md +36 -0
- package/resources/programming/basic_wiki/IF...GOTO...ELSE.md +55 -0
- package/resources/programming/basic_wiki/IF...THEN...ELSE.md +50 -0
- package/resources/programming/basic_wiki/IMP.md +83 -0
- package/resources/programming/basic_wiki/INKEY$.md +65 -0
- package/resources/programming/basic_wiki/INP().md +33 -0
- package/resources/programming/basic_wiki/INPUT$().md +51 -0
- package/resources/programming/basic_wiki/INPUT.md +93 -0
- package/resources/programming/basic_wiki/INSTR().md +44 -0
- package/resources/programming/basic_wiki/INT().md +44 -0
- package/resources/programming/basic_wiki/INTERVAL.md +57 -0
- package/resources/programming/basic_wiki/KEY().md +51 -0
- package/resources/programming/basic_wiki/KEY.md +254 -0
- package/resources/programming/basic_wiki/LEFT$().md +39 -0
- package/resources/programming/basic_wiki/LEN().md +36 -0
- package/resources/programming/basic_wiki/LET.md +68 -0
- package/resources/programming/basic_wiki/LINE.md +74 -0
- package/resources/programming/basic_wiki/LINE_INPUT.md +79 -0
- package/resources/programming/basic_wiki/LIST.md +58 -0
- package/resources/programming/basic_wiki/LLIST.md +43 -0
- package/resources/programming/basic_wiki/LOAD.md +56 -0
- package/resources/programming/basic_wiki/LOCATE.md +67 -0
- package/resources/programming/basic_wiki/LOG().md +36 -0
- package/resources/programming/basic_wiki/LPOS().md +31 -0
- package/resources/programming/basic_wiki/LPRINT.md +46 -0
- package/resources/programming/basic_wiki/MAXFILES.md +39 -0
- package/resources/programming/basic_wiki/MERGE.md +54 -0
- package/resources/programming/basic_wiki/MID$().md +72 -0
- package/resources/programming/basic_wiki/MOD.md +39 -0
- package/resources/programming/basic_wiki/MOTOR.md +46 -0
- package/resources/programming/basic_wiki/NEW.md +27 -0
- package/resources/programming/basic_wiki/NOT.md +61 -0
- package/resources/programming/basic_wiki/OCT$().md +36 -0
- package/resources/programming/basic_wiki/ON...GOSUB.md +45 -0
- package/resources/programming/basic_wiki/ON...GOTO.md +42 -0
- package/resources/programming/basic_wiki/ON_ERROR_GOTO.md +61 -0
- package/resources/programming/basic_wiki/ON_INTERVAL_GOSUB.md +54 -0
- package/resources/programming/basic_wiki/ON_KEY_GOSUB.md +56 -0
- package/resources/programming/basic_wiki/ON_SPRITE_GOSUB.md +41 -0
- package/resources/programming/basic_wiki/ON_STOP_GOSUB.md +56 -0
- package/resources/programming/basic_wiki/ON_STRIG_GOSUB.md +70 -0
- package/resources/programming/basic_wiki/OPEN.md +103 -0
- package/resources/programming/basic_wiki/OR.md +75 -0
- package/resources/programming/basic_wiki/OUT.md +35 -0
- package/resources/programming/basic_wiki/PAD().md +110 -0
- package/resources/programming/basic_wiki/PAINT.md +66 -0
- package/resources/programming/basic_wiki/PDL().md +53 -0
- package/resources/programming/basic_wiki/PEEK().md +44 -0
- package/resources/programming/basic_wiki/PLAY().md +58 -0
- package/resources/programming/basic_wiki/PLAY.md +196 -0
- package/resources/programming/basic_wiki/POINT.md +52 -0
- package/resources/programming/basic_wiki/POKE.md +51 -0
- package/resources/programming/basic_wiki/POS().md +36 -0
- package/resources/programming/basic_wiki/PRESET.md +61 -0
- package/resources/programming/basic_wiki/PRINT.md +179 -0
- package/resources/programming/basic_wiki/PSET.md +82 -0
- package/resources/programming/basic_wiki/PUT_KANJI.md +93 -0
- package/resources/programming/basic_wiki/PUT_SPRITE.md +143 -0
- package/resources/programming/basic_wiki/READ.md +45 -0
- package/resources/programming/basic_wiki/REM.md +42 -0
- package/resources/programming/basic_wiki/RENUM.md +78 -0
- package/resources/programming/basic_wiki/RESTORE.md +52 -0
- package/resources/programming/basic_wiki/RESUME.md +45 -0
- package/resources/programming/basic_wiki/RETURN.md +47 -0
- package/resources/programming/basic_wiki/RIGHT$().md +39 -0
- package/resources/programming/basic_wiki/RND().md +51 -0
- package/resources/programming/basic_wiki/RUN.md +56 -0
- package/resources/programming/basic_wiki/SAVE.md +65 -0
- package/resources/programming/basic_wiki/SCREEN.md +164 -0
- package/resources/programming/basic_wiki/SET_ADJUST.md +66 -0
- package/resources/programming/basic_wiki/SET_BEEP.md +76 -0
- package/resources/programming/basic_wiki/SET_DATE.md +103 -0
- package/resources/programming/basic_wiki/SET_PAGE.md +52 -0
- package/resources/programming/basic_wiki/SET_PASSWORD.md +75 -0
- package/resources/programming/basic_wiki/SET_PROMPT.md +61 -0
- package/resources/programming/basic_wiki/SET_SCREEN.md +100 -0
- package/resources/programming/basic_wiki/SET_SCROLL.md +55 -0
- package/resources/programming/basic_wiki/SET_TIME.md +83 -0
- package/resources/programming/basic_wiki/SET_TITLE.md +87 -0
- package/resources/programming/basic_wiki/SET_VIDEO.md +49 -0
- package/resources/programming/basic_wiki/SGN().md +38 -0
- package/resources/programming/basic_wiki/SIN().md +36 -0
- package/resources/programming/basic_wiki/SOUND.md +188 -0
- package/resources/programming/basic_wiki/SPACE$().md +38 -0
- package/resources/programming/basic_wiki/SPC().md +34 -0
- package/resources/programming/basic_wiki/SPRITE$().md +50 -0
- package/resources/programming/basic_wiki/SPRITE.md +31 -0
- package/resources/programming/basic_wiki/SQR().md +32 -0
- package/resources/programming/basic_wiki/STICK().md +70 -0
- package/resources/programming/basic_wiki/STOP.md +70 -0
- package/resources/programming/basic_wiki/STR$().md +37 -0
- package/resources/programming/basic_wiki/STRIG().md +82 -0
- package/resources/programming/basic_wiki/STRING$().md +42 -0
- package/resources/programming/basic_wiki/SWAP.md +62 -0
- package/resources/programming/basic_wiki/TAB().md +38 -0
- package/resources/programming/basic_wiki/TAN().md +36 -0
- package/resources/programming/basic_wiki/TIME.md +59 -0
- package/resources/programming/basic_wiki/TROFF.md +21 -0
- package/resources/programming/basic_wiki/TRON.md +39 -0
- package/resources/programming/basic_wiki/USR().md +66 -0
- package/resources/programming/basic_wiki/VAL().md +36 -0
- package/resources/programming/basic_wiki/VARPTR().md +50 -0
- package/resources/programming/basic_wiki/VDP().md +103 -0
- package/resources/programming/basic_wiki/VPEEK().md +46 -0
- package/resources/programming/basic_wiki/VPOKE.md +48 -0
- package/resources/programming/basic_wiki/WAIT.md +38 -0
- package/resources/programming/basic_wiki/WIDTH.md +76 -0
- package/resources/programming/basic_wiki/XOR.md +72 -0
- package/resources/programming/basic_wiki/_toc.json +871 -0
- package/resources/sdcc/sdccman.lyx +81574 -0
- package/resources/sdcc/toc.json +77 -0
- package/vector-db/index.json +1 -0
- /package/resources/msx-unapi/{Ethernet_UNAPI_specification_1.1.md → Ethernet_UNAPI_specification_1_1.md} +0 -0
- /package/resources/msx-unapi/{MSX_UNAPI_specification_1.1.md → MSX_UNAPI_specification_1_1.md} +0 -0
- /package/resources/processors/{Z80_R800_instruction_set.md → z80_r800_instruction_set.md} +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# CALL
|
|
2
|
+
|
|
3
|
+
## Effect
|
|
4
|
+
|
|
5
|
+
`CALL` is an instruction reserved to extend the existing BASIC instructions.
|
|
6
|
+
|
|
7
|
+
_Notes:_
|
|
8
|
+
- If you have more then one extension providing an extended instruction with the same name, only the instruction provided by the ROM in a lower numbered slot will be taken into account by the BASIC interpreter.
|
|
9
|
+
- See the existing extended instructions for MSX-BASIC.
|
|
10
|
+
|
|
11
|
+
## Syntax
|
|
12
|
+
|
|
13
|
+
`CALL <Instruction> (<Parameter>,<Parameter>...)`
|
|
14
|
+
|
|
15
|
+
_Note: `CALL` can be replaced by the character underscore `_`. A space is not required after this character._
|
|
16
|
+
|
|
17
|
+
## Parameters
|
|
18
|
+
|
|
19
|
+
`<Instruction>` is the name of extended instruction.
|
|
20
|
+
|
|
21
|
+
`<Parameter>` can take different forms (numeric variable, value, string, etc) and several parameters can follow. Do not put parentheses if there is no parameter.
|
|
22
|
+
|
|
23
|
+
## Example of CALL-instruction implementation in ROM programs
|
|
24
|
+
|
|
25
|
+
When ROM cartridge has standard "AB"-header, the slot attributes will be automatically filled during boot time.
|
|
26
|
+
|
|
27
|
+
```assembly
|
|
28
|
+
; Example of String handling in BASIC CALL-instructions
|
|
29
|
+
; Made By: NYYRIKKI 16.11.2011
|
|
30
|
+
; Edit by: zPasi 13.3.2014: added a call to FRESTR, to free the temporary string in
|
|
31
|
+
; routine EVALTXTPARAM
|
|
32
|
+
|
|
33
|
+
OUTPUT "PRINT.ROM"
|
|
34
|
+
ORG #4000
|
|
35
|
+
|
|
36
|
+
;---------------------------
|
|
37
|
+
; External variables & routines
|
|
38
|
+
CHPUT EQU #A2
|
|
39
|
+
CALBAS EQU #159
|
|
40
|
+
ERRHAND EQU #406F
|
|
41
|
+
FRMEVL EQU #4C64
|
|
42
|
+
FRESTR EQU #67D0
|
|
43
|
+
CHRGTR EQU #4666
|
|
44
|
+
VALTYP EQU #F663
|
|
45
|
+
USR EQU #F7F8
|
|
46
|
+
PROCNM EQU #FD89
|
|
47
|
+
|
|
48
|
+
;---------------------------
|
|
49
|
+
; ROM-file header
|
|
50
|
+
DEFW #4241,0,CALLHAND,0,0,0,0,0
|
|
51
|
+
|
|
52
|
+
;---------------------------
|
|
53
|
+
; General BASIC CALL-instruction handler
|
|
54
|
+
CALLHAND:
|
|
55
|
+
PUSH HL
|
|
56
|
+
LD HL,CMDS ; Table with "_" instructions
|
|
57
|
+
.CHKCMD:
|
|
58
|
+
LD DE,PROCNM
|
|
59
|
+
.LOOP: LD A,(DE)
|
|
60
|
+
CP (HL)
|
|
61
|
+
JR NZ,.TONEXTCMD ; Not equal
|
|
62
|
+
INC DE
|
|
63
|
+
INC HL
|
|
64
|
+
AND A
|
|
65
|
+
JR NZ,.LOOP ; No end of instruction name, go checking
|
|
66
|
+
LD E,(HL)
|
|
67
|
+
INC HL
|
|
68
|
+
LD D,(HL)
|
|
69
|
+
POP HL ; routine address
|
|
70
|
+
CALL GETPREVCHAR
|
|
71
|
+
CALL .CALLDE ; Call routine
|
|
72
|
+
AND A
|
|
73
|
+
RET
|
|
74
|
+
|
|
75
|
+
.TONEXTCMD:
|
|
76
|
+
LD C,0FFH
|
|
77
|
+
XOR A
|
|
78
|
+
CPIR ; Skip to end of instruction name
|
|
79
|
+
INC HL
|
|
80
|
+
INC HL ; Skip address
|
|
81
|
+
CP (HL)
|
|
82
|
+
JR NZ,.CHKCMD ; Not end of table, go checking
|
|
83
|
+
POP HL
|
|
84
|
+
SCF
|
|
85
|
+
RET
|
|
86
|
+
|
|
87
|
+
.CALLDE:
|
|
88
|
+
PUSH DE
|
|
89
|
+
RET
|
|
90
|
+
|
|
91
|
+
;---------------------------
|
|
92
|
+
CMDS:
|
|
93
|
+
; List of available instructions (as ASCIIZ) and execute address (as word)
|
|
94
|
+
DEFB "UPRINT",0 ; Print upper case string
|
|
95
|
+
DEFW _UPRINT
|
|
96
|
+
|
|
97
|
+
DEFB "LPRINT",0 ; Print lower case string
|
|
98
|
+
DEFW _LPRINT
|
|
99
|
+
|
|
100
|
+
DEFB 0 ; No more instructions
|
|
101
|
+
|
|
102
|
+
;---------------------------
|
|
103
|
+
_UPRINT:
|
|
104
|
+
CALL EVALTXTPARAM ; Evaluate text parameter
|
|
105
|
+
PUSH HL
|
|
106
|
+
CALL GETSTRPNT
|
|
107
|
+
.LOOP
|
|
108
|
+
LD A,(HL)
|
|
109
|
+
CALL .UCASE
|
|
110
|
+
CALL CHPUT ;Print
|
|
111
|
+
INC HL
|
|
112
|
+
DJNZ .LOOP
|
|
113
|
+
|
|
114
|
+
POP HL
|
|
115
|
+
OR A
|
|
116
|
+
RET
|
|
117
|
+
|
|
118
|
+
.UCASE:
|
|
119
|
+
CP "a"
|
|
120
|
+
RET C
|
|
121
|
+
CP "z"+1
|
|
122
|
+
RET NC
|
|
123
|
+
AND %11011111
|
|
124
|
+
RET
|
|
125
|
+
|
|
126
|
+
;---------------------------
|
|
127
|
+
_LPRINT:
|
|
128
|
+
CALL EVALTXTPARAM ; Evaluate text parameter
|
|
129
|
+
PUSH HL
|
|
130
|
+
CALL GETSTRPNT
|
|
131
|
+
.LOOP
|
|
132
|
+
LD A,(HL)
|
|
133
|
+
CALL .LCASE
|
|
134
|
+
CALL CHPUT ;Print
|
|
135
|
+
INC HL
|
|
136
|
+
DJNZ .LOOP
|
|
137
|
+
|
|
138
|
+
POP HL
|
|
139
|
+
OR A
|
|
140
|
+
RET
|
|
141
|
+
|
|
142
|
+
.LCASE:
|
|
143
|
+
CP "A"
|
|
144
|
+
RET C
|
|
145
|
+
CP "Z"+1
|
|
146
|
+
RET NC
|
|
147
|
+
OR %00100000
|
|
148
|
+
RET
|
|
149
|
+
|
|
150
|
+
;---------------------------
|
|
151
|
+
GETSTRPNT:
|
|
152
|
+
; OUT:
|
|
153
|
+
; HL = String Address
|
|
154
|
+
; B = Lenght
|
|
155
|
+
|
|
156
|
+
LD HL,(#F7F8)
|
|
157
|
+
LD B,(HL)
|
|
158
|
+
INC HL
|
|
159
|
+
LD E,(HL)
|
|
160
|
+
INC HL
|
|
161
|
+
LD D,(HL)
|
|
162
|
+
EX DE,HL
|
|
163
|
+
RET
|
|
164
|
+
|
|
165
|
+
EVALTXTPARAM:
|
|
166
|
+
CALL CHKCHAR
|
|
167
|
+
DEFB "(" ; Check for (
|
|
168
|
+
LD IX,FRMEVL
|
|
169
|
+
CALL CALBAS ; Evaluate expression
|
|
170
|
+
LD A,(VALTYP)
|
|
171
|
+
CP 3 ; Text type?
|
|
172
|
+
JP NZ,TYPE_MISMATCH
|
|
173
|
+
PUSH HL
|
|
174
|
+
LD IX,FRESTR ; Free the temporary string
|
|
175
|
+
CALL CALBAS
|
|
176
|
+
POP HL
|
|
177
|
+
CALL CHKCHAR
|
|
178
|
+
DEFB ")" ; Check for )
|
|
179
|
+
RET
|
|
180
|
+
|
|
181
|
+
CHKCHAR:
|
|
182
|
+
CALL GETPREVCHAR ; Get previous basic char
|
|
183
|
+
EX (SP),HL
|
|
184
|
+
CP (HL) ; Check if good char
|
|
185
|
+
JR NZ,SYNTAX_ERROR ; No, Syntax error
|
|
186
|
+
INC HL
|
|
187
|
+
EX (SP),HL
|
|
188
|
+
INC HL ; Get next basic char
|
|
189
|
+
|
|
190
|
+
GETPREVCHAR:
|
|
191
|
+
DEC HL
|
|
192
|
+
LD IX,CHRGTR
|
|
193
|
+
JP CALBAS
|
|
194
|
+
|
|
195
|
+
TYPE_MISMATCH:
|
|
196
|
+
LD E,13
|
|
197
|
+
DB 1
|
|
198
|
+
|
|
199
|
+
SYNTAX_ERROR:
|
|
200
|
+
LD E,2
|
|
201
|
+
LD IX,ERRHAND ; Call the Basic error handler
|
|
202
|
+
JP CALBAS
|
|
203
|
+
|
|
204
|
+
;---------------------------
|
|
205
|
+
DS #8000-$
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Example of CALL-instruction implementation in BIN-file
|
|
209
|
+
|
|
210
|
+
When a `CALL-instruction` extension is loaded after boot, user must put the address of `CALL` instruction handler to 4th & 5th byte of memory bank and mark that the extension is available (bit 5) to the slot attribute table manually.
|
|
211
|
+
|
|
212
|
+
Please note that if the program is erased from memory the next `CALL` instruction execution may crash the computer if the bit from table is not manually cleared.
|
|
213
|
+
|
|
214
|
+
The correct address inside slot attribute table can be calculated using formula:
|
|
215
|
+
`ADDRESS = Main slot * 16 + Sub slot * 4 + Memory Bank + #FCC9`
|
|
216
|
+
|
|
217
|
+
```assembly
|
|
218
|
+
OUTPUT "X.BIN"
|
|
219
|
+
|
|
220
|
+
; USAGE:
|
|
221
|
+
; BLOAD "X.BIN",R
|
|
222
|
+
; CALL X == CLS
|
|
223
|
+
|
|
224
|
+
SLTATR EQU #FCC9
|
|
225
|
+
PROCNM EQU #FD89
|
|
226
|
+
CLS EQU #C3
|
|
227
|
+
|
|
228
|
+
; BASIC header:
|
|
229
|
+
|
|
230
|
+
DB #FE
|
|
231
|
+
DW BEGIN,END,START
|
|
232
|
+
|
|
233
|
+
ORG #C004
|
|
234
|
+
BEGIN:
|
|
235
|
+
; Call handler pointer in Bank 3 fixed offset 4
|
|
236
|
+
DW CALLHAND
|
|
237
|
+
START:
|
|
238
|
+
LD A,(#F344) ; SlotID of RAM in Bank 3 (#C000-#FFFF)
|
|
239
|
+
; This variable is ready available only when disk drive is present.
|
|
240
|
+
AND A
|
|
241
|
+
JP M,.SKIP ; SlotID has SubSlot information
|
|
242
|
+
AND 3
|
|
243
|
+
.SKIP
|
|
244
|
+
AND 15
|
|
245
|
+
LD E,A
|
|
246
|
+
RLCA
|
|
247
|
+
RLCA
|
|
248
|
+
RLCA
|
|
249
|
+
RLCA
|
|
250
|
+
OR E
|
|
251
|
+
AND 60
|
|
252
|
+
LD D,0
|
|
253
|
+
LD E,A
|
|
254
|
+
LD HL,SLTATR+3 ; +3 for Bank 3
|
|
255
|
+
ADD HL,DE
|
|
256
|
+
SET 5,(HL) ; Set bit 5 to enable CALL handler
|
|
257
|
+
RET
|
|
258
|
+
|
|
259
|
+
CALLHAND:
|
|
260
|
+
|
|
261
|
+
PUSH HL
|
|
262
|
+
LD HL,PROCNM
|
|
263
|
+
LD A,(HL)
|
|
264
|
+
CP "X"
|
|
265
|
+
JR NZ,.NOT_FOR_ME
|
|
266
|
+
INC HL
|
|
267
|
+
LD A,(HL)
|
|
268
|
+
AND A ; Commands are zero terminated
|
|
269
|
+
JR NZ,.NOT_FOR_ME
|
|
270
|
+
CALL CLS
|
|
271
|
+
POP HL
|
|
272
|
+
AND A ; Clear carry to inform CALL is handled.
|
|
273
|
+
RET
|
|
274
|
+
|
|
275
|
+
.NOT_FOR_ME:
|
|
276
|
+
|
|
277
|
+
POP HL
|
|
278
|
+
SCF
|
|
279
|
+
RET
|
|
280
|
+
END:
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## List of MSX tR default CALL instructions sorted by slots
|
|
284
|
+
|
|
285
|
+
### Slot #0-2 (MSX-Music)
|
|
286
|
+
|
|
287
|
+
|||
|
|
288
|
+
|---|:-:|
|
|
289
|
+
|AUDREG||
|
|
290
|
+
|APPEND MK|*|
|
|
291
|
+
|APEEK|*|
|
|
292
|
+
|APOKE|*|
|
|
293
|
+
|BGM||
|
|
294
|
+
|CONT MK|*|
|
|
295
|
+
|COPY PCM|*|
|
|
296
|
+
|CONVP|*|
|
|
297
|
+
|CONVA|*|
|
|
298
|
+
|INMK|*|
|
|
299
|
+
|KEY ON|*|
|
|
300
|
+
|KEY OFF|*|
|
|
301
|
+
|LOAD PCM|*|
|
|
302
|
+
|MDR||
|
|
303
|
+
|MK VOICE|*|
|
|
304
|
+
|MK VEL|*|
|
|
305
|
+
|MK VOL|*|
|
|
306
|
+
|MK TEMPO|*|
|
|
307
|
+
|MK STAT|*|
|
|
308
|
+
|MK PCM|*|
|
|
309
|
+
|MUSIC||
|
|
310
|
+
|REC PCM|*|
|
|
311
|
+
|STOPM||
|
|
312
|
+
|SET PCM|*|
|
|
313
|
+
|SAVE PCM|*|
|
|
314
|
+
|SYNTHE|*|
|
|
315
|
+
|TRANSPOSE||
|
|
316
|
+
|TEMPER||
|
|
317
|
+
|VOICE||
|
|
318
|
+
|VOICE COPY||
|
|
319
|
+
|PAUSE||
|
|
320
|
+
|PLAY||
|
|
321
|
+
|PLAY PCM|*|
|
|
322
|
+
|PCM PLAY||
|
|
323
|
+
|PCM REC||
|
|
324
|
+
|PCM FREQ|*|
|
|
325
|
+
|PCM VOL|*|
|
|
326
|
+
|PLAY MK|*|
|
|
327
|
+
|PITCH||
|
|
328
|
+
|
|
329
|
+
(*) Detected, but not supported (causes _illegal function call_).
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
### Slot #3-1 (Kanji ROM)
|
|
333
|
+
|
|
334
|
+
||
|
|
335
|
+
|---|
|
|
336
|
+
|PALETTE|
|
|
337
|
+
|CLS|
|
|
338
|
+
|AKCNV|
|
|
339
|
+
|JIS|
|
|
340
|
+
|SJIS|
|
|
341
|
+
|KACNV|
|
|
342
|
+
|KEXT|
|
|
343
|
+
|KINSTR|
|
|
344
|
+
|KLEN|
|
|
345
|
+
|KMID|
|
|
346
|
+
|KNJ|
|
|
347
|
+
|KTYPE|
|
|
348
|
+
|KANJI|
|
|
349
|
+
|KANJI0|
|
|
350
|
+
|KANJI1|
|
|
351
|
+
|KANJI2|
|
|
352
|
+
|KANJI3|
|
|
353
|
+
|ANK|
|
|
354
|
+
|
|
355
|
+
### Slot #3-2 (Disk ROM)
|
|
356
|
+
|
|
357
|
+
|||
|
|
358
|
+
|---|:-:|
|
|
359
|
+
|SYSTEM||
|
|
360
|
+
|FORMAT||
|
|
361
|
+
|CHDRV|*|
|
|
362
|
+
|CHDIR|*|
|
|
363
|
+
|MKDIR|*|
|
|
364
|
+
|RMDIR|*|
|
|
365
|
+
|RAMDISK|*|
|
|
366
|
+
|
|
367
|
+
(*) Only when DOS2 is active.
|
|
368
|
+
|
|
369
|
+
### Slot #3-3 (Panasonic Mapper)
|
|
370
|
+
|
|
371
|
+
|||
|
|
372
|
+
|---|:-:|
|
|
373
|
+
|MWP|*|
|
|
374
|
+
|HIRO|**|
|
|
375
|
+
|
|
376
|
+
(*) Only in Panasonic `FS-A1GT`
|
|
377
|
+
(**) Only in Panasonic `FS-A1ST`
|
|
378
|
+
|
|
379
|
+
`CALL MENU` in Panasonic 2+ machines.
|
|
380
|
+
|
|
381
|
+
## Related to
|
|
382
|
+
|
|
383
|
+
`ATTR$()`, `CMD`, `IPL`, `USR`
|
|
384
|
+
|
|
385
|
+
# Compatibility
|
|
386
|
+
|
|
387
|
+
MSX-BASIC 1.0 or higher
|
|
388
|
+
|
|
389
|
+
## Source
|
|
390
|
+
|
|
391
|
+
Retrieved from "https://www.msx.org/wiki/CALL"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# CALL ADJUST
|
|
2
|
+
|
|
3
|
+
## Effect
|
|
4
|
+
|
|
5
|
+
Enables the internal lightpen interface.
|
|
6
|
+
|
|
7
|
+
It is required to use `CALL ADJUST` before using `PAD()` with the values 20 to 23.
|
|
8
|
+
|
|
9
|
+
This instruction enables the lightpen interface (bit6 of the VDP R#8) but not the lightpen interrupts (bit5 of the VDP R#0), and sets the system variables XOFFS=23 and YOFFS=0.
|
|
10
|
+
|
|
11
|
+
Since it doesn't enable the light pen interrupts, this command is not enough to make `GTPAD`/`PAD()` functional. The lightpen interrupts will have to be enabled via VDP register write.
|
|
12
|
+
|
|
13
|
+
This instruction is available **only** with the MSX2 computers manufactured by _Daewoo_:
|
|
14
|
+
- AVT CPC-300
|
|
15
|
+
- Bawareth Perfect MSX2
|
|
16
|
+
- Daewoo CPC-300
|
|
17
|
+
- Daewoo CPC-400
|
|
18
|
+
- Daewoo CPC-400S
|
|
19
|
+
- Talent DPC-300
|
|
20
|
+
- Wandy CPC-300
|
|
21
|
+
|
|
22
|
+
It is also maybe available with the _Sanyo MPC-X Graphic Expander Unit_ and the _Sanyo MPC-27_ computer.
|
|
23
|
+
|
|
24
|
+
## Syntax
|
|
25
|
+
|
|
26
|
+
`CALL ADJUST`
|
|
27
|
+
|
|
28
|
+
# Related to
|
|
29
|
+
|
|
30
|
+
`PAD()`
|
|
31
|
+
|
|
32
|
+
## Compatibility
|
|
33
|
+
|
|
34
|
+
Only MSX2 computers manufactured by _Daewoo_.
|
|
35
|
+
|
|
36
|
+
This instruction is part of Hangul BASIC on the Korean MSX2 computers.
|
|
37
|
+
|
|
38
|
+
## Source
|
|
39
|
+
|
|
40
|
+
Retrieved from "https://www.msx.org/wiki/CALL_ADJUST"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# CALL IMPOSE
|
|
2
|
+
|
|
3
|
+
## Effect
|
|
4
|
+
|
|
5
|
+
Sets superimposition mode.
|
|
6
|
+
|
|
7
|
+
## Syntax
|
|
8
|
+
|
|
9
|
+
`CALL IMPOSE (<Mode>)`
|
|
10
|
+
|
|
11
|
+
## Parameter
|
|
12
|
+
|
|
13
|
+
`<Mode>` is a value between 0 and 2 to set video mode.
|
|
14
|
+
- 0 for computer screen (internal synchronization).
|
|
15
|
+
- 1 for superimpose (composite video).
|
|
16
|
+
- 2 for external video.
|
|
17
|
+
|
|
18
|
+
## Related to
|
|
19
|
+
|
|
20
|
+
`COLOR`, `SCREEN`, `SET VIDEO`
|
|
21
|
+
|
|
22
|
+
## Compatibility
|
|
23
|
+
|
|
24
|
+
P-BASIC
|
|
25
|
+
|
|
26
|
+
## Source
|
|
27
|
+
|
|
28
|
+
Retrieved from "https://www.msx.org/wiki/CALL_IMPOSE"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# CALL OPTIONS
|
|
2
|
+
|
|
3
|
+
## Effect
|
|
4
|
+
|
|
5
|
+
Launches a special screen where you can select printer options:
|
|
6
|
+
|
|
7
|
+
- width (many possibilities).
|
|
8
|
+
- printer type (MSX, Arabized MSX, Arabic only, Neutral).
|
|
9
|
+
|
|
10
|
+
When you confirm your choices with the RETURN key, you go back to the calling program.
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
`CALL OPTIONS`
|
|
15
|
+
|
|
16
|
+
## Related to
|
|
17
|
+
|
|
18
|
+
`CALL CHCOPY`, `CALL HCOPY`
|
|
19
|
+
|
|
20
|
+
## Compatibility
|
|
21
|
+
|
|
22
|
+
Arabic BASIC 2.01 and higher (only Sakhr MSX2)
|
|
23
|
+
|
|
24
|
+
## Source
|
|
25
|
+
|
|
26
|
+
Retrieved from "https://www.msx.org/wiki/CALL_OPTIONS"
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# CALL PAUSE
|
|
2
|
+
|
|
3
|
+
`CALL PAUSE` is a standard instruction for _MSX turbo R_, but it is also an extended instruction available in _ChakkariCopy Basic_, _DM-System2 Basic_ and _Hitachi Basic_.
|
|
4
|
+
|
|
5
|
+
# CALL PAUSE as standard MSX-BASIC instruction
|
|
6
|
+
|
|
7
|
+
## Effect
|
|
8
|
+
|
|
9
|
+
Stops execution of a BASIC program for the specified time.
|
|
10
|
+
|
|
11
|
+
## Syntax
|
|
12
|
+
|
|
13
|
+
`CALL PAUSE (<Time>)`
|
|
14
|
+
|
|
15
|
+
## Parameter
|
|
16
|
+
|
|
17
|
+
`<Time>` is waiting time exprimed in milliseconds. The value can be between 0 and 65535.
|
|
18
|
+
|
|
19
|
+
_Note: You can interrupt the execution during the waiting period by pressing `CTRL`+`STOP`._
|
|
20
|
+
|
|
21
|
+
## Example
|
|
22
|
+
|
|
23
|
+
```basic
|
|
24
|
+
CALL PAUSE(1000)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Using
|
|
28
|
+
|
|
29
|
+
When `CALL PAUSE` is being executed, interrupt is enabled. Even when `CALL PAUSE` is being executed, you can quit the program by the `CTRL` + `STOP` keys.
|
|
30
|
+
|
|
31
|
+
This instruction is used when you want to take a timing without being affected by the CPU execution speed.
|
|
32
|
+
|
|
33
|
+
## Related to
|
|
34
|
+
|
|
35
|
+
`TIME`, `WAIT`
|
|
36
|
+
|
|
37
|
+
## Compatibility
|
|
38
|
+
|
|
39
|
+
MSX-BASIC 4.0 or higher
|
|
40
|
+
|
|
41
|
+
# CALL PAUSE in ChakkariCopy Basic
|
|
42
|
+
|
|
43
|
+
## Effect
|
|
44
|
+
|
|
45
|
+
Puts the cartridge into `PAUSE` mode.
|
|
46
|
+
|
|
47
|
+
_Note: the paused program can only be resumed by pressing the `PAUSE` button. It cannot be resumed by software._
|
|
48
|
+
|
|
49
|
+
## Syntax
|
|
50
|
+
|
|
51
|
+
`CALL PAUSE`
|
|
52
|
+
|
|
53
|
+
## Related to
|
|
54
|
+
|
|
55
|
+
`CALL SCHANGE`
|
|
56
|
+
|
|
57
|
+
## Using
|
|
58
|
+
|
|
59
|
+
In the `PAUSE` mode it's only possible to print a hardcopy by pressing the `COPY` button or to resume execution by pressing the `PAUSE` button. It's the same operation as pressing the `PAUSE` button on the cartridge.
|
|
60
|
+
|
|
61
|
+
## Compatibility
|
|
62
|
+
|
|
63
|
+
ChakkariCopy BASIC
|
|
64
|
+
|
|
65
|
+
# CALL PAUSE in DM-System2 Basic
|
|
66
|
+
|
|
67
|
+
## Effect
|
|
68
|
+
|
|
69
|
+
Stops execution of a BASIC program for the specified time.
|
|
70
|
+
|
|
71
|
+
_Note: You can interrupt the execution during the waiting period by pressing `CTRL`+`STOP`._
|
|
72
|
+
|
|
73
|
+
## Syntax
|
|
74
|
+
|
|
75
|
+
`CALL PAUSE (<Time>)`
|
|
76
|
+
|
|
77
|
+
## Parameter
|
|
78
|
+
|
|
79
|
+
`<Time>` is waiting time exprimed in milliseconds. The value can be between 0 and 65535.
|
|
80
|
+
|
|
81
|
+
## Example
|
|
82
|
+
|
|
83
|
+
`CALL PAUSE(1000)`
|
|
84
|
+
|
|
85
|
+
## Using
|
|
86
|
+
|
|
87
|
+
When the `CALL PAUSE` is being executed, interrupt is enabled. Even when the `CALL PAUSE` is being executed, you can quit the program by the `CTRL` + `STOP` keys.
|
|
88
|
+
|
|
89
|
+
This instruction is used when you want to take a timing without being affected by the CPU execution speed. It's exactly the same instruction as the standard `CALL PAUSE` for _MSX Turbo R_, but can be used also on _MSX2_ and _MSX2+_.
|
|
90
|
+
|
|
91
|
+
## Related to
|
|
92
|
+
|
|
93
|
+
`CALL INTWAIT`, `CALL VDPWAIT`, `CALL WAIT`
|
|
94
|
+
|
|
95
|
+
## Compatibility
|
|
96
|
+
|
|
97
|
+
DM-System2 BASIC
|
|
98
|
+
|
|
99
|
+
# CALL PAUSE in Hitachi Basic
|
|
100
|
+
|
|
101
|
+
## Effect
|
|
102
|
+
|
|
103
|
+
Puts the built-in data reader of the _Hitachi MB-H2_ computer in pause mode.
|
|
104
|
+
|
|
105
|
+
## Syntax
|
|
106
|
+
|
|
107
|
+
`CALL PAUSE`
|
|
108
|
+
|
|
109
|
+
## Related to
|
|
110
|
+
|
|
111
|
+
`CALL FF`, `CALL PLAY`, `CALL REC`, `CALL REW`, `CALL STOP`
|
|
112
|
+
|
|
113
|
+
## Compatibility
|
|
114
|
+
|
|
115
|
+
Hitachi BASIC version 1
|
|
116
|
+
|
|
117
|
+
## Source
|
|
118
|
+
|
|
119
|
+
Retrieved from "https://www.msx.org/wiki/CALL_PAUSE"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# CALL PCMPLAY
|
|
2
|
+
|
|
3
|
+
## Effect
|
|
4
|
+
|
|
5
|
+
Plays a PCM audio file on a _MSX turbo R_ computer. It must be previously loaded in computer RAM or VRAM with `BLOAD` or in an array with `COPY`.
|
|
6
|
+
|
|
7
|
+
If the computer mode is `Z80` mode, the mode is automatically switched to the `R800` mode before the execution, and after finishing the `Z80` mode is restored.
|
|
8
|
+
|
|
9
|
+
If the `STOP` key is pushed during the playing, the program execution is quit and returns to BASIC.
|
|
10
|
+
|
|
11
|
+
## Syntaxes
|
|
12
|
+
|
|
13
|
+
`CALL PCMPLAY(@<StartAddress>,<EndAddress>,<SamplingFrequency>,S)`
|
|
14
|
+
|
|
15
|
+
`CALL PCMPLAY(<Array>,<length>,<SamplingFrequency>)`
|
|
16
|
+
|
|
17
|
+
The `S` and `<Length>` parameters are optional. Parameters can not end with a comma alone.
|
|
18
|
+
|
|
19
|
+
## Parameters
|
|
20
|
+
|
|
21
|
+
`<StartAddress>` and `<EndAddress>` are used to specify the area of the computer RAM (or VRAM). The `<start address>` needs always to be preceded by `@`.
|
|
22
|
+
|
|
23
|
+
`<SamplingFrequency>` is a number between 0 and 3 to choose one of the four available sampling frequencies:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
0 = 15.75 KHz
|
|
27
|
+
1 = 7.875 KHz
|
|
28
|
+
2 = 5.25 KHz
|
|
29
|
+
3 = 3.9375 KHz
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If you specify the sampling rate to 15.75 KHz under `Z80` mode or `R800` ROM mode, you get _"Illegal function call"_ error message.
|
|
33
|
+
|
|
34
|
+
The parameter `S` is used to play from VRAM instead of RAM. This can be done in any screen mode but only the active pages are valid when the screen mode is higher than 4.
|
|
35
|
+
|
|
36
|
+
`<Array>` must be a numeric type variable array.
|
|
37
|
+
|
|
38
|
+
`<Length>` can generally be omitted. When specified, the playing of an array will be stopped when this length is reached.
|
|
39
|
+
|
|
40
|
+
_Note: The format of the data is absolute binary and 1 to 255 is a normal data. 0 is a special data and causes 0 level (127) to be outputted by a number of the cycles specified by 1 byte proceeding the 0._
|
|
41
|
+
|
|
42
|
+
## Example
|
|
43
|
+
|
|
44
|
+
```basic
|
|
45
|
+
10 CLEAR 300,&HB000
|
|
46
|
+
20 BLOAD"PCMTEST.BIN"
|
|
47
|
+
30 CALL PCMPLAY(@&HB000,&HDFFF,1)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Related to
|
|
51
|
+
|
|
52
|
+
`BLOAD`, `CALL PCMREC`, `COPY`
|
|
53
|
+
|
|
54
|
+
## Compatibility
|
|
55
|
+
|
|
56
|
+
MSX-BASIC 4.0 or higher
|
|
57
|
+
|
|
58
|
+
## Source
|
|
59
|
+
|
|
60
|
+
Retrieved from "https://www.msx.org/wiki/CALL_PCMPLAY"
|