Im März 1998 gelang erstmalig der Betrieb eines damals handelsüblichen PC-Handscanners am KC85/4 im zweiten Anlauf. Der Originalartikel in den KC-News 2/98 gab das Know How weiter und die ganze Geschichte führte schliesslich zur Entwicklung des KC85 Modules M051, welches seit 2000 über den KC-Club bezogen werden kann.

Die nächste Hürde ist genommen, im März (1998) gelang es mir endlich mit Hilfe eines normalen PC-Handscanners Vorlagen in den KC85/4 einzulesen.

Kurz zur Vorgeschichte, 1993 wurde im Heft 2 der Zeitschrift c't ab Seite 124 im Beitrag "Fremdgänger" ein Projekt vorgestellt, wo mittels eines Eigenbau-Interface ein PC-Handscanner an einem Atari ST betrieben werden konnte. Der Atari ST ist zwar als 16-Bit-Rechner nicht mit dem KC85 vergleichbar aber zumindest sind beide elektrisch kompatibel.

Im c't-Artikel wurden sehr umfassende Informationen über Aufbau, Arbeitsweise und vor allem zu den Signalen eines Scanners veröffentlicht, so daß ich damals nach eingehendem Studium zu der Erkenntnis gelangte, eigentlich könnte das am KC auch funktionieren.

Gesagt getan - ich bestellte mir die originale Interface-Leiterplatte, die Bauteile, sowie das notwendige GAL und bastelte auf der Platine eines M005-USER-Moduls eine Versuchsanordnung zusammen. Nach einigem Herumprobieren war zwar im ersten Versuch Ende 1993 eine Funktion nachweisbar, sprich die Scanzeilen wurden korrekt synchronisiert aber die Daten innerhalb der Zeile, also die Scanbytes, waren falsch und hatten mit der Scanvorlage nicht viel gemeinsam. Zuende kam ich damals nicht, da der Schaltplan des M001 fehlte. Das Projekt wurde wieder auf Eis gelegt und ruhte bis Anfang 1998...

Im Februar dieses Jahr (1998) entschloß ich mich in Hinblick auf das Jahrestreffen und auf Grund der Userbefragung unseres Clubs dieses Projekt noch einmal aufleben zu lassen. Wie zum KC-Treffen zu sehen war, hat es sich auch gelohnt. Zumindest der Prototyp brachte endlich die gewünschte Funktion und stellt damit die Grundlage für einen nachvollziehbaren Anschluß von geeigneten PC-Handscannern an den KC85/4 dar.

Der heutige Artikel soll keine Bauanleitung werden - ich gebe an dieser Stelle das notwendige Know-How weiter, um den "ganz wilden Freaks" einen Nachbau zu ermöglichen. Wenn alles klappt, befindet sich im Anhang dieser News der Originalartikel aus der c't 2/93 und zwei Seiten aus einer aktuellen c't, wo man die Bestellinfos für das GAL und die Atari-Interface-Platine entnehmen kann. Zusammen mit dem heutigen Artikel sollte fortgeschrittenen KC-Usern ein Nachbau meiner Versuchsanordnung möglich sein.

 

Schaltungsprinzip

Beim Atari wird das Interface in den Adressraum des Prozessors eingeblendet, so daß die Daten über Speicherzugriffe gelesen werden. Da der KC85 nur einen 8-Bit-Datenbus hat, erschien es mir damals einfacher, eine PIO zu benutzen - zwei Ports mit je 8 Bit ergeben dann auch wieder 16 Bit. Alle Daten werden im KC85 über I/O-Zugriffe gelesen, mit dem M001 steht ein fast ideal geeignetes Modul zur Verfügung, so daß man dort das originale Interface eigentlich nur anschließen muß. Nun ganz so einfach war es dann doch nicht aber der zusätzliche Aufwand hält sich mit 3 Gatterschaltkreisen wirklich in Grenzen:

 

Blockschaltbild Scannerinterface
 
 
Blockschaltbild
 

Im Blockschaltbild ist die Versuchsanordnung dargestellt. Das ATARI-INTERFACE, die BUS-ANPASSUNG und deren STROMVERSORGUNG befinden sich auf der Platine eines M005 bzw. werden von dort entnommen. Der Scanner wird an der 8-poligen Mini-DIN-Buchse, welche sich auf der Atari-Interfaceplatine befindet, angesteckt.

Die SCANDATEN und INTERFACE-MELDUNGEN werden vom Atari-Interface zum Peripheriesteckverbinder des M001 geführt. Die als KC-BUS bezeichnete Verbindung (s.u.) muß man direkt an den PIO-Pins im M001 abnehmen (stehen am Steckverbinder nicht zur Verfügung) und zu den Gattern, welche sich auf dem M005 befinden, führen. Von diesen Gattern geht es dann wieder zum Atari-Interface (ATARI-BUS). Die 12V für den Scanner nimmt man von der Platine des M005 ab und lötet sie direkt auf der Leiterplatte des Atari-Interface an der entsprechenden Stelle an (PL 2 Mittelkontakt). Nachfolgend eine genaue Aufstellung aller notwendigen Verbindungen laut Blockschaltbild mit einigen kurzen Hinweisen.

 

SCANDATEN
 
Steckverbinder M001 PIO-Kanal A  Bedeutung Atari-Interface
     
2AA0--------------------------
D89
3AA1
-------------------------- D910
4AA2-------------------------- D107
5AA3--------------------------
D118
6AA4--------------------------
D125
7AA5--------------------------
D136
8AA6--------------------------
D143
9AA7--------------------------
D154



Die seriellen Scandaten des Scanners werden vom Interface in einem 8-Bit-Schieberegister gesammelt und byteweise zur Verfügung gestellt. Die 8 Leitungen übertragen dann immer ein Datenbyte zum M001 und können dort über Kanal A eingelesen werden.

 

INTERFACE-MELDUNGEN

Steckverbinder M001
PIO-Kanal B
 Bedeutung
Atari-Interface
     
2BB0-------------------------- D017
3BB1--------------------------
D118


Die Meldungen des Interface werden über Kanal B der PIO des M001 eingelesen. Es sind zwei Leitungen erforderlich, an B0 kann der KC85 erfahren, wann ein neues Datenbyte fertig ist und an B1 wird der Beginn einer neuen Scanzeile vom Atari-Interface gemeldet, genaue Informationen zum (nichtvorhandenen) Übertragungsprotokoll können im c't-Originalartikel nachgelesen werden.

 

Stromversorgung
 
Leiterplatte M005
 BedeutungAtari-Interface
    
AB29
--------------------------
+ 5V1, 2
A28
--------------------------+ 12V
Mitte PL2
AB1--------------------------Masse
38, 29, 40


Ein Scanner benötigt 12 V für die LED-Zeile, welche die Vorlage beleuchtet. Mit 300 mA Strombedarf geht das schon an die Grenze des KC-Netzteiles, laut Modulbeschreibung können pro Modul 100 mA entnommen werden, bei mir steckte das M005 im Busdriver, wo 4 Module Platz finden. 4 * 100 ergibt 400 mA, so daß eigentlich nichts passieren dürfte. Die 12 V werden nur dann belastet, wenn man scannt, wenn man also nicht stundenlang herumprobiert, sollte keine Gefahr bestehen - alle Angaben ohne Gewähr! Ich kann keine Garantien geben, daß es nicht doch irgendwann zu Überlastungen kommt.

Im Originalartikel kann man nachlesen, wie bespielsweise auch ein externes Steckernetzteil angeschlossen werden kann. Darauf habe ich verzichtet und die Variante mit der direkten Speisung durch den KC gewählt, der dort auch angegebene Sperrwandler bringt uns nichts, da nur noch mehr Strom, dann von den 5 V, gezogen wird.

Das Interface wurde von mir also ohne Sperrwandler bestückt, so daß (siehe Artikel) die Bauelemente IC5, T3-T5, R3-7, L1-2, D1 und C3 entfallen. Anstelle von L2 wurde die freigewordene D1 wie angegeben als Verpolungsschutz eingelötet. PL2 habe ich auch weggelassen, da dort direkt der Anschluß der 12 V vom M005 angelötet wurde. Zur Stromversorgung gehört auch der Anschluß der Gatter der BUS-ANPASSUNG (5 V und Masse) - das darf nicht vergessen werden!

 

Busanpassung Scannerinterface
 
 
BUS-ANPASSUNG
 
 
Bis hierher war die Lösung einfach und wohl auch für die meisten User halbwegs verständlich. Mit dem Aufbau der Hardware hatte ich auch keine Probleme. Jetzt ging es aber um die Wurst, der Scanner steckte am (unveränderten) Atari-Interface, alle Bauteile haben ihren "Saft" und nun war nur noch das Interface davon zu überzeugen, daß ein Atari am anderen Ende hängt und die Daten abholt.

Zuerst hatte ich versucht, alles per Software zu realisieren. Im Nachhinein betrachtet ist das absolut aussichtslos durch die äußerst knappen zeitlichen Rahmenbedingungen.

Mir blieb also nichts anderes übrig, mich mit den Bussignalen (LDS/UDS/ROM3/ROM4) des Atari zu beschäftigen und nachdem ich das einigermaßen verstanden hatte, zu versuchen, mittels der zur Verfügung stehenden KC-Bussignale ein gleichartiges Signalspiel per Hardware am Interface zu erzeugen.

Nach 2 Wochen war dann die oben angegebene Schaltung für die BUS-ANPASSUNG entstanden, welche genau diese Funktion erfüllt und dem Interface vorgaukelt, daß Speicherschreibzugriffe eines Atari ST die Scandaten abholen, obwohl es ein KC über I/O-Zugriffe vornimmt.

Bit 7 der M001-PIO Kanal B steuert hierbei die 12 V-Stromversorgung des Scanners, nur bei 1 ist der Scanner online, was bei der Softwareerstellung zu berücksichtigen ist.

Zur Funktion möchte ich an dieser Stelle nichts sagen, die relativ komplizierten Zusammenhänge kann man dem Originalartikel entnehmen und im Endeffekt interessiert ja nur, daß es funktioniert.

 

Zusammenfassung

Rückblickend läßt sich feststellen, daß die prima Vorleistung durch den Autor des Originalartikels und meine bescheidene zusätzliche Arbeit ein nachvollziehbarer Anschluß von einfachen PC-Handscannern an den KC85 möglich sein müßte. Mit dem Interface getestete Typen von Scannern kann man dem Artikel entnehmen. Entscheidend dabei ist, daß sich der Scanner im Pixelmodus betreiben läßt, also jedes gesendete Bit einem Bildpunkt der Vorlage entspricht. Scanner, welche nur Graustufen (8-Bit-Wert für einen Bildpunkt der Vorlage) liefern, sind nicht geeignet!

Für Testzwecke stelle ich noch ein kurzes Programm zur Verfügung, welches ich auch auf dem KC-Treffen verwendet hatte. Es liest ein komplettes KC-Bild unhabhängig von der am Scanner eingestellten Auflösung ein und stellt die Daten direkt auf dem Bildschirm des KC85/4 dar.

Es ist unter CAOS zu laden und wird aus dem CAOS-Menü heraus gestartet. %INI initialisiert das M001, Voreinstellung ist Kanal 1C des Busdrivers. Wenn ein anderer Steckplatz verwendet werden soll, ist der EDAS-Quelltext zu ändern und neu zu übersetzen oder man ändert mit MODIFY den Schacht direkt im RAM! Mit %SCAN startet man den Scanvorgang, welcher erst beendet wird, wenn 256 Zeilen eingelesen wurden, er kann nicht abgebrochen werden!

Zum Treffen haben wir über den weiteren Weg diskutiert, es soll eine eigene Modulleiterplatte für ein Scannermodul entwickelt werden, dann würde auch eine Erstellung von "richtiger" Software lohnenswert, z.B. in Form eines zusätzlichen User-Overlays für UNIPIC 2.0. Bis dahin wird aber noch etwas Zeit ins Land gehen, sicher ist in den News dann auch wieder etwas darüber zu lesen.

(Ende des Originalartikels aus den KC-News 2/98)

 


 

Scannermodul M051

Wie einleitend bereits geschrieben, wurden die notwendigen Bestandteile der Atari-Interface Schaltung, des M001 und die BUS-Anpassung in den Scanner-Teil des neuen KC-Modules M051 integriert, welches zusätzlich noch eine standardisierte RS232-Schnittstelle und einen I2C-Bus zur Verfügung stellt:

 

Scanner Modul M051

 

Die beiden zusätzlichen Schnittstellen werden mit Hilfe eines ATMEL-Controllers AT89S8252, welcher direkt am KC-Systembus betrieben wird, bereitgestellt. Die Controller-Software wurde von Frank Dachselt und Enrico Grämer entwickelt. Die wichtigsten Daten des M051:

 

Strukturbyte (Modulkennung)  :  EC H

Basisadresse PIO             :  20 H

Basisadresse Controller      :  24 H

I/O-Adressen des Controllers

  SIO-Daten :  24 H
  I2C-Daten :  25 H
SIO-Befehle :  26 H
I2C-Befehle :  27 H

 

Beiträge zu Entwicklung und Programmierung des Modules gab es in den KC-News Ausgaben 04/1998, 04/1999 und 03/2000, sowie den MTOOLS-Artikeln von Frank Dachselt. Den originalen Artikel aus der c't 2/93 kann man im Online-Archiv der Zeitschrift gegen eine geringe Gebühr bekommen. Dort findet man auch die komplette Schaltung für das originale Atari-Interface.

Die Schaltpläne für das M051 wurden in den KC-News 04/1999 veröffentlicht, auf Nachfrage kann man die auch direkt von Enrico Grämer beziehen, genauso wie ein programmiertes GAL für das Atari-Interface.

 

Nachnutzung und Software

Prinzipiell lässt sich der Scanner an ein beliebiges Z80-System mit einer PIO-Schnittstelle anschliessen. Man muss dann die Atari-Interface Schaltung und alle o.g. Schaltungsteile selbst aufbauen. Für den KC85 Anwender ist das M051 natürlich die bequemste Möglichkeit, da es dafür bereits ein funktionierendes User-Plugin in UNIPIC 2.x gibt. Das stellt zwar nur eine Grundfunktionalität bereit aber man kann damit scannen und die Bilder gleich in UNIPIC weiterbearbeiten und speichern:

 

UNIPIC 2.x SCAN MENU

 

Für alle anderen steht im Downloadbereich der EDAS-Quelltext des kleinen CAOS-Testprogrammes zur Verfügung. Das Programm ist für das M001 Digital IN/OUT Modul des KC85 gedacht. Prinzipiell sollte auch das M061 von E. Müller dafür einsetzbar sein, wenn man den Quelltext entsprechend anpasst.

Der KC85 ist mit seinen 1,75 MHz Taktfrequenz nicht unbedingt der schnellste Z80 Computer. Er ist dadurch lediglich in der Lage bis 200 dpi Auflösung des Handscanners den anfallenden Datenstrom schnell genug entgegen zu nehmen. Im M051 kann man deshalb mit Bit 6=1 von Kanal B der PIO den Pixeltakt des Scanners per Hardware halbieren lassen.

Dadurch kommt am KC85 nur noch die halbe physikalisch eingestellte Auflösung des Scanners an, man kann dann aber alle Auflösungen (100, 200, 300, 400 dpi) der gängigen Handscanner nutzen, ohne dass Bilddaten verloren gehen. Leider funktioniert aus diesem Grund auch nicht jeder beliebige Handscanner am KC85 bzw. am Interface. Das Interface muss den Scanner "verstehen" und er darf die Daten nicht schneller senden, als die Masse der üblichen Handscanner in den 90ern.

Die Übertragung der Daten ist bei diesen Geräten leider nicht standardisiert und es gibt keinen Handshake o.ä., auch wenn die meisten Handscanner nahezu identisch arbeiten. Zu den KC-Treffen sind bereits Scannermodelle zu sehen gewesen, welche gar nicht funktionieren oder die Bilddaten nur verstümmelt auf dem Bildschirm dargestellt werden. Das ist meist ein Indiz dafür, dass der Pixeltakt des Scanners zu hoch ist.

 

Scanner

Mittlerweile sind die im Projekt verwendeten PC-Handscanner ausgestorben und wohl nur noch auf Flohmärkten oder ähnlichen Bezugsquellen zu bekommen. Ich hatte mir Ende '93 einen neuen Scanner P105 für 99,- DM bei der Firma Conrad gekauft, welcher zusammen mit einer Interface-Karte für den ISA-Bus geliefert wurde. Die Software war unter Windows 3.1 lauffähig, benutzt habe ich sie kaum.

Ganz nützlich war auch das mitbestellte Scanner-Pad, wo man die Belichtung und andere Parameter für den Scanvorgang vorher einjustieren konnte:

 

Scannerpad

 

PC-Handscanner

 

Scanner Unterseite



Da der KC keine richtige Grafikkarte hat, lässt sich der Scanner nur als Pixellieferant verwenden, im Grauwert- oder Farbmodus lassen sich die gelieferten Daten nicht darstellen. Aber immerhin war das damals besser als gar nichts und man konnte ziemlich mühelos kleinere schwarz/weiss Grafiken in den KC85/4 bekommen.

Bevor man beim Scannen einigermassen akzeptable Ergebnisse erreicht, ist erst mal etwas Übung notwendig. Im Gegensatz zu den heute üblichen Flachbettscannern muss man die Handscanner selbst über die Vorlage ziehen, wie es der Name ja schon sagt.

Das darf nicht zu schnell passieren, sonst werden komplette Bildzeilen verschluckt. Auf der Oberseite der Scanner befindet sich meist eine LED, welche auf die Überschreitung der zulässigen Höchstgeschwindigkeit durch auffälliges Blinken hinweist:

 

Kontrolle Scangeschwindigkeit

 

Wie oben geschrieben, lassen sich am Handscanner meist Auflösungen zwischen 100 und 400 dpi einstellen. Wenn man im UNIPIC-Plugin "1/2 CLOCK" einschaltet, halbiert die Hardware des Moduls diese Auflösungen auf 50/100/150/200 dpi, was dann auch so angezeigt wird:

 

Auflösung 

 

Wichtig ist die Einstellung des richtigen Betriebsmodus des Scanners. Bei meinem Scanner wird der mit "Text " bezeichnet. Nur in dieser Einstellung werden die abgetasteten Bilddaten mit einer Bittiefe von 1 Bit gesendet, was der KC85 dann auch 1:1 darstellen kann:

 

Modus 

 

Die 2 wichtigsten Bedienelemente beim eigentlichen Scanvorgang sind dann die Taste für "START" und der Belichtungsregler "LIGHT - DARK". Die Starttaste muss man drücken und die ganze Zeit festhalten, während man den Scanner langsam und gleichmässig über die Vorlage zieht. Mit Hilfe des Belichtungsreglers kann man einstellen, wo der Scanner die Grenze zwischen Bildpunkt schwarz bzw. weiss zieht, damit sollte man ausgiebig experimentieren bis das entstehende Computerbild den eigenen Vorstellungen entspricht:

 

Start und Scantaste  Belichtung

 

Sicherlich wird man bei den heutigen Möglichkeiten nicht mehr von schwarz/weisser Pixelgrafik beeindruckt sein aber wenn man sich die beiden folgenden Bilder ansieht, wird man nicht gerade einen 1,75 MHz Heimcomputer aus dem Jahr 1988 mit Z80 CPU und einen Handscanner als Digitalisierer dahinter vermuten, die Bilder wurden übrigens nicht nachbearbeitet:

 

Beispielscan mit KC85/4 und UNIPIC 

Beispielscan mit KC85/4 und UNIPIC