Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
homecomputer:gmc-4 [2014/12/17 08:30] – volkerp | homecomputer:gmc-4 [2018/11/26 13:05] (aktuell) – [Downloads] volkerp | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Dezember 2014 gab es das Franzis Lernpaket " | Dezember 2014 gab es das Franzis Lernpaket " | ||
+ | |||
+ | {{: | ||
===== Systembeschreibung ===== | ===== Systembeschreibung ===== | ||
- | Bild, kurze Beschreibung | + | Bild, kurze Beschreibung, https:// |
+ | |||
+ | {{: | ||
+ | |||
+ | Der GMC-4 ist ein 4-Bit-Microcomputer. | ||
+ | |||
+ | Der GMC-4 verfügt über einen einfachen Befehlssatz, | ||
+ | |||
+ | Es gibt vier 4-Bit-Register A, B, Y und Z und einen zusätzlichen zweiten Registersatz A‘, B‘, Y‘ und Z‘. Jedes dieser Register kann eine Zahl zwischen 0 und 15 enthalten. Die meisten Befehle verwenden das Register A. | ||
+ | |||
+ | Der Einplatinenrechner besitzt eine Hexadezimal-Tastatur, | ||
+ | Außerdem gibt es einen kleinen Lautsprecher zur Tonausgabe. | ||
+ | |||
+ | ===== Downloads ===== | ||
+ | |||
+ | * Reasembler gmc4_reass2.pl {{ : | ||
+ | * alle Beispielprogramme aus dem originalen Handbuch liegen dem Simulatorpaket GMC4Sim-1_38.zip bei (http:// | ||
+ | * 2018 neuer Download, da obiger Download nicht mehr funktioniert: | ||
+ | * Anleitung (engl., GMC-4-Manual) {{ : | ||
===== technische Daten ===== | ===== technische Daten ===== | ||
^ Merkmal ^ Beschreibung | | ^ Merkmal ^ Beschreibung | | ||
- | | CPU | | | + | | CPU | EM61001 |
- | | ROM | | | + | | ROM | - | |
- | | RAM | | | + | | RAM | 128 Byte a 4 Bit | |
- | | Takt | | | + | | Takt | 4 MHz | |
- | | Anzeige | | | + | | Anzeige | 7 Bit LED, 1 stellig Siebensegment-Anzeige |
- | | Tastatur | | | + | | Tastatur | 20 Tasten Hexadezimaltastatur |
- | | Peripherie | | | + | | Peripherie | - | |
- | | Software | | | + | | Software | - | |
- | ===== Literatur ===== | ||
- | | + | CPU und Takt spielen keine Rolle, im ROM-Programm des Prozessors wird ein spezieller 4-Bit-Prozessor simuliert (s.u.). |
+ | Nur für diesen 4-Bit-Prozessor können Programme geschrieben werden, der zugrunde liegende Prozessor ist nicht ansprechbar. | ||
+ | Das Konzept ist ähnlich der [[homecomputer: | ||
- | ===== Downloads | + | Im Science Fair Microcomputer Trainer wird ein spezieller Microcontroller der Serie[[http:// |
+ | |||
+ | ===== Literatur | ||
- | | + | |
+ | - http:// | ||
+ | - http:// | ||
===== Bedienung ===== | ===== Bedienung ===== | ||
Zeile 51: | Zeile 77: | ||
===== Sonstiges ===== | ===== Sonstiges ===== | ||
- | n = 0..F | + | ==== Prozessor ==== |
+ | |||
+ | Es wird ein spezieller 4-Bit-Prozessor simuliert. | ||
+ | |||
+ | * 4 Register A, B, Y, Z\\ A ist der Akku, Y ein Indexregister zum Speicherzugriff. B und Z sind Wechselregister. | ||
+ | * 3 Ports P (LEDs), O (Siebensegmentanzeige), | ||
+ | * 80 Byte (a 4 Bit) Programm-Speicher | ||
+ | * 16 Byte Datenspeicher (RAM-Bereich 50h..5Fh) | ||
+ | * 1 Flag. Der Befehl JUMP ist ein bedingter Sprung und wird nur ausgeführt, | ||
+ | * 4 zusätzliche Wechselregister A', B', X', Z' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Der Befehlssatz ==== | ||
+ | |||
+ | Der simulierte 4-Bit-Prozessor versteht 16 Maschinenbefehle.\\ | ||
+ | Die Befehle sind 1..3 Byte (a 4 Bit) lang. | ||
+ | |||
+ | n = 0..F\\ | ||
+ | M = RAM-Adr (50+Y) (indexierter Zugriff) | ||
^ Code ^ Befehl ^ Wirkung ^ Flag ^ Kommentar ^ | ^ Code ^ Befehl ^ Wirkung ^ Flag ^ Kommentar ^ | ||
| 0 | KA (Key to A) | A := K | 0, 1 | Tastendruck nach A übernehmen, | | 0 | KA (Key to A) | A := K | 0, 1 | Tastendruck nach A übernehmen, | ||
- | | 1 | AO (A to Output) | Op := A | 1 | A an Siebensegmentanzeige ausgeben | | + | | 1 | AO (A to Output) | O := A | 1 | A an Siebensegmentanzeige ausgeben | |
| 2 | CH (Change) | A <=> B Y <=> Z | 1 | Tausche A und B sowie Y und Z | | | 2 | CH (Change) | A <=> B Y <=> Z | 1 | Tausche A und B sowie Y und Z | | ||
- | | 3 | CY (Change A and Y) | Ar < | + | | 3 | CY (Change A and Y) | A < |
| 4 | AM (A to Memory) | M := A | 1 | A in RAM-Adr (50+Y) kopieren | | | 4 | AM (A to Memory) | M := A | 1 | A in RAM-Adr (50+Y) kopieren | | ||
| 5 | MA (Memory to A) | A := M | 1 | RAM-Adr (50+Y) in A zurücklesen | | | 5 | MA (Memory to A) | A := M | 1 | RAM-Adr (50+Y) in A zurücklesen | | ||
Zeile 88: | Zeile 133: | ||
| E D | CAL DSPR (Display on Port R) | 1 | Ausgabe der RAM-Adressen 5F (high) und 5E (low) an die LEDs | | | E D | CAL DSPR (Display on Port R) | 1 | Ausgabe der RAM-Adressen 5F (high) und 5E (low) an die LEDs | | ||
+ | ==== Reassembler ==== | ||
+ | |||
+ | Ich habe einen kleinen kommentierenden Reassembler gmc4_reass2.pl in Perl geschrieben. Aus dem Hexcode | ||
+ | |||
+ | E D 8 0 E C A F 5 E 6 F 1 A 4 A E 5 E 6 9 8 4 F 2 1 4 A E 5 E 6 4 0 F 0 0 A F 5 9 8 4 F 0 0 | ||
+ | |||
+ | macht er folgendes (Beispiel binary_light_show.asm): | ||
+ | |||
+ | < | ||
+ | 00: E D | ||
+ | 02: 8 0 TIA 0 ; Konstante 0 in A laden | ||
+ | 04: E C CAL TIMR ; (A + 1) * 0,1 Sekunden warten | ||
+ | 06: A F TIY F ; Konstante 15 in Y laden | ||
+ | 08: 5 | ||
+ | 09: E 6 CAL SIFT ; A-Register bitweise nach rechts schieben | ||
+ | 0B: F 1A JUMP LBL_1A | ||
+ | 0E: 4 | ||
+ | 0F: A E TIY E ; Konstante 14 in Y laden | ||
+ | 11: 5 | ||
+ | 12: E 6 CAL SIFT ; A-Register bitweise nach rechts schieben | ||
+ | 14: 9 8 AIA 8 ; 8 zu A addieren | ||
+ | 16: 4 | ||
+ | 17: F 21 JUMP LBL_21 | ||
+ | 1A: 4 | ||
+ | 1B: A E TIY E ; Konstante 14 in Y laden | ||
+ | 1D: 5 | ||
+ | 1E: E 6 CAL SIFT ; A-Register bitweise nach rechts schieben | ||
+ | 20: 4 | ||
+ | 21: 0 | ||
+ | 22: F 00 JUMP LBL_00 | ||
+ | 25: A F TIY F ; Konstante 15 in Y laden | ||
+ | 27: 5 | ||
+ | 28: 9 8 AIA 8 ; 8 zu A addieren | ||
+ | 2A: 4 | ||
+ | 2B: F 00 JUMP LBL_00 | ||
+ | </ | ||