標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第262回]

●ANA、XRA、ORA、CMPのテストプログラムです

6本目のテストプログラムです。
今回は論理演算AND、OR、XORと比較命令CMPのテストプログラムです。
プログラムの考え方は今までのものと同じです。

Z80ボードの上でも同じプログラム(一部をアレンジしていますが)を実行して、計算結果やフラグを確認するようにしましたから、作業のペースも上がりましたし、テストプログラムの実行結果に間違いがないことの確認もしっかりとれるようになりました。
しかし、フラグについては、Z80と8080ではかなり振舞いが異なっていますから、Z80と8080とで異なった結果になった個所については、それでよいのかどうかのチェックは必要でした。
まあ、そのていどのことは、仕方がありません。

TEST6のプログラムリストです。


2009/6/13  10:6  TEST6.TXT
END=4121
              ;;; MYCPU80 TEST6
              ;;; ANA XRA ORA CMP
              ;;; 09/6/12
              ;
                ORG $4000
              ;
                STCK=$5000
                MWK=$5001
                ERBF=$6000
              ;
4000 310050     LXI SP,STCK
4003 0E00       MVI C,00
4005 C5         PUSH B
4006 F1         POP PSW;CLEAR FLAG REGISTER
              ; 
              ; ANA
4007 CDC340     CALL MVI
400A 3EFF       MVI A,FF
400C A0         ANA B;12  P
400D F5         PUSH PSW
400E 3EFF       MVI A,FF
4010 A1         ANA C;34  
4011 F5         PUSH PSW
4012 3EFF       MVI A,FF
4014 A2         ANA D;56  P
4015 F5         PUSH PSW
4016 3EFF       MVI A,FF
4018 A3         ANA E;78  P
4019 F5         PUSH PSW
401A 3EFF       MVI A,FF
401C A4         ANA H;9A  S,P
401D F5         PUSH PSW
401E 3EFF       MVI A,FF
4020 A5         ANA L;BC  S
4021 F5         PUSH PSW
4022 A7         ANA A;BC  S
4023 F5         PUSH PSW
4024 E5         PUSH H
4025 210150     LXI H,MWK
4028 3643       MVI M,43
402A A6         ANA M;00 Z,P
402B E1         POP H
402C F5         PUSH PSW
              ;XRA
402D 3EFF       MVI A,FF
402F A8         XRA B;12 =ED  S,P
4030 F5         PUSH PSW
4031 3EFF       MVI A,FF
4033 A9         XRA C;34 =CB  S
4034 F5         PUSH PSW
4035 3EFF       MVI A,FF
4037 AA         XRA D;56 =A9  S,P
4038 F5         PUSH PSW
4039 3EFF       MVI A,FF
403B AB         XRA E;78 =87  S,P
403C F5         PUSH PSW
403D 3EFF       MVI A,FF
403F AC         XRA H;9A =65  P
4040 F5         PUSH PSW
4041 3EFF       MVI A,FF
4043 AD         XRA L;BC =43 
4044 F5         PUSH PSW
4045 AF         XRA A;=00    Z,P
4046 F5         PUSH PSW
4047 E5         PUSH H
4048 210150     LXI H,MWK
404B 3643       MVI M,43
404D AE         XRA M;=43 
404E E1         POP H
404F F5         PUSH PSW
              ;ORA
4050 3E00       MVI A,00
4052 B0         ORA B;12  P
4053 F5         PUSH PSW
4054 3E00       MVI A,00
4056 B1         ORA C;34  
4057 F5         PUSH PSW
4058 3E00       MVI A,00
405A B2         ORA D;56  P
405B F5         PUSH PSW
405C 3E00       MVI A,00
405E B3         ORA E;78  P
405F F5         PUSH PSW
4060 3E00       MVI A,00
4062 B4         ORA H;9A  S,P
4063 F5         PUSH PSW
4064 3E00       MVI A,00
4066 B5         ORA L;BC  S
4067 F5         PUSH PSW
4068 B7         ORA A;BC  S
4069 F5         PUSH PSW
406A E5         PUSH H
406B 210150     LXI H,MWK
406E 3643       MVI M,43
4070 B6         ORA M;FF  S,P
4071 E1         POP H
4072 F5         PUSH PSW
              ;CMP A=00
4073 3E00       MVI A,00
4075 B8         CMP B;00-12=EE  S,H,P,C
4076 F5         PUSH PSW
4077 B9         CMP C;00-34=CC  S,H,P,C
4078 F5         PUSH PSW
4079 BA         CMP D;00-56=AA  S,H,P,C
407A F5         PUSH PSW
407B BB         CMP E;00-78=88  S,H,P,C
407C F5         PUSH PSW
407D BC         CMP H;00-9A=66  H,P,C
407E F5         PUSH PSW
407F BD         CMP L;00-BC=44  H,P,C
4080 F5         PUSH PSW
4081 BF         CMP A;00-00=00  Z,P
4082 F5         PUSH PSW
4083 E5         PUSH H
4084 210150     LXI H,MWK
4087 3677       MVI M,77
4089 BE         CMP M;00-77=89  S,H,C
408A E1         POP H
408B F5         PUSH PSW
              ;CMP A=FF
408C 3EFF       MVI A,FF
408E B8         CMP B;FF-12=ED  S,P
408F F5         PUSH PSW
4090 B9         CMP C;FF-34=CB  S
4091 F5         PUSH PSW
4092 BA         CMP D;FF-56=A9  S,P
4093 F5         PUSH PSW
4094 BB         CMP E;FF-78=87  S,P
4095 F5         PUSH PSW
4096 BC         CMP H;FF-9A=65  P
4097 F5         PUSH PSW
4098 BD         CMP L;FF-BC=43  
4099 F5         PUSH PSW
409A BF         CMP A;FF-FF=00  Z,P
409B F5         PUSH PSW
409C E5         PUSH H
409D 210150     LXI H,MWK
40A0 3679       MVI M,79
40A2 BE         CMP M;FF-79=86  S
40A3 E1         POP H
40A4 F5         PUSH PSW
              ;;;
              ; CHECK
40A5 310060     LXI SP,ERBF
40A8 210050     LXI H,STCK
40AB 2B         DCX H
40AC 112141     LXI D,TBL1END
40AF 0650       MVI B,50
40B1 1A       LOOP0:LDAX D
40B2 BE         CMP M
40B3 CAB740     JZ LOOP0_2
40B6 E5         PUSH H;ERR
40B7 2B       LOOP0_2:DCX H
40B8 1B         DCX D
40B9 05         DCR B
40BA C2B140     JNZ LOOP0
40BD E5         PUSH H
40BE 210000     LXI H,$0000
40C1 E5         PUSH H
40C2 76         HLT
              ;
              ;SUBROUTINE
40C3 0612     MVI:MVI B,12
40C5 0E34       MVI C,34
40C7 1656       MVI D,56
40C9 1E78       MVI E,78
40CB 269A       MVI H,9A
40CD 2EBC       MVI L,BC
40CF 3EDE       MVI A,DE
40D1 C9         RET
              ;
              ;COMPARE DATA TABLE
              ;CMP A=FF
40D2 80         DB 80
40D3 FF         DB FF;M FF-79=86
40D4 44         DB 44;
40D5 FF         DB FF;A FF-FF=00
40D6 00         DB 00
40D7 FF         DB FF;L FF-BC=43
40D8 04         DB 04
40D9 FF         DB FF;H FF-9A=65
40DA 84         DB 84
40DB FF         DB FF;E FF-78=87
40DC 84         DB 84
40DD FF         DB FF;D FF-56=A9
40DE 80         DB 80
40DF FF         DB FF;C FF-34=CB
40E0 84         DB 84
40E1 FF         DB FF;B FF-12=ED
              ;CMP A=00
40E2 91         DB 91
40E3 00         DB 00;M 00-77=89
40E4 44         DB 44;
40E5 00         DB 00;A 00-00=00
40E6 15         DB 15
40E7 00         DB 00;L 00-BC=44
40E8 15         DB 15
40E9 00         DB 00;H 00-9A=66
40EA 95         DB 95
40EB 00         DB 00;E 00-78=88
40EC 95         DB 95
40ED 00         DB 00;D 00-56=AA
40EE 95         DB 95
40EF 00         DB 00;C 00-34=CC
40F0 95         DB 95
40F1 00         DB 00;B 00-12=EE
              ;ORA
40F2 84         DB 84
40F3 FF         DB FF;M
40F4 80         DB 80;
40F5 BC         DB BC;A
40F6 80         DB 80
40F7 BC         DB BC;L
40F8 84         DB 84
40F9 9A         DB 9A;H
40FA 04         DB 04
40FB 78         DB 78;E
40FC 04         DB 04
40FD 56         DB 56;D
40FE 00         DB 00
40FF 34         DB 34;C
4100 04         DB 04
4101 12         DB 12;B
              ;XRA
4102 00         DB 00
4103 43         DB 43;M
4104 44         DB 44;
4105 00         DB 00;A
4106 00         DB 00
4107 43         DB 43;L
4108 04         DB 04
4109 65         DB 65;H
410A 84         DB 84
410B 87         DB 87;E
410C 84         DB 84
410D A9         DB A9;D
410E 80         DB 80
410F CB         DB CB;C
4110 84         DB 84
4111 ED         DB ED;B
              ;ANA
4112 44         DB 44
4113 00         DB 00;M
4114 80         DB 80;
4115 BC         DB BC;A
4116 80         DB 80
4117 BC         DB BC;L
4118 84         DB 84
4119 9A         DB 9A;H
411A 04         DB 04
411B 78         DB 78;E
411C 04         DB 04
411D 56         DB 56;D
411E 00         DB 00
411F 34         DB 34;C
4120 04         DB 04
4121 12       TBL1END:DB 12;B
              ;
ERBF         =6000  LOOP0        =40B1  LOOP0_2      =40B7  
MVI          =40C3  MWK          =5001  STCK         =5000  
TBL1END      =4121  

実行結果をパソコンに送りました。


●ANI、XRI、ORI、CPIのテストプログラムです

7本目のテストプログラムです。
上のTEST6と基本的には同じものです。
B〜Aの各レジスタおよびMとAレジスタとの間で論理演算をする代わりに、定数とAレジスタとの間で論理演算を行います。
比較データはTEST6と同じものを使いますから、結果も同じです。
もうこのあたりになると、根性というか、気力と体力の勝負という感じです。
プログラムの作成作業は、意外にも、肉体労働なのです。
それに加えて精神力ですねぇ。
ほんと、消耗します。
疲れるぅ…。


2009/6/13  10:5  TEST7.TXT
END=4126
              ;;; MYCPU80 TEST7
              ;;; ANI XRI ORI CPI
              ;;; 09/6/12 6/13
              ;
                ORG $4000
              ;
                STCK=$5000
                MWK=$5001
                ERBF=$6000
              ;
4000 310050     LXI SP,STCK
4003 0E00       MVI C,00
4005 C5         PUSH B
4006 F1         POP PSW;CLEAR FLAG REGISTER
              ; 
              ; ANI
4007 CDC840     CALL MVI
400A 3EFF       MVI A,FF
400C E612       ANI 12;  P
400E F5         PUSH PSW
400F 3EFF       MVI A,FF
4011 E634       ANI 34  
4013 F5         PUSH PSW
4014 3EFF       MVI A,FF
4016 E656       ANI 56;  P
4018 F5         PUSH PSW
4019 3EFF       MVI A,FF
401B E678       ANI 78;  P
401D F5         PUSH PSW
401E 3EFF       MVI A,FF
4020 E69A       ANI 9A;  S,P
4022 F5         PUSH PSW
4023 3EFF       MVI A,FF
4025 E6BC       ANI BC;  S
4027 F5         PUSH PSW
4028 E6BC       ANI BC;DUMMY
402A F5         PUSH PSW
402B E643       ANI 43;00 Z,P
402D F5         PUSH PSW
              ;XRI
402E 3EFF       MVI A,FF
4030 EE12       XRI 12; =ED  S,P
4032 F5         PUSH PSW
4033 3EFF       MVI A,FF
4035 EE34       XRI 34; =CB  S
4037 F5         PUSH PSW
4038 3EFF       MVI A,FF
403A EE56       XRI 56; =A9  S,P
403C F5         PUSH PSW
403D 3EFF       MVI A,FF
403F EE78       XRI 78; =87  S,P
4041 F5         PUSH PSW
4042 3EFF       MVI A,FF
4044 EE9A       XRI 9A; =65  P
4046 F5         PUSH PSW
4047 3EFF       MVI A,FF
4049 EEBC       XRI BC; =43 
404B F5         PUSH PSW
404C EE43       XRI 43;=00    Z,P
404E F5         PUSH PSW
404F EE43       XRI 43;=43 
4051 F5         PUSH PSW
              ;ORI
4052 3E00       MVI A,00
4054 F612       ORI 12;  P
4056 F5         PUSH PSW
4057 3E00       MVI A,00
4059 F634       ORI 34  
405B F5         PUSH PSW
405C 3E00       MVI A,00
405E F656       ORI 56;  P
4060 F5         PUSH PSW
4061 3E00       MVI A,00
4063 F678       ORI 78;  P
4065 F5         PUSH PSW
4066 3E00       MVI A,00
4068 F69A       ORI 9A;  S,P
406A F5         PUSH PSW
406B 3E00       MVI A,00
406D F6BC       ORI BC;  S
406F F5         PUSH PSW
4070 F6BC       ORI BC;DUMMY  S
4072 F5         PUSH PSW
4073 F643       ORI 43;FF  S,P
4075 F5         PUSH PSW
              ;CPI A=00
4076 3E00       MVI A,00
4078 FE12       CPI 12;00-12=EE  S,H,P,C
407A F5         PUSH PSW
407B FE34       CPI 34;00-34=CC  S,H,P,C
407D F5         PUSH PSW
407E FE56       CPI 56;00-56=AA  S,H,P,C
4080 F5         PUSH PSW
4081 FE78       CPI 78;00-78=88  S,H,P,C
4083 F5         PUSH PSW
4084 FE9A       CPI 9A;00-9A=66  H,P,C
4086 F5         PUSH PSW
4087 FEBC       CPI BC;00-BC=44  H,P,C
4089 F5         PUSH PSW
408A FE00       CPI 00;00-00=00  Z,P
408C F5         PUSH PSW
408D FE77       CPI 77;00-77=89  S,H,C
408F F5         PUSH PSW
              ;CPI A=FF
4090 3EFF       MVI A,FF
4092 FE12       CPI 12;FF-12=ED  S,P
4094 F5         PUSH PSW
4095 FE34       CPI 34;FF-34=CB  S
4097 F5         PUSH PSW
4098 FE56       CPI 56;FF-56=A9  S,P
409A F5         PUSH PSW
409B FE78       CPI 78;FF-78=87  S,P
409D F5         PUSH PSW
409E FE9A       CPI 9A;FF-9A=65  P
40A0 F5         PUSH PSW
40A1 FEBC       CPI BC;FF-BC=43  
40A3 F5         PUSH PSW
40A4 FEFF       CPI FF;FF-FF=00  Z,P
40A6 F5         PUSH PSW
40A7 FE79       CPI 79;FF-79=86  S
40A9 F5         PUSH PSW
              ;;;
              ; CHECK
40AA 310060     LXI SP,ERBF
40AD 210050     LXI H,STCK
40B0 2B         DCX H
40B1 112641     LXI D,TBL1END
40B4 0650       MVI B,50
40B6 1A       LOOP0:LDAX D
40B7 BE         CMP M
40B8 CABC40     JZ LOOP0_2
40BB E5         PUSH H;ERR
40BC 2B       LOOP0_2:DCX H
40BD 1B         DCX D
40BE 05         DCR B
40BF C2B640     JNZ LOOP0
40C2 E5         PUSH H
40C3 210000     LXI H,$0000
40C6 E5         PUSH H
40C7 76         HLT
              ;
              ;SUBROUTINE
40C8 0612     MVI:MVI B,12
40CA 0E34       MVI C,34
40CC 1656       MVI D,56
40CE 1E78       MVI E,78
40D0 269A       MVI H,9A
40D2 2EBC       MVI L,BC
40D4 3EDE       MVI A,DE
40D6 C9         RET
              ;
              ;COMPARE DATA TABLE
              ;CPI A=FF
40D7 80         DB 80
40D8 FF         DB FF;M FF-79=86
40D9 44         DB 44;
40DA FF         DB FF;A FF-FF=00
40DB 00         DB 00
40DC FF         DB FF;L FF-BC=43
40DD 04         DB 04
40DE FF         DB FF;H FF-9A=65
40DF 84         DB 84
40E0 FF         DB FF;E FF-78=87
40E1 84         DB 84
40E2 FF         DB FF;D FF-56=A9
40E3 80         DB 80
40E4 FF         DB FF;C FF-34=CB
40E5 84         DB 84
40E6 FF         DB FF;B FF-12=ED
              ;CPI A=00
40E7 91         DB 91
40E8 00         DB 00;M 00-77=89
40E9 44         DB 44;
40EA 00         DB 00;A 00-00=00
40EB 15         DB 15
40EC 00         DB 00;L 00-BC=44
40ED 15         DB 15
40EE 00         DB 00;H 00-9A=66
40EF 95         DB 95
40F0 00         DB 00;E 00-78=88
40F1 95         DB 95
40F2 00         DB 00;D 00-56=AA
40F3 95         DB 95
40F4 00         DB 00;C 00-34=CC
40F5 95         DB 95
40F6 00         DB 00;B 00-12=EE
              ;ORI
40F7 84         DB 84
40F8 FF         DB FF;M
40F9 80         DB 80;
40FA BC         DB BC;A
40FB 80         DB 80
40FC BC         DB BC;L
40FD 84         DB 84
40FE 9A         DB 9A;H
40FF 04         DB 04
4100 78         DB 78;E
4101 04         DB 04
4102 56         DB 56;D
4103 00         DB 00
4104 34         DB 34;C
4105 04         DB 04
4106 12         DB 12;B
              ;XRI
4107 00         DB 00
4108 43         DB 43;M
4109 44         DB 44;
410A 00         DB 00;A
410B 00         DB 00
410C 43         DB 43;L
410D 04         DB 04
410E 65         DB 65;H
410F 84         DB 84
4110 87         DB 87;E
4111 84         DB 84
4112 A9         DB A9;D
4113 80         DB 80
4114 CB         DB CB;C
4115 84         DB 84
4116 ED         DB ED;B
              ;ANI
4117 44         DB 44
4118 00         DB 00;M
4119 80         DB 80;
411A BC         DB BC;A
411B 80         DB 80
411C BC         DB BC;L
411D 84         DB 84
411E 9A         DB 9A;H
411F 04         DB 04
4120 78         DB 78;E
4121 04         DB 04
4122 56         DB 56;D
4123 00         DB 00
4124 34         DB 34;C
4125 04         DB 04
4126 12       TBL1END:DB 12;B
              ;
ERBF         =6000  LOOP0        =40B6  LOOP0_2      =40BC  
MVI          =40C8  MWK          =5001  STCK         =5000  
TBL1END      =4126  

結果をパソコンに送りました。


●基板の作成作業の進捗状況は?

ええ、どうなっているのかと言いますと、なにしろ、次から次へと変更作業が出てくるものですから、なかなか、はかどらなかったのですけれど、やっと一応は終わりました。

これから最後の最後のチェックです。
実質的には図面作業はほぼ完了です。
長かったあ…。

今、図面の整理中です。
2〜3日中には完成図面をお見せすることができると思いますので、今しばらくお待ちください。
2009.6.28upload

前へ
次へ
ホームページトップへ戻る