Ursache ist die Reihenfolge wie die Bytes im Speicher liegen.
Beispiel:
Adresse: 1 = $08
Adresse: 2 = $03
Bei einer word abfrage ist das Ergebnis $0308 es wird aber $0803 benötigt.
Die original Routinen sollen erhalten bleiben da diese die Wertigkeit richtig wiedergeben.
Es geht viel mehr um eine Erweiterung der Funktionen von reg-ios.spin.
Ich bitte um Erweiterung mit folgenden Routinen.
Code: Alles auswählen
PUB ram_rdlongLE(sys,eadr): wert 'eram: liest long ab eadr
{{ram_rdlong - eram: liest long ab eadr}}
'sys = 0 - systemmodus, keine virtualisierung
'sys = 1 - usermodus, virtualisierte adresse
wert := ram_rdbyte(sys,eadr + 3)
wert += ram_rdbyte(sys,eadr + 2) << 8
wert += ram_rdbyte(sys,eadr + 1) << 16
wert += ram_rdbyte(sys,eadr ) << 24
PUB ram_rdwordLE(sys,eadr): wert 'eram: liest word ab eadr
{{ram_rdlong(eadr):wert - eram: liest word ab eadr}}
'sys = 0 - systemmodus, keine virtualisierung
'sys = 1 - usermodus, virtualisierte adresse
wert := ram_rdbyte(sys,eadr + 1)
wert += ram_rdbyte(sys,eadr ) << 8
PUB ram_wrlongLE(sys,wert,eadr) | n 'eram: schreibt long ab eadr
{{ram_wrlong(wert,eadr) - eram: schreibt long ab eadr}}
'sys = 0 - systemmodus, keine virtualisierung
'sys = 1 - usermodus, virtualisierte adresse
n := wert & $FF
ram_wrbyte(sys,n,eadr + 3)
n := (wert >> 8) & $FF
ram_wrbyte(sys,n,eadr + 2)
n := (wert >> 16) & $FF
ram_wrbyte(sys,n,eadr + 1)
n := (wert >> 24) & $FF
ram_wrbyte(sys,n,eadr)
PUB ram_wrwordLE(sys,wert,eadr) | n 'eram: schreibt word ab eadr
{{wr_word(wert,eadr) - eram: schreibt word ab eadr}}
'sys = 0 - systemmodus, keine virtualisierung
'sys = 1 - usermodus, virtualisierte adresse
n := wert & $FF
ram_wrbyte(sys,n,eadr + 1)
n := (wert >> 8) & $FF
ram_wrbyte(sys,n,eadr)