Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » KC87 Kombimodul - Speicher mit OneRom » Themenansicht

Autor Thread - Seiten: -1-
000
12.08.2026, 09:34 Uhr
DL
Default Group and Edit


In einem anderen Beitrag ( https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=23931 ) hatte ich ja schon mal erfolglos versucht einen Austausch zur Verwendung von One Rom in einer ROM-Bank anzuregen. Es gab/gibt ja immer mal Bemühungen um den ROM im Kombimodul, da bietet sich der One ROM Fire 32 eigentlich auch dafür an. Man kann darin drei ROMs a 512K als 27C040 unterbringen, also theoretisch 1,5Mb. Bisher funktionierte das allerdings etwas umständlich nur über die Jumper und einen anschließenden Neustart des One Rom. Seit der Firmware V0.7.1 läuft nun das ROM Bus Control Protocol (RBCP) auch publik mit dem Fire 32 und über den neuen One Rom Builder auf der One ROM Web Oberfläche kann man sich seine ROM-Slots nun einfach selbst zusammen stellen.
Die drei Slots lassen sich nun über Software live "umschalten" ohne den Chip rücksetzen zu müssen. Entweder integriert man ein Programm dafür mit in die Banksuche oder hinterlegt es in der Systembank, die ja auf jedem ROM vorhanden sein muss. Falls doch mal Interesse aufkommen sollte kann ich ein kleines Programm dafür zur Verfügung stellen oder die KC87 Spezialisten tun das.



Der überarbeitete Quellcode (109 bytes):

Quellcode:

.z80
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ; OneRom Fire32 Slot - Switch über RBCP für Kombimodul im KC87 / Z9001
    ; Aufruf SLOT Leerzeichen Slotnummer (0 - 2)
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    RAMad equ 300h               ;Programmadresse im RAM
    bank equ 0c000h              ;ROM Bank Adresse
    
    org RAMad - 32
header:
    db 0fah, 0fah                ; + 0 Kennbytes
    db 0                         ; + 2 0 - MC, 1 - BASIC (s. includes.asm)
    db "SLOT "                   ; + 3 genau 8 Zeichen
    dw slot                      ; + 11 Anfangsadresse im RAM
    dw endslot                   ; + 13 Endadresse im RAM
    dw slot                      ; + 15 Startadresse im RAM (oder FFFFh - nichtstartend)
    dw endslot - slot            ; + 17 (Datei - )Länge des nachfolgenden Programms
    db 0                         ; + 19 Standard 0 (s. includes.asm)
    db "Slot switch "            ; + 20 12 Zeichen, bel., z.B. Autor o.ä.
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    org RAMad
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
slot:
inkey:                            ; letze Eingabe holen, die slotnummer
    ld hl, 0081h                 ; H = 00h, L = 81h
    ld a, (hl)                   ; Holt den Wert aus 81h in Akkumulator A
    add a, l                     ; Addiert 81h (aus Register L) zum Wert dazu
    ld l, a                      ; Setzt die neue berechnete Zieladresse in L ein
    ld a, (hl)                   ; Lädt den endgültigen Wert aus der Adresse (HL)
    cp 30h
    ret c                        ;zu klein
    cp 33h
    ret nc                       ;zu groß
    and 3                        ;uns interessiert nur 0 - 3
    ld h, hi(bank)               ;obere Bankadresse laden
    ld l, a                      ;slot hinzu
    xor a                        ;Bank 0
    out (75h), a                 ;setzen
    di
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
reset:                        ;rbcp reset sequenz
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld b, 14                     ;Kurzversion vom Reset
res1: ld a, (bank + 0aah)
    djnz res1
    call pause
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
knock:                        ;die rbcp Knock sequenz
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld a, (bank + '!')
    ld a, (bank + 'R')
    ld a, (bank + 'B')
    ld a, (bank + 'C')
    ld a, (bank + 'P')
    ld a, (bank + '!')
    call pause
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
selslot:                      ;Auswahl des aktiven flash slot nr in hl
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld a, (bank + 02h)           ;Gruppe 2
    ld a, (bank + 02h)           ;load slot aus rom in ram
    ld a, (bank + 00h)           ;ramslot
    ld a, (hl)                   ;romslot aus eingabe
    call pause
fin:ei
    ret                          ;...
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pause:                        ;Päuschen, muß auch sein
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld bc, 0520h                 ; ca 20 ms evtl. opimieren?
pa4:
    dec c
    jr nz, pa4
    djnz pa4
    ret
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
endslot:
    .end


Dieser Beitrag wurde am 13.08.2026 um 13:06 Uhr von DL editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
12.08.2026, 14:20 Uhr
Klaus



Hallo Detlef,

ich hatte das in dem anderen Thread schon mal kurz gesehen, hat mich aber dann doch etwas überfordert. Will sagen, habe den Programmcode nicht verstanden.
Aktuell mache ich allerdings nichts mit dem KC87.

Nur mal aus Interesse .... Wie läuft das mit der live Umschaltung per Software?
Diese muss ja dann sicher irgendwo speziell für den Zielrechner untergebracht werden. Ist die dann in einem der ROMs, oder muss die in das OneROM System?

Viele Grüße,
Klaus
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
Heute, 12:10 Uhr
DL
Default Group and Edit



Zitat:
Klaus schrieb
Nur mal aus Interesse .... Wie läuft das mit der live Umschaltung per Software?
Diese muss ja dann sicher irgendwo speziell für den Zielrechner untergebracht werden. Ist die dann in einem der ROMs, oder muss die in das OneROM System?



Wie im anderen Beitrag schon erwähnt muss das Programm außerhalb des ROMs laufen um ihn anzusprechen, damit er nicht seine eigene Adressdaten liest. Unterbringen kann man das im ROM, muss es dann eben umladen zum ausführen.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

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