JP6611232B2 - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP6611232B2
JP6611232B2 JP2015146292A JP2015146292A JP6611232B2 JP 6611232 B2 JP6611232 B2 JP 6611232B2 JP 2015146292 A JP2015146292 A JP 2015146292A JP 2015146292 A JP2015146292 A JP 2015146292A JP 6611232 B2 JP6611232 B2 JP 6611232B2
Authority
JP
Japan
Prior art keywords
interrupt
address
reset
setting
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015146292A
Other languages
English (en)
Other versions
JP2017023493A5 (ja
JP2017023493A (ja
Inventor
敏男 小倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sankyo Co Ltd
Original Assignee
Sankyo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sankyo Co Ltd filed Critical Sankyo Co Ltd
Priority to JP2015146292A priority Critical patent/JP6611232B2/ja
Publication of JP2017023493A publication Critical patent/JP2017023493A/ja
Publication of JP2017023493A5 publication Critical patent/JP2017023493A5/ja
Application granted granted Critical
Publication of JP6611232B2 publication Critical patent/JP6611232B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Slot Machines And Peripheral Devices (AREA)

Description

本発明は、遊技を行うことが可能な遊技機に関する。
遊技機として、遊技球などの遊技媒体を発射装置によって遊技領域に発射し、遊技領域に設けられている入賞口などの始動入賞領域に遊技媒体が入賞したときに複数種類の識別情報の可変表示が行われるパチンコ遊技機や、所定の賭数を設定し、スタート操作が行われたときに、複数種類の識別情報(例えば、図柄)の可変表示が行われるスロットマシンなどがある。このように識別情報の可変表示を実行可能に構成された遊技機では、可変表示部において識別情報の可変表示の表示結果が所定の表示結果となった場合に、所定の遊技価値(例えば、大当たり状態への移行など)を遊技者に与えるように構成されたものがある。
このような遊技機として、割込ベクタ定義領域に遊技機制御プログラムの割込発生時における割込アドレスを定義する遊技機が知られている(特許文献1)。
特開2002-52215号公報(段落0033など)
しかしながら、特許文献1の遊技機では、割込ベクタ定義領域に意図しない割込アドレスが定義されている場合に、割込が発生するまでは正常な処理が実行されるものの、割込が発生したときに意図しない処理が実行されるおそれがある。
本発明は、このような問題点に着目してなされたものであり、意図しない割込処理が実行されることを事前に防止することができる遊技機を提供することを目的とする。
上記課題を解決するために、本発明の遊技機は、
遊技を行うことが可能な遊技機(例えば、スロットマシン1)において、
プログラムを記憶する記憶手段(例えば、ROM208)と、
該記憶手段に記憶されたプログラムに従った処理を実行するマイクロコンピュータ(例えば、図11に示す部分)と、を備え、
プログラムは、割込の発生に応じて実行される割込プログラム(例えば、図12に示す部分)を含み、
前記マイクロコンピュータは、
前記マイクロコンピュータの起動時にユーザプログラムが記憶されている記憶領域を設定する記憶領域設定手段(例えば、図16に示すプログラムエンドアドレスの設定)と、
前記記憶領域設定手段が設定した記憶領域で記憶しているユーザプログラムに従った処理を実行するユーザプログラム実行手段(例えば、CPU207)と、
前記記憶領域設定手段が設定した記憶領域以外の領域で記憶しているプログラムを前記ユーザプログラム実行手段が呼び出したときに異常制御を実行する異常制御実行手段(例えば、図21に示す部分)と、
込が許可されているときに、該割込にもとづいて割込プログラムに従った処理を実行する割込処理実行手段(例えば、図8及び図9に示す部分)と、
前記記憶手段における割込プログラムのアドレスを記憶可能な記憶領域を有するアドレス記憶手段(例えば、図13に示す部分)と、
前記アドレス記憶手段の記憶領域で記憶しているアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定する判定手段(例えば、図22に示す部分)と、
割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する起動制限手段(例えば、図22に示す部分)とを備え、
前記所定の範囲は、少なくともユーザプログラムが記憶されている領域のアドレスを含む(例えば、図22に示す部分)。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
マイクロコンピュータは乱数値となる数値データを生成する乱数回路(例えば、乱数回路212)を備え、
前記乱数回路は、
数値更新手段と、
所定信号の入力にもとづいて前記数値更新手段から出力された数値データを乱数値として取り込んで格納する乱数値格納手段と、
前記乱数値格納手段に乱数値が格納されているときに所定信号の入力があったときは新たな数値データを前記乱数値格納手段に乱数値として取り込んで格納することを可能にする第1設定と、前記乱数値格納手段に乱数値が格納されているときに所定信号の入力があったときは新たな数値データを前記乱数値格納手段に乱数値として取り込んで格納することを不能にする第2設定とのいずれかに設定する乱数値格納設定手段(例えば、[乱数の動作]に示す部分)とを備えた。
この構成によれば、意図しない乱数値を取り込むことを防止することができる。
マイクロコンピュータは、
乱数値となる数値データを生成する乱数回路(例えば、乱数回路212)と、
乱数回路に関する設定を記憶可能な記憶領域を有する設定内容記憶手段(例えば、図12に示す部分)と、
前記マイクロコンピュータの起動時に、前記設定内容記憶手段の記憶領域の少なくとも一部に初期設定内容を示す初期値を設定する初期値設定手段(例えば、図23に示す部分)とを備えた。
この構成によれば、意図しない設定で乱数値となる数値データが更新されることを防止することができる。
マイクロコンピュータは、
前記マイクロコンピュータの起動時にユーザプログラムが記憶されている記憶領域を設定する記憶領域設定手段(例えば、図16に示すプログラムエンドアドレスの設定)と、
前記記憶領域設定手段が記憶した記憶領域で記憶しているユーザプログラムに従った処理を実行するユーザプログラム実行手段(例えば、CPU207)と、
前記記憶領域設定手段が設定した記憶領域以外の領域で記憶しているプログラムを前記ユーザプログラム実行手段が呼び出したときに異常制御を実行する異常制御実行手段。(例えば、図21に示す部分)とを備え、
所定の範囲は、少なくともユーザプログラムが記憶されている領域のアドレスを含む(例えば、図22に示す部分)。
この構成によれば、不正なプログラムの実行を防止することができる。
マイクロコンピュータは、
マイクロコンピュータが起動したときに割込を禁止する起動時割込禁止手段(例えば、図5のSa1の処理を行う部分)と、
ユーザプログラムに従った処理を実行するユーザプログラム実行手段(例えば、CPU207)と、
ユーザプログラム実行手段がユーザプログラムに従った処理の実行を開始した後で割込許可手段が割込に関する設定を実行する前に割込を禁止する処理を実行する設定前割込禁止手段(例えば、図5のSa16a、Sa20a、Sa26aの前にSa1の処理を行う部分)とを備えた。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
マイクロコンピュータは、
マイクロコンピュータの起動時に参照され、かつマイクロコンピュータの機能を設定するためのデータを記憶可能な記憶領域を有するデータ記憶手段(例えば、図12、図14に示す部分)と、
前記データ記憶手段の記憶領域に該データを設定するデータ設定手段(例えば、CPU207)とを備え、
前記データ記憶手段の記憶領域は、該記憶領域に設定された値にもとづいて前記データ設定手段がいずれの機能も設定しない未使用領域を(例えば、乱数回路動作モード設定(関係するシンボル名:HRDMD)においてHEDMDのビット3、システム設定(関係するシンボル名:HSYSCNT)においてHSYSCNTのビット5〜7)含み、
起動制限手段は未使用領域に特定の値が設定されているときにマイクロコンピュータの起動を制限する(例えば、図22に示す部分)。
この構成によれば、意図しない設定がなされることを防止することができる。
上記課題を解決するために、本発明の遊技機は、
遊技を行うことが可能な遊技機(例えば、スロットマシン1)において、
プログラムを記憶する記憶手段(例えば、ROM208)と、
該記憶手段に記憶されたプログラムに従った処理を実行するマイクロコンピュータ(例えば、図11に示す部分)と、を備え、
プログラムは、割込の発生に応じて実行される割込プログラム(例えば、図12に示す部分)を含み、
前記マイクロコンピュータは、
割込に関する設定を行う処理を実行した後に割込を許可する処理を実行する割込許可手段(例えば、図5及び図6に示す部分)と、
割込が許可されているときに、該割込にもとづいて割込プログラムに従った処理を実行する割込処理実行手段(例えば、図8及び図9に示す部分)と、
前記記憶手段における割込プログラムのアドレスを記憶可能な記憶領域を有するアドレス記憶手段(例えば、図13に示す部分)と、
前記アドレス記憶手段の記憶領域で記憶しているアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定する判定手段(例えば、図22に示す部分)と、
割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する起動制限手段(例えば、図22に示す部分)とを備えた。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
割込許可手段は、割込に関する設定として、所定周期で発生する割込についての時間間隔を指定するとともに、該時間間隔を計測するタイマを初期値から動作開始させる設定を実行する(例えば、図27及び図28に示す部分)。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
マイクロコンピュータは、
割込に関する設定を記憶可能な記憶領域を有する設定内容記憶手段(例えば、図34〜図36に示す部分)と、
前記マイクロコンピュータの起動時に、前記設定内容記憶手段の記憶領域の少なくとも一部に初期設定内容を示す初期値を設定する初期値設定手段(例えば、図23及び図32に示す部分)とを備えた。
この構成によれば、意図しない設定で割込処理が実行されることを事前に防止することができる。
上記課題を解決するために、本発明の遊技機は、
遊技を行うことが可能な遊技機(例えば、スロットマシン1)において、
プログラムを記憶する記憶手段(例えば、ROM208)と、
該記憶手段に記憶されたプログラムに従った処理を実行するマイクロコンピュータ(例えば、図11に示す部分)と、を備え、
プログラムは、割込の発生に応じて実行される割込プログラム(例えば、図12に示す部分)を含み、
前記マイクロコンピュータは、
割込が許可されているときに、該割込にもとづいて割込プログラムに従った処理を実行する割込処理実行手段(例えば、図8及び図9に示す部分)と、
プログラムに従った処理の実行に応じて変動する変動データを記憶する変動データ記憶手段(例えば、RAM41c)と、
初期化条件が成立したときに前記変動データ記憶手段の記憶内容の少なくとも一部を初期化する初期化処理を実行する初期化処理実行手段(例えば、図5及び図6の処理を行う部分)と、
前記初期化処理を実行しているときに割込を禁止する割込禁止手段(例えば、図5のSa1の処理を行う部分)と、
前記記憶手段における割込プログラムのアドレスを記憶可能な記憶領域を有するアドレス記憶手段(例えば、図13に示す部分)と、
前記アドレス記憶手段の記憶領域で記憶しているアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定する判定手段(例えば、図22に示す部分)と、
割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する起動制限手段(例えば、図22に示す部分)とを備えた。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
所定の記憶領域は未使用領域(例えば、図19に示す部分)を含み、
初期化条件として複数の条件(例えば、初期化1〜4の条件)を設定し、
データ制御手段は、成立した初期化条件の種類に応じて未使用領域を含む該記憶領域のデータを初期化する(例えば、[初期化について]で示す部分)。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
マイクロコンピュータは、外部にデータを出力するためのデータ出力処理を実行する外部データ出力処理手段(例えば、メイン制御部41)を備え、
割込禁止手段は、外部データ出力処理手段がデータ出力処理を実行しているときに割込を禁止する(例えば、図10のSm3の前に割込禁止を実行する部分)。
この構成によれば、意図しないデータが出力されることを防止することができる。
上記課題を解決するために、本発明の遊技機は、
遊技を行うことが可能な遊技機(例えば、スロットマシン1)において、
プログラムを記憶する記憶手段(例えば、ROM208)と、
該記憶手段に記憶されたプログラムに従った処理を実行するマイクロコンピュータ(例えば、図11に示す部分)と、を備え、
プログラムは、割込の発生に応じて実行される割込プログラム(例えば、図12に示す部分)を含み、
前記マイクロコンピュータは、
割込が許可されているときに、該割込にもとづいて割込プログラムに従った処理を実行する割込処理実行手段(例えば、図8及び図9に示す部分)と、
遊技機への電力供給が停止したときに、前記マイクロコンピュータによる処理の実行状態をバックアップするための電力供給停止時処理を実行する電力供給停止時処理手段(例えば、[変形例]に示す部分)と、
バックアップされた処理の実行状態にもとづいてプログラムに従った処理の実行を再開する復旧手段(例えば、[変形例]に示す部分)と、
前記記憶手段における割込プログラムのアドレスを記憶可能な記憶領域を有するアドレス記憶手段(例えば、図13に示す部分)と、
前記アドレス記憶手段の記憶領域で記憶しているアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定する判定手段(例えば、図22に示す部分)と、
割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する起動制限手段(例えば、図22に示す部分)とを備え、
前記電力供給停止時処理において割込が許可されているか否かを示す情報をバックアップし、前記復旧手段により処理の実行を再開するときに、バックアップされた情報にもとづいて割込を許可するか否かが設定される(例えば、[変形例]に示す部分)。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
プログラムは、電力供給停止信号の入力にもとづいて割込を禁止できないマスク不能割込の発生に応じて実行されるマスク不能割込プログラム(例えば、図12〜図15のNMI割込に関する部分)を含み、
マイクロコンピュータは、マスク不能割込が発生したときに、マスク不能割込プログラムに従った処理を実行するマスク不能割込処理実行手段(例えば、図12〜図15、図32、図34で示すNMI割込に関する部分、[変形例]に示す部分)を備え、
電力供給停止時処理は、マスク不能割込プログラムに従った処理(例えば、[変形例]に示す部分)を含み、
アドレス記憶手段の記憶領域は、マスク不能割込プログラムのアドレス(例えば、図13に示す部分)を含み、
判定手段は、前記アドレス記憶手段の記憶領域で記憶しているマスク不能割込プログラムのアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定し(例えば、[変形例]に示す部分)、
起動制限手段は、マスク不能割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する(例えば、[変形例]に示す部分)。
この構成によれば、意図しない割込処理が実行されることを事前に防止することができる。
プログラムは、電力供給停止信号の入力にもとづいて割込を禁止できないマスク不能割込の発生に応じて実行されるマスク不能割込プログラム(例えば、図12〜図15のNMI割込に関する部分)を含み、
マイクロコンピュータは、マスク不能割込が発生したときに、マスク不能割込プログラムに従った処理を実行するマスク不能割込処理実行手段(例えば、[変形例]に示す部分)を備え、
電力供給停止時処理は、マスク不能割込プログラムに従った処理(例えば、[変形例]に示す部分)を含み、
マスク不能割込の発生条件が成立してマスク不能割込が発生するまでの期間は、割込の発生条件が成立して割込が発生するまでの期間よりも短い(例えば、[変形例]に示す部分)。
この構成によれば、電力供給停止時処理を好適に実行することができる。
なお、本発明は、本発明の請求項に記載された発明特定事項のみを有するものであって良いし、本発明の請求項に記載された発明特定事項とともに該発明特定事項以外の構成を有するものであっても良い。
本発明を適用したスロットマシンの正面図である。 スロットマシンの内部構造図である。 リールの図柄配列を示す図である。 スロットマシンの構成を示すブロック図である。 メイン制御部が起動時に実行する初期設定処理の制御内容を示すフローチャートである。 メイン制御部が起動時に実行する初期設定処理の制御内容を示すフローチャートである。 メイン制御部が設定変更処理後に実行するゲーム処理の制御内容を示すフローチャートである。 メイン制御部が一定間隔毎に実行するタイマ割込処理(メイン)の制御内容を示すフローチャートである。 メイン制御部が一定間隔毎に実行するタイマ割込処理(メイン)の制御内容を示すフローチャートである。 メイン制御部がタイマ割込処理(メイン)において電断を検出したことに応じて実行する電断処理(メイン)の制御内容を示すフローチャートである。 マイクロコンピュータの構成を示すブロック図である。 メモリ空間のアドレスマップを示す説明図である。 ベクタテーブルアドレスマップを示す説明図である。 HW(ハードウェア)パラメータの一覧を示す説明図である。 リセット期間/INP端子設定を示す説明図である。 プログラムエンドアドレスの内容を示す説明図である。 プログラムエンドアドレスの設定例を示す説明図である。 RAMアクセス禁止アドレスを示す説明図である。 RAMアクセス禁止アドレスの設定例を示す説明図である。 SWステータスを示す説明図である。 イリーガルアクセスリセットが発生する条件を示す説明図である。 マイクロコンピュータの起動しない条件を示す説明図である。 マイクロコンピュータのリセット要因による動作の変化を示す説明図である。 内部機能レジスタの一覧を示す説明図である。 RAMプロテクトレジスタの内容を示す説明図である。 CTC用クロックの入力例を示す説明図である。 CTCコントロールレジスタの内容を示す説明図である。 CTCデータレジスタの内容を示す説明図である。 WDTのクリア方法を示す説明図である。 WDTコントロールレジスタを示す説明図である。 WDTクリアレジスタを示す説明図である。 割込コントローラのブロック図である。 割込処理手順の例を示す説明図である。 割込要求レジスタの内容を示す説明図である。 割込許可レジスタの内容を示す説明図である。 割込優先順位レジスタの内容を示す説明図である。 外部信号入力/リセット要因レジスタの内容を示す説明図である。 定期リセットモニタレジスタを示す説明図である。 レジスタ構成を示す説明図である。 プログラムステータスワードを示す説明図である。 SP(スタックポインタ)の値の変化を示す説明図である。
[スロットマシンの構成例]
図1に示すように、本実施の形態のスロットマシン1は、前面が開口する筐体1aと、この筐体1aの側端に回動自在に枢支された前面扉1bと、から構成されている。
図2に示すように、本実施の形態のスロットマシン1の筐体1aの内部には、外周に複数種の図柄が配列されたリール2L、2C、2R(以下、左リール、中リール、右リール)が水平方向に並設されており、図1に示すように、これらリール2L、2C、2Rに配列された図柄のうち連続する3つの図柄が前面扉1bに設けられた透視窓3から見えるように配置されている。
図3に示すように、リール2L、2C、2Rの外周部には、それぞれ「黒7」、「網7(図中網掛け7)」、「白7」、「BAR」、「リプレイ」、「プラム」、「スイカ」、「チェリー」、「ベル」、「オレンジ」といった互いに識別可能な複数種類の図柄が所定の順序で、それぞれ21個ずつ描かれている。リール2L、2C、2Rの外周部に描かれた図柄は、前面扉1bのリールパネル1c略中央に設けられた透視窓3において各々上中下三段に表示される。
各リール2L、2C、2Rは、各々対応して設けられリールモータ32L、32C、32R(図4参照)によって回転させることで、各リール2L、2C、2Rの図柄が透視窓3に連続的に変化しつつ表示されるとともに、各リール2L、2C、2Rの回転を停止させることで、透視窓3に3つの連続する図柄が表示結果として導出表示されるようになっている。
リール2L、2C、2Rの内側には、リール2L、2C、2Rそれぞれに対して、基準位置を検出するリールセンサ33L、33C、33Rと、リール2L、2C、2Rを背面から照射するリールLED55と、が設けられている。また、リールLED55は、リール2L、2C、2Rの連続する3つの図柄に対応する12のLEDからなり、各図柄をそれぞれ独立して照射可能とされている。
前面扉1bにおける各リール2L,2C,2Rに対応する位置には、リール2L,2C,2Rを前面側から透視可能とする横長長方形状の透視窓3が設けられており、該透視窓3を介して遊技者側から各リール2L,2C,2Rが視認できるようになっている。
前面扉1bには、メダルを投入可能なメダル投入部4、メダルが払い出されるメダル払出口9、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いて、その範囲内において遊技状態に応じて定められた規定数の賭数のうち最大の賭数(本実施の形態ではいずれの遊技状態においても3)を設定する際に操作されるMAXBETスイッチ6、クレジットとして記憶されているメダルおよび賭数の設定に用いたメダルを精算する(クレジットおよび賭数の設定に用いた分のメダルを返却させる)際に操作される精算スイッチ10、ゲームを開始する際に操作されるスタートスイッチ7、リール2L、2C、2Rの回転を各々停止する際に操作されるストップスイッチ8L、8C、8R、演出に用いるための演出用スイッチ56が遊技者により操作可能にそれぞれ設けられている。
なお、本実施の形態では、回転を開始した3つのリール2L、2C、2Rのうち、最初に停止するリールを第1停止リールと称し、また、その停止を第1停止、その停止操作を第1停止操作(または第1停止)と称する。同様に、2番目に停止するリールを第2停止リールと称し、また、その停止を第2停止、その停止操作を第2停止操作(または第2停止)と称する。また、3番目に停止するリールを第3停止リールと称し、また、その停止を第3停止あるいは最終停止、その停止操作を第3停止操作(または第3停止)と称する。
また、前面扉1bには、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器11、入賞の発生により払い出されたメダル枚数やエラー発生時にその内容を示すエラーコード等が表示される遊技補助表示器12、賭数が1設定されている旨を点灯により報知する1BETLED14、賭数が2設定されている旨を点灯により報知する2BETLED15、賭数が3設定されている旨を点灯により報知する3BETLED16、メダルの投入が可能な状態を点灯により報知する投入要求LED17、スタートスイッチ7の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効LED18、ウェイト(前回のゲーム開始から一定期間経過していないためにリールの回転開始を待機している状態)中である旨を点灯により報知するウェイト中LED19、後述するリプレイゲーム中である旨を点灯により報知するリプレイ中LED20が設けられた遊技用表示部13が設けられている。
MAXBETスイッチ6の内部には、MAXBETスイッチ6の操作による賭数の設定操作が有効である旨を点灯により報知するBETスイッチ有効LED21(図4参照)が設けられており、ストップスイッチ8L、8C、8Rの内部には、該当するストップスイッチ8L、8C、8Rによるリールの停止操作が有効である旨を点灯により報知する左、中、右停止有効LED22L、22C、22R(図4参照)がそれぞれ設けられている。
また、前面扉1bにおけるストップスイッチ8L、8C、8Rの下方には、スロットマシン1のタイトルや後述する配当表1などが印刷された下部パネル1dが設けられている。
前面扉1bの内側には、所定のキー操作により後述するエラー状態および後述する打止状態を解除するためのリセット操作を検出するリセットスイッチ23、後述する設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器24、後述のBB終了時に打止状態(リセット操作がなされるまでゲームの進行が規制される状態)に制御する打止機能の有効/無効を選択するための打止スイッチ36a、後述のBB終了時に自動精算処理(クレジットとして記憶されているメダルを遊技者の操作によらず精算(返却)する処理)に制御する自動精算機能の有効/無効を選択するための自動精算スイッチ36b、メダル投入部4から投入されたメダルの流路を、筐体1a内部に設けられた後述のホッパータンク34a(図2参照)側またはメダル払出口9側のいずれか一方に選択的に切り替えるための流路切替ソレノイド30、メダル投入部4から投入され、ホッパータンク34a側に流下したメダルを検出する投入メダルセンサ31を有するメダルセレクタ(図示略)、前面扉1bの開放状態を検出するドア開放検出スイッチ25(図4参照)が設けられている。
図2に示すように、筐体1a内部には、前述したリール2L、2C、2R、リールモータ32L、32C、32R、各リール2L、2C、2Rのリール基準位置をそれぞれ検出可能なリールセンサ33L、33C、33R(図4参照)からなるリールユニット2、外部出力信号を出力するための外部出力基板1000、メダル投入部4から投入されたメダルを貯留するホッパータンク34a、ホッパータンク34aに貯留されたメダルをメダル払出口9より払い出すためのホッパーモータ34b、ホッパーモータ34bの駆動により払い出されたメダルを検出する払出センサ34cからなるホッパーユニット34、電源ボックス100が設けられている。
ホッパーユニット34の側部には、ホッパータンク34aから溢れたメダルが貯留されるオーバーフロータンク35が設けられている。オーバーフロータンク35の内部には、貯留された所定量のメダルを検出可能な高さに設けられた左右に離間する一対の導電部材からなる満タンセンサ35aが設けられており、導電部材がオーバーフロータンク35内に貯留されたメダルを介して接触することにより導電したときに内部に貯留されたメダル貯留量が所定量以上となったこと、すなわちオーバーフロータンクが満タン状態となったことを検出できるようになっている。
電源ボックス100の前面には、設定変更状態または設定確認状態に切り替えるための設定キースイッチ37、通常時においてはエラー状態や打止状態を解除するためのリセットスイッチとして機能し、設定変更状態においては後述する内部抽選の当選確率(出玉率)の設定値を変更するための設定スイッチとして機能するリセット/設定スイッチ38、電源をon/offする際に操作される電源スイッチ39が設けられている。
本実施の形態のスロットマシン1においてゲームを行う場合には、まず、メダルをメダル投入部4から投入するか、あるいはクレジットを使用して賭数を設定する。クレジットを使用するにはMAXBETスイッチ6を操作すれば良い。遊技状態に応じて定められた規定数の賭数が設定されると、入賞ラインLN(図1参照)が有効となり、スタートスイッチ7の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。本実施の形態では、規定数の賭数として遊技状態に関わらず3枚が定められて規定数の賭数が設定されると入賞ラインLNが有効となる。なお、遊技状態に対応する規定数のうち最大数を超えてメダルが投入された場合には、その分はクレジットに加算される。
入賞ラインとは、各リール2L、2C、2Rの透視窓3に表示された図柄の組み合わせが入賞図柄の組み合わせであるかを判定するために設定されるラインである。本実施の形態では、図1に示すように、リール2Lの中段、リール2Cの中段、リール2Rの中段、すなわち中段に水平方向に並んだ図柄に跨って設定された入賞ラインLNのみが入賞ラインとして定められている。なお、本実施の形態では、1本の入賞ラインのみを適用しているが、複数の入賞ラインを適用しても良い。
また、本実施の形態では、入賞ラインLNに入賞を構成する図柄の組み合わせが揃ったことを認識しやすくするために、入賞ラインLNとは別に、無効ラインLM1〜4を設定している。無効ラインLM1〜4は、これら無効ラインLM1〜4に揃った図柄の組み合わせによって入賞が判定されるものではなく、入賞ラインLNに特定の入賞を構成する図柄の組み合わせが揃った際に、無効ラインLM1〜4のいずれかに入賞ラインLNに揃った場合に入賞となる図柄の組み合わせ(例えば、ベル−ベル−ベル)が揃う構成とすることで、入賞ラインLNに特定の入賞を構成する図柄の組み合わせが揃ったことを認識しやすくするものである。本実施の形態では、図1に示すように、リール2Lの上段、リール2Cの上段、リール2Rの上段、すなわち上段に水平方向に並んだ図柄に跨って設定された無効ラインLM1、リール2Lの下段、リール2Cの下段、リール2Rの下段、すなわち下段に水平方向に並んだ図柄に跨って設定された無効ラインLM2、リール2Lの上段、リール2Cの中段、リール2Rの下段、すなわち右下がりに並んだ図柄に跨って設定された無効ラインLM3、リール2Lの下段、リール2Cの中段、リール2Rの上段、すなわち右上がりに並んだ図柄に跨って設定された無効ラインLM4の4種類が無効ラインLMとして定められている。
ゲームが開始可能な状態でスタートスイッチ7を操作すると、各リール2L、2C、2Rが回転し、各リール2L、2C、2Rの図柄が連続的に変動する。この状態でいずれかのストップスイッチ8L、8C、8Rを操作すると、対応するリール2L、2C、2Rの回転が停止し、透視窓3に表示結果が導出表示される。
そして全てのリール2L、2C、2Rが停止されることで1ゲームが終了し、入賞ラインLNに予め定められた図柄の組み合わせ(以下、役とも呼ぶ)が各リール2L、2C、2Rの表示結果として停止した場合には入賞が発生し、その入賞に応じて定められた枚数のメダルが遊技者に対して付与され、クレジットに加算される。また、クレジットが上限数(本実施の形態では50)に達した場合には、メダルが直接メダル払出口9(図1参照)から払い出されるようになっている。また、入賞ラインLNに、遊技状態の移行を伴う図柄の組み合わせが各リール2L、2C、2Rの表示結果として停止した場合には図柄の組み合わせに応じた遊技状態に移行するようになっている。
なお、本実施形態では、スタートスイッチ7の操作が有効な状態でスタートスイッチ7の操作が検出されたときにゲームが開始し、全てのリールが停止したときにゲームが終了する。また、ゲームを実行するための1単位の制御(ゲーム制御)は、前回のゲームの終了に伴う全ての制御が完了したときに開始し、当該ゲームの終了に伴う全ての制御が完了したときに終了する。
また、本実施の形態におけるスロットマシン1にあっては、ゲームが開始されて各リール2L、2C、2Rが回転して図柄の変動が開始した後、いずれかのストップスイッチ8L、8C、8Rが操作されたときに、当該ストップスイッチ8L、8C、8Rに対応するリールの回転が停止して図柄が停止表示される。ストップスイッチ8L、8C、8Rの操作から対応するリール2L、2C、2Rの回転を停止するまでの最大停止遅延時間は190ms(ミリ秒)である。
リール2L、2C、2Rは、1分間に80回転し、80×21(1リール当たりの図柄コマ数)=1680コマ分の図柄を変動させるので、190msの間では最大で4コマの図柄を引き込むことができることとなる。つまり、停止図柄として選択可能なのは、ストップスイッチ8L、8C、8Rが操作されたときに表示されている図柄と、そこから4コマ先までにある図柄、合計5コマ分の図柄である。
このため、例えば、ストップスイッチ8L、8C、8Rのいずれかが操作されたときに当該ストップスイッチに対応するリールの下段に表示されている図柄を基準とした場合、当該図柄から4コマ先までの図柄を下段に表示させることができるため、リール2L、2C、2R各々において、ストップスイッチ8L、8Rのうちいずれかが操作されたときに当該ストップスイッチに対応するリールの中段に表示されている図柄を含めて5コマ以内に配置されている図柄を入賞ラインLNに表示させることができる。
図4は、スロットマシン1の構成を示すブロック図である。スロットマシン1には、図4に示すように、遊技制御基板40、演出制御基板90、電源基板101が設けられており、遊技制御基板40によって遊技状態が制御され、演出制御基板90によって遊技状態に応じた演出が制御され、電源基板101によってスロットマシン1を構成する電気部品の駆動電源が生成され、各部に供給される。
電源基板101には、外部からAC100Vの電源が供給されるとともに、このAC100Vの電源からスロットマシン1を構成する電気部品の駆動に必要な直流電圧が生成され、遊技制御基板40および遊技制御基板40を介して接続された演出制御基板90に供給されるようになっている。また、後述するメイン制御部41からサブ制御部91へのコマンド伝送ラインと、遊技制御基板40から演出制御基板90に対して電源を供給する電源供給ラインと、が一系統のケーブルおよびコネクタを介して接続されており、これらケーブルと各基板とを接続するコネクタ同士が全て接続されることで演出制御基板90側の各部が動作可能となり、かつメイン制御部41からのコマンドを受信可能な状態となる。このため、メイン制御部41からコマンドを伝送するコマンド伝送ラインが演出制御基板90に接続されている状態でなければ、演出制御基板90側に電源が供給されず、演出制御基板90側のみが動作してしまうことがない。
また、電源基板101には、前述したホッパーモータ34b、払出センサ34c、満タンセンサ35a、設定キースイッチ37、リセット/設定スイッチ38、電源スイッチ39が接続されている。
遊技制御基板40には、前述したMAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8R、精算スイッチ10、リセットスイッチ23、打止スイッチ36a、自動精算スイッチ36b、投入メダルセンサ31、ドア開放検出スイッチ25、リールセンサ33L、33C、33Rが接続されているとともに、電源基板101を介して前述した払出センサ34c、満タンセンサ35a、設定キースイッチ37、リセット/設定スイッチ38が接続されており、これら接続されたスイッチ類の検出信号が入力されるようになっている。
また、遊技制御基板40には、前述したクレジット表示器11、遊技補助表示器12、ペイアウト表示器13、1〜3BETLED14〜16、投入要求LED17、スタート有効LED18、ウェイト中LED19、リプレイ中LED20、BETスイッチ有効LED21、左、中、右停止有効LED22L、22C、22R、設定値表示器24、流路切替ソレノイド30、リールモータ32L、32C、32Rが接続されているとともに、電源基板101を介して前述したホッパーモータ34bが接続されており、これら電気部品は、遊技制御基板40に搭載された後述のメイン制御部41の制御に基づいて駆動されるようになっている。
遊技制御基板40には、メイン制御部41、乱数発生回路42、サンプリング回路43、スイッチ検出回路44、モータ駆動回路45、ソレノイド駆動回路46、LED駆動回路47、電断検出回路48、リセット回路49が搭載されている。
メイン制御部41は、1チップマイクロコンピュータにて構成され、メインCPU41a、ROM41b、RAM41c、I/Oポート41d、乱数発生回路42を備えている。メイン制御部41は、ROM41bに記憶されたプログラムを実行して、遊技の進行に関する処理を行うととともに、遊技制御基板40に搭載された制御回路の各部を直接的または間接的に制御する。
乱数発生回路42は、所定数のパルスを発生するたびにカウントアップして値を更新するカウンタによって構成され、サンプリング回路43は、乱数発生回路42がカウントしている数値を取得する。乱数発生回路42は、乱数の種類毎にカウントする数値の範囲が定められており、本実施の形態では、その範囲として0〜65535が定められている。メインCPU41aは、その処理に応じてサンプリング回路43に指示を送ることで、乱数発生回路42が示している数値を乱数値として取得する(以下、この機能をハードウェア乱数機能という)。後述する内部抽選用の乱数は、ハードウェア乱数機能により抽出した乱数をそのまま使用するのではなく、ソフトウェアにより加工して使用する。また、メインCPU41aは、前述のタイマ割込処理(メイン)により、特定のレジスタの値を更新し、こうして更新された数値を乱数として取得する機能も有する(以下、この機能をソフトウェア乱数機能という)。
スイッチ検出回路44は、遊技制御基板40に直接または電源基板101を介して接続されたスイッチ類から入力された検出信号を取り込んでメイン制御部41に伝送する。モータ駆動回路45は、メイン制御部41から出力されたモータ駆動信号をリールモータ32L、32C、32Rに伝送する。ソレノイド駆動回路46は、メイン制御部41から出力されたソレノイド駆動信号を流路切替ソレノイド30に伝送する。LED駆動回路は、メイン制御部41から出力されたLED駆動信号を遊技制御基板40に接続された各種表示器やLEDに伝送する。電断検出回路48は、スロットマシン1に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をメイン制御部41に対して出力する。リセット回路49は、電源投入時または電源遮断時などの電源が不安定な状態においてメイン制御部41にシステムリセット信号を与える。
メイン制御部41のCPU41aは、ROMから読み出したプログラムを実行することにより、スロットマシン1におけるゲームの進行を制御するための処理などを実行する。
このように、メイン制御部41では、CPU41aがROM41bに格納されているプログラムにしたがって制御を実行するので、以下、メイン制御部41(又はCPU41a)が実行する(又は処理を行う)ということは、具体的には、CPU41aがプログラムにしたがって制御を実行することである。このことは、遊技制御基板40以外の他の基板に搭載されているマイクロコンピュータについても同様である。
メイン制御部41が備えるRAM41cは、ゲーム制御用のワークエリアを提供する。ここで、RAM41cの少なくとも一部は、バックアップ電源によってバックアップされているバックアップRAMであれば良い。すなわち、スロットマシンへの電力供給が停止しても、所定期間はRAM41cの少なくとも一部の内容が保存される。なお、本実施の形態では、RAM41cの全ての領域がバックアップRAMとされており、スロットマシンへの電力供給が停止しても、所定期間はRAM41cの全ての内容が保存される。
メイン制御部41が備えるROM41bには、ゲームの進行を制御するために用いられる各種の選択用データ、テーブルデータなどが格納される。例えば、ROM41bには、CPU41aが各種の判定や決定、設定を行うために用意された複数の判定テーブルや決定テーブル、設定テーブルなどを構成するデータが記憶されている。また、ROM41bには、CPU41aが遊技制御基板40から各種の制御コマンドとなる制御信号を送信するために用いられる複数のコマンドテーブルを構成するテーブルデータなどが記憶されている。
メイン制御部41が備えるRAM41cには、スロットマシン1におけるゲームの進行などを制御するために用いられる各種のデータを保持する領域として、遊技制御用データ保持エリアが設けられている。RAM41cとしては、例えばDRAMが使用されており、記憶しているデータ内容を維持するためのリフレッシュ動作が必要になる。CPU41aには、このリフレッシュ動作を行うためのリフレッシュレジスタが内蔵されている。例えば、リフレッシュレジスタは8ビットからなり、そのうち下位7ビットはCPU41aがROM41bから命令フェッチするごとに自動的にインクリメントされる。したがって、リフレッシュレジスタにおける格納値の更新は、CPU41aにおける1命令の実行時間ごとに行われることになる。
メイン制御部41は、サブ制御部91に各種のコマンドを送信する。メイン制御部41からサブ制御部91へ送信されるコマンドは一方向のみで送られ、サブ制御部91からメイン制御部41へ向けてコマンドが送られることはない。
メイン制御部41は、遊技制御基板40に接続された各種スイッチ類の検出状態が入力ポートから入力される。そしてメイン制御部41は、これら入力ポートから入力される各種スイッチ類の検出状態に応じて段階的に移行する基本処理を実行する。
また、メイン制御部41は、割込の発生により基本処理に割り込んで割込処理を実行できるようになっている。本実施の形態では、一定時間間隔(本実施の形態では、約0.56ms)毎に後述するタイマ割込処理(メイン)を実行する。
また、メイン制御部41は、割込処理の実行中に他の割込を禁止するように設定されているとともに、複数の割込が同時に発生した場合には、予め定められた順位によって優先して実行する割込が設定されている。なお、割込処理の実行中に他の割込要因が発生し、割込処理が終了してもその割込要因が継続している状態であれば、その時点で新たな割込が発生することとなる。
演出制御基板90には、演出用スイッチ56が接続されており、この演出用スイッチ56の検出信号が入力されるようになっている。
演出制御基板90には、スロットマシン1の前面扉1bに配置された液晶表示器51(図1参照)、演出効果LED52、スピーカ53、54、前述したリールLED55等の演出装置が接続されており、これら演出装置は、演出制御基板90に搭載された後述のサブ制御部91による制御に基づいて駆動されるようになっている。
なお、本実施の形態では、演出制御基板90に搭載されたサブ制御部91により、液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55等の演出装置の出力制御が行われる構成であるが、サブ制御部91とは別に演出装置の出力制御を直接的に行う出力制御部を演出制御基板90または他の基板に搭載し、サブ制御部91がメイン制御部41からのコマンドに基づいて演出装置の出力パターンを決定し、サブ制御部91が決定した出力パターンに基づいて出力制御部が演出装置の出力制御を行う構成としても良く、このような構成では、サブ制御部91および出力制御部の双方によって演出装置の出力制御が行われることとなる。
また、本実施の形態では、演出装置として液晶表示器51、演出効果LED52、スピーカ53、54、リールLED55を例示しているが、演出装置は、これらに限られず、例えば、機械的に駆動する表示装置や機械的に駆動する役モノなどを演出装置として適用しても良い。
演出制御基板90には、メイン制御部41と同様にサブCPU91a、ROM91b、RAM91c、I/Oポート91dを備えたマイクロコンピュータにて構成され、演出の制御を行うサブ制御部91、演出制御基板90に接続された液晶表示器51の表示制御を行う表示制御回路92、演出効果LED52、リールLED55の駆動制御を行うLED駆動回路93、スピーカ53、54からの音声出力制御を行う音声出力回路94、電源投入時またはサブCPU91aからの初期化命令が一定時間入力されないときにサブCPU91aにリセット信号を与えるリセット回路95、演出制御基板90に接続された演出用スイッチ56から入力された検出信号を検出するスイッチ検出回路96、日付情報および時刻情報を含む時間情報を出力する時計装置97、スロットマシン1に供給される電源電圧を監視し、電圧低下を検出したときに、その旨を示す電圧低下信号をサブCPU91aに対して出力する電断検出回路98、その他の回路等、が搭載されており、サブCPU91aは、遊技制御基板40から送信されるコマンドを受けて、演出を行うための各種の制御を行うとともに、演出制御基板90に搭載された制御回路の各部を直接的または間接的に制御する。
リセット回路95は、遊技制御基板40においてメイン制御部41にシステムリセット信号を与えるリセット回路49よりもリセット信号を解除する電圧が低く定められており、電源投入時においてサブ制御部91は、メイン制御部41よりも早い段階で起動するようになっている。一方で、電断検出回路98は、遊技制御基板40においてメイン制御部41に電圧低下信号を出力する電断検出回路48よりも電圧低下信号を出力する電圧が低く定められており、電断時においてサブ制御部91は、メイン制御部41よりも遅い段階で停電を検知し、後述する電断処理(サブ)を行うこととなる。
サブ制御部91は、メイン制御部41と同様に、割込機能を備えており、メイン制御部41からのコマンド受信時に割込を発生させて、メイン制御部41から送信されたコマンドを取得し、バッファに格納するコマンド受信割込処理を実行する。また、サブ制御部91は、システムクロックの入力数が一定数に到達する毎、すなわち一定間隔毎に割込を発生させて後述するタイマ割込処理(サブ)を実行する。
また、サブ制御部91は、メイン制御部41とは異なり、コマンドの受信に基づいて割込が発生した場合には、タイマ割込処理(サブ)の実行中であっても、当該処理に割り込んでコマンド受信割込処理を実行し、タイマ割込処理(サブ)の契機となる割込が同時に発生してもコマンド受信割込処理を最優先で実行するようになっている。
また、サブ制御部91にも、停電時においてバックアップ電源が供給されており、バックアップ電源が供給されている間は、RAM91cに記憶されているデータが保持されるようになっている。すなわち、スロットマシンへの電力供給が停止しても、所定期間はRAM91cの少なくとも一部の内容が保存される。なお、本実施の形態では、RAM91cの全ての領域がバックアップRAMとされており、スロットマシンへの電力供給が停止しても、所定期間はRAM91cの全ての内容が保存される。なお、本実施の形態では、RAM91cの全ての領域がバックアップRAMとされており、スロットマシンへの電力供給が停止しても、所定期間はRAM91cの全ての内容が保存される。
[設定値について]
本実施の形態のスロットマシン1は、設定値に応じてメダルの払出率が変わるものである。詳しくは、後述する内部抽選において設定値に応じた当選確率を用いることにより、メダルの払出率が変わるようになっている。設定値は1〜6の6段階からなり、6が最も払出率が高く、5、4、3、2、1の順に値が小さくなるほど払出率が低くなる。すなわち設定値として6が設定されている場合には、遊技者にとって最も有利度が高く、5、4、3、2、1の順に値が小さくなるほど有利度が段階的に低くなる。
設定値を変更するためには、設定キースイッチ37をon状態としてからスロットマシン1の電源をonする必要がある。設定キースイッチ37をon状態として電源をonすると、設定値表示器24にRAM41cから読み出された設定値が表示値として表示され、リセット/設定スイッチ38の操作による設定値の変更操作が可能な設定変更状態に移行する。設定変更状態において、リセット/設定スイッチ38が操作されると、設定値表示器24に表示された表示値が1ずつ更新されていく(設定6からさらに操作されたときは、設定1に戻る)。そして、スタートスイッチ7が操作されると表示値を設定値として確定する。そして、設定キースイッチ37がoffされると、確定した表示値(設定値)がメイン制御部41のRAM41cに格納され、遊技の進行が可能な状態に移行する。
また、設定値を確認するためには、ゲーム終了後、賭数が設定されていない状態で設定キースイッチ37をon状態とすれば良い。このような状況で設定キースイッチ37をon状態とすると、設定値表示器24にRAM41cから読み出された設定値が表示されることで設定値を確認可能な設定確認状態に移行する。設定確認状態においては、ゲームの進行が不能であり、設定キースイッチ37をoff状態とすることで、設定確認状態が終了し、ゲームの進行が可能な状態に復帰することとなる。
本実施の形態のスロットマシン1においては、メイン制御部41は、タイマ割込処理(メイン)を実行する毎に、電断検出回路48からの電圧低下信号が検出されているか否かを判定する停電判定処理を行い、停電判定処理において電圧低下信号が検出されていると判定した場合に、電断処理(メイン)を実行する。電断処理(メイン)では、RAM41cにいずれかのビットが1となる破壊診断用データ(本実施の形態では、5AH)、すなわち0以外の特定のデータを格納するとともに、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが0となるようにRAMパリティ調整用データを計算し、RAM41cに格納する処理を行うようになっている。なお、RAMパリティとはRAM41cの該当する領域(本実施の形態では、全ての領域)の各ビットに格納されている値の排他的論理和として算出される値である。このため、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが0であれば、RAMパリティ調整用データは0となり、RAM41cの全ての領域に格納されたデータに基づくRAMパリティが1であれば、RAMパリティ調整用データは1となる。
そして、メイン制御部41は、システムリセットによるかユーザリセットによるかに関わらず、その起動時においてRAM41cの全ての領域に格納されたデータに基づいてRAMパリティを計算するとともに、破壊診断用データの値を確認し、RAMパリティが0であり、かつ破壊診断用データの値も正しいことを条件に、RAM41cに記憶されているデータに基づいてメイン制御部41の処理状態を電断前の状態に復帰させるが、RAMパリティが0でない場合(1の場合)や破壊診断用データの値が正しくない場合には、RAM異常と判定し、RAM異常エラーコードをレジスタにセットしてRAM異常エラー状態に制御し、遊技の進行を不能化させるようになっている。なお、RAM異常エラー状態は、通常のエラー状態と異なり、リセットスイッチ23やリセット/設定スイッチ38を操作しても解除されないようになっており、前述した設定変更状態において新たな設定値が設定されるまで解除されることがない。
なお、本実施の形態では、RAM41cに格納されている全てのデータが停電時においてもバックアップ電源により保持されるとともに、メイン制御部41は、電源投入時においてRAM41cのデータが正常であると判定した場合に、RAM41cの格納データに基づいて電断前の制御状態に復帰する構成であるが、RAM41cに格納されているデータのうち停電時において制御状態の復帰に必要なデータのみをバックアップし、電源投入時においてバックアップされているデータに基づいて電断前の制御状態に復帰する構成としても良い。
また、電源投入時において電断前の制御状態に復帰させる際に、全ての制御状態を電断前の制御状態に復帰させる必要はなく、遊技者に対して不利益とならない最低限の制御状態を復帰させる構成であれば良く、例えば、入力ポートの状態などを全て電断前の状態に復帰させる必要はない。
[初期化について]
次に、メイン制御部41のRAM41cの初期化について説明する。メイン制御部41のRAM41cの格納領域は、重要ワーク、非保存ワーク、一般ワーク、特別ワーク、未使用領域、スタック領域に区分されている。
重要ワークは、各種表示器やLEDの表示用データ、I/Oの入出力データ、遊技時間の計時カウンタ等、初期化すると不都合があるデータに加え、後述するRTフラグおよびRT残りゲーム数が格納されるワークである。非保存ワークは、各種スイッチ類の状態を保持するワークであり、起動時にRAM41cのデータが破壊されているか否かに関わらず必ず値が設定されることとなる。一般ワークは、停止制御テーブル、停止図柄、メダルの払出枚数、BB中のメダル払出総数、後述する遊技状態フラグ等、BB終了時に初期化可能なデータが格納されるワークである。特別ワークは、各種ソフトウェア乱数等、設定開始前にのみ初期化されるデータが格納されるワークである。未使用領域は、RAM41cの格納領域のうち使用していない領域であり、後述する複数の初期化条件のいずれか1つでも成立すれば初期化されることとなる。スタック領域は、メイン制御部41のレジスタから退避したデータが格納される領域であり、このうちの未使用スタック領域は、未使用領域と同様に、後述する複数の初期化条件のいずれか1つでも成立すれば初期化されることとなるが、使用中スタック領域は、プログラムの続行のため、初期化されることはない。
本実施の形態においてメイン制御部41は、設定キースイッチ37がonの状態での起動時、RAM異常エラー発生時、BB終了時、設定キースイッチ37がoffの状態での起動時でRAM41cのデータが破壊されていないとき、1ゲーム終了時の5つからなる初期化条件が成立した際に、各初期化条件に応じて初期化される領域の異なる4種類の初期化を行う。
初期化1は、起動時において設定キースイッチ37がonの状態であり、設定変更状態へ移行する場合において、その前に行う初期化、またはRAM異常エラー発生時に行う初期化であり、初期化1では、RAM41cの格納領域のうち、重要ワークおよび使用中スタック領域を除く全ての領域(未使用領域および未使用スタック領域を含む)、すなわち非保存ワークから未使用スタック領域までの領域が初期化される。初期化2は、BB終了時に行う初期化であり、初期化2では、RAM41cの格納領域のうち、一般ワーク、未使用領域および未使用スタック領域、すなわち一般ワークから未使用スタック領域までの領域が初期化される。初期化3は、起動時において設定キースイッチ37がoffの状態であり、かつRAM41cのデータが破壊されていない場合において行う初期化であり、初期化3では、非保存ワーク、未使用領域および未使用スタック領域が初期化される。初期化4は、1ゲーム終了時に行う初期化であり、初期化4では、RAM41cの格納領域のうち、未使用領域および未使用スタック領域が初期化される。
なお、本実施の形態では、後述する初期設定処理(図5及び図6参照)において初期化1及び初期化3を行う前に割込を禁止しているが、初期化2を行うときはBB終了時に割込を禁止してから初期化2を行い、初期化1を行うときは1ゲームの終了時に割込を禁止してから初期化1を行っている。また、本実施の形態では、初期化1を設定変更状態の移行前に行っているが、設定変更状態の終了時に行ったり、設定変更状態移行前、設定変更状態終了時の双方で行うようにしても良い。
このように本実施の形態では、電源投入時などにRAM異常エラーが発生した場合には、初期化1が実行され、それ以前の制御状態が初期化されることとなるが、この際、重要ワークに割り当てられてられたRTフラグやRT残りゲーム数は初期化されることなく保持されるようになっている。一方で、一般ワークに割り当てられた遊技状態フラグについては、初期化1が実行されることに伴って初期化されることとなる。
[内部抽選について]
本実施の形態のスロットマシン1は、前述のように遊技状態(通常、内部中、BB(RB))に応じて設定可能な賭数の規定数が定められており、遊技状態に応じて定められた規定数の賭数が設定されたことを条件にゲームを開始させることが可能となる。なお、本実施の形態では、遊技状態に応じた規定数の賭数が設定された時点で、入賞ラインLNが有効化される。
本実施の形態のスロットマシン1は、全てのリール2L、2C、2Rが停止した際に、有効化された入賞ラインLN(以下では、有効化された入賞ラインLNを単に入賞ラインLNと呼ぶ)に役と呼ばれる図柄の組合せが揃うと入賞となる。役は、同一図柄の組合せであっても良いし、異なる図柄を含む組合せであっても良い。入賞となる役の種類は、遊技状態に応じて定められているが、大きく分けて、メダルの払い出しを伴う小役と、賭数の設定を必要とせずに次のゲームを開始可能となる再遊技役(以下、「リプレイ」と称することもある)と、遊技者にとって有利な遊技状態への移行を伴う特別役(以下、「ボーナス」と称することもある)と、がある。以下では、小役と再遊技役をまとめて一般役とも呼ぶ。遊技状態に応じて定められた各役の入賞が発生するためには、後述する内部抽選に当選して、当該役の当選フラグがRAMに設定されている必要がある。
なお、これら各役の当選フラグのうち、小役および再遊技役の当選フラグは、当該フラグが設定されたゲームにおいてのみ有効とされ、次のゲームでは無効となるが、特別役の当選フラグは、当該フラグにより許容された役の組合せが揃うまで有効とされ、許容された役の組合せが揃ったゲームにおいて無効となる。すなわち特別役の当選フラグが一度当選すると、例え、当該フラグにより許容された役の組合せを揃えることができなかった場合にも、その当選フラグは無効とされずに、次のゲームへ持ち越されることとなる。
内部抽選は、上記した各役への入賞を許容するか否かを、全てのリール2L、2C、2Rの表示結果が導出表示される以前に(実際には、スタートスイッチ7の検出時)決定するものである。内部抽選では、まず、スタートスイッチ7の検出時に内部抽選用の乱数値(0〜65535の整数)を取得する。詳しくは、RAM41cに割り当てられた乱数値格納ワークの値を同じくRAM41cに割り当てられた抽選用ワークに設定する。そして、遊技状態および特別役の持ち越しの有無に応じて定められた各役について、抽選用ワークに格納された数値データと、遊技状態を特定するための遊技状態フラグの値、後述するRTを特定するためのRTフラグの値、賭数および設定値に応じて定められた各役の判定値数に応じて行われる。なお、特別役の持ち越しとは、内部抽選において特別役に当選したゲームで特別役が入賞しなかった場合に、特別役の当選状態を次ゲーム以降に持ち越し、特別役が入賞するまで特別役の当選状態を維持することである。
内部抽選では、内部抽選の対象となる役、現在の遊技状態フラグ値、RTフラグ値および設定値に対応して定められた判定値数を、内部抽選用の乱数値(抽選用ワークに格納された数値データ)に順次加算し、加算の結果がオーバーフローしたときに、当該役に当選したものと判定される。このため、判定値数の大小に応じた確率(判定値数/65536)で役が当選することとなる。
そして、いずれかの役の当選が判定された場合には、当選が判定された役に対応する当選フラグをRAM41cに割り当てられた内部当選フラグ格納ワークに設定する。内部当選フラグ格納ワークは、2バイトの格納領域にて構成されており、そのうちの上位バイトが、特別役の当選フラグが設定される特別役格納ワークとして割り当てられ、下位バイトが、一般役の当選フラグが設定される一般役格納ワークとして割り当てられている。詳しくは、特別役が当選した場合には、当該特別役が当選した旨を示す特別役の当選フラグを特別役格納ワークに設定し、一般役格納ワークに設定されている当選フラグをクリアする。また、一般役が当選した場合には、当該一般役が当選した旨を示す一般役の当選フラグを一般役格納ワークに設定する。なお、いずれの役および役の組合せにも当選しなかった場合には、一般役格納ワークのみクリアする。
[リールの停止制御について]
次に、図7のSd3におけるリール回転処理において実行するリール2L、2C、2Rの停止制御について説明する。
メイン制御部41は、リールの回転が開始したとき、およびリールが停止し、かつ未だ回転中のリールが残っているときに、ROM41bに格納されているテーブルインデックスおよびテーブル作成用データを参照して、回転中のリール別に停止制御テーブルを作成する。そして、ストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作が有効に検出されたときに、該当するリールの停止制御テーブルを参照し、参照した停止制御テーブルの滑りコマ数に基づいて、操作されたストップスイッチ8L、8C、8Rに対応するリール2L、2C、2Rの回転を停止させる制御を行う。
テーブルインデックスには、内部抽選による当選フラグの設定状態(以下、内部当選状態と呼ぶ)別に、テーブルインデックスを参照する際の基準アドレスから、テーブル作成用データが格納された領域の先頭アドレスを示すインデックスデータが格納されているアドレスまでの差分が登録されている。これにより内部当選状態に応じた差分を取得し、基準アドレスに対してその差分を加算することで該当するインデックスデータを取得することが可能となる。なお、役の当選状況が異なる場合でも、同一の制御が適用される場合においては、インデックスデータとして同一のアドレスが格納されており、このような場合には、同一のテーブル作成用データを参照して、停止制御テーブルが作成されることとなる。
テーブル作成用データは、停止操作位置に応じた滑りコマ数を示す停止制御テーブルと、リールの停止状況に応じて参照すべき停止制御テーブルのアドレスと、からなる。
リールの停止状況に応じて参照される停止制御テーブルは、全てのリールが回転しているか、左リールのみ停止しているか、中リールのみ停止しているか、右リールのみ停止しているか、左、中リールが停止しているか、左、右リールが停止しているか、中、右リールが停止しているか、によって異なる場合があり、更に、いずれかのリールが停止している状況においては、停止済みのリールの停止位置によっても異なる場合があるので、それぞれの状況について、参照すべき停止制御テーブルのアドレスが回転中のリール別に登録されており、テーブル作成用データの先頭アドレスに基づいて、それぞれの状況に応じて参照すべき停止制御テーブルのアドレスが特定可能とされ、この特定されたアドレスから、それぞれの状況に応じて必要な停止制御テーブルを特定できるようになっている。なお、リールの停止状況や停止済みのリールの停止位置が異なる場合でも、同一の停止制御テーブルが適用される場合においては、停止制御テーブルのアドレスとして同一のアドレスが登録されているものもあり、このような場合には、同一の停止制御テーブルが参照されることとなる。
停止制御テーブルは、停止操作が行われたタイミング別の滑りコマ数を特定可能なデータである。本実施の形態では、リールモータ32L、32C、32Rに、168ステップ(0〜167)の周期で1周するステッピングモータを用いている。すなわちリールモータ32L、32C、32Rを168ステップ駆動させることでリール2L、2C、2Rが1周することとなる。そして、リール1周に対して16ステップ(1図柄が移動するステップ数)毎に分割した21の領域(コマ)が定められており、これらの領域には、リール基準位置から0〜20の領域番号が割り当てられている。一方、1リールに配列された図柄数も21であり、各リールの図柄に対して、リール基準位置から0〜20の図柄番号が割り当てられているので、0番図柄から20番図柄に対して、それぞれ0〜20の領域番号が順に割り当てられていることとなる。そして、停止制御テーブルには、領域番号別の滑りコマ数が所定のルールで圧縮して格納されており、停止制御テーブルを展開することによって領域番号別の滑りコマ数を取得できるようになっている。
前述のようにテーブルインデックスおよびテーブル作成用データを参照して作成される停止制御テーブルは、領域番号に対応して、各領域番号に対応する領域が停止基準位置(本実施の形態では、透視窓3の下段図柄の領域)に位置するタイミング(リール基準位置からのステップ数が各領域番号のステップ数の範囲に含まれるタイミング)でストップスイッチ8L、8C、8Rの操作が検出された場合の滑りコマ数がそれぞれ設定されたテーブルである。
次に、停止制御テーブルの作成手順について説明すると、まず、リール回転開始時においては、そのゲームの内部当選状態に応じたテーブル作成用データの先頭アドレスを取得する。具体的には、まずテーブルインデックスを参照し、内部当選状態に対応するインデックスデータを取得し、そして取得したインデックスデータに基づいてテーブル作成用データを特定し、特定したテーブル作成用データから全てのリールが回転中の状態に対応する各リールの停止制御テーブルのアドレスを取得し、取得したアドレスに格納されている各リールの停止制御テーブルを展開して全てのリールについて停止制御テーブルを作成する。
また、いずれか1つのリールが停止したとき、またはいずれか2つのリールが停止したときには、リール回転開始時に取得したインデックスデータ、すなわちそのゲームの内部当選状態に応じたテーブル作成用データの先頭アドレスに基づいてテーブル作成用データを特定し、特定したテーブル作成用データから停止済みのリールおよび当該リールの停止位置の領域番号に対応する未停止リールの停止制御テーブルのアドレスを取得し、取得したアドレスに格納されている各リールの停止制御テーブルを展開して未停止のリールについて停止制御テーブルを作成する。
次に、メイン制御部41がストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作を有効に検出したときに、該当するリールに表示結果を導出させる際の制御について説明すると、ストップスイッチ8L、8C、8Rのうち、回転中のリールに対応するいずれかの操作を有効に検出すると、停止操作を検出した時点のリール基準位置からのステップ数に基づいて停止操作位置の領域番号を特定し、停止操作が検出されたリールの停止制御テーブルを参照し、特定した停止操作位置の領域番号に対応する滑りコマ数を取得する。そして、取得した滑りコマ数分リールを回転させて停止させる制御を行う。具体的には、停止操作を検出した時点のリール基準位置からのステップ数から、取得した滑りコマ数引き込んで停止させるまでのステップ数を算出し、算出したステップ数分リールを回転させて停止させる制御を行う。これにより、停止操作が検出された停止操作位置の領域番号に対応する領域から滑りコマ数分先の停止位置となる領域番号に対応する領域が停止基準位置(本実施の形態では、透視窓3の下段図柄の領域)に停止することとなる。
本実施の形態のテーブルインデックスには、一の遊技状態における一の内部当選状態に対応するインデックスデータとして1つのアドレスのみが格納されており、更に、一のテーブル作成用データには、一のリールの停止状況(および停止済みのリールの停止位置)に対応する停止制御テーブルの格納領域のアドレスとして1つのアドレスのみが格納されている。すなわち一の遊技状態における一の内部当選状態に対応するテーブル作成用データ、およびリールの停止状況(および停止済みのリールの停止位置)に対応する停止制御テーブルが一意的に定められており、これらを参照して作成される停止制御テーブルも、一の遊技状態における一の内部当選状態、およびリールの停止状況(および停止済みのリールの停止位置)に対して一意となる。このため、遊技状態、内部当選状態、リールの停止状況(および停止済みのリールの停止位置)の全てが同一条件となった際に、同一の停止制御テーブル、すなわち同一の制御パターンに基づいてリールの停止制御が行われることとなる。
また、本実施の形態では、滑りコマ数として0〜4の値が定められており、停止操作を検出してから最大4コマ図柄を引き込んでリールを停止させることが可能である。すなわち停止操作を検出した停止操作位置を含め、最大5コマの範囲から図柄の停止位置を指定できるようになっている。また、1図柄分リールを移動させるのに1コマの移動が必要であるので、停止操作を検出してから最大4図柄を引き込んでリールを停止させることが可能であり、停止操作を検出した停止操作位置を含め、最大5図柄の範囲から図柄の停止位置を指定できることとなる。
本実施の形態では、いずれかの役に当選している場合には、当選役を入賞ラインLNに4コマの範囲で最大限引き込み、当選していない役が入賞ラインLNに揃わないように引き込む滑りコマ数が定められた停止制御テーブルを作成し、リールの停止制御を行う一方、いずれの役にも当選していない場合には、いずれの役も揃わない滑りコマ数が定められた停止制御テーブルを作成し、リールの停止制御を行う。これにより、停止操作が行われた際に、入賞ラインLNに最大4コマの引込範囲で当選している役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、最大4コマの引込範囲でハズシて停止させる制御が行われることとなる。
特別役が前ゲーム以前から持ち越されている状態で小役が当選した場合など、特別役と小役が同時に当選している場合には、当選した小役を入賞ラインLNに4コマの範囲で最大限に引き込むように滑りコマ数が定められているとともに、当選した小役を入賞ラインLNに最大4コマの範囲で引き込めない停止操作位置については、当選した特別役を入賞ラインLNに4コマの範囲で最大限に引き込むように滑りコマ数が定められた停止制御テーブルを作成し、リールの停止制御を行う。これにより、停止操作が行われた際に、入賞ラインLNに最大4コマの引込範囲で当選している小役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、入賞ラインLNに最大4コマの引込範囲で当選している小役を引き込めない場合には、入賞ラインLNに最大4コマの引込範囲で当選している特別役を揃えて停止させることができれば、これを揃えて停止させる制御が行われ、当選していない役は、4コマの引込範囲でハズシて停止させる制御が行われることとなる。すなわちこのような場合には、特別役よりも小役を入賞ラインLNに揃える制御が優先され、小役を引き込めない場合にのみ、特別役を入賞させることが可能となる。なお、特別役と小役を同時に引き込める場合には、小役のみを引き込み、特別役と同時に小役が入賞ラインLNに揃わないようになっている。
なお、本実施の形態では、特別役が前ゲーム以前から持ち越されている状態で小役が当選した場合や新たに特別役と小役が同時に当選した場合など、特別役と小役が同時に当選している場合には、当選した特別役よりも当選した小役が優先され、小役が引き込めない場合のみ、特別役を入賞ラインLNに揃える制御を行っているが、特別役と小役が同時に当選している場合に、小役よりも特別役を入賞ラインLNに揃える制御が優先され、特別役を引き込めない場合にのみ、小役を入賞ラインLNに揃える制御を行っても良い。
特別役が前ゲーム以前から持ち越されている状態で再遊技役が当選した場合など、特別役とリプレイが同時に当選している場合には、停止操作が行われた際に、入賞ラインLNに最大4コマの引込範囲で再遊技役の図柄を揃えて停止させる制御が行われる。なお、この場合、再遊技役を構成する図柄または同時当選する再遊技役を構成する図柄は、リール2L、2C、2Rのいずれについても5図柄以内、すなわち4コマ以内の間隔で配置されており、4コマの引込範囲で必ず任意の位置に停止させることができるので、特別役と再遊技役が同時に当選している場合には、遊技者によるストップスイッチ8L、8C、8Rの操作タイミングに関わらずに、必ず再遊技役が揃って入賞することとなる。すなわちこのような場合には、特別役よりも再遊技役を入賞ラインLNに揃える制御が優先され、必ず再遊技役が入賞することとなる。なお、特別役と再遊技役を同時に引き込める場合には、再遊技役のみを引き込み、再遊技役と同時に特別役が入賞ラインLNに揃わないようになっている。
本実施の形態においてメイン制御部41は、リール2L、2C、2Rの回転が開始した後、ストップスイッチ8L、8C、8Rの操作が検出されるまで、停止操作が未だ検出されていないリールの回転を継続し、ストップスイッチ8L、8C、8Rの操作が検出されたことを条件に、対応するリールに表示結果を停止させる制御を行うようになっている。なお、リール回転エラーの発生により、一時的にリールの回転が停止した場合でも、その後リール回転が再開した後、ストップスイッチ8L、8C、8Rの操作が検出されるまで、停止操作が未だ検出されていないリールの回転を継続し、ストップスイッチ8L、8C、8Rの操作が検出されたことを条件に、対応するリールに表示結果を停止させる制御を行うようになっている。
なお、本実施の形態では、ストップスイッチ8L、8C、8Rの操作が検出されたことを条件に、対応するリールに表示結果を停止させる制御を行うようになっているが、リールの回転が開始してから、予め定められた自動停止時間が経過した場合に、リールの停止操作がなされない場合でも、停止操作がなされたものとみなして自動的に各リールを停止させる自動停止制御を行うようにしても良い。この場合には、遊技者の操作を介さずにリールが停止することとなるため、例え、いずれかの役が当選している場合でもいずれの役も構成しない表示結果を導出させることが好ましい。
次に、本実施の形態におけるメイン制御部41が実行する各種制御内容を説明する。
[初期設定処理]
メイン制御部41は、リセット回路49からシステムリセット信号が入力されるとシステムリセットが発生し、マイクロコンピュータは後述するHWパラメータを参照した機能設定など起動時の各種設定を行う。その後、ユーザプログラムとしてROM41bに記憶されたプログラムにしたがって、図5および図6のフローチャートに示す初期設定処理を行う。
図5および図6に示すように、メイン制御部41は、まず、図8および図9において説明するメイン制御部41が一定間隔(0.56msの間隔)で実行するタイマ割込処理(メイン)の割込を禁止する(Sa1)。次いで、内蔵デバイスや周辺IC、割込モード、スタックポインタ等を初期化する(Sa2)。
次いで、RAM41cへのアクセスを許可し(Sa4)、RAM41cの全ての格納領域(未使用領域および未使用スタック領域を含む)のRAMパリティを計算する(Sa5)。
Sa6のステップでは、Sa5のステップにおいて計算したRAMパリティが0か否かを判定する。正常に電断割込処理(メイン)が行われていれば、RAMパリティが0になるはずであり、Sa6のステップにおいてRAMパリティが0でなければ、RAM41cに格納されているデータが正常ではなく、この場合には、RAM41cの格納領域のうち、使用中スタック領域、重要ワークを除く全ての格納領域を初期化する初期化1を実行した後(Sa22)、設定キースイッチ37がonか否かを判定し(Sa23)、設定キースイッチ37がonであれば、設定変更中であることを示す設定変更開始コマンドを生成し(Sa19)、生成した設定変更開始コマンドをコマンドバッファに格納する(Sa20)。
そして、メイン制御部41は、所定時間毎に定期的にタイマ割込がかかるようにメイン制御部41に内蔵されているタイマ回路のレジスタの設定を行なう(Sa20a)。例えば0.56msに相当する値が所定のレジスタ(時間定数レジスタ)に設定される。この実施の形態では、0.56ms毎に定期的にタイマ割込がかかるとする。なお、タイマ回路では該レジスタの設定が行われることにより、タイマが初期化され、初期値から計時を開始することになる。
次いで、メイン制御部41は乱数発生回路42の設定を行う(Sa20b)。メイン制御部41は、乱数回路の設定において、ユーザによって予め設定された乱数最大値を指定する乱数最大値設定データを内蔵レジスタに書き込む。また、メイン制御部41は、内蔵レジスタに設定した乱数最大値が所定の下限値以下でないかを確認し、乱数最大値が下限値以下である場合には、乱数最大値設定レジスタに設定されている乱数最大値の再設定を行う乱数最大値再設定処理を実行する。また、メイン制御部41は、乱数発生回路42のカウンタが更新するカウント値の初期値を変更させる初期値変更処理を実行する。また、メイン制御部41は、乱数更新方式選択データを乱数更新方式選択レジスタに書き込む。また、メイン制御部41は、ユーザによって予め設定された乱数発生用クロック信号の周期を指定する周期設定データ(基準クロック信号を何分周させるかを設定するためのデータ)を書き込む。また、メイン制御部41は、乱数発生回路42のカウンタによって所定の最終値までカウント値が更新されたときに、カウンタに入力する初期値を更新するか否かを設定する。また、CPU56は、乱数発生回路42のカウンタによって所定の最終値までカウント値が更新されたときに、カウンタが更新するカウント値の順列を変更するか否かを設定する。そして、メイン制御部41は、乱数回路起動データを書き込む。そのようにすることによって、遊技制御用マイクロコンピュータ560は、乱数発生回路42を起動させる。
次いで、メイン制御部41は、図8および図9において説明するメイン制御部41が一定間隔(0.56msの間隔)で実行するタイマ割込処理(メイン)の割込を許可して(Sa21)、当選役の当選確率の変更などを行う設定変更処理、すなわち設定変更状態に移行する。そして、設定変更処理が終了すると、図7に示すゲーム処理に移行する。
Sa23のステップにおいて設定キースイッチ37がoffであれば、RAM異常を示すエラーコードをレジスタに設定し(Sa24)、RAM異常を示すエラー開始コマンドを生成し(Sa25)、生成したエラー開始コマンドをコマンドバッファに格納する(Sa26)。そして、Sa20aと同様にタイマ割込の設定を行って(Sa26a)、Sa20bと同様に乱数発生回路42の設定を行い(Sa26b)、図8および図9において説明するメイン制御部41が一定間隔(0.56msの間隔)で実行するタイマ割込処理(メイン)の割込を許可して(Sa27)、エラー処理、すなわちRAM異常エラー状態に移行する。そして、例えば、遊技店員によってリセット/設定スイッチ38が操作されるなどして、RAM異常エラー状態が解除されると、図7に示すゲーム処理に移行する。
Sa6のステップにおいて、RAMパリティが0であれば、更に破壊診断用データが正常か否かを判定する(Sa7)。正常に電断処理(メイン)が行われていれば、破壊診断用データが設定されているはずであり、Sa7のステップにおいて破壊診断用データが正常でない場合(破壊診断用データが電断時に格納される5A(H)以外の場合)にも、RAM41cのデータが正常ではないので、Sa22のステップに移行して初期化1を実行し、その後、Sa23のステップにおいて設定キースイッチ37がonであれば、前述したSa19〜Sa21の処理を行い、設定変更処理、すなわち設定変更状態に移行する。また、Sa27のステップにおいて設定キースイッチ37がoffであれば、前述したSa24〜Sa27の処理を行い、エラー処理、すなわちRAM異常エラー状態に移行する。そして、RAM異常エラー状態が解除されると、図7に示すゲーム処理に移行する。
Sa7のステップにおいて破壊診断用データが正常であると判定した場合には、RAM41cのデータは正常であるので、破壊診断用データをクリアし(Sa8)、RAM41cの非保存ワーク、未使用領域および未使用スタック領域を初期化する初期化3を行った後(Sa9)、設定キースイッチ37がonか否かを判定し(Sa10)、設定キースイッチ37がonであれば、初期化1を実行し(Sa15)、前述したSa19〜Sa21の処理を行い、設定変更処理、すなわち設定変更状態に移行する。そして、設定変更処理が終了すると、図7に示すゲーム処理に移行する。
Sa10のステップにおいて設定キースイッチ37がoffであれば、各レジスタを電断前の状態、すなわちスタックに保存されている状態に復帰し(Sa11)、電断復帰1コマンド(図8参照)を生成してコマンドバッファに格納する(Sa12)。次いで、電断復帰2コマンド(図8参照)を生成してコマンドバッファに格納する(Sa13)。次いで、電断復帰3コマンド(図8参照)を生成してコマンドバッファに格納する(Sa14)。次いで、電断復帰4コマンド(図8参照)を生成してコマンドバッファに格納する(Sa15)。次いで、ホットスタートコマンド(図8参照)を生成してコマンドバッファに格納する(Sa16)。そして、Sa20aと同様にタイマ割込の設定を行って(Sa16a)、Sa20bと同様に乱数発生回路42の設定を行い(Sa16b)、図8および図9において説明するメイン制御部41が一定間隔(0.56msの間隔)で実行するタイマ割込処理(メイン)の割込を許可して(Sa17)、電断前の最後に実行していた処理に戻る。電断前に図7に示すゲーム処理中のいずれかの処理が行われていた場合には、Sa11で復帰されたプログラムカウンタ(PC)の値に基づいて、ゲーム処理のSd1〜Sd6の処理のうち、電断前に行われていた処理に戻る。また、例えば、電断前に図8および図9に示すタイマ割込処理中のいずれかの処理が行われていた場合には、Sa11で復帰されたプログラムカウンタ(PC)の値に基づいて、タイマ割込処理のSk1〜Sk26の処理のうち、電断前に行われていた処理に戻る。
[各種コマンドについて]
次に、メイン制御部41がサブ制御部91に対して送信するコマンドについて説明する。メイン制御部41がサブ制御部91に対して送信するコマンドは、コマンドの種類を示す1バイトのモードデータとコマンドの内容を示す1バイトのEXTデータとからなる。サブ制御部91は、モードデータからコマンドの種類を判別し、EXTデータからコマンドの内容を判別する。
各コマンドは、メイン制御部41のRAM41cの特別ワークに設けられたコマンド送信用バッファに一時的に格納され、図8および図9に示すタイマ割込処理(メイン)で実行されるコマンド送信処理(Sk16)においてサブ制御部91に送信される。
サブ制御部91は、メイン制御部41からコマンドを受信したときに、受信したコマンドの種類に応じて、液晶表示器51から表示されている画像、スピーカ53,54から出力される音声、前面扉1bに設けられたランプなどの制御を行う。
設定変更開始コマンドは、設定変更が開始されたことを示すコマンドである。設定変更開始コマンドは設定変更の開始時に送信される。EXTデータには、設定変更が開始されたことを示す値が設定される。
設定変更終了コマンドは、設定変更が終了したことおよび設定変更により選択された設定値を示すコマンドである。設定変更終了コマンドは設定変更の終了時に送信される。EXTデータには、設定変更により選択される6種類の設定値のいずれかが設定される。
エラー開始コマンドは、エラーが発生したことを示すコマンドである。EXTデータには、8種類のエラーのいずれかが設定される。エラー開始コマンドはエラー処理の開始時に送信される。8種類のエラーには、オーバーフロータンク35内のメダルが満タンになったことを示すオーバーフロータンク溢れエラー、ホッパータンク34a内のメダルがなくなったことを示す払出メダルなしエラー、払い出すメダルがホッパータンク34aなどで詰まったことを示す払出メダル詰まりエラー、メダルセレクタでのメダルの検出異常が発生したことを示す投入信号異常エラー、リールの回転が正常に行われていないことを示すリール回転異常エラー、内部抽選の結果から入賞が予想される入賞予想フラグと実際に入賞した入賞結果とが一致しなかったことを示す不正入賞エラー、RAM異常を示すRWM内容エラーが設定されている。
エラー解除コマンドは、エラーが解除されたことを示すコマンドである。エラー解除コマンドはエラー処理の解除時に送信される。EXTデータには、エラーが解除されたことを示す値が設定される。
精算開始時コマンドは、メダルの精算が開始されたことを示すコマンドである。精算開始時コマンドは精算処理の開始時に送信される。EXTデータには、投入されたメダルが精算されたことを示すデータとクレジットされたメダルが精算されたことを示すデータとのいずれかが設定される。
精算終了コマンドは、メダルの精算が終了したことを示すコマンドである。精算終了コマンドは精算処理の終了時に送信される。EXTデータには、精算が終了したことを示す値が設定される。
メダル投入コマンドは、メダルが投入されたことを示すコマンドである。メダル投入コマンドは、クレジットの加算を伴わないメダルの投入時に送信される。EXTデータには、投入したメダルの枚数(1〜3枚のいずれか)を示す値が設定される。
クレジット増加コマンドは、クレジットされたメダルの枚数が増加したことを示すコマンドである。クレジット増加コマンドは、クレジットの加算を伴うメダルの投入時に送信される。EXTデータには、クレジットが増加したことを示す値が設定される。
遊技カウンタ1コマンドは、ゲームが行われるたびにカウントされる0〜127のカウント値を示すコマンドである。遊技カウンタ1コマンドは、スタートスイッチの操作の受付時に送信される。EXTデータには、0〜127のカウント値のうちのいずれかを示す値が設定される。
リール加速情報コマンドは、リールの回転が開始したことを示すコマンドである。リール加速情報コマンドは、スタートスイッチの操作の受付時に送信される。EXTデータには、9種類のリールの回転開始パターンのうちのいずれかを示す値が設定される。
内部当選コマンドは、BBに当選したか否かおよびRTの状態を示すコマンドである。内部当選コマンドは、スタートスイッチの操作の受付時に送信される。EXTデータには、BBに当選したか否かおよびRTの状態を示す値が設定される。
当選番号コマンドは、内部抽選の結果を示すコマンドである。当選番号コマンドは、スタートスイッチの操作の受付時に送信される。EXTデータには、内部抽選の結果を示す値が設定される。
BB投入枚数1コマンドは、BBのゲームで投入したメダルの枚数を示すコマンドである。BB投入枚数1コマンドは、リールの回転開始時に送信される。EXTデータには、投入されたメダルの枚数を示す値が設定される。
リール停止受付1コマンドは、第1停止が行われたことを示すコマンドである。リール停止受付1コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、各ストップスイッチの受付状態(すなわち操作されたか否か)および各ストップスイッチに内蔵されたLEDの点灯状態(点灯中か否か)を示す値が設定される。
リール滑りコマ数1コマンドは、第1停止が行われたときにリールが停止するまでのコマ数を示すコマンドである。リール滑りコマ数1コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールが停止するまでのコマ数(0〜4コマ)を示す値が設定される。
リール停止位置1コマンドは、第1停止が行われたときにリールが停止する位置を示すコマンドである。リール停止位置1コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールの停止位置(コマ番号0〜20)を示す値が設定される。
リール停止受付2コマンドは、第2停止が行われたことを示すコマンドである。リール停止受付2コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、各ストップスイッチの受付状態(すなわち操作されたか否か)および各ストップスイッチに内蔵されたLEDの点灯状態(点灯中か否か)を示す値が設定される。
リール滑りコマ数2コマンドは、第2停止が行われたときにリールが停止するまでのコマ数を示すコマンドである。リール滑りコマ数2コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールが停止するまでのコマ数(0〜4コマ)を示す値が設定される。
リール停止位置2コマンドは、第2停止が行われたときにリールが停止する位置を示すコマンドである。リール停止位置2コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールの停止位置(コマ番号0〜20)を示す値が設定される。
リール停止受付3コマンドは、第3停止が行われたことを示すコマンドである。リール停止受付3コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、各ストップスイッチの受付状態(すなわち操作されたか否か)および各ストップスイッチに内蔵されたLEDの点灯状態(点灯中か否か)を示す値が設定される。
リール滑りコマ数3コマンドは、第3停止が行われたときにリールが停止するまでのコマ数を示すコマンドである。リール滑りコマ数3コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールが停止するまでのコマ数(0〜4コマ)を示す値が設定される。
リール停止位置3コマンドは、第3停止が行われたときにリールが停止する位置を示すコマンドである。リール停止位置3コマンドは、ストップスイッチの操作の受付時に送信される。EXTデータには、リールの停止位置(コマ番号0〜20)を示す値が設定される。
遊技カウンタ2コマンドは、ゲームが行われるたびにカウントされる0〜127のカウント値を示すコマンドである。遊技カウンタ2コマンドは、全リールの停止後に送信される。EXTデータには、0〜127のカウント値のうちのいずれかを示す値が設定される。
RT情報2コマンドは、BBに当選したか否か、RBに当選したか否かおよびRTの状態を示すコマンドである。RT情報2コマンドは、スタートスイッチの操作の受付時に送信される。EXTデータには、BBに当選したか否かまたはRBに当選したか否かと、RTの状態とを示す値が設定される。
入賞番号1コマンドは、入賞の種類を示すコマンドである。入賞番号1コマンドは、メダルの払出処理開始時に送信される。EXTデータには、BBの作動状態(BB中か否か)と入賞の種類を示す値が設定される。
入賞番号2コマンドは、入賞の種類を示すコマンドである。入賞番号1コマンドは、メダルの払出処理開始時に送信される。EXTデータには、BBの作動状態(BB中か否か)と入賞の種類を示す値が設定される。
入賞枚数コマンドは、入賞により払い出されるメダルの枚数を示すコマンドである。入賞枚数コマンドは、メダルの払出処理開始時に送信される。EXTデータには、メダルの払出枚数を示す値が設定される。
BB払出枚数1コマンドは、BB時のメダルの払出枚数を示すコマンドである。BB払出枚数1コマンドは、BB中におけるメダルの払出処理開始時に送信される。EXTデータには、BB中におけるメダルの払出枚数を示す値(上位7ビット)が設定される。
BB払出枚数2コマンドは、BB時のメダルの払出枚数を示すコマンドである。BB払出枚数2コマンドは、BB中におけるメダルの払出処理開始時に送信される。EXTデータには、BB中におけるメダルの払出枚数を示す値(下位7ビット)が設定される。
BB終了待ちコマンドは、BBの終了待ちであることを示すコマンドである。BB終了待ちコマンドはBB終了時に送信される。EXTデータには、終了待ちのBBの種類(本実施形態では1種類)を示す値が設定される。
BB終了コマンドは、BBが終了することを示すコマンドである。BB終了コマンドはBB終了時、自動精算の開始時、打ち止め処理の開始時に送信される。EXTデータには、終了するBBの種類(本実施形態では1種類)を示す値が設定される。
RT情報1コマンドは、RTの状態を示すコマンドである。RT情報1コマンドは、ゲームの終了時に送信される。EXTデータには、RTの状態を示す値が設定される。
BB作動種別コマンドは、BB中か否かを示すコマンドである。BB作動種別コマンドは、ゲームの終了時に送信される。EXTデータには、BB中か否かを示す値が設定される。
遊技終了コマンドは、ゲームを終了したときの遊技状態(BB、RB、リプレイ入賞)を示すコマンドである。遊技終了コマンドは、ゲームの終了時に送信される。EXTデータには、ゲームを終了したときの遊技状態(BB、RB、リプレイ入賞)を示す値が設定される。
ドアコマンドは、前面扉1bが開放されているか否かを示すコマンドである。ドアコマンドは、電源投入時、設定変更開始時、RWM内容エラー開始時、ゲーム終了時、ドア開閉時に送信される。EXTデータには、ドアの開放状態(開放あるいは閉鎖のいずれであるか)を示す値が設定される。
電断復帰1コマンドは、ゲームが行われるたびにカウントされる0〜127のカウント値を示すコマンドである。電断復帰1コマンドは、電源の投入後にバックアップが正常であった場合に送信される。EXTデータには、0〜127のカウント値のうちのいずれかを示す値が設定される。
電断復帰2コマンドは、BBに当選したか否かおよびRTの状態を示すコマンドである。電断復帰2コマンドは、電源の投入後にバックアップが正常であった場合に送信される。EXTデータには、BBに当選したか否かおよびRTの状態を示す値が設定される。
電断復帰3コマンドは、BB中か否かおよび投入済みのメダルの枚数を示すコマンドである。電断復帰3コマンドは、電源の投入後にバックアップが正常であった場合に送信される。EXTデータには、BB中か否かおよび投入済みのメダルの枚数を示す値が設定される。
電断復帰4コマンドは、ゲームを終了したときの遊技状態(BB、RB、リプレイ入賞)を示すコマンドである。電断復帰4コマンドは、電源の投入後にバックアップが正常であった場合に送信される。EXTデータには、ゲームを終了したときの遊技状態(BB、RB、リプレイ入賞)を示す値が設定される。
ホットスタートコマンドは、電源をオフにしないで再起動することを示すコマンドである。ホットスタートコマンドは、電源の投入後にバックアップが正常であった場合に送信される。EXTデータには、電源をオフにしないで再起動することを示す値が設定される。
[ゲーム処理]
図7は、メイン制御部41が実行するゲーム処理の制御内容を示すフローチャートである。
図7に示すように、ゲーム処理では、BET処理(Sd1)、内部抽選処理(Sd2)、リール回転処理(Sd3)、入賞判定処理(Sd4)、払出処理(Sd5)、ゲーム終了時処理(Sd6)を順に実行し、ゲーム終了時処理が終了すると、再びBET処理に戻る。
Sd1のステップにおけるBET処理では、賭数を設定可能な状態で待機し、遊技状態に応じた規定数の賭数が設定され、スタートスイッチ7が操作された時点でゲームを開始させる処理を実行する。
Sd2のステップにおける内部抽選処理では、Sd1のステップにおけるスタートスイッチ7の検出によるゲーム開始と同時にラッチされた内部抽選用の乱数値に基づいて上記した各役への入賞を許容するか(すなわち、表示結果の導出を許容するか否か)どうかを決定する処理を行う。この内部抽選処理では、それぞれの抽選結果に基づいて、RAM41cに当選フラグが設定される。なお、内部抽選により特別役(BBまたはRB)に当選した場合は特別役持ち越しフラグセットされる。そして、上記したように特別役持ち越しフラグの有無を判定することによって特別役の持ち越しの有無を判定し、持ち越しの有無に応じた当選役(特別役持ち越し中は特別役は内部抽選の対象から除外される)について判定処理が行われる。
Sd3のステップにおけるリール回転処理では、スタートスイッチ7の操作に応答して各リール2L、2C、2Rを回転させる処理、Sd2のステップにおける内部抽選の結果および遊技者によるストップスイッチ8L、8C、8Rの操作が検出されたことに応じて対応するリール2L、2C、2Rの回転を停止させる処理を実行する。
Sd4のステップにおける入賞判定処理では、Sd3のステップにおいて全てのリール2L、2C、2Rの回転が停止したと判定した時点で、各リール2L、2C、2Rに導出された表示結果に応じて入賞が発生したか否かを判定する処理を実行する。なお、特別役が入賞した場合には本処理において特別役持ち越しフラグがクリアされる。
Sd5のステップにおける払出処理では、Sd4のステップにおいて入賞の発生が判定された場合に、その入賞に応じた払出枚数に基づきクレジットの加算並びにメダルの払出等の処理を行う。
Sd6のステップにおけるゲーム終了時処理では、次のゲームに備えて遊技状態を設定する処理を実行する。
また、ゲーム処理では、ゲームの進行制御に応じてコマンドを生成してコマンドバッファに設定し、サブ制御部91に送信されるようになっている。
[タイマ割込処理(メイン)]
図8および図9は、メイン制御部41が一定間隔(0.56msの間隔)で初期設定処理やゲーム処理に割り込んで実行するタイマ割込処理(メイン)の制御内容を示すフローチャートである。なお、タイマ割込処理(メイン)の実行期間中は自動的に他の割込が禁止される。
図8および図9に示すように、タイマ割込処理(メイン)においては、まず、使用中のレジスタをスタック領域に退避する(Sk1)。
次いで、停電判定処理を行う(Sk2)。停電判定処理では、電断検出回路48から電圧低下信号が入力されているか否かを判定し、電圧低下信号が入力されていれば、前回の停電判定処理でも電圧低下信号が入力されていたか否かを判定し、前回の停電判定処理でも電圧低下信号が入力されていた場合には停電と判定し、その旨を示す電断フラグを設定する。
Sk2のステップにおける停電判定処理の後、電断フラグが設定されているか否かを判定し(Sk3)、電断フラグが設定されていなければ、Sk4に進み、電断フラグが設定されていた場合には、電断処理(メイン)に移行する。
Sk4のステップでは、入力ポートから各種スイッチ類の検出データを入力するポート入力処理を行う。
次いで、4種類のタイマ割込1〜4から当該タイマ割込処理(メイン)において実行すべきタイマ割込を識別するための分岐用カウンタを1進める(Sk5)。この実施形態では、タイマ割込1とは、モータを制御してリールの開始制御を行うタイマ割込中の分岐処理であり、具体的には、後述するリール始動処理など、Sk9〜Sk11の処理が行われる。また、タイマ割込2とは、LED表示制御や、時間カウンタの更新、ドア開閉状態の監視、制御信号等の出力制御、コマンドおよび外部出力信号の更新を行うタイマ割込中の分岐処理であり、具体的には、後述するLEDダイナミック表示処理など、Sk12〜Sk17の処理が行われる。また、タイマ割込3とは、リールの原点通過を検出したり、スイッチ入力を監視したり、乱数値の読み出しを行うタイマ割込中の分岐処理であり、具体的には、後述する原点通過時処理など、Sk20〜Sk22の処理が行われる。また、タイマ割込4とは、停止スイッチの入力を検出してリールの停止制御を行うタイマ割込中の分岐処理であり、具体的には、後述する停止スイッチ処理など、Sk23〜Sk25の処理が行われる。Sk5のステップでは、分岐用カウンタ値が0〜2の場合に1が加算され、カウンタ値が3の場合に0に更新される。すなわち分岐用カウンタ値は、タイマ割込処理(メイン)が実行される毎に、0→1→2→3→0・・・の順番でループする。
次いで、分岐用カウンタ値を参照して2または3か、すなわちタイマ割込3またはタイマ割込4かを判定し(Sk6)、タイマ割込3またはタイマ割込4ではない場合、すなわちタイマ割込1またはタイマ割込2の場合には、リールモータ32L、32C、32Rの始動時または定速回転中か否かを確認し、リールモータ32L、32C、32Rの始動時または定速回転中であれば、後述するSk10のモータステップ処理において変更した位相信号データや後述するSk24の最終停止処理において変更した位相信号データを出力するモータ位相信号出力処理を実行する(Sk7)。
次いで、分岐用カウンタ値を参照して1か否か、すなわちタイマ割込2か否かを判定し(Sk8)、タイマ割込2ではない場合、すなわちタイマ割込1の場合には、リールモータ32L、32C、32Rの始動時のステップ時間間隔の制御を行うリール始動処理(Sk9)、リールモータ32L、32C、32Rの位相信号データの変更を行うモータステップ処理(Sk10)、リールモータ32L、32C、32Rの停止後、一定時間経過後に位相信号を1相励磁に変更するモータ位相信号スタンバイ処理(Sk11)を順次実行した後、Sk25のステップに進む。
また、Sk8のステップにおいてタイマ割込2の場合には、各種表示器をダイナミック点灯させるLEDダイナミック表示処理(Sk12)、各種LED等の点灯信号等のデータを出力ポートへ出力する制御信号等出力処理(Sk13)、各種時間カウンタを更新する時間カウンタ更新処理(Sk14)、ドア開放検出スイッチ25の検出状態の監視、ドアコマンドの送信要求などを行うドア監視処理(Sk15)、コマンドバッファに設定された設定変更中コマンドや復帰コマンド、エラーコマンド等の各種コマンドをサブ制御部91に送信するコマンド送信処理(Sk16)、外部出力信号を更新する外部出力信号更新処理(Sk17)を順次実行した後、Sk25のステップに進む。
また、Sk6のステップにおいてタイマ割込3またはタイマ割込4であれば、更に、分岐用カウンタ値を参照して3か否か、すなわちタイマ割込4か否かを判定し(Sk18)、タイマ割込4でなければ、すなわちタイマ割込3であれば、回転中のリール2L、2C、2Rの原点通過(リール基準位置の通過)をチェックし、リール回転エラーの発生を検知するとともに、停止準備が完了しているか(停止準備完了コードが設定されているか)を確認し、停止準備が完了しており、かつ定速回転中であれば、回転中のリールに対応するストップスイッチの操作を有効化する原点通過時処理(Sk20)、MAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8Rなどのスイッチ類の検出状態に変化があったか否かの判定、操作検出コマンドの送信要求等を行うスイッチ入力判定処理(Sk21)、乱数値レジスタR1Dから数値データを読み出して乱数値格納ワークに格納する乱数値読出処理(Sk22)を順次実行した後、Sk26のステップに進む。
また、Sk18のステップにおいてタイマ割込4であれば、ストップスイッチ8L、8C、8Rの検出に伴って停止リールのワークに停止操作位置が格納されたときに、停止リールのワークに格納された停止操作位置から停止位置を決定し、何ステップ後に停止すれば良いかを算出する停止スイッチ処理(Sk23)、停止スイッチ処理で算出された停止までのステップ数をカウントして、停止する時期になったら2相励磁によるブレーキを開始する停止処理(Sk24)、停止処理においてブレーキを開始してから一定時間後に3相励磁とする最終停止処理(Sk25)を順次実行した後、Sk26のステップに進む。
Sk26のステップでは、Sk1においてスタック領域に退避したレジスタを復帰し、割込前の処理に戻る。
[電断処理(メイン)]
図10は、メイン制御部41が前述したタイマ割込処理(メイン)において電断フラグが設定されていると判定した場合に実行する電断処理(メイン)の制御内容を示すフローチャートである。
電断処理(メイン)においては、まず、使用している可能性がある全てのレジスタをスタック領域に退避する(Sm1)。なお、前述したIレジスタ及びIYレジスタの値は使用されているが、起動時の初期化に伴って常に同一の固定値が設定されるため、ここでは保存されない。
次いで、破壊診断用データ(本実施の形態では、5A(H))をセットする(Sm2)。そして、図8および図9において説明するメイン制御部41が一定間隔(0.56msの間隔)で実行するタイマ割込処理(メイン)の割込を禁止し、全ての出力ポートを初期化する(Sm3)。次いでRAM41cの全ての格納領域(未使用領域及び未使用スタック領域を含む)の排他的論理和が0になるようにRAMパリティ調整用データを計算してセットし(Sm4)、RAM41cへのアクセスを禁止する(Sm5)。
その後、電圧が低下してメイン制御部41のCPU41aが停止して待機状態に移行する。そして、この待機状態のまま電圧が低下すると内部的に動作停止状態になる。よって、電断時に確実にメイン制御部41は動作停止する。
なお、本実施形態では、出力ポートの初期化の前に割込禁止に設定しているが、サブ制御基板90、外部出力基板1000、リールモータやリールセンサにデータを出力するための出力ポートへのデータの書き込みやシリアル通信回路へのデータの書き込みを行う前に割込禁止に設定してもよい。
[マイクロコンピュータの構成について]
図11に示すように、メイン制御部41やサブ制御部91として使用されるマイクロコンピュータは、クロック生成回路200、リセットコントローラ201、割込コントローラ202、WDT(ウォッチドッグタイマ)203、CTC(カウンタタイマ)204、演算回路205、アドレスデコーダ206、メインCPU41aやサブCPU91aとして用いられるCPU207、ROM41bやROM91bとして用いられるROM208、ROM41cやRAM91cとして用いられるRAM209、M1カウンタ210、検査ポート211、乱数発生回路42として用いられる乱数回路212および汎用初期値用乱数回路212、シリアル通信回路214、PWM(パルス幅変調)出力回路215、割込/汎用出力回路216、乱数外部ラッチ入力回路217を備えている。
図11に示すマイクロコンピュータは、セキュリティ機能として、個別のID、ROM読み出し制限、64ピンSZIP封入、検査ポート211を備えている。
また、CPU207は10MHz(最小命令実行時間:100msec)の周波数で動作する。
また、ROM208は10,240バイトの容量を備え、RAM209は512バイトの容量を備えている。
また、リセット機能として、システムリセット、WDT(ウォッチドッグタイマ)リセット、定期リセット、イリーガルアクセスリセットの4つの機能を備えている。
また、割込機能として、外部端子割込(INT/NMI)、CTC割込(CTC0、CTC1、CTC2)の2つの機能を備えている。
また、チップセレクト端子として、CSモード時に16本、ECSモード時に23本を用いる。また、CTC204は、16ビット×3チャンネルを備えている。
また、乱数回路212は、8ビット固定長乱数×8チャンネル、16ビット固定長乱数×2チャンネル、8ビット可変長乱数×4チャンネル、16可変長乱数×2チャンネルの計16チャンネルを備えている。さらに、汎用初期値用乱数回路212は1チャンネルを備えている。
また、シリアル通信回路214は、送信×3チャンネル、受信×1チャンネルを備えている。
また、演算回路205は、CRC16、チェックサム、水平パリティの計算を行う。
また、PWM出力回路217は、4チャンネルを備えている。汎用外部ラッチ入力回路は3本の入力を備えている。
また、汎用入出力端子として、入力側に4本、出力側に3本を備えている。また、アドレスデコーダ207は、CS0〜CS15の出力に用いられる。
[メモリ空間のアドレスマップ]
次に、図11に示すマイクロコンピュータのROM208及びRAM209におけるメモリ空間のアドレスマップについて図12を用いて説明する。図12に示すメモリ空間は16ビットアドレスでアクセスするメモリ空間である。メモリ空間には、メモリ命令でアクセスされる。図12では、0000h〜7FFFhがRAMのメモリ空間、8000h〜FFFFhがROMのメモリ空間になっている。
RAM209のメモリ空間メモリ空間アドレス0000h〜01FFhにはアクセスが可能となる使用可能領域となっている。メモリ空間アドレス0200h〜0FFFhはアクセスが禁止される未使用領域になっている。メモリ空間アドレス1000h〜1080hには内部レジスタが割り当てられている。メモリ空間アドレス1081h〜7FFFhはアクセスが禁止される未使用領域になっている。メモリ空間アドレス8000h〜A7FFhにはROMが割り当てられている。メモリ空間アドレスA800h〜FFFFhはアクセスが禁止される未使用領域になっている。
ROM208のメモリ空間では、アドレス8000h〜A6FFhにプログラム/データが割り当てられる。また、アドレスA700h〜A7FFhにROMコメントが割り当てられる。また、アドレスA780h〜A7A7hにベクタテーブルが割り当てられる。また、アドレスA7A8h〜A7FFhにHWパラメータが割り当てられる。
以上のように、512バイトのRAMが0000h〜01FFhに配置されている。システムリセット又はWDTリセットが発生するとRAMプロテクト状態となる。RAMプロテクト状態ではRAMの読み出しはできるが、書き込みはできない。RAMプロテクト状態を解除するにはRAMプロテクトレジスタ(RAMPT)に00h又は80hを設定する。
内部機能レジスタは、図11のマイクロコンピュータに搭載されている各機能を制御するためのレジスタ群である。HWパラメータのシステム設定(HSYSCNT)の内部機能レジスタ配置(HRGACS)に1を設定するとI/O空間に配置することもできる。
また、10,240バイトのROMが8000h〜A7FFhに配置されている。ROM領域には、プログラム/データ、ROMコメント、ベクタテーブル、HWパラメータが配置されている。
マイクロコンピュータは、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセット後8000hからプログラムを実行する。この領域以外ではプログラムを実行することができない。
ROMコメントは、プログラムのタイトル、バージョンなどを設定する領域で、任意のデータを設定することができる。ここに設定したデータは検査ポート(TXD,RXD,STB,DIR)から読み出すことができる。
ベクタテーブルは、CALLV命令のサブルーチンの先頭アドレスと、割込処理の先頭アドレスを設定するテーブルである。使用しないベクタテーブルには0000hを設定する。ベクタテーブルに設定した値が、0000hと8000h〜HPRGEND以外の場合は、マイクロコンピュータは起動しない。HPRGENDは、HWパラメータのプログラムエンドアドレスで設定する。
HWパラメータは、マイクロコンピュータの内部機能をハードウェア的に設定するためのパラメータである。設定は定数テーブルとして記述する。なお、プログラムで書き込むことはできない。
[ベクタテーブルアドレスマップ]
次に、図12で示したROM208のメモリ空間におけるベクタテーブルのアドレスマップについて図13を用いて説明する。
図13に示すように、ベクタテーブルは、メモリ空間アドレスA780h〜A79FhがCALLV命令用ベクタテーブルとなっており、メモリ空間アドレスA7A0h〜A7A7hが割込処理用ベクタテーブルとなっている。
CALLV命令用ベクタテーブルのメモリ空間アドレスA780h〜A781hには、CALLV0の(下位)および(上位)の値が設定されている。メモリ空間アドレスA782h〜A783hには、CALLV1の(下位)および(上位)の値が設定されている。メモリ空間アドレスA784h〜A785hには、CALLV2の(下位)および(上位)の値が設定されている。メモリ空間アドレスA786h〜A787hには、CALLV3の(下位)および(上位)の値が設定されている。メモリ空間アドレスA788h〜A789hには、CALLV4の(下位)および(上位)の値が設定されている。メモリ空間アドレスA78Ah〜A78Bhには、CALLV5の(下位)および(上位)の値が設定されている。メモリ空間アドレスA78Ch〜A78Dhには、CALLV6の(下位)および(上位)の値が設定されている。メモリ空間アドレスA78Eh〜A78Fhには、CALLV7の(下位)および(上位)の値が設定されている。メモリ空間アドレスA790h〜A791hには、CALLV8の(下位)および(上位)の値が設定されている。メモリ空間アドレスA792h〜A793hには、CALLV9の(下位)および(上位)の値が設定されている。メモリ空間アドレスA794h〜A795hには、CALLV10の(下位)および(上位)の値が設定されている。メモリ空間アドレスA796h〜A797hには、CALLV11の(下位)および(上位)の値が設定されている。メモリ空間アドレスA798h〜A799hには、CALLV12の(下位)および(上位)の値が設定されている。メモリ空間アドレスA79Ah〜A79Bhには、CALLV13の(下位)および(上位)の値が設定されている。メモリ空間アドレスA79Ch〜A79Dhには、CALLV14の(下位)および(上位)の値が設定されている。メモリ空間アドレスA79Eh〜A79Fhには、CALLV15の(下位)および(上位)の値が設定されている。
割込処理用ベクタテーブルのメモリ空間アドレスA7A0h〜A7A1hには、INT/NMIの(下位)および(上位)の値が設定されている。メモリ空間アドレスA7A2h〜A7A3hには、CTC0の(下位)および(上位)の値が設定されている。メモリ空間アドレスA7A4h〜A7A5hには、CTC1の(下位)および(上位)の値が設定されている。メモリ空間アドレスA7A6h〜A7A7hには、CTC2の(下位)および(上位)の値が設定されている。
[HWパラメータ一覧]
次に、図12で示したROM208のメモリ空間におけるHWパラメータについて図14を用いて説明する。
図14に示すように、メモリ空間アドレスA7A8hはシンボルHCSATR0が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7A9hはシンボルHCSATR1が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7AAhはシンボルHCSATR2が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7ABhはシンボルHCSATR3が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7AChはシンボルHCSATR4が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7ADhはシンボルHCSATR5が対応付けされ、CS/PWM設定に用いられる。メモリ空間アドレスA7AEhはシンボルHCSATRDが対応付けされ、CS/PWM設定に用いられる。
メモリ空間アドレスA7AFhはシンボルHPRSTが対応付けされ、定期リセット設定に用いられる。
メモリ空間アドレスA7B0hはシンボルHRDMDが対応付けされ、乱数回路動作モード設定に用いられる。
メモリ空間アドレスA7B1hはシンボルHSYSCNTが対応付けされ、システム設定に用いられる。
メモリ空間アドレスA7B2hはシンボルHSYSCNTが対応付けされ、リセット期間/INP端子設定に用いられる。
メモリ空間アドレスA7B3h〜A7B4hはシンボルHRPGENDが対応付けされ、プログラムエンドアドレスの設定に用いられる。
メモリ空間アドレスA7B5h〜A7B6hはシンボルHRAMSTATが対応付けされ、RAMアクセス禁止アドレスの設定に用いられる。
メモリ空間アドレスA7B7h〜A7B8hはシンボルHRAMENDが対応付けされ、RAMアクセス禁止アドレスに用いられる。
メモリ空間アドレスA7B9h〜A7CChはシンボルHSWSTSが対応付けされ、SWステータスの設定に用いられる。
メモリ空間アドレスA7CDh〜A7CFhはメーカコードの設定に用いられる。
メモリ空間アドレスA7D0h〜A7D7hは製品コードの設定に用いられる。
メモリ空間アドレスA7D8h〜A7FFhはセキュリティコードの設定に用いられる。
[リセット期間/INP端子設定]
次に、図14に示すHWパラメータにおけるリセット期間/INP端子設定について図15を用いて説明する。
図15に示すように、メモリ空間アドレスA7B2hのビット7にシンボルHPORTENが対応付けされている。HPORTENではINP端子機能設定の設定が行われる。そして、0に設定されたときには割込入力端子として使用せず、1に設定されたときは割込入力端子として使用するように設定される。
また、メモリ空間アドレスA7B2hのビット6にシンボルHPORTMDが対応付けされている。HPORTMDでは割込入力設定および自動相互認証の設定が行われる。そして、0に設定されたときはINT割込入力となり、1に設定されたときはNMI割込入力となるように設定される。
また、メモリ空間アドレスA7B2hのビット5にシンボルHRTMENが対応付けされている。HRTMENではリセット期間延長設定の設定が行われる。そして、0に設定されたときは延長せず、1に設定されたときは延長するように設定が行われる。なお、延長時間は固定時間+変動時間となる。
また、メモリ空間アドレスA7B2hのビット4にシンボルHRRDENが対応付けされている。HRRDENではリセット期間延長設定の設定が行われる。そして、A7B2hのビット4で、0に設定されたときは常に0msecで変動せず、MCLK(システムクロック)=20MHzの場合において、1に設定されたときは0msec〜1275msec(5msec、256種類)で変動するように設定される。なお、システムリセットの都度前回と異なる時間となる。
また、メモリ空間アドレスA7B2hのビット3〜0にシンボルHRSTMが対応付けされている。HRSTMでは、固定時間の設定が行われる。そして、MCLK=20MHzの場合において、0hに設定されたときには1.0secとなるように設定される。また、1hにセットされたときには2.0secとなるように設定される。以降、設定値に応じて1.0secずつ長くなり、最大で30.0secになるように設定される。
以上のように、HPORTENとHPORTMDの設定で、割込入力/汎用入力端子(INP)にLレベルの信号が入力された場合に割込処理を起動するか否か、またその割込要求がINT割込またはNMI割込を選択することができる。
また、HORTENの設定状態にかかわらず、INP端子の入力レベルを外部信号入力/リセット要因レジスタ(PINSTS)から読み出すことができるので汎用入力としても使用することができる。
また、HETMENに0を設定するとHRRDEN、HRSTMの設定にかかわらずリセット期間は延長されない。
また、HRTMENに1を設定すると400.5msec(MCLK=20MHzの場合)のシステムリセット期間の後、プログラムを開始するまでの期間を延長することができる。延長する時間はHRSTMで設定される固定時間と、HRRDENで設定される変動時間の合計となる。
例えば、HRTMEN=1、HRRDEN=1、HRSTM4hを設定した場合のシステムリセット時間は次のようになる。
400.5msec+5.0msec+(0〜1275msec)=5.4005sec〜6.6755sec(MCLK=20MHzの場合)
[プログラムエンドアドレス]
次に、図14に示すHWパラメータにおけるプログラムエンドアドレスについて図16を用いて説明する。
メモリ空間アドレスにおける「8000h〜A6FFh」は、図12に示すように「プログラム/データ」を格納するための領域として定められている。しかしながら、「プログラム/データ」の容量は遊技機の制御の内容によって異なり、これら領域の全てに格納されるわけではない。本マイクロコンピュータでは、プログラムエンドアドレスを設定することにより「プログラム/データ」が格納されている領域の範囲を設定して、「プログラム/データ」が格納されていない領域にアクセスがあった場合、イリーガルアクセスリセットが発生するように設定することができる。なお、「プログラム/データ」が格納されている領域の範囲についてエンドアドレス(最終アドレス)を指定することで設定を行っているが、スタートアドレス(開始アドレス)を指定するようにしてもよい。また、離間した複数領域を設定できるようにしてもよい。
図16に示すように、メモリ空間アドレスA7B3hのビット7〜0にシンボルHPRGEND(下位)が対応付けされ、メモリ空間アドレスA7B4hのビット7〜0にシンボルHPRGEND(上位)が対応付けされている。HPRGENDではプログラムエンドアドレスの設定が行われる。そして、8000h〜A6FFhで使用するROM領域の最終アドレスが設定される。
なお、HPRGENDに8000h〜A6FFh以外を設定するとエラー状態となってマイクロコンピュータは起動しない。HPRGENDには最終アドレスを設定する。ROM領域全てをアクセス可能とする場合にはHPRGEND=A6FFhを設定する。HPRGENDで設定したアドレス+1からA6FFhまでの領域をアクセスした場合はイリーガルアクセスリセットが発生する。
図17に示すように、例えば、HPRGEND=8852hを設定した場合は、8852hにアクセスするとイリーガルアクセスリセットが発生する。
[RAMアクセス禁止アドレス]
次に、図14に示すHWパラメータにおけるRAMアクセス禁止アドレスについて図18を用いて説明する。
図18に示すように、メモリ空間アドレスA7B5hのビット7〜0にシンボルHRAMSTAT(下位)が対応付けされ、メモリ空間アドレスA7B5hのビット7〜0にシンボルHRAMSTAT(上位)が対応付けされている。HRAMSTATではRAMアクセス禁止スタートアドレスの設定が行われる。そして、0000h〜01FFhにアクセス禁止するRAM領域の開始アドレスが設定される。
メモリ空間アドレスA7B7hのビット7〜0にシンボルHRAMEND(下位)が対応付けされ、メモリ空間アドレスA7B8hのビット7〜0にシンボルHRAMEND(上位)が対応付けされている。HRAMENDではRAMアクセス禁止エンドアドレスの設定が行われる。そして、0000h〜01FFhにアクセス禁止するRAM領域の最終アドレスが設定される。
なお、HRAMSTATとHRAMENDに設定する値が次の関係を満たさない場合はエラー状態としてマイクロコンピュータは起動しない。
0000h≦HRAMSTAT≦HRAMEND≦01FFh
また、アクセス禁止するRAM領域の開始アドレスをHRAMSTATに設定し、アクセス禁止するRAM領域の最終アドレスをHRAMENDに設定する。
RAM領域全てにアクセスする場合は、HRAMSTAT=0000h、HRAMEND=0000hに設定する。
また、HRAMSTATとHRAMENDで設定されたアクセス禁止領域にアクセスした場合はイリーガルアクセスリセットが発生する。
図19に示すように、例えば、HRAMSTAT=00F2h、HRAMEND=01A7hを設定した場合は、002Fh〜01A7hにアクセスするとイリーガルアクセスリセットが発生する。また、HRAMSTATとHRAMENDの設定は、RAMプロテクトレジスタ(RAMPT)の設定で無効にすることもできる。
[SWステータス]
次に、図14に示すHWパラメータにおけるSWステータスについて図20を用いて説明する。
図20に示すように、メモリ空間アドレスA7B9hのビット7〜0にシンボルHSWSTS0(下位)が対応付けされ、メモリ空間アドレスA7B8hのビット7〜0にシンボルHSWSTS0(上位)が対応付けされている。HSWSTS1〜9も同様である。そして、HSWSTS0〜9ではSWステータス0〜9の設定が行われる。そして、0000h〜01FFhに検査装置で監視するRAMのアドレスが設定される。
なお、HSWSTS0〜9に0000h〜01FFh以外を設定するとエラー状態としてマイクロコンピュータは起動しない。
また、HSWSTS0〜9にHWパラメータのRAMアクセス禁止アドレス(HRAMSTAT、HRAMEND)で設定したRAMアクセス禁止領域のアドレスを設定するとエラー状態としてマイクロコンピュータは起動しない。
また、検査装置で監視するアドレスをHSWSTS0〜9に設定する。
また、SWステータスを使用しない場合は0000hを設定する。ただし、0000hがRAMアクセス禁止領域に設定されている場合は、エラー状態としてマイクロコンピュータは起動しないので、RAMアクセス禁止領域に0000hを含めないことが好適である。
[イリーガルアクセスリセットが発生する条件]
次に、図11に示すマイクロコンピュータにおいてイリーガルアクセスリセットが発生する条件について図21を用いて説明する。図21に示す場合には、不正アクセスと判断してイリーガルアクセスリセットが発生する。イリーガルアクセスリセットが発生すると、CPUコアだけがリセットされ、内部機能はリセットされない。
図21に示すように、CS/PWM設定(シンボル名:HCSATR0〜HCSATR5)において、設定内容がHCSRW0=00;CS機能無効(HCSRW1〜HCSRW23も同様)のときは、CS0(I/O空間のC0h)へのアクセス(CS1〜CS23も同様)があったことがイリーガルアクセスリセットの発生条件となる。
また、CS/PWM設定(シンボル名:HCSATR0〜HCSATR5)において、設定内容がHCSRW0=01;R0信号と同期(HCSRW1〜HCSRW23も同様)のときは、CS0(I/O空間のC0h)への書き込み(CS1〜CS23も同様)があったことがイリーガルアクセスリセットの発生条件となる。
また、CS/PWM設定(シンボル名:HCSATR0〜HCSATR5)において、設定内容がHCSRW0=10;W0信号と同期(HCSRW1〜HCSRW23も同様)のときは、CS0(I/O空間のC0h)からの読み出し(CS1〜CS23も同様)があったことがイリーガルアクセスリセットの発生条件となる。
また、CS/PWM設定(シンボル名:HCSMOD)において、設定内容がHCSMD=0;CSモードのときは、ECS領域(I/O空間のD0h〜D7h)へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
また、CS/PWM設定(シンボル名:HCSMOD)において、設定内容がHCSMD=1;ECSモードのときは、CS15(I/O空間のCFh)へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、システム設定(シンボル名:HSYSCNT)において、設定内容がHRGACS=0;メモリ空間のときは、内部レジスタへのI/Oアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、システム設定(シンボル名:HSYSCNT)において、設定内容がHRGACS=1;I/O空間のときは、内部レジスタへのメモリアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、システム設定(シンボル名:HSYSCNT)において、設定内容がHRGACS=1;I/O空間のときは、内部レジスタへのメモリアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、プログラムエンドアドレス(シンボル名:HPRGEND)の設定に関して、プログラムエンドアドレスとして設定されたアドレスの次のアドレスからA6FFhの間の領域へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、RAMアクセス禁止アドレス(シンボル名:HRAMSTAT、HRAMEND)に関して、RAMアクセス禁止アドレスとして設定されたRAM領域の開始アドレスと最終アドレスの間の領域へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、内部機能レジスタ(シンボル名:MKCODE)に関し、MKCODEへの書き込みがあったことがイリーガルアクセスリセットの発生条件となる。
次に、内部機能レジスタ(シンボル名:PRCODE)に関し、PRCODEへの書き込みがあったことがイリーガルアクセスリセットの発生条件となる。
次に、内部機能レジスタ(シンボル名:CPCODE)に関し、CPCODEへの書き込みがあったことがイリーガルアクセスリセットの発生条件となる。
次に、ROM領域として設定されている領域(8000h〜A7FFh)への書き込みがあったこと、ROMコメント領域(A700h〜A77Fh)へのアクセスがあったこと、HWパラメータ領域(A7A8h〜A77Fh)へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、メモリ空間のうち未使用領域(200h〜FFFh、10B1h〜7FFFh、A800h〜FFFh)へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、I/O空間のうち未使用領域(B1h〜BFh)へのアクセスがあったことがイリーガルアクセスリセットの発生条件となる。
次に、CPUコアが未定義命令をフェッチしたことがイリーガルアクセスリセットの発生条件となる。
[起動しない条件]
次に図11に示すマイクロコンピュータが起動しない条件について図22を用いて説明する。図22に示す条件を満たした場合はエラー状態と判断してマイクロコンピュータは起動しない。
図22に示すように、ベクタテーブルの設定(関係するシンボル名:HPRGEND)においては、0000hと8000h〜HPRGEND以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。
CS/PWM設定(関係するシンボル名:HCSMD、HCSRW16〜HCSRW23)においては、CS/PWM設定で設定した値がHCSMD=0、かつHCSRW16が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。HCSRW17〜HCSRW23も同様である。
CS/PWM設定(関係するシンボル名:HCSMD、HCSRW15)においては、HCSMD=1、かつHCSRW15が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。
CS/PWM設定(関係するシンボル名:HPW0MD〜HPW3MD、HCSRW11〜HCSRW14)においては、HPW0MD=1、かつHCSRW11が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。また、HPW1MD=1、かつHCSRW12が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。HPW2MD=1、かつHCSRW13が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。HPW3MD=1、かつHCSRW14が00以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。
CS/PWM設定(関係するシンボル名:HCSMOD)においては、HCSMODのビット4=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。また、HCSMODのビット5=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。また、HCSMODのビット6=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。
乱数回路動作モード設定(関係するシンボル名:HRDMD)においては、HEDMDのビット3=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。
乱数回路動作モード設定(関係するシンボル名:HFRCLK)においては、HFRCLK=1を設定し、かつ乱数外部クロック(EXCLK)入力がないときにマイクロコンピュータが起動しない条件が満たされる。
乱数回路動作モード設定(関係するシンボル名:HRDMYE)においては、HRDMYE=1の場合にマイクロコンピュータが起動しない条件が満たされる。
システム設定(関係するシンボル名:HSYSCNT)においては、HSYSCNTのビット5=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。また、HSYSCNTのビット6=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。また、HSYSCNTのビット7=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。なお、HSYSCNTのビット5〜7は、いずれの機能の設定にも用いられていない未使用ビットであり、通常は0が設定される。
システム設定(関係するシンボル名:HLNKMD、HAUTLK)においては、HLNKMD=0、かつHAUTLK=1が設定されるとマイクロコンピュータが起動しない条件が満たされる。
プログラムエンドアドレス(関係するシンボル名:HPRGEND)においては、HPRGENDに8000h〜A6FF以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。
RAMアクセス禁止アドレス(関係するシンボル名:HRAMSTAT、HRAMEND)においては、0000h≦HRAMSTAT≦HRAMEND≦01FFhを満たさない場合はマイクロコンピュータが起動しない条件が満たされる。
SWステータス(関係するシンボル名:HSWSTS0〜HSWSTS9)においては、HSWSTS0が0000h〜01FFh以外の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。HSWSTS1〜HSWSTS9も同様である。
SWステータス(関係するシンボル名:HSWSTS0〜HSWSTS9、HRAMSTAT、HRAMEND)においては、HSWSTS0がHRAMSTATとHRAMENDで設定したアクセス禁止権領域の値が設定されるとマイクロコンピュータが起動しない条件が満たされる。HSWSTS1〜HSWSTS9も同様である。
[リセット要因による動作の変化]
次に、図11に示すマイクロコンピュータにおいてリセット要因による動作の変化について図23を用いて説明する。図23に示すように4種類のリセット要因により動作が変化する。
システムリセットが行われた場合にはシステムリセット期間が設定され、リセット要因がWDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはシステムリセット期間が設定されない。
また、システムリセットによりリセット期間が延長された場合には、HWパラメータでリセット期間の延長を有効に設定した場合にリセット期間の延長が設定され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかによりリセット期間が延長されなかった場合には、リセット期間の延長が設定されない。
また、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には、CPUコアが初期化される。
また、システムリセットが行われた場合には入出力端子は初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には、入出力端子は初期化されない。
また、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合でもRAMの内容は変化しない。
また、システムリセット、WDTリセットのいずれかが行われた場合にはRAMはプロテクト状態に設定され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはRAMはプロテクト状態に設定されない。
また、システムリセット、WDTリセットのいずれかが行われた場合にはCTCは初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはCTCは初期化されない。
また、システムリセットが行われた場合にはWDTは初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはWDTは初期化されない。
また、システムリセットが行われた場合にはWDT循環クリアモードのクリア値の順番は初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはWDT循環クリアモードのクリア値の順番は初期化されない。
また、システムリセットが行われた場合にはシリアル通信は送受信を中断して初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合には割込コントローラは初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には割込コントローラは初期化されない。
また、システムリセットが行われた場合には、外部信号入力/リセット要因、レジスタのリセット要因、PINSTSのビット5〜7は初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合には乱数回路は初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には乱数回路は初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合には乱数の初期値は毎回異なり、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には乱数の初期値はリセット前のスタート値に設定される。
また、システムリセットが行われた場合には、乱数エラーステータスレジスタは初期化され、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には初期化されない。
また、システムリセットが行われた場合には、汎用初期値用乱数は毎回異なり、WDTリセット、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には汎用初期値用乱数は変化しない。
また、システムリセット、WDTリセットのいずれかが行われた場合にはM1カウンタは初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはM1カウンタは初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合には定期リセットモニタは初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には定期リセットモニタは初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合には演算機能は初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合には演算機能は初期化されない。
また、システムリセット、WDTリセットのいずれかが行われた場合にはPWM出力は初期化され、定期リセット、イリーガルアクセスリセットのいずれかが行われた場合にはPWM出力は初期化されない。
[内部機能レジスタ]
次に、図12に示す内部機能レジスタについて図24を用いて具体的に説明する。なお、図中のSは「システムリセット」、Wは「WDTリセット」を示す。また、R/W(Read/Write)は、R/Wが読み書き可能、Rが読み出しのみ可能、Wが書き込みのみ可能であることを示す。また、一部機能を省略して説明する。
なお、図示を省略した機能には、乱数回路で更新する乱数値の最大値を定める乱数最大値レジスタや、乱数値を取得する際の動作を定める外部ラッチ信号許可レジスタ、外部ラッチ信号モードレジスタなどの乱数回路に関わるレジスタが含まれており、これらの初期化要因はシステムリセットとWDTリセットになっている(図23参照)。
図24に示すように、I/O空間アドレス00h、メモリ空間アドレス1000hにはRAMプロテクトレジスタ(RAMPT)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス01h、メモリ空間アドレス1001hにはCTCコントロールレジスタ(TMCNT0)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス02h、メモリ空間アドレス1002hにはCTCコントロールレジスタ(TMCNT1)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス03h、メモリ空間アドレス1003hにはCTCコントロールレジスタ(TMCNT2)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス04h及び05h、メモリ空間アドレス1004hおよび1005hにはCTCデータレジスタ(CTC0)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス06h及び07h、メモリ空間アドレス1006hおよび1007hにはCTCデータレジスタ(CTC1)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス08h及び09h、メモリ空間アドレス1008hおよび1009hにはCTCデータレジスタ(CTC2)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス0Ah、メモリ空間アドレス100AhにはWDTコントロールレジスタ(WDTCNT)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス0Bh、メモリ空間アドレス100BhにはWDTクリアレジスタ(WDTCLR0)が割り当てられている。そして、R/WはWとなっている。なお、初期化要因はない。
I/O空間アドレス0Ch、メモリ空間アドレス100ChにはWDTクリアレジスタ(WDTCLR1)が割り当てられている。そして、R/WはWとなっている。なお、初期化要因はない。
I/O空間アドレス0Dh、メモリ空間アドレス100DhにはWDTクリアレジスタ(WDTCLR2)が割り当てられている。そして、R/WはWとなっている。なお、初期化要因はない。
I/O空間アドレス0Eh、メモリ空間アドレス100EhにはWDTクリアレジスタ(WDTCLR3)が割り当てられている。そして、R/WはWとなっている。なお、初期化要因はない。
I/O空間アドレス23h、メモリ空間アドレス1023hには割込要求レジスタ(IRR)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス24h、メモリ空間アドレス1024hには割込許可レジスタ(IRR)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス25h、メモリ空間アドレス1025hには割込優先順位レジスタ(IPR)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス26h、メモリ空間アドレス1026hには外部信号入力/リセット要因レジスタ(PINSTS)が割り当てられている。そして、R/WはR/W、初期化要因はSとなっている。
I/O空間アドレス94h、メモリ空間アドレス1094hには定期リセットモニタレジスタ(ITRMN)が割り当てられている。そして、R/WはR、初期化要因はS,Wとなっている。
I/O空間アドレス95h、メモリ空間アドレス1095hには演算データレジスタ(CDAT)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス96h、メモリ空間アドレス1096hには水平パリティ演算結果レジスタ(CPTY)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス97h及び98h、メモリ空間アドレス1097h及び1098hにはチェックサム演算結果レジスタ(CSUM)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス99h及び9Ah、メモリ空間アドレス1099h及び109AhにはCRC16演算結果レジスタ(CCRC)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス9Bh、メモリ空間アドレス109BhにはPWMコントロールレジスタ(PWMC0)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス9Ch、メモリ空間アドレス109ChにはPWMコントロールレジスタ(PWMC1)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス9Dh、メモリ空間アドレス109DhにはPWMコントロールレジスタ(PWMC2)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレス9Eh、メモリ空間アドレス109EhにはPWMコントロールレジスタ(PWMC3)が割り当てられている。そして、R/WはR/W、初期化要因はS,Wとなっている。
I/O空間アドレスA2h及びA3h及びA4h、メモリ空間アドレス10A2h及び10A3h及び10A4hにはメーカコードレジスタ(MKCODE)が割り当てられている。そして、R/WはRとなっている。なお、初期化要因はない。
I/O空間アドレスA5h〜ACh、メモリ空間アドレス10A5h〜10AChには製品コードレジスタ(PRCODE)が割り当てられている。そして、R/WはRとなっている。なお、初期化要因はない。
I/O空間アドレスADh〜B0h、メモリ空間アドレス10ADh〜10B0hにはチップコードレジスタ(CPCODE)が割り当てられている。そして、R/WはRとなっている。なお、初期化要因はない。
[RAMプロテクト]
次に、RAMプロテクトについて説明する。RAMプロテクトは、間違った操作によるRAMの書き換え防止する機能である。
RAMプロテクトの動作は、次のようになる。システムリセット又はWDTリセットが発生した後はRAMプロテクト状態になっている。RAMプロテクト状態ではRAMからデータを読み出すことができるが、RAMへデータを書き込むことができない。RAMへデータを書き込む場合はRAMプロテクトレジスタ(RAMPT)にRAMプロテクトを無効に設定する。RAMPTのRAMアクセス禁止領域の設定を無効に設定すると、HWパラメータのRAMアクセス禁止領域を有効に設定しても、HRAMSTAT=0000hかつHRAMEND=0000hを設定している場合は、RAMアクセス禁止領域は存在しないので、イリーガルアクセスリセットは発生しない。
[RAMプロテクトレジスタ]
次に、図24で示した内部機能レジスタにおけるRAMプロテクタレジスタについて図25を用いて説明する。
図25に示すように、RAMプロテクトレジスタでは、メモリ空間アドレス1000h(I/O空間アドレス00h)のビット7〜0にシンボルRAMPTが対応付けされている。RAMPTでは、RAMプロテクトの設定と、RAMアクセス禁止領域のコントロールが行われる。そして、00hではRAMアクセス禁止領域が無効に設定され、RAMプロテクトが無効に設定される。また、01hではRAMアクセス禁止領域が無効に設定され、RAMプロテクトが有効に設定される。また、80hではRAMアクセス禁止領域が有効に設定され、RAMプロテクトが無効に設定される。また、81hではRAMアクセス禁止領域が有効に設定され、RAMプロテクトが有効に設定される。これらの値以外では状態が保持される。なお、R/WはR/Wになり、初期値は81hになっている。
[カウンタタイマ(CTC)]
次に、CTCについて図26を用いて説明する。図11に示すマイクロコンピュータでは、16ビットのCTCが3チャンネル搭載されている。
CTCの動作は次のようになる。CTCは設定されたタイマ値をダウンカウントし、0000hに達したときに割込コントローラへの割込要求信号を出力する。このときの0000hをターミナルカウントと称する。CTCの各チャンネル(CTC0〜2)は、独立して動作させることができるので、3種類の時間間隔で割込を発生させることができる。
図26に示すように、CTC0、CTC1は、CTC2のターミナルカウントをクロック源とすることができるので長い時間間隔を容易に作ることができる。例えば、CTC0のクロック源にCTC2のターミナルカウントを設定し、CTC2のタイマ値を2msec、CTC0を65,000カウントに設定した場合は、2msec×65,000=130secをカウントすることができる。CTCは、システムリセットまたはWDTリセットが発生した場合に初期化される。
CTCの動作モードは以下のようになる。CTCには、1回だけ動作するワンショットタイマモードと繰り返し動作するインターバルタイマモードの2つの動作モードがある。ワンショットタイマモードは、設定したタイマ値からダウンカウントを行い、ターミナルカウントに達するとダウンカウントを停止する。そして、ターミナルカウントに達したときに割込要求が1回発生する。
タイマ値に5を設定した場合:5→4→3→2→1→0(停止)
インターバルタイマモードは、設定したタイマ値からダウンカウントを行い、ターミナルカウントに達すると設定したタイマ値から再びダウンカウントを行う。そして、ターミナルカウントに達するたびに割込要求が繰り返し発生する。
タイマ値に5を設定した場合:5→4→3→2→1→5→4→・・・(繰り返し)
タイマ値の設定に関して、CTCのタイマ値は、任意値または4種類の固定値(1msec、2msec、4msec、1.4890msec)を設定することができる。
任意値の設定方法は、CTCデータレジスタ(CTC0〜2)にタイマ値を設定し、CTCコントロールレジスタ(TMCNT0〜2)のタイマ値設定方法、動作モード、クロック分周、クロック源を設定する。
CTC0で3msecごとに割込を発生させる設定例
1.CTC0=012Ch タイマ値=300
2.TMCNT=02h タイマ値設定方法=任意値、動作モード=インターバルタイマモード、クロック分周=10μsec、クロック源=MLCKの分周
固定値の設定方法は、CTCコントロールレジスタ(TMCNT0〜2)のタイマ値設定方法、動作モード、固定値を設定する。
CTC0で4msecごとに割込を発生させる設定例
1.TMCNT=0Bh タイマ値設定方法=固定値、動作モード=インターバルタイマモード、固定値設定=4msec
CTC0(CTC0データレジスタ)の設定は不要。
CTCの起動は、システムリセット後及びWDTリセット後は、CTCのカウント動作を停止している。
CTCの起動は次の順番で設定する。
1.CTCデータレジスタ(CTC0〜2)にタイマ値を設定する。
2.CTCコントロールレジスタ(TMCNT0〜2)を設定する。
なお、タイマ値設定方法に固定値を設定する場合は、1.のCTCデータレジスタ(CTC0〜2)の設定は不要である。TMCNT0〜2を設定するだけで起動する。CTCがカウント動作中であってもTMCNT0〜2を設定すると、CTC0〜2とTMCNT0〜2の設定内容で更新される。カウント中のタイマ値はCTC0〜2の設定値から再度ダウンカウントする。
[CTCコントロールレジスタ]
次に、図24で示した内部機能レジスタにおけるCTCコントロールレジスタについて図27を用いて説明する。
図27に示すように、CTCコントロールレジスタでは、メモリ空間アドレス1001h(I/O空間アドレス01h)のビット7は未使用であり、常に0となる。なお、R/WはRになり、初期値は0になっている。
メモリ空間アドレス1001h(I/O空間アドレス01h)のビット6にはシンボルC0CKCELが対応付けされ、メモリ空間アドレス1002h(I/O空間アドレス02h)のビット6にはシンボルC1CKCELが対応付けされている。C0CKCEL、C1CKCELでは、CTC0〜1のクロック源の設定が行われる。そして、0ではMCLKの分周に設定され、1ではCTC2のターミナルカウントに設定される。なお、R/WはR/Wになり、初期値は0になっている。
なお、C0CKCELに0を設定した場合はCTC0をC0CKCELに設定したクロックでダウンカウントする。C0CKCELに1を設定した場合はCTC0をCTC2のターミナルカウントでダウンカウントする。C1CKCELに0を設定した場合はCTC1をC1CKCELに設定したクロックでダウンカウントする。C1CKCELに1を設定した場合はCTC1をCTC2のターミナルカウントでダウンカウントする。
メモリ空間アドレス1001h(I/O空間アドレス01h)のビット4〜5にはシンボルC0CLKが対応付けされ、メモリ空間アドレス1002h(I/O空間アドレス02h)のビット5〜4にはシンボルC1CLKが対応付けされ、メモリ空間アドレス1003h(I/O空間アドレス03h)のビット4〜5にはシンボルC2CLKが対応付けされている。C0CLK、C1CLK、C2CLKでは、CTC0〜2のクロック分周設定が行われる。そして、MLCK=20MHzの場合に、00では10μsecに設定され、01では1μsecに設定され、10では5μsecに設定され、11では20μsecに設定される。なお、R/WはR/Wになり、初期値は0になっている。
なお、CTC2は、C2CLKに設定したクロックでダウンカウントする。
メモリ空間アドレス1001h(I/O空間アドレス01h)のビット3〜2にはシンボルTMCEL0が対応付けされ、メモリ空間アドレス1002h(I/O空間アドレス02h)のビット2〜3にはシンボルTMCEL1が対応付けされ、メモリ空間アドレス1003h(I/O空間アドレス03h)のビット2〜3にはシンボルTMCEL2が対応付けされている。TMCEL0、TMCEL1、TMCEL2では、CTC0〜2の固定値の設定が行われる。そして、00では1msec(タイマ値=03E8h)に設定され、01では2msec(タイマ値=07D0h)に設定され、10では4msec(タイマ値=0FA0h)に設定され、11では1.489msec(タイマ値=05D1h)に設定される。なお、R/WはR/Wになり、初期値は0になっている。
なお、TMCEL0〜2の設定時間は、HWパラメータのシステム設定(HSYSCNT)のMCLK周波数設定(HSYSCLK)がシステムクロック(MCLK)と同じ周波数に設定された場合に所定の時間となる。
メモリ空間アドレス1001h(I/O空間アドレス01h)のビット1にはシンボルTMMOD0が対応付けされ、メモリ空間アドレス1002h(I/O空間アドレス02h)のビット1にはシンボルTMMOD1が対応付けされ、メモリ空間アドレス1003h(I/O空間アドレス03h)のビット1にはシンボルTMMOD2が対応付けされている。TMMOD0、TMMOD1、TMMOD2では、CTC0〜2の動作モードの設定が行われる。そして、0ではワンショットタイマモードに設定され、1ではインターバルタイマモードに設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス1001h(I/O空間アドレス01h)のビット0にはシンボルTMFVM0が対応付けされ、メモリ空間アドレス1002h(I/O空間アドレス02h)のビット0にはシンボルTMFVM1が対応付けされ、メモリ空間アドレス1003h(I/O空間アドレス03h)のビット1にはシンボルTMFVM2が対応付けされている。TMFVM0、TMFVM1、TMFVM2では、CTC0〜2のタイマ値設定方法の設定が行われる。そして、0では任意値に設定され、1では固定値に設定される。なお、R/WはR/Wになり、初期値は0になっている。
なお、TMFVM0〜2に0を設定した場合はTMCEL0〜2の設定は無効である。TMFVM0〜2に1を設定した場合はC0CKSEL、C1CKSEL、C0CLK、C1CLK、C2CLKの設定は無効である。このとき、TMSEL0〜2の設置値により、CTC0〜2のタイマ値が03E8h、07D0h、0FA0h、05D1hのいずれかでかつクロック分周は1μsecで動作する。なお、C0CLK、C1CLK、C2CLK、CTCデータレジスタ(CTC0〜2)の設定値には影響を与えない。
[CTCデータレジスタ]
次に、図24で示した内部機能レジスタにおけるCTCコントロールレジスタについて図28を用いて説明する。
図28に示すように、CTCコントロールレジスタでは、メモリ空間アドレス1004h(I/O空間アドレス04h)のビット7〜0にはシンボルCTC0(下位)が対応付けされ、メモリ空間アドレス1005h(I/O空間アドレス05h)のビット7〜0にはシンボルCTC0(上位)が対応付けされている。CTC0ではCTC0のタイマ値の設定が行われる。読み出す場合はカウント値が読み出される。書き込む場合は0000hに65,536、0001hに1、以降1ずつ書き込まれる値が増えていき、FFFFhに65,535が書き込まれる。なお、R/WはR/Wになり、初期値はFFFFhになっている。
メモリ空間アドレス1006h(I/O空間アドレス06h)のビット7〜0にはシンボルCTC1(下位)が対応付けされ、メモリ空間アドレス1007h(I/O空間アドレス07h)のビット7〜0にはシンボルCTC1(上位)が対応付けされている。CTC1ではCTC1のタイマ値の設定が行われる。その他、CTC1はCTC0と同様である。
メモリ空間アドレス1008h(I/O空間アドレス08h)のビット7〜0にはシンボルCTC2(下位)が対応付けされ、メモリ空間アドレス1009h(I/O空間アドレス09h)のビット7〜0にはシンボルCTC2(上位)が対応付けされている。CTC2ではCTC2のタイマ値の設定が行われる。その他、CTC2はCTC0と同様である。
以上のように、CTCデータレジスタではCTC0〜2のタイマ値を設定する。0000hを設定した場合は65,536が設定される。CTCコントロールレジスタ(TMCNT0〜2)のTMFVM0〜2に1(固定値)を設定した場合は、このレジスタは不要である。
また、このレジスタからCTC0〜2のカウント値を読み出すことができる。CTCコントロールレジスタ(TMCNT0〜2)のTMFVM0〜2に1(固定値)を設定した場合でもカウント値を読み出すことができる。カウント値の読み出しはCTCを起動した後に行う。
2バイトの読み出し命令を使用してカウント値を読み出した場合は、更新中のカウント値が読み出されることはない。1バイトの読み出し命令で上位と下位を別々に読み出した場合は、途中でカウント値が更新される場合がある。
[ウォッチドッグタイマ(WDT)]
ウォッチドッグタイマ(WDT)は、ノイズなどによるプログラムの動作異常を速やかに検出し、WDTリセットを発生することにより正常な状態に戻すことができる。
WDTは以下のように動作する。WDTは、0.1μsec単位で0.1secから12.7sec(MCLK=20MHzの場合)の時間をWDTコントロールレジスタ(WDTCNT)で設定することができる。設定した時間内にWDTをクリアしないとWDTリセットが発生し、CPUコア及び内部機能がリセットされる。WDTをクリアした時点から設定した時間内に再びWDTをクリアしないとWDTリセットが発生するので継続してWDTをクリアする必要がある。
WDTリセットが発生した場合は、その要因を外部信号入力/リセット要因レジスタ(PINSTS)により確認することができる。WDTはシステムリセットが発生した場合に初期化される。
WDTは、WDTコントロールレジスタ(WDTCNT)へ同じ値を2回連続して設定すると起動する。一度起動すると停止させることはできず、WDTCNTの設定値を変更することもできない。
図29に示すように、WDTのクリアには、単純クリアモードと循環クリアモードがある。単純クリアモードは、設定時間以外にWDTクリアレジスタ(WDTCLR0)に18hを設定してWDTをクリアする。以降、設定時間以外にWDTCLR0に18hを繰り返す。循環クリアモードは、最初の設定時間以内にWDTクリアレジスタ(WDTCLR1)に60hを設定してWDTをクリアする。次の設定時間以内にWDTクリアレジスタ(WDTCLR2)に03hを設定してWDTをクリアし、その次の設定時間以内にWDTクリアレジスタ(WDTCLR3)に24hを設定してWDTをクリアする。以後、この順番の設定を繰り返す。異なる順番や異なる値を設定した場合は、WDTはクリアされず、WDTの動作には影響を与えない。
[WDTコントロールレジスタ]
次に、図24で示した内部機能レジスタにおけるCTCコントロールレジスタについて図30を用いて説明する。
図30に示すように、WDTコントロールレジスタでは、メモリ空間アドレス100Ah(I/O空間アドレス0Ah)のビット7にはシンボルWDTNDが対応付けされている。WDTNDでは、クリアモードの設定が行われる。そして、0では単純クリアモードに設定され、1では循環クリアモードに設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス100Ah(I/O空間アドレス0Ah)のビット6〜0にはシンボルWDTが対応付けされている。WDTでは、タイマ設定が行われる。そして、MCLK=20MHzの場合に、00hではWDTの停止、01hで0.1μsecを最小値として設定することができ、7Fhで12.7secを最大値として設定することができる。なお、R/WはR/Wになり、初期値は0になっている。
なお、WDTCNTを設定する場合は、15μsec(MCLK=20MHzの場合)以内に同じ値を2回設定する。WDTCNTは一度設定すると変更できない。WDTCNTに00hを2回連続して設定するとWDTは起動しなくなる。WDTを起動した後に00hを2回連続して設定してもWDTを停止させることができない。
[WDTクリアレジスタ]
次に、図24で示した内部機能レジスタにおけるWDTクリアレジスタについて図31を用いて説明する。
図31に示すように、WDTクリアレジスタでは、メモリ空間アドレス1008h(I/O空間アドレス08h)のビット7〜0にはシンボルWDTCLR0が対応付けされている。WDTCLR0では、単純クリアモードのWDTクリアの設定が行われる。そして、18hに設定される。なお、R/WはWになる。
メモリ空間アドレス1009h(I/O空間アドレス09h)のビット7〜0にはシンボルWDTCLR1が対応付けされている。WDTCLR1では、循環クリアモードのWDTクリアの設定が行われる。そして、60hに設定される。なお、R/WはWになる。
メモリ空間アドレス100Dh(I/O空間アドレス0Dh)のビット7〜0にはシンボルWDTCLR2が対応付けされている。WDTCLR2では、循環クリアモードのWDTクリアの設定が行われる。そして、03hに設定される。なお、R/WはWになる。
メモリ空間アドレス100Eh(I/O空間アドレス0Eh)のビット7〜0にはシンボルWDTCLR2が対応付けされている。WDTCLR3では、循環クリアモードのWDTクリアの設定が行われる。そして、24hに設定される。なお、R/WはWになる。
なお、循環クリアモードのWDTクリアの順番(60h→03h→24h)は、WDTリセットが発生した場合は保持される。システムリセットが発生した場合は初期化される。
[割込コントローラ]
次に、割込コントローラについて説明する。図32を割込コントローラのブロック図である。
割込動作として、まず、割込要因と割込の設定が行われる。
割込要因は、割込入力/汎用入力端子(INP)の入力信号とCTC0〜2のターミナルカウントがあり、次の場合に割込が発生する。
1.INP端子がLレベルになった場合
2.CTC0がターミナルカウントに達した場合
3.CTC1がターミナルカウントに達した場合
4.CTC2がターミナルカウントに達した場合
INP端子を割込の入力信号として使用する場合は、HWパラメータのリセット期間/INP端子設定(HRSTCNT)のINP端子機能設定(HPORTEN)に1(割込入力端子として使用する)を設定する。
INP端子はHRSTCNTの割込入力端子設定(HPORTMD)でINT割込入力又はNMI割込入力を選択することができる。
4つの割込要因は、割込許可レジスタ(IER)により個別に割込許可の設定と禁止を設定することができる。また、割込優先順位レジスタ(IPR)により割込の優先順位を設定することができる。
NMIを除く割込は、CPUコアのプログラムステータスワード(PSW)に割り当てられている割込マスタ許可フラグ(IMF)により、割込コントローラとは独立して割込要求の受付許可と受付禁止とを設定することができる。
IMFの設定はEI(IMF=1)命令、DI(IMF=0)により行う。
CPUコアが割込許可状態(IMF=1)の場合に、割込コントローラが割込要求信号をCPUコアに出力する。
NMI割込の場合は割込許可/禁止の状態にかかわらず割込要求信号をCPUコアへ出力する。
割込要求レジスタ(IRR)、割込許可レジスタ(IER)、割込優先順位レジスタ(IPR)は、システムリセット又はWDTリセットが発生した場合に初期化される。
割込処理は、次のステップで開始される。
1.割込が発生すると、割込要因を割込要求レジスタ(IRR)にラッチする。
2.IER,IPR,IMFの設定状態に従い、CPUコアへ割込要求信号を出力する。
3.CPUコアは、M1サイクル中に割込要求の有無を判断する。
4.割込要求があった場合は、そのM1サイクルでフェッチした命令は破棄され、プログラムカウンタ(PC)は更新されない。このPCは下記「8.」においてそのスタックにプッシュされるので、割込処理終了時はこのPCからプログラムの実行を再開する。LDIR、CPIR命令実行中は、処理を繰り返す都度M1サイクルがあるが、その際も同様に割込要求の有無を判断する。
5.M1とIPEQ0を同時にLレベルとし、CPUコアが割込を受け付けたことを示す。
6.IRRの割込要因に対応するビットを0にクリアする。
7.割込要因に応じた割込処理の先頭アドレスを割込処理用ベクタテーブルから読み出す。
8.PSW、PCの上位バイト(PCH)、PCの下位バイト(PCL)の順にスタックにプッシュする。
9.IMFを0にクリアし、割込禁止状態にする。
10.割込処理用ベクタテーブルから読み出したアドレスをPCカウンタにセットする。
11.割込処理を開始する。
なお、上記処理は割込要求がINT割込とCTC0〜2割込の場合である。NMI割込の場合は、IER、IPR、IMFの設定に関係なく、割込要求信号を出力する。
割込受付処理でPSWとPCは自動的にスタックに退避されるが、CPUコアの汎用レジスタ(W,A,B,C,D,E,H,L,IX,IY)は自動的に退避されない。必要に応じてプログラムにより退避させる。
なお。汎用レジスタの退避は、PUSH命令により方法や、汎用レジスタのバンクを切り替える方法がある。例えば、割込処理が多重に起動しないシステムの場合は、通常処理は汎用レジスタのバンク0を使用し、割込処理おn先頭でLD、RBS,1(RBS=1)命令を実行し、バンク1に切り替えることでバンク0のレジスタを退避することができる。
レジスタバンクセレクタ(RBS)は、PSWに含まれるので割込処理のリターン命令(RETIまたはRETN)を実行するとPSWがスタックから復帰し、自動的にバンク0に切り替わる。
割込処理の終了は、リターン命令(RETIまたはRETN)の実行以外の特別な措置は不要である。リターン命令を実行すると、PSWとPCがスタックから復帰されて割込処理開始前の処理に戻る。割込要因のクリアは、割込要求受付時に割込コントローラが自動的に行う。IMFやRBSはPSWに含まれるので、リターン命令により自動的にスタックから復帰される。したがって、割込処理終了前にEI命令やRBS切替を実行する必要はない。
なお、EI命令を実行するとすぐに割込を受け付けることができるので、EI命令とリターン命令で連続して記述するとリターン命令をフェッチするときに新たな割込を受け付けることがある。
図33はCTC0で割込処理を実行する場合の割込処理手順の例を示す。図33の例では詳述すると以下のようになる。
1.メイン(Main)ルーチンでは汎用レジスタのバンク0(RBS=0)を使用する。
2.CTC0割込ルーチンでは汎用レジスタのバンク1(RBS=1)を使用する。
3.割込処理の終了はRETIの実行のみとなる。
[割込要求レジスタ]
次に、図24で示した内部機能レジスタにおける割込要求レジスタについて図34を用いて説明する。割込要求レジスタは、割込要求信号をラッチするレジスタである。
図34に示すように、割込要求レジスタでは、メモリ空間アドレス1023h(I/O空間アドレス23h)のビット7にはシンボルIRR3が対応付けされている。IRR3では、CTC2割込要求の設定が行われる。そして、読み出す場合は、0のときに割込要求なし設定され、1のときに割込要求ありに設定される。また、書き込む場合は、0のときにクリアに設定され、1のときに何もしないに設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス1023h(I/O空間アドレス23h)のビット6にはシンボルIPR2が対応付けされている。IRR2では、CTC1割込要求の設定が行われる。その他、IRR2はIRR3と同様である。
メモリ空間アドレス1023h(I/O空間アドレス23h)のビット5にはシンボルIPR1が対応付けされている。IRR1では、CTC0割込要求の設定が行われる。その他、IRR1はIRR3と同様である。
メモリ空間アドレス1023h(I/O空間アドレス23h)のビット4にはシンボルIPR0が対応付けされている。IRR0では、INT/NMI割込要求の設定が行われる。その他、IRR0はIRR3と同様である。
メモリ空間アドレス1023h(I/O空間アドレス23h)のビット3〜30未使用であり、常に0である。なお、R/WはRになり、初期値は0になっている。
なお、CPUコアが割込要求を受け付けると割込コントローラが自動的に0にクリアする。0を設定するとクリアすることはできるが1を設定しても割込要求をセットすることはできない。
IRRは割込許可レジスタ(IER)の前段に位置しているので、IERで割込禁止に設定されている割込要因であってもラッチする。割込が禁止されている間に発生した割込要求を無視する場合は割込を許可する前にIRRに0を設定して割込要求をクリアする。
[割込許可レジスタ]
次に、図24で示した内部機能レジスタにおける割込許可レジスタについて図35を用いて説明する。割込許可レジスタは、割込要求信号を許可するレジスタである。
図35に示すように、割込許可レジスタでは、メモリ空間アドレス1024h(I/O空間アドレス24h)のビット7にはシンボルIER3が対応付けされている。IER3では、CTC2割込許可の設定が行われる。そして、0のときに割込禁止に設定され、1のときに割込許可に設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス1024h(I/O空間アドレス24h)のビット6にはシンボルIER2が対応付けされている。IER2では、CTC1割込許可の設定が行われる。その他、IER2はIER3と同様である。
メモリ空間アドレス1024h(I/O空間アドレス24h)のビット5にはシンボルIER1が対応付けされている。IER1では、CTC0割込許可の設定が行われる。その他、IER1はIER3と同様である。
メモリ空間アドレス1024h(I/O空間アドレス24h)のビット4にはシンボルIER0が対応付けされている。IER0では、INT割込許可の設定が行われる。その他、IER0はIRR3と同様である。
メモリ空間アドレス1024h(I/O空間アドレス24h)のビット0〜3は未使用であり、常に0である。なお、R/WはRになり、初期値は0になっている。
なお、割込要求レジスタ(IER)に割込要求信号がラッチされた状態で割込を許可すると、すぐにCPUコアに対して割込要求信号を出力する。
[割込優先順位レジスタ]
次に、図24で示した内部機能レジスタにおける割込許可レジスタについて図36を用いて説明する。割込優先順位レジスタは、割込要因(INT、CTC0、CTC1、CTC2)の優先順位を設定するレジスタである。
図36に示すように、割込優先順位レジスタでは、メモリ空間アドレス1025h(I/O空間アドレス25h)のビット7〜6にはシンボルIPR3が対応付けされている。IPR3では、CTC2優先順位の設定が行われる。そして、00のときに優先順位が最も低いレベル0に設定される。また、01のときに00よりも優先順位が高く、かつ10よりも優先順位が低いレベル1に設定される。また、10のときに01よりも優先順位が高く、かつ11よりも優先順位が低いレベル2に設定される。また、11のときに最も優先順位が高いレベル3に設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス1025h(I/O空間アドレス25h)のビット5〜4にはシンボルIPR2が対応付けされている。IPR2では、CTC1優先順位の設定が行われる。その他、IPR2はIPR3と同様である。
メモリ空間アドレス1025h(I/O空間アドレス25h)のビット3〜2にはシンボルIPR1が対応付けされている。IPR1では、CTC0優先順位の設定が行われる。その他、IPR1はIPR3と同様である。
メモリ空間アドレス1025h(I/O空間アドレス25h)のビット1〜0にはシンボルIPR0が対応付けされている。IPR0では、INT優先順位の設定が行われる。その他、IPR0はIPR3と同様である。
なお、複数の割込要因が同時に発生した場合は、優先順位の高い割込要因がCPUコアに対して割込要求信号を出力する。優先順位は4レベルあり、レベル3が最上位、レベル0が最下位である。また、同レベルであれば優先順の高い方からINT,CTC0,CTC1,CTC2の順となっている。
[外部信号入力/リセット要因レジスタ]
次に、図24で示した内部機能レジスタにおける割込許可レジスタについて図37を用いて説明する。外部信号入力/リセット要因レジスタは、割込入力/汎用入力端子(INP)と乱数外部ラッチ0〜2端子(EXLATCH0〜2)の状態及びリセット発生要因を知ることができる。
図37に示すように、外部信号入力/リセット要因レジスタでは、メモリ空間アドレス1026h(I/O空間アドレス26h)のビット7にはシンボルWDTRSTが対応付けされている。WDTRSTでは、WDTリセット発生の設定が行われる。そして、読み出す場合は、0のときに発生していない、1のときに発生したと設定される。また、書き込む場合は、0のときにクリア、1のときに何もしないに設定される。なお、R/WはR/Wになり、初期値は0になっている。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット6にはシンボルIARSTが対応付けされている。IARSTでは、イリーガルリセットの発生の設定が行われる。その他、IARSTはWDTRSTと同様である。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット5にはシンボルINTRSTが対応付けされている。INTRSTでは、定期リセットの発生の設定が行われる。その他、INTSTはWDTRSTと同様である。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット4は未使用であり、常に0である。なお、R/WはRになり、初期値は0になっている。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット3にはシンボルINPSが対応付けされている。INPSでは、INP端子番号の設定が行われる。そして、0のときに端子番号=Lに設定され、1のときに端子番号=Rに設定される。なお、R/WはRになる。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット2にはシンボルLTC2が対応付けされている。LTC2では、EXLATCH2端子番号の設定が行われる。その他、LTC2はINPSと同様である。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット1にはシンボルLTC1が対応付けされている。LTC1では、EXLATCH1端子番号の設定が行われる。その他、LTC1はINPSと同様である。
メモリ空間アドレス1026h(I/O空間アドレス26h)のビット0にはシンボルLTC0が対応付けされている。LTC0では、EXLATCH0端子番号の設定が行われる。その他、LTC0はINPSと同様である。
なお、WDTRST、IARST、INTRSTは、対応するリセット要因の状態がセットされる。WDTRST、IARST、INTRSTは、システムリセットが発生するまで保持され、システムリセット後に0にクリアされる。WDTRST、IARST、INTRSTをクリアする場合は0を設定する。
INPS、LTC2、LTC1、LTC0は、対応する端子の信号レベルがそのままセットされる。INPSは、HWパラメータのリセット期間/INP端子設定(HRSTCNT)のINP端子機能設定(HPORTEN)の設定状態にかかわらずINP端子の信号レベルがセットされる。
INP端子にはCPUクロックで5クロックのノイズフィルタが挿入されている。EXLATCH0〜2端子には乱数クロックで128クロックのノイズフィルタが挿入されている。したがって、それぞれ5クロック又は128クロックの連続したLレベル信号(又はHレベル信号)が入力された場合に0(又は1)がセットされる。
PINSTSはシステムリセットが発生した場合に初期化される。
[乱数の動作]
乱数回路として、8ビット固定長乱数回路、16ビット固定長乱数回路、8ビット可変長乱数回路、16ビット可変長乱数回路を備えている。システムリセット後の1週目のスタート値はシステムリセットの都度、更新される。乱数列のパターンは自動更新される。16ビット固定長乱数はビット並びを転置することができる。16ビット固定長乱数は動作クロックをMCLKの1/2又はEXCLKの1/2から選択できる。3本の乱数外部ラッチ端子により、乱数値をラッチすることができる。乱数回路の異常を判定する機能を搭載している。
8ビット固定長乱数回路と16ビット固定長乱数回路は、システムリセットまたはWDTリセット後に自動的に起動する。また、8ビット可変長乱数回路と16ビット可変長乱数回路は、システムリセットまたはWDTリセット後は停止しており、最大値を設定すると起動する。また、乱数回路はシステムリセットまたはWDTリセットで初期化される。定期リセット、イリーガルアクセスリセットの発生では乱数機能には影響を与えず動作が継続する。
乱数回路は、初期値をスタート値としてとびとびの値をとりながら乱数値を更新し、すべての値を重複することなく1回ずつ出現させる。すべての値が出現した後は別な値をスタート値とし、かつ数列の出現パターンを別なパターンに変更し、再び全ての値をとびとびの値をとりながら更新していく。
乱数値は、乱数クロック(MCLKの1/2又はEXCLKの1/2)の立ち上がりで更新される。乱数外部ラッチ0〜2端子(EXLATCH0〜2)へ入力される信号により、乱数値をラッチすることができる。
外部ラッチ信号モードレジスタ(RDEXLM)によりラッチデータレジスタの保持又は更新を設定することができる。RDEXLMに0(保持)を設定すると、乱数ラッチデータレジスタがクリアされた状態でEXLATCH0〜2へ信号が入力された場合のみ、乱数ラッチデータレジスタに乱数値がラッチされる。乱数ラッチデータレジスタにラッチデータがある状態であるときは、EXLATCH0〜2へ信号が入力されて乱数ラッチデータレジスタが更新されずそれまでのラッチデータが保持される。RDEXLMに1(更新)を設定すると、EXLATCH0〜2へ信号が入力される都度、ラッチデータは更新される。
[定期リセットモニタレジスタ]
次に、図24で示した内部機能レジスタにおける定期リセットモニタレジスタについて図38を用いて説明する。定期リセットモニタでは定期リセットタイマ用カウンタの値を読み出すことができる。
図38に示すように、定期リセットモニタレジスタでは、メモリ空間アドレス1094h(I/O空間アドレス94h)のビット7〜0にシンボルITRMNが対応付けされている。ITRMNでは、定期リセットモニタの設定が行われる。そして、00h〜FFhのいずれかに設定される。また、なお、R/WはRになり、初期値は0になっている。
定期リセットは、HWパラメータの定期リセット設定(HPRST)により動作する。定期リセット用カウンタは、システムリセット又はWDTリセットにより00hに初期化され、定期リセット用クロックによりアップカウントされる。定期リセットモニタレジスタ(ITRMN)から定期リセット用カウンタ値を読み出すことができる。
[レジスタ構成について]
次にレジスタ構成について説明する。
[汎用レジスタについて]
図39に示すように、レジスタバンクとして、バンク0とバンク1からなる2つのレジスタバンクを備えている。各レジスタバンクには、8つの8ビット汎用レジスタW,A,B,C,D,E,H,L及び2つの16ビット汎用レジスタIX,IYを備えている。W,A,B,C,D,E,H,Lは8ビットの転送や演算などに用いられる。また、これらのレジスタを結合してWA,BC,DE,HLとして用いることもできる。WA,BC,DE,HL,IX,IYは、16ビットの転送や演算になどに用いることができる。汎用レジスタは、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセット時00h又は0000hに初期化される。
[プログラムステータスワード(PSW)]
次に図39で示すPSWについて図40を用いて説明する。PSWは、命令の演算結果や実行結果の状態を保持するレジスタであり、8種類のフラグで構成されている。PSWは、前述したCPUコアとの初期化にともない、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセット時に00hにクリアされる。
図40に示すように、PSWでは、ビット7にシンボルJF(ジャンプステータスフラグ)が対応付けされている。JFは、1バイト長のJRS命令などで使用するフラグである。図中の例で示すように、命令により、ゼロフラグがセットされる場合とキャリーフラグがセットされる場合とがある。また、図中の例で示すように、INC、DEC命令の場合にはキャリーフラグは変化しないが、キャリーフラグがセットされる条件でジャンプステータスフラグがセットされる。
また、ビット6にZF(ゼロフラグ)が対応付けされている。ZFは、演算結果又は転送データが00h(8ビットの場合)又は0000h(16ビットの場合)で1にセットされ、その他の場合は0にクリアされる。交換命令(XCH dst,src)では、dstに格納される値が0のときにセットされる。
また、ビット5にCF(キャリーフラグ)が対応付けされている。CFは、演算時のキャリー又はボローがセットされる。除算命令の場合は、0除算又は除算結果が0100h以上の場合に1がセットされる。INC,DEC命令の場合は、キャリーまたはボローが生じる場合でもキャリーフラグは変化せず値を保持する。
また、ビット4にHF(ハーフキャリーフラグ)が対応付けされている。HFは、8ビット演算時に4ビット目へのキャリー又はボローがセットされる。
また、ビット3にSF(サインフラグ)が対応付けされている。SFは、演算結果のMBSが1のときに1にセットされ、それ以外の場合0にクリアされる。
また、ビット2にVF(オーバーフローフラグ)が対応付けされている。VFは、演算結果にオーバーフローが生じたときに1にセットされ、それ以外のときに0にクリアされる。
また、ビット1にRBS(レジスタバンクセレクタ)が対応付けされている。RBSは、汎用レジスタで選択されているバンクを示している。
また、ビット0にIMF(割込マスタ許可フラグ)が対応付けされている。IMFは、DI命令でIMF=0となり、マスカブル割込の受付が禁止される。EI命令でIMF=1となり、マスカブル割込の受付が許可される。
[スタックポインタ(SP)]
次に、図39で示すSPについて図41を用いて説明する。SPはスタックの先頭番地を示す16ビットのレジスタである。
図41に示すように、PUSH命令時、サブルーチンコール時、割込受付時にポストデクリメントされ、POP命令時、リターン命令時にプリインクリメントされる。サブルーチンコール時(CALL命令、CALLV命令)は戻り番地の上位、下位の順にPUSHされる。割込受付時はプログラムステータスワード、戻り番地上位、下位の順にPUSHされる。SPは、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセット時01FFhに初期化される。
[プログラムカウンタ(PC)]
次に、図39で示すPCについて説明する。次に実行すべき命令が格納されているアドレスを示す16ビットのレジスタである。システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセットで8000hに初期化され、システムリセット、WDTリセット、定期リセット、イリーガルアクセスリセット解除後は8000h番地からプログラムの実行を開始する。
[マイクロコンピュータの起動時の動作の概要]
上記のように構成されたマイクロコンピュータでは、電力が供給され、リセット回路49、リセット回路95からリセット信号が入力されると、システムリセットを行う。
このシステムリセットにより、マイクロコンピュータの各機能がリセット要因による動作の変化(図23参照)として説明した動作を行う。例えば、CPUコアの初期化が行われ、それに伴いPSWが00hにクリアされる。従って、IMFが0となり、割込禁止状態が設定される。また、初期化要因にシステムリセットが定められている内部機能レジスタ(CTCコントロールレジスタや乱数回路に関わるレジスタなど)に初期値が設定される(図24参照)。
さらに、HWパラメータを参照して各種機能の設定を行う(図14参照)。ここで、HWパラメータにおいて、マイクロコンピュータが起動しない条件(図22参照)が満たされるか否かを判定し、満たされている場合にはマイクロコンピュータは起動しない。
その後、設定されたシステムリセット時間が経過した後に、ユーザプログラム(図12における「プログラム/データ」に格納されているプログラム)に従って図5及び図6に示す初期設定処理を実行する。
[変形例]
上記実施形態では、電断処理を図8及び図9に示すタイマ割込み処理(メイン)内で実行したが、NMI割込(マスク不能割込)によって電断処理を実行してもよい。
この場合には、割込要求信号が入力されると割込許可/禁止の状態にかかわらずNMI割込を発生させて電断処理を実行する。電断処理において、まず、電源断時直前の割込許可/禁止状態をバックアップして割込禁止に設定する。次いで、図10に示す電断処理(メイン)と同様の処理を実行する。そして、マイクロコンピュータを起動して、初期設定処理を実行したときに、図6のSa17の処理を行わず、電源断時の割込許可/禁止状態にもとづいて、割込許可/禁止状態を復帰させる。
そして、このように電断処理を実行する場合において、図13に示すベクタテーブルに設定した値が0000h、8000h〜HPRGEND以外の値の場合は図22に示す起動しない条件を満たす場合にはマイクロコンピュータの起動を制限する。すなわち、ベクタテーブルのアドレスA7A0h〜A7A1hにおけるINT/NMIの値が0000h、8000h〜HPRGEND以外の値の場合は図22に示す起動しない条件を満たす場合にはマイクロコンピュータの起動を制限する。これにより、意図しないマスク不能割込処理が行われることを防止できる。
また、本変形例において、NMI割込の割込要求信号が入力されてからNMI割込が発生するまでの期間(例えば、3サイクル)は、タイマ割込処理(メイン)の発生条件が成立してからタイマ割込が発生するまでの期間(例えば、4サイクル)よりも短くなっている。このため、好適に電断処理を実行することができる。
なお、本変形例は、電断処理(メイン)および初期設定処理において実施する例を挙げたが、サブ制御部91が実行する電断処理(サブ)及び初期設定処理(サブ)において実施してもよい。
[上記実施形態の効果]
上記実施形態では、初期設定処理でタイマ割込の設定を行った後に割込許可し、ベクタテーブルに設定した値が0000h、8000h〜HPRGEND以外の値の場合にはマイクロコンピュータの起動を制限する(本例では、図5及び図6、図22に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、CTCがカウント動作中であってもTMCNT0〜2を設定すると、CTC0〜2とTMCNT0〜2の設定内容で更新され、カウント中のタイマ値はCTC0〜2の設定値から再度ダウンカウントする(本例では、図27及び図28に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、システムリセットが行われて割込コントローラが初期化されると、割込要求レジスタ、割込許可レジスタ、割込優先順位レジスタに初期値が設定される(本例では、図23及び図32に示す部分)。
よって、意図しない設定で割込処理が実行されることを事前に防止することができる。
上記実施形態では、プログラムエンドアドレスの機能を使用しているときにおいて、シンボルがHPRGENDであるときで、設定内容がプログラムエンドアドレスのときは、HPRGEND1〜A6FFhの領域へのアクセスがあったときにイリーガルアクセスリセットが発生する。(本例では、図21に示す部分)。
よって、不正なプログラムの実行を防止することができる。
上記実施形態では、初期設定処理において、タイマ割込の設定を行う前に割込禁止に設定する(本例では、図5のSa1の処理を行う部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、乱数回路動作モード設定(関係するシンボル名:HRDMD)においてHEDMDのビット3=1の場合又はシステム設定(関係するシンボル名:HSYSCNT)においてHSYSCNTのビット5=1、HSYSCNTのビット6=1、HSYSCNTのビット7=1の場合にマイクロコンピュータの起動が制限される(本例では、図22に示す部分)。
よって、意図しない設定がなされることを事前に防止することができる。
上記実施形態では、初期設定処理で乱数発生回路の設定を行った後に割込許可し、ベクタテーブルに設定した値が0000h、8000h〜HPRGEND以外の値の場合にはマイクロコンピュータの起動を制限する(本例では、図5及び図6、図22に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、RDEXLMに0(保持)を設定すると、乱数ラッチデータレジスタがクリアされた状態でEXLATCH0〜2へ信号が入力された場合のみ、乱数ラッチデータレジスタに乱数値がラッチされる。RDEXLMに1(更新)を設定すると、EXLATCH0〜2へ信号が入力される都度、ラッチデータは更新される(本例では、[乱数の動作]に示す部分)。
よって、意図しない乱数値を取り込むことを防止することができる。
上記実施形態では、システムリセットが行われて乱数回路が初期化されると乱数回路に関する各レジスタに初期値が設定される(本例では、図23に示す部分)。
よって、意図しない設定で乱数値となる数値データが更新されることを防止することができる。
上記実施形態では、初期設定処理中は割込禁止し、ベクタテーブルに設定した値が0000h、8000h〜HPRGEND以外の値の場合にはマイクロコンピュータの起動を制限する(本例では、図5及び図6、図22に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、初期化条件に応じて初期化1〜4のいずれかを選択して実行する(本例では、[初期化について]で示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、出力ポートを初期化する前に割込禁止に設定する(本例では、図10のSm3の前に割込禁止を実行する部分)。
よって、意図しないデータが出力されることを防止することができる。
上記実施形態では、電断処理において電源断時の割込許可/禁止状態をバックアップするとともに初期設定処理で電源断時の割込許可/禁止状態を復帰させ、ベクタテーブルに設定した値が0000h、8000h〜HPRGEND以外の値の場合にはマイクロコンピュータの起動を制限する(本例では、[変形例]、図22に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、ベクタテーブルのアドレスA7A0h〜A7A1hにおけるINT/NMIの値が0000h、8000h〜HPRGEND以外の値の場合にはマイクロコンピュータの起動を制限する(本例では、[変形例]、図22に示す部分)。
よって、意図しない割込処理が実行されることを事前に防止することができる。
上記実施形態では、NMI割込信号が入力されてからNMI割込が発生するまでの期間は、タイマ割込処理(メイン)の発生条件が成立してからタイマ割込が発生するまでの期間よりも短い(本例では、[変形例]に示す部分)。
よって、電断処理を好適に実行することができる。
[その他、変形例]
上記実施形態では、メイン制御部41による初期設定処理、タイマ割込処理(メイン)、電断処理(メイン)に本発明を適用する例を挙げたが、サブ制御部91による初期設定処理(サブ)、タイマ割込処理(サブ)、電断処理(サブ)に本発明を適用してもよい。
[遊技機について]
以上のように、上記の実施の形態では、スロットマシンを例に挙げて説明したが、例えば遊技球を用いるパチンコ遊技機に上記の実施形態で示した構成を適用して、請求項に係る発明を実現することが可能である。
また、上記の実施の形態では、メダル並びにクレジットを用いて賭数を設定するスロットマシンを例に挙げて説明したが、これに限定されることなく、例えば、パチンコ遊技機で用いられている遊技球を用いて賭数を設定するスロットマシンや、クレジットのみを使用して賭数を設定する完全クレジット式のスロットマシンに上記の実施の形態で示した構成を適用して、請求項に係る発明を実現することが可能である。遊技球を遊技媒体として用いる場合は、例えば、メダル1枚分を遊技球5個分に対応させた場合に、上記の実施の形態で賭数として3を設定する場合は、15個の遊技球を用いて賭数を設定するものに相当する。
また、本発明の遊技機は、メダル及び遊技球などの複数種類の遊技用価値のうちのいずれか1種類のみを用いるものに限定されるものでなく、例えばメダル及び遊技球などの複数種類の遊技用価値を併用できるものであってもよい。すなわち、メダル及び遊技球などの複数種類の遊技用価値のいずれを用いても賭数を設定してゲームを行うことが可能であり、かつ入賞の発生によってメダル及び遊技球などの複数種類の遊技用価値のいずれをも払い出し得る遊技機も本発明の遊技機に含まれるものである。
1 スロットマシン
2L、2C、2R リール
6 MAXBETスイッチ
7 スタートスイッチ
8L、8C、8R ストップスイッチ
41 メイン制御部
41a CPU
41b ROM
41c RAM
91 サブ制御部
91a CPU
91b ROM
91c RAM

Claims (1)

  1. 遊技を行うことが可能な遊技機において、
    プログラムを記憶する記憶手段と、
    該記憶手段に記憶されたプログラムに従った処理を実行するマイクロコンピュータと、を備え、
    プログラムは、割込の発生に応じて実行される割込プログラムを含み、
    前記マイクロコンピュータは、
    前記マイクロコンピュータの起動時にユーザプログラムが記憶されている記憶領域を設定する記憶領域設定手段と、
    前記記憶領域設定手段が設定した記憶領域で記憶しているユーザプログラムに従った処理を実行するユーザプログラム実行手段と、
    前記記憶領域設定手段が設定した記憶領域以外の領域で記憶しているプログラムを前記ユーザプログラム実行手段が呼び出したときに異常制御を実行する異常制御実行手段と、
    込が許可されているときに、該割込にもとづいて割込プログラムに従った処理を実行する割込処理実行手段と、
    前記記憶手段における割込プログラムのアドレスを記憶可能な記憶領域を有するアドレス記憶手段と、
    前記アドレス記憶手段の記憶領域で記憶しているアドレスが所定の範囲にあるか否かを前記マイクロコンピュータの起動時に判定する判定手段と、
    割込プログラムのアドレスが所定の範囲にないと前記判定手段が判定したときに前記マイクロコンピュータの起動を制限する起動制限手段とを備え、
    前記所定の範囲は、少なくともユーザプログラムが記憶されている領域のアドレスを含む、遊技機。
JP2015146292A 2015-07-24 2015-07-24 遊技機 Active JP6611232B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015146292A JP6611232B2 (ja) 2015-07-24 2015-07-24 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015146292A JP6611232B2 (ja) 2015-07-24 2015-07-24 遊技機

Publications (3)

Publication Number Publication Date
JP2017023493A JP2017023493A (ja) 2017-02-02
JP2017023493A5 JP2017023493A5 (ja) 2019-01-31
JP6611232B2 true JP6611232B2 (ja) 2019-11-27

Family

ID=57948880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015146292A Active JP6611232B2 (ja) 2015-07-24 2015-07-24 遊技機

Country Status (1)

Country Link
JP (1) JP6611232B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6557084B2 (ja) * 2015-07-24 2019-08-07 株式会社三共 遊技機
JP6611233B2 (ja) * 2015-07-24 2019-11-27 株式会社三共 遊技機
JP6611231B2 (ja) * 2015-07-24 2019-11-27 株式会社三共 遊技機

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3583339B2 (ja) * 2000-01-13 2004-11-04 株式会社三共 遊技機
JP4570365B2 (ja) * 2004-01-16 2010-10-27 株式会社三共 遊技機
JP2014176403A (ja) * 2013-03-13 2014-09-25 Sankyo Co Ltd スロットマシン
JP6557084B2 (ja) * 2015-07-24 2019-08-07 株式会社三共 遊技機
JP6611233B2 (ja) * 2015-07-24 2019-11-27 株式会社三共 遊技機
JP6611231B2 (ja) * 2015-07-24 2019-11-27 株式会社三共 遊技機

Also Published As

Publication number Publication date
JP2017023493A (ja) 2017-02-02

Similar Documents

Publication Publication Date Title
JP6628962B2 (ja) 遊技機
JP6496528B2 (ja) 遊技機
JP6496526B2 (ja) 遊技機
JP6557084B2 (ja) 遊技機
JP6061454B2 (ja) 遊技機
JP2014176403A (ja) スロットマシン
JP6748402B2 (ja) スロットマシン
JP6039196B2 (ja) スロットマシン
JP6628961B2 (ja) 遊技機
JP6039195B2 (ja) スロットマシン
JP6611232B2 (ja) 遊技機
JP6611231B2 (ja) 遊技機
JP6611233B2 (ja) 遊技機
JP6600456B2 (ja) 遊技機
JP6628963B2 (ja) 遊技機
JP6600465B2 (ja) 遊技機
JP6600466B2 (ja) 遊技機
JP6143419B2 (ja) スロットマシン
JP6061453B2 (ja) 遊技機
JP6061961B2 (ja) 遊技機
JP6899021B2 (ja) 遊技機
JP6600464B2 (ja) 遊技機
JP6279008B2 (ja) スロットマシン
JP6496527B2 (ja) 遊技機
JP6882554B2 (ja) 遊技機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20190312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191025

R150 Certificate of patent or registration of utility model

Ref document number: 6611232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250