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) |