MOTOROLA ASSIST09の仕様をまとめる

Last Updated on 2021年4月4日 by kabekin

モトローラのASSIST09モニタのコマンドと機能を整理しておきたいと思います。

ASSIST09をレベル3で使うための拡張ROMとして実装する場合はROMのプログラムを$8000~$9FFFの8KBに収めてDISKBASICの場合はDISKBASICで使用する$6500~$66FF, $8800~を避けて使うと良さそうです。

$8000~$9FFFに増設できると思われるIC2ソケット

マスクROMソケットなのでEPROMの増設には変換アダプタを作らないとダメそうです・・・^^;;;

基本コマンド

ASSIST09本体が持っている基本コマンドの使い方

なかなか多機能なモニタですね

あと逆アセンブラや1行アセンブラがあればツクモ電機のFM7用拡張モニタに近づきます^^

 

コマンドコマンド名機能
BBreak Pointブレークポイントの設定、表示、解除
B ブレークポイントの表示
B - ブレークポイントの削除
B <アドレス> ブレークポイントの追加
B – <アドレス> ブレークポイントの削除
CCallプログラムをサブルーチンコール
C 現在のPCからユーザルーチンのサブルーチンコール
C <アドレス> PCアドレスを指定してユーザルーチンのサブルーチンコール
DDisplayメモリ内容を16進数とASCIIで表示
D <開始アドレス> 16アドレス分表示
D <開始アドレス> <終了アドレス> 開始アドレス~終了アドレスを表示
EEncodeインデックスアドレッシングのポストバイト計算
E ,Y Yレジスタのゼロオフセット
E [HHHH,PCR] 間接の2バイトPCRオフセット
E H,U Uレジスタからの5バイトオフセット
GGoプログラムの実行、再実行
G 現在のPC値から再実行
G <アドレス> アドレスからユーザルーチンを実行
LLoadSフォーマットファイルのメモリロード
L Sフォーマットのアドレスにロード
L <オフセット> Sフォーマットのアドレスにオフセットされたアドレスにロード
MMemoryメモリ内容の表示変更
M <アドレス>
/Memory最後に参照したメモリ内容の表示、変更
/ で最後にMコマンドで入力したアドレスの次からCRを入力するまで連続して入力
左辺は変更前の値
次のデータ入力はスペースキー
NNullパディング(長さ整形)数の設定
ニューライン送出時のパディング数設定
OOffset分岐のオフセット計算
O <アドレス1> <アドレス2>
アドレス1からアドレス2に分岐するときのオフセット値計算
PPunchSフォーマットでメモリ内容を出力
P <開始アドレス> <終了アドレス>
RRegisterMPUレジスタの表示、変更
Rで入力モードに移行
対象レジスタ表示で値入力するとデータ反映
スペースで次のレジスタに移る。値を入力せずリターンでRコマンド終了
SStlevelスタックトレースレベルの設定
S のみ 現在のプログラムのスタック値を設定
S <アドレス>
トレース結果の表示を禁止するトレースレベル設定
TTrace命令のトレース
T <トレースステップ>
指定したトレースステップ分トレースして停止する。
PCは次に実行する命令のアドレスを指している
.Trace一つの命令のトレース
トレース中にピリオド入力で1ステップだけ実行される
VVerifyテープとメモリ内容の比較
V のみはメモリオフセットゼロ
V <オフセット> メモリオフセット分ずらしてメモリデータ照合
値が異なる部分は?を表示
WWindowウィンドウ値の設定
W <値>
式の中でWが出てきたときに引用される値 (デフォルトは$0000)

 

ファンクションコール

ASSIST09実行中に使用できるファンクションコール
S1のファンクションコールと同じような感じ
必要なレジスタをセットして
  SWI
  FCB コード
などで必要な機能を利用できる

コード機能名機能処理名
0INCHNP入力ハンドラから1文字入力しAccAに代入
Bit7は無視される。$00(ヌル)も無視される
ZINCH
1OUTCHAccAの1文字を出力ハンドラに出力ZOTCH1
2PDATA1文字列を出力ハンドラに出力 (デリミタは$04)ZPDTA1
3PDATACR,LFと文字列を出力ハンドラに出力ZPDATA
4OUT2HSXレジスタに示された1バイトを16進数で表示ZOT2HS
5OUT4HSXレジスタに示された2バイトを16進数で表示ZOT4HS
6PCRLFCR,LFを出力ハンドラに出力ZPCRLF
7SPACEスペース$20)を出力ハンドラに出力ZSPACE
8MONITORASSIST09に入るZMONTR
9VCTRSWベクタテーブルの値出力と交換ZVSWTH
10BRKPTレジスタの内容を表示しASSIST09のコマンドハンドラに制御が移るZBKPNT
11PAUSE処理を中断し一時停止状態にする。CANCEL状態のチェックZPAUSE

 

ベクタスワップコード

 

コードエントリ名対応するルーチンやパラメータのラベル名内容
0.AVTBLVECTABベクターテーブル
2.CMDL1CMDTBLコマンドリスト No.1
4.RSVDRSRVDR割込み 予備
6.SWI3SWI3R割込み SWI3
8.SWI2SWI2R割込み SWI2
10.FIRQFIRQR割込み FIRQ
12.IRQIRQR割込み IRQ
14.SWISWIR割込み SWI
16.NMINMIR割込み NMI
18.RESETRESETリセット 
20.CIONCION入力機器イニシャライズ
22.CIDTACIDTA1文字入力
24.CIOFFCIOFF入力機器終了処理
26.COONCOON出力機器イニシャライズ
28.CODTACODTA1文字出力
30.COOFFCOOFF出力機器終了処理
32.HSDTAHSDTA文字列出力
34.BSONBSONパンチ/ロード機器イニシャライズ
36.BSDTABSDTAパンチ/ロードベリファイ実行
38.BSOFFBSOFFパンチ/ロード機器の終了処理
40.PAUSEPAUSER一時停止
42.EXPANEXP1式の入力、処理
44.CMDL2CMDTB2コマンドリスト No.2
46.ACIAACIAACIAのI/Oアドレス
48.PADDFTCHPパディング数
50.ECHOECHOエコーバックのオン/オフ
52.PTMPTMPTMのI/Oアドレス

 

メモリマップ

ASSIST09デフォルトのメモリマップとレベル3拡張ROM(IC2用)、DISKBASIC用のメモリマップです
正しいかどうかは不明ですが実機でもL3エミュレータでも動作OKです^^

デフォルトL3-ROML3-DISKBASIC
(40K版)
用途イニシャライズで設定
されるエリア※
 ↑
$DF50
 ↑
$7F50
  ↑
$6750
  ↑
スタック
RAM
$DF51$7F51~$6751~TSTACK テンポラリ・スタック (21Byte)RAM
$DF66$7F66~$6766~ROM2WK ユーザROM用ワーク領域 (40Byte)RAM
$DF8E$7F8E$678EDELIMRAM
$DF8F$7F8F$678FMISFLGRAM
$DF90$7F90$6790SWICNTRAM
$DF91$7F91~$6791~TRACECRAM
$DF93$7F93~$6793~PCNTERRAM
$DF95$7F95~$6795~PSTACKRAM
$DF97$7F97~$6797~RSTACKRAM
$DF99$7F99~$6799~LASTOPRAM
$DF9B$7F9B~$679B~NUMBERRAM
$DF9D$7F9D$679DBASEPGRAM
$DF9E$7F9E$679EADDRESS POINTERRAM
$DFA0$7FA0~$67A0~WINDOWRAM
$DFA2$7FA2~$67A2~BKPTOPRAM
$DFB2$7FB2~$67B2~BKPTBLRAM
$DFF2$7FF2~$67C2~VECTABRAM
$DFF8$7FF8~$67F8~SLEVELRAM ※
$DFFA$7FFA$67FABKPTCTRAM ※
$DFFB$7FFB$67FBSWIBFLRAM ※
$DFFC~

$DFFF
$7FFC~

$7FFF
$67FC~

$67FF
PAUSEルーチン

←RAM開始
RAM ※
なし$8000
$97FF
$7000
$7FFF
ユーザROMROM
$F800

$FFFF
$9800

$9FFF
$8000

$87FF
ASSIST09本体ROM

 

2件のコメント

  1. ご無沙汰しています。
    私も最近は自作6809/6802ボードをいじる機会が増え、プログラムのデバッグのためにASSIST09を使うことが多くなりました。何といっても複数ブレークポイントとトレースコマンドが最強ですね。
    ただ、Windows上でプログラムを修正しては読み込ませてデバッグという繰り返しではLコマンドは遅くて実用にはなりません。(以前LOAD, SAVEという拡張コマンドを追加し、自分のブログで紹介してあったのにそれを全く忘れていて、最初のうちはLコマンドを使いながらイラついていました。年ですね…)

    1. ご無沙汰しております^^
      当初、L3用ASSISIST09にもyu-yamaさんのslwin用のLOAD,SAVEコマンドを拡張しようと思っていたのですがACIAが1系統しかなくASSIST09のI/OハンドラとACIAを切り替える方法が分からずに挫折していました。
      最近は、色々教えて頂いてI/Oハンドラが切替できるようになったのでslwin用のLOAD,SAVEコマンドの拡張も予定しています。
      yu-yamaさんの6809ボード用のLOAD,SAVEコマンドは6850用なので、そのまま実装させて頂く予定です^^
      そのほかFD用のセクタ読書きコマンドも拡張予定です
      でも、いつになることやらわかりません・・・^^;;;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください