Hinweise zur Emulation des AC1


1. Emulierte Hardware

Den AC1 gibt es prinzipiell in drei verschiedenen Ausbaustufen: Ur-AC1 (erste veröffentlichte Ausbaustufe), AC1-ACC (die Weiterentwicklung des Amateur Computerclubs Berlin) und AC1-SCCH (die Weiterentwicklung des Studio Computerclubs Halle). Hinzu kommt ein mit AC1-2010 bezeichneter Entwurf aus dem Jahr 2010, der teilweise auf dem SCCH-Konzept basiert.

Da der AC1 als Bauanleitung veröffentlicht wurde, sind auch viele andere Konfigurationen und Weiterentwicklungen anzutreffen.

Emuliert werden:

1.1. Tastatur

Neben den gewöhnlichen Tasten für Buchstaben, Ziffern und Sonderzeichen werden folgende Steuertasten unterstützt:
TasteErzeugter Tastencode / Bedeutung
Home / Pos11
Cursor links8
Cursor rechts9
Cursor runter0Ah
Cursor hoch0Bh
Enter / Return0Dh
BackspaceSCCH-Mode: 7Fh, sonst 8
Delete / EntfSCCH-Mode: 4, sonst 7Fh
Insert / Einfg5
Bild auf11h
Bild ab15h
End / Ende1Ah
F1Inverstaste
F2Grafiktaste


1.2. 64 KByte RAM

Bei AC1-ACC, AC1-SCCH und AC1-2010 werden 64 KByte RAM emuliert. Die unteren 8 KByte liegen parallel zum ROM für das Monitorprogramm, Bildwiederholspeicher und SRAM und können über die IO-Ports 1Ch bis 1Fh sowie bei AC1-SCCH auch über IO-Port 14h ein- und wieder ausgeblendet werden.

Achtung! Bei AC1-SCCH und AC1-2010 können die 64 KByte RAM auch dann beschrieben werden, wenn in dem betreffenden Adressbereich ROM eingeblendet ist (sogenanntes "Durchschreiben").

1.3. Farbgrafik

Optional wird die von Heiko Poppe und Ralph Hänsel entwickelte Farbgrafikkarte emuliert, die auch eine Taktfrequenzumschaltung bietet. Der Farbspeicher liegt parallel zum Zeichenspeicher und enthält pro Zeichen eine Vorder- und eine Hintergrundfarbe. Das Ein- und Ausblenden des Farbspeichers erfolgt über das rücklesbare Ein-/Ausgabetor F0h, über das zusätzlich auch die Taktfrequenz umgeschaltet werden kann.

Bedeutung des Ein-/Ausgabetors F0h:
Bedeutung bei Wert 0Bedeutung bei Wert 1
Bit 0:2 MHz4 MHz
Bit 2: Bildwiederholspeicher für die Zeichencodes eingeblendet Farbspeicher eingeblendet


Bedeutung einer Speicherzelle im Farbspeicher:
BitBedeutung
0Vordergrundfarbe rot
1Vordergrundfarbe grün
2Vordergrundfarbe blau
3Vordergrundfarbe intensiv
4Hintergrundgrundfarbe rot
5Hintergrundgrundfarbe grün
6Hintergrundgrundfarbe blau
7Hintergrundgrundfarbe intensiv


Ist die Emulation der Farbgrafik aktiviert, muss auch das Monitorprogramm den Farbspeicher initialisieren. Anderenfalls sehen Sie nur ein buntes Zufallsbild. Da aber die meisten der in JKCEMU integrierten AC1-Monitorprogramme keine Farbgrafik kennen und somit auch keinen Farbspeicher initialisieren, erledigt das der Emulator bei jedem RESET automatisch, allerdings nur für die betreffenden integrierten Monitorprogramme. Haben Sie das Monitorprogramm als externe Datei eingebunden, dann muss dieses auch die Farbgrafik unterstützen, oder Sie schalten die Emulation der Farbgrafik aus.

1.4. Floppy-Disk-Modul

Für den AC1 wurden mehrere Schaltungen für eine Diskettenanbindung entwickelt, die sich teilweise funktional und in den verwendeten Ein-/Ausgabeadressen etwas unterscheiden. JKCEMU emuliert gleichzeitig mehrere der geläufigsten Schaltungen. Konkret werden folgende E/A-Adressen unterstützt:
E/A-Adresse (hexadezimal) ZugriffBedeutung
40 R FDC-Statusregister
41 RW FDC-Datenregister
42, 43 W WAIT-Mode (bis zum nächsten FDC-Interrupt warten)
44, 45 W
  • Bit 1: WAIT-Freigabe (siehe Port 42/43)
  • Bit 4: Terminal Count
48, 49 W Terminal Count (unabhängig vom ausgegebenen Wert)


1.5. SCCH-Modul 1

Das SCCH-Modul 1 stellt zusätzlichen ROM zur Verfügung, und zwar:
Gesteuert wird das Modul über das Ausgabetor 14h:
Bit 0: Programmpaket X im Bereich E000-FFFF einblenden
Bit 1: Grafik/Sound-BASIC im Bereich 4000-5FFF einblenden
Bit 3: Ein Segment der ROM-Disk im Bereich C000-FFFF bzw. 8000-FFFF einblenden,
Die Bits 0, 4, 5 und 6 legen das entsprechende 16K- bzw. 32K-Segment fest.

JKCEMU liefert keinen Inhalt für das Programmpaket X und die ROM-Disk mit. Diesen müssen Sie in den Einstellungen durch Einbinden von ROM-Dateien festlegen.

1.6. SCCH-Modul 3

Das SCCH-Modul 3 stellt je nach Bestückung 64, 128, 256, 320 oder 512 KByte zusätzlichen RAM zur Verfügung, der über E/A-Befehle in den Arbeitsspeicher eingeblendet werden kann. Konkret wird über die Bits 0 bis 3 des E/A-Tors 15h einer von 16 möglichen 64 KByte größen Blöcken ausgewählt, der dann entsprehend der Bits 4 bis 7 des gleichen IO-Ports nur lesend, nur schreibend oder lesend und schreibend (dann aber nur 32 KByte) eingeblendet wird.

Der Adressraum für den zusätzlichen RAM beträgt 1 MByte (16 x 64 KByte). Obwohl das Originalmodul nur mit max. 512 KByte bestückt werden kann, emuliert JKCEMU die theoretisch möglichen 1 MByte. Das hat den Vorteil, dass Software, die diesen zusätzlichen RAM verwendet, nicht speziell für den Einsatz in JKCEMU konfiguriert werden muss, denn auf jeder Adresse, wo die jeweilige Software RAM voraussetzt, wird sie in JKCEMU auch RAM vorfinden.

1.7. SCCH-Inversschaltung

Die SCCH-Inversschaltung erkennt die im Bildwiederholspeicher stehenden Bytes mit den Werten 10h und 11h. Bei 11h wird die Inversdarstellung ein- und bei 10h wieder ausgeschaltet. Unabhängig davon wird am Zeilenende die Inversdarstellung immer ausgeschaltet.

1.8. Inverstaste (F1)

Die SCCH-Inversschaltung enthält im Original auch einen Schalter, mit dem der gesamte Bildschirm invertiert werden kann. JKCEMU emulierte diesen Schalter mit der Taste F1. Obwohl im Original nicht üblich, wird der Inversschalter auch beim Ur-AC1 und beim AC1-ACC emuliert.

1.9. Grafiktaste (F2)

Mit der Grafiktaste (F2) ist die Eingabe von Grafikzeichen über die Tastatur möglich. Dies muss allerdings vom jeweiligen Anwendungsprogramm auch so unterstützt werden. Das in JKCEMU enthaltene Grafik/Sound-BASIC unterstützt die Grafiktaste.

1.10. Zeichensatzumschaltung

Die Zeichensatzumschaltung wird nur beim Monitorprogramm 10/88 emuliert. Über die System-PIO kann zwischen dem Zeichensatz des AC1-ACC (PIO B3=0) und dem SCCH-Zeichensatz (PIO B3=1) umgeschaltet werden. Die Umschaltung funktioniert auch, wenn Sie in den Einstellungen eine alternative Zeichensatzdatei angegeben haben. Wenn diese Datei größer als 2 KByte ist, wird zwichen den unteren und den oberen 2 KByte umgeschaltet.

1.11. V24-Schnittstelle mit Drucker

Es wird die zusätzliche PIO (E/A-Adressen 08-0Bh) mit der darüber realisierten V24-Schnittstelle und einem daran angeschlossenen Drucker emuliert. Die Druckerschnittstelle ist dabei auf die Parameter eingestellt, die die integrierten SCCH-Monitorprogramme nach einem RESET einnehmen. So können über die Funktionen der SCCH-Monitorprogramme Zeichen auf dem emulierten Drucker ausgegeben werden, ohne die V24-Parameter ändern zu müssen.

Zum einfachen Ausprobieren der Druckeremulation können Sie in einem SCCH-Monitorprogramm mit Ctrl-X die Bildschirmausgabe zusätzlich auf den Drucker leiten. Mit Ctrl-Y schalten Sie das wieder aus.

1.12. AC1-2010 ROM-Bänke

Beim AC1-2010 kann zusätzlicher ROM in den Arbeitsspeicher eingeblendet werden. Durch Ausgabe des Wertes 10h, 20h, 40h oder 60h auf dem Ausgabetor 0Fh wird im Adressbereich 2000h bis 27FFh eine von vier möglichen ROM-Bänken der PIO2-Karte eingeblendet. Der Wert 0 blendet die ROM-Bank aus. Den Inhalt dieser ROM-Bänke können Sie in den Einstellungen durch Einbinden einer 8 KByte großen ROM-Datei festlegen. Haben Sie keine solche ROM-Datei eingebunden, enthält die erste Bank ein Diskettenverwaltungsprogramm und die zweite ein Verwaltungsprogramm für weitere ROM-Bänke.

Diese weiteren ROM-Bänke (16 Stück) können durch Ausgabe eines der Werte F0h bis FFh auf dem Ausgabetor 0Eh im Bereich ab A000h eingeblendet werden. Dabei wird der RAM ab Adresse 8000h ausgeblendet. Die einzelnen Segmente haben unterschiedliche Längen. Den Inhalt der ROM-Bänke legen Sie durch Einbinden einer ROM-Datei fest, in der einfach alle Segmente hintereinander enthalten sind (88 KByte). Die Tabelle zeigt die Größe der einzelnen Segmente sowie deren Anfangsposition in der einzubindenden ROM-Datei:

Segment-Nummer (Ausgabe auf Port 0Eh) Segmentgröße in KByte Anfangsposition in der ROM-Datei
F0h80
F1h82000h
F2h84000h
F3h86000h
F4h48000h
F5h49000h
F6h2A000h
F7h2A800h
F8h8B000h
F9h8D000h
FAh8F000h
FBh811000h
FCh413000h
FDh414000h
FEh215000h
FFh215800h


2. Im ROM enthaltene Software


3. BASIC

3.1. Laden, Speichern und Öffnen von BASIC-Programmen

JKCEMU bietet spezielle Unterstützung für das Laden und Speichern von BASIC-Programmen sowie für das Öffnen von im Arbeitsspeicher befindlichen BASIC-Programmen im Texteditor. Die entsprechenden Funktionen finden Sie im Menü Datei.

Folgende BASIC-Interpreter werden unterstützt:

Beim Speichern von BASIC-Programmen erscheint ein Fenster zur Auswahl des Dateiformats. Speichern Sie bitte im Headersave-Format, welches bereits vorausgewählt ist. Nur dann ist sichergestellt, dass Sie das BASIC-Programm später auch wieder problemlos laden können. Bei einem anderen Dateiformat werden nämlich beim Laden die Systemzellen des BASIC-Interpreters nicht angepasst, und Sie können das BASIC-Programm im Interpreter nicht richtig nutzen.

3.2. Grafik/Sound-BASIC

Der Grafik/Sound-BASIC-Interpreter Version 3.2 ist im SCCH-Mode verfügbar und liegt in einem Hintergrund-ROM im Adressbereich 4000-5FFF. Standardmäßig befindet sich in diesem Adressbereich RAM. Über das Bit 1 des IO-Ports 14h kann der ROM in den Vordergrund geholt und somit der BASIC-Interpreter in dem Adressbereich sichtbar gemacht werden.

Mit den im Emulator integrierten SCCH-Monitorprogrammen können Sie das BASIC mit dem Kommando b direkt aufrufen (Kaltstart). Dabei wird auch der BASIC-ROM in den Vordergrund geholt. Einen Warmstart des Interpreters führen Sie mit dem Kommando r aus.

4. Sonstiges

4.1. Einfügen von Text aus der Zwischenablage

Das Einfügen von Text aus der Zwichenablage erfolgt gewöhnlich in der Form, dass für jedes einzufügende Zeichen das Drücken der entsprechenden Taste bzw. Tastenkombination simuliert wird. Dieses Prinzip ist recht langsam. Für den AC1 gibt es in den Einstellungen die Option Einfügen von Text durch Abfangen des Systemaufrufs. Bei dieser Option lauscht der Emulator auf der Adresse 1802h, dem Einsprung zur Systemfunktion zum Lesen eines Zeichens von der Tastatur. Wenn diese Systemfunktion aufgerufen wird, prüft JKCEMU, ob ein Zeichen eingefügt werden soll. Wenn ja, schreibt er das nächste einzufügende Zeichen in das entsprechende Prozessorregister und simuliert einen RETURN-Befehl. Sollten das Betriebssystem oder das Anwendungsprogramm die Tastatur nicht über diesen Einsprungpunkt abfragen, funktioniert das Einfügen von Text nicht, und Sie müssen die Option ausschalten. Ebenfalls ausschalten müssen Sie die Option bei Verwendung eines anderen (z.B. CP/M-kompatiblen) Betriebssystems.