Simons Basic Extension

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Simons' Basic Extension
Die Einschaltmeldung von Simons' BASIC Extension
Entwickler David Simons
Firma D.S. Software
Verleger Commodore
Release 1983
Lizenz Vollversion
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png Icon paddle.png Icon joystick.png
Medien Icon cartridge.png, Icon disk525.png
Sprache(n) Sprache:englisch
Information alias Simons' Basic II

SIMONS' BASIC EXTENSION (im Folgenden auch kurz SBX genannt) ist eine Erweiterung der Modul-Version von Simons' BASIC mit 91 Befehlen, die von Kassette oder Diskette nachgeladen wird. SBX wurde wie Simons' BASIC selbst von David Simons 1983 programmiert und von Commodore vertrieben, allerdings nicht in Deutschland.

David Simons im Lemon64-Forum: "... there was a Simon's Basic2 that was released by Commodore (at least in the UK and I believe the US) - it used a neat trick to page use some of the memory which was rendered inaccessible by the original cartridge."



Laden und Starten[Bearbeiten | Quelltext bearbeiten]

Der Ladebildschirm

Um die Extension laden zu können, muss das Modul eingesteckt und Simons' BASIC aktiv sein. SBX wird nun mit

LOAD"*",8,1 RETURN  oder LOAD"*",8 RETURN 

von Diskette bzw. mit

LOAD RETURN 

von Kassette geladen und mit RUN gestartet. Während des Ladevorgangs erscheint auf dem Bildschirm "SIMONS BASIC II" mit Hilfe von geänderten Zeichen in großer Schrift. Diese Bezeichnung ist hier verwirrend. Korrekt sollte dort "SIMONS BASIC EXTENSION" stehen, denn die wird ja geladen.

Die Startmeldung

Die Extension lädt sechs Dateien nach:

Datei Adresse Low, High
PART1 $7700 0, 119
PART2 $801A 26, 128
PART3 $8356 86, 131
PART4 $897A 122, 137
PART5 $8C09 9, 140
PART6 $929C 156, 146

Nachdem das Erweiterungsprogramm ausgeführt ist, erscheint die Startmeldung mit *** SIMONS BASIC 2 ***. SIMONS' BASIC 2 (auch kurz SB2 genannt) enthält neben den 114 Befehlen des Moduls nun aus der Extension 91 weitere, davon 89 neue und 2 verbesserte Befehle (FIND, RENUMBER). Der Befehl FIND ist im Handbuch nicht erwähnt. Der im Handbuch aufgeführte Befehl DESIGN ist kein Befehl der Extension.
Es steht nun ca. 10 KByte weniger Speicherplatz für BASIC zur Verfügung als in der Standardkonfiguration.

Befehlsübersicht[Bearbeiten | Quelltext bearbeiten]

Befehle nach Anwendungsbereich[Bearbeiten | Quelltext bearbeiten]

SIMONS' BASIC EXTENSION Handbuch

Die Befehle der Extension kommen aus folgenden Bereichen:

Befehle zur Programmverwaltung:

RENUMBER, DELETE, ALTER, HELP, CHAIN, PROTECT, FORCE, FIND

Befehle und Funktionen für Felder:

  • Numerische Felder
SET ARR, ZER ARR, PRINT ARR, ADD ARR, SUB ARR, MUL ARR, DIV ARR, ADD ALL, SUB ALL, MUL ALL, DIV ALL, COPY ARR, INPUT ARR, READ ARR, ELEMENTS, MIN, MAX, SCRATCH, SUM
  • String-Felder
SORT

Befehle für numerische Berechnungen:

GRAD, DEG, BIN$, HEX$, CALCX, CALCY, EVAL, BACK

Befehle zur Speicher- und Systemverwaltung:

DEEK, DOKE, HIMEM, LOMEM, SCREEN

Befehle für Grafik und Bildschirmverwaltung:

GRID, TICK, LABEL, DRAW TO, VLIN, HLIN, SCALE, SCX, SCY, LOW RES, MCOL, ROTATE, FONT, UPPER, ECOL, BCKFLASH, CCOL, SCOL, SCHR, *, PREPARE, PUSH, PULL, HSAVE, HLOAD

Befehle zum Erzeugen und Bewegen von Sprites:

INIT, SPRITE, CREATE, TRANSFER, INVERT, REVERSE, CHANGE, BARRIER, INFO, START, CLEAR, SPRX, SPRY, SPR LOC, XVEC, YVEC, ON DETECT, CONTINUE, SHOW, NORMAL

Befehle zur Musiksteuerung:

FILTER, MODE, PULSE, BEEP

Systemvariable:

DS$

Die BASIC-Befehle von SIMONS' BASIC EXTENSION[Bearbeiten | Quelltext bearbeiten]

  *   ADD ALL ADD ARR ALTER BACK BARRIER
BCKFLASH BEEP BIN$ CALCX CALCY CCOL
CHAIN CHANGE CLEAR CONTINUE COPY ARR CREATE
DEEK DEG DELETE DIV ALL DIV ARR DOKE
DRAW TO DS$ ECOL ELEMENTS EVAL FILTER
FIND FONT FORCE GRAD GRID HELP
HEX$ HIMEM HLIN HLOAD HSAVE INFO
INIT INPUT ARR INVERT LABEL LOMEM LOW RES
MAX MCOL MIN MODE MUL ALL MUL ARR
NORMAL ON DETECT PREPARE PRINT ARR PROTECT PULL
PULSE PUSH READ ARR RENUMBER REVERSE ROTATE
SCALE SCHR SCOL SCRATCH SCREEN SCX
SCY SET ARR SHOW SORT SPRITE SPR LOC
SPRX SPRY START SUB ALL SUB ARR SUM
TICK TRANSFER UPPER VLIN XVEC YVEC
ZER ARR

Token[Bearbeiten | Quelltext bearbeiten]

Schlüsselwörter (Token) des Simons' BASIC werden vom Interpreter in 2-Byte-Token gewandelt.
Die Modulbefehle haben als erstes Tokenbyte $64 (100), die Extensionbefehle $65 (101).
Token und Einsprungadressen zeigt die Tabelle Simons Basic Extension Token.

Alle Befehle des SIMONS' BASIC 2[Bearbeiten | Quelltext bearbeiten]

Speicherverwaltung unter SIMONS' BASIC 2[Bearbeiten | Quelltext bearbeiten]

Speicherbelegung[Bearbeiten | Quelltext bearbeiten]

Die Speicherbelegung des Moduls ist im Artikel Simons' BASIC dokumentiert.

Da das Modul in seiner Kaltstart-Routine den Code aus dem ROM-Bereich $8000-$BFFF ins RAM kopiert, steht an allen Speicherstellen, die nicht von SBX überschrieben werden, der Code des Moduls im RAM.

SB2-Speicheraufteilung von SBX und Modul im RAM:

Bereich Adressen Anmerkungen
SBX PART1 $7700-$7FF1
Modul $8000-$8019
SBX PART2 $801A-$8201
Modul $8202-$8355
SBX PART3 $8356-$8419
Modul $841A-$8979 Patches bei $8463, $858A, $87B9, $88D3
SBX PART4 $897A-$8AAA
Modul $8AAB-$8C08
SBX PART5 $8C09-$8F4F
Modul $8F50-$929B
SBX PART6 $929C-$BDFB
Modul $BE00-$BF5F bis $BF4F von SB2 benutzt
SBX SPRITE $BF60-$BFFF Daten für Vektor-Sprites

Von der Initialisierungs-Routine des SBX werden die folgenden Stellen im RAM überschrieben:

Bereich Daten Assembler Bedeutung
$8463-$8466 20 29 BA EA JSR $BA29, NOP Punkt setzen mit Erweiterung für LOW RES
$858A-$858D 20 29 BA EA JSR $BA29, NOP dto.
$87B9-$87BB 20 01 BD JSR $BD01 Punkt-Adresse berechnen
$88D3-$88D8 AD A9 80 4C 0B 77 LDA #$80
JMP $770B
$88D4:
Speicherkonfiguration

Der Bereich $8000-$9FFF ist nun doppelt, der Bereich $A000-$BFFF sogar dreifach belegt (BASIC-ROM, Modul, RAM).

Geänderte Vektoren[Bearbeiten | Quelltext bearbeiten]

Adresse Bedeutung Modul SBX
$0073-$0075 CHRGET $0073 $7817
$0300-$0301 BASIC-Warmstart $8FAE $7808
$0302-$0303 Eingabe einer Zeile $8289 $7827
$0304-$0305 Umwandlung in Interpretercode $8261 $77DC
$0306-$0307 Umwandlung in Klartext (LIST) $826D $77EE
$0308-$0309 BASIC-Befehlsadresse holen $8609 $7EE4
$030A-$030B Ausdruck auswerten $9646 $7B8A
$0314-$0315 IRQ KERNAL-Vektor $9CDC $9CDC
$0316-$0317 BRK KERNAL-Vektor $8353 $7717
$0318-$0319 NMI KERNAL-Vektor $8330 $7717
$FFFA-$FFFB CPU NMI-Vektor $8118 $7717
$FFFE-$FFFF CPU IRQ-Vektor $775E

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Download
Dokumentation
Artikel
Bilder