If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
X68k/IOMAP
(Redirected from X68k:IOMAP)
Jump to navigation
Jump to search
This is a sub-page of X68k.
- I/O MAP MANUAL - ============================================================================== ・例外ベクタ(メーカー予約:$00~3f) address vector $000000 $00 リセット後の SSP $000004 $01 〃 PC $000008 $02 バスエラー $00000c $03 アドレスエラー $000010 $04 不当命令 $000014 $05 0 による除算 $000018 $06 CHK 命令 $00001c $07 TRAPV 命令 , FTRAPcc 命令 $000020 $08 特権違反 $000024 $09 トレース例外処理 $000028 $0a 未実装命令 line 1010 emulator (SX コール) $00002c $0b 〃 line 1111 emulator (DOS コール,浮動小数点演算) $000030 $0c 未使用 $000034 $0d FPU プロトコルバイオレーション例外処理 $000038 $0e 〃 フォーマットエラー例外処理 $00003c $0f 未初期化割り込み $000040 $10 未使用 $000044 $11 〃 $000048 $12 〃 $00004c $13 〃 $000050 $14 〃 $000054 $15 〃 $000058 $16 〃 $00005c $17 〃 $000060 $18 スプリアス割り込み $000064 $19 レベル 1 割り込み(オートベクタ時) $000068 $1a 〃 2 〃 $00006c $1b 〃 3 〃 $000070 $1c 〃 4 〃 $000074 $1d 〃 5 〃 $000078 $1e 〃 6 〃 $00007c $1f 〃 7 〃(NMI) $000080 $20 trap #0 $000084 $21 〃 #1 $000088 $22 〃 #2 $00008c $23 〃 #3 $000090 $24 〃 #4 $000094 $25 〃 #5 $000098 $26 〃 #6 $00009c $27 〃 #7 $0000a0 $28 〃 #8 (システム予約) $0000a4 $29 〃 #9 (OS デバッガ用) $0000a8 $2a 〃 #10 (リセット/電原オフ処理) $0000ac $2b 〃 #11 (BREAK キー処理) $0000b0 $2c 〃 #12 (COPY キー処理) $0000b4 $2d 〃 #13 (CTRL+C 処理) $0000b8 $2e 〃 #14 (エラー処理) $0000bc $2f 〃 #15 (IOCS コール) $0000c0 $30 FPU BSUN (Branch/Set on Unordered) 例外処理 $0000c4 $31 〃 INEX1,INEX2 (Inexact Decimal Input,Inexact Operation) $0000c8 $32 〃 DZ (Divide by Zero) $0000cc $33 〃 UNFL (Underflow) $0000d0 $34 〃 OPERR (Operand Error) $0000d4 $35 〃 OVFL (Overflow) $0000d8 $36 〃 SNAN (Signalling Not A Number) $0000dc $37 未使用 $0000e0 $38 MMU $0000e4 $39 〃 $0000e8 $3a 〃 $0000ec $3b 未使用 … … … $0000fc $3f 未使用 ・例外ベクタ(ユーザ割り込み:$40~$ff) address vector $000100 $40 MFP RTCアラーム/1Hz $000104 $41 MFP 外部パワー OFF $000108 $42 MFP フロントスイッチ OFF $00010c $43 MFP FM 音源 $000110 $44 MFP Timer-D (BG 処理で使用) $000114 $45 MFP Timer-C (マウス/カーソル/FDD 制御等) $000118 $46 MFP V-DISP $00011c $47 MFP RTC クロック $000120 $48 MFP Timer-B $000124 $49 MFP キーシリアル出力エラー $000128 $4a MFP キーシリアル出力空 $00012c $4b MFP キーシリアル入力エラー $000130 $4c MFP キーシリアル入力あり $000134 $4d MFP Timer-A $000138 $4e MFP CRTC・IRQ $00013c $4f MFP H-SYNC $000140 $50 SCC(B) 送信バッファ空 $000144 $51 SCC(B) 〃 $000148 $52 SCC(B) 外部/ステータス変化 $00014c $53 SCC(B) 〃 $000150 $54 SCC(B) 受信キャラクタ有効(マウス 1 バイト入力) $000154 $55 SCC(B) 〃 $000158 $56 SCC(B) スペシャル Rx コンディション $00015c $57 SCC(B) 〃 $000160 $58 SCC(A) 送信バッファ空 $000164 $59 SCC(A) 〃 $000168 $5a SCC(A) 外部ステータス変化 $00016c $5b SCC(A) 〃 $000170 $5c SCC(A) 受信キャラクタ有効(RS-232C 1 バイト入力) $000174 $5d SCC(A) 〃 $000178 $5e SCC(A) スペシャル Rx コンディション $00017c $5f SCC(A) 〃 $000180 $60 I/O FDC ステータス割り込み $000184 $61 I/O FDC 挿入/排出割り込み $000188 $62 I/O HDC ステータス割り込み $00018c $63 I/O プリンタレディー割り込み $000190 $64 DMAC #0 終了 (FDD) $000194 $65 DMAC #0 エラー(〃 ) $000198 $66 DMAC #1 終了 (SASI) $00019c $67 DMAC #1 エラー(〃 ) $0001a0 $68 DMAC #2 終了 (IOCS _DMAMOVE,_DMAMOV_A,_DMAMOV_L) $0001a4 $69 DMAC #2 エラー(〃 ) $0001a8 $6a DMAC #3 終了 (ADPCM) $0001ac $6b DMAC #3 エラー(〃 ) $000200 $6c SPC SCSI 割り込み(内蔵 SCSI) $000204 $6d 未使用 … … … $0003d4 $f5 未使用 $0003d8 $f6 SPC SCSI 割り込み(SCSI ボード) $0003dc $f7 未使用 … … … $0003fc $ff 未使用 ============================================================================== ・グラフィックVRAM G-VRAM は実画面サイズ及び色数によって構造が異なり、合計 512KB の VRAM が分割 されて割り当てられている. ドットの表現は垂直型で、どのモードでも 1 ドットは必 ず 1 ワードで表し、16/256 色表示モードではそのうち 4/8 ビットのみが有効となる. X = 通常の設定モードでの X 座標 Y = 〃 Y 座標 P = プレーン番号 ADR = 65536色表示モードで (X,Y) 点をアクセスする時のアドレス BIT = 〃 ビット位置 実画面512×512ドット、65536色表示: 有効ビット 下位 16 ビット 1 ライン 1024 バイト(512 ワード) ページ 0 $c00000~$c7ffff 実画面512×512ドット、256色表示: 有効ビット 下位 8 ビット 1 ライン 1024 バイト(512 ワード) ページ 0 $c00000~$c7ffff ページ 1 $c80000~$cfffff ADR = $c00000+Y×1024+X×2 BIT = P×8 ~ P×8+7 の 8 ビット 実画面512×512ドット、16色表示: 有効ビット 下位 4 ビット 1 ライン 1024 バイト(512 ワード) ページ 0 $c00000~$c7ffff ページ 1 $c80000~$cfffff ページ 2 $d00000~$d7ffff ページ 3 $d80000~$dfffff ADR = $c00000+Y×1024+X×2 BIT = P×4 ~ P×4+3 の 4 ビット 実画面1024×1024ドット、16色表示: 有効ビット 下位 4 ビット 1 ライン 2048 バイト(1024 ワード) ページ 0 $c00000~$dfffff ADR = $c00000+(Y&511)×1024+(X&511)×2 BIT = (Y≧512)×8+(X≧512)×4 ~ (Y≧512)×8+(X≧512)×4+3 の 4 ビット ============================================================================== ・テキストVRAM T-VRAM は実画面サイズ1024×1024、16 色表示に固定で 4 プレーン合計 512KB の VRAM が割り当てられている. ドットの表現は水平型で、1 ワードは横 16 ドットの各 プレーンにおけるパレットコードを表わす. 1 ライン 128 バイト(64 ワード) プレーン 0 $e00000~$e1ffff プレーン 1 $e20000~$e3ffff プレーン 2 $e40000~$e5ffff プレーン 3 $e60000~$e7ffff ============================================================================== ・CRTコントローラ address size R/W $e80000 1.w W R00 水平トータル ┐ $e80002 1.w W R01 水平同期終了位置 │水平タイミング制御 $e80004 1.w W R02 水平表示開始位置 │ $e80006 1.w W R03 水平表示終了位置 ┘ $e80008 1.w W R04 垂直トータル ┐ $e8000a 1.w W R05 垂直同期終了位置 │垂直タイミング制御 $e8000c 1.w W R06 垂直表示開始位置 │ $e8000e 1.w W R07 垂直表示終了位置 ┘ $e80010 1.w W R08 外部同期水平アジャスト : 水平位置微調整 $e80012 1.w W R09 ラスタ番号 : ラスタ割り込み用 $e80014 1.w W R10 X 位置 ┐テキスト画面スクロール $e80016 1.w W R11 Y 位置 ┘ $e80018 1.w W R12 X0 ┐ $e8001a 1.w W R13 Y0 │ $e8001c 1.w W R14 X1 │ $e8001e 1.w W R15 Y1 │グラフィック画面 $e80020 1.w W R16 X2 │ スクロール $e80022 1.w W R17 Y2 │ $e80024 1.w W R18 X3 │ $e80026 1.w W R19 Y3 ┘ $e80028 1.w R/W R20 メモリモード/表示モード制御 $e8002a 1.w R/W R21 同時アクセス/ラスタコピー/高速クリアプレーン撰択 $e8002c 1.w W R22 ラスタコピー動作用 : ラスタ番号 $e8002e 1.w W R23 テキスト画面アクセスマスクパターン $e80481 1.b R/W 動作 画像取り込み/高速クリア/ラスタコピー制御 CRTC R00($e80000): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ │ 水平トータル │ └───────────────┴───────────────┘ 水平同期期間×水平表示ドット数 R00 = ───────────────── -1 データ表示期間×8 ※最下位ビットは必ず 1 にすること. CRTC R01($e80002): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ │ 水平同期終了位置 │ └───────────────┴───────────────┘ 水平同期パルス幅×水平表示ドット数 R01 = ─────────────────── -1 データ表示期間×8 CRTC R02($e80004): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ │ 水平表示開始位置 │ └───────────────┴───────────────┘ (水平同期パルス幅+水平バックポーチ)×水平表示ドット数 R02 = ───────────────────────────── -5 データ表示期間×8 CRTC R03($e80006): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ │ 水平表示終了位置 │ └───────────────┴───────────────┘ (水平同期パルス幅-水平フロントポーチ)×水平表示ドット数 R03 = ────────────────────────────── -5 データ表示期間×8 CRTC R04($e80008): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ 垂直トータル │ └───────────┴───────────────────┘ 垂直同期期間 R04 = ──────── -1 水平同期期間 CRTC R05($e8000a): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ 垂直同期終了位置 │ └───────────┴───────────────────┘ 垂直同期パルス幅 R05 = ────────── -1 水平同期期間 CRTC R06($e8000c): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ 垂直表示開始位置 │ └───────────┴───────────────────┘ 垂直同期パルス幅+垂直バックポーチ R06 = ─────────────────── -1 水平同期期間 CRTC R07($e8000e): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ 垂直表示終了位置 │ └───────────┴───────────────────┘ 垂直同期期間-垂直フロントポーチ R07 = ────────────────── -1 水平同期期間 CRTC R08($e80010): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ │ 外部同期水平アジャスト │ └───────────────┴───────────────┘ CRTC R09($e80012): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ ラスタ番号 │ └───────────┴───────────────────┘ 垂直同期パルス幅+垂直バックポーチ R09 = ─────────────────── +ラスタ番号 水平同期期間 = R06 +1 +ラスタ番号 CRTC R10($e80014): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ X位置 │ └───────────┴───────────────────┘ CRTC R11($e80016): bit 15 10 9 0 ┌───────────┬───────────────────┐ │ │ Y位置 │ └───────────┴───────────────────┘ CRTC R12($e80018): bit 15 10 9 8 0 ┌───────────┬───────────────────┐ │ │ │ X0 │ └───────────┴───────────────────┘ ※実画面512×512ドットのモードでは bit 8~0 までが有効. CRTC R13($e8001a): bit 15 10 9 8 0 ┌───────────┬───────────────────┐ │ │ │ Y0 │ └───────────┴───────────────────┘ ※実画面512×512ドットのモードでは bit 8~0 までが有効. CRTC R14($e8001c): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ X1 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R15($e8001e): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ Y1 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R16($e80020): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ X2 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R17($e80022): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ Y2 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R18($e80024): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ X3 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R19($e80026): bit 15 8 0 ┌─────────────┬─────────────────┐ │ │ Y3 │ └─────────────┴─────────────────┘ ※実画面1024×1024ドットのモードでは使用されない. CRTC R20($e80028): bit 15 13 12 11 10 9 8 7 5 4 3 2 1 0 ┌─────┬─┬─┬─┬───┬─────┬─┬───┬───┐ │ │ │ │ │ COL │ │HF│ VD │ HD │ └─────┴─┴─┴─┴───┴─────┴─┴───┴───┘ │ │ └ SIZE │ G-MEM └ T-MEM bit 12 T-MEM T-VRAM使用モード %0 : 表示用 %1 : バッファ用 bit 11 G-MEM G-VRAM使用モード %0 : 表示用 %1 : バッファ用(bit 10~8 は無効) (G-VRAM が 65536 色表示時と同じ構造になる) bit 10 SIZE 実画面サイズ %0 : 512× 512ドット %1 : 1024×1024ドット bit 9~8 COL 色数モード %00 : 16色 %01 : 256色 %10 : 未定義 %11 : 65536色 bit 4 HF 水平偏向周波数 %0 : 15.98kHz %1 : 31.50kHz bit 3~2 VD 垂直ドット数 %00 : 256ドット %01 : 512ドット %10 : 1024ドット・インタレース(HF=%1の時のみ) %11 : 〃 bit 1~0 HD 水平ドット数 %00 : 256ドット %01 : 512ドット %10 : 768ドット %11 : クロック 50MHz モード(Compact XVI 以降のみ) CRTC R21($e8002a): bit 15 10 9 8 7 6 5 4 3 2 1 0 ┌───────────┬─┬─┬───────┬───────┐ │ │ │ │ │ │ │ │ │ │ │ │ └───────────┴─┴─┴───────┴───────┘ │ │ AP3~AP0 CP3~CP0 MEN SA bit 9 MEN テキスト画面アクセスマスク %0 : 無効 %1 : 有効 bit 8 SA テキスト画面同時アクセス %0 : 無効 %1 : 有効 bit 7~4 AP3~AP0 テキスト画面同時アクセス対象プレーン選択 %0 : 選択 %1 : 非選択 bit 3~0 CP3~CP0 ┌ テキスト画面ラスタコピー対象プレーン選択 └ グラフィック画面高速クリア対象ページ〃 %0 : 選択 %1 : 非選択 CRTC R22($e8002c): bit 15 8 7 0 ┌───────────────┬───────────────┐ │ ソースラスタ │ ディスティネーションラスタ │ └───────────────┴───────────────┘ (転送元) (転送先) CRTC R23($e8002e): bit 15 0 ┌───────────────────────────────┐ │ マスクパタン │ └───────────────────────────────┘ %0 : データが変更される %1 : データが変更されない CRTC 動作ポート($e80481): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │RC│ 0│FC│VI│ └───────┴─┴─┴─┴─┘ bit 3 RC テキスト画面ラスタコピー開始 %0 : 停止 %1 : 開始 bit 1 FC グラフィック画面高速クリア開始 %0 : 停止 %1 : 開始 ※高速クリア動作が終了すると自動的に 0 になる. bit 0 VI 画像取り込み開始 %0 : 停止 %1 : 開始 ============================================================================== ・ビデオコントローラ address size $e82000 256.w -- グラフィックパレット $e82200 256.w -- テキストパレット、スプライト+BG パレット $e82400 1.w R0 画面モード $e82500 1.w R1 プライオリティ制御 $e82600 1.w R2 ON/OFF 制御/特殊プライオリティ グラフィックパレット($e82000): グラフィックパレットは 16/256色表示モードと 65536色表示モードでは構 造が異なる. 16色表示: 先頭 16 ワードが使用される. パレットから読み出された値はその ままカラーコードとして出力される. 256色表示: 先頭 256 ワードが使用される. パレットから読み出された値はそ のままカラーコードとして出力される. 65536色表示: テキストパレットや 16/256色表示モードでのグラフィックパレッ トは 1 ワード単位のカラーコードが色数だけ並んでいるが、65536 色表示モードでのグラフィックパレットはカラーコードを上位/下位 のバイト単位に分割し、それが 256 個飛び飛びに並んだものが二組 (上位/下位)ある. カラーコード出力時には G-VRAM のデータが上位バイトと下位バイ トに分割され、それぞれ独立して決定されたのち、合成される. PH = G-VRAM のデータの上位バイト PL = 〃 下位〃 CH = 出力されるカラーコードの上位バイト CL = 〃 下位〃 CH = *(unsigned char)($e82002+PH×2-PH&1) CL = *(unsigned char)($e82000+PL×2-PL&1) address size CH CL $e82000 1.b -- PL = $00 $e82001 1.b -- PL = $01 $e82002 1.b PH = $00 -- $e82003 1.b PH = $01 -- $e82004 1.b -- PL = $02 $e82005 1.b -- PL = $03 $e82006 1.b PH = $02 -- $e82007 1.b PH = $03 -- …… …… $e821f8 1.b -- PL = $fc $e821f9 1.b -- PL = $fd $e821fa 1.b PH = $fc -- $e821fb 1.b PH = $fd -- $e821fc 1.b -- PL = $fe $e821fd 1.b -- PL = $ff $e821fe 1.b PH = $fe -- $e821ff 1.b PH = $ff -- ($e82000 は PL = $00 の時の CL の値、と読むこと) テキストパレット($e82200): テキストパレットとスプライト+BG パレットは 16 ワードのパレットブロ ックが 16 個並び、一部共用となっている. テキストパレットはこのうち先頭のパレットブロック 0 だけが使用され、 パレットから読み出された値はそのままカラーコードとして出力される. スプライト+BG パレット($e82200): テキストパレットと同様だが、パレットブロック 0~15 の全てを使用でき る. 使用するパレット番号は、PCG のデータが下位 4 ビットの値となり、ス プライトスクロールレジスタや BG データエリアのデータが上位 4 ビットの 値となって決定される. VC R0($e82400): bit 15 3 2 1 0 ┌─────────────────────────┬─┬───┐ │ │ │ COL │ └─────────────────────────┴─┴───┘ SIZ bit 2 SIZ 実画面サイズ %0 : 512× 512ドット %1 : 1024×1024ドット bit 1~0 COL 色モード %00 : 16色 %01 : 256色 %10 : 未定義 %11 : 65536色 ※CRTC R20 のビット 10~8 と同じ値を設定すること. VC R1($e82500): bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ SP │ TX │ GR │ GP3 │ GP2 │ GP1 │ GP0 │ └───┴───┴───┴───┴───┴───┴───┴───┘ bit 13~12 SP スプライト画面の優先順位 bit 11~10 TX テキスト 〃 bit 9~ 8 GR グラフィック 〃 bit 7~ 6 GP3 四番目に優先順位の高いグラフィック画面のページ番号 bit 5~ 4 GP2 三番目 〃 bit 3~ 2 GP1 二番目 〃 bit 1~ 0 GP0 最も優先順位の高いグラフィック画面のページ番号 ※SP/TX/GR は、優先順位を高くする画面から %00/%01/%10 を設定する. ※グラフィック画面が 1 ページの場合、GP3~GP0 は一組として扱う. また、2 ページの場合は GP3~GP2/GP1~GP0 をそれぞれ一組として扱う. ※GP3~GP0 設定値 65536色表示 : %1110_0100 256色表示 : %1110_0100(ページ 1 < ページ 0) %0100_1110(ページ 0 < ページ 1) 16色表示 : %1110_0100(ページ 3 < ページ 2 < ページ 1 < ページ 0) … %0001_1011(ページ 0 < ページ 1 < ページ 2 < ページ 3) VC R2($e82600): bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │YS│AH│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ VHT EXON H/P B/P G/G G/T │ SON TON GS4 GS3 GS2 GS1 GS0 BCON bit 15 YS ビデオカット (スーパーインポーズ時でもビデオ画像を表示しない) bit 14 AH 半透明 : テキストパレット 0 ※EXON や H/P 等と無関係に強制的に半透明モードになる. bit 13 VHT 半透明 : ビデオ画像(カラーイメージユニットで利用) bit 12 EXON 特殊プライオリティ/半透明モード有効 bit 11 H/P %0 : 特殊プライオリティ選択 %1 : 半透明モード選択 bit 10 B/P %0 : シャープ予約 %1 : グラフィック画面の最下位ビットで領域指定 bit 9 G/G 半透明 : グラフィック画面 bit 8 G/T 半透明 : テキスト/スプライト画面 ※グラフィック画面のプライオリティが高い場合のみ有効) bit 7 BCON ボーダーカラー表示 ON(%1)/OFF(%0) 制御 bit 6 SON スプライト画面 ON(%1)/OFF(%0) 制御 bit 5 TON テキスト画面 ON(%1)/OFF(%0) 制御 bit 4 GS4 グラフィック画面 ON(%1)/OFF(%0) 制御 (実画面1024×1024ドット時) bit 3~0 GS3~GS0 グラフィック画面 ON(%1)/OFF(%0) 制御 (実画面 512× 512ドット時) ※グラフィック画面が 1 ページの場合、GS3~GS0 の各ビットには全て同じ 値を設定する. また、2 ページの場合は GS3~GS2/GS1~GS0 をそれぞれ 一組として扱い同じ組の各ビットには全て同じ値を設定する. ============================================================================== ・DMAC HD63450 は 4 個のチャンネルを持ち、X680x0 では チャンネル #0、#1、#3 がそれ ぞれ FD、HD、ADPCM に割り当てられている. チャンネル #2 はユーザに解放されてお り、REQ(DMA 転送要求信号)、ACK(応答信号)、PCL(汎用入力信号)などが拡張スロット に配線されているのでメモリ-メモリ間転送や拡張ボードで利用可能である. DMAC のレジスタは各チャンネル毎に $e84000 から $40 バイトずつ存在する. ただ し、GCR(ジェネラルコントロールレジスタ)は チャンネル #3 だけにある. address channel $e84000 #0 $e84040 #1 $e84080 #2 $e840c0 #3 offset size R/W +$00 1.b R/W CSR チャンネルステータスレジスタ +$01 1.b R CER チャンネルエラーレジスタ +$02 1.w --- +$04 1.b R/W DCR デバイスコントロールレジスタ +$05 1.b R/W OCR オペレーションコントロールレジスタ +$06 1.b R/W SCR シーケンスコントロールレジスタ +$07 1.b R/W CCR チャンネルコントロールレジスタ +$08 1.w --- +$0a 1.w R/W MTC メモリトランスファカウンタ +$0c 1.l R/W MAR メモリアドレスレジスタ +$10 1.l --- +$14 1.l R/W DAR デバイスアドレスレジスタ +$18 1.w --- +$1a 1.w R/W BTC ベーストランスファカウンタ +$1c 1.l R/W BAR ベースアドレスレジスタ +$20 1.l --- +$24 1.b --- +$25 1.b R/W NIV ノーマルインタラプトベクタ +$26 1.b --- +$27 1.b R/W EIV エラーインタラプトベクタ +$28 1.b --- +$29 1.b R/W MFC メモリファンクションコード +$2a 1.w --- +$2c 1.b --- +$2d 1.b R/W CPR チャンネルプライオリティレジスタ +$2e 1.w --- +$30 1.b --- +$31 1.b R/W DFC デバイスファンクションコード +$32 3.w --- +$38 1.b --- +$39 1.b R/W BFC ベースファンクションコード +$3a 1.l --- +$3e 1.b --- +$3f 1.b R/W GCR ジェネラルコントロールレジスタ DMAC CSR(+$00): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ COC BTC NDT ERR ACT DIT PCT PCS bit 7 COC チャンネルオペレーションコンプリート %0 : チャンネル動作未完了 %1 : 〃 完了 bit 6 BTC ブロックトランスファコンプリート %0 : ブロック転送動作未完了 %1 : 〃 完了 bit 5 NDT ノーマルデバイスターミネーション %0 : DONE 信号によるデバイス停止ではない %1 : DONE 信号による正常なデバイス停止 bit 4 ERR エラービット %0 : エラーなし %1 : エラー発生(ERROR CODE ビットにエラー内容が入る) bit 3 ACT チャンネルアクティブ %0 : チャンネル非アクティブ %1 : チャンネルアクティブ(動作中) bit 2 DIT DONE 入力トランジッション %0 : DONE 入力はない %1 : OCR の BTD ビットが %1 の時に DONE 入力があった ___ bit 1 PCT PCL トランジッション %0 : PCL の立ち下がり(High → Low の変化)はない %1 : 〃 が発生した ___ bit 0 PCS PCL ラインステータス %0 : PCL = Low %1 : PCL = High ※ACT、PCS 以外のビットは一度 %1 になると、そのビットに %1 を書き込む かリセットが掛るまで %1 のままになる. 特に COC、BTC、NDT、ERR、ACT ビットが %1 になっている時には次の転送動作を行うことが出来ないので、 使用前にクリアする必要がある. DMAC CER(+$01): bit 7 5 4 0 ┌─────┬─────────┐ │ 0 │ ERROR CODE │ └─────┴─────────┘ bit 4~0 ERROR CODE %00000 : エラーなし %00001 : コンフィグレーションエラー %00010 : 動作タイミングエラー %00011 : (未使用) %001rr : アドレスエラー %010rr : バスエラー %011rr : カウントエラー %10000 : 外部強制停止 %10001 : ソフトウェア強制停止 DMAC DCR(+$04): bit 7 6 5 4 3 2 1 0 ┌───┬───┬─┬─┬───┐ │ XRM │ DTYP │ │ 0│ PCL │ └───┴───┴─┴─┴───┘ DPS bit 7~6 XRM エクスターナルリクエストモード %00 : バースト転送モード %01 : (未定義) %10 : ホールドなし サイクルスチールモード %11 : ホールド付き 〃 bit 5~4 DTYP デバイスタイプ %00 : 68000 バスタイプ ┐デュアル %01 : 6800 〃 ┘ アドレスモード ___ %10 : ACK 付きデバイス ┐シングル ___ _____ │ アドレスモード %11 : ACK と READY 付きデバイス ┘ ※デュアルアドレスモードで使用すること(通常は %00). bit 3 DPS デバイスポートサイズ %0 : 8 ビットポート %1 : 16 〃 bit 1~0 PCL ペリフェラルコントロールライン %00 : ステータス入力 %01 : インタラプト付きステータス入力 %10 : 1/8 スタートパルス %11 : ABORT(強制終了)入力 DMAC OCR(+$05): bit 7 6 5 4 3 2 1 0 ┌─┬─┬───┬───┬───┐ │ │ │ SIZE │ CHAIN│ REQG │ └─┴─┴───┴───┴───┘ DIR BTD bit 7 DIR ディレクション %0 : メモリ→デバイス(MAR → DAR) %1 : デバイス→メモリ(DAR → MAR) bit 6 BTD DONE 付き複数ブロック転送 %0 : 通常動作 %1 : DONE 入力があると、強制的に次のブロックの転送を 行う bit 5~4 SIZE オペランドサイズ %00 : バイト( 8bit) %01 : ワード(16bit) %10 : ロングワード(32bit) %11 : パックなし ポートサイズ 8bit バイト(8bit)転送 bit 3~2 CHAIN チェイニングオペレーション %00 : チェイン動作なし %01 : (未使用) %10 : アレイチェイニング %11 : リンクアレイチェイニング bit 1~0 REQG リクエストジェネレーションメソッド %00 : オートリクエスト限定速度 %01 : 〃 最大速度 %10 : 外部要求転送(REQ ラインによる) %11 : 最初の転送はオートリクエスト 二番目以降は外部要求転送 ※チャンネル #0、#1、#3 は外部要求転送で使用すること. DMAC SCR(+$06): bit 7 4 3 2 1 0 ┌───────┬───┬───┐ │ 0 │ MAC │ DAC │ └───────┴───┴───┘ bit 3~2 MAC メモリアドレスカウント %00 : メモリアドレスレジスタは変化させない %01 : 転送が行われるごとにメモリアドレスレジスタを増加 %10 : 〃 減少 %11 : (未使用) bit 1~0 DAC デバイスアドレスカウント %00 : デバイスアドレスレジスタは変化させない %01 : 転送が行われるごとにデバイスアドレスレジスタを増加 %10 : 〃 減少 %11 : (未使用) DMAC CCR(+$07): bit 7 6 5 4 3 2 0 ┌─┬─┬─┬─┬─┬─────┐ │ │ │ │ │ │ 0 │ └─┴─┴─┴─┴─┴─────┘ STR CNT HLT SAB INT bit 7 STR スタートオペレーション %1 : 動作スタート bit 6 CNT コンティニューオペレーション %0 : コンティニュー動作なし %1 : 〃 あり bit 5 HLT ホルトオペレーション %1 : チャンネル動作一時停止 bit 4 SAB ソフトウェアアボート %1 : チャンネル動作の停止 bit 3 INT インタラプトイネーブル %0 : 割り込み発生許可 %1 : 〃 禁止 DMAC MTC(+$0a): 転送オペランド数を指定する. DMAC MAR(+$0c): 転送するメモリアドレスを指定する. DMAC DAR(+$14): 転送するデバイスアドレスを指定する. DMAC BTC(+$1a): アレイチェインモードでの転送ブロック数(転送情報テーブル数)を指定する. DMAC BAR(+$1c): アレイチェイン/リンクアレイチェインモードでの転送情報テーブルの先頭ア ドレスを指定する. DMAC NIV(+$25): CSR ERR が %0 の時に発生した割り込みで使用するベクタ番号を指定する. DMAC EIV(+$27): CSR ERR が %1 の時に発生した割り込みで使用するベクタ番号を指定する. DMAC MFC(+$29): bit 7 3 2 1 0 ┌─────────┬─────┐ │ 0 │ │ │ │ └─────────┴─────┘ FC2 FC1 FC0 bit 2~0 FC2~FC0 メモリファンクションコード %000 : (未使用) %001 : ユーザデータ %010 : ユーザプログラム %011 : (未使用) %100 : (未使用) %101 : スーパバイザデータ %110 : スーパバイザプログラム %111 : インタラプトアクノリッジ DMAC CPR(+$2d): bit 7 2 1 0 ┌───────────┬───┐ │ 0 │ CP │ └───────────┴───┘ bit 1~0 CP チャンネルプライオリティ %00 : 最も高い優先度 %01 : 二番目に高い優先度 %10 : 〃 %11 : 最も低い優先度 DMAC DFC(+$31): (MFC と同様) DMAC BFC(+$39): (MFC と同様) DMAC GCR(+$3f): bit 7 4 3 2 1 0 ┌───────┬───┬───┐ │ 0 │ BT │ BR │ └───────┴───┴───┘ bit 3~2 BT バーストタイム (1 バーストあたりの DMA クロックサイクル数) %00 : 16 クロック %01 : 32 〃 %10 : 64 〃 %11 : 128 〃 bit 1~0 BR バンドウィズスレシオ(バンド占有率) %00 : 50.00% %01 : 25.00% %10 : 12.50% %11 : 6.25% ※限定速度オートリクエストモードのチャンネルにのみ影響する. ============================================================================== ・エリアセット メインメモリのユーザ領域/スーパーバイザ領域を選択する為のレジスタ. 書き出し 専用で、読み出しは出来ない. address size $e86001 1.b エリアセットレジスタ $eaff81 1.b 拡張エリアセットレジスタ 0($200000~$3fffff) $eaff83 1.b 〃 1($400000~$5fffff) $eaff85 1.b 〃 2($600000~$7fffff) $eaff87 1.b 〃 3($800000~$9fffff) $eaff89 1.b 〃 4($a00000~$bfffff) エリアセットレジスタ($e86001): 0 番地からどれだけのメモリ領域をスーパバイザ領域にするかを 8KB 単位 で指定する. 0 番地から、((設定値+1)×8192-1)までのアドレスがスーパバ イザ領域となり、最大で 2MB(($ff+1)×8192-1)の範囲が指定できる. 本体リセット時、このレジスタには 0 が設定される. 拡張エリアセットレジスタ: $200000 番地から 256KB 単位でスーパバイザ領域にするかどうかを指定す る. レジスタ #0 の bit 0 ~ bit 7、…、レジスタ #4 の bit 0 ~ bit 7 の順に、$200000~$bfffff の単位が指定できる. 本体リセット時、このレジスタには全て 0 が設定される. ※X68030 で追加されたレジスタ(X68000 でも使用可能だが本体リセット時に 初期化されない?). ============================================================================== ・MFP マルチファンクションペリフェラル MC68901 は 4 個のタイマ、1 チャンネルのシリ アルポート(USART)、8 ビット分の汎用 I/O ポート(GPIP)を持っている. X680x0/Human68k での割り当ては以下のようになっている. タイマ A V-DISP(垂直表示期間)信号による割り込み 〃 B シリアルポートのクロック生成 〃 C カーソル点滅/FDD 制御等の割り込み 〃 D BG プロセス切り換え用の割り込み シリアルポート キーボード入出力 汎用 I/O ポート 各種信号による割り込み address size R/W $e88001 1.b R GPIP 汎用 I/O レジスタ ┐ $e88003 1.b R/W AER アクティブエッジレジスタ │GPIP 制御 $e88005 1.b R/W DDR データ方向レジスタ ┘ $e88007 1.b R/W IERA 割り込みイネーブルレジスタ A ┐ $e88009 1.b R/W IERB 〃 B │ $e8800b 1.b R/W IPRA 割り込みペンディングレジスタ A │ $e8800d 1.b R/W IPRB 〃 B │ $e8800f 1.b R/W ISRA 割り込みインサービスレジスタ A │割り込み制御 $e88011 1.b R/W ISRB 〃 B │ $e88013 1.b R/W IMRA 割り込みマスクレジスタ A │ $e88015 1.b R/W IMRB 〃 B │ $e88017 1.b R/W VR ベクタレジスタ ┘ $e88019 1.b R/W TACR タイマ A コントロールレジスタ ┐ $e8801b 1.b R/W TBCR タイマ B 〃 │ $e8801d 1.b R/W TCDCR タイマ C&D コントロールレジスタ │ $e8801f 1.b R/W TADR タイマ A データレジスタ │タイマ制御 $e88021 1.b R/W TBDR タイマ B 〃 │ $e88023 1.b R/W TCDR タイマ C 〃 │ $e88025 1.b R/W TDDR タイマ D 〃 ┘ $e88027 1.b R/W SCR SYNC キャラクタレジスタ ┐ $e88029 1.b R/W UCR USART コントロールレジスタ │ $e8802b 1.b R/W RSR レシーバステータスレジスタ │USART 制御 $e8802d 1.b R/W TSR トランスミッタステータスレジスタ│ $e8802f 1.b R/W UDR USART データレジスタ ┘ MFP GPIP($e88001): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ ALARM │ │ │ │ │ │ └ EXPON │ │ │ │ │ └ POW SW │ │ │ │ └ FMIRQ │ │ │ └ V-DISP │ │ └ 常に %1 │ └ CIRQ └ H-SYNC bit 7~0 に GPIP 7~0 の各信号の状態がそのまま入力される. bit 7 H-SYNC CRTC の H-SYNC 信号 %0 : 'L'(水平帰線期間) %1 : 'H'( 〃 同期 〃 ) bit 6 CIRQ CRTC の割り込み要求信号(ラスタ割り込み) %0 : 割り込み要求中 %1 : 〃 なし bit 5 (未使用) 常に %1 bit 4 V-DISP CRTC の V-DISP 信号 %0 : 'L'(垂直帰線期間) %1 : 'H'( 〃 表示 〃 ) bit 3 FMIRQ FM 音源 IC の割り込み要求信号 %0 : 割り込み要求中 %1 : 〃 なし bit 2 POW SW 本体前面の電源スイッチの状態 %0 : 電源スイッチ ON(通常) %1 : 〃 OFF bit 1 EXPON EXPON 信号 %0 : 'L' %1 : 'H'(通常) bit 0 ALARM RTC の ALARM 信号 %0 : 'L' %1 : 'H'(通常) MFP AER($e88003): (GPIP と同様) 各信号ごとに、割り込みを発生させる変化方向を設定する. %0 : %0 → %1 の変化で割り込み発生 %1 : %1 → %0 〃 MFP DDR($e88005): (GPIP と同様) 各信号ごとに、入力/出力のいずれで使うのかを設定する. %0 : 入力 %1 : 出力 ※X680x0 では全て入力として使用する. MFP IERA($e88007): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ タイマ B │ │ │ │ │ │ └ 送信エラー │ │ │ │ │ └ 送信バッファエンプティ │ │ │ │ └ 受信エラー │ │ │ └ 受信バッファフル │ │ └ タイマ A │ └ CIRQ(GPIP 6) └ H-SYNC(GPIP 7) bit 7 CRTC H-SYNC(水平同期信号) bit 6 CRTC ラスタ割り込み bit 5 タイマ A bit 4 MPSC 受信バッファフル(受信データ読み取り要求) bit 3 〃 受信エラー bit 2 〃 送信バッファエンプティ(送信データ書き込み要求) bit 1 〃 送信エラー bit 0 タイマ B 各割り込みの発生の許可/禁止を設定する. %0 : 割り込み発生禁止 %1 : 〃 許可 MFP IERB($e88009): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ ALARM(GPIP 0) │ │ │ │ │ │ └ EXPON(GPIP 1) │ │ │ │ │ └ POW SW(GPIP 2) │ │ │ │ └ FMIRQ(GPIP 3) │ │ │ └ タイマ D │ │ └ タイマ C │ └ V-DISP(GPIP 4) └ (GPIP 5) (IERA と同様) MFP IPRA($e8800b): (IERA と同様) 割り込み要求がペンディング(保留)されていることを示す. 割り込み要求が 発生すれば %1 になり、割り込み要求が受け取られたら %0 に戻る. %0 : 割り込み要求はペンディングされていない %1 : 〃 されている ※IERA/IERB によって割り込みが禁止されるか、IPRA/IPRB に %0 を書き込む 事によっても %0 に戻る. MFP IPRB($e8800d): (IERB と同様) (IPRA と同様) MFP ISRA($e8800f): (IERA と同様) 割り込みがインサービス(処理中)であるとを示す. ソフトウェア EOI(End Of interrupt = サービス終了通知)モードでは、MFP から MPU に割り込みが伝えられると %1 になり、%0 を ISRA/ISRB に書き込 むと %0 に戻る. 自動 EOI モードでは、割り込みを伝えた時点で自動的に %0 に戻る. %0 : 割り込み要求は処理中ではない %1 : 〃 である MFP ISRB($e88011): (IERB と同様) (ISRA と同様) MFP IMRA($e88013): (IERA と同様) 割り込みのマスク制御を設定する. %0 : 割り込み要求をマスクする (割り込み発生不可) %1 : 〃 しない(〃 可 ) ※IERA/IERB は割り込みの発生を抑制するが、IMRA/IMRB は割り込み要因が発 生しても割り込み要求を出力しないだけである. MFP IMRB($e88015): (IERB と同様) (IMRA と同様) MFP VR($e88017): bit 7 6 5 4 3 2 1 0 ┌───────┬─┬─────┐ │ ベクタ番号 │ S│ │ └───────┴─┴─────┘ bit 7~4 割り込みベクタの上位 4 ビット MFP による割り込み時に出力するベクタ番号の上位 4 ビッ トの値を設定する. 下位 4 ビットは割り込み要因によって 決定される(優先度の高い順から %1111~%0000). bit 3 インサービスレジスタイネーブル %0 : オート EOI モード (インサービスレジスタ無効) %1 : ソフトウェア EOI モード(〃 有効) MFP TACR($e88019): bit 7 5 4 3 2 1 0 ┌─────┬─┬───────┐ │ │ │ │ │ │ │ └─────┴─┴───────┘ │ AC3~AC0 リセット TAO bit 4 リセット TAO タイマ出力(TAO)リセット %0 : 通常動作 %1 : タイマ出力ピンの状態を'L'に設定する bit 3~0 AC3~AC0 タイマの動作モード %0000 : タイマストップ %0001 : ディレイモード (÷ 4 プリスケーラ) %0010 : 〃 (÷ 10 〃 ) %0011 : 〃 (÷ 16 〃 ) %0100 : 〃 (÷ 50 〃 ) %0101 : 〃 (÷ 64 〃 ) %0110 : 〃 (÷100 〃 ) %0111 : 〃 (÷200 〃 ) %1000 : イベントカウントモード %1001 : パルス幅測定モード (÷ 4 プリスケーラ) %1010 : 〃 (÷ 10 〃 ) %1011 : 〃 (÷ 16 〃 ) %1100 : 〃 (÷ 50 〃 ) %1101 : 〃 (÷ 64 〃 ) %1110 : 〃 (÷100 〃 ) %1111 : 〃 (÷200 〃 ) MFP TBCR($e8801b): bit 7 5 4 3 2 1 0 ┌─────┬─┬───────┐ │ │ │ │ │ │ │ └─────┴─┴───────┘ │ BC3~BC0 リセット TBO (TACR と同様) MFP TCDCR($e8801d): bit 7 6 5 4 3 2 1 0 ┌─┬─────┬─┬─────┐ │ │ │ │ │ │ │ │ │ └─┴─────┴─┴─────┘ CC2~CC0 DC2~DC0 bit 6~4 CC2~CC0 タイマ C 動作モード %000 : タイマストップ %001 : ディレイモード (÷ 4 プリスケーラ) %010 : 〃 (÷ 10 〃 ) %011 : 〃 (÷ 16 〃 ) %100 : 〃 (÷ 50 〃 ) %101 : 〃 (÷ 64 〃 ) %110 : 〃 (÷100 〃 ) %111 : 〃 (÷200 〃 ) bit 2~0 DC2~DC0 タイマ D 動作モード (CC2~CC0 と同様) MFP TADR($e8801f): タイマ A の値. MFP TBDR($e88021): タイマ B の値. MFP TCDR($e88023): タイマ C の値. MFP TDDR($e88025): タイマ D の値. MFP SCR($e88027): 同期転送モードで使用する. MFP UCR($e88029): bit 7 6 5 4 3 2 1 0 ┌─┬───┬───┬─┬─┬─┐ │ │ │ │ │ │PE│ │ │ └─┴───┴───┴─┴─┴─┘ CLK WL1 WL0 ST1 ST0 E/O bit 7 CLK 送受信速度 %0 : 入力クロック周波数と同一 %1 : 〃 の 1/16 bit 6~5 WL1~WL0 データ長 %00 : 8bit %01 : 7bit %10 : 6bit %11 : 5bit bit 4~3 ST1~ST0 同期モード/スタートビット長/ストップビット長 スタートビット ストップビット %00 : 同期 0 0 %01 : 〃 1 1 %10 : 〃 1 1.5 %11 : 非同期 1 2 bit 2 PE パリティ有効/無効 %0 : パリティ無効 %1 : 〃 有効 bit 1 E/O パリティ偶数/奇数 %0 : 奇数パリティ %1 : 偶数〃 ※X680x0 ではキーボードとの通信に使用されているため、非同期 1/16 クロ ックモード、データ長 8 ビット、ストップビット 1、パリティ無しで 2400bps の設定にしなければならない. MFP RSR($e8802b): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │BF│OE│PE│FE│ │ │SS│RE│ └─┴─┴─┴─┴─┴─┴─┴─┘ │ └ M/CIP └ F/S or B bit 7 BF バッファフル %0 : 受信バッファは空 %1 : 〃 にデータが入っている bit 6 OE オーバーランエラー %0 : 正常動作 %1 : オーバーランエラーが発生した bit 5 PE パリティエラー %0 : 正常動作 %1 : パリティエラーが発生した bit 4 FE フレーミングエラー %0 : 正常動作 %1 : フレーミングエラーが発生した (ストップビットが見つからない) bit 3 F/S or B ファウンド/サーチまたはブレーク 同期モード時: %0 を書き込むとワードワーチモードになり、SYNC キャラクタと同じデータが受信されると %1 になる. 非同期モード時: %0 : ブレークを検出した %1 : ブレーク状態ではない bit 2 M/CIP マッチ/文字処理中 同期モード時: %0 : 受信ワードは SCR と一致していない %1 : 〃 している bit 1 SS シンクロナスストップ %0 : SCR と一致するキャラクタは取り込まない %1 : 〃 も取り込む bit 0 RE レシーバイネーブル %0 : レシーバディセーブル %1 : 〃 イネーブル MFP TSR($e8802d): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬───┬─┐ │BE│UE│AT│ │ B│ H│ L│TE│ └─┴─┴─┴─┴─┴───┴─┘ END bit 7 BE バッファエンプティ %0 : 送信バッファにデータが入っている %1 : 〃 は空 bit 6 UE アンダーランエラー %0 : 正常動作 %1 : アンダーランが発生した bit 5 AT オートターンアラウンド %0 : 通常動作 %1 : トランスミッタがディセーブルになると自動的にレシー バをイネーブルする(レシーバイネーブル後、自動的に クリアされる) bit 4 END %0 : トランスミッタはイネーブルになっている %1 : 〃 ディセーブルされている bit 3 B ブレーク %0 : 通常動作 %1 : SO 端子(送信データ端子)をブレーク状態にする ※非同期モード時のみ有効. bit 2~1 H~L High/Low %00 : TE = %0 の時、SO 端子 = ハイインピーダンス %01 : 〃 = Low %10 : 〃 = High %11 : ループバックモード bit 0 TE トランスミッタイネーブル %0 : トランスミッタディセーブル %1 : 〃 イネーブル MFP UDR read($e8802f): bit 7 6 0 ┌─┬─────────────┐ │ │ Key Code │ └─┴─────────────┘ └ Make/Break 最後に押されたキー若しくは最後に離されたキーのキーコードが読み出される. 一度読んだ後も次の入力が発生するまでは、最後の入力キーコードを保持する. bit 7 Make/Break %0 : キーが押された %1 : 〃 離された MFP UDR write($e8802f): bit 7 6 5 4 3 2 1 0 ┌───────────────┐ │D7│D6│D5│D4│D3│D2│D1│D0│ └───────────────┘ キーボードへの制御コマンドを書き込む. ※スプリアス割り込み MFP のレジスタを操作して割り込みを禁止する時、MPU の割り込みマスクレベルが禁 止しようとしている割り込みを受け付ける設定であった場合、レジスタを操作した瞬間 に割り込みが発生すると、割り込みを正しく処理できずにスプリアス割り込みが発生す る. これを防ぐには MPU の割り込みマスクを設定して割り込みを受け付けないように するか、スプリアス割り込みが呼び出されても何もせずに戻るルーチンに置き換えれば よい. ============================================================================== ・キーボード制御コマンド bit 7 6 5 4 0 ┌─┬─┬─┬─────────┐ │ 0│ 0│ │ TV CTRL Code │ └─┴─┴─┴─────────┘ ディスプレイ制御信号を発生させる. bit 4~0 TV CTRL Code コード 名称 機能 キー %00000 : --- (無効) %00001 : Vol.up 音量 up [↑] %00010 : Vol.down 〃 down [↓] %00011 : Vol.normal 〃 標準 [,] %00100 : Call チャンネルコール [CLR] %00101 : CS down テレビ画面(初期化) %00110 : Mute 消音 [0] %00111 : CH 16 (無効) %01000 : BR up テレビ/コンピュータ画面切り替え(トグル) [.] %01001 : BR down テレビ/外部入力切り替え(トグル) [=] %01010 : BR 1/2 コントラストノーマル %01011 : CH up チャンネル up [→] %01100 : CH down 〃 down [←] %01101 : --- (無効) %01110 : Power ON/OFF 電源 ON/OFF(トグル) %01111 : CS 1/2 スーパーインポーズ ON/OFF(トグル) コントラストダウン [+] %10000 : CH 1 チャンネル 1 [1] %10001 : CH 2 〃 2 [2] %10010 : CH 3 〃 3 [3] %10011 : CH 4 〃 4 [4] %10100 : CH 5 〃 5 [5] %10101 : CH 6 〃 6 [6] %10110 : CH 7 〃 7 [7] %10111 : CH 8 〃 8 [8] %11000 : CH 9 〃 9 [9] %11001 : CH 10 〃 10 [/] %11010 : CH 11 〃 11 [*] %11011 : CH 12 〃 12 [-] %11100 : CH 13 テレビ画面 [=] %11101 : CH 14 コンピュータ画面 [.] %11110 : CH 15 スーパーインポーズ ON/OFF(トグル) コントラストダウン [+] %11111 : --- 〃 コントラストノーマル ※X1 コンパチモードの = . + は %11100 ~ %11110 の動作. bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬───┬─┐ │ 0│ 1│ 0│ 0│ 0│ │ │ └─┴─┴─┴─┴─┴───┴─┘ └ MSCTRL マウスコントロール信号を制御する. bit 0 MSCTRL %0 : MSCTRL を 'Low' にする %1 : 〃 'High' 〃 bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬───┬─┐ │ 0│ 1│ 0│ 0│ 1│ │ │ └─┴─┴─┴─┴─┴───┴─┘ └ KEY EN キーデータの送出を許可/禁止する. 禁止中もキースキャンは行うのでディスプレイ制御は可能. bit 0 KEY EN %0 : キーデータ送出禁止 %1 : 〃 許可 bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 1│ 0│ 1│ 0│ 0│ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ __ └ X68K/X1 ディスプレイコントロールキーモードを選択する. __ bit 0 X68K/X1 %0 : X1 コンパチモード %1 : X68000 モード キー X68000 モード X1 コンパチモード + スーパーインポーズ ON/OFF(トグル) スーパーインポーズ = TV/外部入力切り替え(トグル) TV . TV/コンピュータ切り替え(トグル) コンピュータ bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬───┐ │ 0│ 1│ 0│ 1│ 0│ 1│BRIGHT│ └─┴─┴─┴─┴─┴─┴───┘ キーボード上の LED の明るさを選択する. bit 1~0 BRIGHT %00 : 明るい %01 : やや明るい %10 : やや暗い %11 : 暗い bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 1│ 0│ 1│ 1│ 0│ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ └ CTRL EN 本体からキーボードに要求するディスプレイ制御コマンドを受け付けるか否か を設定する. bit 0 CTRL EN %0 : 本体からのディスプレイ制御無効 %1 : 〃 有効 bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 1│ 0│ 1│ 1│ 1│ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ └ OPT.2 EN OPT.2 キーによるディスプレイ制御を許可/禁止する. bit 0 OPT.2 EN %0 : OPT.2 キーによるディスプレイ制御禁止 %1 : 〃 許可 bit 7 6 5 4 3 0 ┌─┬─┬─┬─┬───────┐ │ 0│ 1│ 1│ 0│ REP. DELAY │ └─┴─┴─┴─┴───────┘ キーリピートが開始されるまでの時間を設定する. キーリピート開始までの時間は (REP. DELAY)×100+200ms で、リセット時は 500ms に初期化される. bit 7 6 5 4 3 0 ┌─┬─┬─┬─┬───────┐ │ 0│ 1│ 1│ 1│ REP. TIME │ └─┴─┴─┴─┴───────┘ キーリピートの間隔を設定する. キーリピート間隔は (REP. TIME)^2×5+30ms で、リセット時は 110ms に初 期化される. bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 1│ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ かな │ │ │ │ │ └ ローマ字 │ │ │ │ └ コード入力 │ │ │ └ CAPS │ │ └ INS │ └ ひらがな └ 全角 キーボード上の LED の点灯/消灯を制御する. 各ビットが %0 で点灯、%1 で 消灯. bit 6 全角 bit 5 ひらがな bit 4 INS bit 3 CAPS bit 2 コード入力 bit 1 ローマ字 bit 0 かな ※以下のコマンドは Compact キーボード用(未確認). bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 1│ 0│ 0│ 0│ 1│ 1│ 1│ └─┴─┴─┴─┴─┴─┴─┴─┘ キーボードの種類を判別する. このコマンドを出力後に $fe が入力されれば Compact のキーボードである. bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 1│ 0│ 0│ 0│ 1│ 0│ │ └─┴─┴─┴─┴─┴─┴─┴─┘ └ NUM LED Compact キーボード上の NUM キー LED の点灯/消灯を制御する. bit 0 NUM LED %0 : 消灯 %1 : 点灯 ============================================================================== ・RTC RTC(リアルタイムクロック RP5C15)のレジスタは二つのバンクが同一アドレスに割り 当てられており、どちらのバンクをアクセスするかは MODE レジスタのビット 0 で設 定する. なお、時間を設定するレジスタは全て BCD フォーマットとなっている. address size BANK 0 BANK 1 $e8a001 1.b 1 秒カウンタ CLKOUT セレクトレジスタ $e8a003 1.b 10 秒 〃 Adjust $e8a005 1.b 1 分 〃 アラーム 1 分レジスタ $e8a007 1.b 10 分 〃 〃 10 分 〃 $e8a009 1.b 1 時間 〃 〃 1 時間〃 $e8a00b 1.b 10 時間 〃 〃 10 時間〃 $e8a00d 1.b 曜日 〃 〃 曜日 〃 $e8a00f 1.b 1 日 〃 〃 1 日 〃 $e8a011 1.b 10 日 〃 〃 10 日 〃 $e8a013 1.b 1 月 〃 (未使用) $e8a015 1.b 10 月 〃 12/24 時間セレクタ $e8a017 1.b 1 年 〃 閏年カウンタ $e8a019 1.b 10 年 〃 (未使用) $e8a01b 1.b MODE レジスタ MODE レジスタ $e8a01d 1.b TEST 〃 TEST 〃 $e8a01f 1.b RESET コントローラ RESET コントローラ RTC CLKOUT セレクトレジスタ($e8a001,BANK 1): bit 7 3 2 0 ┌─────────┬─────┐ │ │ CLKOUT │ └─────────┴─────┘ bit 2~0 CLKOUT CLKOUT 端子の出力波形選択 %000 : ハイインピーダンス('H')(点灯) %001 : 16384Hz(点滅) %010 : 1024Hz( 〃 ) %011 : 128Hz( 〃 ) %100 : 16Hz( 〃 ) %101 : 1Hz( 〃 ) %110 : 1/60Hz( 〃 ) %111 : 'L' レベル固定(消灯) ※%101 : 立ち上がりで秒カウンタが進む %110 : 〃 分〃 RTC アジャストレジスタ($e8a003,BANK 1): bit 7 1 0 ┌─────────────┬─┐ │ │ │ └─────────────┴─┘ Adjust bit 0 Adjust 秒カウンタアジャスト %0 : アジャスト OFF %1 : アジャスト ON ※アジャストした場合、カウンタは 0 に戻るが、秒が 30 以上の場合は次の 分へ進む. RTC 12/24 時間セレクタ($e8a015,BANK 1): bit 7 1 0 ┌─────────────┬─┐ │ │ │ └─────────────┴─┘ 12/24 bit 0 12/24 12 時間計/24 時間計選択 %0 : 12 時間計 %1 : 24 〃 ※12 時間計の場合、10 時間レジスタのビット 1 が午前/午後を表わす. %0 : 午前 %1 : 午後 RTC 閏年カウンタ($e8a017,BANK 1): bit 7 2 1 0 ┌───────────┬───┐ │ │ Leap │ └───────────┴───┘ bit 1~0 閏年から経過した年数 %00 : 今年が閏年 %01 : 三年後が閏年 %10 : 二年〃 %11 : 来年が閏年 ※西暦を 4 で割った余りを設定すればよい. RTC MODE レジスタ($e8a01b): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │ │ │ │ │ └───────┴─┴─┴─┴─┘ │ │ └ BANK 1/0 │ └ アラーム EN └─── タイマ EN bit 3 タイマ EN タイマ動作許可/禁止 %0 : タイマ動作禁止(秒以降のカウンタは停止) %1 : 〃 許可(通常動作) bit 2 アラーム EN アラーム動作許可/禁止 %0 : アラーム動作禁止 %1 : 〃 許可 bit 0 BANK 1/0 レジスタバンク選択 %0 : BANK 0 %1 : BANK 1 RTC TEST レジスタ($e8a01d): bit 7 4 3 2 1 0 ┌───────┬───────┐ │ │ │ │ │ │ └───────┴───────┘ TEST3~TEST0 ※通常は全て %0 を設定すること. RTC RESET コントローラ($e8a01f): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │ │ │ │ │ └───────┴─┴─┴─┴─┘ │ │ │ └ アラーム RESET │ │ └─── タイマ RESET │ └ 16Hz ON └── 1Hz ON bit 3 1Hz ON Alarm 端子からの 1Hz パルス出力制御 %0 : 出力 ON %1 : 〃 OFF bit 2 16Hz ON Alarm 端子からの 16Hz パルス出力制御 %0 : 出力 ON %1 : 〃 OFF bit 1 タイマ RESET 秒未満の桁のカウンタのリセット/解除 %0 : 通常動作 %1 : カウンタリセット bit 0 アラーム RESET %0 : アラームリセット解除 %1 : 〃 する ============================================================================== ・プリンタ address size R/W $e8c001 1.b W プリンタデータ $e8c003 1.b W プリンタストローブ プリンタデータ($e8c001): プリンタに出力するデータを書き込む. プリンタストローブ($e8c003): bit 7 1 0 ┌─────────────┬─┐ │ │ │ └─────────────┴─┘ STR0 bit 0 STR0 STROBE 信号 %0 : STROBE 信号を Low レベルにする %1 : 〃 High 〃 ============================================================================== ・システムポート address size R/W $e8e001 1.b R/W #1 コンピュータ画面コントラスト $e8e003 1.b R/W #2 ディスプレイ/3D スコープ制御 $e8e005 1.b W #3 カラーイメージユニット制御 $e8e007 1.b R/W #4 キーボード/NMI/ドットクロック制御 $e8e009 1.b W #5 ROM/DRAM ウェイト数制御 $e8e00b 1.b R #6 MPU 種別/動作クロック読み出し $e8e00d 1.b W #7 SRAM 書き込み制御 $e8e00f 1.b W #8 本体電源 OFF 制御 System Port #1($e8e001): bit 7 4 3 0 ┌───────┬───────┐ │ │ CONTRAST │ └───────┴───────┘ bit 3~0 CONTRAST コンピュータ画面コントラスト %0000 : 最も暗い … %1111 : 最も明るい System Port #2($e8e003): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │ │ │ │ │ └───────┴─┴─┴─┴─┘ │ │ └ 3D-R TV CTRL └── 3D-L bit 3 TV CTRL (書き込み時) %0 : ディスプレイ制御信号を 0 にする %1 : 〃 1 〃 (読み込み時) %0 : ディスプレイの電源は ON %1 : 〃 OFF bit 1 3D-L %0 : 3D スコープ左シャッター CLOSE %1 : 〃 OPEN bit 0 3D-R %0 : 3D スコープ右シャッター CLOSE %1 : 〃 OPEN System Port #3($e8e005): bit 7 5 4 0 ┌─────┬─────────┐ │ │ │ └─────┴─────────┘ カラーイメージユニット制御 bit 4~0 カラーイメージユニット制御 書き込んだ値は、そのまま IMAGE IN 端子の 17~21 ピンに 出力される. System Port #4($e8e007): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │ │ │ │ │ └───────┴─┴─┴─┴─┘ │ │ └ HRL │ └ NMI RESET └ KEY CTRL bit 3 KEY CTRL (書き込み時) %0 : キーデータ送信不可 %1 : 〃 可 (読み込み時) %0 : キーボードコネクタが抜かれている %1 : 〃 差し込まれている bit 2 NMI RESET %0 : NMI リセットしない %1 : 〃 する ※NMI の処理が終了した時点で %1 を書き込む bit 1 HRL 高解像度モード時のドットクロック切り替え %0 : 分周比を 1/2、1/3、1/6 にする(通常) %1 : 〃 1/2、1/4、1/8 〃 System Port #5($e8e009): bit 7 4 3 0 ┌───────┬───────┐ │ ROM Wait │ DRAM Wait │ └───────┴───────┘ bit 7~4 ROM Wait ROM アクセス時のウェイト数 設定値 +2 のウェイトがかかる. bit 3~0 DRAM Wait DRAM アクセス時のウェイト数 設定値 +2 のウェイトがかかる. ただし、$0 の場合スタティックカラム動作中は 0 ウェイト、 ページ間を跨ぐ時は 4 ウェイト. ※X68030 で追加されたポート. ※$4(6 ウェイト)で 16MHz 相当、$a(12 ウェイト)で 10MHz 相当モード. System Port #6($e8e00b): bit 7 4 3 0 ┌───────┬───────┐ │ CPU Type │ CPU Clock │ └───────┴───────┘ bit 7~4 CPU Type %1100 : 68040 %1101 : 68030 %1110 : 68020 %1111 : 68000 bit 3~0 CPU Clock %1001 : 50MHz %1010 : 40〃 %1011 : 33〃 %1100 : 25〃 %1101 : 20〃 %1110 : 16〃 %1111 : 10〃 ※X68000 XVI で追加されたポート. それ以前の機種では $ff が読み出される. また、X68030 では 16/10MHz 相当モードであっても $dc である. System Port #7($e8e00d): bit 7 6 5 4 3 2 1 0 ┌───────────────┐ │ SRAM Write Enable Control │ └───────────────┘ bit 7~0 SRAM Write Enable Control $31 を書き込むと SRAM への書き込みが許可になり、それ以 外の値を書き込むと禁止になる. System Port #8($e8e00f): bit 7 6 5 4 3 2 1 0 ┌───────┬───────┐ │ │ │ └───────┴───────┘ Power Off Control bit 3~0 Power Off Control $00、$0f、$0f を順に書き込むと本体の電源が OFF になる. ============================================================================== ・OPM OPM(Fm Operator Type-m YM2151)のレジスタへの書き込みは、レジスタ番号設定ポー トにアクセスするレジスタ番号を設定してからデータポートにデータを書き込む手順で 行う. レジスタからの読み込むは出来ず、常にステータスレジスタが読み出される. address size R/W $e90001 1.b W レジスタ番号設定ポート $e90003 1.b R ステータスレジスタ 〃 〃 W データポート レジスタ番号設定ポート($e90001): bit 7 0 ┌───────────────┐ │ レジスタ番号 │ └───────────────┘ 次に書き込むレジスタ番号を設定する. データポート($e90003): bit 7 0 ┌───────────────┐ │ データ │ └───────────────┘ レジスタへ書き込む値を設定する. ステータスレジスタ($e90003): bit 7 6 2 1 0 ┌─┬─────────┬─┬─┐ │ B│ │ │ │ └─┴─────────┴─┴─┘ │ └ 1ST(B) └── 1ST(A) bit 7 B 書き込み BUSY フラグ %0 : 通常動作 (次のデータは書き込み可 ) %1 : データ書き込み中(〃 不可) bit 1 1ST(A) %0 : タイマ A はオーバーフローしていない %1 : 〃 オーバーフロー発生 bit 0 1ST(B) %0 : タイマ B はオーバーフローしていない %1 : 〃 オーバーフロー発生 OPM レジスタ一覧 num $00 --- $01 テストレジスタ $02~$07 --- $08 KON レジスタ $09~$0e --- $0f ノイズジェネレータ制御レジスタ $10 タイマ A 設定レジスタ(上位) $11 〃 (下位) $12 タイマ B 設定レジスタ $13 --- $14 タイマ制御レジスタ $15~$17 --- $18 LFO 周波数設定レジスタ $19 PMD/AMD 設定レジスタ $1a --- $1b 汎用出力/LFO 出力波形制御レジスタ $1c~$1f --- $20~$27 チャンネル構成/出力制御レジスタ ┐ $28~$2f KC(キーコード)レジスタ │1 チャンネルごとに設定 $30~$37 KF(キーフラクション)レジスタ │ $38~$3f PMS/AMS 設定レジスタ ┘ $40~$5f DT1/MUL 設定レジスタ ┐ $60~$7f TL(トータルレベル)設定レジスタ │ $80~$7f KS/AR 設定レジスタ │1 スロットごとに設定 $a0~$bf AMS-EN/D1R 設定レジスタ │ $c0~$df DT2/D2R 設定レジスタ │ $e0~$ff D1L/RR 設定レジスタ ┘ $01(テストレジスタ): bit 7 2 1 0 ┌───────────┬─┬─┐ │ TEST │ │ │ └───────────┴─┴─┘ └─│─┘ LFO RESET bit 7~2,0 TEST テスト用の為全て 0 にする. bit 1 LFO RESET %0 : LFO 出力をスタートさせる %1 : LFO をリセットする $08(KON レジスタ): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─────┐ │ │C2│C1│M2│M1│ CH No. │ └─┴─┴─┴─┴─┴─────┘ bit 6 C2 %0 : C2 出力 OFF %1 : 〃 ON bit 5 C1 %0 : C1 出力 OFF %1 : 〃 ON bit 4 M2 %0 : M2 出力 OFF %1 : 〃 ON bit 3 M1 %0 : M1 出力 OFF %1 : 〃 ON bit 2~0 CH No. チャンネル番号選択 %000 : チャンネル 1 … %111 : チャンネル 8 $0f(ノイズジェネレータ制御レジスタ): bit 7 6 5 4 0 ┌─┬───┬─────────┐ │NE│ │ NFRQ │ └─┴───┴─────────┘ bit 7 NE ノイズイネーブル %0 : ノイズ出力 OFF %1 : 〃 ON bit 4~0 NFRQ ノイズ周波数 4000 ノイズ周波数 Fnoise = ───── (kHz) 32×NFRQ 2^17-1 ノイズ周期 Tnoise = ──────── (Hz) Fnoise×(10^3) $10(タイマ A 設定レジスタ): bit 7 0 ┌───────────────┐ │ CLKA(上位) │ └───────────────┘ $11(タイマ A 設定レジスタ): bit 7 2 1 0 ┌───────────┬───┐ │ │ │ └───────────┴───┘ CLKA(下位) CLKA = CLKA(上位)<<2 + CLKA(下位) 64×(1024-CLKA) タイマ時間 Ta = ───────── (ms) 4000 $12(タイマ B 設定レジスタ): bit 7 0 ┌───────────────┐ │ CLKB │ └───────────────┘ 1024×(256-CLKB) タイマ時間 Tb = ───────── (ms) 4000 $14(タイマ制御レジスタ): bit 7 6 5 4 3 2 1 0 ┌─┬─┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ └─┴─┴───┴───┴───┘ │ │ │ │ │ │ └ LOAD(A) CSM │ │ │ │ └── LOAD(B) │ │ │ └ IRQEN(A) │ │ └── IRQEN(B) │ └ F-RESET(A) └── F-RESET(B) bit 7 CSM %0 : 通常動作 %1 : タイマ A のオーバーフロー時に全スロット ON bit 5 F-RESET(B) %0 : 通常動作 %1 : タイマ B オーバーフローフラグリセット bit 4 F-RESET(A) %0 : 通常動作 %1 : タイマ A オーバーフローフラグリセット bit 3 IRQEN(B) %0 : タイマ B 割り込みディセーブル %1 : 〃 イネーブル bit 2 IRQEN(A) %0 : タイマ A 割り込みディセーブル %1 : 〃 イネーブル bit 1 LOAD(B) %0 : タイマ B 動作停止 %1 : 〃 開始 bit 0 LOAD(A) %0 : タイマ A 動作停止 %1 : 〃 開始 $18(LFO 周波数設定レジスタ): bit 7 0 ┌───────────────┐ │ LFRQ │ └───────────────┘ LFO の発振周波数を設定する. $19(PMD/AMD 設定レジスタ): bit 7 6 0 ┌─┬─────────────┐ │ F│ PMD/AMD │ └─┴─────────────┘ bit 7 F 下位 7bit を PMD/AMD のどちらに設定するかの選択 %0 : AMD %1 : PMD bit 6~0 PMD/AMD LFO の出力レベル設定 $1b(汎用出力/LFO 出力波形制御レジスタ): bit 7 6 5 2 1 0 ┌─┬─┬───────┬───┐ │ │ │ │ W │ └─┴─┴───────┴───┘ CT1 CT2 bit 7 CT1 ADPCM クロック切り替え %0 : 8MHz %1 : 4〃 bit 6 CT2 FDC READY 端子制御 %0 : 通常動作 %1 : 強制的に READY 状態にする bit 1~0 W LFO 出力波形選択 %00 : 鋸波 %01 : 矩形波 %10 : 三角波 %11 : ノイズ ※OPM レジスタは読み出しが出来ないので、ADPCM/FDC/LFO のうち一部だけを 変更する場合の為に設定値が IOCS ワーク $9da.b に保存されている. 変更 しない設定はワークの値を用い、また値を変更した場合はワークも更新する こと. $20~$27(チャンネル構成/出力制御レジスタ): bit 7 6 5 3 2 0 ┌─┬─┬─────┬─────┐ │ │ │ FL │ CON │ └─┴─┴─────┴─────┘ │ └ L-CH EN └── R-CH EN bit 7 R-CH EN %0 : 右チャンネルへの出力 OFF %1 : 〃 ON bit 6 L-CH EN %0 : 左チャンネルへの出力 OFF %1 : 〃 ON bit 5~3 FL M1 スロットのフィードバック率 %000 : 0(フィードバック OFF) %001 : π/16 %010 : π/8 %011 : π/4 %100 : π/2 %101 : π %110 : 2π %111 : 4π bit 2~0 CON Connection(スロットの接続方法) %000 : M1 → C1 → M2 → C2 → OUT %001 : C1 ┐ M1 ┴→ M2 → C2 → OUT %010 : M1 ┐ C1 → M2 ┴→ C2 → OUT %011 : M2 ┐ M1 → C1 ┴→ C2 → OUT %100 : M1 → C1 ┐ M2 → C2 ┴→ OUT %101 : ┌→ C1 ┐ M1 ┼→ M2 ┼→ OUT └→ C2 ┘ %110 : M1 → C1 ┐ M2 ┼→ OUT C2 ┘ %111 : M1 ┐ C1 ┼→ OUT M2 ┤ C2 ┘ $28~$2f(KC レジスタ): bit 7 6 4 3 0 ┌─┬─────┬───────┐ │ │ OCT │ NOTE │ └─┴─────┴───────┘ bit 6~4 OCT オクターブ指定 bit 3~0 NOTE NOTE 指定 %0000 : D# %0001 : E (ミ) %0010 : F (ファ) %0100 : F# %0101 : G (ソ) %0110 : G# %1000 : A (ラ) %1001 : A# %1010 : B (シ) %1100 : C (ド) %1101 : C# %1110 : D (レ) ※X680x0 では OPM に本来のクロック 3.579545MHz ではなく、4MHz を与えて いるので、約 1 音(192.27 セント)高い音が出る. $30~$37(KF レジスタ): bit 7 2 1 0 ┌───────────┬───┐ │ KF │ │ └───────────┴───┘ bit 7~2 KF キーフラクション 1 音(100 セント)間を 1.6 セント(=100/64)単位で音程の微 調整を行う. $38~$3f(PMS/AMS 設定レジスタ): bit 7 6 4 3 2 1 0 ┌─┬─────┬───┬───┐ │ │ PMS │ │ AMS │ └─┴─────┴───┴───┘ bit 6~4 PMS LFO による周波数変調度設定 %000 : 0 セント %001 : ± 5 〃 %010 : ± 10 〃 %011 : ± 20 〃 %100 : ± 50 〃 %101 : ±100 〃 %110 : ±400 〃 %111 : ±700 〃 bit 1~0 AMS LFO による出力レベル変調度設定 %00 : 0dB %01 : 23.90625dB %10 : 47.8125 〃 %11 : 95.625 〃 ※数値はいずれも LFO の出力レベルが最大の時の値. $40~$5f(DT1/MUL 設定レジスタ): bit 7 6 4 3 0 ┌─┬─────┬───────┐ │ │ DT1 │ MUL │ └─┴─────┴───────┘ bit 6~4 DT1 KC、KF で与えた周波数をさらにずらす量の設定(微調整) bit 3~0 MUL KC、KF で与えた周波数の倍率の設定(0 なら 0.5 倍) $60~$7f(TL 設定レジスタ): bit 7 6 0 ┌─┬─────────────┐ │ │ TL │ └─┴─────────────┘ bit 6~0 TL トータルレベル 各スロットの出力レベルを 0.75dB 単位で設定する. TL = 0 の時が最も出力信号レベルが大きく、TL = $7f の時が最も 小さい. Lmax = 最大出力レベル 出力レベル L = Lmax×10^(-1.75/20×TL) $80~$7f(KS/AR 設定レジスタ): bit 7 6 5 4 0 ┌───┬─┬─────────┐ │ KS │ │ AR │ └───┴─┴─────────┘ bit 7~6 KS KC によるアタック、ファーストディケイ、セカンドディケ イ、リリース時間の変化量の設定. 各設定値のレートに対し、 int(int(KC/4)/(2^(3-KS)))を加える. bit 4~0 AR アタックレート キーオンされてから減衰量が 0dB になるまでの時間の設定. $a0~$bf(AMS-EN/D1R 設定レジスタ): bit 7 6 5 4 0 ┌─┬───┬─────────┐ │ │ │ D1R │ └─┴───┴─────────┘ AMS-EN bit 7 AMS-EN LFO による出力レベル変調 %0 : 変調をかけない %1 : 〃 かける bit 4~0 D1R ファーストディケイ時間 ファーストディケイからセカンドディケイに移るまでの時間. $c0~$df(DT2/D2R 設定レジスタ): bit 7 6 5 4 0 ┌───┬─┬─────────┐ │ DT2 │ │ D2R │ └───┴─┴─────────┘ bit 7~6 DT2 KC、KF で与えた周波数をさらにずらす量 %00 : + 0 セント(×1.00 倍) %01 : +600 〃 (×1.41 倍) %10 : +781 〃 (×1.57 倍) %11 : +950 〃 (×1.73 倍) bit 4~9 D2R セカンドディケイ時間 セカンドディケイから完全な消音までの時間. $e0~$ff(D1L/RR 設定レジスタ): bit 7 6 5 4 3 2 1 0 ┌───────┬───────┐ │ D1L │ RR │ └───────┴───────┘ bit 7~4 D1L ファーストディケイからセカンドディケイに移るときのレベ ル Ld1 を決定する. 0 ≦ D1L ≦ $e のとき、 Ld1 = -3×D1L (dB) D1L = $f のとき、 Ld1 = -3×D1L -48 (dB) bit 3~0 RR リリース時間 キーオフしてから音が消えるまでの時間. ============================================================================== ・ADPCM address size R/W $e92001 1.b R ADPCM ステータス 〃 〃 W ADPCM コマンド $e92003 1.b R/W データ入出力 $e9a005 1.b R/W ADPCM サンプルレート/出力制御 ADPCM ステータス($e92001): bit 7 6 5 0 ┌─┬─┬───────────┐ │ │ 1│ 0 │ └─┴─┴───────────┘ PLAY/REC bit 7 PLAY/REC %0 : 再生中 %1 : 録音中/スタンバイ中 ADPCM コマンド($e92001): bit 7 3 2 1 0 ┌─────────┬─┬─┬─┐ │ 0 │ │ │SP│ └─────────┴─┴─┴─┘ │ └ PLAY ST └ REC ST bit 2 REC ST %0 : 通常動作 %1 : ADPCM 録音開始 bit 1 PLAY ST %0 : 通常動作 %1 : ADPCM 再生開始 bit 0 SP %0 : 通常動作 %1 : 録音/再生動作停止 データ入出力($e92003): bit 7 4 3 0 ┌───────┬───────┐ │ Data n+1 │ Data n │ └───────┴───────┘ ADPCM データの入出力を行うレジスタ. 4 ビットのサンプリングデータを 2 個一組で入出力する. サンプリングデータは最上位ビットが符号で、残りが絶 対値となっている. ADPCM サンプルレート/出力制御($e9a005): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬───┬───┐ │ │ │ │ │ │ │ └─┴─┴─┴─┴───┴───┘ │ │ PC5 PC4 │ └ PCM PAN │ │ └ Sampling Rate │ └ IOA5 └ IOA6 bit 7 IOA6 ジョイスティック #1 トリガ B %0 : 通常動作 %1 : B ボタンが押された状態にする bit 6 IOA5 ジョイスティック #1 トリガ A %0 : 通常動作 %1 : A ボタンが押された状態にする bit 5 PC5 ジョイスティック #2 コントロール %0 : 通常動作 %1 : 操作禁止 bit 4 PC4 ジョイスティック #1 コントロール %0 : 通常動作 %1 : 操作禁止 bit 3~2 Sampling Rate ADPCM サンプリングレート切り替え 4MHz 8MHz %00 : 基本クロックの 1/1024 (3.9k 7.8k) %01 : 〃 1/768 (5.2k 10.4k) %10 : 〃 1/512 (7.8k 15.6k) %11 : (未使用) bit 1~0 PCM PAN ADPCM 出力制御 %00 : 左右とも ON %01 : 右のみ ON %10 : 左のみ ON %11 : 左右とも OFF ※基本クロックは OPM レジスタ $1b の bit 7 で選択する. ============================================================================== ・FDC address size R/W $e94001 1.b R FDC ステータスレジスタ 〃 〃 W FDC コマンドレジスタ $e94003 1.b R FDC データレジスタ 〃 〃 W FDC コマンドレジスタ $e94005 1.b R ドライブステータス 〃 〃 W ドライブオプション信号制御 $e94007 1.b W アクセスドライブセレクト等 FDC ステータスレジスタ($e94001): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ RQM DIO NDM CB D3B D2B D1B D0B bit 7 RQM Request for Master %0 : FDC のデータ転送準備が出来ていない %1 : 〃 いる bit 6 DIO Data Input/Output %0 : ホストから FDC への転送 %1 : FDC からホストへの転送 bit 5 NDM Non-DMA Mode %0 : Non-DMA モードでのデータ転送中でない %1 : 〃 である ※C-PHASE、R-PHASE では常に %0. bit 4 CB FDC Busy %0 : FDC 動作中でない %1 : FDC 動作中 ※シーク/キャリブレートの E-PHASE ではセットされない. bit 3~0 D3B~D0B FDn Busy %0 : ドライブはシーク中/シーク完了割り込み保留中でない %1 : 〃 である FDC コマンドレジスタ($e94001): 初期化等のコマンド(SET STANDBY、RESET STANDBY、SOFTWARE RESET の指定を 行うレジスタ. FDC データレジスタ($e94003): データの入出力を行うレジスタ. FDC コマンドレジスタ($e94003): 通常のコマンドの指定を行うレジスタ. IOC ドライブステータス($e94005): bit 7 6 5 0 ┌─┬─┬───────────┐ │ │ │ 0 │ └─┴─┴───────────┘ │ └ ERROR DISK └ DISK IN bit 7 DISK IN %0 : ディスク非挿入状態 %1 : 〃 挿入状態 bit 6 ERROR DISK %0 : ディスク誤挿入ではない %1 : ディスク誤挿入(bit 7 も %1 になる) IOC ドライブオプション信号制御($e94005): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ 0│ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ DRIVE #0 │ │ │ │ │ └── DRIVE #1 │ │ │ │ └──── DRIVE #2 │ │ │ └────── DRIVE #3 │ │ └ EJECT ON/OFF │ └ EJECT MASK └ LED CTRL bit 7 LED CTRL %0 : FD アクセスランプを消灯する %1 : 〃 点滅する ※メディア非挿入状態のときのみ有効. bit 6 EJECT MASK %0 : イジェクトボタン有効(イジェクトボタン上の LED が 点灯) %1 : 〃 無効(〃 消灯) bit 5 EJECT ON/OFF %0 : メディアをイジェクトしない %1 : 〃 する bit 3~0 DRIVE #3~#0 %1 → %0 の変化時、bit 7~5 で選択したオプション機能が働く. IOC アクセスドライブセレクト等($e94007): bit 7 6 5 4 3 2 1 0 ┌─┬───┬─┬───┬───┐ │ │ 0 │ │ 0 │ │ └─┴───┴─┴───┴───┘ │ │ └ ACCESS DRIVE │ └ 2HD/2DD └ MOTOR ON bit 7 MOTOR ON %0 : ドライブセレクトディセーブル/モータ OFF (アクセスランプは緑色になる) %1 : 〃 イネーブル /モータ ON (〃 赤色〃 ) bit 4 2HD/2DD %0 : 2HD ディスク %1 : 2DD/2D ディスク ※X680x0 内蔵ドライブでは 2HD のみ使用可能. bit 1~0 ACCESS DRIVE アクセスするドライブ番号を設定する. ============================================================================== ・SASI address size R/W $e96001 1.b R/W SASI データ入出力 $e96003 1.b R SASI ステータス入力 〃 〃 W SEL 信号 H $e96005 1.b W データ任意 $e96007 1.b W SEL 信号 L SASI データ入出力($e96001): データの入出力ポート. このポートにアクセスすると自動的に REQ-ACK ハ ンドシェークが行われる. SASI ステータス入力($e96003): bit 7 5 4 3 2 1 0 ┌─────┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ └─────┴─┴─┴─┴─┴─┘ MSG C/D I/O BSY REQ bit 4 MSG Message %0 : DATA ラインの内容はメッセージバイトではない %1 : 〃 である bit 3 C/D Command/Data %0 : DATA ラインの内容はデータ %1 : 〃 コマンド/ステータス bit 2 I/O Input/Output %0 : ホスト→コントローラ(Output) %1 : コントローラ→ホスト(Input) bit 1 BSY BUSY %0 : BUSY 状態ではない %1 : 〃 である bit 0 REQ Request %0 : 通常動作 %1 : コントローラがホストにデータ転送を要求している SEL 信号 H($e96003): 書き込まれたデータを SASI バスに出力し、SEL 信号を '0'(H レベル)にする. データ任意($e96005): RESET 信号を約 300μs 間 '1'(L レベル)にする. SEL 信号 H($e96007): 書き込まれたデータを SASI バスに出力し、SEL 信号を '1'(L レベル)にする. ============================================================================== ・SPC address size R/W $e96021 1.b R BDID (Bus Device ID) 〃 〃 W 〃 $e96023 1.b R/W SCTL (SPC Control) $e96025 1.b R/W SCMD (SPC Command) $e96029 1.b R INTS (Interrupt Sense) 〃 〃 W 〃 $e9602b 1.b R PSNS (Phase Sense) 〃 〃 W SDGC (SPC Diag Control) $e9602d 1.b R SSTS (SPC Status) $e9602f 1.b R SERR (SPC Error Status) $e96031 1.b R/W PCTL (Phase Control) $e96033 1.b R MBC (Modified Byte Counter) $e96035 1.b R/W DREG (Data Register) $e96037 1.b R TEMP (Temporary Register) 〃 〃 W 〃 $e96039 1.b R/W TCH (Transfer Counter High) $e9603b 1.b R/W TCM (Transfer Counter Mid) $e9603d 1.b R/W TCL (Transfer Counter Low) ※SCSI ボードの場合は $ea0001~$ea001d. BDID read($e96021): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │#7│#6│#5│#4│#3│#2│#1│#0│ └─┴─┴─┴─┴─┴─┴─┴─┘ ID 設定した ID 番号のビットが %1 になったデータが読み出される. BDID write($e96021): bit 7 6 5 4 3 2 1 0 ┌─────────┬─────┐ │ │ ID │ └─────────┴─────┘ 自分自身の ID 番号を設定する. SCTL($e96023): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ Interrupt Enable │ │ │ │ │ │ └ Reselect Enable │ │ │ │ │ └ Select Enable │ │ │ │ └ Parity Enable │ │ │ └ Arbitration Enable │ │ └ Diag Mode │ └ Control Reset └ Reset&Disable bit 7 Reset&Disable SPC 内レジスタ及び制御回路のリセット %0 : 通常動作 %1 : リセットする bit 6 Control Reset SPC のデータ転送制御回路のリセット %0 : 通常動作 %1 : リセットする bit 5 Diag Mode %0 : 通常動作 %1 : SPC を自己診断モードにする bit 4 Arbitration Enable アービトレーションフェーズの実行可否制御 %0 : アービトレーションフェーズは行わない %1 : セレクション/リセレクションフェーズの前にアービト レーションフェーズを行う bit 3 Parity Enable SCSI バスのデータラインのパリティチェック %0 : パリティチェックをしない %1 : 〃 する bit 2 Select Enable セレクションへの応答制御 %0 : セレクションフェーズに応答しない %1 : 〃 する bit 1 Reselect Enable リセレクションへの応答制御 %0 : リセレクションフェーズに応答しない %1 : 〃 する bit 0 Interrupt Enable SPC 割り込み制御 %0 : 割り込み発生禁止 %1 : 〃 許可 ※割り込み禁止状態でも、割り込み要因は INTS レジスタに 反映される. SCMD($e96025): bit 7 5 4 3 2 1 0 ┌─────┬─┬─┬─────┐ │ │ │ │ │ │ │ └─────┴─┴─┴─────┘ │ │ │ └ Transfer Modifire │ │ └ Intercept Transfer │ └ RST Out └ Command Code bit 7~5 Command Code SPC への動作指示 %000 : Bus Release %001 : Select %010 : Reset ATN %011 : Set ATN %100 : Transfer %101 : Transfer Pause %110 : Reset ACK/REQ %111 : Set ACK/REQ bit 4 RST Out SCSI バスの RST(リセット)信号制御 %0 : RTS を %0(High レベル)にする(通常動作) %1 : 〃 %1(Low 〃 )にする bit 3 Intercept Transfer マニュアル転送時のデータバッファ保持 %0 : バッファ内容は保持されない %1 : 〃 される bit 2 Program Transfer %0 : DMA で転送を行う(DREQ は出力される ) %1 : CPU 〃 (〃 されない) bit 1 (未使用) 常に %0 にする. bit 0 Termination Mode イニシエータ時: %0 : バイトカウント = 0 で転送停止 %1 : バイトカウント = 0 でも REQ に応答する ターゲット時: %0 : バイトカウント = 0 になるまで転送を続行する %1 : パリティエラー発生時に転送を停止する INTS read($e96029): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ Reset Condition │ │ │ │ │ │ └ SPC Hard Error │ │ │ │ │ └ Time Out │ │ │ │ └ Service Required │ │ │ └ Command Complete │ │ └ Disconnected │ └ Reselected └ Selected bit 7 Selected %0 : 通常動作 %1 : SCSI 上の他のデバイスからセレクションフェーズによって選択 された bit 6 Reselected %0 : 通常動作 %1 : SCSI 上の他のデバイスからリセレクションフェーズによって選 択された bit 5 Disconnected %0 : 通常動作 %1 : SCSI 上でバスフリーフェーズが検出された(SCTL bit 7=1 の時). bit 4 Command Complete %0 : 通常動作 %1 : Select コマンドや Transfer コマンドの実行が完了した bit 3 Service Required %0 : 通常動作 %1 : イニシエータとして動作中にバス上のフェーズと PCTL レジス タで指定されるフェーズが一致しないため、Transfer コマンド を実行できない(できなくなった) bit 2 Time Out %0 : 通常動作 %1 : セレクション/リセレクション実行後一定期間たっても相手から の応答がない bit 1 SPC Hard Error %0 : 通常動作 %1 : SERR レジスタに示されるエラーのうち、 ・TC Parity Error ・Short Transfer Period が検出された bit 0 Reset Condition %0 : 通常動作 %1 : SCSI バスガ Reset された INTS write($e96029): (INTS read と同様) %1 を書き込むと、INTS のそのビットの値が %0 に戻る. PSNS($e9602b): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ REQ ACK ATN SEL BSY MSG C/D I/O bit 7 REQ %0 : REQ 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 6 ACK %0 : ACK 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 5 ATN %0 : ATN 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 4 SEL %0 : SEL 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 3 BSY %0 : BSY 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 2 MSG %0 : MSG 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 1 C/D %0 : C/D 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 0 I/O %0 : I/O 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) SDGC($e9602b): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ Diag I/O │ │ │ │ │ └ Diag C/D │ │ │ │ └ Diag MSG │ │ │ └ Diag BSY │ │ └ Xfer Enable │ └ Diag ACK └ Diag REQ bit 7~6,3~0 診断モード時に SCSI バスの状態を設定する. bit 5 Xfer Enable プログラム転送時 %0 : Data Request のかわりに割り込みを発生しない %1 : 〃 する SSTS($e9602d): bit 7 6 5 4 3 2 1 0 ┌───┬─┬─┬─┬─┬───┐ │ │ │ │ │ │ │ └───┴─┴─┴─┴─┴───┘ │ │ │ │ │ │ │ └ DREG status Empty │ │ │ │ │ │ └── 〃 Full │ │ │ │ │ └ TC = 0 │ │ │ │ └ SCSI ResetIn │ │ │ └ Transfer in progress │ │ └ SPC Busy │ └ Connected TARG └── 〃 INIT bit 7~6 Connected SPC と SCSI の結合状態 %00 : 非結合中 %01 : ターゲットとして結合中 %10 : イニシエータとして結合中 %11 : (未定義) bit 5 SPC Busy %0 : コマンド実行中/実行待ち状態ではない %1 : 〃 である bit 4 Transfer in progress %0 : 通常動作 %1 : ハード転送実行中/SCSI で転送フェーズが要求されて いる bit 3 SCSI ResetIn SCSI バス上の RST 信号の状態 %0 : RST 信号は '0'(High レベル) %1 : 〃 '1'(Low 〃 ) bit 2 TC = 0 %0 : 転送バイトカウンタの内容がゼロではない %1 : 〃 である bit 1~0 DREG status 内部データバッファレジスタの状態 %00 : 1~7 バイトのデータがある %01 : バッファは空 %10 : 8 バイトのデータがある %11 : (未使用) SERR($e9602f): bit 7 6 5 4 3 2 1 0 ┌───┬─┬─┬─┬─┬─┬─┐ │ │ │ 0│ │ 0│ │ 0│ └───┴─┴─┴─┴─┴─┴─┘ │ │ │ │ └ Short Transfer Period │ │ │ └ TC Parity Error │ │ └ Xfer Out │ └ Data Error SPC └── 〃 SCSI bit 7~6 Data Error %00 : パリティエラーは検出されなかった %01 : アウトプット動作時、SCSI バスに出力しようとした データにパリティエラーを検出した %10 : (未定義) %11 : インプット動作時、SCSI バスに出力しようとしたデ ータにパリティエラーを検出した bit 5 Xfer Out %0 : 通常動作 %1 : Data Request 中(SDGC bit 5=1 の時に使用) bit 3 TC Parity Error %0 : 正常 %1 : 転送バイトカウンタの減算動作でパリティエラーが発 生した bit 1 Short Transfer Period %0 : 正常 %1 : REQ、または ACK 信号が SPC が追従できないほど速い 周期で入力された PCTL($e96031): bit 7 6 3 2 1 0 ┌─┬───────┬─────┐ │ │ 0 │ │ └─┴───────┴─────┘ │ │ │ └ Transfer Phase MSG Busfree INT Enable │ └── 〃 C/D └──── 〃 I/O bit 7 Busfree INT Enable %0 : 通常動作 %1 : バスフリーフェーズを検出すると Disconnected 割り込みを発 生する ※Select コマンド発行時や Disconnected 割り込みをリセットする 時は %0 にしておくこと. bit 2~0 Transfer Phase ターゲット 動作時:SCSI で実行するフェーズを指定 イニシエータ動作時:実行予定のフェーズを指定 %000 : データアウトフェーズ %001 : データイン〃 %010 : コマンド〃 %011 : ステータス〃 %100 : (未使用) %101 : (未使用) %110 : メッセージアウト〃 %111 : メッセージイン〃 MBC($e96033): bit 7 4 3 0 ┌───────┬───────┐ │ 0 │ MBC │ └───────┴───────┘ bit 3~0 MBC SPC 内部のバッファと CPU とのデータ転送数を制御するレジスタ. 初期値は TCL レジスタの下位 4 ビットが設定される. DREG($e96035): bit 7 0 ┌───────────────┐ │ Data │ └───────────────┘ データ入出力を行うレジスタ. 8 バイトの FIFO バッファとなっている. TEMP($e96037): bit 7 0 ┌───────────────┐ │ Temporary Data │ └───────────────┘ マニュアル転送モードのときに SCSI とのデータ転送に使用するレジスタ. また、アービトレーション/セレクションで出力する ID 設定用としても使用 される. TCH($e96039): bit 7 0 ┌───────────────┐ │ Transfer Counter(上位) │ └───────────────┘ TCH/TCM/TCL を合せて、3 バイト(24 ビット)の転送バイト数カウンタとし て使用される. ハード転送時に SCSI 上で 1 バイトの転送が行われるごとに デクリメントされ、残りバイト数を保持する. また、セレクションフェーズで のタイムアウト時間設定用としても使用される. TCM($e9603b): bit 7 0 ┌───────────────┐ │ Transfer Counter(中位) │ └───────────────┘ TCL($e9603d): bit 7 0 ┌───────────────┐ │ Transfer Counter(下位) │ └───────────────┘ ============================================================================== ・SCC SCC(シリアルコミュニケーションコントローラ Z8530)のレジスタへのアクセスは、 コマンドポートにこれからアクセスするレジスタ番号を書き込み、次にコマンドポート へ値を書き込むか読み込めばよい. レジスタ番号を設定していない時は WR0/RR0 にア クセスされる. レジスタ番号を設定後、一度アクセスするとレジスタの指定が解除され 次回指定しなければ WR0/RR0 へのアクセスに戻る. address size $e98001 1.b チャンネル B コマンドポート $e98003 1.b 〃 データポート $e98005 1.b チャンネル A コマンドポート $e98007 1.b 〃 データポート WR0 CRC 初期化/SCC 初期化/アクセスレジスタ選択 WR1 送受信割り込み設定 WR2 割り込みベクタ設定 WR3 受信動作パラメータ設定 WR4 送受信動作関係のパラメータ設定 WR5 送信動作パラメータ設定 WR6 同期キャラクタ/SDLC アドレス設定 WR7 〃 /SDLC フラグ設定 WR8 送信バッファ($e98003/$e98007 と同一) WR9 割り込み発生制御/SCC リセット(チャンネル A/B で共通) WR10 トランスミッタ/レシーバ制御 WR11 クロックモード制御 WR12 ボーレートジェネレータ(下位) WR13 〃 (上位) WR14 DPLL 動作モード設定 WR15 外部/ステータス割り込み発生許可/禁止制御 RR0 送受信バッファ/制御端子ステータス RR1 スペシャル Rx コンディションステータス/端数コード読み出し RR2 割り込みベクタ RR3 ペンディングされている割り込み要因(チャンネル A にのみ存在) RR8 受信バッファ($e98003/$e98007 と同一) RR10 FM モードでの Missing Clock/SDLC での動作ステータス RR12 WR12 設定値 RR13 WR13 〃 RR15 WR15 〃 WR0: bit 7 6 5 3 2 0 ┌───┬─────┬─────┐ │ │ │ │ └───┴─────┴─────┘ │ │ └ Register Select │ └ Command Code └ CRC Reset Command bit 7~6 CRC Reset Command %00 : ヌルコード(何もしない) %01 : 受信 CRC チェッカリセット %10 : 送信 CRC ジェネレータリセット %11 : 送信アンダーラン/EOM ラッチリセット bit 5~3 Command Code SCC 動作コマンド %000 : ヌルコード(何もしない) %001 : 上位レジスタ(WR8/RR8~15)選択 %010 : 外部ステータス変化割り込みリセット %011 : アボート送出 %100 : 次の受信割り込みイネーブル %101 : 送信割り込みペンディングビットリセット %110 : エラーリセット %111 : 最上位 IUS リセット bit 2~0 Register Select 次にアクセスするレジスタ番号を設定する. WR1: bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬───┬─┬─┬─┐ │ │ │ │ │ │ │ │ └─┴─┴─┴───┴─┴─┴─┘ │ │ │ │ │ │ └ E/S INT Enable │ │ │ │ │ └ Tx INT Enable │ │ │ │ └ Parity is Spec. Condition │ │ │ └ Rx INT Mode │ │ └ Wait/DREQ on Rx/Tx │ └ Wait/DREQ Function └ Wait/DREQ Enable bit 7 Wait/DREQ Enable %0 : W/REQ 機能ディセーブル %1 : 〃 イネーブル ※X680x0 では %0 に設定する. bit 6 Wait/DREQ Function %0 : W/REQ 端子は Wait 信号として動作する %1 : 〃 DMA 要求信号として動作する bit 5 Wait/DREQ on Rx/Tx %0 : 送信動作で W/REQ 信号を使う %1 : 受信〃 bit 4~3 Rx INT Mode 受信割り込みモード %00 : 受信割り込み禁止 %01 : 最初のキャラクタのみ割り込み発生 %10 : 全ての受信キャラクタで割り込み発生 %11 : スペシャル Rx コンディション時のみ割り込み発生 ※%01、%10 はスペシャル Rx コンディション割り込みも可. bit 2 Parity is Spec. Condition パリティエラー %0 : スペシャル Rx コンディションにしない %1 : 〃 する bit 1 Tx INT Enable %0 : 送信割り込み禁止 %1 : 〃 許可 bit 0 E/S INT Enable %0 : 外部ステータス割り込み禁止 %1 : 〃 許可 WR2: bit 7 0 ┌───────────────┐ │ Vector Number │ └───────────────┘ 割り込み発生時に使用するベクタ番号を設定する. WR9 VIS が %1 の時、設 定した値のビット 4~6 又は 3~1 を割り込み要因によって変化させる. WR3: bit 7 6 5 4 3 2 1 0 ┌───┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ └───┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ Rx Enable │ │ │ │ │ └ SYNC Char. Load INH │ │ │ │ └ Address Search Mode │ │ │ └ Rx CRC Enable │ │ └ Enter Hunt Mode │ └ Auto Enable └ Rx bit/char. bit 7~6 Rx bit/char. 受信キャラクタのビット長を指定する. %00 : 5 ビット/キャラクタ %01 : 7 〃 %10 : 6 〃 %11 : 8 〃 bit 5 Auto Enable %0 : 通常モード ___ ___ %1 : オートモード(DCD = 'L' で受信可、CTS = 'L' で送信 可となる) bit 4 Enter Hunt Mode %0 : 同期が確率した %1 : 同期確率モードとなる(同期キャラクタ/フラグと一致 するキャラクタが入力されるまで待つ) bit 3 Rx CRC Enable %0 : 受信キャラクタの CRC 計算を行わない %1 : 〃 行う bit 2 Address Search Mode SDLC モード時: %0 : 通常動作 %1 : WR6 に書き込んだアドレスと一致しないメッセージを 無視する bit 1 SYNC Char. Load INH SDLC モード時: %0 : 通常動作 %1 : アドレスの上位 4 ビットだけを比較する SDLC モード以外の同期モード時: %0 : 通常動作 %1 : WR6 と一致するキャラクタは受信しない bit 0 Rx Enable %0 : 受信動作禁止 %1 : 〃 許可 WR4: bit 7 6 5 4 3 2 1 0 ┌───┬───┬───┬─┬─┐ │ │ │ │ │ │ └───┴───┴───┴─┴─┘ │ │ │ │ └ Parity Enable │ │ │ └ Parity Even/Odd │ │ └ STOP Bit │ └ SYNC Mode └ Clock Mode bit 7~6 Clock Mode %00 : × 1 クロックモード %01 : ×16 〃 %10 : ×32 〃 %11 : ×64 〃 bit 5~4 SYNC Mode %00 : 8 ビット同期キャラクタ(Monosync) %01 : 16 〃 (Bisync) %10 : SDLC モード('01111110' がフラグ) %11 : 外部同期モード(External Sync、X680x0 では使用不可) ※STOP Bit = %00 の時のみ有効. bit 3~2 STOP Bit %00 : ストップビット なし(同期モード) %01 : 〃 1 ビット(非同期モード) %10 : 〃 1.5 〃 (〃 ) %11 : 〃 2 〃 (〃 ) bit 1 Parity Even/Odd %0 : 奇数 %1 : 偶数 bit 0 Parity Enable %0 : パリティなし %1 : 〃 あり ※X680x0 ではチャンネル B はマウスとの通信に使用されているため、非同期 1/16 クロックモード、データ長 8 ビット、ストップビット 2、パリティ無 しで 4800bps の設定にしなければならない. WR5: bit 7 6 5 4 3 2 1 0 ┌─┬───┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ └─┴───┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ Tx CRC Enable │ │ │ │ │ └ RTS │ │ │ │ └ SDLC/CRC-16 │ │ │ └ Tx Enable │ │ └ Send Break │ └ Tx Bit/char. └ DTR bit 7 DTR %0 : DTR 信号を 'H' にする %1 : 〃 'L' 〃 bit 6~5 Tx Bit/char. 送信キャラクタのビット長を指定する. %00 : 5 ビット/キャラクタ %01 : 7 〃 %10 : 6 〃 %11 : 8 〃 bit 4 Send Break %0 : 通常動作 %1 : ブレークを送出する(TxD を '0' のままにする) bit 3 Tx Enable %0 : 送信動作禁止 %1 : 〃 許可 bit 2 SDLC/CRC-16 使用する CRC 生成多項式を選択する %0 : CRC-CCITT %1 : CRC-16 ※SDLC 使用時は %0 にすること. bit 1 RTS ___ %0 : RTS 端子を 'H' にする %1 : 〃 'L' 〃 bit 0 Tx CRC Enable %0 : 送信キャラクタの CRC 計算を行わない %1 : 〃 行う WR6: bit 7 0 ┌───────────────┐ │ SYHC Char./Address │ └───────────────┘ Monosync モード時 : 同期キャラクタを設定する. Bisync モード時 : 同期キャラクタの下位バイトを設定する. SDLC モード時 : 自局のアドレスを設定する. WR7: bit 7 0 ┌───────────────┐ │ SYHC Char. │ └───────────────┘ Monosync モード時 : 同期キャラクタを設定する. Bisync モード時 : 同期キャラクタの上位バイトを設定する. SDLC モード時 : フラグキャラクタ('01111110')を設定する. WR8: bit 7 0 ┌───────────────┐ │ 送信バッファ │ └───────────────┘ $e98003(チャンネル B)/$e98007(チャンネル A)と同一. WR9: bit 7 6 5 4 3 2 1 0 ┌───┬─┬─┬─┬─┬─┬─┐ │ │ 0│ │ │ │ │ │ └───┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ VIS │ │ │ │ └ NV │ │ │ └ DLC │ │ └ MIE │ └ Status High/Status Low └ Reset Command bit 7~6 Reset Command %00 : リセットしない %01 : チャンネルリセット B %10 : チャンネルリセット A %11 : 強制ハードウェアリセット bit 4 Status High/Status Low 割り込み要因によって変化させるベクタのビット位置 %0 : bit 3~1 %1 : bit 4~6 bit 3 MIE %0 : SCC の割り込み発生禁止 %1 : 〃 許可 bit 2 DLC %0 : 下位チェーン禁止 %1 : 〃 許可 bit 1 NV %0 : 割り込み応答時、ベクタを出力する %1 : 〃 しない bit 0 VIS %0 : ベクタ番号は固定 %1 : 割り込み要因によってベクタを変化させる WR10: bit 7 6 5 4 3 2 1 0 ┌─┬───┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ └─┴───┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ └ 6bit/8bit Sync │ │ │ │ │ └ Loop Mode │ │ │ │ └ Abort/Flag on Underrun │ │ │ └ Mark/Flag Idle │ │ └ Go Active on Poll │ └ Data Encording └ CRC Preset 1/0 bit 7 CRC Preset 1/0 %0 : CRC ジェネレータ、CRC チェッカの初期値は All'0' %1 : 〃 '1' bit 6~5 Data Encording TxD の変調モード %00 : NRZ %01 : NRZI %10 : FM(遷移'1') %11 : FM(遷移'0') bit 4 Go Active on Poll SDLC のループモード時 %0 : フラグ送信終了後、1 ビット遅延モードになる %1 : フラグ送信後、フラグがデータを送信する bit 3 Mark/Flag Idle SDLC モード時 %0 : アイドル時、フラグ(フラグアイドル)を送信する %1 : 〃 TxD を '1'(マーク状態)にする bit 2 Abort/Flag on Underrun SDLC モード時 %0 : 送信アンダーラン発生時、CRC を送る %1 : 〃 アボートとフラグを送る bit 1 Loop Mode SDLC モード、同期モード時 %0 : 通常動作 %1 : ループモード(TxD と RxD を内部的に結線する)にする bit 0 6bit/8bit Sync Monosync モード時: %0 : 同期キャラクタは 8bit %1 : 〃 6bit Bisync モード時: %0 : 受信同期キャラクタは 16bit %1 : 〃 12bit WR11: bit 7 6 5 4 3 2 1 0 ┌─┬───┬───┬─┬───┐ │ │ │ │ │ │ └─┴───┴───┴─┴───┘ │ │ │ │ └ TRxC Output │ │ │ └ TRxc Out/In │ │ └ Transmit Clock │ └ Receive Clock └ RTxC XTAL/NO XTAL bit 7 RTxC XTAL/NO XTAL ____ %0 : RTxC はクロック入力端子となる ____ ____ %1 : RTxC と SYNC 端子で水晶発振回路を構成する ※X680x0 では %0 に設定する. bit 6~5 Receive Clock 受信クロック選択 ____ %00 : RTxC 端子と同一 ____ %01 : TRxC 端子と同一 %10 : ボーレートジェネレータ出力 %11 : DPLL 出力 bit 4~3 Transmit Clock 送信クロック選択(Receive Clock と同様) bit 2 TRxc Out/In ____ %0 : TRxC 端子は入力端子 %1 : 〃 出力端子 bit 1~0 TRxC Output ____ TRxC 端子から出力される信号源 %00 : 水晶発振回路出力 %01 : 送信クロック %10 : ボーレートジェネレータ出力 %11 : DPLL 出力 WR12: bit 7 0 ┌───────────────┐ │ TC(下位) │ └───────────────┘ ボーレートジェネレータの出力周波数を指定する. ボーレートジェネレータへの入力クロック周波数 出力周波数 = ─────────────────────── 2×(TC+2) ※X680x0 の場合、出力周波数(bps) = 156250/(TC+2) ※TC を変更する場合はボーレートジェネレータの動作を停止しておくこと. WR13: bit 7 0 ┌───────────────┐ │ TC(上位) │ └───────────────┘ WR14: bit 7 5 4 3 2 1 0 ┌─────┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ └─────┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ BRG Enable │ │ │ │ └ BRG Source │ │ │ └ DTR/REQ Function │ │ └ Auto Echo │ └ Local Loopback └ DPLL Command bit 7~5 DPLL Command DPLL 動作モード選択 %000 : Null Command %001 : Enter Search Mode %010 : Reset Missing Clock %011 : Disable DPLL %100 : Set Source = BRG %101 : Set Source = RTxC %110 : Set FM Mode %111 : Set NRZI Mode bit 4 Local Loopback %0 : 通常動作 %1 : RxD は外部と切り離され、TxD と内部接続される bit 3 Auto Echo %0 : 通常動作 %1 : TxD は外部と切り離され、RxD と内部接続される bit 2 DTR/REQ Function %0 : DTR 端子は WR5 の DTR ビットで制御される %1 : 送信バッファ空/同期モードで CRC 送出時 DTR = 'L' bit 1 BRG Source ボーレートジェネレータのクロック選択源 %0 : RTxC 端子と同一(外部供給) %1 : SCC の PCLK(X680x0 では 5MHz) bit 0 BRG Enable %0 : ボーレートジェネレータ停止 %1 : 〃 動作 WR15: bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ 0│ │ 0│ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ Zero Count IE │ │ │ │ └ DCD IE │ │ │ └ Sync/Hunt IE │ │ └ CTS IE │ └ Tx Underrun/EOM IE └ Break/Abort IE bit 7 Break/Abort IE %0 : ブレーク/アボート状態検出で割り込みを発生しない %1 : 〃 する bit 6 Tx Underrun/EOM IE %0 : 送信アンダーラン/送信終了で割り込みを発生しない %1 : 〃 する bit 5 CTS IE ___ %0 : CTS 端子の変化で割り込みを発生しない %1 : 〃 する bit 4 Sync/Hunt IE 非同期モード時: ____ %0 : SYNC 端子の変化で割り込みを発生しない %1 : 〃 する 同期モード/SDLC モード時: %0 : 同期の確立/喪失の変化で割り込みを発生しない %1 : 〃 する bit 3 DCD IE ___ %0 : DCD 端子の状態変化で割り込みを発生しない %1 : 〃 する bit 1 Zero Count IE %0 : ゼロカウント割り込みは発生しない %1 : ボーレートジェネレータのカウント値 =0 で外部ステータス割 り込み発生 RR0: bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ Rx character Available │ │ │ │ │ │ └ Zero Count │ │ │ │ │ └ Tx buffer Empty │ │ │ │ └ DCD │ │ │ └ SYNC/Hunt │ │ └ CTS │ └ Tx Underrun/EOM └ Break/Abort bit 7 Break/Abort 非同期モード時: %0 : ブレーク状態から回復した/通常動作 %1 : 〃 を検出した SDLC モード時: %0 : アボートシーケンスが終了した/通常動作 %1 : アボートシーケンス(7 個以上 '1' が連続する)を 検出した bit 6 Tx Underrun/EOM %0 : 通常動作 %1 : 送信アンダーラン(バッファ内のキャラクタを全て送信 したが、新しいキャラクタの書き込みが行われなかっ た)、または送信終了 bit 5 CTS CTS 端子の状態を示す ___ %0 : CTS 端子は 'H' レベル(送信禁止状態) %1 : 〃 'L' 〃 (〃 許可〃 ) bit 4 SYNC/Hunt 非同期モード時: ____ %0 : SYNC 端子は 'H' レベル %1 : 〃 'L' 〃 同期モード/SDLC モード時: %0 : 同期が確立した %1 : 同期は確立していない(Hunt モード) bit 3 DCD DCD 端子の状態を示す ___ %0 : DCD 端子は 'H' レベル(キャリア検出していない) %1 : 〃 'L' 〃 (〃 検出した ) bit 2 Tx buffer Empty %0 : 送信バッファにキャラクタがある %1 : 〃 が空になった bit 1 Zero Count %0 : 通常動作 %1 : ボーレートジェネレータのカウント値が 0 になった ※WR15 の bit 1 = %1 の時のみ有効. bit 0 Rx character Available 受信バッファにキャラクタ(データ)が入っているかを示す %0 : バッファは空 %1 : キャラクタがある RR1: bit 7 6 5 4 3 1 0 ┌─┬─┬─┬─┬─────┬─┐ │ │ │ │ │ │ │ └─┴─┴─┴─┴─────┴─┘ │ │ │ │ │ └ All Sent │ │ │ │ └ Residue Code 0~2 │ │ │ └ Parity Error │ │ └ Rx Overrun Error │ └ CRC/Framing Error └ End-of-Frame bit 7 End-of-Frame SDLC モード時 %0 : 通常動作 %1 : 正常な終了フラグを受け取った/ CRC エラービットと端数ビットが確定した bit 6 CRC/Framing Error 非同期モード時: %0 : 正常動作 %1 : フレーミングエラー(ストップビットが見つからない) を検出した 同期モード/SDLC モード時: %0 : 正常動作 %1 : CRC エラーを検出した bit 5 Rx Overrun Error %0 : 正常動作 %1 : 受信バッファがオーバーフローした bit 4 Parity Error %0 : 正常動作 %1 : 受信データ中にパリティエラーを検出した bit 3~1 Residue Code 0~2 SDLC モード時、最後に受信したキャラクタの有効ビット数 を示す. %111 : 1 ビット %000 : 2 〃 %100 : 3 〃 %010 : 4 〃 %110 : 5 〃 %001 : 6 〃 %101 : 7 〃 %011 : 8 〃 bit 0 All Sent 非同期モード時 %0 : キャラクタ送出中 %1 : キャラクタの送出が完了した RR2(チャンネル A): bit 7 0 ┌───────────────┐ │ Vector Number │ └───────────────┘ WR2 への設定値がそのまま読み出せる. RR2(チャンネル B): bit 7 4 3 1 0 ┌───────┬─────┬─┐ │ │ │ │ └───────┴─────┴─┘ ├───────│───┘ 設定したベクタ番号 割り込み要因 bit 7~4,0 設定したベクタ番号 bit 3~1 割り込み要因 %000 : チャンネル B 送信バッファ空 %001 : 〃 外部ステータス変化 %010 : 〃 受信キャラクタ有効 %011 : 〃 スペシャル Rx コンディション %100 : チャンネル B 送信バッファ空 %101 : 〃 外部ステータス変化 %110 : 〃 受信キャラクタ有効 %111 : 〃 スペシャル Rx コンディション ※WR9 VIS が %1 の時は bit 3~1 ではなく bit 4~6 が変化する. RR3: bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ 0│ 0│ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ ChannelB EXT/STAT IP │ │ │ │ └── ChannelB Tx IP │ │ │ └──── ChannelB Rx IP │ │ └ ChannelA EXT/STAT IP │ └── ChannelA Tx IP └──── ChannelA Rx IP 割り込みがペンディング中に %1 になる. bit 5 ChannelA Rx IP チャンネル A 受信割り込み bit 4 ChannelA Tx IP チャンネル A 送信割り込み bit 3 ChannelA EXT/STAT IP チャンネル A 外部ステータス変化割り込み bit 2 ChannelB Rx IP チャンネル B 受信割り込み bit 1 ChannelB Tx IP チャンネル B 送信割り込み bit 0 ChannelB EXT/STAT IP チャンネル B 外部ステータス変化割り込み RR8: bit 7 0 ┌───────────────┐ │ 受信バッファ │ └───────────────┘ $e98003(チャンネル B)/$e98007(チャンネル A)と同一. RR10: bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬───┬─┬─┐ │ │ │ 0│ │ 0 │ │ 0│ └─┴─┴─┴─┴───┴─┴─┘ │ │ │ └ On Loop │ │ └ Loop Sending │ └ Two Clocks Missing └── One Clock Missing bit 7 One Clock Missing %0 : その他の状態 %1 : FM モード時、RxD で '1' がある筈の期間中にクロッ クエッジが見つからなかった bit 6 Two Clocks Missing %0 : その他の状態 %1 : FM モード時、連続二回の試みでクロックエッジが見つ からなかった bit 4 Loop Sending SDLC モード時 %0 : それ以外の状態 %1 : ループモードで、SCC がループ上に送信動作をしてい る bit 1 On Loop SDLC モード時: %0 : それ以外の状態 %1 : ループモードで、SCC が実際にオンループにある Monosync 時: %0 : それ以外の状態 %1 : ループモードで、トランスミッタがアクティブである RR12: (WR12 と同様) WR12 設定値がそのまま読み出される. RR13: (WR13 と同様) WR13 設定値がそのまま読み出される. RR15: (WR15 と同様) WR15 設定値がそのまま読み出される. ============================================================================== ・ジョイスティックインターフェース address size R/W $e9a001 1.b R 8255 ポート A(ジョイスティック #1) $e9a003 1.b R 8255 ポート B(ジョイスティック #2) $e9a005 1.b R/W 8255 ポート C(ジョイスティックコントロール) $e9a007 1.b W 8255 コントロールワード(動作モード/ビット操作) ジョイスティック #1($e9a001): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ FORWARD │ │ │ │ └ BACK │ │ │ └ LEFT │ │ └ RIGHT │ └ TRG A └ TRG B bit 6 TRG B %0 : トリガ B ボタンは押されている %1 : 〃 押されていない bit 5 TRG A %0 : トリガ A ボタンは押されている %1 : 〃 押されていない bit 3 RIGHT %0 : 右スイッチは押されている %1 : 〃 押されていない bit 2 LEFT %0 : 左スイッチは押されている %1 : 〃 押されていない bit 1 BACK %0 : 下スイッチは押されている %1 : 〃 押されていない bit 0 FORWARD %0 : 上スイッチは押されている %1 : 〃 押されていない ジョイスティック #2($e9a003): (ジョイスティック #1 と同様) ジョイスティックコントロール($e9a005): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬───┬───┐ │ │ │ │ │ │ │ └─┴─┴─┴─┴───┴───┘ │ │ │ │ │ └ PCM PAN │ │ │ │ └ Sampling Rate │ │ │ └ IOC4 │ │ └ IOC5 │ └ IOC6 └ IOC7 bit 7 IOC7 %0 : 通常動作 %1 : ジョイスティック #1 オプション機能 B 動作 bit 6 IOC6 %0 : 通常動作 %1 : ジョイスティック #1 オプション機能 A 動作 bit 5 IOC5 %0 : 通常動作 %1 : ジョイスティック #2 操作無効 bit 4 IOC4 %0 : 通常動作 %1 : ジョイスティック #1 操作無効 bit 3~2 Sampling Rate ADPCM サンプリング周波数切り替え bit 1~0 PCM PAN ADPCM 出力切り替え コントロールワード ビットセット/リセット($e9a007): bit 7 6 4 3 1 0 ┌─┬─────┬─────┬─┐ │ 0│ │ BITSEL │ │ └─┴─────┴─────┴─┘ DATA bit 3~1 BITSEL 操作するビット位置(7~0)を指定する. bit 0 DATA セットするデータを指定する. ※最上位ビットが %0 の値を書き込むと、ポート C の任意のビットを操作す る(コントロールワードのビットではない). コントロールワード モード設定($e9a007): bit 7 6 5 4 3 2 1 0 ┌─┬───┬─┬─┬─┬─┬─┐ │ 1│ │ │ │ │ │ │ └─┴───┴─┴─┴─┴─┴─┘ │ │ │ │ │ └ PORT C(Low) IN/OUT │ │ │ │ └ PORT B IN/OUT │ │ │ └ Group B Mode │ │ └ PORT C(High) IN/OUT │ └ PORT A IN/OUT └ Group A Mode bit 6~5 Group A Mode グループ A(ポート A とポート C 上位)の動作モード %00 : モード 0 %01 : 〃 1 %10 : 〃 2 %11 : 〃 2 bit 4 PORT A IN/OUT %0 : ポート A は出力 %1 : 〃 入力 bit 3 PORT C(High) IN/OUT %0 : ポート C(上位) は出力 %1 : 〃 入力 bit 2 Group B Mode グループ B(ポート B とポート C 下位)の動作モード %0 : モード 0 %1 : 〃 1 bit 1 PORT B IN/OUT %0 : ポート B は出力 %1 : 〃 入力 bit 0 PORT C(Low) IN/OUT %0 : ポート C(下位) は出力 %1 : 〃 入力 ※最上位ビットが %1 の値を書き込むと、動作モード設定を行う. ============================================================================== ・I/O コントローラ address size R/W $e9c001 1.b R 割り込みステータス 〃 〃 W 割り込みマスク $e9c003 1.b W 割り込みベクタ IOC 割り込みステータス($e9c001): bit 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │ │ │ │ │ │ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │ │ │ │ │ │ └ PRTI EN │ │ │ │ │ │ └ FDDI EN │ │ │ │ │ └ FDCI EN │ │ │ │ └ HDDI EN │ │ │ └ HDD INT │ │ └ PRT INT │ └ FDD INT └ FDC INT bit 7 FDC INT %0 : FDC 割り込みは発生していない %1 : 〃 している bit 6 FDD INT %0 : FDD 割り込みは発生していない %1 : 〃 している bit 5 PRT INT %0 : プリンタ BUSY 信号 = High(BUSY 状態) %1 : 〃 = Low (READY 状態) bit 4 HDD INT %0 : HDD 割り込みは発生していない %1 : 〃 している bit 3 HDDI EN %0 : HDD 割り込み禁止中 %1 : 〃 許可中 bit 2 FDCI EN %0 : FDC 割り込み禁止中 %1 : 〃 許可中 bit 1 FDDI EN %0 : FDD 割り込み禁止中 %1 : 〃 許可中 bit 0 PRTI EN %0 : プリンタ割り込み禁止中 %1 : 〃 許可中 IOC 割り込みマスク($e9c001): bit 7 4 3 2 1 0 ┌───────┬─┬─┬─┬─┐ │ │ │ │ │ │ └───────┴─┴─┴─┴─┘ │ │ │ └ PRTI EN │ │ └ FDDI EN │ └ FDCI EN └ HDDI EN bit 3 HDDI EN %0 : HDD 割り込み禁止 %1 : 〃 許可 bit 2 FDCI EN %0 : FDC 割り込み禁止 %1 : 〃 許可 bit 1 FDDI EN %0 : FDD 割り込み禁止 %1 : 〃 許可 bit 0 PRTI EN %0 : プリンタ割り込み禁止 %1 : 〃 許可 IOC 割り込みベクタ($e9c003): bit 7 2 1 0 ┌───────────┬───┐ │ Vect │DEVICE│ └───────────┴───┘ bit 7~2 Vect ベクタ番号 割り込み発生時に使用するベクタ番号を設定する. 下位 2 ビットは割り込み要因によって自動的に決定される. bit 1~0 DEVICE 割り込み要因 %00 : FDC 割り込み %01 : FDD 〃 %10 : HDD 〃 %11 : プリンタ割り込み ============================================================================== ・コプロセッサ I/O address size R/W $e9e000 1.w R 応答 CIR $e9e002 1.w W コントロール CIR $e9e004 1.w R セーブ CIR $e9e006 1.w R/W リストア CIR $e9e008 1.w --- (オペレーションワード CIR) $e9e00a 1.w W コマンド CIR $e9e00c 1.w --- $e9e00e 1.w W コンディション CIR $e9e010 1.l W オペランド CIR $e9e014 1.w R レジスタ選択 CIR $e9e016 1.w --- $e9e018 1.l W 命令アドレス CIR $e9e01c 1.l --- (オペランドアドレス CIR) ※第二アドレスの場合は $e9e080~$e9e09f. 応答 CIR($e9e000): bit 15 14 13 12 8 7 0 ┌─┬─┬─┬─────────┬───────────────┐ │CA│PC│DR│ 機能 │ パラメータ │ └─┴─┴─┴─────────┴───────────────┘ bit 15 CA カムアゲイン %1 : CPU による何らかのサービス要求あり bit 14 PC プログラムカウンタ受け取り要求 %1 : 要求あり bit 13 DR データ(オペランド)の転送方向 %0 : ホスト CPU → 68881 %1 : 68881 → ホスト CPU ※機能ビットが %00100(ヌルプリミティブ)、%11100(命令前 例外取得プリミティブ)、%11101(命令中例外取得プリミテ ィブ)の時は %0. bit 12~8 機能 %00100 : ヌルプリミティブ %10xxx : 実行アドレス評価/データ転送プリミティブ %01100 : 単一メインプロセッサレジスタ転送プリミティブ %00001 : 複数コプロセッサレジスタ転送プリミティブ %11100 : 命令前例外取得プリミティブ %11101 : 命令中例外取得プリミティブ bit 7~0 パラメータ コントロール CIR($e9e002): このレジスタに書き込みが行われると、68881 は実行中の処理を直ちに中止 し、ペンディングされている例外を全てクリアした後、アイドル状態に復帰す る. セーブ CIR($e9e004): このレジスタを読み出すと、68881 は現在の処理動作を中断し、動作状態ス テータスを返す. リストア CIR($e9e006): このレジスタに書き込みが行われると、68881 は動作を中断しリストア動作 を開始する. オペレーションワード CIR($e9e008): 68881 では使用されない. コマンド CIR($e9e00a): 68881 に対して命令を書き込むレジスタ. コンディション CIR($e9e00e): 条件チェックを行う為に使用する. オペランド CIR($e9e010): データ転送に使用する. レジスタ選択 CIR($e9e014): レジスタ転送命令実行時に、68881 から CPU にレジスタマスクを渡す為に 使用される. 命令アドレス CIR($e9e018): PC を渡す為に使用する. オペランドアドレス CIR($e9e01c): 68881 では使用されない. ==============================================================================