Discussion:
Freier Maschinensprachemonitor (ROM) für C64?
Add Reply
Peter Heitzer
2019-07-08 08:57:48 UTC
Antworten
Permalink
Als ich gestern den C64, den ich vor Jahren auf dem Flohmarkt erstand, erstmals
in Betrieb nahm, war ich vom eingebauten BASIC etwas enttäuscht.
Keine Eingabemöglichkeiten für hexadezimale Adressen und Daten. Das war beim
Oric-1 deutlich komfortabler. Der kannte sogar 16-bittiges PEEK and POKE
(DEEK und DOKE).
Deshalb mal eine Frage in die Runde:
Ich suche einen freien Maschinensprachemonitor, der ROM-fähig ist.
Floppy ist keine vorhanden und auch nicht benötigt. Ich wollte das Monitor-ROM
zusammen mit etwas batteriegepuffertem RAM auf eine selbstgebaute Steckkarte
integrieren.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Kay Martinen
2019-07-08 12:03:33 UTC
Antworten
Permalink
Post by Peter Heitzer
Als ich gestern den C64, den ich vor Jahren auf dem Flohmarkt erstand, erstmals
in Betrieb nahm, war ich vom eingebauten BASIC etwas enttäuscht.
Nicht nur du. Das Basic V2 hatte nicht viel. Darum gab es Simons Basic
u.v.m. als Erweiterungen in Massen. Jede Zeitschrift die damals was auf
sich hielt brachte nachimplementierte Befehle raus. Und Checksummer u.a.
um das Eintippen ihrer Listings zu verbessern.
Post by Peter Heitzer
Keine Eingabemöglichkeiten für hexadezimale Adressen und Daten. Das war beim
Oric-1 deutlich komfortabler. Der kannte sogar 16-bittiges PEEK and POKE
(DEEK und DOKE).
Kommt mir bekannt vor. Also, als Erweiterter Befehl. Vom Oric weiß ich
da nix. Aber die Hex-Umwandlung machte man damals entweder selbst
programmiert oder auf anderem Wege.
Post by Peter Heitzer
Ich suche einen freien Maschinensprachemonitor, der ROM-fähig ist.
Warum hast du keinen C-128 genommen. Da ist einer fest eingebaut. IMHO
beim Starten RUN/STOP drücken und du landest direkt im Monitor.

Aber es gab sicher auch andere die man in ein Modul brennen konnte. Ist
zu lange her aber die 64'er Redaktion hatte auch einen Monitor raus
gebracht, nur ob es damit ging erinnere ich nicht. Sollte aber.

Vage erinnere ich mich an Input-ASS, ASM-64 oder ASS-64 und ... ???

Vielleicht mal in Richtung alte Publikationen des Markt & Technik
Verlages suchen.
Post by Peter Heitzer
Floppy ist keine vorhanden und auch nicht benötigt. Ich wollte das Monitor-ROM
zusammen mit etwas batteriegepuffertem RAM auf eine selbstgebaute Steckkarte
integrieren.
Und direkt beim Starten aktivieren lassen durch den Cartrige aufruf vom
64'er ROM?

So weit ich erinnere konnte die CPU eh nur relative Sprünge (+- nnn
Bytes) und die Kernel-aufrufe waren Fest. Heißt: Es sollte jedes
Maschinenprogramm an jede Freie Stelle im Adressbereich verschiebbar
sein können. So auch ein Monitor in einer Steckkarte.


Kay
--
Sent via SN (Eisfair-1)
Peter Heitzer
2019-07-08 12:48:01 UTC
Antworten
Permalink
Post by Kay Martinen
Post by Peter Heitzer
Als ich gestern den C64, den ich vor Jahren auf dem Flohmarkt erstand, erstmals
in Betrieb nahm, war ich vom eingebauten BASIC etwas enttäuscht.
Nicht nur du. Das Basic V2 hatte nicht viel. Darum gab es Simons Basic
u.v.m. als Erweiterungen in Massen. Jede Zeitschrift die damals was auf
sich hielt brachte nachimplementierte Befehle raus. Und Checksummer u.a.
um das Eintippen ihrer Listings zu verbessern.
Post by Peter Heitzer
Keine Eingabemöglichkeiten für hexadezimale Adressen und Daten. Das war beim
Oric-1 deutlich komfortabler. Der kannte sogar 16-bittiges PEEK and POKE
(DEEK und DOKE).
Kommt mir bekannt vor. Also, als Erweiterter Befehl. Vom Oric weiß ich
da nix. Aber die Hex-Umwandlung machte man damals entweder selbst
programmiert oder auf anderem Wege.
Post by Peter Heitzer
Ich suche einen freien Maschinensprachemonitor, der ROM-fähig ist.
Warum hast du keinen C-128 genommen. Da ist einer fest eingebaut. IMHO
Es war nur ein C64 angeboten. Bei 1 EUR Verkaufspreis war das Risiko recht
überschaubar.
Post by Kay Martinen
beim Starten RUN/STOP drücken und du landest direkt im Monitor.
Aber es gab sicher auch andere die man in ein Modul brennen konnte. Ist
zu lange her aber die 64'er Redaktion hatte auch einen Monitor raus
gebracht, nur ob es damit ging erinnere ich nicht. Sollte aber.
Vage erinnere ich mich an Input-ASS, ASM-64 oder ASS-64 und ... ???
Vielleicht mal in Richtung alte Publikationen des Markt & Technik
Verlages suchen.
Post by Peter Heitzer
Floppy ist keine vorhanden und auch nicht benötigt. Ich wollte das Monitor-ROM
zusammen mit etwas batteriegepuffertem RAM auf eine selbstgebaute Steckkarte
integrieren.
Und direkt beim Starten aktivieren lassen durch den Cartrige aufruf vom
64'er ROM?
So ähnlich. Ich könnte auch einen überflüssigen BASIC Befehl ersetzen.
Das ist möglich, wenn ich das BASIC-ROM ins RAM kopiere und dann an dieser
Stelle das ROM ausblende.
Post by Kay Martinen
So weit ich erinnere konnte die CPU eh nur relative Sprünge (+- nnn
Bytes) und die Kernel-aufrufe waren Fest. Heißt: Es sollte jedes
Maschinenprogramm an jede Freie Stelle im Adressbereich verschiebbar
sein können. So auch ein Monitor in einer Steckkarte.
Der 6502 kann selbstverständlich auch absolute Sprünge, nur nicht bedingt,
wie der Z80. Subroutine call gibt es auch nur absolut, d.h. wenn der Monitor für
eine bestimmte Adresslage geschrieben ist, sind die Adressen fest.
Wenn der Monitor als Quelltext vorliegt ist dies aber kein Problem.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Kay Martinen
2019-07-08 14:51:29 UTC
Antworten
Permalink
Post by Peter Heitzer
Post by Kay Martinen
Und direkt beim Starten aktivieren lassen durch den Cartrige aufruf vom
64'er ROM?
So ähnlich. Ich könnte auch einen überflüssigen BASIC Befehl ersetzen.
Das ist möglich, wenn ich das BASIC-ROM ins RAM kopiere und dann an dieser
Stelle das ROM ausblende.
Ich weiß. Dies Bankswitching (über den CPU Port) geht auch beim 128'er
nur dort per MMU erweitert.

Den Monitor mittels SYS starten wäre eine andere Methode.
Post by Peter Heitzer
Post by Kay Martinen
So weit ich erinnere konnte die CPU eh nur relative Sprünge (+- nnn
Bytes) und die Kernel-aufrufe waren Fest. Heißt: Es sollte jedes
Maschinenprogramm an jede Freie Stelle im Adressbereich verschiebbar
sein können. So auch ein Monitor in einer Steckkarte.
Der 6502 kann selbstverständlich auch absolute Sprünge, nur nicht bedingt,
Das meinte ich als ich von Festen Kernel-aufrufen sprach!
Post by Peter Heitzer
wie der Z80. Subroutine call gibt es auch nur absolut, d.h. wenn der Monitor für
eine bestimmte Adresslage geschrieben ist, sind die Adressen fest.
Okay. Aber wenn man den wirklich verschieben will kann man nach den
Opcodes suchen und die Adressen einmalig anpassen, z.b. indem man ihn im
RAM an die gewünschte Stelle kopiert und könnte dann mit einem Festen
Verschiebungswert alle Sprungadressen anpassen.

Danach muß man ihn; so denke ich mir; nur noch in ein (E)EPROM
befördern. Und evtl. eine Aufrufsequenz vorsetzen damit das ROM Ihn bei
der Suche nach Steckmodul-einsprüngen auch gleich findet.
Post by Peter Heitzer
Wenn der Monitor als Quelltext vorliegt ist dies aber kein Problem.
Dann sowieso.

Kay
--
Sent via SN (Eisfair-1)
Peter Heitzer
2019-07-08 14:55:43 UTC
Antworten
Permalink
Post by Kay Martinen
Post by Peter Heitzer
Post by Kay Martinen
Und direkt beim Starten aktivieren lassen durch den Cartrige aufruf vom
64'er ROM?
So ähnlich. Ich könnte auch einen überflüssigen BASIC Befehl ersetzen.
Das ist möglich, wenn ich das BASIC-ROM ins RAM kopiere und dann an dieser
Stelle das ROM ausblende.
Ich weiß. Dies Bankswitching (über den CPU Port) geht auch beim 128'er
nur dort per MMU erweitert.
Den Monitor mittels SYS starten wäre eine andere Methode.
Post by Peter Heitzer
Post by Kay Martinen
So weit ich erinnere konnte die CPU eh nur relative Sprünge (+- nnn
Bytes) und die Kernel-aufrufe waren Fest. Heißt: Es sollte jedes
Maschinenprogramm an jede Freie Stelle im Adressbereich verschiebbar
sein können. So auch ein Monitor in einer Steckkarte.
Der 6502 kann selbstverständlich auch absolute Sprünge, nur nicht bedingt,
Das meinte ich als ich von Festen Kernel-aufrufen sprach!
Post by Peter Heitzer
wie der Z80. Subroutine call gibt es auch nur absolut, d.h. wenn der Monitor für
eine bestimmte Adresslage geschrieben ist, sind die Adressen fest.
Okay. Aber wenn man den wirklich verschieben will kann man nach den
Opcodes suchen und die Adressen einmalig anpassen, z.b. indem man ihn im
RAM an die gewünschte Stelle kopiert und könnte dann mit einem Festen
Verschiebungswert alle Sprungadressen anpassen.
Danach muß man ihn; so denke ich mir; nur noch in ein (E)EPROM
befördern. Und evtl. eine Aufrufsequenz vorsetzen damit das ROM Ihn bei
der Suche nach Steckmodul-einsprüngen auch gleich findet.
Dank VICE, dem Commodore-Emulator kann ich sowas erst ein mal in Ruhe testen,
bevor ich das EPROM brenne.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Michael Pachta
2019-07-08 15:11:12 UTC
Antworten
Permalink
Post by Kay Martinen
Post by Peter Heitzer
Der 6502 kann selbstverständlich auch absolute Sprünge, nur nicht bedingt,
Das meinte ich als ich von Festen Kernel-aufrufen sprach!
Das verstehe ich nicht. Warum ist z.B. ein JMP $C000 ein "fester
Kernel-aufruf"? Bei $C000 ist kein Kernal, auch ist da nichts fest.
Kay Martinen
2019-07-08 19:39:41 UTC
Antworten
Permalink
Post by Michael Pachta
Post by Kay Martinen
Post by Peter Heitzer
Der 6502 kann selbstverständlich auch absolute Sprünge, nur nicht bedingt,
Das meinte ich als ich von Festen Kernel-aufrufen sprach!
Das verstehe ich nicht. Warum ist z.B. ein JMP $C000 ein "fester
Kernel-aufruf"? Bei $C000 ist kein Kernal, auch ist da nichts fest.
Kleiner Verbalausrutscher auf die Dunkle Seite der Macht ähh in die
PC-Welt. :-)

So weit ich erinnere liegen Kernal und BASIC ROMs im Oberen Bereich und
Einsprungadressen dort liegen auf Festen Adressen wenn man sie nutzt.
Und die Zweite Möglichkeit war IMHO über Sprungvektoren der Zeropage die
beim Start gesetzt wurden aber im RAM liegen. Und damit änderbar waren.
Aber vom Start weg zeigten die auch in ROM Bereiche - die wiederum an
Festen Adressen lagen.

Mit $C000 kamst du um die Ecke. Ich dachte eher an Adressen bei $FFFx
oder eben "ganz unten" bei $00xx

Aber wo und wie genau da sinnvolle Einsprünge waren hab ich auch nicht
mehr parat, nur das es welche gab. Zu lange her. Aber dafür gab's ja 64
Intern u.a. Literatur.

Kay
--
Sent via SN (Eisfair-1)
Michael van Elst
2019-07-09 17:48:25 UTC
Antworten
Permalink
Post by Kay Martinen
Okay. Aber wenn man den wirklich verschieben will kann man nach den
Opcodes suchen und die Adressen einmalig anpassen, z.b. indem man ihn im
RAM an die gewünschte Stelle kopiert und könnte dann mit einem Festen
Verschiebungswert alle Sprungadressen anpassen.
Es sei denn, es sind Sprungtabellen, vielleicht sogar getrennt nach
low und high byte der Zieladresse.
--
--
Michael van Elst
Internet: ***@serpens.de
"A potential Snark may lurk in every tree."
Peter Heitzer
2019-07-10 06:28:23 UTC
Antworten
Permalink
Post by Michael van Elst
Post by Kay Martinen
Okay. Aber wenn man den wirklich verschieben will kann man nach den
Opcodes suchen und die Adressen einmalig anpassen, z.b. indem man ihn im
RAM an die gewünschte Stelle kopiert und könnte dann mit einem Festen
Verschiebungswert alle Sprungadressen anpassen.
Es sei denn, es sind Sprungtabellen, vielleicht sogar getrennt nach
low und high byte der Zieladresse.
Manchmal hat man auch selbstmodifizierenden Code geschrieben. Solche Programme
sind dann nur im RAM lauffähig.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Andreas Kohlbach
2019-07-08 21:32:41 UTC
Antworten
Permalink
Post by Peter Heitzer
Ich suche einen freien Maschinensprachemonitor, der ROM-fähig ist.
Floppy ist keine vorhanden und auch nicht benötigt. Ich wollte das Monitor-ROM
zusammen mit etwas batteriegepuffertem RAM auf eine selbstgebaute Steckkarte
integrieren.
Ich hatte in den 1980ern mal einen alternatives ROM Chip in meinen C64
von einem Bekannten einbauen lassen, der unter anderen "moni4096" als
auch eine Turbolader für die 1541 Floppy hatte. Dazu ein Schalter an der
Rückseite, mit dem ich vor dem Start wählen konnte, ob das Stock-ROM oder
das modifizierte ROM laden wollte. Leider wurde das nach dem Verkauf
meines C64 verloren.

Falls Du an ein ähnliches Image kommst, bleibt IMO nur die Möglichkeit,
ein Eprom mit diesem Image zu brennen und das Original-ROM damit
auszutauschen.

Vielleicht wäre eine Alternative, dieses ROM via Floppy oder Kassette zu
laden, um danach einen Soft-Reset auszuführen. Aber das fällt bei Deinen
Anforderungen (keine Floppy) flach.
--
Andreas
You know you are a redneck if
you have a hefty bag for a convertible top.
Peter Heitzer
2019-07-09 11:10:42 UTC
Antworten
Permalink
Post by Andreas Kohlbach
Post by Peter Heitzer
Ich suche einen freien Maschinensprachemonitor, der ROM-fähig ist.
Floppy ist keine vorhanden und auch nicht benötigt. Ich wollte das Monitor-ROM
zusammen mit etwas batteriegepuffertem RAM auf eine selbstgebaute Steckkarte
integrieren.
Ich hatte in den 1980ern mal einen alternatives ROM Chip in meinen C64
von einem Bekannten einbauen lassen, der unter anderen "moni4096" als
auch eine Turbolader für die 1541 Floppy hatte. Dazu ein Schalter an der
Rückseite, mit dem ich vor dem Start wählen konnte, ob das Stock-ROM oder
das modifizierte ROM laden wollte. Leider wurde das nach dem Verkauf
meines C64 verloren.
Falls Du an ein ähnliches Image kommst, bleibt IMO nur die Möglichkeit,
ein Eprom mit diesem Image zu brennen und das Original-ROM damit
auszutauschen.
Vielleicht wäre eine Alternative, dieses ROM via Floppy oder Kassette zu
laden, um danach einen Soft-Reset auszuführen. Aber das fällt bei Deinen
Anforderungen (keine Floppy) flach.
Ich habe mittlerweile schon ein paar Monitore (nach einem Linkhinweis auf
https://www.c64-wiki.de/wiki/SMON) gefunden. Einer davon GPL mit Quelle.
Der dürfte am einfachsten ROM-fähig zu machen sein.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Loading...