Subversion Repositories ht46f47_simulator

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
 
2
Testprogramme um Implementierungsdetails zu klären
3
==================================================
4
 
5
# Testprogramm 1:
6
# 1. Mit welchem Wert wird A initialisiert?
7
# 	Anzeige fängt mit 0, 1, 2, 4, ... an? Dann wird A mit 0 initialisiert
8
# 2. Wird ProgramCounter nach $FF auf $00 zurückspringen?
9
# 	=> Anzeige zählt langsam hoch => Überlauf, PC beginnt wieder bei 0
10
#
11
# 00:	29	WAIT 1s
12
# 01:	71	SET A=A+1
13
# 02:	54	SET Dout=A
14
# 03:	00...
15
#
16
import re
17
data='29 71 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
18
data = re.sub(r'[^0-9a-fA-F]+','', data)
19
for b in [int(data[i:i+2],16) for i in range(0,len(data),2)]:
20
	programmiereByte(b)
21
 
22
------------------
23
 
24
# Testprogramm 2:
25
# Was passiert bei RET, wenn man bereits gesprungen ist?
26
#	=> Anzeige zählt langsam hoch => RET bleibt gleich (man kommt zum letzten CALL)
27
#	Anzeige blinkt => RET gilt als NOP
28
#	Anzeige bleibt bei "1" => RET gilt als 0
29
#
30
# 00:	40	SET A=0
31
# 01:	DF	CALL <PAGE>F
32
# 02:	71	SET A=A+1
33
# 03:	29	WAIT 1s
34
# 04:	54	SET Dout=A
35
# 05:	E0	RET
36
# 06:	7A	SET A=~A
37
# 07:	27	WAIT 200ms
38
# 08:	54	SET Dout=A
39
# 09:	33	JUMP -3
40
# 0A:	00
41
# 0B:	00
42
# 0C:	00
43
# 0D:	00
44
# 0E:	00
45
# 0F:	E0	RET
46
#
47
import re
48
data='40 DF 71 29 54 E0 7A 27 54 33 00 00 00 00 00 E0'
49
data = re.sub(r'[^0-9a-fA-F]+','', data)
50
for b in [int(data[i:i+2],16) for i in range(0,len(data),2)]:
51
	programmiereByte(b)
52
 
53
------------------
54
 
55
# Testprogramm 3:
56
# Was passiert mit RET wenn man nie einen CALL gemacht hat?
57
#	=> Anzeige bleibt bei Zahl 2 => RET wird zu "freeze"
58
#	Anzeige wechselt zwischen 1 und 2 => RET springt zu adresse 0
59
#	Anzeige blinkt => RET wird ignoriert und gilt als NOP
60
#
61
# 00:	41	SET A=1
62
# 01:	54	SET Dout=A
63
# 02:	27	WAIT 200ms
64
# 03:	42	SET A=2
65
# 04:	54	SET Dout=A
66
# 05:	27	WAIT 200ms
67
# 06:	E0	RET
68
# 07:	7A	SET A=~A
69
# 08:	27	WAIT 200ms
70
# 09:	54	SET Dout=A
71
# 0A:	33	JUMP -3
72
#
73
import re
74
data='41 54 27 42 54 27 E0 7A 27 54 33'
75
data = re.sub(r'[^0-9a-fA-F]+','', data)
76
for b in [int(data[i:i+2],16) for i in range(0,len(data),2)]:
77
	programmiereByte(b)
78
 
79
------------------
80
 
81
# Testprogramm 4:
82
# Was passiert bei Division durch 0?
83
#
84
# 40	SET A=0
85
# 51	SET B=A
86
# 45	SET A=5
87
# 76	SET A=A/B
88
# 54	SET Dout=A
89
# 30	JUMP -0		HALT
90
#
91
import re
92
data='40 51 45 76 54 30'
93
data = re.sub(r'[^0-9a-fA-F]+','', data)
94
for b in [int(data[i:i+2],16) for i in range(0,len(data),2)]:
95
	programmiereByte(b)