Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ nfb(4) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fb(4)

NFB(4)  —  UNIX Programmer’s Manual

名称

nfb − NEWS 新しいフレームバッファデバイスのインタフェース

形式

mfb0 at iop addr ffe5d0 intr 44

cfb0 at iop addr ffe5d0 intr 44

pfbm0 at iop addr ffe5d0 intr 44

pfbc0 at iop addr ffe5d0 intr 44

qfbm[0−7] at iop addr ffe5d0 intr 44

qfbc[0−7] at iop addr ffe5d0 intr 44

/dev/mfb0

/dev/cfb0

/dev/pfbm0

/dev/pfbc0

/dev/qfbm[0−7]

/dev/qfbc[0−7]

#include <newsiop/framebuf.h>

解説

nfb インタフェースは、 NEWS フレームバッファデバイスへのアクセスを行います。 fb インターフェスとは別のデバイスを使用し、 複数のデバイスを同時にアクセスすることができます。

各デバイスのフレームバッファの大きさと表示領域は次のとうりです。

                              |バッファ       |表示領域
   ---------------------------+---------------+------------
   白黒                       |               |
   NWB-512                    | 2048 x 2048   | 816 x 1024
   NWS-711,PWS-1520,1550      | 1024 x 1024   | 816 x 1024
   ---------------------------+---------------+------------
   カラー                     |               |
   NWS-721,NWB-223,225(A),251 | 2048 x 1024   | 1280 x 1024
   PWS-1560                   | 1024 x 1024   | 1024 x 816
   ---------------------------+---------------+------------
   グレイスケール             |               |
   NWB-514                    | 2048 x 2048   | 1280 x 1280

このフレームバッファのインタフェースによって、 データの読み書き、 ラスタ操作、 線引きなどが行えます。

操作は、 ioctl(2) システムコールを使用して行なわれます。 ioctl コールにより、 フレームバッファの操作と同様にユーザ定義 (ユーザスペース) ビットマップ上の操作ができます。

カラー

カラービットマップディスプレイのフレームバッファは、 8 (または 4) 個のプレーンから成り、 256 (または 16) 色が同時に表示されます。 赤、緑、青の 3 色は各 8 (または 4) ビットで表され、 ユーザは、 1670 万 (または 4096) 色のカラーパレットから色を選ぶことができます。 グレースケールビットマップディスプレイの場合も同様に、 4 個のプレーンからなり、 256 階調のうち 16 階調が同時に表示されます。

データタイプ

次のデータ構造体は、ビットマップ操作に使用されます。

 typedef unsigned short     Word;
 #define BitsPerWord     16
 typedef struct {
        short   x, y;
} lPoint;
 typedef struct {
        lPoint  origin;
        lPoint  extent;
} lRectangle;
 typedef struct {
        char            type;           /∗ BM_FB、BM_MEM BM_0 または BM_1 ∗/
        char            depth;          /∗ ビットマップのプレーン数 ∗/
        unsigned short  width;          /∗ 幅(ワード単位) ∗/
        lRectangle      rect;           /∗ 定義領域 ∗/
        Word            ∗base;          /∗ BM_MEM 用 ∗/
} lBitmap;
 #define BM_FB           0       /∗ フレームバッファ ∗/
#define BM_MEM          1       /∗ メモリ内のビットマップ(XY 形式) ∗/
#define BM_0            2       /∗ データ ‘0’ の仮想ビットマップ ∗/
#define BM_1            3       /∗ データ ‘1’ の仮想ビットマップ ∗/
#define BM_LBP          4       /∗ LBP フレームバッファ ∗/
 

Word は、 サインなしの 16 ビット(1 ワード)と、 定義されます。

lPoint 構造体は、 ポイントのために使用します。

lRectangle の構造体は、 矩形を作ることに使用されます。 その origin (原点) は、 左上角にあり、 extent は矩形の縦と横の長さを示します。

lBitmap の構造体は、 ビットマップを定義するために使用されます。 type のフィールドは、 ビットマップがメインメモリ内にあるか、 フレームバッファ内にあるかを示します。 BM_FB は、 フレームバッファ内のビットマップであり、 BM_MEM は、 メインメモリ内のビットマップです。 BM_MEM ビットマップは、 XY 形式でデータが格納されています。 また、 プレーン 0 のデータの次にプレーン 1 のデータがあり、 以降その順でずっと続いています。 BM_0 及び BM_1 は仮想ビットマップで、 そのデータは、 すべて 0 または 1 です。 BM_0/BM_1 ビットマップはラスタ操作において、 ソースビットマップとしてのみ使用することができます。 depth フィールドは、 ビットマップのプレーン数を与えます。 白黒フレームバッファのビットマップはプレーン数 1 をもち、 カラーフレームバッファでは 8 または 4 のプレーン数をもっています。 メインメモリ中のビットマップや BM_0/BM_1 ビットマップでは、 カラー表示が使用されているかいないかにかかわらず、 1 または 8, 4 プレーン数をもつことができます。

BM_MEM ビットマップの width (横幅) は、 X 方向のワード数で与えます。 width は、 BM_FB と BM_0/BM_1 ビットマップに指定することはできません。

rect フィールドは、 ビットマップの大きさを与えます。 この領域内でのみ、操作が可能です。

base フィールドは、 データのスタートポイントを指定します。

BM_MEM ビットマップの場合、 データはワード境界で整列させなければなりません。 最初の列の最初のワードの最初のビットが、 rect.origin で指定した場所に対応します。 これは、 1 のプレーン数をもつビットマップが (width ∗ rect.extent.y) ワードを必要とすることを意味します。 ここで、 width は rect.extent.x ビットを十分に含む大きさであるものとします。

IOCTL

FBIOCNSETDIM

FBIOCNGETDIM
これらは、 ユーザがディスプレイの輝度を調べたり設定するためのものです。 輝度には、 NWB-512 及び NWS-711, PWS-1520, PWS-1550 の場合 0 から 3 までのレベルがあります。 0 が最も明るく、 デフォルト値になっています。 NWB-251 及び NWB-514, PWS-1560 の場合はレベルがなく ON/OFF のどちらかです。 NWB-225 及び NWB-223, NWS-721 には、 この機能がありません。

 int        dimmer_level;
ioctl(fildes, FBIOCNSETDIM, &dimmer_level);
ioctl(fildes, FBIOCNGETDIM, &dimmer_level);
 

FBIOCNBITBLT
このリクエストは、 2 オペランドのラスタ操作(bitblt)のためのものです。 ソースおよびデスティネーションビットマップは、 メインメモリまたはフレームバッファにあるものです。 BM_0/BM_1 ビットマップはソースのみに使用することができます。 ソースとデスティネーションビットマップのプレーン数は、 等しいか、 またはいずれかのビットマップのプレーン数が 1 でなければなりません。

 /∗ 2 オペランド bitblt ∗/
typedef struct {
        unsigned char   func;           /∗ ファンクションコード ∗/
        char            transp;         /∗ 透過性 ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        lBitmap         srcBitmap;      /∗ ソースビットマップ ∗/
        lRectangle      srcRect;        /∗ ソース矩形 ∗/
        lBitmap         destBitmap;     /∗ デスティネーションビットマップ ∗/
        lRectangle      destClip;       /∗ クリップ矩形 ∗/
        lPoint          destPoint;      /∗ デスティネーションポイント ∗/
} lBitblt;
 /∗ 機能 ∗/
#define BF_0    0x0     /∗ 0 ∗/
#define BF_SDA  0x1     /∗ Src(ソース) & Dest(デスティネーション) ∗/
#define BF_SDIA 0x2     /∗ Src & ~Dest ∗/
#define BF_S    0x3     /∗ Src ∗/
#define BF_SIDA 0x4     /∗ ~Src & Dest ∗/
#define BF_D    0x5     /∗ Dest ∗/
#define BF_SDX  0x6     /∗ Src ^ Dest ∗/
#define BF_SDO  0x7     /∗ Src | Dest ∗/
#define BF_SDOI 0x8     /∗ ~(Src | Dest) ∗/
#define BF_SDXI 0x9     /∗ ~(Src ^ Dest) ∗/
#define BF_DI   0xa     /∗ ~Dest ∗/
#define BF_SDIO 0xb     /∗ Src | ~Dest ∗/
#define BF_SI   0xc     /∗ ~Src ∗/
#define BF_SIDO 0xd     /∗ ~Src | Dest ∗/
#define BF_SDAI 0xe     /∗ ~(Src & Dest) ∗/
#define BF_1    0xf     /∗ 1 ∗/
 /∗ プレーンマスク ∗/
#define FB_PLANEALL     0xff
#define FB_PLANE0       0x1
#define FB_PLANE1       0x2
#define FB_PLANE2       0x4
#define FB_PLANE3       0x8
#define FB_PLANE4       0x10
#define FB_PLANE5       0x20
#define FB_PLANE6       0x40
#define FB_PLANE7       0x80
 

lBitblt 構造体は、 パラメータとして使用されます。 func フィールドは、 ラスタ操作の機能コードを示します。 transp フィールドは、 透過性に関するもので、 値は 0 または 1 です。 1 の場合、 0 の値をもつソースピクセルに対応するデスティネーションのピクセルは、 影響を受けません。

fore_color と aux_color のフィールドは、 ソースビットマップのプレーン数が 1 の場合、 意味を持ちません。 値 1 をもつソースビットは、 対応するデスティネーションのピクセルとの 操作を実行する前に、 fore_color (に対応したビットパターン) を値としてとります。 一方、 bitblt は、 その機能実行中、 値が 0 のソースビットは aux_color であるものとみなします。 たとえば、 func が BF_S (ソースからデスティネーションへのコピー) であるならば、 値 1 をもつソースビットに対応するピクセルが、 fore_color で表示され、 他のピクセルが aux_color で表示されます。

planemask フィールドは、 操作にどのプレーンを使用するかを指定します。 planemask 中の 1 は、 対応するプレーンを操作の対象とすることを bitblt に知らせます。 それが 0 であった場合には、 そのプレーンは無視されます。 ビット N は、 プレーン N と対応します。

フィールド srcBitmap と srcRect は、 どのソースビットマップを操作に使用するかということを示します。

フィールド destBitmap と destPoint は、 デスティネーションのビットマップを指定します。 destPoint は左上隅を示し、 ラスタ操作が行われる矩形の大きさは srcRect と同じです。 フィールド destClip は、 デスティネーションのどの部分をクリッピングするかを指定するために使用されます。

 lBitblt    bitblt;
ioctl(fildes, FBIOCNBITBLT, &bitblt);
 

FBIOCNBATCHBITBLT
このリクエストは、 多くの bitblt 操作をバッチ処理で実行するために使用されます。 ソースやデスティネーションのビットマップは、 各操作を通じて同じですが、 ソースの矩形とデスティネーションポイントは、 それぞれで違っていてもかまいません。

 typedef struct {
        lRectangle      srcRect;        /∗ ソース矩形 ∗/
        lPoint          destPoint;      /∗ デスティネーションポイント ∗/
} lSrcDest
  /∗
 ∗ batch bitblt
 ∗/
typedef struct {
        unsigned char   func;           /∗ 機能コード ∗/
        char            transp;         /∗ 透過性 ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        lBitmap         srcBitmap;      /∗ ソースビットマップ ∗/
        lBitmap         destBitmap;     /∗ デスティネーションビットマップ ∗/
        lRectangle      destClip;       /∗ クリップ矩形 ∗/
        int             nSrcDest;       /∗ リスト中の src-dest の数 ∗/
        lSrcDest        ∗srcDestList;   /∗ src-dest 指定のポインタ ∗/
} lBatchBitblt;
 #define MAX_BATCHBITBLT 1024    /∗ src-dest リストの最大数 ∗/
 

lBatchBitblt 構造体は、 lBitblt 構造体と似ており、 ソースとデスティネーションのビットマップを含んでいます。 srcDestList フィールドは、 ソース矩形のリストとデスティネーションポイントのリストを指定し、 その要素の数は nSrcDest フィールドに与えられます。

 lBatchBitblt       bbitblt;
ioctl(fildes, FBIOCNBATCHBITBLT, &bbitblt);
 

FBIOCNTILEBITBLT
このリクエストは、 ‘パターン塗りつぶし’ のラスタ操作で使用します。

 /∗ タイル 2 オペランド bitblt ∗/
typedef struct {
        unsigned char   func;           /∗ 機能コード ∗/
        char            transp;         /∗ 透過性 ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        lBitmap         ptnBitmap;      /∗ パターンビットマップ ∗/
        lRectangle      ptnRect;        /∗ パターン矩形 ∗/
        lPoint          refPoint;       /∗ 参照ポイント ∗/
        lBitmap         destBitmap;     /∗ デスティネーションビットマップ ∗/
        lRectangle      destClip;       /∗ クリップ矩形 ∗/
        lRectangle      destRect;       /∗ デスティネーション矩形 ∗/
} lTileBitblt;
 

lTileBitblt 構造体は、 パラメータの受け渡しに使用されます。 ptnBitmap と ptnRect フィールドは、 使用するパターンを指定します。 refPoint フィールドは、 塗りつぶし操作の参照ポイントを示します。 これは、 その参照ポイントとパターンの左上隅が、 デスティネーションビットマップ上で一致するように作られるという意味です。 参照ポイントは、 デスティネーション矩形またはそのクリップ矩形の外側に指定することもできます。

 lTileBitblt        tbitblt;
ioctl(fildes, FBIOCNTILEBITBLT, &tbitblt);
 

FBIOCNPOLYLINE
このリクエストは、 ユーザがポリライン (直線) を引くためのものです。 ユーザは自由に、 線の色、 線のパターン、 ラスタ操作の機能コードを指定することができます。

 /∗ 線 ∗/
typedef struct {
        unsigned int    lptn;           /∗ ラインパターン ∗/
        short           np;             /∗ ポイント数 ∗/
        lPoint          ∗plist;         /∗ ポイントリスト ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード ∗/
        char            dlpf;           /∗ 最終ポイント描画フラグ ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimLine;
 /∗ ラインパターン(例) ∗/
#define LINE_SLD        (unsigned)0xffffffff    /∗ ソリッド ∗/
#define LINE_DSH        (unsigned)0xfcfcfcfc    /∗ ダッシュ - ∗/
#define LINE_DOT        (unsigned)0xcccccccc    /∗ ドット . ∗/
#define LINE_DSHDOT     (unsigned)0xfff18fff    /∗ ダッシュドット -. ∗/
#define LINE_DSHDOTDOT  (unsigned)0xff8c63ff    /∗ ダッシュドットドット -.. ∗/
 

lPrimLine 構造体は、 ポリラインをリクエストするために使用します。 lptn フィールドを使って 32 ビットのラインパターンを指定することができます。 plist フィールドは、 呼び出しにおいて np ポイントの受け渡しに使用します。 np は、 ポイント数であって線の数ではありません。 fore_color、aux_color、planemask、transp と func フィールドの説明は、 FBIOCNBITBLT を参照してください。 dlpf フラグは、 リスト中の最後のポイントを描くか描かないかを指定します。 つまり、 フラグが 0 であればそのポイントは描かれず、 他の場合は描かれます。 閉じた図形を描く場合に、 このフィールドに 0 が使われます。 drawBM と clip フィールドは、 ビットマップとクリップ矩形を別々に指定するのに使用されます。

 lPrimline  primline;
ioctl(fildes, FBIOCNPOLYLINE, &primline);
 

FBIOCNDJPOLYLINE このリクエストは FBIOCNPOLYLINE と似ています。
FBIOCNPOLYLINE は、 連続する線分を描くため使用されますが、 FBIOCNDJPOLYLINE は不連続線に使用されます。 dlpf フィールドは、 各線セグメントの終点を描くか描かないかを指定するために使用されます。

 lPrimline  primline;
ioctl(fildes, FBIOCNDJPOLYLINE, &primline);
 

FBIOCNPOLYMARKER
このリクエストは、 ポリマーカーを描くために使用します。 これは、 指定したパターンといくつかのビットマップ間でラスタ操作を実行するためのものです。

 /∗ マーカー ∗/
typedef struct {
        short           np;             /∗ ポイント数 ∗/
        lPoint          ∗plist;         /∗ ポイントリスト ∗/
        lRectangle      ptnRect;        /∗ パターン矩形 ∗/
        lBitmap         ptnBM;          /∗ パターンビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimMarker;
 

lPrimMaker 構造体は、 ポリマーカーの描画に使用されます。 ptnBM と ptnRect フィールドは、 ラスタ操作でどのパターンを使用するかを指定します。 フィールド plist と np は、 ポイントリストとポイント数をそれぞれ与えます。

 lPrimMarker        primmarkers;
ioctl(fildes, FBIOCNPOLYMARKER, &primmaker);
 

FBIOCNRECTANGLE
矩形を与えられたパターンで埋めます。

 /∗ 矩形を塗りつぶす ∗/
typedef struct {
        lRectangle      rect;           /∗ 矩形 ∗/
        lPoint          refPoint;       /∗ 塗りつぶし参照ポイント ∗/
        lRectangle      ptnRect;        /∗ パターン矩形 ∗/
        lBitmap         ptnBM;          /∗ パターンビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimRect;
 

このリクエストは、 lPrimRect 構造体を使用します。 rect フィールドは、 矩形を指定し、 一方、 ptnBM と ptnRect フィールドは、 その矩形を塗りつぶすパターンを指定します。 refPoint フィールドは、 パターンの左上隅に一致させるポイントを含みます。 refPoint は、 矩形とクリップ内にある必要はありません。

 lPrimRect  rect;
ioctl(fildes, FBIOCNRECTANGLE, &rect);
 

FBIOCNFILLSCAN
パターンによる塗りつぶしが、 指定された走査線にそって実行されます。

 /∗ 走査線配列 ∗/
#define SSCANL
typedef struct {
        short   y;
        short   x0, x1;
} lScanl;
 /∗ パターンを塗りつぶす ∗/
typedef struct {
        short           nscan;          /∗ 走査数 ∗/
        lScanl          ∗scan;          /∗ 走査線データ ∗/
        lPoint          refPoint;       /∗ 塗りつぶし参照ポイント ∗/
        lRectangle      ptnRect;        /∗ パターン矩形 ∗/
        lBitmap         ptnBM;          /∗ パターンビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        int             planemask;      /∗ プレーン選択 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsigned char   func;           /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimFill;
 

lScanl 構造体は、 走査線のために使用します。 一方、 lPrimFill 構造体は、 すべてのパラメータの受け渡しに使用します。 scan フィールドは走査線の配列へのポインタを含み、 nscan フィールドは何本の走査線があるかを示します。 パターンは、 ptnBM と ptnRect フィールドを使用することによって指定します。 また、 refPoint は、 パターンの左上隅に設定しておく必要のある参照ポイントです。

 lPrimFill  fill;
ioctl(fildes, FBIOCNFILLSCAN, &fill);
 

FBIOCNTEXT
文字列が指定したフォントで書き込まれます。 使用されるフォントは、 ビットマップフォントや ROM フォントです。

 /∗ テキスト ∗/
typedef struct {
        char            type;           /∗ ROM フォント、etc ∗/
        short           len;            /∗ 文字列長 ∗/
        unsigned char   ∗str;           /∗ 文字列 ∗/
        lPoint          p;
        int             dx, dy;         /∗ ベクトル (左へ 16 bit シフトされている) ∗/
        char            ex_factor;      /∗ 拡大ファクタ ∗/
        lPoint          fp;             /∗ ビットマップフォント左上 ∗/
        short           width, height;  /∗ フォント幅、フォントの高さ ∗/
        short           column;         /∗ 1 列の文字数 ∗/
        lBitmap         fontBM;         /∗ フォントビットマップ ∗/
        int             fore_color;     /∗ フォアグラウンド色 ∗/
        int             aux_color;      /∗ 補色 ∗/
        char            transp;         /∗ 透過性 ∗/
        unsighed char   func;           /∗ ラスタ操作機能コード ∗/
        lRectangle      clip;           /∗ クリップ矩形 ∗/
        lBitmap         drawBM;         /∗ 描画するビットマップ ∗/
} lPrimText;
 /∗ ビットマップフォントタイプ ∗/
#define ROM_ASCII       0
#define ROM_KANJI       1
#define ASCII           2
 

文字を書くためには、 lPrimText 構造体を使用しなければなりません。 type フィールドは、 どのフォントを使用するかを示します。

    ROM_ASCIIROM font (1 バイトコード)
    ROM_KANJIROM font (JIS 漢字コード)
    ASCIIビットマップフォント(1 バイトコード)

len フィールドには、 バイト単位で文字列の長さを与えます。 漢字を使用する場合、 これが文字数と一致しないことに注意してください。 str フィールドは、 文字列へのポインタです。 p フィールドは、 最初の文字の左上角に一致するポイントにします。 dx と dy フィールドは、 文字列を書く方向を示します。 たとえば、 前に書かれた文字の 26 ドット右に水平に文字を書くとき、 dx = 26 << 16; dy=0 というように使用します。 ex_factor フィールドは、 水平方向の拡大ファクタを示します。 たとえば、1 であれば通常の幅になり、 2 であればその幅は 2 倍になります。 fp、width、 height、column フィールドは、 フォントビットマップを定義します。 フォントビットマップの左上隅は fp で、 文字の幅や高さは、 width と height によって決まります (文字の大きさは、一定であり、 可変ピッチのフォントは、 サポートされていません)。 column フィールドには、 一列の文字数が入ります。 フィールド first_chr と last_chr は、 フォントビットマップの中にある最初と最後の文字を示します。

 lPrimtText text;
ioctl(fildes, FBIOCNTEXT, &text);
 

FBIOCNGETSCRTYPE
このリクエストは、 ビットマップディスプレイの型を返します。

 /∗
 ∗      スクリーンタイプ
 ∗/
typedef struct {
        short           colorwidth;     /∗ カラー幅 ∗/
        short           plane;          /∗ プレーン数 ∗/
        char            type;           /∗ デバイスタイプ ∗/
        char            unit;           /∗ ユニットナンバー ∗/
        lRectangle      bufferrect;     /∗ フレームバッファ領域 ∗/
        lRectangle      visiblerect;    /∗ 表示画面領域 ∗/
} lScrType;
 

lScrType 構造体は、 パラメータを受け渡すために使用されます。 colorwidth フィールドは、 カラーパレットの赤、緑、青の各値に使われるビット数を示します。 幅は 4 または 8 です。 4 ならばバイト中の上位の 4 ビットが使用され、 8 ならば 8 ビット全部が使用されます。 plane フィールドはプレーンの数を示し、 1 ならばモノクロディスプレイであり、 8 (または 4) ならばカラーディスプレイまたはグレースケールディスプレイです。 type フィールドはビットマップディスプレのタイプを示し、 以下のようにインタフェースボードに固有の値が割り当てられています。


#define FB_NWB512       1
#define FB_NWB225       2
#define FB_POPM         3
#define FB_POPC         4
#define FB_NWB514       5
#define FB_NWB251       6

unit フィールドは同じインタフェースを複数枚使用する場合に、 ボード上のディップスイッチで選択されたアドレス順にボードの番号を示します。 bufferrect フィールドは、 フレームバッファの大きさを、 visiblerect フィールドは、 フレームバッファの表示部分を示します。

 lScrType   scrtype;
ioctl(fildes, FBIOCNGETSCRTYPE, &scrtype);
 

FBIOCNGETPALETTE

FBIOCNSETPALETTE
これらは、 カラーパレットデータの読み書きをします。

 /∗
 ∗     カラー
 ∗/
 typedef struct {
        short   index;  /∗ パレット番号 ∗/
        struct {
                short   r, g, b;
        } rgb;
} sPalette;
 typedef struct {
        int             count;
        sPalette        ∗palette;
} lPalette;
 

パレット番号は、 0 から 255 (8 プレーン) または 0 から 16 (4 プレーン) の範囲です。 palette フィルドは、 count で示された個数の sPalette 構造対の配列へのポインタです。 FBIOCNGETPALETTE は、 index フィールドに渡されたパレット番号を要求します。 rgb フィールドは、 コールされた後に書き込まれます。 FBIOCNSETPALETTE は、 index と rgb フィールドをユーザが設定するために使用します (rgb = 赤、緑、青) 。

 lPalette   palette;
ioctl(fildes, FBIOCNGETPALETTE, &palette);
ioctl(fildes, FBIOCNSETPALETTE, &palette);
 

関連ファイル

/dev/mfb0
/dev/cfb0
/dev/pfbm0
/dev/pfbc0
/dev/qfbm[0−7]
/dev/qfbc[0−7]

関連事項

fb(4)

バグ

NWS-1830/50 では、 異なるプロセスから同時にアクセスした場合にシステムダウンする場合があります。

FBIOCNBATCHBITBLT などのパラメータとして配列を必要とするリクエストは、 配列の大きさに制限があります。

LBP インターフェスはまだサポートされていません。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026