aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_tms7/t_tms7.asm
blob: efd4e0aed3d897e866eb21aef378eb5205e4f042 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
        cpu     tms70c08

        page    0

        include reg7000

; additional syntax options marked with ***

	adc	b,a
        adc	r10,a
        adc	r20,b
        adc	r30,r40
        adc	%20,a
        adc	#20,a		; ***
        adc	%30,b
        adc	#30,b           ; ***
        adc	%40,r50
        adc	#40,r50         ; ***

	add	b,a
        add	r10,a
        add	r20,b
        add	r30,r40
        add	%20,a
        add	#20,a		; ***
        add	%30,b
        add	#30,b           ; ***
        add	%40,r50
        add	#40,r50         ; ***

	and	b,a
        and	r10,a
        and	r20,b
        and	r30,r40
        and	%20,a
        and	#20,a		; ***
        and	%30,b
        and	#30,b           ; ***
        and	%40,r50
        and	#40,r50         ; ***
	andp	a,p20
        and	a,p20		; ***
        andp	b,p30
        and	b,p30		; ***
        andp	#50,p40
        and	#50,p40		; ***

	btjo	b,a,$
        btjo	r10,a,$
        btjo	r20,b,$
        btjo	r30,r40,$
        btjo	%20,a,$
        btjo	#20,a,$		; ***
        btjo	%30,b,$
        btjo	#30,b,$         ; ***
        btjo	%40,r50,$
        btjo	#40,r50,$       ; ***
	btjop	a,p20,$
        btjo	a,p20,$		; ***
        btjop	b,p30,$
        btjo	b,p30,$		; ***
        btjop	#50,p40,$
        btjo	#50,p40,$	; ***

	btjz	b,a,$
        btjz	r10,a,$
        btjz	r20,b,$
        btjz	r30,r40,$
        btjz	%20,a,$
        btjz	#20,a,$		; ***
        btjz	%30,b,$
        btjz	#30,b,$         ; ***
        btjz	%40,r50,$
        btjz	#40,r50,$       ; ***
	btjzp	a,p20,$
        btjz	a,p20,$		; ***
        btjzp	b,p30,$
        btjz	b,p30,$		; ***
        btjzp	#50,p40,$
        btjz	#50,p40,$	; ***

	br	@1234h
        br	1234h		; ***
        br	@1234h(b)
        br	1234h(b)	; ***
        br	*r30

	call	@1234h
        call	1234h		; ***
        call	@1234h(b)
        call	1234h(b)	; ***
        call	*r30

        clr	a
        clr	b
        clr	r10

        clrc

	cmp	b,a
        cmp	r10,a
        cmp	r20,b
        cmp	r30,r40
        cmp	%20,a
        cmp	#20,a		; ***
        cmp	%30,b
        cmp	#30,b           ; ***
        cmp	%40,r50
        cmp	#40,r50         ; ***
	cmpa	@1234h
        cmpa	1234h		; ***
        cmp	@1234h,a	; ***
        cmp	1234h,a		; ***
	cmpa	@1234h(b)
        cmpa	1234h(b)	; ***
        cmp	@1234h(b),a	; ***
        cmp	1234h(b),a	; ***
	cmpa	*r60
        cmp	*r60,a		; ***

	dac	b,a
        dac	r10,a
        dac	r20,b
        dac	r30,r40
        dac	%20,a
        dac	#20,a		; ***
        dac	%30,b
        dac	#30,b           ; ***
        dac	%40,r50
        dac	#40,r50         ; ***

        dec	a
        dec	b
        dec	r10

        decd	a
        decd	b
        decd	r10

        dint

        djnz	a,$
        djnz	b,$
        djnz	r10,$

	dsb	b,a
        dsb	r10,a
        dsb	r20,b
        dsb	r30,r40
        dsb	%20,a
        dsb	#20,a		; ***
        dsb	%30,b
        dsb	#30,b           ; ***
        dsb	%40,r50
        dsb	#40,r50         ; ***

        eint

        idle

        inc	a
        inc	b
        inc	r10

        inv	a
        inv	b
        inv	r10

        jmp	$
        jc	$
        jeq	$
        jhs	$
        jl	$
        jn	$
        jnc	$
        jne	$
        jnz	$
        jp	$
        jpz	$
        jz	$

        lda	@1234h
        lda	1234h		; ***
        mov	@1234h,a	; ***
        mov	1234h,a		; ***
        lda	@1234h(b)
        lda	1234h(b)	; ***
        mov	@1234h(b),a	; ***
        mov	1234h(b),a	; ***
	lda	*r10
        mov	*r10,a		; ***

        ldsp

        mov	a,b
        mov	a,r10
        mov	b,a
        mov	b,r20
        mov	r30,a
        mov	r40,b
        mov	r50,r60
        mov	%10,a
        mov	#10,a		; ***
        mov	%20,b
        mov	#20,b		; ***
        mov	%30,r70
        mov	#30,r70		; ***

        movd	%1234h,r10
        movd	#1234h,r10	; ***
        movd	%1234h(b),r20
        movd	#1234h(b),r20   ; ***
        movd	r30,r40

        movw	%1234h,r10      ; ***
        movw	#1234h,r10	; ***
        movw	%1234h(b),r20   ; ***
        movw	#1234h(b),r20   ; ***
        movw	r30,r40         ; ***

        movp	a,p10
        mov	a,p10		; ***
        movp	b,p20
        mov	b,p20		; ***
        movp	%10,p30
        movp	#10,p30		; ***
        mov	%10,p30		; ***
        mov	#10,p30		; ***
        movp	p40,a
        mov	p40,a		; ***
        movp	p50,b
        mov	p50,b		; ***

	mpy	b,a
        mpy	r10,a
        mpy	r20,b
        mpy	r30,r40
        mpy	%20,a
        mpy	#20,a		; ***
        mpy	%30,b
        mpy	#30,b           ; ***
        mpy	%40,r50
        mpy	#40,r50         ; ***

	nop

	or	b,a
        or	r10,a
        or	r20,b
        or	r30,r40
        or	%20,a
        or	#20,a		; ***
        or	%30,b
        or	#30,b           ; ***
        or	%40,r50
        or	#40,r50         ; ***
	orp	a,p20
        or	a,p20		; ***
        orp	b,p30
        or	b,p30		; ***
        orp	#50,p40
        or	#50,p40		; ***

        pop	a
        pop	b
        pop	r10
        pop	st

        push	a
        push	b
        push	r10
        push	st

        reti
        rti			; ***

        rets
        rts			; ***

        rl	a
        rl	b
        rl	r10

        rlc	a
        rlc	b
        rlc	r10

        rr	a
        rr	b
        rr	r10

        rrc	a
        rrc	b
        rrc	r10

	sbb	b,a
        sbb	r10,a
        sbb	r20,b
        sbb	r30,r40
        sbb	%20,a
        sbb	#20,a		; ***
        sbb	%30,b
        sbb	#30,b           ; ***
        sbb	%40,r50
        sbb	#40,r50         ; ***

        setc

        sta	@1234h
        sta	1234h		; ***
        mov	a,@1234h	; ***
        mov	a,1234h		; ***
        sta	@1234h(b)
        sta	1234h(b)	; ***
        mov	a,@1234h(b)	; ***
        mov	a,1234h(b)	; ***
	sta	*r10
        mov	a,*r10		; ***

        stsp

	sub	b,a
        sub	r10,a
        sub	r20,b
        sub	r30,r40
        sub	%20,a
        sub	#20,a		; ***
        sub	%30,b
        sub	#30,b           ; ***
        sub	%40,r50
        sub	#40,r50         ; ***

        swap	a
        swap	b
        swap	r10

        trap	0
        trap	23

        tsta
        tst	a		; ***
        tstb
        tst	b		; ***

        xchb	a
        xchb	b		; ***
        xchb	r10

	xor	b,a
        xor	r10,a
        xor	r20,b
        xor	r30,r40
        xor	%20,a
        xor	#20,a		; ***
        xor	%30,b
        xor	#30,b           ; ***
        xor	%40,r50
        xor	#40,r50         ; ***
	xorp	a,p20
        xor	a,p20		; ***
        xorp	b,p30
        xor	b,p30		; ***
        xorp	#50,p40
        xor	#50,p40		; ***