Popsel
..
Scheinbar lässt sich das Ergebnis nicht reproduzieren.
Nun versuchte ich die ASCII-Zeichen des empfangenen Strings zu verändern und den Name-String zurückzusenden.
Es gab auf allen 3 Ports keine sichtbare Änderung.
Normalerweise muss man bei Änderungen an "TONEs" danach "Write" ausführen, um die Änderungen im Flash-Speicher zu sichern.
So etwas ist aber in der MIDI Implementation nicht vorhanden.
Also werden sich Änderungen auf das RAM (Edit Puffer) beziehen, weshalb die Parameter auch in Realtime änderbar sind.
Habe ich aber Daten im Edit Puffer und schalte dann auf einen anderen Screen um, werden die Daten im Edit Puffer aus dem Flash Speicher geholt und der Edit Puffer im RAM damit überschrieben.
Es muss einen Parameter-Offset geben, der zurzeit noch unbekannt ist, um auf den Edit-Puffer im RAM zuzugreifen.
Um bei gleichen Parametern, wie z.B. "Octave Shift" die 16 Parts zu unterscheiden, dient anscheinend der "Block" Parameter.
Es gibt also eine Basis-Adresse (Parameter ID) für den Parameter, aber Auswahl des Parts muss dann im Block-Parameter (welcher 8 Bytes lang ist) erfolgen. So funktioniert es ja auch im WK6600. Es ist also wahrscheinlich, dass es auch beim MZX500 in ähnlicher Weise funktionieren müsste.
Edit Buffer
Nun versuchte ich die ASCII-Zeichen des empfangenen Strings zu verändern und den Name-String zurückzusenden.
Es gab auf allen 3 Ports keine sichtbare Änderung.
Normalerweise muss man bei Änderungen an "TONEs" danach "Write" ausführen, um die Änderungen im Flash-Speicher zu sichern.
So etwas ist aber in der MIDI Implementation nicht vorhanden.
Also werden sich Änderungen auf das RAM (Edit Puffer) beziehen, weshalb die Parameter auch in Realtime änderbar sind.
Habe ich aber Daten im Edit Puffer und schalte dann auf einen anderen Screen um, werden die Daten im Edit Puffer aus dem Flash Speicher geholt und der Edit Puffer im RAM damit überschrieben.
Es muss einen Parameter-Offset geben, der zurzeit noch unbekannt ist, um auf den Edit-Puffer im RAM zuzugreifen.
Um bei gleichen Parametern, wie z.B. "Octave Shift" die 16 Parts zu unterscheiden, dient anscheinend der "Block" Parameter.
Es gibt also eine Basis-Adresse (Parameter ID) für den Parameter, aber Auswahl des Parts muss dann im Block-Parameter (welcher 8 Bytes lang ist) erfolgen. So funktioniert es ja auch im WK6600. Es ist also wahrscheinlich, dass es auch beim MZX500 in ähnlicher Weise funktionieren müsste.
Edit Buffer
Zuletzt bearbeitet: