HOME 無線 PC−1245 MSX ファミコン 迷路
パソコン通信 売店 病院 PC−9800 PDA 太陽光発電 経済


JP3TLC's homepage
PC-1245



「PC−1245」メニュー

SC61860の命令一覧

 以下の表で「ニモニック」のパラメータについては8ビット値をn、 16ビット値をnmで表すこととする。 サイクル数は命令の実行に必要な時間を表す。 「フラグ」は命令の実行により状態が変わるフラグを示す。 (表は左右にスクロール可能→スマホの方)

1.データ転送命令

【1】イミディエイト・ロード
レジスタにパラメータをそのまま代入する命令。フラグに影響を与えない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
LII n 00 4 I←n I(カウンタ)にnを代入する なし
LIJ n 01 4 J←n J(カウンタ)にnを代入する なし
LIA n 02 4 A←n A(アキュムレータ)にnを代入する なし
LIB n 03 4 B←n B(アキュムレータ予備)にnを代入する なし
LIDP nm 10 8 DP←nm DP(外部RAMポインタ)にアドレスnmを代入する。 外部RAM上に置かれるコードでは「10 nn mm」となり、 アセンブラを使用する場合は特に意識する必要はないが、 ハンドアセンブルする場合は メモリの上位番地にアドレスの下位バイトが置かれる(Z80CPUと逆)ことに注意。 なし
LIDL n 11 5 DPの下位←n DP(外部RAMポインタ)の下位バイトにnを代入する。 なし
LIP n 12 4 P←n P(内部RAMポインタ)にnを代入する。 なし
LIQ n 13 4 Q←n Q(内部RAMポインタ)にnを代入する。 なし
LP n 80〜BF 2 P←n P(内部RAMポインタ)にnを代入する。 この命令はパラメータによってコードが変化し、パラメータと命令を合わせて1バイトしか 必要としない。内部RAMの後ろのほうはこの命令で届かないのでLIPを使用する。 なし

【2】アキュムレータとレジスタ間のデータの移動
アキュムレータとレジスタ間でデータを移動する命令。フラグに影響を与えない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
LDP 20 2 A←P A(アキュムレータ)にP(内部RAMポインタ)の値を代入する なし
LDQ 21 2 A←Q A(アキュムレータ)にQ(内部RAMポインタ)の値を代入する なし
LDR 22 2 A←R A(アキュムレータ)にR(内部RAMポインタ)の値を代入する なし
STP 30 2 P←A P(内部RAMポインタ)にA(アキュムレータ)の値を代入する なし
STQ 31 2 Q←A Q(内部RAMポインタ)にA(アキュムレータ)の値を代入する なし
STR 32 2 R←A R(内部RAMポインタ)にA(アキュムレータ)の値を代入する。 なし

【3】アキュムレータとメモリ間のデータの移動
アキュムレータとメモリ間でデータを移動する命令。フラグに影響を与えない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
STD 52 2 (DP)←A 外部RAMにアキュムレータの値を書き出す命令。 A(アキュムレータ)の値を DP(外部RAMポインタ)の指しているメモリ(外部RAM)に 代入する。 なし
LDD 57 3 A←(DP) 外部RAMからアキュムレータに値を読み込む命令。 DP(外部RAMポインタ)の指している メモリ(外部RAM)の値をA(アキュムレータ)に代入する。 なし
LDM 59 2 A←(P) 内部RAMからアキュムレータに値を読み込む命令。 P(内部RAMポインタ)の指しているメモリ(内部RAM)の 値をA(アキュムレータ)に代入する。逆にアキュムレータの値を内部RAMに書き出す命令はないので、 代わりにEXAM(データ交換)命令を利用する。 なし

【4】メモリ間のデータの移動
外部RAMと内部RAM間でデータを移動する命令。フラグに影響を与えない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
MVDM 53 3 (DP)←(P) P(内部RAMポインタ)の指しているメモリ(内部RAM)の値を DP(外部RAMポインタ)の指しているメモリ(外部RAM)に代入する なし
MVMD 55 3 (P)←(DP) DP(外部RAMポインタ)の指しているメモリ(外部RAM)の値を P(内部RAMポインタ)の指しているメモリ(内部RAM)に代入する なし

【5】アキュムレータとBまたはメモリ間のデータ交換
アキュムレータとBまたはメモリ間でデータを交換する命令。フラグに影響を与えない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
EXAB DA 5 B←→A A(アキュムレータ)とBの値を交換する なし
EXAM DB 3 (P)←→A A(アキュムレータ)とP(内部RAMポインタ)の 指しているメモリ(内部RAM)の値を交換する なし

【6】データのブロック転送
メモリ内またはメモリ間でデータをブロック転送する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
MVW 08 5+2d (P)〜(P+I)←
(Q)〜(Q+I)
内部RAM内でブロック転送を行う命令。 Q(内部RAMポインタ)からQ+Iまでのアドレス に入っている内容をP(内部RAMポインタ)からP+Iまでのメモリに転送する。 この命令の実行に先立ち事前にIにセットすべき値はブロック長−1となる。 なし
MVB 0A 5+2d (P)〜(P+J)←
(Q)〜(Q+J)
使用するカウンタがJに変わること以外はMVWと同じ なし
MVWD 18 5+4d (P)〜(P+I)←
(DP)〜(DP+I)
外部RAMから内部RAMへブロック転送を行う命令。 DP(外部RAMポインタ)からDP+Iまでのアドレス に入っている内容をP(内部RAMポインタ)からP+Iまでのメモリに転送する。 この命令の実行に先立ち事前にIにセットすべき値はブロック長−1となる。 なし
MVBD 1A 5+4d (P)〜(P+J)←
(DP)〜(DP+J)
使用するカウンタがJに変わること以外はMVWDと同じ なし
RST 35 ? (P)〜(P+I)←
(BA)〜(BA+I)
外部RAMから内部RAMへブロック転送を行う命令。 レジスタペアBAからBA+Iまでのアドレス に入っている内容をP(内部RAMポインタ)からP+Iまでのメモリに転送する。 この命令の実行に先立ち事前にIにセットすべき値はブロック長−1となる。 なし

【7】データのブロック交換
メモリ内またはメモリ間でデータのブロック交換を行う。
ニモニック コード サイクル数 オペレーション                説明                フラグ
EXW 09 6+3d (P)〜(P+I)←→
(Q)〜(Q+I)
内部RAM内でデータのブロック交換を行う命令。 P(内部RAMポインタ)からP+Iまでのアドレス に入っている内容とQ(内部RAMポインタ)からQ+Iまでの アドレスに入っている内容を交換する。 この命令の実行に先立ち事前にIレジスタにセットすべき値はブロック長−1となる。 なし
EXB 0B 6+3d (P)〜(P+J)←→
(Q)〜(Q+J)
使用するカウンタがJに変わること以外はEXWと同じ なし
EXWD 19 7+6d (DP)〜(DP+I)←→
(P)〜(P+I)
外部RAMと内部RAM間でデータのブロック交換を行う命令。 P(内部RAMポインタ)からP+Iまでのアドレス に入っている内容とDP(外部RAMポインタ)からDP+Iまでの アドレスに入っている内容を交換する。 この命令の実行に先立ち事前にIレジスタにセットすべき値はブロック長−1となる。 なし
EXBD 1B 7+6d (DP)〜(DP+J)
←→(P)〜(P+J)
使用するカウンタがJに変わること以外はEXWDと同じ なし
【8】レジスタのインクリメント・デクリメント
レジスタのインクリメント(1を足す)・デクリメント(1を引く)を行う。 アドレスレジスタのインクリメント・デクリメントを除き、結果によってC,Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
INCI 40 4 I←I+1 Iに1を加える C,Z
DECI 41 4 I←I−1 Iから1を引く C,Z
INCA 42 4 A←A+1 Aに1を加える C,Z
DECA 43 4 A←A−1 Aから1を引く C,Z
INCK 48 4 K←K+1 Kに1を加える C,Z
DECK 49 4 K←K−1 Kから1を引く C,Z
INCM 4A 4 M←M+1 Mに1を加える C,Z
DECM 4B 4 M←M−1 Mから1を引く C,Z
INCP 50 4 P←P+1 Pに1を加える なし
DECP 51 4 P←P−1 Pから1を引く なし
INCJ C0 4 J←J+1 Jに1を加える C,Z
DECJ C1 4 J←J−1 Jから1を引く C,Z
INCB C2 4 B←B+1 Bに1を加える C,Z
DECB C3 4 B←B−1 Bから1を引く C,Z
INCL C8 4 L←L+1 Lに1を加える C,Z
DECL C9 4 L←L−1 Lからを1を引く C,Z
INCN CA 4 N←N+1 Nに1を加える C,Z
DECN CB 4 N←N−1 Nから1を引く C,Z
【9】外部RAMポインタのインクリメント・デクリメント
X・Yのインクリメント(1を足す)・デクリメント(1を引く)を行う。計算結果はDPにも残る。
ニモニック コード サイクル数 オペレーション                説明                フラグ
IX 04 6 X←X+1 Xに1を加える なし
DX 05 6 X←X−1 Xから1を引く。Qの内容が破壊される。 なし
IY 06 6 Y←Y+1 Yに1を加える。Qの内容が破壊される。 なし
DY 07 6 Y←Y−1 Yから1を引く なし
【10】Xのインクリメントまたはデクリメントとロード
X・Yをインクリメント(1を足す)・デクリメント(1を引く)して、そのアドレスの内容をアキュムレータに読み込む。アドレスの計算結果はDPにも残る。
ニモニック コード サイクル数 オペレーション                説明                フラグ
IXL 24 X←X+1
A←(X)
Xに1を加え、それによって示されるメモリ (外部RAM)の値をアキュムレータに読み込む。 Qの内容が破壊される。 なし
DXL 25 X←X−1
A←(X)
Xから1を引き、それによって示されるメモリ (外部RAM)の値をアキュムレータに読み込む。 Qの内容が破壊される。 なし
【11】Yのインクリメントまたはデクリメントとストア
ニモニック コード サイクル数 オペレーション                説明                フラグ
IYS 26 6 Y←Y+1
(Y)←A
Yに1を加え、それによって示されるメモリ (外部RAM)にアキュムレータの値を書き出す。 DPとQの値が破壊される。 なし
DYS 27 6 Y←Y−1
(Y)←A
Yから1を引き、それによって示されるメモリ (外部RAM)にアキュムレータの値を書き出す。 DPとQの値が破壊される。 なし
【12】メモリブロックをアキュムレータの値で満たす
ニモニック コード サイクル数 オペレーション                説明                フラグ
FILM 1E 5+d (P)〜(P+I)←A PからP+Iまでのアドレスの内部RAMにアキュムレータの 値をセットする。事前にIにセットしておくべき値は ブロック長−1となる。Pの値が破壊される。 なし
FILD 1F 4+3d (DP)〜(DP+I)←A DPからDP+Iまでのアドレスの外部RAMにアキュムレータの 値をセットする。事前にIにセットしておくべき値は ブロック長−1となる。DPの値が破壊される。 なし
2.算術命令・論理命令・シフト命令

【1】イミディエイト加減算
アキュムレータにパラメータをそのまま加減算する。 計算結果によりC、Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADIA n 74 4 A←A+n A(アキュムレータ)にnを加算する。 C,Z
SBIA n 75 4 A←A−n A(アキュムレータ)からnを引く。 C,Z
【2】内部RAMに対するイミディエイト加減算
内部RAMにパラメータをそのまま加減算する。 計算結果によりC、Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADIM n 70 4 (P)←(P)+n P(ポインタ)の示す内部RAMにnを加算する。 C,Z
SBIM n 71 4 (P)←(P)−n P(ポインタ)の示す内部RAMからnを減算する。 C,Z
【3】内部RAMとアキュムレータとの加減算
内部RAMにアキュムレータの値を加減算する。 計算結果によりC、Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADM 44 3 (P)←(P)+A P(ポインタ)の示す内部RAMにA(アキュムレータ)の値を加算する。 Aの値は変化しない。 C,Z
SBM 45 3 (P)←(P)−A P(ポインタ)の示す内部RAMからA(アキュムレータ)の値を引く。 Aの値は変化しない。 C,Z
【4】キャリーを含めた内部RAMとアキュムレータとの加減算
内部RAMにアキュムレータとCフラグの値を加減算する。 計算結果によりC、Zフラグが変化する。 これらの命令を使用することにより複数バイトにまたがる大きな数の計算が行えるようになる。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADCM C4 3 (P)←(P)+A+C P(ポインタ)の示す内部RAMにA(アキュムレータ)とCフラグの値を加算する。 Aの値は変化しない。 C,Z
SBCM C5 3 (P)←(P)−A−C P(ポインタ)の示す内部RAMからA(アキュムレータ)とCフラグの値を引く。 Aの値は変化しない。 C,Z
【5】16ビット長の加減算
レジスタ・ペアBAを利用して16ビット長の加減算を行う。 それぞれP+1によって表される内部RAMとBに16ビット値の上位バイト、 Pによって表される内部RAMとAに16ビット値の下位バイトをセットする。 計算結果によりC、Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADB 14 5 (P+1,P)←
(P+1,P)+BA
P+1とPによって示される内部RAMに レジスタ・ペアBAの値を加算する。 C,Z
SBB 15 5 (P+1,P)←
(P+1,P)−BA
P+1とPによって示される内部RAMから レジスタ・ペアBAの値を減算する。 C,Z
【6】ブロックBCD演算
内部RAM内のP−I(上位桁)からP(下位桁)で表されるブロックを、 例えば10進数の1234を2バイトで12、34と表現するように、 連続したBCD(パック10進数形式)の数とみなし加減算を行う。 計算結果によりC、Zフラグが変化する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ADN 0C 7+3d (P−I〜P)←
(P−1〜P)+A
P−IからPで表されるブロックにAの値を加える。 それぞれ連続したBCDの数として演算を行う。 C,Z
SBN 0D 7+3d (P−I〜P)←
(P−1〜P)−A
P−IからPで表されるブロックからAの値を引く。 それぞれ連続したBCDの数として演算を行う。 C,Z
ADW 0E 7+3d (P−I〜P)←
(P−1〜P)+(Q−I〜Q)
P−IからPで表されるブロックにQ−IからQで表されるブロックの値を加える。 それぞれ連続したBCDの数として演算を行う。 C,Z
SBW 0F 7+3d (P−I〜P)←
(P−1〜P)−(Q−I〜Q)
P−IからPで表されるブロックからQ−IからQで表されるブロックの値を引く。 それぞれ連続したBCDの数として演算を行う。 C,Z
【7】4ビット単位のシフト
ニモニック コード サイクル数 オペレーション                説明                フラグ
SRW 1C 5+d 4ビット右シフト PからP+Iで表されるブロック内で4ビット単位の右シフトを行う。 その際、ブロックの先頭の4ビットに0が補われ、 ブロックの末尾の4ビットは捨てられる。例えば、 Aレジスタに78、Bレジスタに9Aと入っている時に、 Iに01、Pに02をセットしてこの命令を実行すると、 Aレジスタが07、Bレジスタが89になる。 なし
SLW 1D 5+d 4ビット左シフト PからP+Iで表されるブロック内で4ビット単位の左シフトを行う。 その際、ブロックの先頭の4ビットは捨てられ、 ブロックの末尾の4ビットに0が補われる。例えば、 Aレジスタに78、Bレジスタに9Aと入っている時に、 Iに01、Pに02をセットしてこの命令を実行すると、 Aレジスタが89、BレジスタがA0になる。 なし
【8】論理和(OR)
2つの値のビットごとにどちらかが1ならばそのビットの結果が1になる。 両方が0の時のみ結果が0になる。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ORMA 47 3 (P)←(P)∪A Pで表される内部RAMとアキュムレータとのORを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。 アキュムレータは変化しない。
ORIM n 61 3 (P)←(P)∪n Pで表される内部RAMとイミディエイト値nとのORを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。
ORIA n 65 4 A←A∪n アキュムレータとイミディエイト値nとのORを取り、 結果をアキュムレータに格納する。結果が0ならZフラグが立つ。
ORID n D5 6 (DP)←(DP)∪n DPで表される外部RAMとイミディエイト値nとのORを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。
【9】論理積(AND)
2つの値のビットごとにどちらかが0ならばそのビットの結果が0になる。 両方が1の時のみ結果が1になる。
ニモニック コード サイクル数 オペレーション                説明                フラグ
ANMA 46 3 (P)←(P)∩A Pで表される内部RAMとアキュムレータとのANDを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。 アキュムレータは変化しない。
ANIM n 60 3 (P)←(P)∩n Pで表される内部RAMとイミディエイト値nとのANDを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。
ANIA n 64 4 A←A∩n アキュムレータとイミディエイト値nとのANDを取り、 結果をアキュムレータに格納する。結果が0ならZフラグが立つ。
ANID n D4 6 (DP)←(DP)∩n DPで表される外部RAMとイミディエイト値nとのANDを取り、 結果をそのメモリに格納する。結果が0ならZフラグが立つ。
【10】ビット・テスト
あるビットが0であるか1であるかを調べるため、 ANDを取った結果をフラグだけに反映する。 あるビットが0の場合、1とのANDを取るとZが立つので そのビットが0であると分かる。 メモリやアキュムレータの値は変化しない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
TSIM n 62 3 Z←(P)∩n Pで表される内部RAMとイミディエイト値nとのANDを取り、 結果をZフラグに反映する。
TSIA n 66 4 Z←A∩n アキュムレータとイミディエイト値nとのANDを取り、 結果をZフラグに反映する。
TSID n D6 6 Z←(DP)∩n DPで表される外部RAMとイミディエイト値nとのANDを取り、 結果をZフラグに反映する。
TSMA C6 6 Z←(P)∩A Pで表される内部RAMとアキュムレータとのANDを取り、 結果をZフラグに反映する。
【11】比較命令
メモリやレジスタの値の大小関係を調べるため、 引き算した結果をフラグだけに反映する。 値が等しい場合には引き算した結果が0なのでZフラグが立つ。 値が等しくない場合にはZフラグが立たないことと、 Cフラグの状態を合わせて大小関係を判定する。 すなわち、引かれる値より引く値が大きければCフラグが立ち、 逆の場合はCフラグが立たない。 比較命令ではメモリやアキュムレータの値は変化しない。
ニモニック コード サイクル数 オペレーション                説明                フラグ
CPIM n 63 4 C、Z←(P)−n Pで表される内部RAMからイミディエイト値nを引き、 結果をCおよびZフラグに反映する。 C、Z
CPIA n 67 4 C、Z←A−n アキュムレータからイミディエイト値nを引き、 結果をCおよびZフラグに反映する。 C、Z
CPMA C7 3 C、Z←(P)−A Pで表される内部RAMからアキュムレータの値を引き、 結果をCおよびZフラグに反映する。 C、Z
【12】1バイト中のニブル交換
ニモニック コード サイクル数 オペレーション                説明                フラグ
SWP 58 2 A1-4←→A5-8 アキュムレータの上位4ビットと下位4ビットを入れ換える。 例えば9Aのときこの命令を実行するとA9になる。 なし
【13】シフト命令
ニモニック コード サイクル数 オペレーション                説明                フラグ
SL 5A 2 左シフト アキュムレータの値を1ビットずつ左にずらす。 その際、Cフラグの内容がビット0に入り、 ビット7の内容がCフラグに入る。 Cフラグが0の時にこの命令を実行することは、 アキュムレータの値を2倍にすることに相当する。
SR D2 2 右シフト アキュムレータの値を1ビットずつ右にずらす。 その際、Cフラグの内容がビット7に入り、 ビット0の内容がCフラグに入る。 Cフラグが0の時にこの命令を実行することは、 アキュムレータの値を2で割ることに相当する。
【14】キャリーのセット、リセット
これらの命令を使用すると副作用としてZフラグが立つ。
ニモニック コード サイクル数 オペレーション                説明                フラグ
SC D0 2 C←1 Cフラグに1をセットする。 C、Z
RC D1 2 C←0 Cフラグに0をセットする。 C、Z
3.ジャンプ命令

【1】相対ジャンプ
前後256バイト以内でジャンプする命令。 この命令で届かない場合は絶対ジャンプ命令を使用する。
ニモニック コード サイクル数 オペレーション                説明                フラグ
JRNZP n 28 7,4 IF Z=0 THEN PC←PC+n Zフラグが0の時、パラメータnのあるアドレスから見てnバイト先にジャンプする。 Zフラグが1の時はそのまま次の命令を実行する。 なし
JRNZM n 29 7,4 IF Z=0 THEN PC←PC-n Zフラグが0の時、パラメータnのあるアドレスから見てnバイト前にジャンプする。 Zフラグが1の時はそのまま次の命令を実行する。 なし
JRNCP n 2A 7,4 IF C=0 THEN PC←PC+n Cフラグが0の時、パラメータnのあるアドレスから見てnバイト先にジャンプする。 Cフラグが1の時はそのまま次の命令を実行する。 なし
JRNCM n 2B 7,4 IF C=0 THEN PC←PC-n Cフラグが0の時、パラメータnのあるアドレスから見てnバイト前にジャンプする。 Cフラグが1の時はそのまま次の命令を実行する。 なし
JRP n 2C 7 PC←PC+n パラメータnのあるアドレスから見てnバイト先に無条件にジャンプする。 なし
JRM n 2D 7 PC←PC-n パラメータnのあるアドレスから見てnバイト前に無条件にジャンプする。 なし
JRZP n 38 7,4 IF Z=1 THEN PC←PC+n Zフラグが1の時、パラメータnのあるアドレスから見てnバイト先にジャンプする。 Zフラグが0の時はそのまま次の命令を実行する。 なし
JRZM n 39 7,4 IF Z=1 THEN PC←PC-n Zフラグが1の時、パラメータnのあるアドレスから見てnバイト前にジャンプする。 Zフラグが0の時はそのまま次の命令を実行する。 なし
JRCP n 3A 7,4 IF C=1 THEN PC←PC+n Cフラグが1の時、パラメータnのあるアドレスから見てnバイト先にジャンプする。 Cフラグが0の時はそのまま次の命令を実行する。 なし
JRCM n 3B 7,4 IF C=1 THEN PC←PC-n Cフラグが1の時、パラメータnのあるアドレスから見てnバイト前にジャンプする。 Cフラグが0の時はそのまま次の命令を実行する。 なし
【2】絶対ジャンプ
ニモニック コード サイクル数 オペレーション                説明                フラグ
JP nm 79 6 PC←nm アドレスnm番地にジャンプする。なお、メモリ上のコードでは「79 nn mm」となり、 アドレスの上位番地がメモリ上の下位番地に置かれることとなるので、 ハンドアセンブル時には注意(他の絶対ジャンプ命令も同様)。 なし
JPNZ nm 7C 6 IF Z=0 THEN PC←nm Zフラグが立っていない時アドレスnm番地にジャンプする。 なし
JPNC nm 7D 6 IF C=0 THEN PC←nm Cフラグが立っていない時アドレスnm番地にジャンプする。 なし
JPZ nm 7E 6 IF Z=1 THEN PC←nm Zフラグが立っている時アドレスnm番地にジャンプする。 なし
JPC nm 7F 6 IF C=1 THEN PC←nm Cフラグが立っている時アドレスnm番地にジャンプする。 なし
4.その他の命令
ニモニック コード サイクル数 オペレーション                説明                フラグ
LOOP n 28 10,7 (R)←(R)−1
IF C≠1 THEN PC←PC-n
スタックポインタ(Rレジスタ)の指しているメモリの値から1を引き、 Cフラグが立たない場合、 マイナス方向にnバイト相対ジャンプする。 Cフラグが立った場合はスタックポインタに1を加えて 次の命令を実行する。 あらかじめスタックにPUSHすべき値は ループ回数−1となる。LOOPを入れ子にして使うときは、 外側のループ内に内側のループのPUSH命令が含まれるようにしておかないと暴走する。 C、Z
PUSH 34 3 R←R−1
(R)←A
スタックにアキュムレータの値を保存する命令。 スタックポインタ(Rレジスタ)を1減算し、スタックポインタが指している メモリにアキュムレータの値を保存する。 保存した命令を取り出す時はPOP命令を使用する。 なし
RTN 37 4 PC←(R,R+1)
R←R+2
サブルーチンからサブルーチンの呼び出し元のアドレスへ戻る命令。 スタックに保存されている値をプログラムカウンタ(PC)に セットしてスタックポインタに2加える(CALL前の状態に戻す)。 なし
INA 4C 2 A←IA IAポートの内容を読み取ってアキュムレータに入れる。 あらかじめIAポートの読み取りたい行に対応する ビットを1にしてOUTA命令を実行する必要がある。 なし
NOPW 4D 2 2サイクルの間、何もしない命令。 なし
WAIT n 4E 6+n 6+nサイクルの間、何もしない命令。 なし
POP 5B 2 A←(R)
R←R+1
スタックに保管しておいた値をアキュムレータに 戻す命令。スタックポインタRの指しているメモリの値を アキュムレータに代入し、Rに1を加える。 なし
OUTA 5D 3 IA←(5C) 内部RAM 5Cの内容をIAポートに出力する。 なし
OUTF 5F 3 FO←(5E) 内部RAM 5Eの内容をFOポートに出力する。 なし
TEST n 6B 4 Z←各信号線∩n 各信号線とnとのANDを取り、結果をZフラグに反映する。 ビット0:0.5secカウンタ ビット1:2msecカウンタ  ビット3:Kon ビット7:Xin 
CALL nm 78 8 (R−1,R)←PC
R←R−2
PC←nm
アドレスnmをコールする命令。スタックに戻りアドレスを保存し、 アドレスnmにジャンプする。
INB CC 2 A←IB IBポートの内容を読み取ってアキュムレータに入れる。 あらかじめIBポートの読み取りたい行に対応する ビットを1にしてOUTB命令を実行する必要がある。 なし
NOPT CE 3 3サイクルの間、何もしない命令。 なし
LEAVE D8 2 (R)←0 スタックポインタの値を変えずに スタックポインタの指しているメモリに0を入れる。 ループ中に実行すると次のLOOP命令実行時に ループから抜けることになる。 なし
OUTB DD 2 IB←(5D) 内部RAM 5Dの内容をIBポートに出力する。 なし
OUTC DF 2 コントロール←(5F) 内部RAM 5Fの内容をコントロールポートに出力する。 なし
CAL nm E0〜FF 7 (R−1,R)←PC
R←R−2
PC←nm
アドレスnmをコールする命令。スタックに戻りアドレスを保存し、 アドレスnmにジャンプする。 通常のCALL命令との相違点は、 CALL命令を使用すると命令1バイトと パラメータ2バイトで合計3バイト必要になる所、 CAL命令では命令の中にパラメータが含まれているので、 2バイトしか必要としない。 また、実行にかかる時間も1サイクル短い。 ただし、この命令で呼び出せるアドレスは 0000から1FFFの範囲である。 このアドレス範囲は内部ROMに割り当てられている。 なし
5.内部ROMルーチン
エントリ オペレーション                説明                レジスタ
1172 X←Y Jに1を入れてコールすると、Yの内容がXに入る P・Q
1177 Y←X Jに1を入れてコールすると、Xの内容がYに入る P・Q
1195 (0C〜0D)←→X Jに1を入れてコールすると、Xと(0C〜0D)の内容が交換される P・Q
11E0   LCDをONにする A・P
11E9 X←BA Bに上位アドレス、Aに下位アドレス、Jに1を入れてコールするとXにBAがセットされる P・Q
11EE Y←BA Bに上位アドレス、Aに下位アドレス、Jに1を入れてコールするとYにBAがセットされる P・Q
11F1 X←BA−1 Bに上位アドレス、Aに下位アドレス、Jに1を入れてコールするとXにBA−1がセットされる DP・P・Q
11F5 Y←BA−1 Bに上位アドレス、Aに下位アドレス、Jに1を入れてコールするとYにBA−1がセットされる DP・P・Q
1200 (1C〜1D)←X Xに入っている内容を内部RAM(1C〜1D)に退避する。 P・Q
1899 X←(1C〜1D) 内部RAM(1C〜1D)に退避しておいたアドレスをXに戻す P・Q
1F44 A←押されているキーの内部コード 呼ばれた時にキーが押されていたら、そのキーの「内部」コード※がAに入り、 Cフラグが立つ。Aに入るコードはアスキーコードとは異なる (例:0を押すとAに&40が入るがASC(”0”)=&30である)。 INKEY$と同様、複数キーが同時に押された場合の判定はできない。 DP・P・Q・A・B・X・K・L・M
※内部コード
コード 0003050607090A0C0D 0E0F113435363738 404142434445464748 494A5152535455565758 595A5B5C5D5E5F606162 636465666768696A
キー ENTERCLINSDELBRKSHIFTDEF SPC
「PC−1245」メニュー
このホームページの内容についてのご意見ご感想は jp3tlc@jarl.com までお願いします。返信を希望される場合はGmailからのメールを受信できるようにしてください。
HOME 無線 PC−1245 MSX ファミコン 迷路
パソコン通信 売店 病院 PC−9800 PDA 太陽光発電 経済