Top-Themen:
- Das PC-Tastatur-Interface
- ZAS und der Speicher im Grundgerät
- BOOT.COM - Der Bootmanager für den KC85
Ein paar Worte zur Einleitung
von Frank Dachselt
Die Tage werden kürzer, die Abende entsprechend länger. Es ist wieder einmal die Zeit gekommen, in der viele ihren KC etwas häufiger einschalten werden (alle Unentwegten, zu denen ich mich selbst auch zähle und deren KC jahreszeitunabhängig Schwerstarbeit zu verrichten hat, mögen mir diese pauschale Aussage verzeihen). Die vorliegenden KC-News versprechen, genau das richtige zu sein, damit die langen Abende am KC nicht zu langweilig werden. Ein Blick in die Autorenliste verrät, daß für diese Ausgabe wieder ein paar mehr User zur Tastatur gegriffen haben und die News mit ihren Beiträgen bereichern. Deutlich wird das auch an der Beilagendiskette - nein, den zwei Beilagendisketten, die beide nahezu bis zum letzten Byte gefüllt sind.
Da das Jahresende immer näherrückt, sei mir auch noch folgender Hinweis gestattet: Bitte denkt rechtzeitig an den Clubbeitrag für's nächste Jahr, der natürlich auch wieder halbjählich gezahlt werden kann. So vermeidet Ihr unnötig langes Warten auf die nächsten KC-News.
Neuentwicklungen
Wie in der letzten Ausgabe schon angekündigt, gibt es heute wieder einmal eine neue ZAS- Version. Das besondere an ihr ist, daß es jetzt gelungen ist, einige bisher nur unbefriedigend gelöste Probleme mit der Speicherverwaltung im Grundgerät in den Griff zu bekommen. Auch wenn die Entwicklung der dazugehörenden Hilfsprogramme noch nicht abgeschlossen ist, so kann doch jeder schon einmal den Effekt der neuen Verwaltung beobachten. In den Beiträgen von Mario Leubner und mir finden sich alle notwendigen Informationen.
Aber auch hardwareseitig gibt es eine Neuigkeit zu vermelden. Enrico Grämer hat einige Prototypen seines AT-Tastaturinterfaces fertiggestellt. Eine ausführliche Beschreibung und einen Testbericht von Jörg Linder findet Ihr ebenfalls in dieser Ausgabe.
Das ist natürlich noch lange nicht alles, aber mehr verrate ich erstmal nicht...
Clubtreffen 1998
Was in der vergangenen Ausgabe bereits angekündigt wurde, wird heute Ernst. Das Anmeldeformular für unser nächstes Clubtreffen liegt dieser Ausgabe bei. Da ich Mühe hatte, auf meinen Aufruf in der letzten Ausgabe hin überhaupt ein paar Meinungen zu Ort und Zeit dieses Treffens zu sammeln, habe ich die Organisation kurzerhand ,,anmichgerissen``. Das bedeutet konkret, daß das Clubtreffen 1998 vom 17. bis 19. April in Dresden, genauer gesagt in Radebeul, einem Vorort von Dresden, stattfinden wird. Verkehrstechnisch ist die Jugendherberge, die ich mir ausgesucht habe, für Auto- wie auch für Bahnfahrer äußerst günstig gelegen. Eine detailierte Wegbeschreibung wird in der nächten News-Ausgabe zu finden sein. Nach einigen Verhandlungen ist es mir auch gelungen, einen günstigen Preis für die Übernachtungen zu bekommen, sodaß auch Nicht-DJH-Mitglieder nicht mehr als 30 Mark pro Nacht zu bezahlen brauchen. Bitte beachtet wie immer den ``Einsendeschluß`` des Anmeldeformulars, der wieder am 31.12. dieses Jahres ist.
KC-User-Befragung
Nachdem ich von einigen Clubmitgliedern die Anregung dazu bekommen habe, liegt dieser Ausgabe noch ein weiterer Fragebogen bei. Es ist wohl an der Zeit, daß wir unsere Statistik wieder mal auf den neusten Stand bringen. Die letzte, von Jörg Linder bei der Wiederbelebung des KC-Clubs gestartete Umfrage liegt ja nun bereits über drei Jahre zurück. In der Zwischenzeit hat sich aber außerordentlich viel in Sachen KC getan. Die Ergebnisse dieser Umfrage werden besonders für die Richtung der weiteren Entwicklung von Anwenderprogrammen und Systemsoftware aber auch für zukünfige Hardwareprojekte von Bedeutung sein. Nicht zuletzt verspreche ich mir als Redakteur natürlich auch neue Impulse für Beiträge in den KC-News.
Die Teilnahme an der Umfrage ist natürlich freiwillig, aber aus eigenem Interesse sollte sich mal eine halbe Stunde Zeit finden lassen, in der man den Fragebogen ausfüllt. Und wer schon immer mal seine Meinung zu einer bestimmten Sache sagen wollte: hier bietet sich eine günstige Gelegenheit! Der ausgefüllte Fragebogen sollte am besten zusammen mit der Anmeldung zum Clubtreffen ebenfalls bis zum 31.12. dieses Jahres an mich zurückgesendet werden.
Jetzt aber erst einmal viel Vergnügen beim Lesen der KC-News!
Euer Redakteur
Frank
What's new on the net?
von Helmut Jungkunz
Diese Frage wird heute mehr denn je gestellt. Beantwortet wird sie meist mehr schlecht als recht, vor allem die Medien machen durch ihre teilweise völlige Ahnungslosigkeit oft mehr kaputt, als daß sie aufklären und informieren. Peinlichkeiten sind keine Seltenheit, große Unsicherheit herrscht über das Zumutbare beim Zuschauer. Zudem haben die Präsentatoren entweder keine Ahnung von Technik oder keine Ahnung vom Moderieren. Oder beides, was am Schrecklichsten ist.
Wichtigste Frage scheint zu sein:
Ist ,,der Zuschauer`` | a) ziemlich blöd; b) ziemlich ungebildet; c) absoluter Fachidiot; d) hochspezialisierter Crack? |
Nun ja, wohl von jedem etwas. Wie also macht man ein TV Programm, bei dem 40 Leute einen Redaktionsstab bilden und jeder einen geschwollenen Text abläßt, der nur kaschieren soll, daß die meisten ``Fernsehmacher`` dem Thema Technik recht hilflos gegenüber stehen, beim Thema Computer aber vollständig aussteigen.
Nach meinen recht frustbeladenen Erfahrungen mit den B3 Computer-Sendungen des Anfangs und einem mitleidigen Lächeln, als Netnite (ZDF) startete (ist erheblich besser geworden, vor allem die e-mail-Feedbacks sind eine tolle Sache!), begann ich, bei Freunden und Bekannten die Kabelkanäle durchzuackern (ich hatte damals noch kein Kabel). Dabei kam folgendes heraus:
Englisch muß man können, je nachdem, wieviel man versteht, desto besser kann man wirklich aktuelle Sachen auswerten, denn selbst der WDR mit seinem COMPUTERCLUB und 3-Sat mit NEUES sind keine echten Highlights.
Ja, also Englisch. Da wäre zunächst CNN, der Nachrichtenkanal. Die Sendung COMPUTER CONNECTION ist ein wahrer Genuß. Moderator Brian Nelson macht klare Ansagen, die man versteht, unterstützt von grafischen Elementen im Hintergrund. Die Sendung ist gegliedert in 4 Teile (im wesentlichen).
Beginn ist immer eine aktuelle Meldung (zum Beispiel von den großen Messen der Welt: CEBIT, CES, NAB usw.). Dann wird meist eine Meldung aus der sozialen Umwelt der Computer von einem Korrespondenten gebracht. Dabei werden nicht die in deutschen Fernsehsendungen üblichen kastrierten Berichte gebracht, die brav auf den ,,DAU`` (Dümmster Anzunehmender User) zugeschnitten sind.
Hier wird oft live ohne große Vorbereitungen berichtet, es werden neue Technologien nicht nur einfach vorgestellt, sondern es wird sofort Stellung dazu bezogen, negative Auswirkungen untersucht und, wenn nötig, davor gewarnt. Interessant ist dabei zu sehen, wie der amerikanische Gesetzgeber bereits über eine langjährige Praxis von Internet-Gesetzen verfügt, worüber hierzulande oft noch nicht mal laut gedacht wird.
Der Mittelteil der Sendung ist wechselnd, oft werden Jungunternehmer vorgestellt oder die Entwicklung des Internet-Gebrauchs an Schulen und Universitäten diskutiert und demonstriert. Auch Berichte von Sicherheitsmechanismen und Browserprobleme werden häufig angeschnitten.
Den Abschluß bildet meist ein Spiel und Unterhaltungsteil, der vor allem die ,,Gamers`` begeistern dürfte.
Die Sendung wird mehrfach wiederholt, Erstausstrahlungstermin ist jedoch immer der Samstag abend, 20:30 Uhr und geht bis 21:00 Uhr. Erste Wiederholung ist dann am Sonntag früh, 10:30 Uhr, also nach Pingu (ZDF) und vor der ,,Sendung mit der Maus``.
Ein weiteres Kleinod ist die Sendung ,,The Site``, die werktags von 17:00 bis 18:00 Uhr auf NBC Superchannel ausgestrahlt wird. Darin werden sogenannte ,,Sites``, also Anbieter im Internet, vorgestellt und bewertet. Dazu gibt es Tips und Tricks um neue Soft- und Hardware, entscheidend ist jedoch, daß man keine Telefongebühren zahlen muß, und trotzdem im Internet herumgeführt wird.
Es empfiehlt sich, wie bei allen fremdsprachlichen Programmen, die Sendung auf Video aufzuzeichen, dann kann man die URLs (die Internet-Adressen) besser nachsehen und man wird vieles besser verstehen, wenn man nochmal zurückspulen kann.
Auf dem gleichen Kanal (NBC) gibt es Samstag vormittags die sogenannte ,,CYBERSCHOOL``. Dieser zweistündige Block ist in 4 Sendungen 30 Minuten aufgeteilt:
Um 9:00 Uhr die Sendung ,,USER GROUP``, die oft sehr kompakte Information liefert, der Moderator redet aber sehr, sehr schnell und man kann Englisch-Anfängern nur abraten. Hier kommen Leute ins Studio und führen ihre neue Hardware oder Software vor.
Um 9:30 Uhr dann die Sendung ,,COMPUTER CHRONICLES``. Hier wird die beste Information geboten. Die Themen werden sehr professionell aufbereitet und gut besprochen. Das Niveau ist so, daß man auch als nur durchschnittlich interessierter Computer-Anwender gut folgen kann, worum es geht.
Um 10:00 Uhr gibt es dann das ,,INTERNET CAFE``. Hier wird recht leger in der ,,Internet- Mottenkiste`` gewühlt. Flapsig wird im ,,Housewife-Style`` getalkt und vorgestellt. Man erhält aber trotzdem noch brauchbare Tips, auch als Profi.
Um 10:30 Uhr kommt dann die Sendung ,,@home`` (At home with your PC). Übersetzt heißt das am besten ,,Mit Deinem PC auf Du und Du``. Hier werden manchmal nur die typischen Anwenderprobleme durchgekaut und deshalb ist diese Sendung nicht jedermanns Geschmack, aber: wer's mag ...
Zum Schluß noch ein Beispiel aus unserer deutschen ,,TV-Gegenwelt``. Die Sendung NEUES ist in mehrere Kategorien aufgeteilt und thematisch schwerpunktorientiert. Dazu gehört die Sendung am Sonntag Nachmittag um 16:00 Uhr, die sich Anwenderkurs nennt, aber vor lauter Unsicherheit so vor Flapsigkeiten strotzt, daß sich der ehrlich Interessierte fragt, warum er dafür die Zeit vor der Glotze verschwenden sollte.
Dazu gehört aber auch ,,NEUES - Das Magazin``, in der schon gelegentlich kontroverse Themen aufgegriffen und besprochen werden, unterstützt von Gästen aus allen Bereichen.
Die besten Ansätze im deutschen Fernsehen hat wohl NETNITE, eine Sendung, die in zwei Varianten gesendet wird: einmal NETNITE (magazinartige Info-Sendung), in der alle möglichen Themen rund um den Computer vorgestellt werden und auch schon mal die Betreiber von Germanynet im Studio waren und erklärt haben, wie das Konzept ,,Gratis-Internetzugang mit Werbebreaks`` funktionieren soll. Empfehlenswert für alle, die ,,mal hineinschnuppern`` wollen in die Schöne Neue Welt.
Zum Zweiten NETNITE - DIE SURFNACHT. Diese Sendung ist eher für den Hardcore der deutschen Internetwütigen gedacht, wobei das Niveau typischerweise nicht recht über die Mentalität eines Telekom-Geschädigten (T-ONLINE ...) hinausgeht.
Grundsätzlich sei die Verwendung von Videotext sehr zu empfehlen, da hier oft die Themen vorangekündigt werden:
- WDR Seite 395: Computerclub
- 3-Sat Seite 621: Computer-Corner
- 3-Sat Seite 622: Informatik News
Die Themen der CNN computer connection findet man am besten auf deren Website (nicht Webseite, wie oft fälschlich geschrieben wird).
Die URL-Adressen:
- http://www.cnn.com (CNN computer connection)
- http://www.nbceurope.com oder http://www.pctv.com (NBC)
- http://www.wdr.de/TV/Computer-Club (WDR)
Achja, CP/M findet man unter folgenden URLs:
- http://www.cis.ohio-state.edu/hypertext/faq/usenet/CPM-faq/faq.html
- http://ftp.ibp.fr/pub/amstrad/amstrad.faq
FAQ heißt immer ,,Frequently Asked Questions`` - häufig gestellte Fragen (und natürlich die Antworten dazu).
- http://ourworld.compuserve.com/homepages/amstrad/ (Amstrad)
- http://www2.psyber.com/~tcj/ (The Computer Journal)
- http://www.zilog.com/ (Zilog are the people)
- http://members.aol.com/scugclub
- http://www.zentro.com.au (Simeon Cran MYZ80)
So, und jetzt nicht vergessen: Beim Ausprobieren irgendwelcher Internet-Adressen: auch während des Ladevorgangs vergeht oft wertvolle (Telekom-) Zeit und manchmal sollte man einen inneren Timeout ,,einstellen``, will sagen, wird eine Seite nicht schnell genug gefunden und dauert mir das Laden zu lang, einfach das Laden ,,Abbrechen``, das Resultat ist oft verblüffend, das bereits geladene wird nämlich oft trotzdem dargestellt.
Bei langsamen Ladezeiten und hoher Netzbelastung sollte man ,,Grafiken automatisch laden`` deaktivieren. Dann gibt's halt nur ein Platzhalterchen, statt einer aufwendigen Grafik. Das ist vor allem sinnvoll, wenn man noch nicht auf der gewünschten ,,Page`` gelandet ist, sondern sich erst durch ein paar Menüseiten hangeln muß.
In diesem Sinne, immer guten connect bzw. guten Fernseh-Empfang!
Euer Helmut
... und nicht vergessen: Erst anmelden, dann einschalten!
Inhalte der KC-News
von Peter Jung
Ich habe die Inhalte aller KC-News aufgelistet und mit der Grafik von WordPro6 in einen Rahmen gebracht. Ein Vorgänger hat ja damit schon mal angefangen, so daß ich das übernehmen konnte, was nicht in meinem Bestand ist. Es sind deshalb zwei Dateien geworden, weil ich mich bemühe, möglichst alle Dokumentationen und Beschreibungen in dem handlicheren A5-Format zu drucken. So habe ich mir mit FATCAT.COM ein Bestandsverzeichnis meiner Dateien in A5 erstellt, wo ich die TX5-Version mit eingeheftet habe. So brauche ich nicht mehr, wie kürzlich, als ich was bestimmtes suchte, alle Hefte durchzublättern. Die größere TX4-Version habe ich vor den KC-News im Ordner untergebracht.
Ich möchte hiermit beide Versionen zur Verfügung stellen. Vielleicht hat doch der eine oder andere User Verwendung dafür. Auch will ich künftig mit den Updates der Inhalte auf dem laufenden bleiben und diese hin und wieder veröffentlichen.
Update des Software-Katalogs
von Enrico Grämer
Wie in der letzten KC-News jeder lesen konnte, haben Jan Hill und ich den Job des Diskothekars übernommen. Aus diesem aktuellen Anlaß gibt es mal wieder'n Update. Alle hierzu erforderlichen Dateien befinden sich in dem Archiv FILES.PMA. In der Zwischenzeit sind die Dateien und Programme auf beachtliche 44 MB angewachsen. Einen nicht ganz unerheblichen Teil machen, wie sollte es auch anders sein, die Bilder mit über 10 Disketten aus. Aber das ist noch längst nicht alles! Etwa 10 MB an Quelltexten muß ich noch einsortieren und was Jan Hill noch so alles hat, weiß ich auch nicht. Zum Versand gibt es auch nicht viel zu sagen. Wie gehabt, werden die Dateien zum Selbstkostenpreis auf Diskette oder Kassette zugeschickt. Wer möchte, kann ab sofort auch alles auf ZIP-Diskette zugeschickt bekommen. Demnächst soll auch alles auf CD gebrannt werden.
Nun möchte ich noch alle bitten, mir ihre Programme bzw. Dateien zur zentralen Archivierung zuzuschicken.
Das PC-Tastatur-Interface
von Enrico Grämer
Zuerst möchte ich mich hiermit recht herzlich bei Jörg Linder und Ralf Kästner bedanken, welche das Interface vorab getestet haben. Des weiteren bedanke ich mich bei Mario Leubner für die freundliche Unterstützung.
Es gab ja schon einige Lösungsvarianten, die originale Gummitastatur zu ersetzen, aber sie alle haben aus meiner Sicht Nachteile. Zuerst die D005 von MPM, welche zwar besser zu bedienen ist, aber nicht mehr Funktionen als das Original bietet. Dann die verschiedenen Varianten der P8000-Tastatur, die zwar auch schon wieder einen wesentlich höheren Komfort bieten, aber zum einen nur schwer beschaffbar sind, und zum anderen die Tasten z.T. neu beschriftet werden müssen.
Alle diese Nachteile bestehen mit dem hier aufgezeigten Lösungsvorschlag nicht mehr. Denn PC-Tastaturen sind ja überall billig zu bekommen, und die Tastaturfunktionen des KC's sind, bis auf 3 Ausnahmen (Tastenclick, TPKC-Belegung, Umschaltung CP/M - CAOS), der Beschriftung einer deutschen PC-Standard-Tastatur zumindest logisch zugeordnet.
Wie aus dem Schaltplan zu ersehen ist, ist es mit maximal 4 IC's wirklich nur ein minimaler Bauteilaufwand. Herzstück des Ganzen ist der zum Industriestandard 8051 kompatible Controller AT 89 C 2051 von ATMEL. Der MAX 232 dient als Pegelwandler zwischen TTL und V 24, der EEPROM IC 2 enthält die Umkodierungstabellen und einige BASIC-Befehle. IC 3 enthält, wenn vorhanden, die selbst zu programmierenden Funktionstastenbelegungen. Soll das Interface am M053 betrieben werden, entfallen MAX 232 und die Elkos C4 bis C7. Die Pin's 13, 12 und 14, 11 des MAX 232 müssen dann noch verbunden werden. Die Stromversorgung erfolgt dann, anstatt über den Keyboard-Anschluß, über das RS-232-Modul.
Wie aus den beiliegenden Tabellen zu ersehen ist, ist der Funktionsumfang sehr hoch. Zusätzlich zu den normalen Buchstaben- und Zahlenbelegungen ist auch noch der Control-Code, 48 BASIC-Befehle und des weiteren sogar die Sonderbelegung für TPKC vorhanden. Außerdem können auch bis zu 48 Funktionstasten mit jeweils maximal 41 Zeichen, oder auch weniger Funktionstasten mit mehr Zeichen, aber maximal 2048 Bytes selbst definiert werden. Wem dies alles dann aber immer noch nicht reichen sollte, dem ist es nun erstmals möglich, auch Befehle zur Tastatur zu senden und somit jede einzelne Taste abzufragen, ihre Reaktion auf Drücken und Loslassen einer Taste zu ändern und die LED's zu schalten.
Nun aber zum Wichtigsten: die Kosten. Selbstverständlich bin ich gern bereit, die IC's gegen Rückporto zu programmieren. Die Kosten für einen kompletten Bausatz (incl. Gehäuse und Platine) werden sich auf ca. 50 - 60 DM belaufen. Bei einer größeren Stückzahl wäre es mir möglich, die Platinen sehr günstig anfertigen zu lassen. Des weiteren bekommt man ja Mengenrabatt bei den Versandfirmen für die Bauteile, so daß sich die Kosten noch etwas verringern lassen. Wer also Interesse hat, sollte sich unbedingt bei mir melden.
Programme zur Tastatur im Archiv BSP.PMA:
ECHO Echo-Funktion; Tastatur vorhanden? PROGTAST Programmiert Anwender-EEPROM der Tastatur PROGDAT Beispieldatei zu PROGTAST READ_ID Auslesen der PC-Tastatur ID-Byte SETCAOS Umschalten auf CAOS-Belegung SETCPM Umschalten auf CP/M-Belegung SETLED Schaltet alle LED's an SET_1KEY Schaltet Taste 'A' auf nur Make-Code SET_KEYS alle Tasten auf nur Make-Code schalten TASTRATE Tastaturrate auf 2 Hz, 1 s einstellen V24TAST.KOP Tastatur-Koppeltreiber für CP/M
Sendecodes zur Tastatur und Rückmeldungen von der Tastatur zum KC
Datenübertragungsformat: 1200 BPS 8N1 (erst höherwertiges, dann niederwertiges Byte senden)
- [0000H] Systemreset + Senden 0DH
- Tastatur- und KC-reset nur interne Version
- Tastatur- und KC-reset nur interne Version
- [0001H] Tastaturreset + Senden 0DH
- [0002H] Umstellen auf Senden PC-AT-Tastatur Scancodes Mode 3 (siehe Tabelle)
- [0003H] Sende PC-Tastatur-ID-Bytes: 0FAH + 2 Bytes (meist 83ABH)
- [0004H] Programmiere Anwender-EEPROM
- max. 2048 Byte, 48 Funktionstasten (F1-F12 mit Shift und Caps)
- alle Zeichen außer 0FEH und 0FFH sind erlaubt
- 41 Bytes je Taste + 0FFH (Ende der Taste)
- bei weniger als 41 Bytes Rest mit 0FFH auffüllen
- Kennzeichnung Dateiende: 0FEH
- bei Code 00H wird eine Pause eingeschoben (nach 0DH notwendig)
- Reihenfolge der Tastenbelegung: F1-F12; ohne Umschalttaste; mit Shift; mit Caps; mit Shift und Caps = 2016 Bytes + 0FFH
- [0005H] Teste, ob Anwender-EEPROM vorhanden ist
- Rückmeldung: 01H wenn vorhanden; 0FFH wenn nicht vorhanden
- Rückmeldung: 01H wenn vorhanden; 0FFH wenn nicht vorhanden
- [0006H] Umschalten auf CAOS-Belegung + Tastaturreset + Senden 0DH
- [0007H] Umschalten auf CP/M-Belegung + Tastaturreset + Senden 0DH
- [0008H] Einstellen der Tastaturübertragungsrate 1)
- Standardeinstellung ist 30 Hz mit Autorepeatverzögerung 150 ms; Bit 7 ist immer 0
Bit 6 Bit 5 Verzögerung 0 0 150 ms 0 1 500 ms 1 0 750 ms 1 1 1 s Bits 4 - 0 Frequenz Bits 4 - 0 Frequenz 00000 30,0 Hz 10000 7,5 Hz 00001 26,7 Hz 10001 6,7 Hz 00010 24,0 Hz 10010 6,0 Hz 00011 21,8 Hz 10011 5,5 Hz 00100 20,0 Hz 10100 5,0 Hz 00101 18,5 Hz 10101 4,6 Hz 00110 17,1 Hz 10110 4,3 Hz 00111 16,0 Hz 10111 4,0 Hz 01000 15,0 Hz 11000 3,7 Hz 01001 13,3 Hz 11001 3,3 Hz 01010 12,0 Hz 11010 3,0 Hz 01011 10,9 Hz 11011 2,7 Hz 01100 10,0 Hz 11100 2,5 Hz 01101 9,2 Hz 11101 2,3 Hz 01110 8,6 Hz 11110 2,1 Hz 01111 8,0 Hz 11111 2,0 Hz - Standardeinstellung ist 30 Hz mit Autorepeatverzögerung 150 ms; Bit 7 ist immer 0
- [0009H] Setze alle Tasten 1)
0F7H Autorepeat für alle Tasten 0F8H Alle Tasten liefern einen Make- (beim Drücken) und einen Break-Code (beim Loslassen) 0F9H Alle Tasten liefern nur ein Make-, aber keinen Break-Code 0FAH Autorepeat für alle Tasten sowie Make- und Break-Codes - [000AH] Setze einzelne Taste 1)
0FBH + Scancode einer Taste: Taste bekommt Autorepeat 0FCH + Scancode einer Taste: Make/Break-Funktion für diese Taste 0FDH + Scancode einer Taste: nur Make-Funktion für diese Taste - [000BH] LEDs an-/ausschalten 1) (gesetztes Bit heißt: LED ist an )
Bits 7-3: sind immer 0 Bit 0: Scroll Lock Bit 1: Num Lock Bit 2: Caps Lock - [000CH] Startet Scannen der Tastatur
- muß nach den Befehlen 0009H und 000AH aufgerufen werden
- [000DH] Echo
- Tastatur antwortet mit 0EEH; Kann zur Feststellung der Anwesenheit der Tastatur verwendet werden
1) Diese Befehle sollten nur verwendet werden, wenn anschließend der Befehl 0002H ,,Sende Scancodes`` aufgerufen wird.
Tastenbelegung der AT-Tastatur unter CP/M und CAOS
Tastaturebene | erreichbare Zeichen und Funktionen |
nach Reset | NUM und CP/M-Modus aktiviert |
ohne Umschalttaste | Großbuchstaben, Zahlen |
mit Shift | Kleinbuchstaben, Zeichen über Zahlen |
mit Caps | Kleinbuchstaben, Zahlen |
mit Caps und Shift | Großbuchstaben, Zeichen über Zahlen |
Numlock aus | Hexeingabe über Ziffernblock, MODIFY- Modus |
Ctrl + A bis Z | Controlcodes |
Ctrl + F1 bis F12 | Basicbefehle (in Kombination mit Shift und Caps) |
Alt + F1 bis F12 | 48 anwenderdefinierte Funktionstasten je max. 41 Zeichen (in Kombination mit Shift und Caps) |
Alt + 2 Zeichen 0 bis F | Hexcodes 0 bis 0FFH |
Alt Gr + Cursor rechts | Restorefunktion, alle Zeichen bis Enter werden wieder angezeigt (nur im CP/M-Modus) |
Ctrl + Alt + Del | Reset (bei der internen Version Systemreset; KC und Tastatur) |
Spezielle CP/M-Codes
Tastenbetätigung | Funktion |
Ctrl + Cursor hoch | Curs on (82H) |
Ctrl + Cursor runter | Curs off (83H) |
Ctrl + Rollen | Page/Scroll - Modus (85H) |
Ctrl + Bild hoch | Bild 0 (93H) |
Ctrl + Bild runter | Bild 1 (94H) |
Ctrl + Ü | USA/Deutsch (8CH) |
Ctrl + Ziffernblock 8 oder 4 | 80/40 Zeichensatz (89H) |
Ctrl + Ziffernblock 9 | Ink (88H) |
Ctrl + Ziffernblock 3 | Paper (86H) |
TPKC-Sonderfunktionen
Steuerzeichen | Funktion | Tastenbetätigung |
^S | ein Zeichen nach links | Cursor links |
^D | ein Zeichen nach rechts | Cursor rechts |
^E | eine Zeile nach oben | Cursor hoch |
^X | eine Zeile nach unten | Cursor runter |
^W | Rollen eine Zeile rückwärts | Ctrl + Cursor hoch |
^Z | Rollen eine Zeile vorwärts | Ctrl + Cursor runter |
^R | eine Seite zurück blättern | Bild hoch |
^C | eine Seite vorwärts blättern | Bild runter |
^A | ein Wort nach links | Ctrl + Cursor links |
^F | ein Wort nach rechts | Ctrl + Cursor rechts |
^QS | Zeilenanfang | Pos1 |
^QD | Zeilenende | Ende |
^QE | in erste Zeile des Bildes | Shift + Pos1 |
^QX | in vorletzte Zeile des Bildes | Shift + Ende |
^QR | Dateianfang | Ctrl + Pos1 |
^QC | Dateiende | Ctrl + Ende |
^QB | Blockanfang | Alt + Pos1 |
^QK | Blockende | Alt + Ende |
^G | Zeichen auf Cursor löschen | Entf |
<Del> (1FH) | Zeichen links von Cursor löschen | Backspace |
^T | ab Cursor bis Wortende löschen | Shift + Entf |
^QY | ab Cursor bis Zeilenende löschen | Ctrl + Entf |
^KY | markierten Block löschen | Alt + Entf |
^V | Einfügen ein/aus | Einf |
^I | Tabulator | Tab |
^KP | Drucken einer Datei | Druck |
Abbildungen
Abb. 1: Bestückungsplan
Abb. 2: Leiterplattenlayout
Abb. 3: Stromlaufplan
Abb. 4: Tastaturbelegung
Und hier die Bilder noch einmal in besserer Qualität im PostScript-Format zum Downloaden:
Mit flinken Fingern
von Jörg Linder
Enrico Grämer war so nett, mir das Interface zum Anschluß von PC-Tastaturen an den KC als Vorab-Version für einen Test zu überlassen. Nachdem ich voller Vorfreude das schaumstoffausgekleidete Päckchen geradezu aufgerissen hatte, kam eine ca. 45 x 68 mm kleine Platine im wohlbehüteten Inneren zum Vorschein. Darauf befinden sich 4 Schaltkreise und eine "Handvoll" anderer Bauteile. Von bzw. zur Platine führen zwei etwa 20 cm lange Kabel mit DIN-Steckern - eines mit "V.24" und das andere mit "KBD" beschriftet.
"Oh! Das ist alles!?" dachte ich im ersten Moment. Natürlich wird man sofort neugierig. Die Installation - wenn dieser Begriff überhaupt gerechtfertigt ist - war mehr als einfach: Den V.24-Stecker mit Kanal 2 (rechts) des M003 kontaktiert, den KBD-Stecker in die KEYBOARD-Buchse und die PC-Tastatur via PS/2-Adapter mit der Buchse auf dem Interface verbunden, fertig!
Nach dem Einschalten des KC dauert es einen Moment, bis das Interface betriebsbereit ist. Man erkennt dies am Aufleuchten der auf der Tastatur befindlichen Leuchtdioden für "Num" und "Rollen". Das zur Anmeldung notwendige 0DH wird automatisch an die V.24 gesendet, so daß man sich die Betätigung der Enter-Taste sparen und sofort wie wild drauflos tippen kann.
Ja wirklich, die (Schreib-)Arbeit damit macht wirklich Spaß. Während die Original-Tastatur eher eine Zumutung ist (erforderlicher Tastendruck zu groß, Belegung nicht ganz einer Schreibmaschine entsprechend) und auch die D005 sich nicht gerade mit Ruhm bekleckert (häufiges Prellen, Belegung ebenfalls nicht ganz OK, teilweise Tasten-"Aussetzer"), kann man jetzt mit einer entsprechenden PC-Tastatur seinen Fingern etwas Gutes tun.
An dieser Stelle möchte ich noch einen Rat an zukünftige Tastatur-Käufer geben: Nicht das billigste Modell und schon gar nicht aus einem Katalog nehmen. Am besten ist es, wenn man die Tastatur seiner Wahl vorher beim Händler ausprobieren kann. Nur so läßt sich feststellen, ob Anschlag, Druckpunkt, Neigungswinkel usw. angenehm sind. Ich habe z. B. eine Cherry-Tastatur mit sogenanntem "weichen Klick". Sie hat einen definierten aber soften Druckpunkt, der Anschlag ist angenehm. Zwar bekommt man dieses Modell nicht gerade hinterhergeworfen, aber man kauft sich ja nicht täglich so ein Teil.
Doch nun wieder zum Interface. Ich habe es vorrangig mit den beiden Textverarbeitungsprogrammen WordPro6 und WordStar (TPKC) getestet. Es ist geradezu unglaublich, wieviel schneller man schreiben kann! Das liegt hauptsächlich daran, daß der Tastencode "verarbeitungsfertig" am V.24-Kanal ansteht und nicht erst aus der Sendefolge eines U 807 decodiert werden muß.
Während ich früher nach der Eingabe von einigen Zeichen warten mußte, bis die Bildschirmanzeige gefolgt war und mich dann mit "verschluckten" oder durch Tastenprellen mehrfach erscheinenden Buchstaben eines besseren belehrte, ist dies jetzt ins Gegenteil umgeschlagen. Mit zehn Fingern und geschätzten 350 Anschlägen pro Minute gleitet der Cursor dahin und spornt mich mit einem gelangweilten Blinken zu noch mehr Tempo an. Es ist mir beim normalen Schreiben nicht gelungen, das System aus der Reserve zu locken. Selbst bei Erreichen des Bildschirmendes und anschließendem Scrollen hat TPKC nicht einen einzigen Buchstaben unterschlagen. (Dazu trägt natürlich auch der Puffer von ZAS bei.)
Von den zahlreichen Belegungsvarianten habe ich kaum Gebrauch gemacht. Im wesentlichen sollten die Betriebsmodi "CAOS", "CP/M" und "TPKC" ausreichend sein. Zwar habe ich auch mal kurz unter BASIC die Befehle per Tastendruck ausprobiert, aber mangels Umgang fehlt mir wohl inzwischen der Bezug zu BASIC. Mit einem Klick sind die Kommandos jedenfalls da.
In dieser Ausgabe sollte auch Enricos Artikel zum Tastaturinterface zu finden sein (wenn nicht, dann war die Zeit wohl zu knapp), so daß ich mich über technische Details nicht äußern möchte. Zum Betrieb unter MicroDOS bzw. MLDOS nur soviel: Es muß der Koppeltreiber V24TAST.KOP installiert sein, um das Tastaturinterface in dieser Betriebsart nutzen zu können. Anderenfalls sorgt der EPROM-interne Treiber dafür, daß die V.24 wegen Moduswechsel die Tastatur regelrecht "abhängt". Wer übrigens schon den neuen EPROM F8 eingebaut hat, braucht sich um das eben geschilderte Problem nicht kümmern, denn aus diesem EPROM wird kein Koppeltreiber übertragen und der unter CAOS laufende V.24-Modus wird beibehalten.
Fazit:
Die Anschaffung lohnt sich für jeden, dem seine Finger lieb sind. Für Vielschreiber und solche die es werden wollen, ist das Interface ebenso ein Muß wie für diejenigen, die das 10-Finger-System beherrschen. Ich bin jedenfalls begeistert und arbeite seit einigen Wochen ausschließlich mit einer PC-Tastatur am KC. Aus meiner Sicht dürfte sich das Interface zum absoluten Renner entwickeln. Dem steht höchstens noch der Preis im Wege, doch wenn genügend Bestellungen bei Enrico eintreffen, kann er sicherlich einen ordentlichen Rabatt aushandeln!
Wichtiger Hinweis beim Einsatz von Conner-HD's
von Ralf Däubner
Die alten Connermodelle CP 30xx dürfen nicht mit den im HD-ROM vorhandenen Daten initialisiert werden. Man sollte sich wenn möglich, die Daten geben lassen, mit der sie im PC angemeldet waren. Hier einige Daten von Conner-HD's:
cyln | head | sec | size | ||
CP 3024 | 615 | 4 | 17 | 20 MByte | (die an meinem KC) |
CP 3044 | 977 | 5 | 17 | 40 MByte | (Werte von Laptop) |
KC-compact - Der DDR-CPC
von Ralf Däubner
Kurz vor der sog. WENDE wurde in Mühlhausen/Thüringen der KC-compact gebaut. Dieses Gerät entspricht einem CPC-Nachbau, allerdings in völlig anderer Aufmachung. In eine ,,echte`` CPC-Sammlung gehört das Gerät aber einfach mit hinein.
- Aufbau der Hardware:
- Konsole ohne jegliche Peripherie, ähnlich dem C64 von Commodore. Neben dem Tastenblock 5 (fünf!!) Nummerntasten auf der linken Seite. Die ,,kleine Entertaste`` fehlt. Rechts neben dem Tastenblock untereinander angeordnet: DEL, 4 Cursortasten, RETURN.
- Gehäusefarbe:
- Schmuddelweiß
- Rückseite:
- Expansionsport (weitgehendst zum CPC kompatibel), Druckerport parallel (25-pol. SUB- D), Scartbuchse für TV/Monitor, UHF-Ausgang vom Modulator (UHF K36), Tapebuchse, Netzteilanschluß.
- Rechte Seite:
- Soundanschluß (5-pol. Diodenstecker), Joystick, Ein-/Ausschalter.
- Innenleben:
- Tastatur auf Metallrahmen, nix mit Folie (erinnert an alte 464-Tastatur), Modulator, Soundchip und CRTC 0 gleiche Bauart wie beim CPC, nix mit GATE-ARRAY (wurde aus verschiedenen Bauteilen nachgebaut), ansonsten rundweg Bauteile MADE in UDSSR. Kaum maschinelle Verarbeitung, man sieht noch echte deutsche Handarbeit. Tastenfunktionen entsprechen denen des CPC.
- Sonstiges:
- Basic 1.1 (vom CPC 664), 64KB RAM, farbiges F-BAS-Signal (der CPC hat nur SW), kein Synchronsignal auf der Scartbuchse (darum kein Schneider-Moni verwendbar), ansonsten normale RGB und Audio-Belegung nach Norm. Netzteil Primär und Sekundär separat abgesichert.
- Ausbaumöglichkeiten:
- Controller (sog. Rucksack) mit zweiter 64KB-Bank, BASDOS (entspricht in etwa VDOS 2.0) und 2x80-Spur-Laufwerken 5,25``. Kein Norm-Shugartbus. Normaler Kassettenrecorder als Speichermedium. Als Monitor entweder FBAS-Monitor oder Fernseher, Commodore-Farbmoni ist auch geeignet. Auch PC-Monitore nach der CGA-Norm können dank des Sync-Gemisches verwendet werden.
- 2. Betriebssystem:
- Mit dem ,,Rucksack`` + Laufwerk kann ,,MicroDOS`` geladen werden. Dies entspricht einem CP/M 2.6 und hat 50 KB TPA. Ein Großteil der CP/M2.2-Programme ist lauffähig. Format: 800KB auf 80 Tracks 5.25``. Unter STREAM 2 kann in dieses Format problemlos kopiert werden.
- Kompatiblität:
- Das Robotron-Laufwerk verträgt seltsamerweise keinen Kopfumschalter. AMSDOS-Format kann gelesen werden, aber eben nur eine Seite. Zu beachten ist, daß die Disks auf einem 80Tr.-Laufwerk in Single-Step bespielt werden (40-Spur, d.h. die Disk wird nur halb genutzt).
Bislang liefen alle möglichen CPC-Programme auf den KC-compact; sogar die PRODATRON-Megademo, die sehr hardwarenah programmiert ist, funktioniert. Der KC-compact wird zwar als CPC6128 anerkannt, durch die aber etwas andere Adressierung kann der CRTC nicht einwandfrei identifiziert werden. Obwohl mit CRTC 0 bestückt, wird CRTC 2 erkannt; demzufolge laufen nicht alle Sachen, die einen CRTC 0 brauchen.
Der DIGIBLASTER funktioniert am Druckerport einwandfrei. Erstaunlich ist, daß zwischen Soundchipausgabe und Blasterausgabe anders als beim CPC kaum Qualitätsunterschiede bestehen.
Anders als beim CPC ist das Einlesen von Kassette nicht von der Lautstärke des Rekorders abhängig. Der KC-Kompakt kann die Daten direkt über den Diodenanschluß des Bandgerätes einlesen. Alle Buchsen sind nach handelsüblicher Norm. Es können also DIN-Leitungen verwendet werden; beim CPC sind Anfertigungen von Adaptern erforderlich.
- Äußerer Eindruck und Funktionssicherheit:
- Durch 2 übereinanderliegende Platinen ist die Controllerfunktion etwas unsicher. Auch der 3-Finger-Griff funktioniert nicht immer einwandfrei. Es empfiehlt sich, bei Verwendung eines Monocrom-Monitors das FBAS-Signal wegen der besseren Auflösung auf ,,SW`` zu stellen. Es ist leider etwas problematisch (wenn gar unmölich), Programme in das genutzte Vortex-Format zu bringen. Kopieren nur unter ,,MicroDOS`` möglich, hier kann allerdings das Format der einzelnen Laufwerke bestimmt werden.
Ansonsten ist die Verarbeitung sehr robust, man kann auch mal ruhig ,,in die Tasten hauen``.
- Literatur:
- Die zu DDR-Zeiten erhältlich gewesene Literatur zum KC-compact ist einfach und übersichtlich gehalten und, nicht anders zu erwarten, komplett in deutsch (die Meldungen des Rechners sind unter BASIC in englisch, unter MicroDOS in deutsch).
In meine CPC-Sammlung integriert fällt der KC-compact (da alle Peripherie einzeln ist, kann von ,,kompakt`` eigentlich keine Rede sein) durch seine Farbe und einfache Verarbeitung auf.
Spielekurztests
von Ralf Däubner
Ich werde mich darauf beschränken, Mindestanforderungen hinter den Namen aufzuzählen. Dabei bedeuten kc85/x die Geräte; caos 3.1 das M006-er Modul für den KC 85/2. Mindest-RAM sind 32 KByte.
- Formel 1 (kc 85/3)
- mehrere Kurse
- 2 Modi (wie im Original)
- Steuerung gewöhnungsbedürftig (direkt)
- gute Grafik
- kein Sound
- EMU-tauglich
- Jungle (caos 3.1)
- Das Kultgame auf dem KC 85/3 sorgt für weitere Überraschungen. Mario wird bestimmt dazu noch einen größeren Beitrag schreiben.
- Cheat-Modus
- sehr gute Grafik
- guter Sound
- ein für dem KC 85/3 unvorstellbar hoher Speed
- frei belegbare Steuerung
- EMU-tauglich
- Testbildgenerator (testbild.sss)
- Von Uwe Felgentreu gibt es einen recht guten Testbildgenerator. das einzige Manko an ihm ist nur, das er bei dem Menüpunkt Weißbild ein Graubild liefert. Damit er ein richtiges Weiß liefert, habe ich eine einfache For-Next-Schleife eingefügt.
- Er ist auf allen Geräten lauffähig.
Hallo Spieler!
von Mario Leubner
Heute mal etwas anderes von mir: Einen Leckerbissen unter den Spielprogrammen! Nein, kein neues Spiel, aber neu auf dem KC85/4. Anfragen gab es schon viele, ob sich nicht mal jemand findet, JUNGLE für den KC85/4 umzuschreiben. Doch wie das meist so ist, wollte sich keiner daran wagen. Zugegeben, es war auch ein ganzes Stück Arbeit, von den 32K die Programm- und Datenbereiche zu trennen und die KC85/3-spezifischen Teile zu ersetzen. Ergänzt habe ich außerdem noch einen Joysticktreiber, wer also ein M008 oder M021 mit Joystick besitzt, kann sofort damit loslegen. Und da die meisten jetzt einen D004-Diskettenaufsatz verwenden, habe ich den Turbolader durch einen Diskettenlader ersetzt. Geblieben ist das eigentliche Spiel und die optische Gestaltung.
JUNGLE V2.0 läuft nur auf dem KC85/4. Zum Programm gehören die drei Dateien:
JUNGLE20.KCC | das Ladeprogramm |
JUNGLE20.OVR | das Hauptprogramm |
JUNGLE20.DAT | die Bestenliste |
Um JUNGLE von Diskette zu Laden gibt man folgendes Kommando ein:
%FLOAD
Name:JUNGLE20
Es erscheint zunächst ein Ladebild und die anderen Dateien werden eingelesen. JUNGLE V2.0 kann auch ohne D004 gespielt werden, dabei muß nur das Hauptprogramm geladen werden. Um ein solches Kassettenfile zu erzeugen verwendet man das Kommando FLOAD von CAOS4.3 oder AFLOAD.KCC und geht wie folgt vor:
%FLOAD 200
NAME:AFLOAD
%AFLOAD 0 0
Name:JUNGLE20.OVR
0800 eeee ssss
%SAVE 0800 eeee ssss
NAME:JUNGLE20
(A)FLOAD mit zwei Argumenten unterdrückt den Autostart, so kann die Datei unverändert kopiert werden. Statt eeee und ssss sind im SAVE-Kommando natürlich die bei FLOAD angezeigten Adressen zu verwenden.
Die Menüfunktion zum Abspeichern von JUNGLE entfällt, statt dessen kann man jetzt die Bestenliste auf Diskette abspeichern. Diese wird dann beim Laden automatisch wieder mit eingelesen. Neu ist auch der Level 3, damit gelangt man in das höchste der bisher erreichten Spiele. Mit Level 3 kann man also versuchen, JUNGLE bis zu Ende durchzuspielen. Für alle Neugierigen: es gibt 99 Spielstufen! Den Rest müßt Ihr aber selbst herausfinden.
Also dann viel Spaß mit JUNGLE auf dem KC85/4!
UNIPIC 2.0 - Update 1
von Ralf Kästner
Nach dem ersten Bugfix in der letzten Ausgabe folgt heute nun das erste Update für ,,UNIPIC 2.0``. Der Ablauf ist der gleiche wie beim letzten Mal: alte Version der Originaldiskette erst komplett sichern, dann die alten Overlays durch die heutigen neuen Varianten ersetzen und das Programm neu installieren.
Aus gegebenem Anlaß - das korrekte Kopieren muß ich einfach voraussetzen, nur wenn man keine Fehlermeldungen bei diesem Vorgang erhält, kann man sicher sein, daß die neue Version auch richtig arbeitet! Da die UNIPIC-Diskette ziemlich voll ist und viele 5,25``- Diskettenlaufwerke ab 700 kB Belegung bereits Probleme machen, hat sich am besten bewährt, wenn man sich eine leere Diskette nimmt, dort die Originale draufkopiert und mit dieser Diskette das Update durchführt. Arbeitet die neue Variante korrekt, löscht man auf der Originaldiskette die Programmdateien und kopiert anschließend die neue Version von der Zwischendiskette auf die Originaldiskette. Da dann die physischen Plätze der Originaldateien (liegen alle am Anfang der Diskette) wiederverwendet werden, sind die wenigsten bzw. überhaupt keine Probleme zu erwarten. Bevor ich irgendwelche Dateien über die ,,News`` verbreite, teste ich sie natürlich selbst und dort sind maximal evtl. kleinere versteckte Fehler vorhanden - es kann aber z.B. nie sein, daß Hauptfunktionen wie das Füllen o.ä. nach einem Update nicht mehr funktionieren, dort wurden andere Fehler meist beim Kopieren gemacht!
Im Archiv UP2-UPD1.PMA befinden sich heute die folgenden Dateien:
- UNIPIC.003
- UNIPIC.004
- UNIPIC.005
- UNIPIC.006
- UNIPIC.009
- UNIPIC.010
- UNIPIC.011
Funktionell gab es keine Änderungen, so daß weiterhin überall Version 2.0 angezeigt wird. Das Update verbessert vor allem die Geschwindigkeit einiger Abläufe bzw. Funktionen, die da wären:
Die Funktion WIND(ow) im Showmenü arbeitet schneller, da nach der Einstellung des Show-Fensters das Menü nicht mehr neu aufgebaut, sondern einfach wieder in den Vordergrund geschaltet wird.
Alle Dialoge, welche irgendwelche Bereiche einstellen, wie Show- Window, Magnify-Region oder Insert-Fill-Texture sind jetzt einheitlich aufgebaut, der angezeigte Ausschnitt wird nur mit OK übernommen, wenn man BRK wählt, bleiben die vorher eingestellten Werte erhalten!
Speziell auf Wunsch von Mario Leubner wurde das Einlesen des Directories im Diskettenmenü beschleunigt - das kommt aber nur zum Tragen, wenn man DEP ab Version 3.x benutzt und die Sortierung eingeschaltet hat. Benutzen sollte man nur die Version 3.04 oder höher, dort kann man die maximale Anzahl der zu sortierenden Dateieinträge festlegen. UNIPIC geht davon aus, daß bei eingeschalteter Sortierung die Dateinamen auch sortiert kommen und prüft das auch nicht nach. Hat man zu wenig Platz für die Sortierung konfiguriert und DEP schaltet intern auf unsortiert um, ergibt das Datensalat beim Laden und es werden Bilddateien u.U. unvollständig geladen! Die Beschleunigung ist vor allem zu merken, wenn man auf einer Festplatte etwa 200 oder mehr Einträge im Userbereich hat, bei 300 verkürzt sich das Einlesen beispielsweise von rund 12 auf 5 Sekunden.
Weiterhin ist beim PCX-Import noch ein Fehler aufgetreten - wenn man versucht übergroße PCX-Bilder (> 512 Pixel Breite) einzulesen, ergibt sich Bildsalat. Das Programm übernimmt jetzt den richtigen oberen linken Ausschnitt des importierten Bildes.
Hauptgrund des Updates ist in der wesentlich verbesserten Performance der Füllfunktionen zu sehen. Vor dem Treffen war ich erst mal froh, daß überhaupt alles fehlerfrei funktioniert, obwohl mir klar war, daß es noch nicht optimal programmiert ist. Da ich diese Funktionen häufig benutze und jetzt wieder mal etwas Zeit war, galt es also, dort nachzubessern, der Suchalgorithmus ist zwar noch der alte aber u.U. erheblich schneller, wenn große Flächen gefüllt werden sollen. Die Beschleunigung greift aber nur, wenn nach oben bzw. nach oben und unten gesucht (am Bildschirm gefüllt) wird - sind nur noch nach unten freie Punkte vorhanden, läuft es wie bisher ab, liegt am Algorithmus aus dem seligen ,,LEONARDO``. Man sollte also möglichst im linken unteren Teil der zu füllenden Fläche die Funktionen starten. Ich habe dort mal spaßeshalber mit einem leeren Bild probiert, einmal Beginn ganz oben (wie alt) und einmal Beginn ganz unten (neu), es ergaben sich folgende Ergebnisse:
alt | neu | |||
Lores | 29 s | 5 s | ||
Hires | 44 s | 7 s |
In einem leeren Bild greift die Beschleunigung natürlich voll durch, je schmaler der Füllbereich in X-Richtung ist, desto weniger kommt er zum Tragen. Beim Verknüpfen von TEXTURE bzw. CLIPBOARD störte mich vor allem, daß man so lange warten muß, wenn nur noch kleine Zipfel gefüllt werden müssen, die die Suchroutine ausgelassen hat. Das geht jetzt auch schneller, da in der Schleife vorher jede IRM-Spalte abgetestet wird, ob es dort überhaupt etwas zu füllen gibt, wenn nicht, geht es gleich mit der nächsten Spalte weiter, das macht sich besonders beim CLIPBOARD-Füllen bemerkbar, da dort im negativen Fall auch noch das Umkopieren des Inhaltes der korrespondierenden Bildspalte entfällt.
Abschließend noch mal zum leidigen Thema CANON-Drucker, mittlerweile hat sich herauskristallisiert, daß es höchstwahrscheinlich an der Hardware liegt, daß der Drucker von Jörg Linder keinen Mucks von sich gibt. CANON setzt auf der Computerseite eine bidirektionale CENTRONICS-Schnittstelle voraus, welche mit dem KC-Anschluß über das M001 laut Modulhandbuch nicht gegeben ist. Leider hat Jörg hier noch nicht weitergemacht, auf alle Fälle sagt der Drucker auch unter CAOS oder WordPro 6.x nichts. Sollten sich also bei moderneren Druckern von CANON oder anderen Herstellern solche Probleme ergeben, ist das auf die bidirektionale Schnittstelle zurückzuführen, auf alle Fälle ist das in Arbeit und wenn sich neue Aspekte ergeben, kann man in den kommenden ,,News`` dann auch etwas dazu lesen.
Kleines Fehlerallerlei - 4PCX093, DIASHOW und UNIPIC mit DEP 3.x
von Ralf Kästner
So langsam verfolgt mich der PCX-Konverter, nun der heutige Fehler geht eindeutig auf meine Kappe, da ich ihn bei der Überarbeitung des Originalprogrammes selbst ,,eingebaut`` hatte. Wie im Artikel zum Update von ,,UNIPIC 2.0`` bereits zu lesen ist, gab es dort noch einen Fehler beim Import von PCX-Dateien, welche horizontal größer als 512 Pixel sind. Genau der gleiche Effekt tritt in 4PCX092 auf, deshalb heute gleich die nächste Version 4PCX093, wo dies beseitigt und noch eine andere Optimierung eingearbeitet wurde. Wenn das untere Ende des KC-Screens erreicht ist, wird das Einlesen der PCX-Datei beendet, auch wenn das importierte Bild noch weitergeht.
Weiterhin gibt es ja seit einiger Zeit das neue DEP 3.x für den Betrieb unter ML-DOS. Beides wurde von Mario Leubner in den vergangenen Ausgaben der ,,News`` vorgestellt. Einen wichtigen Unterschied zu den bisherigen DEP-Versionen hat er allerdings nur am Rande in der Ausgabe 2/96 auf Seite 43 bzw. im zugehörigen HLP-File erwähnt (dazu habe ich so meine eigene Erfahrung, die darin besteht, daß es nur selten gelesen wird), welcher zu Problemen beim Einladen von älteren Shows oder anderen Dateien mit dieser neue Systemumgebung führen kann.
Bis zur Version 2.2 von DEP übernahm das Programm die Dateinamen, so wie sie kamen. Es wurden also beispielsweise sowohl Kleinbuchstaben als auch Leerzeichen innerhalb des Namens oder der Erweiterung in das Directory auf die Diskette geschrieben. Dies ist aber nicht CP/M- konform und führte mitunter auch zu Problemen, wenn man mit CP/M-Programmen auf solche Dateien zugreifen wollte. Beispiel:
%VIEW DUELL 1.PIP
Hier wird die Kommandozeile so zerlegt, daß nur nach DUELL gesucht wird, da das erste Leerzeichen im Dateinamen als Abschluß des ersten und einzigen Parameters interpretiert wird. Die Datei DUELL 1.PIP kann also mit VIEW nie zur Anzeige gebracht werden!
Ab DEP 3.x passiert jetzt Folgendes: das Programm überprüft die Dateibezeichnung vom CAOS-Programm auf nicht zugelassene Zeichen, wandelt Klein- in Großbuchstaben ohne Rückmeldung um und am Wichtigsten - es entfernt automatisch alle Leerzeichen innerhalb des Namens oder der Erweiterung und schiebt die folgenden Zeichen nach links zusammen, aus DUELL 1.PIP wird z.B. DUELL1.PIP.
Worin liegt nun das Problem? Solange man mit DEP 3.x speichert und lädt, gibt es keine Probleme, da bei beiden Vorgängen immer die Leerzeichen entfernt werden und so die entstehende Datei geschrieben oder geladen werden kann, das CAOS-Programm merkt gar nichts von der Namensänderung, da sie im Hintergrund immer stattfindet.
Problematisch wird es, wenn mit DEP 3.x gearbeitet wird und auf Dateien zugegriffen werden soll, welche mit DEP-Versionen bis 2.2 abgespeichert wurden und die Dateinamen im Diskettendirectory Leerzeichen enthalten, es passiert nämlich Folgendes:
Das CAOS-Programm übergibt: | DUELL 1.PIP | |
DEP 3.x macht daraus: | DUELL1.PIP | |
BIOS/BDOS suchen nach: | DUELL1.PIP | |
Im DISK-Directory steht: | DUELL 1.PIP |
Diese Datei wird also von DEP 3.x nicht gefunden, da auf der Diskette noch die alte Bezeichnung im Directory gespeichert wurde, welche nach der Namensumwandlung durch DEP 3.x nicht mehr gefunden werden kann!
Wie behilft man sich dann? Man muß derartige Dateien einmalig umbenennen, so daß der Name bzw. Erweiterung keine Leerzeichen mehr enthalten - genauso, wie es DEP 3.x machen würde. POWER bzw. DIENST sind hier gut geeignet, da die Dateien über Nummern ausgewählt werden.
Leider sind von diesem Effekt auch Dateien von mir betroffen. Wenn man versucht, einige der älteren Shows zu laden, fehlen bei ,,UNIPIC 1.0`` Bilder, bei ,,UNIPIC 2.0`` hagelt es Fehlermeldungen, die man schlecht nachvollziehen kann. Ich habe mir deshalb die Mühe gemacht und alle bisher in den ,,News`` veröffentlichten Shows mit diesen Problemen überarbeitet. Im Archiv SHOW-ALT.PMA ist alles zusammengefaßt, es enthält wiederum 6 PMA-Archive mit den betroffenen Shows, am sinnvollsten ist es, die PMA's auf den News- Disketten durch die neuen Archive zu ersetzen, dann gibt es nie wieder Probleme!
SHOWTIME - Die dritte Runde
von Ralf Kästner
Mit etwas Verspätung geht es heute in die dritte Runde - die ersten Shows des Treffens 1997 sind nun endlich fertig. Da dieses Jahr die Fertigstellung von ,,UNIPIC 2.0`` Vorrang hatte, waren zum Treffen nur einige Rohfassungen zu sehen. Neben 2 bereits bekannten Sachen gibt es heute aber auch gleich noch eine neue Show mit der man (seinen) den KC 85/4 allen Interessenten kurz vorstellen kann.
Wie gehabt sind auf der Beilagendiskette die entsprechenden PMA- Archive vorhanden, welche vor Gebrauch in der CP/M-Betriebsart mit PMEXT.COM erst auf eine Diskette zu entpacken sind. Zum Abspielen der Shows können ,,DIASHOW 1.1`` oder ,,UNIPIC 1.0 bzw. 2.0`` eingesetzt werden.
KCHEART.PMA
Das ist zwar nur eine sehr kleine, dafür aber sehr interessante Show. Als Ausgangsmaterial lagen einige sw/wß-Fractale vor, welche mit leicht variierten Parametern berechnet wurden, was den Eindruck erweckt, daß das Fractal wächst bzw. schrumpft. Um etwas Ansprechendes daraus zu machen, kamen verstärkt die neuen Funktionen von ,,UNIPIC 2.0`` zum Einsatz. Aus einem anderen FRC-Hires-Bild wurde ein interessanter Hintergrund ,,zusammengeschnitten``, nachbearbeitet und nach Lores konvertiert. Anschließend diente die CLIPBOARD-FILL- Funktion dazu, diesen Hintergrund unter das Motiv zu legen und mit Lupe und COPY wurde abschließend noch etwas Farbe komponiert. Mit Hilfe einer entsprechenden Standzeitwahl für die Einzelbilder sieht das Ganze einem pulsierenden Herz recht ähnlich, was schließlich den Ausschlag für die Bezeichnung des kleinen Kunstwerks gab.
KUGEL.PMA
Diese Show besteht insgesamt aus 40 Einzelbildern. Sie enthält nur LORES-Bilder und läßt zwei Kugeln auf einem schachbrettähnlichem Untergrund springen. Sehr reizvoll daran ist, daß die Kugeln beim Aufprall verformt werden und deutlich alle Schatten und Lichtreflektionen zu erkennen sind. Ich hatte in der vergangenen Zeit bereits mehrere Anfragen, wann die ,,springenden Kugeln`` endlich in den ,,News`` erscheinen - diese Show schien also bereits in der Rohfassung sehr ansprechend zu wirken und ist heute nun in der endgültigen Form verfügbar. Beim Entpacken werden 2 DSH-Dateien sichtbar, einmal mit allen 40 Bildern, wer dafür zu wenig RAM besitzt, kann es mit der 20-er Variante probieren, dort wurde bereits jedes zweite Bild ausgelassen, so daß man diese reduzierte Show sofort laden kann.
KC-VORST.PMA
Diese Show basiert auf dem Programm VORSTELL/4 der KC85/4-DEMO- Kassette (siehe Artikel in dieser Ausgabe). Bevor ich mir die Mühe gemacht hätte, den BASIC-Quelltext dieses Programmes entsprechend zu ergänzen, erschien es mir einfacher, die einzelnen Bilder mit PICGEN/4.KCC ,,abzuschießen`` und mit Hilfe von ,,UNIPIC 2.0`` auf den aktuellen Stand zu bringen. Insgesamt sind 24 Einzelbilder zusammengekommen, wo das KC-System visuell präsentiert werden kann, ähnlich wie ich es bereits für ,,UNIPIC 1.0`` mal praktiziert hatte. Eingeflossen sind auch die aktuellen Entwicklungen, wie Festplatte, ML-DOS oder Z-System. Die Auswahl der angeführten Beispielprogramme wurde rein gefühlsmäßig vorgenommen, ich hoffe, daß dort nichts Wichtiges fehlt, ansonsten kann ja auch selbst Hand angelegt werden.
Das war es dann wieder für heute. Zwei bereits gezeigte Shows sind noch in Arbeit und werden in den kommenden Ausgaben nachgereicht. FÜr das nächste Treffen arbeite ich bereits an einer selbstgezeichneten Hires-Show, welche schon konkrete Form angenommen hat und die neuen Möglichkeiten des Hires-Editors von ,,UNIPIC 2.0`` demonstrieren soll, mehr wird noch nicht verraten.
Ich wünsche wie immer viel Spaß beim Anschauen.
Alte Programme - Neuer Glanz
von Ralf Kästner
Nach dem Großprojekt ,,UNIPIC 2.0`` blieb nun endlich wieder mal etwas Zeit, seit längerem aufgeschobene Sachen in Angriff zu nehmen. Bis heute habe ich es noch nicht mal geschafft, meinen Programmbestand von den Kassetten auf die Festplatte zu überspielen. Mitunter scheitert es aber nicht nur an der Zeit, sondern an Stolpersteinen, welche beispielsweise Mühlhausen in einige Programme der kommerziell (EVP: 38,- M (Alu-Chips) - hi, hi) vertriebenen Kassetten eingebaut hatte.
Insgesamt stelle ich heute allen KC85/4-Usern im Archiv DEMO-4.PMA fünf derartige Programme zur weiteren Nutzung zur Verfügung, die sich auf den folgenden Kassetten befanden:
DEMO-85/4 (C0184) | INTER-D.KCC mit INTERBAS.KCC (Overlay) | |
LEKTION1.KCC | ||
OTHELLO.KCC | ||
VORSTELL.KCC | ||
SPIELE 5 (C0167) | PURSUIT4.KCC |
In der Regel hatten alle Programme auf diesen Kassetten ein kurzes Vorprogramm, das das bekannte Mühlhausen-Titelbild auf den Bildschirm zaubert und anschließend das eigentliche Hauptprogramm automatisch nachlädt. Solange das Hauptprogramm vollständig autonom seinen Dienst verrichten kann, reicht es aus, den zweiten Teil (Hauptprogramm) beispielsweise einfach mit TDCOPY von TAPE auf DISK umkopieren zu lassen und alles ist in Butter.
Probleme treten auf, wenn Mühlhausen in die Trickkiste gegriffen und einfach vom Hauptprogramm zusätzlich benötigte Teilprogramme in das Vorprogramm eingebunden hat. Da man das Vorprogramm ja nicht mit auf die Diskette kopiert hat, werden die zusätzlich benötigten Routinen nicht gefunden und das Hauptprogramm stürzt einfach ab. Kopiert man das Vorprogramm auch mit auf die Diskette und lädt (startet) es von dort, versucht es sein Hauptprogramm natürlich von Kassette (CAOS-UP 10H) zu laden, was auch nicht funktioniert - es befindet sich ja auf der Diskette/Festplatte. Leider gibt es auch kein CAOS-UP für das Laden von Programmen von Diskette, dann müßte man lediglich die UP- Nummer ändern. Es kann also mitunter recht schwierig sein, derartige Programme diskettenfähig zu bekommen. Um unerfahrenen Usern etwas zu helfen, habe ich die obigen 5 Programme entsprechend bearbeitet, so daß sie nun auch von Diskette geladen werden können. LEKTION1, OTHELLO und VORSTELL waren unproblematisch, dort mußten nur die Hauptprogramme umkopiert werden.
Einige Einfälle hatte Mühlhausen bei INTER, dort trat der o.g. Fall ein, daß im Vorprogramm gleich mehrere andere Unterprogramme eingebaut wurden, deshalb sind nach wie vor beide Teilprogramme notwendig, mit %FLOAD muß INTER-D.KCC geladen werden, dass nun automatisch INTERBAS.KCC von Diskette nachlädt, das Overlay darf deshalb auch nicht umbenannt werden! INTER ist programmtechnisch gesehen sehr interessant, eigentlich ein BASIC-Programm, welches im Vorprogramm z.B. das bekannte GRZEI enthält und nicht abgebrochen werden kann, da mit einer eigenen modifizierten KTAB gearbeitet wird.
Schließlich befindet sich noch PURSUIT4 in der Mühlhausen-Variante im Archiv. Dort waren auch einige Änderungen/Ergänzungen notwendig. Die im Vorprogramm enthaltenen Zusatzroutinen wurden am Ende des Hauptprogrammes angefügt, dadurch ist nur noch eine Datei notwendig. Der Eintrag für einen Warmstart aus dem CAOS-Menü wurde ergänzt und das Löschen des gesamten Programmes im RAM nach Beendigung des Spiels wurde entfernt, so daß man auch ohne Neuladen nun noch einmal beginnen kann.
Soviel für heute zu den Originalkassetten unseres seligen Herstellers, sollte jemand weitere Probleme mit anderen Programmen haben, bin ich gern zur Hilfe bereit. Viel Spaß mit den heutigen Programmen!
ZAS und der Speicher im Grundgerät
von Mario Leubner
Heute ist es nun so weit, das neue ZAS ist fertig - Ralf hatte es ja in der letzten Ausgabe der KC-News bereits angekündigt. Über den Sinn und Zweck wurde bereits einiges gesagt. Das Hauptziel ist einerseits die Vereinfachung für den Anwender und auf der anderen Seite die bessere Transparenz für den Programmierer und natürlich die Nutzung des Grundgeräte-RAM's. Wie Ralf bereits feststellte, so bin auch ich der Auffassung, daß nur dann davon Gebrauch gemacht wird, wenn eine andere Lösung nicht möglich ist. Denn diese speziellen Programme laufen dann wirklich nur noch auf dem KC85/4.
1. Das Prinzip der Speicherverwaltung
Stellt Euch mal vor, Ihr wollt mehrere Programme unter CAOS in den Speicher laden und abwechselnd abarbeiten. Da stellt sich doch gleich die Frage, welchen Speicher benötigt jedes der Programme? Man wird also die angezeigten Adressen beim Laden der Programme beobachten müssen. Doch es reicht noch nicht aus, daß sich die Programme nicht überschneiden, meist weiß niemand, an welcher Stelle Daten abgelegt werden. Nach Murphy benutzen zwei verschiedene Programme mindestens ein Byte in derart unterschiedlicher Art und Weise, daß ein Wechsel der Programme nicht mehr möglich ist. Das gleiche Problem besteht natürlich in der CP/M-Betriebsart des KC-Systems. Der Speicher im Grundgerät ist nicht ausgelastet und könnte für KC-spezifische Anwenderprogramme sinnvoll genutzt werden. Nun weiß jedoch wiederum kein Programm(ierer), welcher Speicherbereich noch frei ist. Da gab es bisher zwei Möglichkeiten: Entweder der Verzicht auf die Treiber im Grundgerät oder das Risiko, eine andere Anwendung zu stören.
ZAS in der Version 1.3 setzt an diesem Problem an und übernimmt die Verwaltung des freien Speichers. Das sind die Bereiche von 1C00H bis 3AFFH im RAM0 und 4000H bis 7FFFH im RAM4. Dazu werden die beiden Bereiche in Segmente zu je 256 Bytes - sogenannte Pages - aufgeteilt. Die Anwenderprogramme können nun einen freien Bereich zugeteilt bekommen, indem sie ZAS mitteilen, wieviele Pages benötigt werden. Der so zugeteilte Bereich gilt dann solange als ,,belegt``, bis er durch einen Befehl an ZAS wieder freigegeben wird. Nun mag der eine oder andere denken, was soll das ganze - unter CP/M kann doch maximal ein Programm laufen? Richtig, aber bereits die Hardcopy-Funktion des KC kann jedes laufende Programm unterbrechen und eine Routine im Grundgerät aufrufen. Ich denke da sofort an die Programme DRUCK und HPKC von Frank Dachselt. Dazu kommen noch Interruptroutinen, und vielleicht ein Maustreiber? Alle diese kleinen ,,Progrämmchen`` sollen sich miteinander vertragen. Mit ZAS 1.3 kann das Programm im D004 jetzt die bereits belegten Bereiche erkennen und so ein Überschreiben verhindern. Und die vorhandenen Programme, die ZAS 1.3 noch nicht kennen? Die laufen wie bisher, eben nur mit dem Risiko, eine andere Anwendung zu stören und einen Rechnerabsturz zu wagen - eben wie bisher. Einen Vorteil gibt es trotzdem: man kann alle Treiber, die nach dem neuen Prinzip arbeiten, vorher deaktivieren und erhöht dadurch die Funktionssicherheit.
2. ZAS 1.3 aus der Sicht des Anwenders
Der Anwender (und dazu zähle ich mich auch, wenn ich ein Programm starte) bemerkt von ZAS 1.3 zunächst nichts. Alle geladenen Programme/Treiber teilen sich den Speicher im Grundgerät und führen ihre Arbeit wie gewohnt durch. Das einzige was jetzt passieren kann, wäre eine Fehlermeldung der Art ,,Nicht genug RAM verfügbar`` oder ,,Treiber nicht vorhanden``. Dann bleibt zumindest die Möglichkeit, nicht benötigte Treiber zu deaktivieren, geforderte Treiber nachzuladen und den Programmstart erneut zu versuchen. Zur Erinnerung: Bisher war an dieser Stelle der Absturz des Rechners die wahrscheinlich einzige Reaktion!
Über die Möglichkeiten zum Laden der Treiber kann ich an dieser Stelle noch nicht allzuviel sagen. Geplant ist ein universelles Ladeprogramm, mit dem einzelne Treiber oder ganze Treiberpakete in einem Zug geladen werden können. Verschiedene Anwenderprogramme werden ihre eigenen Treiber selbst laden, so daß der Anwender gar nichts davon bemerkt. Das mitgegebene Testprogramm ZASTEST.COM liefert unter anderem einen Überblick über alle aktiven Treiber. Es ist damit auch möglich, Speicher zu reservieren und so eine Art Treiber (allerdings ohne Funktion) zu definieren und einzelne oder alle Treiber zu deaktivieren. ZASTEST liegt als Turbo-PASCAL Quelltext bei und demonstriert die Anwendung der ESC-Funktionen in einer höheren Programmiersprache.
3. ZAS 1.3 aus der Sicht des Programmierers
Hier muß man zunächst noch einmal unterscheiden zwischen der Programmierung der Treiber und der Nutzung von Treiberfunktionen in D004-Programmen. Die Treiber sollten auf alle Fälle so programmiert werden, daß sie universell genutzt werden können. Dazu gehört auch die Beschreibung der Treiberfunktionen und Systemanforderungen.
3.1. Treiberprogrammierung
Das Prinzip der Speicherverwaltung kann nur funktionieren, wenn die Treiber verschieblich sind oder auf verschiedene Adressen gelinkt werden können. Verschiebliche Treiber kann man unter CAOS z.B. durch Nutzung des relativen UP-Aufrufs 0F00FH realisieren. Die andere Möglichkeit ist die Nutzung des PRL-Formates, die der Linker LINK131 bietet. Derartige PRL-Dateien können mit einem Relokationsprogramm nachträglich auf andere Adressen gebunden werden. Eine geeignete Routine liegt als RELOC.Z80 und RELOC.REL vor und kann bei Bedarf in eigene Programme eingebaut werden. Auf alle Fälle wird das geplante Ladeprogramm derartige PRL-Dateien unterstützen.
Alle Treiber beginnen mit einem Header, der für den Zugriff von ZAS und Ladeprogramm einen einheitlichen Aufbau haben muß:
BASE: JR VERTEIL ; Einsprung zur Programmsteuerung ID: DB ID ; ID-Kennung VER: DB VERSION ; interne Versionsnummer (BCD-kodiert) PG: DB PAGES ; Speicherbedarf USE: DB 0 ; Anzahl der Nutzer des Treibers SUB: DB SUB_ID ; ID eines benoetigten Treibermoduls DB SUB_ADR ; Versionsnummer/Adresse (Pagebeginn) DB 0 ; Ende der Tabelle der noetigen Treiber ISTRG: DB 'ID-String',0 ; Klartext-Identifizierung
Die Einsprungstelle auf BASE+0 dient ZAS zum Aufruf der Treiberfunktionen. Im Register A wird dabei die Funktionsnummer übergeben, zwei Treiberfunktionen sind fest vorgeschrieben und müssen in jedem Treiber realisiert werden:
A=0 | Treiber aktivieren | |
A=1 | Treiber deaktivieren |
Bei der Aktivierung wird der USE-Counter um 1 erhöht. Wird der USE-Counter dabei von 0 auf 1 erhöht (erste Aktivierung) initialisiert sich der Treiber. Die Deaktivierung verringert den USE-Counter um 1. Die letzte Deaktivierung, also wenn der USE-Counter zu 0 wird, muß alle vom Treiber getätigten Veränderungen rückgängig machen. Als Merkmal der Deaktivierung löscht der Treiber seine ID im Header. Damit ist der benutzte Speicherbereich wieder freigegeben. Die Treiberfunktionen A=2..15 sind für spätere Erweiterungen reserviert, die Funktionen A=16..255 stehen zur freien Verfügung und können je nach Art des Treibers belegt werden.
Der ID-Code auf BASE+2 dient ZAS zur Erkennung, daß der Treiber aktiv ist. Bei der Speicheranforderung initialisiert ZAS deshalb die Headerpage mit dem ID-Code. Sobald die ID-Nummer im Header (mit Null) überschrieben wird, gilt der Treiber als deaktiviert und folgende Speicheranforderungen nutzen diesen Bereich wieder.
Die Versionsnummer auf BASE+3 dient zur Unterscheidung von Treibern mit gleicher ID, also bei Weiterentwicklungen. Für Treiber mit höheren Versionsnummern muß sichergestellt werden, daß die Funktionen der alten Versionen in vollem Umfang erhalten bleiben. Bei der Mitbenutzung von anderen Treibern erfolgt der Versionstest anhand der Tabelle ab BASE+6.
Auf BASE+4 steht das Page-Byte, also der Speicherbedarf des Treibers. Dieser Wert wird bei der Übertragung des Treibers benötigt und kann später zur Ermittlung der Endadresse des genutzten Bereiches verwendet werden. In Bit 0 bis 5 steht die Anzahl der benötigten Pages minus 1. Es sind also maximal 64 Pages möglich, was dem gesamten RAM4 entspricht. Bit 6 gibt an, welcher RAM-Bereich genutzt werden soll: 0 für RAM0 und 1 für RAM4. Ist Bit 7 gleich 0, dann ist der jeweils andere Bereich auch möglich, bei BIT 7 gleich 1 nicht. Hier legt der Programmierer des Treibers fest, wo sein Treiber lauffähig ist.
Der USE-Counter auf BASE+5 kennzeichnet den Nutzungsgrad des Treibers. USE=0 kennzeichnet einen noch nicht aktivierten Treiber. Bei einem Treiberaufruf mit A=0 zählt der Treiber seinen eigenen USE-Counter hoch. Im Falle der Initialisierung (USE-Counter 0->1) wird dies den mitbenutzten Treibern durch den Aufruf mit A=0 angezeigt. Diese zählen dabei ebenfalls wieder ihren eigenen USE-Counter hoch. Eine Deaktivierung der Treiber kann nur erfolgen, wenn USE=0 oder 1 ist. Wird der USE-Counter bei einem Aufruf mit A=1 zu 0, dann deaktiviert sich der Treiber und zeigt dies den mitgenutzten Treibern wieder durch den Aufruf mit A=1 an. Dabei werden alle mitbenutzten Treiber auch wieder freigegeben. Als Erkennungsmerkmal für eine erfolgreiche Deaktivierung löscht der Treiber seinen ID-Code und der Bereich ist frei für andere Anwendungen.
Auf BASE+6 folgt noch die Tabelle der mitbenutzten Treiber. Diese enthält zwei Byte für jeden benötigten Treiber. Im ersten Byte steht der ID-Code, danach die erforderliche Versionsnummer des Treibers und nach Übertragung zum Grundgerät die PAGE-Adresse. Die Adressen muß das Ladeprogramm im D004 ermitteln und eintragen. Die Tabelle wird mit einer Null abgeschlossen. Werden keine anderen Treiber benötigt, dann ist nur die Null anzugeben.
Als letztes steht im Header noch eine Zeichenkette zur Klartext- Identifizierung. Je nach Anzahl der mitbenutzten Treiber steht diese auf BASE+7, BASE+9 usw. Die Zeichenkette endet mit einer Null.
3.2. Nutzung der Treiber und ESC-Funktionen
Die Speicherverwaltung erweitert ZAS um einige ESC-Funktionen. Ab der kaum verbreiteten Version 1.2 sind zusätzlich die Aufrufe ESC-0 bis ESC-9 möglich. Diese führen zu den äquivalenten ESC-Funktionen des CAOS und sind vorteilhaft verwendbar bei der Umsetzung von BASIC- Programmen von CAOS-BASIC zu HCBASIC.COM. Mit ZAS 1.3 wurden die fünf Funktionen ESC-l bis ESC-p neu eingeführt.
Neu ist auch die Einführung von Identifizierungscodes (kurz: ID), das sind sozusagen die Kennbytes der Treiber. Für die Nutzung der ESC- Funktionen zur Speicherverwaltung ist immer der ID-Code erforderlich. Anhand der ID-Codes kann Speicher beantragt werden, der Treiber aufgerufen oder gelöscht werden. Zum Aufruf von Treiberfunktionen muß das D004-Programm nur die entsprechende ESC-Funktion aufrufen ohne Kenntnis an welcher Stelle im Speicher der Treiber steht.
Alle ESC-Funktionen sind nach folgendem Schema zu programmieren:
MEMANF EQU 0FFAEH ; Speicheranforderung/Quittung LD A,0FFH LD (MEMANF),A ; Anfangswert eintragen CALL STRING DB ESC,... ; ESC-Funktion aufrufen WAIT: LD A,(MEMANF) CP 0FFH JR Z,WAIT ; Quittung von ZAS abwarten CP 0F0H JR NC,ERROR ; zur Fehlerbehandlung
Die zu übergebenden Parameter werden alle nach dem ESC ausgegeben. ZAS quittiert die Funktion durch einen Wert in MEMANF, wobei mit 0FxH ein Fehler gemeldet wird. Je nach Funktion ist eine unterschiedliche Anzahl Parameter und Rückgabewerte möglich.
- Funktion ESC-l
Diese Funktion deaktiviert einen vorhandenen Treiber durch Aufruf der Treiberfunktion A=1 und gibt dessen Speicher frei. Ist der Treiber mit der angegebenen ID nicht vorhanden oder kann der Treiber nicht gelöscht werden, meldet ZAS einen Fehler. Es können nur Treiber gelöscht werden, deren USE-Counter kleiner als 2 sind, d.h. der Treiber wird von keinem anderen Treiber mitbenutzt.
Aufruf: ESC,'l',ID Ergebnis: 00h - OK FAh - Treiber kann nicht gelöscht werden FEh - ID nicht vorhanden - Funktion ESC-m
Damit wird Speicher für die Übertragung eines Treibers angefordert. Als Parameter ist der ID-Code und das Page-Byte erforderlich. Diese Werte sind dem Header des zu übertragenden Treibers zu entnehmen. Die Übertragung des Treibers kann mit den bekannten ESC-Funktionen ESC-S, ESC-T oder ESC-Z erfolgen.
Aufruf: ESC,'m',ID,Pages Ergebnis: xxh - höherwertiger Teil der Anfangsadresse FCh - ID-Tabelle voll FDh - nicht genug freier Speicher vorhanden FEh - ID bereits vorhanden - Funktion ESC-n
Damit kann getestet werden, ob ein benötigter Treiber im Grundgerät vorhanden ist. Als Rückgabewert erhält man in MEMANF die Anfangsadresse des Treibers. Werden weitere Informationen zum Treiber benötigt, ist die Headerpage zu lesen. Das kann mit einer der Funktionen ESC-R oder ESC-Y erfolgen.
Aufruf: ESC,'n',ID Ergebnis: xxh - höherwertiger Teil der Anfangsadresse FEh - ID nicht vorhanden - Funktion ESC-o
Um eine Treiberfunktion aufzurufen wird diese ESC-Funktion benutzt. Anzugeben ist der ID-Code, die Funktionsnummer (Register A), die Anzahl der folgenden Parameter (0 bis 7) und die Parameter selbst. Der Aufruf der Treiberfunktion erfolgt erst, wenn alle Parameter übertragen wurden. Dem Treiber wird dann in HL ein Zeiger auf die Parameterliste übergeben. Der Rückgabewert in MEMANF ist nur gültig, wenn dieser von der Treiberfunktion im Register A bereitgestellt wird. Weitere Registerinhalte können bei Bedarf aus dem Koppel-RAM gelesen werden.
Aufruf: ESC,'o',ID,A,n,... Ergebnis: xxh - Rückgabewert der Treiberfunktion (00h..EFh) FBh - Treiber nicht vorhanden FEh - ID nicht vorhanden FFBAH = Reg. L FFBBH = Reg. H FFBCH = Reg. E FFBDH = Reg. D FFBEH = Reg. C FFBFH = Reg. B - Funktion ESC-p
Das ist die einzige Funktion, die ohne ID-Codes auskommt. Es werden damit ALLE Treiber gelöscht und das ganze Treibersystem deaktiviert. Der Sinn der Funktion liegt darin begründet, daß vor einem Wechsel zu CAOS alle Treiber des CP/M-Systems ordnungsgemäß deaktiviert werden. Die Funktion zum Deaktivieren des Treibersystems wird automatisch mit der Funktion ESC-Ö (Exit) ausgeführt, also beim Wechsel zur CAOS- Betriebsart. Die Rückkehr mit QUIT kann die Treiber allerdings nicht wieder aktivieren. Solange alle Treiber korrekt arbeiten und sich löschen lassen, wird kein Fehler gemeldet. Anderenfalls sind USE- Counter so verändert worden, daß kein Treiber mehr löschbar ist und nur ein erneuter Bootvorgang (oder Nachladen von ZAS) kann den Speicher freigeben.
Aufruf: ESC,'p' Ergebnis: 00h - OK FAh - Treibersystem fehlerhaft -
3.3. ID-Nummern und temporäre Bereiche
Gültige ID's liegen im Bereich von 1 bis 255 und sind in mehrere Bereiche unterteilt worden:
Die beiden ID-Nummern 1 und 2 haben einen Sonderstatus und können als temporäre Bereiche benutzt werden. Darunter sind Bereiche zu verstehen, wo D004-Programme während der Laufzeit Daten ablegen. Das könnten Grafikdaten sein, also das Retten von Bildschirmteilen oder ähnliches. Das Programm im D004 beantragt einen Bereich mit der ID- Nummer 1 oder 2 und kann daraufhin diesen Bereich beliebig nutzen. Mit Beendigung des D004-Programmes muß der temp. Bereich genauso wie jeder andere Bereich wieder freigegeben werden. Die Besonderheit der temp. Bereiche liegt darin, daß sie keinen Header besitzen und nicht über ESC-o aufgerufen werden können.
Die ID-Nummern 3 bis 15 sind für Systemtreiber reserviert. Die 3 ist bereits vergeben für den Bildschirmschoner. Außerdem fällt z.B. ein zukünftiger Maustreiber mit in diese Kategorie.
Danach schließt sich der größte Bereich von 16 bis 239 an. Das ist der ,,offizielle`` Bereich. Wer einen Treiber programmiert hat und diesen zur allgemeinen Nutzung zur Verfügung stellen will, erhält eine ID-Nummer aus dem Bereich. Diese wird beim Betriebssystemkoordinator beantragt damit es keine doppelten ID's gibt. Einige ID's sind ebenfalls schon belegt (siehe HLP-Datei), eine Aktualisierung der Liste wird in den KC-News zu finden sein.
Die letzten 16 ID's von 240 bis 255 sind zum Test freigegeben. Damit kann jeder, der sich an der Programmierung von Treibern versuchen will, seine Programme entwickeln und testen. Ist ein Treiber fertig, wird dann einfach eine offizielle ID beantragt. Um Probleme zu vermeiden, sollten Programme mit Test-ID's den eigenen Rechner möglichst nicht verlassen.
4. Anwendungen
Soweit zu den neuen ESC-Funktionen und ZAS 1.3, ausführlich ist alles in den HELP-Dateien zu ZAS nachzulesen. Dort findet man auch eine komplette Übersicht aller Steuercodes und ESC-Funktionen. Bleibt nur zu hoffen, daß die Speicherverwaltung allseits angenommen wird und fleißig Treiber programmiert werden. Die ersten Programme mit Unterstützung von ZAS 1.3 gibt es gleich dazu:
- DEP.COM (Version 3.05):
- Deaktiviert das Treibersystem vor dem Sprung zur CAOS-Betriebsart. DEP testet, ob ZAS 1.3 läuft und arbeitet wie bisher, wenn eine ältere ZAS-Version läuft.
- ML.COM (Version 2.2):
- Neben kleinen internen Änderungen fordert ML.COM jetzt mit ZAS 1.3 den gesamten RAM4 als temporären Speicher an. Dies ist für die Betrachtung komprimierter PI?/HI?-Bilder erforderlich. Liegt ein aktiver Treiber im RAM4, so erscheint eine Fehlermeldung wenn ein komprimiertes Bild betrachtet werden soll. Alle anderen Funktionen sind uneingeschränkt benutzbar.
- FADEN.COM:
- Das ist der erste echte Bildschirmschoner für den KC85/4! Erforderlich ist neben ZAS 1.3 auch CAOS4.3 und damit die zweite fiktive RAM4-Ebene. Dorthin rettet der Bildschirmschoner nämlich den aktuellen Bildinhalt. Zur Bedienung nur soviel: Der Aufruf FADEN // gibt eine Hilfe aus, angegeben werden kann die Zeitkonstante. Ist der Bildschirmschoner aktiv, reagieren die Tasten (+) und (-) sowie (H) und (V). Jede andere Taste oder eine Ausgabeforderung vom D004 beendet den Bildschirmschoner. Der Tastencode wird quittiert, also nicht zum D004 weitergeleitet.
-
HPKC.COM und DRUCK.COM mit ZAS 1.3
von Frank Dachselt
Damit die Liste der mit der neuen ZAS-Version zusammenarbeitenden Programme noch etwas fortgesetzt werden kann, gibt es jetzt auch die Programme HPKC und DRUCK in angepaßter Form. Die Funktionalität für den Anwender hat sich nicht verändert, sodaß äußerlich kein Unterschied zu den bisherigen Versionen besteht. Die Programme sind lediglich um eine spezielle Laderoutine erweitert worden, die im Zusammenwirken mit ZAS in der Lage ist, die Programmteile an beliebige Stellen im Grundgerät lauffähig zu übertragen. Diese Variante ist allerdings nur als ein vorläufiges Provisorium anzusehen, da augenblicklich noch kein universelles Ladetool für diesen Zweck zur Verfügung steht.
Beide Programme machen bereits von der Möglichkeit gebrauch, Subtreiber zu benutzen, indem sie - wie bereits bisher - einen gemeinsamen Speicherbereich zur Ablage des Bildschirminhaltes benutzen.
Während HPKC bereits als fertige COM-Datei vorliegt, die nach der Installation von ZAS 1.3 sofort benutzt werden kann, besteht bei DRUCK wieder die Möglichkeit, einen an den persönlichen Drucker angepaßten Datensatz zu verwenden (siehe dazu den Artikel in den KC-News 4/94, der auch im Archiv DRUCK11.PMA dieser Ausgabe enthalten ist). Wer bereits einen solchen persönlichen Datensatz erstellt hat, kann diesen ohne Änderung weiterverwenden. Im Archiv DRUCK11.PMA sind alle Dateien, die zur Erstellung des Programms DRUCK11 notwendig sind, enthalten. Der persönliche Datensatz muß dabei als DRUCKDAT.MAC auf dem aktuellen Laufwerk vorliegen. Danach kann durch den Start der SUB-Datei ASM.SUB die Assemblierung vorgenommen werden. Da das Verfahren etwas ungewöhnlich ist, im folgenden ein paar erklärende Worte dazu. Zunächst ein Blick in die SUB-Datei selbst:
; ; Erstellen der Datei DRUCK11.COM ; m80 a:drck1=drck1v11 link131 a:drck1p=a:drck1 [op] prltomac a:drck1p m80 a:drck1p=a:drck1p link131 a:druck11=a:drck0,a:drck1p,a:irmbufp
Die Datei DRUCK11.COM besteht aus drei Teilen: der Laderoutine DRCK0 - also dem Teil, der bei der Initialisierung im D004 abgearbeitet wird, dem Haupttreiber DRCK1 und dem Subtreiber IRMBUF. Letzterer ist in gleicher Form auch im Programm HPKC11 enthalten. Diese drei Teile werden im letzten Kommando der SUB-Datei zum fertigen Programm DRUCK11 zusammengesetzt. Während DRCK0 und IRMBUF bereits als REL-Dateien bereitstehen, muß die entsprechende REL-Datei für DRCK1 erst erzeugt werden, da in diese der Datensatz aus DRUCKDAT.MAC mit einfließt. Nach der Assemblierung von DRCK1V11.MAC wird mit dem zweiten Kommando die entstandene REL-Datei mit der Option ,,op`` gelinkt, die die Erzeugung einer PRL-Datei bewirkt. An dieser Stelle wird in Zukunft der Assembliervorgang beendet sein, da das universelle Ladetool diese PRL-Datei erwarten und ins Grundgerät übertragen wird. Um nun diese PRL-Datei zusammen mit dem Subtreiber IRMBUF mit der Laderoutine DRCK0 zu verbinden, wird sie mit dem dritten Kommando erst einmal wieder in eine MAC-Datei verwandelt. Diese enthält den Inhalt der PRL-Datei Byte für Byte in Form von Definitionsanweisungen und kann nun mit dem vierten Kommando in eine ,,normale`` REL-Datei übersetzt werden, wie sie für den abschließenden Linkvorgang notwendig ist. Die Datei IRMBUFP.REL ist natürlich in gleicher Weise erzeugt worden und wird in Zukunft ebenfalls nur noch als PRL-Datei auftreten.
Die Programme DRUCK124, DRUCKLX4 und DRUCKEPS sind die bereits fertig übersetzten Versionen mit den drei beiliegenden Datensätzen DRUCK124.MAC, DRUCKLX4.MAC bzw. DRUCKEPS.MAC, die auch schon beim letzten Mal im Programmpaket enthalten waren.
Einen kleinen Schönheitfehler hat die Umstellung auf das neue Konzept der Speicherverwaltung allerdings erst einmal mitsichgebracht. Wenn HPKC und/oder DRUCK geladen wurde, dann lassen sich mit ML keine komprimierten Bilder mehr anzeigen, da sich beide Programme im RAM4 überschneiden würden. Der Zwischenspeicher für den Bildschirminhalt von HPKC und DRUCK befindet sich aus Platzgründen immer im RAM4, einem Bereich, den ML für das Entpacken komprimierter Bilder ebenfalls benötigt. Aber ich denke, daß sich hier bis zum Erscheinen der nächsten KC-News eine Lösung finden läßt, die dieses Problem beseitigt. Zur Zeit hilft in diesem Fall nur das Freigeben der von HPKC, DRUCK und IRMBUF benutzten Speicherbereiche mittels ZASTEST.
BOOT.COM - Der Bootmanager für den KC85
von Mario Leubner
Was wäre das tägliche Computerleben ohne die kleinen Helfer? Einen solchen will ich heute vorstellen. Ich habe ihn BOOT genannt, obwohl er auch für andere Aufgaben einsetzbar ist. Hauptziel meines kleinen Programmes ist es, während des Bootvorganges einen Eingriffspunkt zu schaffen, um die Systemkonfiguration wechseln zu können. Als Systemanforderungen benötigt BOOT.COM den KC85/4 mit ZAS ab Version 1.1 und ZSDOS.
Mittlerweile hat sich bei mir eine Standardkonfiguration durchgesetzt. Diese enthält NZCOM, RCP05 und 42 Directory-Namen. Manchmal benötige ich jedoch zusätzlich einen IOP mit 7 Records. Für andere Programme will ich auf NZCOM ganz verzichten, da der TPA nicht groß genug sein kann. Oder ich will sofort zur CAOS- Betriebsart und benötige nur das Minimalsystem im D004. Nun kann man sich das Standardsystem so gestalten, daß es voll automatisch bei JUMP FC (F8) geladen wird. Für die anderen Systeme muß man dann das Z-System verlassen oder eine andere Konfiguration (z.B. als geblitzter Systemabzug) nachladen. Eine Möglichkeit wäre das erstellen verschiedener Bootdisketten. Beim Booten von Festplatte kann man jedoch nur ein System aus der Systemspur laden. Mit BOOT.COM bietet sich jetzt die Möglichkeit, das gewünschte System bereits beim Bootvorgang auszuwählen. Dazu erscheint in einem Fenster ein Menü. Mit den Cursortasten kann man das gewünschte System auswählen, Enter bestätigt die Wahl und BRK oder ESC bricht BOOT.COM ab. Ohne Tastenbetätigung startet nach einer einstellbaren Zeit automatisch das Standardsystem.
Wenn der Startsubmit bisher so aussah:
A0>C:;NZCOM
schreibt man mit BOOT jetzt einfach:
A0>C:;BOOT
Auf dem Laufwerk C0: müssen sich die beiden Dateien BOOT.COM und BOOT.DAT befinden. Für den Einsatz von BOOT.COM müssen zu Beginn lediglich die entsprechenden Konfigurationen erstellt und in der Definitionsdatei BOOT.DAT eingetragen werden. BOOT.DAT ist eine ASCII-Datei, die mit jedem beliebigen Editor (zum Beispiel TPKC) bearbeitet werden kann. In dieser Datei stehen alle Informationen zu den möglichen Systemkonfigurationen sowie einige Steuerbefehle für BOOT.COM, das sind ein Timeout in Sekunden, Bildschirmfarben und Position des Fensters. Den Befehlen wird zur Unterscheidung das at-Zeichen ,,@`` (Paragraphenzeichen im deutschen Zeichensatz) vorangestellt. Zur besseren Übersichtlichkeit können beliebig viele Leerzeilen eingefügt werden. Zeilen, die mit einem Semikolon ,,;`` beginnen, dienen als Kommentar zur Beschreibung der Definitionen. Alle anderen Zeilen werden als Menüeinträge interpretiert. Folgende Befehle stehen zur Verfügung:
Befehl | Wirkung | Voreinstellung |
@DEFAULT nr | Standardsystem | 1. Menü-Eintrag |
@TIMEOUT sek | Wartezeit | 25 Sekunden |
@MENUCOLOR ink paper | Fensterfarben | blau auf gelb |
@COLOR ink paper | BS-Farben | weiß auf blau |
@MENUPOS zeile spalte | Menüposition | Bildschirmmitte |
Befehle müssen nicht in BOOT.DAT stehen, es werden automatisch die Voreinstellungen wirksam. Durch die Befehle bietet sich aber die Möglichkeit, dem Bildschirm eine persönliche Note zu geben. Mit dem Befehl @COLOR stellt man die Farben ein, die nach Verlassen von BOOT.COM wirksam werden. Man kann damit also gleich seine Standard-Bildschirmfarbe einstellen lassen wenn es nicht das übliche weiß/blau sein soll.
Kommen wir zu den eigentlichen Menüeinträgen, die ja erst die Funktion von BOOT.COM ausmachen. Die Syntax ist recht einfach: Zuerst kommt die Systembezeichnung, hier trägt man das ein, was später im Menü zu lesen sein soll. Nach der Beschreibung folgt ein Semikolon, gefolgt von dem Kommando welches das entsprechende System lädt. Ein Mehrfachkommando kann leider nicht angegeben werden, für umfangreichere Aufrufe muß man zu SUBMIT.COM greifen. Hier als Beispiel meine BOOT.DAT:
; Konfigurationsdatei fuer BOOT.COM - das Bootmenue fuer den KC85 ; --------------------------------------------------------------- @TimeOut 5 @Color 7,1 @MenuColor 0,4 @Default 4 ;--------------------------------------------- ML-DOS ohne Festplatte 56.00K TPA ; c1:tpa56k ML-DOS ohne Z-System 54.00K TPA ; c:putds -d=a -s NZCOM + 28 DIR-Namen 50.75K TPA ; c0:nz NZCOM + 42 DIR-Namen 50.50K TPA ; c0:nz42 NZCOM & IOP-Paket 50.00K TPA ; c0:nziop E0: DEP 3.0 -> CAOS ; e0:dep3 e0:initial.uuu Festplatte parken ; c:hdpark ;---------------------------------------------
Für jedes System muß man sich nur die entsprechende Systemdatei erstellen. Das geht mit SYSGEN.COM, wenn es sich um ein komplett anderes System handelt (z.B. ML-DOS ohne Festplatte). ML-DOS ohne Z-System läuft bereits, wenn ich BOOT.COM starte, deshalb ist für das zweite System eigentlich kein Kommando erforderlich. Ich nutze es aber gleich für die automatische Erzeugung der Datei !!!TIME&.DAT im RAM-Floppy.
Das Prinzip ist also der automatische Aufruf einer Auswahl spezieller Programme. Die Nutzung für andere Aufgaben ist also genauso denkbar - man muß nur die entsprechenden Eintragungen in BOOT.DAT vornehmen. Und noch ein Hinweis: Sollte einmal die Fehlermeldung ,,BOOT: Kommando? ....`` erscheinen, dann stimmt ein Befehl in der Datei BOOT.DAT nicht. Ebenso wenn das gewünschte Programm nicht gestartet wird. Für alle Interessierten gebe ich auch den Quelltext BOOT.C mit dazu. Es ist mit HITECH-C übersetzt worden. HITECH-C ist ja als Public Domain verfügbar und bietet meiner Meinung den besten C-Dialekt auf CP/M-Systemen.

BOOT.COM in Aktion
NZCOM-Tip: Nutzung des IOP
von Mario Leubner
Wer hat sich nicht schon einmal gefragt, wozu das meist ungenutzte IOP-Segment von NZCOM gut ist? Im NZCOM-Handbuch steht nur:
,,IOP (Input/Output Package): Es gestattet das bedarfsweise Laden von I/O-Treibern, um solche Möglichkeiten wie Tastaturmakros oder Device-Umleitung von Bildschirm- oder Druckerausgabe in eine Datei ... [bereitzustellen.]``
Lange habe ich nach fertigen Modulen gesucht, aber nichts passendes finden können. Am brauchbarsten war noch die Beschreibung der IOP-Schnittstellen in der Datei IOP.LBR (befindet sich auf der V-Disk Nummer 25). Diese ist natürlich in englisch und ich erspare mir an dieser Stelle eine Übersetzung. Meine wichtigste Erkenntnis war, daß es sich meist um hardwarespezifische Treiber mit ganz speziellen Systemeigenschaften handelt. Das erschwert eine Nachnutzung auf anderen Systemen.
Das Prinzip des IOP ist eine Erweiterung der BIOS-Funktionen. Das IOP enthält wie das BIOS einen Sprungverteiler. Ist im Z-System ein IOP vorhanden, dann werden die BIOS-Rufe für Konsole, Drucker und Zusatzkanäle umgeleitet. Im IOP erfolgt dann eine Weiterleitung an das eigentliche E/A-Gerät. Außer dieser Umleitung der BIOS-Funktionen sind noch Status- und Steuerfunktionen integriert. Die Tabelle zeigt eine Übersicht der verfügbaren Funtionen.
Daran ist zu sehen, daß die Routinen zur Steuerung vorhanden sind. Im IOP gibt es aber (im Gegensatz zum RCP/FCP/CPR) keine eigenen Kommandos. Es sind deshalb noch zum IOP passende Programme erforderlich, die auf die IOP-Schnittstelle zugreifen. Das zu den Grundlagen, wer tiefer einsteigen will, dem empfehle ich das Studium der oben erwähnten IOP.LBR.
Gruppe | Offset | Name | Beschreibung | |
hex. | dez. | |||
IOP | 00 | 0 | STATUS | IOP Statusabfrage |
Status | 03 | 3 | SELECT | IOP Geräteauswahl |
und | 06 | 6 | NAMER | IOP Gerätenamen abfragen |
Steuerung | 09 | 9 | INIT | IOP Initialisierung |
0C | 12 | CONST | Status Konsoleneingabe | |
0F | 15 | CONIN | Konsoleneingabe | |
BIOS | 12 | 18 | CONOUT | Konsolenausgabe |
Schnitt- | 15 | 21 | LIST | Druckerausgabe |
stelle | 18 | 24 | PUNCH | Zusatzausgabe |
1B | 27 | READER | Zusatzeingabe | |
1E | 30 | LISTST | Status Druckerausgabe | |
IOP Patch | 21 | 33 | PATCH | Konsole patchen |
24 | 36 | COPEN | Mitschnitt Konsole starten | |
IOP | 27 | 39 | CCLOSE | Mitschnitt Konsole beenden |
Recorder | 2A | 42 | LOPEN | Mitschnitt Drucker starten |
2D | 45 | LCLOSE | Mitschnitt Drucker beenden | |
IOP ID | 30 | 48 | ID | Identifizierung ,,Z3IOP`` |
Aufgrund der fehlenden Möglichkeiten in ML-DOS, die Bildschirm- oder Druckerausgabe in eine Datei umzulenken, habe ich selbst einen IOP geschrieben. Realisiert wurden folgende Möglichkeiten:
- Umlenken der Druckerausgabe in eine Datei
- Umlenken der Konsolenausgabe in eine Datei
- Druckprotokoll der Bildschirmausgabe
Ich nutze dabei nur die ,,echten`` BIOS-Funktionen ohne Zugriff auf gerätespezifische Schnittstellen. Damit dürfte mein IOP auch auf anderen Rechnern laufen, Voraussetzung ist allerdings ZSDOS/ZDDOS als BDOS-Version und mindestens 7 Sektoren im IOP-Segment.
Wie installiere ich nun einen IOP in NZCOM?
Zunächst muß man sich eine neue Speicheraufteilung erstellen. Das geht am besten mit MKZCM.COM. Dort gebe ich unter Punkt 4 die 7 benötigten Sektoren an und speichere das Ergebnis ab. Als nächstes muß ZSIOP7.ZRL in NZIOP.ZRL umbenannt und in die Bibliotheksdatei NZCOM.LBR gepackt werden. Ist das geschafft, kann man NZCOM neu starten. Die Anwesenheit des IOP kann man mit SHOW.COM kontrollieren: Unter Menüpunkt ,,I`` müssen die Gerätenamen der I/O-Treiber angezeigt werden. Besser ist noch das Anlegen einer neuen Datei statt NZCOM.LBR, denn man will ja nicht immer mit dem IOP-Paket arbeiten. Ich habe mir vom laufenden NZCOM mit IOP ein System ,,geblitzt`` das ganz einfach mit dem Namen aufgerufen wird.
Wie bereits gesagt, braucht man noch Kommandos, um die IOP-Steuerung auszulösen. Eines habe ich schon erwähnt, es ist SHOW.COM, damit kann man sich zumindest die möglichen Gerätenamen anzeigen lassen. Zur Umschaltung der Geräte eignet sich DEV.COM bzw. DEVICE.COM von den Disketten der Z3COM's. Interessant ist dies ja nur für die Bildschirmausgabe, die gleichzeitig zum Drucker geschickt werden soll. Das Kommando dafür lautet:
A0>DEV CON:=PROT
Zum Abschalten des Druckers gibt man ein:
A0>DEV CON:=CRT
DEVICE.COM realisiert den gleichen Funktionsumfang, jedoch nicht aus der Kommandozeile, sondern menügesteuert.
Zum Starten/Stoppen der Protokollierung in einer Datei dient RECORD.COM. Dieses habe ich selbst etwas umgeschrieben, um die von mir gewünschten Eigenschaften zu realisieren. Meine Version 3.2 von RECORD.COM ist speziell an das IOP-Modul ZSIOP7 angepaßt. Die Verwendung mit anderen IOP's kann Probleme bereiten. Der Aufruf mit RECORD // zeigt eine Hilfeseite, die eigentlich keine weitere Erläuterung erfordert. Um die Druckerausgabe beim Backup mit BU.COM statt auf dem Drucker in eine Datei BU.LST zu schreiben, gibt man an:
A0>RECORD PRINTER ON C0:BU.LST;BU;RECORD PRINTER OFF
Ich habe alle Dateien zu diesem IOP in ein Archiv gepackt, soweit vorhanden, sind auch HELP's und die Quelltexte dabei. Bei den COM's gibt es teilweise Typ3- und Typ4-Programme, diese heißen dann *.3OM und *.4OM und sind bei Bedarf in *.COM umzubenennen.
Anmerkung:
Das Programm CAPTURE.COM - vorgestellt in den letzten KC-News - war mir zum Zeitpunkt der Programmierung von ZSIOP+RECORD noch nicht bekannt. Es werden von beiden Programmen ähnliche Funktionen realisiert, wobei es Gemeinsamkeiten und Unterschiede gibt: Beide Programme können Ein- und Ausgaben umleiten, beide Programme greifen in die BIOS-Schnittstelle ein und beide Programme reduzieren den TPA. CAPTURE.COM läuft unter normalem CP/M, also auch unter ML-DOS, ZSIOP benötigt das Z-System und ZSDOS. CAPTURE.COM bietet etwas mehr Möglichkeiten, so können z.B. auch Tastatureingaben umgeleitet werden. ZSIOP verbraucht dagegen nur 7 Records an TPA, während der residente Teil von CAPTURE.COM den TPA um mindestens 30 Records reduziert. Je nach System und Anwendungsfall muß jeder also selbst entscheiden, welches Programm er nutzt. Für die meisten Fälle reicht mir das speicherplatzsparende ZSIOP aus. Wer aber kein NZCOM hat, kann mit CAPTURE.COM auch die Umleitungen nutzen.