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.

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

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?

  • elektronik/u881/extract_rom.txt
  • Zuletzt geändert: 2023/09/11 10:54
  • von volkerp