Z80-Programme im C128-Modus (nicht CP/M) möglich?

Es gibt 176 Antworten in diesem Thema, welches 32.843 mal aufgerufen wurde. Der letzte Beitrag (9. Januar 2023 um 23:24) ist von Mike.

  • Das "128 intern" meint dazu:

    Zitat von 128 intern

    Wozu aber dient nun das Z-80-ROM, werden Sie sich berechtigterweise fragen. Nun, ganz einfach. Es dient in erster Linie dem Laden und Starten der notwendigen CP/M-Dateien. Ferner befinden sich sämtliche Bildschirmroutinen in diesem ROM, sowohl für den 40- als auch für den 80-Zeichen-Bildschirm. Hierauf greif[en] das BIOS und das BDOS sicherlich zurück, da nicht alle Routinen tatsächlich innerhalb des ROMs genutzt werden. Alle Systemmeldungen, die Sie während des Bootens von CP/M auf dem Bildschirm erhalten, erfolgen aus diesem ROM. Verfallen Sie aber bitte nicht dem Irrtum, daß das gesamte CP/M oder auch nur ganze Teile von CP/M sich in diesem ROM befinden; es handelt sich hierbei lediglich um extrem systemspezifische Routinen.

    Also, Z-80-ROM. So wie Unseen geschrieben hat. :)

  • Was ich nie verstanden habe, ist, warum die 8502 nach der Aktivierung erneut prüft ob einer C64-modul angeschlossen ist und gegebenenfalls den C64-Modus aktiviert.

  • Gefunden in "Bitte melde dich an, um diesen Link zu sehen." auf Seite 157:

    So, ich habe jetzt den C128 zurechtgebogen! :D

    Der Bildschirm für den Z80 liegt nun bei $3000 statt $0400. Auf die Schnelle habe ich das nach dem Beispiel in dem Buch einfach im Testprogramm mit BASIC-POKEs hingekleistert. Soll ja erstmal nur funktionieren. :)

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Und damit klappt es sowohl mit VICE als auch auf dem echten C128!

    Bitte melde dich an, um diesen Anhang zu sehen.

    :thumbsup:

    Das Testprogramm von goloMAK für den 8502 (5 x den Code aufrufen) benötigt auf dem C128 handgestoppt 9,1 Sekunden. :thumbup:

    Das obige Z80-Testprogramm braucht auf dem C128, ebenfalls handgestoppt, 17,7 Sekunden. :wurm:

    Da ich jetzt das mit dem Bildschirmspeicher weiß, kann ich mich ans Optimieren des Z80-Codes machen. "Mühsam ernähert sich das Eichhörnchen" oder so, aber Schritt für Schritt komme ich weiter und lerne dabei auch Einiges. So macht mir das Hobby Spaß! :)

  • Also ist folgendes zu machen:

    Den Text Bildschirm des VIC verschieben das er außerhalb des Bereichs liegt, der vom Z80 ROM verdeckt wird.

    Da war ich wohl zu langsam.
    In der REM Zeile steht noch die falsche Adresse.

  • Ach deswegen dauert der Start eines 128ers so lange - der Z80 kommt nicht ausm Knick :D

    Das hängt aber auch davon ab, wie schnell die Kurbel gedreht wird :D

    Bitte melde dich an, um diesen Anhang zu sehen.

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Also, bei den Themen "Z80" und "Speicher füllen" käme mir als erstes der LDIR-Befehl in den Sinn.

    Den habe ich mal u.a. nach Bitte melde dich an, um diesen Link zu sehen. verwendet:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Damit komme ich nun handgestoppt auf ca. 14,5 Sekunden. :)

    Mal schauen, was noch geht ... gab ja noch ein Tipps hier. :loet

  • Ich habe das untere Z80-Beispiel von Bitte melde dich an, um diesen Link zu sehen. mit dem Stack für das Bildschirmfüllen angepasst:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Das braucht - wiederum handgestoppt - 8,3 Sekunden. :hexhex:

    Dem gegenüber stehen noch Bitte melde dich an, um diesen Link zu sehen. vom 8502-Beispiel.

    Recht viel mehr wird hier jetzt wohl nicht mehr rauszuholen sein. Macht aber Spass! :)

  • Es scheint unter den Tisch gefallen zu sein, aber der 6502-Klassiker um den Bildschirm zu füllen wäre dieser:

    Code
    *=$8000
                lda #83
                ldy #250
    jp0         sta $0400-1,y
                sta $0400+250-1,y
                sta $0400+500-1,y
                sta $0400+750-1,y
                dey
                bne jp0
                rts

    Macht aber mit 2,4% weniger Zeit den Braten nicht fett :).

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Es scheint unter den Tisch gefallen zu sein, aber der 6502-Klassiker um den Bildschirm zu füllen wäre dieser:

    Code
    *=$8000
                lda #83
                ldy #250
    jp0         sta $0400-1,y
                sta $0400+250-1,y
                sta $0400+500-1,y
                sta $0400+750-1,y
                dey
                bne jp0
                rts

    Macht aber den Braten nicht fett :).

    Das müsste im Prinzip Bitte melde dich an, um diesen Link zu sehen., mit dem ich die 9,1 Sekunden gestoppt habe? Oder habe ich was übersehen? :gruebel

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Der schreibt unnötigerweise 1024 Werte, meiner nur 1000.

    ────────────────────────────────────────────────────────────
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    ────────────────────────────────────────────────────────────

  • Mit seinen 16-Bit Registern kann der Z80 beim Füllen seine Muskeln spielen lassen, in Takte gerechnet ist der Z80 hier schneller als der 6502.

    10 Takte -> POP HL

    13 Takte -> DJNZ

    Schleife

    23*500/2 MHz = 5750 Takte

    25*250/1 MHz = 6250 Takte

    Speedcode

    10*500 = 2500 Takte

    4*1000 = 4000 Takte

    Es ist praktisch unmöglich, ein schnelles Programm zu schreiben, wenn man es in Basic programmiert.

  • Doch der 8502 hat noch einen weiteren Trick in petto: 2 MHz im Border. Bei einem erwarteten Geschwindigkeitszuwachs von 30% sollte die Sache geschlichtet sein.

  • Der schreibt unnötigerweise 1024 Werte, meiner nur 1000.

    N'und? Meine Variante ist dafür schöner!! Da schaut man gerne noch ein paar Taktzyklen länger hin!! *grummel*

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

    Einmal editiert, zuletzt von goloMAK (9. Januar 2023 um 18:15)