1998/10/4
本関数はBootROM内に格納されているフォントデータをBIOSを通してアクセスするものです。
BootROM内には英数、日本語のフォントが格納されています。全角24×24pixel、半角12×24pixe、セガ特製外字、VMデフォルトラベルアイコンが用意されています。l
BIOSにはフォントデータの先頭アドレスを取得する関数、セマフォに関する関数が入っています。
□ | □ | □ | □ | □ | ■ | ■ | □ | □ | □ | □ | □ |
□ | □ | □ | □ | ■ | □ | □ | ■ | □ | □ | □ | □ |
□ | □ | □ | ■ | □ | □ | □ | □ | ■ | □ | □ | □ |
□ | □ | ■ | □ | □ | □ | □ | □ | □ | ■ | □ | □ |
□ | ■ | □ | □ | □ | □ | □ | □ | □ | □ | ■ | □ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | ■ | ■ | ■ | ■ | ■ | ■ | ■ | ■ | ■ | ■ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
■ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | ■ |
□ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ |
□ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ |
□ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ |
□ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ |
□ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ | □ |
SYD_BT_FNT_ASCII_24_OFS | ASCII アスキー |
SYD_BT_FNT_WEST_24_OFS | ISO 8859-1 海外用8ビットコード後半 |
SYD_BT_FNT_JISX_24_OFS | JIS X 0201 日本用8ビットコード後半 |
SYD_BT_FNT_KANA_24_OFS | Shift JIS part1 全角日本語非漢字部分 |
SYD_BT_FNT_LVL1_24_OFS | Shift JIS part2 日本語漢字第一水準部分 |
SYD_BT_FNT_LVL2_24_OFS | Shift JIS part3 日本語漢字第二水準部分 |
SYD_BT_FNT_GAIJ_24_OFS | GAIJI 特製外字 |
SYD_BT_FNT_VMSICON_OFS | VMデフォルトラベルアイコン |
セクションのデータサイズ。
SYD_BT_FNT_ASCII_24_SIZE | ASCII アスキー |
SYD_BT_FNT_WEST_24_SIZE | ISO 8859-1 海外用8ビットコード後半 |
SYD_BT_FNT_JISX_24_SIZE | JIS X 0201 日本用8ビットコード後半 |
SYD_BT_FNT_KANA_24_SIZE | Shift JIS part1 全角日本語非漢字部分 |
SYD_BT_FNT_LVL1_24_SIZE | Shift JIS part2 日本語漢字第一水準部分 |
SYD_BT_FNT_LVL2_24_SIZE | Shift JIS part3 日本語漢字第二水準部分 |
SYD_BT_FNT_GAIJ_24_SIZE | GAIJI 特製外字 |
SYD_BT_FNT_VMSICON_SIZE | VMデフォルトラベルアイコン |
各セクションでの代表的な文字コード。2byte日本語に関してはシフトJISコードを明記してあります。
SYD_BT_FNT_CODE_ASCII_MIN | アスキーの初めのコード |
SYD_BT_FNT_CODE_ASCII_MAX | アスキーの最後のコード |
SYD_BT_FNT_CODE_8BIT_MIN | 8ビットコードの初めのコード |
SYD_BT_FNT_CODE_8BIT_MAX | 8ビットコードの最後のコード |
SYD_BT_FNT_CODE_KANA_MIN | 2byteコードの最初のコード |
SYD_BT_FNT_CODE_KANA_MAX | 日本語非漢字部分の最後のコード |
SYD_BT_FNT_CODE_LVL1_MIN | 漢字第一水準の最初のコード |
SYD_BT_FNT_CODE_LVL1_MAX | 漢字第一水準の最後のコード |
SYD_BT_FNT_CODE_LVL2_MIN | 漢字第二水準の最初のコード |
SYD_BT_FNT_CODE_LVL2_MAX | 漢字第二水準の最後のコード |
SYD_BT_FNT_GAIJ_MIN | 外字の最初のコード |
SYD_BT_FNT_GAIJ_MAX | 外字の最後のコード |
SYD_BT_FNT_ICON_MIN | VMSアイコンの最初のコード |
SYD_BT_FNT_ICON_MAX | VMSアイコンの最後のコード |
フォントセマフォの成功、失敗を示す。syBtFntChkSmph()の関数値として利用されます。
SYD_BT_FNT_SMPH_SUCCESS | ブートロムへのアクセス可能 |
SYD_BT_FNT_SMPH_FAILURE | ブートロムへのアクセス不許可 |
フォントセット一覧(syBtFntGetAddr(), syBtFntGetInfo()使用時に必要)
SYE_BT_FNT_FONTSET_WESTERN_24 | ISO 8859-1 |
SYE_BT_FNT_FONTSET_JP_JIS_24 | JIS X 0201 |
SYE_BT_FNT_FONTSET_JP_KANA_24 | Shift JIS ひらがなまで |
SYE_BT_FNT_FONTSET_JP_LVL1_24 | Shift JIS 第一水準まで |
SYE_BT_FNT_FONTSET_JP_LVL2_24 | Shift JIS 第二水準まで |
SYE_BT_FNT_FONTSET_JP_GAIJ_24 | セガ特製外字 |
SYE_BT_FNT_FONTSET_VMSICON | VMデフォルトラベルアイコン |
typedef struct { Uint8 width; Uint8 height; } SYS_BT_FNT_INFO;
width | フォントの幅(単位:Pixel) |
height | フォントの高さ(単位:Pixel) |
関数 | 機能 | syBtFntGet | ブートロム上のフォントデータの先頭アドレスの取得 |
---|---|
syBtFntChkSmph | フォントセマフォのチェック |
syBtFntClrSmph | フォントセマフォのクリア |
syBtFntGetAddr<新規> | Shift JISコードから対象フォントデータへのオフセット値を取得 |
syBtFntGetInfo<新規> | Shift JISコードから対象フォントデータのサイズ情報を取得 |
syBtFntSjis2Jis<新規> | Shift JISコードからJISコードへ変換 |
#define SMD_WRK_ADDR (0x0c020000) main() { void *smFntAddr, *smTheFntAddr; void *smWrkAddr; Uint8 smTheCode; smFntAddr = syBtFntGet(); smWrkAddr = (void *)SMD_WRK_ADDR; smTheCode = '?'; /* evaluate the font address in Boot ROM */ smTheFntAddr = (void *)((Uint8)smFntAddr + SYD_BT_FNT_WORK_ASCII_24_OFS + (smTheCode - SYD_BT_FNT_CODE_ASCII_MIN) * SYD_BT_FNT_24_SIZE_HAN ); /* font semaphore check */ if( syBtFntChkSmph() == SYD_BT_FNT_SMPH_SUCCESS ) { /* copy 1 letter to work RAM from Boot ROM */ memcpy( smTheFntAddr, smWrkAddr, SYD_BT_FNT_24_SIZE_HAN ); /* font semaphore clear */ syBtFntClrSmph(); } }