Forum: Mikrocontroller und Digitale Elektronik Intel MCS-4 / Intel 4004 / 4001 - Wie Output beschreiben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Holger K. (holgerkraehe)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich versuche mich derzeit gerade an den Basics...
Einem Intel 4004 System. Genauer gesagt einem MCS-4
Das System seht ihr im Bild im Anhang.

Wie zu sehen ist, sind die IOs einerseits im RAM vorhanden, andererseits 
auch im ROM.

Nun würde ich gerne ganz simpel ein paar IOs setzen und dies evtl. noch 
in Abhängigkeit eines Inputs.

Dazu habe ich diesen Emulator gefunden:
http://e4004.szyc.org/emu/

Das Instruction set gibts hier:
http://e4004.szyc.org/iset.html

Und hier noch das Manual für das MCS-4
http://bitsavers.trailing-edge.com/components/intel/MCS4/MCS-4_Assembly_Language_Programming_Manual_Dec73.pdf

Wie es aussieht, muss ich wohl den Befehl WMP verwenden.
Leider sind meine Assemblerskills relativ schlecht geworden.

Offenbar ist das höherwertige nibble der Portzustand (1110).
Aber ich vermute, durch alleiniges ausführen von

1110|0001 werde ich noch keinen Output port beschreiben.

Würde mich sehr über Hilfe freuen :)

Danke und Gruss
Holger

von Helge (Gast)


Lesenswert?

ich verstehe das so:
1. select rom (oder ram)
2. Wert in Akku
3. WRR (oder WMP)

von Holger K. (holgerkraehe)


Lesenswert?

Helge schrieb:
> ich verstehe das so:
> 1. select rom (oder ram)
> 2. Wert in Akku
> 3. WRR (oder WMP)

Danke für die Antwort.
Da steht ja noch

"selected by the last SRC command".

Also zuerst SRC, dann LDM und dann WMP ?

SRC sieht so aus:
0010 RRR1

Also 0010 | 0001 für Chip 0 ?

Dann LOADM
1101 DDDD

Also 1101 | 0001 um das Q0 auf High zu setzen?

und dann WMP
1110 0001

von Holger K. (holgerkraehe)


Lesenswert?

Hat teilweise funktioniert :)

Hier der code:
1
FIM R0, $00
2
SRC R0
3
LDM $04
4
WMP

Das assembly:
1
:05000000200021D4E105
2
:00000001FF

http://e4004.szyc.org/asm.html

Leider schreibt das Programm in den Output des RAMs und nicht des ROMs.
Da muss ich wohl WMP durch WRR ersetzen...

: Bearbeitet durch User
von Holger K. (holgerkraehe)


Lesenswert?

Hat jemand eine Idee, warum hier der Jump nicht funktioniert?
1
        FIM R0, $00
2
        SRC R0
3
        LDM R0
4
DONE
5
        IAC
6
        WRR
7
        WMP
8
  JUN DONE

Die Sprungadresse ist immer $0F2

Problem gelöst.
Es muss der Object Code und nicht der HEX-Code geladen werden.
Beim HEX-Code gibt es zusätzliche NOPs.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.