Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
homecomputer:gmc-4 [2014/12/16 15:36] – [Sonstiges] volkerphomecomputer:gmc-4 [2018/11/26 13:05] (aktuell) – [Downloads] volkerp
Zeile 5: Zeile 5:
  
 Dezember 2014 gab es das Franzis Lernpaket "Spielecomputer selbst programmieren" mit dem GMC-4 und einem 96seitigen Handbuch von F. Kainka für nur 20€, so dass ich mir auch einen solchen kleinen Computer zugelegt habe. Dezember 2014 gab es das Franzis Lernpaket "Spielecomputer selbst programmieren" mit dem GMC-4 und einem 96seitigen Handbuch von F. Kainka für nur 20€, so dass ich mir auch einen solchen kleinen Computer zugelegt habe.
 +
 +{{:homecomputer:franzis-gmc4.jpg?300|}}
  
 ===== Systembeschreibung ===== ===== Systembeschreibung =====
  
-Bild, kurze Beschreibung+Bild, kurze Beschreibung, https://en.wikipedia.org/wiki/GMC-4 
 + 
 +{{:homecomputer:gmc4.jpg?300|}} 
 + 
 +Der GMC-4 ist ein 4-Bit-Microcomputer. 
 + 
 +Der GMC-4 verfügt über einen einfachen Befehlssatz, der an Assembler angelehnt ist, teilweise aber auch höhere Funktionen enthält, hinter denen sich komplexe Routinen verstecken. 
 + 
 +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, 4 Funktionstasten, 7 LEDs und eine einstellige 7-Segmentanzeige. 
 +Außerdem gibt es einen kleinen Lautsprecher zur Tonausgabe. 
 + 
 +===== Downloads ===== 
 + 
 +  * Reasembler gmc4_reass2.pl {{ :homecomputer:gmc4_reass2.zip |}} 
 +  * alle Beispielprogramme aus dem originalen Handbuch liegen dem Simulatorpaket GMC4Sim-1_38.zip bei (http://dansan.air-nifty.com/blog/gmc4-simulator.html). 
 +  * 2018 neuer Download, da obiger Download nicht mehr funktioniert: https://github.com/ypsitau/gmc4sim\\ https://github.com/ypsitau/gmc4sim/releases/download/v1.39/gmc4sim-1.39.zip 
 +  * Anleitung (engl., GMC-4-Manual) {{ :homecomputer:vol24_microcomputer_gmc-4.pdf |}} 
  
 ===== 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:chip8]]-Sprache.
  
-===== Downloads =====+Im Science Fair Microcomputer Trainer wird ein spezieller Microcontroller der Serie[[http://www.datamath.org/Story/Intel.htm#The TMS1000 Single Chip Calulators|TMS1000-Controller]] genutzt, konkret ein [[http://vintagecomputer.livejournal.com/67414.html|TMS1312]]. Dieser wurde mit 400 kHz betrieben.
  
-  * Anleitung, ..+===== Literatur ===== 
 + 
 +  - http://www.polylith.com/~brendan/ClassicComputers/Tandy/image/MCT_28_260.pdf (von http://www.polylith.com/~brendan/ClassicComputers/Tandy/uCptrTrainManual1.html) Das originale Handbuch zum Microcomputer Trainer. Das Handbuch ist komplett für den GMC-4 nutzbar! 
 +  - http://otonanokagaku.net/magazine/vol24/pdf/vol24manual.pdf Das Handbuch zum FX-165. Das ist i.W. eine japanische Übersetzung des obigen Handbuchs. Die 100 Beispielprogrammedie Kapitelnummern u.astimmen überein! 
 +  - http://fkainka.de/tag/gmc-4/
  
 ===== Bedienung ===== ===== Bedienung =====
  
 +| 0 | |
 +| 1 | ラ |
 +| 2 | シ |
 +| 3 | ド |
 +| 4 | レ |
 +| 5 | ミ |
 +| 6 | ファ |
 +| 7 | ソ |
 +| 8 | ラ |
 +| 9 | シ |
 +| A | ド |
 +| B | レ |
 +| C | ミ |
 +| D | ファ |
 +| E | ソ |
 +| F | |
  
 ===== 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), K (Tastatur) 
 +  * 80 Byte (a 4 Bit) Programm-Speicher  (RAM-Bereich 00h..4Fh) 
 +  * 16 Byte Datenspeicher (RAM-Bereich 50h..5Fh) 
 +  * 1 Flag. Der Befehl JUMP ist ein bedingter Sprung und wird nur ausgeführt, wenn das Flag 1 ist 
 +  * 4 zusätzliche Wechselregister A', B', X', Z' 
 + 
 +{{:homecomputer:gmc-4-prozessor.jpg?300|}} 
 + 
 +==== 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, Flag = 0 bei Tastendruck, sonst Flag = 1 |  | 0 | KA (Key to A) | A := K | 0, 1 | Tastendruck nach A übernehmen, Flag = 0 bei Tastendruck, sonst Flag = 1 | 
-| 1 | AO (A to Output) | Op := A | 1 | A an Siebensegmentanzeige ausgeben | +| 1 | AO (A to Output) | := 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 <=> Yr | 1 | Austausch der Inhalte von A und Y | +| 3 | CY (Change A and Y) | <=> | 1 | Austausch der Inhalte von A und Y | 
 | 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 72: 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):
 +
 +<code>
 +00: E D   LBL_00: CAL DSPR     ; Ausgabe der RAM-Adressen M[F] (high) und M[E] (low) an die LEDs
 +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             MA           ; RAM-Adr M[Y] in A zurücklesen
 +09: E 6           CAL SIFT     ; A-Register bitweise nach rechts schieben
 +0B: F 1A          JUMP LBL_1A  ; wenn das rechte Bit 0 war Sprung zur Adresse LBL_1A
 +0E: 4             AM           ; A in RAM-Adr M[Y] kopieren
 +0F: A E           TIY E        ; Konstante 14 in Y laden
 +11: 5             MA           ; RAM-Adr M[Y] in A zurücklesen
 +12: E 6           CAL SIFT     ; A-Register bitweise nach rechts schieben
 +14: 9 8           AIA 8        ; 8 zu A addieren
 +16: 4             AM           ; A in RAM-Adr M[Y] kopieren
 +17: F 21          JUMP LBL_21  ; Sprung zur Adresse LBL_21
 +1A: 4     LBL_1A: AM           ; A in RAM-Adr M[Y] kopieren
 +1B: A E           TIY E        ; Konstante 14 in Y laden
 +1D: 5             MA           ; RAM-Adr M[Y] in A zurücklesen
 +1E: E 6           CAL SIFT     ; A-Register bitweise nach rechts schieben
 +20: 4             AM           ; A in RAM-Adr M[Y] kopieren
 +21: 0     LBL_21: KA           ; Tastendruck nach A übernehmen
 +22: F 00          JUMP LBL_00  ; wenn kein Tastendruck Sprung zur Adresse LBL_00
 +25: A F           TIY F        ; Konstante 15 in Y laden
 +27: 5             MA           ; RAM-Adr M[Y] in A zurücklesen
 +28: 9 8           AIA 8        ; 8 zu A addieren
 +2A: 4             AM           ; A in RAM-Adr M[Y] kopieren
 +2B: F 00          JUMP LBL_00  ; Sprung zur Adresse LBL_00
 +</code>
  
  • homecomputer/gmc-4.1418744209.txt.gz
  • Zuletzt geändert: 2014/12/16 15:36
  • von volkerp