{{ --------------------------------------------------------------------------------------------------------- Hive-Computer-Projekt Name : TRIOS-Basic Chip : Regnatix-Code Version : 2.108 Dateien : Beschreibung : Modifiziertes, stark erweitertes FemtoBasic für den Hive. Eigenschaften : -Benutzung externer Ram, Stringverarbeitung, Array-Verwaltung -Gleitkommafuktion, Tile-Grafikunterstützung -SID-Sound-Unterstützung -64-Farb-VGA-Treiber -Maus-Unterstützung, Button-Verwaltung -Fensterverwaltung -durch Tile-Fonts, verschiedene Schriftarten und Fensterstile -bewegte Tile-Sprites Logbuch : 02-11-2012 - erste eram Nutzung ok - Load ok - Save ok - List ok - neue Zeilen eingeben ok - Run ok - aendern von Zeilen ok - Zeilen loeschen ok - nicht vorhandene Zeilen einfuegen ok - Fehler-Beep hinzugefuegt - Basicspeicher auf 512kb ehoeht (durch die konsequente eRam-Nutzung) - 999_999 Basic-Zeilen moeglich 17-11-2012 - 26 Stringvariablen verfuegbar - Stringfunktionen: - str l strleft - str r strright - str m midstr - LEN stringlaenge - STRCOMP stringvergleich 08-12-2012 - Tilegrafik-Unterstuetzung - TLoad,STile,TPic,TILE,BOX,FONT,SCROLL-Befehl hinzugefuegt - cd-Befehl hinzugefuegt 27-12-2012 - Mouse,Button,DButt-Befehl hinzugefuegt(die Buttonverwaltung geschieht in Bella) - Buttons mit Tilefonts nutzbar - Windows mit Tilefonts nutzbar - Hilfesystem mit Tilefonts modifiziert damit mehr Platz fuer Hilfetext vorhanden ist - Startbildschirm hinzugefuegt 04-01-2013 - Fehler in Save-Routine behoben (y/n Abfrage bei existierender Datei wurde falsch abgearbeitet) - Map-Befehle zum erstellen speichern und laden von Levelmaps hinzugefuegt MAP D, MAP L, MAP S, MAP W (Display,Load,Save,Write) - Goto Abfrage optimiert um zu verhindern, das bei Schleifendurchlaeufen immer der gesamte Programmspeicher nach der goto Zeilennummer durchsucht werden muss - Load-Befehl mit Autostartfunktion erweitert (Load"Name.bas",1) - Mousezeiger kann zur Laufzeit per Tiledatei geaendert werden - Dir-Befehl um Extensionssuche erweitert - Neuer Befehl GFILE gibt die Anzahl der mit DIR gesuchten Dateien zurueck GFILE,Nummer uebergibt den Dateinamen der entspr.Nummer an #z (Fuer z.Bsp.eine Dateiauswahl) 20-01-2013 - Variablen a...z in den eRam verschoben fuer spaetere Nutzung mit Gleitkomma-Arithmetik - CLS Befehl durch interne Verwendung des 2DBox befehls beschleunigt - Speicherverwaltung ueberarbeitet und Programmspeicher auf 128 kb begrenzt (ist immer noch mehr als die meisten Retro-Computer hatten) - dadurch kann die zweite Rambank fuer andere Sachen benutzt werden 02-02-2013 - eindimensionale Arrays hinzugefuegt a(0...255)-z(0...255) damit sind insgesamt 6656 Variablen moeglich (Verwaltung im eRam ab Adresse $71000) - Zeilennummern wieder auf 65535 begrenzt da ja auch der Arbeitsspeicher kleiner ist (128kb) dadurch kleiner Geschwindigkeitsgewinn (statt long wird word als Zeilennummer gelesen->schneller) - ASC-Funktion hinzugefuegt - CHR-Funktion angepasst - STR$-Funktionen jetzt direkt ueber Print-Ausgabe moeglich (print str$ l(#a,2)) 16-02-2013 - Fehler in Speicherverwaltung (aendern von Zeilen) offensichtlich behoben -> Hoffentlich - PASM-Routinen fuer schnellen Speichertransfer integriert (Bereiche loeschen,fuellen,rdbyte,wrbyte,rdword,wrword,rdlong,wrlong) - Load und Save durch die Speicherung der Programmdatei als Binaerdatei erweitert (schnelleres laden und speichern durch Blocktransfer ->Load"Name",1; Save"Name",1 - Sicherungsdatei (Save & Load ohne Name) wird als Binaerdatei behandelt - Str$-Funktion erweitert Option N wandelt eine Zahl in einen String um (funktioniert aber nur mit direkter Zuweisung, nicht ueber Variablennamen (a(0..255)) - Zeilenlaenge auf 100 Zeichen gekuerzt, spart etwas Platz im Speicher - Timerfunktion hinzugefuegt, 8 Timer laufen in einer separaten cog (Funktionen: Timer s, r, c -> setzen, lesen, abfrage ob abgelaufen) - Befehl GATTR hinzugefuegt zur abfrage der Dateiattribute einer geoeffneten Datei 03-03-2013 - Befehl MKDIR hinzugefuegt zum Erstellen von Verzeichnissen auf der SD-Card - Fehler in DIR-Filter-Funktion behoben - STR$ N wieder entfernt, jetzt kann eine Variable direkt in einen String umgewandelt werden mit z.Bsp. #a=g(10) - RECLM-Funktion (Reclaim) hinzugefuegt um Programm nach Neustart oder Absturz wieder herzustellen - reg-ios-64 rigoros gekuerzt um Speicher frei zu machen, es sind nur noch unbedingt benoetigte Funktionen enthalten (os_error texte entfernt-> spart massig platz) - System-und Fehlertexte ausgelagert, werden von SD-Card in den E-Ram geladen (spart Platz und erlaubt umfangreichere Fehlertexte) - Hilfesystem ausgelagert, das schafft Platz und ermöglicht zusätzliche Funktionen 19-03-2013 - Gleitkommafunktion hinzugefügt -- Puuh, das war ne harte Nuss - diverse mathematische Funktionen und die Zahl PI hinzugefügt (sin, cos, tan, mod, exp, log,asin,acos,atan,floor,ceil) - Funktion Val(String) hinzugefügt (String in numerischen Wert umwandeln) - noch ein paar Trigonometrische und elektrische Funktionen hinzugefügt, so jetzt reicht es mit Mathe-Funktionen (insgesamt 31 mathematische Funktionen - SIN,COS,TAN,LN,DEG,E,FRC,Int,LOG,EXP,ATN,FL,CL,MIN,MAX,ASN,ACS,FAK,PYT,PER,RCL,RAD,SNH,CSH,TNH,CTH,COT,y^x,Modulo,Abs,Neg,Wurzel,PI - Tilesetgrösse reduziert auf 256x176 Tiles (spart 1280 longs), ich brauche noch etwas Platz in Bella für Spritefunktionen oder zumindest Bewegung für Tiles 30-03-2013 - Funktion STRING$ hinzugefügt (sich wiederholende Zeichenketten) - Stringverarbeitung umgebaut (verbraucht immer noch zu viel Platz) - direkte Addition von Strings jetzt möglich (#c=#a+#b) - GOTO und GOSUB durch ON erweitert (ON x GOTO GOSUB ,,...) Nullwerte werden ignoriert - IF THEN durch ELSE erweitert (IF Bedingung THEN Aktion ELSE Aktion) ELSE muss aber in der nächsten Zeile stehen - Stringarrays verfügbar #a(0..255)-#z(0...255) Verbraucht ziemlich viel ERam, mal sehen ob ich eine dynamische Array-Verwaltung hinbekomme( vielleicht bis zu 3 Dimensionen) - Standard-Arraytiefe wieder auf 10 begrenzt (Zahlen und Strings), bin dabei bis zu dreidimensionale Arrays verfügbar zu machen 02-04-2013 - Stringarrays mit bis zu drei Dimensionen verfügbar maximale Feldgrösse ist 8x8x8 (Dim #a(7,7,7) oder dim #a(16,16,1) oder jede andere Größe die x*y*z=<512 erfüllt) - Endlich nach dem dritten oder vierten Anlauf funktionieren jetzt auch die Variablen-Arrays Feldgröße 8x8x8 (beim Dimensionieren einen Wert niedriger eingeben da die Felder bei Null beginnen d.h. das erste Feld ist (0,0,0) und nicht 1,1,1 - Stringlänge auf 34 Zeichen reduziert da noch keine dynamische Speicherverwaltung vorhanden ist und bei statischer Speicherverwaltung immer die maximale Stringlänge vorgehalten werden muss (verbraucht sehr viel Eram Bsp. 26 Stringnamen (a-z) * 34 Zeichen * 512 (Feldgrösse) = 452 608 Bytes (fast ein ganzer Speicherchip) 06-04-2013 - Array-Verwaltung funktioniert jetzt endlich (das Arbeiten mit dreidimensionalen Feldern hat sich als komplizierter herausgestellt als gedacht) - EDIT-Funktion integriert, nun kann man Zeilen auch im Nachhinein editieren ohne immer die ganze Zeile neu einzugeben. - serielle Schnittstellen-Unterstützung eingebaut (Befehl COM,COMG,COMR) 03-05-2013 - Parameter Baudrate bei öffnen der seriellen Schnittstelle hinzugefügt (COM 1,57600) - Stringverwaltung geändert, alle Stringvariablen dürfen nur noch 33 Zeichen lang sein,macht sich beim Programmieren einfach besser, wenn der Interpreter darauf achtet, die Feldbereiche zu trennen - Fehler in der Soundausgabe behoben, beim Spiel Baller.bas kam erst nach dem 2.Run ein Ton (in der Init-Routine Sid-reset und beep(1) eingefügt, jetzt klappts auch beim 1.Run) - unsichere RAM-Schreibroutine in PASM mit einigen NOP's ergänzt, da nach ranstöpseln eines neuen Netzteils, die Ram-Routine nicht mehr korrekt arbeitete(Schaltnetzteil Hochfrequenz?) - Cursorpromt ala KC87 hinzugefügt, Routine putlinet entfern(überflüssig) - Stringlängenbegrenzung in addstring korrigiert (hat über die Feldgrenzen geschrieben) - verkettete Stringaddition funktionieren jetzt richtig (Bsp.:str$ l("Teststring",3)+string$(8,"Test") - nur die string$-Funktion gibt nicht immer die richtige Anzahl strings zurück 08-05-2013 - mathematische Funktionen modifiziert, jetzt funktioniert das verkettete rechnen richtig (bsp.:FN SIN(FN LN(2.8)) - verkettete Stringoperationen möglich, string$-Funktion funktioniert jetzt auch korrekt, nachdem noch ein dritter Stringpuffer eingerichtet wurde - werde nun versuchen, die Token auszulagern, alle Basicbefehle zusammen belegen ca.200 longs und werden eigentlich nur zur Eingabe, SAVE, LOAD und LIST gebraucht - eine funktionierende Variante mit ausgelagerten Token existiert für den Fall, das ich noch 200 Longs brauche - Button-Lösch-Befehl in Bellatrix überarbeitet, jetzt optisch besser - Spielerfigur mit Bewegung und Positionsbackup-Restore hinzugefügt, funktioniert erstaunlicherweise hervorragend - Spritefiguren mit Bewegung und einstellbarer Geschwindigkeit hinzugefügt, fehlt nur noch eine Kollisionserkennung '#################################################### Version 2.003 ############################################################################################################### 10-05-2013 - Spritekollision funktioniert - für die Spielfeldgrenzen bzw. den für den Spieler erlaubten Pfad muss der Shadow-Bildschirmspeicher benutzt werden - Map D-schreibt die Map zusätzlich in den Bildschirm-Shadow-Speicher für Pfad-Abtastung der Spielerfigur - Player-Spielfeldeingrenzung funktioniert - Kollision mit festgelegten Tiles funktioniert, fehlt noch die Item-Verwaltung und die Feuer-Taste Funktion - COM-Befehl modifiziert um Befehle frei zu bekommen (COM S(1,57600), COM G, COM R) - Map-Speicher und Shadow-Bildschirmspeicher zu einem gemeinsamen MAP-Shadow-Bildschirmspeicher kombiniert (spart Platz im E-Ram und wird für die Item-Verwaltung gebraucht) - MAP-Befehl durch die Option C (Clear) erweitert, löscht den MAP-Shadow-Speicher - Mathematische Funktion FN PREC hinzugefügt um die Präzision der Nachkommastellen einzustellen (1-7) - Spieler-Itemverwaltung funktioniert - Sprite-Verfolgungsmodus integriert, fehlt vielleicht noch ein Distanzscanner !? - Lade-und Speicher-Prozentanzeige ersetzt die Punkteausgabe beim Laden und Speichern - Stringfunktion INSTR hinzugefügt (INSTR(Zeichenkette1,Zeichenkette2) überprüft, ob Zeichenkette1 vollständig in Zeichenkette2 vorhanden ist und gibt die Position des ersten Auftretens zurück - Code von überflüssigen Variablen gereinigt, dadurch ca.40 Longs gewonnen (noch frei 1425Longs) 26-05-2013 - Kollisionserkennung Player-Sprite korrigiert, funktioniert jetzt richtig (man konnte manchmal das Sprite überrennen ohne Kollision, das geht jetzt nicht mehr) - Für die Feuerfunktion hab ich noch keine Idee :-( - Item einsammeln funktioniert momentan nur mit gleichen Hintergrundfarben - damit das Item vom Feld verschwindet, muss man ein ersatz-Item definieren mit Player E(I1...I6) - momentan 1384 Longs frei 21-07-2013 - Fehler in Line-Funktion behoben (x und y vertauscht) - Fehler in Plot-Pixel behoben (x und y vertauscht) - Fehler im BYE-Befehl behoben, es konnte passieren, das nach Beendigung von TBasic nicht korrekt ins Root-Verzeichnis gewechselt wurde und die Reg.sys demzufolge nicht gefunden wurde, dies ist jetzt behoben - 1361 Longs frei 25-07-2013 - Fehler in der Array-Verarbeitung behoben (bei verschachtelten For-Next Füllschleifen wurde das Arrayfeld falsch errechnet, jetzt ist das Füllen von Arrays über For-Next-Schleifen möglich (durch die Routine get_array_value)) - 1356 Longs frei 28-07-2013 - Ersatz-Item-Verwaltung wieder entfernt, ist nicht praktikabel, lässt sich im Basic besser und flexibler programmieren - 1380 Longs frei 01-08-2013 - Bit-Operationen in FN-Funktion eingefügt Shift-left, Shift-right, Reverse, ODER, XODER,UND - Basic-Verzeichismarker hinzugefügt, jetzt sollte Basic aus jedem Unterverzeichnis funktionieren - HEX und BIN zur Ausgabe von Zahlenwerten im Hex-und Binärformat hinzugefügt ->PRINT HEX(92) -> 5C - 1262 Longs frei 15-08-2013 - Fehler in Laderoutine des Systemfonts behoben (beim Start aus Plexus heraus wurde der Systemfont nicht korrekt geladen) - 1270 Longs frei 16-08-2013 - Code optimiert ->1286 Longs frei 19-08-2013 - Korrektur Cog-Abfrage, es werden die freien und nicht die belegten Cogs angezeigt ->1286 Logs frei '############################################################ Version 2.100 ###################################################################################################### '# erste Unterstützung für Venatrix-und Sepia-Erweiterungskarte # '################################################################################################################################################################################# 29-09-2013 - erste Codeimplementierung für Venatrix Erweiterungskarte - erster Befehl für Venatrix ist Cogs (Print cogs4 zeigt die freien Cogs in Venatrix an) - 1266 Longs frei 20-10-2013 - PCF8574-Portfunktionen für Sepia und Venatrix-Board hinzugefügt, jetzt sind ein oder zwei Joystick's anschliessbar - SPI-SRAM-Funktion für Venatrix-Board verfügbar (die 23lv1024-Chips funktionieren nicht mit dem Winbond-Treiber, Austausch durch 23K256-Chips, dadurch 64kb zusätzlicher S-Ram Speicher nutzbar) - 1171 Longs frei 23-10-2013 - Portfunktionen in reg-ios als Standardfunktionen eingebaut, Unterstützung für Sepia und Venatrix-Board (Test Sepia steht noch aus) - Joystick-Abfrage eingebaut (beide Boards Sepia und Venatrix, Sepia-Test steht noch aus) - 1132 Longs frei 01-11-2013 - Venatrix-Port und Joystickfunktionen entfernt (2 IO-Boards macht keinen Sinn) - Sepia-Port und Joystickfunktionen eingebaut -> funktioniert - 1154 Longs frei 12-11-2013 - Port-Ping-Funktion für Sepia-Card hinzugefügt, damit können die Bausteine der Sepia-Karte auf vorhandensein gescannt werden - Venatrix-Portfunktionen entfernt, zwei Port-Erweiterungskarten macht keinen Sinn - 1151 Longs frei 21-11-2013 - Venatrix-Scan hinzugefügt um ein Einfrieren bei nicht angeschlossener Venatrix-Karte bei Ausführung des Befehls Cogs zu verhindern - 1136 Longs frei 01-12-2013 -Fehler in der Gtime und Gdate-Funktion behoben ->fehlender Rückgabewert -Poke und Peek erweitert, jetzt können auch word und long-werte geschrieben und gelesen werden -Fehler in der Klammerbehandlung behoben (Befehle mit Klammern erzeugten im Programmteil texec immer Fehler, jetzt nicht mehr) -XBUS-Funktion für die direkte Bus-Kommunikation hinzugefügt, -XBUS-Funktion kann byte, long und Strings übertragen und byte, longs empfangen (strings empfangen ist noch nicht möglich) -COGS-Befehl eingespart, ist jetzt mit dem XBUS-Befehl möglich -so ist ein Zugriff auf Systemfunktionen möglich,für zukünftige Projekte -1058 Longs frei 02-12-2013 -XBUS-Funktion mit der Rückgabe von Strings erweitert, der String muss an eine Stringvariable übergeben werden, -Printausgabe funktioniert nur mit Zahlenwerten, mal sehen, ob mir noch was einfällt -Call-Befehl erschaffen, hiermit sind festgelegte Systemaufrufe möglich (z.Zt.9) -durch den Call-Befehl wurden die Befehle FREE und VER eingespart ->Aufruf jetzt über Call-Befehl -942 Longs frei 04-12-2013 -etwas Codeoptimierung -948 Longs frei 05-12-1013 -wieder etwas Codeoptimierung -etwas optische Kosmetik -964 Longs frei 06-12-2013 -Edit-Funktion erweitert, jetzt ist der Editor solange aktiv, bis mit ESC der Edit-Modus verlassen wird -Code etwas kompakter gestaltet und Optikfehler beseitigt -Funktion Getline auf Case-Abfrage umgestellt ->10 Longs eingespart -Fehler in der DIR-Ausgabe behoben -971 Longs frei 07-12-2013 -Fehler in Editfunktion behoben (Programmende-Kennung wurde fälschlicherweise als Zeilennummer angezeigt) -I2C_Funktionen (start,stop read und write) hinzugefügt, funktioniert aber noch nicht so richtig ?! -927 Longs frei 08-12-2013 -So wie es aussieht, ist die I2C-Funktion warscheinlich zu langsam, um richtig zu funktionieren, mehr als das anpingen eines Bus-Teilnehmers funktioniert nicht :-( -I2C-Funktionalität auf Eis gelegt -974 Longs frei 14-12-2013 -dev/tty.SLAB_USBtoUART Treiber für billigeren PropPlug in BST aktiviert '############################################################ Version 2.101 ###################################################################################################### 23-12-2013 -Ersatzitem-Verwaltung wieder eingebaut, das Handling ist besser beim Itemsammeln -halbwegs funktioniert die Itemsammelei, nur das Ersetzen mit Tiles der richtigen Farbe klappt noch nicht richtig -Notenbefehl NT in NOTE umgetauft, damit wird die mathematische Funktion FN INT korrekt dargestellt -Momentan noch Probleme mit der Inkey-Funktion, diese muss zum Initialisieren 2 mal aufgerufen werden, sonst befindet sich noch ein Zeichen im Puffer -bin noch am knobeln, wie ich das löse. -952 Longs frei 25-12-2013 -Lade-und Speicheranzeige für BAS-Dateien ist jetzt ein Fortschrittsbalken am untersten Bildschirmrand (mit Backup und Restore) -Call-Befehl wieder entfernt, FREE-Befehl wieder eingebaut ->frisst zuviel Speicher -neue Befehle: Backup und Restore für die Sicherung und Restaurierung von Bildschirmbereichen -Versionsanzeige mit dem Befehl VER gibt jetzt eine Floatnummer zurück, welche die genaue Revision anzeigt -16kB User-Speicher zur freien Verfügung eingerichtet Adressbereich $7A000-$7DFFF (499712-516095) -972 Longs frei 27-12-2013 -Window-Befehl zusammengefasst, mit mehr Funktionalität ausgestattet und nach Bellatrix verschoben, dadurch Code und zwei Befehle eingespart -Befehle TBAR und TWIN entfernt, wird jetzt durch den Win-Befehl ersetzt -MBox-Befehl umgebaut, dadurch Code gespart -mit dem Window-Befehl kann auch abgefragt werden, welche Titel- oder Pfeiltasten mit der Maus gedrückt wurden, Rückgabe eines Wertes von 1-4 -Window-Befehl erweitert mit der Möglichkeit einen Titelzeilentext direkt anzugeben -jetzt wird noch der Button-Befehl in der Optik entsprechend geändert -1072 Longs frei '############################################################ Version 2.102 ###################################################################################################### 28-12-2013 -Button-Befehl komplett überarbeitet -> Bella ist nur noch für die Maus-Abfrage zuständig -Icon-Befehl hinzugefügt, damit ist es möglich Icon-Buttons zu erstellen -Abfrage der Buttons erfolgt mit MB 0 (Maus-Tasten-Abfrage), Rückgabe ist die nummer des Buttons -968 Longs frei 29-12-2013 -Anzahl der möglichen Button auf 32 erhöht -ende-Routine gekürzt, das Laden der reg.sys ist in reg-ios schon drin -CLS-Befehl gekürzt, durch die Fensterverwaltung ist es nicht mehr nötig nur bestimmte Bereiche zu löschen -SDATE-Befehl durch setday erweitert dadurch ist der Befehl SDOW überflüssig -BLOAD-Befehl mit Stringübergabe erweitert -XBUS-Routine geschrumpft, muss noch kleiner werden :-( -989 Longs frei 30-12-2013 -Adressübergabe für Tileset-Verwaltung optimiert -noch etwas Codeoptimierung (ram.spin verkleinert->14 Longs eingespart) :-) -1055 Longs frei -werde den Buttonbefehl zusammenfassen und als Text,Icon-Button ausführen, dadurch wird ein Befehl eingespart und noch mehr Funktionalität erreicht. -aber warscheinlich erst im nächsten Jahr ;-) 31-12-2013 -Doch noch etwas gemacht :-) -Buttonbefehl zusammengefasst es sind Text und Icon-Button's möglich -so, jetzt ist Silvester !!!!!! -1058 Longs frei '############################################################ Version 2.103 ###################################################################################################### 01-01-2014 -Neues Jahr, neues Glück -Fenster-und Buttonverwaltung weiter optimiert durch Schrumpfung der Stringeingabe -Fenster-,Button-,Xbus-,Map- Routinen mit einheitlicher Stringeingabe versehen, dadurch massiv Platz gespart -Fehler in der Fenster und Buttonverarbeitung behoben -noch einige Probleme bei der Stringübergabe (z.Bsp.Xbus-Funktion mit str$ l( oder so -Fehler liegt in der XBUS-Funktion -1107 Longs frei 02-01-2014 -Fehler in der XBUS-Funktion gefunden und behoben -Xbus-Funktion funktioniert jetzt auch direkt mit Print (z.Bsp.bei der Rückgabe von Strings) -Stringfunktionen weiter zusammengefasst, so ist mehr Funktionalität bei weniger Speicherverbrauch möglich -Print-Routine gekürzt, diverse Routinen mit der neuen Stringverarbeitung versehen, dadurch wieder Platz geschaffen -1182 Longs frei 03-01-2013 -Möglichkeit der individuellen Windowgestaltung hinzugefügt, es ist nun möglich, die Tiles aus denen die Fenster erstellt werden auszutauschen -somit kann jeder Zeichensatz zur Fenstergestaltung benutzt werden und die Kompatibilität zu Plexus (Grafiktreiber) wird möglich -einfach eine neue Tilenummer in den E-Ram ab Adresse $7E500 poken und Win r aufrufen, ab sofort sehen die Fenster entsprechend anders aus -um zu den Systemfont-Einstellungen zurück zu kommen, muss man nur STILE15 eingeben -1133 Longs frei '############################################################ Version 2.104 ###################################################################################################### 04-01-2013 -Ersatz-Item-Tiles funktionieren jetzt korrekt, erreicht wurde dies, indem das Backuptile, auf dem der Player steht durch das Ersatzitem ausgetauscht wird, -dadurch ist keine weitere Behandlung im Spielprogramm nötig -die Eingabe der Ersatzitems hat sich allerdings geändert, nun wird jedes Ersatzitem als einzelner Befehl eingegeben (Nr,Tilenr,Farbe1,Farbe2,Farbe3) -1106 Longs frei 05-01-2014 -Fensterverwaltung in Bella überarbeitet, bei Klick auf ein Fensterbutton wird die Fensternummer*10+Buttonnummer zurückgegeben -Beispiel:Schließen Symbol im Fenster 2 gibt 22 zurück (20 für Fenster2 und 2 für Fensterbutton2) -dadurch wird es möglich, mehrere Fenster gleichzeitig auf Funktionen abzufragen -1106 Longs frei 06-01-2014 -Printfont-Routine nach Bella ausgelagert, dadurch besserer Bezug der Font-Funktion auf die Fenster-Parameter -Button-Funktion entsprechend angepasst -MBOX-Befehl entfernt, kann mit dem WIN-Befehl erzeugt werden -Koordinatenübergabe der Font-Funktion modifiziert,abhängig vom Fenstertyp -Fenstertyp 1 und 3 können bis an den Rand schreiben, Fenstertyp 3 hat nur einen y-Offset, alle anderen haben zusätzlich noch einen x-Offset -durch die ganzen Optimierungen sind nun wieder 7 Basic-Befehle frei (für Neuerungen) -1153 Longs frei 07-01-2014 -Fehler in der Feldberechnung von Arrays entdeckt (verdammt)-> aber gefunden und behoben :-) -Wenn der Ram-Speicher noch reicht richte ich für jedes Fenster eine Backup-Area ein kostet 50400 Bytes(möglicher Bereich ab $EE800 ->ca.70kb frei) -Backup-Area für Fenster eingerichtet, ist aber nur spartanisch. Funktioniert nur korrekt, wenn überlappte Fenster von oben beginnend gelöscht werden -wird zuerst ein verdecktes Fenster gelöscht, entstehen Fehldarstellungen, würde mich mal interessieren, wie die Profi's das machen -Restore-Funktion bei Fenstern abschaltbar mit WIN R(Fensternummer,Restore-> 0=Nein 1=Ja) -1101 Longs frei 08-01-2014 -Backup und Restore für die Fenster wieder entfernt, verbraucht zuviel Speicher und macht die Fensterfunktion zu langsam, deshalb nur verwenden, -wenn man die Funktion auch wirklich braucht -Fehler in der Subtraktions-Routine entdeckt, man musste immer ein Freizeichen zwischen den Operatoren lassen, damit die Subtraktion funktionierte -rechnet aber immer noch falsch bei z.Bsp. -10 - -5, werden die Zahlen in Variable gepackt funktioniert es !? seltsam :-( -Fehler offensichtlich gefunden in Routine PRI FACTOR wurde expr(0) gegen factor ausgetauscht (bei der Vorzeichenabfrage "-" und der Absolutwertabfrage "!") -jetzt sind die Ergebnisse korrekt auch bei direkter Eingabe :-) -jetzt scheinen die Ergebnisse auch genauer zu sein !?! -1152 Longs frei '############################################################ Version 2.105 ###################################################################################################### 09-01-2014 -Funktion MKFILE zum Erzeugen von Dateien hinzugefügt, wird für WRITE benötigt (ist ja doof, wenn man in eine Datei schreiben will, die noch garnicht existiert) -1136 Longs frei 10-01-2014 -Sid-Übertragungsprotokoll in Administra zusammengefasst, so müssen die Daten für die zwei Sid-Kanäle nicht doppelt übertragen werden -Übertragung erfolgt nur einmal und wird in Administra an beide Sid-Cogs weitergeleitet, das spart wieder Platz -sicherheitsabfrage für SDate und STime entfernt -> ist in reg-ios schon drin -LoadTileToRam-Routine und Mousetile-Routine zusammengefasst ->10 Longs -1273 Longs frei :-) '############################################################ Version 2.106 ###################################################################################################### 11-01-2014 -Beginn des Einbaus einer DATA-Funktion -Zahlenwerte lesen funktioniert schon -1129 Longs frei 12-01-2014 -DATA-Funktion mit DATA,READ,RESTORE integriert RESTORE-Funktion der Fenster in RECOVER umbenannt, Dateifunktion READ in FREAD umbenannt -Funktion muss aber noch kleiner werden,135 Longs ist zuviel :-( -Fehler in der INPUT-Routine entdeckt, es war immer ein zweiter Eingabedurchlauf nötig, um die Variable zu übernehmen -Fehler umgangen, indem nur einfache Variablen verwendet werden dürfen, damit ist das Array-Feld=0,0,0 ->geht zur Zeit nicht anders :-( -Fehler in der CHDIR-Funktion durch die String-Zusammenfassung ->behoben -1138 Longs frei 13-01-2014 -Routinen INPUT,WRITE,FREAD überarbeitet, jetzt ist die Verwendung von Arrays möglich, funktioniert auch korrekt -WRITE-ROUTINE geschrumpft, wieder etwas eingespart -1144 Longs frei 14-01-2014 -Write-Routine zusammengefasst und gekürzt -Input-Routine verändert, damit mehrfach-Strings eingegeben werden können -dabei ist aber eine bestimmte Reihenfolge nötig, erst Strings, dann Zahlen -umgekehrt führt zu Fehlern, mal sehen, ob ich das lösen kann -zumindest ist dadurch die INPUT-Routine kleiner geworden, schafft wieder Platz -1171 Longs frei 15-01-2014 -INPUT-Routine funktioniert jetzt korrekt, auch mit gemischter Array-Verwendung -FREAD-Routine erweitert für gemischte Array-Verwendung -weiter zusammengefasst (Array einlesen PRI Get_Input_Read wird jetzt von beiden Befehlen genutzt, das spart wieder Platz) -Durch Umbau der INPUT und FREAD-Routine enfällt das Untersuchen der Zeile durch Tokenize->dadurch werden die beiden Routinen erheblich schneller -DATA-Verarbeitung zusammengefasst durch Get_Input_Read, wieder etwas gespart -WICHTIG !!!! DATA darf nicht in der ersten Programmzeile stehen, das erzeugt Fehler (falsche Restorepointer-Interpretation) -1198 Longs frei 16-01-2014 -Neuer Befehl FUNC zur Erstellung eigener Funktionen begonnen, -Funktion wird mit FUNC variable(variable)=[Rechenoperation] definiert und im Ram abgelegt ->funktioniert auch schon -26 Funktionen (a..z) sind möglich -nun muss die Funktion nur noch aus dem Ram gelesen und mit den entsprechenden Variablen interpretiert werden -1142 Longs frei 17-01-2014 -Befehl FUNC im Testlauf, bisher funktioniert er sehr gut -es sind bis zu 26 Funktionen definierbar (a-z), diese werden im RAM ab Adresse $7E600 abgelegt -************************************************************************************************* -***** bis auf die neuen Befehle in der Testphase, ist der vorläufige Endstand erreicht :-) ****** -***** ab jetzt wird nur noch optimiert und kleinere Änderungen vorgenommen,falls nötig. ****** -***** Lediglich 2 Befehle sind noch frei für Erweiterungen, ansonsten sollte der Befehlsumfang ** -***** für einen Einplatinenrechner mehr als ausreichend sein und alle nötigen Funktionen ****** -***** vorhanden sein. ****** -************************************************************************************************* -1145 Longs frei -ich konnte es doch nicht lassen, FUNC jetzt mit bis zu zwei Operatoren möglich, warscheinlich der einzigste Basicinterpreter in der Retro-Ecke, der das kann ;-) -dabei ist aber zu beachten, das sich die Operanden nicht gegenseitig überschreiben(durch Doppelverwendung) -wenns mich juckt, mach ich bis zu 4 Operanden möglich, in der E-technik braucht man meistens mindestens 3 Variablen, um Berechnungen anzustellen -1110 Longs frei -sysmode-Variable der RAM-Aufrufe in reg-ios entfernt und im Programm entsprechend geändert, da die Ram-Disk nicht benutzt wird, spart das 40 Longs -Fehler in der Klammer-Behandlung behoben, Rechenoperationen erzeugten bei bestimmten Klammerrechnungen Fehler -1155 Longs frei '############################################################ Version 2.107 ###################################################################################################### 18-01-2014 -LOAD-Funktion erweitert, es ist jetzt möglich, Programmzeilen nachzuladen (MERGE-Funktion) -dabei gibt es zwei Modi, entweder nur nachladen oder (z.Bsp.im Programm) nachladen und Programm fortsetzen -LOAD"Dateiname.EXT",2 nur nachladen, LOAD"Dateiname.ext",3 nachladen und Programm fortsetzen -jetzt könnte man noch eine SAVE-Möglichkeit schaffen, bei der nur ein bestimmter Programmbereich (Start-Zeile bis End-Zeile) gespeichert wird -Fehlerabfang in INPUT-Routine eingebaut, Input kann mit ESC abgebrochen werden -Es fehlt aber noch eine Fehlerabfrage, wenn ein Mehrstelliges Input-Feld nicht mit der vorgesehenen Anzahl Daten versorgt wurde, wie mach ich das nun wieder? :-( -1152 Longs frei 19-01-2014 -Diverse Sicherheitsabfragen bei INPUT,FREAD,READ eingebaut, jetzt sollte die Dateneingabe bei Fehlern eigentlich sicher abgefangen werden -hat aber etwas Platz gekostet -1132 Longs frei -Array-Befüllung zusammengefasst, dadurch wieder ein wenig Platz gewonnen -Home-Befehl entfernt, kann mit POS0,0 genauso erreicht werden, dadurch sind jetzt wieder 3-Befehle frei -Befehle MX,MY und MZ zu MGET(1..3) zusammengefasst, 2 Befehle gewonnen, jetzt sind 5 Befehle frei -Erweiterung der DIM-Funktion, jetzt können diverse Dimensionierungen durch komma getrennt eingegeben werden und müssen nicht einzeln vorgenommen werden -1162 Longs frei 20-01-2014 -Out of DATA Error , wenn das Ende des Datenfeldes erreicht ist eingefügt -diverse Fehlerabfragen in den Routinen Window,Button,Playersettings,Port, Map und Spritesettings nachgerüstet -FUNC-Routine etwas gestrafft und Fehlerabfragen für zuviel oder zuwenig Operanden eingefügt -1157 Longs frei 22-01-2014 -Math-Funktion umgebaut, dadurch Platz gespart, obs jetzt schneller ist, kann ich nicht sagen -mathematische Funktion MIN und MAX entfernt, kann man auch mit > oder < lösen, dadurch 19 Longs gewonnen -1199 Longs frei 23-01-2014 -Noch etwas Code eingespart -Goto-Schleifendurchlauf gestrafft -1211 Longs frei 24-01-2014 -Math-Funktion Floor und Ceil entfernt, ich glaube soetwas braucht man eigentlich nicht -Speicherschreibroutine für Fenster-Tiles (WIN-Funktion) umgebaut, dadurch viel kleiner geworden :-) -Ladebalken-Funktion umgebaut, Ladebalken nur sichtbar bei normaler Ladefunktion, bei Nachladefunktion nicht sichtbar (für Programmablauf besser) -Lade-und Save-Balken einen eigenen Backup-Speicher von 256 Bytes zugewiesen $7FD00 '....$7FDFF, verhindert Überschreibungen durch User -1248 Longs frei 25-01-2014 -Inkey-Problem mit der doppelt nötigen Abfrage am Anfang behoben, jetzt ist der Tastaturpuffer nach dem Start wirklich leer -Print-Routine auf Case umgestellt -1253 Longs frei 26-01-2014 -dwdF32.spin auf die im Basic verwendeten Funktionen gekürzt, somit wird wieder etwas Platz geschaffen -> in BasF32.spin umbenannt -Division durch 0-Fehler durch entsprechende Abfrage abgefangen, führte zum Hängenbleiben des Hive -FUNC-Funktion auf bis zu vier Operanden erweitert :-), das sollte bei Retro-Basic-Interpretern einmalig sein -Window-Funktion intern angepasst, um Kompatibilität zu Plexus herzustellen -1273 Longs frei - jetzt ist erst mal Schluss!!! 29-01-2014 -Fehler in der Math-Funktion behoben (tok-abfragezähler begann bei -1 statt bei null, dadurch wurden die falschen Funktionen aufgerufen) -1272 Longs frei 02-02-2014 -Float.spin gegen FME.spin ausgetauscht, ist zwar langsamer aber genauer und viel kleiner -Funktionen Arcus-Sinus und Arcus-Cosinus wieder aufgenommen -Pause-Funktion geändert der Wert 1 repräsentiert 1mS ->1000 mS=1sek -Befehl FORM für metrische Zahlenausgabe hinzugefügt Bsp.Form"VA" ->Print 12000 ->Ausgabe 12.000 kVA -Rückkehr zur Standard-Zahlenausgabe ->FORM"0" -getanynumber umgebaut, jetzt ist die Verwendung von Exponenten in Zahlen möglich bsp.2.4e+13 -gültiger Zahlenbereich 1E+38 bis 1E-38 -Anpassung der Zahlenausgabe, ab 7-stelliger Zahlen wird mit Exponent ausgegeben, es gibt aber noch Fehler, wenn mehr als 9 Stellen angegeben werden -daher müssen ab der 9.Stelle die Zahlen in Exponentialschreibweise eingegeben werden, sonst sind die Ausgaben fehlerhaft!!! -Befehl FORM wieder entfernt, kollidiert mit der Exponent-Ausgabe -1341 Longs frei 04-02-2014 -mathematische Funktion FRAC entfernt -mathematische Funktion EXP entfernt, kann jetzt direkt eingegeben werden -Fehlerabfrage in mathfunction korrigiert -Fehler in der STRING$-Funktion behoben -1355 Longs frei 07-02-2014 -mathematische Funktion DEG und RAD hinzugefügt zur Umrechnung von Bogenmaß in Winkelgrad und umgekehrt -Renumber-Funktion zum Neunummerieren der Basic-Zeilen angefangen -RENUM Startzeile, Endezeile,Neue Startzeile,Schrittweite -oder RENUM ohne Parameter nummeriert alle Basiczeilen, erste neue Zeilennummer lautet 10 mit Schrittweite 10 -Sprungadressen (Goto,Gosub)werden noch ignoriert, mal sehen, ob das lösbar ist? 08-02-2014 -das Neunummerieren der Sprungadressen ist zu umfangreich, da sie als String gespeichert werden, müsste bei einer anderen Länge des Zeilennummern-Strings -die gesamte Basiczeile neu in den Speicher eingepasst werden, das ist einfach zu umständlich und würde bei großen Programmen sehr viel Zeit -und die entsprechende Routine zu viel Speicher kosten, Sprungziele müssen also selbst angepasst werden (wie beim C64-Basic)->besser als nichts -1314 Longs frei 12-02-2014 -Probleme beim Laden des Basic-Grafiktreibers aus älteren Plexus-Versionen -Fehler lag im Administra-Code (behoben), die Sepia-Karten-Abfrage muss beendet werden, bevor ein neuer Administra-Code gebootet wird -Verzeichniswechsel noch nicht perfekt, wird noch angepasst -1318 Longs frei 16-02-2014 -Routine XBUS geändert lookup durch case-Abfrage ersetzt bei putchar und putlong, Lookup funktionierte nicht immer korrekt -Anpassung für die Printausgabe von numerischen Werten aus der XBUS-Funktion -1305 Longs frei 21-02-2014 -CHDIR-Befehl mit Dirmarkern geändert, jetzt kann man in jedes Verzeichnis springen -dadurch ist das uneingeschränkte Bewegen in den Verzeichnissen möglich -überflüssige Variablen entfernt -1308 Longs frei ---> ******* Version veröffentlicht als TRIOS-BASIC 2.1 ********** '############################################################ Version 2.2 ###################################################################################################### 22-02-2014 -Note2Freq-Funktion nach Administra ausgelagert, existiert dort schon und muss nicht hier auch noch vorhanden sein -dadurch wieder etwas Platz gespart -1322 Longs frei 01-03-2014 -Durch die Arbeiten an Plexus, wurde ein neues Feature geschaffen, es ist aus Plexus heraus möglich, Basic mit Startparametern zu versehen -d.h. es können gleich beim Start beliebige Basic-Instruktionen übergeben werden -zBsp.könnte man automatisch beim Start ein bestimmtes Programm laden oder den Bildschirm löschen und eine eigene Begrüßungs-Meldung ausgeben -1291 Longs frei 24-03-2014 -Puffer im Seriell Treiber standardmäßig auf 128 Byte eingestellt -1259 Longs frei 08-04-2014 -zwei neue STR$ Funktionen eingefügt str$ d wandelt alle Buchstaben im String in Kleinbuchstaben um -str$ u wandelt alle Buchstaben eines Strings in Großbuchstaben um -1227 Longs frei 09-04-2014 -Umwandlungs-Funktion Groß-Klein (str$ g, str$ k) zusammengefasst -1232 Longs frei 13-04-2014 -Timer-Objekt etwas gestrafft und Timer-Auflösung beim Start auf 1ms geändert -so entspricht der Timer-Startwert von 1000 einer Sekunde (Timer s(1,1000)-startet Timer1 mit dem Wert 1000=1Sek) -damit ist die Eingabe analog zum Pausen-Wert ->Pause 1000 entspricht ebenfalls einer Sekunde -1232 Longs frei 16-04-2014 -Kopierfunktion von Speicherbereichen im E-Ram hinzugefügt, dadurch wird das Einfügen von Zeilen in ein Bestehendes Programm schneller -entsprechende Routine im Basic geschrumpft,hat aber trotzdem einige Longs gekostet :-( -1216 Longs frei 17-04-2014 -ram.spin wurde weiter geschrumpft -LAN-Funktionen wurden in admsid eingebaut, könnten jetzt im Basic eingefügt werden -reg-ios mit glob-con zusammengebracht. -1220 Longs frei 20-04-2014 -einige kleine Veränderungen im Code um etwas Platz zu schaffen (Abfragen durch Bitmanipulationen ersetzt) -READPARAMETER-Aufruf von Doline nach init verschoben, so wird die Abfrage auf Parameter nur einmal beim Start von Basic durchgeführt -1233 Longs frei 22-04-2014 -ram-spin mit neuer Funktion (Zeile überspringen) erweitert und Basic-Code entsprechend angepasst -binsave und Map-save mit Block-savebefehl geändert -Fehler in der Zeilen-Bearbeitung behoben, durch die PASM-Routinen wurden manche Adressen falsch berechnet (Kopieren von Speicherbereichen) -Fehler in der seriell-Übertragung behoben, es wurden bei Zahlenausgaben zuviele Bytes gesendet -Fehler in der Dateibehandlung behoben, der Appendbefehl hat in adm-fat keine Wirkung, Funktion in admsid.spin nachgebildet -Konvertierung der OPEN-Modes (a/w/r) in Großbuchstaben nach admsid.spin verlagert (braucht man ja öfter :-)), dadurch wieder etwas Platz gewonnen -eine case-Abfrage in BUS_Funktionen durch lookup ersetzt -mathematische Funktion DEG und RAD wieder entfernt, kann man leicht selbst ausrechnen) -1274 Longs frei 29-04-2014 -SID-Soundfunktionen unter einem gemeinsamen Befehl SID +Option zusammengefasst, interne Soundbefehls-Verarbeitung gestrafft -dadurch sind 10 Basic-Befehle frei geworden :-) -1276 Longs frei 30-04-2014 -Syntax-Hervorhebung kreiert, sieht cool aus, hat aber gekostet -1195 Longs frei 01-05-2014 -Syntax-Hervorhebung weiter überarbeitet -1218 Longs frei -Laden,Speichern und Merge-Funktion geschieht jetzt binär -es gibt eine Import/Export-Funktion für Basic-Textdateien, diese wurde extern realisiert -gespeichert und geladen wird ab sofort generell in binärer Form, das spart Platz und ist auch erheblich schneller -Timerfunktion aufgebohrt, jetzt ist Timer 9-11 jeweils ein Counter -Syntaxhervorhebung modifiziert, DATA-Zeilen werden jetzt Orange dargestellt -optische Änderung bei Aufruf der Hilfefunktion, es wird der Bildschirm beim Start der Hilfe gesichert und nach Beendigung wieder hergestellt -dadurch entsteht der Eindruck, das die Hilfe im Hauptprogramm integriert ist -Import-und Export-Funktion sind optisch integriert, es wird der Eindruck vermittelt, das man im Hauptprogramm bleibt -1325 Longs frei 02-05-2014 -DIR-Funktion gekürzt, die Parameter x und y entfernt (kann mit POS x,y erfolgen) -Hinweiszeile entfernt, die Ausgabe richtet sich nach der aktuellen x,y-Position -dadurch ist die Ausgabe optisch besser, da nicht in den vorhandenen Bildschirm sondern fortlaufend geschrieben wird -außerdem wurde dadurch wieder Platz geschaffen ca.50Longs -Syntaxhervorhebung um die Klammern [ und ] erweitert -1375 Longs frei 08-05-2014 -Load und Save-Teil geschrumpft, Handbuch entsprechend der bisher durchgeführten Änderungen angepasst -1377 Longs frei 11-05-2014 -Import.sys durch Abfrage auf gültige Datei ergänzt, da sich sonst der Hive aufhängt, wenn zum bsp. versucht wird eine Binärdatei zu importieren. -reg-ios und Seriell-Treiber als spezielle Basic-Varianten gespeichert, da der Seriell-Puffer im Basic kleiner sein soll (Speicherplatz sparen) -REM Kommentare haben jetzt ebenfalls eine eigene Farbe -Fehler in Import-Routine behoben (PI und Wurzelzeichen wurden als fehlerhafte Zeichen interpretiert) -1370 Longs frei 13-05-2014 -Befehl PUT kreiert für die direkte Zeichenausgabe mit x-y Koordinaten, hier wird die aktuelle Zeichen-und Hintergrundfarbe benutzt -ist etwas schneller als pos x,y + Print -Fehler in der DIR-Routine behoben (im Modus 0 wurde nichts gelesen) -DIR-Routine gestrafft -1369 Longs frei 16-05-2014 -################### Version 2.2 veröffentlicht #################### '############################################################ Version 2.3 ###################################################################################################### 19-05-2014 -Basic-Runtime-Modul geschaffen, das erlaubt die direkte Ausführung von Basicdateien aus Plexus heraus -1369 Longs frei 21-05-2014 -Hilfe zur Onlinehilfe umgebaut, dadurch entfällt der Aufruf als externe Datei und spart die Arbeit an zwei Programmen -HELP zeigt alle verfügbaren Befehle auf dem Bildschirm an -HELP A zeigt alle mit A beginnenden Befehle an -HELP BEFEHL zeigt die Hilfe zum entsprechenden Befehl an -Hilfetexte angepasst -Hilfetextausgabe farbig (blau) gestaltet -1313 Longs frei 23-05-2014 -DIR-Ausgabe etwas angepasst, Verzeichnisse werden jetzt in einer anderen (dynamischen) Farbe angezeigt -Ausgabe des HELP Befehls ohne Parameter mit Tastenabfrage ergänzt um ein überscrollen der Ausgabe zu verhindern (alle Befehle passen nicht auf den Bildschirm) -ausserdem abfrage auf x-position um zu verhindern, das ein Befehl umgebrochen wird und so schlechter lesbar ist. -1304 Longs frei --------------------------------------------------------------------------------------------------------- }} obj ios :"reg-ios-bas" Fl :"FME" FS :"BasFloatString2" TMRS :"timer" gc :"glob-con" con _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 version = 2.303 fEof = $FF ' dateiende-kennung linelen = 85 ' Maximum input line length quote = 34 ' Double quote caseBit = !32 ' Uppercase/Lowercase bit point = 46 ' point STR_LEN = 34 ' Stringlänge von Stringvariablen in Arrays FIELD_LEN = 512 ' Array-Feldgröße (max Feldgröße 8x8x8 -> Dim a(7,7,7) DIR_ENTRY = 546 ' max.Anzahl mit DIR-Befehl gefundener Einträge STR_MAX = 41 ' maximale Stringlänge für Printausgaben und font DPL_CNT = 1200 ' Map-und Bildschirm-Shadow-Speicher-Zähler (40Spalten*30Zeilen=1200-Tiles) '*****************Speicherbereiche********************************************** maxstack = 20 ' Maximum stack tiefe fuer gosub userPtr = $1FFFF ' Ende Programmspeicher 128kb TMP_RAM = $20000 '....$3FFFF ' Bearbeitungsspeicher 128kb (fuer die Zeileneditierung bzw.Einfuegung von Zeilen) TILE_RAM = $40000 '....$667FF ' hier beginnt der Tile-Speicher fuer 14 Tiledateien SYS_FONT = $66800 '....$693FF ' ab hier liegt der System-Font 11kb MOUSE_RAM = $69400 '....$6943F ' User-Mouse-Pointer 64byte DIR_RAM = $69440 '....$6AFFF ' Puffer fuer Dateinamen 7103Bytes fuer 546 Dateinamen VAR_RAM = $6B000 '....$77FFF ' Variablen-Speicher fuer Array-Variablen a[0...511]-z[0...511] (13312 moegliche Variablen) MAP_RAM = $78000 '....$79C27 ' Shadow-Display (Pseudo-Kopie des Bildschirmspeichers) 'FREI_RAM $79C28 .... $79FFF ' freier RAM-Bereich 984 Bytes auch für Shadow-Display DATA_RAM = $7A000 '.... $7DFFF ' 16kB DATA-Speicher BUTT_RAM = $7E000 '.... $7E4FF ' ca.1kB Button Puffer WTILE_RAM= $7E500 '.... $7E5FF ' Win-Tile Puffer hier können die Tiles, aus denen die Fenster gebaut werden geändert werden FUNC_RAM = $7E600 '.... $7EFFF ' Funktions-Speicher, hier werden die selbstdefinierten Funktionen gespeichert ERROR_RAM = $7F000 '....$7FAFF ' ERROR-Texte DIM_VAR = $7FB00 '....$7FBFF ' Variablen-Array-Dimensionstabelle DIM_STR = $7FC00 '....$7FCFF ' String-Array-Dimensionstabelle BACK_RAM = $7FD00 '....$7FDFF ' BACKUP RAM-Bereich 256 Bytes für Ladebalken 'Frei-Ram = $7FE00 ....$7FEFF ' noch freier Bereich 256 Bytes PMARK_RAM = $7FFF0 ' Flag für Reclaim Wert= 161 BMARK_RAM = $7FFF1 ' Flag für Basic-Warm-Start Wert= 121 SMARK_RAM = $7FFF2 ' Flag für übergebenen Startparameter Wert = 222 STR_ARRAY = $80000 '....$EE7FF ' Stringarray-Speicher USER_RAM = $EE800 '....$FFEFF ' Freier Ram-Bereich, für Anwender, Backup-Funktion usw. ADM_SPEC = gc#A_FAT|gc#A_LDR|gc#A_SID|gc#A_LAN|gc#A_RTC|gc#A_PLX'%00000000_00000000_00000000_11110011 '***************** Button-Anzahl ************************************************ BUTTON_CNT = 32 'Anzahl der möglichen Button '******************Farben ******************************************************** #$FC, Light_Grey, #$A8, Grey, #$54, Dark_Grey #$C0, Light_Red, #$80, Red, #$40, Dark_Red #$30, Light_Green, #$20, Green, #$10, Dark_Green #$1F, Light_Blue, #$09, Blue, #$04, Dark_Blue #$F0, Light_Orange, #$E6, Orange, #$92, Dark_Orange #$CC, Light_Purple, #$88, Purple, #$44, Dark_Purple #$3C, Light_Teal, #$28, Teal, #$14, Dark_Teal #$FF, White, #$00, Black '*****************Tastencodes***************************************************** ENTF_KEY = 186 bspKey = $C8 ' PS/2 keyboard backspace key breakKey = $CB ' PS/2 keyboard escape key fReturn = 13 fLinefeed = 10 KEY_LEFT = 2 KEY_RIGHT = 3 KEY_UP = 4 KEY_DOWN = 5 MIN_EXP = -999999 MAX_EXP = 999999 var long sp, tp, nextlineloc, rv, curlineno, pauseTime 'Goto,Gosub-Zähler,Kommandozeile,Zeilenadresse,Random-Zahl,aktuelle Zeilennummer, Pausezeit long stack[maxstack],speicheranfang,speicherende 'Gosub,Goto-Puffer,Startadresse-und Endadresse des Basic-Programms long forStep[26], forLimit[26], forLoop[26] 'Puffer für For-Next Schleifen long prm[10] 'Befehlszeilen-Parameter-Feld (hier werden die Parameter der einzelnen Befehle eingelesen) long gototemp,gotobuffer,gosubtemp,gosubbuffer 'Gotopuffer um zu verhindern das bei Schleifen immer der Gesamte Programmspeicher nach der Zeilennummer durchsucht werden muss long datapointer 'aktueller Datapointer long restorepointer 'Zeiger für den Beginn des aktuellen DATA-Bereiches long num1,num2 'Puffer für mathematische Funktionen long usermarker,basicmarker 'Dir-Marker-Puffer für Datei-und Verzeichnis-Operationen word tilecounter 'Zaehler fuer Anzahl der Tiles in einer Map word filenumber 'Anzahl der mit Dir gefundenen Dateien word var_arr[3] 'temp array speicher varis-funktion für direkten Zugriff word var_tmp[3] 'temp array speicher varis-funktion für zweite Variable (in pri factor) um Rechenoperationen u.a. auszuführen word var_temp[3] 'temp array speicher erst mit dem dritten Speicher funktioniert die Arrayverwaltung korrekt byte workdir[12] 'aktuelles Verzeichnis byte fileOpened,tline[linelen] 'File-Open-Marker,Eingabezeilen-Puffer byte debug 'debugmodus Tron/Troff byte cursor 'cursor on/off byte win 'Fensternummer byte farbe,hintergr,cursorcolor 'vorder,hintergrundfarbe und cursorfarbe byte file1[12],dzeilen,xz,yz,buff[8],modus 'Dir-Befehl-variablen extension[12] byte volume,play 'sidcog-variablen byte xtiles[16] 'xtiles fuer tilenr der Tile-Dateien ' byte ytiles[16] 'ytiles fuer tilenr der Tile-Dateien byte str0[STR_MAX],strtmp[STR_MAX] 'String fuer Fontfunktion in Fenstern byte aktuellestileset 'nummer des aktuellen tilesets byte font[STR_MAX] 'Stringpuffer fuer Font-Funktion und str$-funktion byte mapram 'Map-Schreibmarker byte math[8] 'Funktionsstring für mathematische funktionen byte ongosub 'on gosub variable byte serial 'marker für serielle schnittstelle 1=geöffnet 0=geschlossen byte actionkey[5] 'Belegung der Spielertasten -> nach Bella verschoben byte item[6] 'von Spielerfigur einsammelbare Gegenstände byte block[10] 'tiles, die nicht überquert werden können byte collision[6] 'tiles mit denen man kollidieren kann byte itemersatz[30] 'Item-Ersatztiles, die das eingesammelte item im Display-Ram und auf dem Bildschirm ersetzen byte f0[STR_MAX] 'Hilfsstring byte ADDA,PORT 'Puffer der Portadressen der Sepia-Karte byte returnmarker 'Abbruchmarker für Zeileneditor byte editmarker 'Editmarker für Zeileneditor byte actorpos[2] 'Zwischenspeicher für x,y-Position des Spieler-Tiles byte button_art[BUTTON_CNT] 'Puffer für die Art des Buttons (Text-oder Icon) byte sid_command[7] 'SID-Sound-Kommando dat tok0 byte "IF",0 '128 getestet tok1 byte "THEN",0 '129 getestet tok110 byte "ELSE",0 '238 getestet tok2 byte "INPUT",0 ' INPUT {"";} {,} '130 getestet tok3 byte "PRINT",0 ' PRINT '131 getestet tok88 byte "ON",0 ' ON GOSUB GOTO 216 getestet tok4 byte "GOTO",0 '132 getestet tok5 byte "GOSUB", 0 '133 getestet tok6 byte "RETURN", 0 '134 getestet tok7 byte "REM", 0 '135 getestet tok8 byte "NEW", 0 '136 getestet tok9 byte "LIST", 0 'list , listet von bis zeilennummer 137 getestet NICHT AENDERN Funktionstaste!! tok10 byte "RUN", 0 '138 getestet NICHT AENDERN Funktionstaste!! tok26 byte "FOR", 0 ' FOR = TO 154 getestet tok27 byte "TO", 0 '155 getestet tok28 byte "STEP", 0 ' optional STEP 156 getestet tok29 byte "NEXT", 0 ' NEXT 157 getestet tok52 byte "END", 0 ' 180 getestet tok53 byte "PAUSE", 0 ' PAUSE