Author: AKIKAWA, Hisashi

# PC-6001mkII/6601用互換BASIC変更履歴

## 2025.6.6

Ver.0.5.2公開。

- 新たにSUBCPU.62とSUBCPU.66 (中身は同じ) を同梱しました。
- 対応ROM内ルーチンが増えました。(2286h,2296h,2874h,3913h)
- 以下の命令についてN60-BASICと同じアドレスに変更。STICK(2236h), STRIG(2256h), PRESET(2D37h), PSET(2D3Ch)
- バグを修正。
  - VAL("& ")がエラーにならない
  - RS-232Cの受信ができない
  - 整数値への丸めが正常に行われない場合がある
  - "AB"で起動するROMカセットのプログラムからリターンした時に暴走する
  - 挿入モードでCtrl-Gを押した時にスペースが挿入されない
  - ダイレクトコマンドモードでSTOP-CONTした時にエラーにならない
  - RENUMで65536〜65539に相当する行番号が生じるような指定をした時にエラーにならず、異常な行番号になる

## 2024.6.9

Ver.0.5.1公開。

- バグを修正。
  - モード1〜4のスクリーンモード2で文字のある箇所へのPSETやLINEなどが正しく動作しない
  - モード1〜4のスクリーンモード2でカラー0のPSETやLINEなどが正しく動作しない
  - chr$(12)を表示すると、直前に指定したグラフィック座標がリセットされる
  - スクリーンモードを変更した時に、カーソル位置が画面左上隅でなくCONSOLEで指定したスクロール領域の左上隅になる

## 2024.6.2

Ver.0.5公開。

- LISTL、LLISTL、LISTV、LLISTV、モード5用LCOPY、RENUM、MONの一部を実装。これにて全コマンドの実装が完了。
- 対応ROM内ルーチンが増えました。(12B5h,1578h,15BAh,15D5h,18C3h,2698h,72bdh,7381h,7384h,78FFh)
- 以下の命令についてN6X-BASICと同じアドレスに変更。LCOPY(22A6h), CLEAR(35A9h), TALK(7548h)
- PLAY文での最小発音時間を実機 (PC-6001mkII) と同程度に制限。非常に短い長さの音を含む場合に影響があります (計算通りの長さにならなくなります)。初代PC-6001とは長さが異なります。
- バグを修正。
  - PC-6601で2ドライブの時に片方のドライブにアクセスすると、もう片方のドライブのモーターもONになってしまう
  - PAD()使用後に、サウンドやジョイスティックの状態が元に戻らないことがある
  - GET@/PUT@命令で@を省略して最初にSTEPを使うとエラーになる
  - LINE、PAINT、CIRCLE命令の後に@がある時にエラーになる
  - MON命令のMコマンドでコピー元とコピー先の領域が重なる時に正しくコピーできない
  - 文字列を結合する時に+を複数並べるとエラーになる
  - INPUT#0,の後に空白を挟んでプロンプト文字列があると誤動作する
  - INPUTとVAL()で先頭がハもしくはヒだと、それぞれ+と-に解釈される
  - INPUTで閉じダブルクォーテーションの後ろに文字を続けて入力してもエラーにならない
  - サイズが256バイトの整数倍のディスクファイルを作った時に、その後??IE Errorが出るようになる
  - 行頭でDELを押すと前の行の最後の文字が壊れる

## 2023.1.9

Ver.0.4.2公開。

- バグを修正。
  - トラック0セクタ1にデータがあるフロッピーを入れてモード5で起動すると誤動作する
  - FDDありでモード3か4で起動した時に誤動作する可能性がある (eikhussiineokさん、ありがとうございます)

## 2022.12.30

Ver.0.4.1公開。

- PLAY文の継ぎ目が少し目立ちにくくなりました。
- バグを修正。
  - モード5のスクリーンモード2で文字や線の色に0を指定した時の動作が実機と異なる
  - モード5のスクリーンモード1と2で背景色に範囲外の値を指定した時の動作が実機と異なる
  - フロッピー読み込みエラー時に暴走する場合がある
  - スクリーンモード2〜4でCLOADすると右上の*が正常に表示されない (eikhussiineokさん、ありがとうございます)
  - CIRCLE命令で、半径=0、アスペクト比≧0の時にエラーになる (eikhussiineokさん、ありがとうございます)
  - 42B9hコールでBCレジスタが破壊される
  - モード1,2で拡張ROMが見えないバンク状態になっている (eikhussiineokさん、ありがとうございます)
  - PUT@命令で、表示条件としてORを指定した時に誤動作する
  - CLOAD*命令で読み込みエラー時に暴走する
  - ディスク容量に余裕があっても、サイズの大きいファイルへの書き出しで失敗することがある (eikhussiineokさん、ありがとうございます)
  - DSKO$の書式が間違っている
  - 複数ドライブのファイルをopenしていると、LOC()とLOF()が正常に動作しない
  - SAVE命令で、プログラムサイズが256バイトの整数倍、かつ奇数番目のクラスタが先頭になると、正常にセーブできない
  - INPUT文で?が行末に来る位置だと正常に入力できない (eikhussiineokさん、ありがとうございます)
  - 起動後のディスク入れ替えが考慮されていない (eikhussiineokさん、ありがとうございます)

## 2022.6.26

Ver.0.4公開。

- OPEN、CLOSE、GET、PUT、FIELD、RSET、LSET、DSKO$()、EOF()、LOC()、LOF()、PAD()及び、フロッピーディスクに対するPRINT#、INPUT#、GET@、PUT@を実装。
- 対応ROM内ルーチンが増えました。(0BEEh,1D52h,1E39h,272Dh,2905h)
- ディスクに対するRUN命令に,Rオプションを追加。
- LOAD、MERGE、ディスクに対するRUN命令に?OM Errorチェックを追加。
- 同梱のbdf2cgrom66/bdf2kanjirom/bdf2exkanji/bdf2extkanjiでの文字割り当てと変換アルゴリズムを一部変更。また、新しいオプションとして-ascentを追加。
- 1061h (ゲームキー入力ルーチン) でCフラグが変化しないように変更。
- バグを修正。
  - bdf2exkanjiが動作しない (windyさん、eighttailsさん、ありがとうございます)
  - bdf2exkanji/bdf2extkanjiで、元フォントのサイズが小さい場合8x16文字と8x8文字が異常に小さくなる
  - LIST命令のESC状態が、N6X-BASICでは無効となるキー入力で解除されることがある (じゃんめろ。さん、ありがとうございます)
  - PRINT#-1とPRINT#-2で,を使った時、初代機と同じく空白が出力されてしまう (じゃんめろ。さん、ありがとうございます)
  - SCREEN2でCLSした時のアトリビュートの値がおかしい (eighttailsさん、ありがとうございます)
  - NEWの後に不要な文字を加えてもエラーにならない (川俣さん、ありがとうございます)
  - 0/0がエラーにならない
  - ファンクションキーの文字列中にCHR$(0)があっても、続く文字が入力されてしまう
  - CSAVEやPRINT#-1での無音時間が少し短くなっていた (Ver.0.2から)
  - モード5でCOLOR第3パラメータをチェックしていない (Tsutsuiさん、ありがとうございます)
  - 割り算の結果が小さい時に暴走する (川俣さん、ありがとうございます)
  - MERGE命令使用時に、元々ある行番号と読み込むファイルにある行番号が重なると正常に動作しない (eikhussiineokさん、ありがとうございます)
  - INPUT命令で文字列変数を使用する場合、何も入力しないと、変数が空文字列で上書きされてしまう
  - RUN命令のファイル名指定に文字列変数を使用できない
  - GET@、PUT@命令で@が省略できない
  - 負数に対するEXP関数やべき乗で、正しくない結果を返す場合がある (EXP(-89)〜EXP(-177)あたり)

## 2020.11.21

Ver.0.3.1公開。

- バグを修正。
  - ファイル名を指定してのRUN命令が動作しない
  - MERGE命令の後ろに,Rをつけるとプログラムを実行してしまう
  - スクリーンモード1と2のLINE BF命令が正常に動かない場合がある (eikhussiineokさん、ありがとうございます)
  - SCREEN関数で各行左端の文字しか読めない (eikhussiineokさん、ありがとうございます)

## 2020.6.6

Ver.0.3公開。

- 「PC-6601用」だとmkIIで使えないような誤解を招きそうな気がしたので名称を変更。BASICROM.62/VOICEROM.62も同梱するように。(中身はBASICROM.66/VOICEROM.66と同じもの)
- LOAD、SAVE、BLOAD、BSAVE、FILES、LFILES、KILL、NAME、MERGE、DSKF()、DSKI$()、CVS()、MKS$()を実装。
- 外付けFDDに対応。
- FAT8標準フォーマットのブランク1Dファイル (D88形式、40トラック) を同梱。
- 対応ROM内ルーチンが増えました。(2701h,51F2h,5CFDh)
- プログラム入力時の中間言語変換が少し速くなったはず。
- PC6001VWのTALK字幕機能に仮対応。
- バグを修正。
  - TALK命令で固定語を連続して喋らせると後の方しか発声しない (Ackieeeさん、ありがとうございます)
  - DIM命令で配列でない通常変数を複数指定するとエラーになる
  - プログラム入力時にオーバーメモリエラーチェックをしていない
  - LPRINT後のINPUTでプロンプトが正常に表示されない

## 2019.10.3

Ver.0.2.2公開。

- HEX$()が正常に動かない不具合を修正。

## 2019.9.19

Ver.0.2.1公開。

- 対応ROM内ルーチンが増えました。(1CD2h,1CF6h,1D73h,6B4Ah,6B9Bh,7161h)
- 拡張漢字ROMイメージ変換プログラムをbdf2extkanjiとbdf2exkanjiの2種類に変更。
- バグを修正。
  - 同梱のbdf2cgrom66で出力されるCGROM60.66が縦10ドットフォントになっている (eighttailsさん、ありがとうございます)
  - 同梱のbdf2cgrom66.exe、bdf2extkanji.exeで変換に失敗する可能性がある
  - スクリーンエディタ使用中に行頭でDELを押しても字が消えない
  - CLEARの第二パラメータで非常に小さいアドレスを指定すると誤動作を起こす

## 2019.9.9

Ver.0.2公開。

- LGPLv2.1以降での利用を可能としました。
- HEX$()、DELETE、CLOAD*、CSAVE*、GET@、PUT@、MON、CIRCLEを実装。
- 対応ROM内ルーチンが増えました。(0384h,038Bh,1179h,1181h,14AFh,1A1Ch,1B2Ah,3995h)
- CLOAD時のアスタリスク点滅タイミングをN60-BASICと同様に変更。(Tsutsuiさん、ありがとうございます)
- 等号不等号3種を1種ずつ3個並べた演算子 (>=<, <=>, ><=, <>=, =><, =<>) に対応。常に真となる比較演算を行います。
- EXEC命令で0以外のアドレスを指定した時にCフラグを立てるよう修正。
- 拡張漢字ROMイメージ変換プログラムbdf2extkanjiを同梱。
- 文字列演算時に?OS Errorや?ST Errorが出やすい問題を改善。
- mkII/6601用のカートリッジ起動に対応。
- バグを修正。
  - PLAY文の音程データが不正確だった (bookwormさん、ありがとうございます)
  - 同じFORループを途中で抜けるのを繰り返すとやがて?OM Errorになる
  - ?OM Errorの際にプログラムが破壊されることがある
  - 特定の条件下でNEXTやRETURNが誤動作する
  - PLAY"M0"がエラーにならない
  - 整数値を扱う命令で負数も有効になるもの (AND、PEEK、CLEARなど) の場合、小数点付きの負数を使った時の端数処理が正しくない
  - RND()の値がおかしい場合がある
  - 累乗計算で指数が大きい時の結果がおかしい
  - VAL関数で指数部を含む文字列を指定すると、別の文字列まで読んでしまうことがある
  - 多重ループのNEXT命令がコンマで終わった時にエラーにならない
  - スクリーンモード1,2でセミグラフィック文字のある箇所にPSETやLINEでグラフィックを描いた時の挙動が異なる
  - カーソルキーを3個以上同時に押した時のSTICK()の値が異なる
  - DIM命令で配列変数でなく通常変数を指定した時に、続く命令が正常に実行されない
  - LEFT$(),RIGHT$(),MID$()においてグラフィック文字の途中で分割した時の結果が異なる
  - COS()の引数が減算を含む式だった場合エラーになることがある
  - 等号の演算順序が不等号より先になっていた (N6X-BASICでは同順位)
  - 実機で漢字ROM/音声合成ROMへのバンク切り替えに失敗する
  - SCREEN()が正常に動作しない
  - スクリーンモードが3か4の時、カーソルが行頭以外にある状態でプログラムが終わっても改行しない
  - 同梱のbdf2cgrom66がFONT_DESCENT 0の時に動かない
  - FDDオートスタートからの起動でBASICモードを自動入力できない
  - モード1-4のスクリーンモード3でカラー5以上の色が異なる
  - マイナス符号と小数点が両方ある数値に対してVAL()が正しく動作しない
  - マイナス符号と小数点が両方ある数値に対してREAD-DATAが正しく動作しない
  - INPUT命令での複数入力に失敗する
  - INPUT命令での入力に対しDELキーを使うと入力が欠けることがある
  - ページを変更した時にカラーセット(COLOR命令第3パラメータ)が変化してしまう
  - 6B7Ah(COLOR命令第3パラメータ実行ルーチン)の入力値が間違っている
  - 文字列演算の途中でガベージコレクションが発生すると結果が壊れることがある

## 2017.6.6

Ver.0.1公開。

- N60-BASICにある命令＋KANJI＋TALKのみ実装済み。
- FDDに関しては、最低限のアクセスルーチンとオートスタートを実装。内蔵ドライブのみ。