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 11:53] – [Sonstiges] 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 ===== | ||
| Zeile 23: | Zeile 44: | ||
| - | Im Science Fair Microcomputer Trainer | + | CPU und Takt spielen keine Rolle, im ROM-Programm des Prozessors |
| + | 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:chip8]]-Sprache. | ||
| + | Im Science Fair Microcomputer Trainer wird ein spezieller Microcontroller der Serie[[http:// | ||
| ===== Literatur ===== | ===== Literatur ===== | ||
| - | - | + | - http:// |
| - | + | | |
| - | ===== Downloads ===== | + | - http:// |
| - | + | ||
| - | | + | |
| ===== Bedienung ===== | ===== Bedienung ===== | ||
| Zeile 55: | Zeile 77: | ||
| ===== Sonstiges ===== | ===== Sonstiges ===== | ||
| - | ==== Prozesssor | + | ==== Prozessor |
| Es wird ein spezieller 4-Bit-Prozessor simuliert. | Es wird ein spezieller 4-Bit-Prozessor simuliert. | ||
| - | * 4 Register A, B, X, Y | + | * 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), | * 3 Ports P (LEDs), O (Siebensegmentanzeige), | ||
| * 80 Byte (a 4 Bit) Programm-Speicher | * 80 Byte (a 4 Bit) Programm-Speicher | ||
| * 16 Byte Datenspeicher (RAM-Bereich 50h..5Fh) | * 16 Byte Datenspeicher (RAM-Bereich 50h..5Fh) | ||
| * 1 Flag. Der Befehl JUMP ist ein bedingter Sprung und wird nur ausgeführt, | * 1 Flag. Der Befehl JUMP ist ein bedingter Sprung und wird nur ausgeführt, | ||
| - | * 4 Wechselregister A', B', X', | + | * 4 zusätzliche |
| {{: | {{: | ||
| Zeile 73: | Zeile 95: | ||
| Die Befehle sind 1..3 Byte (a 4 Bit) lang. | Die Befehle sind 1..3 Byte (a 4 Bit) lang. | ||
| - | n = 0..F | + | n = 0..F\\ |
| + | M = RAM-Adr (50+Y) (indexierter Zugriff) | ||
| ^ Code ^ Befehl ^ Wirkung ^ Flag ^ Kommentar ^ | ^ Code ^ Befehl ^ Wirkung ^ Flag ^ Kommentar ^ | ||
| Zeile 109: | Zeile 132: | ||
| | E C | CAL TIMR | 1 | (A + 1) * 0,1 Sekunden warten | | | E C | CAL TIMR | 1 | (A + 1) * 0,1 Sekunden warten | | ||
| | 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 | ||
| + | </ | ||
| + | |||