エミュレータ関係の命令

↑目次に戻る

EMUMACHINENAME$()

マシン名の取得
N$=EMUMACHINENAME$()

EMUCPUINFO OUT NAME$ [, REGCNT]

CPU情報の取得

戻り

NAME$

CPUの名前文字列

REGCNT

レジスタ数

EMUCPUINFO OUT N$,RC

EMUCPUNO()

実行中のCPU番号の取得

・FM-7専用。他機種では常に0が返る

戻り

CPU番号


V=EMUCPUNO()

EMUCPUNO ID

CPU番号の設定

・IDが使用可能CPU数以上の場合 Out of rangeエラー
・FM-7専用。他機種では0以外設定できない

変数=EMUSTATUS()

エミュレータ稼働状態の取得

戻り

0 停止中
1 実行中
2 プロテクト動作中

V=EMUSTATUS()

EMURUN [ADDR]

CPUの実行を開始

・既に実行中の場合、ADDRがあれば設定だけ行う

引数

ADDR

&H0000~&HFFFF:ブレークするアドレス
EMUBPの ID 0番にブレークポイントを設定

EMURUN &HA000

EMUSTOP

CPUの実行を停止する

・すでに停止中の場合は何もしない

EMUSTOP

EMUJUMP ADDR

エミュレータのプログラムカウンタを設定

引数

ADDR

&H0000~&HFFFF:CPU上のアドレス

EMUJUMP &HC000

EMUTRACE

1命令実行を進める

・エミュレータ実行中の呼び出しはIllegal function callエラー

EMUTRACE

EMUSTEP

CALL命令も1命令として実行

・エミュレータ実行中の呼び出しはIllegal function callエラー

EMUSTEP

変数=EMUMEM( ADDR )

指定アドレスのメモリを読み出す

・ADDRが範囲外の場合はOut of rangeエラー

引数

ADDR

&H0000~&HFFFF:CPU上のアドレス

戻り

0~255:取得したメモリー内容

V=EMUMEM( &HD000 )

EMUMEM ADDR, VALUE [ ,FLAG ]

指定アドレスのメモリに値を書く

・ADDRが範囲外の場合はOut of rangeエラー

引数

ADDR

&H0000~&HFFFF:CPU上のアドレス

VALUE

0~255:取得したメモリー内容

FLAG

TRUE:ROM領域の書き込みを禁止

EMUMEM &HD000,&HA3

EMUDISASM ADDR OUT ASM$, LENGTH

指定アドレスから始まる命令の逆アセンブル文字列と命令長を取得

・ADDRが範囲外の場合はOut of rangeエラー

引数

ADDR

&H0000~&HFFFF:CPU上のアドレス

戻り

ASM$

逆アセンブルした命令文字列

LENGTH

命令の長さ

EMUDISASM &HAC00 OUT ASM$, LENGTH

変数=EMUREGCNT()

レジスタ数を取得

戻り

取得できるレジスタの総数

V=EMUREGCNT()

文字列変数=EMUREGNAME$( ID )

レジスタ名を取得

引数

ID

レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能 )

・IDが範囲外の場合Out of rangeエラー

戻り

レジスタの名前文字列

N$=EMUREGNAME$(0)

変数=EMUREGSIZE( ID )

IDで指定されたレジスタのサイズ(ビット幅)を取得

引数

ID

レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能 )

・IDが範囲外の場合Out of rangeエラー

戻り

レジスタのビット幅

V=EMUREGSIZE(0)

変数=EMUREGSIZE( NAME$ )

名前で指定されたレジスタのサイズ(ビット幅)を取得

引数

NAME$

レジスタ名文字列(レジスタ名でない場合Illegal function callエラー)

戻り

レジスタのビット幅

V=EMUREGSIZE("A")

変数=EMUREGSIDE()

レジスタの表裏状態を取得(Z80専用)

戻り

0
1
V=EMUREGSIDE()

EMUREG 数値配列

全レジスタの値を配列に取得

引数

数値配列

レジスタ情報を受け取る配列名

DIM REG[10]
EMUREG REG

変数=EMUREG( ID )

IDで指定されたレジスタの値を取得

引数

ID

レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能)

・IDが範囲外の場合Out of rangeエラー

戻り

レジスタの内容

V=EMUREG(0)

変数=EMUREG( NAME$ )

名前で指定されたレジスタの値を取得

引数

NAME$

レジスタ名文字列

・レジスタ名でない場合Illegal function callエラー

戻り

レジスタの内容

V=EMUREG("A")

EMUREG ID, NUM

IDで指定されたレジスタの値を設定

引数

ID

レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能)

・IDが範囲外の場合Out of rangeエラー

NUM

レジスタに書き込む値

戻り

レジスタの内容

EMUREG 0,56

EMUREG NAME$, NUM

名前で指定されたレジスタの値を設定

引数

NAME$

レジスタ名文字列

・レジスタ名でない場合Illegal function callエラー

NUM

レジスタに書き込む値

戻り

レジスタの内容

EMUREG "A",&HCC

EMUBKST OUT TYPE, ID

ブレーク情報を返す

戻り

TYPE

種類

0 何も無かった #EMUIO_NONE
1 PCブレークに引っかかった #EMUIO_PCBREAK
2 リードブレークに引っかかった #EMUIO_READBREAK
3 ライトブレークに引っかかった #EMUIO_WRITEBREAK
4 ステップ実行完了 #EMUIO_STEP
5 トレース実行完了 #EMUIO_TRACE

ID

ブレークした時のTYPE内ID番号
PCブレーク、リードブレーク、ライトブレークは、0〜3が返ります。
ステップ、トレースの場合はIDが無いので、-1が返ります。

EMUBKST OUT TYPE, NUMBER

EMUBP ADDR

ブレークポイントを設定

引数

ADDR

&H0000~&HFFFF:ブレークするアドレス

EMUBP &HFF00

EMUBP [ID], ADDR

ブレークポイントを設定

引数

ID

ブレークポインタの管理ID(0~3、省略時0)

ADDR

&H0000~&HFFFF:ブレークするアドレス

EMUBP 0,&HFF00

EMUBP [ID] OUT FLAG [,ADDR]

ブレークポイントの取得

引数

ID

ブレークポインタの管理ID

戻り

FLAG

0 設定されていない
1 設定されている

ADDR

&H0000~&HFFFF:読み込むアドレス

EMUBP 0 OUT FLAG,ADDR

EMUBC ID

ブレークポイントをクリア

引数

ID

ブレークポインタの管理ID

EMUBC 0

EMURP ADDR

リードポイントを設定

引数

ADDR

&H0000~&HE008:読み込むアドレス

EMURP &H56AF

EMURP [ID], ADDR [,CNT]

リードポイントを設定

引数

ID

リードポインタの管理ID

ADDR

&H0000~&HE008:読み込むアドレス

CNT

-1、1~255:読み込まれた回数(省略もしくは-1の場合は、毎回)

EMURP 0,&H56AF,&HAA

EMURP [ID] OUT FLAG [,ADDR [,CNT]]

リードポイントを取得

引数

ID

リードポインタの管理ID

戻り

FLAG

0 設定されていない
1 設定されている

ADDR

&H0000~&HE008:読み込むアドレス

CNT

0~255:読み込まれた回数(省略または-1の時、毎回)

EMURP 0 OUT FLAG,ADD,CNT

EMURC ID

リードポイントをクリア

引数

ID

リードポインタの管理ID

EMURC 0

EMUWP ADDR

ライトポイントを設定

引数

ADDR

&H0000~&HE012:書き込むアドレス

EMUWP &H56AF

EMUWP [ID], ADDR [,CNT [,VALUE]]

ライトポイントを設定

引数

ID

ライトポインタの管理ID

ADDR

&H0000~&HE012:書き込むアドレス

CNT

-1、1~255:書き込まれた回数(省略もしくは-1の場合は、毎回)

VALUE

-1、1~255:書き込まれる値(省略は-1)

EMUWP 0,&H56AF,&HAA,&H40

EMUWP [ID] OUT FLAG [,ADDR [,CNT [,VALUE]]]

ライトポイントを取得

引数

ID

ライトポインタの管理ID

戻り

FLAG

0 設定されていない
1 設定されている

ADDR

&H0000~&HE012:書き込むアドレス

CNT

0~255:書き込まれた回数(省略または-1の時、毎回)

VALUE

書き込まれる値

EMUWP 0 OUT FLAG,ADDR,NUM,VALUE

EMUWC ID

ライトポイントをクリア

引数

ID

ライトポインタの管理ID

EMUWC 0

EMURESET

エミュレーションCPUをリセット
EMURESET

EMUVOLUME 音量

エミュレーションしているマシンの音量を設定

引数

音量

0~255

EMUVOLUME 128

変数=EMUVOLUME()

エミュレーションしているマシンの音量を取得

戻り

0~255

V=EMUVOLUME()

EMUWINDOW X座標,Y座標,幅,高さ

エミュレーション画面の表示位置を指定

引数

X座標,Y座標

SmileBASIC上の画面座標 (-32768~32767)

幅,高さ

ウィンドウの表示サイズ (0~32768)
(全画面表示指定 0,0,0,0 以外で幅/高さが0の場合はエラーとなります。)

EMUWINDOW 16,16,320,200

EMUWINDOW 簡易位置番号

エミュレーション画面の表示位置を簡易指定

引数

簡易位置番号

0 非表示
1 画面左上
2 画面右上
3 画面左下
4 画面右下
5 全画面
EMUWINDOW 5

EMUCOLOR OUT TX, BK, BD

エミュレータ画面の色を取得

戻り

TX

文字色(24ビットRGBカラー)

BK

背景色(24ビットRGBカラー)

BD

ボーダー色(24ビットRGBカラー)

EMUCOLOR OUT TX,BK,BD

EMUKBDTYPE TYPE

エミュレータ上のキーボード配列を設定する。

引数

TYPE

0 MZ-80配列(デフォルト)
1 USBキーボード配列
EMUKBDTYPE 1

EMUCG ディスプレイコード,行番号,データ

指定ディスプレイコード・ラインのビットマップを変更

引数

ディスプレイコード

&H00~&HFF:ディスプレイコード

行番号

0~7:行の位置

データ

&H00~&HFF:ビットデータ

'アルファベットのAを変更する場合
EMUCG &H01,0,&HFE
EMUCG &H01,1,&H82
EMUCG &H01,2,&H82
EMUCG &H01,3,&HFE
EMUCG &H01,4,&H82
EMUCG &H01,5,&H82
EMUCG &H01,6,&H82
EMUCG &H01,7,&H00

変数=EMUCG( ディスプレイコード,行番号 )

指定ディスプレイコード・ラインのビットマップを取得

引数

ディスプレイコード

&H00~&HFF:ディスプレイコード

行番号

0~7:行の位置

戻り

&H00~&HFF:指定行のビットデータ

V=EMUCG( &H01,0 )

EMUCGRESET

エミュレータのキャラクターセットを起動時状態に戻す
EMUCGRESET

EMUJOY BTNID, KEYPA, KEYPB

ジョイパッドのボタンアサインを設定

引数

BTNID

#JOYPAD_ではじまる定数でジョイパッド側のボタンを指定

KEYPA

対応するキーボード入力情報

KEYPB

対応するキーボード入力情報

EMUJOY BTNID, KEYPA, KEYPB

EMUJOY BTNID OUT SW, KEYPA, KEYPB

ジョイパッドのボタンアサインを設定

引数

BTNID

#JOYPAD_ではじまる定数でジョイパッド側のボタンを取得

戻り

SW

TRUE アサイン有り
FALSE アサインなし

KEYPA

対応するキーボード入力情報

KEYPB

対応するキーボード入力情報

EMUJOY BTNID OUT SW, KEYPA, KEYPB

EMUJOYCLR [ BTNID ]

ジョイパッドのボタンアサインをクリア

引数

BTNID

#JOYPAD_ではじまる定数でジョイパッド側のボタンを指定

・ボタンIDを省略した場合、全ボタンのアサインをクリア

EMUJOYCLR

↑目次に戻る