countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2020 年 3 月 7 日
X68000 LIBRARY > ソフトウェアライブラリ > 特定のハードウェア用のソフトウェア > 060turbo 関連 > 060turbo.sys > 060turbo.sys のマニュアル

060turbo.sys のマニュアル

説明

060turbo.sys の添付ドキュメントです。末尾に記載されているバージョンアップサポートの情報は無効です。

060turbo.man
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        060turbo.sys

────────────────────────────────────

● 060turbo.sys の概要

 Human68k の環境において 68060 の能力を十分に引き出すためのドライバが

060turbo.sys です。

 060turbo.sys は 68060 モード専用です。68030 モードのときは組み込まれま

せん。また、Human68k version 3.02 専用です。これ以外のバージョンや、改造

されているものは使用しないで下さい。

 ローカルメモリを含めたアドレス変換テーブルを構築し、MMU の機能を有効に

します。この時点でデータキャッシュが有効に機能するようになります。メイン

メモリのキャッシュモードは指定可能です。

 システム制御のための IOCS コール _SYS_STAT を拡張します。040SYSpatch.x

および JUPITER.X と一部互換性があり、スーパースケーラ、ブランチキャッシ

ュ、ストアバッファの設定が可能です。

 Motorola の M68060 Software Package(060SP)を内蔵しています。これによ

り、68060 に実装されていない命令やアドレッシングのソフトウェアエミュレー

ションをサポートします。なお、MOVEP 命令は X680x0 では特に使用頻度が高い

ため、特別扱いにして 060SP よりも速いルーチンを使用して処理するようにな

っています。

 キャッシュ操作およびローカルメモリのアドレスの都合で、Human68k の一部

にパッチをあてています。

 ローカルメモリに対応した RAM ディスクドライバを内蔵しています。RAM デ

ィスク領域はキャッシュ禁止、バースト転送にしてキャッシュ効率を向上してい

ます。TIMER LED をアクセスランプにする機能がついています。

 デバイスコールの転送データが DMA 転送できない領域にあるとき、バッファ

を媒介することで正常に転送できるように対処します。

 SCSI コールの転送データが DMA 転送できない領域にあるとき、一時的にソフ

トウェア転送に切り替えることで正常に転送できるように対処します。この機能

は X68030 内蔵 SCSI および MACH-2 で動作確認しています。

 ツクモのハイメモリのサービスコールとほぼ互換の IOCS コールを提供し、ロ

ーカルメモリからのメモリ確保が容易にできるようになっています。

 LZXLOADER.SYS 相当の圧縮ファイル展開機能を内蔵しています。

 Human68k のメモリ管理を拡張してローカルメモリ上に実行ファイルをロード

できる環境を構築中です。既に、XC のライブラリを使用している実行ファイル

をローカルメモリ上にロードし、実行前にライブラリ部分にパッチをあててから

実行することができるようになっています。

 060SP の内部のルーチンを直接呼び出す形式の FE ファンクションコールを内

蔵しています。FLOATn.X は未実装浮動小数点命令の関係で 68060 モードでは正

常に動作しないことがあります。

 PCM 関係の IOCS コールに簡易的な対策が施されています。PCM データがロー

カルメモリ上や論理アドレスと物理アドレスが異なる領域に置かれていると ROM

のルーチンでは正常に PCM の再生や録音ができません。そこで、PCM データの

再生や録音のとき、一時的に本体メモリを媒介するようになっています。ZMUSIC

等の音源ドライバを使用する場合は PCM8A.X を組み込んで下さい。

 DMA 転送関係の IOCS コールをソフト転送にすることができます。DMAC で転

送するよりも 6 倍以上速くなります。ただし、転送終了まで IOCS コールから

復帰しません。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        メモリ管理の拡張について

────────────────────────────────────

●概要

 060turbo.sys では、Human のメモリ管理をローカルメモリまで延長すること

ができます。メモリ管理ポインタのリストをローカルメモリ上のメモリブロック

に繋ぐことで、Human の管理下で 16MB 以上のメモリ空間を使えるようになりま

す。

 メモリ管理を拡張するために、メモリ管理関連の DOS コールを差し換えてい

ます。

 XC のライブラリはアドレスの最上位バイトをフラグに使っているため、これ

を使用している実行ファイルはそのままではローカルメモリ上で動作しません。

そこで、XC のライブラリを使用している実行ファイルかどうかを実行直前に自

動的に判断し、もしそうならば実行前にパッチをあてるようになっています。こ

の機能によって、LK.X などもローカルメモリ上で問題なく動作します。

 現在、SXWIN.X v3.10 に対するパッチが暫定的に入っています。SX-Window

version 3.10 がローカルメモリ上で起動できます。このとき、プロセス情報で

空領域の表示が 30MB 程度になります。SXCON.X も使えます。

 他にも主要なフリーソフトなどでも拡張モードのローカルメモリ上では正常に

動作しなくなるものが多々あります。それらはロード領域制限やパッチあてなど

で解決していく予定です。



●標準モード

物理アドレス                     論理アドレス
$00000000┏━━━━━━━━━━┓$00000000┏━━━━━━━━━━┓
         ┃                    ┃         ┃ベクタ              ┃
 スーパー┃空き                ┃ スーパー┃各種ワーク等        ┃
         ┃                    ┃         ┃Human起動部         ┃
         ┠──────────┨         ┠──────────┨
         ┃空き                ┃  [$1C04]┃┌Human常駐部 ──┐┃
         ┃Humanバッファ       ┃         ┃│Humanバッファ   │┃
 スーパー┃空き                ┃ スーパー┃│060turbo.sys本体│┃
         ┃060turbo.sysバッファ┃         ┃│   〃   バッファ│┃
         ┃デバイスドライバ    ┃         ┃│デバイスドライバ│┃
         ┠──────────┨         ┠┴────────┴┨
         ┃                    ┃         ┃                    ┃
         ┃シェル              ┃         ┃シェル              ┃
   ユーザ┃ユーザ領域          ┃   ユーザ┃ユーザ領域          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃                    ┃
         ┠──────────┨  [$1C00]┠──────────┨
   ユーザ┃RAMDISK等           ┃   ユーザ┃RAMDISK等           ┃
$00C00000┣━━━━━━━━━━┫$00C00000┣━━━━━━━━━━┫
 スーパー┃I/O等               ┃ スーパー┃I/O等               ┃
$00F00000┣━━━━━━━━━━┫$00F00000┣━━━━━━━━━━┫
 スーパー┃ROM                 ┃ スーパー┃ROM                 ┃
$00FFFFFF┗━━━━━━━━━━┛$00FFFFFF┗━━━━━━━━━━┛
$10000000┏━━━━━━━━━━┓$10000000┏━━━━━━━━━━┓
   ユーザ┃RAMDISK             ┃ スーパー┃RAMDISK             ┃
         ┠──────────┨         ┠──────────┨
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃                    ┃
   ユーザ┃ハイメモリ          ┃   ユーザ┃ハイメモリ          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃                    ┃
         ┠──────────┨         ┗━━━━━━━━━━┛
   ユーザ┃アドレス変換テーブル┃
         ┠──────────┨
         ┃ベクタの実体        ┃
         ┃各種ワーク等の実体  ┃
   ユーザ┃Human起動部の実体   ┃
         ┃Human常駐部の実体   ┃
         ┃                    ┃
         ┠──────────┨
   ユーザ┃060turbo.sysの実体  ┃
         ┠──────────┨
   ユーザ┃ROM領域の実体       ┃
         ┗━━━━━━━━━━┛



●結合モード

物理アドレス                     論理アドレス
$00000000┏━━━━━━━━━━┓$00000000┏━━━━━━━━━━┓
         ┃ベクタ              ┃         ┃ベクタ              ┃
         ┃各種ワーク等        ┃         ┃各種ワーク等        ┃
         ┃Human起動部         ┃         ┃Human起動部         ┃
         ┠──────────┨         ┠──────────┨
         ┃Human常駐部         ┃  [$1C04]┃┌Human常駐部 ──┐┃
 スーパー┃060turbo.sys        ┃ スーパー┃│060turbo.sys    │┃
         ┃デバイスドライバ    ┃         ┃│デバイスドライバ│┃
         ┠──────────┨         ┠┴────────┴┨
         ┃                    ┃         ┃                    ┃
         ┃シェル              ┃         ┃シェル              ┃
   ユーザ┃ユーザ領域          ┃   ユーザ┃ユーザ領域          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃┌結合ブロック──┐┃
         ┠──────────┨         ┠┼────────┼┨
   ユーザ┃RAMDISK等           ┃   ユーザ┃│RAMDISK等       │┃
$00C00000┣━━━━━━━━━━┫$00C00000┣┿━━━━━━━━┿┫
 スーパー┃I/O等               ┃ スーパー┃│I/O等           │┃
$00F00000┣━━━━━━━━━━┫$00F00000┣┿━━━━━━━━┿┫
         ┃ROM                 ┃         ┃│ROM             │┃
$00FFFFFF┗━━━━━━━━━━┛$00FFFFFF┗┿━━━━━━━━┿┛
                                            │                │
$10000000┏━━━━━━━━━━┓$10000000┏┿━━━━━━━━┿┓
   ユーザ┃RAMDISK             ┃ スーパー┃│RAMDISK         │┃
         ┠──────────┨         ┠┴────────┴┨
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃シェル              ┃
   ユーザ┃ハイメモリ          ┃   ユーザ┃ユーザ領域          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃                    ┃
         ┠──────────┨  [$1C00]┗━━━━━━━━━━┛
   ユーザ┃アドレス変換テーブル┃
         ┠──────────┨
   ユーザ┃ROM領域の実体       ┃
         ┗━━━━━━━━━━┛



●拡張結合モード

物理アドレス                     論理アドレス
$00000000┏━━━━━━━━━━┓$00000000┏━━━━━━━━━━┓
         ┃ベクタ              ┃         ┃ベクタ              ┃
         ┃各種ワーク等        ┃         ┃各種ワーク等        ┃
         ┃Human起動部         ┃         ┃Human起動部         ┃
         ┠──────────┨         ┠──────────┨
         ┃Human常駐部         ┃  [$1C04]┃┌Human常駐部 ──┐┃
 スーパー┃060turbo.sys        ┃ スーパー┃│060turbo.sys    │┃
         ┃デバイスドライバ    ┃         ┃│デバイスドライバ│┃
         ┠──────────┨         ┠┴────────┴┨
         ┃                    ┃         ┃                    ┃
         ┃シェル              ┃         ┃シェル              ┃
   ユーザ┃ユーザ領域          ┃   ユーザ┃ユーザ領域          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃┌結合ブロック──┐┃
         ┠──────────┨         ┗┿━━━━━━━━┿┛
         ┃                    ┃           │                │
         ┃                    ┃           │                │
   ユーザ┃ユーザ領域の実体    ┃           │                │
         ┃                    ┃           │                │
         ┃                    ┃           │                │
         ┠──────────┨         ┏┿━━━━━━━━┿┓
   ユーザ┃RAMDISK等           ┃   ユーザ┃│RAMDISK等       │┃
$00C00000┣━━━━━━━━━━┫$00C00000┣┿━━━━━━━━┿┫
 スーパー┃I/O等               ┃ スーパー┃│I/O等           │┃
$00F00000┣━━━━━━━━━━┫$00F00000┣┿━━━━━━━━┿┫
         ┃ROM                 ┃         ┃│ROM             │┃
$00FFFFFF┗━━━━━━━━━━┛$00FFFFFF┗┿━━━━━━━━┿┛
                                            │                │
$10000000┏━━━━━━━━━━┓$10000000┏┿━━━━━━━━┿┓
   ユーザ┃RAMDISK             ┃ スーパー┃│RAMDISK         │┃
         ┠──────────┨         ┠┴────────┴┨
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃シェル              ┃
   ユーザ┃ハイメモリ          ┃   ユーザ┃ユーザ領域          ┃
         ┃                    ┃         ┃                    ┃
         ┃                    ┃         ┃                    ┃
         ┠──────────┨         ┠─    ─    ─    ─┨
   ユーザ┃アドレス変換テーブル┃         ┃                    ┃
         ┠──────────┨         ┃                    ┃
   ユーザ┃ROM領域の実体       ┃   ユーザ┃ユーザ領域          ┃
         ┗━━━━━━━━━━┛         ┃                    ┃
                                          ┃                    ┃
                                   [$1C00]┗━━━━━━━━━━┛



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        060turbo.sys のパラメータ

────────────────────────────────────

 必ず CONFIG.SYS の先頭で登録して下さい。

        device = 060turbo.sys [スイッチ …]

 現在機能するスイッチは以下の通りです。

────────────────────────────────────
文法:   -ad

機能:   ADPCM関係のIOCSコールにパッチをあてる

説明:   ADPCM関係のIOCSコールにパッチをあてて、ローカルメモリから直接再
        生できるようにします。

解説:   PCM8 と同様に DMAC を継続動作モードで使用します。
        現在、_ADPCMOUT だけに対応しています。これ以外の ADPCM 関係の
        IOCS コールは正常に動作しませんので注意して下さい。
────────────────────────────────────
文法:   -bg

説明:   このスイッチは指定しないで下さい。
────────────────────────────────────
文法:   -bs<size>
        <size>  テンポラリバッファのサイズ(単位は KB)

機能:   テンポラリバッファサイズの設定

説明:   -dv 指定時に使用するテンポラリバッファのサイズを指定します。
        デフォルトは 64KB です。
        テンポラリバッファは常にメインメモリ上に確保されます。

解説:   バッファのサイズが小さすぎるとディスクアクセスが極端に遅くなるこ
        とがあります。
────────────────────────────────────
文法:   -cm<mode>
        <mode>  キャッシュモード
                0       キャッシュ許可,ライトスルー
                1       キャッシュ許可,コピーバック
                2       キャッシュ禁止,ストアバッファ禁止
                3       キャッシュ禁止,ストアバッファ許可

機能:   キャッシュモードの設定

説明:   メモリのキャッシュモードを指定します。デフォルトはライトスルーで
        す。

解説:   060turbo.sys よりも後のデバイスドライバの組み込み時から切り替わ
        ります。コピーバックモードで組み込めないデバイスドライバがあると
        きはコピーバックにしないで下さい。
────────────────────────────────────
文法:   -dv

機能:   デバイスドライバのアクセスでテンポラリバッファを使う

説明:   デバイスドライバのアクセスでローカルメモリとのやりとりを可能にし
        ます。

解説:   指定されたバッファの論理アドレスが物理アドレスと異なっていたり、
        実体がローカルメモリにあるとき、テンポラリバッファを媒介してデー
        タをやりとりします。
────────────────────────────────────
文法:   -fe

機能:   060turbo.sys の後から FLOATn.X が組み込めないようにする

説明:   68030 モードでも起動できるように CONFIG.SYS に FLOATn.X が記述さ
        れていても、68060 モードでは FLOATn.X が組み込まれないようにする
        ためのスイッチです。
        このスイッチを指定しなくても、060turbo.sys の内部の FE ファンク
        ションは使えます。

解説:   F 系列未実装命令例外の直前に 'FEfn' という文字列を埋め込みます。
────────────────────────────────────
文法:   -hi

説明:   このスイッチは廃止されました。
────────────────────────────────────
文法:   -ld<size>{[K]|M}[a][i]
        <size>  RAMDISK のサイズ
        K       <size> の単位は KB
        M       <size> の単位は MB
        a       TIMER-LED をアクセスランプにする
        i       SHIFT キーが押されていないとき初期化する

機能:   ローカルメモリ上の RAMDISK の設定

説明:   RAMDISK ドライバを組み込みます。RAMDISK の領域はローカルメモリの
        下位側から確保されます。
        <size> の範囲は 16KB から 524287KB(511MB)までです。ただし、ロ
        ーカルメモリの容量によって制限されます。
        i を指定しなければ SHIFT キーが押されているとき初期化します。
        ただし、RAMDISK の先頭が壊れているときは無条件に初期化します。
        -ld と -md は合わせて 16 個まで指定できます。
        RAMDISK の領域はスーパーバイザプロテクトされます。
        また、キャッシュモードをキャッシュ禁止・ストアバッファ許可にする
        ことで、キャッシュを無駄遣いしないようになっています。

例:     -ld16Mai
                ローカルメモリ上に 16MB の RAMDISK を確保します。
                TIMER-LED をアクセスランプにします。
                SHIFT キーが押されていないとき初期化します。
────────────────────────────────────
文法:   -lr

機能:   ROM をローカルメモリにコピーして使う

説明:   ローカルメモリがあるとき、ROM をローカルメモリにコピーして使いま
        す。

解説:   本体の ROM よりもローカルメモリの方がアクセスが速いために設けた
        スイッチです。
        ROM を指す論理アドレスに対応する物理アドレスがローカルメモリを指
        すようになります。
        -lr を指定することで若干の速度向上が望めます。
────────────────────────────────────
文法:   -ls

機能:   システム関係のメモリ領域をローカルメモリに配置する

説明:   システム関係のメモリ領域(ベクタ領域、各種ワークエリア、Human 本
        体および 060turbo.sys の本体)をローカルメモリにコピーして使いま
        す。

解説:   本体メモリよりもローカルメモリの方がアクセスが速いために設けたス
        イッチです。
        ベクタ領域などを指す論理アドレスに対応する物理アドレスがローカル
        メモリを指すようになります。
        -ls を指定すると、レイトレーシングソフトなどが 1 割近く速くなる
        ことがあります。
────────────────────────────────────
文法:   -lt

機能:   アドレス変換テーブルをローカルメモリに配置する

説明:   ローカルメモリがあるとき、アドレス変換テーブルをローカルメモリに
        置きます。
        -lt を指定しないときは本体メモリに配置されます。

解説:   アドレス変換テーブルはアドレス変換の度に(アドレス変換キャッシュ
        がミスしたとき)参照されるため、なるべく高速にアクセスできる領域
        に置く方が速く動作します。
────────────────────────────────────
文法:   -lz

機能:   SIMM が装着されていても、それを無視する

解説:   060turbo.sys は通常、060turbo に装着されている SIMM のサイズを調
        べて、自動的にサイズに見合ったカスタマイズを行います。
        -lz を指定すると、SIMM が装着されていてもそれを無視します。論理
        アドレスの上位 8 ビットはすべて無視され、SIMM の物理アドレス空間
        は論理アドレス空間に反映されません。
        -lz は、-ld、-lr、-ls、-lt、-xm のいずれとも同時に指定できません。
────────────────────────────────────
文法:   -md<size>{[K]|M}[a][i]
        <size>  RAMDISK のサイズ
        K       サイズの単位は KB
        M       サイズの単位は MB
        a       TIMER-LED をアクセスランプにする
        i       SHIFT キーが押されていないとき初期化する

機能:   メインメモリ上の RAMDISK の設定

説明:   RAMDISK ドライバを組み込みます。RAMDISK の領域はメインメモリの上
        位側から確保されます。
        <size> の範囲は 16KB から 524287KB(511MB)までです。ただし、メ
        インメモリの容量によって制限されます。
        i を指定しなければ SHIFT キーが押されているとき初期化します。
        ただし、RAMDISK の先頭が壊れているときは無条件に初期化します。
        -ld と -md は合わせて 16 個まで指定できます。
        RAMDISK の領域はスーパーバイザプロテクトされます。
        また、キャッシュモードをキャッシュ禁止・ストアバッファ許可にする
        ことで、キャッシュを無駄遣いしないようになっています。

例:     -md512Ka
                メインメモリ上に 512KB の RAMDISK を確保します。
                TIMER-LED をアクセスランプにします。
                SHIFT キーが押されているとき初期化します。
────────────────────────────────────
文法:   -mm<size>
        <size>  メインメモリのサイズ(単位は MB)

機能:   メインメモリのサイズの設定

説明:   メインメモリの一部をローカルメモリ側に押し出します。
        メモリサイズの変更はシェル起動前に行われます。
        <size> が小さすぎると起動できなくなる可能性があります。

解説:   メインメモリ側の空領域が狭くなり、代わりにローカルメモリ側の空領
        域(ハイメモリ領域)が広くなります。
        例えば 32MB の SIMM を取り付けているとき、32MB を越えるサイズの
        連続した空領域を確保したいときに指定します。
────────────────────────────────────
文法:   -np

機能:   デバイス呼び出しでキャッシュ制御を行わない

説明:   データ転送のデバイス呼び出しで、データキャッシュのプッシュおよび
        無効化を行いません。
        SCSI転送は強制的にソフト転送になります。

解説:   デバイス呼び出しの度にデータキャッシュをフラッシュするかどうかで
        システム全体の動作速度がかなり違ってきます。-np を指定すると動作
        が異様に速くなることがあります。
        DOS _READ でサブルーチンを読み込んでそのまま実行するようなプログ
        ラムがコピーバックモードのとき正常に動作しなくなるので注意が必要
        です。
────────────────────────────────────
文法:   -sd

機能:   IOCS による DMA 転送をソフト転送にする

説明:   DMA 転送関係の IOCS コールをソフト転送にします。

解説:   DMA 転送よりもソフト転送の方が 6 倍程度高速です。
        ただし、転送が終了するまで IOCS コールから帰ってこなくなります。
────────────────────────────────────
文法:   -sl

機能:   68060のstore/load bypass機能を有効にする

説明:   68060のresult forwarding featuresの1つであるstore/load
        bypass機能を有効にします。
        store/load bypass機能はリセット直後は有効ですが、
        060turbo.sys(v0.54以降)がこれを無効にしています。
        -slを指定すると、store/load bypass機能が有効になります。
        store/load bypass機能を無効にすることによる速度低下はほ
        とんどありません。
────────────────────────────────────
文法:   -ss

機能:   SCSI のアクセスでソフト転送を使う

説明:   IOCS $F5 による SCSI のアクセスでローカルメモリとのやりとりを可
        能にします。
        指定されたバッファの論理アドレスが物理アドレスと異なっていたり、
        実体がローカルメモリにあるとき、一時的にソフト転送に切り替えます。
        大容量転送パッチを含んでいます。

解説:   SCSI の転送領域に応じて自動的にソフト転送に切り替えます。
        16MB 以上の連続転送を行う場合は必ず -ss を指定して下さい。
────────────────────────────────────
文法:   -ts<size>
        <size>  アドレス変換のための領域のサイズ(単位は KB)

機能:   アドレス変換のための領域のサイズの設定

説明:   アドレス変換のための領域のサイズを指定します。
        ページサイズが 8KB のとき、ローカルメモリの容量に応じた最低サイ
        ズとデフォルトサイズは以下の通りです。
                                        最低    デフォルト
                本体16MBのみ            10KB    32KB
                本体16MB+ローカル16MB   19KB    48KB
                本体16MB+ローカル32MB   27KB    64KB
                本体16MB+ローカル64MB   44KB    96KB
                本体16MB+ローカル128MB  78KB    160KB
        1MB 以上は指定できません。

解説:   アドレス変換を多用する場合にアドレス変換の領域を広げるために指定
        します。
        通常は指定する必要はありません。
────────────────────────────────────
文法:   -xm

機能:   拡張モードの設定

説明:   拡張モードにしてからシェルを起動します。

解説:   Human のメモリ管理をローカルメモリまで拡張します。
        -dv および -ss の指定が必要です。
        メモリ管理関係の DOS コールを拡張します。
        XC のライブラリを使用しているプログラムをロードしたとき、自動的
        にパッチをあてます。
────────────────────────────────────



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        IOCS _SYS_STAT($AC)

────────────────────────────────────

 システム環境の取得および設定を行うための IOCS コールです。040turbo の

040SYSpatch.x と共通のコマンドや JUPITER.X と共通のコマンドが幾つか追加

されています。今後も機能が追加される可能性があります。

<d1.w:モード
        $0000   MPUステータスの取得
                >d0.l:MPUステータス
                        bit0〜7         MPUの種類(6=68060)
                        bit14           MMUの有無(0=なし,1=あり)
                        bit15           FPUの有無(0=なし,1=あり)
                        bit16〜31       クロックスピード*10

        $0001   キャッシュ状態の取得
                >d0.l:現在のキャッシュ状態
                        bit0    命令キャッシュの状態(0=OFF,1=ON)
                        bit1    データキャッシュの状態(0=OFF,1=ON)

        $0002   キャッシュの状態をSRAM設定値にする
                >d0.l:設定後のキャッシュ状態
                        bit0    命令キャッシュの状態(0=OFF,1=ON)
                        bit1    データキャッシュの状態(0=OFF,1=ON)

        $0003   キャッシュのプッシュおよび無効化

        $0004   キャッシュ設定
                <d2.b:キャッシュの設定
                        bit0    命令キャッシュの状態(0=OFF,1=ON)
                                OFFにすると無効化されます
                        bit1    データキャッシュの状態(0=OFF,1=ON)
                                OFFにするとプッシュおよび無効化されます
                >d0.l:設定前のキャッシュ状態
                        bit0    命令キャッシュの状態(0=OFF,1=ON)
                        bit1    データキャッシュの状態(0=OFF,1=ON)

        $4000   ローカルメモリの情報の取得
                >d0.l:ローカルメモリのバイト数
                        0       ローカルメモリがない
                        -1      エラー
                >a1.l:ローカルメモリの先頭の物理アドレス

        $4001   物理アドレスがローカルメモリを指しているか調べる
                <a1.l:物理アドレス
                >d0.l:結果
                        0       ローカルメモリを指している
                        -1      ローカルメモリではない

        $4002   論理アドレスがローカルメモリを指しているか調べる
                <a1.l:論理アドレス
                >d0.l:結果
                        -1      無効な論理アドレスまたはローカルメモリではない
                        0       ローカルメモリを指している

        $4003   論理アドレスがDMA転送可能かどうか調べる
                <a1.l:論理アドレス
                >d0.l:結果
                        -1      DMA転送不可能
                        0       DMA転送可能

        $4004   論理アドレスの範囲がDMA転送可能かどうか調べる
                <d2.l:サイズ
                <a1.l:論理アドレス
                >d0.l:結果
                        -1      DMA転送不可能
                        0       DMA転送可能

        $8000   バージョン取得
                >d0.l:バージョン番号
                >a1.l:'060T'

        $8001   指定論理アドレスのキャッシュモードの取得
                <a1.l:論理アドレス
                >d0.l:キャッシュモード
                        0       キャッシュ許可,ライトスルー
                        1       キャッシュ許可,コピーバック
                        2       キャッシュ禁止,ストアバッファ禁止
                        3       キャッシュ禁止,ストアバッファ許可
                        -1      エラー(ページデスクリプタがない,非常駐)

        $8004   指定論理アドレスのキャッシュモードの設定(ページ単位)
                <d2.l:キャッシュモード
                        0       キャッシュ許可,ライトスルー
                        1       キャッシュ許可,コピーバック
                        2       キャッシュ禁止,ストアバッファ禁止
                        3       キャッシュ禁止,ストアバッファ許可
                <a1.l:論理アドレス
                >d0.l:変更前のキャッシュモード
                        -1      エラー(ページデスクリプタがない,非常駐)

        $C001   拡張モード
                >d0.l:
                        0       正常終了
                        -1      既に拡張モードになっている

        $C006   キャッシュとスーパースケーラの状態の取得
                >d0.l:キャッシュとスーパースケーラの状態
                        bit0    データキャッシュの状態(0=OFF,1=ON)
                        bit1    命令キャッシュの状態(0=OFF,1=ON)
                        bit2    ストアバッファの状態(0=OFF,1=ON)
                        bit3    ブランチキャッシュの状態(0=OFF,1=ON)
                        bit4    スーパースケーラの状態(0=OFF,1=ON)

        $C007   キャッシュとスーパースケーラの状態の設定
                <d2.l:キャッシュとスーパースケーラの状態
                        bit0    データキャッシュの状態(0=OFF,1=ON)
                        bit1    命令キャッシュの状態(0=OFF,1=ON)
                        bit2    ストアバッファの状態(0=OFF,1=ON)
                        bit3    ブランチキャッシュの状態(0=OFF,1=ON)
                        bit4    スーパースケーラの状態(0=OFF,1=ON)
                >d0.l:変更前のキャッシュとスーパースケーラの状態

        $F000   論理アドレスから物理アドレスを求める
                <a1.l:論理アドレス
                >d0.l:物理アドレス
                        $00000000〜$1FFFFFFF    物理アドレス
                        -1      エラー(ページデスクリプタがない,非常駐)

        $F001   アドレス変換の設定(ページ単位)
                <d2.l:物理ページアドレス
                <a1.l:論理ページアドレス
                >d0.l:ページ属性
                        -1      エラー(ページデスクリプタがない,非常駐,
                                デスクリプタの領域が不足している)

        $F002   論理ページの属性の取得と設定
                <d2.l:ページ属性
                        -1      取得のみ
                <a1.l:論理ページアドレス
                >d0.l:変更前のページ属性
                        -1      エラー



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        IOCS _HIMEM($F8)

────────────────────────────────────

 ローカルメモリ上のメモリブロックを操作するための IOCS コールです。ツク

モの拡張メモリ TS-6BE16 の添付ディスクに入っている HIMEM.SYS v1.0 とほぼ

互換で、realloc などの機能が追加されています。拡張メモリ TS-6BE16 管理ド

ライバ(TS16DRV.X)とほぼ互換です。

<d1.w:コマンドコード
        1       HIMEM_MALLOC
                ブロックの確保
                        下位アドレスから確保する
                        <d2.l:確保するブロックのサイズ
                        >d0.l:0=成功,-1=失敗
                        >a1.l:0=失敗,0以外=確保したブロックのユーザ領域の先頭

        2       HIMEM_FREE
                ブロックの開放
                        <d2.l:開放するブロックのユーザ領域の先頭
                                0=実行中のプロセスが確保したブロックをすべて開放
                        >d0.l:0=成功,-1=失敗

        3       HIMEM_GETSIZE
                確保できるサイズの取得
                        >d0.l:確保できるサイズの合計
                        >d1.l:一度に確保できる最大のサイズ

        4       HIMEM_RESIZE
                ブロックのサイズ変更
                        ブロックは移動しない
                        新しいサイズが0ならばブロックを開放する
                        <d2.l:サイズを変更するブロックのユーザ領域の先頭
                        <d3.l:新しいサイズ(0=ブロックを開放する)
                        >d0.l:0=成功,-1=失敗

        以降のコールはHIMEM.SYS v1.0にはない

        5       HIMEM_VERSION
                _HIMEMのバージョンの取得
                        >d0.l:'060T'
                        >d1.l:バージョン

        6       HIMEM_CALLOC
                配列のためのブロックの確保
                        下位アドレスから確保する
                        確保したブロックは0で初期化される
                        <d2.l:配列要素数
                        <d3.l:配列要素サイズ
                        >d0.l:0=成功,-1=失敗
                        >a1.l:0=失敗,0以外=確保したブロックのユーザ領域の先頭

        7       HIMEM_REALLOC
                ブロックのサイズ変更
                        ブロックが移動することがある
                        移動するとき新しいブロックは下位から確保する
                        移動してもブロックを確保したプロセスは変化しない
                        新しいサイズが0ならばブロックを開放する
                        <d2.l:サイズを変更するブロックのユーザ領域の先頭
                        <d3.l:新しいサイズ(0=ブロックを開放する)
                        >d0.l:0=成功,-1=失敗
                        >a1.l:0=失敗,0以外=移動後のブロックのユーザ領域の先頭

        8       HIMEM_MALLOC2
                ブロックの確保
                        <d2.l:確保するサイズ
                        <d3.w:bit15=プロセス指定フラグ
                                        0       実行中のプロセス
                                        1       d4.lを親プロセスとして使用する
                                下位8bit=モード
                                        0       下位から
                                        1       必要最小ブロックから
                                        2       上位から
                                        3       最大ブロックから
                        <d4.l:(d3.wのbit15が1のとき)親プロセスのメモリ管理テーブル
                        >d0.l:0=成功,$81xxxxxx=確保できる最大のサイズ,$82000000=まったく確保できない
                        >a1.l:0=失敗,0以外=確保したブロックのユーザ領域の先頭

        9       HIMEM_PSFREE
                特定のプロセスが確保したブロックの開放
                        子プロセスが確保したブロックも開放する
                        <d2.l:開放するブロックを確保したプロセスのメモリ管理テーブル
                        >d0.l:0=成功,-1=失敗

        10      HIMEM_GETAREA
                _HIMEMでアクセスできるメモリ空間の取得
                        >d0.l:メモリ空間の先頭(先頭のブロックのヘッダ),-1=失敗
                        >d1.l:メモリ空間の末尾+1,-1=失敗

?d0,d1-d7/a0-a6は返却に使われるものを除いて破壊されない



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        DOS コール

────────────────────────────────────

 060turbo.sys で提供される DOS コールです。主な変更点はローカルメモリ対

策に関連するものです。連続メモリ型のサブメモリ管理も整備中です。

────────────────────────────────────
$FF48   _MALLOC         ブロックの確保(下位から)
<(a6).l:確保するブロックのサイズ
>d0.l:確保したブロックのユーザ領域の先頭
        $81xxxxxx=確保できる最大のサイズ,$82000000=まったく確保できない
────────────────────────────────────
新設
$FF90   _MALLOC3        ブロックの確保(下位から)
<(a6).l:確保するブロックのサイズ
>d0.l:確保したブロックのユーザ領域の先頭
        $8xxxxxxx=確保できる最大のサイズ
────────────────────────────────────
$FF49   _MFREE          ブロックの開放
(a6).l:開放するブロックのユーザ領域の先頭
        0=実行中のプロセスが確保したブロックをすべて開放する
>d0.l:エラーコード
────────────────────────────────────
$FF4A   _SETBLOCK       ブロックのサイズ変更
        ブロックは移動しない
<(a6).l:サイズを変更するブロックのユーザ領域の先頭
<(4,a6).l:新しいサイズ
>d0.l:エラーコード
        $81xxxxxx=確保できる最大のサイズ
────────────────────────────────────
新設
$FF91   _SETBLOCK2      ブロックのサイズ変更
        ブロックは移動しない
<(a6).l:サイズを変更するブロックのユーザ領域の先頭
<(4,a6).l:新しいサイズ
>d0.l:エラーコード
        $8xxxxxxx=確保できる最大のサイズ
────────────────────────────────────
$FF88   _MALLOC2        ブロックの確保(モード指定あり)
<(a6).w:bit15=プロセス指定フラグ(0=実行中のプロセス,1=(6,a6).lを親プロセスとして使用する)
        下位8bit=モード(0=下位から,1=必要最小ブロックから,2=上位から,3=最大ブロックから)
<(2,a6).l:確保するサイズ
<(6,a6).l:((a6).wのbit15が1のとき)親プロセスのメモリ管理テーブル
>d0.l:確保したブロックのユーザ領域の先頭
        $81xxxxxx=確保できる最大のサイズ,$82000000=まったく確保できない
────────────────────────────────────
新設
$FF92   _MALLOC4        ブロックの確保(モード指定あり)
<(a6).w:bit15=プロセス指定フラグ(0=実行中のプロセス,1=(6,a6).lを親プロセスとして使用する)
        下位8bit=モード(0=下位から,1=必要最小ブロックから,2=上位から,3=最大ブロックから)
<(2,a6).l:確保するサイズ
<(6,a6).l:((a6).wのbit15が1のとき)親プロセスのメモリ管理テーブル
>d0.l:確保したブロックのユーザ領域の先頭
        $8xxxxxxx=確保できる最大のサイズ
────────────────────────────────────
$FF4B   _EXEC           子プロセスの実行
<(a6).b:モジュール番号
<1(a6).b:モード
        0       プログラムのロードおよび実行
                        <2(a6).l:実行ファイル名
                                最上位バイトは実行ファイルのタイプ(0=拡張子,1=r,2=z,3=x)
                        <6(a6).l:コマンドライン
                        <10(a6).l:環境のアドレス(0ならば実行中のプロセスの環境)
                        >d0.l:終了コード(常駐したとき上位ワード=1)
        1       プログラムのロード
                        <2(a6).l:実行ファイル名
                                最上位バイトは実行ファイルのタイプ(0=拡張子,1=r,2=z,3=x)
                        <6(a6).l:コマンドライン
                        <10(a6).l:環境のアドレス(0ならば実行中のプロセスの環境)
                        >d0.l:実行開始アドレス
                        >a0.l:メモリ管理テーブル
                        >a1.l:プログラムの末尾+1
                        >a2.l:コマンドライン
                        >a3.l:環境
                        >a4.l:実行開始アドレス
        2       実行ファイル名のpath検索
                        <2(a6).l:実行ファイル名とコマンドライン
                                最上位バイトは実行ファイルのタイプ(0=拡張子,1=r,2=z,3=x)
                        <6(a6).l:コマンドラインのバッファ
                        <10(a6).l:環境のアドレス(0ならば実行中のプロセスの環境)
                        >d0.l:エラーコード
        3       実行ファイルのアドレス指定ロード
                        <2(a6).l:実行ファイル名
                                最上位バイトは実行ファイルのタイプ(0=拡張子,1=r,2=z,3=x)
                        <6(a6).l:ロードアドレス
                        <10(a6).l:リミットアドレス
                        >d0.l:text+data+bss+comm+stackのサイズ
        4       ロード済みのプログラムの実行
                        <2(a6).l:実行開始アドレス
                        >d0.l:終了コード(常駐したとき上位ワード=1)
        5       モジュール番号の検索(最後に見つかったモジュール番号を返す)
                        <2(a6).l:実行ファイル名
                        <6(a6).l:モジュール名
                        >d0.l:モジュール番号*$100

 ロード時、LZX の展開および XC のライブラリに対するパッチあてを行います。
────────────────────────────────────
$FFAD   _S_MALLOC       メインスレッドのメモリ空間からのブロックの確保
<(a6).w:bit15=プロセス指定フラグ(0=実行中のプロセス,1=(6,a6).lを親プロセスとして使用する)
        下位8bit=モード(0=下位から,1=必要最小ブロックから,2=上位から,3=最大ブロックから)
<(2,a6).l:確保するサイズ
<(6,a6).l:((a6).wのbit15が1のとき)親プロセスのメモリ管理テーブル
>d0.l:確保したブロックのユーザ領域の先頭
        $81xxxxxx=確保できる最大のサイズ,$82000000=まったく確保できない
────────────────────────────────────
新設
$FF93   _S_MALLOC2      メインスレッドのメモリ空間からのブロックの確保
<(a6).w:bit15=プロセス指定フラグ(0=実行中のプロセス,1=(6,a6).lを親プロセスとして使用する)
        下位8bit=モード(0=下位から,1=必要最小ブロックから,2=上位から,3=最大ブロックから)
<(2,a6).l:確保するサイズ
<(6,a6).l:((a6).wのbit15が1のとき)親プロセスのメモリ管理テーブル
>d0.l:確保したブロックのユーザ領域の先頭
        $8xxxxxxx=確保できる最大のサイズ
────────────────────────────────────
$FFAE   _S_MFREE        メインスレッドのメモリ空間からのブロックの開放
        現在のスレッドのメモリ空間の先頭(先頭のブロックのヘッダ)ならばスレッドを破棄する
        それ以外はメインスレッドのメモリ管理でロックを行わずに_MFREEを行う
<(a6).l:開放するブロックのユーザ領域の先頭
>d0.l:エラーコード
────────────────────────────────────
$FFAF   _S_PROCESS      サブスレッドのメモリ空間の設定
        サブメモリ型サブスレッドのときサブスレッドのメモリ空間の先頭のブロックのヘッダを作る
        連続メモリ型サブスレッドのときサブスレッドのメモリ空間の直後にダミーのヘッダを作る
        排他制御情報を作成する
<(a6).w:スレッド番号
<2(a6).l:ブロックの先頭アドレス
<6(a6).l:サブのメモリ管理のサイズ
<10(a6).l:先頭のブロックのサイズ
>d0.l:先頭のブロックのユーザ領域の先頭
        $FFFFxxxx=最大スレッド番号,$FFFFFFF2=ブロックの指定が違う
────────────────────────────────────
$FFF8   _OPEN_PR追加処理
        スレッドが作成された直後に呼ばれる
        排他制御情報を作成する
<d0.w:作成されたスレッド番号
────────────────────────────────────
$FFF9   _KILL_PR追加処理
        スレッドが削除された直後に呼ばれる
        排他制御情報を破棄する
<d0.w:削除されたスレッド番号-1
────────────────────────────────────
$FFFF   _CHANGE_PR追加処理
        スレッドが切り替わった直後に呼ばれる
        排他制御情報を切り替える
<d0.w:次のスレッド番号
────────────────────────────────────



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        お願い

────────────────────────────────────

 060turbo.sys は現段階ではまだ開発途上ですので、改造品の配布はご遠慮下

さい。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        動作保証について

────────────────────────────────────

 誠に勝手ながら、060turbo の動作保証はハードウェア部分のみとなっており

ますので、060turbo.sys を含めた添付ソフトウェアの動作は保証致しかねます。

満開ネットでのバージョンアップサポート(下記)をご利用下さい。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

        060turbo.sys のバージョンアップサポートについて

────────────────────────────────────

 060turbo.sys のバージョンアップのサポートは、満開ネット(03-3985-6227)

の 60TURBO および PROGRAM のボードで行います。バグ情報もこちらにお願いし

ます。



(EOF)