Categories: R10旧型PC

日立 MB-S1 S1用開発環境の操作をまとめておく

S1実機で使用するツール類の使い方を完全に忘れているので操作をまとめておきます^^

S1の標準モニタ

各コマンドのサフィックスLは変更した内容を同一行に表示(DL以外)、サフィックスPは表示のみ
引数のセパレータはカンマ又はスペース

コマンド 機能 引数

B
BL
BP

ブレークポイントの表示と設定

BL <番号>:<$番地> (<機能>, <$回数>)
番号=1~5 番地=停止させる番地 回数=何回目に停止
機能=b7~b2=N/A  b1=0(有)/1(無)   b0=ブレーク時レジスタ表示=0(有)/1(無)
BPは引数なし
ROM領域にブレークポイントは設定不可
3F(SWI)の説明

D メモリの表示 D [<$開始番地>], [<表示行数>]
DL Dコマンドの表示行数設定 DL <表示行数>
E メモリのスクリーン編集 E [<$開始番地>] 256バイト分のデータがスクリーンエディタで編集可能
カーソルキー← → ↑ ↓で移動可能
CTRL + A = 編集モード切替 (HEX / ASCII)
CTRL + B (SHIFT + ← ) = 先頭番地を256バイト前に移動
CTRL + F (SHIFT + → ) = 先頭番地を256バイト後ろに移動
CTRL + G = カーソル位置にブレークポイント5を設定
Enter = Eコマンド終了
F メモリをデータで埋める F <$開始番地>, <$終了番地>, <$データパターン>   又は
F <開始番地>, @<バイト数>, <$データパターン>
G 機械語プログラムの実行 G [<実行開始番地>] 実行開始番地を省略するとPCの番地から開始
中断は[BREAK], [CTRL+C], [BREAK+RESET]でレジスタを表示して中断
[CTRL+D]でレジスタ値を表示
H HEXの和と差を求める H <$値1>, <$値2> 値1と値2は4桁以内のHEX
HC ハードコピーモード設定 HC [<ハードコピーモード>] ハードコピーモードを省略すると反転
ハードコピーモード = 0(出力しない), 1(出力する)
M, ML 16バイトメモリ内容表示と設定 M [<$開始番地>] 開始番地を省略で記憶している番地+1
MAP
MAPL
MAPP
メモリ空間番号の表示と設定 MAP [<$メモリ空間番号>] D~Fは変更不可
メモリ空間番号を省略で現在のメモリ空間番号の設定と表示(CURRENT MAP)
メモリ空間番号0~6はシステム予約領域なので変更しないこと
ユーザ領域のマップイメージはDEFMAP=0で空間F、DEFMAP=1~3は空間Eにマップイメージがある
Q モニタ終了 Q 引数なし
R
RL
RP
レジスタの表示と変更 R 引数無し
表示内容
S=aaaa(bbbb)CC=nn(cccc)A=nn Bnn DP=nn X=nnnn Y=nnnn U=nnnn PC=nnnn
(dddddddd)
aaaa=システムスタックポインタ bbbb=システムスタックポインタが指すスタックの内容
cc=CCレジスタの下位4ビット dddddddd=PCが指すメモリの内容
S メモリ内からデータを検索 S [<$開始番地>], [<$終了番地>], <$データパターン> 又は
S [<$開始番地>],[@<バイト数>], <$データパターン>
開始番地を省略すると$0、終了番地を省略すると$FDFFが指定される
T メモリ内容転送 T <$開始番地>, [<$終了番地>], <$転送先番地> 又は
T <$開始番地>, [@<バイト数>], <$転送先番地>
TS テキスト画面の退避/回復設定 TS [<テキスト画面退避フラグ>]
テキスト画面退避フラグ
0(ブレークポイントでテキスト画面回復しない)
0以外(ブレクポイントでテキスト画面が退避され、Gコマンドで回復される)
X, XL
XP

現在のメモリ空間のマップ
イメージ表示と設定

X 引数なし
MAPで設定した現在のメモリ空間番号で指定した場合と同じ動作
BREAK
CTRL+C
CTRL+D
BREAK+RESET
コマンド実行中断 引数なし
参考文献:日立 MB-S1 BASICマニュアル

 

EASY-S1+拡張部のコマンド

メモリ拡張時 テキストエリア256KB、ラベルテーブルエリア33KB、オブジェクトエリア56KB
オブジェクトエリア=系列F、EASY-S1,ラベルテーブル,テキストウィンドウ=系列8~Dで動作

コマンド 機能 引数
I 画面を80文字モードに変更 I 引数なし
MT CMTのオンオフとボーレート設定 MT [<ボーレート>] ボーレート省略でMOTOR ON/OFFの反転
ボーレート 0=600ボー 1=1200ボー 2=2400ボー 3=4800ボー
V CMTのベリファイ V [<ファイル名>]
SM メモリ内容のセーブ SM <ファイル名>, <$開始番地>, <$最終番地>, [<$実行番地>]
モニタのMAPで指定した系列番号のメモリ内容の保存
LM ファイルのロード LM [<ファイル名>] [,<オフセット>]
モニタのMAPで指定した系列番号のメモリにロード
LMコマンド実行中にエラーが発生するとファイルがクローズされない
CTRL+Dでアボートさせるとクローズされる
CRTL+DやSTOPを押すと系列F又は系列Eに戻るので注意
W 16バイトのメモリ書込 W [<開始番地>]
P メモリ内容の表示 P [<開始番地>]
BA BASIC命令の実行 BA [RETURN]で次の行にBASICの命令
RUN, LIST, CLEARは使えない
ED テキストの編集

ED [<行番号>]
編集終了でプロンプトに戻るにはBREAK又はCTRL+C
系列が戻るので注意
カーソル移動 = ← → ↑ ↓キー SHIFT+←, shift+→で高速移動
IS = スペースの挿入
BS = 1文字削除
CLS = 1行クリア
MOME = 変更した入力前の行を元に戻しカーソルを行の先頭に移す
ESC = 前に削除された行の内容を表示
RETURN = 行の入力
DEL = 行を削除し上に詰める
INS = 行の挿入モードの指定、解除
TAB = 次のTAB位置までカーソルを進める
CTRL+T = 水平タブの設定  CTRL+Y = 水平タブの解除
CTRL+E = カーソル以降文末までクリア
CTRL+A, CTRL+Z=カーソル位置の記憶

C 文字列の置換え C <文字列1> [,<文字列2>] [,<行番号1>] [,<行番号2>]]
行番号1~行番号2のテキストから文字列1を探し文字列2に置換てその行を表示
TR テキストの転送 TR <行番号1>, <行番号2>, <行番号3>
行番号1と行番号2の間のテキストを行番号3の前に転送する
NEW テキストのクリア NEW 引数なし
SV
SVA
テキストの保存
(SVAはASCII形式)
SV <“ファイル名”>, [.<行番号1> [,<行番号2>]
行番号1~行番号2の間のテキストを保存する
LD
LDA
テキストのロード
(LDAはASCII形式)
LD <“ファイル名”> [,<行番号>]
行番号を指定するとその行の前にテキストを挿入
L
LN
テキストのプリンタ出力
(LNは行番号削除)
L [<行番号1>] [,行番号2>]
A アセンブル A [<“ファイル名”>]  ファイル名を指定するとファイルから読み込みながらアセンブル
AL
AP
アセンブル+リスト出力
(APはプリンタ出力)
AL [<“ファイル名”>] [,<行番号1>] [,<行番号2>]
O
OP
ラベルテーブルの出力
(OPはプリンタ出力)
O 引数なし
MC オブジェクトメモリクリア MC 引数なし  系列Fのオブジェクトメモリエリアクリア CLEAR &HD000と同じ
EASY-S1アセンブラの仕様
コメントは文頭に * から始めた行と命令 オペランド コメントでコメント列が使えた。コメント列は*不要だが;で始めると分かりやすいかも
書式はモトローラの6809アセンブラと同じ
オペランド演算は+, -のみ
BHS, BLO, LSLは使用不可
8進定数は使えない
疑似命令は ORG, SETDP, RMB, EQU, END, FCB, FDB, FCCが使用可能
FCCのセパレータは / のみで他の文字は使えない。オペランドには文字列の他にラベルや値定数の使用も可能
区切りの空白は31文字以内
以下 85年11月号掲載の拡張コマンド (ソースジェネレータ付き逆アセンブラ&トレーサ )
U 逆アセンブラ
(行数指定)
U [<$開始番地>] [,<表示行数>]
開始番地省略で記憶している番地から表示、表示行数省略でDLの行数
UP 逆アセンブラ
(範囲指定)
UP [<$開始番地>] [,<$終了番地>]
開始番地省略で記憶している番地から表示、表示行数省略で1行表示
SG EASY-S1用ソースジェネレータ SG <“ファイル名”>, [<$開始番地>] [,<$終了番地>]
開始番地から終了番地の逆アセンブルを行いEASY-S1のソースを生成する
ASCII形式なのでLDAでロードする。
ORGや定義されていないラベルをEQUで付加する程度で使えるソース
拡張子を付けないと同名のBINデータを上書きで壊すので注意
N トレース実行 N [<$開始番地>] [,<トレースステップ>]
開始番地よりトレースステップだけトレースを行う
開始番地省略でモニタの記憶している番地から開始
トレースステップ省略でNLコマンドの設定値を使用
NL トレースステップ設定 NL [<トレースステップ>]  トレースステップ省略は1を指定
RR レジスタ表示(ハードコピー用) RR 引数なし
トレーサの仕様
以下 86年5月号掲載のメモリエディタのコマンド
ME メモリエディタ ME <$開始番地>
開始番地を省略でモニタが記憶している番地を使用
← → ↑ ↓でカーソル移動
SHIFT+← や SHIFT+→ で256バイト移動
HOME = その行の先頭に移動 (+0列)
SHIFT+HOME=そのページの先頭に移動
CTRL+A=HEX  / ASCII編集の切替
CTRL+Q=チェックサムチェックのオンオフ
CTRL+Z=スクロールのオンオフ
CTRL+W=ASCII項のピリオド表示設定
RT データ転送 RT <開始番地>.<終了番地>,<転送先開始番地>
参考文献:工学社 I/O誌 85/7月号  P.266 EASY-S1 85/11月号  P.322  EASY-S1用拡張コマンド 86/5月号  P.274  メモリエディタ

 

S1BASICの拡張コマンド
コマンド 機能 引数
FIND
LFIND
文字列サーチ
(LFINDはプリンタ用)
FIND <“文字列”> [,<開始行番号> [ (, or-) <終了行番号> [ , <セパレータ>]]]
メモリ上のテキストから”文字列”を含む行を検索(文字列は127文字以下)
セパレータを省略すると”/”が適用される
REPLACE 文字列置換え REPLACE <“文字列1”>, <“文字列2”> [, <開始行> [(,or-) <終了行> [,<セパレータ>]]]
メモリ上のテキストから文字列1を文字列2に置換えする
セパレータを省略すると”/”が適用される
FCOPY ファイルコピー FCOPY <“ファイル名1”> TO <“ファイル名2”>
ファイル名1のファイルをファイル名2のファイルとしてコピーする
DUMP
LDUMP
ファイルダンプ表示
(LDUMPはプリンタ用)
DUMP <“ファイル名”> [, D(E)]
Dオプション = ファイルタイプにかかわらずHEXダンプ
Eオプション = EASY-S1用のASCII
DIR
LDIR
ファイルリスト表示
(LDIRはプリンタ用)
DIR <“ファイル名”>
ファイル名にはワイルドカード可能でファイル名や拡張子を区別できる
表示内容は前から
ドライブ番号, ファイル名, 拡張子, 種類, 占有セクタ, 最終クラスタ使用セクタ, 最終セクタ使用バイト数
サイズ,開始番地, 最終番地, 実行開始番地
参考文献:工学社 I/O誌 1986/03月号  P.249 BASIC拡張コマンド

S1-DEBUGGERのコマンド
コマンド 機能 引数
DA
DAP
逆アセンブル
(DAPはプリンタ出力)
DA [<$開始番地>] [,<$終了番地>] セパレータはカンマ必修
開始番地を省略した場合はモニタが記憶している番地を使用
終了番地を省略で$FFFFを指定
SPACEで一時停止、ESCで中断
TR
TRP
トレース実行
(TRPはプリンタ出力)
TR [<$開始番地>]
Rコマンドで設定したレジスタをセットして開始番地からトレース
開始番地省略でPCレジスタからトレース
1命令毎に停止する
ESC=中断
1=SP番地にジャンプ
2=システムコールを実行して次の命令でストップ
上記以外のキーで次の命令をトレース
トレーサの仕様

参考文献:工学社 I/O誌 1986/01月号  P.348 S1-DEBUGGER


BASIC拡張とEASY-S1を同時に使う場合メモ

LOADM”EXLOAD”,,RでBASIC拡張を実行しておいて(MAP8固定かな?)
EASY-S1をロードしMAPAで実行 (MAP9だとダメな場合があった)
S1-DEBUGGERはMAP8,9以外で実行しても同居できなさそう

気になるS1関連記事
I/O誌
85/11 Telestar漢字ターミナル p.336
85/12 音声合成カードの接続 P.221
86/02 Z80ソースファイルジェネレータ P.282
86/03 FM音源ソフト”翌弦” p.262
86/10 EASY-68K P.227
87/05 プリンタで画像入力を P.197
87/06 ディスクアナライザ p.139

kabekin