(57)【特許請求の範囲】
【請求項１】
遊技者が所定の遊技を行うことが可能な遊技機であって、
遊技に関する制御を行うマイクロコンピュータを備え、
前記マイクロコンピュータが実行する制御プログラムは、ユーザが作成したプログラムであって遊技進行に応じた制御を行うユーザプログラムと、あらかじめ用意されているプログラムであってマイクロコンピュータに対するデータ入力処理およびマイクロコンピュータからのデータ出力処理を行う各処理を有する基本入出力プログラムとを含み、
前記基本入出力プログラムは、入力ポートのアドレスとビット番号で特定される複数のポートの各々に対応して設けられ、ポートからデータを入力する処理を行う複数の入力処理プログラムと、遊技機に設けられている電気部品を制御するための動作時間または動作回数に応じた処理を行う複数の出力処理プログラムとを含み、
前記ユーザプログラムは、データを入力する際に、前記複数の入力処理プログラムから対応する入力処理プログラムを呼び出し、前記電気部品を動作させるときに、前記複数の出力処理プログラムから対応する出力処理プログラムを呼び出すように構成され、
前記ユーザプログラムが呼び出した前記入力処理プログラムが、該入力処理プログラムに割り当てられている入力ポートのアドレスとビット番号を特定してデータを入力する処理を行うことにより、前記ユーザプログラムは入力ポートのアドレスおよびビット番号を指定することなくデータを入力することを特徴とする遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遊技者の操作に応じて遊技が行われるパチンコ遊技機、コイン遊技機、スロット機等の遊技機に関し、特に、入賞が発生した場合に所定の有価価値を遊技者に付与する遊技機に関する。
【背景技術】
【０００２】
遊技機として、例えば遊技球などの遊技媒体を発射装置によって遊技領域に発射し、遊技領域に設けられている入賞口などの入賞領域に遊技媒体が入賞すると、所定個の賞球が遊技者に払い出されるものがある。さらに、表示状態が変化可能な可変表示部が設けられ、可変表示部における図柄等の識別情報の表示結果があらかじめ定められた特定の表示態様となった場合に所定の遊技価値を遊技者に与えるように構成されたものがある。
【０００３】
なお、遊技価値とは、遊技機の遊技領域に設けられた可変入賞球装置の状態が打球が入賞しやすい遊技者にとって有利な状態になることや、遊技者にとって有利な状態となるための権利を発生させたりすることや、有価価値としての景品遊技媒体の払出の条件が成立しやすくなる状態になることである。
【０００４】
パチンコ遊技機では、特別図柄を表示する可変表示部の表示結果があらかじめ定められた特定の表示態様の組合せとなることを、通常、「大当り」という。大当りが発生すると、例えば、大入賞口が所定回数開放して打球が入賞しやすい大当り遊技状態に移行する。そして、各開放期間において、所定個（例えば１０個）の大入賞口への入賞があると大入賞口は閉成する。そして、大入賞口の開放回数は、所定回数（例えば１６ラウンド）に固定されている。なお、各開放について開放時間（例えば２９．５秒）が決められ、入賞数が所定個に達しなくても開放時間が経過すると大入賞口は閉成する。また、大入賞口が閉成した時点で所定の条件（例えば、大入賞口内に設けられているＶゾーンへの入賞）が成立していない場合には、大当り遊技状態は終了する。
【０００５】
そのような遊技機では、スピーカが設けられ遊技効果を増進するために遊技の進行に伴ってスピーカから種々の効果音が発せられる。また、ランプやＬＥＤ等の発光体が設けられ、遊技効果を増進するために遊技の進行に伴ってそれらの発光体が点灯されたり消灯されたりする。すると、遊技機の機種が異なると、効果音の発生の仕方も異なり、また、ランプやＬＥＤの点灯／消灯のパターン異なるので、それに応じて制御手段の構成を変更しなければならない。従って、機種が異なると制御手段を設計し直す必要があり、設計コストが増大する等の問題がある。
【０００６】
さらに、遊技機の種類が異なる場合には、当然全く別の制御手段を設計しなければならない。例えば、パチンコ遊技機とスロット機とでは、全く別の制御手段を設計しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以上に述べたように、遊技機の種類が異なったり、同種の遊技機でも機種が異なる場合には、制御手段が異なっているので、その都度制御手段を設計する必要がある。その結果、設計コストが増大するとともに設計期間も長期化する。また、制御手段は一般にマイクロコンピュータで実現されるので、制御手段を設計するにはマイクロコンピュータのプログラムを作成する必要がある。プログラムを作成するため遊技機開発者は、使用するマイクロコンピュータの命令体系を熟知していなければならない。また、マイクロコンピュータに接続される周辺回路とマイクロコンピュータとの関係（アドレス割当等）も知っていなければならない。すると、ある程度の経験のある者でないと制御手段の設計を行うとができないことになる。すなわち、遊技機設計現場での設計パワーは常に不足がちである。
【０００８】
そこで、本発明は、各種の遊技機の制御プログラムを容易に短期間で設計でき、しかも、マイクロコンピュータやそれに関連するハードウェアに関する知識を必要とせずに制御プログラムを作成することが可能になる遊技機を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明による遊技機は、遊技者が所定の遊技を行うことが可能な遊技機であって、遊技に関する制御を行うマイクロコンピュータを備え、マイクロコンピュータが実行する制御プログラムは、ユーザが作成したプログラムであって遊技進行に応じた制御を行うユーザプログラムと、あらかじめ用意されているプログラムであってマイクロコンピュータに対するデータ入力処理およびマイクロコンピュータからのデータ出力処理を行う各処理を有する基本入出力プログラムとを含み、基本入出力プログラムは、入力ポートのアドレスとビット番号で特定される複数のポートの各々に対応して設けられ、ポートからデータを入力する処理を行う複数の入力処理プログラムと、遊技機に設けられている電気部品を制御するための動作時間または動作回数に応じた処理を行う複数の出力処理プログラムとを含み、ユーザプログラムは、データを入力する際に、複数の入力処理プログラムから対応する入力処理プログラムを呼び出し、電気部品を動作させるときに、複数の出力処理プログラムから対応する出力処理プログラムを呼び出すように構成され、ユーザプログラムが呼び出した入力処理プログラムが、該入力処理プログラムに割り当てられている入力ポートのアドレスとビット番号を特定してデータを入力する処理を行うことにより、ユーザプログラムは入力ポートのアドレスおよびビット番号を指定することなくデータを入力することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、遊技機を、遊技に関する制御を行うマイクロコンピュータを備え、マイクロコンピュータが実行する制御プログラムが、遊技進行に応じた制御を行うユーザプログラムと、データ入出力を制御する各処理を有する基本入出力プログラムとを含み、基本入出力プログラムは、入力ポートのアドレスとビット番号で特定される複数のポートの各々に対応して設けられ、ポートからデータを入力する処理を行う複数の入力処理プログラムと、遊技機に設けられている電気部品を制御するための動作時間または動作回数に応じた処理を行う複数の出力処理プログラムとを含み、ユーザプログラムは、データを入力する際に、複数の入力処理プログラムから対応する入力処理プログラムを呼び出し、電気部品を動作させるときに、複数の出力処理プログラムから対応する出力処理プログラムを呼び出し、ユーザプログラムが呼び出した入力処理プログラムが、該入力処理プログラムに割り当てられている入力ポートのアドレスとビット番号を特定してデータを入力する処理を行うことにより、ユーザプログラムは入力ポートのアドレスおよびビット番号を指定することなくデータを入力するような構成にしたので、データ入出力は基本入出力プログラムによって実行され、ユーザプログラムでは具体的入出力アドレスを意識しなくてもよいように構成することができる。よって、ユーザプログラムの構造が簡略化され、ユーザプログラムの作成が容易になる。
【図面の簡単な説明】
【００１１】
【図１】パチンコ遊技機を正面からみた正面図である。
【図２】パチンコ遊技機の機構板を背面からみた背面図である。
【図３】パチンコ遊技機の機構板を背面からみた背面図である。
【図４】遊技制御基板（主基板）の回路構成を示すブロック図である。
【図５】ＣＰＵの構成をユーザプログラムを格納したＲＯＭおよびＢＩＯＳを格納したＲＯＭとともに示すブロック図である。
【図６】ＯＳの一構成例をＢＩＯＳとともに示すブロック図である。
【図７】ユーザプログラムの一構成例を示すブロック図である。
【図８】情報領域の設定情報の一例を示す説明図である。
【図９】ＯＳが管理するＴＣＢの構成例を示すブロック図である。
【図１０】ＯＳのシステム処理実行部の処理内容例を示す説明図である。
【図１１】ＯＳのシステム処理実行部の処理内容例を示す説明図である。
【図１２】ＢＩＯＳ構成例を示す説明図である。
【図１３】ＯＳのタイマ管理部が管理するタイマ管理テーブルの一構成例を示すブロック図である。
【図１４】ＯＳの割込管理部が管理する割込管理テーブルの一構成例を示すブロック図である。
【図１５】ＯＳのイニシャル処理を示すフローチャートである。
【図１６】タイマ割込にもとづくＯＳ処理示すフローチャートである。
【図１７】システム処理の一部を示すフローチャートである。
【図１８】システム処理のうちの他の一部を示すフローチャートである。
【図１９】ＯＳのタイマ管理部によるタイマ設定要求受付処理を示すフローチャートである。
【図２０】タイマ処理を示すフローチャートである。
【図２１】ＯＳの割込管理部に属する割込１処理を示すフローチャートである。
【図２２】ＢＩＯＳ、ＯＳおよびユーザプログラムの動作例を示すタイミング図である。
【図２３】ユーザプログラム例を示す説明図である。
【図２４】ＣＰＵの他の構成を示すブロック図である。
【図２５】他のタスク構成例を示すブロック図である。
【図２６】情報領域に設定される情報の一部を示す説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態を図面を参照して説明する。
まず、遊技機の一例であるパチンコ遊技機の全体の構成について説明する。図１はパチンコ遊技機１を正面からみた正面図である。なお、ここでは、遊技機の一例としてパチンコ遊技機を示すが、本発明はパチンコ遊技機に限られず、例えばコイン遊技機やスロット機等であってもよい。
【００１３】
図１に示すように、パチンコ遊技機１は、額縁状に形成されたガラス扉枠２を有する。ガラス扉枠２の下部表面には打球供給皿３がある。打球供給皿３の下部には、打球供給皿３からあふれた払出球を貯留する余剰球受皿４と打球を発射する打球操作ハンドル（操作ノブ）５が設けられている。ガラス扉枠２の後方には、遊技盤６が着脱可能に取り付けられている。また、遊技盤６の前面には遊技領域７が設けられている。
【００１４】
遊技領域７の中央付近には、複数種類の図柄を可変表示するための可変表示部９と７セグメントＬＥＤによる可変表示器１０とを含む可変表示装置８が設けられている。また、可変表示器１０の下部には、４個のＬＥＤからなる通過記憶表示器（普通図柄用記憶表示器）４１が設けられている。この実施の形態では、可変表示部９には、例えば「左」、「中」、「右」の３つの図柄表示エリアがある。可変表示装置８の側部には、打球を導く通過ゲート１１が設けられている。通過ゲート１１を通過した打球は、球出口１３を経て始動入賞口１４の方に導かれる。通過ゲート１１と球出口１３との間の通路には、通過ゲート１１を通過した打球を検出するゲートスイッチ１２がある。また、始動入賞口１４に入った入賞球は、遊技盤６の背面に導かれ、始動口スイッチ１７によって検出される。また、始動入賞口１４の下部には開閉動作を行う可変入賞球装置１５が設けられている。可変入賞球装置１５は、ソレノイド１６によって開状態とされる。
【００１５】
可変入賞球装置１５の下部には、特定遊技状態（大当り状態）においてソレノイド２１によって開状態とされる開閉板２０が設けられている。この実施の形態では、開閉板２０が大入賞口を開閉する手段となる。開閉板２０から遊技盤６の背面に導かれた入賞球のうち一方（Ｖゾーン）に入った入賞球はＶカウントスイッチ２２で検出される。また、開閉板２０からの入賞球はカウントスイッチ２３で検出される。可変表示装置８の下部には、始動入賞口１４に入った入賞球数を表示する４個の表示部を有する始動入賞記憶表示器１８が設けられている。この例では、４個を上限として、始動入賞がある毎に、始動入賞記憶表示器１８は点灯している表示部を１つずつ増やす。そして、可変表示部９の可変表示が開始される毎に、点灯している表示部を１つ減らす。
【００１６】
遊技盤６には、複数の入賞口１９，２４が設けられ、遊技球の入賞口１９，２４への入賞は入賞口スイッチ１９ａ，２４ａによって検出される。遊技領域７の左右周辺には、遊技中に点滅表示される装飾ランプ２５が設けられ、下部には、入賞しなかった打球を吸収するアウト口２６がある。また、遊技領域７の外側の左右上部には、効果音を発する２つのスピーカ２７が設けられている。遊技領域７の外周には、遊技効果ＬＥＤ２８ａおよび遊技効果ランプ２８ｂ，２８ｃが設けられている。
【００１７】
そして、この例では、一方のスピーカ２７の近傍に、賞球残数があるときに点灯する賞球ランプ５１が設けられ、他方のスピーカ２７の近傍に、補給球があらかじめ定められた貯留量を下回っているときに点灯する球切れランプ５２が設けられている。さらに、図１には、パチンコ遊技台１に隣接して設置され、プリペイドカードが挿入されることによって球貸しを可能にするカードユニット５０も示されている。
【００１８】
カードユニット５０には、使用可能状態であるか否かを示す使用可表示ランプ１５１、カード内に記録された残額情報に端数（１００円未満の数）が存在する場合にその端数を打球供給皿３の近傍に設けられる度数表示ＬＥＤに表示させるための端数表示スイッチ１５２、カードユニット５０がいずれの側のパチンコ遊技機１に対応しているのかを示す連結台方向表示器１５３、カードユニット５０内にカードが投入されていることを示すカード投入表示ランプ１５４、記録媒体としてのカードが挿入されるカード挿入口１５５、およびカード挿入口１５５の裏面に設けられているカードリーダライタの機構を点検する場合にカードユニット５０を解放するためのカードユニット錠１５６が設けられている。
【００１９】
打球発射装置から発射された打球は、打球レールを通って遊技領域７に入り、その後、遊技領域７を下りてくる。打球が通過ゲート１１を通ってゲートスイッチ１２で検出されると、可変表示器１０の表示数字が連続的に変化する状態になる。また、打球が始動入賞口１４に入り始動口スイッチ１７で検出されると、図柄の変動を開始できる状態であれば、可変表示部９内の図柄が回転を始める。図柄の変動を開始できる状態でなければ、始動入賞記憶を１増やす。
【００２０】
可変表示部９内の画像の回転は、一定時間が経過したときに停止する。停止時の画像の組み合わせが大当り図柄の組み合わせであると、大当り遊技状態に移行する。すなわち、開閉板２０が、一定時間経過するまで、または、所定個数（例えば１０個）の打球が入賞するまで開放する。そして、開閉板２０の開放中に打球が特定入賞領域に入賞しＶカウントスイッチ２２で検出されると、継続権が発生し開閉板２０の開放が再度行われる。継続権の発生は、所定回数（例えば１５ラウンド）許容される。
【００２１】
停止時の可変表示部９内の画像の組み合わせが確率変動を伴う大当り図柄の組み合わせである場合には、次に大当りとなる確率が高くなる。すなわち、高確率状態という遊技者にとってさらに有利な状態となる。また、可変表示器１０における停止図柄が所定の図柄（当り図柄）である場合に、可変入賞球装置１５が所定時間だけ開状態になる。さらに、高確率状態では、可変表示器１０における停止図柄が当り図柄になる確率が高められるとともに、可変入賞球装置１５の開放時間と開放回数が高められる。
【００２２】
次に、パチンコ遊技機１の裏面の構造について図２を参照して説明する。
図２はパチンコ遊技機１の機構板を背面からみた背面図である。誘導樋３９を通った球は、図２に示されるように、球切れ検出器１８７ａ，１８７ｂを通過して球供給樋１８６ａ，１８６ｂを経て球払出装置９７に至る。球払出装置９７から払い出された景品球は、連絡口４５を通ってパチンコ遊技機１の前面に設けられている打球供給皿３に供給される。連絡口４５の側方には、パチンコ遊技機１の前面に設けられている余剰球受皿４に連通する余剰球通路４６が形成されている。入賞にもとづく景品球が多数払い出されて打球供給皿３が満杯になり、ついには景品球が連絡口４５に到達した後さらに景品球が払い出されると景品球は、余剰球通路４６を経て余剰球受皿４に導かれる。さらに景品球が払い出されると、感知レバー４７が満タンスイッチ４８を押圧して満タンスイッチ４８がオンする。その状態では、球払出装置９７内のステッピングモータの回転が停止して球払出装置９７の動作が停止するとともに、必要に応じて打球発射装置３４の駆動も停止する。
【００２３】
なお、この実施の形態では、電気的駆動源の駆動によって遊技球を払い出す球払出装置として、ステッピングモータの回転によって遊技球が払い出される球払出装置９７が用いられているが、その他の駆動源によって遊技球を送り出す構造の球払出装置を用いてもよいし、電気的駆動源の駆動によってストッパを外し遊技球の自重によって払い出しがなされる構造の球払出装置を用いてもよい。
【００２４】
賞球払出制御を行うために、入賞口スイッチ１９ａ，２４ａ、始動口スイッチ１７およびカウントスイッチ２３からの信号が、主基板３１に送られる。主基板３１のＣＰＵ５６は、始動口スイッチ１７がオンすると６個の賞球払出に対応した入賞が発生したことを知る。また、カウントスイッチ２３がオンすると１５個の賞球払出に対応した入賞が発生したことを知る。そして、入賞口スイッチがオンすると１０個の賞球払出に対応した入賞が発生したことを知る。なお、この実施の形態では、例えば、入賞口２４に入賞した遊技球は、入賞口２４からの入賞球流路に設けられている入賞口スイッチ２４ａで検出され、入賞口１９に入賞した遊技球は、入賞口１９からの入賞球流路に設けられている入賞口スイッチ１９ａで検出される。
【００２５】
図３はパチンコ遊技機１の遊技盤を背面からみた背面図である。遊技盤６の裏面には、図３に示すように、各入賞口および入賞球装置に入賞した入賞玉を所定の入賞経路に沿って導く入賞玉集合カバー４０が設けられている。入賞玉集合カバー４０に導かれる入賞玉のうち、開閉板２０から一方（Ｖゾーン）に入った入賞球はＶカウントスイッチ２２で検出され、また、開閉板２０に入った入賞球はカウントスイッチ２３で検出される。そして、その他の入賞口１９，２４および入賞球装置を経て入賞したものは、入賞口スイッチ１９ａまたは入賞口スイッチ２４ａで検出される。なお、図３には、中継基板３３が例示されている。
【００２６】
賞球払出制御を行うために、始動口スイッチ１７、入賞口スイッチ１９ａ，２４ａおよびカウントスイッチ２３からの信号が、主基板３１に送られる。始動口スイッチ１７がオンすると、例えば６個の賞球払出が行われ、カウントスイッチ２３がオンすると、例えば１５個の賞球払出が行われる。そして、入賞口スイッチ１９ａ，２４ａがオンすると、例えば１０個の賞球払出が行われる。
【００２７】
図４は、主基板３１における回路構成の一例を示すブロック図である。なお、図４には、発射制御基板９１および表示制御基板８０も示されている。主基板３１には、プログラムに従ってパチンコ遊技機１を制御する基本回路５３と、ゲートスイッチ１２、始動口スイッチ１７、Ｖカウントスイッチ２２、カウントスイッチ２３入賞口スイッチ１９ａ，２４ａ、満タンスイッチ４８、賞球カウントスイッチ３０１Ａおよび球貸しカウントスイッチ３０１Ｂからの信号を基本回路５３に与えるスイッチ回路５８と、可変入賞球装置１５を開閉するソレノイド１６および開閉板２０を開閉するソレノイド２１を基本回路５３からの指令に従って駆動するソレノイド回路５９とが搭載されている。また、球払出装置９７の側から球切れスイッチ１８７ａ，１８７ｂ（１８７）の情報がスイッチ回路５８を介して基本回路５３に入力される。
【００２８】
また、基本回路５３から与えられるデータに従って、大当りの発生を示す大当り情報、可変表示部９の画像表示開始に利用された始動入賞球の個数を示す始動情報、確率変動が生じたことを示す確変情報等をホール管理コンピュータ等のホストコンピュータに対して出力する情報出力回路６４を含む。
【００２９】
基本回路５３は、ゲーム制御用のプログラム等を記憶するＲＯＭ５４、ワークメモリとして使用される記憶手段の一例であるＲＡＭ５５、制御用のプログラムに従って制御動作を行うＣＰＵ５６およびＩ／Ｏポート部５７を含む。ＲＯＭ５４、ＲＡＭ５５およびＩ／Ｏポート部５７は外付けであっても内蔵されていてもよい。
【００３０】
さらに、主基板３１には、電源投入時に基本回路５３をリセットするための初期リセット回路６５と、基本回路５３から与えられるアドレス信号をデコードしてＩ／Ｏポート部５７のうちのいずれかのＩ／Ｏポートを選択するための信号を出力するアドレスデコード回路６７とが設けられている。
【００３１】
遊技球を打撃して発射する打球発射装置は発射制御基板９１上の回路によって制御される駆動モータ９４で駆動される。そして、駆動モータ９４の駆動力は、操作ノブ５の操作量に従って調整される。すなわち、発射制御基板９１上の回路によって、操作ノブ５の操作量に応じた速度で打球が発射されるように制御される。
【００３２】
この実施の形態では、遊技制御手段によって、中継基板３５を介して、遊技盤に設けられている始動記憶表示器１８、ゲート通過記憶表示器４１および装飾ランプ２５の表示制御を行うとともに、枠側に設けられている遊技効果ランプ・ＬＥＤ２８ａ，２８ｂ，２８ｃ、賞球ランプ５１および球切れランプ５２の表示制御が行われる。また、遊技制御手段は、スピーカ２７を制御して遊技進行中の効果音を発生する。遊技制御手段は、ＣＰＵ５６が実行するソフトウェアで実現されている。そして、中継基板３７を介して球払出装置９７に対する制御信号が出力され、中継基板３７を介してカードユニット５０との間の信号授受が行われる。なお、特別図柄を可変表示する可変表示部９および普通図柄を可変表示する可変表示器１０の表示制御は、表示制御基板８０に搭載されている表示制御手段によって行われる。また、球払出制御を行う払出制御手段は、ＣＰＵ５６が実行するソフトウェアで実現されている。
【００３３】
装飾ランプ２５および遊技効果ランプ・ＬＥＤ２８ａ，２８ｂ，２８ｃは、遊技の進行に伴って装飾的に様々に表示制御される。また、始動記憶表示器１８およびゲート通過記憶表示器４１は、保留個数を遊技者に報知するための発光体である。さらに、賞球ランプ５１および球切れランプ５２も、未賞球ありおよび球切れを遊技者や遊技店員に報知するための発光体である。
【００３４】
図５は、この実施の形態で用いられるＣＰＵ５６の構成をユーザプログラムを格納したＲＯＭ５４および基本入出力システム（ＢＩＯＳ）を格納したＲＯＭ５４Ａとともに示すブロック図である。ユーザプログラムは、遊技機の制御のためのプログラムであり、ＯＳは、ユーザプログラムの実行環境を整えるためのソフトウェアである。この実施の形態では、ユーザプログラムは、遊技制御プログラムと払出制御プログラムとを含む。図５に示すように、ＣＰＵ５６は、ＣＰＵコア５６Ａの他に、オペレーティングシステム（ＯＳ）を格納したＲＯＭ５６Ｂを内蔵している。さらに、Ｉ／Ｏポートやタイマ回路等の周辺回路５６Ｃを内蔵している。ＣＰＵコア５６Ａは、演算回路、割込受付制御回路およびレジスタ等を含む部分である。
【００３５】
なお、この実施の形態では、ＢＩＯＳは外付けのＲＯＭ５４Ａに書き込まれているが、ＣＰＵ５６が紫外線消去型のＲＯＭ等の書き換え可能なＲＯＭを内蔵している場合には、そこに書き込まれているように構成してもよい。また、ユーザプログラムについても、ＣＰＵ５６が紫外線消去型のＲＯＭ等の書き換え可能なＲＯＭを内蔵している場合には、そこに書き込まれているように構成してもよい。
【００３６】
あるいは、ＢＩＯＳやユーザプログラムは、ＣＰＵ５６に内蔵されているＲＯＭ（書き換え不能）に格納されていてもよい。その場合には、機種が異なると、異なるＢＩＯＳやユーザプログラムを内蔵したＣＰＵを製造する必要があるが、ＢＩＯＳやユーザプログラムが確定してしまえば、単にＣＰＵとＲＯＭを内蔵したＬＳＩを製造するにすぎないので問題はない。
【００３７】
図６は、ＯＳ２００の一構成例をＢＩＯＳ２３０とともに示すブロック図である。この例では、ＯＳ２００は、タスク管理部２０１、システム処理実行部２０２、タイマ管理部２０３および割込管理部２０４を含む。
【００３８】
タスク管理部２０１は、タスク分けされているユーザプログラムにおける各タスクの実行制御を行う。システム処理実行部２０２は、遊技制御におけるまとまった処理（例えば、あるパターンでの特別図柄変動中の演出制御）や入出力制御を実行するものであり、あらかじめ用意されている多数のシステム処理を実行する。システム処理中に、必要ならばＢＩＯＳ２３０が参照される。
【００３９】
タイマ管理部２０３は、ユーザプログラムの要求に応じて、また、ＯＳ自身の必要に応じてタイマ設定を行い、タイムアウトを検出すると、要求されたアドレスにジャンプする。割込管理部２０４は、ユーザプログラムの要求に応じて、また、ＯＳ自身の必要に応じて割込発生の監視を行い、割込が発生すると、要求されたアドレスにジャンプする。
【００４０】
ＢＩＯＳ２３０は、Ｉ／Ｏポートを介した入力チェック処理とデータ出力処理とを行う。具体的は、複数ある入力ポートの各ポートの各ビットのチェック処理を行うサブルーチンと、複数ある出力ポートの各ビットまたはまとまった複数ビット（例えば８ビット）に対するデータ出力を行うサブルーチンとして実現される。
【００４１】
図７は、ユーザプログラム２６０の一構成例を示すブロック図である。この例では、ユーザプログラム２６０は、情報領域２６１、遊技制御タスク２６２，払出制御タスク２６３を含む。情報領域２６１は、ＯＳに対する情報が設定される領域であり、例えば、タスク数や各タスクで用いる割込の発生時にジャンプして欲しいアドレスが設定される。
【００４２】
遊技制御タスクは、遊技制御を実行するプログラムであり、この実施の形態では、入賞検出、遊技演出の決定および制御、ランプ・ＬＥＤ点灯制御、音声出力制御等を行う。払出制御タスクは、入賞に応じた遊技球の払出制御と遊技者からの払出要求に応じた遊技球貸出制御を行う。なお、入賞に応じた遊技球数は、遊技制御タスクからタスク間通信で通知される。
【００４３】
図８は、情報領域２６１の設定情報の一例を示す説明図である。この例では、タスク１（遊技制御タスク）およびタスク２（払出制御タスク）の先頭アドレスと、割込１〜割込４の割込番地（割込処理開始番地）が情報領域２６１に設定されている。割込１〜割込４は、遊技制御タスクまたは払出制御タスクが使用する割込である。
【００４４】
ＯＳは、電源投入時に、情報領域２６１の設定情報を読み出して、タスクの生成を行う。また、割込１〜割込４の割込番地を所定の割込管理テーブルに設定する。そして、割込の発生を検出したら、割込管理テーブル内に設定されている該当アドレスにジャンプする。
【００４５】
図９は、ＯＳが管理するタスクコントロールブロック（ＴＣＢ）の構成例を示すブロック図である。この例では、タスク１〜タスクｎに対応したＴＣＢが用意されている。ただし、この実施の形態では、タスク１およびタスク２のＴＣＢのみが使用される。各タスクには、タスク状態および次開始番地を示す領域と、そのタスクで使用したレジスタ値を格納するためのレジスタ退避エリアとが用意されている。
【００４６】
ＯＳは、タスク切替時（あるタスクの実行を止めて、他のタスクを実行させるとき）に、実行を停止するタスクが使用していたレジスタ値をそのタスク用のＴＣＢのレジスタ退避エリアに格納するとともに、次に実行するタスクのＴＣＢのレジスタ退避エリアに設定されていた値をＣＰＵのレジスタに設定する。そして、実行を停止するタスクのプログラムの次アドレスをそのタスク用のＴＣＢの次開始番地に設定するとともに、次に実行するタスクのＴＣＢの次開始番地に設定されていたアドレスにジャンプさせる制御を行う。
【００４７】
タスク状態として、例えば、実行（Ｒｕｎ）状態、実行待ち（Ｒｅａｄｙ）状態、待機（Ｗａｉｔ）状態がある。Ｒｕｎ状態は、そのタスクが実行中であることを示し、Ｒｅａｄｙ状態は、タスクスケジューリングを待っている状態を示す。Ｗａｉｔ状態は、あらかじめ決められている何らかの事象が生ずるとＲｅａｄｙ状態に移行できる状態である。
【００４８】
図１０および図１１は、図６に示されたＯＳのシステム処理実行部２０２の処理内容例を示す説明図である。また、図１２は、ＢＩＯＳ構成例を示す説明図である。図１０は、各種入力チェック処理を行うシステム処理を示す。ユーザプログラムでは、入力チェックを行いたいときに、該当するシステム処理をコールする。すなわち、ＯＳに一時制御を戻す。システム処理がコールされると、そのシステム処理では、対応するＢＩＯＳをコールする。
【００４９】
例えば、遊技制御タスクが始動口スイッチのチェックを行いたいときには、システム処理Ｎｏ．１をコールする。すると、システム処理Ｎｏ．１の処理が開始される。システム処理Ｎｏ．１の処理では、対応するＢＩＯＳ、この例ではＢＩＯＳ番号０１の処理をコールする。ＢＩＯＳ番号０１の処理では、始動口スイッチの入力に割り当てられている入力ポートの該当ビットのデータを読み出し、読み出し結果をシステム処理Ｎｏ．１の処理に返す。すると、システム処理Ｎｏ．１の処理では、ＢＩＯＳからのチェック結果を、呼出元のタスクに返す。その後、そのタスクの実行が続行される。
【００５０】
このように、多数の入力チェックのためのシステム処理が用意され、また、各システム処理に対応するＢＩＯＳが用意されているので、ユーザプログラムの構築が容易になるとともにＣＰＵの汎用性が高まる。例えば、第１種パチンコ遊技機〜第３種パチンコ遊技機およびスロット機で使用されうると想定されるすべての入力チェック処理をシステム処理として用意しておく。そして、各入力チェック処理に対応したＢＩＯＳを用意しておく。
【００５１】
ユーザプログラムは、必要なシステム処理をコールするように構成される。上述したように、例えば、始動口チェックを行いたいときには、始動口スイッチチェックのシステム処理をコールする。呼び出されたシステム処理は、ＢＩＯＳをコールするのであるが、システム処理では入力ポートのアドレスおよびビット番号は指定されない。ＢＩＯＳが入力ポートのアドレスおよびビット番号を特定する。すると、入力ポートのアドレスまたはビット割当ての異なる遊技機を設計する場合に、ＢＩＯＳを変更するだけでよく、システム処理を変更する必要はない。すなわち、このようなＯＳを内蔵したＣＰＵをそのまま使用することができる。
【００５２】
また、ユーザプログラムは、入力ポートのアドレスおよびビット番号を指定しないでよいだけでなく、各チェック処理を実行するには、あらかじめ決められているシステム処理番号をコールするだけでよい。しかも、後述するように、この実施の形態では、遊技機用コンパイラがシステム処理番号を割り当てるので、ユーザプログラムの設計者は、システム処理番号も意識せずにプログラムを作成することができる。
【００５３】
図１１は、システム処理実行部における入力チェック以外のシステム処理の例を示す説明図である。この例では、ＢＩＯＳを使用しないシステム処理として、乱数更新処理、当り判定処理、大当り判定処理、タスク間通信処理が例示されている。
【００５４】
乱数更新処理は、遊技機において大当り判定や演出内容選定のために用いられるカウンタを更新する処理である。図１１では１つの乱数更新処理のみが示されているが、多数の乱数更新処理（例えば、０〜２９９の範囲で更新がなされる処理や０〜３１９の範囲で更新がなされる処理などの更新範囲が異なる多数の処理、更新タイミングが異なる多数の処理）をあらかじめ用意しておけば、各機種で使用する乱数更新処理をその中から選定して使用することができる。すなわち、ＯＳを変更することなく各機種でＣＰＵを使用することができる。
【００５５】
また、図１１に例示されているｍ２，ｍ３，ｍ４，ｍ７，ｍ３１〜ｍｘｘの処理は、ＢＩＯＳコールを伴う処理である。また、それらのシステム処理は、１つのまとまった処理である。例えば、「パターンＡによる始動入賞口開放」および「パターンＢによる始動入賞口開放」は、それぞれ、所定回数および所定期間、始動入賞口を開放する処理を行う。すなわち、始動入賞口に信号を出力するための出力ポートに対応したＢＩＯＳをコールして、また、タイマを使用して処理を進める。この結果、ユーザプログラムでは、「パターンＡによる始動入賞口開放」または「パターンＢによる始動入賞口開放」のシステム処理をコールするだけで規定の開放パターンを実現することができる。なお、この例では、各パターンに応じた各処理が用意されているが、１つの始動入賞口開放処理を用意し、ユーザプログラムからそのシステム処理に対して引数で開放回数および開放時間を知らせるようにしてもよい。引数は、例えばレジスタで引き渡される。
【００５６】
例えば、「パターン０１によるランプ・音声演出」〜「パターンｘｘによるランプ・音声演出」は、可変表示部９における表示演出に対応したランプ・音声演出である。すなわち、各パターンに対応したランプ・ＬＥＤおよびスピーカによる演出を実行する。実行に際して、各ランプ・ＬＥＤや音声パターンを発生するための音声制御用ＬＳＩに対して信号を出力するためのＢＩＯＳを使用する。ここでも、多数の処理が用意され、各機種で必要な処理を選定する。すなわち、ＯＳを変更することなく各機種でＣＰＵを使用することができる。
【００５７】
大入賞口開放のシステム処理は、大入賞口を開放するためのソレノイド等を所定期間だけ、または、規定の入賞があるまで駆動する処理である。規定入賞数および所定期間は、ユーザプログラムから引数で通知される。ユーザプログラムから通知された引数に応じて制御を行うので、大入賞口開放のシステム処理は、大入賞口開放制御を行うあらゆる機種の遊技機で使用することができる。すなわち、ＯＳを変更することなく各機種でＣＰＵを使用することができる。なお、大入賞口開放のシステム処理では、図４に示されたカウントスイッチ２３のチェックのためのＢＩＯＳが用いられるとともに、タイマが用いられる。
【００５８】
表示制御コマンド送出のシステム処理は、表示制御基板８０に対して、ユーザプログラムから要求されたコマンドを送出する処理である。ここでは、引数としてコマンド内容やコマンド長が通知される。表示制御コマンド送出のシステム処理は、表示制御基板８０に対するコマンド出力のための出力ポートに対応したＢＩＯＳが用いられる。なお、表示制御コマンド送出のシステム処理の他に、使用が想定される多数の制御基板のそれぞれに対応したコマンド送出システム処理も用意されている。また、コマンド出力相手先も引数として通知される１つのコマンド送出システム処理を用意すれば、さらに汎用性が増す。すなわち、多数の制御基板のそれぞれに対応したコマンド送出システム処理を用意しておかなくてもよい。
【００５９】
図１１には、タスク１，２間のタスク間通信処理が例示されているが、実際には、使用可能なタスク数（図９に示された例ではｎ個）に応じたタスク間通信処理が用意されている。データを出力したいタスクが、所定のＲＡＭ領域またはレジスタに受信先のタスク番号およびデータを設定してタスク間通信処理をコールする。すると、タスク間通信処理では、受信側のタスクに対応して設けられているＲＡＭ領域にデータを設定する。
【００６０】
以上に例示したように、ＯＳのシステム処理実行部２０２には、各種の遊技機で使用されると想定される処理が各システム処理として用意されている。従って、このようなＯＳを内蔵したＣＰＵをあらゆる機種の遊技機で使用可能である。また、ユーザプログラムは、具体的な入出力アドレスを指定しなくてよいので、ユーザプログラムの不具合が生ずる可能性が減り、その結果、ユーザプログラムの構築が容易である。さらに、遊技機用コンパイラでユーザプログラムの記述とシステム処理の対応付けを行うようにすれば、ユーザプログラム作成時にシステム処理を意識する必要もなく、この点からも、ユーザプログラムの構築が容易になる。
【００６１】
図１２は、ＢＩＯＳの一構成例を示す説明図である。ＢＩＯＳ番号０１〜ｍ０の各ＢＩＯＳ処理は、入力ポートのチェックを行う処理である。ＯＳのシステム処理実行部２０２は、ユーザプログラムから入力チェックの依頼を受けたとき等に、該当する番号のＢＩＯＳ処理をコールする。コールされたＢＩＯＳ処理は、定義されているアドレスの入力ポートの該当ビットの値を入力して入力結果を例えばレジスタを介してシステム処理実行部２０２に返す。システム処理実行部２０２は、入力結果をユーザプログラム等に返す。
【００６２】
ＢＩＯＳ番号ｍ１〜ｎｘ０の各ＢＩＯＳ処理は、出力ポートへの出力を行う処理である。ＯＳのシステム処理実行部２０２は、ユーザプログラムから出力の依頼を受けたときや、システム処理実行中の必要なときに、該当する番号のＢＩＯＳ処理をコールする。コールされたＢＩＯＳ処理は、定義されているアドレスの入力ポートの該当ビットに指定された値を出力する。出力される値は、例えばレジスタを介してシステム処理実行部２０２からＢＩＯＳに通知される。
【００６３】
図１３は、ＯＳのタイマ管理部２０３が管理するタイマ管理テーブルの一構成例を示すブロック図である。この例では、タイマ管理テーブルには、タイマ１〜タイマｎ用のｎ個のタイマテーブルが用意されている。従って、遊技機制御中に、同時にｎ個のタイマを使用可能である。システム処理実行部２０２には、タイマ起動用のシステム処理も含まれている。ユーザプログラムは、タイマ起動を要求するときに、タイマ起動用のシステム処理をコールする。コール時に、例えばレジスタを介してタイマ値とタイムアウト時ジャンプアドレス（タイマがタイムアウトしたときに開始される処理の開始番地）とを知らせる。タイマ管理部２０３は、例えば、各タイマのタイマ値減算の元になる割込処理（所定のクロック信号入力に応じて発生する割込処理）においてタイマ値が設定されているタイマテーブルにおけるタイマ値を減算し、タイマ値が０になるとタイムアウトジャンプアドレスにジャンプさせる。
【００６４】
図１４は、ＯＳの割込管理部２０４が管理する割込管理テーブルの一構成例を示すブロック図である。この例では、割込管理テーブルには、割込１〜割込ｓ用のｓ個のテーブルが用意されている。割込管理部２０４は、システム立ち上がり時（電源投入時）に、ユーザプログラムの情報領域２６１（図７参照）に記載されている割込番地を割込管理テーブルに設定する。そして、割込が発生したときに、割込管理テーブルに設定されているアドレスにジャンプさせる。
【００６５】
次に、図１５〜図２１のフローチャートを参照してＯＳの処理例を説明する。
遊技機に電源が投入されると、ＯＳは、図１５に示すイニシャル処理を実行する。イニシャル処理では、ユーザプログラムが必要とする各タスクを生成する。この実施の形態では、遊技制御タスクと払出制御タスクが生成される。
【００６６】
ＯＳは、まず、ユーザプログラムの情報領域２６１に記載されている割込番地を図１４に示す割込管理テーブルに設定する（ステップＳ４００）。次いで、変数ｎに１を設定し（ステップＳ４０１）、ユーザプログラムの情報領域の先頭番地設定領域（図８参照）からタスクｎの先頭番地を読み出す（ステップＳ４０２）。先頭番地が設定されている場合には、先頭番地をタスクｎのＴＣＢ（図９参照）の次開始番地に設定し（ステップＳ４０３，Ｓ４０４）、タスクｎのＴＣＢのレジスタ退避エリアをクリアしておく（ステップＳ４０５）。そして、タスクｎのタスク状態をＲｅａｄｙ状態とし（ステップＳ４０６）、変数ｎの値を１増やしてステップＳ４０２に戻る（ステップＳ４０７）。
【００６７】
ステップＳ４０３において、先頭番地が設定されていないことを検出したら、タスク切替タイマをスタートし（ステップＳ４０８）。タスク１のＴＣＢの次開始番地の内容をスタックの一番上の２バイトにセットし（ステップＳ４０９）、タスク１のタスク状態をＲｕｎ状態に設定する（ステップＳ４１０）。また、タスク１のＴＣＢのレジスタ退避エリアの内容をＣＰＵのレジスタに設定し（ステップＳ４１１）、ＲＥＴ命令を発行する。ＲＥＴ命令は、ＣＰＵが１６ビットのプログラムカウンタを備えている場合には、一般に、スタックの上位２バイトの値をプログラムカウンタに設定する処理を行う命令である。よって、ＲＥＴ命令によって、タスク１（この実施の形態では遊技制御タスク）の先頭番地にジャンプする。
【００６８】
ステップＳ４０８でセットされるタスク切替タイマは、各タスクの実行割当時間を決めるためのタイマである。タスク切替タイマは、例えば、１ｍｓでタイムアウトする。タスク切替タイマのタイムアウトが生ずると、タイマ割込が生じ、図１６に示すＯＳ処理が開始される。なお、図１６に示す処理は、ＯＳのタスク管理部２０１およびシステム処理実行部２０２の処理の一部に相当する。
【００６９】
タスク管理部２０１は、まず、走行タスクのＴＣＢにおけるレジスタ退避エリアにレジスタ内容を保存する（ステップＳ４１２）。タイマ割込等の割込が発生すると、一般に、ＣＰＵは割込発生時にプログラムカウンタの値をスタックの一番上に保存する。すなわち、走行タスクにおける次実行アドレスがスタックの一番上に保存されている。そこで、タスク管理部２０１は、スタックの一番上の２バイトの内容を走行タスクのＴＣＢの次開始番地エリアに保存する（ステップＳ４１３）。また、走行タスクのＴＣＢにおけるタスク状態をＲｅａｄｙ状態に戻す（ステップＳ４１４）。
【００７０】
次いで、ステップＳ４１５のシステム処理が実行される。システム処理が終了すると、タスク管理部２０１は、走行中であったタスクの次のタスクのタスク状態をＴＣＢから取得し（ステップＳ４１６）、タスク状態がＲｅａｄｙ状態であれば、ステップＳ４１８以降の処理を行う（ステップＳ４１７）。タスク状態がＲｅａｄｙ状態でない場合には、さらに次のタスクについてタスク状態をＴＣＢから取得する。
【００７１】
ステップＳ４１８において、タスク管理部２０１は、ステップＳ４１７で見出したタスクのＴＣＢの次開始番地をスタックの一番上に設定する（ステップＳ４１８）。そして、そのタスクのタスク状態をＲｕｎ状態に設定する（ステップＳ４１９）。また、そのタスクのレジスタ退避エリアの内容をＣＰＵのレジスタに設定し（ステップＳ４２０）、ＲＥＴＩ命令を発行する。ＲＥＴＩ命令は、一般に、割込発生元（この場合にはタイマ）に割込終了を通知するとともに、スタックの上位２バイトの値をプログラムカウンタに設定する処理を行う命令である。よって、ＲＥＴＩ命令によって、次タスクの次開始番地にジャンプする。
【００７２】
以上のように、この実施の形態では、タスク切替タイマのタイムアウト時に、タスク切替が行われるとともに、システム処理の一部が実行されるが、システム処理は、このタイミングではなく、他のタイミングで実行されるように構成してもよい。他のタイミングとは、例えば、タスク切替タイマとは別のタイマを用意した場合のそのタイマのタイムアウト時である。
【００７３】
図１７は、システム処理の一部を示すフローチャートである。図１７に示す処理は、ステップＳ４１５で実行されるのではなく、ユーザプログラムからのコールに応じて実行されるシステム処理１〜ｍ０（図１０参照）の入力チェックプログラムである。図１７には、１つの処理が示されているが、実際には、システム処理１〜ｍ０のそれぞれの処理ルーチンが用意されている。
【００７４】
図１７に示す処理において、システム処理実行部２０２は、対応するＢＩＯＳ処理をコールする（ステップＳ４２１）。そして、ＢＩＯＳ処理によるチェック結果を取得したら（ステップＳ４２２）、その値をチェックし（ステップＳ４２３）、値が１であるならばＢレジスタを１にし（ステップＳ４２４）、値が０であるならばＢレジスタを０にする（ステップＳ４２５）。そして、ＲＥＴ命令を発行する。ＲＥＴ命令によって、処理はユーザプログラム側に戻る。なお、Ｂレジスタは、ここで用いられているＣＰＵの汎用レジスタのうちの一つである。また、この例では、Ｂレジスタを用いてシステム処理実行部２０２とユーザプログラムとの間で情報の授受が行われる。
【００７５】
図１８は、システム処理のうちの他の一部であり、この実施の形態では、ステップＳ４１５において実行される処理である。具体的には、図１１に示されたシステム処理ｍ１〜ｍｙｙを実行するための処理である。なお、システム処理ｍ１〜ｍｙｙの処理は、ユーザプログラムの要求に応じて起動される。例えば、ユーザプログラムは、システム処理ｍ１〜ｍｙｙのうちのある処理を開始したいときには、該当するシステム処理をコールする。コールに応じて、そのシステム処理は起動状態になる。起動状態になったシステム処理は、図１８に示す処理において順次実行される。そして、システム処理の実行が完了すると、ユーザプログラムに対して実行完了を通知する。
【００７６】
図１８に示す処理では、まず、変数ｎにｍ０がセットされる（ステップＳ４３１）。そして、ｎ番目のシステム処理が実行中であるか否か確認される（ステップＳ４３２）。実行中であれば、処理が終了したか否か確認される（ステップＳ４３３）。処理が終了していれば、その処理に対応した終了フラグがセットされる（ステップＳ４３４）。例えば、システム処理ｍ７は表示制御コマンド送出処理であるが（図１１参照）、コマンド送出が完了すると、終了フラグがセットされる。ユーザプログラムでは、表示制御コマンド送出要求を出したタスク、すなわちシステム処理ｍ７を起動したタスク（この実施の形態では遊技制御タスク）が次にＲｕｎ状態になったときに、終了フラグを検知して表示制御コマンド送出完了を認識する。なお、システム処理ｍ１〜ｍｙｙのうちにはユーザプログラムの要求がなくても起動開始したり、常に起動している処理もある（例えばシステム処理ｍ１）。
【００７７】
ステップＳ４３３で処理終了でないことが検知されたら、所定期間だけその処理が実行される（ステップＳ４３５）。そして、変数ｎの値が＋１される（ステップＳ４３６）。ｎの値が最後のシステム処理番号（この例ではｍｙｙ）を越えたらシステム処理終了とする。ｎの値が最後のシステム処理番号を越えていなければ、ステップＳ４３２に戻る。
【００７８】
図１９は、ＯＳのタイマ管理部２０３によるタイマ設定要求受付処理を示すフローチャートである。タイマ設定要求受付処理は、ユーザプログラムの要求によって起動される。なお、この例では、ユーザプログラムにおいて、タイマ起動を要求する場合には、ＢＣレジスタ（１６ビット）にタイマ値（タイムアウト時間）が設定され、ＨＬレジスタにタイムアウト時の実行アドレスが設定される。Ｂ，Ｃ，Ｈ，Ｌレジスタは、それぞれ、ここで用いられるＣＰＵの汎用８ビットレジスタである。
【００７９】
タイマ管理部２０３は、タイマ設定要求受付処理において、空きタイマを確認する（ステップＳ４４１）。具体的には、タイマ値が設定されていないタイマテーブル（図１３参照）を見つける。そして、見つけた空きタイマのタイマテーブルにおけるタイマ値エリアにＢＣレジスタの内容を設定するとともに（ステップＳ４４２）、ＨＬレジスタの内容をタイムアウト時ジャンプアドレスのエリアに設定する（ステップＳ４４３）。
【００８０】
図２０は、タイマ処理を示すフローチャートである。タイマ処理は、タイマ値減算の元になる割込処理であり、所定のクロック信号（例えば、１００μ周期）入力に応じて発生する割込にもとづく処理である。
【００８１】
タイマ処理において、動作中の各タイマのタイマ値を減算する（ステップＳ４５１）。そして、タイマ値が０になったものがあれば（ステップＳ４５２）、そのタイマのタイマテーブルにおけるタイムアウト時ジャンプアドレスをスタックの一番上に設定し（ステップＳ４５３）、ＲＥＴＩ命令を発行する。なお、タイマ値が０になったものが複数ある場合には、それぞれのジャンプアドレスにジャンプする処理を順次行った後にＲＥＴＩ命令を発行する。
【００８２】
図２１は、ＯＳの割込管理部２０４に属する割込１処理を示すフローチャートである。割込１の要因となる割り込みが発生すると、割込管理テーブルにおける割込１の割込番地設定領域（図１４参照）に設定されている値を読み出し（ステップＳ４６１）、読み出した値をスタックの一番上に設定して（ステップＳ４６２）、ＲＥＴ命令を発行する。よって、割込１の発生に応じて、ユーザプログラム領域にある割込処理プログラムの先頭アドレスにジャンプする。なお、ユーザプログラム領域にある割込処理プログラムの最後でＲＥＴＩ命令が実行される。また、図２１には、割込１処理が例示されているが、その他の割込処理も同様に構成される。
【００８３】
図２２は、ＢＩＯＳ、ＯＳおよびユーザプログラムの動作例を示すタイミング図である。図２２において、太線は、ＣＰＵ資源が割り当てられている状態すなわち実行状態を示す。図２２に示す例では、まず、遊技制御タスクの実行中にタスク切替タイマがタイムアウトしてＯＳに制御が戻り、ＯＳのタスク切替処理（タスク管理部２０１の処理）で遊技制御タスクのレジスタ退避が行われた後に、システム制御（システム処理実行部２０２の処理）が実行される。システム制御では、起動中の各システム処理が順次実行され、その後、ＯＳのタスク切替処理で次タスクのレジスタ復帰処理が行われた後に次タスク（払出制御タスク）が実行状態になる。
【００８４】
そして、払出制御タスクの実行中にタスク切替タイマがタイムアウトしてＯＳに制御が戻り、ＯＳで払出制御タスクのレジスタ退避が行われた後に、システム処理が実行される。システム処理では、起動中の各処理が順次実行され、その後、ＯＳで次タスクのレジスタ復帰処理が行われた後に次タスク（遊技制御タスク）が実行状態になる。
【００８５】
図２２に示す例では、その後、遊技制御タスク実行中に、入力チェックのためのシステム処理がコールされている。コールに応じてＯＳのシステム制御処理において、該当するＢＩＯＳコールが行われ、入力チェック結果が遊技制御タスクに返送される。その後、タスク切替タイマがタイムアウトするとＯＳに制御が戻る。
【００８６】
以上に説明したように、この実施の形態では、ＯＳ側に、入力チェック処理、出力処理および一連の制御処理を含むシステム処理が用意されている。そして、システム処理において、必要に応じてＢＩＯＳが呼び出される。従って、ユーザプログラムでは、具体的な入出力アドレスを指定しなくてよいし、また、必要なシステム処理を呼び出すだけで遊技制御処理や払出制御処理を遂行することが出きる。システム処理は、各種の遊技機において使用されると想定される各処理を含んでいるので、任意タイプの遊技機の任意の機種において、上述した構成のＣＰＵを適用することができる。
【００８７】
また、各システム処理も具体的な入出力アドレスを意識しなくてよいので、入出力アドレスがどのように割り当てられている遊技機にも、このＣＰＵを適用することができる。入出力アドレスが異なる機種についてはＢＩＯＳが変更される。
【００８８】
なお、この実施の形態では、ユーザプログラムは遊技制御タスクと払出制御タスクによるマルチタスク構成としたが、上述したＣＰＵでは遊技制御処理のみが行われ、払出制御は他のＣＰＵによって実行されるように構成してもよい。
【００８９】
以下、具体的なプログラム例についてユーザプログラムの作成の仕方の一例を説明する。図２３は、始動入賞があったときに可変表示部９において可変表示が行われ、所定の条件が成立すると大入賞口を開放する特定遊技が行われる場合の簡単なユーザプログラム例を示す説明図である。
【００９０】
遊技機プログラム開発者は、図２３に示すように、まず、高級言語でプログラムを記述する。ここで、日本語混じりで記述してもよいし、アルファベットのみで記述してもよい。ただし、日本語混じりでの記述を許可する場合には、コンパイラもそれに応じたものとして作成しておく必要がある。また、図２３に示す例において、＜＞は条件を示す。［］は引数を示す。
【００９１】
この実施の形態で用いられる遊技機用コンパイラは、上述したＯＳを有するＣＰＵが実行しうる機械語を生成するためのツールである。図２３の上側に示すような高級言語が入力されると、遊技機用コンパイラは、図２３の下側に示すような機械語を出力する。すなわち、「始動口チェック」という記述に応じて「ＣＡＬＬ  ＃０１」という機械語を出力する。また、「ＩＦ  ＜始動口ＯＦＦ＞  ＧＯ  ＴＯ  ０１」という記述に応じて「ＢＩＴ  Ｂ，０１」、「ＪＰ  Ｚ，ａａ」という機械語を出力する。そして、「大当たり判定」という記述に応じて「ＣＡＬＬ  ＃ｍ６」という機械語を出力する。
【００９２】
ここで、「ＢＩＴ  Ｂ，０１」は、Ｂレジスタのビット０が１であるか否かを判定する命令であり、「ＪＰ  Ｚ，ａａ」はゼロフラグがセットされればアドレスａａにジャンプすることを示す命令である。また、「ＣＡＬＬ」に付随している「＃０１」および「＃ｍ５」はシステム処理の番号を示すコードである（図１０，図１１参照）。このように、高級言語表記とシステム処理番号とは、遊技機用コンパイラによって対応付けられる。換言すれば、高級言語表記とシステム処理番号を対応付ける処理も行うように遊技機用コンパイラが作成されている。従って、遊技機プログラム開発者は、システム処理番号を意識する必要もない。
【００９３】
なお、実際に遊技機のＲＯＭ５４に機械語によるユーザプログラムを搭載する場合には、ジャンプ先の実アドレスやシステム処理の実アドレスが必要になるので、遊技機用コンパイラは、「＃０１」や「＃ｍ６」に対応した実アドレスを生成する。あるいは、遊技機用コンパイラは仮想アドレスを出力し、コンパイラ出力をリンカにかけて実アドレスに変換するようにしてもよい。
【００９４】
図２３に示された例のように、遊技機開発者は、通常使用する言葉でプログラムを作成することができる。つまり、機械語に対応したニーモニックを知る必要はない。また、各スイッチやデータ出力のための入出力アドレスなどを知っておく必要もない。従って、ＣＰＵの構造やニーモニックを知らない者でも、遊技機プログラムを作成することができる。また、それらの知識を必要としないので、遊技機開発者は、遊技制御方法に開発能力を注力することができる。その結果、遊技機開発効率を向上させることができる。
【００９５】
上記の実施の形態では、遊技機開発者が記述した高級言語による遊技機制御プログラムを遊技機用コンパイラで機械語に変換したものをＲＯＭ５４に格納したが、高級言語をコード化したものをＲＯＭ５４に書き込んでもよい。その場合には、図２４に示すように、ＣＰＵ５６に遊技機用コンパイラ５６Ｄが内蔵される。そして、例えば、遊技機の電源投入時等に、遊技機用コンパイラ５６Ｄが起動され、ＲＯＭ５４内の高級言語がコンパイルされ機械語がＲＡＭ５５に設定される。以後、ＲＡＭ５５に設定された内容にもとづいてユーザプログラムが実行される。
【００９６】
上記の実施の形態では、ユーザプログラムは遊技制御タスクと払出制御タスクとの２タスクに大別されたが、タスク分けをどのように行ってもよい。また、上記の実施の形態では、各タスクは生成時にＲｅａｄｙ状態とされたが、何らかの事象が発生したらＷａｉｔ状態からＲｅａｄｙ状態に変更するようにしてもよい。
【００９７】
図２５は、ユーザプログラムをより細かくタスク分けした場合のタスク構成の一例を示すブロック図である。図２５に示す例では、ユーザプログラムは、始動入賞を確認するための始動確認タスク２７１、ゲート通過を確認するためのゲート通過確認タスク２７２、入賞を確認するための入賞確認タスク２７３、始動入賞口を開閉するための処理を行う始動口開閉タスク２７４、可変表示器１０に可変表示される普通図柄に関わる制御を行う普通図柄演出制御タスク２７５、可変表示部９に可変表示される特別図柄に関わる制御を行う特別図柄演出制御タスク２７６、大入賞口開閉に関する処理を行う大入賞口開閉タスク２７７、・・・、賞球払出制御を行う賞球制御タスク２７８および球貸しに関する制御を行う球貸し制御タスク２７９等にタスク分けされている。
【００９８】
このように、ユーザプログラムが細かなタスクに分かれていても、既に説明したＯＳの制御をそのまま適用することができる。
【００９９】
図２６は、図２５に示された情報領域２６１に設定される情報の一部を示す説明図である。図２６に示す例では、各タスクの初期状態も情報領域に設定されている。ＯＳは、タスク生成時に、情報領域に設定されている初期状態に応じてＴＣＢのタスク状態を設定する。既に説明したように、Ｗａｉｔ状態とは何らかの事象が発生するとＲｅａｄｙになる状態である。例えば、タスク４（始動口開閉タスク）は、電源投入時にはＷａｉｔ状態に設定される。そして、例えば普通図柄演出制御タスク２７５は、所定の条件が成立すると、タスク４をＲｅａｄｙ状態にすることをＯＳに依頼する。具体的には、タスク番号「４」を所定のレジスタに設定して、タスク状態変更のためのシステム処理をコールする。そのシステム処理は、コールに応じてタスク４のＴＣＢのタスク状態をＲｅａｄｙ状態に変更する。Ｒｅａｄｙ状態になると、ＯＳのタスク管理部２０１は、起動タイミングが到来すればタスク４をＲｕｎ状態にする。
【０１００】
このように、何らかの事象に応じてタスクをＷａｉｔ状態からＲｅａｄｙ状態に変更するように構成すれば、不必要なタスクが起動されることはなく、遊技制御の各時点において必要なタスクのみが起動可能になり、全体的な処理速度が向上する。特に、細かくタスク分けした場合には、その効果は大きい。
【０１０１】
以上に説明した各実施の形態では、遊技機は、遊技者が所定の遊技を行うことが可能な遊技機であって、遊技に関する制御を行うマイクロコンピュータを備え、マイクロコンピュータが実行する制御プログラムは、ユーザが作成したプログラムであって遊技進行に応じた制御を行うユーザプログラムと、ユーザプログラムで使用する各ルーチンを有するシステム処理プログラム（システム制御プログラム）またはあらかじめ用意されているプログラムであってマイクロコンピュータに対するデータ入力処理およびマイクロコンピュータからのデータ出力処理を行う各処理を有する基本入出力プログラムの少なくともいずれか一方（両方を含んでいてもよい）とを含むように構成されている。従って、ユーザプログラムをシステム処理プログラム内のルーチンを呼び出す形式で作成したり、データ入出力が基本入出力プログラムによって実行されることからユーザプログラムを具体的入出力アドレスを意識しないで作成したりすることができる。よって、ユーザプログラムの構造が簡略化され、ユーザプログラムの作成が容易になる。
【０１０２】
さらに、システム処理プログラムは、ユーザプログラムが格納されている記憶部とは異なる記憶部に記憶されている。よって、あらかじめ作成されているシステム処理プログラムを、ユーザプログラムが格納されている記憶部とは異なる記憶部に容易に格納しておくことができる。従って、各機種共通のシステム処理プログラムをあらかじめ作成しておいて、ユーザプログラムのみを機種に応じて新規に作成するという開発形態を採用することができる。その結果、遊技機の新機種開発にあたってユーザプログラムのみを新規に作成すればよく、開発コストを低減できるとともに開発期間を短縮できる。
【０１０３】
また、基本入出力プログラムは、具体的入出力アドレスにもとづいてデータ入出力制御を行い、システム処理プログラムは、具体的入出力アドレスを指定しないで基本入出力プログラムにおける処理を呼び出す形式である。よって、入出力アドレスの異なる新機種開発に際して、基本入出力プログラムを変更すればよく、システム処理プログラムを変更する必要はない。従って、システム処理プログラムを多機種にわたって変更せずに使用することができ、新たなシステム処理プログラムを開発する必要はない。すなわち、システム処理プログラムについて開発コストが発生しない。
【０１０４】
システム処理プログラムは、複数種類の遊技機の少なくとも一つで用いられるルーチンの集まりを含む構成である。よって、複数種類の遊技機についても、１つのシステム処理プログラムを使用することができる。
【０１０５】
また、ユーザプログラムは、高級言語で記述されたプログラムが遊技機用コンパイラで機械語に変換されたものである。よって、遊技機用コンパイラが高級言語ユーザプログラムとシステム処理プログラムとの対応付けを行うので、ユーザプログラムを作成する際に、システム処理プログラムを意識する必要もなくなる。その結果、ユーザプログラムの作成がさらに容易になって開発期間をさらに短縮できる。また、マイクロコンピュータやハードウェアについての知識が不足している者であってもユーザプログラムを容易に作成することができる。
【０１０６】
上記の各実施の形態で用いられている遊技機用マイクロコンピュータは、遊技者が所定の遊技を行うことが可能な遊技機に適用可能な遊技機用マイクロコンピュータであって、遊技進行に応じた制御を行うユーザプログラムで使用する各ルーチンを有するシステム処理プログラムを内蔵している。従って、遊技進行に応じた大まかな制御を行うユーザプログラムを作成するだけで、遊技機の制御手段を作成することができる。また、外付けのＲＯＭを節減でき、遊技機のコスト削減にもつながる。
【０１０７】
遊技機用マイクロコンピュータは、データ入出力を制御する各処理を有する基本入出力プログラムをさらに内蔵している。よって、遊技機コストをさらに削減することができる。
【０１０８】
なお、上記の実施の形態では、以下のような遊技機も開示されている。
【０１０９】
基本入出力プログラムが、具体的入出力アドレスにもとづいてデータ入出力制御を行うものであって、基本入出力プログラムを呼び出す側のプログラムは、例えば、具体的入出力アドレスを指定しないで基本入出力プログラムにおける処理を呼び出す形式である遊技機。そのような構成によれば、入出力アドレスの異なる新機種開発に際して、基本入出力プログラムを変更すればよく、基本入出力プログラムを呼び出す側のプログラムを変更する必要はない。従って、基本入出力プログラムを呼び出す側のプログラムを多機種にわたって変更せずに使用することができ、新たなプログラムを開発する必要はない。
【０１１０】
基本入出力プログラムが、それに含まれる各処理を特定可能に構成され、基本入出力プログラムを呼び出す側のプログラムは、処理を特定可能な情報を用いて基本入出力プログラムにおける処理を呼び出す形式であるように構成されていてもよい。なお、処理を特定可能な情報とは、例えば、一連の通し番号であり、処理を特定可能な情報を用いて呼び出すというのは、例えば、通し番号に応じたアドレスをコールすることである遊技機。そのような構成によれば、例えば番号によって処理を特定できるので、基本入出力プログラムを呼び出す側のプログラムの構築が容易である。
【０１１１】
基本入出力プログラムが、遊技機に設けられている電気部品の動作時間や動作回数を変数として扱うことが可能であり、基本入出力プログラムを呼び出す側のプログラムは、変数を引数として基本入出力プログラムにおける処理を呼び出す形式であるように構成されている遊技機。そのような構成によれば、基本入出力プログラムの汎用性が高まり、多くの機種に対して基本入出力プログラムを使い回すことができる。
【０１１２】
ユーザプログラムが、高級言語で記述されたプログラムが遊技機用コンパイラで機械語に変換されたものである遊技機。そのような構成によれば、ユーザプログラムの作成がさらに容易になって開発期間をさらに短縮できる。また、マイクロコンピュータやハードウェアについての知識が不足している者であってもユーザプログラムを容易に作成することができる。
【符号の説明】
【０１１３】
３１      遊技制御基板（主基板）
５３      基本回路
５６      ＣＰＵ
２００    ＯＳ（オペレーティングシステム）
２０１    タスク管理部
２０２    システム処理実行部
２０３    タイマ管理部
２０４    割込管理部
２３０    ＢＩＯＳ（基本入出力システム）
２６０    ユーザプログラム
【図１】
0005399825.tif 000002
【図２】
0005399825.tif 000003
【図３】
0005399825.tif 000004
【図４】
0005399825.tif 000005
【図５】
0005399825.tif 000006
【図６】
0005399825.tif 000007
【図７】
0005399825.tif 000008
【図８】
0005399825.tif 000009
【図９】
0005399825.tif 000010
【図１０】
0005399825.tif 000011
【図１１】
0005399825.tif 000012
【図１２】
0005399825.tif 000013
【図１３】
0005399825.tif 000014
【図１４】
0005399825.tif 000015
【図１５】
0005399825.tif 000016
【図１６】
0005399825.tif 000017
【図１７】
0005399825.tif 000018
【図１８】
0005399825.tif 000019
【図１９】
0005399825.tif 000020
【図２０】
0005399825.tif 000021
【図２１】
0005399825.tif 000022
【図２２】
0005399825.tif 000023
【図２３】
0005399825.tif 000024
【図２４】
0005399825.tif 000025
【図２５】
0005399825.tif 000026
【図２６】
0005399825.tif 000027