ASSIST09の仕様をまとめる

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

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

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

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

基本コマンド

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

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

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

 

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

 

ファンクションコール

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

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

 

ベクタスワップコード

 

コード エントリ名 対応するルーチンやパラメータのラベル名 内容
0 .AVTBL VECTAB ベクターテーブル
2 .CMDL1 CMDTBL コマンドリスト No.1
4 .RSVD RSRVDR 割込み 予備
6 .SWI3 SWI3R 割込み SWI3
8 .SWI2 SWI2R 割込み SWI2
10 .FIRQ FIRQR 割込み FIRQ
12 .IRQ IRQR 割込み IRQ
14 .SWI SWIR 割込み SWI
16 .NMI NMIR 割込み NMI
18 .RESET RESET リセット 
20 .CION CION 入力機器イニシャライズ
22 .CIDTA CIDTA 1文字入力
24 .CIOFF CIOFF 入力機器終了処理
26 .COON COON 出力機器イニシャライズ
28 .CODTA CODTA 1文字出力
30 .COOFF COOFF 出力機器終了処理
32 .HSDTA HSDTA 文字列出力
34 .BSON BSON パンチ/ロード機器イニシャライズ
36 .BSDTA BSDTA パンチ/ロードベリファイ実行
38 .BSOFF BSOFF パンチ/ロード機器の終了処理
40 .PAUSE PAUSER 一時停止
42 .EXPAN EXP1 式の入力、処理
44 .CMDL2 CMDTB2 コマンドリスト No.2
46 .ACIA ACIA ACIAのI/Oアドレス
48 .PAD DFTCHP パディング数
50 .ECHO ECHO エコーバックのオン/オフ
52 .PTM PTM PTMのI/Oアドレス

 

メモリマップ

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

デフォルト L3-ROM L3-DISKBASIC
(40K版)
用途 イニシャライズで設定
されるエリア※
 ↑
$DF50
 ↑
$7F50
  ↑
$6750
  ↑
スタック
RAM
$DF51 $7F51~ $6751~ TSTACK テンポラリ・スタック (21Byte) RAM
$DF66 $7F66~ $6766~ ROM2WK ユーザROM用ワーク領域 (40Byte) RAM
$DF8E $7F8E $678E DELIM RAM
$DF8F $7F8F $678F MISFLG RAM
$DF90 $7F90 $6790 SWICNT RAM
$DF91 $7F91~ $6791~ TRACEC RAM
$DF93 $7F93~ $6793~ PCNTER RAM
$DF95 $7F95~ $6795~ PSTACK RAM
$DF97 $7F97~ $6797~ RSTACK RAM
$DF99 $7F99~ $6799~ LASTOP RAM
$DF9B $7F9B~ $679B~ NUMBER RAM
$DF9D $7F9D $679D BASEPG RAM
$DF9E $7F9E $679E ADDRESS POINTER RAM
$DFA0 $7FA0~ $67A0~ WINDOW RAM
$DFA2 $7FA2~ $67A2~ BKPTOP RAM
$DFB2 $7FB2~ $67B2~ BKPTBL RAM
$DFF2 $7FF2~ $67C2~ VECTAB RAM
$DFF8 $7FF8~ $67F8~ SLEVEL RAM ※
$DFFA $7FFA $67FA BKPTCT RAM ※
$DFFB $7FFB $67FB SWIBFL RAM ※
$DFFC~

$DFFF
$7FFC~

$7FFF
$67FC~

$67FF
PAUSEルーチン

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

$FFFF
$9800

$9FFF
$8000

$87FF
ASSIST09本体 ROM

 

「ASSIST09の仕様をまとめる」への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用のセクタ読書きコマンドも拡張予定です
      でも、いつになることやらわかりません・・・^^;;;

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)