|
* TinkerDifferent *
Retro Computing Community |
| Home | Forums | What's New | Search | Settings |
| The PAK68/3 Accelerator - [German] |
Forums > Vintage Atari > Atari ST Line
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 16, 2022 - #21
[Image: minpic01.jpg]
Alles unter KontrolleMacintosh-Kontrollfeld fur PAK-68 und MacStartMichael ParkerBei der Konfiguration seines Systems hat´s der Mac-User leicht: einfach ein Kontrollfeld anklicken und die gewunschten Parameter einstellen. Anwender unserer Projekte MacStart und PAK-68/3 kamen dabei bislang zu kurz, weshalb wir hier ein Kontrollfeld nebst ausfuhrlicher `Bauanleitung´ vorstellen wollen.Fur den heutigen Mac-Anwender ist es sicherlich kaum noch vorstellbar, daß es am Anfang nur ein Kontrollfeld gab, und das im heutigen Sinne nicht einmal richtig: Es war nur ein Schreibtischzubehor (kurz DA fur Desk Accessory). Bald schon wurde es im Kontrollfeld zu eng, und es wurde in der Systemversion 4.1 durch eine rollbalkengesteuerte Auswahlfunktion erweitert. In dieser Form blieb es den Mac-Usern bis System 6.0x erhalten. Doch mit System 7 wurde alles anders: Das Kontrollfeld-DA in seiner ursprunglichen Form hat ganzlich das Zeitliche gesegnet, ab jetzt durfte sich jedes cdev selbst Kontrollfeld nennen und sein eigenes, beliebig großes Fenster haben. Doch dem gewissenhaften Programmierer sei geraten, die Standardgroße einzuhalten, damit´s auch unter System 6.0.x noch paßt. BefehlsempfangerEines jedoch ist seit System 4.1 erhalten geblieben: Der Mechanismus. Im Prinzip ist ein Kontrollfeld nur ein Befehlsempfanger, der auf eine begrenzte Anzahl von Messages hort. Diese Messages befehlen dem Kontrollfeld, zu prufen, ob es fur die aktuelle Soft- beziehungsweise Hardware geeignet ist, sich zu initialisieren, auf vielerlei Events, wie zum Beispiel einen Mausklick, zu reagieren und am Ende wieder alles schon sauberlich aufzuraumen. Diese Messages kamen fruher vom besagten Kontrollfeld-DA und werden seit System 7 vom Finder direkt verschickt. Die Event-Befehle sind Pendants altbekannter Recken wie Mausklick, Tastendruck, Cut/Copy/Paste/Clear wie auch Update-, Activate- und Deactivate-Events. Damit nichts anbrennt, bekommt ein Kontrollfeld regelmaßig ein Null-Event, welches dem Befehlsempfanger nicht viel mehr sagen will, als daß er jetzt ein bißchen Zeit hat, regelmaßige Arbeiten wie zum Beispiel die Anzeige der aktuellen Uhrzeit zu verrichten.Alles RoutineDas Herzstuck eines Kontrollfeldes ist eine Kontrollfeldfunktion mit einer streng festgelegten Parameterliste. Jene Parameter verraten viel uber die Besonderheiten von Kontrollfeldern. Neben der schon bekannten Message wird der Kontrollfeldfunktion ein Zeiger auf eine Dialog-Item-Liste ubergeben. Dies offenbart, daß ein Kontrollfeld auch nur eine spezielle Art von Dialog darstellt. Als Besonderheit ist Aufbau und Zeichnen nicht Sache des Kontrollfeldes selbst, sondern des Finders. Deshalb stellt ein cdev eine oft genutzte Moglichkeit dar, im Finder ein Fenster zu offnen, auch wenn man gar nichts kontrollieren will. Die Kontrollfeldfunktion bekommt im Falle eines Mausklicks oder Tastendrucks lediglich im Item-Parameter mitgeteilt, welches Dialog-Item betatigt wurde.Der Parameter numItems hat unter System 7 nur noch historische Bedeutung: Fruher wurde im alten Kontrollfeld-DA die Dialog-Item-Liste des cdevs einfach an die des Kontrollfeld-DAs angehangt. Somit haben sich alle Item-Nummern um die Anzahl dieser Dialog Items verschoben. Um das auszugleichen, bekam das cdev die Anzahl der Items im numItems-Parameter mitgeliefert. Unter System 7 wird dort nichts mehr angehangt, der numItems-Parameter aber noch aus Kompatibilitatsgrunden mitgeschleppt. Kommt eine Message der Event-Gattung herein, macht es sich der Befehlsgeber leicht und reicht einfach den aus der Programmierung von Applikationen bekannten Event-Record durch. Dort kann sich das Kontrollfeld dann selbst nach Herzenslust bedienen und das holen, was es zur Auswertung der Message braucht. Geben und NehmenEin letzter Parameter namens cdevValue ubernimmt die wechselseitige Kommunikation des Kontrollfelds mit dem Finder beziehungsweise dem alten Kontrollfeld-DA. Wenn sich ein Kontrollfeld einmal initialisiert hat, bekommt es im cdevValue-Parameter genau den Wert uberreicht, den es beim letzten Aufruf zuruckgegeben hat. Mit diesem Ping-Pong-Verfahren kann sich die Kontrollfeldfunktion zum Beispiel einen Zeiger oder ein Handle auf einen von ihr allozierten Speicherbereich erhalten.Geht irgend etwas wahrend des Kontrollfeldbetriebes schief, kann es auch anstatt der Adresse des Speicherbereiches eine Fehlermeldung zuruckgeben. So weiß der Finder, daß der User mittels Alertbox uber diesen Fehler informiert werden muß und die Zeit reif ist, das Kontrollfeld schleunigst zu beenden. WunschzettelDas c't-Kontrollfeld soll drei Aufgaben erfullen. Erstens soll es bei einem Mac mit PAK (Prozessoraustauschkarte) [7] dem System begreiflich machen, daß dort wirklich ein Fließkommaprozessor installiert ist. Jeder normale Mac weiß das von Haus aus, nur die PAK-Macs stellen sich hier dumm, weil die ROMs und das System (noch) nichts von dem auf der PAK befindlichen Rechenknecht wissen. Bleibt nicht viel ubrig, als dort ein bißchen nachzuhelfen: Eine Ersatzroutine muß her. In [2] stellten wir fur diesen Zweck das hasFPU-Init vor, das aber unter System 7 nicht mehr einwandfrei funktioniert.Seit System 6.0.4 ubernimmt namlich der Gestaltmanager den Auskunftsdienst uber System- und Hardwarekonfiguration. Mittels eines Selektors teilt man der Gestaltfunktion mit, was man denn gerne wissen mochte. Fleißig gibt die Funktion Auskunft, nur die Existenz der PAK-FPU bleibt unerkannt. Wohl haben die Systemprogrammierer von Apple solches geahnt, denn sie erlauben, fur jeden Selektor die Auskunftsfunktion zu ersetzen. Also schreibt man die Routine neu und ersetzt damit die systemeigene. Als zweite Aufgabe soll das Kontrollfeld die Installation der Shut-Down-Routine fur das MacStart-Projekt ubernehmen. Diese hangt man mittels Shut-Down-Manager in die Shut-Down-Sequenz ein. Was diese Routine mit dem Shut-Down so alles anstellt, kann in [3] nachgelesen werden. Als kleines Schmankerl und mithin dritte Aufgabe soll noch der Befehls- beziehungsweise Daten-Cache des Prozessors, zum Beispiel fur Geschwindigkeitstests oder Beseitigung von Inkompatibilitaten, ein- und ausgeschaltet werden konnen. cdev und mehrEine Kontrollfelddatei benotigt neben der cdev-Ressource, in der sich die Kontrollfeldfunktion befindet, noch eine Menge weiterer Ressourcen. Zum einen ist da die mach-Ressource, die jeweils nur ein Integer-Wort fur die System- und ein Wort fur die Hardwarekonfiguration enthalt. Tatsachlich kann man in die Bits dieser beiden Worter eine Menge Konfiguration hineinkodieren, im Gestaltzeitalter aber haben sich zwei Belegungen herauskristallisiert. $FFFF 0000 meint: Das Kontrollfeld lauft auf allen Konfigurationen, $0000 FFFF dagegen bedeutet: Frage mit einer speziellen Message die Kontrollfeldfunktion selbst, ob das Kontrollfeld unter dieser Konfiguration laufen kann.Die DITL-Ressource enthalt Angaben uber die Anzahl, Struktur und Position der Dialog-Items. Sie wird unter System 7 vom Finder selbstandig verwaltet und der Kontrollfeldfunktion nur zur Auswertung von Mausklicks und Tastendrucken oder der Behandlung von User-Items ubergeben. In der nrct-Ressource befinden sich Angaben daruber, welche Rechtecke im Hintergrund des Kontrollfeldfensters gezeichnet werden sollen. Wer seine Rechtecke lieber uber die DITL-Ressource zeichnen lassen will, der gibt hier als Rechteck die gesamte Flache des Kontrollfeldfensters an; auch hier wird der Historie Rechnung getragen. Die Koordinaten der Rechtecke wie auch der DITL-Ressource beziehen sich nicht auf den Punkt (1,1), sondern auf (1,89). Dies ruhrt daher, daß im alten Kontrollfeld-DA neben der eigentlichen Kontrollfeldflache Platz fur die Icon-Liste der anderen verfugbaren cdevs gelassen werden mußte. So prasentiert sich das vollstandige c't-Kontrollfeld dem Anwender. Damit sowohl im Finder als auch in der cdev-Liste des Kontrollfeld-DA ein Icon fur jedes Kontrollfeld angezeigt werden kann, benotigt man als letztes die Bundle-Ressourcen samt Zubehor. Die Kombination aus Ressourcen von je einem Typ BNDL, FREF und ICN# ordnen jeder Kontrollfelddatei eindeutig ein Icon fur den Finder zu. Unter System 7 kann man zur Not auch ohne diese Ressourcen leben. All diese Ressourcen mussen stets die ID -4064 haben; das goldene Fragezeichen geht an den, der sich diese hubsche Zahl ausgedacht hat. Mit dieser Festlegung weiß der Finder allerdings immer, welche Ressourcen er sich beim Aufbau eines Kontrollfeldes greifen muß. Damit man mit der Erstellung der Ressourcen nicht soviel Arbeit hat, sei hier auch auf Apples ResEdit hingewiesen, das fur alle notwendigen Ressourcen sehr angenehme Eingabemethoden bereitstellt. Ein INIT muß seinDas schonste Kontrollfeld nutzt nichts, wenn kein Code vorhanden ist, der die Patch-Routinen im System installiert; das Ganze muß ja nach altem Brauch wahrend des Systemstarts geschehen. Da gibt´s nur eins: Eine INIT-Ressource muß her. Eine angenehme Eigenschaft von Kontrollfelddateien ist, daß diese, soweit sie sich am richtigen Platz im Systemordner befinden, wahrend des Systemstarts nach INIT-Ressourcen durchforstet werden. Wie ein INIT aufgebaut ist, haben Sie womoglich schon in [1] und [2] kennengelernt. Hier soll nur gesagt werden, daß diese Kontrollfeld-INIT nicht viel mehr macht, als die Einstellungen zu laden, zu prufen, was installiert werden soll, entsprechende Routinen in den System-Heap zu laden und diese in die entsprechenden Stellen im System einzuklinken.Die Einstellungen werden System-7-like im Preferences-Ordner abgelegt. Somit ware auch ein Booten uber Netzwerk moglich. BauanleitungDas Kontrollfeld wurde mit Think C entwickelt. Es besteht im Grunde genommen aus vier Projekten, die jeweils eine Ressource zum Kontrollfeld beitragen: die Kontrollfeldfunktion, die Gestaltersatzroutine fur die FPU-Erkennung, die Shut-Down-Routine fur die MacStart-Schaltung und ein INIT, welches letztere beiden bei Systemstart im Systemheap installiert. Das Projekt fur die cdev-Ressource ubernimmt daruber hinaus auch das Zusammenfugen aller Ressourcen zu einem ausgewachsenen Kontrollfeld.Das gesamte Listing wurde den Rahmen dieses Artikels sprengen. Deshalb haben wir uns hier auf die wichtigsten Teile beschrankt. Eine Bauanleitung fur INITs findet sich außerdem in [1]. Den gesamten Sourcecode nebst ausfuhrbarem Programm stellen wir auch diesmal auf Sammeldiskette und in der c't-Mailbox zur Verfugung.(cm) Literatur[1] Leonidas Drisis: Starthilfe, c't 2/91, S. 182[2] Michael Parker, Carsten Meyer: FPU-Starthilfe, INIT fur PAK-ausgerustete Macs, c't 1/92, S. 188 [3] Carsten Meyer: Startautomatik, Macintosh automatisch ein- und ausschalten, c't 10/92 S. 196 [4] Inside Macintosh I, The Ressource Manager, The Dialog Manager, The File Manager, The Control Manager, Addison-Wesley 17737 [5] Inside Macintosh V: The Control Panel, The Shut Down Manager, Addison-Wesley 17719 [6] Inside Macintosh VI: Compatibility Guidelines, The Control Panel, The File Manager, The Finder Interface, Addison-Wesley 57755 [7] Holger Zimmermann: Doppel-PAK, PAK68/3 mit Cache und 68020/030 fur 68000-Rechner, c't 11/93 S. 222, c't 12/93, S. 276
Liked by alxlabandMelkhior |
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 16, 2022 - #22
Kasten 1
Kontrollfeld-MessagesmacDev: Die Kontrollfeldfunktion soll ermitteln, ob sie auf der aktuellen System- und Hardwarekonfiguration lauffahig ist. Wenn ja, wird eine `1´ zuruckgegeben, ansonsten eine `0´.initDev: Die Kontrollfeldfunktion soll sich initialisieren, wie zum Beispiel notigen Speicher allozieren oder Dialog-Items richtig vorbesetzen. Hier sollte auch gepruft werden, ob genugend Speicher fur spatere Allokationen verfugbar ist. activDev: Das Kontrollfeldfenster ist wieder aktiv geworden. Die Kontrollfeldfunktion kann nun auf zwischenzeitliche Veranderungen reagieren beziehungsweise diverse Dialog-Items reaktivieren. deActivDev: Die Kontrollfeldfunktion hat nun die Moglichkeit, bevor ein anderes Fenster aktiv wird, bestimmte Aktionen, wie zum Beispiel das Dimmen eines Control-Items oder das Entfernen einer Textselektion, durchzufuhren. updateDev: Die Kontrollfeldfunktion wird daruber informiert, daß Teile der Kontrollfeldflache neu gezeichnet werden mussen. Standard-Items und nrct-Rechtecke werden vom Finder selbstandig restauriert, User-Items dagegen mussen von der Kontrollfeldfunktion selbst neu gezeichnet werden. hitDev: Ein Element der Dialog-Item-Liste wurde angeklickt. Die Kontrollfeldfunktion erfahrt uber den Item-Parameter, welchem Item der Mausklick galt, und fuhrt entsprechende Reaktionen aus. keyEvtDev: Eine Taste wurde gedruckt. Die Kontrollfeldfunktion wertet den Tastatur-Event aus und leitet ihn gegebenenfalls an das gerade aktive Textfeld weiter. undoDev: Die Undo-Operation wurde ausgewahlt. Die Kontrollfeldfunktion soll durch Aufhebung der letzten Operation den alten Zustand wiederherstellen. cutDev: Das Ausschneiden-Kommando wurde ausgewahlt. Die Kontrollfeldfunktion sollte die aktuelle Textselektion ausschneiden und im Clipboard ablegen. copyDev: Ähnlich wie beim Ausschneiden soll auch hier die Selektion eines Edit-Feldes in das Clipboard kopiert werden. Unterschied ist hier nur, daß die Kontrollfeldfunktion die Selektion nicht loscht. pasteDev: Das Einfugen-Kommando wurde ausgewahlt. Die Kontrollfeldroutine soll den Inhalt des Clipboards in das Edit-Feld, in dem gerade der Cursor aktiv ist, an aktueller Stelle einsetzen. clearDev: Im Bearbeiten-Menu beziehungsweise mit der Backspace-Taste wurde das Loschen-Kommando ausgewahlt. Die Kontrollfeldfunktion soll in einem Edit-Feld die aktuell selektierte Textstelle loschen. nulDev: Ohne daß ein konkretes Ereignis anliegt, hat die Kontrollfeldfunktion jetzt die Moglichkeit, periodische Arbeiten wie zum Beispiel die Anzeige der aktuellen Uhrzeit durchzuruhren. closeDev: Die Kontrollfeldfunktion hat jetzt die Gelegenheit, anliegende Aufraumarbeiten wie das Desallozieren vom Speicher auszufuhren. Dies ist immer die letzte Message, die eine Kontrollfeldfunktion erhalt. Kasten 2 Die Kernroutinen des Kontrollfelds `c't-Einstellungen´, zu kompilieren mit Think C ab Version 5.0.
===============================================================
===============================================================
===============================================================
Zu diesem Artikel existieren Programmbeispiele0394_206.doc0394_206.zip 0394_206.sea
Liked by alxlabandMelkhior |
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 16, 2022 - #23
Unfortunately the above mess is just as it is in the DVD...
|
|
Melkhior Tinkerer -------- Joined: Jan 9, 2022 Posts: 101 Likes: 52 |
Jan 16, 2022 - #24
The mess is likely due to old Macs using \r as end-of-line, Linux/UNIX don't like that as they use \n. If the DVD contains a text file, converting the EOL first might be useful. On linux
This is some great stuff you're giving us! Liked by MacinJosh |
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 16, 2022 - #25
I now realize that all the links are pointing to my internal site where I've put them. I'll replace the images with their "large" counterparts.
Also, I keyword-searched the collection and this is the last PAK-related article I found. |
|
Melkhior Tinkerer -------- Joined: Jan 9, 2022 Posts: 101 Likes: 52 |
Jan 17, 2022 - #26
One more link on the subject for those wondering about re-creation: the Kicad drawings from Atariancomputing ;-) : https://github.com/AtarianComputing/Atari-OBV.
Thanks to @Kai Robinson and @MacinJosh for bringing up this and the trove of details! And thanks to C't for having done such a great job back then and being willing to publish it all. Liked by Kai RobinsonandMacinJosh |
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 17, 2022 - #27
I completely forgot I had done that :D Thanks for bringing it up.
|
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 17, 2022 - #28
Alright. I have cleaned up the text and code a bit. Looks better. Got rid of the line numbers too, thanks to PowerShell. Nice formatting tools here!
Liked by RetroTheory |
|
MacinJosh Tinkerer Finland -------- Joined: Jan 16, 2022 Posts: 53 Likes: 55 |
Jan 17, 2022 - #29
I think I'm done now :) I translated the articles as a resource here: https://tinkerdifferent.com/resources/pak68-3-the-translated-articles.7/
It's right at the 50000 character limit so cannot add anything else to it. |
|
viking272 New Tinkerer -------- Joined: Jan 19, 2022 Posts: 2 Likes: 1 |
Jan 19, 2022 - #30
Great thread, thanks!
Liked by MacinJosh |
|
AlexCL Tinkerer -------- Joined: Nov 1, 2021 Posts: 43 Likes: 43 |
Nov 23, 2022 - #31
English Install guide for Version 3 found online.
Liked by Kai RobinsonandNitram78 |
| << First | < Prev | Page 2 of 2 |
| Home | Forums | What's New | Search | Bookmarks | RSS | Original | Settings |
| XenForo Retro Proxy by TinkerDifferent.com |