----------------------------------------------------------------------------- SMC-70/777 SYSTEM I/O MAP 2018.10.21 一部未検証、無保証 なぜプレーンテキストで書いてしまったのだろう。 ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- I/O MAP list ----------------------------------------------------------------------------- +----+--+----------+------------+------------------------------------------+ |ADDR|RW| device | label | function | +----+--+----------+------------+------------------------------------------+ |aa00|RW| TEXT | TXT-VRAM | text char vram A[15: 8]=TA[ 7:0] | | : | | | | A[ 2: 0]=TA[10:8] | |aa07| | | | | +----+--+----------+------------+------------------------------------------+ |aa08|RW| TEXT | ATT-VRAM | text attr vram A[15: 8]=AA[ 7:0] | | : | | | | A[ 2: 0]=AA[10:8] | |aa0F| | | | | +----+--+----------+------------+------------------------------------------+ |aa10|RW| TEXT | PCG-RAM | PCG pattern ram A[10: 8]=RA[ 2:0] | | : | | | | A[15:11]=PA[ 4:0] | |aa17| | | | A[ 2: 0]=PA[ 7:5] | +----+--+----------+------------+------------------------------------------+ |--18|RW| CRTC | ARPORT | HD460505SP Register port | |--19|RW| | ADPORT | HD460505SP Data port | +----+--+----------+------------+------------------------------------------+ |--1A|RW| KEYBOARD | CDATA | M5M8041A-077P : Data | |--1B|R | | CSTAT | M5M8041A-077P : Status & Handshake flag | |--1B| W| | | M5M8041A-077P : Control | +----+--+----------+------------+------------------------------------------+ |--1C| R| I/O STS | IOSTS1C | RES,na[6:5],-CP,na[3],ID,na[1:0] | |--1C|W | I/O CTRL | IOCTRL | 1bit CTRL :na[7:5],OD,na[3],PA[2:0] | |--1D| R| I/O STS | IOSTS1D | TCIN,na[6:5],PR_BSY,PR_ACK,ID,na[1:0] | |--1D|W | I/O CTRL |(IOCTRL) | same as port --1CH | +----+--+----------+------------+------------------------------------------+ |--20|RW| DISPLAY | GCW | TXT / GFX mode | |--21|R | INTERRUPT| | VSYNC interrupt status | |--21| W| INTERRUPT| | VSYNC interrupt enable | |--22| W| PRINTER | PTRDT | printer data | |--23| W| DISPLAY | | border color | +----+--+----------+------------+------------------------------------------+ |--24| W| RTC | RTCWP | M5M58321RS | |--25|R | | RTCRP | M5M58321RS : RDY,UNK[6:4],RD[3:0] | +----+--+----------+------------+------------------------------------------+ |--25| W| RS232C | TTYINT | RXRDY INTERRUPT ENABLE | |--26|RW| | TTYDAT | I8051 DATA PORT | |--27|RW| | TTYSTT | I8051 STATUS PORT | +----+--+----------+------------+------------------------------------------+ |ADDR|RW| device | name | function | +----+--+----------+------------+------------------------------------------+ |--28|RW| FDC2 | DSTS / DCMD| SMI-7016 MB8877A | |--29|RW| | DTRK | MB8877A | |--2A|RW| | DSCT | MB8877A | |--2B|RW| | DSCT | MB8877A | |--2C|R | | DDAT | DRQ,BSY | |--2C| W| | DSEL | SIDE,MODE,SEL | +----+--+----------+------------+------------------------------------------+ |--2D| W| RS232C-2 | TTY2INT | SMI-7031(S9=ON) RXRDY INTERRUPT ENABLE | |--2E|RW| | TTY2DAT | SMI-7031(S9=ON) I8051 | |--2F|RW| | TTY2STT | SMI-7031(S9=ON) I8051 | +----+--+----------+------------+------------------------------------------+ |--30|RW| FDC1 | DSTS / DCMD| MB8877A | |--31|RW| | DTRK | MB8877A | |--32|RW| | DSCT | MB8877A | |--33|RW| | DDAT | MB8877A | |--34|R | | DREQ | DRQ,BSY | |--34| W| | DSEL | (SIDE,MODE),SEL | +----+--+----------+------------+------------------------------------------+ |--35| W| RS232C-3 | TTY2INT | SMI-7031(S9=ON) RXRDY INTERRUPT ENABLE | |--36|RW| | TTY2DAT | SMI-7031(S9=OFF) I8051 | |--37|RW| | TTY2STT | SMI-7031(S9=OFF) I8051 | +----+--+----------+------------+------------------------------------------+ |ADDR|RW| device | name | function | +----+--+----------+------------+------------------------------------------+ |--38|R |CACHE_DISK|CDSTS | STATUS PORT | |--38| W| |CDCMD | COMMAND PORT | |--39| W| |CDTRK | TRACK PORT (0-63) | |--3A| W| |CDSCT | SECTOR PORT (0-31) | |--3B|RW| |CDDAT | DATA PORT (auto inc) | +----+--+----------+------------+------------------------------------------+ |--3C|RW| GENLOCK | | genlocker | |--3D|RW| | | genlocker | +----+--+----------+------------+------------------------------------------+ |--40|RW| GPIB | GPIB0 | SMI-7032 TMS9914A | |--41|RW| | | SMI-7032 TMS9914A | |--42|RW| | | SMI-7032 TMS9914A | |--43|RW| | | SMI-7032 TMS9914A | |--44|R | | | SMI-7032 DIP SWITCH | |--44| W| | | SMI-7032 TMS9914A | |--45|RW| | | SMI-7032 TMS9914A | |--46|RW| | | SMI-7032 TMS9914A | |--47|RW| | | SMI-7032 TMS9914A | +----+--+----------+------------+------------------------------------------+ |--48|RW| HDD | HDDAT | HDD Data Port , UPI41 ? | |--49|R | | HDSTS | HDD Status Port , UPI41 ? | +----+--+----------+------------+------------------------------------------+ |-a51|R | JOYSTICK | JS_IN | A[8]= 1:JS1 / 0:JS2 | |-a51| W| | J2_OUT | JOYSTICK-2 output control | +----+--+----------+------------+------------------------------------------+ |--52| W| PALET | PALET | 4096 color palet | +----+--+----------+------------+------------------------------------------+ |--53| W| PSG | PSG | SN76489AN | +----+--+----------+------------+------------------------------------------+ |--5A|RW| unknown | | IPL-ROM OUT 01H | |--5B|RW| | | IPL-ROM OUT 23H | +----+--+----------+------------+------------------------------------------+ |ADDR|RW| device | name | function | +----+--+----------+------------+------------------------------------------+ |aa70|R | EXTROM | EROMD | ROMA[ 7:8] = A[15:8] , ROMD = D | |--70|W | | EROMA | ROMA[15:8] = D | +----+--+----------+------------+------------------------------------------+ |aa74|R | GPIB | | SMI-7032 ROM A[15:8] = ROMA[7:0],D = Data| |--74| W| | | SMI-7032 ROM D[2:0] = ROMA[10:8] | +----+--+----------+------------+------------------------------------------+ |--78|R | LPEN(IO) | LPHL | I/O 1984.8.P202 LPH[7:0] | |--79|R | | LPHH | I/O 1984.8.P202 -READY,NA[6:2],LPH[9:8] | |--7A|R | | LPV | I/O 1984.8.P202 LPV[7:0] | |--7B|R | | LPRST | I/O 1984.8.P202 restart counter | +----+--+----------+------------+------------------------------------------+ |--7C|RW| MIDI(HB) | MDDATA | Oh!HITBIT Vol.6 MIDI I/F - I8051 | |--7D|RW| | MDSTAT | Oh!HITBIT Vol.6 MIDI I/F - I8051 | +----+--+----------+------------+------------------------------------------+ |aa7E|R | SUBROM | SROM_KD | Kanji-ROM :aa=|100b|L/R|RA[3:0]|:D=data | |--7E| W| | SROM_AL | NA[7],JIS_1B[7:1] | |aa7F|R | | SROM_BD | Basic-ROM :aa=A[7:0] :D=data | |--7F| W| | SROM_AH | JIS_2B[8:1] / BROM_A[15:8] | +----+--+----------+------------+------------------------------------------+ |aa80|RW| GRAPHIC | GVRAM | Graphic VRAM : A[15:0]=GA[7:0] | | : | | | | A[ 6:0]=GA[14:8] | |aaFF| | | | | +----+--+----------+------------+------------------------------------------+ -------------------------------------------------------------------- TEXT / ATTRIBUTE RAM -------------------------------------------------------------------- +--+-------------+--------------------+--------------------------------+ |RW| A[15:8] |A[7:3] | A[2:0] |D7 |D6 |D5 | D[4:3] | D[2:0] | +--+-------------+--------------------+--------------------------------+ |RW| TEXT_A[7:0] |0000_0b|TEXT_A[10:8]| CHAR_CODE | +--+-------------+--------------------+--------------------------------+ |RW| ATTR_A[7:0] |0000_1b|ATTR_A[10:8]|FRC|BRK|REV|BCOL[1:0]|CCOL[2:0] | +--+-------------+--------------------+--------------------------------+ TEXT_A[10:0]/ATTR_A[10:0] : Y*80 + X*2 + PAGE (GCW.CM=1 , 40x25) : Y*80 + X (GCW.CM=0 , 80x25) FRC : 強制bit : 0= 他のビット有効 / 1= BRK=0,REV=0,BCOL=0,CCOL=7 とみなす BRNK : blink : 0 = blink off /1 = Blink Char Color REV : recerve : 0 = normal / 1 = reverce font pattern BCOL[1:0] : Back Ground Color 00b=transpalent / 01b=White/10b=Black / 11b=CCOL+08H CCOL[2:0] : Char Color : 0-7 (same as GFX color) TXT_PIXEL = FRC ? FONT_BIT : (FONT^REV) ? (BRK & FLASH_ON) : (BCOL!=00b) note: CCOL==0 のBlackは透明ではない黒。 BCOL==11b 設定の補色はカラーコード+8の値によるもので、CCOLの反転色ではない。  BRNK==1の時はCCOL対象ピクセルが指定色と透明で一定時間ごとに切り替わる。BCOLは不変。 REV==1の時はフォントパターンがビット反転されて扱われる。 TXT/GFXの認定には6BIT+遅延用ピクセルクロックが必要 -------------------------------------------------------------------- PCG RAM -------------------------------------------------------------------- +--+------------+---------+-----------+--+--+--+--+--+--+--+--+ |RW| A[15:8] | A[7:3] | A[2:0] |D7|D6|D5|D4|D3|D2|D1|D0| +--+------------+---------+-----------+--+--+--+--+--+--+--+--+ |RW| PCG_A[7:0] | 0001_0b |PCG_A[10:8]|P0|P1|P2|P3|P4|P5|P6|P7| +--+------------+---------+-----------+--+--+--+--+--+--+--+--+ PCG_A[10:0] : CHAR_CODE[7:0]*8 + RASTER[2:0] P0 : pixel[X+0] 左端 P1 : pixel[X+1] P2 : pixel[X+2] P3 : pixel[X+3] P4 : pixel[X+4] P5 : pixel[X+5] P6 : pixel[X+6] P7 : pixel[X+7] 右端 PCG_D[7:0] : PCG データ note: CG-ROMは存在しません。IPLがデフォルトのパターンをCGパターンを定義します。 アクセスウェイトは発生しません。 -------------------------------------------------------------------- CRTC -------------------------------------------------------------------- +--+------+---------------------------+------------------------+ |RW|A[7:0]|D7|D6|D5|D4 |D3|D2 |D1 |D0 |function | +--+------+---------------------------+------------------------+ |RW| 18H |--|--|--| CRTCA[4:0] | HD460505SP Reg. port | |RW| 19H | CRTCD[7:0] | HD460505SP Data port | +--+------+---------------------------+------------------------+ note: SMC-70の640x400モードではインターレース&ビデオシンクモードが使われる。 SMC-70内蔵ライトペンのキャラクター単位座標はCRTCのレジスタから取得する。 ライトペンのキャラクタ単位未満の座標はポート1Cから取得する。 Disk BASIC :CRTC 画面再設定 1402- |gmode |pdata|R4 |R5 |R6 |R7 |R8 |R9 | |0,1,2 |1420H|1FH|06H|19H|1CH|A0H|07H| | 3 |1429H|1FH|06H|19H|1CH|A3H|0EH|640x400 interrace & video sync -------------------------------------------------------------------- KEYBOARD -------------------------------------------------------------------- Scan Mode +--+------+---+------------------------------+ |RW|A[7:0]|FEF|D7 |D6|D5|D4 |D3| D2 |D1 |D0 | +--+------+---+------------------------------+ |R | 1AH | KD[7:0] | |R | 1BH | 0 |CF |SF|--|-- |--| ASF |-- |BSF| | W| 1BH | 0 |ICF|--|--|FEF|--| -- |-- |IEF| +--+------+---+------------------------------+ KD[7:0] : scan code (ASCII code) CF : 1 = CTRL + SCAN_KEY (Exclude SHIFT) SF : 1 = SHIFT + SCAN_KEY (Exclude CTRL) ASF : 0 = キーが押されていない。 / 1 = キーが押されている。 BSF : 1 = キーが押されるとセット、KDを読み込んだあと80us後にクリア、ICFを書き込むと直ちにクリア ICF : 0 = keep interrupt request / 1 = clear interrupt request FEF : 0 = keep Scan Mode / 1 = enter Setting Mode IEF : 0 = disable interrut / 1 = enable interrupt Setting mode +--+------+---+--------------------------+----------------------+ |RW|A[7:0]|D7|D6| D5 |D4|D3| D2 |D1 |D0 | function | +--+------+---+--------------------------+----------------------+ |RW| 1AH | KD[7:0] | key data | |R | 1BH |--|--| -- |--|--|-BUSY|-CS|DR | handshake status | | W| 1BH | 00b | -- |--|--| -- |---|---| exit to scan mode | | W| 1BH | 01b | RM |--| T[3:0] | repeat set | | W| 1BH | 10b |-R/W|--| A[3:0] | function key set/read| | W| 1BH | 11b | -- |--|--| -- |---|---| reset kbd | +--+------+---+--------------------------+----------------------+ KD[7:0] : command / parameter / result data -BUSY : command busy : 0=busy (not done) / 1 = not busy (done) -CS : WR status : 0 = KD.W empty (writable) / 1 = KD.W full DR : RD status : 0 = KD.R empty / 1 = KD.R full (readable) RM : 0 = repeat start / 1 = repeat interval -R/W : 0 = function key readback / 1 = function key set T[3:0] : repeat start timer or repeat interval time A[3:0] : function key select Select Value +-----+-----------+-----------+------+ |value|RM=0,T[3:0]|RM=1,T[3:0]|A[3:0]| +-----+-----------+-----------+------+ |0000b| 0.5sec | 20 msec | | |0001b| 0.6sec | 40 msec | F1 | |0010b| 0.7sec | 60 msec | F2 | |0011b| 0.8sec | 80 msec | F3 | |0100b| 0.9sec | 100 msec | F4 | |0101b| 1.0sec | 120 msec | F5 | |0110b| 1.1sec | 140 msec | HELP | |0111b| 1.2sec | 160 msec | | |1000b| 1.3sec | 180 msec | | |1001b| 1.4sec | 200 msec | | |1010b| 1.5sec | 220 msec | | |1011b| 1.6sec | 240 msec | | |1100b| 1.7sec | 260 msec | | |1101b| 1.8sec | 280 msec | | |1110b| 1.9sec | 300 msec | | |1111b| 2.0sec | 320 msec | | +-----+-----------+-----------+------+ note: MCU 8041とインターフェースされている。 コマンドポート、データポートのアクセスする際は,-CS,DR/IEF フラグでハンドシェーク転送する。 -------------------------------------------------------------------- I/O STATUS -------------------------------------------------------------------- +--------+--+------+------------------------------------------+ |machine |RW|A[7:0]|D7 |D6 | D5 | D4 | D3 |D2 |D1 |D0 | +--------+--+------+------------------------------------------+ |SMC-70 |R | 1CH |RES |HiZ|LPH[2]|LPV[2] |LPV[1]|HiZ|MD[1:0]| |SMC-777 |R | 1CH |RES |---|------| -CP |------|ID |-------| +--------+--+------+------------------------------------------+ |SMC-70 |R | 1DH |TCIN|HiZ|LPIN |PR BUSY|PR ACK|HiZ|MD[1:0]| |SMC-777 |R | 1DH |TCIN|---|------|PR_BUSY|PR_ACK|ID |-------| +--------+--+------+------------------------------------------+ RES : 0=COLD START (POWER ON) / 1=WARM START (RESET SWITCH) TCIN : CMT READ DATA PR_BUSY : 1 = printer BUSY PR_ACK : 1 = printer ACK received SMC-70 HiZ : no drive (readable level '1') LPH[2] : LIGHT PEN H position LPV[2:1] : LIGHT PEN V position LPIN : LIGHT PEN入力検出 0=入力なし / 1=入力あり MD[1:0] : SMC-70 BOOT MODE switch (10b=ROM/00b=DISK/11b=EXT) SMC-777 -CP : palet board : 0=装着 / 1=未装着 ID : machine ID : 0=SMC-777 / 1=SMC-70 note: SMC-777では機種判定ビットを追加した上で仕様変更されており -CP と LPV[2]が異なる機能になっている。 オフィシャルマニュアルではSMC-777で -CP ビットを判定する際は ID ビットで機種を判定する決まりになっている。  SMC-70ではライトペンのキャラクタ座標未満の水平4ドット単位と垂直2ドット単位の座標がここから読み取れる。(未検証) -------------------------------------------------------------------- I/O CONTROL -------------------------------------------------------------------- +--+------+----------------------------+ |RW|A[7:0]|D7|D6|D5| D4 |D3|D2 |D1 |D0 | +--+------+----------------------------+ | W| 1CH |--|--|--| OD |--| PA[2:0] | | W| 1DH |--|--|--| OD |--| PA[2:0] | +--+------+----------------------------+ OD : otuput value PA : output select +----+---------------+--------------------------------+ |PA | port select | OD=0 | OD=1 | +----+---------------+--------------------------------+ |111b|CASETTE_OUT | low | high | |110b|PRINTER_STROBE | -STB=H | -STB=L | |101b|SOUND_OUT | low | high | |100b|MONITOR_ON_OFF | CASSETTE STOP | START CASSETTE | |011b|RGB/-COMP | RGB | COMP | |010b|625/-525 | 525 | 625 | |001b|-V_SUP | DISPAY ON |DISPAY BLANK | |000b|RAM/-ROM | SHADOW ROM | RAM | +----+---------------+--------------------------------+ note: 1ビット単位でアクセスする。(I8255のポートCビットモードと同等) SHADOW ROM をセレクトすると、メモリの0000H-3FFFHのリードアクセスのみIPL/BIOS ROMから行われる。 RAM/-ROMレジスタ変更に対して実際の更新は次の次のM1サイクルの開始時点で行われるため、 次の命令は切り替え前のRAMまたはROM上で実行できる。ただし、割り込み禁止状態で行うこと。 SMC-70のIPL ROMはSMC-777のBIOS ROMコールエントリと互換性がないためSonyFilerは起動しない。 -------------------------------------------------------------------- GRAPHIC/TEXT MODE -------------------------------------------------------------------- GCW : graphic charactor width ? +--+------+--------------------------------------+-------+ |RW|A[7:0]| D7 | D6 |D5 | D4 | D3 | D2 |D1 |D0 |machine| +--+------+--------------------------------------+-------+ |RW| 20H | CM | TP | T | I | GM[1:0] |GP[1:0]|SMC-70 | +--+------+--------------------------------------+-------+ |RW| 20H | CM | TP | T | - |GM[1]|----|---|---|SM-777 | +--+------+--------------------------------------+-------+ CM : text mode 0=80x25 / 1=40x25x2page TP : text page 0 / 1 (40x25 only) T : (640x200) color type 0=1(K,R,G,B) / 1=2(K,R,G,W) SMC-70 I : Interace : 0 = non-interace / 1 = interace GM[1:0] : gfx mode : 00b = 160x100x4bppx4page / 01b = 320x200x4bpp : 10b = 640x200x2bpp / 11b = 640x400x1bpp GP[1:0] : gfx page : (160x100 only) SMC-777 GM[1] : gfx mode : 0 = 320x200x4bpp / 1 = 640x200x2bpp note:  SMC-777では互換性を保つために一部の無効ビットもSMC-70用に合わせて設定するように規定されている。 設定値は読み込み可能だが、SMC-777における無効ビットは書き込んだ値を読み出すことは出来ない。 640x400モードはCRTCをインターレース&ビデオシンクモードに設定して使う。 中国向けSMC-777では640x400モードの追加が施されているという情報がある。 -------------------------------------------------------------------- 60Hz interrupt -------------------------------------------------------------------- VSYNC interrupt +--+------+------------------------+-------------------------------+ |RW|A[7:0]|D7|D6|D5|D4|D3|D2|D1|D0 | function | +--+------+------------------------+-------------------------------+ |R | 21H |--|--|--|--|--|--|--|IDF|VSYNC interrupt detect status | | W| 21H |--|--|--|--|--|--|--|IEF|VSYNC interrupt enable control | +--+------+------------------------+-------------------------------+ IDF : VSYNC interrupt detect : 0=no-detect / 1=detect (clear after read) IEF : VSYNC interrupt enable : 0=disable / 1=enable note: 割り込みベクターの発生機能は無いため、Z80はINT MODE 1で使用します。 IDFフラグはVSYNC割り込みの要求でセットポート21Hのリード後にクリアされるため、割り込み要因 の特定フラグとして機能する模様。 -------------------------------------------------------------------- printer data -------------------------------------------------------------------- +--+------+------------------------+ |RW|A[7:0]|D7|D6|D5|D4|D3|D2|D1|D0 | +--+------+------------------------+ | W| 22H | pr_data | +--+------+------------------------+ -------------------------------------------------------------------- border color -------------------------------------------------------------------- +--+------+------------------------+ |RW|A[7:0]|D7|D6|D5|D4|D3|D2|D1|D0 | +--+------+------------------------+ | W| 23H |--|--|--|--| bcolor | +--+------+------------------------+ bcolor : ボーダーエリアのカラーコード -------------------------------------------------------------------- RTC -------------------------------------------------------------------- +--+------+---------------------------+-----------------------+ |RW|A[7:0]| D7 |D6|D5| D4 |D3|D2|D1|D0| function | +--+------+---------------------------+-----------------------+ | W| 24H |STOP|WR|RD|ADDR| RTWD[3:0] | M5M58321RS | |R | 25H |RDY |--|--|----| RTRD[3:0] | M5M58321RS | +--+------+---------------------------+-----------------------+ STOP : RTCのGS2とSTOP信号を設定 WR : RTCのWR信号を設定 RD : RTCのRD信号を設定 ADDR : RTCのRD信号を設定 RTWD[3:0] : RTCのデータバスを設定(WR='0'の時) RDY : RTCの-BUSY信号の状態 RTRD[3:0] : RTCのデータバスの状態 note: +3.6Vのバッテリーバックアップ機能があります。 -------------------------------------------------------------------- RS232C -------------------------------------------------------------------- +--+--------------+------------------------+ |RW| A[7:0] |D7|D6|D5|D4|D3|D2|D1|D0 | +--+--------------+------------------------+ | W| 25H/2DH/35H |--|--|--|--|--|--|--|IEF| |RW| 26H/2EH/36H | I8255-1/2/3 DATA | |RW| 27H/2FH/37H | I8255-1/2/3 CTRL | +--+--------------+------------------------+ IEF : RXRDY inttterut 0=disable / 1=enable note: Internal , External-A , External-B の最大3ポート External-A/Bの選択は拡張ユニット側で切替可能。 I/Oアドレス以外は同じ仕様の感じ。 ボーレートはDIPスイッチでハード的にボーレートクロックの分周比を選択する。(例外があるかも) RXRDYのみ割り込をイネーブル出来る。 ハードスイッチでDSUB25コネクタへの接続をストレート/クロスの切り替えが出来る。 SMC-777には内蔵RS232Cはない。オプションのI/Oアドレスも未確認 -------------------------------------------------------------------- Floppy Disk Control -------------------------------------------------------------------- FDC1 build in 3.5'1DD / 3.5'2DD , 5.25' 2D/2DD? +--+--------+---------------------------------+--------------------------+ |RW| A[7:0] | D7 | D6 |D5 |D4|D3|D2| D1 | D0 | function | +--+--------+---------------------------------+--------------------------+ |RW| 30-33H | FDC1 | MB8877,extend motor timer| |R | 34H |-DRQ |IRQ | 0 | 0| 0| 0| 0 | 0 | FDC Fast Status | +--+--------+---------------------------------+--------------------------+ | W| 34H |SIDE1|----|---|--|--|--|EXDS|DS01| Drive CTRL (SMC-70) | | W| 34H |-----|----|---|--|--|--|----|DS01| Drive CTRL (SMC-777) | +--+--------+---------------------------------+--------------------------+ FDC2 extend 8'2D +--+--------+---------------------------------+--------------------------+ |RW| A[7:0] | D7 | D6 |D5 |D4|D3|D2| D1 | D0 | +--+--------+---------------------------------+--------------------------+ |RW| 28-2BH | FDC2 | MB8877,extend motor timer| |R | 2CH |-DRQ |IRQ | 0 | 0| 0| 0| 0 | 0 | FDC Fast Status | | W| 2CH |SIDE1|SEL5|MFM|--|--|--|DSEL[1:0]| Drive CTRL | +--+--------+---------------------------------+--------------------------+ FDC1/FDC2 : MB8877A control -DRQ : inverted MB8877A DRQ pin IRQ : MB8877A INT pin SIDE1 : Side Select : 0=SIDE 0 / 1=SDE1 SEL5 : mode select : 0=8inch(2MHz) / 1=5inch(1MHz) MEM : Encode mode : 0=FM / 1=MFM DSEL[1:0] : Drive select : 0,1,2,3 DS01 : Drive select : 0 = SELECT0 / 1 = SELECT1 SMC-70 EXDS : Ext Drive Sel : 0 = Internal(1DD) / 1 = External note: SMC-70の本体合体 3.5'FDD には 両面に対応したI/Fを持つバージョンがあるらしいが詳細不明 SMC-777ではFDC1のDSELはbit0のみ有効、ビット1は無視される。 SEL5はOh!HITBIT Vol.6の制作記事に基づいているため純正オプションでは異なる可能性がある。 CP/M Rel.2.1では5インチ40/80trackの対象がFDC1の外部ドライブなので600rpmの5'FDDが必要? -------------------------------------------------------------------- CACHE DISK -------------------------------------------------------------------- CACHE DISK +--+------+------------------------------------+--------------------------+ |RW|A[7:0]| D7 | D6 |D5 |D4|D3|D2| D1 | D0 | function | +--+------+------------------------------------+--------------------------+ |R | 38H |-CDRDY|CDWPT|-- |--|--|--| -- |-- | CDSTS STATUS PORT | | W| 38H | CDWPT|---- |-- |--|--|--|CDSEL[1:0]| CDCMD COMMAND PORT | | W| 39H |------|-----| CDTRK[5:0] | track reg. | | W| 3AH |------|-----|-- | CDSCT[4:0] | sector reg. | |RW| 3BH | CDDAT | data access(auto inc) | +--+------+------------------------------------+--------------------------+ -CDRDY : 0=READY / 1 = not READY (no device) -CDWPT : 0=protected / 1 = enabled (おそらくWEPTのコピー) CDWPT : 0=disable write / 1=write enable CDSEL : デバイスセレクト(CP/Mがサポートするデバイス数は最大4) CDTRK : track (0-63) CDSCT : sector (0-31)、1セクターは128バイト,ライトでセクターカウンターが0にリセットされる。 CDDAT : data read/write , セクター内カウンターはじオートインクリメント note :  RAM DISK、64トラック x 32セクター x 128バイト = 256KBytes の固定容量 CDWPT を変更する場合、先に CDSEL だけを確定させておく必要がありそう。 -CDRDY : デバイスの存在有無のチェックとして扱われる模様 -CDWPT / CDWPT : 初期化の必要の有無として扱われる模様 セクターデータの書き込みは、OTIR / INIR で128バイトのブロック転送している。 A15-8に関係なくセクターカウンターがオートインクリメントされるのか、A14-8がアドレス直結なのかはわからないが、おそらく前者の実装。 CP/M起動時、-CDRDY==0 && -CDWPT==0 && パワーONリセットブート の条件でDIRエントリーをクリアする。 電源OFF時に-CDWPT==1 を保つハードウェアになっていれば不発揮RAMドライブとして機能しそう。 -------------------------------------------------------------------- GEN LOCKER (SMC-70G) -------------------------------------------------------------------- +--+------+-------------------------------+--------------------------+ |RW|A[7:0]| D7 | D6 |D5 |D4|D3|D2|D1|D0| function | +--+------+-------------------------------+--------------------------+ |RW| 3CH | G3C7 | G3C6|-- |--|--|--|--|--| genlock control | |RW| 3DH | G3D7 | G3D6|-- |--|--|--|--|--| genlock control | +----+--+----------+------------+---------+--------------------------+ note : 詳細不明 CP/M Rel.2.1 SETUP.COM でGENLOCK設定を変更すると設定値が変化する。 SMC-70GのGEN LOCKERの制御っぽい。詳細は不明。  CP/Mのエスケープシーケンスコード ESC+@ でも制御できるっぽい。  IPL-ROM Ver1.3Jからもアクセスされる。 IPL Access RES 6,PORT(3C) BIT 6,PORT(3C) -> SET 6,PORT(3C) BIT 6,PORT(3C) -> RES 7,PORT(3C) PORT(3D)=C0 PORT(3D)=00 -------------------------------------------------------------------- GPIB (SMI-7032) -------------------------------------------------------------------- GPIB I/F +--+-------+---------------------------+------------------------+ |RW|A[7:0] |D7|D6|D5|D4|D3|D2| D1 | D0 | function | +--+-------+---------------------------+------------------------+ |R |40H-43H| GPRD | TMS9914A | |R |44H | GPDSW | DIP SWITCH | |R |45H-47H| GPRD | TMS9914A | +--+-------+---------------------------+------------------------+ |W |40H-47H| GPWD | TMS9914A | +--+-------+---------------------------+------------------------+ GPIB ROM port +--+-------+---------------------------------+------------------+ |RW|A[7:0] |A[15:8] |D7|D6|D5|D4|D3|D2|D1|D0 | function | +--+-------+---------------------------------+------------------+ |R | 74H |GPA[7:0]| GPROMD[7:0] |ROM read | | W| 74H |--------|--|--|--|--|--|GPA[10:8]|ROM address | +--+-------+---------------------------+------------------------+ GPA[10:0] : ROM address GPROMD[7:0] : ROM data note: -------------------------------------------------------------------- HDD -------------------------------------------------------------------- +--+------+---------------------------+------------------------+ |RW|A[7:0]|D7|D6|D5|D4|D3|D2| D1 | D0 | function | +--+------+---------------------------+------------------------+ |RW| 48H | HDDAT[7:0] | HDD Data read/write | |R | 49H |? |? |? |? |? |? |-RXF|-TXE| HDD Status Port | +--+------+---------------------------+------------------------+ -RXE : 0=receive buffer full (RX ready) -TXF : 0=transmit buffer empty (TX ready) note:  CP/M Rel.2.1のBIOSコードがサポートしているインテリジェントHDDコントローラ  対応コントローラとプロトコルの詳細は不明。  データ出力許可条件 : (IN(49H) & 3) == 02H  データ入力許可条件 : (IN(49H) & 3) == 00H -------------------------------------------------------------------- JOYSTICK -------------------------------------------------------------------- joystick port +---------+------+---------------------------+------------------+ |RW|A[7:0]| A[8] | D7|D6 | D5 |D4|D3|D2|D1|D0| function | +---------+------+---------------------------+------------------+ |R | 51H | SEL |-BL|-CS|USER|-T|-R|-L|-B|-F| joystick input | +---------+------+---------------------------+------------------+ SEL : joystick select : 0 = JOY1 / 1 = JOY2 -BL : video black : 0 = blank / 1 = no-black -CS : JOY2.pin8 -CS level (JOY2 only,JOY1 = 0) USER : JOY2.pin7 USER level (JOY2 only,JOY1 = 0) T : pin1 FOW level R : pin4 RIGHT level L : pin3 LEFT level B : pin2 BACK lebel F : fire switch : 0 = ON / 1 = OFF note:  SMC-777のみ内蔵。  SMC-70はサードパーティの拡張モジュール SMD-70 で追加可能だが、おそらく-BL信号は未サポート。 -------------------------------------------------------------------- I/O control (SMC-777) -------------------------------------------------------------------- +---------+-----------------------+------------------+ |RW|A[7:0]|D7|D6|D5|D4|D3|D2|D1|D0| function | +---------+-----------------------+------------------+ | W| 51H |--|--|--|OD|--|PA[2:0] | 1bit port out | +---------+-----------------------+------------------+ +--+----------------------------------+ |PA| OD function | OD=0 | OD=1 | +--+----------------------------------+ |7 | GFX_PALET SEL | col.gen | palet | |6 | TXT_PALET SEL | col.gen | palet | |5 | JOY2 -CS out | low | off | |4 | JOY2 U out | low | off | |3 | JOY2 T out | low | off | |2 | JOY2 R out | low | off | |1 | JOY2 L out | low | off | |0 | JOY2 B out | low | off | +--+----------------------------------+ -------------------------------------------------------------------- 4096 COLOR PALET : PORT 52H -------------------------------------------------------------------- color palet +--+------+--------------------------+---------------+ |RW|A[7:0]| A[15:13]|A[13:12]|A[11:8]| D[7:4] |D[3:0]| +--+------+--------------------------+---------------+ | W| 52H | ------- |AD[1:0] |BB[3:0]|CD[3:0] |------| +--+------+--------------------------+---------------+ AD[1:0] : register select : R=00b / G=01b / B=10b BB[3:0] : COLOR CODE (0-15) CD[3:0] : level (0000b=dark,1111b=light) note: 表示中にアクセスすると画面にノイズが表示される。 ブランク期間の確認は、JOYSTICKポートの -BL 信号で行う。 SMC-70ではTEXT/GFXのミキシング選択信号がカスタムIC内から出ていないため TEXT,GFXで別々にパレットを掛けることは難しいと思われる。 -------------------------------------------------------------------- PSG -------------------------------------------------------------------- color palet +--+------+--------+ |RW|A[7:0]| D[7:0] | +--+------+--------+ | W| 53H | PSGD | +--+------+--------+ PSGD : SN76489AN write data note: マニュアルにはPSGと記載されているが、DCSG音源でSMC-777のみ内蔵。  SN76489AN をアクセスする際にウェイトがかかる。最大32クロック?  SMC-70はサードパーティ製拡張モジュール SMD-70 で追加される模様。 -------------------------------------------------------------------- EXT ROM -------------------------------------------------------------------- +--+-------+-----------+------------+-------------------------+ |RW|A[7:0] | A[15:8] | D[7:0] | function | +--+-------+-----------+------------+-------------------------+ |R | 70H |EROM_A[7:0]|EROM_D[7:0] | EXT-ROM read | | W| 70H |-----------|EROM_A[15:8]| EXT-ROM address | +--+-------+-----------+------------+-------------------------+ note: SMC-70の拡張ROMスイッチに対応するROM オートインクリメント機能はなさそう。 -------------------------------------------------------------------- LIGHT PEN (I/O) -------------------------------------------------------------------- note: I/O 1984.8.P202- に掲載されていた SMC-777用のライトペンの製作記事によるもの。 SMC-70内蔵機能とは仕様が異なる。 -------------------------------------------------------------------- MIDI I/F -------------------------------------------------------------------- note: Oh!HITBIT Vol.6 に掲載されていた MIDI I/Fの製作記事によるもの。 -------------------------------------------------------------------- KANJI ROM / BASIC ROM -------------------------------------------------------------------- SUB-ROM port +--+-------+--------------------+--------------+-------------------------+ |RW|A[7:0] |A15|A14|A13|A[12:8] |D7| D[6:0] | function | +--+-------+--------------------+--------------+-------------------------+ |R | 7EH |---|---|L/R|RA[4:0] | KRD[7:0] | KANJI-ROM read | | W| 7EH |--------------------|--| JIS1[6:0] | KANJI-ROM addr | |R | 7FH | BRA[7:0] | BRD[7:0] | BASIC-ROM read | | W| 7FH |--------------------| BRA[15:8] | BASIC/KANJI-ROM addr | +--+-------+--------------------+--------------+-------------------------+ L/R : KANJI-ROM SEL : 0 = LEFT / 1 = RIGHT RA[4:0] : KANJI-ROM raster address JIS1A[6:0] : KANJI-ROM JIS first byte number BRA[15:0] : BASIC-ROM address / KANJI-ROM JIS second byte number (JIS2[6:0] = BRA[14:8]) note: SMC-70内蔵サブROMボード上にある、BASIC-ROM + 16x16ドット第一水準漢字ROM BASIC-ROMにはモニターROMも含まれていると思われる。 漢字ROMの部分はSMC-777用オプションと互換性がある。 -------------------------------------------------------------------- Graphic Video RAM -------------------------------------------------------------------- 640 x 400 x mono color , Interface : 未検証 +--+----+--------+-------+-------+-------+-------+-------+ |RW|A[7]| A[6:0] |A[15:8]|D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 | +--+----+--------+-------+-------+-------+-------+-------+ |RW| 1 |GA[14:8]|GA[7:0]| ? | ? | ? | ? | ? | ? | ? | ? | +--+----+--------+-------+-------+-------+-------+-------+ GA = (Y/16)*0A0H + ((Y/2) MOD 8)*1000H + (X/4) F = (Y mod 2) P00 : pixel[X+0,F=0] P10 : pixel[X+1,F=0] P21 : pixel[X+2,F=1] P31 : pixel[X+3,F=1] 640 x 200 x 4color +--+----+--------+-------+-------+-------+-------+-------+ |RW|A[7]| A[6:0] |A[15:8]|D[7:6] |D[5:4] |D[3:2] |D[1:0] | +--+----+--------+-------+-------+-------+-------+-------+ |RW| 1 |GA[14:8]|GA[7:0]|P0[1:0]|P1[1:0]|P2[1:0]|P3[1:0]| +--+----+--------+-------+-------+-------+-------+-------+ GA = (Y/8)*0A0H + (Y MOD 8)*1000H + (X/4) P0 : pixel[X+0] P1 : pixel[X+1] P2 : pixel[X+2] P3 : pixel[X+3] 320 x 200 x 16color +--+--+--------+-------+-------+-------+ |RW|A7| A[6:0] |A[15:8]|D[7:4] |D[3:0] | +--+--+--------+-------+-------+-------+ |RW| 1|GA[14:8]|GA[7:0]|P0[3:0]|P1[3:0]| +--+--+--------+-------+-------+-------+ GA = (Y/8)*0A0H + (Y MOD 8)*1000H + (X/2) P0 = pixel[X+0] P1 = pixel[X+1] 160 x 80 x 16color x 4page : 推測値、未検証 +--+--+--------+-------+-------+-------+ |RW|A7| A[6:0] |A[15:8]|D[7:4] |D[3:0] | +--+--+--------+-------+-------+-------+ |RW| 1|GA[14:8]|GA[7:0]|P0[3:0]|P1[3:0]| +--+--+--------+-------+-------+-------+ GA = (Y/4)*0A0H + (Y MOD 4)*2000H + PAGE[1]*1000H + (X)*2 + PAGE[0] PAGE[1:0]] = page P0 = pixel[X+0] P1 = pixel[X+1] color generator map +-----+-------+------+------+---------------+ |color|640x400| 640x200 |320x200,160x80 | |code | |type1 |type2 | | +-----+-------+------+------+---------------+ | 0 | Black | Black | Black | | 1 | White | Red | Deep Blue | | 2 | - | Green | Bright Green | | 3 | - |Blue |White | Turquoise | | 4 | - | - | Red | | 5 | - | - | Brilliant Pink| | 6 | - | - | Yellow | | 7 | - | - | White | | 8 | - | - | Dark Green | | 9 | - | - | Moss Green | | 10 | - | - | Salmon | | 11 | - | - | Tan | | 12 | - | - | Ash Blue | | 13 | - | - | Light Blue | | 14 | - | - | Pale Pink | | 15 | - | - | Gray | +-----+-------+------+------+---------------+ note: SMC-777はGRAMがSRAM構成でノーウェイト。 SMC-70 はGRAMがDRAM構成で数クロックのアクセスウェイトが発生する模様。 カラーコード 0-7はテキスト色と同一のデジタル8色、配列が X,R,G,B の順で他の一般的なPCとは異なる。