Hello, Guest the thread was called436 times and contains 19 replays

last post from MC64 at the

speicherbereich der selten von spielen und anwendungen überschrieben wird (c64 und 128er mode)?

  • moin,

    ich nutze am c128 ein sd2iec. ich hab mir ein programm geschrieben das mir den umgang mit unterverzeichnissen und partitionen (1581) erleichtert.

    d.h. die umständliche befehlskette z.b. open1,x,15,"cd:.....":close 1 entfällt.

    im 128 mode ist das einfach. da mach ich mein programm bootfähig, das kopiert sich dann automatisch in die reu.

    so das ich aus meinem programm heraus ein programm von disk laden und starten kann. nach einem reset ist mein programm dann immer noch in der reu.

    ich würd das ganze gerne über ein sys befehl lösen. die frage ist welcher speicherbereich wird selten bis gar nicht von anderen programmen überschrieben ?

    kommt der kassettenpuffer in frage ? oder $c000 (im 64er mode) ?

  • hmmm. ok, danke. dachte mir schon dass das schwierig bis unmöglich wird. den kernal wollt ich nicht modifiizieren.

    soll alles nach möglichkeit so original wie möglich bleiben. als modul ist so auch keine lösung weil ja die reu raus müßte.

    würde eventuell über den rom sockel gehen, den meine aber nicht hat.

  • Der Bereich von $0AA0 - $0AFF wird im C128 Mode nicht genutzt. Ebenso der Bereich von $FF40 - $FFFF in Bank 0 und in Bank 1 wird da der Resetfeste Sprung abgelegt. Wenn du hier die Zeiger Verbiegst, wird dein Programm Resetfest.

    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.


    Alt werden ist schön, das Altern nicht.

  • das ist eine gute idee. würde das auch vom c64 mode aus funktionieren ?

    letztendlich wäre die routine recht kurz.

    Im C64-Modus kann man nicht auf U36 zugreifen, aber man kann das Problem anders herum lösen: Im 128er-Modus ein U36-Programm starten, welches sich ins RAM kopiert, dann den C64-Modus anspringt und anschließend dort weiterläuft.


    Der Bereich von $0AA0 - $0AFF wird im C128 Mode nicht genutzt. Ebenso der Bereich von $FF40 - $FFFF

    Teste sowas doch mal, bevor Du es ins Forum schreibst (kleiner Tip: es ist mal wieder falsch).

  • Im C64-Modus kann man nicht auf U36 zugreifen

    Springt der 128 bei einem Reset nicht sowieso in den 128-Mode? Der bleibt doch nicht im 64-Mode, oder?

    Wäre also sowieso wohl die sinnvollste Variante - oder ein CBM80-Cartridge, das sich selbst ausblenden kann (UniPROM o. ä.).

  • Im C64-Modus kann man nicht auf U36 zugreifen

    Springt der 128 bei einem Reset nicht sowieso in den 128-Mode? Der bleibt doch nicht im 64-Mode, oder?

    Wäre also sowieso wohl die sinnvollste Variante - oder ein CBM80-Cartridge, das sich selbst ausblenden kann (UniPROM o. ä.).

    Ja, tut er, aber es gibt möglichkeiten das zu verhindern.


    Ein 3,3µF Elko zwischen Game und Masse am Expansion-Port.


    Über eine Route z.B. Tatenkombination in den Resetstart zu Springen.


    Dann hab ich gelesen (weiß nicht mehr wo aber in einer 64er) einen Befehlscode im 128er Modus Eingeben, dann kommt er nach einem Sprung in 64er Modus da nicht mehr raus. Ich hab das selbst ausprobiert, nur Ausschalten oder mit Poke den Code zerstören hilft.

    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.


    Alt werden ist schön, das Altern nicht.

  • Ja, tut er, aber es gibt möglichkeiten das zu verhindern.


    Ein 3,3µF Elko zwischen Game und Masse am Expansion-Port.

    Das funktioniert aber nur beim ersten Einschalten, oder? Weil wenn das C mal geladen ist, nützt es nichts mehr, und wer entlädt es? /GAME hängt nur an MMU und PLA, und ich vermute, dass das beides Mal ein Eingang ist. Funktioniert das wirklich auch bei einem Reset?

  • Dann hab ich gelesen (weiß nicht mehr wo aber in einer 64er) einen Befehlscode im 128er Modus Eingeben, dann kommt er nach einem Sprung in 64er Modus da nicht mehr raus.

    Ja, wenn ab $8004 'CBM80' im Speicher steht. Dann wird der Reset Vektor der in $8000/$8001 hinterlegt ist ausgeführt.

    Mit Poke 32772,0 hat der Spuk dann wieder ein ende.

  • Ja, wenn ab $8004 'CBM80' im Speicher steht. Dann wird der Reset Vektor der in $8000/$8001 hinterlegt ist ausgeführt.

    Mit Poke 32772,0 hat der Spuk dann wieder ein ende.

    Das funktioniert aber nur, wenn man schon im 64-Mode ist, oder?

    Außerdem hat man dann immer "30719 BYTES FREE" (statt 38911).

  • Ja, tut er, aber es gibt möglichkeiten das zu verhindern.


    Ein 3,3µF Elko zwischen Game und Masse am Expansion-Port.

    Das funktioniert aber nur beim ersten Einschalten, oder? Weil wenn das C mal geladen ist, nützt es nichts mehr, und wer entlädt es? /GAME hängt nur an MMU und PLA, und ich vermute, dass das beides Mal ein Eingang ist. Funktioniert das wirklich auch bei einem Reset?

    Doch das Funkioniert immer, das wurde in einer 64er mal erklärt. Der C wird nur beim Reset kurz aufgeladen und bei der abfrage wieder gelöscht oder so ähnlich.

    Dann hab ich gelesen (weiß nicht mehr wo aber in einer 64er) einen Befehlscode im 128er Modus Eingeben, dann kommt er nach einem Sprung in 64er Modus da nicht mehr raus.

    Ja, wenn ab $8004 'CBM80' im Speicher steht. Dann wird der Reset Vektor der in $8000/$8001 hinterlegt ist ausgeführt.

    Mit Poke 32772,0 hat der Spuk dann wieder ein ende.

    Der Poke wird nicht reichen, weil du dann auf Bank0 zugreifst. Wir reden schließlich vom C128. Mein Tip zielt darauf den Resetzeiger zu benutzen um Direkt in den C64 Modus zu springen. Die Adressen hab ich jetzt nicht im Kopf, aber die vom C64 funktionieren da nicht , weil da ist nur Basic Speicher.

    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.


    Alt werden ist schön, das Altern nicht.

  • ihr schießt ein wenig übers ziel hinaus, aber danke das ihr euch so einen kopf macht. am expansionport rumlöten kommt gar nicht in die tüte. zumal da eine 1mb reu drin ist. kann mir nicht vorstellen, das sich das nicht beißt.

    die lösung von kinzi mit dem tapecart ist die beste, da es die kompatibelste ist. ziel ist es, das es auch an normalen 64ern funktioniert. mein programm kann ich in der reu ja

    quasi resetfest machen. ich brauch bloss eine kleine routine die das zurück kopiert. kann man natürlich manuell machen. aber wer hat da immer die ganzen pokes im kopf.


    am 128er ist das problem einfach zu lösen über autoboot. letzteres lädt mir eine kleine routine die ich entweder mit sys xx.xxx starte oder mir die entsprechenden befehle

    auf eine f-taste legt und fertig.

  • am expansionport rumlöten kommt gar nicht in die tüte. zumal da eine 1mb reu drin ist. kann mir nicht vorstellen, das sich das nicht beißt.

    In einer Original-REU ist ein unbestückter Platz für ein EPROM, welches als externes Function-ROM vom C128 eingebunden wird. An einem C64 ist der Sockel IIRC leider nicht nutzbar.

  • das weiß ich. den hab ich noch mal gestreichelt als ich den rec in eine lebende reu transplantiert hab. den clone den ich jetzt hab, hat diesen sockel nicht mehr.

    mit u36 im 128er werd ich mir noch mal genauer ansehen. aber für ein paar bytes werd ich den sockel nicht bestücken, wenn dann muss da ein bischen mehr rein.

    ein maustreiber z.b. oder mal gucken was mir sonst noch so einfällt.