Vision BASIC
| Vision BASIC | |
|---|---|
| Entwickler | Dennis Osborn |
| Release | 2017; 2022 |
| Lizenz | Vollversion |
| Plattform(en) | C64 |
| Genre | BASIC-Erweiterung |
| Steuerung | |
| Medien | , digitaler Download |
| Sprache(n) | Anleitung |
| Information | Es sind verschiedene Versionen zu verschiedenen Preise erschienen. |
Vision BASIC wurde vom amerikanischen Programmierer Dennis Osborn entwickelt und 2022 für den Commodore 64 veröffentlicht. Dieses Entwicklungstool bietet über 100 neue BASIC-Befehle für Bitmap-Grafiken, Sprites, Zeichen, Sound, Interrupts und vieles mehr. Die Programmierumgebung umfasst Funktionen wie einen Speichermanager, einen verbesserten Programmeditor, vereinfachte Festplattenbefehle, benutzerdefinierte Befehle und vollständige Kompatibilität mit Emulatoren wie VICE und THEC64.
Alle Vision BASIC-Programme werden zur Ausführung in extrem schnelle, eigenständige Maschinensprache kompiliert, und Assemblersprache kann nahtlos mit BASIC-Code gemischt werden, um eine noch größere Geschwindigkeitssteigerung zu erzielen.
Beschreibung[Bearbeiten | Quelltext bearbeiten]
Folgende technische Anforderungen muss Ihr C64 erfüllen, um "Vision BASIC" nutzen zu können:[1]
Anforderungen[Bearbeiten | Quelltext bearbeiten]
- Ein C64 oder C128 oder eine geeignete C64-Emulation (wie VICE).
- Zusätzliche 256 KB RAM in Form einer REU oder einer SuperCPU mit zusätzlichem RAM. Dieser zusätzliche RAM ist jedoch für die Entwicklungsumgebung vorgesehen. Kompilierte Programme laufen auf einem Standard-C64 ohne zusätzlichen RAM, es sei denn, das Programm benötigt tatsächlich eine REU.
- Ein Peripheriegerät, wie Diskettenlaufwerk, das die bereitgestellten Medien lesen kann.
- Gute Programmierkenntnisse in BASIC 2.0 und des C64 selbst.
Empfohlen[Bearbeiten | Quelltext bearbeiten]
- Mindestens 512 KByte erweiterter RAM.
- Ein Turbo Chameleon 64, ein SuperCPU, 1541 Ultimate oder Ultimate 64 (zur Verbesserung der Kompilierungsgeschwindigkeit).
Versionen[Bearbeiten | Quelltext bearbeiten]
Die folgenden Versionen von "Vision BASIC" sind erschienen. Die aktuelle Versionsnummer ist 1.1.2:
- Vision BASIC 1.1: Basic Paket (59 U$, auf 5,25"-Diskette, USB-Speicher und digitaler Download, sowie 352-seitiges Handbuch)
- Vision BASIC 1.1+: NeoRAM Paket (110 U$, mit 1MB-NeoRAM-Steckmodul - ein GeoRAM-Klon -, sowie auf 5,25"-Diskette, USB-Speicher und digitaler Download, sowie 352-seitiges Handbuch)
- Vision BASIC 1.1e: 300-seitiges Handbuch + digitaler Download (45 U$, mit Versand)
Startbildschirm[Bearbeiten | Quelltext bearbeiten]
Wenn man "Vision BASIC" über einer REU startet, so erscheint folgender Startbildschirm mit grünen Hintergrund und hellgrünen Rahmen- und Textfarbe.
VISION BASIC 1.0
COPYRIGHT 2017 BY DENNIS M. OSBORN
96K FREE FORE SOURCE CODE
XRAM: REU - 6 OF 256 BANKS USED
MODE: FULL
READY.
Neue Befehle[Bearbeiten | Quelltext bearbeiten]
Diese neue BASIC-Befehle enthält "Vision BASIC":[2]
Funktionstastenbelegung[Bearbeiten | Quelltext bearbeiten]
- F1 :
- F2 :
- F3 :
- F4 :
- F5 : LISTER
- F6 : VLIST
- F7 :
- F8 :
Allgemeine[Bearbeiten | Quelltext bearbeiten]
- BANK[wert] - weist einer Bank (0 bis 9) ein Programm oder Programmteil zu.
- BUTTON(PORT,[wert]) - liefert den Rückmeldewert eines Buttons eines Eingabegerätes z.B. Joystick.
- COMPARE [Variable1], [Variable2] - vergleicht 2 Variablen oder Ausdrücke miteinander
- CLOCK[wert] - setzt die interne Systemuhr; Beispiel:
CLOCK0- setzt die Uhr auf 0. - CLS [poke-code [, color]] - löscht bzw. überschreibt den Bildschirm mit einem beliebigen Zeichen von 0 bis 255 (Standard: Leerzeichen mit dem Wert 32) und einer Textfarbe von 0 bis 15 (Standard: keine Farbe)
- COLORS [textfarbe],[farbe1],[farbe2] - weist Zeichen, Hintergrund und Rahmen eine neue aktuelle Farbe von 0 bis 15 zu.
- DEBUG
- DECIMAL [Variable1], [Variable2], [...] -
- DESC[zeile],"text" - fügt 3 REM-Zeilen ab Zeilennr. mit der text-Beschreibung ein.
- DO - erweitert die Schleife
- ELSE - erweitert IF ... THEN ... ELSE ...
- FILE - ruft ein Menü auf, indem folgende Änderungen für "Vision BASIC" vorgenommen werden können: Memory (Übersicht Speicherbelegung), Banks (Übersicht und Veränderung der Bank-Belegung), Details (Beschreibungen der Bank) und Settings (allgemeine Einstellungen von "Vision BASIC" und aktuelles Programm).
- KEYPRESS - wartet auf einen beliebigen Tastendruck
- KEYPRESS"taste..." - wartet auf einen Tastendruck mit d. angegebene(n) Taste(n).
- QUIT - verlässt "Vision BASIC" nach BASIC 2.0, dabei verändert sich Hintergrund-, Rahmen- und Textfarbe zu den Startfarben des C64. Reaktivierung von "Vision BASIC" mit
SYS57000. - LISTER[zeilennr] - zeigt eine Bildschirmseite des BASIC-Listings ab Zeilenummer an.
- VLIST - zeigt auf dem Bildschirm folgendes an:
- LOCAL -
- GLOBAL -
- NORMAL -
- SEND [variable]
- RANDOM -
- STRINGS [wert] -
- UPPERCASE [wert] - aktiviert den Grafik-/Zeichen- oder Groß-/Kleinschrift-Modus bzw. verändert den Zeichensatz 0 und 1.
- LOC [Spalte], [Zeile]; ["Zeichenkette"|Zeichenvariable$] [; [...]] - zeigt den angegebenen Text an Spalte und Zeile auf dem Bildschirm an.
- PAUSE [0],[Zeit] - weist dem Programm eine Pause von x Sekunden zu oder ohne Parameter eine beliebige.
- PROC [Prozedurname] - Erstellt eine Prozedur bzw. ein "Vision BASIC"-Unterprogramm. Diese wird mit einem RETURN beendet.
- TAG <labelname> - definiert ein Label
- [assembler code] - baut einen Assembler-Code in die BASIC-Zeile ein (siehe Vision_BASIC#Einbau_von_Maschinensprache).
Spezielle[Bearbeiten | Quelltext bearbeiten]
- ADD x=x+dx
- SUB x=x-dx
- COMP [wert1],[wert2]
- DEC [variable] - erniedrigt den aktuellen Variablenwert um 1
- INC [variable] - erhöht den aktuellen Variablenwert um 1
Zeichen[Bearbeiten | Quelltext bearbeiten]
- CHARTPAT[zeichennr.],[wert] - weist einen zu definieren Zeichen die aktuelle Nummer zu.
- CODE./+* - Definiert eine Zeichen-Zeile; pro Zeile stehen 4 Zeichen zur Verfügung; pro Zeichen werden 8 CODE-Zeilen benötigt.
Sprite[Bearbeiten | Quelltext bearbeiten]
- MOBCLR -löscht alle Sprite-Zuordnungen
- MOBPAT [wert] - weist einem zu definieren Sprite die aktuelle Nummer zu
- CODEabcabcabcabc: - Definiert eine Sprite-Zeile mit den Farben A,B,C; pro Zeile stehen 12 Buchstaben zur Verfügung mit Abschluss :; pro Sprite werden 21-CODE-Zeilen benötigt.
- MOBSET[wert1],wert2] -
- MOB [1],[2],[3],[4],[5],[6] - weist einen Sprite alle Parameter zu, insbesonder die X- und Y-Position.
- ALLMOBS [X0],[Y0],... - weist allen 8 Sprites die X- und Y-Position zu.
- SHAPE [wert] - Ruft das Sprite mit der Nummer auf.
- MOBCOL [farbe1],[farbe2],[farbe3] - Sprite-Farben (auch Multicolor)
- MOBEXP [wert1],[wert2] - Sprite-Expansion mit 1 vergrößert und mit 0 normal.
- COLLISION[wert] -
- DETECT[wert] -
- SPRCLR - löscht alle Sprites.
- SPRITECLR
Sound[Bearbeiten | Quelltext bearbeiten]
- VOICE [wert] - bestimmt die Stimme 1-3. Muss als erster Befehl für die Sounderzeugung aufgerufen werden!
- FREQ [wert] - bestimmt die Frequenz
- PULSE [wert] - bestimmt den Pulse
- ADSR [wert1],[wert2],[wert3],[wert4] - bestimmt die Werte für Hüllkurve ADSR
- WAVE [wert1],[wert2] - bestimmt den Wellentyp: 1 = Dreieck, 2 = Sägezahn, 4 = Puls and 8 = Geräusch
- VOL [wert] - bestimmt die Lautstärke 0 bis 15
- PLAY.[stimme],[tempo],[wert3],[wert4],"Zeichenkette" - spielt einen Ton
- PLAY.[stimme],[tempo],"Zeichenkette" - spielt einen Tonfolge
- PLAYSET.[volume],[tempo],[beats],[start],[end] - Legt Einstellungen fest
- PLAYPAUSE.yes? - hält die Musik an mit 1 oder mit 0 für Wiederholung,
- PLAYSTOP - hält die Musik an und die Lautstärke wird auf 0 gesetzt.
- PLAYCLR - löscht die aktuelle Musik aus dem Speicher
- SIDCLR - löscht den programmierten SID.
- Ein Musik-Demo
- [3]
10 clr:cls 20 keypress 30 play.1,0,">bagabbb2aaa2b>dd2" 40 play.1,1,"<bagabbbbaabag1l2" 50 keypress
Diese BASIC-Befehle wurden erweitert:
- CHR$ (mehrere Parameter möglich) - Beispiel:
CHRS$(96,20) - GOSUB - kann nun auch für Tags und Labels genutzt werden; Beispiel:
GOSUB DEMO - GOTO - kann nun auch für Tags und Labels genutzt werden; Beispiel:
GOTO MORE - LET
- IF-THEN-ELSE (diese Befehlsreihe kann auch auf mehrere Zeilen verteilt werden!)
- PEEK (mehrere Parameter möglich) - Beispiel:
PEEK(53280,2) - POKE (mehrere Parameter möglich) - Beispiel:
POKE 1065,8,5,12,12,15," C64-WIKI" - SAVE "file",<device_number>,<device_number2|address1>,<address2> - speichert Maschinensprachecode oder definierte Speicherbereiche ab; Beispiel:
SAVE "C64WIKI-DATAS",8,49125,50000
Einbau von Maschinensprache[Bearbeiten | Quelltext bearbeiten]
"Vision BASIC" erlaubt es "Vision BASIC"-Befehle und Assemblercode bzw. Maschinensprache miteinander direkt zu vermischen.
- Wenn Maschinensprache in einer BASIC-Zeile genutzt wird, müssen eckige Klammern für die mnemonics benutzt werden:
[ ...assembler... ]
100 REM *** MACHINE CODE *** 200 [JMP C000]
- Wichtig ist nur die offene eckige Klammer [ !
130 [LDA#7: STA646 :PRINT"YELLOW TEXT!"
Weiterhin kann der integrierte Maschinensprachemonitor genutzt werden:
START address- Die Startadresse des Maschinenspracheprogrammes. Es sollte als erster Befehl genutzt werden.
- Diese reservierten Befehle können nur im Maschinensprachemonitor genutzt werden (allerdings nicht als Variablen- oder Tag-Name!): ADD< SUBTRACT, BYTES, COMPARE, DEBUG, DOUBLE, GOTO, GOSUB, HALF, HALT, LOCAL, GLOBAL, MODULE, PROC, RASTER, RETURN, REM, RESUME, START, STARTINT, STRINGS, TAG, VARIABLES, VERSION.
- Tags und Variablen können Werte und Speicheradressen ersetzen.
- ; - Das Semikolon wird für Anmerkungen im Maschinencode genutzt.
Tipps[Bearbeiten | Quelltext bearbeiten]
Unterschiede zu BASIC V2.0 sind:
- Schleifen mit FOR-TO-STEP-NEXT und DO funktionieren nur mit ganzzahligen Variablen.
- Zeichenketten und Zeichenkettenvariablen können nicht aus Vision BASIC-Unterprogrammen zurückgegeben werden.
- Bei Verwendung der neuen Soundbefehle
FREQ,PULSE,ADSRundWAVEmüssen Sie zunächst eine aktuelleVOICEfestlegen, bevor Sie diese aufrufen können. - Der Maximalwert für Variablen in Vision BASIC beträgt: ±16.777.215
- Klammern sind in mathematischen Ausdrücken wie
A = 1+ ((2*5) *9)nicht zulässig. Wenn Sie diese verwenden möchten, müssen Sie sie wie folgt schreiben:A = 2*5: A = A*9 : A = A+1 - Alle mathematischen Ausdrücke werden streng von links nach rechts ausgewertet!
- Die Dateibefehle sind für die Gerätediskette optimiert (optional 8 oder 9 bis 12).
Folgende BASIC-Befehle sind nicht verfügbar[Bearbeiten | Quelltext bearbeiten]
Diese folgenden BASIC 2.0-Befehle sind unter "Vision BASIC" nicht verfügbar:
Beispiel[Bearbeiten | Quelltext bearbeiten]
Ein kleines Beispielprogramm in "Vision BASIC" geschrieben:[4]
0 clock0 1 clr 2 random 5 dim a(4),b(4) 6 decimal sr, ti 10 colors 1,0,0:cls 20 a(0)=-2:a(1)=-80:a(2)=2:a(3)=80 22 b(0)=-1:b(1)=-40:b(2)=1:b(3)=40 30 sc=1105 31 sr=rnd*10:a=sr*80+sc 33 sr=rnd*10:a=sr*2+a 40 [lda #160:ldx #0] 41 [sta 1064,x:sta1304,x:sta1544,x:sta1784,x:inx:cpx#240:bne41:lda#32:ldx#0] 42 [sta1984,x:inx:cpx#40:bne42] 43 fori=0to23:p=i*40+1063:pokep,32:next 100 poke a,4 110 j=rnd(2)and3:let x=j 112 compare s,sm:[bcc120]:let sm=s,fi=b 120 pb=peek(a,a(j)) 122 compare pb,160:[bne130 123 aa=b(j):add a=a+aa:pokea,32 125 : :add a=a+aa:pokea,j 127 let b=a:incs 129 goto110 130 inc j:j=j and3 131 compare j,x:[bne120 140 j=peek(a) 141 poke a,32 142 dec s 143 comp j,4:[bcs150 144 a=a-a(j):goto110 150 pokea,1:pokefi,2 160 ti=clock/60:printti
Programme[Bearbeiten | Quelltext bearbeiten]
Folgende Programme wurden in "Vision BASIC" für den C64 entwickelt:[5]
- Spiele
- LOGOS64 – a Wordle clone erstellt von Miles Dyck (April 2023)
- Harold – a cat and mouse game by Dennis und Keith Osborn (February 2022)
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Vision BASIC - Offizielle Webseite mit Demos und Video Tutorials

- Alle Befehle von "Vision BASIC" im "Vision BASIC Cheat Sheet" von DNSGeek auf cheatography.com ]

- Forum64.de: "Neuer C64 BASIC-Compiler "Vision BASIC" Kuriosum oder echte Chance?"

Quellen[Bearbeiten | Quelltext bearbeiten]
- ↑ Auszug aus der offiziellen Website
- ↑ "Vision BASIC Cheat Sheet" by DNSGeek at cheatography.com
- ↑ Aus der offiziellen "Vision BASIC"-Anleitung
- ↑ Forum64.de:"Neuer C64 BASIC-Compiler "Vision BASIC" Kuriosum oder echte Chance?" Vision BASIC code from Forum64.de (Hamrath); April 2022
- ↑ Übersicht und Download von "Vision BASIC"-Spielen