MSX Datapack wiki化計画

A R800 インストラクション表の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{include unfinished_page}}

,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[5章 拡張BASIC]]                                                                  ,{BSIZE:0|RIGHT}[[B R800 かけ算命令マクロ]]                                                       →

 この表は、命令の種類ごとに分類して、R800のインストラクションをまとめたものです。表中の'''ニーモニック'''は各命令の名前を現わし、'''命令動作'''でその動作内容を簡単に示しています。
 命令動作の欄で←とあるのは、右側の内容を左側に代入することを、カッコでくくられたものは、くくられたレジスタなどで示されるメモリの内容を、それぞれ意味しています。例えば、
 r←[.hl]
とあるのは、.hlレジスタで示されるアドレスのメモリの内容を、8ビットレジスタに代入するということです。ただし、入出力命令の[n]と[.c]は、対応する入出力ポートの番号のことです。
 '''フラグ'''の欄は各フラグの動作を、'''オペコード'''はそれぞれの命令に対するマシン語コードを、2進数と16進数で記したものです。その右側の'''B'''と'''C'''は、各命令の長さ(バイト数)と、命令を実行するのに要するクロック数を、それぞれ表しています。
 このほか、インストラクション表に出てくる略号に関しては、次の凡例を参照して下さい。
 表に記載されたニーモニックはZ80のものと違っていますが、R800で追加された乗算命令や、Z80で正式に動作が保障されていなかった命令以外はZ80と命令動作はすべて同じです。

'''凡例'''
,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,         ,
,.a{7}  ,レジスター.aの最上位ビット
,.a{4-7},レジスター.aのビット4-7
,:        ,動作の区切り
,.de:.hl  ,上位16ビットが.de、下位16ビットが.hlに入る、32ビット整数
,[.ix+d]  ,.ixに8ビットの符号つき変位を足した値が示すアドレス
,C        ,キャリーフラグ
,Z        ,ゼロフラグ
,P/V      ,パリティ・オーバーフローフラグ
,S        ,サインフラグ
,N        ,減算フラグ
,H        ,ハーフキャリーフラグ
,・        ,フラグは変化しない
,↕        ,フラグは実行結果により変化する
,0        ,フラグは0
,1        ,フラグは1
,?        ,不定になる
,V        ,オーバーフローフラグとして使われる
,P        ,パリティーフラグとして使われる
,IFF      ,割り込みフリップフロップとして使われる
,"r,r'"   ,"8ビットレジスター、.a,.b,.c,.d,.e,.h,.l"
,"u,u'"   ,"8ビットレジスター、.a,.b,.c,.d,.e,.ixh,.ixl"
,"v,v'"   ,"8ビットレジスター、.a,.b,.c,.d,.e,.iyh,.iyl"
,p        ,"8ビットレジスター、.ixh,.ixl"
,q        ,"8ビットレジスター、.iyh,.iyl"
,ss       ,"16ビットレジスター、.bc,.de,.hl,.sp"
,pp       ,"16ビットレジスター、.bc,.de,.ix,.sp"
,rr       ,"16ビットレジスター、.bc,.de,.iy,.sp"
,qq       ,"16ビットレジスター、.bc,.de,.hl,.af"
,e        ,short br 系の命令の飛び先アドレスへの差分、8ビットの符号付き即値
,         ,(+127〜-128)
,k        ,"brk命令の飛び先アドレス、00h,08h,10h,18h,20h,28h,30h,38h"
,nn       ,16ビットの即値、もしくは絶対アドレス
,n        ,8ビットの即値
,b        ,ビット演算命令の第何ビットかを示す値
,NOT      ,ビットを反転する
,∨       ,ビットのORをとる
,⊻        ,ビットのXORをとる
,∧       ,ビットのANDをとる
,tmp      ,一時的に値を退避する
,B        ,命令のバイト数
,C        ,命令の実行に必要な最小クロック数

 分岐命令、コール命令でクロック数が2つ書いてあるものは、上が条件が成立しないとき、下が条件が成立した時を意味します。
 また、入出力命令でクロック数が2つ書いてあるものは、上がまだ転送が終わらないとき、下が転送が終わったときをそれぞれ意味します。
 ここに示す命令表のクロック数は、SYSCLK換算でXTALの発振周波数の4分の1です。また、ノーウエイトで実行したときの値で、DRAM上で実行した時はページブレークやリフレッシュにより、自動的にウエイトが挿入されます。

!A.1 8ビット移動命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}

,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,ニーモニック{R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,,       ,   ,B{R2} ,C{R2} 
,                ,             ,S,Z,H,{{sup P}}/{{sub V}},N,C     ,7  ,6  ,5  ,4  ,3  ,2  ,1  ,0   ,Hex,  ,  
,{c},{UD}        ,{UD}         ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
,                ,             , , , ,   , ,      ,   ,   ,   ,   ,   ,   ,   ,    ,   ,  ,  
,{c},{L}         ,{L}          ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"ld r , r'"     ,r ← r'      ,・,・,・,・  ,・,・     ,0  ,1  ,{C3|C}r,,  ,{C3|C}r',,  ,   ,1 ,1 
,"ld r , n"      ,r ← n       ,・,・,・,・  ,・,・     ,0  ,0  ,{C3|C}r,,  ,1  ,1  ,0   ,   ,2 ,2 
,                ,             , , , ,   , ,      ,{C8|C}←  n  →,,,,,,,          ,   ,  ,  
,"ld r , [.hl]"  ,r ← [.hl]   ,・,・,・,・  ,・,・     ,0  ,1  ,{C3|C}r,,  ,1  ,1  ,0   ,   ,1 ,2 
,"ld r , [.ix+d]",r ← [.ix+d] ,・,・,・,・  ,・,・     ,1  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,DD ,3 ,5 
,                ,             , , , ,   , ,      ,0  ,1  ,{C3|C}r,,  ,1  ,1  ,0   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}←  d  →,,,,,,,          ,   ,  ,  
,"ld r, [.iy+d]" ,r ← [.iy+d] ,・,・,・,・  ,・,・     ,1  ,1  ,1  ,1  ,1  ,1  ,0  ,1   ,FD ,3 ,5 
,                ,             , , , ,   , ,      ,0  ,1  ,{C3|C}r,,  ,1  ,1  ,0   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← d  →,,,,,,,           ,   ,  ,  
,"ld [.hl],r "   ,[.hl] ← r   ,・,・,・,・  ,・,・     ,0  ,1  ,1  ,1  ,0  ,{C3|C}r,,   ,   ,3 ,5 
,"ld [.ix+d],r"  ,[.ix+d] ← r ,・,・,・,・  ,・,・     ,1  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,DD ,3 ,5 
,                ,             , , , ,   , ,      ,0  ,1  ,1  ,1  ,0  ,{C3|C}r,,   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← d  →,,,,,,,           ,   ,  ,  
,"ld [iy+d],r"   ,[iy+d] ← r  ,・,・,・,・  ,・,・     ,1  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,FD ,3 ,5 
,                ,             , , , ,   , ,      ,0  ,1  ,1  ,1  ,0  ,{C3|C}r,,   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← d  →,,,,,,,           ,   ,  ,  
,"ld u, u'"      ,u ← u'      ,・,・,・,・  ,・,・     ,0  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,DD ,2 ,2 
,                ,             , , , ,   , ,      ,0  ,1  ,{C3|C}u,,  ,{C3|C}u',,  ,   ,  ,  
,"ld v, v'"      ,v ← v'      ,・,・,・,・  ,・,・     ,0  ,1  ,1  ,1  ,1  ,1  ,0  ,1   ,FD ,2 ,2 
,                ,             , , , ,   , ,      ,0  ,1  ,{C3|C}v,,  ,{C3|C}v',,  ,   ,  ,  
,"ld u, n"       ,u ← n       ,・,・,・,・  ,・,・     ,1  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,DD ,3 ,3 
,                ,             , , , ,   , ,      ,0  ,0  ,{C3|C}u,,  ,1  ,1  ,0   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← n  →,,,,,,,           ,   ,  ,  
,"ld v, n"       ,v ← n       ,・,・,・,・  ,・,・     ,1  ,1  ,1  ,1  ,1  ,1  ,0  ,1   ,FD ,3 ,3 
,                ,             , , , ,   , ,      ,0  ,0  ,{C3|C}v,,  ,1  ,1  ,0   ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← n  →,,,,,,,           ,   ,  ,  
,"ld [.hl],n "   ,[.hl] ← n   ,・,・,・,・  ,・,・     ,0  ,0  ,1  ,1  ,0  ,1  ,1  ,0   ,36 ,2 ,3 
,                ,             , , , ,   , ,      ,{C8|C}← n  →,,,,,,,           ,   ,  ,  
,"ld [.ix+d],n"  ,[.ix+d] ← n ,・,・,・,・  ,・,・     ,1  ,1  ,0  ,1  ,1  ,1  ,0  ,1   ,DD ,4 ,5 
,                ,             , , , ,   , ,      ,0  ,0  ,1  ,1  ,0  ,1  ,1  ,0   ,36 ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← d  →,,,,,,,           ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← n  →,,,,,,,           ,   ,  ,  
,"ld [iy+d],n"   ,[iy+d] ← n  ,・,・,・,・  ,・,・     ,1  ,1  ,1  ,1  ,1  ,1  ,0  ,1   ,FD ,4 ,5 
,                ,             , , , ,   , ,      ,0  ,0  ,1  ,1  ,0  ,1  ,1  ,0   ,36 ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← d  →,,,,,,,           ,   ,  ,  
,                ,             , , , ,   , ,      ,{C8|C}← n  →,,,,,,,           ,   ,  ,  

,,000,001,010,011,100,101,110,111
,r,.b,.c,.d,.e,.h,.l,,.a
,u,.b,.c,.d,.e,.ixh,.ixl,,.a
,v,.b,.c,.d,.e,.iyh,.iyl,,.a

!A.2 16ビット移動命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}

,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,ニーモニック{R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,,       ,   ,B{R2} ,C{R2} 
,                ,             ,S,Z,H,{{sup P}}/{{sub V}},N,C     ,7  ,6  ,5  ,4  ,3  ,2  ,1  ,0   ,Hex,  ,  
,{c},{UD}        ,{UD}         ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
,                ,             , , , ,   , ,      ,   ,   ,   ,   ,   ,   ,   ,    ,   ,  ,  
,{c},{L}         ,{L}          ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"ld ss, nn",ss ← nn,        ・,・,・,・  ,・,・     ,0,0,{COLS:2|C}ss,,0,0,0,1  ,   ,3,3
,, ,  ,,,,,,  {C8|C}← nnl  →,,,,,,,,   ,  ,  
,, ,  ,,,,,,  {C8|C}← nnh →,,,,,,,,  ,  , 
,"ld .ix, nn",.ix ← nn,        ・,・,・,・  ,・,・     ,1,1,0,1,1,1,0,1  ,DD   ,4,4
,, ,  ,,,,,,  0,0,1,0,0,0,0,1   ,21  , ,  
,, ,  ,,,,,,  {C8|C}← nnl  →,,,,,,,,   ,  ,  
,, ,  ,,,,,,  {C8|C}← nnh →,,,,,,,,  ,  , 
,"ld .iy, nn",.iy ← nn,        ・,・,・,・  ,・,・     ,1,1,1,1,1,1,0,1  ,FD   ,4,4
,, ,  ,,,,,,  0,0,1,0,0,0,0,1   ,21  , ,  
,, ,  ,,,,,,  {C8|C}← nnl  →,,,,,,,,   ,  ,  
,, ,  ,,,,,,  {C8|C}← nnh →,,,,,,,,  ,  , 
,"ld .sp, .hl",.sp ← .bl,        ・,・,・,・  ,・,・     ,1,1,1,1,1,1,0,1  ,F9   ,1,1
,"ld .sp, .ix",.sp ← .ix,        ・,・,・,・  ,・,・     ,1,1,0,1,1,1,0,1  ,DD   ,2,2
,, ,  ,,,,,,  1,1,1,1,1,0,0,1   ,F9  , ,  
,"ld .sp, .iy",.sp ← .iy,        ・,・,・,・  ,・,・     ,1,1,1,1,1,1,0,1  ,FD   ,2,2
,, ,  ,,,,,,  1,1,1,1,1,0,0,1   ,F9  , ,  

,,00,01,10,11
,ss,.bc,.de,.hl,.sp

!A.3 交換命令

!A.4 スタック操作命令

!A.5 ブロック転送命令

!A.6 ブロックサーチ命令

!A.7 乗算命令

!A.8 加算命令

!A.9 減算命令

!A.10 比較命令

!A.11 論理演算命令

!A.12 ビット操作命令

!A.13 ローテイト命令

!A.14 シフト命令

!A.15 分岐命令

!A.16 コール命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}

,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,,       ,   ,B{R2} ,C{R2} 
,                ,             ,S,Z,H,{{sup P}}/{{sub V}},N,C     ,7  ,6  ,5  ,4  ,3  ,2  ,1  ,0   ,Hex,  ,  
,{c},{UD}        ,{UD}         ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
,                ,             , , , ,   , ,      ,   ,   ,   ,   ,   ,   ,   ,    ,   ,  ,  
,{c},{L}         ,{L}          ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"call nn", [.sp-2] ← .pcl;[.sp] ← pch,  ・,・,・,・,・,・,  1,1,0,0,1,1,0,1,  CD,  3,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  , 
,, ,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call nz,nn", if z=0,  ・,・,・,・,・,・,  1,1,0,0,0,1,0,0,  C4,  3,5 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  , 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call z,nn", if z=1,  ・,・,・,・,・,・,  1,1,0,0,1,1,0,0,  CC,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call ne,nn", if c=0,  ・,・,・,・,・,・,  1,1,0,1,0,1,0,0,  D4,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call c,nn", if c=1,  ・,・,・,・,・,・,  1,1,0,1,1,1,0,0,  DC,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call po,nn", if F=0,  ・,・,・,・,・,・,  1,1,1,0,0,1,0,0,  E4,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call pe,nn", if F=1,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,0,  EC,  3,5 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call p,nn", if s=0,  ・,・,・,・,・,・,  1,1,1,1,0,1,0,0,  F4,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"call m,nn", if s=1,  ・,・,・,・,・,・,  1,1,1,1,1,1,0,0,  FC,  3,3 
,, [.sp-2] ← .pcl;[.sp] ← pch,  ,,,,,,  {C8|C}← nni →,,,,,,,,  ,  ,5 
,, .sp ← .sp-2;pc-nn,  ,,,,,,  {C8|C}← nnh  →,,,,,,,,  ,  , 
,"ret", .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  1,1,0,0,1,0,0,1,  C9,  1,3 
,"ret nz", if z=0,  ・,・,・,・,・,・,  1,1,0,0,0,0,0,0,  C0,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret z", if z=1,  ・,・,・,・,・,・,  1,1,0,0,1,0,0,0,  C8,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret nc", if c=0,  ・,・,・,・,・,・,  1,1,0,1,0,0,0,0,  D0,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret c", if c=1,  ・,・,・,・,・,・,  1,1,0,1,1,0,0,0,  D8,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret po", if F=0,  ・,・,・,・,・,・,  1,1,1,0,0,0,0,0,  E0,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret pe", if F=1,  ・,・,・,・,・,・,  1,1,1,0,1,0,0,0,  E8,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret p", if s=0,  ・,・,・,・,・,・,  1,1,1,1,0,0,0,0,  F0,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"ret m", if s=1,  ・,・,・,・,・,・,  1,1,1,1,1,0,0,0,  F8,  1,1 
,, .pcl ← [.sp];pch ← [.sp+1];.sp ← .sp+2,  ,,,,,,  ,,,,,,,,  ,  ,3 
,"reti", interrupt return,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,5 
,, ,  ,,,,,,  0,1,0,0,1,1,0,1,  4D,  , 
,"retn", Non Maskable Interrupt return,  ・,・,・,・,・,・,  1,1,1,0,1,0,0,0,  ED,  2,5 
,, ,  ,,,,,,  0,1,0,0,0,1,0,1,  45,  , 

!A.17 入出力命令
,{c C},{CENTER}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}

,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,,       ,   ,B{R2} ,C{R2} 
,                ,             ,S,Z,H,{{sup P}}/{{sub V}},N,C     ,7  ,6  ,5  ,4  ,3  ,2  ,1  ,0   ,Hex,  ,  
,{c},{UD}        ,{UD}         ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
,                ,             , , , ,   , ,      ,   ,   ,   ,   ,   ,   ,   ,    ,   ,  ,  
,{c},{L}         ,{L}          ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,"in .a,[n]",  .a←[n],  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  DB,  2,3 
,"in r,[.c]",  r←[.c],  1,1,0,P,0,・,  ↕,↕,1,0,1,1,0,1,  ED,  2,3 
,"in .a,[n]",  .a ← [n],  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  DB,  2,3 
,"in r,[.c]",  r ← [.c],  1,1,0,P,0,・,  ↕,↕,1,0,1,1,0,1,  ED,  2,3 
,"in .f,[.c]",  [.c],  1,1,0,P,0,・,  ↕,↕,1,0,1,1,0,1,  ED,  2,3 
,,  ,  ,,,,,,  0,1,1,1,0,0,0,0,  70,  , 
,"in [.hl++],[.c]",  [.hl]←[.c];b←.b-1,  ・,・,・,・,・,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl+1,  ,,,,,,  1,0,1,0,0,0,1,0,  A2,  , 
,"in [.hl--],[.c]",  [.hl]←[.c];b←.b-1,  ・,・,・,・,・,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl-1,  ?,1,?,?,1,・,  1,0,1,0,1,0,1,0,  AA,  , 
,"inm [.hl++],[.c]",  repeat;[.hl]←[.c];b←.b-1,  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl+1;until .b=0,  ?,1,?,?,1,・,  1,0,1,1,0,0,1,0,  B2,  ,3 
,"inm [.hl--],[.c]",  repeat;[.hl]←[.c];b←.b-1,  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl-1;until .b=0,  ?,1,?,?,1,・,  1,0,1,1,1,0,1,0,  BA,  ,3 
,"out [n],.a",  [n]←.a,  ・,・,・,・,・,・,  1,1,0,1,0,0,1,1,  D3,  2,3 
,"out [.c],r",  [.c]←r,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,3 
,"out [.c],[.hl++]",  [.c]←[.hl];.b-.b-1,  ?,1,?,?,1,・,  1,↕,1,0,1,1,0,1,  ED,  2,4 
,,  .hl←.hl+1,  ,,,,,,  1,0,1,0,0,0,1,1,  A3,  , 
,"out [.c],[.hl--]",  [.c]←[.hl];.b-.b-1,  ?,1,?,?,1,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl-1,  ,,,,,,  1,0,1,0,1,0,1,1,  AB,  , 
,"outm [.c],[.hl++]",  repeat;[.c]←[.hl];.b-.b-1,  ?,1,?,?,1,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl+1;until .b=0,  ,,,,,,  1,0,1,1,0,0,1,1,  B3,  ,3 
,"outm [.c],[.hl--]",  repeat;[.c]←[.hl];.b-.b-1,  ?,1,?,?,1,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl←.hl-1;until .b=0,  ,,,,,,  1,0,1,1,1,0,1,1,  BB,  ,3 
,"in [.hl++],[.c]",  [.hl] ← [.c];b ← .b-1,  ・,・,・,・,・,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl+1,  ,,,,,,  1,0,1,0,0,0,1,0,  A2,  , 
,"in [.hl--],[.c]",  [.hl] ← [.c];b ← .b-1,  ・,・,・,・,・,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl-1,  ?,1,?,?,1,・,  1,0,1,0,1,0,1,0,  AA,  , 
,"inm [.hl++],[.c]",  repeat;[.hl] ← [.c];b ← .b-1,  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl+1;until .b=0,  ?,1,?,?,1,・,  1,0,1,1,0,0,1,0,  B2,  ,3 
,"inm [.hl--],[.c]",  repeat;[.hl] ← [.c];b ← .b-1,  ・,・,・,・,・,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl-1;until .b=0,  ?,1,?,?,1,・,  1,0,1,1,1,0,1,0,  BA,  ,3 
,"out [n],.a",  [n] ← .a,  ・,・,・,・,・,・,  1,1,0,1,0,0,1,1,  D3,  2,3 
,"out [.c],r",  [.c] ← r,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,3 
,"out [.c],[.hl++]",  [.c] ← [.hl];.b ← .b-1,  ?,1,?,?,1,・,  1,↕,1,0,1,1,0,1,  ED,  2,4 
,,  .hl ← .hl+1,  ,,,,,,  1,0,1,0,0,0,1,1,  A3,  , 
,"out [.c],[.hl--]",  [.c] ← [.hl];.b ← .b-1,  ?,1,?,?,1,・,  1,↕,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl-1,  ,,,,,,  1,0,1,0,1,0,1,1,  AB,  , 
,"outm [.c],[.hl++]",  repeat;[.c] ← [.hl];.b ← .b-1,  ?,1,?,?,1,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl+1;until .b=0,  ,,,,,,  1,0,1,1,0,0,1,1,  B3,  ,3 
,"outm [.c],[.hl--]",  repeat;[.c] ← [.hl];.b ← .b-1,  ?,1,?,?,1,・,  1,1,0,1,1,0,1,1,  ED,  2,4 
,,  .hl ← .hl-1;until .b=0,  ,,,,,,  1,0,1,1,1,0,1,1,  BB,  ,3 

!A.18 CPU制御命令
,{c C},{CENTER|TOP}
,{c L},{LEFT}
,{c R},{RIGHT}
,{c R2},{ROWS:2}
,{c C3},{COLS:3}
,{c C8},{COLS:8}
,{c UD},{BSIZE:1 0}

,{t},{BSIZE:1}
,{c},{SIZE:100|BSIZE:0 1},{BSIZE:0 1}
,ニーモニック{C|R2},命令動作{C|R2} ,flags{COLS:6|C},,,,,,オペコード{COLS:9|C},,,,,,,       ,   ,B{R2} ,C{R2} 
,                ,             ,S,Z,H,{{sup P}}/{{sub V}},N,C     ,7  ,6  ,5  ,4  ,3  ,2  ,1  ,0   ,Hex,  ,  
,{c},{UD}        ,{UD}         ,{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD},{UD}
,                ,             , , , ,   , ,      ,   ,   ,   ,   ,   ,   ,   ,    ,   ,  ,  
,{c},{L}         ,{L}          ,{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{C},{L},{R},{R}
,adj .a,  adjust to decimal,  ↕,↕,↕,P,・,↕,  0,1,0,0,0,1,1,1,  27,  1,1 
,not.a,  .a←NOT .a,  ・,・,1,・,1,・,  0,1,0,0,1,1,1,1,  2F,  1,1 
,neg.a{R2},  .a←NOT .a+1,  ↕,↕,↕,V,・,↕,  1,1,1,0,1,1,0,1,  ED,  2,2 
,not.a,  .a ← NOT .a,  ・,・,1,・,1,・,  0,1,0,0,1,1,1,1,  2F,  1,1 
,neg.a{R2},  .a ← NOT .a+1,  ↕,↕,↕,V,・,↕,  1,1,1,0,1,1,0,1,  ED,  2,2 
,,,  ,,,,,,  0,1,0,0,0,1,0,0,  44,, 
,notc,  C←NOT c,  ・,・,?,・,0,↕,  0,0,1,1,1,1,1,1,  3F,  1,1 
,setc,  C←1,  ・,・,0,・,0,↕,  0,0,1,1,0,1,1,1,  37,  1,1 
,notc,  C ← NOT c,  ・,・,?,・,0,↕,  0,0,1,1,1,1,1,1,  3F,  1,1 
,setc,  C ← 1,  ・,・,0,・,0,↕,  0,0,1,1,0,1,1,1,  37,  1,1 
,nop,  NO operation,  ・,・,・,・,・,・,  0,0,0,0,0,0,0,0,  00,  1,1 
,halt,  HALT,  ・,・,・,・,・,・,  0,1,1,1,0,1,1,0,  76,  1,2 
,di,  IFF←0,  ・,・,・,・,・,・,  1,1,1,1,0,0,1,1,  F3,  1,2 
,ei,  IFF←1,  ・,・,・,・,・,・,  1,1,1,1,1,0,1,1,  FB,  1,1 
,di,  IFF ← 0,  ・,・,・,・,・,・,  1,1,1,1,0,0,1,1,  F3,  1,2 
,ei,  IFF ← 1,  ・,・,・,・,・,・,  1,1,1,1,1,0,1,1,  FB,  1,1 
,im 0,  interrupt mode 0,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,3 
,,,  ,,,,,,  0,1,0,0,0,1,1,0,  46,  , 
,im 1,  interrupt mode 1,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,3 
,,,  ,,,,,,  0,1,0,1,0,1,1,0,  56,  , 
,im 2,  interrupt mode 2,  ・,・,・,・,・,・,  1,1,1,0,1,1,0,1,  ED,  2,3 
,,,  ,,,,,,  0,1,0,1,1,1,1,0,  5E,  , 


,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[5章 拡張BASIC]]                                                                  ,{BSIZE:0|RIGHT}[[B R800 かけ算命令マクロ]]                                                       →