TriOS-alt/logbuch.rtf

88 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{\rtf1\ansi\ansicpg1252\deff0\deftab709{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}{\f1\fnil\fcharset128 Times New Roman;}{\f2\fnil\fcharset0 Courier New;}{\f3\fnil\fcharset2 Symbol;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\lang1031\f0\fs20 15-04-2011-dr235\tab\tab - flash-tool/rom: damit kann unter anderem eine bin-datei (z. bsp. basic) in den hi-rom \par
\tab\tab\tab (64k eeprom erforderlich!) gespeichert und mit rom gestartet werden\par
\tab\tab\tab - \'fcbernahme der rtc-routinen von stephan\par
\tab\tab\tab - time-kommando: anzeige/\'e4nderung datum/zeit\par
\tab\tab\tab - perplex: experimentelles tool f\'fcr plexbus (scan/open/close/get/put)\par
\tab\tab\tab - fterm: primitiv-terminal f\'fcr forth-hive\par
18-09-2010-dr235\tab\tab - regime: free zeigt jetzt auch die speicherbelegung des eram an\par
\tab\tab\tab - speicherverwaltung/ramdisk integriert (beispielcode siehe eram.spin & regime.spin)\par
\tab\tab\tab - eram.bin kann jetzt auch mit ramdisk umgehen\par
\tab\tab\tab - regime: neue kommandos f\'fcr ramdisk\par
\tab\tab\tab - egalisierung der namen f\'fcr den ramzugriff (\'e4lterer code mu\'df leicht angepasst werden)\par
\tab\tab\tab - user- und systemmode f\'fcr ramzugriff eingef\'fcgt\par
\tab\tab\tab - erste version eine make-batch um das gesamte system zu kompilieren (nur grundsystem)\par
\tab\tab\tab - \'e4nderung zur ios: da bst eine pfadliste zu bibliotheksordnern unterst\'fctzt, liegt (soweit das m\'f6glich ist)\par
\tab\tab\tab die ios nun nur noch unter system\\regnatix \par
\tab\tab\tab WICHTIG: Pfad zur ios.spin im bst einstellen\par
23-08-2010-dr040\tab\tab - integration ay-emulator (admay.adm) und yplay\f1\par
19-07-2010-dr235 \f0\tab\f1 - booten eines alternativen administra-codes: befindet sich auf der karte\par
\f0\tab\tab \f1 in der root eine datei "adm.sys", so wird diese datei automatisch in\par
\f0\tab\tab \f1 administra geladen\par
11-07-2010-dr235\tab\f0\tab\f1 - integration sid1/2-funktionen in admsid/ios\line\tab\tab\tab - anpassung sid-demo von ahle2 als regnatix-code (verzeichnis demo)\line\tab\tab\tab - diverse graphics-spielereien (verzeichnis demo)\line\tab\tab\tab - sysconf /af - administra neu booten (admflash.adm\line\tab\tab\tab wird dadurch \u252?berfl\u252?ssig)\line 27-06-2010-dr085/235\tab - admin mountet nun automatisch nach einem boot\tab\tab\line 26-06-2010-dr235\tab\f0\tab\f1 - div. demos zugef\u252?gt\line\tab\tab\tab - shooter angepasst und eingef\u252?gt\line 20-06-2010-dr235\tab\f0\tab\f1 - erste lauff\u228?hige SID-Player-Version\line\tab\tab\tab f\u252?r die Kommandozeile (splay)\line 14-06-2010-dr085/235\tab - Semaphoren in FATEngine korrekt eingesetzt\line\tab\tab\tab - Abfrage des Volume-Labels korrigiert\line 10-06-2010-dr235\tab\f0\tab\f1 - Kommando "ramtest" zugef\u252?gt\line 09-06-2010-dr085\tab\f0\tab\f1 - Fehler in Administra-Bootfunktion behoben\line\line -----------------------------------------------------------------------------------------------\line\line\f0 02-10-2010-dr235\par
\par
\ul\b Speicherverwaltung:\par
\ulnone\b0\par
In dieser Version ist eine erste Beta-Version der Speicherverwaltung des externen RAM's enthalten. Der Speicher kann dabei in einem einfachen oder einem strukturierten Modus verwendet werden. Klingt kompliziert, ist aber ganz einfach. \par
\par
\b Einfacher Modus:\par
\b0\par
Hierbei kann ein Programm auf den eRAM \'fcber die IOS-Routinen ios.ram_* zugreifen. Wahlweise kann der Speicher im Systemmode direkt von 0 bis $07FFFF angesprochen werden, oder nur der Userbereich. Im Systemmodus ist darauf zu achten, dass eine eventuell vorhandene Ramdisk und die Systemvariablen nicht \'fcberschrieben werden, man sollte also wissen was man tut... ;) Die Ramdisk wird ab der physischen Adresse 0 als verkettete Liste verwaltet, die Systemvariablen befinden sich ab $07FFFF abw\'e4rts. \par
\par
ios.ram_wrbyte(ios#sysmod,0,ios#MAGIC)\tab\tab - Schreibt den Wert 0 in die Systemvariable, um einen Kaltstart auszul\'f6sen.\par
ios.ram_wrbyte(ios#sysmod,$20,$100)\tab\tab - Schreibt den Wert $20 an die physische Adresse $100 im eRAM.\par
\par
Da es nun m\'fchsam ist in einem kleinen Code solche Konflikte mit dem Systemspeicher zu vermeiden, gibt es den Usermodus. Im Usermodus wird nur genau jener freie Speicher adressiert, welcher sich zwischen Ramdisk und Systemvariablen befindet. In diesem Fall ist die Adressierung also virtualisiert.\par
\par
ios.ram_wrbyte(ios#usrmod,0,$100)\tab\tab - Schreibt den Wert 0 an die Adresse $100 im Userspeicher!\par
\par
In Regime kann man mit dem Kommando "free" jetzt auch die wichtigsten Systemvariablen der Speicherverwaltung anzeigen.\par
\par
RBAS\tab\tab - Erste physische Adresse des Userspeichers\par
REND\tab\tab - Physische Adresse der letzten freien Speicherstelle des Userspeichers.\par
USER\tab\tab - Gr\'f6sse des Userspeichers (REND - RBAS).\par
RAMDRV\tab 0 - Ramdisk ist nicht initialisiert\par
\tab\tab 1 - Ramdisk ist initialisiert\par
SYSVAR\tab - Erste physische Adresse der Systemvariablen.\par
\par
Noch genauer kann man sich die Speicherbelegung mit dem Tool "eram" anschauen. Nur ein paar Beispiele:\par
\par
d\tab - Anzeige des Speichers. Es werden zwei Adressspalten angezeigt. Die zweite schwarze Adresse in jeder Zeile zeigt die physische Adresse, die erste gr\'fcne Adresse die virtuelle Adresse im Userspeicher. Man kann sehr gut erkennen, ab welcher Adrese der Userbereich anf\'e4ngt und wo er endet.\par
d 100\tab - Anzeige ab physischer Adresse $100\par
d bas\tab - Anzeige vom Start des Userspeichers.\par
n \tab - Anzeige inkrementell fortsetzen\par
\par
Die Nutzung des Userspeichers ist sehr einfach. Es sind dabei nur folgende Regeln zu beachten:\par
\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent0{\pntxtb\'B7}}\fi-720\li720 Man muss selbst darauf achten die Speichergrenzen nicht zu \'fcberschreiten. Bei \'dcberschreitung kann aber nichts passieren - die IOS-Routinen brechen einfach ab, allerdings werden die eigenen Daten halt nicht korrekt verarbeitet. Es werden also die Systemvariablen und die Daten in der Ramdisk gesch\'fctzt.\par
{\pntext\f3\'B7\tab}Der Userbereich im eRAM ist nur zur Laufzeit der Anwendung g\'fcltig. Wird die Anwendung beendet, so kann durch Regime oder eine andere Anwendung mit den Daten der Ramdisk gearbeitet werden, wodurch sich der physische Bereich des Userbereiches ver\'e4ndert. Wer also residente Daten \'fcber die Laufzeit der Anwendung hinaus braucht, muss im strukturierten Modus mit der Ramdisk arbeiten.\par
{\pntext\f3\'B7\tab}In einer Anwendung nicht den einfachen oder strukturierten Modus mischen - das gibt Chaos, wenn man nicht ganz genau aufpasst\par
\pard\par
Ansonsten kann man wie gehabt die schon bekannten IOS-Routinen verwenden, einzig der \'dcbergabeparameter zur Wahl des System- oder Usermodus sind hinzugekommen. Als Beispiel kann man sich die Soundplayer anschauen, die ihre Dateiliste im Userspeicher ablegen.\par
\par
\b Strukturierter Modus:\b0\par
\par
Was ist aber, wenn wir einen kleinen Texteditor schreiben wollen, der seine Textdaten resident im eRAM speichern kann? Ich m\'f6chte also den Texteditor verlassen k\'f6nnen, um in Regime zum Beispiel einen Assembler aufzurufen, welcher den Text dann assembliert. Darauf folgend m\'f6chte ich meinen Texteditor wieder starten und an dem Text weiter arbeiten. Daf\'fcr muss es meiner Anwendung - dem Textprogramm - m\'f6glich sein, einen Speicherbereich im eRAM zu reservieren, der von System und anderen Anwendungen respektvoll behandelt wird.\par
\par
Gedacht, getan: Im strukturierten Modus wird der Speicher in Form einer Ramdisk verwaltet. Die Dateien/Daten k\'f6nnen \'fcber ihren Namen angesprochen werden. Es kann mit put & get sequentiell, oder mit read & write direkt adressierbar auf die Daten in der Datei zugegriffen werden.\par
\par
Als erstes praktisches Beispiel m\'f6gen die neuen Kommandos in Regime selbst dienen, mit denen man die Ramdisk verwalten kann:\par
Neue Regime-Kommandos:\par
\par
\f2 xload <sd:fn> - datei in ram laden\par
xsave <x:fn> - datei aus ram speichern\par
xdir - verzeichnis im ram anzeigen\par
xrename <x:fn1> <x:fn2> - datei im ram umbenennen\par
xdel <x:fn> - datei im ram l\'f6schen\par
xtype <x:fn> - text im ram anzeigen\par
\f0\par
So ist es also m\'f6glich, sich in der Kommandozeile anzuschauen, welche residenten Daten die Programme aktuell angelegt haben. Sofern es Textdaten sind, k\'f6nnen diese Daten auch einafch angezeigt werden.\par
\par
Die Speicherverwaltung ist allerdings noch sehr experimentell - was bedeutet, dass wohl noch einige Bugs drin sein d\'fcrften. :)\par
\par
\ul\b MAKE.BAT\par
\par
\ulnone\b0 Diese Batchdatei im obersten Verzeichnis kompiliert das Grundsystem, bestehend aus den drei Flashdateien und den grundlegenden Kommandos im Systemverzeichnis. Ist ein erster Versuch. Was noch fehlt ist ein Fehlerlog und vielleicht noch die anderen Programme.\par
\f1\line 09-06-2010-dr235\line\line Nach nur zwei Tagen hat drohne085 (frida) das Geheimnis um die Bootroutine gel\u246?st: Die Ursache lag in einer von der FATEngine verwendeten Semaphore, welche fest auf den Lock 0 "verdrahtet" war. Diese Semaphore wird an diversen Stellen in der Engine verwendet, wurde aber beim Bootvorgang nicht gel\u246?scht oder freigegeben! Gedacht war sie, um den Bus zur SD-Card bei einem Zugriff zu verriegeln, falls mehrere Instanzen der Engine laufen, und gleichzeitig zugreifen wollen. Somit hat sich die Engine quasi selbst verriegelt und nach dem Bootvorgang als "neue Instanz" nun auch keinen Zugriff mehr - so sch\u246?n kann praktische Parallelverarbeitung sein... ;)\line\line Hier nun eine neue und aktuelle Version mit einer tempor\u228?ren funktionierenden L\u246?sung des Problems.\line\line Im System-Ordner gibt es jetzt folgende ausf\u252?hrbare Administra-Dateien:\line\line admflash.adm\tab\tab Standard-Flash, welches auch im EEProm gespeichert ist\line admini.adm\tab\tab Mini-Flash ohne Sound, nor SDCard + Managment-Routinen\line admled.adm\tab\tab Das Heartbeat-LED-Testprogramm zum direkten laden\line aterm96.adm\tab\tab Die leicht modifizierte Kommandozeile vom Programmierer der FATEngine. Mit \line\tab\tab\tab diesem Administra-Code kann man direkt \u252?ber die Hostschnittstelle (9600 Baud)\line\tab\tab\tab mit dem Chip kommunizieren. Dokumentation der Kommandos findet man im \line\tab\tab\tab Verzeichnis "komponenten/fat/fatengine beta"\line \line\line 07-06-2010-dr235\line\line Hier der aktuelle Stand von TriOS. Momentan k\u228?mpfe ich an einem \line Komplexfehler mit dem Bootloader von Administra. Das Problem ist recht \line einfach zu reproduzieren, aber leider (f\u252?r mich) nur schwer zu\line erfasen: Die verwendete FATEngine besitzt eine Bootfunktion um einen\line neuen BIN-Objektcode in den Propeller zu laden. Dieser Code funktioniert \line auch teilweise. So kann man das Administra-Bios selbst laden und dann\line auch per Regime-Kommandos verwenden: Die Kommandos "cogs" und "sysinfo"\line sprechen Administra-Funktionen an, welche auch korrekt ausgef\u252?hrt werden.\line Das Problem: Nach dem Bootprozess kann man keine SD-Card mehr mounten.\line\line Es ist auch m\u246?glich den Fehler noch weiter einzugrenzen: Wenn man die \line originale FATEngine (im Verzeichnis komponenten/fat) vom Host direkt in \line Administra startet, meldet sich diese in Form einer einfachen Kommando-\line zeile per Hostschnittstelle. Versucht man dort eine erzeugte BIN-Datei\line genau dieser Kommandozeile (demo.spin) zu booten, so hat man das gleiche\line Ergebnis.\line\line Verzeichnisstruktur:\line\line bin\tab\tab\tab - BIN-Dateien f\u252?r die Flash's und die SD-Card\line doku\tab\tab\tab - \line flash\tab\tab\tab - Quelltexte f\u252?r die Software in den EEProms\line system\tab\tab\tab - Quelltext f\u252?r ausf\u252?hrbare BIN-Dateien\line zubeh\u246?r\tab\tab\tab - Kleine Zusatzprogramme (StarTracker, Boulder Dash...)\line komponenten\tab\tab - Div. verwendete Objekte (FATEngine, SIDCog...)\line\line Installation:\line\line 1. \tab Flashen der drei EEProms mit den BIN-Dateien aus "bin/flash" oder\line\tab\u252?ber das Propellertool aus den Quellen "flash".\line\line 2. \tab SD-Card erstellen: Einfach alles aus "bin/sd-card" auf eine FAT16/32\line\tab Karte kopieren.\line\line Das System bootet Regnatix und Bellatrix beim Systemstart aus den Dateien\line\f0 "adm.sys", \f1 "reg.sys" bzw. "bel.sys". Diese Dateien k\u246?nnen auch das Hidden-Bit gesetzt\line haben. Externe Kommandos bzw. ausf\u252?hrbare BIN-Dateien werden im aktuellen\line UND im System-Verzeichnis gesucht - alle Systemkommandos k\u246?nnen also in das \line System-Verzeichnis kopiert werden.\line\line Hilfe gibt es meist \u252?ber das Kommando "help" oder den Parameter "/h".\line\line\tab\line\line\par
}