ROM-Inhalt auslesen
Der ROM-Inhalt der maskenprogrammierten U881 kann mit etwas Hilfe ausgelesen werden (https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=4440, https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=8664)
Mit einem Spezial-RESET (7,5 V an RESET) wird der Masken-ROM übergangen und ein Test-ROM auf den unteren 40h Byte eingeblendet (s. Kieser/Bankel):
Die Überhöhung der Spannung am RESET-Anschluss des U881 auf den Bereich URH = 7,35..8V bewirkt den Aufruf eines zusätzlichen internen Test-ROM-Bereichs. Dieser sonst nur für Testzwecke in einer speziellen Test-Betriebsart nutzbare ROM wird dabei dem internen 2-KByte-ROM „überlagert“. Dabei wird die im Test-ROM befindliche Bootstrap-Routine aktiviert. Dieser Zustand wird so lange beibehalten, bis wieder ein normaler RESET-Impuls angelegt wird.
Für ein erneuten Spezial-RESET muss die Schaltung immer stromlos gemacht werden oder man benutzt folgende Schaltung:
Laut Unterlagen werden bei dem Spezialreset die ersten 64 Byte durch einen Test-ROM ersetzt und der Rechner arbeitet diese ab - anstelle des eigentlichen ROM-Inhaltes - und springt dann auf Adresse 0x0812 zum extern angeschlossenen ROM.
Ausleseroutine:
;---------------------------------------------------------- ; SAVE Test-ROM to E400H ;---------------------------------------------------------- org 0E000h srp #%10 ld R14,#%00 ; From 0000H (Boot-ROM) ld R15,#%00 ld R12,#%E4 ; To E400H (RAM-Buffer) ld R13,#%00 ld R0,#64 ; 64 Bytes (length of Test-ROM) M1: lde R10,@RR14 ; read Byte lde @RR12,R10 ; write Byte incw RR12 ; next to incw RR14 ; next from djnz R0,M1 ; repeat jp 0812H ; restart Ju-Te
HeikoS:
Wenn das Unterscheidungs-Signal /DM für die Adressdekodierung nicht verwendet wird (Unterscheidung zw. externem Programmspeicher und externem Datenspeicher), sind LDC und LDE identisch in der Wirkung. Das ist ja beim Ju-Te der Fall. Aber in der Wirkung in Bezug auf das Auslesen ersten 64 Bytes Boot/Masken-ROM sind LDC und LDE nicht identisch.
LDC → Masken-ROM wird gelesen
LDE → Test-ROM wird gelesen
Die Unterschiede bei LDC und LDE betreffen nur die unteren 64 Bytes. Der Bereich 040-7FF ist mit beiden Befehlen lesbar.
Test-ROM
Der Typ U886 ist ein Ableittyp des maskenprogrammierten U881. Bei ihm wird ein über ein internes Test-ROM realisierter Absprung in den externen Programmspeicher ausgenutzt. Dieser Absprung ist ähnlich der Bootstrap-Routine des U883. Damit ist der U886 als allgemein nutzbare Version mit externem Programmspeicher anwendbar.
In den vorliegenden Bauelementeversionen enthält dieser dann angesprungene Test-ROM eine Initialisierung für externe Speichererweiterung und einen Absprung in diesen Bereich. Die Anwendung dieser Betriebsart ist hauptsächlich für Testzwecke beim Hersteller vorgesehen.
Orig. Test-ROM des Z8 siehe
http://bitsavers.informatik.uni-stuttgart.de/components/zilog/z8/Z8_MCU_Test_Mode_Jun82.pdf
ROM-Protection
Im original Zilog User Manual (https://www.zilog.com/docs/um0016.pdf, S. 19) steht außerdem noch folgendes:
The internal Program Memory is one-time programmable (OTP) or mask programmable dependent on the specific device. A ROM protect feature prevents dumping of the ROM contents by inhibiting execution of the LDC, LDCI, LDE, and LDEI instructions to Pro- gram Memory in all modes. ROM look-up tables cannot be used with this feature. The ROM Protect option is mask-programmable, to be selected when the ROM code is submitted.
Möglicherweise wurde beim U881-Clone des Z8 die 'ROM protection' nicht umsetzt? Oder sie wurde nicht verwendet?