MSX Datapack wiki化計画

12章 ビットブロックマネージャの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{include unfinished_page}}

,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[11章 ディスプレイマネージャ]]                                                    ,{BSIZE:0|RIGHT}[[13章 グラフパック]]                                                             →
 この章では、ビットブロックマネージャの構成や各ファンクションについて説明します。

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

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

,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0}
,機能番号,名前,意味,ページ
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,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 表記法
 ファンクションの説明では、次のように表記します。

,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[11章 ディスプレイマネージャ]]                                                    ,{BSIZE:0|RIGHT}[[13章 グラフパック]]                                                             →