logo

Elektronik-Dachbude

logo

Der Befehlssatz


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 Unterprogramme des Interpreters 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.

 Zusätzlich gibt es ein Flag, also einen 1-Bit-Merker, der wie eine Flagge hoch- oder runtergesetzt werden kann. Viele Befehle setzen das Flag grundsätzlich auf 1, andere setzen es in Abhängigkeit von der jeweiligen Aktion wahlweise auf Null oder Eins. Der Zustand des Flags wird vom Sprungbefehl ausgewertet. Der Sprung zur angegebenen Adresse wird nur dann ausgeführt, wenn Flag=1 ist.

Code

Befehl

Wirkung

Flag

Kommentar

0

KA

A=K

0, 1

Tastendruck nach A übernehmen, Flag = 0 bei Tastendruck, sonst Flag = 1

(KA = Key to A)

1

AO

Op=A

1

A an Siebensegmentanzeige ausgeben

(AO = A to Output)

2

CH

A<=>B

Y<=>Z

1

Tausche A und B sowie Y und Z

(CH = Change)

3

CY

Ar<=>Yr

1

Austausch der Inhalte von A und Y

(CY = Change A and Y)

4

AM

M=A

1

A in RAM-Adr (50+Y) kopieren

(AM = A to Memory)

5

MA

A=M

1

RAM-Adr (50+Y) in A zurücklesen

(MA = Memory to A)

6

M+

A=M+A

0, 1

RAM-Adr (50+Y) zu A addieren,

bei Überlauf: Flag = 1

7

M-

A=M-A

0, 1

RAM-Adr (50+Y) von A subtrahieren, bei Überlauf: Flag = 1

8

TIA [ ]

A=[ ]

1

Konstante in A laden

(TIA = Transfer Immediate to A)

9

AIA [ ]

A=A+[ ]

0, 1

Konstante zu A addieren,

bei Überlauf: Flag = 1

(AIA = Add Immediate to A)

A

TIY [ ]

Y=[ ]

1

Konstante in Y laden

(TIY = Transfer Immediate to Y)

B

AIY [ ]

Y=Y+[ ]

0, 1

Konstante zu Y addieren,

bei Überlauf: Flag = 1

(AIY = Add Immediate to Y)

C

CIA [ ]

A=[ ] ?

0, 1

A mit Konstante vergleichen, bei Übereinstimmung: Flag =0

(Compare Immediate and A)

D

CIY [ ]

Y=[ ] ?

0, 1

Y mit Konstante vergleichen, bei Übereinstimmung: Flag =0

(Compare Immediate and Y)

E

CAL

---

---

Unterprogrammaufrufe,

Erweiterte Befehle

(Call)

F

JUMP [ ] [ ]

  Adr= [ ] [ ]

1

Direkter Sprung zur Adresse [High] [Low] wenn Flag = 1

Unterprogramme:

 

Code

Befehl

Flag

Kommentar

E 0

CAL RSTO

1

Siebensegmentanzeige löschen

E 1

CAL SETR

1

Einzelne LED einschalten. In Y wird die Nummer der LED (0-6) übergeben.

E 2

CAL RSTR

1

Einzelne LED ausschalten. In Y wird die Nummer der LED (0-6) übergeben.

E4

CAL CMPL

1

Komplement des A-Registers (aus F wird 0)

E 5

CAL CHNG

1

Inhalte der Register A,B,Y,Z  mit A',B',Y',Z' tauschen

E 6

CAL SIFT

0, 1

A-Register bitweise nach recht schieben. Flag wird 1 wenn das rechte Bit 0 war.

E 7

CAL ENDS

1

Ende-Sound

E 8

CAL ERRS

1

Error-Sound

E 9

CAL SHTS

1

Kurzer Ton

E A

CAL LONS

1

Langer Ton

E B

CAL SUND

1

Note spielen, die im A-Register übergeben wird (1 ... E)

E C

CAL TIMR

1

 (A + 1) * 0,1 Sekunden warten

E D

CAL DSPR

1

Ausgabe der RAM-Adressen 5F (high) und 5E  (low) an die LEDs


Home
Copyright 2012 Fabian Kainka | All Rights Reserved.