Paradoxon-Basic
Paradoxon-Basic | |
---|---|
Entwickler | Robert Bartz |
Verleger | Markt & Technik Verlag |
Release | 1987 |
Plattform(en) | C64 |
Genre | BASIC-Erweiterung |
Steuerung | |
Medien | |
Sprache(n) | , Anleitung |
Information | Als MSE-Listing im 64'er Sonderheft 21 |
Paradoxon-Basic ist ein Tool für das BASIC V2 des C64, das den für das jeweilige BASIC-Programm zur Verfügung stehenden freien Speicherplatz von den für den C64 typischen 38911 Bytes auf 51199 Bytes erweitert. Die BASIC-Erweiterung bietet 14 neue BASIC-Befehle wie bspw. RENUMBER oder OLD an, sowie die Möglichkeit der Belegung der Funktionstasten, die hier nicht vorbelegt sind.
Paradoxon-Basic wurde im 64'er Sonderheft 21 vorgestellt.
Funktionsweise[Bearbeiten | Quelltext bearbeiten]
Paradoxon-Basic blendet das BASIC-ROM bei $A000-$BFFF aus und nutzt stattdessen das RAM unter dem I/O-Bereich ($D000-$DFFF) und unter dem KERNAL-ROM ($E000-$FFFF) für eine angepasste Kopie des BASIC-ROMs sowie eigenen Code für die neuen Befehle und Hilfsroutinen. Weitere Hilfsroutinen (im RAM von $02A7-$02FF) sorgen dafür, dass bei Aufrufen des KERNALs vom BASIC-ROM aus entsprechend kurzzeitig das KERNAL-ROM wieder eingeblendet wird. Dadurch steht der Speicherplatz von $0801 bis $CFFF (statt nur bis $9FFF) für BASIC-Programme zur Verfügung, das Umschalten kostet allerdings je nach Programm ca. 5-25% Geschwindigkeit.
Nach einem (Soft-)Kaltstart (erster Start bzw. nach C= +CTRL +RESTORE ) führt Paradoxon-Basic die auf einer Funktionstaste (Standard F8 ) hinterlegten Tastendrücke (Standard: keine) aus.
Details und Quelltexte zu Paradoxon-Basic finden sich auf der Diskette zum 64'er-Sonderheft 21.
Die Speicheraufteilung ist bei Paradoxon-Basic wie folgt geregelt:[1]
Speicherbereich | Belegung =============================================== RAM 0000 - 07FF | Zeropage und Bildschirm RAM 02A7 - 02FF | Umschaltroutinen RAM 0800 - CFFF | BASIC-Speicherbereich I/O D000 - DFFF | I/O-Bereich ROM E000 - FFFF | KERNAL RAM D000 - F4BF | BASIC-Interpreter RAM F4C0 - F5BA | eingebundene Befehle RAM F5BB - F6D0 | Diskettenbefehle RAM F6D2 - FBFF | zusätzliche Befehle RAM FC00 - FCFF | Funktionstasten-Belegung RAM FD00 - FDD6 | Funktionstasten-Routinen RAM FDD7 - FFFF | Umschaltroutinen
Befehle[Bearbeiten | Quelltext bearbeiten]
MERGE"dateiname"
- dem BASIC-Programm im Speicher eines von Diskette hinzufügen. Das nachgeladene BASIC-Programm muss höhere Zeilennummern haben.DELETE [start]-[ende]
- BASIC-Zeilen unwiderruflich löschen; wird ein Parameter weggelassen, so gilt die Löschung entweder bis Ende oder von Anfang bis Endzeile.OLD
- BASIC-Programm nach NEW oder Reset wiederherstellen.RENUMBER [Startzeile], [Abstand]
- BASIC-Zeilen neu durchnummerieren, wobei auch alle Sprungbefehle wie GOTO, GOSUB, THEN, RESTORE, ON GOTO und ON GOSUB abgeändert werden; ohne Parameter: führtRENUMBER 100,10
aus.AUTO [Startzeile], [Abstand]
- Eingabehilfe für BASIC-Zeilen starten. Die Zeilennummern werden nun automatisch vergeben; ohne Parameter:AUTO 100,10
; Abbruch dieser Automatik mit Taste RETURN ohne nachfolgende BASIC-Befehle.VAR
undARRAY
- Variablen am Bildschirm darstellen (Dump); Pause mit beliebiger Taste und Abbruch mit RUN/STOP . MitOPEN 1,4:CMD 1:VAR
erfolgt der Ausdruck auf dem Drucker. Bei ARRAY werden Felder mit tiefen von mehr als 7 Dimensionen nicht ausgegeben.FIND
- im Programm nach Zeichenkette suchen und gibt diese Zeile an. Zeichenkettensuche ohne Anführungszeichen am Ende; bspw.:FIND "C64-WIKI
. BASIC-Befehle dürfen nicht abgekürzt werden.DIMFn="..."
- Funktionstastenbelegung definieren (n=Nummer der Funktionstaste) mit bis zu 31 Zeichen.@[Gerätenr.][Befehl]
- Diskettenlaufwerksstatus (Fehlerkanal) auslesen (@9
, um Laufwerk 9 anzusprechen); wird die Gerätenummer weggelassen, so wird standardmäßig Laufwerk 8 genutzt.@$
- Directory anzeigen; anhalten mit beliebiger Taste.@command
- Floppy-Befehl senden.
Außerdem wurden einige bestehende BASIC V2-Befehle verbessert:
GOTO
erlaubt Terme und Variablen als Parameter. Beispiel:GOTO (Z * A)/2
- Terme dürfen nicht mit einer Zahl beginnen.RESTORE x
erlaubt Zeilennummern, Terme und Variablen als Parameter; folgendes READ liest dann von angegebener Zeilennummer.DIM
erlaubt das Verändern der Größe (nachdimensionieren) von Feldern (Arrays). MitDIM Z(0)
wird bspw. das Array Z(x) gelöscht und belegt fast keinen Speicherplatz mehr.PRINT(X,Y)
- Ausgabe an Stelle (X,Y) beginnen mit (0,0) bis (39,24). Parameter beim normalen PRINT dürfen nicht mit der Klammer "(" beginnen.
Im Direktmodus können Funktionstasten durch das Drücken von CTRL+Fn
neu belegt werden.
Während der Cursor schnell blinkt, können bis zu 31 Tasten gespeichert werden.
Abgeschlossen wird per Druck auf eine beliebige Funktionstaste.
Nach einem Reset (per C= +CTRL +RESTORE ) wird die für F8 hinterlegte Tastenabfolge ausgeführt.
Entsprechend ist es praktisch, auf F8 z.B. LOAD"MEINPROGRAMM",8
zu legen.
Im Zusammenhang mit einem angepassten Paradoxon (siehe Abschnitt unten) lässt sich Paradoxon so mit eigenen Programmen kombiniert ausliefern.
Kompatibilität[Bearbeiten | Quelltext bearbeiten]
SYS-Befehle werden mit dem Wert $34 im Prozessorport $01 ausgeführt (ROMs und I/O ausgeblendet). Entsprechend schlagen Aufrufe, die das BASIC-ROM bei $A000-$BFFF erwarten, fehl, und müssen ggf. auf die Kopie (ab $D000) angepasst werden.
KERNAL-Aufrufe schlagen im Allgemeinen ebenso fehl, da der KERNAL ausgeblendet ist.
Aufrufe über die KERNAL-Vektortabelle $FF81-$FFF6 funktionieren aber, da dort Ersatzroutinen liegen, die die Speicherkonfiguration wie benötigt ändern.
Ein SYS 64738
zum Auslösen eines Resets funktioniert nicht.
Stattdessen lässt sich dafür die Tastenkombination C= +CTRL +RESTORE nutzen.
POKE/PEEK-Befehle werden mit Wert $35 in $01 ausgeführt (ROMs ausgeschaltet, I/O eingeblendet). Z. B. das Ändern von SID-Registern oder das Beschreiben des Farb-RAMs ist also möglich.
Eine Kombination mit dem 64'er DOS aus 64'er-Ausgabe 3/1986 und 4/1986 ist nach Anpassung möglich.
Fehler[Bearbeiten | Quelltext bearbeiten]
- RND(0) liefert einen konstanten Wert und keine echten Zufallszahlen.
- Die alternative Funktionstastenbelegung ist auch während der Ausführung von Programmen aktiv.
- Die vorstehenden Fehler sind in der Steckmodul-Version von 2022 (siehe Weblinks) korrigiert.
- In der Anleitung steht, dass die Funktionstasten per DEFFn auch ggf. mit mehr als 31 Tasten belegt werden können. Das funktioniert bei F8 gar nicht und ansonsten nur eingeschränkt, z.B. wird ein per DEFF1 mit mehr als 31 belegtes F1 durch nachfolgende Belegung von F3 wieder auf 31 Zeichen zurückgestutzt, auch wenn die anderen Tasten nicht belegt sind.
Konfiguration anpassen[Bearbeiten | Quelltext bearbeiten]
Um eine persönlich angepasste Version der Paradoxon-Startdatei zu erzeugen, geht man wie folgt vor[2]:
- Paradoxon-Basic laden und starten.
- Paradoxon-Basic erneut laden (nicht starten).
- Anpassungen vornehmen
- Funktionstasten programmieren; bspw. mit dem neuen Befehl
DEFFn="..."
(für n 1 bis 8 für die jeweilige Funktionstaste). Beispiel:DEFFn="RUN:"+CHR$(13)
. Startet ein BASIC-Programm mitRUN:
plus automatischer Taste RETURN . Alternativ per CTRL +Funktionstaste, dann (während der Cursor schnell blinkt) Tasten eingeben (max. 31), abschließen per beliebiger Funktionstaste.
Danach zum Übernehmen der Belegung in die Startdatei im Direktmodus folgendes eingeben:FORI=0TO255:POKE4616+I,PEEK(64512+I):NEXTI
- POKE 5333,X - Rahmenfarbe, siehe C64-Farbtabelle
- POKE 5338,X - Hintergrundfarbe
- POKE 5343,X - Zeichenfarbe
- POKE 2755,X - Geräteadresse für LOAD
- POKE 2758,X - Sekundäradresse für LOAD
- POKE 3033,X - Geräteadresse für Diskettenbefehle (OPEN)
- POKE 5297,X - Nr. der Funktionstaste, die nach einem Reset ausgeführt wird (Voreinstellung: F8 ). Zusätzlich muss per POKE 5301,X der Offset des jeweiligen Zeichenpuffers gesetzt werden (F1→0, F3→32, F5→64, F7→96, F2→128, F4→160, F6→192, F8→224).
- Funktionstasten programmieren; bspw. mit dem neuen Befehl
- Paradoxon-Basic per SAVE neu abspeichern, bspw. unter dem Dateinnamen: "MEINPARADOXON".
Weblinks[Bearbeiten | Quelltext bearbeiten]
- 64'er Sonderheft 21 mit Paradoxon-Basic auf den Seiten 137-140
- 64'er Sonderhefte und Disketten bei homecomputerworld.com
- Thema: Wer braucht mehr Speicher unter Basic? auf Forum64.de
- Version von Paradoxon-Basic für ein Steckmodul inklusive Fehlerbehebungen
Quellen
- ↑ 64'er Sonderheft 21; S.139
- ↑ 64'er Sonderheft 21, S.140