home *** CD-ROM | disk | FTP | other *** search
/ C64 Fever 92 #1 / C64_Fever_92-01_1992_-_de.d64 / exp.-basic.txt < prev    next >
Text File  |  2023-02-26  |  14KB  |  239 lines

  1.       W{CBM-X}rthele's Expanded BASIC
  2.  BASIC-Erweiterung ohne Speicherverlust 
  3. Es gibt sehr viele BASIC-Erweiterungen f{CBM-X}r den C 64. Alle bieten neue Befehle, aber fast alle "schlucken" etwas vom Speicherplatz. "W{CBM-X}rthele's Expanded BASIC" bietet jedoch mehr Speicher, als im normalen Betrieb f{CBM-X}r das BASIC gebraucht wird.
  4. Die BASIC-Erweiterung wird absolut (LOAD "WEB",8,1) geladen und anschlie{CBM-V}end mit SYS49152 gestartet. Wenn Sie sie aus unserem Disclader heraus laden, ben{CBM-C}tigen Sie die SYS-Anweisung nicht, da wir einen kleinen Programmlader (web.loader), der das eigentliche Programm nachl{CBM-F}dt und es startet, auf der Diskette abgespeichert haben. Verwenden Sie also am besten immer diesen kleinen Lader, auch wenn Sie das Programm nicht aus unserem Diskettenmen{CBM-X} heraus starten wollen. "W{CBM-X}rthele's Expanded BASIC" bietet mehr Speicher, als normal f{CBM-X}r das BASIC ben{CBM-C}tigt wird. Zus{CBM-F}tzlich kann ein eigener Zeichensatz und ein Grafikbildschirm verwendet werden, wobei immer noch gen{CBM-X}gend Platz f{CBM-X}r eigene Sprites bleibt. Der somit gr{CBM-C}{CBM-V}ere freie Speicherplatz kann auch f{CBM-X}r eigene Routinen benutzt werden. Der komplette ROM-Bereich wird, wenn es nicht f{CBM-X}r das BASIC verwendet wird, gen{CBM-X}tzt. Auf der Diskette ist zus{CBM-F}tzlich noch das Programm "EB Anweisung" enthalten, in dem Sie alle wichtigen Befehle der Erweiterung erkl{CBM-F}rt bekommen.
  5. Sie sollten sich deshalb, bevor Sie richtig mit dem Programm arbeiten wollen, die Anleitung mit ihren Demonstrationen anschauen. Alle Programme auf der Diskette, die mit "EB" im Filenamen beginnen, sind Demos, die bei Verwendung der BASIC-Erweiterung geladen werden k{CBM-C}nnen. Etwas Besonderes hat die Erweiterung zu bieten. So ist die Integrierung von "No-Border-Sprites" kein Problem. Das mitgelieferte Demo "EB CLOCK SHOW" beweist das sehr anschaulich. "WEB", die Kurzform von "W{CBM-X}rthele's Expanded BASIC", verf{CBM-X}gt {CBM-X}ber sehr schnelle Grafikbefehle, die sogar die Geschwindigkeit von "Simons's BASIC" {CBM-X}bertreffen.
  6.  
  7. Die Benutzerf{CBM-X}hrung
  8. -------------------
  9. "WEB" ist nach dem Installieren nur f{CBM-X}r reinen Floppybetrieb vorgesehen. Der Kassettenpuffer wird als BASIC-Speicher verwendet. Wer dennoch mit Kassette arbeiten will, mu{CBM-V} den BASIC-Speicher nach 1022 hochlegen und opfert dadurch einige Bytes Speicherplatz. Dennoch steht mehr Speicherplatz zur Verf{CBM-X}gung als normalerweise. Erreicht wird dies durch die Bildschirmspeicherverschiebung ins RAM oberhalb der Adresse 49152. Wer also nicht auf den Datasettenbetrieb verzichten will, gibt folgendes nach dem Installieren von "WEB" ein:
  10.  
  11. Poke 43,254:Poke 44,3:Poke 1021,0:New
  12.  
  13. Die BASIC-Erweiterung bietet einige neue und n{CBM-X}tzliche Befehle, die dem Programmierer ungeahnte Vorteile bringen:
  14.  
  15. - Grafikbefehle (Linien, Punkte etc.)
  16.  
  17. - eigener Zeichensatz m{CBM-C}glich ohne
  18.   Speichereinschr{CBM-F}nkungen
  19.  
  20. - Sprite-Handling
  21.  
  22. - No-Border-Sprites werden unterst{CBM-X}tzt
  23.  
  24. - Komfortabler Directory- und List-
  25.   Befehl
  26.  
  27. - gr{CBM-C}{CBM-V}erer BASIC-Speicher als normal,
  28.   auch wenn Grafikschirm, eigener
  29.   Zeichensatz und Sprites voll aus-
  30.   gesch{CBM-C}pft werden, sogar wenn die
  31.   Datasette benutzt wird. Alle Sprites
  32.   werden im vierten VIC-Block
  33.   abgespeichert
  34.  
  35. - erweiterte Befehle (GOTO Variable)
  36.  
  37. - bei Textmodus (keine Grafikseite)
  38.   64 Sprites-Bl{CBM-C}cke verf{CBM-X}gbar
  39.  
  40. - sonstige Erweiterungen
  41.  
  42. Insgesamt stehen Ihnen 17 neue Befehle sowie verbesserte GOTO- und LIST-Befehle zur Verf{CBM-X}gung.jDer RAM-Speicher des C64 kann mit "WEB" fast vollst{CBM-F}ndig gen{CBM-X}tzt werden. Die RAM-Bereiche unterhalb des ROMs werden f{CBM-X}r die Bitmap, den Zeichensatz und die Sprites genutzt, der Rest steht dem BASIC-Speicher zur Verf{CBM-X}gung.jjDurch die Erweiterung werden die bereits im C64 enthaltenen BASIC-Befehle nicht beeintr{CBM-F}chtigt, das hei{CBM-V}t alle alten Befehle des C64 bleiben erhalten.
  43. Die neuen Befehle beginnen immer mit dem @-Zeichen (Klammeraffe).
  44. Die genaue Auflistung aller neuen Befehle entnehmen Sie bitte der Tabelle 1.
  45. Bei IF...THEN-Konstruktionen ist zu beachten, da{CBM-V}, sofern auf THEN ein "WEB"-Befehl folgt, dieser vom THEN-Statement durch einen Doppelpunkt abzutrennen ist. Ein Beispiel:
  46.  
  47. IF a=4 THEN:@B6
  48.  
  49. Ebenfalls neu ist der @!-Befehl.
  50. Dieser kann nur im Direktmodus eingegeben werden. Im Notfall kann dadurch ein abgest{CBM-X}rztes Programm wieder listbar gemacht werden. Es handelt sich allerdings nicht um ein 100prozentiges RENEW.
  51. Mit SYS50231 k{CBM-C}nnen Sie sich den Diskstatus beziehungsweise den Fehlerkanal #8 ausgeben lassen. Dieser Befehl ist ein Teil des Directory-Befehls und kann auch so angesprochen werden, quasi noch eine zus{CBM-F}tzliche Erweiterung des Befehlssatzes.
  52.  
  53. Hinweise f{CBM-X}r Programmierer
  54. --------------------------
  55. Zur Anpassung einiger BASIC-Programme, die in den Bildschirmspeicher poken, sollten Sie zur Adresse den Wert 51200 dazuz{CBM-F}hlen (aus 1024 wird 52224).
  56. Bei der Spritebenutzung legen Sie die Sprites ab Adresse 61440 ab, die Spritezeiger sind dann im Bereich 53240 bis 53247 anstatt im Bereich 2040 bis 2047 zu finden.
  57. Im "W{CBM-X}rthele's Expanded BASIC" d{CBM-X}rfen auf den GOTO-Befehl auch Variablen oder mathematische Ausdr{CBM-X}cke folgen. Beispiel:
  58.  
  59. GOTO VA+4/INT(RND(1))
  60.  
  61. Der LOAD-Befehl gleicht im Expanded Border Mode Hintergrund- und Rahmenfarbe einander an, um ein Flackern im Split zu vermeiden. Mit dem LIST-Befehl k{CBM-C}nnen Sie das Listen mit einer beliebigen Taste anhalten, mit der Funktionstaste F7 wird die LIST-Funktion weiter ausgef{CBM-X}hrt. Wurde das Listen angehalten, wird je nach gedr{CBM-X}ckter Taste ein Buchstabe oder Ausdruck gelistet.
  62.  
  63. Wenn Sie in Maschinensprache programmieren wollen, k{CBM-C}nnen Sie neben "WEB" auch Maschinenspracheroutinen benutzen. Dazu betrachten Sie unsere Tabelle 2, die Ihnen eine genaue Speicher{CBM-X}bersicht liefert. In diesem Fall verringern Sie am besten den BASIC-Speicher (zum Beispiel {CBM-X}ber Adresse 55/56). Sie k{CBM-C}nnen die 72 beziehungsweise 15 freien Bytes unter oder {CBM-X}ber den BASIC-Speicher als Zwischenspeicher verwenden. Andere Adressen (zum Beispiel in der Zeropage) m{CBM-X}ssen vor dem Benutzen gerettet und nach der erstellten Routine wieder mit dem alten Wert geladen werden.
  64. Vorsicht beim Interrupt-Programmieren! Wenn der Expanded Border Mode angeschaltet ist, wird der Interrupt daf{CBM-X}r umgeleitet und in eine zeitkritische Routine verzweigt.
  65.  
  66. Ein paar n{CBM-X}tzliche Hinweise
  67. ---------------------------
  68. F{CBM-X}r eine Kreis-Funktion fehlte innerhalb von "WEB" der Platz. Der folgende Dreizeiler erledigt das:
  69.  
  70. 10 FORG*.7:Z=INT(SQR(1-(G/R))*R)
  71. 20 @PM,G+X,Y+Z:@PM,X+G,Y-Z:@PM,X-G,Y-Z:@PM,X-G,Y-Z:@PM,X-G,Y+Z:@PM,X+Z,Y+G:@PM,X+Z,Y-G
  72. 30 @PM,X-Z,Y-G:@PM,X-Z,Y+G:NEXT:RETURN
  73.  
  74. Der Aufruf erfolgt hier in unserem Beispiel durch GOSUB 10. Folgende Parameter werden verwendet:
  75.  
  76. x,y = Koordinaten des Kreismittelpunktesr   = Radius
  77. m   = Modus (1 = setzen, 0 = l{CBM-C}schen)
  78.  
  79. "WEB" vertr{CBM-F}gt sich mit einigen Fastloadern. Es ist aber zu beachten, da{CBM-V} zuerst "WEB" installiert werden mu{CBM-V}, danach der Fastloader mit dem entsprechenden SYS-Befehl. Das ist deshalb n{CBM-C}tig, da "WEB" den LOAD-Vektor verbiegt, um im Falle des Expanded Border Mode die Rahmenfarbe w{CBM-F}hrend des Ladevorgangs der Hintergrundfarbe anzupassen, damit ein Flimmern verhindert wird.jBeim Installieren von "WEB" mit SYS49152 durchl{CBM-F}uft das Programm automatisch den @R-Befehl. Wollen Sie dies vermeiden, so k{CBM-C}nnen Sie auch erst bei der Adresse $COBB (dezimal 49339) in das Programm einspringen. N{CBM-X}tzlich ist das, wenn Sie einen eigenen Zeichensatz im Speicher nicht {CBM-X}berschreiben wollen.
  80.  
  81. Im Expanded Border Mode k{CBM-C}nnen Sie mit
  82. POKE65535,Z
  83. eine Schwarzblende {CBM-X}ber den erweiterten Rahmen legen.
  84.  
  85. F{CBM-X}r Z gelten folgende Parameter:
  86. Z =   0       Schwarzblende aus
  87. Z = 255       Schwarzblende ein
  88.  
  89. W{CBM-F}hlen Sie f{CBM-X}r Z einen Wert, der zwischen Null und 255 liegt, k{CBM-C}nnen Sie die Bits der Schwarzblende setzen und l{CBM-C}schen. Dadurch lassen sich recht interessante Effekte erzielen.
  90.  
  91. Das Autostartprogramm
  92. ---------------------
  93. Auf Ihrer Diskette befindet sich auch ein zu "WEB" geh{CBM-C}render Autostartgenerator. Damit lassen sich alle Programme, die unter "WEB" erstellt wurden, mit einem Autostarter versehen. Das hei{CBM-V}t, alle damit bearbeiteten Programme k{CBM-C}nnen nach der Installation von "WEB" geladen und automatisch gestartet werden. Dadurch entf{CBM-F}llt das l{CBM-F}stige Eintippen des RUN-Befehls.
  94. Und so versehen Sie Ihr "WEB"-Programm mit dem Autostart:
  95. Sichern Sie Ihr Programm und verlassen Sie die BASIC-Erweiterung entweder durch einen Reset-Schalter, oder schalten Sie Ihren C64 einfach ab. Danach laden Sie den Autostarter ("AUT.STG.V4") im normalen BASIC absolut, also mit ",8,1". Anschlie{CBM-V}end geben Sie SYS49152 ein. Es erscheint eine Meldung, da{CBM-V} nun dieselbe Speicherkonfiguration wie unter "WEB" geschaffen wurde. Das "WEB" ist aber nicht installiert. Nun laden Sie Ihr erstelltes "WEB"-Programm. Beachten Sie, da{CBM-V} das Programm im Augenblick nicht lauff{CBM-F}hig ist.
  96. Mit dem Befehl SYS49342 gelangen Sie in das Autostart-Generator-Men{CBM-X} (der SYS-Befehl wird in der Meldung mit angegeben). Hier w{CBM-F}hlen Sie nun den Namen des Programmes, das den Autostart bekommen soll. Anschlie{CBM-V}end wird das Autostart-Programm erstellt. Bei sehr langen Programmen kann dies eine Weile dauern, also haben Sie bitte etwas Geduld. Dieser Autostart-Generator fand aus Speicherplatz-Gr{CBM-X}nden keinen Platz mehr in der eigentlichen BASIC-Erweiterung. In der vorliegenden Form kann der Generator auch sehr lange Programme verwalten.
  97.  
  98. Folgendes ist beim Autostart-Generator zu beachten:
  99.  
  100. 1. Die erste Zeile mu{CBM-V} immer die
  101.    Nummer "0" tragen
  102.  
  103. 2. RUN-STOP/RESTORE ist blockiert.
  104.    Soll die Funktion dennoch frei-
  105.    gegeben werden, so geben Sie
  106.    POKE808,237 ein, und die Abfrage
  107.    wird wieder eingeschaltet
  108.  
  109. 3. Der Bildschirm ist beim Start des
  110.    Programmes ausgeblendet. Mit 
  111.    POKE53265,27 k{CBM-C}nnen Sie den Bild-
  112.    schirm wieder einblenden. Weiterhin
  113.    ist es m{CBM-C}glich, die Einblendung erst
  114.    vorzunehmen, wenn die Bildschirm-
  115.    maske des Programmes fertig ist.
  116.    Dadurch geben Sie Ihren Programmen
  117.    einen professionellen Touch.
  118.  
  119. Noch ein Tip, wie Sie in bereits bestehende Programme die Zeile null einf{CBM-X}gen k{CBM-C}nnen. Dazu geben Sie einfach POKE808,237:POKE53265,27 ein. Alles ist dann genau so, als w{CBM-F}re ein "normales" Programm geladen und mit RUN gestartet worden. Wir w{CBM-X}nschen Ihnen viel Spa{CBM-V} beim Ausprobieren und Experimentieren.
  120.  
  121. --------------------------------------
  122.              TABELLE 1
  123. --------------------------------------
  124.  
  125. PARAMETERLOSE BEFEHLE
  126.  
  127. @C  Clear Bitmap
  128. ----------------
  129. l{CBM-C}scht den Grafikschirm
  130.  
  131. @D  Display Directory
  132. ---------------------
  133. zeigt das Inhaltsverzeichnis einer Diskette an. Abbruch mit F7, mit anderer Taste warten
  134.  
  135. @E  Expand Border
  136. -----------------
  137. schaltet erweiterten Rahmen ein
  138.  
  139. @G  Graphic Mode
  140. ----------------
  141. schaltet den Grafikschirm an
  142.  
  143. @I  Invert Bitmap
  144. -----------------
  145. invertiert den Grafikbildschirm
  146.  
  147. @N  Normal Text Mode
  148. --------------------
  149. Textschirm, Gegenteil zu d)
  150.  
  151. @O  Old Border
  152. --------------
  153. Normalschirm, Gegenteil zu c)
  154.  
  155. @R  Redfine Charset
  156. -------------------
  157. setzt als aktuellen Zeichensatz den normalen C=-Zeichensatz
  158.  
  159.  
  160. EINPARAMETRIGE BEFEHLE
  161.  
  162. @B x  Border's Color
  163. --------------------
  164. Rahmenfarbe x
  165.  
  166. @F x  Foreground Color
  167. ----------------------
  168. Vordergrundfarbe x (x bedeutet den Wert der gew{CBM-X}nschten Farbe, siehe Handbuch)
  169.  
  170.  
  171. ZWEIPARAMETRIGE BEFEHLE
  172.  
  173. @M x,z  Modify Bitmap's Color
  174. -----------------------------
  175. Der Textschirm wird mit Zeichen gef{CBM-X}llt, die bei eingeschaltetem Grafikmodus der Farbwahl Zeichenfarbe x auf Hintergrund x entspricht. Im Textmodus kann der Bildschirm mit denselben Zeichen gef{CBM-X}llt werden.
  176.  
  177. @M 0,2
  178. ------
  179. l{CBM-C}scht den Textbildschirm
  180.  
  181.  
  182. DREI- UND MEHRPARAMETRIGE BEFEHLE
  183.  
  184. @A x,z,a$
  185. ---------
  186. PRINTAT: Der String a$ (darf auch in Anf{CBM-X}hrungszeichen direkt folgen) wird in Spalte y und Zeile x auf den Bildschirm geschrieben
  187.  
  188. @S a,x,y
  189. --------
  190. SPRITESET: Das Sprite Nummer a wird an die Position x ,y gesetzt (LSB/HSB wird automatisch gesetzt)
  191.  
  192. @P m,x,y
  193. --------
  194. PLOTPOINT: Ist m gleich eins, so wird der Punkt x,y in der Bitmap gesetzt. Ist m gleich null, so wird er gel{CBM-C}scht
  195.  
  196. @L m,x,y,z,t
  197. ------------
  198. LINEPRINT: m ist gleich in Punkt n) beschrieben. Es wird von x,y nach z,t eine Linie gezogen
  199.  
  200. @T m,b,x,y,a$
  201. -------------
  202. TEXT IN BITMAP: Der String a$ wird in die Bitmap in Zeile x, Spalte y geschrieben. Auch darf der String in Anf{CBM-X}hrungszeichen folgen.
  203. Ist m eins, so wird der String "normal" ausgegeben. Ist m zwei, wird er revers geschrieben.
  204. Mit b wird der Textmodus geregelt. Ist b eins, so wird der normale Gro{CBM-V}/Grafik-Modus eingeschaltet. Ist b zwei, wird der Gro{CBM-V}/Kleinschrift-Modus eingeschaltet. Ist b drei beziehungsweise vier, wird der eigene Zeichensatz in Gro{CBM-V}/Grafik- oder Gro{CBM-V}/Kleinschrift-Modus geschrieben. Wenn kein eigener Zeichensatz erstellt wurde, so haben die Wert drei und eins sowie vier und zwei jeweils dieselbe Wirkung.
  205.  
  206.  --------------------------------------
  207.             TABELLE 2
  208.  --------------------------------------
  209.  
  210. SPEICHER{SHIFT--}BERSICHT
  211.  
  212. 00000 - 00694   Zeropage beziehungs-
  213.                 weise Systemadressen
  214. 00695 - 00767   72 Bytes frei
  215. 00768 - 00819   Vektoren und System-
  216.                 speicher, Sprung-
  217.                 adressen
  218. 00820 - 40960   40139 Bytes BASIC-
  219.                 Speicher frei
  220. 40961 - 49151   BASIC-ROM, im RAM
  221.                 darunter
  222.                 die Grafik-Bitmap
  223. 49152 - 52223   Hauptprogramm
  224.  
  225. UNTERROUTINEN:
  226.  
  227. 52224 - 53224   Bildschirmspeicher
  228. 53225 - 53239   15 Bytes frei
  229. 53240 - 53247   Spriteblockzeiger
  230.                 Sprite 0 - 7
  231. 53248 - 54296   VIC-Adressen, SID-
  232.                 Adressen Zeichen-ROM
  233. 54297 - 55296   Farb-RAM
  234.                 Zeichen-ROM
  235. 55297 - 57343   System-Adressen
  236.                 Zeichen-ROM
  237. 57344 - 61439   Zeichensatzdaten im
  238.                 RAM I/O
  239. 61440 - 65535   Spritedaten im RAM I/O