Hallo Besucher, der Thread wurde 27k mal aufgerufen und enthält 167 Antworten

letzter Beitrag von olly am

CP/M Z80 Verständnisfrage

  • Sonderheft 22 ist für C128-Programmierer zum Z80-Prozessor recht aufschlussreich, da gibt es auch den passenden Double-Assembler dazu. Den hatte ich ausprobiert, fand ich ganz gut.
    Mir ist nur am Emu nicht ganz klar geworden, ob ich nun im Z80-Modus immer noch den VIC-II programmieren kann. Irgendwann kam da nur noch der berühmte Zeichensalat wie
    im 2-MHz-8502-Modus, ist wohl so. Aber rastergesteuert ständig hin und herschalten für ein paar nette Befehle wie den Blockmove, mal sehen ? Die Schalterei kostet ja auch einiges.

  • Was für einen Interrupt meinst Du denn genau? Der VBI ist mit aktivem 80-Zeichen-VDC ist ja nicht existent. Aber auch einen VBI mit aktivem 40-Zeichen-VIC-II, wenn unter Z80 überhaupt möglich, wird es wohl nicht geben. Aber die beiden CIA-Timer sind natürlich nutzbar, nur so bekommt man ja überhaupt eine Bildschirmsynchronisation via VDC hin.
    Der Z80-Experte bin ich aber beileibe noch nicht, das kann sich ändern...Bücher liegen bereit.

  • Kannst Du auf z80 Seite denn einen Interrupt auslösen? Das wäre ne tolle Sache. Zumindest beim c64 mit z80 Modul scheint das nämlich nicht zu gehen.

    Da der IO-Bereich in dem die Interrupt-CIA liegen vom Z80 aus erreichbar sind, sollte das möglich sein. Der VIC liegt ja auch dort und ist benutzbar. Soweit ich mir erlesen habe etwas umständlich zu erreichen da dieser Bereich von $D000 bis $DFFF vom Z80 aus nicht direkt ansprechbar ist.(Programmierung über in & out Standardbefehle) aber möglich.

  • Ja, aber ist der IRQ Eingang vom z80 denn angeschlossen?

    Ist er. Es besteht eine Verbindung zwischen dem IRQ-Signal welches direkt von der IRQ-CIA1 (pin21) kommt und an den Z80 INT-Eingang (pin16) und den IRQ-Eingang der 8502 CPU (pin3) geht. Sieht man auch auf dem Stromlaufplan. Laut c128 Bibel ist eine Unterbrechungsanforderung am Z80 akiv, wenn das Eingangssignal logisch 0 ist und es wird von externen Bausteinen gesteuert. Der Z80 hat auch einen NMI-Eingang, der ebenfalls genutzt wird. Der Z80 kann unmittelbar auf den 6526 Chip zugreifen.

  • Kannst Du auf z80 Seite denn einen Interrupt auslösen? Das wäre ne tolle Sache. Zumindest beim c64 mit z80 Modul scheint das nämlich nicht zu gehen.

    Bei derr "alten" C64 Z80 Karte sind IRQ und NMI am Z80 mit einem Pullup festgelegt. Das hat ja auch einen guten Grund:
    Da ja bei zeitgesteuerten Interrupts nicht voraussagbar ist, welche CPU gerade aktiv ist und damit dann angetriggert wird, müssten ja beide eine passende Routine zur Behandlung bereithalten.

  • Echtes Multitasking ginge dann wohl nur mit der alten Z80 Karten im C64 ? Sozusagen Dual-Core .... Im C128 ist es definitviv nur entweder/oder, bestenfalls Timesclicing oder wie der Fachbegriff heißt, das kann man aber einem einzigen 6510 auch schon beibringen, wenn man wollte. Halt eine Frage des Betriebssystems, gibt es aber sicher schon.

  • Echtes Multitasking ginge dann wohl nur mit der alten Z80 Karten im C64 ? Sozusagen Dual-Core ....

    Auch das Commodore-CP/M-Modul für den C64 schaltet den 6510 aus während der Z80 läuft.

  • Hört sich interessant an das Thema.


    Ich spiele mit 69 Jahren mit dem dem WINVICE und CP/M
    Das CP/M ist wunderbar dort drauf, kenne ich noch aus den siebzigern.


    Es gibt speziell Grafikroutinen für den VDI von Hi-tech-c.
    Ich spiele mit Hi-Tech-C und habe das CP/M teilweise auf der REU : ZPM-REU.D71 heisst die Disk.
    Spiele im 80Zeichen-Modus.
    Man kann mit dem VDI (64kb) Grafiken zb auf mehre unsichtbare Seiten schreiben und dann umschalten.
    Kann mit meinen Programm Bilder einlesen und abspeichern vom VDI. Kann mehrer Fonts laden und zwischen diesen Umschalten.
    Fonts können mit 16 Farben dargestellt werden
    Ich kann mich da richtig austoben.


    Ich kann Bilder auf die REU (16MB eingestellt beim WinVice) laden und wieder abrufen mit Hi-tech.c und Turbopascal 3.0A.


    Das Turbo Pascal 3.0A läuft auch wunderbar drauf mit seinen speziellen Befehlen für den VDI.
    Wordstar , Dbase usw...
    Für den C128 haben die Entwickler in den achzigern gute Arbeit geleistet.


    Für die Adressen D.... muss du den Befegl vom Z80 benutzen , ich glaube der heisst IN und OUT.



    Dieses läuft zb auch auf anderen Systemen in CP/M :


    Compiliert mit : pasmo.exe



    Zitat


    Ist die CP/M Variante für den 128er auch speziell nur auf dem C128 lauffähig? Ich vermute es, wegen der restlichen Hardware die ja mitgenutzt wird.

    Wenn es auch spezielle C128-Befehle benutzt , ja.


    So ist es auch beim Apple, CPC6128 und anderen CP/M Systemen.
    Man versucht aber im Rahmen der CP/M einheitlichen Befehle zu bleiben.
    Bloß da ist der Befehlsumfang winzig klein.




    Gruss

  • Hallo Spacer,
    das mit den Fotos und der Umschalterei in den 64KB vom VDC klingt sehr gut. Das Double-Buffering ist ein Muss, sehe ich genau so.
    Die anzeigeprogramme die ich bislang kenne gefallen mir noch nicht so. Damit will ich mich im Winter beschäftigen,
    wobei CP/M da vielleicht nicht mein Fokus ist, mal sehen. Klingt aber sehr interessant, was Du da machst. Vielleicht melde ich mich per
    PN wenn es soweit ist und die 64 KB im Plastik 128D eingelötet sind. Der Blech ist nicht so mein Fall und dem VICE128 traue ich nicht
    über den Weg nach meinen ersten Erfahrungen. Es sollte schon am Ende auf echter Hardware egal ob Blech oder Plastik laufen.
    Mark

  • War etwas schwierig mit der SH-disk, ich glaube über die 'Forum64-Wolke', ich kann dir der Einfachheit halber alle 128er SH Disks per Mail zusenden, ist ja alles sehr wenig Dateigröße. Ich habe mir das alles schon mal für den Winter hingelegt.


    Ach nee, Emuecke ist jetzt hier:
    http://www.idealine.info/emuec…htm?/emuecke/tools_64.htm


    Und die 'Woke' hier:


    https://my.hidrive.com/share/ustmm50kee#login


    Passwort geistert hier im Forum irgendwo öffentlich in einem speziellen Thread herum und wird regelmäßig aktualisiert, ich finde ihn bald:

  • Für dieses CP/M gibt es auch MBasic und einen Compiler.


    Dieses Hi-Tech-C ist eine durchsichtige Sache ohne Geheimnisse für dieses CP/M , genauso das Turbo-Pascal 3.0A.
    Man kommt überall dort hin im VDC.


    Diese Seite ist ein muss wenn man den VDC proggen möchte:
    https://www.c64-wiki.de/wiki/VDC


    Dieses Buch kann man auch als PDF laden bei Wolke, dort gibt es auch Seiten ausführlich über den VDC:
    Commodore128 Das Grosse Grafikbuch


    Ein C-Program oder Turbo Pascal Programm ist ein muss für den VDC.
    Mit dem normalen Basic vom C128 habe ich vor einigen jahren auch mal etwas entworfen für den VDC.
    Musste dann aber noch ein ASM-Programm einbinden für die Durchführung der VDC-Routinen.



    Die Speziellen Befehle für den VDC sind im Hi-Tech-C und Turbo-Pascal im Source-Code, also leicht zu erlernen was damit gemacht wird wenn man sie aufruft.
    Man kann die auch in ASM umsetzen, wenn man ASM beherrscht.


    Ich habe mal versucht von CP/M aus etwas auf den 40-Zeichen-Screen zu bringen, hat nicht so geklappt.
    Konnte zwar in den Grafikmodus umschalten mit Turbo-Pascal 3.0A und Hi-Tech-C , wusste dann aber nicht weiter.
    Hatte dann aber schon den SCreen gesehen mit den Textklötzchen.


    Vielleicht findet einer mal den Weg.
    Es geht aber nur mit Out und IN vom Z80 aus glaube ich.


    Gruss

  • 40-Zeichen-Bildschirm mit VIC-II funktioniert wahrscheinlich nicht mit dem schnellen Z80-Prozesser, geht ja auch nicht mit dem 8502 im 2-Mhz-Modus.
    Der VIC-II braucht den nativen C65-Takt, sonst kommt Zeichensalat wegen Datenbustimingproblemen. Per Rasterprogrammierung schwebt mir da ein Workaround vor.
    Aber ob es das performanceseitig wert ist, mal sehen.
    Zumindest auf VICE128 konnte ich das halbwegs bestätigen, aber wie gesagt ich traue dem nicht. Die Rasterei hat da ja auch Null funktioniert. Hast du die Möglichkeit in Echt zu testen ?
    Muss ich mal die vielen 128er Bücher die ich als PDF habe, bei Gelegenheit lesen, dann wird es sicher auch noch klarer.

  • Hmmm... soweit ich weiß läuft der 128er im 1MHz-Modus wenn der Z80 aktiv ist. Gut zu sehen während des Bootvorgangs, da werden die Anzeigen auf beiden Anzeigen gespiegelt. Außerdem kann man CP/M auch im 40-Zeichenmodus nutzen. Ist ne Qual und ein gutes Gedächtnis ist hilfreich (virtuell 80x25 auf real 40x25 mit horizontalem Scrolling), aber es geht.