PC-8801
調べた事を備忘録的にぽつぽつと書いておく場所です。
調べもの
垂直同期周波数
PC-8801FH(実機)を使用して1/600秒タイマ割り込み600,000回の間に垂直帰線期間になった回数を数えました。
モニタモード
| テキスト行数
| 垂直同期周波数
|
24kHz
| 20行
| 56.424Hz
|
25行
| 55.416Hz
|
15kHz
| 20行
| 61.462Hz
|
25行
| 62.422Hz
|
誤差は±0.001Hzのハズです。タイマ割り込みはピッタリ1/600秒という前提なので違うとその分ずれます。
BASICモードが違っても同じ値です。
測定はクロック4MHzで行いました。8MHzでも同じだと思います。
[TOP]
M1ウェイト
PC-8801FH(実機)でステート数とバイト数が同じでM1サイクル数が違う命令の組み合わせを一定時間繰り返し実行し、その繰り返し回数からウェイトの有無を調べました。
2013/06/21
表に計測結果の数値と8MHzでの結果を追加
2013/07/28
8MHzモード結果の備考を更新
4MHzモード結果
| BASICモード
|
N
| N88
|
V1S
| V1H
| V2
|
メモリウェイト
| OFF
| あり 4486 431C
| あり 4486 431C
| なし 4CB6 4CB6
| なし 4CB6 4CB6
|
ON
| なし 3CB8 3CB7
| なし 3CB7 3CB7
| なし 3CB7 3CB8
| なし 3CB8 3CB7
|
2つの16進数はM1サイクル数の違う命令の繰り返し回数
※メモリウェイトONのときのNモードおよびN88 V1SモードはメモリウェイトとM1ウェイトの期間が重なっている?
8MHzモード結果
| BASICモード
|
N
| N88
|
V1S
| V1H
| V2
|
メモリウェイト
| OFF
| なし 7AA2 7AA2
| なし 7AA2 7AA2
| なし 7A9D 7A9D
| なし 7A9D 7A9D
|
ON
| なし 657F 657F
| なし 657F 657F
| なし 657F 657F
| なし 657F 657F
|
※メモリウェイトOFFのときN、N88V1Sモードの方がN88V1H、V2モードよりも高い数値になっていますがこれは高速RAMの読み込みにウェイトが入ることが原因のようです。
割り込みベクタは
F300H〜にあり、その読み込みにウェイトが入るようです。
比較には以下の命令を使用しました。
INC IX LD DE,0000H LD DE,0000H LD DE,0000H LD DE,0000H
| NEG LD IX,0000H LD IX,0000H LD IX,0000H
|
[TOP]
I/Oポートアクセスウェイト
PC-8801FH(実機)の4MHzモードでステート数とバイト数が同じでポート入出力ありとなしの命令の組み合わせを一定時間繰り返し実行し、その繰り返し回数からウェイトの有無を調べました。
調べたのは40Hの入出力のみです。他のポートは調べていません。
結果はメモリウェイト設定、BASICモード(N,N88 V1S/H/V2)によらずウェイトなしでした。
比較には以下の命令を使用しました。
LD A,00H OUT 40H,A または IN A,40H INC HL INC HL INC HL INC HL INC HL
| LD DE,0000H ADD HL,DE ADD HL,DE NOP NOP NOP NOP
|
[TOP]
実効クロック
PC-8801FH(実機)の4MHzモードで垂直帰線期間割り込み10,000回の間にカウンタを増加させてループするだけのプログラムを実行し、
画面表示ありとなしのカウンタ値からDMA転送負荷を除いた実効クロック(プログラムで使用可能なクロック数)を計算しました。
使用した実機の垂直同期周波数は時間とともにわずかづつ高くなっていく傾向があり、
計測値も変化するので誤差がどの程度になるか予想がつかなかったのですが、計算してみるとそれほど大きな影響は無かったようです。
起動後2〜3時間経過したときの計測値から求めた値です。
モニタモード
| テキスト行数
| BASICモード
|
N
| N88
|
V1S
| V1H
| V2
|
24kHz
| 20行
| 3181094Hz
| 3993600Hz
|
25行
| 2996112Hz
|
15kHz
| 20行
| 3108547Hz
|
25行
| 2870004Hz
|
メモリウェイト設定によるDMA転送負荷の違いはありませんでした。
M1ウェイトやメモリウェイトONのときの実際のパフォーマンスはこの値からさらに低下します。
こちらは起動後の経過時間による違いを調べた結果です。
Nモード、メモリウェイトOFF、モニタ24kHz、テキスト25行表示で計測。
経過時間
| 垂直同期周波数
| 実効クロック
|
約1時間後
| 55.416Hz
| 2996112.498744Hz
|
約6時間後
| 55.416Hz
| 2996112.027708Hz
|
55.4161111Hz
| 2996110.027629Hz
|
約1時間後のときの垂直同期周波数が55.416Hzピッタリだと仮定して計算した約6時間後の周波数は55.4161111Hz。
約6時間後のクロックを両方の値で計算するとその差は2Hzになりました。
正確な垂直同期周波数がわからないことによる誤差は±数Hz程度のようです。
[TOP]
セットアップ画面キャプチャ画像
PC-8801FH(実機)でPCキーを押しながらリセットして入るセットアップ画面をキャプチャしてみました。
機種によって多少違いがあるそうなので誰かがまとめて比較できるページを作ってくれるのを期待。
画像クリックで
セットアップ画面キャプチャのページへ移動します。
[TOP]
ROMの型番と内容
所持しているPC-8801FHでは以下のROMが使用されていました。
用途
| 型番
| アドレス
| 内容
|
メインシステム
| μPD23C1000C
| 00000-07FFF
| N88-BASIC
|
08000-0FFFF
| N-BASIC + モニタ
|
10000-11FFF
| E0
|
12000-13FFF
| E1
|
14000-15FFF
| E2
|
16000-17FFF
| E3
|
18000-1C7FF
| セットアップ処理
|
1C800-1FFFF
| 未使用(全てFFH)
|
サブシステム
| μPD23C64EC
| 00000-007FF
| DISK
|
00800-00FFF
| ?(00000-007FFと少し違う内容)
|
01000-01FFF
| 未使用(全てFFH)
|
漢字フォント
| μPD23C2000C
| 未確認
|
メインとサブのROMは吸い出し回路を作って中身を吸い出して確認しました。
漢字ROMはピン数や配置が全然違ったので型番だけ確認。
[TOP]
テキストカラーと白黒グラフィック
PC-8801FH(実機)でSCREEN 1の白黒グラフィックモードにしたときのテキストカラーによる表示変化を調べた結果です。
画像クリックで
調査結果のページへ移動します。
[TOP]
基板写真
PC-8801FHを分解したときに撮った写真です。
ずいぶん前に携帯電話のカメラで撮ったもので手ぶれやライトの反射があるので機会があれば撮り直したいです。
画像クリックで
基板写真のページへ移動します。
[TOP]
テストプログラム等
テストプログラム
上記の調べもので使用したテストプログラムです。
N-BASIC用とN88-BASIC用があります。
N-BASIC用は割り込みを使用しているのでPC-8001では動作しません。PC-8801シリーズのN-BASIC用です。
2013/07/28 更新
RAM、GVRAMのテストを追加
- test-prog_20130728.zip (72,690バイト)
MD5 (test-prog_20130728.zip) = 244d3dae9ca38b496dbb087320268420
SHA256 (test-prog_20130728.zip) = 1d7d85f18b672a220f3e0f6c72a77f84b97332deebba357e481c8de421ff939d
[TOP]
テストプログラム2 (まとめて実行ver.)
上の
テストプログラムのうち、t-m1、t-rom、t-ram、t-ram2、t-gram、t-gram2を連続して実行するバージョンです。
PC-8801シリーズのN-BASIC用とN88-BASIC用の2種類。
t-gramとt-gram2はN88-BASIC用のみ、t-gram2はテキスト25行モードのみ実施し、内容も少し拡張しています。
実行前に環境設定を調べて表示しますが8MHzノーウェイトモードは良く分っていないのでメモリウェイトの判定に失敗する可能性があります。
テスト結果はファイルに保存し、印刷プログラムでカンマ区切りで出力します。
印刷プログラムはエミュレータの印刷(ファイル出力)機能を想定しています。実機プリンタでは使用しないでください。
2013/11/17 バグ修正
PC-8801初代およびmkIIでメモリウェイトONでもOFFと誤判定してしまう不具合を修正。
判定に使用するテストを変更し、念の為に常にメモリウェイト設定の確認を行うように変更しました。
PC-8801MC/FE2の8MHzノーウェイトモードはメモリウェイトONにしてもOFFとして動作するので常に判定失敗します。この場合は確認でNと入力してください。
PC-8801FH実機での計測データは修正版の動作確認で採取したものに差し替えました。前のものとは誤差程度の違いしかないはずです。
- test-prog2_20131117.zip (48,059バイト)
MD5 (test-prog2_20131117.zip) = b1c157b29598f9a41786b4c21001b2fc
SHA256 (test-prog2_20131117.zip) = ccb930e58167fc0a5e5944c1dc9beb59b40de2594fb2828c2dd89fea8d871d60
[TOP]
RAM内容保存ツール
PC-8801シリーズの起動直後のRAM内容を保存するプログラムの入ったD88形式ディスクイメージとディスクイメージから保存データを取り出すWindowsコマンドコンソール用プログラムのセットです。
保存するのはメインRAMと、高速RAM(V1H/V2モードのみ)です。
拡張RAMには対応していません。
メインRAMの
C000H〜
C0FFHはプログラムがロードされた状態で保存します。
2014/02/08 ドキュメントのみ修正
ソースのコメントに激しく間違っている部分がありました(;_;)
- save_ram_20140208.zip (40,735バイト)
MD5 (save_ram_20140208.zip) = 5859bafde44f8a98d561c45859723905
SHA256 (save_ram_20140208.zip) = 00f87b7a0fecc1b70000297a89d4356996de10bdb906429124dcafe331307ed2
こちらは拡張RAMも保存するバージョン。D88形式ディスクイメージのみ。
実機動作未確認です。
人柱ver.ということで。
- save_ram2_20140208.zip (15,785バイト)
MD5 (save_ram2_20140208.zip) = e513c33f332112c2d4ac032818eb2535
SHA256 (save_ram2_20140208.zip) = bdeb0ff45c5374c1922e34cad3487837c9e2392484d31a7e4609cec8c4d8e48b
[TOP]
N-BASICプログラム
beep鍵盤
N-BASIC用の鍵盤プログラムの入ったcmt形式テープイメージです。
ビープ音のon/off周期を変えて音程を作っています。
音程と音長はあまり正確ではないです。
また、プログラム上は2オクターブのラから7オクターブのミまで出すようになっていますが、まともに鳴る音はそんなに多くないです。
2013/07/11 バグ修正
MML入力スロット選択前のキーバッファクリア処理のgoto先が間違っていました。
2013/07/28 バグ修正
PC-8001系のROMウェイトとPC-8801系のメモリウェイトの仕様を混同していたためPC-8001初代では少し高い音になっていたのを修正。
PC-8801初代もメモリウェイトOFF設定に変更しましたがこちらは正しいかどうか確認できていません。
- beep_keyboard_20130728.zip (36,992バイト)
MD5 (beep_keyboard_20130728.zip) = 4fbb476f042c54202341e91c7cab1bf3
SHA256 (beep_keyboard_20130728.zip) = 69db958452f776e6d969e35e842b3851218ff15e1962c24c14f1ce6dcddbf457
およそテンポ150の4分音符の長さの音が鳴ります。
|
かなり機能が制限されますがMMLを入力して自動演奏するモードもあります。
|
[TOP]
[戻る]