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 | ||
+ | </ | ||
+ |