Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Hilfe bei Programm für U882 » Themenansicht

Autor Thread - Seiten: -1-
000
16.05.2006, 14:46 Uhr
Gast: knollibum



Hallo Allerseits,

habe gerade einen U882 in der Minimalvariante aufgebaut. D.h. lediglich Quartz, Rücksetzen und 2716 Eprom. Jetzt brauche ich ein wenig Hilfe bei einem kleinen Programm mit folgender Aufgabe: Daten an Tor 2 einlesen und auf Tor 0 ausgeben. Bisher sieht das so aus.


Quellcode:
Adresse    OP-Kode    Mnemonik        Bemerkung

0C    8F    DI            Unterbrechungen deaktivieren
0D    31    SRP    #%10        Registerpointer H10 bis H1F
    10
0F    E6    LD    %F8,#%04    Tor 0 (R248) auf Ausgang
    F8
    04
12    E6    LD    %F6,#%FF    Tor 2 (R246) auf Eingang
    F6
    FF
15    E5    LD    %10,2        Tor 2 in Register H10
    10
    02
18    E5    LD    0,%10        Register H10 nach Tor 0
    00
    10
1B    8D    JP    %0015        Springe auf Adresse H0015
    00
    15

Leider funktioniert es nicht. Da heißt, Bit an Tor 0 bleibt auf "0", wenn ich das entsprechende Pendant an Tor 2 auf "1" setze. Kann mir jemand sagen, ob da evtl. was falsch ist ? Danke.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
001
16.05.2006, 15:51 Uhr
Gast: Kingstener



So sieht deines im Reassembler aus:


Quellcode:
ROM:0000      ; Processor:          Z8
ROM:0000      ; Target assembler: Zilog Z8 assembler
ROM:0000      ; Byte sex        : Big endian
ROM:0000
ROM:0000      ;
ROM:0000
ROM:0000      ; Segment type: Pure code
ROM:0000      ; segment ROM
ROM:0000 FF FF      irq0:          .word    0FFFFh
ROM:0002 FF FF      irq1:          .word    0FFFFh
ROM:0004 FF FF      irq2:          .word    0FFFFh
ROM:0006 FF FF      irq3:          .word    0FFFFh
ROM:0008 FF FF      irq4:          .word    0FFFFh
ROM:000A FF FF      irq5:          .word    0FFFFh

ROM:000C
ROM:000C
ROM:000C              ; public start
ROM:000C      start:
ROM:000C 8F                 di
ROM:000D 31 10              srp      #10h
ROM:000F E6 F8 04          ld      p01m,    #4      ; Ports 0-1 mode
ROM:0012 E6 F6 FF          ld      p2m, #0FFh      ; Port 2 mode
ROM:0015
ROM:0015      loc_15:                  ; CODE XREF: start+Fj
ROM:0015 E5 10 02          ld      p2, @byte_40      ; Port 2
ROM:0018 E5 00 10          ld      byte_40, @p0      ; Port 0
ROM:001B 8D 00 15          jp      loc_15
ROM:001B      ; End    of function start
ROM:001B

probier mal das:


ROM:000C          start:
ROM:000C 8F                       di
ROM:000D E6 F8 04                 ld      p01m, #4        ; Ports 0-1 mode
ROM:0010 E6 F6 FF                 ld      p2m, #0FFh      ; Port 2 mode
ROM:0013 E6 FF 80                 ld      spl, #80h       ; Stack pointer
ROM:0016 31 10                    srp     #10h
ROM:0018
ROM:0018          loc_18:                                 ; CODE XREF: start+10j
ROM:0018 08 02                    ld      R0, p2          ; Port 2
ROM:001A 09 00                    ld      p0, R0          ; Port 0
ROM:001C 8D 00 18                 jp      loc_18
ROM:001C          ; End of function start

edit:aah, jetzt klappt die Formatierung....

Dieser Beitrag wurde am 16.05.2006 um 17:32 Uhr von Kingstener editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
002
16.05.2006, 18:19 Uhr
Gast: knollibum



Was bewirkt:

ROM:0013 E6 FF 80 ld spl, #80h ; Stack pointer

Folgendes kann man auch weglassen, da die Register auf direkt adressierbar sein sollen.

ROM:0016 31 10 srp #10h

Allerdings müsste es dann so weitergehen:

ROM:00xx E4 00 02 ld 0,2 ;Tor 2 direkt nach Tor 0 kopieren

im Gegensatz zum ersten Versuch spart man sich den Weg über das Zwischenregister.

Noch mal so 'ne Frage. Ist bei Benutzung des sogenannten Registerpointers mit z.B. 10 das Register 10=Register 0 und bei z.B. 30 Register 30=Register 0 ?
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
003
16.05.2006, 18:27 Uhr
Gast: Kingstener




Zitat:
Gast: knollibum schrieb
Was bewirkt:

ROM:0013 E6 FF 80 ld spl, #80h ; Stack pointer


Setzt Stackpointer auf 80H bei Stack intern


Zitat:
Folgendes kann man auch weglassen, da die Register auf direkt adressierbar sein sollen.

ROM:0016 31 10 srp #10h

Allerdings müsste es dann so weitergehen:

ROM:00xx E4 00 02 ld 0,2 ;Tor 2 direkt nach Tor 0 kopieren

im Gegensatz zum ersten Versuch spart man sich den Weg über das Zwischenregister.

jo, gibt halt mehrere Wege


Zitat:
Noch mal so 'ne Frage. Ist bei Benutzung des sogenannten Registerpointers mit z.B. 10 das Register 10=Register 0 und bei z.B. 30 Register 30=Register 0 ?

Ja
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
004
16.05.2006, 18:32 Uhr
Gast: knollibum



Noch 'ne "unverschämte" Frage. Gibt es auch sowas wie einen Emulator der unter MS-DOS oder Windows läuft ? Das mit Eprom brennen ist ziemlich nervig um ein Progrämmchen zum Laufen zu bringen.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
005
16.05.2006, 18:46 Uhr
Gast: Kingstener



für den Z8 hab ich leider auch noch nix bezahlbares+brauchbares gefunden und jag es immer über den Dissassembler...
Dieser Beitrag wurde am 16.05.2006 um 18:47 Uhr von Kingstener editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
006
16.05.2006, 19:31 Uhr
Enrico
Default Group and Edit


Dafür kann man aber auch einen EPROM-Emulator nehmen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
16.05.2006, 19:59 Uhr
Deff



In der rfe 3/90 S.178...181 ist ein Artikel "Einfaches Hilfsmittel zur Programmtestung für U882 und U884" abgedruckt!
Vielleicht hilft der Dir weiter, knollibum. Allerdings ist das Monitorprogramm nicht mit abgedruckt...
--
Die Politik ist ein Versuch der Politiker, zusammen mit dem Volk mit den Problemen fertig zu werden, die das Volk ohne die Politiker niemals gehabt hätte. (Dieter Hildebrandt)

Dieser Beitrag wurde am 16.05.2006 um 20:02 Uhr von Deff editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
17.05.2006, 11:24 Uhr
Gast: knollibum



Gibt es wenigstens einen brauchbaren Assembler/Disassembler der/die nichts kostet/kosten ? Bisher konvertiere ich alles von Hand direkt in den Eprom.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
009
17.05.2006, 11:45 Uhr
A.S.



Probier's mal bei Zilog ....

http://www.zilog.com/software/zds2.asp

Das Zilog Developer Studio 3.68 sollte sich nutzen lassen. Ich habe damit selbst mal ein kleines Programm für den U8840 übersetzt. Frage jetzt aber bitte nicht, welcher Typ kompatibel zum U8820/8840 war. Habe ich vergessen. Sollte sich aber herausfinden lassen

Grüße
Alexander
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
17.05.2006, 12:19 Uhr
Deff



U8820 = Z8602 und U8840 = Z8612

s. http://www.elektron-bbs.de/elektronik/tabellen/ddr/diguniic.htm
--
Die Politik ist ein Versuch der Politiker, zusammen mit dem Volk mit den Problemen fertig zu werden, die das Volk ohne die Politiker niemals gehabt hätte. (Dieter Hildebrandt)

Dieser Beitrag wurde am 17.05.2006 um 12:22 Uhr von Deff editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
17.05.2006, 15:48 Uhr
Gast: knollibum



Danke erstmal.

Wie ich beim herumprobieren herausgefunden habe, werden die Daten nicht vom Tor 2 eingelesen. Normalerweise ist (lt.Doku) Tor 2 auf Eingang programmiert und kann mit LD %10,%02 direkt gerladen werden. Mache ich was falsch, habe ich was übersehen ?
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
012
17.05.2006, 16:03 Uhr
Gast: Kingstener



Normalerweise ist R246 (%F6) nach dem Reset FFH und du kannst Port2 mit LD Rn,nn oder LD nn,nn direkt in ein ein Register laden.
Hat dein LD nn,nn von Port2 auf Port0 was rausgebracht?

Dieser Beitrag wurde am 17.05.2006 um 16:11 Uhr von Kingstener editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
013
17.05.2006, 16:15 Uhr
Gast: knollibum



Nein. Hat nichts gebracht. Ich kann zwar auf Tor 0 schreiben (z.B. LD 0,%#0F) und es kommt auch was an (die unteren 4 Bits auf H), einlesen von Tor 2 geht aber nicht, egal welche Adressierungsart ich verwende. Auch das manuelle Setzen von R246 auf FF bringt nichts. Arrrghhhh

Die Zilog Software bietet weder einen Z8602 noch einen Z8612 an. Alle anderen Typen liefern falsche Ergebnisse, "DI" wird nicht als "8F" assembliert. Wieder Arrghhh
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
014
17.05.2006, 16:24 Uhr
Gast: Kingstener



Dann sieht das nicht gut aus, es gibt eigentlich keine weiteren Bedingungen...
Hoffentlich hattest du die Eingänge beim Basteln wenigstens nicht offen gelassen, hab keine Ahnung, ob die gegen statische Ladungen geschützt sind...
Edit: wie ist P3M definiert? Nicht, das da Handshake für P2 definiert ist D5?


Sind die Z86Cxx auch nicht drin bei der Zilog-Soft?

Dieser Beitrag wurde am 17.05.2006 um 16:38 Uhr von Kingstener editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
015
17.05.2006, 17:42 Uhr
Gast: knollibum



Das "Tor 2"-Problem hat sich erledigt. Der "LD" Befehl verhält sich beim Laden von Register zu Register anders als beim Laden von Konstanten in ein Register (Quelle und Ziel sind vertauscht). Sonderbar, sehr sonderbar. Darauf bin ich beim genaueren Betrachten der HEX Datei aus der Zilog Software gekommen - die jetzt auch läuft. Danke für den Tip mit den C-Typen.

Da schieb' ich jetzt noch eine Frage hinterher. Wie funktioniert das mit den bedingten Sprung-Befehlen genau ? Das mit Testen der Flags ist mir unklar. Kann da jemand Licht ins Dunkel bringen ? Was ist, wenn mich z.B. nur das Z-Bit interessiert und die anderen nicht (aber trotzdem gesetzt sind) ? Das jede Kombination getestet werden muß, kann ich mir nicht vorstellen.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
016
17.05.2006, 18:37 Uhr
Gast: Kingstener




Zitat:
Gast: knollibum schrieb
Das "Tor 2"-Problem hat sich erledigt. Der "LD" Befehl verhält sich beim Laden von Register zu Register anders als beim Laden von Konstanten in ein Register (Quelle und Ziel sind vertauscht).

?? der Ladebefehl ist immer LD Ziel,Quelle


Zitat:
Wie funktioniert das mit den bedingten Sprung-Befehlen genau ? Das mit Testen der Flags ist mir unklar. Kann da jemand Licht ins Dunkel bringen ? Was ist, wenn mich z.B. nur das Z-Bit interessiert und die anderen nicht (aber trotzdem gesetzt sind) ? Das jede Kombination getestet werden muß, kann ich mir nicht vorstellen.

ja, wenn das Z-Bit interessiert musst du halt JPZ (Z=1 wenn Ergebnis Null war) oder JPNZ (Z=0, wenn Ergebnis nicht null war) tun..

ist zwar hier OT, aber bei ebay gibt's grad ein Büchlein:
http://cgi.ebay.de/Einchip-Mikrorechner_W0QQitemZ8419130527QQcategoryZ183QQrdZ1QQcmdZViewItem

Dieser Beitrag wurde am 17.05.2006 um 18:50 Uhr von Kingstener editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
017
17.05.2006, 18:45 Uhr
Enrico
Default Group and Edit



Zitat:
Gast: knollibum schrieb
Gibt es wenigstens einen brauchbaren Assembler/Disassembler der/die nichts kostet/kosten ? Bisher konvertiere ich alles von Hand direkt in den Eprom.

Kennst Du Alfred Arnolds "AS". Der kann fast alles (älteres) assemblieren, ist aber für DOS.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
17.05.2006, 20:35 Uhr
Gast: Kingstener




Zitat:
A.S. schrieb
Probier's mal bei Zilog ....

http://www.zilog.com/software/zds2.asp

Das Zilog Developer Studio 3.68 sollte sich nutzen lassen. Ich habe damit selbst mal ein kleines Programm für den U8840 übersetzt.

Grüße
Alexander

Cool, kann man im Step-Modus schön durchtesten das Programm, so etwas hat mir immer noch gefehlt....
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
019
18.05.2006, 12:04 Uhr
Gast: knollibum



Ja, danke. Habe allen möglichen Kram zu dem Thema, u.a. das angebotene Büchlein.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
020
19.05.2006, 20:55 Uhr
volkerp
Default Group and Edit
Avatar von volkerp


Zitat:
Kennst Du Alfred Arnolds "AS". Der kann fast alles (älteres) assemblieren, ist aber für DOS.

AS gibts für alle Systeme, u.a. Linux und Windows32-Console. Ist halt ne Kommandozeilenanwendung. www.alfsembler.de
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 19.05.2006 um 20:56 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek