標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第268回]
●LXI PUSH POP STA LDA XCHG SPHL DAD INX DCXのテストプログラムです
図面作業は、まだ最後のシルク図の作業が終わりません。
でも、もう少しです。
完了したら、図面をお見せします。
それまでの間、つなぎっていうわけでもありませんが、残っているテストプログラムを片付けてしまいましょう。
10本目のテストプログラムです。
2009/6/18 11:10 TEST10.TXT
END=4187
;;; MYCPU80 TEST10
;;; LXI PUSH POP STA LDA XCHG SPHL DAD INX DCX
;;; RST,IN,OUT,XTHL are omitted
;;; 09/6/16 6/18
;
ORG $4100
;
STCK=$5000
WK=$5001
ERBF=$6000
;
4100 210050 LXI H,STCK; LXI H
4103 F9 SPHL; SPHL
4104 0100EF LXI B,$EF00; LXI B
4107 C5 PUSH B; PUSH B
4108 F1 POP PSW;CLEAR FLAG REGISTER; POP PSW
;
4109 117856 LXI D,$5678; LXI D
410C 21BC9A LXI H,$9ABC
410F 09 DAD B; DAD B
4110 F5 PUSH PSW; PUSH PSW
4111 E5 PUSH H; PUSH H
4112 19 DAD D; DAD D
4113 F5 PUSH PSW
4114 E5 PUSH H
4115 29 DAD H; DAD H
4116 F5 PUSH PSW
4117 E5 PUSH H
4118 210000 LXI H,$0000
411B 3B DCX SP; DCX SP
411C 39 DAD SP; DAD SP
411D F5 PUSH PSW
411E C1 POP B;SAVE PSW POP B
411F EB XCHG; XCHG
4120 33 INX SP; INX SP
4121 C5 PUSH B
4122 D5 PUSH D; PUSH D
4123 F5 PUSH PSW
4124 E5 PUSH H
;INX DCX
4125 03 INX B
4126 13 INX D
4127 23 INX H
4128 C5 PUSH B
4129 D5 PUSH D
412A E5 PUSH H
412B 0B DCX B
412C 1B DCX D
412D 2B DCX H
412E C5 PUSH B
412F D5 PUSH D
4130 E5 PUSH H
;
4131 C5 PUSH B
4132 D5 PUSH D
4133 E1 POP H; POP H
4134 D1 POP D; POP D
4135 D5 PUSH D
4136 E5 PUSH H
;
4137 3E55 MVI A,55
4139 320150 STA WK
413C AF XRA A
413D F5 PUSH PSW
413E 3A0150 LDA WK
4141 F5 PUSH PSW
;
;;;
; CHECK
4142 310060 LXI SP,ERBF
4145 210050 LXI H,STCK
4148 2B DCX H
4149 118741 LXI D,TBL1END
414C 0628 MVI B,28
414E 1A LOOP0:LDAX D
414F BE CMP M
4150 CA5441 JZ LOOP0_2
4153 E5 PUSH H;ERR
4154 2B LOOP0_2:DCX H
4155 1B DCX D
4156 05 DCR B
4157 C24E41 JNZ LOOP0
415A E5 PUSH H
415B 210000 LXI H,$0000
415E E5 PUSH H
415F 76 HLT
;
;COMPARE DATA TABLE
;
4160 44 DB 44
4161 55 DB 55
4162 44 DB 44
4163 00 DB 00
4164 F3 DB F3
4165 4F DB 4F
4166 00 DB 00
4167 EF DB EF
4168 78 DB 78
4169 56 DB 56
416A F3 DB F3
416B 4F DB 4F
416C 00 DB 00
416D EF DB EF
416E 79 DB 79
416F 56 DB 56
4170 F4 DB F4
4171 4F DB 4F
4172 01 DB 01
4173 EF DB EF
4174 78 DB 78
4175 56 DB 56
4176 00 DB 00
4177 EF DB EF
4178 F3 DB F3
4179 4F DB 4F
417A 00 DB 00
417B EF DB EF
417C 68 DB 68
417D C0 DB C0
417E 01 DB 01
417F EF DB EF
4180 34 DB 34
4181 E0 DB E0
4182 10 DB 10
4183 EF DB EF
4184 BC DB BC
4185 89 DB 89
4186 11 DB 11
4187 EF TBL1END:DB EF
;
ERBF =6000 LOOP0 =414E LOOP0_2 =4154
STCK =5000 TBL1END =4187 WK =5001
プログラムに特別の意味はありません。
テストする命令を順に並べて実行し、その結果をいままでのテストプログラムと同じようにスタックに保存しているだけです。
いつものように、結果をUSB経由で送りました。
●STAX LDAX CMA STC CMC SHLD LHLD NOPのテストプログラムです
11本目のテストプログラムです。
2009/6/18 11:25 TEST11.TXT
END=4163
;;; MYCPU80 TEST11
;;; STAX LDAX CMA STC CMC SHLD LHLD NOP
;;; 09/6/17 6/18
;
ORG $4100
;
STCK=$5000
WK1=$5000
WK2=$5002
WK3=$5004
ERBF=$6000
REENT=$1033;for ZBK
;
4100 210050 LXI H,STCK; LXI H
4103 F9 SPHL; SPHL
4104 010000 LXI B,$0000; LXI B
4107 C5 PUSH B; PUSH B
4108 F1 POP PSW;CLEAR FLAG REGISTER; POP PSW
;STAX LDAX CMA
4109 010050 LXI B,WK1
410C 110250 LXI D,WK2
410F 3E12 MVI A,12
4111 02 STAX B
4112 2F CMA
4113 F5 PUSH PSW
4114 3E34 MVI A,34
4116 12 STAX D
4117 2F CMA
4118 F5 PUSH PSW
4119 0A LDAX B
411A F5 PUSH PSW
411B 1A LDAX D
411C F5 PUSH PSW
;STC CMC
411D 37 STC
411E F5 PUSH PSW
411F 3F CMC
4120 F5 PUSH PSW
4121 3F CMC
4122 F5 PUSH PSW
;NOP
4123 00 NOP
4124 00 NOP
4125 00 NOP
;SHLD LHLD
4126 217856 LXI H,$5678
4129 220450 SHLD WK3
412C 213412 LXI H,$1234
412F E5 PUSH H
4130 2A0450 LHLD WK3
4133 E5 PUSH H
;;;
; CHECK
4134 310060 LXI SP,ERBF
4137 210050 LXI H,STCK
413A 2B DCX H
413B 116341 LXI D,TBL1END
413E 0612 MVI B,12
4140 1A LOOP0:LDAX D
4141 BE CMP M
4142 CA4641 JZ LOOP0_2
4145 E5 PUSH H;ERR
4146 2B LOOP0_2:DCX H
4147 1B DCX D
4148 05 DCR B
4149 C24041 JNZ LOOP0
414C E5 PUSH H
414D 210000 LXI H,$0000
4150 E5 PUSH H
4151 76 HLT
;
;COMPARE DATA TABLE
;
4152 78 DB 78
4153 56 DB 56
4154 34 DB 34
4155 12 DB 12
4156 01 DB 01
4157 34 DB 34
4158 00 DB 00
4159 34 DB 34
415A 01 DB 01
415B 34 DB 34
415C 00 DB 00
415D 34 DB 34
415E 00 DB 00
415F 12 DB 12
4160 00 DB 00
4161 CB DB CB
4162 00 DB 00
4163 ED TBL1END:DB ED
;
ERBF =6000 LOOP0 =4140 LOOP0_2 =4146
REENT =1033 STCK =5000 TBL1END =4163
WK1 =5000 WK2 =5002 WK3 =5004
このテストプログラムも命令の使い方に特に意味はありません。