=== ファミリーコンピュータ用キーボードの解析 === date: 1998/3/15 by goroh mail: goroh_kun@geocities.co.jp 1.キーボードのキーの構成 初期のスキャン方式のキーボードを採用、 キー・マトリックスは8x10 [ F1 ][ F2 ][ F3 ][ F4 ][ F5 ][ F6 ][ F7 ][ F8 ] [1][2][3][4][5][6][7][8][9][0][-][^][\][STOP] [ESC][Q][W][E][R][T][Y][U][I][O][P][@][[][RETURN] [CLR][INS][DEL] [CTR][A][S][D][F][G][H][J][K][L][;][:][]][カナ] [ UP ] [ SHIFT][Z][X][C][V][B][N][M][,][.][/][ ][ SHIFT ] [ LEFT ][ RIGHT ] [GRPH][ SPACE ] [ DOWN ] 他にテープ用のリード・ライト端子を装備 2.キーボードのポートの構成 01:GND 04:PORT1-D4 05:PORT1-D3 06:PORT1-D2 07:PORT1-D1 10:OUT2 NOTの3pin(IN2) キーボードの入力とテープレコーダ入力の切り替え 0:テープ 1:キーボード 11:OUT1 キーボード入力の切り替え,次のスキャンの開始 0:入力A 1:入力B 1から0になったときに次のスキャンが開始される。 12:OUT0 キーボードの初期化 0:しない 1:する 13:PORT0-D1 テープレコーダーからのデータ 15: +5V 3.キーボードの操作法 (1)初期化 初期化を行うと次の呼び込みが第1スキャンになる。 $4016 <- #$05 (2) 第1スキャン $4016 <- #$04 $4016 -> D1a $4016 <- #$06 $4016 -> D1b (3) 第2〜10スキャン .(2)と同様 $4016 <- #$04 この時点で自動的に次のスキャンに移行する $4016 -> D2a $4016 <- #$06 $4016 -> D2b 4.キーボードのスキャンコード S1-S0は何回目のスキャンかを示す。 A1-A4はOUT1が0のときのPORT1-D1,D2,D3,D4 の値を示す。 B1-B4はOUT1が1のときのPORT1-D1,D2,D3,D4 の値を示す。 押されたキーの位置のビットが0になる。 例、@のみが押されたとき リセット後,3回目のスキャンで呼び込んだデータはOUT1=0のとき、D1=1,D2=0,D3=1,D4=1になる。 それ以外のときはD1=1,D2=1,D3=1,D4=1になる。 A1 A2 A3 A4 B1 B2 B3 B4 | | | | | | | | S1----[F8]---[RETURN]-[ [ ]---[ ] ]---[kana]-[SHIFT-R]-[\]----[STOP] | | | | | | | | S2----[F8]---[RETURN]-[ [ ]---[ ] ]----[_]-----[/]-----[-]-----[^] | | | | | | | | S3----[F7]-----[@]-----[:]-----[;]----[. _]----[,]-----[P]-----[0] | | | | | | | | S4----[F6]-----[O]-----[L]-----[K]-----[M]-----[N]-----[9]-----[8] | | | | | | | | S5----[F5]-----[I]-----[U]-----[J]-----[B]-----[V]-----[7]-----[6] | | | | | | | | S6----[F4]-----[Y]-----[G]-----[H]-----[F]-----[C]-----[5]-----[4] | | | | | | | | S7----[F3]-----[T]-----[R]-----[D]-----[X]-----[Z]-----[E]-----[3] | | | | | | | | S8----[F2]-----[W]-----[S]-----[A]-[X SHIFT-L]-[GRPH]--[1]-----[2] | | | | | | | | S9----[F1]----[ESC]----[Q]----[CTR]--[DOWN ][SPACE]-[1 DEL]-[2 INS] | | | | [SHIFT-L][GRPH ] | | S0----[CLR]----[UP]--[RIGHT]--[LEFT]--[DOWN]--[G+SP]--[1+DEL]-[2+INS] 5.考察 4017番地の呼び込みで、1bit目はジョイパッドのデータを表わすが、 リセット後、8回以上呼び込み行ったときはbit1は1になる。 キーボードは10回の呼び込みの後は引き続き1回目のスキャンを行う 6.付録 (i) 拡張端子の操作用レジスタの仕様 4016 WR R: 0100000A A:port0-D0 W: -----ABC A:out2 B:out1 C:out0 4017 R: 010ABCDE A:port1-D4 B:port1-D3 C:port1-D2 D:port1-D1 E:port1-D0 W: ???????? Δサウンド関係の設定 (ii)拡張端子の仕様 01 GND 02 SOUND 03 IRQ 04 port1-D4 05 port1-D3 06 port1-D2 07 port1-D1 08 port1-D0 09 port1-CLK 10 OUT2 11 OUT1 12 OUT0 13 port0-D0 14 port0-CLK 15 +5V