Paradoxon-Basic

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Paradoxon-Basic
Paradoxon Basic Startbildschirm
Entwickler Robert Bartz
Verleger Markt & Technik Verlag
Release 1987
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png
Medien Icon disk525.png
Sprache(n) Sprache:englisch, Anleitung Sprache:deutsch
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ührt RENUMBER 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 und ARRAY - Variablen am Bildschirm darstellen (Dump); Pause mit beliebiger Taste und Abbruch mit RUN/STOP . Mit OPEN 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). Mit DIM 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]:

  1. Paradoxon-Basic laden und starten.
  2. Paradoxon-Basic erneut laden (nicht starten).
  3. 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 mit RUN: 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).
  4. Paradoxon-Basic per SAVE neu abspeichern, bspw. unter dem Dateinnamen: "MEINPARADOXON".

Weblinks[Bearbeiten | Quelltext bearbeiten]


Quellen