Waehrend der C-Control-Minicomputer in der "IDLE-LOOP" verharrt (das ist im Betriebssystem der Bereich von Adresse $969 bis $989), ueberprueft das Betriebssystem einerseits den Startjumper und andererseits, ob ein Zeichen ueber die serielle Schnittstelle empfangen wurde. Falls der Startjumper gesetzt ist, wird das BASIC- oder PLUS-Programm (im externen I²C-EEPROM) gestartet. Falls aber ein Zeichen ueber die RS232-Schnittstelle empfangen wurde, wird dieses als "Hostkommando" (Befehl) interpretiert. Ueber diese Befehle wird z.B. das BASIC-Programm in das externe, serielle EEPROM uebertragen oder es kann die Versionsnummer des C-Control-Chips abgefragt werden.
Um beispielsweise die Versionsnummer abzufragen muss der ASCII-Code Nr. 1 ueber die serielle Schnittstelle uebertragen werden waehrend sich der Mikrokontroller in der IDLE-LOOP aufhaelt. In einem Terminalprogramm, das unter DOS benutzt wird, muss dazu waehrend die linke ALT-Taste gedrueckt gehalten wird, im Ziffernblock die Nummer des gewuenschten ASCII-Codes eingegeben (hier: einfach Taste 1 druecken) und anschliessend die ALT-Taste losgelassen werden.
Jedes zu programmierende Byte, das zum Mikrokontroller gesendet wird, wird von diesem quittiert, indem es nach dem Empfang und dem Programmieren zum Senderechner zurueckgesendet wird. Der Senderechner kann am Echo des Minicomputers erkennen, ob die Daten fehlerfrei uebertragen wurden.
Hostkommando |
Byte-Code |
CTRL+ |
in der originalen |
implementiert |
Format (Echo nicht aufgeführt) |
Einschaltmeldung |
1 |
A |
ja |
ja |
i:1.b, o:meldung.B |
Programmierung des BASIC- oder PLUS-Programms |
2 |
B |
ja |
ja |
i:2.b länge.w daten.B |
Dump des BASIC- oder PLUS-Programms |
3 |
C |
ja |
ja |
i:3.b, o:länge.a daten.B |
Programmierung der Zeropage |
4 |
D |
nein |
ja |
i:4.b adr.b länge.b daten.B |
Dump der Zeropage |
5 |
E |
nein |
ja |
i:5.b, o:daten.B |
Programmierung von RAM2 |
6 |
F |
nein |
ja |
i:6.b adr.b länge.b daten.B |
Dump von RAM2 |
7 |
G |
nein |
ja |
i:7.b, o:daten.B |
Programmierung des internen EEPROMs |
8 |
H |
ja |
ja, verbessert |
i:8.b länge.b daten.B |
Dump des internen EEPROMs |
9 |
I |
ja |
ja |
i:9.b, o:daten.B |
Programmierung der Datendatei |
10 |
J |
nein |
nein |
i:10.b länge.w daten.B |
Dump der Datendatei |
11 |
K |
nein |
nein |
i:11.b, o:länge.a daten.B |
Programmierung der Datendatei (Wordformat) |
12 |
L |
nein |
nein |
i:12.b länge.a words.A |
Dump der Datendatei (Wordformat) |
13 |
M |
ja |
ja, verbessert |
i:13.b, o:länge.a words.A |
Stellen der Uhr |
14 |
N |
ja |
ja |
i:14.b sek.b min.b std.b dow.b tag.b mon.b jahr.b |
Assemblerprogramm in RAM2 übertragen & ausführen |
15 |
O |
nein |
nein |
i:15.b adr.b länge.b daten.B akku.b xreg.b, o:akku.b xreg.b |
Programmierung des externen EEPROMs |
16 |
P |
nein |
nein |
i:16.b adr.w länge.w daten.B |
Dump des externen EEPROMs |
17 |
Q |
nein |
nein |
i:17.b adr.w länge.w, o:daten.B |
Reset (per Watchdog) |
18 |
R |
nein |
ja |
i:18.b |
Start des BASIC- oder PLUS-Programms |
19 |
S |
nein |
ja |
i:19.b |
Taktrate setzen (wird im EEPROM gespeichert) |
20 |
T |
nein |
ja |
i:20.b takt.b, o:status4.b |
Abfrage der Statusbytes |
21 |
U |
nein |
ja |
i:21.b, o:status1.b status2.b status3.b status4.b |
CCE-Versionsabfrage |
22 |
V |
nein |
ja |
i:22.b, o:version.B |
--- |
23 |
W |
--- |
--- |
--- |
--- |
24 |
X |
--- |
--- |
--- |
--- |
25 |
Y |
--- |
--- |
--- |
Debug-Modus aktivieren |
26 |
Z |
nein |
nein |
i:26.b regs.B 13.b, Rest interaktiv |
Die Liste der Hostkommandos kann sich noch ändern. Bisher sind noch nicht alle geplanten Kommandos von den Teilnehmern des CC1-OS-Projektes implementiert (programmiert) worden.
Syntax |
Beschreibung |
i: |
bedeutet, daß die folgenden Daten zur C-Control übermittelt werden müssen |
o: |
die folgenden Daten werden von der C-Control zurückgeliefert |
x.b |
es wird genau ein Byte versendet oder empfangen (123.b versendet das Byte 123) |
x.B |
es wird mehr als ein Byte versendet oder empfangen (die Anzahl wurde z.B. durch länge bestimmt) |
x.w |
es wird genau ein Word versendet oder empfangen |
x.a |
es wird ein ASCII-codiertes Word übertragen (die Zahl 3756 wird in vier Bytes gesendet: 51.b 55.b 53.b 54.b 13.b) |
x.A |
es wird mehr als ein Word ASCII-codiert übertragen |