(57)【要約】【課題】遊技機制御用プログラムに複雑な変更を加えることなく、メモリ容量を効率的に削減できる遊技機制御用マイクロコンピュータを提供する。【解決手段】遊技機の主制御基板に実装された遊技機制御用マイクロコンピュータ１のＲＯＭ部１２には、プログラム言語処理系３００によって生成された塊データ（データのビット幅と該ビット幅で表す数値との組で定義されたビットデータを隙間なく敷き詰めて塊構造にしたデータ）を記憶させておくことで、データ領域１２ｂに要するデータ容量を抑制でき、ビットデータの位置と該ビットデータのビット幅を指定して、塊データから任意のビットデータを読み出す機能をＣＰＵ部１１に予め持たせておくことで、プログラム領域１２ａに記憶させる遊技機制御用プログラムを複雑にしたり容量を増大させたりすることがない。【選択図】図２
2018112866.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも、遊技機制御用プログラムと該遊技機制御用プログラムで使用するデータが記憶されているＲＯＭ部と、該ＲＯＭ部の遊技機制御用プログラムおよびデータに基づいて遊技機の制御を行うＣＰＵ部と、該ＣＰＵ部が前記遊技機制御用プログラムを実行する際に作業領域として利用可能なＲＡＭ部と、を備えたワンチップ構造の遊技機制御用マイクロコンピュータにおいて、
前記ＲＯＭ部に記憶されているデータの少なくとも一部は、データのビット幅と該ビット幅で表す数値との組で定義されたビットデータを隙間なく敷き詰めて塊構造にした塊データとし、
前記ＣＰＵ部には、ビットデータの位置と該ビットデータのビット幅を指定して、前記塊データから任意のビットデータをロードする命令を含ませておく、
ようにしたことを特徴とする遊技機制御用マイクロコンピュータ。
【請求項２】
前記塊データには、複数のビット幅が定義された各ビット幅の並び順に対応させて各ビット幅の数値を順に定義した一連のビットデータから成るビットデータ群が含まれることを特徴とする請求項１に記載の遊技機制御用マイクロコンピュータ。
【請求項３】
前記塊データには、複数のビット幅の並び順に対応させて定義したビットデータ群が連続して複数含まれることを特徴とする請求項２に記載の遊技機制御用マイクロコンピュータ。
【請求項４】
前記請求項１〜請求項３の何れか１項に記載の遊技機制御用マイクロコンピュータのＲＯＭ部に書き込む遊技機制御用プログラムと塊データを含むバイナリコードを、ソースコードから変換して生成するプログラム言語処理系であって、
前記ソースコードとバイナリコードを併記して出力するリストファイルには、
前記塊データとしてＲＯＭ部に書き込むビットデータのバイナリコードを、１６進数で表記する１６進数表示領域と、
前記塊データとしてＲＯＭ部に書き込むビットデータのバイナリコードを、２進数で表記する２進数表示領域と、
を並べて設けるようにしたことを特徴とするプログラム言語処理系。
【請求項５】
前記２進数表示領域には、塊データとして含まれている各ビットデータに分けて２進数表記するようにしたことを特徴とする請求項４に記載のプログラム言語処理系。
【請求項６】
前記２進数表示領域に２進数表記する各ビットデータは、塊データ上のビット位置に準じて表示し、当該ビットデータの表示対象外となるビット箇所は、予め定めた無データ記号で埋めておくようにしたことを特徴とする請求項５に記載のプログラム言語処理系。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも、遊技機制御用プログラムと該遊技機制御用プログラムで使用するデータが記憶されているＲＯＭ部と、該ＲＯＭ部の遊技機制御用プログラムに基づいて遊技機の制御を行うＣＰＵ部と、該ＣＰＵ部が前記遊技機制御用プログラムを実行する際に作業領域として利用可能なＲＡＭ部と、を備えたワンチップ構造の遊技機制御用マイクロコンピュータと、この遊技機制御用マイクロコンピュータのＲＯＭ部に書き込む遊技機制御用プログラムとデータを含むバイナリコードを、ソースコードから変換して生成するプログラム言語処理系に関するものである。
【背景技術】
【０００２】
遊技機を制御する遊技機制御用マイクロコンピュータについては、制御のために使用することのできるメモリ容量が法律に基づいた規則によって定められており、その制限を超えた性能の遊技機を製造、販売することは違法である。
【０００３】
遊技機制御用マイクロコンピュータが使用できるメモリ容量が同じである場合、メモリを効率的に使用することができれば、より多くの機能を実装することができるので、それだけ市場競争力のある遊技機を開発することができる。したがって、遊技機の製造メーカーにとっては、メモリの効率的な使い方は重要なテーマである。
【０００４】
例えば、１つのコマンドに複数の命令（図柄１記憶数コマンドおよび図柄２記憶数コマンド）を含めることによって必要なプログラムやメモリの容量を削減したり、ぱちんこ遊技の始動入賞時には敢えて変動パターン乱数の取得はせず、別途設けた変動パターン抽選時に変動パターン乱数を取得することにより、始動入賞時に記憶すべき情報の数を減らして、プログラムやメモリの容量を削減したり、取得した図柄乱数の二値コードにおける上位バイトの値に基づき使用する図柄判定テーブルを決定し、図柄乱数の二値コードにおける下位バイトの値に基づき図柄判定テーブルから図柄を決定することにより、メモリやプログラムの容量を削減したりするぱちんこ遊技機が提案されている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−０３４３４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された発明では、まとまったメモリ容量の削減を一気に行えるものではなく、多岐にわたる改善を行った割に、メモリ容量の削減は僅かである。しかも、特許文献１に記載の発明のように、改善箇所を見つけてメモリ容量を削減する制御方式へ変更する場合、従前の遊技機とは微妙に異なる遊技制御が必要となるため、プログラムの変更箇所も多岐にわたり、それだけバグが発生し易く、デバッグに時間がかかるので、遊技機の開発を困難にしてしまう危険性がある。
【０００７】
本発明は上記事情に鑑みてなされたものであり、遊技機制御用プログラムに複雑な変更を加えることなく、メモリ容量を効率的に削減できる遊技機制御用マイクロコンピュータの提供を目的とする。また、遊技機制御用マイクロコンピュータのＲＯＭ部に書き込むバイナリデータを作成する過程でのデバッグ作業を容易にするプログラム言語処理系の提供を目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、請求項１に係る発明は、少なくとも、遊技機制御用プログラムと該遊技機制御用プログラムで使用するデータが記憶されているＲＯＭ部と、該ＲＯＭ部の遊技機制御用プログラムおよびデータに基づいて遊技機の制御を行うＣＰＵ部と、該ＣＰＵ部が前記遊技機制御用プログラムを実行する際に作業領域として利用可能なＲＡＭ部と、を備えたワンチップ構造の遊技機制御用マイクロコンピュータにおいて、前記ＲＯＭ部に記憶されているデータの少なくとも一部は、データのビット幅と該ビット幅で表す数値との組で定義されたビットデータを隙間なく敷き詰めて塊構造にした塊データとし、前記ＣＰＵ部には、ビットデータの位置と該ビットデータのビット幅を指定して、前記塊データから任意のビットデータをロードする命令を含ませておく、ようにしたことを特徴とする。
【０００９】
また、請求項２に係る発明は、前記請求項１に記載の遊技機制御用マイクロコンピュータにおいて、前記塊データには、複数のビット幅が定義された各ビット幅の並び順に対応させて各ビット幅の数値を順に定義した一連のビットデータから成るビットデータ群が含まれることを特徴とする。
【００１０】
また、請求項３に係る発明は、前記請求項２に記載の遊技機制御用マイクロコンピュータにおいて、前記塊データには、複数のビット幅の並び順に対応させて定義したビットデータ群が連続して複数含まれることを特徴とする。
【００１１】
また、請求項４に係る発明は、前記請求項１〜請求項３の何れか１項に記載の遊技機制御用マイクロコンピュータのＲＯＭ部に書き込む遊技機制御用プログラムと塊データを含むバイナリコードを、ソースコードから変換して生成するプログラム言語処理系であって、前記ソースコードとバイナリコードを併記して出力するリストファイルには、前記塊データとしてＲＯＭ部に書き込むビットデータのバイナリコードを、１６進数で表記する１６進数表示領域と、前記塊データとしてＲＯＭ部に書き込むビットデータのバイナリコードを、２進数で表記する２進数表示領域と、を並べて設けるようにしたことを特徴とする。
【００１２】
また、請求項５に係る発明は、前記請求項４に記載のプログラム言語処理系において、前記２進数表示領域には、塊データとして含まれている各ビットデータに分けて２進数表記するようにしたことを特徴とする。
【００１３】
また、請求項６に係る発明は、前記請求項５に記載のプログラム言語処理系において、前記２進数表示領域に２進数表記する各ビットデータは、塊データ上のビット位置に準じて表示し、当該ビットデータの表示対象外となるビット箇所は、予め定めた無データ記号で埋めておくようにしたことを特徴とする。
【発明の効果】
【００１４】
本発明に係る遊技機制御用マイクロコンピュータによれば、データ記憶に要する容量を削減してメモリ容量を効率的に抑制できると共に、データを取り出すために遊技機制御用プログラムに複雑な変更を加える必要が無い。また、本発明に係るプログラム言語処理系によれば、遊技機制御用マイクロコンピュータのＲＯＭ部に書き込むバイナリデータを作成する過程でのデバッグ作業を容易にすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る遊技機制御用マイクロコンピュータを備える遊技機の概略構成図である。
【図２】主制御基板に実装した遊技機制御用マイクロコンピュータおよびプログラム言語処理系の概略構成図である。
【図３】ビット幅の異なるデータ要素を隙間なく敷き詰めた塊データの一例を示すデータ構造図である。
【図４】ビット幅と数値の組合せで１つのデータ要素を定義したソースリストの一例を示す説明図である。
【図５】複数のビット幅が定義された各ビット幅の並び順に対応させて各ビット幅の数値を順に定義した一連のデータ要素から成るデータ要素群を連続して定義したソースリストの一例を示す説明図である。
【図６】データ要素として定義されたビットデータを取り出して転送するビットデータ転送命令の概要を示す説明図である。
【図７】ビットデータ転送命令の動作概要を示す説明図である。
【図８】プログラム言語処理系が出力するリストファイルの一例を示すイメージ図である。
【発明を実施するための形態】
【００１６】
以下、本発明に係る遊技機制御用マイクロコンピュータの実施形態を、添付図面に基づいて詳細に説明する。
【００１７】
図１に例示する遊技機１００は、遊技球を用いた弾球遊技を行えるぱちんこ式遊技機である。遊技機１００における主な遊技進行の制御等を担う主制御基板２００には、遊技機用マイクロコンピュータ１が搭載され、各種の遊技機能装置を制御する。遊技機用マイクロコンピュータ１の内部には、遊技機制御用プログラムおよび該遊技機制御用プログラムが参照するデータ（以下、遊技機制御用プログラム等という）が固定的に記憶されており、遊技機制御用プログラム等に基づいて遊技機用マイクロコンピュータ１が行う遊技動作の一例は、次のようなものになる。
【００１８】
遊技機１００の遊技盤面に設けられた遊技球センサからの入力信号を監視し、遊技球の入賞を検知すると、入賞口の種別に応じて予め定められている払出数分の遊技球を払い出す。遊技球が入賞した入賞口が始動口であった場合、特別図柄装置における図柄変動などの演出をするとともに、大当たりか否かの判定を行う。大当たりの判定は、遊技球が始動口へ入賞したのを検知したタイミングで取得した乱数値が、予め定めておいた特定の値と一致するか否かで行う。すなわち、始動口入賞時に取得した乱数値が特定の値と一致した場合に、これを大当たりと判定するのである。なお、この処理をぱちんこ式遊技機の内部抽選と呼ぶ。
【００１９】
内部抽選の確率は、乱数の取り得る値の範囲と、大当たりと判定する乱数値の個数で決まる。例えば、乱数の取り得る値の範囲が、０〜１９９であり、７という値１個だけを大当たりの乱数値と定めておいた場合には、大当たりの確率は１／２００となる。
【００２０】
上記のようにして大当たりと判定された場合、役物装置のソレノイドを駆動して大入賞口を開放し、大入賞口へ遊技球が入賞できる大当たり遊技動作を行う。そして、遊技球センサにより、大入賞口への遊技球の入賞を検知すると、入賞の都度、予め定められている払出数分の遊技球を払い出す。大入賞口に所定個数以上の遊技球が入賞したことを検知すると、大入賞口をいったん閉じるが、大入賞口の開放が、所定の回数に達しない場合、再び大入賞口を開放する。なお、大当たり時に大入賞口を何回開放するかは、大当たりの確率とともに、遊技機の仕様として適宜に定められている。
【００２１】
一方、回胴式遊技機の場合、遊技機用マイクロコンピュータ１に書き込まれている遊技機制御用プログラム等による遊技動作の一例は、次のようなものになる。
【００２２】
メダル投入口から遊技メダルが投入されると、これを遊技メダル投入センサによって検知する。１回の遊技で投入できる最大枚数よりも多くの遊技メダルが投入された場合、超過した遊技メダルは内部に貯留され、その貯留枚数を更新する。なお、遊技メダルが投入されるのではなく、投入ボタンが操作された場合、それは貯留された遊技メダルが投入されたものとみなし、貯留数を減じて、投入数を加算する。
【００２３】
回胴回転装置のスタートレバーが操作されたのを検知すると、スタートレバー操作を検知したタイミングで乱数を取得し、その乱数の値によって、回胴が停止したときに、どの図柄を揃えてもよいか決定する。この処理を回胴式遊技機の内部抽選と呼ぶ。ここで、ある図柄について揃えてもよいと決定した場合、その図柄について「フラグを立てる」と表現する。次いで、ステッピングモータのパルスを出力することにより、回胴回転装置を制御する。
【００２４】
そして、停止ボタンが操作されたことを検知すると、回胴回転装置によって回転していた回胴を停止させるのであるが、このとき、回転している回胴の停止位置近くの図柄が、フラグの立った図柄である場合は、その図柄が停止位置に揃って止まるように回胴回転装置を制御し、フラグの立った図柄が停止位置近くにない場合は、特定の図柄が停止位置に揃わないように回胴回転装置を制御する。つまり、回胴式遊技機で図柄が揃うのは、回胴式遊技機の内部抽選によって特定の図柄についてフラグが立ち、かつ、遊技者が停止ボタンをその図柄が停止位置に差し掛かったタイミングで操作した場合に限られる。
【００２５】
停止位置に図柄が揃った場合、揃った図柄に応じた枚数の遊技メダルを、払出装置から払い出すか、又は、貯留数をその分増加させる。
【００２６】
このように、ぱちんこ式遊技機および回胴式遊技機の何れにおいても、遊技機用マイクロコンピュータ１に書き込まれている遊技機制御用プログラム等によって、遊技状態の遷移の制御、及び、各遊技状態における遊技メダル等の投入と払い出しの制御を全て行っている。
【００２７】
図２は、遊技機制御用マイクロコンピュータ１の概略構成を示す。遊技機制御用マイクロコンピュータ１は、内部に少なくとも、ＣＰＵ部１１、ＲＯＭ部１２、ＲＡＭ部１３、内部バス１４、外部バスインターフェース１５を備えたワンチップ構造である。ＣＰＵ部１１は、ＲＯＭ部１２のプログラム領域１２ａに記憶されている遊技機制御用プログラムとデータ領域１２ｂに記憶されている参照用のデータに基づいて、ぱちんこ遊技を進行する制御を行う。
【００２８】
上記ＲＯＭ部１２のプログラム領域１２ａおよびデータ領域１２ｂに書き込む遊技機制御用プログラムおよびデータは、アセンブラやコンパイラといったプログラム言語処理系３００が、高級言語で書かれたソースコード２を機械語に変換したバイナリコード３である。このバイナリコード３は、ＲＯＭライタ等を用いて遊技機制御用マイクロコンピュータ１のＲＯＭ部１２へ書き込まれる。なお、プログラム言語処理系３００は、デバッグを行う場合等に用いるリストファイル４の出力（モニター表示あるいはペーパー出力）機能を備えている。
【００２９】
また、遊技機制御用マイクロコンピュータ１にはセキュリティ管理部１６を設け、遊技機制御用マイクロコンピュータ１自体と、プログラム領域１２ａおよびデータ領域１２ｂに書込まれた遊技機制御用プログラムおよびデータが、真正なものであることを外部から判定できるようにする。例えば、検査端子１７を介して接続された検査装置とセキュリティ管理部１６が所定の認証手続き、および、データチェックを行い、検査装置がその検査結果を表示する。
【００３０】
上記のように構成した遊技機制御用マイクロコンピュータ１においては、データ領域１２ｂに多様なデータを効率良く記憶させて、データ容量を抑制できるようにすると共に、データ領域１２ｂから任意のデータを読み出すプログラムは、ＣＰＵ部１１の基本機能として予め組み込んでおく。以下、データの記憶構造とデータの取り出し方法について説明する。
【００３１】
図３は、記憶対象のデータのビット幅と該ビット幅で表す数値との組で定義されたビットデータを隙間なく敷き詰めて塊構造にした塊データの一例を示すデータ構造図である。なお、「隙間なく」というのは、あるデータの最上位ビットＭＳＢと後続のデータの最下位ビットＬＳＢとの間に余計なデータがない、ということである。
【００３２】
図３の例では、３ビットのデータ（０２ｈ）における最上位ビットＭＳＢに続けて４ビットのデータ（０Ｆｈ）における最下位ビットＬＳＢを書き込み、この４ビットのデータにおける最上位ビットＭＳＢに続けて１０ビットのデータ（０１０３ｈ）における最下位ビットＬＳＢを書き込み、この１０ビットのデータにおける最上位ビットＭＳＢに続けて３ビットのデータ（０１ｈ）における最下位ビットＬＳＢを書き込み、この３ビットデータにおける最上位ビットＭＳＢに続けて４ビットのデータ（０５ｈ）における最下位ビットＬＳＢを書き込み、この４ビットのデータにおける最上位ビットＭＳＢに続けて１０ビットのデータ（０００９ｈ）の最下位ビットＬＳＢを書き込み、以下同様にして、隙間無くデータを敷き詰めたものである。
【００３３】
本来、ＲＯＭ部１２からＣＰＵ部１１へデータを送信する場合、内部バス１４のバス幅（例えば、８ｂｉｔ＝１Ｂｙｔｅ）を基準とするため、有意な数値が含まれるビット幅がバス幅よりも短い場合でも、データとしてはバス幅に相当するビット幅で送信される。例えば、データバスが８ビット幅である場合、３ビットのデータである０２ｈ（０１０）の後に５ビットのデータである００ｈ（０００００）を追加し、８ビットのデータである０２ｈ（００００００１０）とすることが一般的である。この追加した５ビットの００ｈについては、使用しているデータのビット位置を調整するだけの機能しかなく、データ容量増大の要因となるので、有意な数値を含まない桁あわせの追加ビットを除いたビットデータのみ敷き詰めた塊データとすれば、データ領域１２ｂに要するデータ容量を抑制できるのである。
【００３４】
なお、以降の説明では、データバスのビット幅と異なるビット幅の数値データを総称して「ビットデータ」と呼ぶ。すなわち、各ビットデータは、ビット幅と該ビット幅で表す数値との組で定義され、塊データの中に隙間無く敷き詰められた状態で記憶されることとなる。
【００３５】
図４は、ビット幅と数値の組合せでビットデータを定義したソースリストの一部である。本図中、「ＢＦ３」は３ビット幅のデータを定義する疑似命令であり、１バイトの数値である「０２ｈ」の３ビット分（０１０）がビットデータとなる。なお、疑似命令とは、プログラム言語処理系３００の動作を制御する記述であって、機械語への変換対象ではない。そこで、プログラムに使われる命令と区別するために疑似命令と呼んでいる。
【００３６】
以下同様に、「ＢＦ４」は４ビット幅のデータを定義し、１バイトの数値である「０Ｆｈ」の４ビット分（１１１１）がビットデータとなり、「ＢＦ１０」は１０ビット幅のデータを定義し、２バイトの数値である「０１０３ｈ」の１０ビット分（０１００００００１１）がビットデータとなり、「ＢＦ３」は３ビット幅のデータを定義し、１バイトの数値である「０１ｈ」の３ビット分（００１）がビットデータとなり、「ＢＦ４」は４ビット幅のデータを定義し、１バイトの数値である「０５ｈ」の４ビット分（０１０１）がビットデータとなり、「ＢＦ１０」は１０ビット幅のデータを定義し、２バイトの数値である「０００９ｈ」の１０ビット分（００００００１００１）がビットデータとなる。
【００３７】
すなわち、図３、図４に示す数値データ「０２ｈ」「０Ｆｈ」「０１０３ｈ」「０１ｈ」「０５ｈ」「０００９ｈ」を、そのまま記憶する場合には、８ｂｉｔ＋８ｂｉｔ＋１６ｂｉｔ＋８ｂｉｔ＋８ｂｉｔ＋１６ｂｉｔ＝６４ｂｉｔ＝８Ｂｙｔｅのデータ容量を必要とするが、本実施形態に係る遊技機用マイクロコンピュータ１のようにビットデータとして記憶してゆけば、３ｂｉｔ＋４ｂｉｔ＋１０ｂｉｔ＋３ｂｉｔ＋４ｂｉｔ＋１０ｂｉｔ＝３４ｂｉｔ＝４Ｂｙｔｅ＋２ｂｉｔのデータ容量で足りるので、使用するメモリ容量を半分近くまで抑制できる。
【００３８】
図４に示すソースリストのように定義されたビットデータは、プログラム言語処理系３００によって、ＲＯＭ部１２のデータ領域１２ｂに書込むデータに変換される。具体的には、プログラム言語処理系３００の内部で、図３のように隙間なくデータを敷き詰めた状態にした後、データバスのビット幅（例えば、１Ｂｙｔｅ）でそのデータを仕切り直すのである。例えば、図３、図４で示したビットデータの並びの場合、「ＢＦ３，０２ｈ」＋「ＢＦ４，０Ｆｈ」で７ｂｉｔであるから、「ＢＦ１０，０１０３ｈ」における最下位ビットＬＳＢの位置でちょうど８ｂｉｔの区切りとなるので、この部分をプログラム言語処理系３００が変換して得られるデータは、１１１１１０１０＝ＦＡｈとなる。同様に、後続の８ｂｉｔの区切りをプログラム言語処理系３００が変換して得られるデータは、１００００００１＝８１ｈ、０１０１００１０＝５２ｈ、００００１００１＝０９ｈとなる。
【００３９】
上述した図４のソースリストに示すように、ビットデータ毎にビット幅と数値を定義する場合、１つのビットデータを定義するために１行分を要する。定義するビットデータの数が多ければ、それだけソースコードの行数も多くなるのである。そこで、図５に示すソースリストのように、複数のビット幅を定義した後、各ビット幅の並び順に対応させて各ビット幅の数値を順に定義すれば、効率良くビットデータを定義することができる。
【００４０】
図５のソースリストにおいて、１行目の「ＢＦＡ｛３，４，１０｝」は、以降の行で定義するデータは、３ビット幅、４ビット幅、１０ビット幅のデータであることを定義する疑似命令である。２行目は、このビット幅の定義に対応した順に数値データを記載したもので、２行目における「０２ｈ」が３ビット幅のビットデータ、「０Ｆｈ」が４ビット幅のビットデータ、「０１０３ｈ」が１０ビット幅のビットデータであることを、まとめて定義している。かくすれば、複数のビットデータをまとめて定義したビットデータ群を１行で記載できる。なお、６行目の「ＥＮＤＢＦＡ」は、データ定義ブロックの終りを示す疑似命令である。
【００４１】
しかも、疑似命令で定義したビット幅の並び順に対応する数値データが更に繰り返される場合には、２行目のビットデータ群と同様に、３行目〜５行目でもビットデータ群を定義することで、一層効率良くビットデータを定義できる。すなわち、２行目のビットデータ群１と同様に、３行目における「０１ｈ」で３ビット幅のデータ、「０５ｈ」で４ビット幅のデータ、「０００９ｈ」で１０ビット幅のデータをまとめて定義したビットデータ群２となり、４行目における「０５ｈ」で３ビット幅のデータ、「０Ａｈ」で４ビット幅のデータ、「０２０Ｃｈ」で１０ビット幅のデータをまとめて定義したビットデータ群３となり、５行目における「０４ｈ」で３ビット幅のデータ、「０６ｈ」で４ビット幅のデータ、「０１９７ｈ」で１０ビット幅のデータをまとめて定義したビットデータ群４となる。
【００４２】
このように、複数のビット幅の並び順に対応させて定義したビットデータ群を連続して記載してゆけば、より短い行数で多くのビットデータを定義できる。図５のソースリストでは、１２個のビットデータの定義を６行で記載できる。
【００４３】
上述したように、ビットデータを隙間なく敷き詰めて塊構造にした塊データが、ＲＯＭ部１２のデータ領域１２ｂに書き込むデータとして含まれる場合、塊データの中から目的とするビットデータをＣＰＵ部１１が取り出すためには、専用の命令が必要となる。図６は、目的とするビットデータをレジスタへ転送する命令の一例を説明した図である。
【００４４】
図６において転送命令として示すソースコード「ＬＤＢ  Ａ，（２０）．４」において、「ＬＤＢ」はオペレータであり、ビットデータの転送命令であることを示し、「Ａ」は転送先のレジスタとしてＡレジスタを指定していることを示し、「（２０）」は転送するビットデータが基準点より２０ビット目に位置することを示し、「．４」は転送するビットデータのビット幅が４ビットであることを示している。
【００４５】
この命令を実行すると、基準点から２０ビット目にあるデータ４ビット（０１０１）をＡレジスタ（例えば、レジスタ長は８ｂｉｔ）に転送するので、Ａレジスタの値は０５ｈ（０００００１０１）となる。なお、ビットデータの位置を示す基準点は特に限定されるものではなく、メモリの先頭であっても良いし、「基準点レジスタ」というレジスタを設けて、このレジスタに設定されたアドレスのビット０の位置を基準点としても良い。
【００４６】
図７は、上述したビットデータの転送命令をＣＰＵ部１１がどのように処理するかの概要を説明した図である。
【００４７】
前提として、ＣＰＵ部１１のデータバスのビット幅は８ビットであるとする。塊データとして、３ビット幅の０２ｈ、４ビット幅の０Ｆｈ、１０ビット幅の０１０３ｈ、…といったビットデータが隙間なくメモリに敷き詰められている場合、ＣＰＵ部１１はデータバスのビット幅である８ビットの区切りでデータにアクセスするので、ＣＰＵ部１１が見たデータは、基準点から順に、ＦＡｈ、８１ｈ、５２ｈ、・・・となる。
【００４８】
なお、ビットデータの位置は、基準点からのビット数で特定できることから、以下の説明ではビットデータの記録位置を「ビットアドレス」と呼ぶ。一方、８ビットの区切りでＣＰＵ部１１がアクセスするデータの位置を「バイトアドレス」と呼ぶ。
【００４９】
塊データにおいて、ビットアドレスで指定されたビットデータの位置は、ビットアドレスを８で割った商をバイトアドレスとするデータ内にあり、余りがそのバイト内でのビット位置となる。例えば、図７で例示したように、ビットアドレスが２０ビットの場合、２０を８で割ると、その商は２で、余りが４となる。すなわち、バイトアドレス２における１バイトデータの４ビット目がビットデータの位置となる。
【００５０】
すなわち、ＣＰＵ部１１が、その位置から４ビット分のデータをＡレジスタに転送することで、転送命令「ＬＤＢ  Ａ，（２０）．４」を実行できるのである。
【００５１】
ただし、データバスおよびＡレジスタのビット幅が８ビットであることから、４ｂｉｔ幅のビットデータをそのまま読み出してＡレジスタにセットすることはできない。そこで、先ず、ビットアドレスを８で割った商を基準点設定レジスタに設定された値に加算して得られたバイトアドレスから２バイト分のデータ（バイトアドレス２およびバイトアドレス３のデータ）をリードし、そのビットアドレスを８で割った余りの数だけ右（下位ビット側）へシフトする。
【００５２】
これにより、ビットデータの最下位ビットを１バイトデータの最下位ビットに合わせた２バイト分のデータが得られる。なお、バイトアドレスから２バイト分のデータをリードするのは、右シフトしてビットデータの位置を調整する際に、上位ビットを２バイト目のデータからシフトするためである。本例のように、対象となるビットデータが最初のバイトアドレスの１バイトデータ内に全て含まれている場合には、２バイト目のバイトデータをリードする必要はないが、２バイト目のバイトデータにビットデータが含まれているか否かを判定する必要がないので、ＣＰＵ部１１に実装させるデータ転送機能が簡単になるというメリットがある。
【００５３】
上記のようにして得られた２バイト分のデータに対して、転送命令で要求されているビット数（４ビット）をマスクして下位ビットから取り出し、上位ビットの空き（４ビット分）を０で埋めた８ビットデータの値を生成し、これをＡレジスタにセットすることで、転送命令「ＬＤＢ  Ａ，（２０）．４」を完遂できる。
【００５４】
なお、１０ビット幅のビットデータを指定した転送命令で、転送先レジスタのビット幅が１６ビットである場合は、ビットアドレスを８で割った商のバイトアドレスから３バイト分のバイトデータをリードすれば良い。ここでは、データバスのビット幅は８ビットなので、ビットデータの最下位ビット位置を合わせる右シフトは７ビット以下となるので、転送先レジスタのバイト数より１バイトだけ余計にリードすれば十分だからである。
【００５５】
このように塊データから任意のビットデータをリードする機能は、ＣＰＵ部１１の基本機能として組み込むことができるので、塊データからビットデータを読み出すための余計なプログラムを必要とせず、また仮想メモリを定義する専用レジスタを設定する必要もないので、ＲＯＭ部１２内のプログラム領域１２ａを無駄に消費することはない。
【００５６】
図８は、プログラム言語処理系３００が出力するリストファイル４の一例である。一般的に、プログラム言語処理系３００が出力するリストファイル４は、ソースプログラムの記述と、その記述を変換した機械語との対応がわかるように表示したもので、１ステップずつ動作を確認して、デバッグをするような場合に利用されるものである。
【００５７】
リストファイル４には、例えば、行番号表示領域４１、バイトアドレス表示領域４２、十六進数表記機械語表示領域４３、二進数表記機械語表示領域４４、ソースプログラム表示領域４５を備え、行番号表示領域４１に表示された行番号を基準として、バイトアドレス、機械語（１６進および２進）、ソースプログラムが表示される。このソースプログラムは、塊データを生成する部分で、ビットデータのビット幅を３種類定義する疑似命令と、各ビット幅の並び順に対応させて３つの数値を定義したビットデータ群を４つ連続して定義した例である。
【００５８】
上記十六進数表記機械語表示領域４３には、バイトアドレス表示領域４２に記載されたバイトアドレスに格納されている１６進数表記の機械語が表記される。この１６進数表記の機械語は、ＣＰＵ部１１が８ビット区切りでアクセスするバイトデータに相当する。なお、本例のリストファイル４においては、バイトアドレスが複数行に跨がる場合、１６進数表記の機械語は最終行に表示する。
【００５９】
一方、十六進数表記機械語表示領域４３とソースプログラム表示領域４５の間に設けた二進数表記機械語表示領域４４には、２進数８ビット分が１行に表示できる。なお、下位４ビット表示領域４４ａと上位４ビット表示領域４４ｂとの間には、スペース挿入領域４４ｃを設けることで、４ビット毎のビット位置を直感的に理解し易い表示となるように配慮したが、スペース挿入領域４４ｃを設けずに、下位４ビット表示領域４４ａと上位４ビット表示領域４４ｂが連続するように表示しても構わない。
【００６０】
以下に、プログラム言語処理系３００が、どのようにソースプログラムからこのリストファイル４を作成するかについて説明する。
【００６１】
行番号３００２の行のソースプログラムに、「ＢＦＡ｛３，４，１０｝」とあるので、プログラム言語処理系３００は、以下に定義されるビットデータのビット幅が、それぞれ３ビット、４ビット，１０ビットであることを記憶する。
【００６２】
行番号３００３の行では、最初の数値が「０２Ｈ」であるから、これは先のビット幅定義を参照して３ビットのビットデータと判断でき、「０１０」と変換できる。なお、二進数表記機械語表示領域４４においては、１行に複数のビットデータを表示せず、後続のビットデータを表示するときは、行を改めるものとする。このため、二進数表記機械語表示領域４４の３００３行目では、３ビット幅のビットデータをビット０〜２に配置し、ビットデータが割り当てられていないビット３〜７を無データ記号（例えば、「．」）で埋めておく。かくして、二進数表記機械語表示領域４４の３００３行目の表示は「．．．．  ．０１０」となる。このように表記することで、ＣＰＵ部１１が読み出す基準単位となるバイトデータ内におけるビットデータ「０１０」の位置が直感的に理解できる。
【００６３】
行番号３００３の行で定義される次の数値「０ＦＨ」は、先のビット幅定義を参照して４ビット幅のビットデータと判断できるので、「１１１１」と変換できる。この４ビット幅のビットデータは３００４行目に記載するが、ビット０〜５には配置せず、先のビットデータ（３ビット幅）の続きとしてビット３〜６に配置することで、「．１１１  １．．．」と表示する。このように表記することで、ＣＰＵ部１１が読み出す基準単位となるバイトデータ内におけるビットデータ「１１１１」の位置が直感的に理解できる。
【００６４】
行番号３００３の行で定義される最後の数値「０１０３Ｈ」は、先のビット幅定義を参照して１０ビット幅のビットデータと判断でき、「０１００００００１１」と変換できる。この１０ビット幅のビットデータは３００５行目から記載するから、先のビットデータの続きとしてビット７に最下位ビットを配置することで、「１．．．  ．．．．」と表記する。これで、バイトアドレス９０００番地に書き込むバイトデータの８ビット全てが定義されるので、十六進数表記機械語表示領域４３の３００５行には「ＦＡ」と表示する。
【００６５】
なお、３００５行目から記載をはじめた１０ビット幅のビットデータについて、残り９ビット分を表示するためには、３００６行および３００７行に跨がって記載する必要がある。そこで、二進数表記機械語表示領域４４における最上位ビットの上位側に継続記号「−」を付すことで次の行に続くことを示し、二進数表記機械語表示領域４４における最下位ビットの下位側に継続記号「−」を付すことで前の行から続くことを示すものとする。よって、二進数表記機械語表示領域４４における３００５行目の記載は、図８に示すとおり、「−１．．．  ．．．．」となる。
【００６６】
上記のようにして、バイトアドレス９０００番地には１バイトのデータ「ＦＡ」が配置されたので、次の３００６行にはバイトアドレス９００１番地を表示する。そして、１０ビット幅のビットデータの続きである「１００００００１」をバイトアドレス９００１番地のビット０〜７に配置すると、８ビット全てが定義されるので、二進数表記機械語表示領域４４の３００６行には「−１０００  ０００１−」と表記し、十六進数表記機械語表示領域４３の３００６行には「８１」と表示する。
【００６７】
３００５行目から記載をはじめた１０ビット幅のビットデータについて、まだ配置していない残り１ビットの「０」は、バイトアドレス９００２番地のビット０に配置することで、二進数表記機械語表示領域４４の３００７行には「．．．．  ．．．０−」と表記する。なお、バイトアドレス９００２番地では、８ビット全てが定義されていないので、十六進数表記機械語表示領域４３の３００７行は空欄のままである。
【００６８】
このような操作を繰り返して、ソースプログラムに記述されたビットデータの定義を機械語に変換する。ビットデータの定義は、３０２２行の「ＥＮＤＢＦＡ」というビットデータ定義の終了を意味する疑似命令で終了するが、ここで、バイトデータのビット４〜７にはまだデータが配置されていないので、強制的に桁あわせの「００００」を配置してバイトデータを完成させ、バイトアドレス９００８番地の十六進数表記機械語表示領域４３には「０６」を表示し、二進数表記機械語表示領域４４の３０２２行には「００００  ．．．．」と表記する。
【００６９】
上記のようにして十六進数表記機械語表示領域４３と二進数表記機械語表示領域４４を併記したリストファイル４を参照すれば、一見性が高く、ソースプログラムの記述がどのような機械語に変換されるのかを理解し易い。特に、二進数表記機械語表示領域４４には、各ビットデータに分けて２進数表記しておくことで、個々のビットデータが、塊データ上のどこ（どのバイトアドレスのデータ）に含まれているかを把握できる。しかも、各ビットデータをバイトデータ上の位置に対応させて表示すると共に、当該ビットデータの表示対象外となるビット箇所を無データ記号で埋めておけば、各ビットデータがどのバイトデータのどの位置に配置されているのかを一目で理解できるので、詳細なデバッグ作業に有益である。加えて、ビットデータを塊データに変換する処理は、プログラム言語処理系３００で行うため、ＲＯＭ部１２内のプログラム領域１２ａがそのために消費されることはない。
【００７０】
以上、本発明に係る遊技機用マイクロコンピュータおよびプログラム言語処理系の実施形態を添付図面に基づいて説明したが、本発明は、この実施形態に限定されるものではなく、特許請求の範囲に記載の構成を変更しない範囲で、公知既存の等価な技術手段を転用することにより実施しても構わない。
【符号の説明】
【００７１】
１      遊技機制御用マイクロコンピュータ
１１    ＣＰＵ部
１２    ＲＯＭ部
１２ａ  プログラム領域
１２ｂ  データ領域
１３    ＲＡＭ部
２      ソースコード
３      バイナリコード
４      リストファイル
１００      遊技機
２００      主制御基板
３００      プログラム言語処理系
【図１】
2018112866.tif 000003
【図２】
2018112866.tif 000004
【図３】
2018112866.tif 000005
【図４】
2018112866.tif 000006
【図５】
2018112866.tif 000007
【図６】
2018112866.tif 000008
【図７】
2018112866.tif 000009
【図８】
2018112866.tif 000010