Ich möchte mich mit zwei Fragen an Sie wenden:
Wie ist es möglich, die akustische Rückmeldung der Tastatur im eigenen Programm abzustellen?
Wo bekommt man einen GDOS-Druckertreiber für einen EPSON-kompatiblen A4-quer Drucker?
(Reto Schmid, Wallbach. Schweiz)
Red.: Zu Ihrer ersten Frage: Die akustische Rückmeldung läßt sich durch eine interne Betriebssystemvariable manipulieren. Diese Variable liegt an der Adresse $484 und heißt conterm. Die Bedeutung der Bits ist wie folgt:
Bit 0: Tastenklick ein(1)/ aus(0);
Bit 1: Tastenwiederholung ein(1)/aus(0);
Bit 2: Glocke bei der Ausgabe von CNTRL-G;
Bit 3: Einblendung der Kbshift()-Information in die Bits 24..31 in das Zeichen, das bei Cconin() zurückgegeben wird, einschalten(1).
Zu Ihrer zweiten Frage: Ein GDOS-Treiber für einen EPSON-kompatiblen A4-quer Drucker ist uns nicht bekannt. Sollte ein Leser einen solchen besitzen oder wissen, wo man einen solchen Treiber erwerben kann, möge er sich bei uns melden, damit wir diese Information weitergeben können.
Herr Frank schreibt in seinem Artikel PREVIEW der Programmierpraxis 10/89 auf Seite 95, es gäbe Probleme mit dem Accessory, wenn GDOS resident sei. Das liegt nach meinen Erfahrungen mit GEM an einem Programmierfehler, der auch in professioneller Software (zum Beispiel SIGNUM!2) verbreitet ist. Es handelt sich darum, daß das Handle auch bei der Übergabe an v_opnvwk() einen definierten Wert haben muß, nämlich den der physikalischen Handle des Bildschirms. Dieser ist leider nicht immer, sondern nur meistens Null. Die richtige Programmierung können Sie Listing 1 entnehmen. Die Trennung dieses Handles soll zum Beispiel dazu dienen, daß man durch mehrfaches Öffnen virtueller Workstations Viewports für verschiedene Fenster programmieren kann, die alle eigenständige Parameter besitzen, so daß beispielsweise das Ändern des Linientyps nur in einem Fenster wirksam wird.
main()
{
WORD ap_id, phys_handle, handle, i, d;
ap_id = appl_int();
/* GEM-Applikation anmelden und ID holen */
/* physikalisches (!) Handle des Bildschirms holen, bei GDOS nicht Null */
phys_handle = graf_handle(&d,&d,&d,&d);
/* wichtig!*/
/* Parameter in work_in[] auf bestimmte Werte setzen */
handle = phys_handle;
for (i = 0; i < 10; work_in[i++] = 1);
work_in[10]=2;
v_opnvwk(work_in, &handle, work_out);
/* ermitteltes Handle nutzen */
}
Listing 1
Ich habe ein Problem bezüglich der Funktion Load Data im RCS von Digital Research. Wenn ich ein Icon/Image edieren will, bekomme ich immer die Meldung, daß ich die Daten und/oder Maske von Diskette nachladen soll. Auch in der Anleitung zum RCS in ihrem Sonderheft Nr. 2 findet sich kein Hinweis auf ein derartiges Programm.
Meine Nachfrage bei einem ATARI-Fachhändler bezüglich eines Programms zum Edieren von Icons/Images führte zu keinem Ergebnis. Also entschloß ich mich, ein solches Programm zu entwickeln. Nachdem ich meine Bücher über GEM studiert hatte, mußte ich dieses Projekt jedoch vorerst auf Eis legen, da in keinem der Bücher der Aufbau einer derartigen Icon/Image-Datei beschrieben ist. Deshalb wende ich mich jetzt voller Hoffnung an Sie, da ich annehme, daß ich nicht der erste ATARI-User bin, der bei diesem Problem Rat sucht. Ich wäre Ihnen sehr dankbar, wenn Sie mir den Datenaufbau einmal erläutern würden. Dieser Datenaufbau wäre übrigens ein gutes Thema für eine der ST-Ecken in Ihrer hervorragenden Zeitung.
Sollte es in Ihrer umfangreichen Public-Domain-Sammlung bereits ein solches Programm geben, wäre ich für einen Hinweis darauf ebenfalls sehr dankbar. (Klaus R., Münster)
Red.: Vor dem gleichen Problem stand ich vor einigen Jahren, als ich mich zum ersten Mal mit Icons beschäftigte. Damals gab es auf dem ATARI noch keinen einzigen ICON-Editor (nach ein paar Wochen kam eine ‚ Hacker’-Version aus den USA).Deshalb schaute ich mich auf dem IBM-Sektor um. Dort fand ich im Entwicklungssystem zum GEM ein kleinen(!) Icon-Editor, mit dem ich zwar nicht arbeiten hätte wollen, der aber immerhin das RCS-Format eines Icons ausgab. Zu meiner Verwunderung war dies ein C-Sourcecode. der von dem Icon-Editor ausgegeben und auch vom RCS gelesen wird. Ich will diese etwas seltsame Methode bewußt nicht veröffentlichen, da ich sie nicht gerade als nachahmenswert erachte, zumal sie auf das Zeichen genau eingehalten werden muß. Deshalb gibt es wahrscheinlich von Digital Research keine Unterlagen darüber.
Sollten Sie dennoch Interesse daran haben (das Thema wäre übrigens nicht ergiebig genug für die ST-Ecke, obwohl die ST-Ecken 1/90 und 2/90 das Thema Icon anreißen), möchte ich Sie auf den Icon-Editor verweisen, der zum Anfang dieses neuen Jahres als Sonderdisk erschienen ist. Mit diesem Icon-Editor können Sie sich gleich mit vollem Elan in das Erstellen von Icons stürzen. Die Dateien, die zum Lesen des RCS ausgegeben werden und die das von Ihnen angesprochene Format haben, besitzen den Extender ‚*.icn‘. Übrigens liefert ATARI schon seit einiger Zeit im Rahmen ihres Entwicklungspakets einen Icon- Editor aus, den ich in Zusammenhang mit dem Wort ‚professionell’ lieber nicht beurteilen möchte. Auch gibt es inzwischen Resource Construction Sets mit eingebauten Icon-Editoren. die allerdings nicht gerade zum Erstellen der Icons animieren. Vielleicht kommt ATARI auf die Idee, unseren Icon-Editor ebenfalls mit an Entwickler auszuliefern oder darauf hinzuweisen. Ich hoffe, daß mit dem Icon-Editor auf der Sonderdisk endlich wieder Programme auf den Markt kommen, die schöne Icons sinnvoll und ausgiebig benutzen.
Bezugnehmend auf den Artikel „Erste Hilfe für die Maus“ unter der Rubrik Quicktips Ausgabe 3/90 habe ich eine Frage zum Thema Maus. Bereits vier Monate nach Kauf meines 1040 ST hatte meine Maus einen Kabelbruch, was sich dadurch bemerkbar machte, daß der Pfeil nur nach oben lief. Da damals noch Garantie bestand, erhielt ich vom Händler eine neue Maus. Leider zeigt sich bei dieser Maus mittlerweile wieder das gleiche Problem. Von meinem Händler erfuhr ich. daß das Mauskabel nicht als Ersatzteil erhältlich ist. Ist Ihnen eine Adresse bekannt, bei der man vielleicht doch ein solches Kabel erhalten kann?
Michael D. Bad Breisig
Red.: Normalerweise sollte ein Mauskabel nicht so oft brechen, vielleicht wird es unbeabsichtigt eingeklemmt. Für die Maus können Sie allerdings auch ein ganz normales Joystick-Kabel verwenden, das ist die preiswerteste Methode. Einen billigen Joystick können Sie bereits für unter DM 10,- erhalten. Diese Methode sieht zwar nicht hübsch aus, funktioniert aber ebensogut.
Gar schlimm entsetzt hat mich der „Bilddaten-Konverter“ in der Programmierpraxis von Heft 3/90! Das Listing macht schwerwiegende, grundlegende Fehler, es sei denn, man will ein zeit- und speicherfressendes Programm schreiben.
Fehler 1: Bildpunkte werden überaus verschwenderisch einzeln mit ihren Koordinaten ermittelt. Das sind im „Idealfall“ 4 Bytes (3, 4) und im ungünstigsten Fall 8 Bytes (543,210). Das Extremste, ein Vollbild mit 640x400 Punkten, wird in ein .LST-File von knapp 2 Megabytes (!) umgewandelt und das dauert „nur knapp“ 18 Minuten.
Fehler 2: Auch in Sachen Zeit ist’s grausig. Die Darstellung des 640x400er-Schwarzbildes dauert Minuten -ganz abgesehen von der Ladezeit der gut 28000 Zeilen Mergetext.
Eine bessere Methode zeigt die verbesserte Routine data in Listing 2.
Andreas Pirner, Berlin
PROCEDORE data
GET x1%,y1%,xr%,yr%,g$ !Ausschnitt in g$
OPEN "O",#1,"DATA.LST"
PRINT #1,"DO" !DATA-Leseschleife
PRINT #1,"READ a$" !Lesen,
PRINT #1,"EXIT IF VAL(a$)<0" !fertig bei -1
PRINT #1,"g$=g$+MKL$(VAL("+chr$(34)+"&H"+CHRS(34)+"+a$))" !PUT zus.setzen
PRINT #1,"LOOP" !Schleifenende
PRINT #1,"PUT 0,0,g$" !Bild anzeigen
PRINT #1,"VOID INP (2)" !Tastendruck
'
g%=VARPTR(g$) !Zeiger auf String
l%=LEN(g$) !und die Länge
d$="DATA "
FOR i%=0 to l%-1 STEP 4 !In 4er Schritten
a%=LPEEK(g%+i%) !Longpeeken
d$=d$+HEX$(a%) !an DATA-Zeile
IF LEN(d$)<72 THEN !Wenn kurz genug
d$=d$+"," !Komma anhängen
ELSE !ansonsten
PRINT #1,d$ !wegschreiben
d$="DATA " !und von vorne
ENDIF
NEXT i% ! Schleifenende
PRINT #1,d$+"-1! ! DATA-Ende-Kennung
CLOSE #1 !Datei schließen
RETURN
Listing 2
Diesen Monat erwarten Sie wieder Leserfragen. aber auch Antworten und außerdem ein paar hilfreiche Hinweise für alle, die beim Anschluß von HD Laufwerken an den ST Probleme hatten.
Die folgende Anfrage paßt eigentlich nicht so recht in eine Zeitschrift, die sich mit dem ST befaßt Ein Leser aus Jugoslawien will sich Floppysoftware für seinen QL mit einem Sandy Super Disk System schreiben; dazu fehlt ihm aber die Dokumentation von Interna von QL und Sandy-System (das ist ein Adapter für Floppy-Laufwerke. wir erinnern uns, der QL hatte ja nur diese putzigen Microdrive-Bandlaufwerke). Kann jemand weiterhelfen?
Wußten Sie daß es 3.5"-Laufwerke gibt, deren Drehmotor 600 Umdrehungen pro Minute macht? Doch, die gibt es. und zwar von Sony (Typ MF55W) Diese Laufwerke konnte man am ST bisher nur mit halber Kapazität nutzen, denn bei gleicher Datenrate vom Controller nimmt ein Bit auf der Spur den doppelten Platz ein. wenn sich die Diskette doppelt so schnell dreht Mit unserer HD-Schaltung aus der 'ST-Computer" 1 /90 und 2J 90 sollte man eigentlich auch solche Laufwerke am ST betreiben können er ist eben ein Allesfresser unser ST
Der Floppy Markt steht kurz vor einer Revolution; Die ersten Floptical-Disk-Laufwerke sind eingetroffen. Entwickler sitzen allüberall an diesen Wunderma schinchen der amerikanischen Firma Insite. Wer noch nicht davon gehört hat, dem sei verraten, daß dieses Laufwerk sowohl gewöhnliche 720-kB-Disketten lesen und schreiben kann als auch speziell vorbereitete HD-Disketten, auf die dann satte 20 MB Daten passen. Zwischen die Magnetspuren werden dabei von einem Laserstrahl Rillen gebrannt, die einer optischen Nachführeinheit im Laufwerk als Richtschnur für die Positionierung des Magnetkopfes dienen Auf diese Weise kann man die Spurdichte und damit die Diskettenkapazitdt erheblich erhöhen
Insite bleibt nicht alleine: Citizen hat ebenfalls ein 20-MB-Diskettenlaufwerk angekündigt, das mit Metalltyp-Disketten arbeitet: 500 Märker billig soll es sein, die Medien sollen weniger als 50 DM kosten. Wir sind mehr als gespannt. Und dann waren da doch noch die 4 MB-Laufwerke von TEAC, die nebenher noch 1- und 2-MB Disketten lesen und schreiben und über einen von TEAC angebotenen SCSI-Controller (und einen Host Adapter) auch an den DMA Bus des ST anschließbar wären. Das wird ein spannendes Jahr.
Viele Leser haben inzwischen ihrem Floppycontroller die Sporen gegeben und HD-Laufwerke an ihren ST angeschlossen Die Erfahrungen damit sind bisher positiv, meistens ist die Modifikation völlig problemlos. Ein paar Schwierigkeiten haben sich aber doch ergeben
Viele HD-Laufwerke melden nicht - wie das TEAC FD235HF - den Typ der eingelegten Diskette am Pin 2 des Shugart-Busses Dazu gehören beispielsweise das Laufwerk Chinon FB357 sowie viele 5.25'-Laufwerke Man muß bei solchen Laufwerken also leider von Hand Umschalter wie man das macht, haben wir ]a bereits in [1] beschrieben Es würde uns allerdings nicht wundern, wenn viele Laufwerke das HD Signal zwar nicht am Pin 2 ausgeben, intern aber doch generieren. Sollte jemand das für ein bestimmtes Laufwerk herausgefunden haben, wären (nicht nur) wir für einen kleinen Tip dankbar.
Einen hübschen TOS-Fehler haben wir beim Betrieb der HD-Laufwerke am ST entdeckt. Formatiert man die HD-Disketten MS DOS-kompatibel, wird die Cluster-Größe auf 1 gesetzt das heißt, jeder Cluster besteht aus einem Sektor. (Warum das übrigens in MS-DOS so üblich ist, weiß wahrscheinlich nicht einmal Microsoft - die FATs werden viel größer, die Suche darin dauert länger.) Kopiert man nun unter TOS 1 0 auf solch eine Diskette, bis sie überläuft ("Diese Diskette hat nicht genügend Speicherplatz'). rastet TOS aus und löscht doch glatt das Wurzelverzeichnis der Diskette! Noch ein Grund, sich TOS 1.4 zu besorgen.
In [1] hatten wir weiterhin vorgeschlagen, die Taktfrequenz des Floppycontrollers mittels eines Signals vom Laufwerk umzuschalten, das aus HD OUT und DSO gewonnen wird. Das funktioniert auch. solange wirklich ein Laufwerk angeschlossen ist Kappt man allerdings die Floppy-Leitung, hängt der Eingang des Umschaltbausteins 74HC4051 in der Luft, die Eingangsleitung ist offen Unter solchen Bedingungen beginnen solche Bausteine gerne zu schwingen; um das zu verhindern, investiere man am besten ein paar Pfennige in einen Pull Down-Widerstand am Pin 11 des 74HC4051.
Im Normalfall wird der Takt für den FDC aus dem Taktsignal des Shifters gewonnen. In manchen, sehr seltenen Fällen macht das der Shifter nicht mit, man muß sich dann mit einem externen Takt aus einem 16-MHz-Taktoszillator behelfen Sie sollten dann auch den normalen 8-MHz-Takt aus dem externen Oszillator gewinnen. Man verhindert so, daß zwischen zwei phasenungleichen Taktsignalen umgeschaltet wird und so eventuell Spitzen auf der Taktleitung entstehen, die den FDC durcheinanderbringen könnten.
Beim letzten Mal hatte ich für einen Leser gefragt, wie man ein Floppy Laufwerk Chinon FB354 dazu bringt, dem ST einen Diskettenwechsel auch wirklich zu melden Arno Schäfer aus Dreieich hat hier einen Tip parat (herzlichen Dank!), ich zitiere
“Offenbar liefert das Laufwerk tatsächlich kein vernünftiges DC-Signal am Shugart-Bus. Dies ist jedoch kein Beinbruch, denn nach kurzem Suchen findet man das gesuchte Signal am Verbindungsstecker der beiden Platinen unter der Bezeichnung 'DIS. Interessanterweise ist es jedoch entgegen der Beschriftung nicht low-aktiv, sondern highaktiv Man kann es also nicht einfach dem WP-Signal beimischen, sondern muß es erst invertieren. Dazu benötigt man einen Inverter mit offenem Kollektor (z B. 74LS05 oder 74LS06). Die Betriebsspannung für diesen IC entnimmt man zweckmäßigerweise direkt am Stecker für die Stromversorgung (rechts unten auf der Platine) Nun verbindet man den Eingang eines Inverters mit dem oben angegebenen Punkt und den Ausgang desselben mit dem Pin 28 des Shugart-Busses. Nachdem man jetzt noch einen guten Platz für das IC gefunden (ich habe ihn mit Isolierband direkt auf die Platine geklebt, aber Vorsicht vor Kurzschlüssen) und die Funktion überprüft hat, kann man schon mit dem Einbau des Laufwerks beginnen
Die beschriebene Schaltung funktioniert bei mir einwandfrei Einzige Einschränkung: Da das DC-Signal nicht mehr vom Drive-Select-Signal abhängt, könnte es beim Betrieb von zwei Laufwerken am ST sein, daß beim Diskettenwechsel im solchermaßen modifizierten Laufwerk das TOS einen Diskettenwechsel m beiden Laufwerken annimmt. Im Zweifelsfall müßte man das DC-Signal aus dem Inverter noch einmal zusammen mit dem Drive-Select-Signal durch ein NOR-Gatter schicken (z.B 74LS33), bevor man es dem WP-Signal beimischt.
Letztere Maßnahme möchte ich empfehlen um Ärger bei zwei Laufwerken zu vermeiden. Diese Lösung hat Herr Schäfer an einem Chinon FB354. Revision B ausprobiert. sie dürfte aber für alle Revisionen gelten.
Einige KLEISTER-Leser haben Probleme. PCSpeed auf der Platte einzurichten. wenn diese mit dem CBHD-Treiber autobootfähig gemacht wurde. Dazu schickt uns Herr Rainer Sieger aus Bremen wertvolle Tips, für die ich mich herzlich bedanke
Bei verschiedenen Versuchen (Mega ST4, SH205, PC Speed V1.20, Plattentreiber CBHD.SYS) stellte sich heraus:
Wie installiert man also PCSpeed unter CBHD.SYS?
Formatieren und Partitionieren der Platte mit SED. Dabei scheint es be sonders wichtig zu sein, die 'Virgin Pattern' auf $FF zu setzen. Default ist $CB [Bei eigenen Experimenten gab es keine Probleme, wenn man den Default-Wert verwendete -CB-] Die Autoboot Fähigkeit unter TOS ist herzustellen (meist C:).
Umleiten des DOS-Laufwerks C auf eine Partition D F im PCSpeed-Installationsprogramm. da C von TOS für den Autoboot benutzt wird MS-DOS ist von Diskette zu starten (HD-Boot ausschalten!)
PC Speed starten und MS-DOS von Diskette laden
Formatieren des DOS-Laufwerks C (FORMAT C: /S /V). Nach dem Formatieren werden die MS-DOS-Systemdateien automatisch als versteckte Dateien auf das DOS-Laufwerk C kopiert.
PC-Speed auf 'HD-Boot’ einstellen und in den Autoordner auf der “MS DOS-Partition kopieren
Soweit Herr Sieger. Ich selbst besitze keinen PCSpeed und konnte die Kompatibilität von CBHD und PCSpeed nur einmal an einem fremden Rechner verifizieren. Findet sich vielleicht ein ehrenamtlicher PCSpeed/KLEISTERSCHEIBEn-Betatester in unserer Nähe (Unterfranken oder auch Großraum Erlangen/ Feucht/Nürnberg)?
CB