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.11
PC-Software: V0.8.0
Dokumentation: V0.7.14
Zeichnungssatz: V0.0.8

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

Online-Dokumentation : Onlineversion der DeMon48_128k Projekt-Dokumentation (de)

Online-Zeichnungssatz : Onlineversion des DeMon48_128k Projekt-Zeichnungssatzes

DeMon48_128k_AddressbusMonitor
DeMon48_128k_Breadboard1

Download : DeMon48_128k Projekt-Dokumentation (de)

Download : DeMon48_128k Zeichnungssatz und Grafiken


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 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.10.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