超暇人MSX

PC-8801mkII

PC-8801mkII

PC‐8801mkIIのスロット構成     メインバンク         サブバンク  FFFF ‐‐‐‐‐‐  ‐‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐ FFFF             GVRAM0 GVRAM1 GVRAM2     ‐‐‐‐‐‐    青      赤      緑   C000  フリー    ‐‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐ C000       エリア  8000 ‐‐‐‐‐‐  ‐‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐ 8000                    モニタROM N88SUB     N88‐    テキスト   ‐‐‐‐‐‐ ‐‐‐‐‐‐ 6000      BASIC   RAM   N‐         ROM          BASIC  0000 ‐‐‐‐‐‐  ‐‐‐‐‐‐ ‐‐‐‐‐‐        0000  システムのワークエリアやテキストVRAM用エリアを除いて25K程が  フリーエリア。フリーエリアが足りない場合は、バンクを切り替えて、  テキストRAM(のベーシックテキストが入っていない部分)を使う。  切り替え中は、当然、BIOSを呼んではいけない(暴走する)。    ●誤解しやすいPC−8801系資料のメモリ表記に関して  NEC系の資料は搭載メモリとして、メインメモリ+ビデオメモリ+ROM  の合計数を記載する。PC-8801mkIIだと搭載メモリ184kBと表記されるが  メインRAM64kB+ビデオRAM48kB+ROM72kBの合計である。   PC‐8801mkIIの表示能力  ●テキスト画面は、メインバンク(メインメモリ)のF3C8〜FF7Fにある      0‐桁(列)‐79    0 F3C8・・・・・F417 : F418〜F43F  0    | F440・・・・・F48F : F490〜   |   行 TEXT‐VRAM : 属性エリア 行   |  1バイトが1文字 :       |   24 FF08・・・・・FF57 : FF58〜FF7F 24   属性エリアの値で、文字の色付・点滅・反転・下線・上線ができる  属性エリアの内容   2バイト1組で属性を設定する   桁数属性1バイト目で桁数指定、2バイト目が属性   2バイト目 白黒モード   bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0   G/C 0 アンダー アッパー 0 リバース ブリンク シークレット   2バイト目 カラーモード   bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0   0 0 アンダー アッパー 0 リバース ブリンク シークレット   bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0   グリーン レッド ブルー G/C 1 0 0 0            G/C・・・1=グラフィック 0=キャラクター   属性クリア方法    白黒モード ・・・00H    カラーモード・・・E8Hまたは00H   桁数クリア方法    50Hでクリアする場合・・・指定された桁数+1から、指定された属性有効    80Hでクリアする場合・・・桁数0の場合は50Hと同じ。それ以外は指定                  の桁数まで指定の属性が有効    最後に指定された桁数+1からは、属性をクリアした数字が有効となる。有効    になる属性以降は要クリア  ●グラフィック画面は8色表示。青赤緑の同じアドレス(それぞれ別バンク)に   あるグラフィックRAMの3バイトで横8ピクセルを表す        青RAM  赤RAM  緑RAM   アドレス C000〜FFFF C000〜FFFF C000〜FFFF   出せる色は3ビットで表す2進数の順に       01234567       黒青赤紫緑水黄白   例1)       アドレス      値     青RAMC000 10101010     赤RAMC000 11001100     緑RAMC000 11110000        ↓        ↓     実画面の左上端に 白黄水緑紫赤青黒 と8ピクセル並ぶ   例2) 8×8ピクセルのキャラなら24バイトのデータが必要          青  赤  緑     1列目  1  2  3     2列目  4  5  6     3列目  7  8  9     4列目 10 11 12     5列目 13 14 15     6列目 16 17 18     7列目 19 20 21     8列目 22 23 24   ただし、88のピクセルは縦長なので、ゲームで多用されるサイズの正方形型に   するには、横16×縦8で48バイト必要になる  ●グラフィック画面にキャラクターを出す方法(アセンブリ言語)   HLにグラフィックRAMのアドレス、DEにキャラデータのアドレス GVRAM0 EQU 5CH ; GVRAM0 OUT PORT GVRAM1 EQU 5DH ; GVRAM1 OUT PORT GVRAM2 EQU 5EH ; GVRAM2 OUT PORT MRAM EQU 5FH ; MAINRAM OUT PORT DI LD A,(DE) ; BLUE DATA OUT (GVRAM0),A LD (HL),A OUT (MRAM),A INC DE LD A,(DE) ; RED DATA OUT (GVRAM1),A LD (HL),A OUT (MRAM),A INC DE LD A,(DE) ; GREEN DATA OUT (GVRAM1),A LD (HL),A OUT (MRAM),A EI   これで横8ピクセル分。8×8のキャラならこれを8回繰り返せばよい(!!)   (ただし毎回アドレスHLに80を足すことと、DEを1つ進めることを   忘れないように) PC‐8801シリーズのサウンド機能  ●PC‐8801mkIIの内蔵サウンド  「ピポッ」と鳴る、いわゆるBEEP音を出すブザーを内蔵している。周波数を  指定すれば、音程は ‐かなりぎこちないが‐ 2オクターブ相当の音が出せる。  周波数表   C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B   7F 78 71 6B 65 5F 5A 55 50 4C 47 43 40 3C 39 35 32 30 2D 2A 28 26 24 22  BEEPで音階音を出す(アセンブリ言語) ここ多分間違ってます。 ↑  Eに周波数、Dに音の長さを入れてSOUNDをコール | | SYC1 EQU 40H ; SYSTEM CONTROL PORT1 | SSYC1 EQU 0E6C1H ; SYC1 OUT DATA (BEEP) | |SOUND:LD HL,SSYC1 | LD B,(HL) | LD A,B | OR 20H ; MAKE BEEP DATA | OUT (SYC1),A ; BEEP ON | CALL WAIT | OUT (SYC1),B ; BEEP OFF | CALL WAIT | DEC D | JR NZ,SOUND | RET | |WAIT: DEC E | JR NZ,WAIT ↓ RET ここまで  ●サウンドボードII使用時(fm.ipl立ち上げ時)のメモリマップ    メインRAM     裏RAM  ――――――――――              アセンブリ言語でプログラムを  FFFF ワークエリア              書かない限り、音源を使う事の代  E600                     償として左図の様に、無条件で大  ‐‐‐‐‐‐‐‐‐‐             量のメモリを占有されてしまう。     音源拡張命令               音を使えばその数だけデータも  E100 ワークエリア              必要になり、フリーエリアも減少  ‐‐‐‐‐‐‐‐‐‐             するので、他の仕事のためのプロ     新音源II対応             グラムも置けなくなる。     ワークエリア               つまり実質、アセンブリで必用  D000 命令エリア               に応じたデータのみ使用する自家  ‐‐‐‐‐‐‐‐‐‐             製音源ドライバを書かない限り、  ???? フリーエリア ←CLEAR文で指定   曲の演奏と同時にマトモな仕事(  ‐‐‐‐‐‐‐‐‐‐             例えばゲーム)をするには無理が  8000 各種内部使用              ある。マシンに対して音源が重す  ‐‐‐‐‐‐‐‐‐‐ ――――――――    ぎるのである             テキストエリア     **図で誤解の無いように**    BASIC    3000          メインRAM     ROM     ‐‐‐‐‐‐‐‐     8000〜FFFFの内             新音源II対応      D000〜E5FF             コードエリア      裏RAM  0000         0000           0000〜7FFFの内  ―――――――――― ――――――――     0000〜2FFF                         が音源に取られるRAMである  ●PC‐8801シリーズのサウンド機能の歴史  音源年表   年度    機種        音源            機能  1981  PC-8801    BEEP音        特に無し  1983  PC-8801mkII  ボリューム付BEEP音  BASICで2オクターブ                            相当の音階を発生できる  1985  PC-8801mkIISR サウンドボード搭載    BASICにMMLが拡張               FM3音SSG3音(注1)  された  1987  PC-8801FA、MA  サウンドボードII搭載   ボードに合わせMMLが強               FM6音SSG3音    化。擬似ステレオ可(注2)               リズム6音ADPCM1音  注1.SSG=Synthesized Sound Generator の略語。であるが、当時の8ビット機     の殆どに標準搭載されていたPSG=Programmable Sound Generatorと同一。      YAMAHA製音源チップに搭載のPSGをSSGと言うが、それとは別に     NEC自身で Synthesized Sound Generator と命名し、呼称していた。      疑う方は、88や98のNEC製サウンドボードのマニュアルを読むべし  注2.擬似ステレオ=音を個別に左右に振り分ける機能。ある音は右のみ、別の音は     左のみとなるところが、本当のステレオサウンドとの相違点  ●機種別音源搭載表             旧サウンド サウンドII  1981 PC-8801       ‐     ‐  1983 PC-8801mkII     ‐     ‐  1985 PC-8801mkIISR    ●     ‐  ← ビジネス用途は16ビット機に     PC-8801mkIITR    ●     ‐   シフトしたこの頃、ゲーム専用機     PC-8801mkIIFR    ●     ‐   じゃないぞというNECの意思表     PC-8801mkIIMR    ●     ‐   示に音源を付けなかった88も、  1986 PC-8801FH      ●     ‐   時流には勝てず音源搭載     PC-8801MH      ●     ‐  1987 PC-8801FA      ‐     ●  ← 開き直って、ホビー機の頂点を     PC-8801MA      ‐     ●   謳い、ヘビーな音源を搭載するも  1988 PC-8801FE      ●     ‐   時代は既に PC-9801であった。こ     PC-8801MA2     ‐     ●   の頃、MSXがブームの頂点に(注1)

注1.1987年末〜88年始の販売台数A1FとF1XD合わせて22万台。他社も    合わせると30万台に迫った。87年度のMSXの総ソフト販売本数は、PC−    9801シリーズを抑えてパソコン中のトップであった

ページのTOPへもどる

このページは、1024×768画面に合わせて作りました。ちゃんと見えなかったらスミマセン