Simons Basic Extension
Simons' Basic Extension | |
---|---|
Entwickler | David Simons |
Firma | D.S. Software |
Verleger | Commodore |
Release | 1983 |
Lizenz | Vollversion |
Plattform(en) | C64 |
Genre | BASIC-Erweiterung |
Steuerung | |
Medien | , |
Sprache(n) | |
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]
Um die Extension laden zu können, muss das Modul eingesteckt und Simons' BASIC aktiv sein. SBX wird nun mit
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 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]
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]
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE
* | 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 |
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
- SmonsBasicExtension.zip auf Forum64.de im Thema: Simons' Basic Extension auf Forum64.de, alternativ: Version für Datassette und Diskette.
- Dokumentation
- SIMONS' BASIC EXTENSION USER GUIDE Manual für die Erweiterung zur Modul-Version (PDF in DLH's Commodore Archiv, 34 MB)
- SIMONS' BASIC EXTENSION USER GUIDE im Internet Archiv
- David Simons, the author of Simons' Basic im Lemon64-Forum
- Artikel
- "SIMONS BASIC II" in der RUN 01/1985 S. 116,117,126 (Quelle: Jahres-Inhaltsverzeichnis der RUN-Ausgaben 1984/85/86)
- Bilder
- SIMONS' BASIC EXTENSION Kassette
- Karton mit Kassette im Thema: Simons' Basic EXTENSION available auf Commodore.ca: The PET, VIC, 128, 64 & More Forum