home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / gfabasic / gfa_ptch / libpatch / libpatch.txt < prev   
Encoding:
Text File  |  1994-09-22  |  15.3 KB  |  362 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. /                                                                             /
  3. /                                                                 19.08.93    /
  4. /                                                                             /
  5. /     Compiler/Bibliothekspatches zu GFABASIC Atari ST/STE/TT/Falcon          /
  6. /                                                                             /
  7. /     P*ST:                                                                   /
  8. /           Christoph Conrad                                                  /
  9. /           Adalbertsteinweg 113                                              /
  10. /           52070 Aachen                                                      /
  11. /                                                                             /
  12. / E-Mail Direkt:                                                              /
  13. /     MAUS: Christoph Conrad @ AC3                                            /
  14. /                                                                             /
  15. / E-Mail Gateways:                                                            /
  16. /     FIDO: Christoph Conrad % Maus AC3 2:242/2.6                             /
  17. /           ACHTUNG: evt. neu                                                 /
  18. /           Christoph Conrad % Maus AC3 2:242/42.333                          /
  19. /   USEnet: Christoph_Conrad@ac3.maus.de    (keine ueberlangen Mails!)        /
  20. / Zerberus: Christoph_Conrad%ac3@zermaus.zer                                  /
  21. /   Pronet: MAUS:AC3:Christoph_Conrad                                         /
  22. / Internet: conrad@pool.Informatik.RWTH-Aachen.DE                             /
  23. /           (selten, bitte keine ueberlangen Mails!)                          /
  24. /      BTX: Seite *35008024#, im Formular ausfüllen                           /
  25. /           Christoph_Conrad@AC3.MAUS.DE.UUCP                                 /
  26. /           (kostet 90 Pfennig)                                               /
  27. /                                                                             /
  28. / Falls Sie irgendetwas entdecken, was Sie stört, oder Verbesserungsvorschläge/
  29. / haben, nur zu: schreiben Sie mir über EMail (vorzugsweise) oder P*ST.       /
  30. /                                                                             /
  31. / Wenn Sie Fehler im Basic finden, schreiben Sie mir!                         /
  32. /                                                                             /
  33. / Ich kann weder die juristische Verantwortung noch irgendeine Haftung fuer   /
  34. / eventuelle  Schaeden  an Daten oder Programmen uebernehmen, die direkt oder /
  35. / indirekt auf die Benutzung dieser Patches zurueckzufuehren sind!            /
  36. /                                                                             /
  37. ///////////////////////////////////////////////////////////////////////////////
  38.  
  39. Inhalt:
  40.  
  41.  (I) Allgemeines & Spezielles zu diesen Patches
  42. (II) Buntgemischter Frage und Antwortteil
  43.  
  44.  
  45. (I) Allgemeines & Spezielles zu diesen Patches
  46.  
  47. Moin,
  48.  
  49. GFABASIC ist uns allen wohl ans Herz gewachsen. Als ich meinen ST frisch
  50. bekam, war dies die einzige Programmiersprache, die superschnelle
  51. Turnaroundzeiten (Programm editieren, testen, editieren etc...) erlaubte,
  52. einen hyperschnellen Compiler/Interpreter hatte (zu allem Überfluss erzeugt
  53. der Compiler auch noch richtig fixen Code!), einen brauchbaren Editor besass
  54. UND auch auf 1 MB Rechnern ohne Festplatte sinnvoll eingesetzt werden konnte.
  55. Ich glaube, dass dies die Hauptgründe für den Erfolg von GFABASIC waren.
  56.  
  57. Im Laufe der Zeit stellte sich allerdings (nicht nur) im Zuge aufkommender
  58. Grafikerweiterungen heraus, dass GFABASIC an einigen Stellen Schwachpunkte
  59. aufweist. Einige (schwerwiegende) Schwachpunkte behebt dieser
  60. Bibliothekspatch.
  61.  
  62. Die Bibliothekspatches erschienen bereits in zwei Versionen als GFALI030,
  63. verbessert als GFALI072. Dann fragte mich Gregor Duchalski @ DO, ob ich nicht
  64. Lust habe, meine Sachen zu einem Programm beizusteuern, welches Patches des
  65. Interpreters unter einer komfortablen GEM-Oberfläche erlaubt.
  66.  
  67. Da meine Patchprogramme keinerlei Komfort in der Bedienung aufwiesen
  68. UND ich Gregors Engagement und Wissen aus der MAUSgruppe GFABASIC kannte,
  69. stimmte ich zu. Zudem überzeugte mich seine GFA-Bibliothek, die auch in sein
  70. GFA_PTCH einfloss.
  71.  
  72.  
  73. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  74. Was bietet der Compilerpatchteil von GFA_PTCH?
  75.  
  76. - Line-A-Patches werden automatisch eingebaut!
  77. - saubere Autoordnererkennung
  78. - saubere Erkennung von Acessories
  79. - falls der mit $m angeforderte Speicher nicht zur Verfügung steht, kann
  80.   dies erkannt werden
  81. - $U/$I-Bug in 3.6 behoben!
  82.   Wichtig: Ich rate allerdings ausdrücklich von den $I-Sachen ab. Unsauber,
  83.   z.T. tödlich. Auch $U kann kritisch sein. Mit diesem Init-Teil laufen $U/$I
  84.   genauso 'unsauber' oder 'unsicher' wie vorher, abgesehen davon, dass sie 
  85.   unter 3.6 jetzt ÜBERHAUPT laufen.
  86.  
  87. ERR.LST demonstriert euch in beispielhafter Weise alle Features. Dort wird
  88. auch $I+ verwendet, dies rein zu Demo-Zwecken. Beachtet die Kommentare in
  89. ERR.LST und die Hinweise unten in diesem Text unter!
  90.  
  91. !!! Teile des Assemblercodes © GFA Systemtechnik
  92.  
  93. Veränderungen an irgendwelchen Teilen NUR zu privaten Zwecken. Veränderte
  94. Versionen dürfen nicht weitergegeben werden!
  95.  
  96. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  97. Da das Ganze viel Arbeit war, dürft ihr mir gerne bei Zufriedenheit mit den
  98. Patches ein Geschenk (Danke!) von >= 10,- DM senden (Quittungen gibbet nich
  99. (wg. Finanzamt), da Geschenk :-)
  100.  
  101. Da ich Musikfan bin, könnt ihr mir lieber wahlweise eine Kassette mit einer
  102. Zusammenstellung eurer Lieblingsmusik schicken (Chromdioxid, Dolby B, am
  103. liebsten TDK SA-X). Alle Richtungen ausser Klassik mit Gesang (Oper, Operette
  104. etc.), Schlager, Volksmusik und Plump-Disco (Bananarama, Sabrina) sind
  105. willkommen, bevorzugt eher unbekannte Ensembles/Bands/Interpret(inn)en.
  106. Ich hoffe auf Cassettenfluten!!! :-)
  107.  
  108. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  109. Was macht GFA_PTCH.PRG?
  110.  
  111. == (a) Patch des Compilers
  112.  
  113. ACHTUNG: Mit dem gepatchten Compiler übersetzte Programme laufen NICHT mit der
  114.          alten Library!
  115.  
  116. == (b) Patch der Library
  117.  
  118. Im strengen Sinn kein Patch, sondern ein Austausch von Code.
  119.  
  120. == (c) Erstellen eines neuen Indexfiles GFA3BLIB.NDX
  121.  
  122. MAKE_NDX.PRG _unbedingt_ aufrufen, dieses Programm erstellt eine neue
  123. GFA3BLIB.NDX. Dies sollte mit GFA_PTCH erfolgen.
  124.  
  125. Die alte GFA3BLIB.NDX evt. vorher sichern, obwohl diese
  126. mit MAKE_NDX.PRG jederzeit aus der alten Lib neu erzeugt werden kann.
  127.  
  128. MAKE_NDX liegt erst ab irgendeiner 3.5er-Version bei, leider. Macht dies
  129. vorläufig bei Bekannten (falls es bei euch nicht dabei ist), ich frage mal
  130. bei GFA nach, ob ich es dem Paket beilegen darf, ansonsten werde ich evt.
  131. ein funktionelles Äquivalent schreiben.
  132.  
  133. == (d) Patch des Interpreters
  134.  
  135. Ihr müsst UNBEDINGT einen Interpreterpatch mit GFA_PTCH.PRG durchführen. Falls
  136. euer Interpreter noch nicht bei uns erfasst ist:
  137.  
  138. Jeweils das ERSTE vorkommende $A00A und $A009 durch $4E71 ersetzen.
  139. Das _sollte_ klappen. Das Umfeld der Patches lautet: $E0C0 $A00A $4CDF sowie
  140. $0008 $A009 $246E.
  141.  
  142. Das gibt zwar leichte "Flecken" beim Bewegen der Maus im Editor
  143. des Interpreters, aber dafuer keine beim laufenden Programm (saubere
  144. Schachtelung von hidems/showms per GRAF_MOUSE vorausgesetzt!).
  145.  
  146.  
  147. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  148. Falls Ihr weiterhin Probleme habt:
  149.  
  150. - mit der Original GFA3BLIB (+ zugehörigem GFA3BLIB.NDX) testen.
  151.  
  152. Schickt mir
  153. - das INIT.O eurer Library.
  154. - Die genaue Versionsbezeichnung/Länge der Library / des Compilers.
  155.  
  156. Damit dies ganz einfach geht: INIT2DMP.PRG erwartet im gleichen Verzeichnis
  157. GFA3BLIB und erzeugt eine ausdruck- bzw. E-mailbare Datei INIT.DMP.
  158.  
  159. !!! Denkt dran dabei eure ORIGINAL-Lib oder eine Kopie derselben !!!
  160. !!! und nicht etwa eine schon gepatchte zu benutzen              !!!
  161.  
  162.  
  163. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  164. Wie arbeite ich damit?
  165.  
  166. Seht euch bitte ERR.LST an. Ich hoffe das reicht. Lest euch nach Möglichkeit
  167. auch den Frage- und Antwortteil dieses Textes durch. Die dort zu vermeidenden
  168. Befehle sind zwingend (wg. der Line-A-Patches), viele der dort angegebenen
  169. Tips nützlich.
  170.  
  171.  
  172. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  173. BUGS:
  174.  
  175. Hoffentlich nicht allzuviele.
  176.  
  177. Noch bearbeitet werden:
  178. -
  179. ERR scheint im Interpreter beim Start nicht immer auf 0 initialisiert zu sein.
  180.  
  181. Bevor ihr diesem INIT was anlastet, bitte erst mal mit der
  182. Original GFA3BLIB (+ zugehörigem GFA3BLIB.NDX) testen.
  183.  
  184.  
  185. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  186. Disclaimer:
  187.  
  188. Ich habe alle Sorgfalt walten lassen, um fehlerfreie Programme/Daten zu
  189. erstellen. Trotzdem sind Fehler nie ganz auszuschliessen. Deshalb kann
  190. weder die juristische Verantwortung noch irgendeine Haftung von Seiten
  191. des Autors für eventuelle Schäden an Daten oder Programmen, die direkt
  192. oder indirekt auf die Benutzung dieses Programms zurückzuführen sind,
  193. übernommen werden!
  194.  
  195. *******************************************************************************
  196.  
  197. (II) Buntgemischter Frage und Antwortteil
  198.  
  199. FRAGEN & ANTWORTEN:
  200.  
  201. +++++++++++++++++++++
  202. FRAGE:
  203. Ich höre immer, Line-A sollte nicht verwendet werden. Warum eigentlich?
  204. Nun, wie bekomme ich denn dann meine Compilerbibliothek (GFA3BLIB) Line-A frei?
  205.  
  206. Im folgenden bedeute LA LINE-A!
  207.  
  208. ANTWORT:
  209. Dazu ein Auszug aus dem Profibuch, 10te Auflage:
  210.  
  211. [ZITAT:ON]
  212. Die Architektur des Betriebssystems spricht allerdings eindeutig gegen die
  213. Benutzung der Line-A-Routinen. Diese stellen nämlich die untere Ebene des
  214. VDI-Bildschirmtreibers im ROM dar. Mit ihrer Verwendung verbaut man sich also
  215. eine eventuelle Nutzung eines anderen (schnelleren) Bildschirmtreibers!
  216.  
  217. Auch ist eine Existenz der Line-A-Routinen nur für die ST-Modi (also
  218. 320 * 200, 640 * 200 und 640 * 400) garantiert. Schon bei 256-Farbgrafik
  219. (spezielle Grafikkarte bzw. TT in der 'niedrigen' Auflösung) sind die
  220. Möglichkeiten der Line-A-Schnittstelle erschöpft (siehe COLBIT0 bis COLBIT3).
  221. [ZITAT:OFF]
  222.  
  223. Falls Sie jetzt nur Bahnhof verstanden haben: KEINE PANIK!
  224.  
  225. Eine entscheidende Folgerung dieser Aussagen ist, das Programme, die Line-A
  226. Routinen benutzen, nicht unbedingt korrekt auf allen Graphikkarten laufen!
  227. Ergo: weg damit.
  228.  
  229. *** Auf eine saubere Schachtelung von hidems/showms
  230. (ueber GRAF_MOUSE AES 78) achten! Zu jedem Hide ein Show, sonst gibt's
  231. "Flecken". Maus nicht anschalten, wenn sie schon an ist, wie in der
  232. Regel nach dem Start von GEM-Programmen, sonst "Flecken".
  233.  
  234. *** FOLGENDE BEFEHLE MEIDEN:
  235. CRSCOL   CRSLIN   MOUSE    MOUSEK   MOUSEX   MOUSEY   SETMOUSE RC_COPY
  236. SHOWM    HIDEM    SPRITE   ACHAR    ACLIP    ALINE    APOLY    ARECT
  237. ATEXT    BITBLT   HLINE    L~A      PSET     PTST     GET      PUT
  238. SGET     SPUT     FILESELECT        FILESELECT #
  239.  
  240. Bei Verwendung ohne #datei_nummer:
  241. INPUT    INPUT$   LINE INPUT
  242.  
  243. Ausweichbefehle:
  244.  
  245. MOUSE/MOUSEK/MOUSEX/MOUSEY -> (AES) GRAF_MKSTATE
  246. SETMOUSE                   -> (AES) APPL_TPLAY
  247. SHOWM/HIDEM                -> (AES) GRAF_MOUSE
  248. FILESELECT                 -> (AES) FSEL_INPUT
  249. FILESELECT #               -> (AES) FSEL_EXINPUT
  250. SPRITE                     -> (VDI) vro/vrt_cpyfm
  251. ACHAR                      -> (VDI) TEXT
  252. ACLIP                      -> (VDI) CLIP
  253. ALINE                      -> (VDI) LINE
  254. APOLY                      -> (VDI) POLYLINE
  255. ARECT                      -> (VDI) PBOX
  256. ATEXT                      -> (VDI) TEXT
  257. BITBLT                     -> (VDI) BITBLT q%(),z%(),d%()
  258. HLINE                      -> (VDI) LINE
  259. PSET                       -> (VDI) PLOT oder v_pmarker bei grob > 200 Punkten
  260. PTST                       -> (VDI) POINT
  261. GET/PUT/SGET/SPUT          -> (VDI) BITBLT
  262. RC_COPY                    -> (VDI) BITBLT
  263.  
  264. >> Ohne Gewaehr auf Vollstaendigkeit!
  265.  
  266. +++++++++++++++++++++
  267. FRAGE:
  268. Wo finde ich denn Hinweise auf GEM-konforme Programmierung?
  269.  
  270. ANTWORT:
  271. Tim Orens ProGEM. Dieser Text von 1985, inzwischen wohl in den meisten Mäusen
  272. zu finden, gehoert mit zum besten ueber 'Professionelle GEM'-Programmierung.
  273. Weiterhin gibt es das Buch 'Vom Anfänger zum GEM-Profi' der Gebrüder Geiss.
  274. Ein wenig unübersichtlich, aber sonst ganz gut. Unverzichtbar ist allerdings
  275. das 'Profibuch' von Jankowski/Reschke/Rabich, vor allen Dingen als Referenz.
  276.  
  277. +++++++++++++++++++++
  278. FRAGE:
  279. GFA bietet doch so schöne eigene Befehle für Fenster. Taugt das was?
  280.  
  281. ANTWORT:
  282. Ich rate von der Verwendung der GFA eigenen Fensterverwaltung ab.
  283. Diese war in frueheren Versionen fehlerhaft, ob heute, wer weiss?
  284. Übers AES ist es genauso 'einfach' oder 'schwierig'.
  285.  
  286. +++++++++++++++++++++
  287. FRAGE:
  288. Mein Programm stürzt mir manchmal ab. Ich kann beim besten Willen keinen Fehler
  289. finden. Was kann das sein und wie finde ich das raus?
  290.  
  291. ANTWORT:
  292. SysMon und TempleMon verwenden. TempleMon kann in vielen MAUS-Boxen gesaugt
  293. werden, SysMon direkt beim Autor
  294.  
  295. Karsten Isakovic
  296. Wilmersdorferstr. 82
  297. 1000 Berlin 12
  298.  
  299. bezogen werden. Zum Zeitpunkt des Absturzes kann man so zumindest den letzten
  300. verwendeten Systemaufruf feststellen und evt. falsche Parameter.
  301.  
  302. Eine weitere gute Möglichkeit ist die Verwendung von TRACE procedurename
  303. (siehe Handbuch). Wenn man nun alle getraceten Zeilen in eine vorher
  304. geöffnete Datei schreibt (PRINT #1,TRACE$) lässt sich die Absturzstelle
  305. schnell lokalisieren.
  306.  
  307. Ebenso nützlich kann der Turbo-C/Pure-C Debugger sein, wenn man das Programm
  308. mit Symbolen übersetzt.
  309.  
  310. Ein weitgehend unbekannter Fehler betrifft die GFA-Basic eigene
  311. Speicherverwaltung. Der Fehler ist in allen 3er Versionen.
  312.  
  313. Abhilfe: an 'häufig' durchlaufene Stellen (die irgendwas mit Strings
  314. machen) ein ~ FRE(0).
  315.  
  316. Probiert mal folgendes (danach neu booten):
  317.  
  318. ' Compilerversion mit $m
  319. ' statt RESERVE
  320. RESERVE 1000
  321. $m 4711
  322. ' RESERVE damit's etwas schneller abstürzt aber eigentlich unnötig
  323. ' Die (**) Zeilen braucht man beim Interpreter, damit
  324. ' nach dem RESERVE auch wirklich danach (FRE() MOD 16) == 0 gilt
  325. ' minus 4: wegen Backtrailer bei rest16$ beim Compiler falls $m XXXX
  326. ' mit (XXXX MOD 16)<>0
  327. rest16%=(FRE(0) MOD 16)-4   ! **
  328. IF rest16%<0                ! **
  329.   ADD rest16%,16            ! **
  330. ENDIF                       ! **
  331. rest16$=STRING$(rest16%,0)  ! **
  332. ' (FRE() MOD 16) == 0 jetzt erfüllt
  333. str$="AHAH"
  334. DO
  335.   @crash(str$)
  336. LOOP
  337. PROCEDURE crash(str$)
  338.   str$="OHOH"
  339. RETURN
  340.  
  341. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  342. Danksagungen:
  343.  
  344. - Harald Ax für DELITE, eine hervorragende GFA-Shell
  345. - Jankowski/Rabich/Reschke für ihr "Profibuch", eine unverzichtbare Fundgrube.
  346. - Karsten Isakovic für seinen 'SysMon', sowie
  347.   Thomas Tempelmann und Johannes Hill für den 'TempleMon'
  348.   Beide Tools bekannt als 'The Programmers best friends' :-)
  349. - ATARI / Landon Dyer für den 'MadMac'.
  350. - GENESIS für 'Selling England by the pound' sowie 'Foxtrot'
  351.   THE CURE für 'Disintegrations'
  352.   THE RED HOT CHILI PEPPERS für 'Blood sugar sex magik'
  353.   KING'S X © 1992 (mit 'Black Flag')
  354.   TEMPLE OF THE DOG für ihr Debütalbum
  355.   RAGE AGAINST THE MACHINE für ihr Debütalbum
  356.   BODY COUNT & ICE-T für die Platte
  357. - Barbara für die Erkenntnis, dass es ein Leben ohne Rechner gibt =:^}
  358.  
  359. Viel Spass wünscht euch
  360.  
  361. tschueeessschen, chris.
  362.