システムI/O
標準ポート
PIA (HD46821(MC6821))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFC0 | PA7 | PA6 | x | x | PA3 | PA2 | PA1 | x | W | PIA Aポート 標準RAMバンク切り替え |
FFC1 | IRQ A2 | IRQ A1 | CA2制御 | DDR A | CA1制御 | W | ||||
FFC2 | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 | R / W | PIA Bポート プリンター出力(パラレルポート) |
FFC3 | IRQ B2 | IRQ B1 | CB2制御 | DDR B | CB1制御 | R / W |
バンク切り替えの詳細はメモリの項を参照。
ACIA (HD46850(MC6850))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFC4 | IRQ | PE | OVRN | FE | CTS | DCD | TDRE | RDRF | R | カセットインターフェース&RS-232C(排他) (切り替えはMODE-SELのビット5で行う) |
CR7 | CR6 | CR5 | CR4 | CR3 | CR2 | CR1 | CR0 | W | ||
FFC5 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R | |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | W |
CRTC (HD46505(MC6845))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFC6 | x | x | x | A4 | A3 | A2 | A1 | A0 | W | CRTCアドレスレジスタ |
FFC7 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R / W | CRTCデータレジスタ |
KBNMI
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFC8 | BK | x | x | x | x | x | x | x | R |
BK=1 のとき、BREAKキーが押されている。
DIPSWITCH
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFC9 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R |
NEWONコマンドの値と同じ。初期設定の項参照。
※マーク5では、ディップスイッチが廃止され、D0,D1が1、D3~D7が0固定となり、D2がモードスイッチの値となっている。
TIMER
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFCA | T | x | x | x | x | x | x | x | R |
T=1のとき、タイマIRQ(FIRQ)が発生した。
LPFLG
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFCB | LP | x | x | x | x | x | x | x | R |
LP=1のとき、ライトペンが反応した。(IRQ発生)
MODE-SEL
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD0 | w | HR | C | x | x | GB | RB | BB | W | 状態設定レジスタ |
W=0 のとき 40字/行、W=1のとき80字/行
HR=0のときハイレゾモード、HR=1のときノーマルモード
C=0のときACIAにカセットを選択、C=1のときRS-232Cを選択
GB,RB,BB:背景色(緑、赤、青)
TRACE
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD1 | x | x | x | x | x | x | x | x | W |
WRITE時、トレースカウンタON
(WRITEしてから16?マシンサイクル後にNMIが発生する。)
REMOTE リモートスイッチ
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD2 | RM | x | x | x | x | x | x | x | W |
RM=1のとき、リレースイッチON(カセットリモートOFF)
MUSIC-SEL
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD3 | MS | x | x | x | x | x | x | x | W |
内蔵スピーカより音発生(MSを 0 <-> 1 と切り替える。)
TIME MASK
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD4 | TM | x | x | x | x | x | x | x | W |
TM=1のとき、タイマIRQ(FIRQ)禁止。内蔵時計が停止する。
LPENBL
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD5 | LE | x | x | x | x | x | x | x | W |
LE=1のとき、ライトペン動作を許可。
INTERACE-SEL
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD6 | x | x | x | x | IS | x | x | x | W |
IS=1のとき、インターレースモードに設定。キャラクタ文字がインターレース側となる。
BAUD-SEL ボーレート切り替え
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD7 | x | x | x | x | x | x | x | SR | W |
SR=0のとき600ボー、SR=1のとき1200ボー。
C-REG-SEL カラーレジスタ
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFD8 | MK | x | IG | GC | RV | G | R | B | R / W | カラーレジスタ |
カラーレジスタに値を書き込んだあと、VRAMに書きこみを行うことでカラーRAMにレジスタの値が反映される。
VRAMから値を読み出すと、MK=0ならカラーRAMの値がカラーレジスタに反映される。
MK=0のときレジスタに書き込み可能、MK=1のとき書込み禁止
IG=0のときIG表示しない、IG=1のときIG表示を優先(D0~D4の値は無視)
GC=0のときキャラクタ表示、GC=1のときグラフィック表示
RV=0のとき通常、RV=1のとき色を反転
G,R,B:表示色(緑、赤、青)
KB
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFE0 | BM | SS | x | x | UE | SL | HR | KN | W | キーボード・モードレジスタ |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R | キーボード・マトリックス・スキャン・データ |
BM=0のときKBNMI禁止、BM=1のときKBNMI可能
SS=0のときKBIRQ禁止、SS=1のときKBIRQ可能
UE=0のときキーボードカウンタ動作、UE=1のとき動作停止
SL=0のときCAPSキーLED点灯、SL=1のとき消灯
HR=0のときひらがなLED消灯、HR=1のとき点灯
KN=0のときカタカナLED消灯、KN=1のとき点灯
詳細はキーボードの項を参照。
BANK-REG 拡張RAMバンク切り替え
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFE8 | x | D6 | D5 | D4 | D3 | D2 | D1 | D0 | W | 拡張RAMバンク切り替え |
バンク切り替えの詳細はメモリの項を参照。
IGMODREG
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFE9 | x | x | x | x | x | x | x | PM | W |
PM=1のとき、IGキャラクタ定義許可。IG RAMに書き込みが可能になる。
IGENREG
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FFEA | x | x | x | x | x | PG | PR | PB | W | IGカラープレーン選択レジスタ |
PG:IG RAM緑プレーンを選択
PR:IG RAM赤プレーンを選択
PB:IG RAM青プレーンを選択
拡張ボード関連
6重和音PSG (AY-3-8910 & MC6821(PIA))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF30 | DA7 | DA6 | DA5 | DA4 | DA3 | DA2 | DA1 | DA0 | R / W | レジスタ/データ |
FF31 | PIAレジスタ。 | |||||||||
FF32 | x | x | x | x | x | SEL | BDIR | BC1 | R / W | バスコントロール |
FF33 | PIAレジスタ。 |
BDIR = 1 かつ BC1 = 1 の時、PSGレジスタ選択
BDIR = 1 かつ BC1 = 0 の時、PSGデータ書き込み
BDIR = 0 かつ BC1 = 1 の時、PSGデータ読み出し
SEL : PSG1選択=0, PSG2選択=1
9重和音PSG (AY-3-8910 & MCS6522(VIA))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF70 | x | x | x | PSG3 | PSG2 | PSG1 | BC1 | BDIR | R / W | ORB バスコントロール |
FF71 | DA7 | DA6 | DA5 | DA4 | DA3 | DA2 | DA1 | DA0 | R / W | ORA PSGレジスタ/データ |
FF72 | DDRB | |||||||||
FF73 | DDRA | |||||||||
FF74 | T1L-L / T1C-L | |||||||||
FF75 | T1C-H | |||||||||
FF76 | T1L-L | |||||||||
FF77 | T1L-H | |||||||||
FF78 | T2L-L / T2C-L | |||||||||
FF79 | T2C-H | |||||||||
FF7A | SR | |||||||||
FF7B | ACR | |||||||||
FF7C | PCR | |||||||||
FF7D | IFR | |||||||||
FF7E | IER | |||||||||
FF7F | x | x | x | x | x | x | x | x | ORA |
BDIR = 1 かつ BC1 = 1 の時、PSGレジスタ選択
BDIR = 1 かつ BC1 = 0 の時、PSGデータ書き込み
BDIR = 0 かつ BC1 = 1 の時、PSGデータ読み出し
PSG1:PSG1選択時=1
PSG2:PSG2選択時=1
PSG3:PSG3選択時=1
KANJI
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF75 | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | R / W | |
FF76 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R / W |
書き込み時:D4~D15:漢字コード D0~D3:ライン番号
読み出し時:D0~D15:ビットイメージ (未定義の場合D0=1となる)
FDC(HD46503S(MC6843))(片面単密度用)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF18 | R | DIR | ||||||||
W | DOR | |||||||||
FF19 | ? | R / W | CTAR | |||||||
FF1A | R | CMR | ||||||||
x | x | x | x | W | ISR | |||||
FF1B | R | STRA | ||||||||
W | SUR | |||||||||
FF1C | x | x | x | R | STRB | |||||
W | SAR | |||||||||
FF1D | x | W | GCR | |||||||
FF1E | x | x | x | x | x | x | W | CCR | ||
FF1F | x | W | LTAR |
DRIVE-SEL(片面単密度用)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF20 | MT | x | x | x | D3 | D2 | D1 | D0 | W |
D0:ドライブ0 D1:ドライブ1 D2:ドライブ2 D3:ドライブ3 選択
MT:モータON/OFF
※リード操作を行うと、$FFがこのレジスタに書き込まれる。
FDC(MB8866)(両面倍密度用)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF00 | R | STR | ||||||||
W | CR | |||||||||
FF01 | R / W | TR | ||||||||
FF02 | R / W | SCR | ||||||||
FF03 | R / W | DR |
DRIVE-SEL(両面倍密度用)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF04 | DRQ | x | x | x | x | x | x | IRQ | R | |
x | NM | D/S | S | M | x | DRV | W |
IRQ:通常=1 IRQ発生時=0 -> NMI割り込み発生
DRQ:通常=1 DRQ発生時=0
DRV:ドライブ選択(0~3)
M:モータON/OFF
S:サイド選択
D/S: 倍密度=1 単密度=0
NM: NMI禁止する場合=1
増設プリンタカード? (HD46821(PIA))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF3C | PA7 | PA6 | PA5 | PA4 | PA3 | PA2 | PA1 | PA0 | R / W | LPT1: |
FF3D | IRQ A2 | IRQ A1 | CA2制御 | DDR A | CA1制御 | R / W | ||||
FF3E | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 | R / W | LPT2: |
FF3F | IRQ B2 | IRQ B1 | CB2制御 | DDR B | CB1制御 | R / W |
増設RS-232Cカード? (HD46850(ACIA))
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF40 | IRQ | PE | OVRN | FE | CTS | DCD | TDRE | RDRF | R | COM1: |
CR7 | CR6 | CR5 | CR4 | CR3 | CR2 | CR1 | CR0 | W | ||
FF41 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | R | |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | W |
COM2:~COM4:は未実装 ... $FF42 ~ $FF47
◆以下、未確認(未実装)ポート
リアルタイムクロック?(RTC58321?)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF38 | R | W | ? | ? | REG | W | RTC制御? | |||
FF39 | RW | CS | ? | ? | DATAW | W | ||||
FF3A | ? | ? | ? | ? | DATAR | R |
REG:RTCレジスタアドレス
R=1のとき、RTCからの読み出し開始。$FF3Aから読み出し可能になる。
W=1のとき、RTCへの書き込み開始。$FF39のデータを書き込む。
RW:データ方向。RTCへの書き込み=0,RTCからの読み出し=1
CS=1のとき、RTCへのアクセス可能
DATAW:RTCへ書き込むデータ
DATAR:RTCから読み出したデータ
RTCへの読み書きはバッファを通して行うようだ。
拡張PIAカード? (HD46821(PIA) x 2)
アド レス |
データビット | R / W | 備考 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
FF60 | PIA Aポート | |||||||||
FF61 | ||||||||||
FF62 | PIA Bポート | |||||||||
FF63 | ||||||||||
FF64 | PIA Aポート | |||||||||
FF65 | ||||||||||
FF66 | PIA Bポート | |||||||||
FF67 |
◆関連ページ◆