MSX Datapack wiki化計画

12章 ビットブロックマネージャ

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

 この章では、ビットブロックマネージャの構成や各ファンクションについて説明します。

 12.1 ビットブロックマネージャとは

 ビットブロックマネージャは、ウィンドウ処理を高速化するために、画面上の矩形領域を効率的に裏VRAMに格納するためのマネージャです。オーバーラップウィンドウの再描画処理をアプリケーションが行わなくてもよいのは、ビットブロックマネージャが、隠される部分を横に1ラインずつスライスし、上から順に裏VRAMへ退避しているからです。
 ビットブロックマネージャは「ブロック」と「ロット」という概念でデータを管理します。ブロックとは、1つのデータを表すビットの集まりで、複数のブロックの集まりをロットと呼びます。
 ディスプレイマネージャはMSXView起動時やスクリーンモードが変わるときにビットブロックマネージャを初期化して、SYSLOTとAPLLOTというロットを1つずつ作ります。SYSLOTはロット番号1、APLLOTはロット番号2です。
 ビットブロックマネージャは、ウィンドウ管理の内部処理ルーチンとしてディスプレイマネージャが使用しますが、アプリケーションでもデータ保存領域として使うこともできます。この場合、アプリケーションはAPLLOTつまりロット番号2のみが使用可能です。ディスプレイマネージャもAPLLOTを使用するので、アプリケーションがデータ領域として使うときは、その分ウィンドウの退避領域が減ることになります。
 ディスプレイマネージャやアプリケーションが、.newblc()を呼んでブロックを作成すると、ハンドルが返され、それ以降のブロックに対する読み書きは、そのハンドルでブロックを指定して行います。ブロックの使用が終了したら、_freeblc()を呼んでそのブロックを解放しなければなりません。
 なおスクリーンモードを変更すると、画面は初期化され、すべてのデータおよびウィンドウは消去されます。

 12.2 ファンクション一覧

 ビットブロックマネージャには、以下のファンクションがあります。

表3.7 ビットブロックマネージャのファンクション一覧

機能番号名前意味ページ
118_initblc()ビットブロックマネージャの初期化412
119_newlot()新規ロットの割り付け412
120_freelot()ロットの解放413
121_newblc()新規ブロックの獲得413
122_freeblc()ブロックの解放413
123_putblc()ブロックへの保存417
124_getblc()ブロックから画面への表示417
125_swapblc()ブロック内と画面の画像の交換418
126_resizeblc()ブロックサイズの変更418
127_storeblc()ブロックへの画像の保存414
128_restoreblc()ブロックからの画像の取り出し414
129_blcpoint()ブロック上のカラーコードの獲得415
130_blcpixel()ブロックへの点の書き込み415
131_blcread()ブロックからメモリへの読み込み416
132_blcwrite()メモリからブロックへの書き込み416

 12.3 ファンクションの説明

 以下では、ビットブロックマネージャの各ファンクションについて説明します。

12.3.1 表記法

 ファンクションの説明では、次のように表記します。