Robotrontechnik-Forum

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

Robotrontechnik-Forum » Sonstiges » Software für Zilog Z8 Emu » Themenansicht

Autor Thread - Seiten: -1-
000
30.07.2020, 19:14 Uhr
u808



Ich habe hier noch einen Z8 CCP Emulation Board.



Im Manual steht das es dafür eine ICEBOX GUI Software gibt , diese ist aber nirgends auf den beiden mitgelieferten CDs drauf.
Hat die jemand? Bzw. wo bekomme ich die her?

Viele Grüße
Sven
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
30.07.2020, 19:28 Uhr
otto11



Ich habe dieses Board auch lange benutzt.
Da muss ich mal suchen. Ich melde mich hier, falls ich etwas finde.

Grüße
Jürgen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
30.07.2020, 20:21 Uhr
otto11



Zum Z8CCP Emu Board gehörte eine Diskette dazu! Dort war die GUI mit drauf. Habe gleich die Diskette noch mal ausgelesen. Ich hab 2 Versionen 3.02 und 3.11. Die 3.11 liess sich leider schon nicht mehr am USB Laufwerk lesen (1 Datei) :-( Habe das bestimmt schon irgendwo abgelegt - also erstmal kein Problem.)
Die ZDS386 - Zilog Developper Studio - gibt es nach wie vor bei Zilog zum download. Wenn ich mich richtig erinnere, kann die auch den Z8CCP ansteuern?

Interessant dazu ist die nach wie vor fehlende C-Compiler DLL zum ZDS368. Ich habe dazu damals schon Zilog München und wohl auch paulotto genervt.
Leider nicht mehr auffindbar...

Viele Grüße
Jürgen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
30.07.2020, 20:50 Uhr
Steffen H.

Avatar von Steffen H.

ich habe einen C-Compiler für den Z8, den ich mal von Zilog bekommen habe. Leider ist der mit dem ZDS368 nicht kompatibel, weil das Debug File nicht passt, bzw. ich habe das nicht zum laufen bekommen. Sonst funktioniert der bis WIN10 in der Kommandozeile.
Hat alles was man braucht, C-Compiler, Assembler, Linker und ein Tool für Libs.

Das ZDS386 - Zilog Developper Studio funktioniert mit dem Z8-CCP.

Z8 C-Compiler

Gruss,
Steffen
--
* Occultatum Libera *

Dieser Beitrag wurde am 30.07.2020 um 20:51 Uhr von Steffen H. editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
31.07.2020, 10:45 Uhr
otto11



@ Steffen
Disketten mit diesem C-Compiler waren wohl auch bei meinem Board mit im Karton.
Fehlt eben blos die Anbindung an ZDS.

Gruss,
Jürgen

PS: Ich habe noch einige Z86E0812PSC1866 und wenige Z86E0408PSC1866 hier liegen. Falls Bedarf besteht - PN.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
31.07.2020, 10:53 Uhr
u808



@Steffen H.

Danke für den Compiler. Werde ich heute Abend mal mit rumspielen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
31.07.2020, 17:39 Uhr
Steffen H.

Avatar von Steffen H.

@otto11

die Disketten hatte ich auch zu dem Board und noch einige andere dazu. Die gab es mal frei bei einem Seminar zum mitnehmen. Lang ist es her. Die habe ich alle auf Festplatte und packe die mal zusammen und lege die auf meinen Server. Vielleicht findet der eine oder andere was interessantes.
Wenn man nur wüsste, wie das Debugfile für den ZDS aussehen muss, dann könnte man ja mal mit dem Z8 C-Compiler etwas mehr testen. Eines wird erzeugt, aber vielleich gibt es ja noch andere Einstellungen?

@u808
gerne doch, habe den ja schon ewig auf dem Server. Hier noch ein Projektordner zu dem UB8820/UB8840 Testboard von mir. Da ist der Compiler eingebunden. Einige Software in C geschrieben und die funktioniert . Selbst die Anbindung vom UB8840 an ein 1,44" TFT Display ging ohne Probleme.

Z8_Projekte.zip

Viele Grüsse,
Steffen
--
* Occultatum Libera *
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
31.07.2020, 18:00 Uhr
Steffen H.

Avatar von Steffen H.

hier noch die Software von den Disketten zum Z8-CCP plus viele Beispielsoftware für verschiede Anwendungen.
Selbst den ROM von dem Z8CCP habe ich mit im ZIP-File, plus ein Update auf V3.02. Keine Ahnung, was da neu sein sollte, hatte das File mal bekommen.

zilog_Software.zip

Viele Grüsse,
Steffen
--
* Occultatum Libera *
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
31.07.2020, 20:32 Uhr
wpwsaw
Default Group and Edit


Steffen, ich bedanke mich auch mal dafür. Ich habe einige Z8 Testborde liegen. Leider noch keine Zeit gefunden ausser das Programm für meine eine Nixie-Uhr. Da ist ein Z8F 3221 drin. Ich nutze den ZDS II - Z8Encore! 5.2.2 dafür.

wenn ich mit meinen 88xx spiele, dann nutze ich den ZDS 3.68 als Prozessor stelle ich immer den Z86C91

Gruß
wpw

P.S. ich sitze gerade an der Nixie Uhr (hatte ich im Forum letztens gezeigt) um noch eine kleine Funktion ein zu fügen)
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
24.08.2021, 07:48 Uhr
Bert



Der Compiler von Steffen aus 003 läuft mit Wine auch unter Linux.
Jetzt habe ich ein kleines Testprogramm geschrieben:

Quellcode:

#include <z8.h>

int main( int argc, char argv[])
{
    unsigned char i;
    volatile unsigned char bws = *(unsigned char *)0xfe00;

    asm( "call %08dd"); // cls
    for( i = 0; i < 32; i++)
    {
        bws = i;
        bws++;
    }
    return 0;
}



Das lässt sich fehlerfrei compilieren und die zugehörige .src-Datei sieht auch passabel aus.

Weiß jemand welche Schritte bzw. Anpassungen ich machen muss, damit es im Tiny2k läuft?
Der JTC-Emulator würde mir erstmal reichen.
Ich kann es z.B. ab Adresse %E000 in den RAM laden, aber wie wir es gestartet?

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
24.08.2021, 08:02 Uhr
PC-Opa



Hallo Bert,
Tiny2k hat ja nur Basic, Programm startet mit "+".
Tiny4k hat ja MP-Editor: "LE000"(von Band Laden auf E000), dann "PE000", dann "L"
--
Gruß Wolfgang

Dieser Beitrag wurde am 24.08.2021 um 08:43 Uhr von PC-Opa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
24.08.2021, 10:40 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Für den 2K (und generell) kannst Du ein Mini-Basic-Programm an den Anfang stellen, das dann dein MC-Programm startet

1 CALL%E020

Beispiel siehe FORTH-Quellcode.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
26.08.2021, 08:12 Uhr
Bert




Zitat:
volkerp schrieb
1 CALL%E020


Danke, das funktioniert. Ich habe noch ein '2 END' ergänzt und das Ganze im Startupcode integriert:

Quellcode:

    ; ju+te basic tokens
    ; to help start the program with '+' (RUN)
    DB $80, 1, 'C%E010', $0d
    DB $80, 2, 'E', $0d
    BLKB 3, 0



Was mich echt Nerven gekostet hat, war der Zugriff auf den Bildspeicher über Pointer:

Quellcode:

#define BWS_ADDR     *(far unsigned char volatile *)0xFE00

int main( int argc, char argv[])
{
    unsigned char i;
    unsigned int addr;

    // clear screen
    asm( "call %08dd"); // das geht

    BWS_ADDR = 0x55; // das geht

    addr = 0xfe00;
    for( i = 0; i < 32; i++)
    {
        *(volatile far unsigned char *)(addr) = i; // das geht jetzt auch, das far ist wichtig
        addr++;
    }
    return 0;
}


Mal sehen, ob ich die Variante über Array hinbekomme (z.B. unsigned char bws[512]).
Außerdem muß ich noch rausfinden, wie ich dem Compiler verbiete, auf den Registergruppen %50-%5F und %60-%6F eigne Variablen abzuspeichern.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
28.08.2021, 12:31 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Kannst du mir bitte Deine Quellen etc. geben?
Ich hänge an folgenden Stellen fest:

- Wie erstellt man eigenen Startupcode?
- Wie compiliert/linkt man das Ganze?
- Was muss man tun, damit printf funktioniert?
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
28.08.2021, 13:03 Uhr
Steffen H.

Avatar von Steffen H.

Hallo Volker,

hier kannst Du Dir ein Bsp-Projekt für den Z8 runter laden.
Da müsste alles soweit drin stehen.
Bei dem Start Up Code gibt es eine Vorlage in dem system Ordner. startup_ub88xx_s.asm
printf habe ich nie benutzt, aber man muss die entsprechende lib dazu linken:

crtll.lib für large
crtls.lib für small

Einstellungen macht man im z8cc.con, was im dem Ordner stehen muss, wo der Compiler aufgerufen wird. Bei mir im Debug Ordner. Das *.cmdlnk nicht zu vergessen,
Z8_Projekte.zip

Viele Grüsse,
Steffen
--
* Occultatum Libera *
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
28.08.2021, 13:09 Uhr
Steffen H.

Avatar von Steffen H.


Zitat:
Bert schrieb

Zitat:
volkerp schrieb
1 CALL%E020


Danke, das funktioniert. Ich habe noch ein '2 END' ergänzt und das Ganze im Startupcode integriert:

Quellcode:

    ; ju+te basic tokens
    ; to help start the program with '+' (RUN)
    DB $80, 1, 'C%E010', $0d
    DB $80, 2, 'E', $0d
    BLKB 3, 0



Was mich echt Nerven gekostet hat, war der Zugriff auf den Bildspeicher über Pointer:

Quellcode:

#define BWS_ADDR     *(far unsigned char volatile *)0xFE00

int main( int argc, char argv[])
{
    unsigned char i;
    unsigned int addr;

    // clear screen
    asm( "call %08dd"); // das geht

    BWS_ADDR = 0x55; // das geht

    addr = 0xfe00;
    for( i = 0; i < 32; i++)
    {
        *(volatile far unsigned char *)(addr) = i; // das geht jetzt auch, das far ist wichtig
        addr++;
    }
    return 0;
}


Mal sehen, ob ich die Variante über Array hinbekomme (z.B. unsigned char bws[512]).
Außerdem muß ich noch rausfinden, wie ich dem Compiler verbiete, auf den Registergruppen %50-%5F und %60-%6F eigne Variablen abzuspeichern.

Grüße,
Bert




Das geht leider nicht. Man kann aber Einen Bereich vorgeben, wo Registerwerte rein sollen:

Muss ins Linkerscript File:
RANGE RDATA $10 : $4f, $70 : $8F // Die Werte sind nur mal so angenommen
Der Compiler setzt nun alles Registerwerte nur in diesen Bereich.
--
* Occultatum Libera *
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
28.08.2021, 14:47 Uhr
Bert



@Volker, das ist alles gerade erst im Entstehen.
Aber hier mal das, was ich bisher habe:

Das Makefile

Quellcode:

# Makefile
PREFIX=WINEARCH=win32 WINEPREFIX=~/.wine32 wine ~/.wine32/drive_c/Z8/bin/

CC=$(PREFIX)z8cc.exe
LINK=$(PREFIX)z8link.exe
ASM=$(PREFIX)z8asm.exe

all: main.ihx

main.obj: main.c
     $(CC) -model=S "main.c"

main.ihx: main.obj startup.obj
    $(LINK) -color @main.lnk

startup.obj: startup.asm
    $(ASM) startup.asm



Der Startup-Code ist wahrscheinlich noch unvollständig, da ich nicht die initialisierten Variablen umkopiere. Außer dem Vorspann passiert da nix:

Quellcode:

    ; startup.asm
    XDEF  _c_startup
    XREF  _main:ROM
  
    segment CODE
_c_startup:

    ; Tiny-Basic-Token
    ; to help start the program with '+' (RUN)
    DB $80, 1, 'C%E010', $0d
    DB $80, 2, 'E', $0d
    BLKB 3, 0

    CALL  _main
    RET
  
    END _c_startup



Das Linkerskript ist auf die Adressen vom tiny2k eingestellt:

Quellcode:

-format = INTEL

"main" = "startup","C:\Z8\rtl\crtls.lib","C:\Z8\rtl\fpdumys.obj","main.obj"
ORDER FAR_DATA,TEXT
CHANGE TEXT = FAR_DATA
RANGE ROM $e000 : $e3ff
RANGE XDATA $fd80 : $fdff
RANGE RDATA $20 : $4f
COPY NEAR_DATA ROM
COPY FAR_DATA ROM
define _low_near_romdata = copy base of NEAR_DATA
define _low_neardata = base of NEAR_DATA
define _len_neardata = length of NEAR_DATA
define _low_far_romdata = copy base of FAR_DATA
define _low_fardata = base of FAR_DATA
define _len_fardata = length of FAR_DATA
define _low_nearbss = base of NEAR_BSS
define _len_nearbss = length of NEAR_BSS
define _low_farbss = base of FAR_BSS
define _len_farbss = length of FAR_BSS
define _far_heaptop = top of XDATA
define _far_stack = highaddr of XDATA
define _near_stack = highaddr of RDATA
define _far_heapbot = base of XDATA + length of FAR_BSS + length of FAR_DATA



Und dann noch ein kleines Hello-World:

Quellcode:

#include <z8.h>
#include <stdio.h>

/*
* near -> rdata = register file
* far  -> edata = external memory
*/

// no inttype.h, no stdint.h
typedef   signed char  int8_t;
typedef unsigned char  uint8_t;
typedef   signed short int16_t;
typedef unsigned short uint16_t;

#define TINY_CHR (*(unsigned char near volatile *)0x5a)
#define TINY_POS (*(unsigned char near volatile *)0x5b)

void clear_screen( void)
{
    asm( "call %08dd"); // cls, geht
}

void cursor_home( void)
{
    TINY_POS = 0;
}

void putc( char c)
{
    TINY_CHR = c;
    asm( "call %0827"); // cbs
}

int puts( char near *s)
{
    while( *s)
    {
        putc( *s);
        s++;
    }
}

char key( void)
{
    asm( "call %0c1b"); // tsk
    return TINY_CHR;
}

char digit2hex( uint8_t digit)
{
    char result;

    result = digit < 10 ? '0' : 'A' - 10;
    result += digit;
    return result;
}

void main( void)
{
    far uint8_t * bws = (far uint8_t *) 0xFE00;
    uint8_t dat;

    char str[] = "HALLO JU+TE";

    clear_screen();
    puts( str);

    dat = key();
    putc( digit2hex(dat >> 4));
    putc( digit2hex(dat & 0xF));
    dat = key();
}



Die fertige ihx-Datei läßt sich direkt im neuesten JTCEMU laden und mit '+' starten.
Bis zum printf bin ich noch nicht gekommen, ich weiß auch noch nicht, ob ich es verwenden will. Je nach Implementierung braucht printf zwischen 2 bis 8 kByte. Das ist auf einem aktuellen STM32 mit 128k Flash natürlich kein Problem. Hier ggf. schon.

@Steffen: Vielen Dank für den Z8CC und die Beispielcodes für das UB88xx-Testboard.
Da habe ich mir auch Inspirationen geholt.

Viele Grüße,
Bert

@P.S.: Das wäre eigentlich auch gleich eine gute Übung für github...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
28.08.2021, 15:28 Uhr
Bert



Die Dateien sind jetzt hier zu finden:
https://github.com/boert/JU-TE-Beispiele

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

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