ctr

DeMon48_128k

intel 8049 (8048, 8748, 8749, 8035, 8039) / MCS-48 Hardware-Debugger & Monitor


Status : Status

Versions-Information
Hardware: V0.8.3
Firmware: V0.8.12
PC-Software: V0.8.0
Dokumentation: V0.7.27
Zeichnungssatz: V0.5.7

Zusatz-Information
Dokumentation (de): Anzeigen
Zeichnungssatz: Anzeigen

Download
Dokumentation (de): Download
Zeichnungssatz: Download
Download, install and use at your own risk !
Features
  • Transparenter Zugriff auf alle internen Register und RAM des intel 8049
  • Unverändert für intel 8048, 8748, 8749, 8035, 8039 verwendbar
  • Bis zu 128kB an dem für 4kB ausgelegten µC, alle On-Chip-Ressourcen bleiben erhalten
  • Volle 16-Bit-Adressen bei Sprüngen per JMP/CALL/RET (z.B. von 0x08E7 nach 0x53F0)
  • 64kByte als Programm- und zusätzlich 64kByte als Datenspeicher nutzbar
  • Die Hardware besteht nur aus neu beschaffbaren Standard-Bauteilen (ausser 8049)
  • In einer 4/8kByte Memory-Map können 8243 Port-Expander genutzt werden
  • Softwaregesteuerte Umschaltmöglichkeit zwischen nativer Harvard- und Von-Neumann-Architektur
  • Normalerweise unmögliches Laden des Programmspeichers durch auf dem 8049 laufende Software
  • Hardware-Interrupts des intel 8049 sind vollständig unterstützt
  • Memory-mapped I/O-Bereich kann eingeblendet werden
  • Software- und Hardware-Breakpoints, GUI für Windows-Betriebssysteme
  • Ausführen beliebigen Programmcodes im Single-Step-Modus
  • Integrierter Single-Line-Disassembler, Unterstützung für AS Macroassembler

Neues zum Projekt

Online : DeMon48_128k Projekt-Dokumentation (de)
Online : DeMon48_128k Projekt-Zeichnungssatz und Grafiken

Download : DeMon48_128k Projekt-Dokumentation (de)
Download : DeMon48_128k Projekt-Zeichnungssatz und Grafiken

DeMon48_128k_AddressbusMonitor
DeMon48_128k_Breadboard1


Neuigkeiten


17.06.2024

Die Projekt-Dokumentation und der Zeichnungssatz wurden um Logik-Analysator Aufzeichnungen der Ausführung von "MOVP A,@A"-, "MOVP3 A,@A"- und "JMPP @A"-Befehlen erweitert (Kapitel 2.5.0 der Dokumentation beziehungsweise Blatt 16 im Zeichnungssatz) und stehen als V0.7.27 (Dokumentation) und V0.5.7 (Zeichnungssatz) Online und als Download bereit.

13.06.2024

Die Vereinfachung der Hardware-Breakpoint-Schaltung musste zurückgenommen werden, weil sich dadurch Glitches und eine Fehlfunktion des Hardware-Breakpoints ergeben konnten. Ausserdem wurde ein wichtiger Hinweis zum Kapitel 3.7.0 der Projekt-Dokumentation hinzugefügt und eine allgemeine Überarbeitung durchgeführt.

10.06.2024

Eine grundsätzlich logischer strukturierte und erweiterte Projekt-Dokumentation ist als V0.7.24 online und als Download bereitgestellt. Unter anderem wurden Teile des Kapitels 3 in das Kapitel 2 verlegt und der Schaltplan für den "NOP"-Test zum Kapitel 3.2.0 hinzugefügt.

08.06.2024

Eine erweiterte und überarbeitete Projekt-Dokumentation steht als V0.7.23 online und als Download zur Verfügung. Die neuen Kapitel sind 2.6.9 und 2.6.10, die Nummerierung der bestehenden Kapitel wurde entsprechend verschoben.

24.05.2024

Eine erweiterte Projekt-Dokumentation steht als V0.7.22 online und als Download zur Verfügung. Die neuen Kapitel sind 2.3.0, 2.4.0 und 2.4.1, die Nummerierung der bestehenden Kapitel wurde entsprechend verschoben.

18.05.2024

Der Zeichnungssatz steht jetzt als V0.5.4 zur Verfügung.

15.05.2024

Eine neue Version der Dokumentation steht als V0.7.21 online und als Download zur Verfügung. Es handelt sich um eine allgemeine Revision mit besseren Formulierungen und Konkretisierungen, u.a. bei der Beschreibung des *RESET-Signals und des 8049-Minimalsystems mit externem Programmspeicher.

07.05.2024

Eine neue Version der Dokumentation und des Zeichnungssatzes stehen als V0.7.20 bzw. V0.5.3 online und als Download zur Verfügung. Es handelt sich um eine allgemeine Revision mit einigen Konkretisierungen und Bereinigungen.

17.04.2024

Der Zeichnungssatz (Blatt 15) und die Dokumentation (Kapitel 2.5.0) wurden durch detailliertere Logik-Analysator Aufzeichnungen erweitert. Der Zeichnungssatz steht jetzt als V0.5.2 und die Dokumentation als V0.7.19 zur Verfügung.

12.04.2024

Eine neue Version des Zeichnungssatzes ist als V0.5.1 verfügbar. Die Darstellungen der Logik-Analysator Aufzeichnungen wurden überarbeitet, so dass sie übersichtlicher sind (Blatt 14, Blatt 15).

11.04.2024

In der Version V0.7.18 der als Download und Online verfügbaren Projekt-Dokumentation sind jetzt auch die auf Basis der Untersuchungen mit dem Logik-Analysator entstandenen Grafiken als Kapitel 2.5.0 enthalten.

04.04.2024

In der neuen Version V0.7.17 der von dieser Seite abrufbaren Download-Version (PDF) der Projekt-Dokumentation sind neben Änderungen am Text alle Zeichnungen (Diagramme, Schaltplanauszüge) in deutlich besserer Qualität enthalten. Die Online-Version der Projekt-Dokumentation V0.7.17 und die Online- und Downloadversionen des Zeichnungssatzes V0.5.0 enthalten ebenfalls Aktualisierungen.

27.03.2024

Eine neue Revision der Projekt-Dokumentation, in der Hauptsache mit Konkretisierungen (unter anderem das "CLK"-Signal an T0 betreffend) und etwas verschlankt, ist als V0.7.16 online und als Download verfügbar.

04.03.2024

Es gibt eine neue Revision des Zeichnungssatzes und der Projekt-Dokumentation (Online- und Download-Versionen). Änderungen wurden im Zeichnungssatz an Blatt 12 und in der Dokumentation im Kapitel 2 vorgenommen, hauptsächlich an den MCS-48 Timing-Diagrammen als Folge der Messungen mit dem Logik-Analysator.

19.02.2024

Es wurden umfangreiche Untersuchungen mit Hilfe eines Logik-Analysators an den am µPD8049 verfügbaren Signalen unternommen, um den internen Abläufen und deren Timing dieses Mitglieds der intel MCS-48 Familie etwas genauer auf die Spur zu kommen. Die bisherigen Ergebnisse sind als neues Blatt 14 ("MCS-48 Logic Analyzer Traces") in dem jetzt wieder erweiterten Zeichnungssatz (Online- und Download-Versionen) dokumentiert.
Ich habe trotz langer und aufwändiger Recherche über die intel MCS-48 Familie keine Kenntnis, dass bisher detailliertere Informationen und Einblicke in die interne Funktion und dessen Timing aufgezeichnet und öffentlich zur Verfügung gestellt wurden : vermutlich eine Premiere.

03.02.2024

Die Projekt-Dokumentation und der Zeichnungssatz (Online- und Download-Versionen) wurden aktualisiert :
Unter anderem wurden Ungenauigkeiten in den Darstellungen des 8049 / MCS-48 Timings bei externen Zugriffen mit Hilfe des "PROG"-Signals und den unteren 4 Bit von P2 (P2.0, P2.1, P2.2, P2.3) (Dokumentation : Kapitel 2.4.8, Zeichnungssatz : Blatt 6,
Blatt 12) sowie in der Beschreibung der Memory-Maps (Dokumentation : Kapitel 5.3.0, Kapitel 5.4.0) korrigiert.

20.01.2024

Die Hardware-Memory-Management-Unit (MMU) des DeMon48_128k-Projekts wurde aktualisiert, so dass jetzt DBL als P4, DBH als P5, PBR als P6 und EXP als P7 über "MOVD Pp,A"-/"ORLD Pp,A"-Befehle angesprochen werden. Die MMU kann jetzt per Jumper so konfiguriert werden, dass DBL automatisch in jedem ALE-Zyklus mit dem aktuellen Inhalt von P2.3 ... P2.0 geladen wird und so transparent den Inhalt des niederwertigen Nibbles von P2 als A8 ... A11 für Datenspeicher- und I/O-Zugriffe bereitstellt. So kann auch in einer 4(8)kByte Memory Map (siehe Dokumentation / Kapitel 5) - beispielsweise, um das "PROG"-Signal für 8243 Portexpander statt für die MMU nutzen zu können - ein memory-mapped I/O-Bereich eingeblendet und angesprochen werden. Selbstverständlich bleiben alle anderen Funktionen der MMU erhalten und unverändert. Der Zeichnungssatz und die Projekt-Dokumentation (Online- und Download-Versionen) wurden entsprechend überarbeitet und erweitert.


01.01.2024

Die Hardware-Memory-Management-Unit (MMU) wurde um ein weiteres Register erweitert, so dass das DBR (Data-Bank-Register) jetzt aus DBL (Data-Bank-Register-Low) und DBH (Data-Bank-Register-High) besteht und die benötigten 8 Adressbits unabhängig von Port2 des Mikrocontrollers bereitstellen kann. Hintergrund ist, dass es sich bei den ersten ernsthaften Versuchen der 4kB-Bank-übergreifenden Programmierung als störend erwiesen hat, wenn nach einem Zugriff auf beispielsweise das PBR (Program-Bank-Register) auch das untere Nibble der Bank-Adresse für Datenspeicherzugriffe wiederhergestellt werden musste, weil der Inhalt von P2.0 bis P2.3 durch den "MOVD Pp,A"-Befehl zerstört worden war. Zusätzlich wurde die Struktur der Projekt-Dokumentation und des Zeichnungssatzes geändert. Der Zeichnungssatz und die Projekt-Dokumentation (Online- und Download-Versionen) wurden entsprechend überarbeitet und erweitert.


18.10.2023

Die Hardware des DeMon48_128k-Projekts ist um einen Adressbus-Monitor erweitert worden.
Auf zwei 4-Digit LED-Displays werden gleichzeitig die Adressen des letzten Programm- und Datenspeicher- beziehungsweise I/O-Zugriffs angezeigt. Durch einen Umschalter mit Mittelstellung kann die Anzeige im Oktal-, Hexadezimal- oder Dezimal-System ausgewählt werden.
Mit Hilfe von 3 LEDs wird das ausgewählte Anzeigeformat angezeigt und durch 2 weitere LEDs, ob bei der Binär-zu-Oktal- oder Binär-zu-Dezimal-Wandlung ein Überlauf stattgefunden hat (auf 4 Digits können im Oktal-Format beispielsweise maximal 12 Bit angezeigt werden, bei einem Eingabeformat von 16 Bit können also 4 Bit auf den Displays nicht angezeigt werden).
Auch bei einem Überlauf bei der Binär-zu-Dezimal-Wandlung wird auf den 4 Digits der korrekte "Rest" (1000er, 100er, 10er und 1er) angezeigt. Der Zeichnungssatz (Online- und Download-Version) wurde entsprechend überarbeitet und erweitert.


11.09.2023

Eine erweiterte Hardware-MMU ermöglicht 4kB-Bank-übergreifende Sprünge zu einer 16-Bit-Adresse per "JMP"-/"CALL"-/"RET"-Befehl (z.B. von 0x08E7 nach 0x53F0).

Beispiele :

08E3 SEL MB0   ;MB-FF (PC.11) = 0
08E4 MOV A,#05 ;A = 05
08E6 MOVD P6,A ;PBR = A
08E7 JMP 3F0   ;PC.0 ... PC.10 = 3F0

53F0 Nächster Befehl

Die Hardware-MMU unterstützt Unterprogrammaufrufe per "CALL" über 4kB-Bankgrenzen hinweg, allerdings muss die 4kB-Bank, zu der mit "RET" zurückgekehrt werden soll, beispielsweise in einem Register hinterlegt werden :

08E1 MOV R7,#00 ;R7 = 0 = aktuelle 4kB-Programmspeicherbank
08E3 SEL MB0    ;MB-FF (PC.11) = 0
08E4 MOV A,#05  ;A = 05
08E6 MOVD P6,A  ;PBR = A
08E7 CALL 3F0   ;Stack@SP = PC.0 ... PC.11, PC.0 ... PC.10 = 3F0

53F0 Nächster Befehl
[...]
542A MOV A,R7   ;A = R7
542B MOVD P6,A  ;PBR = A
542C RET        ;PC.0 ... PC.11 = Stack@SP

08E9 Nächster Befehl

Einzelheiten gibt es in der überarbeiteten Dokumentation (Kapitel 3.9.0) und dem zugehörigen Zeichnungssatz.

Zusätzlich wurde der Hardware-Breakpoint etwas verbessert.


DeMon48_128k_MMU_DBR_Write

DeMon48_128k_GUI

DeMon48_128k_Breadboard2