[戻る]

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の白黒グラフィックモードにしたときのテキストカラーによる表示変化を調べた結果です。
COLOR 6,4
画像クリックで調査結果のページへ移動します。
[TOP]

基板写真

PC-8801FHを分解したときに撮った写真です。
ずいぶん前に携帯電話のカメラで撮ったもので手ぶれやライトの反射があるので機会があれば撮り直したいです。

基板写真
画像クリックで基板写真のページへ移動します。
[TOP]

テストプログラム等

テストプログラム

上記の調べもので使用したテストプログラムです。
N-BASIC用とN88-BASIC用があります。
N-BASIC用は割り込みを使用しているのでPC-8001では動作しません。PC-8801シリーズのN-BASIC用です。
2013/07/28 更新
RAM、GVRAMのテストを追加
[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実機での計測データは修正版の動作確認で採取したものに差し替えました。前のものとは誤差程度の違いしかないはずです。
[TOP]

RAM内容保存ツール

PC-8801シリーズの起動直後のRAM内容を保存するプログラムの入ったD88形式ディスクイメージとディスクイメージから保存データを取り出すWindowsコマンドコンソール用プログラムのセットです。

保存するのはメインRAMと、高速RAM(V1H/V2モードのみ)です。
拡張RAMには対応していません。
メインRAMのC000HC0FFHはプログラムがロードされた状態で保存します。
2014/02/08 ドキュメントのみ修正
ソースのコメントに激しく間違っている部分がありました(;_;)

こちらは拡張RAMも保存するバージョン。D88形式ディスクイメージのみ。
実機動作未確認です。人柱ver.ということで。
[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設定に変更しましたがこちらは正しいかどうか確認できていません。
キーボードモード
およそテンポ150の4分音符の長さの音が鳴ります。
MML入力モード
かなり機能が制限されますがMMLを入力して自動演奏するモードもあります。
[TOP]
[戻る]