Skip to content

kg68k/xperiment68k

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xperiment68k

実験的なコードとかいろいろ。

無保証です。
十分なテストを行っていないので、不具合があるかもしれません。

長いファイル名を使用しているため、TwentyOne +Tなどのファイル名を21文字認識する環境が必要です。

Description

  • A
    • a2arg ... 渡されたコマンドライン引数の内容を表示
    • a2arg_nh ... 渡されたコマンドライン引数の内容を表示(HUPAIRマークなし)
    • adpcmotchk ... IOCSによるADPCM再生後にDMACのレジスタ値を表示
    • appendbytes ... ファイル末尾にデータを追記
  • B
    • beep_adpcmout ... システムビープ音をIOCS _ADPCMOUTで再生
    • beep_mpcm ... システムビープ音をMPCMで効果音として再生
    • beep_zmsc3 ... システムビープ音をZMSC3.Xで効果音として再生
    • bg1pr2th ... 2個のスレッドを作成して常駐終了
    • bgexec ... 指定コマンドの実行指示をbgexecdスレッドに送信
    • bgexecd ... 常駐終了し、指定されたコマンドをバックグラウンドで実行
    • bgkill ... スレッドに終了要求コマンドを送信
    • bglivingdead ... DOS _KILL_PRの動作検証
    • bgsprocd ... bgexecdとほぼ同じだがサブのメモリ管理を設定する
    • bgsprocess ... スレッドに対しサブのメモリ管理を設定
    • bgthreadid ... スレッドIDを表示
    • bgwakeup ... スレッドに強制スリープ解除コマンドを送信
    • bgzombie ... DOS _KILL_PRの動作検証
    • bitsns ... IOCS _BITSNSでキーの押し下げ状態を表示
    • bkeyinpd3 ... IOCS _B_EKYINPの動作検証(d3レジスタ破壊)
    • buserr_2w ... バスエラーを発生させる。エミュレータの検証用
  • C
    • chxdummy ... ch30inst.x、chxinst.xの共存インストール機能の動作検証
    • closerewindatr ... DOS _CLOSE時のファイル属性巻き戻りの動作検証
    • colorbar ... カラーバーのような画像を描画
    • con_scroll ... コンソール画面のスクロールのテスト
    • crampedexec ... 空きメモリ容量を指定してファイルを実行する
  • D
    • datetime ... IOCSで日時を取得、表示
    • dbrams ... IOCSワーク$cb8$cbaの値を再計測
    • defchr_7621 ... IOCS _DEFCHRの動作検証
    • dos_create_sp ... DOS _CREATEの特殊モードでファイルを作成
    • dos_curdir ... DOS _CURDIRでカレントディレクトリを取得
    • dos_fatchk ... DOS _FATCHKでファイルのセクタを取得
    • dos_fgetc ... DOS _FGETCでファイルから文字入力
    • dos_fgets ... DOS _FGETSでファイルから行入力
    • dos_filedate ... DOS _FILEDATEでファイルのタイムスタンプを取得または設定
    • dos_getenv ... DOS _GETENVで環境変数を取得
    • dos_inpout ... DOS _INPOUTによる文字入力または文字出力
    • dos_keyctrl01 ... DOS _KEYCTRLによるキー入力
    • dos_maketmp ... DOS _MAKETMPでテンポラリファイルを作成
    • dos_mkdir ... DOS _MKDIRでディレクトリを作成
    • dos_nameck ... DOS _NAMECKでパス名を展開
    • dos_namests ... DOS _NAMESTSでパス名を展開
    • dos_setenv ... DOS _SETENVで環境変数を設定
    • dumpenv ... 環境変数をすべて表示
    • dumpstdin ... DOS _READで標準入力から読み込み
  • E
    • entryceil ... 上位メモリから起動する。HUPAIR準拠表示の判別コードの検証用
    • env_sbo ... DOS _GETENVDOS _SETENVのバッファオーバーフローの動作検証
    • esc_dsr ... エスケープシーケンスESC [6nで入力されたキーを表示
    • exception ... 例外を発生させて例外処理を呼び出す
    • exchr_hex ... 拡張外字処理を有効にして常駐終了
    • execas ... 「ファイルを別名で実行するR形式実行ファイル」を作成
    • exfiles ... DOS _FILESの拡張モードでエントリを検索
    • existsdir ... ディレクトリが存在するか調べる
  • F
    • fatchk_bof ... DOS _FATCHKのバッファオーバーフローの動作検証
    • fe_fcvt_test ... FPACK __FCVTの動作テスト
    • fe_power_test ... FPACK __POWERの動作テスト
    • fe_stoh_test ... FPACK __STOHの動作テスト
    • fileopen ... 各種の方法によるファイル作成、オープン
    • files ... DOS _FILESDOS _NFILESによるエントリの列挙
    • fntget ... フォントを拡大してテキストとして表示
    • fntsize ... IOCS _FNTADRIOCS _FNTGETの結果を一覧表示
  • G
    • getassign ... DOS _ASSIGN (MD=0)でドライブの割り当て状態を取得
  • I
    • incdir_test ... サブディレクトリ拡張時のディスク破壊の再現補助
    • iocs_ontime ... IOCS _ONTIMEで起動後の経過時間を取得
    • iocs_txfill ... IOCS _TXFILLのサンプル
    • iocs_txrascpy ... IOCS _TXYLINEのサンプル
    • iocs_txyline ... IOCS _TXRASCPYでラスタコピーを行う
    • ioctrl12 ... DOS _IOCTRL (MD=12, F_CODE=0)によるファイルの特殊コントロール
    • ioctrl13 ... DOS _IOCTRL (MD=13, F_CODE=0)によるドライブの特殊コントロール
    • isemu_rtc ... RTCの挙動の違いを利用したエミュレータ判別
  • J
    • joyget ... IOCS _JOYGETによるジョイスティック入力
  • K
    • kbdctrl ... キーボード制御コマンドコードをキーボードに送信
    • keepceil ... 上位メモリに常駐する。常駐検査コードの検証用
    • keepcmem ... 上位メモリからメモリを確保して常駐する。常駐検査コードの検証用
    • keyflush ... キー入力をフラッシュしてから終了する
    • keyscan ... キーボードから受信したスキャンコードを表示
  • L
    • lineage ... 自分自身と祖先のメモリ管理ポインタを表示
  • M
    • mallocall ... メモリブロックを可能な限り確保
    • malloc_ba_exec ... DOS _EXECの前後でメモリを確保
    • midi_reg ... MIDIボード(YM3802)のレジスタの値を表示
    • movem_aipi ... movem.l (a0)+,a0命令を実行する。エミュレータの検証用
    • mpcm_echcnt ... MPCM.Xの効果音発声数を設定
  • N
    • nameck_bof ... DOS _NAMECKのバッファオーバーフローの動作検証
    • namests_bof ... DOS _NAMESTSのバッファオーバーフローの動作検証
    • newvol ... DOS _NEWFILEでボリュームラベルを作成
    • ns_sbo ... DOS _NAMESTSの内部ルーチンのバッファオーバーフローの動作検証
  • O
    • openedfiles ... オープン中のファイルの一覧表示
    • openkeep ... ファイルを開いたまま常駐終了する。DOS _KEEPPRの動作検証
  • P
    • pathchk ... DOS _EXEC (MD=2;pathchk)で実行ファイルを検索
    • pathlenfix ... Human68kにパッチをあててディレクトリ名の最大長を拡張
    • pt_7e ... 文字コード0x7eとX68000の機種依存文字を表示
    • pt_dbhw ... X68000の機種依存文字の文字表を表示
    • pt_usk ... ユーザー定義外字の文字表を表示
    • putmes12 ... 文字列をテキスト画面に12ドットフォントで描画
    • putmes24 ... 文字列をテキスト画面に24ドットフォントで描画
  • R
    • reset68k ... trap #10命令によるソフトウェアリセット
    • rewind ... DOS _SEEK (mode=2, offset=-1)によるファイルシークの動作検証
    • run68_dos_test ... run68の-fオプションの動作確認用
    • runwaitchk ... メモリを読み込むループの実行時間を計測
  • S
    • si_acc ... 装着されているアクセラレータの種類を表示
    • si_emu ... 実行中のエミュレータの種類を表示
    • si_memory ... メインメモリとハイメモリの情報を表示
    • si_midi ... MIDIボードの種類を表示
    • si_model ... 本体の機種名を表示
    • si_phantomx ... PhantomXの情報を表示
    • si_scsiex ... SCSIボードの機種名を表示
    • si_sram ... SRAMの容量と使用状況を表示
    • sjis_tbl ... Shift_JISの2バイト文字の文字表を表示
    • skeyset ... IOCS _SKEYSETによりキー入力を発生し、IOCS _B_KEYINPで取得
    • sp3tx0gr2 ... 画面間プライオリティを特殊な値に設定。エミュレータの検証用
    • splimchk ... スプライトの表示限界の検証用
    • sq64k ... 画面モードを768×512、65536色に変更
    • sram_memsize ... SRAMのメインメモリ容量を書き換える。エミュレータの検証用
    • sysport ... システムポート領域の値の表示
  • T
    • tokikoe ... テキスト画面に特定のメッセージを描画
  • U
    • uskcg24 ... ユーザー定義外字の文字表をテキスト画面に描画
    • uskfontadr ... 外字フォントデータのアドレスを表示
    • uskhw_hex ... 半角外字のフォントを文字コード表記に書き換え
  • V
    • vdispst_time ... IOCS _VDISPSTによる割り込みが発生するまでの時間を計測
  • Z
    • zerounit.sys ... ブロックデバイスのユニット数=0の動作検証

シビアなメモリ状況を構築するプログラムについて

一般に、常駐検査を行うプログラムやプログラム本体の後にバッファを確保するプログラムでは メモリを読み書きする前にメモリブロックの大きさを確認しなければなりません。 それを怠ると、メモリブロックが期待より小さな場合にメモリブロックの範囲外を読み書きしてしまい、 他のメモリブロックの内容の破壊、バスエラーによる停止、プログラムの暴走などの問題が生じます。

crampedexeckeepceilkeepcmem などのコードはそのようなプログラムの動作を検証するための補助として、意図的に「小さなメモリブロック」 を作り出します。

より確実に検証するためには、メインメモリ容量を11MB以下にしてください。 メインメモリが12MBだとメモリブロックの範囲外がGVRAMになるため、 スーパーバイザモードになっているとバスエラーが発生せず読み書きできてしまうためです。

Build

PCやネット上での取り扱いを用意にするために、src/内のファイルはUTF-8で記述されています。
X68000上でビルドする際には、UTF-8からShift_JISへの変換が必要です。

u8tosjを使用する方法

あらかじめ、u8tosjをビルドしてインストールしておいてください。

トップディレクトリでmakeを実行してください。以下の処理が行われます。

  1. build/ディレクトリの作成。
  2. src/内の各ファイルをShift_JISに変換してbuild/へ保存。

次に、カレントディレクトリをbuild/に変更し、makeを実行してください。
実行ファイルが作成されます。

u8tosjを使用しない方法

ファイルを適当なツールで適宜Shift_JISに変換してからmakeを実行してください。
UTF-8のままでは正しくビルドできませんので注意してください。

必要環境

  • Human68k version 3.02
  • GNU make 3.79 human68k-1.4 以降
  • HAS060.X version 3.09+91 以降
    • 作者はHAS060X.Xをhas060.xにリネームして使っています。
  • HLKX 1.1.0 以降
    • 環境変数LD=hlkxを設定するか、make 実行時のコマンドラインオプションで指定してください。
    • 指定しない場合はHLKが使用されますが、一部のファイルがビルドされません。
  • gcc2

License

GNU General Public License version 3 or later.

Author

TcbnErik / 立花@桑島技研
https://github.com/kg68k/xperiment68k