STUDIO KAMADAさんで解説されているHuman68kの
「サブディレクトリ内のファイルが増えたときファイルなどが壊れることがある」
不具合について、再現手順の(2)~(6)を実行します。
あらかじめ再現手順(0)~(1)を実行後、カレントドライブをMOに変更にしてからこのプログラムを実行します。
なお手元の環境(Human68k v3.02、TwentyOne.x v1.36c)にて、このプログラムでは 「サブディレクトリ内の '.' と '..' のエントリが二重に記録される」 症状は再現できませんでした。
Warning
実験用に用意したシステムでのみ実行してください。
※普段使っているシステムでは実行しないこと!
IOCS _ONTIME
で取得した起動後の経過時間(1/100秒単位)を表示します。
なにかコマンドライン引数を指定すると経過日数を表示します。
IOCS _TXFILL
のサンプルです。
IOCS _TXYLINE
のサンプルです。
IOCS _TXRASCPY
によるラスタコピーを行います。
使用法: iocs_txrascpy コピー元 コピー先 ラスタ数 移動方向(0:下,-1:上) テキストプレーン
移動方向、テキストプレーンは省略できます(省略時は0:下、%0011となります)。
X68000をクロックアップ改造しているとラスタコピーに失敗して画面が乱れることがあります。
IOCS.XやHIOCS.Xを組み込んでいるとコンソールのスクロールに内部のルーチンを使うほか、
アプリケーションによっては独自のラスタコピールーチンを持っているため、
IOCS _TXRASCPY
が呼び出される機会がなく後から問題に気づくこともしばしばあるようです。
画面が乱れる場合は、IOCS _TXRASCPY
を高クロック対応ルーチンに差し替えるドライバを組み込んでください
(HIOCS PLUS version 1.10+16.17以降など)。
コマンドライン引数で指定したファイルを読み込みオープンし、DOS _IOCTRL (MD=12, F_CODE=0)
でファイルの特殊コントロールを行います。
ファイル名を省略した場合は標準入力(ファイルハンドル0)に対して実行します。
Human68k version 3.02ではキャラクタデバイスが特殊IOコントロールに対応しているか 調べずにデバイスドライバを呼び出しているため、対応していないデバイスに対して 実行するとアドレスエラー等が発生する場合があります。
コマンドライン引数で指定したドライブ(省略時はカレントドライブ)に対して
DOS _IOCTRL (MD=13, F_CODE=0)
でドライブの特殊コントロールを行います。
RTCの挙動の違いを利用して、実行環境が実機かエミュレータかを判別します。 エミュレータはバージョン検出ポートとWINDRVを無効にしたXM6gが対象です。