Guten Abend,
ich habe folgendes Assemblerlisting für einen TMP90C141 Mikrocontroller,
der gehört zur Toshiba TLCS-90 Familie.
1
ROM 00102: 37 ef 00 LD (0xef), 0x00 ;; ROM ZP IO ADMOD
2
ROM 00105: b4 ef RES 4, (0xef) ;; ROM ZP IO ADMOD
3
ROM 00107: 3a 0f ff LD HL, 0xff0f
4
ROM 0010a: 39 17 ff LD DE, 0xff17
5
ROM 0010d: 38 04 00 LD BC, 0x0004
6
ROM 00110: fe 59 LDIR
7
ROM 00112: 1c 48 28 CALL 0x02848
8
ROM 00115: 1c cb 02 CALL 0x002cb
9
ROM 00118: ef 17 6f ff CP (0x17), 0xff ;; ROM iRam ZP
10
ROM 0011c: ce 08 JR NZ, pc+08 (126)
11
ROM 0011e: ef 19 6f cf CP (0x19), 0xcf ;; ROM iRam ZP
12
ROM 00122: eb 99 4d d6 CALL EQ, 0x4d99
13
ROM 00126: e7 17 2c ???
14
ROM 00129: fc 6f ea CP H, 0xea
15
ROM 0012c: eb 62 08 c6 JP EQ, 0x0862
16
ROM 00130: fc 6f ca CP H, 0xca
17
ROM 00133: ce 05 JR NZ, pc+05 (13a)
18
ROM 00135: bf 01 SET 7, (0x01) ;; ROM iRam ZP
19
ROM 00137: 1a 62 08 JP 0x00862
20
ROM 0013a: fc 6f e8 CP H, 0xe8
21
ROM 0013d: eb 33 0c c6 JP EQ, 0x0c33
22
ROM 00141: 37 e6 18 LD (0xe6), 0x18 ;; ROM ZP IO
23
ROM 00144: 1c 44 04 CALL 0x00444
24
ROM 00147: a9 00 BIT 1 (0x00) ;; ROM iRam ZP
25
ROM 00149: ce 1c JR NZ, pc+1c (167)
26
ROM 0014b: 27 66 LD A,(0x66)
27
ROM 0014d: 28 LD B, A
28
ROM 0014e: 27 65 LD A,(0x65)
29
ROM 00150: f8 af BIT 7, B
30
ROM 00152: ce 0a JR NZ, pc+0a (15e)
31
ROM 00154: fe af BIT 7, A
32
ROM 00156: c6 04 JR EQ, pc+04 (15c)
33
ROM 00158: 87 2a INC (0x2a)
34
ROM 0015a: c8 02 JR TT, pc+02 (15e)
35
ROM 0015c: 8f 2a DEC (0x2a)
36
ROM 0015e: b9 00 SET 1, (0x00) ;; ROM iRam ZP
37
ROM 00160: bc e6 SET 4, (0xe6) ;; ROM ZP IO
38
ROM 00162: 1c 44 04 CALL 0x00444
39
ROM 00165: c8 e0 JR TT, pc- 20 (147)
40
ROM 00167: 37 e9 28 LD (0xe9), 0x28 ;; ROM ZP IO
41
ROM 0016a: 37 eb fe LD (0xeb), 0xfe ;; ROM ZP IO
42
ROM 0016d: b9 e6 SET 1, (0xe6) ;; ROM ZP IO
43
ROM 0016f: b8 e7 SET 0, (0xe7) ;; ROM ZP IO INTEH
44
ROM 00171: 37 d2 e0 LD (0xd2), 0xe0 ;; ROM ZP IO WDMOD
45
ROM 00174: ef 17 6f ff CP (0x17), 0xff ;; ROM iRam ZP
46
ROM 00178: ce 08 JR NZ, pc+08 (182)
47
ROM 0017a: ef 19 6f f8 CP (0x19), 0xf8 ;; ROM iRam ZP
48
ROM 0017e: ce 02 JR NZ, pc+02 (182)
49
ROM 00180: b4 00 RES 4, (0x00) ;; ROM iRam ZP
50
ROM 00182: e7 17 2c ???
51
ROM 00185: fc 6f 8b CP H, 0x8b
52
ROM 00188: c6 69 JR EQ, pc+69 (1f3)
53
ROM 0018a: e7 19 2c ???
54
ROM 0018d: fc 6f fe CP H, 0xfe
55
ROM 00190: ce 05 JR NZ, pc+05 (197)
56
ROM 00192: 1c 1e 0a CALL 0x00a1e
57
ROM 00195: c8 06 JR TT, pc+06 (19d)
Der Code stammt aus einem selbstgeschriebenen Disassembler.. an ein paar
Stellen taucht "e7 17 2c" oder "e7 19 2c" auf. Den Code kann ich aber
laut Datenblatt zur TLCS-90 Familie nicht decodieren. Ich bin der
Meinung, da ist ein Fehler im Datenblatt (auf Seite 341 oben). Statt
EF:n:28+r müsste da stehen E7:n:28+r. Dann würde sich der Code schön und
sinnvoll zu LD H, (n) übersetzen lassen. Hier findet sich das
Datenblatt:
https://usermanual.wiki/Document/1988ToshibaTLCS48908BitMicrocontroller.1499259318/help
Ich wäre dankbar, wenn sich das jemand mal kurz anschauen könnte, ich
habe viele Stunden damit verbracht, bis ich langsam einsehe, daß der
Fehler vielleicht ausnahmsweise im Datenblatt zu finden ist..
schöne Grüße
Flo
Warum versuchst du es nicht mal mit der Tabelle ab Seite 352 zu
verifizieren?
Ja ich weis lausiges PDF schwer zu lesen, :-(
Aber der Code E7 ist ja schon belegt? dann wäre der ja auch falsch?
Habe es nur überflogen, den mit dem Handy ist das PDF nicht gut zu lesen
weil es Grafik und nicht Text ist ;-)
Flo G. schrieb:>> Ich bin der> Meinung, da ist ein Fehler im Datenblatt (auf Seite 341 oben). Statt> EF:n:28+r müsste da stehen E7:n:28+r. Dann würde sich der Code schön und> sinnvoll zu LD H, (n) übersetzen lassen.
Der Assembler "AS" unterstützt den TLCS-90:
http://john.ccac.rwth-aachen.de:8000/as/index.html
Wenn man in code90c141.c reinschaut scheint es so zu
sein wie Du vermutest.
Laut der "AS" Doku war die Referenz:
Toshiba Corp.: 8-Bit Microcontroller TLCS-90 Development System Manual
1990
Olaf schrieb:> Ist das nicht Z80? ICh meine die Teilen hatten doch auch bergeweise> "geheime" Befehle. Gab damals jedenfalls mal Tabellen mit diesen> Befehlen.
Ja es ist eine Z80 Architektur. Der Befehlssatz ist aber wesentlich
komplexer und mächtiger.. und hat nicht sehr viel mit Z80 zu tun.. es
bleibt auch wenig Platz für illegale Opcodes..
Patrick L. schrieb:> Warum versuchst du es nicht mal mit der Tabelle ab Seite 352 zu> verifizieren?>> Ja ich weis lausiges PDF schwer zu lesen, :-(>> Aber der Code E7 ist ja schon belegt? dann wäre der ja auch falsch?>> Habe es nur überflogen, den mit dem Handy ist das PDF nicht gut zu lesen> weil es Grafik und nicht Text ist ;-)
Ich habe die Tabellen alle schon 57 mal durchgearbeitet.. leider nicht
sehr übersichtlich.
Letztlich will ich ausschließen, daß der EPROM irgendwie korrupt ist.
Ich repariere da ein altes E-Piano. Der Controller hängt an einer
Stelle, die ist auch schon längst identifiziert. Aber der Code macht
einfach nur Sinn mit dem Fehler im Datenblatt.
Danke schon mal für die Antworten.
vg Flo
Dieter schrieb:> Der Assembler "AS" unterstützt den TLCS-90:>> http://john.ccac.rwth-aachen.de:8000/as/index.html>> Wenn man in code90c141.c reinschaut scheint es so zu> sein wie Du vermutest.>> Laut der "AS" Doku war die Referenz:>> Toshiba Corp.: 8-Bit Microcontroller TLCS-90 Development System Manual> 1990
Ahhh! Danke! Das hilft mir! den Assembler hatte ich nicht gefunden!
Flo G. schrieb:> Dieter schrieb:>> Der Assembler "AS" unterstützt den TLCS-90:>>>> http://john.ccac.rwth-aachen.de:8000/as/index.html>>>> Wenn man in code90c141.c reinschaut scheint es so zu>> sein wie Du vermutest.>>>> Laut der "AS" Doku war die Referenz:>>>> Toshiba Corp.: 8-Bit Microcontroller TLCS-90 Development System Manual>> 1990>> Ahhh! Danke! Das hilft mir! den Assembler hatte ich nicht gefunden!
Ja, der AS Assembler übersetzt das tatsächlich zu e7:n:28+r
Auch wenn ich das Toshiba Corp.: 8-Bit Microcontroller TLCS-90
Development System Manual 1990 nicht gefunden habe.
Vielen Dank für die Hilfe!
Na dann viel Glück bei der Rep;-)
Sonnst falls du es nicht mitbekommen hättest, ich Baue solche Dinger
Prof.
Also wenn du Fragen hast nur zu, versuche dir gerne zu helfen. ;.)
Flo G. schrieb:>> Letztlich will ich ausschließen, daß der EPROM irgendwie korrupt ist.
Die besseren EEPROM Programmiergeräte lesen einen EEPROM zusätzlich
bei etwas höherer und niedriger Betriebsspannung. Wenn es dabei
Unterschiede gibt weiss man dass etwas nicht stimmt. Allerdings
hilft das nicht immer, manche Fehler erkennt man so nicht.
Patrick L. schrieb:> Na dann viel Glück bei der Rep;-)>> Sonnst falls du es nicht mitbekommen hättest, ich Baue solche Dinger> Prof.> Also wenn du Fragen hast nur zu, versuche dir gerne zu helfen. ;.)
Na einer der 160-pinnigen Kawai K015 Tone Generator ICs läßt sich nicht
korrekt initialisieren bzw. meldet nicht zurück, daß er initialisiert
wurde. Und der Controller wartet in einer Schleife darauf. Ich nehme die
Abfrage jetzt einfach raus aus dem EPROM.. mal schauen ob das was
hilft..
Dieter schrieb:> Die besseren EEPROM Programmiergeräte lesen einen EEPROM zusätzlich> bei etwas höherer und niedriger Betriebsspannung. Wenn es dabei> Unterschiede gibt weiss man dass etwas nicht stimmt. Allerdings> hilft das nicht immer, manche Fehler erkennt man so nicht.
Ja, ich habe so ein Gerät.. aber erstmal nur bei Nennspannung
ausgelesen. Das mach ich noch. Allerdings ist der Code so schön und
konsistent, daß ich daran im Moment nicht glaube..
Flo G. schrieb:> Na einer der 160-pinnigen Kawai K015 Tone Generator ICs läßt sich nicht> korrekt initialisieren bzw. meldet nicht zurück, daß er initialisiert> wurde. Und der Controller wartet in einer Schleife darauf. Ich nehme die> Abfrage jetzt einfach raus aus dem EPROM.. mal schauen ob das was> hilft..
Kontrolliere die Stabilität der Versorgungsspannung!
Das ist ein sehr häufiges Problem bei den Kawai Tongeneratoren.
Passiert in der regel so ab 5 Jahren Gebrauchszeit.
Oft sind dann ausgetrocknete ELKOS im Netzteil schuld.
Patrick L. schrieb:> Kontrolliere die Stabilität der Versorgungsspannung!
Ja ok danke. Ich habe natürlich das Netzteil als erstes geprüft, aber
direkt auf dem Controllerboard (da sind auch noch ein paar Elkos) habe
ich das nicht getan. Werde ich nachholen..
Dieter schrieb:> Flo G. schrieb:>>>> Ich bin der>> Meinung, da ist ein Fehler im Datenblatt (auf Seite 341 oben). Statt>> EF:n:28+r müsste da stehen E7:n:28+r. Dann würde sich der Code schön und>> sinnvoll zu LD H, (n) übersetzen lassen.>> Der Assembler "AS" unterstützt den TLCS-90:
Und der sdas (asxxxx-fork von SDCC), da SDCC selbst ebenfalls den
TLCS-90 unterstützt.
Wo verwendest du den TLCS-90? Das ist, besonders heutzutage, ja ein
recht exotischer Microcontroller.
SDCC hat zwar den tlcs90-Port für den TLCS-90, aber getestet wird dieser
nur mittels des Emulators uCsim. Daher wäre es interessant zu wissen, ob
es da eine geeignete Hardwareplattform zum Test gibt.
Z.B. hatte vor Jahren der tlcs90-Port einen Bug, durch den ein pop af
generiert wurde, ohne vorheriges push af. Bei nahezu allen Z80-Derivaten
ist solcher Code korrekt, aber der TLCS-90 hat das Interrupt-enable flag
in Register F, so dass damit unbeabsichtigt Interrupts ein- oder
ausgeschaltet wurden.
Das wurde dann von einem Nutzer bemerkt, aber meines Wissens hat der
tlcs90-Port nur sehr wenige Nutzer, so dass das Risiko besteht, dass
SDCC bei Bugs im tlcs90-Port nicht zeitnah Bugreports erhält.