JP7467244B2 - 遊技機 - Google Patents

遊技機 Download PDF

Info

Publication number
JP7467244B2
JP7467244B2 JP2020100263A JP2020100263A JP7467244B2 JP 7467244 B2 JP7467244 B2 JP 7467244B2 JP 2020100263 A JP2020100263 A JP 2020100263A JP 2020100263 A JP2020100263 A JP 2020100263A JP 7467244 B2 JP7467244 B2 JP 7467244B2
Authority
JP
Japan
Prior art keywords
register
capacity
processing
interrupt
program
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
JP2020100263A
Other languages
English (en)
Other versions
JP2021194053A (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 JP2020100263A priority Critical patent/JP7467244B2/ja
Publication of JP2021194053A publication Critical patent/JP2021194053A/ja
Application granted granted Critical
Publication of JP7467244B2 publication Critical patent/JP7467244B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Slot Machines And Peripheral Devices (AREA)

Description

本発明は、パチンコ遊技機やスロットマシン等の遊技機に関する。
この種の遊技機としては、一単位の遊技毎に繰り返し実行される基本処理と、当該基本処理に一定時間間隔毎に割り込んで処理を行う割込処理を実行可能なものが提案されている(例えば、特許文献1参照)。
特開2020-39538号公報
特許文献1に記載された遊技機のように、実行されるプログラムが切り替わる制御においてデータ混同の観点から改良の余地がある。
本発明は、実行されるプログラムが切り替わる制御において改良を施した遊技機を提供することを目的とする。
請求項1の遊技機は、
遊技を行う遊技機において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段を備え、
前記プログラムは、基本プログラムと、前記基本プログラムの実行中に割り込んで実行される割込プログラムと、を含み、
前記割込プログラムは、メインプログラムと、前記メインプログラムから呼び出されて前記メインプログラムが使用しているレジスタを退避することなく実行されるサブプログラムと、から構成され、
前記複数のレジスタのうち共用レジスタは、前記メインプログラムと前記サブプログラムのいずれでも使用され、
前記複数のレジスタのうち特定レジスタは、前記メインプログラムで使用され、前記サブプログラムで使用されない
ことを特徴としている。
この特徴によれば、特定プログラムは、メインプログラムと、メインプログラムから呼び出されて実行されるサブプログラムと、から構成されるとともに、複数のレジスタのうち特定レジスタは、メインプログラムで使用され、サブプログラムで使用されないため、メインプログラムとサブプログラムの間で特定レジスタに格納されるデータが混同してしまうことを防止できる。
尚、本発明は、本発明の請求項に記載された発明特定事項のみを有するものであって良いし、本発明の請求項に記載された発明特定事項とともに該発明特定事項以外の構成を有するものであっても良い。
本発明が適用された実施例のスロットマシンの正面図である。 スロットマシンの構成を示すブロック図である。 メイン制御部のROM及びRAMのメモリマップを示す図である。 容量内領域と容量外領域との関係を示す図である。 レジスタについて説明するための図である。 各種処理と各レジスタとの対応関係について説明するための図である。 基本処理と各レジスタとの対応関係について説明するための図である。 割込処理と各レジスタとの対応関係について説明するための図である。 レジスタの変形例について説明するための図である。 レジスタの変形例における容量内処理及び容量外処理と共通レジスタとの対応関係について説明するための図である。
本発明に係る遊技機を実施するための形態を実施例に基づいて以下に説明する。
[形態1]
形態1-1の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段(メイン制御部41)を備え、
前記プログラムのうち特定プログラム(割込処理)は、メインプログラム(メインルーチン(割込))と、前記メインプログラムから呼び出されて実行されるサブプログラム(サブルーチン(割込))と、から構成され、
前記複数のレジスタのうち所定レジスタ(IYレジスタ)は、前記サブプログラム(サブルーチン(割込))で使用され、前記メインプログラム(メインルーチン(割込))で使用されない
ことを特徴としている。
この特徴によれば、特定プログラムは、メインプログラムと、メインプログラムから呼び出されて実行されるサブプログラムと、から構成されるとともに、複数のレジスタのうち所定レジスタは、サブプログラムで使用され、メインプログラムで使用されないため、メインプログラムとサブプログラムの間で所定レジスタに格納されるデータが混同してしまうことを防止できる。
形態1-2の遊技機は、形態1-1に記載の遊技機であって、
前記サブプログラム(サブルーチン(割込))は、複数種類のサブプログラムを含み、
前記所定レジスタ(IYレジスタ)は、前記複数種類のサブプログラムのうちいずれかの種類のサブプログラムで使用される
ことを特徴としている。
この特徴によれば、メインプログラムと複数種類のサブプログラムのうち所定レジスタが使用されるサブプログラムとの間で所定レジスタに格納されるデータが混同してしまうことを防止できる。
形態1-3の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段(メイン制御部41)を備え、
前記プログラムのうち特定プログラム(割込処理)は、メインプログラム(メインルーチン(割込))と、前記メインプログラムから呼び出されて実行されるサブプログラム(サブルーチン(割込))と、から構成され、
前記複数のレジスタのうち特定レジスタ(D’E’レジスタ)は、前記メインプログラム(メインルーチン(割込))で使用され、前記サブプログラム(サブルーチン(割込))で使用されない
ことを特徴としている。
この特徴によれば、特定プログラムは、メインプログラムと、メインプログラムから呼び出されて実行されるサブプログラムと、から構成されるとともに、複数のレジスタのうち特定レジスタは、メインプログラムで使用され、サブプログラムで使用されないため、メインプログラムとサブプログラムの間で特定レジスタに格納されるデータが混同してしまうことを防止できる。
形態1-4の遊技機は、形態1-3に記載の遊技機であって、
前記サブプログラム(サブルーチン(割込))は、複数種類のサブプログラムを含み、
前記特定レジスタ(D’E’レジスタ)は、前記複数種類のサブプログラムのうちいずれの種類のサブプログラムにおいても使用されない
ことを特徴としている。
この特徴によれば、メインプログラムといずれの種類のサブプログラムとの間においても特定レジスタに格納されるデータが混同してしまうことを防止できる。
形態1-5の遊技機は、形態1-1~1-4のいずれかに記載の遊技機であって、
前記特定プログラムは、割込の発生により実行する割込プログラム(割込処理)である
ことを特徴としている。
この特徴によれば、割込プログラムの実行中にメインプログラムとサブプログラムとの間でレジスタに格納されるデータが混同してしまうことを防止できる。
[形態2]
形態2-1の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段(メイン制御部41)を備え、
前記プログラムは、基本プログラム(基本処理)と、前記基本プログラムの実行中に割り込んで実行される割込プログラム(割込処理)と、を含み、
前記基本プログラム(基本処理)を実行するときに第1レジスタ(表レジスタ)を使用し、
前記割込プログラム(割込処理)を実行するときに使用するレジスタを前記第1レジスタ(表レジスタ)から第2レジスタ(裏レジスタ)に切り替え、
前記割込プログラム(割込処理)を終了するときに使用するレジスタを前記第2レジスタ(裏レジスタ)から前記第1レジスタ(表レジスタ)に戻し、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な特別レジスタ(IXレジスタ)を含み、
前記特別レジスタ(IXレジスタ)は、前記基本プログラム(基本処理)で使用され、前記割込プログラム(割込処理)で使用されない
ことを特徴としている。
この特徴によれば、基本プログラムでは、第1レジスタを使用する一方、基本プログラムに割り込んで実行される割込プログラムの実行中は、使用するレジスタが第1レジスタから第2レジスタに切り替わるとともに、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な特別レジスタを含むが、特別レジスタは、基本プログラムで使用され、割込プログラムでは使用されないので、基本プログラムと割込プログラムとの間において特別レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-2遊技機は、形態2-1に記載の遊技機であって、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な複数の共用レジスタ(IXレジスタ、IYレジスタ)を含み、
前記複数の共用レジスタ(IXレジスタ、IYレジスタ)のうち前記特別レジスタ(IXレジスタ)を含むいずれの共用レジスタも、前記割込プログラム(割込処理)では使用されない
ことを特徴としている。
この特徴によれば、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な複数の共用レジスタを含むが、複数の共用レジスタのうち特別レジスタを含むいずれの共用レジスタも、割込プログラムでは使用されないので、基本プログラムと割込プログラムとの間において特別レジスタを含む共用レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-3遊技機は、形態2-1に記載の遊技機であって、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な複数の共用レジスタ(IXレジスタ、IYレジスタ)を含み、
前記複数の共用レジスタ(IXレジスタ、IYレジスタ)のうち少なくとも前記特別レジスタ(IXレジスタ)は、前記第2プログラム(割込処理)では使用されない
ことを特徴としている。
この特徴によれば、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な複数の共用レジスタを含むが、複数の共用レジスタのうち少なくとも特別レジスタは、割込プログラムでは使用されないので、基本プログラムと割込プログラムとの間において少なくとも特別レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-4の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段(メイン制御部41)を備え、
前記プログラムは、基本プログラム(基本処理)と、前記基本プログラムの実行中に割り込んで実行される割込プログラム(割込処理)と、を含み、
前記基本プログラム(基本処理)を実行するときに第1レジスタ(表レジスタ)を使用し、
前記割込プログラム(割込処理)を実行するときに使用するレジスタを前記第1レジスタ(表レジスタ)から第2レジスタ(裏レジスタ)に切り替え、
前記割込プログラム(割込処理)を終了するときに使用するレジスタを前記第2レジスタ(裏レジスタ)から前記第1レジスタ(表レジスタ)に戻し、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な特殊レジスタ(IYレジスタ)を含み、
前記特殊レジスタ(IYレジスタ)は、前記割込プログラム(割込処理)で使用され、前記基本プログラム(基本処理)で使用されない
ことを特徴としている。
この特徴によれば、基本プログラムでは、第1レジスタを使用する一方、基本プログラムに割り込んで実行される割込プログラムの実行中は、使用するレジスタが第1レジスタから第2レジスタに切り替わるとともに、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な特殊レジスタを含むが、特殊レジスタは、割込プログラムで使用され、基本プログラムでは使用されないので、基本プログラムと割込プログラムとの間において特殊レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-5遊技機は、形態2-4に記載の遊技機であって、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な複数の共用レジスタ(IXレジスタ、IYレジスタ)を含み、
前記複数の共用レジスタ(IXレジスタ、IYレジスタ)のうち前記特殊レジスタ(IYレジスタ)を含むいずれの共用レジスタも、前記基本プログラム(基本処理)では使用されない
ことを特徴としている。
この特徴によれば、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な複数の共用レジスタを含むが、複数の共用レジスタのうち特殊レジスタを含むいずれの共用レジスタも、基本プログラムでは使用されないので、基本プログラムと割込プログラムとの間において特殊レジスタを含む共用レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-6遊技機は、形態2-4に記載の遊技機であって、
前記複数のレジスタは、前記第1レジスタ(表レジスタ)及び前記第2レジスタ(裏レジスタ)とは別に前記基本プログラム(基本処理)を実行するときにも前記割込プログラム(割込処理)を実行するときにも使用可能な複数の共用レジスタ(IXレジスタ、IYレジスタ)を含み、
前記複数の共用レジスタ(IXレジスタ、IYレジスタ)のうち少なくとも前記特殊レジスタ(IYレジスタ)は、前記基本プログラム(基本処理)では使用されない
ことを特徴としている。
この特徴によれば、複数のレジスタは、第1レジスタ及び第2レジスタとは別に基本プログラムを実行するときにも割込プログラムを実行するときにも使用可能な複数の共用レジスタを含むが、複数の共用レジスタのうち少なくとも特殊レジスタは、基本プログラムでは使用されないので、基本プログラムと割込プログラムとの間において少なくとも特殊レジスタに格納されるデータが混同してしまうことを防止できる。
形態2-7遊技機は、形態2-1~2-6のいずれかに記載の遊技機であって、
前記割込プログラム(割込処理)を実行するときに前記第2レジスタ(裏レジスタ)に値を設定する
ことを特徴としている。
この特徴によれば、割込プログラムを実行するときに、もともと第2レジスタに格納されていた値ではなく、改めて値を設定するので、意図しない値で割込プログラムが実行されてしまうことを防止できる。
[形態3]
形態3-1の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
複数のレジスタを使用してプログラムを実行するプログラム実行手段(メイン制御部41)を備え、
前記プログラムは、第1プログラム(容量内プログラム(容量内処理))と、第1プログラムから呼び出されて実行される第2プログラム(容量外プログラム(容量外処理))と、を含み、
前記第2プログラム(容量外プログラム(容量外処理))を実行するときに前記複数のレジスタのデータを退避させ、前記第2プログラム(容量外プログラム(容量外処理))を終了するときに、退避した前記複数のレジスタのデータを復帰させ、
前記第1プログラム(容量内プログラム(容量内処理))を実行するときは、前記複数のレジスタのうち特定数のレジスタが使用され、
前記第2プログラム(容量外プログラム(容量外処理))を実行するときには、前記複数のレジスタのうち前記特定数よりも少ない数のレジスタ(容量内プログラム(容量内処理)が用いるレジスタのうちの一部のレジスタ)が使用される
ことを特徴としている。
この特徴によれば、第2プログラムを実行するときに複数のレジスタのデータを退避させ、第2プログラムを終了するときに、退避した複数のレジスタのデータを復帰させるとともに、第2プログラムを実行するときには、第1プログラムを実行するときよりも使用されるレジスタの数が少ないので、第2プログラムによる誤ったデータの使用を防止できる。
形態3-2の遊技機は、形態3-1に記載の遊技機であって、
前記第1プログラム(容量内プログラム(容量内処理))は、第1特定プログラム(容量内処理(基本処理))と、第1所定プログラム(容量内処理(割込処理))と、を含み、
前記第2プログラム(容量外プログラム(容量外処理))は、前記第1特定プログラム(容量内処理(基本処理))から呼び出されて実行される第2特定プログラム(容量外処理(基本処理))と、前記第1所定プログラム(容量内処理(割込処理))から呼び出されて実行される第2所定プログラム(容量外処理(割込処理))と、を含み、
前記第1特定プログラム(容量内処理(基本処理))を実行するときは、前記複数のレジスタのうち第1特定数のレジスタが使用され、
前記第2特定プログラム(容量外処理(基本処理))を実行するときには、前記複数のレジスタのうち前記第1特定数よりも少ない数のレジスタ(容量外処理(基本処理))が用いるレジスタのうちの一部のレジスタ)が使用され、
前記第1所定プログラム(容量内処理(割込処理))を実行するときは、前記複数のレジスタのうち第2特定数のレジスタが使用され、
前記第2所定プログラム(容量外処理(割込処理))を実行するときには、前記複数のレジスタのうち前記第2特定数よりも少ない数のレジスタ(容量外処理(割込処理))が用いるレジスタのうちの一部のレジスタ)が使用される
ことを特徴としている。
この特徴によれば、第2特定プログラムを実行するときには、第1特定プログラムを実行するときよりも使用されるレジスタの数が少なく、第2所定プログラムを実行するときには、第1所定プログラムを実行するときよりも使用されるレジスタの数が少ないので、第2特定プログラム及び第2所定プログラムによる誤ったデータの使用を防止できる。
[形態4]
形態4-1の遊技機は、
遊技を行う遊技機(スロットマシン1)において、
プログラムを実行するプログラム実行手段(メイン制御部41)と、
データを退避するスタック領域と、
を備え、
前記プログラムは、第1プログラム(容量内プログラム(容量内処理))と、第1プログラムから呼び出されて実行される第2プログラム(容量外プログラム(容量外処理))と、を含み、
前記スタック領域は、前記第1プログラム(容量内プログラム(容量内処理))によりデータを退避する第1スタック領域(容量内スタック領域)と、前記第2プログラム(容量外プログラム(容量外処理))によりデータを退避する第2スタック領域(容量外スタック領域)と、を含み、
前記第2プログラム(容量外プログラム(容量外処理))を実行するときにデータの退避アドレスを示すスタックポインタを前記第1スタック領域(容量内スタック領域)から前記第2スタック領域(容量外スタック領域)に切り替え、前記第2プログラム(容量外プログラム(容量外処理))を終了するときに前記スタックポインタを前記第1スタック領域(容量内スタック領域)に戻し、
前記第2プログラム(容量外プログラム(容量外処理))を終了するときに、前記第2プログラムの実行中に前記第2スタック領域(容量外スタック領域)に退避したデータを全て復帰させる
ことを特徴としている。
この特徴によれば、第2プログラムを実行するときにスタックポインタを第1スタック領域から第2スタック領域に切り替え、第2プログラムを終了するときにスタックポインタを第1スタック領域に戻すとともに、第2プログラムを終了するときに、第2プログラムの実行中に第2スタック領域に退避したデータを全て復帰させてから、スタックポインタを第1スタック領域に戻すので、前回実行した第2プログラムで使用されていたデータが退避したまま、さらに第2プログラムが実行されることがなく、前回実行した第2プログラムで使用されていたデータと、今回実行する第2プログラムで使用されるデータと、が混同してしまうことを防止できる。
形態4-2の遊技機は、形態4-1に記載の遊技機であって、
前記第2プログラム(容量外プログラム(容量外処理))は、複数種類の第2プログラムを含み、
前記第2プログラムを終了するときに、いずれの種類の前記第2プログラムであっても、前記第2プログラムの実行中に前記第2スタック領域(容量外スタック領域)に退避したデータを全て復帰させる
ことを特徴としている。
この特徴によれば、第2プログラムを終了するときには、いずれの種類の第2プログラムであっても、第2プログラムの実行中に第2スタック領域に退避したデータを全て復帰させてから、スタックポインタを第1スタック領域に戻すので、第2プログラムの種類に関わらず、前回実行した第2プログラムで使用されていたデータと、今回実行する第2プログラムで使用されるデータと、が混同してしまうことを防止できる。
本発明が適用されたスロットマシンの実施例について図面に基づいて説明する。本実施例のスロットマシン1は、図1に示すように、前面が開口する筐体1aと、この筐体1aの側端に回動自在に枢支された前面扉1bと、から構成されている。スロットマシン1の内部には、互いに識別可能な複数種類の図柄が所定の順序で、それぞれ同数ずつ配列されたリール2L、2C、2Rが水平方向に並設されており、図1に示すように、これらリール2L、2C、2Rに配列された図柄のうち連続する3つの図柄が、スロットマシン1の正面の略中央に設けられた透視窓3において各々上中下三段に表示されて遊技者側から見えるように配置されている。
尚、本実施例では、3つのリールを用いた構成を例示しているが、リールを1つのみ用いた構成、2つのリールを用いた構成、4つ以上のリールを用いた構成としても良い。また、本実施例では、リール2L、2C、2Rにより図柄を可変表示させる可変表示部を構成しているが、可変表示部は、リール以外であっても良く、例えば、外周面に複数の図柄が配置されたベルトを移動させることで図柄を変動表示させることが可能な構成でも良い。また、本実施例では、物理的なリールにて可変表示部を構成しているが、液晶表示器などの画像表示装置にて可変表示部を構成しても良い。
スロットマシン1の正面には、図1に示すように、メダルを投入可能なメダル投入部4、メダルが払い出されるメダル払出口9、クレジット(遊技者所有の遊技用価値として記憶されているメダル数)を用いて、その範囲内において遊技状態に応じて定められた規定数の賭数のうち最大の賭数を設定する際に操作されるMAXBETスイッチ6、クレジットとして記憶されているメダル及び賭数の設定に用いたメダルを精算する(クレジット及び賭数の設定に用いた分のメダルを返却させる)際に操作される精算スイッチ10、ゲームを開始する際に操作されるスタートスイッチ7、リール2L、2C、2Rの回転を各々停止する際に操作されるストップスイッチ8L、8C、8R、演出に用いられる演出用スイッチ56が遊技者により操作可能にそれぞれ設けられている。
スロットマシン1の正面には、図1に示すように、クレジットとして記憶されているメダル枚数が表示されるクレジット表示器11、入賞の発生により払い出されたメダル枚数やエラー発生時にその内容を示すエラーコードや、ストップスイッチ8L、8C、8Rの操作態様に対応する操作情報(ナビ報知)等が表示される遊技補助表示器12、賭数が1設定されている旨を点灯により報知する1BETLED14、賭数が2設定されている旨を点灯により報知する2BETLED15、賭数が3設定されている旨を点灯により報知する3BETLED16、スタートスイッチ7の操作によるゲームのスタート操作が有効である旨を点灯により報知するスタート有効LED18、遊技区間が有利区間に制御されている旨を点灯により報知する区間表示LED19、リプレイゲーム中である旨を点灯により報知するリプレイ中LED20、が設けられた遊技用表示部13が設けられている。
MAXBETスイッチ6の内部には、MAXBETスイッチ6の操作による賭数の設定操作が有効である旨を点灯により報知するBETスイッチ有効LED21(図2参照)が設けられており、ストップスイッチ8L、8C、8Rの内部には、該当するストップスイッチ8L、8C、8Rによるリールを停止させる操作が有効である旨を点灯により報知する左、中、右停止有効LED22L、22C、22R(図2参照)がそれぞれ設けられている。
また、スロットマシン1の正面には、画像を表示可能な液晶表示器51が設けられている。液晶表示器51は、液晶素子に対して電圧が印加されていない状態で透過性を有する液晶パネルを有しており、前面扉1bの各リール2L、2C、2Rの手前側(遊技者側)に表示領域が配置されるように設けられている。液晶表示器51の背面側の各リール2L、2C、2Rは、液晶表示器51の表示領域のうち透視窓3に対応する透過領域及び透視窓3を介して遊技者側から視認可能である。
スロットマシン1の前面扉1bの内側には、所定キー操作によりスロットマシン1の外部からのエラー状態を解除するためのリセット操作を検出するリセットスイッチ23、設定値の変更中や設定値の確認中にその時点の設定値が表示される設定値表示器24、前面扉1bの開放状態を検出するドア開放検出スイッチ25、メダル投入部4から投入されたメダルの流路を、スロットマシン1の内部に設けられたホッパータンク側またはメダル払出口9側のいずれか一方に選択的に切り替えるための流路切替ソレノイド30、メダル投入部4から投入されてホッパータンク側に流下したメダルを検出する投入メダルセンサ31a~31cを有するメダルセレクタ29が設けられている。
また、スロットマシン1の内部には、メイン制御部41からの制御信号に応じて前述のリール2L、2C、2Rを回転させたり停止させたりするためのリールユニット34、メイン制御部41からの制御信号に応じてメダルをメダル払出口9より払い出すためのホッパーユニット35が設けられている。
また、スロットマシン1の内部には、設定変更状態または設定確認状態に切り替えるための設定キースイッチ37、通常時においてはエラー状態を解除するためのリセットスイッチとして機能し、設定変更状態においては後述する内部抽選の当選確率(出玉率)の設定値を変更するための設定スイッチとして機能するリセット/設定スイッチ38、電源をon/offする際に操作される電源スイッチ39が設けられている。
スロットマシン1の内部には、遊技制御基板40が筐体1aの内部の所定位置に取り付けられた状態において、遊技制御基板40の正面側(遊技者側)の下部には4桁の7セグメント表示器で構成される遊技機情報表示器50が配置されている(図示略)。遊技機情報表示器50は、遊技制御基板40が基板ケースに封入されている状態で、当該基板ケースの外部から表示内容を視認可能となっており、メイン制御部41により集計されて遊技機情報表示器50に表示されるスロットマシン1における遊技の履歴に基づく遊技機情報を、店員等が認識できるようになっている。
図2に示すように、スロットマシン1には、遊技制御基板40、演出制御基板90が設けられており、遊技制御基板40によって遊技(ゲーム)の制御が行われ、演出制御基板90によって遊技状態に応じた演出の制御が行われる。
遊技制御基板40には、前述のMAXBETスイッチ6、スタートスイッチ7、ストップスイッチ8L、8C、8R、精算スイッチ10、リセットスイッチ23、投入メダルセンサ31a~31c、リールユニット34のリールセンサ(図示略)、ホッパーユニット35の払出センサ及び満タンセンサ(図示略)、設定キースイッチ37、リセット/設定スイッチ38が接続されており、これら接続されたスイッチ類等の検出信号が入力されるようになっている。
また、遊技制御基板40には、前述のクレジット表示器11、遊技補助表示器12、1~3BETLED14~16、スタート有効LED18、区間表示LED19、リプレイ中LED20、BETスイッチ有効LED21、左、中、右停止有効LED22L、22C、22R、設定値表示器24、流路切替ソレノイド30、リールユニット34、ホッパーユニット35が接続されており、これら電気部品と、遊技制御基板40に搭載された遊技機情報表示器50は、遊技制御基板40に搭載された後述のメイン制御部41の制御に基づいて駆動されるようになっている。
また、遊技制御基板40には、遊技の制御を行うメイン制御部41が搭載されている。メイン制御部41は、演算を行うためのCPU41a、プログラム等が記憶されるROM41b、ワークデータが一時的に記憶されるRAM41cを備え、ROM41bに記憶されたプログラムに従って各種の制御を行う。
CPU41aは、ROM41bに記憶されたプログラムのうちプログラムカウンタが指定するアドレスの命令を実行する。プログラムカウンタは、命令が完了する毎に加算更新されるため、ROM41bに記憶されたプログラムのうち小さい値のアドレスに規定された命令から順に実行されることとなる。
メイン制御部41は、CPU41aが演算を行うために用いられる複数のレジスタを備える。当該複数のレジスタには、アキュムレータレジスタ(Aレジスタ)、フラグレジスタ(Fレジスタ)、汎用レジスタ(Bレジスタ、Cレジスタ、Dレジスタ、Eレジスタ、Hレジスタ、Lレジスタ)、インデックスレジスタ(IXレジスタ、IYレジスタ)、インタラプトレジスタ(Iレジスタ)、リフレッシュレジスタ(Rレジスタ)、スタックポインタレジスタ(SPレジスタ)、プログラムカウンタレジスタ(PCレジスタ)、送信レジスタなどのレジスタが含まれる。また、これらのレジスタのうちアキュムレータレジスタ、フラグレジスタ、汎用レジスタには、それぞれ対になるように構成された表レジスタ及び裏レジスタが含まれる(以下、表レジスタ及び裏レジスタを単にレジスタと呼ぶ場合がある)。CPU41aは、プログラムに含まれる演算命令や読出命令等の各種の命令を実行することにより、所定のレジスタの値を更新することや、所定のレジスタの値(アドレス)により指定されるRAM41cの記憶領域に記憶した値(データ)を更新することが可能である。
また、メイン制御部41が備えるレジスタのうちフラグレジスタは、その状態が、CPU41aにより実行された命令による演算結果を示すように変化するように構成されており、フラグレジスタの状態の変化を利用して、先の命令による演算結果に応じた処理をCPU41aに行わせることができるようになっている。
また、フラグレジスタは、複数のビット(本実施例では、8ビット)で構成されており、複数のビットには、CPU41aの処理の負担を減らすために、CPU41aが実行する演算命令の演算結果に応じて状態が変化可能に構成された第1ビット(以下、ゼロフラグと呼ぶ場合がある。)や第2ビット(以下、キャリーフラグと呼ぶ場合がある。)などが含まれる。
また、メイン制御部41は、サブ制御部91に各種のコマンドを送信する。メイン制御部41からサブ制御部91へ送信されるコマンドは一方向のみで送られ、サブ制御部91からメイン制御部41へ向けてコマンドが送られることはない。
また、メイン制御部41は、遊技制御基板40に接続された各種スイッチ類の検出状態が変化するまでは制御状態に応じた処理を繰り返しループし、各種スイッチ類の検出状態の変化に応じて段階的に移行する基本処理を実行する。また、メイン制御部41は、タイマ割込が発生する毎(本実施例では、約0.56ミリ秒)毎に基本処理に割り込んで割込処理を実行する。尚、割込処理の実行間隔は、基本処理において制御状態に応じて繰り返す処理が一巡する時間と割込処理の実行時間とを合わせた時間よりも長い時間に設定されており、今回と次回の割込処理との間で必ず制御状態に応じて繰り返す処理が最低でも一巡することとなる。
また、メイン制御部41は、メイン制御部41の備えるレジスタの値を、スタックポインタSPが示すRAM41cのスタック領域に所定の順序で記憶させることで退避させることが可能であり、RAM41cのスタック領域に退避させていたレジスタの値を、退避させるときと逆の順序で当該スタック領域から順次読み出して、当該順序に対応するレジスタに設定することで、該当するレジスタの状態を退避させたときの状態に復帰させることが可能である。
演出制御基板90には、前述の演出用スイッチ56が接続されており、その検出信号が入力されるようになっている。また、演出制御基板90には、前述の液晶表示器51、音声を出力可能なスピーカ、演出に用いられ遊技者側から視認可能な演出用LED57等の演出装置が接続されており、これら演出装置の出力状態は、演出制御基板90に搭載されたサブ制御部91により制御可能となっている。サブ制御部91は、メイン制御部41から送信されるコマンドや演出用スイッチ56の検出信号を受けて、演出を行うための各種の制御等を行うようになっている。
本実施例のスロットマシン1は、設定値に応じてメダルの払出率が変わる構成である。詳しくは、内部抽選やAT抽選等の遊技者に対する有利度に影響する抽選において設定値に応じた当選確率を用いることにより、メダルの払出率が変わるようになっている。設定値は1~6の6段階からなり、6が最も払出率が高く、5、4、3、2、1の順に値が小さくなるほど払出率が低くなる。すなわち設定値として6が設定されている場合には、遊技者にとって最も有利度が高く、5、4、3、2、1の順に値が小さくなるほど有利度が段階的に低くなる。
設定値を変更するためには、設定キースイッチ37をON状態としてからスロットマシン1の電源スイッチ39をONにする必要がある。設定キースイッチ37をON状態として電源をONにすると、設定値表示器24にRAM41cから読み出された設定値が表示値として表示され、リセット/設定スイッチ38の操作による設定値の変更が可能な設定変更状態に移行する。設定変更状態において、リセット/設定スイッチ38が操作されると、設定値表示器24に表示された表示値が1ずつ更新されていく(設定値6からさらに操作されたときは、設定値1に戻る)。そして、スタートスイッチ7が操作されると表示値を設定値として確定する。そして、設定キースイッチ37がOFFにされると、確定した表示値(設定値)がメイン制御部41のRAM41cに格納され、遊技の進行が可能な状態に移行する。
尚、設定キースイッチ37、リセット/設定スイッチ38は、スロットマシン1の内部に設けられ、所定のキー操作により開放可能な前面扉1bを開放しない限り操作不可能とされており、スロットマシン1が設置される遊技店の店員のうち所定のキーを所持する店員のみが操作可能となる。特に、設定キースイッチ37は、さらにキー操作を要することから、遊技店の店員の中でも、設定キースイッチ37の操作を行うためのキーを所持する店員のみが操作可能とされている。また、リセットスイッチ23は、前面扉1bを開放する必要はないが、所定のキーを用いたキー操作を必要とするため、所定のキーを所持する店員のみが操作可能となる。また、リセット/設定スイッチ38は、通常時においてはエラー状態を解除するためのリセットスイッチとしても機能するようになっている。
本実施例のスロットマシン1においては、メイン制御部41は、割込処理において電圧低下が検出されているか否かを判定する停電判定処理を行い、停電判定処理において電圧低下が検出されていると判定した場合に、次回復帰時にRAM41cのデータが正常か否かを判定するためのデータを設定する電断処理(メイン)を実行する。
そして、メイン制御部41は、その起動時においてRAM41cのデータが正常であることを条件に、RAM41cに記憶されているデータに基づいてメイン制御部41の処理状態を電断前の状態に復帰させることが可能とされている。一方、起動時にRAM41cのデータが正常でない場合には、RAM異常と判定し、RAM異常を示すエラーフラグをRAM41cに設定するとともに、RAM異常エラー状態に制御し、遊技の進行を不能化させるようになっている。RAM異常エラー状態は、設定変更状態に移行し、新たに設定値が設定されることで解除され、遊技の進行が可能となる。
本実施例のスロットマシン1においては、メイン制御部41は、遊技の進行に応じて異常を検出した場合に、検出した異常の種類を示すエラーフラグをRAM41cに設定するとともに、一般エラー状態に制御し、遊技の進行を不能化させるようになっている。一般エラー状態は、リセットスイッチ23またはリセット/設定スイッチ38によるリセット操作により解除され、遊技の進行が可能となる。尚、以下では、RAM異常エラー状態と、一般エラー状態と、を区別する必要がない場合に、単にエラー状態と呼ぶ。
本実施例のスロットマシン1においてゲームを行う場合には、まず、メダルをメダル投入部4から投入するか、あるいはMAXBETスイッチ6を操作してクレジットを使用して賭数を設定する。遊技状態に応じて定められた規定数の賭数が設定されると、予め定められた入賞ラインLN(図1参照、本実施例では、リール2L、2C、2Rの中段、すなわち中段に水平方向に並んだ図柄に跨がって設定されている)が有効となり、スタートスイッチ7の操作が有効な状態、すなわち、ゲームが開始可能な状態となる。尚、遊技状態に対応する規定数のうち最大数を超えてメダルが投入された場合には、その分はクレジットに加算される。また、本実施例では、1本の入賞ラインのみを適用しているが、複数の入賞ラインを適用しても良い。
また、本実施例では、入賞ラインLNに入賞を構成する図柄の組合せが揃ったことを認識しやすくするために、入賞ラインLNとは別に、無効ラインLM1~6を設定している。無効ラインLM1~6は、これら無効ラインLM1~6に揃った図柄の組合せによって入賞が判定されるものではなく、入賞ラインLNに入賞を構成する図柄の組合せが揃った際に、無効ラインLM1~6のいずれかに入賞を示唆する示唆図柄の組合せ(例えば、ベルa-ベルa-ベルa)が揃う構成とすることで、入賞ラインLNに入賞を構成する図柄の組合せが揃ったことを認識しやすくするものである。本実施例では、図1に示すように、リール2L、2C、2Rの上段、すなわち上段に水平方向に並んだ図柄に跨がって設定された無効ラインLM1、リール2L、2C、2Rの下段、すなわち下段に水平方向に並んだ図柄に跨って設定された無効ラインLM2、リール2Lの上段、リール2Cの中段、リール2Rの下段、すなわち右下がりに並んだ図柄に跨って設定された無効ラインLM3、リール2Lの下段、リール2Cの中段、リール2Rの上段、すなわち右上がりに並んだ図柄に跨って設定された無効ラインLM4、リール2Lの上段、リール2Cの中段、リール2Rの上段、すなわち小V字状に並んだ図柄に跨って設定された無効ラインLM5、リール2Lの下段、リール2Cの中段、リール2Rの下段、すなわち小山状に並んだ図柄に跨って設定された無効ラインLM6の6種類が無効ラインとして定められている。
ゲームが開始可能な状態でスタートスイッチ7を操作すると、各リール2L、2C、2Rが回転され、各リール2L、2C、2Rの図柄が連続的に変動される。リール2L、2C、2Rが回転されている状態で、いずれかのストップスイッチ8L、8C、8Rを操作すると、対応するリール2L、2C、2Rに対して停止制御が行われ、当該リールの回転が停止され、当該リールの図柄が透視窓3に表示結果として導出表示される。
停止制御では、各ストップスイッチについて操作が行われたときから最大停止遅延時間(本実施例では、190ms(ミリ秒))以内に、操作に対応するリール2L、2C、2Rの回転を停止させる制御が行われ、最大停止遅延時間(190ms)が経過するまでの間では、最大で4コマ分の図柄を引き込むことができることとなる。つまり、停止制御では、ストップスイッチ8L、8C、8Rが操作されたときに表示されている図柄と、そこから4コマ先までにある図柄、合計5コマ分(引込範囲)の図柄から一の図柄を選択して、リール2L、2C、2Rに導出させることが可能である。
これにより、停止制御では、各リール2L、2C、2Rについて対応するストップスイッチ8L、8C、8Rが操作されることで回転を停止させる際に、後述する内部抽選にて当選している入賞役を構成する図柄が、ストップスイッチが操作されたときの図柄から4コマ先までの引込範囲内にある場合には、当該図柄を入賞ラインLN上に引き込んで、ストップスイッチが操作されたリールの回転を停止させる一方で、内部抽選にて当選している入賞役を構成する図柄が、当該引込範囲内にない場合には、内部抽選にて当選していない入賞役を構成する図柄が、入賞ラインLN上に停止しないように、いずれの入賞役も構成しない図柄を入賞ラインLN上に引き込んで、ストップスイッチが操作されたリールの回転を停止させるように制御することが可能である。
[メイン制御部のメモリ領域とプログラムについて]
メイン制御部41は、所定のプログラムやデータを記憶するメモリ領域を有するROM41b及びデータを一時的に記憶するRAM41cを備える。
図3は、ROM41bにおけるプログラム/データ領域及びRAM41cにおける使用可能領域のアドレスマップである。図3(a)に示すように、ROM41bにおけるプログラム/データ領域は、遊技の進行に係わる制御を行うための容量内プログラムが記憶される容量内プログラム領域と、容量内プログラムが用いる容量内データが記憶される容量内データ領域と、未使用領域1と、エラーの検出や試験信号の作成、払出率等の遊技機の情報の表示等、遊技の進行に直接係わらない制御を行うための容量外プログラムが記憶される容量外プログラム領域と、容量外プログラムが用いる容量外データが記憶される容量外データ領域と、未使用領域2と、を含む。
尚、遊技の進行とは、ゲームを構成する一連のプロセスを進行させることであり、スロットマシンであれば、賭数を設定してゲームを開始可能とする段階、ゲームを開始してリールを回転させる段階、リールを停止させて表示結果を導出させる段階、表示結果に応じてメダル等の価値を付与する段階、を進行させることである。また、パチンコ遊技機であれば、始動入賞を判定する段階、可変表示を開始させる段階、可変表示を停止させる段階、遊技状態を変更する段階、を進行させることでる。
以下では、容量内プログラムが行う処理を容量内処理と称す場合があり、容量外プログラムが行う処理を容量内処理と称す場合がある。
図3(b)に示すように、RAM41cの使用可能領域は、容量内プログラムがワークとして用いる容量内RAM領域と、容量外プログラムがワークとして用いる容量外RAM領域と、未使用領域4と、を含んでおり、容量内RAM領域には、容量内ワークと、未使用領域3と、容量内スタック領域と、が含まれ、容量外RAM領域には、容量外ワークと、容量外スタック領域と、が含まれる。尚、本実施例では、容量内スタック領域と容量外スタック領域とをそれぞれ異なる領域に個別に備える構成であるが、容量内プログラム及び容量外プログラムが共用する一のスタック領域を備える構成としても良い。
容量内スタック領域は、容量内プログラムがデータを一時的に退避する領域であり、容量内プログラムがデータを退避するにあたって、容量内スタックポインタが示すアドレスの領域に当該データが一時的に格納される。
また、容量外スタック領域は、容量外プログラムがデータを一時的に退避する領域であり、容量外プログラムがデータを退避するにあたって、容量外スタックポインタが示すアドレスの領域に当該データが一時的に格納される。
また、未使用領域3は、容量内プログラム及び容量外プログラムのいずれも使用しない領域であり、予め定められた容量の容量内RAM領域に対して余剰となった領域である。
また、未使用領域4は、容量内プログラム及び容量外プログラムのいずれも使用しない16バイト以上の領域である。容量内RAM領域と、容量外RAM領域とが、未使用領域4を挟んで連続しない領域に割り当てられているため、遊技の進行に係わる容量内プログラムが用いる容量内RAM領域と、遊技の進行に係わらない容量外プログラムが用いる容量外RAM領域と、を記憶領域の違いに応じて容易に特定することができる。
以下では、容量内プログラム領域、容量内データ領域及び容量内RAM領域をまとめて容量内領域と称す場合があり、容量外プログラム領域、容量外データ領域及び容量外RAM領域をまとめて容量外領域と称す場合がある。
[容量内領域と容量外領域の関係について]
メイン制御部41のCPU41aは、図4に示すように、容量内プログラムに基づく処理において容量外プログラムを呼び出して容量外プログラムに基づく処理を実行し、容量外プログラムに基づく処理の終了後、容量内プログラムに基づく処理に復帰する。
図4に示すように、CPU41aは、原則として容量内プログラムに基づく処理を実行するにあたり、容量内データ領域の容量内データを参照して容量内プログラムに基づく処理を実行するとともに、容量内RAM領域をワークとして使用し、容量内RAM領域の内容を参照及び更新することが可能である。また、CPU41aは、原則として容量外プログラムに基づく処理を実行するにあたり、容量外データ領域の容量外データを参照して容量外プログラムに基づく処理を実行するとともに、容量外RAM領域をワークとして使用し、容量外RAM領域の内容を参照及び更新することが可能である。
また、CPU41aは、容量内プログラムに基づく処理を実行するにあたり、容量外RAM領域を更新することはないが、容量外RAM領域を参照することは可能であり、容量外プログラムに基づく処理を実行するにあたり、容量内RAM領域を更新することはないが、容量内RAM領域を参照することは可能である。
[レジスタについて]
メイン制御部41は、メインCPU41aが演算を行うために用いられる複数のレジスタを備える。当該複数のレジスタは、主に表レジスタ、裏レジスタ、共通レジスタを含む。表レジスタと裏レジスタは、互いに対の関係にあり、表レジスタ使用時には裏レジスタが使用不可であり、裏レジスタ使用時には表レジスタが使用不可である。また、表レジスタを反転させることで裏レジスタが使用可能となり、裏レジスタを反転させることで表レジスタが使用可能となる。また、共通レジスタは、表レジスタが使用されている場合にも裏レジスタが使用されている場合にも使用可能である。
表レジスタには、Aレジスタ、Fレジスタ、汎用レジスタ(Bレジスタ、Cレジスタ(Bレジスタ、CレジスタをまとめてBCレジスタと呼ぶ。)、Dレジスタ、Eレジスタ(Dレジスタ、EレジスタをまとめてDEレジスタと呼ぶ。)、Hレジスタ、Lレジスタ(Hレジスタ、LレジスタをまとめてHLレジスタと呼ぶ。))、Qレジスタが含まれる。Aレジスタ、汎用レジスタは、演算に用いられる値が格納され、Fレジスタは、演算結果に応じたフラグが格納され、Qレジスタは、特殊命令においてアドレスを指定する際の上位アドレスが格納される。
裏レジスタには、表レジスタのAレジスタ、Fレジスタ、汎用レジスタと対となる、A’レジスタ、F’レジスタ、汎用レジスタ(B’レジスタ、C’レジスタ(B’レジスタ、C’レジスタをまとめてB’C’レジスタと呼ぶ。)、D’レジスタ、E’レジスタ(D’レジスタ、E’レジスタをまとめてD’E’レジスタと呼ぶ。)、H’レジスタ、L’レジスタ(H’レジスタ、L’レジスタをまとめてH’L’レジスタと呼ぶ。))が含まれる。A’レジスタ、汎用レジスタは、演算に用いられる値が格納され、F’レジスタは、演算結果に応じたフラグが格納される。
共通レジスタには、Iレジスタ、Rレジスタ、IXレジスタ、IYレジスタ、SPレジスタ、PCレジスタが含まれる。Iレジスタは、割込発生時にジャンプするアドレス(割込ベクタ)の上位アドレスが格納され、Rレジスタは、メモリをリフレッシュするタイミングをカウントする値が格納され、IXレジスタ、IYレジスタは、演算に用いられる値が格納され、SPレジスタは、スタック領域を特定するためのスタックポインタの値が格納され、PCレジスタは、実行中のプログラムのアドレスを示すプログラムカウンタの値が格納される。
[メイン制御部が実行する各種処理について]
次に、メイン制御部41が実行する各種処理について説明する。図6に示すように、メイン制御部41は、スロットマシン1を制御するための処理として基本処理と、割込処理を実行可能である。
基本処理は、制御状態が移行するまで当該制御状態に応じた処理を繰り返しループする処理であり、メインルーチン(基本)と、メインルーチン(基本)から呼び出される複数種類のサブルーチン(基本)と、から構成されている。
メインルーチン(基本)は、遊技の進行に伴い複数の制御状態を段階的に移行させる処理であり、プログラムの進行に応じて、複数種類のサブルーチン(基本)の中からいずれかの種類のサブルーチン(基本)を呼び出すことが可能である。
サブルーチン(基本)は、メインルーチン(基本)に呼び出されることで開始し、当該サブルーチン(基本)が終了することでメインルーチン(基本)の呼出元に復帰させる。
また、図7に示すように、基本処理は、容量内プログラムによる容量内処理(基本)と、容量外プログラムによる容量外処理(基本)と、から構成されている。
容量内処理(基本)は、プログラムの進行に応じて、複数種類の容量外処理(基本)の中からいずれかの種類の容量外処理(基本)を呼び出すことが可能である。
容量外処理(基本)は、容量内処理(基本)に呼び出されることで開始し、当該容量外処理(基本)が終了することで容量内処理(基本)の呼出元に復帰させる。
容量外処理(基本)は、メインルーチン(容量外・基本)と、メインルーチン(容量外・基本)から呼び出される複数種類のサブルーチン(容量外・基本)と、から構成されている。
メインルーチン(容量外・基本)は、プログラムの進行に応じて、複数種類のサブルーチン(容量外・基本)の中からいずれかの種類のサブルーチン(容量外・基本)を呼び出すことが可能である。
サブルーチン(容量外・基本)は、メインルーチン(容量外・基本)に呼び出されることで開始し、当該サブルーチン(容量外・基本)が終了することでメインルーチン(容量外・基本)の呼出元に復帰させる。
割込処理は、タイマ割込が発生する毎に基本処理に割り込んで実行され、当該割込処理が終了することで基本処理の割込元に復帰させる処理であり、メインルーチン(割込)と、メインルーチン(割込)から呼び出される複数種類のサブルーチン(割込)と、から構成されている。
メインルーチン(割込)は、プログラムの進行に応じて、複数種類のサブルーチン(割込)の中からいずれかの種類のサブルーチン(割込)を呼び出すことが可能である。
サブルーチン(割込)は、メインルーチン(割込)に呼び出されることで開始し、当該サブルーチン(割込)が終了することでメインルーチン(割込)の呼出元に復帰させる。
また、図8に示すように、割込処理は、容量内プログラムによる容量内処理(割込)と、容量外プログラムによる容量外処理(割込)と、から構成されている。
容量内処理(割込)は、プログラムの進行に応じて、複数種類の容量外処理(割込)の中からいずれかの種類の容量外処理(割込)を呼び出すことが可能である。
容量外処理(割込)は、容量内処理(割込)に呼び出されることで開始し、当該容量外処理(割込)が終了することで容量内処理(割込)の呼出元に復帰させる。
容量外処理(割込)は、メインルーチン(容量外・割込)と、メインルーチン(容量外・割込)から呼び出される複数種類のサブルーチン(容量外・割込)と、から構成されている。
メインルーチン(容量外・割込)は、プログラムの進行に応じて、複数種類のサブルーチン(容量外・割込)の中からいずれかの種類のサブルーチン(容量外・割込)を呼び出すことが可能である。
サブルーチン(容量外・割込)は、メインルーチン(容量外・割込)に呼び出されることで開始し、当該サブルーチン(容量外・割込)が終了することでメインルーチン(容量外・割込)の呼出元に復帰させる。
[基本処理及び割込処理において使用されるレジスタについて]
次に、基本処理及び割込処理の実行時にメイン制御部41が使用するレジスタについて説明する。
図6に示すように、メイン制御部41は、基本処理におけるメインルーチン(基本)の実行時に、表レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、メインルーチン(基本)において、表レジスタのうち、Aレジスタ、Fレジスタ、BCレジスタ、DEレジスタ、HLレジスタ、Qレジスタ、すなわち表レジスタに含まれる全てのレジスタを使用する。また、メインルーチン(基本)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Iレジスタ、Rレジスタ、IXレジスタ、SPレジスタ、PCレジスタを使用し、IYレジスタを使用しない。
また、メイン制御部41は、基本処理におけるサブルーチン(基本)の実行時に、表レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、サブルーチン(基本)において、表レジスタのうち、Aレジスタ、Fレジスタ、BCレジスタ、DEレジスタ、HLレジスタ、Qレジスタ、すなわち表レジスタに含まれる全てのレジスタを使用する。また、サブルーチン(基本)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Iレジスタ、Rレジスタ、IXレジスタ、SPレジスタ、PCレジスタを使用し、IYレジスタを使用しない。
図6に示すように、メイン制御部41は、基本処理の実行中にタイマ割込が発生し、実行中の基本処理に割り込んで割込処理が開始すると、まず使用するレジスタを表レジスタから裏レジスタに交換する。
メイン制御部41は、割込処理におけるメインルーチン(割込)の実行時に、裏レジスタと共用レジスタを使用して各種処理を実行する。詳しくは、メインルーチン(割込)において、裏レジスタのうち、A’レジスタ、F’レジスタ、B’C’レジスタ、D’E’レジスタ、H’L’レジスタ、すなわち裏レジスタに含まれる全てのレジスタを使用する。また、メインルーチン(割込)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Rレジスタ、SPレジスタ、PCレジスタを使用し、Iレジスタ、IXレジスタ、IYレジスタを使用しない。
また、メイン制御部41は、使用するレジスタを表レジスタから裏レジスタに交換すると、前回の割込処理で使用されていた裏レジスタの値が格納された状態となるが、今回の割込処理では、前回の割込処理で使用されていた裏レジスタの値を使用せず、改めて裏レジスタに必要な値を格納する。
また、メイン制御部41は、割込処理におけるサブルーチン(割込)の実行時に、裏レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、サブルーチン(割込)において、裏レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、A’レジスタ、F’レジスタ、B’C’レジスタ、H’L’レジスタを使用し、D’E’レジスタを使用しない。また、サブルーチン(割込)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Rレジスタ、IYレジスタ、SPレジスタ、PCレジスタを使用し、Iレジスタ、IXレジスタを使用しない。
また、メイン制御部41は、割込処理におけるメインルーチン(割込)が終了すると、使用するレジスタを裏レジスタから表レジスタに交換し、タイマ割込発生時に実行していた基本処理に復帰する。
このように本実施例では、基本処理において表レジスタを使用し、基本処理に割り込んで実行される割込処理において表レジスタから交換した裏レジスタを使用する。また、基本処理が実行されるときにも、割込処理が実行されるときにも、IYレジスタを使用可能であるが、IYレジスタは割込処理において使用され、基本処理では使用されないので、基本処理と割込処理との間においてIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのうちIXレジスタは基本処理に使用され、IYレジスタは基本処理に使用されないため、基本処理と割込処理との間において、IXレジスタ及びIYレジスタからなる複数のレジスタのうち少なくともIYレジスタに格納されるデータが混同してしまうことを防止できる。
尚、本実施例では、IXレジスタ及びIYレジスタからなる複数のレジスタのうちIXレジスタを基本処理で使用する構成であるが、IXレジスタ及びIYレジスタからなる複数のレジスタのいずれも基本処理に使用されない構成としても良く、このような構成とすることで、基本処理を実行するときにも、割込処理を実行するときにも使用可能なIXレジスタ及びIYレジスタのいずれも基本処理では使用されないので、基本処理と割込処理との間においてIXレジスタ及びIYレジスタからなる複数のレジスタに格納されるデータが混同してしまうことを防止できる。
本実施例では、基本処理において表レジスタを使用し、基本処理に割り込んで実行される割込処理において表レジスタから交換した裏レジスタを使用する。また、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタを使用可能であるが、IXレジスタは基本処理において使用され、割込処理では使用されないので、基本処理と割込処理との間においてIXレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのうちIYレジスタは割込処理に使用され、IXレジスタは割込処理に使用されないため、基本処理と割込処理との間において、IXレジスタ及びIYレジスタからなる複数のレジスタのうち少なくともIXレジスタに格納されるデータが混同してしまうことを防止できる。
尚、本実施例では、IXレジスタ及びIYレジスタからなる複数のレジスタのうちIYレジスタを割込処理で使用する構成であるが、IXレジスタ及びIYレジスタからなる複数のレジスタのいずれも割込処理に使用されない構成としても良く、このような構成とすることで、基本処理を実行するときにも、割込処理を実行するときにも使用可能なIXレジスタ及びIYレジスタのいずれも割込処理では使用しないので、基本処理と割込処理との間においてIXレジスタ及びIYレジスタからなる複数のレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理を実行するときに、使用するレジスタを表レジスタから裏レジスタに交換すると、前回の割込処理で使用されていた裏レジスタの値が格納された状態となるが、今回の割込処理では、前回の割込処理で使用されていた裏レジスタの値を使用せず、改めて裏レジスタに必要な値を格納するので、意図しない値で割込処理が実行されてしまうことを防止できる。
本実施例では、割込処理は、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちIYレジスタは、サブルーチン(割込)で使用され、メインルーチン(割込)で使用されないため、メインルーチン(割込)とサブルーチン(割込)の間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、メインルーチン(割込)から呼び出されるサブルーチン(割込)は、複数種類のサブルーチン(割込)を含んでおり、IYレジスタは、複数種類のサブルーチン(割込)の全てで使用されるのではなく、いずれかの種類のサブルーチン(割込)で使用される。このため、メインルーチン(割込)とIYレジスタを使用するサブルーチン(割込)との間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
尚、本実施例では、IYレジスタは、一部の種類のサブルーチン(割込)において使用される構成であるが、全ての種類のサブルーチン(割込)において使用される構成としても良く、このような構成においても、メインルーチン(割込)とサブルーチン(割込)との間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理が、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちIYレジスタは、サブルーチン(割込)で使用され、メインルーチン(割込)で使用されない構成であるが、基本処理おいて使用される複数のレジスタのうち所定レジスタが、基本処理を構成するサブルーチン(基本)において使用され、メインルーチン(基本)で使用されない構成としても良く、このような構成とすることで、メインルーチン(基本)とサブルーチン(基本)の間で所定レジスタに格納されるデータが混同してしまうことを防止できる。
本実施例では、割込処理は、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちD’E’レジスタは、メインルーチン(割込)で使用され、サブルーチン(割込)で使用されないため、メインルーチン(割込)とサブルーチン(割込)の間でD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
また、メインルーチン(割込)から呼び出されるサブルーチン(割込)は、複数種類のサブルーチン(割込)を含んでおり、D’E’レジスタは、いずれの種類のサブルーチン(割込)においても使用されない。このため、メインルーチン(割込)といずれの種類のサブルーチン(割込)との間においてもD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
尚、本実施例では、D’E’レジスタは、いずれの種類のサブルーチン(割込)においても使用されない構成であるが、特定の種類のサブルーチン(割込)において使用されず、他の種類のサブルーチン(割込)において使用される構成としても良く、このような構成においても、メインルーチン(割込)と特定の種類のサブルーチン(割込)との間でD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理が、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちD’E’レジスタは、メインルーチン(割込)で使用され、サブルーチン(割込)で使用されない構成であるが、基本処理おいて使用される複数のレジスタのうち特定レジスタが、基本処理を構成するメインルーチン(基本)において使用され、サブルーチン(基本)で使用されない構成としても良く、このような構成とすることで、メインルーチン(基本)とサブルーチン(基本)の間で特定レジスタに格納されるデータが混同してしまうことを防止できる。
[容量内処理及び容量外処理において使用されるレジスタについて]
次に、容量内処理及び容量外処理の実行時にメイン制御部41が使用するレジスタについて説明する。
図7に示すように、メイン制御部41は、容量内処理(基本)の実行時に、表レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、容量内処理(基本)において、表レジスタのうち、Aレジスタ、Fレジスタ、BCレジスタ、DEレジスタ、HLレジスタ、Qレジスタ、すなわち表レジスタに含まれる全てのレジスタを使用する。また、容量内処理(基本)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Iレジスタ、Rレジスタ、IXレジスタ、SPレジスタ、PCレジスタを使用し、IYレジスタを使用しない。
図7に示すように、メイン制御部41は、容量外処理(基本)を実行する場合に、容量内処理(基本)からメインルーチン(容量外・基本)を呼び出す。
メイン制御部41は、メインルーチン(容量外・基本)を開始すると、まずSPレジスタに格納されている容量内スタックポインタの値を容量外RAM領域の所定領域に退避させた後、SPレジスタに容量外スタック領域の0段目を示す値を格納する。これにより、データを退避する領域が容量内スタック領域から容量外スタック領域に切り替わる。
その後、表レジスタ及び共通レジスタの全ての値を、容量外スタック領域のうち容量外スタックポインタが示す領域に所定の順序で退避させる。
メイン制御部41は、メインルーチン(容量外・基本)の実行時に、表レジスタと共通レジスタを使用して各種演算を実行する。詳しくは、メインルーチン(容量外・基本)において、表レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Aレジスタ、Fレジスタ、BCレジスタ、HLレジスタ、Qレジスタを使用し、DEレジスタを使用しない。また、メインルーチン(容量外・基本)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタを使用し、IXレジスタ、IYレジスタを使用しない。
また、メイン制御部41は、メインルーチン(容量外・基本)において、サブルーチン(容量外・基本)を呼び出すことでサブルーチン(容量外・基本)を実行する。この際、容量外スタック領域のうちSPレジスタに格納された値が示す領域に呼出元のアドレスが格納される。また、サブルーチン(容量外・基本)においても容量外スタック領域にデータを退避することがあり、容量外スタック領域は最大N段使用されることとなり、この際、SPレジスタに格納されている容量外スタックポインタは、容量外スタック領域のうちN段目の領域を示す値となる。
図7に示すように、メイン制御部41は、サブルーチン(容量外・基本)の実行時に、表レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、サブルーチン(容量外・基本)において、表レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Aレジスタ、Fレジスタ、BCレジスタ、HLレジスタ、Qレジスタを使用し、DEレジスタを使用しない。また、サブルーチン(容量外・基本)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタを使用し、IXレジスタ、IYレジスタを使用しない。
図7に示すように、メイン制御部41は、メインルーチン(容量外・基本)を終了するときに、容量外スタック領域に退避させていた表レジスタ及び共通レジスタの全ての値を全て復帰させる。これにより、容量外スタック領域に退避していたデータは全て復帰することとなり、容量外スタック領域は空となる。その後、メイン制御部41は、容量外RAM領域の所定領域に退避させた容量内スタックポインタの値をSPレジスタに復帰させる。これにより、データを退避する領域が、容量外スタック領域から容量内スタック領域に切り替わる。そして、メインルーチン(容量外・基本)を終了させて容量内処理(基本)における呼出元に復帰する。
図8に示すように、メイン制御部41は、容量内処理(割込)の実行時に、裏レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、容量内処理(割込)において、裏レジスタのうち、A’レジスタ、F’レジスタ、B’C’レジスタ、D’E’レジスタ、H’L’レジスタ、すなわち裏レジスタに含まれる全てのレジスタを使用する。また、容量内処理(割込)において、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Rレジスタ、SPレジスタ、PCレジスタを使用し、Iレジスタ、IXレジスタ、IYレジスタを使用しない。
図8に示すように、メイン制御部41は、容量外処理(割込)を実行する場合に、容量内処理(割込)からメインルーチン(容量外・割込)を呼び出す。
メイン制御部41は、メインルーチン(容量外・割込)を開始すると、まずSPレジスタに格納されている容量内スタックポインタの値を容量外RAM領域の所定領域に退避させた後、SPレジスタに容量外スタック領域の0段目を示す値を格納する。これにより、データを退避する領域が容量内スタック領域から容量外スタック領域に切り替わる。
その後、裏レジスタ及び共通レジスタの全ての値を、容量外スタック領域のうち容量外スタックポインタが示す領域に所定の順序で退避させる。
メイン制御部41は、メインルーチン(容量外・割込)の実行時に、裏レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、裏レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、A’レジスタ、F’レジスタ、B’C’レジスタ、H’L’レジスタを使用し、D’E’レジスタを使用しない。また、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Rレジスタ、SPレジスタ、PCレジスタを使用し、Iレジスタ、IXレジスタ、IYレジスタを使用しない。
また、メイン制御部41は、メインルーチン(容量外・割込)において、サブルーチン(容量外・割込)を呼び出すことでサブルーチン(容量外・割込)を実行する。この際、容量外スタック領域のうちSPレジスタに格納された値が示す領域に呼出元のアドレスが格納される。また、サブルーチン(容量外・割込)においても容量外スタック領域にデータを退避することがあり、容量外スタック領域は最大N段使用されることとなり、この際、SPレジスタに格納されている容量外スタックポインタは、容量外スタック領域のうちN段目の領域を示す値となる。
図8に示すように、メイン制御部41は、サブルーチン(容量外・割込)の実行時に、裏レジスタと共通レジスタを使用して各種処理を実行する。詳しくは、サブルーチン(容量外・割込)においては、裏レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、A’レジスタ、F’レジスタ、B’C’レジスタ、H’L’レジスタを使用し、D’E’レジスタを使用しない。また、共通レジスタに含まれる全てのレジスタを使用可能であるが、そのうち、Rレジスタ、SPレジスタ、PCレジスタを使用し、Iレジスタ、IXレジスタ、IYレジスタを使用しない。
図8に示すように、メイン制御部41は、メインルーチン(容量外・基本)を終了するときに、容量外スタック領域に退避させていた裏レジスタ及び共通レジスタの全ての値を全て復帰させる。これにより、容量外スタック領域に退避していたデータは全て復帰することとなり、容量外スタック領域は空となる。その後、メイン制御部41は、容量外RAM領域の所定領域に退避させた容量内スタックポインタの値をSPレジスタに復帰させる。これにより、データを退避する領域が、容量外スタック領域から容量内スタック領域に切り替わる。そして、当該メインルーチン(容量外・割込)を終了させて容量内処理(割込)に復帰する。
このように本実施例では、基本処理において、容量内プログラムによる容量内処理(基本)と、容量外プログラムによる容量外処理(基本)と、を実行可能であり、容量内処理(基本)から容量外処理(基本)を呼び出して実行するときに、まず全てのレジスタに格納されている値をRAM41cにおける容量外スタック領域に退避させ、容量外処理(基本)を終了するときに、容量外スタック領域に退避させた全ての値を対応する全てのレジスタに復帰させる。
また、容量内処理(基本)を実行するときには、Aレジスタ、Fレジスタ、BCレジスタ、DEレジスタ、HLレジスタ、Qレジスタ、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち13のレジスタを使用するのに対し、容量外処理(基本)を実行するときには、Aレジスタ、Fレジスタ、BCレジスタ、HLレジスタ、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち10のレジスタを使用する。このため、容量外処理(基本)では、容量内処理(基本)が使用する複数のレジスタのうち一部のレジスタのみを使用し、容量外処理(基本)を実行するときの方が、容量内処理(基本)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(基本)の実行による誤ったデータの使用を防止できる。
尚、本実施例では、容量外処理(基本)では、容量内処理(基本)が使用する複数のレジスタのうち一部のレジスタのみを使用することで、容量外処理(基本)を実行するときの方が、容量内処理(基本)を実行するときよりも使用されるレジスタの数が少なくなる構成であるが、容量外処理(基本)と、容量内処理(基本)と、でそれぞれ別のレジスタを使用するとともに、このような構成において、容量内処理(基本)が使用するレジスタの数よりも、容量外処理(基本)が使用するレジスタの数が少ない構成としても良く、このような構成においても、容量内処理(基本)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(基本)の実行による誤ったデータの使用を防止できる。
また、本実施例では、割込処理において、容量内プログラムによる容量内処理(割込)と、容量外プログラムによる容量外処理(割込)と、を実行可能であり、容量内処理(割込)から容量外処理(割込)を呼び出して実行するときに、まず全てのレジスタに格納されている値をRAM41cにおける容量外スタック領域に退避させ、容量外処理(割込)を終了するときに、容量外スタック領域に退避させた全ての値を対応する全てのレジスタに復帰させる。
また、容量内処理(割込)を実行するときには、A’レジスタ、F’レジスタ、B’C’レジスタ、D’E’レジスタ、H’L’レジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち11のレジスタを使用するのに対し、容量外処理(割込処理)を実行するときには、A’レジスタ、F’レジスタ、B’C’レジスタ、H’L’レジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち9のレジスタを使用する。このため、容量外処理(割込)では、容量内処理(割込)が使用する複数のレジスタのうち一部のレジスタのみを使用し、容量外処理(割込)を実行するときの方が、容量内処理(割込)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(割込)の実行による誤ったデータの使用を防止できる。
尚、本実施例では、容量外処理(割込)では、容量内処理(割込)が使用する複数のレジスタのうち一部のレジスタのみを使用することで、容量外処理(割込)を実行するときの方が、容量内処理(割込)を実行するときよりも使用されるレジスタの数が少なくなる構成であるが、容量外処理(割込)と、容量内処理(割込)と、でそれぞれ別のレジスタを使用するとともに、このような構成において、容量内処理(割込)が使用するレジスタの数よりも、容量外処理(割込)が使用するレジスタの数が少ない構成としても良く、このような構成においても、容量内処理(割込)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(割込)の実行による誤ったデータの使用を防止できる。
本実施例では、容量内プログラムによる容量内処理と、容量外プログラムによる容量外処理と、を実行可能であり、容量内処理から容量外処理を呼び出して実行するときにSPレジスタに格納されている容量内スタックポインタの値を退避し、容量外スタック領域を示す値に切り替えることよって、データの退避先を容量内スタック領域から容量外スタック領域に切り替える。また、容量外処理(基本処理)を終了するときに、退避していた容量内スタックポインタの値をSPレジスタに戻すことによって、データの退避先を容量外スタック領域から容量内スタック領域に切り替える。
そして、容量外処理を終了するときに、容量外処理の実行中に容量外スタック領域に退避させたデータを全て復帰させてから、データの退避先を容量外スタック領域から容量内スタック領域に切り替えるので、前回実行した容量外処理で使用されていたデータが退避したまま、さらに容量外処理が実行されることがなく、前回実行した容量外処理で使用されたデータと、今回実行する容量外処理で使用されるデータと、が混同してしまうことを防止できる。
また、容量内処理から呼び出される容量外処理は、複数種類の容量外処理を含んでおり、いずれの種類の容量外処理であっても、容量外処理を終了するときに、容量外処理の実行中に容量外スタック領域に退避させたデータを全て復帰させてから、データの退避先を容量外スタック領域から容量内スタック領域に切り替えるので、容量外処理の種類に関わらず、前回実行した容量外処理で使用されていたデータが退避したまま、さらに容量外処理が実行されることがなく、前回実行した容量外処理で使用されたデータと、今回実行する容量外処理で使用されるデータと、が混同してしまうことを防止できる。
また、容量外処理の種類に関わらず、容量外処理を終了するときには、容量外スタック領域にはデータが格納されていない状態となるため、容量外処理を開始するときに、前回の容量外処理の終了時に設定されていた容量外スタックポインタの値を復帰させる必要がなく、容量外スタックポインタの値として常に容量外スタック領域の0段目を示す値を設定すれば良い。
[レジスタの変形例について]
次に、CPU41aが演算を行うために用いられる複数のレジスタの変形例について、図9、図10に基づいて説明する。
図5~図8で示した例では、複数のレジスタは、主に表レジスタ、裏レジスタ、共通レジスタを含み、基本処理であれば容量内処理であっても容量外処理であっても表レジスタ及び共通レジスタが使用され、割込処理であれば容量内処理であっても容量外処理であっても裏レジスタ及び共通レジスタが使用される構成であったが、図9、図10で示す変形例では、複数のレジスタは、容量内レジスタ、容量外レジスタ、共通レジスタを含む。
容量内レジスタは、一組の表レジスタ及び裏レジスタを備え、容量外レジスタは、容量内レジスタが備えるものとは異なる一組の表レジスタ及び裏レジスタを備える。
そして、メイン制御部41は、容量内処理では、容量内レジスタを使用し、容量外処理においては、使用するレジスタを容量内レジスタから容量外レジスタに交換するとともに、容量外処理の終了時に、使用するレジスタを容量外レジスタから容量内レジスタに戻すことで、容量内レジスタは容量内処理で使用され、容量外レジスタは容量外処理で使用されることとなる。
また、共通レジスタは、容量内処理でも容量外処理でも使用可能な構成である。
図10に示すように、共通レジスタのうちIXレジスタ及びIYレジスタは、容量内処理においても容量外処理においても使用可能であるが、IXレジスタ及びIYレジスタのうちIXレジスタは、容量内処理において使用され、容量外処理において使用されない構成となっている。また、IXレジスタ及びIYレジスタのうちIYレジスタは、容量外処理において使用され、容量内処理において使用されない構成となっている。
このように、複数のレジスタの変形例では、複数のレジスタは、容量内処理で使用される容量内レジスタ、容量外処理で使用される容量外レジスタ、容量内処理でも容量外処理でも使用可能な共通レジスタを含み、容量内処理において容量内レジスタを使用し、容量内処理から呼び出される容量外処理において容量外レジスタを使用する。
容量内処理でも容量外処理でもIXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタからなる複数のレジスタのうちIXレジスタは容量内処理において使用され、容量外処理では使用されないので、容量内処理と容量外処理との間においてIXレジスタに格納されるデータが混同してしまうことを防止できる。
また、容量内処理でも容量外処理でもIXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタからなる複数のレジスタのうちIYレジスタは容量外処理において使用され、容量内処理では使用されないので、容量内処理と容量外処理との間においてIYレジスタに格納されるデータが混同してしまうことを防止できる。
尚、IXレジスタ及びIYレジスタからなる複数のレジスタのうちIXレジスタを容量内処理のみで使用し、IYレジスタを容量外処理のみで使用する構成であるが、IXレジスタ及びIYレジスタからなる複数のレジスタを容量内処理のみに使用する構成、またはIXレジスタ及びIYレジスタからなる複数のレジスタを容量外処理のみに使用する構成としても良く、このような構成とすることで、容量内処理と容量外処理との間においてIXレジスタ及びIYレジスタからなる複数のレジスタに格納されるデータが混同してしまうことを防止できる。
[作用効果1]
本実施例では、割込処理は、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちIYレジスタは、サブルーチン(割込)で使用され、メインルーチン(割込)で使用されないため、メインルーチン(割込)とサブルーチン(割込)の間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、メインルーチン(割込)から呼び出されるサブルーチン(割込)は、複数種類のサブルーチン(割込)を含んでおり、IYレジスタは、複数種類のサブルーチン(割込)の全てで使用されるのではなく、いずれかの種類のサブルーチン(割込)で使用される。このため、メインルーチン(割込)とIYレジスタを使用するサブルーチン(割込)との間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理は、タイマ割込が発生する毎に基本処理に割り込んで実行され、IYレジスタは、サブルーチン(割込)で使用され、メインルーチン(割込)で使用されないため、割込処理の実行中にメインルーチン(割込)とIYレジスタを使用するサブルーチン(割込)との間でIYレジスタに格納されるデータが混同してしまうことを防止できる。
本実施例では、割込処理は、メインルーチン(割込)と、メインルーチン(割込)から呼び出されて実行されるサブルーチン(割込)と、から構成されるとともに、割込処理において使用される複数のレジスタのうちD’E’レジスタは、メインルーチン(割込)で使用され、サブルーチン(割込)で使用されないため、メインルーチン(割込)とサブルーチン(割込)の間でD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、メインルーチン(割込)から呼び出されるサブルーチン(割込)は、複数種類のサブルーチン(割込)を含んでおり、D’E’レジスタは、いずれの種類のサブルーチン(割込)においても使用されない。このため、メインルーチン(割込)といずれの種類のサブルーチン(割込)との間においてもD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理は、タイマ割込が発生する毎に基本処理に割り込んで実行され、D’E’レジスタは、メインルーチン(割込)で使用され、サブルーチン(割込)で使用されないため、割込処理の実行中にメインルーチン(割込)とサブルーチン(割込)の間でD’E’レジスタに格納されるデータが混同してしまうことを防止できる。
[作用効果2]
本実施例では、基本処理において表レジスタを使用し、基本処理に割り込んで実行される割込処理において表レジスタから交換した裏レジスタを使用する。また、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタを使用可能であるが、IXレジスタは基本処理において使用され、割込処理では使用されないので、基本処理と割込処理との間においてIXレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのうちIYレジスタは割込処理に使用され、IXレジスタは割込処理に使用されないため、基本処理と割込処理との間において、IXレジスタ及びIYレジスタからなる複数のレジスタのうち少なくともIXレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのいずれも割込処理に使用しない構成としても良く、このような構成とすることで、基本処理を実行するときにも、割込処理を実行するときにも使用可能なIXレジスタ及びIYレジスタのいずれも割込処理では使用しないので、基本処理と割込処理との間においてIXレジスタ及びIYレジスタからなる複数のレジスタに格納されるデータが混同してしまうことを防止できる。
本実施例では、基本処理において表レジスタを使用し、基本処理に割り込んで実行される割込処理において表レジスタから交換した裏レジスタを使用する。また、基本処理が実行されるときにも、割込処理が実行されるときにも、IYレジスタを使用可能であるが、IYレジスタは割込処理において使用し、基本処理では使用しないので、基本処理と割込処理との間においてIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのうちIXレジスタは基本処理に使用し、IYレジスタは基本処理に使用しないため、基本処理と割込処理との間において、IXレジスタ及びIYレジスタからなる複数のレジスタのうち少なくともIYレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、基本処理が実行されるときにも、割込処理が実行されるときにも、IXレジスタ及びIYレジスタからなる複数のレジスタを使用可能であるが、IXレジスタ及びIYレジスタのいずれも基本処理に使用しない構成としても良く、このような構成とすることで、基本処理を実行するときにも、割込処理を実行するときにも使用可能なIXレジスタ及びIYレジスタからなる複数のレジスタのいずれも基本処理では使用されないので、基本処理と割込処理との間においてIXレジスタ及びIYレジスタからなる複数のレジスタに格納されるデータが混同してしまうことを防止できる。
また、本実施例では、割込処理を実行するときに、使用するレジスタを表レジスタから裏レジスタに交換すると、前回の割込処理で使用されていた裏レジスタの値が格納された状態となるが、今回の割込処理では、前回の割込処理で使用されていた裏レジスタの値を使用せず、改めて裏レジスタに必要な値を格納するので、意図しない値で割込処理が実行されてしまうことを防止できる。
[作用効果3]
本実施例では、容量内プログラムによる容量内処理と、容量内プログラムから呼び出されて実行される容量外プログラムによる容量外処理と、を実行可能であり、容量内処理を実行するときに、まず全てのレジスタに格納されている値をRAM41cにおける容量外スタック領域に退避させ、容量外処理を終了するときに、容量外スタック領域に退避させた全ての値を対応する全てのレジスタに復帰させる。
また、容量外処理を実行するときには、容量内処理が使用する複数のレジスタのうち一部のレジスタのみを使用する。このため、容量外処理では、容量内処理が使用する複数のレジスタのうち一部のレジスタのみを使用し、容量外処理を実行するときの方が、容量内処理を実行するときよりも使用されるレジスタの数が少ないので、容量外処理の実行による誤ったデータの使用を防止できる。
また、本実施例では、基本処理において、容量内プログラムによる容量内処理(基本)と、容量外プログラムによる容量外処理(基本)と、を実行可能であり、容量内処理(基本)から容量外処理(基本)を呼び出して実行するときに、まず全てのレジスタに格納されている値をRAM41cにおける容量外スタック領域に退避させ、容量外処理(基本)を終了するときに、容量外スタック領域に退避させた全ての値を対応する全てのレジスタに復帰させる。
また、容量内処理(基本)を実行するときには、Aレジスタ、Fレジスタ、BCレジスタ、DEレジスタ、HLレジスタ、Qレジスタ、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち13のレジスタを使用するのに対し、容量外処理(基本)を実行するときには、Aレジスタ、Fレジスタ、BCレジスタ、HLレジスタ、Iレジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち10のレジスタを使用する。このため、容量外処理(基本)では、容量内処理(基本)が使用する複数のレジスタのうち一部のレジスタのみを使用し、容量外処理(基本)を実行するときの方が、容量内処理(基本)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(基本)の実行による誤ったデータの使用を防止できる。
また、本実施例では、割込処理において、容量内プログラムによる容量内処理(割込)と、容量外プログラムによる容量外処理(割込)と、を実行可能であり、容量内処理(割込)から容量外処理(割込)を呼び出して実行するときに、まず全てのレジスタに格納されている値をRAM41cにおける容量外スタック領域に退避させ、容量外処理(割込)を終了するときに、容量外スタック領域に退避させた全ての値を対応する全てのレジスタに復帰させる。
また、容量内処理(割込)を実行するときには、A’レジスタ、F’レジスタ、B’C’レジスタ、D’E’レジスタ、H’L’レジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち11のレジスタを使用するのに対し、容量外処理(割込処理)を実行するときには、A’レジスタ、F’レジスタ、B’C’レジスタ、H’L’レジスタ、Rレジスタ、SPレジスタ、PCレジスタ、すなわち9のレジスタを使用する。このため、容量外処理(割込)では、容量内処理(割込)が使用する複数のレジスタのうち一部のレジスタのみを使用し、容量外処理(割込)を実行するときの方が、容量内処理(割込)を実行するときよりも使用されるレジスタの数が少ないので、容量外処理(割込)の実行による誤ったデータの使用を防止できる。
[作用効果4]
本実施例では、容量内プログラムによる容量内処理と、容量外プログラムによる容量外処理と、を実行可能であり、容量内処理から容量外処理を呼び出して実行するときにSPレジスタに格納されている容量内スタックポインタの値を退避し、容量外スタック領域を示す値に切り替えることよって、データの退避先を容量内スタック領域から容量外スタック領域に切り替える。また、容量外処理(基本処理)を終了するときに、退避していた容量内スタックポインタの値をSPレジスタに戻すことによって、データの退避先を容量外スタック領域から容量内スタック領域に切り替える。
そして、容量外処理を終了するときに、容量外処理の実行中に容量外スタック領域に退避させたデータを全て復帰させてから、データの退避先を容量外スタック領域から容量内スタック領域に切り替えるので、前回実行した容量外処理で使用されていたデータが退避したまま、さらに容量外処理が実行されることがなく、前回実行した容量外処理で使用されたデータと、今回実行する容量外処理で使用されるデータと、が混同してしまうことを防止できる。
また、容量内処理から呼び出される容量外処理は、複数種類の容量外処理を含んでおり、いずれの種類の容量外処理であっても、容量外処理を終了するときに、容量外処理の実行中に容量外スタック領域に退避させたデータを全て復帰させてから、データの退避先を容量外スタック領域から容量内スタック領域に切り替えるので、容量外処理の種類に関わらず、前回実行した容量外処理で使用されていたデータが退避したまま、さらに容量外処理が実行されることがなく、前回実行した容量外処理で使用されたデータと、今回実行する容量外処理で使用されるデータと、が混同してしまうことを防止できる。
以上、本発明の実施例を図面により説明してきたが、本発明はこの実施例に限定されるものではなく、本発明の主旨を逸脱しない範囲における変更や追加があっても本発明に含まれることは言うまでもない。
前記実施例では、本発明を遊技用価値としてメダル並びにクレジットを用いて賭数が設定されるスロットマシンに適用した例について説明したが、遊技用価値として遊技球を用いて賭数を設定するスロットマシンや、遊技用価値としてクレジットのみを使用して賭数を設定する完全クレジット式のスロットマシンに適用しても良い。
また、前記実施例及び変形例では、本発明を遊技機の一例であるスロットマシン1に適用する例を示したが、本発明はこれに限定されるものではなく、遊技領域に遊技球を発射することにより遊技を行うパチンコ遊技機、さらには、スロットマシンやパチンコ遊技機以外の一般ゲーム機等、所定の遊技を行う遊技機であれば適用可能である。
1 スロットマシン
2L、2C、2R リール
6 MAXBETスイッチ
7 スタートスイッチ
8L、8C、8R ストップスイッチ
41 メイン制御部
91 サブ制御部

Claims (1)

  1. 遊技を行う遊技機において、
    複数のレジスタを使用してプログラムを実行するプログラム実行手段を備え、
    前記プログラムは、基本プログラムと、前記基本プログラムの実行中に割り込んで実行される割込プログラムと、を含み、
    前記割込プログラムは、メインプログラムと、前記メインプログラムから呼び出されて前記メインプログラムが使用しているレジスタを退避することなく実行されるサブプログラムと、から構成され、
    前記複数のレジスタのうち共用レジスタは、前記メインプログラムと前記サブプログラムのいずれでも使用され、
    前記複数のレジスタのうち特定レジスタは、前記メインプログラムで使用され、前記サブプログラムで使用されない、遊技機。
JP2020100263A 2020-06-09 2020-06-09 遊技機 Active JP7467244B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020100263A JP7467244B2 (ja) 2020-06-09 2020-06-09 遊技機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020100263A JP7467244B2 (ja) 2020-06-09 2020-06-09 遊技機

Publications (2)

Publication Number Publication Date
JP2021194053A JP2021194053A (ja) 2021-12-27
JP7467244B2 true JP7467244B2 (ja) 2024-04-15

Family

ID=79196263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020100263A Active JP7467244B2 (ja) 2020-06-09 2020-06-09 遊技機

Country Status (1)

Country Link
JP (1) JP7467244B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018099476A (ja) 2016-12-21 2018-06-28 株式会社オリンピア 遊技機
JP2019013346A (ja) 2017-07-04 2019-01-31 株式会社オリンピア 遊技機

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018099476A (ja) 2016-12-21 2018-06-28 株式会社オリンピア 遊技機
JP2019013346A (ja) 2017-07-04 2019-01-31 株式会社オリンピア 遊技機

Also Published As

Publication number Publication date
JP2021194053A (ja) 2021-12-27

Similar Documents

Publication Publication Date Title
JP7209035B2 (ja) 遊技機
JP6681792B2 (ja) スロットマシン
JP2016195629A (ja) 遊技機
JP2002172199A (ja) スロットマシン
JP2013252265A (ja) 遊技機
JP2017131395A (ja) 遊技機
JP5500832B2 (ja) 遊技機
JP7467244B2 (ja) 遊技機
JP7467243B2 (ja) 遊技機
JP7496246B2 (ja) 遊技機
JP7496245B2 (ja) 遊技機
JP7460455B2 (ja) 遊技機
JP7460456B2 (ja) 遊技機
JP6842272B2 (ja) スロットマシン
JP6681695B2 (ja) 遊技機
JP2021194057A (ja) 遊技機
JP2021194056A (ja) 遊技機
JP2022038544A (ja) 遊技機
JP2022038545A (ja) 遊技機
JP2021074637A (ja) スロットマシン
JP2022038549A (ja) 遊技機
JP2022038548A (ja) 遊技機
JP2018089132A (ja) 遊技機
JP2022038546A (ja) 遊技機
JP2022038547A (ja) 遊技機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240313

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: 20240402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240403

R150 Certificate of patent or registration of utility model

Ref document number: 7467244

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150