
                    j80 - PC-8000 Series Emulator
                      Release 6.91 (Ver. 6.6.19)
           Copyright (c)2000-2016 Shigekazu Hirao (HAL8999)
    +------------------------------------------------------------+

■はじめに■

・j80 は、NEC PC-8000シリーズ(＋α)をエミュレートするプログラムです
    本体        ：下記機種をcfgファイルで指定して起動します
                  [80系]
                  ・1-1 PC-8001(32K RAM) + DiskIFなど + 拡張RAM + PCG8100
                    1-2 PC-8001(パレット追加) + PCG8100(フルドットカラー化)
                  ・2   PC-8001mkII       (+ 漢字ROM + 拡張RAM)  + PCG8200
                  ・3   PC-8001mkIISR     (+ 漢字ROM + 拡張RAM)
                  [88系]
                  ・4   PC-8801/mkII      (+ 漢字ROM + 拡張RAM)  + PCG8800
                  ・5   PC-8801(V2:4MHz機)
                     -1 PC-8801mkIISR/TR  (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                     -2 PC-8801mkIIFR/MR  (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                  ・6   PC-8801(V2:8MHz機 : BASICモードSW廃止)
                     -1 PC-8801FH/MH      (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                     -2 PC-8801FA/MA  *1  (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                  ・7   PC-8801(V2:8MHz機)
                     -1 PC-8801FE         (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                     -2 PC-8801MA2    *2  (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                  ・8   PC-8801(V2:8MHz-ノーウェイト機)
                     -1 PC-88FE2          (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                     -2 PC-88MC       *3  (+ 漢字ROM + 拡張RAM) (+ PCG8800)
                  *1) PC-8801FH/MH + PC-8801-24 を含む
                  *2) PC-8801FE    + PC-8801-25 を含む
                  *3) PC-8801FE2   + PC-8801-25 を含む

    ディスプレイ：PC-8041(Green),PC-8042(Color),PC-8047(Amber),アナログ など
    ライトペン  ：PC-8045
                  グラフィックペン      (ADDCOM製 / 8801専用)
    マウス      ：シリアルマウス        ※80系では未対応
                  バスマウス            (88V2機)
    ディスクsys ：PC-8031-2 など        (2HD対応)        (FDCに未実装の機能あり)
    サウンド@BUS：下記デバイスセットのうち一つを選択できます
                  ・PC-8801-10          ※MIDI系未対応   (AY-3-8910 x2)
                  ・PC-8801-11                           (YM2203    x1)
                  ・PC-8801-10 + PC-8801-11              (AY-3-8910 x2 + YM2203)
                  ・PC-8801-23                           (YM2608    x1)
                  ・GSX8800                     ２枚挿し (AY-3-8910 x4)
                  ・HMB-20(響)          ※MIDI系未対応   (YM2151    x1)
                  ・PCS-8081(テクノシンセ)      ４枚挿し (AY-3-8910 x4)
                  ・PCS-8007(ルンルンシンセ)    ２枚挿し (AY-3-8910 x4)
                  ・アドコムサウンドユニット    ６音拡張 (SN76489   x2)
                  ・PSGによる音楽自動演奏[I/O   1981.12] (AY-3-8912 x1)
                  ・12chシンセユニット   [Oh!PC 1982. 8] (AY-3-8910 x4)
                  ・1bit PCM             [Oh!PC 1983. 7]
    サウンド@PRN：下記デバイスセットのうち一つを選択できます
                  ・ミュージックアダプタ [ASCII 1982.12] (SN76489   x1)
                  ・JAST SOUND
                  ・Voice Box
                  ・メロディールーチン   [ASCII 1981. 3] (1bitPCM  PD0)
                    PC-8001による音声合成[ASCII 1980. 8] (1bitPCM  PD0)
                  ・スピーチ・シンセ     [I/O   1982. 2] (1bitPCM  PD7)
    ※PCG8100の「フルドットカラー化＋パレット追加」は暫定実装です
    ※80系の拡張RAM(PC-8012-02)は bank0 のみの対応になります
      PC-8801-02N系を併用した場合は 02N が優先されます (実機動作未確認)
    ※88系の拡張RAMは PC-8801-02N系の対応になります
    ※PC-8801-10 の MIDI系は未実装です
・j80 は無償です
・再配布はご自由にどうぞ
・Javaで書かれており、いろんな環境で走るかもしれません
・アプレットではありません
・動作させるには、実機から吸い出したROMイメージか、それに相当するBIOS
  プログラムが必要です


■警告■

・j80 は無保証です
・j80 では、8001上のプログラムによって母艦システムに問題を起こすことがあります
    ・cmt出力の無限ループによるディスク資源圧迫
    ・プリンタ出力の無限ループによるディスク資源圧迫
  cmt出力は(実機と違い)かなり高速に動作するので、特に注意が必要です
・「システム時計が進んでしまう」という情報が寄せられています


■動作環境■

・Java2SE 1.3.0〜 (JDK または JRE 1.3.0〜)
  ※Linux は、Java2SE 1.3.1〜 推奨
  ※フルスクリーン化は 1.4.0〜 対応 (制限あり：bugs.txt 参照)
・JDK または JRE は、別途入手してください
   > JDK J2SE1.3  http://java.sun.com/j2se/1.3/ja/index.html
   > JRE J2SE1.3  http://java.sun.com/j2se/1.3/ja/jre/index.html
・BASIC, FONT, DiskBIOS(オプション) 等のバイナリデータが必要です
  上記ファイルは添付していません。各自で用意してください
  ※80系のBASIC, DiskBIOS は、別途配布のツール類で吸出し,作成,変換できます
    ../util/GetROM/index.cas を参照してください
    CASファイルはテキストファイルです


■制限事項および確認している不具合等■

・bugs.txt を参照してください


■実行方法■

・コンソールから j80.jar のディレクトリに移動して
    java -jar j80.jar [foo.cfg]
・PATHが通っていない(ファイルコピーでJDKをインストールした)場合は、
    j80.jar のディレクトリに移動して
    /usr/java/jre1.3.0_02/bin/java -jar j80.jar [foo.cfg]
  などとしてください


■設定ファイル■

・起動時に設定ファイルが指定された場合、j80 はその設定を使います
・指定が無かった場合、j80は自分の場所の _j80.cfg(ユーザーcfg) を探します
  _j80.cfg は各自で用意してください
・_j80cfg も見つからなかった場合 j80.cfg を使います
  j80.cfg はバージョンアップ時に上書きしてしまう恐れがあります
・ファイルの詳細は j80.cfg のコメントを参照してください
  また、./config/ に設定例を用意しましたので参考にしてください


■動作機種■

・j80 は、下記機種(構成)に対応しています
  ・PC-8001      ：PC-8001(32K RAM) + DiskIFなど + 拡張RAM + PCG8100
  ・PC-8001改    ：PC-8001(パレット追加) + PCG8100(フルドットカラー化)
  ・PC-8001mkII  ：PC-8001mkII      (+ 漢字ROM) + PCG8200
  ・PC-8001mkIISR：PC-8001mkIISR    (+ 漢字ROM)
  ・88(V1)       ：PC-8801/mkII     (+ 漢字ROM) + PCG8800
  ・88(V2:4MHz)  ：PC-8801mkIISR/TR (+ 漢字ROM) +(PCG8800)
  ・88(V2:4MHz)  ：PC-8801mkIIFR/MR (+ 漢字ROM) +(PCG8800)
  ・88(V2:8MHz)  ：PC-8801FH/MH~    (+ 漢字ROM) +(PCG8800)
  ・88(V2:8MHz)  ：PC-8801FA/MA~    (+ 漢字ROM) +(PCG8800)※OPN機+8801-24,25含む
  指定方法は、j80.cfg を参照してください。
・「動作モード(BASIC の種類)」ではなく「ハード構成」の違いを実装し分けています


■メニュー・コマンド■

・j80.cmd のコメントを参照してください
・j80.cmd の内容は自由に編集してかまいません
  ・バージョンアップ時の上書きにご注意ください
  ・[Ctrl] は PC-8x01 が見るので使わないほうが良いと思います
    コマンドが優先するので、PC-8x01 に届かなくなります


■実装上の注意：キーボード■

・キーボードのエミュレーションは、２つのモードを用意しています
  1) ダイレクトモード
     ・キーの ON/OFF の状態を、リアルタイムに取得するモードです
     ・複数キーの同時押しを認識することができます
       ただし、同時押し可能なキーの数,種類は母艦機の仕様・性能に依存します
       詳細は ./doc/keymap.txt の「制限事項」を参照してください
     ・キーマップファイルを用意することで、様々なキーバインドを切り替えられます
       キーマップの定義方法や注意点は ./doc/keymap.txt を参照してください
     ・キーを押した状態のママになってしまったら(Winキーとの同時押しなどで再現)
       キーボードのみリセットしてください

  2) バッファモード
     ・バッファモードで動作する機能
       ・<R/KANA>モード (ローマ字カナ変換)
       ・タッチパネル入力
       ・ファイル入力/クリップボード入力(入力代行機能)
     ・キーの「同時押し」は、[KANA][Ctrl][SHIFT][GRPH]のみが可能です
     ・ローマ字カナ変換時は、使うキー以外はダイレクトモードと同じ動作をします
       ただし、バッファに残っているデータがある場合は無視されます
       <R/KANA> モードでは、[カナ][CAPS]ロックは、無視されます
     ・ファイル入力/クリップボード入力時の改行コードについて
       ・CR+LF → [RET] +「何もしない」(一打分休む)
       ・CR    → [RET]
       ・LF    → [RET]
     ・バッファの動作は以下のとおり
        -----------+--------+----+----+----+----+--------+----------
              phase|(in待ち)| 0  | 1  | 2  | 3  |(in待ち)| 0
        -----------+--------+----+----+----+----+--------+----------
        SHIFT等    |        |----|----|----|    |        |----...
        通常のキー |        |    |----|----|    |        |    ...
        -----------+--------+----+----+----+----+--------+----------
        ・in待ち   ：キーボードのポートが読まれるまでバッファは読まれません
        ・phase 0  ：SHIFT などのマスクキーだけを押した状態にします
        ・phase 1,2：目的のキーも押した状態にします
        ・phase 3  ：「何も押していない」状態にします
       ※[Type Speed]で設定するcpm値は in待ち の時間が 0 の場合の理想値です

■実装上の注意：CMTインターフェイス■

・ロードは bas,bin,cas,cmt,t88,n80 に対応
・セーブは cmt のみ対応
・使用中はコンソールに [*___*] が表示されます
・ロード側は、ファイル指定時にメモリ上に展開して使用します。
  セーブ側と同じファイルを指定可能ですが、更新された部分を読みたい場合は、
  ファイルを開きなおす必要があります。
・8800シリーズでは、ロード時に割り込みを使うことが多いようです
・ロード用イメージは、最後まで読んだ後巻き戻されます
・ロード可能なイメージ
  ・CAS
      casファイルに従ってcmtデータを作ります
      各コンバーターの動作の詳細は、cas-job.txt を参照してください
      タイトル毎の頭だし、説明表示、推奨タッチパネル・キーマップの指定が可能
  ・BAS
      ファイル全体をcmtに変換します (リンクチェックはおこないません)
  ・BIN
      cmtに変換します
  ・T88
      データブロックをcmtとして抽出ます
  ・CMT
      ファイル全体を抽出します
      フォーマット解析が成功したものは頭出しができます
  ・N80
      独自ローダー＋モニタ形式に変換します
      モニタ形式ですが、サイズの関係で L コマンドではロードできません


■実装上の注意：プリンター■

・プリンタポートへの出力をファイルに書き出します
  ファイルへは常に追記されます
・出力ファイルは *バイナリファイル* です (LLISTなどは、そのまま読めますが)
・出力中(ファイルが open() になっている)は、コンソールに表示が出ます
・<CR><LF>発見 または RESET でファイルを(一旦)閉じます


■実装上の注意：カレンダー・タイマー割り込み■

・カレンダー、タイマー割り込み、キーボードのバッファモードや連射機能での
  時間計測は、CPUの消費ステート数をカウントしています
  メニューの時間単位の表現はこの時間をベースにしています
  環境によらず同じ動作をするはずです (バッファだけ先走るなんてことはない)
  従って母艦の時計とは同期しませんので「時計」として使うに問題があります
・OverDrive はCPUの消費ステート数を減らして実現しています (Z80 DX4 なんちて)
  フレームレートやVRTC、クロック割り込みは倍速化しません
  (CPUからは遅くなったように見える)
  ...VRTCで速度調整しているゲームなどでは、速度が変わらないことになりますね


■実装上の注意：Diskシステム■

・FDCの実装は不完全です
・ディスクアクセス中は、コンソールに表示が出ます
・イメージが更新された場合、pause 時にD88ファイルを更新します
  ※Windowsでは、コンソールの[X]で閉じた場合は「強制終了」になるようです
    エミュレータ側で終了を認識できないようなので、D88ファイルは更新できません
・結合イメージに書き込みをした場合、更新タイミング毎にバックアップを作ります
  同一ファイル中の複数のDiskが更新されていた場合は、一回の更新タイミング毎に
  更新されたDisk枚数分のバックアップが追加されます
・バックアップはエミュレータ側では消しませんので注意してください
  ユーザーディスク用の特殊なフォーマットなどの動作報告がある程度たまるまで、
  「バックアップ省略」モードは実装しません
・CDOS-II の 2HD フォーマットに暫定対応しています
  特定条件の時だけ有効なパッチとして実装しているため、
  安全装置「トレースモード(DEBUG:6 コマンド)のみ有効」を設けています
  問題無いようなら安全装置を除去しますので、レポートをお願いします


■実装上の注意：PC-8800シリーズ■

・80系と違い、機種の区分が雑です
  モノクロ出力まわりなど、実機にない機能が使えてしまったりします
・モノクロ出力(特にテキスト)は実機と表示が異なるかもしれません
・「高解像度ディスプレイ」は仮対応です
・FA/MA以降でもデジタル出力が使えてしまいます
・400ラインモードは仮対応です


■謝辞■

・j80 作成にあたり、次の方々に協力していただきました

  [情報・資料提供]
  ・へず 様             PC-8031-2, PC-8001mkII など、実機および資料提供
  ・apaslothy 様        PC-8001mkII のマニュアル, 情報提供, 動作報告
                        PC-8001mkIISR のマニュアル, 情報提供, 動作報告
                        GSX8800(HAL研) のマニュアル, 情報提供
  ・モ〜リン 様         PC-8001mkIISR の資料捜索・提供
  ・けんちゃん 様       PCS-8081(テクノシンセ), PCS-8007(ルンルンシンセ) 提供
  ・松本人生 様         PC-8001(ver1.0), グリーンモニタ提供
  ・lightning           PC-8001, DiskIF(3rd製)など提供
  ・epoxy 様            PC-8801, グリーンモニタ提供
  ・akutsu 様           uPD3301A CRTC ユーザーズ・マニュアル 提供
  ・しおんパパ 様       グラフィックペン(ADDCOM製ライトペン)に関する資料提供

  [j80 アルファ・テスト]
  ・FX-702P 様          <fx@max.forum.ne.jp>
  ・apaslothy 様
  ・HTA 様              <hideharu@pc8001.zzn.com>

  [j80 Release2 個別テスト]
  ・apaslothy 様

  [j80 Release3 アルファ・テスト]
  ・apaslothy 様
  ・モ〜リン 様
  ・けんちゃん 様

  [その他テスト]
  ・あおさん 様         Win2Kでのメニューの不具合再現テスト
  ・apaslothy 様        MacOS-Xでの動作テスト
                        GSX8800(HAL研)対応テスト
                        アドコムサウンドユニット対応テスト
                        PC-8001mkIISRの動作速度に関する調査協力
  ・nao 様              Linux上での不具合再現テスト
  ・モ〜リン 様         GSX8800(HAL研)対応テスト
  ・くれゆに 様         PC-8801FH 実機調査
                        ベンチマークプログラム開発
  ・kitahei88 様        PC-8801mkIISR 実機調査


・j80 作成にあたり、以下の資料を参考にしました
  ※webサイトのアドレスは、参考にした当時のものです

  [PC-8001に関する資料]
  ・PC-8001 ユーザーズマニュアル                                         NEC
  ・uPD3301A CRTC ユーザーズ・マニュアル                                 NEC
  ・PCG8100 マニュアル                                             HAL研究所
  ・Z-80 アセンブリ プログラミング  船山郁夫・関口英幸          サイエンス社
  ・PC-8001 徹底解析                新藤義昭                        ナツメ社
  ・PC-8001 活用研究                                                  工学社
  ・懐古庵  (NEC uPD780 未定義命令) http://cdlmaster.hoops.livedoor.com/
  ・try's page (NEC uPD3301 の情報) http://www.st.rim.or.jp/~nkomatsu/
  ・PC-8001 テクニカル マニュアル   ASCIIラボ       ASCII 1980.12 pp.129-144
  ・PC-8001内部の解析[2]  (uPD3301) 長沼孝二        Oh!PC 1982.10 pp. 57- 61

  [PC-8001mkIIに関する資料]
  ・懐古庵                          http://cdlmaster.hoops.livedoor.com/
  ・PC-Techknow8801mkII             平松達雄・八木良一        システムソフト
  ・80mkII愛友会 別館 (第２水準漢字ROMのアクセス方法)
         http://www5f.biglobe.ne.jp/~apaslothy/cgi_bin/adiary/adiary.cgi/068

  [PC-8001mkIISRに関する資料]
  ・懐古庵                          http://cdlmaster.hoops.livedoor.com/
  ・80mkII愛友会 別館 (第２水準漢字ROMのアクセス方法)
         http://www5f.biglobe.ne.jp/~apaslothy/cgi_bin/adiary/adiary.cgi/068

  [PC-8801/mkII/SRに関する資料]
  ・懐古庵                          http://cdlmaster.hoops.livedoor.com/
  ・PC-Techknow8801mkII             平松達雄・八木良一        システムソフト
  ・ぶるー牧場(掲示板過去ログ)      http://www1.plala.or.jp/aoto/
  ・M88 BBS Log Archive             http://www.retropc.net/cisc/m88/
  ・Crazy Unit(ベンチマークテスト)  http://www7b.biglobe.ne.jp/~crazyunit/

  [Diskに関する資料]
  ・PC-8001 徹底解析                新藤義昭                        ナツメ社
  ・Old&New      (PC-8031 カタログ) http://www.sofarts.com/computer/index.html
  ・(株)ウェブテクノロジ (コマンド) http://www.webtech.co.jp/
  ・(FDC仕様) http://andercheran.aiind.upv.es/~amstrad/docs/upd765a/necfdc.htm
  ・ぶるー牧場           (D88 仕様) http://www1.plala.or.jp/aoto/
  ・PC-9801シリーズ ザ・プロテクト  井上智博                    秀和システム

  [シリアルキーボードに関する資料]
  ・PC-8801覚え書き       http://www.maroon.dti.ne.jp/youkan/pc88/index.html

  [シリアルマウスに関する資料]
  ・アスキーマウスセット取扱説明書                                  アスキー

  [PCGカラー化＋パレットに関する資料]
  ・PCGをフルドット・カラーに       高木浩光          I/O 1983.12 pp.203-206
  ・http://java-house.jp/~takagi/home/publications/extra/io198312.html
  ・http://takagi-hiromitsu.jp/diary/20080105.html                  高木浩光

  [音源に関する資料 - チップに関する資料]
  ・MSX2 Technical Hand Book (AY-3-8910仕様)                  アスキー出版局
  ・似非PLDプロジェクト  (PSG ノイズジェネレータ)
                    http://www.hat.hi-ho.ne.jp/tujikawa/esepld/keywords.html
  ・YM2203データシート                                                ヤマハ
  ・YM2203アプリケーションマニュアル                                  ヤマハ
  ・YM2608アプリケーションマニュアル                                  ヤマハ
  ・YM2151アプリケーションマニュアル                                  ヤマハ
  ・YM3802アプリケーションマニュアル                                  ヤマハ
  ・IC Collection        (SN76489仕様)
                   http://www.st.rim.or.jp/~nkomatsu/peripheral/SN76489.html
  ・シンセ・アンプラグド (FM音源実装詳細)     http://d.hatena.ne.jp/pcm1723/
  ・P/ECE研究記録〜ADPCMの仕組み (ADPCMエンコード/デコード詳細)
                                    http://www.piece-me.org/piece-lab/adpcm/
  ・Bookworm's Library (OPN/A SSG-EG テストプログラム)
                             http://www.geocities.jp/submarine600/index.html

  [音源に関する資料 - サウンドボード類マニュアル]
  ・PCS-8081マニュアル                                 Pax Electronica Japan
  ・PCS-8007マニュアル                                 Pax Electronica Japan
  ・GSX8800マニュアル                                              HAL研究所
  ・「響」マニュアル                                               HAL研究所

  [音源に関する資料 - サウンドボード製作記事]
  ・PC-8001による音声合成           藤原敏樹                   ASCII 1980. 8
  ・メロディールーチン              笹哲彰                     ASCII 1981. 3
  ・PC-8001ミュージックアダプタ     秋山秀樹                   ASCII 1982.12
  ・PSGによる音楽自動演奏           佐藤善久                     I/O 1981.12
  ・スピーチ・シンセサイザ          Dr.Stamp                     I/O 1982. 2
  ・ADDCOMサウンドユニット(8001用)  羽立一則                     I/O 1982. 6
                   (80mkII/8801用)  阪野紘昭                マイコン 1984. 2
  ・12chシンセサイザーユニット      安立隆一                   Oh!PC 1982. 8
  ・スピーカーとLEDを使って！       Oh!PC工作班                Oh!PC 1983. 7

  [Javaに関する資料]
  ・Java(tm) House Mailing List Homepage            http://java-house.jp/ml/
  ・Java(TM) 2 SDK ドキュメント     http://java.sun.com/j2se/1.3/ja/docs/ja/
  ・Core Java2 Vol.1 基礎編         Cay S.Horstmann/Gary Cornell ASCII出版局
  ・(Sound API 関係)                JAVA PRESS Vol.15 pp.130-139  技術評論社

  [その他参考にしたもの]
  ・Manuke Station       (T88 仕様)  http://www.cug.net/~manuke/index_j.html
  ・X88000 のデバッグ機能            http://www.cug.net/~manuke/index_j.html
  ・'86 最新 TTL IC 規格表                                          CQ出版社


■その他■

・サンプル cmt の寄付歓迎
・サンプル d88 の寄付歓迎
・Helpの寄付歓迎 (たぶんHTML表示可能)


■履歴■

・history.txt を参照してください


    +------------------------------------------------------------+
        hal_8999@hotmail.com
        upd780c1@gmail.com
        https://twitter.com/upd780c1/
        http://www.geocities.jp/upd780c1/
    +------------------------------------------------------------+
