長年使っていたFitBitのChargeの充電端子が壊れて充電できなくなった。そこで、専用の万歩計をしばらく使っていたが、カウントされる歩数が少なく、なんとなく信用できない。また、万歩計はクリップで固定するので脱着が煩わしい、と思案していたところ、家電ショップのVersa2の使用レポートを見る機会があり、価格がもう少し安ければと思いつつ、結局ポチリと注文してしまった。
購入したのは Fitbit Versa 2(Black/Carbon)(¥22.500)で、主な機能は、
さらに、音楽アプリやFitbit Payなどのアプリもあるが、日本では使えないものも・・。
なお、初期設定はOSをVアップしたA7のタブレット(Zenpad Z581KL)を使ったが、BTでは時間がかかるのでWifi利用がベスト。
ベルトは長さが自由にセットできる純正ステンレスMetalMeshBlack(¥9,800)も購入。
FitBit Versa2 (文字盤はSundial[青]) |
連動するタブレットで 専用アプリを利用 |
Voxyを購入して半年、高速道路での燃費はわかりませんが、下道でメーター表示は18Km/L〜20Km/L、給油時計算では17Km/L前後です。以前は渋滞を避け遠回りをしていましたが、HVは渋滞の方が燃費が良くなります。最近の車の燃費はほんと凄いですね。
さて、前から気になっていたオプションパーツ。一つは車速ドアロック、もう一つはタイヤ空気圧監視警報システムを先週末取り付けました。
最近の車はドアロック機能はついていますが、車速ドアロック機能がついていない車が多いようです。子供が運転中ドアをよく開けるので、車速ドアロックを付けました。再ロック付き、Pシフトでロック解除、ドアオープン時ハザード、バック時ハザードが点灯、各機能のあり、無しを選択出来ます。
タイヤ空気監視システムはタイヤ回転数のデータを使って空気圧を間接的にモニター。タイヤ内部の空気圧が低下すると外径が小さくなるため、結果的に回転数も変わる事を利用して空気圧の低下を検知。回転数の検出はABSを利用し異常があればモニターのランプと警告音で知らせます。2つの商品名は次の通りです。
タイヤ空気圧監視警報システム (タイヤ空気圧が規定値より 20%減でアラームに設定) |
ステアリングカバーを外し、 2つのシステムを直列で OBD2コネクタに接続 |
PC8001のBASICでは速度が遅いので、機械語でプログラムを記述する例も多い。Z80機械語は昔よく使っていたが、今では、すっかり忘れている。また、BASIC-ROM内ルーチンの活用するには、解読するための逆アセンブラが必要である。昔のI/Oなどの逆アセンブラプログラムリストをそのまま利用しても良いが、機械語の思い出しついでに「逆アセンブラ」をBASICで自作することにした。
【Z80逆アセンブラの使い方】 []はオプションで、なくてもよい
<入力書式> [B/W/U][開始アドレス][:終了アドレス][、行数] | |
アドレス: | アドレスは16進数、範囲を指定する場合は「:xxxx」を使用。 開始アドレスを省略すると次アドレスから開始する。 |
行 数: | 出力する行数(10進数) |
HEXデータ: | 入力文字列の先頭に'B'(大文字)または'W'(大文字)を付けると、 バイトデータ(DB)またはワードデータ(DW)を表示。 |
ダンプ表示: | 文字列の先頭に'U'(大文字)を付けると、アドレスXXX0H(最下位の 4ビットが0)からダンプリストを表示する(表示行数は8行で固定)。 |
データ保存: | 「保存モード」に設定(「&」で設定)すると解読後自動で、または、 アドレス入力時に「#」を押すと最後に解読した1行を、ファイルに保存する。 ただし、ファイルは事前にAppendモードにSetしておくこと。 保存モードの解除は「%」(コマンドプロンプトが変わる)。 |
HEX表示: | 1バイトデータの16/10進数表示を「h」で選択可(2バイトは常に16進数)。 |
ジャンプ先: | JR命令の飛び先を絶対番地または相対値を「i」で選択可。 |
逆アセンブルしたファイルをパソコンのエディッタで「惧惧惧」を消去するとリストを確認できる。
(abc794で使用した機械語部分(E800〜)の一部を逆アセンブルした例)
【Z80逆アセンブルプログラムの概要】
プログラムのテスト(「T」でE000H以降にセット)のためにテスト用データ(行番号が8000、20000番台)を付属(CBは30-3FHの無効コマンドもセット)。不要であれば消去して下さい。
100 '=== Dis-Assembler for PC8001 110 WIDTH 80,25 :CONSOLE 0,25,1,1 120 CLEAR 500,&HDFFF: DEFINT C-Z 130 DIM E(255),M$(67),CB(20) 140 DIM RG$(7),MT$(7),SR$(7),CC$(7) 142 DIM RR$(3),RQ$(3),IM$(3),BO$(3) 150 GOSUB 10100 :'Read Data 160 PF = 0 :'Print(Save) flag 162 LX = 0 :'Print Lines 164 ID = 0 :'Indirect Addr (for JR cmd) 166 HF = 1 :'Hex Num. Mode (for Literal n) 180 BS = 40 :'Buffer Size 190 GOTO 1010 :'Goto Main 200 '--- Separate Code Map 210 DS=E(BT) :'Get Table data 220 IF DS AND &H0080 THEN RP=1 ELSE RP=0 :'Reg Flag 225 IF DS AND &H0800 THEN RP=RP+2 :'Spc.Flag 230 QC = DS AND &H7F :'Ope.Code 240 Q1 = DS/256 AND &H07 :'Opr-1 250 Q2 = DS/4096 AND &H07 : RETURN :'Opr-2 260 '--- Separate Instraction Code 270 II = IC/64 AND &H03 :'00xxxxxx 280 DD = IC/8 AND &H07 :'xx000xxx 290 SS = IC AND &H07 : RETURN :'xxxxx000 300 '--- Get 1Byte & Hex-Data Set 310 BT=PEEK(AC): GOSUB 370 320 BB$=BB$+P$: AC=AC+1 : RETURN 330 GOSUB 310: P$=STR$(BT): RETURN :'BT->Dec 335 GOSUB 310: P$=P$+"H": RETURN :'BT->Hex 340 GOSUB 310 :'Get byte & 350 BU=BT: GOSUB 310: BT=BT*256+BU :'Calc.2-Byte 360 P$=RIGHT$("000"+HEX$(BT),4): RETURN :'BT->2byte(Hex) 370 P$=RIGHT$("0"+HEX$(BT),2): RETURN :'BT->1byte(Hex) 380 IF BT<&H20 THEN P$="." ELSE P$=CHR$(BT) 390 RETURN 400 '---Indirect Num. Set 410 GOSUB 310: P$="("+P$+"H)": RETURN :'(xxH) 420 GOSUB 340: P$="("+P$+"H)": RETURN :'(xxxxH) 430 '---Jump Offset 440 GOSUB 310: IF BT>127 THEN BT=BT-256 450 IF ID>0 THEN 470 460 P$=RIGHT$("000"+HEX$(AD+BT+2),4)+"H": RETURN :'xxxxH 470 IF BT>0 THEN P$="$+"+STR$(2+BT): RETURN :'$+d 480 P$="$"+STR$(2+BT): RETURN :'$-d 499 '-- 8bit 1 2 3 4 5 6 7 500 ON OL GOTO 510,520,530,540,550,560,570 510 P$=RG$(PP): RETURN :'reg 520 IF HF=0 THEN 330 ELSE 335 :'n 530 P$=RIGHT$("0"+HEX$(DD*8),2)+"H":RETURN :'ttt 540 GOTO 420 :'(nn) 550 GOTO 410 :'(n) 560 P$="(C)": RETURN 570 P$="A": RETURN 599 '-- 16bit 1 2 3 4 5 6 7 600 ON OL GOTO 610,620,630,640,650,660,670 610 P$=RR$(DD/2): RETURN :'Pair rr 620 GOSUB 340:P$=P$+"H":RETURN :'nn 630 GOTO 440 :'e 640 GOTO 420 :'(nn) 650 P$=RQ$(DD/2): RETURN :'Pair qq 660 IF QC=29 THEN P$=CC$(DD AND 3):RETURN :'cc (JR) 665 P$=CC$(DD): RETURN :'ccc 670 P$="HL": RETURN 699 '-Spc.8bit 1 2 3 4 5 6 7 700 ON OL GOTO 710,720,730,740,750,760,770 710 P$=RG$(PP): RETURN :'reg 720 P$=IM$(DD AND 3): RETURN :'IM 730 P$="I": RETURN 740 P$="(BC)": RETURN 750 P$="R": RETURN 760 P$="(DE)": RETURN 770 P$="A": RETURN 799 '-Spc.16bit 1 2 3 4 5 6 7 800 ON OL GOTO 810,820,830,840,850,860,870 810 P$="DE": RETURN 820 P$="AF'": RETURN 830 P$="AF": RETURN 840 P$="(SP)": RETURN 850 P$="SP": RETURN 860 P$="(HL)": RETURN 870 P$="HL": RETURN 900 '--- Error Table 910 ER=1: MS$="Syntax": GOTO 990 920 ER=2: MS$="UnDef.Ope.": GOTO 990 930 ER=3: MS$="Operand": GOTO 990 940 ER=4: MS$="Not Number": GOTO 990 950 ER=5: MS$="OverFlow": GOTO 990 960 ER=6: MS$="Name": GOTO 990 990 BB$=BB$+" "+MS$+" Error!!": RETURN 1000 '--- Main Loop 1010 ER=0:DF=0:XY=0: COLOR 3: PRINT"Address [Sa[:Ea]][,Ln] ";CHR$(&H25+PF);" "; 1015 COLOR 7: LINE INPUT K$ 1020 IF K$="" THEN AS=AC: AE=AS: GOTO 1110 1030 IF K$="!" THEN END 1040 S=INSTR("ih%BWUT",LEFT$(K$,1)): IF S>0 THEN 1210 1050 GOSUB 1310 :' Key Ent. Check & Sep. 1060 IF LEN(H1$)>0 THEN H$=H1$:GOSUB 1380: AS=HH ELSE AS=AC 1070 IF LEN(H2$)=0 THEN AE=AS: GOTO 1080 1075 H$=H2$:GOSUB 1380:AE=HH:LX=0: IF AE<AS THEN SWAP AS,AE 1080 IF LEN(H3$)>0 THEN H$=H3$:GOSUB 1390: LX=HH 1090 IF ER>0 THEN 1010 1100 AD=AS 1109 '--- D-Ass.Start 1110 LC = LX :'Set Line Counter 1120 ER = 0:IF DF>0 THEN ON DF GOTO 4010,4510,5510 1125 GOSUB 1510 :'1-Line DisAssemble 1130 PRINT MID$(BF$,6); :'Print Result 1140 IF ER>0 THEN PRINT BB$: BEEP: GOTO 1010 1145 IF INKEY$<>"" THEN PRINT: GOTO 1010 1150 IF PF>0 THEN PRINT "--- Saving": PRINT#-1,BF$ ELSE PRINT :'Save BF$ 1160 IF LC>1 THEN LC=LC-1: GOTO 1120 :'Loop 1170 IF AD<0 THEN AA=AD+65536! ELSE AA=AD 1180 IF AA<AE THEN 1120 ELSE 1010 :'Check End Addr. 1200 '--- K$: i H % & # B W U T 1210 ON S GOTO 1220,1225,1230,1235,1250,1280,1290,1295,8010 1220 ID = ID XOR 1: GOTO 1010 1225 HF = HF XOR 1: GOTO 1010 1230 PF = 0: GOTO 1010 1235 PF = 1: GOTO 1010 1240 '--- Save ? 1250 IF LEN(BF$)>0 THEN PRINT BF$ ELSE 1010 1260 INPUT"Save Sure?( y or n )";K$ 1265 IF K$="y" THEN PRINT#-1,BF$ 1270 GOTO 1010 1275 '--- DB,DW 1280 DF=1:K$=MID$(K$,2): GOTO 1020 1290 DF=2:K$=MID$(K$,2): GOTO 1020 1295 DF=3:K$=MID$(K$,2): GOTO 1020 1300 '---Key Entry Data Check & Trim 1310 S1=INSTR(K$,":"): S2=INSTR(K$,",") 1320 IF S1>0 AND S2>0 AND S1>S2 THEN 910 :'Syntax Err, 1330 H1$="":H2$="":H3$="" 1340 IF S1=0 AND S2=0 THEN H1$=K$: RETURN 1345 IF S1=0 AND S2=1 THEN H3$=MID$(K$,S2+1): RETURN 1350 IF S1=0 AND S2>1 THEN H1$=MID$(K$,1,S2-1):H3$=MID$(K$,S2+1):RETURN 1355 IF S1>0 AND S2=0 THEN H1$=MID$(K$,1,S1-1):H2$=MID$(K$,S1+1):RETURN 1360 IF S1>0 AND S2>0 THEN H1$=MID$(K$,1,S1-1):H3$=MID$(K$,S2+1):RETURN 1370 ER=1 :RETURN 1380 HH=VAL("&H"+H$): RETURN 1390 HH=VAL(H$): RETURN 1500 '---- 1-Line DisAssemble. 1510 BB$="":P1$="":P2$="" 1530 AC = AD :'Set Curent Addr. 1540 BB$=RIGHT$("000"+HEX$(AC),4)+":" 1550 BF$=BB$+SPACE$(BS-5) 1560 COLOR 6: PRINT BB$; 1570 COLOR 7: BB$="" 1600 GOSUB 2010: IF ER>0 THEN 920 :'Start disAsm. 1630 IF XY=0 THEN 1710 :'if not IX/IY 1640 GOSUB 2010: IF ER>0 THEN 920 :'Re-dAsm from next 1645 IF IC=&H36 THEN GOSUB 1870: GOTO 1670 1650 ER=2 1655 P$=P1$:GOSUB 1810: P1$=P$ :'if P$=HL or (HL) then ER=0 1660 P$=P2$:GOSUB 1810: P2$=P$ :'if P$=HL or (HL) then ER=0 1670 IF ER>0 THEN 920 ELSE XY=0 1700 '--- Set String to Buffer 1710 MID$(BF$,6)=BB$ :'Set Bytes 1715 MID$(BF$,14)="[" 1720 'MID$(BF$,15)=LB$+":" :'Set Lable 1730 MID$(BF$,22)=MN$ :'Set Mnemonic 1740 IF P1$<>"" THEN P$=P1$ ELSE 1770 1750 IF P2$<>"" THEN P$=P$+","+P2$ 1760 MID$(BF$,27)=P$ :'Set Operand 1770 IF ER>0 THEN RETURN 1780 AD=AC: RETURN 1800 '--- Check "HL"or"(HL)" & Change 1810 X$="I"+CHR$(&H57+XY) :'X$=IX,IY 1820 IF P$="HL" THEN ER=0: P$=X$: RETURN :'HL->X$ 1830 IF P$="(HL)" THEN ER=0 ELSE RETURN 1840 IF IC=&HE9 THEN P$="("+X$+")": RETURN :'(HL)->(X$) 1850 GOSUB 310 1860 P$="("+X$+"+"+STR$(BT)+")": RETURN :'(HL)->(X$+n) 1870 P1$="(I"+CHR$(&H57+XY)+"+"+STR$(VAL(P2$))+")" :'if IC=36H 1880 GOSUB 520: P2$=P$: RETURN |
2000 '--- start Decode 2010 GOSUB 310 :'Get Byte 2020 IF BT<&H40 OR BT>&HBF THEN 2310 :'Jump Spc.Ope. 2030 IF BT>&H7F THEN 2210 :'Jump Math Ope. 2100 '--- reg.LD Ope.(40H-7FH) 2110 IF BT=&H76 THEN 2160 2120 MN$="LD": 2130 IC=BT: GOSUB 270 :'Bit Separate 2140 P1$=RG$(DD): P2$=RG$(SS): RETURN 2160 IF XY=0 THEN MN$="HALT": RETURN 2170 GOTO 920 :'Ope.Err 2200 '--- Math.Ope.(80H-BFH) 2210 IC=BT:GOSUB 270:MN$=MT$(DD) :'Math. cmd 2220 IF DD<2 OR DD=3 THEN 2250 2230 P1$=RG$(SS): RETURN 2250 P1$="A":P2$=RG$(SS) :' Add Areg to opl. 2260 RETURN 2300 '--- Check Special Ope. 2310 IF BT=&HCB THEN 3010 :'Code 'CB' 2320 IF BT=&HDD THEN 3210 :'Code 'DD' 2340 IF BT=&HED THEN 2610 :'Code 'ED' 2350 IF BT=&HFD THEN 3260 :'Code 'FD' 2360 '--- Use Ope.Table 2370 DS=BT: GOSUB 210 :'Get Table Data 2380 IF QC=0 THEN 920 :'No Ope.Err 2390 MN$=M$(QC) 2400 IC=BT: GOSUB 270 :'Bit Separate 2410 IF Q1=0 THEN RETURN 2420 OL=Q1:PP=DD 2430 ON RP+1 GOSUB 500,600,700,800 :'Call Mode 2440 IF P$="" OR ER>0 THEN 930 ELSE P1$=P$ 2450 IF Q2=0 THEN RETURN 2460 OL=Q2:IF QC=40 THEN PP=DD ELSE PP=SS :'"out"? 2470 ON RP+1 GOSUB 500,600,700,800 :'Call Mode 2480 IF P$="" OR ER>0 THEN 930 ELSE P2$=P$ 2490 RETURN 2600 '--- EDxx 2610 GOSUB 310 :'Get Next Byte 2620 IF BT<&H40 OR BT>&HBF THEN 920 2630 GOTO 2370 :'Jmp Ope.Table 3000 '--- CBxx 3010 GOSUB 310 :'Get Next Byte 3015 IC=BT:GOSUB 270 :'Bit Separate 3020 IF BT<&H40 THEN 3060 3030 MN$=BO$(II) :'Bit Operation 3040 P1$=HEX$(DD):P2$=RG$(SS) :'Bit,Reg 3050 RETURN 3060 IF DD=6 THEN 930 3070 MN$=SR$(DD) 3080 P1$=RG$(SS) 3090 RETURN 3200 '--- DDxx 3210 IF XY>0 THEN 930 3220 XY=1: RETURN 3250 '--- FDxx 3260 IF XY>0 THEN 930 3270 XY=2: RETURN 3900 '--- Set Adr. & Print 3910 BB$=RIGHT$("000"+HEX$(AC),4)+":" 3920 BF$=BB$: RETURN 3930 BF$=BF$+SPACE$(BS-5) 3940 COLOR 6: PRINT BB$;: COLOR 7 3950 RETURN 4000 '--- DB 4010 BB$="":P1$="":P2$="" 4030 AC=AD: GOSUB 3910: GOSUB 3930 4050 MN$="DB": BB$="" 4060 GOSUB 310: P1$=P$+"H" 4070 GOSUB 380: P2$=SPACE$(4)+"'"+P$+"'" :'Char.Set 4080 GOSUB 1710: GOTO 1130 4500 '--- DW 4510 BB$="":P1$="":P2$="" 4530 AC=AD: GOSUB 3910: GOSUB 3930 4550 MN$="DW": BB$="" 4560 GOSUB 310: GOSUB 350: P1$=P$+"H" 4580 GOSUB 1710: GOTO 1130 5500 '--- U (Memory Dump) 5510 AS=INT(AD/16)*16 5520 GOSUB 5760 5530 COLOR 4: PRINT BF$;: COLOR 7 :'Dsp Title 5540 IF PF>0 THEN PRINT " * Saving";: PRINT#-1,BF$ :'Save BF$ 5545 PRINT 5550 FOR J=0 TO 7 5560 AC=AS: GOSUB 3910: GOSUB 3940 5600 FOR I=0 TO 15 5610 CB(I)=PEEK(AS+I) 5620 BB$=RIGHT$("0"+HEX$(CB(I)),2)+" " 5630 PRINT BB$;: BF$=BF$+BB$ 5640 NEXT I 5650 COLOR 5 5660 FOR I=0 TO 15 5670 V=CB(I): GOSUB 5810 5680 PRINT C$;: BF$=BF$+C$ 5690 NEXT I: COLOR 7 5700 IF INKEY$<>"" THEN PRINT: GOTO 1010 5710 IF PF>0 THEN PRINT " * Saving";: PRINT#-1,BF$ :'Save BF$ 5720 AS=AS+16: PRINT 5730 NEXT J: AD=AS 5740 GOTO 1010 5750 ' 5760 BF$="Addr 0 1 2 3 4 5 6 7 8 9 a b c d e f " 5770 BF$=BF$+"-- ASCII Code --" 5780 RETURN 5800 ' 5810 IF V<&H20 THEN C$=CHR$(&HA5):RETURN 5820 IF V=&H60 THEN C$=CHR$(&HA5):RETURN 5830 IF V=&H7F THEN C$=CHR$(&HA5):RETURN 5840 IF V>&HF7 THEN C$=CHR$(&HA5):RETURN 5850 C$=CHR$(V):RETURN 8000 '--- Set Test Data 8010 PRINT "Set Test Data from E000H (A:1b,C:CB,D:DD,E:ED,F:FD)" 8020 K$=INPUT$(1) 8030 S=INSTR("ACDEF",K$): IF S=0 THEN 1010 8100 '-- Set Test Data 8110 ' A C D E F 8120 ON S GOSUB 8210,8310,8410,8510,8610 8130 GOTO 1010 8200 '-- Set Test Data(00H-FFH) ' 8210 PRINT "Set 00H-FFH to E000H" 8220 A=&HE000: RESTORE 21000 8230 FOR I=0 TO 336: READ Z: POKE A+I,Z: NEXT: RETURN 8300 '-- Set CB Test Data 8310 PRINT "Set CB & 00H-FFH to E000H" 8320 B=&HCB: A=&HE000 8330 FOR I=0 TO 255 8340 POKE A+I*2,B 8350 POKE A+I*2+1,I 8360 NEXT: RETURN 8400 '-- Set DD Data 8410 PRINT "Set DD Data to E000H" 8420 A=&HE000: RESTORE 23000 8430 FOR I=0 TO 233: READ Z: POKE A+I,Z: NEXT: RETURN 8500 '-- Set ED Data 8510 PRINT "Set ED Data to E000H" 8520 A=&HE000: RESTORE 24040 8530 FOR I=0 TO 123: READ Z: POKE A+I,Z: NEXT: RETURN 8600 '-- Set FD Data 8610 PRINT "Set FD Data to E000H" 8620 A=&HE000: RESTORE 25000 8630 FOR I=0 TO 233: READ Z: POKE A+I,Z: NEXT: RETURN 10000 '=== Init. Aray Data 10100 RESTORE 11010: FOR I=0 TO 7: READ RG$(I): NEXT 10110 RESTORE 11110: FOR I=0 TO 7: READ MT$(I): NEXT 10130 RESTORE 11310: FOR I=0 TO 7: READ SR$(I): NEXT 10140 RESTORE 11410: FOR I=0 TO 7: READ CC$(I): NEXT 10150 RESTORE 11510: FOR I=0 TO 3: READ RR$(I): NEXT 10160 RESTORE 11610: FOR I=0 TO 3: READ RQ$(I): NEXT 10170 RESTORE 11710: FOR I=0 TO 3: READ IM$(I): NEXT 10180 RESTORE 11810: FOR I=0 TO 3: READ BO$(I): NEXT 10200 RESTORE 13010: FOR I=1 TO 67: READ M$(I): NEXT 10300 RESTORE 15010: FOR I=0 TO 255: READ E(I): NEXT 10499 RETURN 11000 '---Operand Table 11010 DATA B,C,D,E,H,L,(HL),A: 'Reg. RG$() 11110 DATA ADD,ADC,SUB,SBC,AND,XOR,OR,CP: 'Math.Ope. MT$() 11310 DATA RLC,RRC,RL,RR,SLA,SRA,,SRL: 'Sft.Rot SR$() 11410 DATA NZ,Z,NC,C,PO,PE,P,M: 'Condition CC$() 11510 DATA BC,DE,HL,SP: 'Reg.Pair RR$() 11610 DATA BC,DE,HL,AF: 'Reg.Pair2 RQ$() 11710 DATA 0,,1,2: 'IM IM$() 11810 DATA ,BIT,RES,SET: 'Bit Ope. BO$() 13000 '---Mnemonic Table M$() [ascending order] 13010 DATA ADC, ADD, AND, BIT, CALL,CCF, CP, CPD: '1-8 13020 DATA CPDR,CPI, CPIR,CPL, DAA, DEC, DI, DJNZ: '9-16 13030 DATA EI, EX, EXX, HALT,IM, IN, INC, IND: '17-24 13040 DATA INDR,INI, INIR,JP, JR, LD, LDD, LDDR: '25-32 13050 DATA LDI, LDIR,NEG, NOP, OR, OTDR,OTIR,OUT: '33-40 13060 DATA OUTD,OUTI,POP, PUSH,RES, RET, RETI,RETN: '41-48 13070 DATA RL, RLA, RLC, RLCA,RLD, RR, RRA, RRC: '49-56 13080 DATA RRCA,RRD, RST, SBC, SCF, SET, SLA, SRA: '57-64 13090 DATA SRL, SUB, XOR: '65-67 |
14999 '--- Decoding Code Map E() 15000 '00-3F 15005 ' 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F 15010 DATA &H0024,&H219E,&H7C1E,&H0197,&H0117,&H010E,&H211E,&H0034: '00-07 15020 DATA &H2B92,&H1782,&H4F1E,&H018E,&H0117,&H010E,&H211E,&H0039: '08-0F 15030 DATA &H0390,&H219E,&H7E1E,&H0197,&H0117,&H010E,&H211E,&H0032: '10-17 15040 DATA &H039D,&H1782,&H6F1E,&H018E,&H0117,&H010E,&H211E,&H0037: '18-1F 15050 DATA &H369D,&H219E,&H749E,&H0197,&H0117,&H010E,&H211E,&H000D: '20-27 15060 DATA &H369D,&H1782,&H479E,&H018E,&H0117,&H010E,&H211E,&H000C: '28-2F 15070 DATA &H369D,&H219E,&H741E,&H0197,&H0117,&H010E,&H211E,&H003D: '30-37 15080 DATA &H369D,&H1782,&H471E,&H018E,&H0117,&H010E,&H211E,&H0006: '38-3F 15085 'ED/40-7F 15090 DATA &H6116,&H1628,&H17BC,&H149E,&H0023,&H0030,&H0A15,&H7B1E: '40-47 15100 DATA &H6116,&H1628,&H1781,&H419E, 0,&H002F, 0,&H7D1E: '48-4F 15110 DATA &H6116,&H1628,&H17BC,&H149E, 0, 0,&H0A15,&H3F1E: '50-57 15120 DATA &H6116,&H1628,&H1781,&H419E, 0, 0,&H0A15,&H5F1E: '58-5F 15130 DATA &H6116,&H1628,&H17BC, 0, 0, 0, 0,&H003A: '60-67 15140 DATA &H6116,&H1628,&H1781, 0, 0, 0, 0,&H0035: '68-6F 15150 DATA 0, 0,&H17BC,&H149E, 0, 0, 0, 0: '70-77 15160 DATA &H6116,&H1628,&H1781,&H419E, 0, 0, 0, 0: '78-7F 15165 'ED/80-BF 15170 DATA 0, 0, 0, 0, 0, 0, 0, 0: '80-87 15180 DATA 0, 0, 0, 0, 0, 0, 0, 0: '88-8F 15190 DATA 0, 0, 0, 0, 0, 0, 0, 0: '90-97 15200 DATA 0, 0, 0, 0, 0, 0, 0, 0: '98-9F 15210 DATA &H0021,&H000A,&H001A,&H002A, 0, 0, 0, 0: 'A0-A7 15220 DATA &H001F,&H0008,&H0018,&H0029, 0, 0, 0, 0: 'A8-AF 15230 DATA &H0022,&H000B,&H001B,&H0027, 0, 0, 0, 0: 'B0-B7 15240 DATA &H0020,&H0009,&H0019,&H0026, 0, 0, 0, 0: 'B8-BF 15245 'C0-FF 15250 DATA &H06AE,&H05AB,&H269C,&H029C,&H2685,&H05AC,&H2702,&H033B: 'C0-C7 15260 DATA &H06AE,&H002E,&H269C, 0,&H2685,&H0285,&H2701,&H033B: 'C8-CF 15270 DATA &H06AE,&H05AB,&H269C,&H7528,&H2685,&H05AC,&H0242,&H033B: 'D0-D7 15280 DATA &H06AE,&H0013,&H269C,&H5716,&H2685, 0,&H273C,&H033B: 'D8-DF 15290 DATA &H06AE,&H05AB,&H269C,&H7C92,&H2685,&H05AC,&H0203,&H033B: 'E0-E7 15300 DATA &H06AE,&H0E9C,&H269C,&H7992,&H2685, 0,&H0243,&H033B: 'E8-EF 15310 DATA &H06AE,&H05AB,&H269C,&H000F,&H2685,&H05AC,&H0225,&H033B: 'F0-F7 15320 DATA &H06AE,&H7D9E,&H269C,&H0011,&H2685, 0,&H0207,&H033B: 'F8-FF 15510 'Decoding Table Code: [0bbbSaaaRccccccc] 15520 ' S: Special Flag [0:Normal/1:Special] 15530 ' R: Reg./Pair Flag [0:Reg. /1:Reg.Pair] 15540 ' ccccccc:Operation Number(67) 15550 ' aaa: Operand-1 15555 ' bbb: Operand-2 15560 ' Operand Code: R=0,S=0(norm) [,rrr,n,ttt,(nn),(n),(C),A] 15570 ' ,S=1(spcl) [,rrr,ii,I,(BC),R,(DE),A] 15580 ' R=1,S=0(norm) [,rr,nn,e,(nn),qq,ccc,HL] 15590 ' ,S=1(spcl) [,DE,AF',AF,(SP),SP,(HL),HL] 20000 '--- Test Data 20990 ' 0-8 * 1-9 * * 2-A * * 3-B 4-C 5-D 6-E * 7-F 21000 DATA &H00, &H01,2,3, &H02, &H03,&H04,&H05,&H06,2, &H07: '00H-07H 21008 DATA &H08, &H09, &H0A, &H0B,&H0C,&H0D,&H0E,2, &H0F: '08H-0FH 21010 DATA &H10,2, &H11,2,3, &H12, &H13,&H14,&H15,&H16,2, &H17: '10H-17H 21018 DATA &H18,2, &H19, &H1A, &H1B,&H1C,&H1D,&H1E,2, &H1F: '18H-1FH 21020 DATA &H20,2, &H21,2,3, &H22,2,3, &H23,&H24,&H25,&H26,2, &H27: '20H-27H 21028 DATA &H28,2, &H29, &H2A,2,3, &H2B,&H2C,&H2D,&H2E,2, &H2F: '28H-2FH 21030 DATA &H30,2, &H31,2,3, &H32,2,3, &H33,&H34,&H35,&H36,2, &H37: '30H-37H 21038 DATA &H38,2, &H39, &H3A,2,3, &H3B,&H3C,&H3D,&H3E,2, &H3F: '38H-3FH 21040 DATA &H40,&H41,&H42,&H43,&H44,&H45,&H46,&H47,&H48,&H49,&H4A,&H4B,&H4C,&H4D,&H4E,&H4F:'40H-4FH 21050 DATA &H50,&H51,&H52,&H53,&H54,&H55,&H56,&H57,&H58,&H59,&H5A,&H5B,&H5C,&H5D,&H5E,&H5F:'50H-5FH 21060 DATA &H60,&H61,&H62,&H63,&H64,&H65,&H66,&H67,&H68,&H69,&H6A,&H6B,&H6C,&H6D,&H6E,&H6F:'60H-6FH 21070 DATA &H70,&H71,&H72,&H73,&H74,&H75,&H76,&H77,&H78,&H79,&H7A,&H7B,&H7C,&H7D,&H7E,&H7F:'70H-7FH 21080 DATA &H80,&H81,&H82,&H83,&H84,&H85,&H86,&H87,&H88,&H89,&H8A,&H8B,&H8C,&H8D,&H8E,&H8F:'80H-8FH 21090 DATA &H90,&H91,&H92,&H93,&H94,&H95,&H96,&H97,&H98,&H99,&H9A,&H9B,&H9C,&H9D,&H9E,&H9F:'90H-9FH 21100 DATA &HA0,&HA1,&HA2,&HA3,&HA4,&HA5,&HA6,&HA7,&HA8,&HA9,&HAA,&HAB,&HAC,&HAD,&HAE,&HAF:'A0H-AFH 21110 DATA &HB0,&HB1,&HB2,&HB3,&HB4,&HB5,&HB6,&HB7,&HB8,&HB9,&HBA,&HBB,&HBC,&HBD,&HBE,&HBF:'B0H-BFH 21119 ' 0-8 1-9 2-A * * 3-B (2) * 4-C * * 5-D (2) * 6-E * 7-F 21120 DATA &HC0,&HC1,&HC2,2,3, &HC3, 2, 3, &HC4,2,3, &HC5, &HC6,2, &HC7: 'C0H-C7H 21128 DATA &HC8,&HC9,&HCA,2,3, &HCB,&H6E, &HCC,2,3, &HCD, 2, 3, &HCE,2, &HCF: 'C8H-CFH 21130 DATA &HD0,&HD1,&HD2,2,3, &HD3, 2, &HD4,2,3, &HD5, &HD6,2, &HD7: 'D0H-D7H 21138 DATA &HD8,&HD9,&HDA,2,3, &HDB, 2, &HDC,2,3, &HDD,&HE9, &HDE,2, &HDF: 'D8H-CFH 21140 DATA &HE0,&HE1,&HE2,2,3, &HE3, &HE4,2,3, &HE5, &HE6,2, &HE7: 'E0H-E7H 21148 DATA &HE8,&HE9,&HEA,2,3, &HEB, &HEC,2,3, &HED,&H40, &HEE,2, &HEF: 'E8H-EFH 21150 DATA &HF0,&HF1,&HF2,2,3, &HF3, &HF4,2,3, &HF5, &HF6,2, &HF7: 'F0H-F7H 21158 DATA &HF8,&HF9,&HFA,2,3, &HFB, &HFC,2,3, &HFD,&H7E,3, &HFE,2, &HFF: 'F8H-FFH 22999 '-- DD Test Data 23000 DATA &HDD,&H09,&HDD,&H19: 23020 DATA &HDD,&H21,3,4,&HDD,&H22,3,4,&HDD,&H23,&HDD,&H29,&HDD,&H2A,3,4,&HDD,&H2B: 23030 DATA &HDD,&H34,3,&HDD,&H35,3,&HDD,&H36,3,4,&HDD,&H39: 23040 DATA &HDD,&H46,3,&HDD,&H4E,3,&HDD,&H56,3,&HDD,&H5E,3,&HDD,&H66,3,&HDD,&H6E,3: 23070 DATA &HDD,&H70,3,&HDD,&H71,3,&HDD,&H72,3,&HDD,&H73,3,&HDD,&H74,3,&HDD,&H75,3,&HDD,&H77,3,&HDD,&H7E,3: 23080 DATA &HDD,&H86,3,&HDD,&H8E,3,&HDD,&H96,3,&HDD,&H9E,3,&HDD,&HA6,3,&HDD,&HAE,3,&HDD,&HB6,3,&HDD,&HBE,3: 23150 DATA &HDD,&HE1, &HDD,&HE3, &HDD,&HE5, &HDD,&HE9, &HDD,&HF9: 23200 DATA &HDD,&HCB,&H06,4,&HDD,&HCB,&H0E,4,&HDD,&HCB,&H16,4,&HDD,&HCB,&H1E,4: 23210 DATA &HDD,&HCB,&H26,4,&HDD,&HCB,&H2E,4, &HDD,&HCB,&H3E,4: 23220 DATA &HDD,&HCB,&H46,4,&HDD,&HCB,&H4E,4,&HDD,&HCB,&H56,4,&HDD,&HCB,&H5E,4: 23230 DATA &HDD,&HCB,&H66,4,&HDD,&HCB,&H6E,4,&HDD,&HCB,&H76,4,&HDD,&HCB,&H7E,4: 23240 DATA &HDD,&HCB,&H86,4,&HDD,&HCB,&H8E,4,&HDD,&HCB,&H96,4,&HDD,&HCB,&H9E,4: 23250 DATA &HDD,&HCB,&HA6,4,&HDD,&HCB,&HAE,4,&HDD,&HCB,&HB6,4,&HDD,&HCB,&HBE,4: 23260 DATA &HDD,&HCB,&HC6,4,&HDD,&HCB,&HCE,4,&HDD,&HCB,&HD6,4,&HDD,&HCB,&HDE,4: 23270 DATA &HDD,&HCB,&HE6,4,&HDD,&HCB,&HEE,4,&HDD,&HCB,&HF6,4,&HDD,&HCB,&HFE,4: 23999 '--- ED Test Data 24040 DATA &HED,&H40,&HED,&H41,&HED,&H42,&HED,&H43,3,4,&HED,&H44,&HED,&H45,&HED,&H46,&HED,&H47: 24048 DATA &HED,&H48,&HED,&H49,&HED,&H4A,&HED,&H4B,3,4,&HED,&H4D,&HED,&H4F: 24050 DATA &HED,&H50,&HED,&H51,&HED,&H52,&HED,&H53,3,4,&HED,&H56,&HED,&H57: 24058 DATA &HED,&H58,&HED,&H59,&HED,&H5A,&HED,&H5B,3,4,&HED,&H5E,&HED,&H5F: 24060 DATA &HED,&H60,&HED,&H61,&HED,&H62,&HED,&H67,&HED,&H68,&HED,&H69,&HED,&H6A,&HED,&H6F: 24070 DATA &HED,&H72,&HED,&H73,3,4,&HED,&H78,&HED,&H79,&HED,&H7A,&HED,&H7B,3,4: 24100 DATA &HED,&HA0,&HED,&HA1,&HED,&HA2,&HED,&HA3,&HED,&HA8,&HED,&HA9,&HED,&HAA,&HED,&HAB: 24110 DATA &HED,&HB0,&HED,&HB1,&HED,&HB2,&HED,&HB3,&HED,&HB8,&HED,&HB9,&HED,&HBA,&HED,&HBB: 24999 '--- FD Test Data 25000 DATA &HFD,&H09,&HFD,&H19: 25020 DATA &HFD,&H21,3,4,&HFD,&H22,3,4,&HFD,&H23,&HFD,&H29,&HFD,&H2A,3,4,&HFD,&H2B: 25030 DATA &HFD,&H34,3,&HFD,&H35,3,&HFD,&H36,3,4,&HFD,&H39: 25040 DATA &HFD,&H46,3,&HFD,&H4E,3,&HFD,&H56,3,&HFD,&H5E,3,&HFD,&H66,3,&HFD,&H6E,3: 25070 DATA &HFD,&H70,3,&HFD,&H71,3,&HFD,&H72,3,&HFD,&H73,3,&HFD,&H74,3,&HFD,&H75,3,&HFD,&H77,3,&HFD,&H7E,3: 25080 DATA &HFD,&H86,3,&HFD,&H8E,3,&HFD,&H96,3,&HFD,&H9E,3,&HFD,&HA6,3,&HFD,&HAE,3,&HFD,&HB6,3,&HFD,&HBE,3: 25150 DATA &HFD,&HE1, &HFD,&HE3, &HFD,&HE5, &HFD,&HE9, &HFD,&HF9: 25200 DATA &HFD,&HCB,&H06,4,&HFD,&HCB,&H0E,4,&HFD,&HCB,&H16,4,&HFD,&HCB,&H1E,4: 25210 DATA &HFD,&HCB,&H26,4,&HFD,&HCB,&H2E,4, &HFD,&HCB,&H3E,4: 25220 DATA &HFD,&HCB,&H46,4,&HFD,&HCB,&H4E,4,&HFD,&HCB,&H56,4,&HFD,&HCB,&H5E,4: 25230 DATA &HFD,&HCB,&H66,4,&HFD,&HCB,&H6E,4,&HFD,&HCB,&H76,4,&HFD,&HCB,&H7E,4: 25240 DATA &HFD,&HCB,&H86,4,&HFD,&HCB,&H8E,4,&HFD,&HCB,&H96,4,&HFD,&HCB,&H9E,4: 25250 DATA &HFD,&HCB,&HA6,4,&HFD,&HCB,&HAE,4,&HFD,&HCB,&HB6,4,&HFD,&HCB,&HBE,4: 25260 DATA &HFD,&HCB,&HC6,4,&HFD,&HCB,&HCE,4,&HFD,&HCB,&HD6,4,&HFD,&HCB,&HDE,4: 25270 DATA &HFD,&HCB,&HE6,4,&HFD,&HCB,&HEE,4,&HFD,&HCB,&HF6,4,&HFD,&HCB,&HFE,4: |