home *** CD-ROM | disk | FTP | other *** search
/ zzZACK64 / zzZACK64_4_1992_-_de.d64 / worktool.txt < prev    next >
Text File  |  2023-02-26  |  7KB  |  48 lines

  1.                 Work Tool
  2.      Befehlserweiterung f{CBM-X}r den C64
  3. Zw{CBM-C}lf zus{CBM-F}tzliche Befehle erleichtern das Programmieren in BASIC. Sie sind ausschlie{CBM-V}lich im Direktmodus zu verwenden.
  4.  
  5. Zeilen neu numerieren, Inhaltsverzeichnis ansehen, Mergen, Programmteile speichern, absolut laden und speichern, das Suchen bestimmter Befehle sowie die M{CBM-C}glichkeit, ein versehentlich mit NEW gel{CBM-C}schtes Programm zu restaurieren, sind Optionen, die man beim BASIC des C64 vermi{CBM-V}t, die die Bedienung jedoch sp{CBM-X}rbar erleichtern.
  6. Das Programm Work Tool besteht aus drei Teilen, einem Ladeprogramm WTOOL.LADER, das die Files W.TOOL.O und WORK TOOL absolut nachl{CBM-F}dt. Das eigentliche Programm W.TOOL.O belegt den Speicherplatz von $C8F5 bis $CFFF (51445 bis 53247). Das selbststartende Programm WORK TOOL stellt die Interruptvektoren um und l{CBM-F}dt zus{CBM-F}tzlich nochmals W.TOOL.O nach, da der Programmautor es als Ladeprogramm vorgesehen hatte, ohne zu ber{CBM-X}cksichtigen, da{CBM-V} letzteres bereits geladen sein mu{CBM-V}, wenn WORK TOOL nicht abst{CBM-X}rzen soll.
  7. Sie starten das Programm ganz normal aus dem Disk-Men{CBM-X} durch Anwahl von WORK TOOL oder, wenn Sie nicht {CBM-X}ber das Disk-Men{CBM-X} ausw{CBM-F}hlen, durch Laden und Starten von WTOOL.LADER.
  8. Ausgeschaltet werden kann WORK TOOL nur durch einen Warmstart, bei dem die Vektoren wieder neu initialisiert werden (etwa SYS 64760). Dabei wird allerdings auch ein im Speicher vorhandenes Programm gel{CBM-C}scht.
  9. Au{CBM-V}erdem befindet sich auf der Diskette noch eine weitere Anleitung zu WORK TOOL mit dem Namen "WERKZEUGINSTRUCT".
  10. Die Befehle wurden durch Verlegen des IRQ-, Befehls- und Funktionsvektors eingef{CBM-X}gt. Will man weitere Befehle integrieren, m{CBM-X}ssen die Vektoren ausgelesen und auf die neue Routine gelegt werden. Danach erfolgt der R{CBM-X}cksprung zu den ausgelesenen Adressen.
  11. Bei den Diskettenoperationen wird nach Durchf{CBM-X}hrung des Befehls automatisch der Fehlerkanal ausgelesen. Ansonsten wurde auf die von BASIC her bekannte Fehlermeldungen zur{CBM-X}ckgegriffen.
  12.  
  13. Die Befehle:
  14. !LIST listet das Inhaltsverzeichnis einer Diskette, ohne das Programm im Speicher zu l{CBM-C}schen. Die List-Geschwindigkeit ist wie beim normalen Listen durch Dr{CBM-X}cken der CTRL-Taste regulierbar, analog l{CBM-F}{CBM-V}t sich das Listen auch durch Dr{CBM-X}cken der STOP-Taste unterbrechen.
  15. !CMD "BEFEHL" sendet alle Diskettenlaufwerks-Befehle. Es ist zum Beispiel m{CBM-C}glich, mit !CMD "S0:PROGRAMMNAME" ein File zu l{CBM-C}schen oder mit !CMD "R0:NAMENEU=NAMEALT" ein File umzubenennen.
  16. !READ liest den Fehlerkanal des Diskettenlaufwerks aus. Nach Einschalten des Laufwerks meldet !READ zum Beispiel "73,CBM DOS V2.6 1541,00,00".
  17.  
  18. !LOAD "NAME" (,ga) l{CBM-F}dt ein Programm und verbindet es mit dem im Speicher vorhandenen. Dieser Befehl ist normalerweise unter dem Namen "Merge" bekannt. Er kann sehr n{CBM-X}tzlich sein, wenn Sie modulweise programmieren und die einzelnen Programmteile oder Routinen separat abspeichern. Durch !LOAD k{CBM-C}nnen Sie nun alle Module nacheinander laden, sie werden zu einem gro{CBM-V}en Programm verkn{CBM-X}pft.
  19. Achtung: Die Zeilennummern des nachzuladenden Programms m{CBM-X}ssen h{CBM-C}her sein als die des Programms im Speicher, da sich sonst der Interpreter nicht mehr zurechtfindet.
  20. "ga" gibt die Ger{CBM-F}teadresse an: normalerweise 8 f{CBM-X}r Diskettenlaufwerk und 1 f{CBM-X}r Datasette. Bei Benutzung der Datasette kann die Ger{CBM-F}teadresse auch entfallen.
  21. !SAVE z1,z2,"NAME",(ga) speichert die Zeilen eines BASIC-Programms von Zeile z1 bis Zeile z2 (einschlie{CBM-V}lich); besonders im Hinblick auf den !LOAD-Befehl eine sehr gute Sache. Aber auch beim Aufbau einer BASIC-Routinen-Sammlung kann sich dieser Befehl bew{CBM-F}hren.
  22. {SHIFT--}brigens: z1 mu{CBM-V} kleiner oder gleich z2 sein, sonst gibt es einen ?SYNTAX ERROR, existiert eine der beiden Zeilen nicht, einen ?UNDEF'D STATEMENT ERROR.
  23. F{CBM-X}r ga gilt dasselbe wie f{CBM-X}r !LOAD.
  24.  
  25. !NEW numeriert die Zeilennummern eines Programms um.
  26. Wenn Sie sich ge{CBM-F}rgert haben, da{CBM-V} die !LOAD-Routine nur funktioniert, wenn die Zeilennummern des im Speicher vorhandenen Programms kleiner sind als die des nachzuladenden, dann ist dieser Befehl das Richtige f{CBM-X}r Sie. Durch !NEW 1,1 wird das Programm ab der Zeile 1 in Einer-Schritten umnumeriert - und die GOTOs, GOSUBs, LISTs, RUNs und THENs gleich mit.
  27. Wenn Sie noch etwas in ein Programm einf{CBM-X}gen wollen, aber der Platz daf{CBM-X}r nicht reicht: Mit !NEW 1000,100 wird das Programm ab der Zeile 1000 in Hunderter-Schritten umnumeriert.
  28. Sollte der Platz im Speicher daf{CBM-X}r nicht reichen, als Schrittweite eine Null eingegeben worden sein oder {CBM-F}hnliches, dann quittiert dies der Computer mit einem ILLEGAL QUANTITY ERROR.
  29.  
  30. !OLD holt ein durch NEW oder RESET verstecktes Programm wieder zur{CBM-X}ck.
  31. Achtung: Es darf in der Zwischenzeit keine neue BASIC-Zeile eingef{CBM-X}gt worden sein!
  32.  
  33. !ALOAD ad1,"NAME" (,ga) l{CBM-F}dt ein absolutes File an die Adresse ad1. Wer mit absoluten Files arbeitet, kennt das Problem: Will man ein solches File mit LOAD "NAME",8,1 laden, funktioniert das zwar, aber danach ist der Ofen aus - bis man NEW eingibt. Aber damit ist ein im Speicher befindliches Programm verloren. Mit !ALOAD gibt es dieses Problem nicht mehr, au{CBM-V}erdem ist die Startadresse f{CBM-X}r das File frei w{CBM-F}hlbar, was sehr praktisch f{CBM-X}r relokatible Maschinenroutinen, abgespeicherte Sprite-Bl{CBM-C}cke und anderes ist.
  34.  
  35. !ASAVE ad1,ad2,"NAME" (,ga) speichert den Bereich zwischen den Adressen ad1 und ad2 absolut. So ist es jetzt m{CBM-C}glich, mit !ASAVE 13*64,14*64,"SPRITE",8 den Sprite-Block 13 abzuspeichern, mit !ASAVE 1024,2023,"SCREEN",8 den Bildschirminhalt abzusaven usw.
  36. Zur Unterscheidung von anderen Programmfiles wird an den Programmnamen ein ".O" angeh{CBM-F}ngt, das hei{CBM-V}t, der Programmname kann nur mehr 14 und nicht 16 Zeichen lang sein.
  37.  
  38. !FIND "SUCHSTRING" listet alle Programmzeilen, in denen SUCHSTRING vorkommt. Stellen Sie sich vor, Sie haben ein Unterprogramm von Zeilennummer 1270 nach Zeile 3000 verlegt und m{CBM-X}ssen nun alle Zeilen finden, von denen aus in dieses Unterprogramm gesprungen wird, um die Zeilennummer zu {CBM-F}ndern. Schrecklicher Gedanke? Keineswegs!
  39. !FIND "GOSUB 1270" listet diese Zeilen, sofern das Leerzeichen richtig ist; zur Sicherheit kann anschlie{CBM-V}end noch !FIND "GOSUB1270", !FIND"GOTO 1270", !FIND"GOTO1270" und so weiter eingegeben werden.
  40. Sie suchen einen String? Nichts leichter als das: !FIND CHR$(34)+"COMMODORE" listet alle Zeilen, in denen COMMODORE vorkommt. !FIND CHR$(34)+"COMMODORE"+CHR$(34) listet alle Zeilen mit COMMODORE.
  41. Achtung: Der Suchstring darf nicht l{CBM-F}nger als 40 Zeichen sein, sonst reagiert der Computer mit STRING TOO LONG ERROR.
  42.  
  43. #hex wandelt eine hexadezimale in eine dezimale Zahl um. Dies ist kein Befehl, sondern eine Funktion. Das hei{CBM-V}t, wenn Sie $C000 eingeben und Return dr{CBM-X}cken, ergibt das nur einen SYNTAX ERROR. Erst PRINT $C000 bringt das richtige Ergebnis (=49152) auf die Mattscheibe.
  44. Genauso k{CBM-C}nnen Sie jetzt auch hexadezimale Zahlen innerhalb von Ausdr{CBM-X}cken und Befehlen verwenden.
  45. !ASAVE $C8F5,$CFFF,"W.TOOL.O",8 speichert WORK TOOL auf Diskette, POKE $D000,100 positioniert Sprite 0 in x-Richtung auf 100.
  46. {SHIFT--}brigens ist es nicht notwendig, vierstellige Angaben zu machen. PRINT $F bringt das gleiche Ergebnis wie $0F, $00F und $000F, n{CBM-F}mlich 15.
  47. Das gleichzeitige Dr{CBM-X}cken der Commodore-Taste und des Pfeils nach links bringt den Computer zur{CBM-X}ck in den Einschaltzustand (RESET).
  48. Sollte diese Tastenkombination aus Versehen bet{CBM-F}tigt worden sein, gelangen Sie durch SYS 51445 und !OLD wieder in das gerade bearbeitete Programm.