Archive for the ‘Basic’ Category.
Das sieht Verda’BMP’t gut aus…
Rechtzeitig zum Treffen in Garitz konnte ein weiteres Schmankerl für TRIOS-Basic assimiliert werden. Es wurde ein Grafiktreiber mit 160x120Pixel und 64 Farben pro Pixel als Mode4 Treiber ins Basic-Werkzeugköfferchen aufgenommen. Dieser erlaubt die Darstellung von Farbbildern in genannter Auflösung, da hier anders, als in den bisherigen Treibern, jeder Pixel eine andere Farbe besitzen darf.
Nun wünschte ich mir, die geschaffenen Pixelkunstwerke auch irgendwie speichern und, was noch besser wäre, auch wieder laden zu können. Diese Dateien sollten aber auch in einem Format vorliegen, welches jeder PC versteht. Das Windows-Bitmap-Format schien für dieses Unterfangen die beste Lösung. Der Dateiaufbau ist recht simpel zu verstehen und propellerisch mit einem überschaubaren Aufwand realisierbar. Das Ergebnis hat mich selbst überrascht, BMP-Datei mit 160×120 Pixel in 24bit-Farbauflösung in den Hive ->Befehl eingegeben ->Bild auf dem Bildschirm (siehe Screenshots).
Das Speichern und Laden im Mode 4 funktioniert hervorragend, benötigt aber etwas Zeit, da jeder einzelne Pixel in die 3 RGB Farben zerlegt bzw. wieder zusammengesetzt werden muss . Im Mode 2 und 3 kann bisher nur gespeichert werden, Mode 0 und 1 wird zur Zeit noch nicht unterstützt, da diese Treiber vollkommen anders aufgebaut sind. Zudem wird der Speicherplatz in Regnatix langsam knapp aber es bleibt abzuwarten, was noch so alles an Ideen heranreift. TRIOS-Basic 3.0 wird auf jeden Fall die Kreativität anheizen und die Leistungsfähigkeit des Hive mehr als je zuvor demonstrieren. Alle, die zum Treffen nach Garitz kommen, können sich schon mal einen kleinen Ausblick am lebenden Objekt gönnen. Bis dahin ….
Zille9
Langsam wird’s …
Und hier wieder ein kleiner Einblick in die Entwicklungsarbeit von TRIOS-Basic. Die Arbeit ist kurz vor dem Abschluss, sollten die laufenden Test’s erfolgreich sein. Die Liste der neu hinzugekommenen Funktionen liest sich zumindest nicht schlecht.
- lange Variablennamen verfügbar (ein Variablenname kann so lang sein, wie eine Basiczeile)
- dynamische Verwaltung der Variablen, dadurch wurde Platz im RAM frei, der vom User genutzt werden kann)
- Stringfunktionen entsprechen in der Schreibweise nun dem Standard (Print left$(a$,5)…Name$=Right$(Nachname$,5))
- Bit-Operationen direkt ausführbar : a=b<<2, n=a&b
- Strings können die Länge einer Basiczeile annehmen
- REDEFINE-Befehl geschaffen, um den Fontsatz im Modus 1 und 2 zu modifizieren
- das Editieren einer Basiczeile ist jetzt einfacher, es kann Text eingefügt oder gelöscht werden, nach Return wird die bestehende Zeile übernommen, egal wo sich der Cursor befindet
- im Modus 0, dem Standard-Basic-Treiber wurde die Darstellung komplett auf Tile-Fonts umgestellt, dadurch ist mehr Platz auf dem Bildschirm und sieht einfach besser aus als der Monsterfont von Parallax
- mathematische Funktionen entsprechen der korrekten Schreibweise : a=sin(b), c=sqr(z)…
Das ist nur ein kleiner Ausblick. Motivation war es, eine möglichst hohe Kompatibilität zu Standard-Basicinterpretern herzustellen. Der Erfolg spricht für sich, war es doch so möglich, das Programm GLOBUS vom KC85 (siehe auch bei Micromite) mit nur sehr wenigen Änderungen auch auf den Hive unter Trios-Basic zu portieren. Aber seht selbst ….
Einiges ist noch zu tun, da Fehler ja nie ganz ausgeschlossen werden können. Trios-Basic muss sich im Labor noch bewähren und das Handbuch benötigt ebenfalls ein Update. Es wird also noch etwas dauern, bis die Final-Version zum Download bereitsteht, aber man kann getrost sagen: Langsam wird’s …. 🙂
Zille9
Widerstand ist zwecklos…
…dachte ich aber manche Spezies zeigen sich erstaunlich widerstandsfähig, wenn es darum geht, in das Kollektiv aufgenommen zu werden. Aber fangen wir ganz von vorn an.
Nachdem (der, die, das ?) Micromite erfolgreich assimiliert wurde, war es an der Zeit, eine Testumgebung für den Patienten zu erschaffen. Entstanden ist ein Erweiterungsboard, welches direkt am Hive oder am Venatrix-Erweiterungsbus (ja.. dieser existiert momentan nur als Testgerät und ist noch nicht über das Alpha-Stadium hinweggekommen) betrieben werden kann und ähnlich dem Micromite-Companion, ein Steckboard beherbergt, das für erste Experimente herhalten soll.
Die Anpassung an Hive- bzw. Venatrix-BUS erfolgt über Jumper. Zusätzlich besteht die Möglichkeit, das Testboard (eine 3,3V Spannungsquelle vorausgesetzt) vollkommen Hive-unabhängig zu betreiben. Eine Terminalverbindung erfolgt dann mit dem Prop-Plug-Anschluss (rechts im Bild). Nach erfolgreicher Inbetriebnahme und Korrektur eines (bei meinen Projekten mittlerweile schon obligatorischen) Fehlers im Layout konnte das erste Testprojekt anlaufen. Um meinen Netzwerk-impotenten Hive zu heilen erstand ich in der Bucht zwischenzeitlich zwei niedliche kleine WLAN-Seriell-Platinchen mit dem ESP8266-Chip Onboard. Dieser soll auf einfachste Weise eine WLAN zu Seriell-Verbindung herstellen können, ohne das man sich mit Netzwerkgedöns herumschlagen muss. Klingt gut, also zwei paypalisiert und ran an’s Werk. Ganz so simpel stellte sich die Angelegenheit dann doch nicht heraus. Trotz lumpiger 4-Draht-Verbindung, wollte keine Reaktion auf AT-Befehle erfolgen. Schon fast am verzweifeln, spielte ich einfach mit den Baudraten herum (obwohl überall im Netz nur 57600 oder 115200 angegeben waren). Und ei gucke da, bei 9600 kam auf den AT-Befehl ein lesbares OK zurück. Was soll das denn, dachte ich so. Hatte ich wieder ein Freitags-Nachmittags-Schlechtwettermodell erwischt? Nach weiterer Recherche im Netz stieß ich auf einen nicht dokumentierten Befehl, der es erlaubt, die Baudrate des Moduls zu ändern. Das war ja einfach, hat mich aber mehrere Stunden Grübelei und wieder ein paar Haare gekostet. Das Verbinden mit meinem Router war dann problemlos, nur was jetzt?
Nun wurde es spannend, denn Oldbitcollector hat sich im Basic des Micromite, einen IRC-Clienten gebastelt und genau den wollte ich testen. Guckst Du unten 🙂
Es funktioniert ……
…. die Welt kann so schön sein 😉
– oder Widerstand ist zwecklos 🙂
Zille9
Es ist vollbracht – TRIOS-BASIC 2.1
Seit dem letzten Update ist schon einige Zeit vergangen. Die Zeit wurde effektiv genutzt, um unser TRIOS-Basic an die Spitze der Basic-Interpreter-Charts (zumindest auf dem Propeller) zu katapultieren. Viele Neuerungen sind hinzugekommen, Altlasten abgeworfen und Fehler beseitigt. Hier eine kleine Aufstellung der Neuerungen/Änderungen
- -Fliesskomma-Funktion ist jetzt genauer, Zahlenbereich von 1E-38 bis 1E+38
- -Window-Funktion zusammengefasst und flexibler, so kann z.Bsp. das Aussehen der Fenster mit Tile-Fonts individuell angepasst werden, verschiedene Fenstertypen können ausgewählt werden (mit Rahmen, ohne Rahmen, mit Titel oder Statusleiste oder Scrolleiste). Das Aussehen ist an PLEXUS orientiert.
- -DATA,READ,RESTORE Funktion zur Datenverarbeitung vorhanden
- -BACKUP,RECOVER um Bildschirmbereiche zu sichern und wiederherzustellen
- -Mit FUNC erstellst Du Benutzerfunktionen, denen bis zu 4 Variablen zur Berechnung übergeben werden können
- -der RENUM-Befehl erlaubt eine Neunummerierung des Basicprogramms (Sprungmarken müssen aber selbst angepasst werden).
- -der PORT-Befehl gestattet den Zugriff auf die (optional angeschlossene) Sepia-oder Joystick-Karte
- -mit dem XBUS-Befehl kannst du auch Funktionen aus TRIOS erreichen, die nicht im Basic vorhanden sind, du kommunizierst damit auf dem HIVE-Bus direkt mit den Propeller-Chips
- -BUTTON-Befehl umgebaut, jetzt sind Text- und Icon-Buttons möglich
- -mit dem erweiterten LOAD-Befehl ist es jetzt möglich Programmteile nachzuladen, auch während des laufenden Programms
- -MKFILE ermöglicht das Erstellen von Dateien
- -der CHDIR-Befehl wurde überarbeitet, jetzt kannst Du Dich in allen Verzeichnissen frei bewegen
- -mit BLOAD werden BIN-Dateien aus dem Basic heraus gestartet
- -die String-Verarbeitung wurde zusammengefasst und fehlerbereinigt
- -INPUT-Befehl wurde überarbeitet und verbessert
- -die INKEY-Abfrage ist jetzt fehlerfrei (ab und zu war noch ein ungewolltes Zeichen im Puffer)
Vom Befehlsumfang sollte der vorläufige Endstand erreicht sein, was unseren Basic-Interpreter zum wohl umfangreichsten in der Propeller-Welt sein läßt. 🙂
Leider gibt es noch keine Demo, um die neuen Funktionen zu demonstrieren. Es gibt aber für alle neuen(und alten) Funktionen entsprechende Beispielprogramme im Basic-Ordner. Ich wünsche allen Basic-Freunden viel Spaß und Entwicklerdrang mit TRIOS-BASIC 2.1.
euer Zille9
TriOS-Basic (1975 Downloads )Tausend Sterne
zu dem Titel fällt mir jetzt spontan ein *extremst* kitschiges Kinderlied ein. Aber das ist ne ganz andere Geschichte. Vielmehr geht es um eines der Basic Programme die einem so einfallen, wenn einem sonst nichts originelles einfällt. Wenn Leute vor nem Klavier stehen und ihnen fällt sonst nix ein, tippen sie den Flohwalzer. Wenn Leute vor nem Basic-Computer stehen, tippen sie vielleicht sowas:
10 FOR I=1 TO 1000
20 PRINT „*“;
30 NEXT I
Soweit sogut. 1000 Sterne, auf einen Bildschirm ausgegeben. Aber was passiert, wenn man das „;“ vergisst? Dann bekommt jeder Stern einen Zeilenvorschub.
Aber was passiert, wenn man das „;“ vergisst und das Ausgabegerät ein uraltes, Intel 8080 basiertes Terminal – ohne Handshake – ist? Dann kommt jenes Terminal irgendwann ins Schwitzen. Weil ein Scrollen des gesamten Bildschirminhalts für jenen uralten i8080, der mit ca. 2MHz läuft die absolute Härte ist.
Der langen Rede kurzer Sinn:
Ich hab genau das die Tage *ausversehen* gemacht. Rein zufällig hab ich zur gleichen Zeit auch noch im „CP/M Alteration Guide“ gestöbert. Und da kam „rein zufällig zum Quadrat“ eine Erkenntnis zustande:
1) So ein altes Terminal, auch wenn es mit der Baudrate normalerweise mithalten kann, ist beim Scrollen irgendwann überfordert.
2) im CP/M Alteration Guide wird genau dieses Problem an einer Stelle mal kurz angerissen. Dort wird empfohlen: in der Zeichenausgabe-Routine nach Ausgabe eines LF eine Wartezeit einbauen.
Hab ich dann jetzt so gemacht – und jetzt passt alles. Allerdings muss ich gestehen: wenn ich nicht so ein altes Terminal zum Testen zur Verfügung gehabt hätte wär ich niemals nicht auf die Idee gekommen dass es da ein Problem geben könnte…
Sind wir nicht alle ein bisschen BASIC?
Es gibt so Tage, da gelingt einem garnichts. Da forscht man stundenlang an einer vermurksten Schaltung rum, und das Ding bewegt sich keinen Zentimeter. So ging es mir letztes WE mit meinem Z180 Eigenbau. Eigentlich sah alles richtig aus, aber *uneigentlich* kam aus der Kiste kein Signal raus. Irgendwann erinnerte ich mich, dass mir Grant Searle mal gesagt hatte dass aus einer seriellen Schnittstelle nix rauskommt, solange /CTS nicht auf Null geschaltet wird. Eigentlich hatte ich nen 10K Pull-Down Widerstand an dem Signal. Aber wer glaubt dass so ein Widerstand stärker ist als ein Chip mit anderer Meinung, der glaubt auch, dass ein Zitronenfalter Zitronen faltet. In dem Fall hat der MAX das Signal schön hochgehalten 😉
Hab dann bisschen mit Skalpell und Lötkolben auf der Platine rumgewütet – und plötzlich ging was! Dann musste ich nur noch rausbekommen wie die Einstellung der Baudrate im Terminal und in der Z180 Initialisierung zusammenpassen, und plötzlich gab es jede Menge „Hallo Welt!“ aufm Bildschirm.
Wenn man nach viel Mühe endlich so ein „Hallo Welt!“ aufm Schirm hat löst das zunächst Euphorie aus, wird aber dann zugegebenermaßen doch auch rel. schnell langweilig. Aber dann fiel mir plötzlich ein, dass mir Grant Searle vor ca. einem Monat eine Experimentalversion des NASCOM-Basic für den Z180 zugesendet hatte! Gleich mal das Zeugs ausgebuddelt und probiert – ich musste lediglich die Einstellung für das Baudraten-Register anpassen, dann lief BASIC auf der Kiste!
Zunächst noch per serieller Schnittstelle jedesmal zu laden – womit mein Computerchen als ne Art Patient eine Krankenschwester brauchte um durchzustarten. Aber dann fiel mir ein, dass der Code ja per PROGMEM im Atmel zu speichern geht. Jetzt braucht der Computer keine „Krankenschwester“ mehr um aufzustehen! Der hat jetzt seinen eigenen Basic Instinct – ist auch ohne Host lebensfähig, siehe Foto 😉
TRIOS-Basic Update (Vers.2.03b)
Ein neues TRIOS-Basic Update ist ab sofort verfügbar.
Hier ein kurzer Abriss über die Neuerungen und beseitigten Bugs:
Neuerungen/Änderungen Version 2.03
-Spritefunktionen für kleine Spiele vorhanden, es können bis zu 8 bewegte Sprites definiert werden
-Playerfigur definierbar
-Kollisionserkennung mit Sprites und definierten Tiles
-Itemverwaltung für das Einsammeln von Gegenständen
-Eingrenzung der Sprite- und Playerbewegung mit Blockade-Tiles
-verschiedene Sprite-Bewegungs-Modi wählbar
-Mathematische Funktionen erweitert
1.Einstellung der Präzision
2.Bit-Operationen verfügbar (shift-left, shift-right, Reverse, Oder, XOder, Und)
-Print-Befehl mit der Option HEX oder BIN zur Ausgabe hexadezimaler oder binärer Zahlenwerte
-Lade-und Speicheranzeige erfolgt jetzt als Prozentanzeige
-Fehler in der Line-Funktion behoben (x und y vertauscht)
-Fehler in der Plot-Funktion behoben (x und y vertauscht)
-Fehler beim BYE-Befehl behoben (es konnte passieren, das nach Beendigung nicht korrekt ins Root-Verzeichnis gewechselt wurde und dadurch die Reg.sys nicht auffindbar war)
-Fehler in der Array-Berechnung behoben (bei verschachtelten For-Next-Schleifen zum Füllen von Arrays wurde das Array-Feld falsch berechnet)
-Verzeichnismarker hinzugefügt (jetzt sollte Basic auch aus einem beliebigen Verzeichnis funktionieren)
Ich wünsch euch viel Spaß mit der neuen Version
Update 2.03b:
Beim Start aus Plexus wurde der Basic-Systemfont nicht korrekt geladen. Dies wurde behoben
TriOS-Basic (1975 Downloads )Es kommt Bewegung in’s Spiel
Nachdem die ersten Versuche, Spiele mit einigen bewegten Objekten im Basic zu programmieren, zu der ernüchternden Erkenntnis geführt haben, das ein Basic-Interpreter, der auch noch in Spin programmiert wurde, viel zu langsam für solch ein Unterfangen ist, habe ich nach Wegen gesucht, dieses Manko irgendwie zu umschiffen. Also warum nicht alle Bewegung dahin verlagern, wo sie auch erzeugt werden soll, nach Bellatrix. Das hat mehrere Vorteile, erstens wird Regnatix nicht mit den Berechnungen für die Bewegung belastet, der Speicher in Regnatix bleibt frei und die Geschwindigkeit steigt dramatisch, da nicht jeder Befehl über den Bus laufen muss.
Das Ergebnis kann sich durchaus sehen lassen. Im Video ist das erste Level des Spieles Climber ,diesmal in Basic programmiert zu sehen, bei dem die Geschwindigkeit sogar drastisch reduziert werden musste. Im nächsten Basic-Update wird es möglich sein bis zu 8 Gegnerfiguren zu definieren , dabei muss sich der Programmierer um Kollisionsabfrage oder die Bewegung der Tiles nicht kümmern. Er gibt nur Startparameter ein und startet per Befehl die Bewegung, alles andere übernimmt Bellatrix.
Zugegeben, es ist kein Softscrolling aber es bewegt sich was 😉
Übrigens wird jetzt standesgemäß am Hive programmiert:
Basic geht in die zweite Runde
Nachdem nun viele Stunden an Entwicklung verflossen sind, hat TRIOS-BASIC in der Version 2.0 das Licht der Welt erblickt und buhlt jetzt um die Gunst der Hive-User. Dies ist auch der Versuch, alle die einen Hive haben aber mit Forth nicht so richtig warm werden oder nicht wissen, was sie jetzt mit ihrem Hive anstellen sollen, zum tüfteln zu animieren. Dabei soll TRIOS-BASIC keine Konkurrenz zu Forth oder anderen Sprachen sein. Vielmehr soll die Begeisterung, den Hive für seine Projekte zu nutzen geweckt werden. Es wurde versucht, die Syntax der Befehle so einfach und vom Ergebnis, so effizient wie möglich zu gestalten, damit auch ohne große Programmierkünste, etwas brauchbares entsteht. Mit Hilfe des Handbuches und den beigepackten Beispielen (z.Bsp. ist ein DMP-File-Player als Basic-Programm enthalten, welcher mit der Maus bedient werden kann), soll der Einstieg so einfach wie möglich sein. Für alle Hardcore-Basic-User ist auch eine Flashvariante verfügbar, um den Hive, ähnlich einem ehemaligen Homecomputer, als reinen Basic-Computer zu betreiben.
Im Download-Bereich wird es dazu regelmäßige Updates geben. Scheut euch nicht Fragen, Kritik oder gefundene Fehler loszuwerden. Niemand wird allein gelassen.
TriOS-Basic Version 1.10
Ist schon ein paar Tage her (hab gerade wenig Zeit) und die meisten werden es sich schon aus dem Forum besorgt haben. Kurz die Neuerungen in Stichworten:
- Speichererweiterung auf 512kb -> Hinweis für Nutzer der Ramdisk-Funktion: Ram-Bank1 wird von TRIOS-Basic genutzt und überschrieben, also für Ram-Disk „NICHT“ Ram-Bank1 benutzen
- Anzahl der möglichen Basic-Zeilen wurde auf 999_999 erhöht (das sollte wohl reichen )
- Stringvariablen verfügbar: Ab sofort werden Strings unterstützt (#a … #z)
- neue Befehle: -STR l, STR r, STR m (entspricht strleft, strright, midstr)
- LEN(string) ermittelt die Länge eines Strings (die maximale Länge eines Strings darf 150 Zeichen betragen, längere Strings werden abgeschnitten)
- STRCOMP(string1,string2) vergleicht zwei Strings und gibt entweder -1(strings sind gleich) oder 0(strings sind ungleich) zurueck
- Input-Befehl um Stringeingabe erweitert
- kleinere Fehler bei Windows-Funktionen beseitigt
- Basicprogramme werden ab sofort im eRam abgelegt, dadurch ist der gesamte Regnatix-Speicher für’s TRIOS-Basic frei (ca. die hälfte ist noch frei für Erweiterungen)
Wie üblich weitere Infos im Forum: TriOS-Basic
TriOS-Basic (1975 Downloads )Kleines Basic-Demo von Zille zu Fenstern und Sound
Sorry, das zweite Video kommt heute aus meinem Darkroom… 😉 Naja, ich hoffe man kann dennoch ein wenig erkennen, zumindest habe ich die Boxen ordentlich aufgedreht, was am Licht gefehlt hat.