Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » KC87 Kombimodul - 1,5 MB Speicher mit OneRom » Themenansicht

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

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 ü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, 0a20h                 ; ca 15 ms evtl. optimieren?
pa4:
    dec c
    jr nz, pa4
    djnz pa4
    ret
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
endslot:
    .end


Dieser Beitrag wurde am 16.08.2026 um 09:54 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
13.08.2026, 12:10 Uhr
DL
Default Group and Edit
Avatar von DL


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
003
14.08.2026, 09:49 Uhr
Klaus



OK.
Danke Detlef, jetzt habe ich es verstanden.
Bin aktuell ja noch in der Sommerpause und will mich danach mal mit einem anderen Projekt (PicoAC1), wofür gerade Platinen im Anmarsch sind, beschäftigen. AC1 ... eigentlich völliges Neuland für mich....

Viele Grüße,
Klaus
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
16.08.2026, 09:36 Uhr
DL
Default Group and Edit
Avatar von DL

OK, dann mache ich zum eigentlichen Thema halt wieder mal ein Selbstgespräch...
In der Systembank scheint die Version mit dem FA -Rahmen nicht zu laufen, das ist mir nur mit dem Standard-OS-Rahmen gelungen. ->
Das Programm selbst kann man noch kürzen wenn man die letzte Eingabe gleich aus 87h holt und wenn man darauf baut, das die Eingabe immer korrekt ist, kann auch der Vergleich entfallen.
Das RBCP kann auch noch etwas "aggressiver gefahren" werden, indem die Pausen nach RESET und KNOCK entfallen. Dem umladen der 512KB aus dem Flash in den RAM sollte allerdings seine Zeit gelassen werden. Spart insgesamt ca 20 bytes.

Der kurz gefasste Quellcode mit OS-Rahmen:

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
ROMad equ 0e000h             ;Adresse im ROM
bank equ 0c000h              ;ROM Bank Adresse
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    org ROMad                   ; Programmadresse in der Bank 0
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    jp copr
    db "SLOT ", 0
copr:
    ld hl, ramcod
    ld de, RAMad
    ld bc, endslot - slot
    ldir
    jp slot
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ramcod:
    .phase RAMad
slot:
inkey:                           ;letze Eingabe holen, die Slotnummer
    ld a, (87h)
    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 (braucht es das?)
    di
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
reset:                        ;rbcp reset sequenz
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld b, 14                     ;Kurzversion vom Reset
res1: ld a, (bank + 0aah)
    djnz res1
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 + '!')
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pause:                        ;Päuschen muß sein 512K werden vom ROM in den RAM kopiert
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ld bc, 0a20h                 ; ca 15 ms evtl. optimieren?
pa4:
    dec c
    jr nz, pa4
    djnz pa4
    ei
    ret                             ;zurück in das System
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
endslot:
    .dephase



Dieser Beitrag wurde am 18.08.2026 um 11:21 Uhr von DL editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
16.08.2026, 14:12 Uhr
Klaus



Hallo Detlef,

keine Panik.... nicht nur ich lese hier sicher mit.
Ich muss aber zugeben, dass ich momentan nichts testen kann und mich manches auch ein wenig überfordert ;(

Du stehst da ja aktuell voll im Stoff und es ist prima, dass Du diese Experimente machst, die der ein oder andere dann bestimmt mal nachnutzen kann.

Also... weiter mit den Selbstgesprächen

Danke und viele Grüße,
Klaus
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
18.08.2026, 11:24 Uhr
DL
Default Group and Edit
Avatar von DL

Mag ja alles sein, bringt aber keinen Austausch, hilft nicht weiter...

Um das Thema abzuschließen, die *.bin als Resultat aus dem gekürzten Programm in 004 habe ich an eine freie Stelle in die Systembank von jedem ROM kopiert und kann diese damit umschalten. Nun müssen "nur" noch die gewünschten Anwendungsprogramme passend in den ROMs verteilt werden, was hoffentlich auch mit dem Hexeditor funktioniert, denn das Wirrwarr was, wann, wie, wo und weshalb beim kompilieren der Quellen passiert habe ich nicht wirklich entschlüsseln können und außerdem ist das für mein Linux etwas zu Windows lastig.

Das Prinzip lässt sich sicherlich auch bei anderer Hardware anwenden.


Ok, dann gehe ich nun auch mal in den R/O Modus !
 
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