PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:pascal:pascalk

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:diy:pascal:pascalk [27/01/2006 21:01] – überarbeitet mischroedersoftware:diy:pascal:pascalk [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 398: Zeile 398:
  
 Falls jemand also anfangen will zu programmieren : Es gibt viele gute Bücher, um den Einstieg selber zu finden und ein Turbo PASCAL 6.0 kann ich schon auf CD gebrannt in jeder Computerabteilung der Kaufhäuser für nicht mal 40,-DM bekommen. Falls jemand also anfangen will zu programmieren : Es gibt viele gute Bücher, um den Einstieg selber zu finden und ein Turbo PASCAL 6.0 kann ich schon auf CD gebrannt in jeder Computerabteilung der Kaufhäuser für nicht mal 40,-DM bekommen.
 +Programmierkurs für PASCAL 4
 +
 +====== Teil 4 ======
 +
 +==== Die Grafikprogrammierung ====
 +
 +So ... Freunde. Wir haben es nun fast geschafft, die Grundlagen der Pascalprogrammierung auf dem Portfolio zusammenzutragen. Ein Bereich fehlt aber noch. Etwas, daß eigentlich immer dazugehört und was für die meisten Leute das absolut Höchste ist.
 +
 +Es geht um die Grafikprogrammierung. Ich muß zugeben, daß es mir lieber gewesen wäre, wenn ich mir dieses Thema hätte sparen können. Ich bin zwar auch fasziniert von den Möglichkeiten, trotzdem scheue ich den Aufwand, der damit verbunden ist.
 +
 +Es gibt zwei mittelgroße Probleme, die uns erst einmal beschäftigen müssen. Ziel eines jeden Kurses war es bisher, am Ende eine Art Prototyp zu haben, auf dem man dann seine eigenen Programme aufbauen kann. Meistens waren das Pascal-Units, die man später einbinden konnte und die einem die Funktionen zur Verfügung gestellt haben. Nun muß man hier sagen, daß gerade die Programmierung von Grafiken recht individuell ist. Meistens sind es ja spezielle Effekte, die man braucht. Gerade dieses Gebiet ist so weitreichend, daß man, wenn man einigermaßen alles abdecken wollte, eine Unit bekommt, die dann eher einer Programmiersprachenerweiterung ähnelt. Also, alles was dieser Kurs machen kann, ist die Grundlagen schaffen. Das heißt, Funktionen, um Linien und Kreise zu zeichnen, Punkte zu setzen und noch ein paar ähnliche Sachen. Das erste Problem ist also der mangelnde Umfang und die Entscheidung, was man bespricht und was nicht.
 +
 +Leider haben wir aber noch ein viel größeres Problem. Grafikprogrammierung ist grundsätzlich immer eine zeitkritische Angelegenheit. Zwar sind für die meisten Funktionen, wie das Setzen eines Pixels auf dem Bildschirm, keine großen Programmierkünste erforderlich. Wenn Sie aber einen Kreis zeichnen wollen, müssen Sie schon Berechnungen anstellen, an welchen Koordinaten auf dem Bildschirm die Pixel gesetzt werden sollen. Hier liegt nun das große Problem, was auf einem 4,5MHz getakteten Portfolio noch viel schwerer ins Gewicht fällt als auf anderen Systemen. Der Kleine ist nun mal nicht der schnellste Rechner unter der Sonne. Wenn ich nun noch eine Hochsprache wie Pascal verwende, die mit der Anzahl der Befehle, die für eine Funktion ausgeführt werden müssen, sehr hoch ist, bin ich in Bezug auf die Grafik schon auf der Verliererseite. Die einzige Möglichkeit, die uns bleibt, ist die, die zeitkritischen Sachen direkt in Maschinensprache zu verfassen.
 +
 +Damit wird klar, daß die Grafikunit, die zu diesem Teil des Kurses gehört, größten Teils in Maschinensprache verfaßt ist. Maschinensprache ist aber ja eigentlich nicht unser Thema. Deshalb wird es die meisten von euch nicht interessieren, wenn ich die Maschinensprachteile bespreche. Die Leute, für die der Kurs eigentlich ins Leben gerufen wurde, sind reine Pascal-Programmierer. Jemand, der Maschinensprache beherrscht, braucht die vorgestellte Unit sowieso nicht, da er selber Grafikprogrammierung wahrscheinlich sehr viel besser realisieren kann. Es geht hier also nur darum, dem Programmierer Routinen an die Hand zu geben, damit er die wichtigsten Aufgaben lösen kann.
 +
 +Ich persönlich bin auch kein großer Assembler Programmierer, das können andere Leute mit Sicherheit besser als ich. Deshalb muß ich zugeben, daß die vorgestellte Unit diesmal auch nicht aus meiner Feder stammt. Ich habe sie aus dem wahrscheinlich einzigen Fachbuch zur Pascal Programmierung auf dem Portfolio entnommen (siehe Anhang). Ich finde diese Unit deshalb für den Kurs vorteilhaft, weil die zur Verfügung gestellten Routinen namens- und aufrufkompatibel zur GRAPH-Unit von Turbo-Pascal sind. Dadurch wird es relativ einfach, bestehende Grafikprogramme für den Portfolio umzuschreiben, da es in den meisten Fällen ausreicht, die Uses Anweisungen auszutauschen.
 +
 +Folgende Befehle sind in der Unit implementiert :
 +^ ^ ^
 +| Arc | Bar  |
 +| Bar3D | Box |
 +| Circle | ClearDevice |
 +| CloseGraph | DrawPoly |
 +| Ellipse | FillEllipse |
 +| FillPoly | FloodFill |
 +| GetColor | GetPixel |
 +| InitGraph | Line |
 +| LineRel | LineTo |
 +| MoveRel | MoveTo |
 +| OutTextXY | PieSlice |
 +| PutPixwl |  Rectangle |
 +| Sector  |  SetColor |
 +| SetFillStyle | SetTextStyle |
 +| TextPixel | |
 +
 +Welche Parameter diese Routinen benötigen, und wie ich sie verwende, kann ich aufgrund der Kompatibilität in der Pascal Hilfe nachlesen. Bei den zwei folgenden Befehlen sind jedoch Abweichungen zu denen der Original Unit notwendig geworden :
 +
 +Bei OutTextXY können nur ASCII-Codes bis einschließlich 127 ausgegeben werden.
 +
 +Und der Befehl SetTextStyle besitzt eine etwas andere Aufrufsyntax: Der erste Original-Parameter (font) existiert zwar ebenfalls, hat jedoch keine Wirkung auf den Zeichensatz. Für den Parameter direction sind Werte von 1 bis 12 erlaubt, wobei das Aussehen der Zeichen wie folgt beeinflußt wird.
 +
 +
 +^ Nummer ^ Erklärung ^
 +| 1 | Zeichen nicht gekippt, keine Kursivschrift | 
 +| 2 | Zeichen nicht gekippt, Kursivschrift nach links | 
 +| 3 | Zeichen nicht gekippt, Kursivschrift nach rechts | 
 +| 4 | Zeichen um 180° gekippt, keine Kursivschrift | 
 +| 5 | Zeichen um 180° gekippt, Kursivschrift nach links |  
 +| 6 | Zeichen um 180° gekippt, Kursivschrift nach rechts | 
 +| 7 | Zeichen um 90° gekippt, keine Kursivschrift | 
 +| 8 | Zeichen um 90° gekippt, Kursivschrift nach links | 
 +| 9 | Zeichen um 90° gekippt, Kursivschrift nach rechts | 
 +| 10 | Zeichen um 270° gekippt, keine Kursivschrift | 
 +| 11 | Zeichen um 270° gekippt, Kursivschrift nach links | 
 +| 12 | Zeichen um 270° gekippt, Kursivschrift nach rechts |
 +Statt eines weiteren Parameters bei der Original-Unit, der dort die Zeichengröße gemeinsam für x- und y-Richung festlegt, folgen bei der Portfolio-Unit noch zwei, die die Zeichengröße in x- und y-Richtung getrennt festlegen.
 +
 +Aus Kompatibilitätsgründen wurde die Routine InitGraph original übernommen. Das bedeutet, daß ein Pfadname für einen Grafiktreiber angegeben werden muß. Da die Portfolio-Unit aber gar keinen Treiber benötigt, können Sie eingeben, was Sie wollen.
 +
 +Mit den oben genannten Grafikbefehlen sollten die meisten Leute schon etwas anfangen können. Einige Befehle, um zum Beispiel Grafiken im PGC Format einzulesen oder abzuspeichern, fehlen hier natürlich. Hierzu existieren aber Beispiele, die ich im Rahmen diese Kursteils jedoch nicht besprechen möchte. Wer sich speziell dafür interessiert, kann von mir gerne Beispiel-Quelltexte bekommen.
 +
 +Mit dieser Unit haben wir nun Grundlagen für die Grafikprogrammierung auf dem Portfolio geschaffen, die für jemanden ausreichen sollten, der keine Lust und Zeit hat, sich mit der langwierigen Assembler-Umsetzung auseinanderzusetzen. Den Quelltext der Unit abzudrucken ist leider nicht möglich, da ihr Umfang so groß ist, daß es den Rahmen der PofoInfo bei weitem sprengen würde. Das bedeutet nicht, daß man die Unit nicht bekommen kann. Denn der Pascal Kurs ist zusammen mit den Units, die in diesem Rahmen entstanden sind, beim PCD erhältlich.
 +
 +Auch wenn dieser Teil des Kurses qualitativ und quantitativ nicht mit den vorherigen Teilen mithalten kann, soll er doch den Abschluß des Kurses bilden. Abschluß des Kurses bedeutet, daß mit diesem vierten Teil sämtliche Grundlagen besprochen sein sollten. Das heißt natürlich nicht, daß dies das Ende von Artikeln zum Thema Pascal Progammierung auf dem Portfolio ist, jedoch sollte nun jeder in der Lage sein, diese Grundkenntnisse in eigene Programme umzusetzen. Spezielle Probleme und Sonderfunktionen könnten Inhalt weiterer Artikel sein.
 +An dieser Stelle deshalb noch einmal ein letzter Aufruf an alle, die glauben ,daß wichtige Bereiche nicht besprochen wurden. Eine Email genügt und ich werde mich mit der gewünschten Thematik auseinandersetzen (es sei denn, es betrifft den Bereich Grafik...:o).
 +
  
  
software/diy/pascal/pascalk.1138392359.txt.gz · Zuletzt geändert: (Externe Bearbeitung)