DOS _SETTIM2
、DOS _SETDATE
でホスト環境の時計を変更しないように仕様変更。 エラー時の返り値を-1に変更。- (generic)
IOCS _DATEGET
で月の値が1小さい不具合を修正。 IOCS _TIMEGET
で24時間計を示すフラグが0になっている不具合を修正。- 下記DOSコール、IOCSコールを実装。
DOS _SETTIME
(ホスト環境の時計を変更せず、0またはエラーコードを返すのみ)IOCS _DATEBCD
IOCS _DATESET
(ホスト環境の時計を変更せず、0を返すのみ)IOCS _TIMEBCD
IOCS _TIMESET
(ホスト環境の時計を変更せず、0を返すのみ)
ABCD
命令の結果が正しくない不具合を修正。- cmakeでビルドエラーになっていた不具合を修正。
- 不当命令例外処理に一部対応。
- デバッガで
quit
コマンドを使用すると、次の命令が実行されてから終了する不具合を修正。 NBCD
、SBCD
命令の結果が正しくない不具合を修正。
DOS _CREATE
、DOS _NEWFILE
、DOS _OPEN
の処理を書き直した。- (win32)
DOS _OPEN
でオープン済みファイルを更にオープンできるようにした。 - (generic)
DOS _CREATE
、DOS _NEWFILE
でキャラクタデバイスをオープン できないようにした。
- (win32)
- (generic)
DOS _FILES
でファイルサイズを取得するようにした。
MOVEM (An)+,An
命令でAn
レジスタの値が正しくない不具合を修正。
- ファイル読み込み時のエンコーディング変換を追加(
-read-file-utf8
)。 DOS _BUS_ERR
を実装した。ADDX -(Ay),-(Ax)
、SUBX -(Ay),-(Ax)
命令を実装した。
新機能
- ハイメモリ対応(
-himem=<mb>
)。DOS _MALLOC3
、DOS _SETBLOCK2
、DOS _MALLOC4
を追加。
仕様変更
- pc98キー入力変換機能(run68.ini
[all]
セクションのpc98
設定)を削除。 - 割り込みエミュレート機能(run68.ini
[all]
セクションのtrapemulate
設定)を削除。 - オプション
-t
を削除。 - DOSコールのトレース表示を作り直した。
不具合の修正
DOS _FGETS
の不具合を修正(改行が正しく除去されない、バッファ範囲外を参照する、 バッファとしてスーパーバイザ領域を指定できない)。- (win32)
DOS _CURDIR
で無効なドライブだとダイアログが表示される不具合を修正。 - (win32)
DOS _INPOUT (code=0xff,0xfe)
で正しく入力できない不具合を修正。 ただし2バイト文字は入力できない(無視される)。 - (win32)
DOS _PUTCHAR
で意図しない文字列が表示されるエンバグを修正。 - (win32)
IOCS _DATEGET
、IOCS _TIMEGET
でUTCの値が返される不具合を修正。 IOCS _DATEASC
で文字列形式の指定値によってはエラーになる不具合を修正。IOCS _DAYASC
を再実装し、不具合を解消。trap #n
命令でバスエラーが発生する不具合を修正。- 実行ファイルのBSSサイズが大きすぎる場合にメモリ不足でエラー終了しない不具合を修正。
- NULデバイスのデバイスヘッダの偽装を追加。
FPACK __STOH
のエミュレーションを追加。MOVE TO SR
、MOVE TO CCR
、RTE
命令でSR/CCRの未定義ビットが1になる不具合を修正。
- (generic) 実行ファイル名をフルパス化する際にシンボリックリンクを展開しないようにした。
- パス名が長すぎる場合はPSP内の実行ファイル名を
A:\PROG.X
に置き換えるようにした。 - run68.iniのもともと動作していなかった機能を削除した。
- プログラム名によるセクション指定(例:
[dis.x]
) MainMemory=
によるメインメモリのサイズ指定
- プログラム名によるセクション指定(例:
- run68.iniから
EnvLower
キーワードを削除。 - run68.iniで指定した環境変数が全て小文字になる不具合を修正。
FPACK __FCVT
のエミュレーションでfcvt()
を使わないようにした。
- dos_file.cでコンパイルエラーになる不具合を修正。
新機能
- run68から実行ファイルに渡すコマンドラインについてHUPAIRに対応。
- X形式実行ファイルのリロケート情報のロングワード形式($0001 $xxx_xxxx)に対応。
- PSP内のパス名、ファイル名を正規化、文字コードのShift_JIS変換を行う。
- DOSコールエミュレーション
- DOS _MALLOC2、DOS _MAKETMPのエミュレーションに対応。
- DOS _GETENVで環境ポインタの指定に対応。
- (generic) DOS _NEWFILE、DOS _FILESでパス名の''を'/'に変換する。
- (Win32) DOS _NFILESをWin64ビルドでも動作するようにした。
- IOCSコールエミュレーション
- (Win32) IOCS _ONTIMEの精度を1/100秒単位に改善。
仕様変更
- 既定のメインメモリサイズを12MBに変更。
- 環境変数、コマンドライン、スタックをメモリブロックとして動的に確保する。
- DOSX(32ビットDOS)への対応を削除。
不具合の修正
- 環境変数領域が初期化されない。
- trapemulateモードでwatchpointが正しく指定できない。
- (Win32) ソ系ダメ文字を含むフォルダ名のファイルを実行できない。
- (Win32) ソ系ダメ文字を含むファイル名だと$PATHから検索されない。
- デバッガでdumpの初回実行時にサイズのみを指定すると不正なメモリを参照する。
- DOSコールエミュレーション
- 未定義DOSCALLでd0レジスタに戻り値-1が返されない。
- DOS _CURDIRで返されるパス名が正しくない。
- DOS _CURDIRで-f指定時に表示されるドライブ名がずれる。
- DOS _GETENVで環境変数名の大文字小文字が区別されない。
- DOS _GETENVで取得した文字列の先頭の'='と空白が削除される。
- DOS _READで過大なバイト数を指定すると正しく読み込みが行われない。
- (generic) DOS _CURDRVでd0レジスタに戻り値が返されない。
- (generic): DOS _FILES、DOS _NFILESで失敗時に戻り値0を返す。
- (Win32) DOS _PUTCHARで文字が表示されない。
- (Win32) DOS _NEWFILEで既存ファイルを上書きする。
- (Win32) DOS _FILEDATEが動作しない。
- M68000エミュレーション
- MOVEP命令のディスプレースメントの上位8ビットが無視される。
- DIVU命令の剰余の上位8ビットが0になる。
- 逆アセンブラ
- 絶対ショートアドレッシングが絶対ロングアドレッシングとして表示される。
- DIVS、DIVU命令のソースオペランドとディスティネーションが逆に表示される。
- MOVEP命令がBCHGと表示される。
- EXG.L Aq,Ar命令がAND.W、EXG.L Dq,Ar命令がAND.Lとして表示される。