change windows build scripts, add readmes

This commit is contained in:
Jörg Deckert 2014-05-07 12:39:59 +02:00
parent 4ab67599f0
commit a2c50eb15b
10 changed files with 1118 additions and 723 deletions

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
# Auto detect text files and perform LF normalization
* text=auto
*.bat text eol=crlf

336
INSTALLATION.md Normal file
View File

@ -0,0 +1,336 @@
INHALT
======
1. Installation des Grundsystems
2. Regime im Überblick
3. Forth im Überblick
1. Installation des Grundsystems:
=================================
TriOS kann in zwei Versionen installiert werden: Mit oder ohne Forth als
integrierte Programmiersprache. Als Standard wird das System ohne Forth
installiert. Die Installation ist so für den Einsteiger einfacher. Möchte
man auch PropForth installieren, muß nur eine Konfiguration geändert werden
und ein Basiswortschatz im Forth selbst kompiliert werden.
WICHTIG: Das System kann nur mit Brat's Spin Tool - kurz BST - compiliert
werden. In den Einstellungen des Compilers (Tools/Compiler
Preferences/Search Paths) muss das lib-Verzeichnis eingetragen werden.
Downloadlink BST: http://www.fnarfbargle.com/bst.html
Zum einfachen Compilieren des Gesamtsystems steht für Windows die Batch-Datei
"make.bat" bzw. "makelog.bat" zur Verfügung, für Linux das Script "make.sh".
Voraussetzung ist, daß sich die Commandline-Version des Compilers (bstc) im
Pfad befindet.
Downloadlink BSTC: http://www.fnarfbargle.com/bst/bstc/Latest/
Installation ohne Forth (Standard):
-----------------------------------
1. Mikrocontroller flashen:
\flash\administra\admflash.spin --> Administra
\flash\bellatrix\belflash.spin --> Bellatrix
\flash\regnatix\regflash.spin --> Regnatix
Installation mit Forth:
-----------------------
1. Mikrocontroller flashen:
\flash\administra\admflash.spin --> Administra
\flash\bellatrix\belflash.spin --> Bellatrix
\flash\regnatix\regforth.spin --> Regnatix
2. Der Schalter bleibt ab jetzt auf Regnatix stehen. Ein Terminalprogramm (ich
verwende Tera Term) starten und 57600 Baud auf die Schnittstelle vom Hive
(DIP steht auf Regnatix!) einstellen. Nach einem Reset meldet sich das
Propforth im Terminalprogramm auf dem Hostcomputer. Datei "forth\basics.mod"
in einem Editor öffnen, alles markieren, kopieren und im Terminal einfügen.
Der Quelltext wird jetzt im Forth compiliert.
3. Im Terminalfenster, also im Forth, dass Kommendo "saveforth" eingeben. Damit
wird das gesamte Forthsystem mit der gerade neu compilierten Erweiterungen
wieder im EEPROM als Image gespeichert.
Nach einem Reset sollte sich das Forth jetzt komplett mit seinem Prompt sowohl
auf dem angeschlossenen VGA-Monitor, als auch im Terminal melden. Im Prinzip
benötigen wir nun das Terminalprogramm nicht mehr und können direkt am Hive
arbeiten. Später, wenn man in Forth programmiert, ist die vorhandene
Terminalschnittstelle aber manchmal sehr nützlich.
Erstellen der SDCard:
---------------------
Im Prinzip kann jede normale FAT16/32 Karte verwendet werden. Lange Dateinamen
werden nicht verwendet, Unterverzeichnisse sind kein Problem. Es ist sinnvoll,
alle Dateien aus dem Verzeichnis "bin\sd-card\" auf die SD-Karte zu kopieren.
Das Verzeichnis "system" hat eine besondere Bedeutung: Hier sollten sich die
Tools, Erweiterungen und Bibliotheken befinden. Im PropForth: Mit dem Kommando
"sys name.f" kann aus jedem anderen Verzeichnis ohne Wechsel eine Datei name.f
im Verzeichnis System geladen und compiliert werden.
Systemstart:
------------
Beim Systemstart wird immer das Forth aus dem EEPROM gestartet. So kann, wie
mit den klassischen Homecomputern, sofort unkompliziert programmiert werden.
Neben dem Forth gibt es im TriOS noch ein in Spin programmiertes Betriebssystem,
welches sich dem Benutzer durch den Kommandointerpreter Regime präsentiert. Aus
dem Forth kann diese mit dem Kommando "regime" gestartet werden. Im Gegenzug
kann im laufenden Regime mit dem Kommando "forth" wieder zur integrierten
Programmiersprache gewechselt werden.
Wurde TriOS ohne Forth installiert, wird der Loader aus dem EEPROM gestartet und
sofort die Kommandozeile "Regime" aus der Datei reg.sys gestartet.
3. Regime im Überblick
======================
Da wir ja drei verschiedene Teilsystem in unserem Computer haben, muss Regime
wissen, für welchen Chip eine ausführbare Datei bestimmt ist. Den Typ
ausführbarer Dateien kann Regime automatisch anhand der Dateinamenserweiterung
unterscheiden:
*.bin Regnatix-Code
*.bel Bellatrix-Code
*.adm Administra-Code
Dabei genügt es, den Namen ohne Erweiterung einzugeben. Dennoch kann es
vorkommen, das man eine normale Spin-Datei mit einer beliebigen Erweiterung
gespeichert hat. Diese Datei kann man dann mit den Kommandos rload, aload oder
bload ganz gezielt in einen Chip laden.
<dateiname> - bin/adm/bel-datei wird gestartet
mount - SD-aufwerk mounten
unmount - SD-Laufwerk freigeben
dir wh - Verzeichnis anzeigen
type <sd:fn> - Anzeige einer Textdatei
aload <sd:fn> - Administra-Code laden
bload <sd:fn> - Bellatrix-Code laden
rload <sd:fn> - Regnatix-Code laden
del <sd:fn> - Datei löschen
cls - Bildschirm löschen
free - Anzeige des freien Speichers auf SD-Card
attrib <sd:fn> ashr - Dateiattribute ändern
cd <sd:dir> - Verzeichnis wechseln
mkdir <sd:dir> - Verzeichnis erstellen
rename <sd:fn1> <sd:fn2> - datei/verzeichnis umbenennen
format <volname> - SD-Laufwerk formatieren
reboot - Hive neu starten
sysinfo - Systeminformationen
ipconfig - Netzwerk-Konfiguration
color <0..7> - Farbe wählen
cogs - Belegung der COG's anzeigen
dmlist - Anzeige der Verzeichnis-Marker
dm <r/s/u/a/b/c> - Marker-Verzeichnis wechseln
dmset <r/s/u/a/b/c> - Marker setzen
dmclr <r/s/u/a/b/c> - Marker löschen
forth - Forth starten
Marker:
r - Marker für Root-Verzeichnis
s - Marker für System-Verzeichnis
u - Marker für User-Verzeichnis
a/b/c - Benutzerdefinierte Verzeichnismarker
Die r, s, u-Marker werden vom System automatisch gesetzt und intern verwendet.
RAMDISK:
xload <sd:fn> - Datei von SD-Laufwerk in RAM laden
xsave <x:fn> - Datei aus RAM auf SD-Laufwerk speichern
xdir - Verzeichnis im RAM anzeigen
xrename <x:fn1> <x:fn2> - Datei im RAM umbenennen
xdel <x:fn> - Datei im RAM löschen
xtype <x:fn> - Textdatei im RAM anzeigen
EXTERNE KOMMANDOS:
------------------
Die meisten Kommandozeilentools zeigen mit dem Parameter /? eine Liste der
Optionen an.
sysconf - Systemeinstellungen
hplay - HSS-Player
wplay - WAV-Player
splay - SID-Player
yplay - Yamaha-Soundchip-Player
sfxtool - HSS-Soundeffekte erstellen
ftp - FTP-Client
irc - IRC Client
vga.bin - VGA 1024 x 768 Pixel, 64 x 24 Zeichen
htext.bin - VGA 1024 x 768 Pixel, 128 x 48 Zeichen
tv.bin - TV-Textmodus 40 x 13 Zeichen
2. Forth im Überblick:
======================
Einige nützliche Kommandos befinden sich in dem Modul tools.mod. In den meisten
Fällen ist es sinnvoll dieses Modul mit der Befehlssequenz
"sys tools.mod saveforth" fest im Forth einzubinden.
Wichtige Tastencodes:
---------------------
[ESC]-1 Screen 1, COG 1
[ESC]-2 Screen 2, COG 2
[ESC]-3 Screen 3, COG 3
[ESC]-b Break, Reset der aktuellen COG
[ESC]-r Reset, Neustart Regnatix
Wichtige Kommandos:
-------------------
load <name> - Datei laden und comilieren, Ausgabe Screen 3
dload <name> - wie load, aber Ausgabe aktueller Screen
sys <name> - Datei aus sys-Verzeichnis laden und compilieren
ls - Dateiliste
lsl - Dateiliste- Long-Format
cd <name> - in Verzeichniss wechseln
mount - SD-Card einbinden
unmount - SD-Card freigeben
words - Anzeige Wöterbuch
mod? - (tools.mod) Anzeige compilierter Erweiterungen
lib? - (tools.mod) Anzeige compilierter Bibliotheken
cog? - (tools.mod) Anzeige COG-Liste
cat <name> - (tools.mod) Ausgabe einer Textdatei
less <name> - (tools.mod) Zeilenweise Textausgabe
dm? - (tools.mod) Anzeige der Systemverzeichnisse
regime - CLI starten
aload <name> - Adminsitra-Code laden
bload <name> - Bellatrix-Code laden
spin <name> - Spin-Programm starten
Wichtige Dateien:
-----------------
Die Dateien *.mod und *.lib enthalten ganz normale Forth-Quelltexte. Damit hat
man schnell eine Übersicht über die grobe Funktion dieser Quellen: Lib's sind
halt reine Sammlungen von Worten zu einer bestimmten Funktionsgruppe und MOD's
sind mehr oder weniger fertige und abgeschlossene Programme. Ein Beispiel:
Die Datei hss.lib enthält Worte um die HSS-Funktionen von Administra
anzusprechen. Mit diesen Funktionen kann man nun ein Modul (Programm) wie einen
HSS-Soundplayer schreiben.
Im Gegensatz dazu die Datei splay.mod: Mit diesem Modul wird ein HSS-Soundplayer
ins System eingefügt, welcher Funktionen aus der hss.lib verwendet.
Die Datei benötigt man aber mehr oder weniger nur zur Entwicklung, ein fertiges
Modul wie splay.mod enthält dann schon die die entsprechenden HSS-Worte die
benötigt werden.
Die ifnot: ... Anweisung sorgt dabei dafür, dass keine Funktionen doppelt in das
Wörterbuch compiliert werden. Das ist quasi ein verteiltes und fein granuliertes
Konzept analog zu einer DLL. Die Forth-Version funktioniert dabei aber im
Gegensatz zu DLL's nicht auf Bibliotheks-, sondern auf Funktionsebene.
*.mod Module, Forth-Erweiterungen für das System
*.lib Bibliotheken, grundlegende Wortsammlungen
*.adm Administra-Code (z.Bsp. admsid.adm für SIDCog-Code)
*.bel Bellatrix-Code
*.bin Spin-Code, im Normalfall zur Ausführung in Regnatix
basics.f - (mod:basics) Hive-Core für PropForth
ari.lib - (lib:ari) Zusätzliche arithmetische Funktionen
cog.lib - (lib:cog) Zusätzliche COG-Funktionen
adm.lib - (lib:adm) Administra-Chipmanagment-Funktionen
hss.lib - (lib:hss) Bibliothek für Hydra-Sound-System
sfx.lib - (lib:sfx) Soundeffekt-Bibliothek
wav.lib - (lib:wav) Wave-Soundbibliothek
bel.lib - (lib:bel) Bellatrix-Chipmanagment-Funktionen
key.lib - (lib:key) Tastatur-Bibliothek
scr.lib - (lib:scr) Screen-Bibliothek
sd0.lib - (lib:sd0) SD-Card-Bibliothek
debug.f - Nützliche Worte zur Fehlersuche und Entwicklung
rom.f - EEPROM-Dateisystem
tools.f - Nützliche Tools (cat, less, dm?...)
hplay.f - HSS-Player
wplay.f - WAV-Player
splay.f - SID-Player
Administra-Codedateien im SYS-Verzeichnis:
admled.adm Testprogramm - HBeat-LED blinken lassen
admnet.adm Netzwerk-Version (wird von ftp und irc benötigt)
admsid.adm SidCog-Version (wird von splay benötigt)
admsys.adm Standardcode für ADM mit SD/HSS/WAV
admym.adm Yamaha-Soundchip-Version
aterm96.adm Mini-OS für Administra (Testzwecke)
Reset-Fehlercodes:
------------------
0011FFFF - stack overflow
0012FFFF - return stack overflow
0021FFFF - stack underflow
0022FFFF - return stack underflow
8100FFFF - no free cogs
8200FFFF - no free main memory
8400FFFF - fl no free main memory
8500FFFF - no free cog memory
8800FFFF - eeprom write error
9000FFFF - eeprom read error
.err-Fehlercodes:
-----------------
0 no error
1 fsys unmounted
2 fsys corrupted
3 fsys unsupported
4 not found
5 file not found
6 dir not found
7 file read only
8 end of file
9 end of directory
10 end of root
11 dir is full
12 dir is not empty
13 checksum error
14 reboot error
15 bpb corrupt
16 fsi corrupt
17 dir already exist
18 file already exist
19 out of disk free space
20 disk io error
21 command not found
22 timeout
23 parameter error

View File

@ -12,7 +12,7 @@ Einleitung
==========
Dies ist ein IRC-Client für den Hive (http://hive-project.de). Er sollte auf
jedem Hive mit bestücktem Netzwerk-Interface und RTC funktionieren.
jedem Hive mit bestücktem Netzwerk-Interface funktionieren.
Die Idee des IRC-Clients stammt von PropIRC, einem Projekt von Harrison Pham,
welches aus einer Propeller-basierten Hardware ausschließlich für diesen Zweck
@ -27,23 +27,18 @@ Funktionalitäten dar.
Installation
============
Der Hive IRC-Client ist Bestandteil des TriOS Netzwerk-Paketes. Die aktuellste
Version steht immer im ersten Beitrag des zugehörigen Forum-Threads unter
http://hive-project.de/board/viewtopic.php?f=7&t=968 zur Verfügung.
Die Installation ist wie im Download-Archiv beschrieben vorzunehmen. Dabei wird
auch der IRC-Client in das System-Verzeichnis der TriOS SD-Card kopiert und
kann von dort gestartet werden.
Der Hive IRC-Client ist Bestandteil von TriOS und wird bei dessen Installation
ins System-Verzeichnis der SD-Karte installiert.
Testserver
==========
Empfohlener Server
==================
Für erste Versuche mit IRC steht ein eigener Server zur Verfügung. Dieser kann
wie folgt erreicht werden:
Auf German-Elite existiert ein IRC-Channel für den Hive. Dieser kann wie folgt
erreicht werden:
IRC-Server (IP-Adresse:Port): 88.198.147.76:6667
nutzbarer Channel: #Hive
IRC-Server (Hostname:Port): irc.german-elite.net:6667
nutzbarer Channel: #hive
Nutzung
@ -52,15 +47,18 @@ Nutzung
Start
-----
Vor dem Start des IRC-Clients muß in Administra der Netzwerk-Code geladen sein.
Dies geschieht durch direktes Flashen in Administra oder durch Eingabe von
"admnet". Außerdem muß der Hive natürlich an ein Netzwerk mit Internet-
Verbindung angeschlossen sein und mittels "ipconfig" entsprechend konfiguriert
werden.
Der IRC-Client benötigt den Netzwerk-Code in Administra. Dieser kann direkt in
Administra geflasht oder durch Eingabe von "admnet" geladen werden. Beim Start
prüft der IRC-Client das Vorhandensein der Netzwerk-Funktionalitäten. Sind
diese nicht vorhanden, wird automatisch versucht, "/system/admnet.adm" von der
SD-Card zu laden.
Der Start erfolgt dann einfach durch Eingabe von "irc" am Regime-Prompt. Nach
dem ersten Start wird automatisch die Konfiguration aufgerufen. Nach Eingabe
der erforderlichen Parameter (s.u.) werden diese gespeichert. Nun kann mittels
Außerdem muß der Hive natürlich an ein Netzwerk mit Internet-Verbindung
angeschlossen sein und mittels "ipconfig" entsprechend konfiguriert werden.
Der Start erfolgt dann einfach durch Eingabe von "irc" am Regime-Prompt. Beim
ersten Start wird automatisch die Konfiguration aufgerufen. Nach Eingabe der
erforderlichen Parameter (s.u.) werden diese gespeichert. Nun kann mittels
Drücken von "F3" die Verbindung zum Server aufgebaut werden.
@ -73,14 +71,15 @@ Im untersten Fenster werden die Mitteilungen und Befehle eingegeben.
Das aktive Fenster wird jeweils hervorgehoben und kann mittels Tabulator-Taste
umgeschalten werden. Im aktiven Fenster kann mittels Cursor hoch/runter
gescrollt werden.
gescrollt werden (außer im Eingabefenster).
Die Bedienung erfolgt durch Betätigung der Funktionstasten oder die Eingabe
von Befehlen im EingabeFenster (s.u.). Alle Befehle beginnen mit einem
Schrägstrich (/).
Beim Erscheinen einer neuen Mitteilung im aktuellen Kanal blinkt die Regnatix-
LED so lange, bis eine beliebige Taste gedrückt wird.
LED so lange, bis eine beliebige Taste gedrückt wird. Außerdem wird ein Sound
abgespielt.
Befehlsübersicht
@ -99,6 +98,8 @@ Befehlsübersicht
F9 /quit Verbindung zu Server trennen
F10 Programm beenden
/msg Private Mitteilung (/msg <Empfänger> <Text>)
/me eigenen Status/Aktion senden (/me <Aktion>)
/ctcp Client-to-Client (/ctcp <Empfänger> <Kommando>)
/srv Mit Server verbinden und anmelden (srv <IP:Port>)
/save Einstellungen speichern
Tab Fenster umschalten, Scrollen mit Cursor hoch/runter
@ -135,12 +136,10 @@ identisch sein.
Bei der Anmeldung am Server wird auch ein vollständiger Name übertragen. Da es
unüblich ist, hier seinen richtigen Namen anzugeben, wird stattdessen ein Name
in der Form "Hive #<HiveId>" generiert. <HiveId> ist der mittels "ipconfog /i"
in der Form "Hive #<HiveId>" generiert. <HiveId> ist der mittels "ipconfig /i"
definierte Wert.
TODO
====
- offene Eingabefenster blockieren nicht den IRC-Empfang
- Support für mehrere gleichzeitige Channel
- Scrollen auch im Eingabe-Fenster

View File

@ -5,7 +5,7 @@ Der Hive ist ein Open-Hardware und Free-Software DIY-Computersystem auf
der Basis von drei Parallax P8X32 "Propeller" Mikrocontrollern.
Lizenze
Lizenz
-------------------------------------------------------------------------
Das Betriebssystem TriOS steht unter MIT-Lizenz. Die Schaltung und das
Board-Layout ist unter Creative-Commons CC-BY-SA 3.0 lizensiert.

565
LOGBUCH.md Normal file
View File

@ -0,0 +1,565 @@
r57 - xx-xx-xxxx-joergd
=======================
Allgemein:
- alle Spin-Dateien verwenden einheitlich UTF8-Kodierung und ein Zeilenende
mit Linefeed (LF)
Administra:
- Netzwerk-fähig
- nur eine Source-Datei für alle Binaries, Funktionsauswahl über Defines
- Plexbus, DCF77 und Bluetooth aus Basic/Plexus hinzugefügt
Netzwerk-Clients:
- ipconfig
- FTP-Client
- IRC-Client
fm, man:
- Textdateien mit unterschiedlichem Zeilenende (CR, LF) werden unterstützt
Lokalisierung:
- mittels Defines kann beim Compilieren eine Sprache ausgewählt werden
(s. ipconfig.spin, irc.spin, ftp.spin, make.sh, make.bat)
Make-Scripts:
- Linux-Version (make.sh)
- Erstellung verschiedener Anministra-Binaries per Defines
- Erstellung beider Regime-Flash-Versionen (mit und ohne Forth)
r56 - 11-05-2013-dr235
======================
und weiter gehts mit dem Frühjahresputz:
- umstellung Administra-Codes (admflash, admay, admsid) auf externe
Konstantendefinitionen
belflash:
- fehler im loader behoben
lib:
- gui-objekte für textoberfläche eingefügt:
gui-dlbox - Listenbox für Dateien
gui-input - einfaches eingabefenster
gui-pbar - Hinweisdialog mit Progress-Bar (z.Bsp. für Kopieraktionen)
gui-wbox - Warnbox mit Auswahloptionen
system/regnatix:
- Filemanager fm zugefügt
- Mental-Loader m zugefügt
- Tool zum erstellen von tapes (mental-containerdateien) zugefügt
- wplay: kleinen Darstellungsfehler behoben
- yplay: Konstanten ausgelagert
system/sonstiges:
- Manual zugefügt: error, fm
r55 - 15-04-2013-dr235
======================
fällige Aufräumarbeitem im Quelltext:
- Umstellung Bildschirmcodes/g0-Treiber auf externe Konstantendefinitionen
- Umstellung Signaldefinitionen für belflash/g0key
- alle Funktionsnummern für bella werden nun in lib\glob-con.spin verwaltet
und gepflegt
- screeninit gibt jetzt keine Kopfzeile mehr aus, geht jetzt über
Fensterfunktionen
- Anpassung div. Tools
system\regnatix\regime:
- leere Eingaben werden jetzt ignoriert
- mit der Cursortaste kann jetzt der letzte Befehl wiederholt werden
r54 - 15-04-2013-dr235:
=======================
flash\admflash.spin
- grundlegende com-Funktionen eingefügt
lib\reg-ios.spin
- com-funktionen
- ios.screeninit: kein Logo im TV-Modus
system\administra\admay\admay.spin
- sd_dmput eingefügt
- sd_eof eingefügt
system\regnatix\admtest.spin
- Korrektur bei fehlerhaftem Screeninit
system\regnatix\beltest.spin
- Menü eingefügt um einzelnen Test auszuführen
- Anpassung an TV-Modus
- neuer Test für Fensterfunktionen
system\regnatix
- Tool man eingefügt
- Umstrukturierung aller Tool-Hilfen an man
- Anpassung der meisten Tools an TV-Modus
system\sonstiges
- man-Hilfetexte eingefügt
r53 - 20.02.2013 dr235/u-held:
==============================
flash\admflash.spin
- scr-Funktionen ausgefügt
flash\belflash.spin:
- Fehler im Loader behoben (cog0 wurde nicht in allen Fällen beendet) Dank
dafür geht an pic :)
- Farbtabellen auf 16 Farben ergänzt, Normalfarbe ist jetzt mal retro-green :)
flash\regflash.spin:
- Pause für Slaves zur Initialisierung eingefügt, damit diese bei
Installation ohne forth sauber starten
forth\bel.lib:
- Korrektur wort bel:load
forth\sd0.lib:
- div. fehlerhafte Stackkommentare korrigiert
forth\tools.lib:
- Korrektur wort bel:load
forth\g0.lib: zugefügt
forth\tpix.f: zugefügt
forth\win.lib: zugefügt
lib\reg-ios.spin:
- Fehler in g0 printdec behoben
- neue sidcog-Funktion: sid_dmpreg
system\administra\admsid\admsid.spin:
- Funktion sid_dmpreg eingefügt (für Triborg-Player)
- Funktion sd_dmput aus Maincode übernommen
- Funktion sd_eof aus Maincode übernommen
system\regnatix\g0test.spin:
- neue Tests & Effekte eingefügt
system\regnatix\sysconf.spin:
- "sysconf /ci" zeigt nun alle 16 Farben an
system\sonstiges\green.col:
- grüne Retro-Farbtabelle eingefügt
r52:
====
g0key.spin - Bug bei horizontaler Textzentrierung beseitigt
belflash.spin - Interface VGA/TV vereinheitlicht, umschaltbar beim Compilieren
(siehe make.bat)
belf-tv.spin - treiberspezifische Konstanten und Funktionen für belflash.spin
belf-vga.spin - treiberspezifische Konstanten und Funktionen für belflash.spin
bel-bus.spin - Auslagerung der Bus-Routinen aus Bellatrix-Sicht
beltest.spin - Anpassung an belflash.spin, auch im TV-Modus nutzbar
make.bat - tv.bel wird jetzt aus belflash.spin erzeugt; Einführung einer
Variablen für den Compiler-Aufruf
reg-ios.spin - hmm... habsch vergessen, was da geändert wurde :-(
r51:
====
belflash.spin:
- verzögertes Scrolling bei abgeschaltetem Cursor
- Window-Funktionen
glob-con.spin:
- Auslagerung von globalen Konstanten (ansatzweise)
reg-ios.spin:
- Einbindung der neuen Bellatrix-Funktionen
beltest.spin:
- sline/eline-Test entfernt, Window-Test eingefügt
27.11.2011-dr235
================
- bellatrix-code für Grafikmodus 0 + keyboard hinzugefügt
- g0test - Testprogramm für g0-Modus hinzugefügt
- reg-ios - g0-Funktionen eingearbeitet
- make.bat angepasst
13.11.2011-dr235
================
- rtc-routinen neu eingefügt
- admterm entfernt, hat im trios keine funktion
11.11.2011-dr235
================
- umfangreicher Umbau der Verzeichnisstruktur: alle universellen Quellen wie
Treiber oder klassische Bibliotheken werden nun im Verzeichnis "lib"
gespeichert und können so an einer Stelle gepflegt werden.
- alle Anwendungen die nichts mit TriOS zu tun haben werden nun aus dem
Projekt entfernt und in einer Toolbox-Serie veröffentlicht. damit wird TriOS
stark entschlackt und wieder übersichtlich.
- Überarbeitung der make.bat; es werden nun auch die alternativen Slave-Codes
wie zum Beispiel admsid erstellt.
- in der Standardkonfiguration ist jetzt Forth deaktiviert - das ist einfacher
für den Einsteiger. Forth ist dann "level 2".
WICHTIG: im bst muß nun der Compiler-Suchpfad für TriOS auf das Verzeichnis
"lib" eingestellt werden.
09.11.2011-dr235
================
- Fehler in regflash.spin behoben, Konfiguration ohne Forth konnte nicht
compiliert werden
- Standartkonfiguration ist jetzt ohne Forth, ist einfacher für den Einstieg
- div. Demos entfernt, diese werden später getrennt in einer Toolbox-Serie
veröffentlicht
06.11.2011-dr235
================
- Fehlersuche zum Problem mit dem neuen Bella-Loader: einige bel-Dateien
(guidemo, 4-boing) wurden nicht korrekt initialisiert, also starteten nicht
sauber. Parameter und Ladevorgang ist korrekt, Ursache ist wahrscheinlich
eine falsche Initialisierung der Stackwerte im PASM-Teil des Loaders. Als
Lösung kann man diese bel-Dateien als eeprom-image abspeichern, diese
starten korrekt.
23.04.2011-dr235
================
- Integration von PropForth in TriOS
15-04-2011-dr235
================
- flash-tool/rom: damit kann unter anderem eine bin-Datei (z. bsp. Basic) in
den Hi-ROM (64k eeprom erforderlich!) gespeichert und mit rom gestartet
werden
- Übernahme der RTC-Routinen von Stephan
- time-Kommando: Anzeige/Änderung Datum/Zeit
- perplex: experimentelles Tool für plexbus (scan/open/close/get/put)
- fterm: Primitiv-Terminal für Forth-HIVE
18-09-2010-dr235
================
- regime: free zeigt jetzt auch die Speicherbelegung des eRAM an
- Speicherverwaltung/RAMDisk integriert (Beispielcode siehe eram.spin &
regime.spin)
- eram.bin kann jetzt auch mit RAMDisk umgehen
- regime: neue Kommandos für RAMDisk
- Egalisierung der Namen für den RAM-Zugriff (älterer code muß leicht
angepasst werden)
- User- und Systemmode für RAM-Zugriff eingefügt
- erste Version einer make-Batch um das gesamte System zu kompilieren
(nur Grundsystem)
- Änderung zur ios: da bst eine pfadliste zu bibliotheksordnern unterstützt,
liegt (soweit das möglich ist) die ios nun nur noch unter system\regnatix
WICHTIG: Pfad zur ios.spin im BST einstellen
23-08-2010-dr040
================
- Integration ay-emulator (admay.adm) und yplay
19-07-2010-dr235
================
- Booten eines alternativen Administra-Codes: befindet sich auf der Karte in
der root eine Datei "adm.sys", so wird diese Datei automatisch in Administra
geladen
11-07-2010-dr235
================
- Integration sid1/2-Funktionen in admsid/ios
- Anpassung sid-Demo von ahle2 als Regnatix-Code (Verzeichnis demo)
- diverse Graphics-Spielereien (Verzeichnis demo)
- sysconf /af - Administra neu booten (admflash.adm wird dadurch überflüssig)
27-06-2010-dr085/235
====================
- admin mountet nun automatisch nach einem boot
26-06-2010-dr235
================
- div. Demos zugefügt
- Shooter angepasst und eingefügt
20-06-2010-dr235
================
- erste lauffähige SID-Player-Version für die Kommandozeile (splay)
14-06-2010-dr085/235
====================
- Semaphoren in FATEngine korrekt eingesetzt
- Abfrage des Volume-Labels korrigiert
10-06-2010-dr235
================
- Kommando "ramtest" zugefügt
09-06-2010-dr085
================
- Fehler in Administra-Bootfunktion behoben
-------------------------------------------------------------------------------
23-04-2011-dr235
================
Ein neuer Meilenstein: PropForth ist jetzt in TriOS integriert. Als Nebeneffekt
starten nun wieder, wie bei meiner ersten SpinOS-Version, alle drei Chips ihren
initialen Code aus ihrem EEPROM und nicht mehr vom SD-Laufwerk. Damit gibt es
vom Einschalten bis zum Forth-Prompt quasi keine fühlbare Bootzeit mehr. So
gehört es sich für einen richtigen Homecomputer. Es ist nun möglich, unmittelbar
nach dem Einschalten sofort zu programmieren. Erst wenn man zu Regime wechselt
wird kurz reg.sys nachgeladen. Aber selbst die Ladezeiten sind nun durch
Verwendung des SD-Blocktransfer erfreulich kurz.
Obwohl das Grundsystem vom Forth den halben hRAM belegt, ist es als genormte
Sprache doch eine wunderbare Geschichte im Hive. Viele der Ressourcen sind jetzt
schon problemlos in Forth nutzbar und man kann sehr unkompliziert
experimentieren.
02-10-2010-dr235
================
Speicherverwaltung:
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.
Einfacher Modus:
Hierbei kann ein Programm auf den eRAM über 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 überschrieben 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ärts.
ios.ram_wrbyte(ios#sysmod,0,ios#MAGIC)
- Schreibt den Wert 0 in die Systemvariable, um einen Kaltstart auszulösen.
ios.ram_wrbyte(ios#sysmod,$20,$100)
- Schreibt den Wert $20 an die physische Adresse $100 im eRAM.
Da es nun mühsam 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.
ios.ram_wrbyte(ios#usrmod,0,$100)
- Schreibt den Wert 0 an die Adresse $100 im Userspeicher!
In Regime kann man mit dem Kommando "free" jetzt auch die wichtigsten
Systemvariablen der Speicherverwaltung anzeigen.
RBAS
- erste physische Adresse des Userspeichers
REND
- Physische Adresse der letzten freien Speicherstelle des Userspeichers.
USER
- Grösse des Userspeichers (REND - RBAS).
RAMDRV
0 - Ramdisk ist nicht initialisiert
1 - Ramdisk ist initialisiert
SYSVAR
- Erste physische Adresse der Systemvariablen.
Noch genauer kann man sich die Speicherbelegung mit dem Tool "eram" anschauen.
Nur ein paar Beispiele:
"d" Anzeige des Speichers. Es werden zwei Adressspalten angezeigt. Die zweite
schwarze Adresse in jeder Zeile zeigt die physische Adresse, die erste
grüne Adresse die virtuelle Adresse im Userspeicher. Man kann sehr gut
erkennen, ab welcher Adrese der Userbereich anfängt und wo er endet.
"d 100" Anzeige ab physischer Adresse $100
"d bas" Anzeige vom Start des Userspeichers.
"n" Anzeige inkrementell fortsetzen
Die Nutzung des Userspeichers ist sehr einfach. Es sind dabei nur folgende
Regeln zu beachten:
Man muss selbst darauf achten die Speichergrenzen nicht zu überschreiten. Bei
Überschreitung 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ützt.
Der Userbereich im eRAM ist nur zur Laufzeit der Anwendung gültig. 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ändert. Wer also residente Daten über die Laufzeit der
Anwendung hinaus braucht, muss im strukturierten Modus mit der Ramdisk
arbeiten. In einer Anwendung nicht den einfachen oder strukturierten Modus
mischen - das gibt Chaos, wenn man nicht ganz genau aufpasst
Ansonsten kann man wie gehabt die schon bekannten IOS-Routinen verwenden,
einzig der Übergabeparameter zur Wahl des System- oder Usermodus sind
hinzugekommen. Als Beispiel kann man sich die Soundplayer anschauen, die ihre
Dateiliste im Userspeicher ablegen.
Strukturierter Modus:
Was ist aber, wenn wir einen kleinen Texteditor schreiben wollen, der seine
Textdaten resident im eRAM speichern kann? Ich möchte also den Texteditor
verlassen können, um in Regime zum Beispiel einen Assembler aufzurufen, welcher
den Text dann assembliert. Darauf folgend möchte ich meinen Texteditor wieder
starten und an dem Text weiter arbeiten. Dafür muss es meiner Anwendung - dem
Textprogramm - möglich sein, einen Speicherbereich im eRAM zu reservieren, der
von System und anderen Anwendungen respektvoll behandelt wird.
Gedacht, getan: Im strukturierten Modus wird der Speicher in Form einer Ramdisk
verwaltet. Die Dateien/Daten können über ihren Namen angesprochen werden. Es
kann mit put & get sequentiell, oder mit read & write direkt adressierbar auf
die Daten in der Datei zugegriffen werden.
Als erstes praktisches Beispiel mögen die neuen Kommandos in Regime selbst
dienen, mit denen man die Ramdisk verwalten kann:
Neue Regime-Kommandos:
xload <sd:fn> - Datei in RAM laden
xsave <x:fn> - Datei aus RAM speichern
xdir - Verzeichnis im RAM anzeigen
xrename <x:fn1> <x:fn2> - Datei im RAM umbenennen
xdel <x:fn> - Datei im RAM löschen
xtype <x:fn> - Text im RAM anzeigen
So ist es also möglich, sich in der Kommandozeile anzuschauen, welche
residenten Daten die Programme aktuell angelegt haben. Sofern es Textdaten
sind, können diese Daten auch einfach angezeigt werden.
Die Speicherverwaltung ist allerdings noch sehr experimentell - was bedeutet,
dass wohl noch einige Bugs drin sein dürften. :)
MAKE.BAT
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.
09-06-2010-dr235
================
Nach nur zwei Tagen hat drohne085 (frida) das Geheimnis um die Bootroutine
gelö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ö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ön kann
praktische Parallelverarbeitung sein... ;)
Hier nun eine neue und aktuelle Version mit einer temporären funktionierenden
Lösung des Problems.
Im System-Ordner gibt es jetzt folgende ausführbare Administra-Dateien:
admflash.adm Standard-Flash, welches auch im EEProm gespeichert ist
admini.adm Mini-Flash ohne Sound, nor SDCard + Managment-Routinen
admled.adm Das Heartbeat-LED-Testprogramm zum direkten laden
aterm96.adm Die leicht modifizierte Kommandozeile vom Programmierer der
FATEngine. Mit diesem Administra-Code kann man direkt über die
Hostschnittstelle (9600 Baud) mit dem Chip kommunizieren.
Dokumentation der Kommandos findet man im Verzeichnis
"komponenten/fat/fatengine beta"
07-06-2010-dr235
================
Hier der aktuelle Stand von TriOS. Momentan kämpfe ich an einem
Komplexfehler mit dem Bootloader von Administra. Das Problem ist recht
einfach zu reproduzieren, aber leider (für mich) nur schwer zu
erfasen: Die verwendete FATEngine besitzt eine Bootfunktion um einen
neuen BIN-Objektcode in den Propeller zu laden. Dieser Code funktioniert
auch teilweise. So kann man das Administra-Bios selbst laden und dann
auch per Regime-Kommandos verwenden: Die Kommandos "cogs" und "sysinfo"
sprechen Administra-Funktionen an, welche auch korrekt ausgeführt werden.
Das Problem: Nach dem Bootprozess kann man keine SD-Card mehr mounten.
Es ist auch möglich den Fehler noch weiter einzugrenzen: Wenn man die
originale FATEngine (im Verzeichnis komponenten/fat) vom Host direkt in
Administra startet, meldet sich diese in Form einer einfachen Kommando-
zeile per Hostschnittstelle. Versucht man dort eine erzeugte BIN-Datei
genau dieser Kommandozeile (demo.spin) zu booten, so hat man das gleiche
Ergebnis.
Verzeichnisstruktur:
bin - BIN-Dateien für die Flash's und die SD-Card
doku -
flash - Quelltexte für die Software in den EEProms
system - Quelltext für ausführbare BIN-Dateien
zubehör - Kleine Zusatzprogramme (StarTracker, Boulder Dash...)
komponenten - Div. verwendete Objekte (FATEngine, SIDCog...)
Installation:
1. Flashen der drei EEProms mit den BIN-Dateien aus "bin/flash" oder
über das Propellertool aus den Quellen "flash".
2. SD-Card erstellen: Einfach alles aus "bin/sd-card" auf eine FAT16/32
Karte kopieren.
Das System bootet Regnatix und Bellatrix beim Systemstart aus den Dateien
"adm.sys", "reg.sys" bzw. "bel.sys". Diese Dateien können auch das Hidden-
Bit gesetzt haben. Externe Kommandos bzw. ausführbare BIN-Dateien werden
im aktuellen UND im System-Verzeichnis gesucht - alle Systemkommandos
können also in das System-Verzeichnis kopiert werden.
Hilfe gibt es meist über das Kommando "help" oder den Parameter "/h".

138
NETZWERK.md Normal file
View File

@ -0,0 +1,138 @@
################
# TriOS Netzwerk
################
Einleitung
==========
Diese Version von TriOS beinhaltet eine Implementierung von Netzwerk-
Funktionen. Als erste Anwendungen sind enthalten:
- Ein FTP-Client, welcher Dateien von einem FTP-Server downloaden und in der
RAM-Disk im eRAM oder auf SD-Card abspeichern kann.
- Ein vollständiger IRC-Client
Zukünftige Erweiterungen, wie die Integration in Regime und direktes Starten
von Programmen aus dem Netzwerk sind geplant.
Implementierung
===============
Beim Compilieren mit make.bat/make.sh wird ein Administra-Code erstellt,
welcher direkt geflasht werden kann oder zur Laufzeit geladen wird
(admnet.bin). Grundlage ist eine Erweiterung um die unveränderten Netzwerk-
Treiber von Harrison Pham.
Für die Kommunikation über den Hive-Bus wurden die wesentlichen Funktionen
des Netzwerk-Treibers zur Verfügung gestellt. Die Implementierung weiterer
Funktionen des Original-Treibers ist bei Bedarf möglich.
Die IP-Konfiguration des Hive wird im NVRAM des RTC gespeichert. Das hat
den Vorteil, daß der Hive zukünftig auch ganz ohne SD-Card arbeiten kann,
also quasi aus dem Netzwerk bootet. Ist kein RTC vorhanden (wird automatisch
erkannt), erfolgt das Speichern der Konfiguration auf der SD-Card unter
/system/nvram.sav.
Nutzung
=======
Allgemeines
-----------
Der Netzwerk-Stack in Administra wird erst gestartet, wenn er benötigt wird.
Auch danach sollte man sich nicht wundern, daß der Hive nicht per Ping
angesprochen werden kann: Aus Platzgründen enthält der Netzwerk-Stack keinen
ICMP-Code. Dieser könnte auf Wunsch aber recht einfach hinzugefügt werden.
Administra
----------
Voraussetzung ist, daß Administra mit dem Netzwerk-Code läuft. Das geschieht
entweder durch direktes Flashen von admnet.bin oder durch Eingabe von
"admnet" am Regime-Prompt.
IP-Konfiguration
----------------
Mittels "ipconfig" wird die IP-Konfiguration im NVRAM oder als Datei abgelegt.
Folgende Parameter kennt ipconfig:
/? : Hilfe
/l : Konfiguration anzeigen
/a <a.b.c.d> : IP-Adresse setzen
/m <x.x.x.x> : Netzwerk-Maske setzen
/g <e.f.g.h> : Gateway setzen
/d <i.j.k.l> : DNS-Server setzen
/b <m.n.o.p> : Boot-Server setzen
/i <Id> : Hive-Id setzen
Aus der Hive-Id wird eine eindeutige Mac-Adresse erzeugt.
DNS-Abfragen werden noch nicht unterstützt, deswegen muß man den DNS-Server
nicht konfigurieren. Der Boot-Server wird derzeit vom FTP-Client als Default-
Server genutzt (s.u.).
FTP-Client
----------
Der FTP-Client ist aktuell eine sehr einfache Implementierung und dient primär
zum Testen der Funktion des Netzwerk-Stacks.
Der Download funktioniert nur, wenn der FTP-Server das Kommando "SIZE"
versteht. Obwohl das kein Standard-Kommando ist, wird es von den meisten
FTP-Servern unterstützt. Außerdem wird nur passives FTP verwendet.
Folgende Parameter kennt der FTP-Client:
/h <a.b.c.d> : FTP-Server-Adresse (Host)
(default: mit ipconfig gesetzter Boot-Server)
/d <verzeichnis>: in entferntes Verzeichnis wechseln
(default: /hive/sdcard/system)
/f <dateiname> : Download <dateiname> (/f optional)
/u <username> : Benutzername am FTP-Server
(default: anonymous)
/p <password> : Paßwort am FTP-Server
(default: anonymous@hive<Hive-Id>)
/s : Datei auf SD-Card speichern
Dabei ist zu beachten, daß auf Grund der fehlenden Namensauflösung die IP-
Adresse und nicht der Host-Name des Servers angegeben wird. Weitere
Einschränkungen ergeben sich durch die maximale Parameter-Länge von 64
Zeichen in Regime und maximal 12 Zeichen lange Dateinamen in der RAM-Disk.
Ein Beispiel:
Zum Download von ftp://1.2.3.4/verzeichnis/unterverzeichnis/datei.txt
verwendet man folgende Befehlszeile:
ftp /h 1.2.3.4 /d /verzeichnis/unterverzeichnis /f datei.txt
Dabei erfolgt die Anmeldung wegen der fehlenden Parameter /u und /p als
"anonymous" mit dem Paßwort "anonymous@hivexxx" (xxx: mit ipconfig gesetzte
Hive-Id). Die Datei wird in der RAM-Disk gespeichert (s. Kommando "xdir")
und könnte mittels "xsave" auf SD-Card gespeichert werden.
Mit Nutzung aller Default-Werte genügt die Eingabe des folgenden Befehls:
ftp /s ipconfig.bin
Damit wird die Datei "ipconfig.bin" vom FTP-Server mit der IP-Adresse
des mittels "ipconfig" konfigurierten Boot-Servers aus dem Verzeichnis
"/hive/sdcard/system" geladen und im aktuellen Verzeichnis auf der SD-Card
abgespeichert. Von dort könnte sie direkt gestartet werden.
IRC-Client
----------
siehe IRC-CLIENT.md
Schlußbemerkung
===============
Fragen können im Hive-Forum (http://hive-project.de/board/) gestellt werden
oder direkt an joergd@bitquell.de
Viel Spaß - Jörg

View File

@ -1,275 +0,0 @@

1. Installation des Grundsystems
2. Regime im Überblick
3. Forth im Überblick
1. Installation des Grundsystems:
=================================
TriOS kann in zwei Versionen installiert werden: Mit oder ohne Forth als integrierte Programmiersprache. Als Standard wird das System ohne Forth installiert. Die Installation ist so für den Einsteiger einfacher. Möchte man auch PropForth installieren, muß nur eine Konfiguration geändert werden und ein Basiswortschatz im Forth selbst kompiliert werden.
WICHTIG: Das System kann nur mit Brat's Spin Tool - kurz BST - compiliert werden. In den Einstellungen des Compilers (Tools/Compiler Preferences/Search Paths) muss das lib-Verzeichnis eingetragen werden.
Downloadlink BST: http://www.fnarfbargle.com/bst.html
Installation ohne Forth (Standard):
-----------------------------------
1. Mikrocontroller flashen:
\flash\administra\admflash.spin --> Administra
\flash\bellatrix\belflash.spin --> Bellatrix
\flash\regnatix\regflash.spin --> Regnatix
Installation mit Forth:
-----------------------
1. Mikrocontroller flashen:
\flash\administra\admflash.spin --> Administra
\flash\bellatrix\belflash.spin --> Bellatrix
\flash\regnatix\regflash.spin --> Regnatix
2. Der Schalter bleibt ab jetzt auf Regnatix stehen. Ein Terminalprogramm (ich verwende Tera Term) starten und 57600 Baud auf die Schnittstelle vom Hive (DIP steht auf Regnatix!) einstellen. Nach einem Reset meldet sich das Propforth im Terminalprogramm auf dem Hostcomputer. Datei "forth\basics.mod" in einem Editor öffnen, alles markieren, kopieren und im Terminal einfügen. Der Quelltext wird jetzt im Forth compiliert.
3. Im Terminalfenster, also im Forth, dass Kommendo "saveforth" eingeben. Damit wird das gesamte Forthsystem mit der gerade neu compilierten Erweiterungen wieder im EEPROM als Image gespeichert.
Nach einem Reset sollte sich das Forth jetzt komplett mit seinem Prompt sowohl auf dem angeschlossenen VGA-Monitor, als auch im Terminal melden. Im Prinzip benötigen wir nun das Terminalprogramm nicht mehr und können direkt am Hive arbeiten. Später, wenn man in Forth programmiert, ist die vorhandene Terminalschnittstelle aber manchmal sehr nützlich.
Erstellen der SDCard:
---------------------
Im Prinzip kann jede normale FAT16/32 Karte verwendet werden. Lange Dateinamen werden nicht verwendet, Unterverzeichnisse sind kein Problem. Es ist sinnvoll, alle Dateien aus dem Verzeichnis "bin\sd-card\" auf die SD-Karte zu kopieren.
Das Verzeichnis "system" hat eine besondere Bedeutung: Hier sollten sich die Tools, Erweiterungen und Bibliotheken befinden. Im PropForth: Mit dem Kommando "sys name.f" kann aus jedem anderen Verzeichnis ohne Wechsel eine Datei name.f im Verzeichnis System geladen und compiliert werden.
Systemstart:
------------
Beim Systemstart wird immer das Forth aus dem EEPROM gestartet. So kann, wie mit den klassischen Homecomputern, sofort unkompliziert programmiert werden. Neben dem Forth gibt es im TriOS noch ein in Spin programmiertes Betriebssystem, welches sich dem Benutzer durch den Kommandointerpreter Regime präsentiert. Aus dem Forth kann diese mit dem Kommando "regime" gestartet werden. Im Gegenzug kann im laufenden Regime mit dem Kommando "forth" wieder zur integrierten Programmiersprache gewechselt werden.
Wurde TriOS ohne Forth installiert, wird der Loader aus dem EEPROM gestartet und sofort die Kommandozeile "Regime" aus der Datei reg.sys gestartet.
3. Regime im Überblick
======================
Da wir ja drei verschiedene Teilsystem in unserem Computer haben, muss Regime wissen, für welchen Chip eine ausführbare Datei bestimmt ist. Den Typ ausführbarer Dateien kann Regime automatisch anhand der Dateinamenserweiterung unterscheiden:
*.bin Regnatix-Code
*.bel Bellatrix-Code
*.adm Administra-Code
Dabei genügt es, den Namen ohne Erweiterung einzugeben. Dennoch kann es vorkommen, das man eine normale Spin-Datei mit einer beliebigen Erweiterung gespeichert hat. Diese Datei kann man dann mit den Kommandos rload, aload oder bload ganz gezielt in einen Chip laden.
<dateiname> - bin/adm/bel-datei wird gestartet
mount - SD-aufwerk mounten
unmount - SD-Laufwerk freigeben
dir wh - Verzeichnis anzeigen
type <sd:fn> - Anzeige einer Textdatei
aload <sd:fn> - Administra-Code laden
bload <sd:fn> - Bellatrix-Code laden
rload <sd:fn> - Regnatix-Code laden
del <sd:fn> - Datei löschen
cls - Bildschirm löschen
free - Anzeige des freien Speichers auf SD-Card
attrib <sd:fn> ashr - Dateiattribute ändern
cd <sd:dir> - Verzeichnis wechseln
mkdir <sd:dir> - Verzeichnis erstellen
rename <sd:fn1> <sd:fn2> - datei/verzeichnis umbenennen
format <volname> - SD-Laufwerk formatieren
reboot - Hive neu starten
sysinfo - Systeminformationen
color <0..7> - Farbe wählen
cogs - Belegung der COG's anzeigen
dmlist - Anzeige der Verzeichnis-Marker
dm <r/s/u/a/b/c> - Marker-Verzeichnis wechseln
dmset <r/s/u/a/b/c> - Marker setzen
dmclr <r/s/u/a/b/c> - Marker löschen
forth - Forth starten
Marker:
r - Marker für Root-Verzeichnis
s - Marker für System-Verzeichnis
u - Marker für User-Verzeichnis
a/b/c - Benutzerdefinierte Verzeichnismarker
Die r, s, u-Marker werden vom System automatisch gesetzt und intern verwendet.
RAMDISK:
xload <sd:fn> - Datei von SD-Laufwerk in RAM laden
xsave <x:fn> - Datei aus RAM auf SD-Laufwerk speichern
xdir - Verzeichnis im RAM anzeigen
xrename <x:fn1> <x:fn2> - Datei im RAM umbenennen
xdel <x:fn> - Datei im RAM löschen
xtype <x:fn> - Textdatei im RAM anzeigen
EXTERNE KOMMANDOS:
------------------
Die meisten Kommandozeilentools zeigen mit dem Parameter /? eine Liste der Optionen an.
sysconf - Systemeinstellungen
hplay - HSS-Player
wplay - WAV-Player
splay - SID-Player
yplay - Yamaha-Soundchip-Player
sfxtool - HSS-Soundeffekte erstellen
vga.bin - VGA 1024 x 768 Pixel, 64 x 24 Zeichen
htext.bin - VGA 1024 x 768 Pixel, 128 x 48 Zeichen
tv.bin - TV-Textmodus 40 x 13 Zeichen
2. Forth im Überblick:
======================
Einige nützliche Kommandos befinden sich in dem Modul tools.mod. In den meisten Fällen ist es sinnvoll dieses Modul mit der Befehlssequenz "sys tools.mod saveforth" fest im Forth einzubinden.
Wichtige Tastencodes:
---------------------
[ESC]-1 Screen 1, COG 1
[ESC]-2 Screen 2, COG 2
[ESC]-3 Screen 3, COG 3
[ESC]-b Break, Reset der aktuellen COG
[ESC]-r Reset, Neustart Regnatix
Wichtige Kommandos:
-------------------
load <name> - Datei laden und comilieren, Ausgabe Screen 3
dload <name> - wie load, aber Ausgabe aktueller Screen
sys <name> - Datei aus sys-Verzeichnis laden und compilieren
ls - Dateiliste
lsl - Dateiliste- Long-Format
cd <name> - in Verzeichniss wechseln
mount - SD-Card einbinden
unmount - SD-Card freigeben
words - Anzeige Wöterbuch
mod? - (tools.mod) Anzeige compilierter Erweiterungen
lib? - (tools.mod) Anzeige compilierter Bibliotheken
cog? - (tools.mod) Anzeige COG-Liste
cat <name> - (tools.mod) Ausgabe einer Textdatei
less <name> - (tools.mod) Zeilenweise Textausgabe
dm? - (tools.mod) Anzeige der Systemverzeichnisse
regime - CLI starten
aload <name> - Adminsitra-Code laden
bload <name> - Bellatrix-Code laden
spin <name> - Spin-Programm starten
Wichtige Dateien:
-----------------
Die Dateien *.mod und *.lib enthalten ganz normale Forth-Quelltexte. Damit hat man schnell eine Übersicht über die grobe Funktion dieser Quellen: Lib's sind halt reine Sammlungen von Worten zu einer bestimmten Funktionsgruppe und MOD's sind mehr oder weniger fertige und abgeschlossene Programme. Ein Beispiel:
Die Datei hss.lib enthält Worte um die HSS-Funktionen von Administra anzusprechen. Mit diesen Funktionen kann man nun ein Modul (Programm) wie einen HSS-Soundplayer schreiben.
Im Gegensatz dazu die Datei splay.mod: Mit diesem Modul wird ein HSS-Soundplayer ins System eingefügt, welcher Funktionen aus der hss.lib verwendet.
Die Datei benötigt man aber mehr oder weniger nur zur Entwicklung, ein fertiges Modul wie splay.mod enthält dann schon die die entsprechenden HSS-Worte die benötigt werden.
Die ifnot: ... Anweisung sorgt dabei dafür, dass keine Funktionen doppelt in das Wörterbuch compiliert werden. Das ist quasi ein verteiltes und fein granuliertes Konzept analog zu einer DLL. Die Forth-Version funktioniert dabei aber im Gegensatz zu DLL's nicht auf Bibliotheks-, sondern auf Funktionsebene.
*.mod Module, Forth-Erweiterungen für das System
*.lib Bibliotheken, grundlegende Wortsammlungen
*.adm Administra-Code (z.Bsp. admsid.adm für SIDCog-Code)
*.bel Bellatrix-Code
*.bin Spin-Code, im Normalfall zur Ausführung in Regnatix
basics.f - (mod:basics) Hive-Core für PropForth
ari.lib - (lib:ari) Zusätzliche arithmetische Funktionen
cog.lib - (lib:cog) Zusätzliche COG-Funktionen
adm.lib - (lib:adm) Administra-Chipmanagment-Funktionen
hss.lib - (lib:hss) Bibliothek für Hydra-Sound-System
sfx.lib - (lib:sfx) Soundeffekt-Bibliothek
wav.lib - (lib:wav) Wave-Soundbibliothek
bel.lib - (lib:bel) Bellatrix-Chipmanagment-Funktionen
key.lib - (lib:key) Tastatur-Bibliothek
scr.lib - (lib:scr) Screen-Bibliothek
sd0.lib - (lib:sd0) SD-Card-Bibliothek
debug.f - Nützliche Worte zur Fehlersuche und Entwicklung
rom.f - EEPROM-Dateisystem
tools.f - Nützliche Tools (cat, less, dm?...)
hplay.f - HSS-Player
wplay.f - WAV-Player
splay.f - SID-Player
Administra-Codedateien im SYS-Verzeichnis:
admled.adm Testprogramm - HBeat-LED blinken lassen
admsid.adm SidCog-Version (wird von splay benötigt)
admsys.adm Standardcode für ADM mit SD/HSS/WAV
admym.adm Yamaha-Soundchip-Version
aterm96.adm Mini-OS für Administra (Testzwecke)
Reset-Fehlercodes:
------------------
0011FFFF - stack overflow
0012FFFF - return stack overflow
0021FFFF - stack underflow
0022FFFF - return stack underflow
8100FFFF - no free cogs
8200FFFF - no free main memory
8400FFFF - fl no free main memory
8500FFFF - no free cog memory
8800FFFF - eeprom write error
9000FFFF - eeprom read error
.err-Fehlercodes:
-----------------
0 no error
1 fsys unmounted
2 fsys corrupted
3 fsys unsupported
4 not found
5 file not found
6 dir not found
7 file read only
8 end of file
9 end of directory
10 end of root
11 dir is full
12 dir is not empty
13 checksum error
14 reboot error
15 bpb corrupt
16 fsi corrupt
17 dir already exist
18 file already exist
19 out of disk free space
20 disk io error
21 command not found
22 timeout
23 parameter error

View File

@ -1,380 +0,0 @@
r56 - 11-05-2013-dr235
und weiter gehts mit dem frühjahresputz:
- umstellung administra-codes (admflash, admay, admsid) auf externe konstantendefinitionen
belflash:
- fehler im loader behoben
lib:
- gui-objekte für textoberfläche eingefügt:
gui-dlbox - listenbox für dateien
gui-input - einfaches eingabefenster
gui-pbar - hinweisdialog mit progress-bar (z.bsp. für kopieraktionen)
gui-wbox - warnbox mit auswahloptionen
system/regnatix:
- filemanager fm zugefügt
- metal-loader m zugefügt
- tool zum erstellen von tapes (mental-containerdateien) zugefügt
- wplay: kleinen darstellungsfehler behoben
- yplay: konstanten ausgelagert
system/sonstiges:
- manual zugefügt: error, fm
r55 - 15-04-2013-dr235
fällige aufräumarbeitem im quelltext:
- umstellung bildschirmcodes/g0-treiber auf externe konstantendefinitionen
- umstellung signaldefinitionen für belflash/g0key
- alle funktionsnummern für bella werden nun in lib\glob-con.spin verwaltet und gepflegt
- screeninit gibt jetzt keine kopfzeile mehr aus, geht jetzt über fensterfunktionen
- anpassung div. tools
system\regnatix\regime:
- leere eingaben werden jetzt ignoriert
- mit der Cursortaste kann jetzt der letzte Befehl wiederholt werden
r54 - 15-04-2013-dr235:
flash\admflash.spin
- grundlegende com-funktionen eingefügt
lib\reg-ios.spin
- com-funktionen
- ios.screeninit: kein logo im v-modus
system\administra\admay\admay.spin
- sd_dmput eingefügt
- sd_eof eingefügt
system\regnatix\admtest.spin
- korrektur bei fehlerhaftem screeninit
system\regnatix\beltest.spin
- menü eingefügt um einzelnen tests auszuführen
- anpassung an tv-modus
- neuer test für fensterfunktionen
system\regnatix
- tool man eingefügt
- umstrukturierung aller tool-hilfen an man
- anpassung der meisten tools an tv-modus
system\sonstiges
- man-hilfetexte eingefügt
r53 - 20.02.2013 dr235/u-held:
flash\admflash.spin
- scr-funktionen ausgefügt
flash\belflash.spin:
- fehler im loader behoben (cog0 wurde nicht in allen fällen beendet) dank dafür geht an pic :)
- farbtabellen auf 16 farben ergänzt, normalfarbe ist jetz mal retro-green :)
flash\regflash.spin:
- pause für slaves zur initialisierung eingefügt, damit diese bei installation ohne forth sauber starten
forth\bel.lib:
- korrektur wort bel:load
forth\sd0.lib:
- div. fehlerhafte stackkommentare korrigiert
forth\tools.lib:
- korrektur wort bel:load
forth\g0.lib: zugefügt
forth\tpix.f: zugefügt
forth\win.lib: zugefügt
lib\reg-ios.spin:
- fehler in g0 printdec behoben
- neue sidcog-funktion: sid_dmpreg
system\administra\admsid\admsid.spin:
- funktion sid_dmpreg eingefügt (für triborg-player)
- funktion sd_dmput aus maincode übernommen
- funktion sd_eof aus maincode übernommen
system\regnatix\g0test.spin:
- neue test's & effekte eingefügt
system\regnatix\sysconf.spin:
- "sysconf /ci" zeigt nun alle 16 farben an
system\sonstiges\green.col:
- grüne retro-farbtabelle eingefügt
r52:
g0key.spin - Bug bei horizontaler Textzentrierung beseitigt
belflash.spin - Interface VGA/TV vereinheitlicht, umschaltbar beim Compilieren (siehe make.bat)
belf-tv.spin, belf-vga.spin - treiberspezifische Konstanten und Funktionen für belflash.spin
bel-bus.spin - Auslagerung der Bus-Routinen aus Bellatrix-Sicht
beltest.spin - Anpassung an belflash.spin, auch im TV-Modus nutzbar
make.bat - tv.bel wird jetzt aus belflash.spin erzeugt; Einführung einer Variablen für den Compiler-Aufruf
reg-ios.spin - hmm... habsch vergessen, was da geändert wurde :-(
r51:
belflash.spin:
- verzögertes Scrolling bei abgeschaltetem Cursor
- Window-Funktionen
glob-con.spin:
- Auslagerung von globalen Konstanten (ansatzweise)
reg-ios.spin:
- Einbindung der neuen Bellatrix-Funktionen
beltest.spin:
- sline/eline-Test entfernt, Window-Test eingefügt
27.11.2011-dr235
- bellatrix-code für grafikmodus 0 + keyboard hinzugefügt
- g0test - testprogramm für g0-modus hinzugefügt
- reg-ios - g0-funktionen eingearbeitet
- make.bat angepasst
13.11.2011-dr235
- rtc-routinen neu eingefügt
- admterm entfernt, hat im trios keine funktion
11.11.2011-dr235
- umfangreicher umbau der verzeichnisstruktur: alle universellen quellen wie treiber oder klassische bibliotheken werden nun im verzeichnis "lib" gespeichert und können so an einer stelle gepflegt werden.
- alle anwendungen die nichts mit trios zu tun haben werden nun aus dem projekt entfernt und in einer toolbox-serie veröffentlicht. damit wird trios stark entschlackt und wieder übersichtlich.
- überarbeitung der make.bat; es werden nun auch die alternativen slave-codes wie zum beispiel admsid erstellt.
- in der standardkonfiguration ist jetzt forth deaktiviert - das ist einfacher für den einsteiger. forth ist dann "level 2".
WICHTIG: im bst muß nun der compiler-suchpfad für trios auf das verzeichnis "lib" eingestellt werden.
09.11.2011-dr235
- fehler in regflash.spin behoben, konfiguration ohne forth konnte nicht compiliert werden
- standartkonfiguration ist jetzt ohne forth, ist einfacher für den einstieg
- div. demos entfernt, diese werden später getrennt in einer toolbox-serie veröffentlicht
06.11.2011-dr235
- fehlersuche zum problem mit dem neuen bella-loader: einige bel-dateien (guidemo, 4-boing) wurden nicht korrekt initialisiert, also starteten nicht sauber. parameter und ladevorgang ist korrekt, ursache ist wahrscheinlich eine falsche initialisierung der stackwerte im pasm-teil des loaders. als lösung kann man diese bel-dateien als eeprom-image abspeichern, diese starten korrekt.
23.04.2011-dr235
- integration von propforth in trios
15-04-2011-dr235
- flash-tool/rom: damit kann unter anderem eine bin-datei (z. bsp. basic) in den hi-rom (64k eeprom erforderlich!) gespeichert und mit rom gestartet werden
- übernahme der rtc-routinen von stephan
- time-kommando: anzeige/änderung datum/zeit
- perplex: experimentelles tool für plexbus (scan/open/close/get/put)
- fterm: primitiv-terminal für forth-hive
18-09-2010-dr235
- regime: free zeigt jetzt auch die speicherbelegung des eram an
- speicherverwaltung/ramdisk integriert (beispielcode siehe eram.spin & regime.spin)
- eram.bin kann jetzt auch mit ramdisk umgehen
- regime: neue kommandos für ramdisk
- egalisierung der namen für den ramzugriff (älterer code muß leicht angepasst werden)
- user- und systemmode für ramzugriff eingefügt
- erste version eine make-batch um das gesamte system zu kompilieren (nur grundsystem)
- änderung zur ios: da bst eine pfadliste zu bibliotheksordnern unterstützt, liegt (soweit das möglich ist) die ios nun nur noch unter system\regnatix
WICHTIG: Pfad zur ios.spin im bst einstellen
23-08-2010-dr040
- integration ay-emulator (admay.adm) und yplay
19-07-2010-dr235
- booten eines alternativen administra-codes: befindet sich auf der karte in der root eine datei "adm.sys", so wird diese datei automatisch in administra geladen
11-07-2010-dr235
- integration sid1/2-funktionen in admsid/ios
- anpassung sid-demo von ahle2 als regnatix-code (verzeichnis demo)
- diverse graphics-spielereien (verzeichnis demo)
- sysconf /af - administra neu booten (admflash.adm wird dadurch überflüssig)
27-06-2010-dr085/235
- admin mountet nun automatisch nach einem boot
26-06-2010-dr235
- div. demos zugefügt
- shooter angepasst und eingefügt
20-06-2010-dr235
- erste lauffähige SID-Player-Version für die Kommandozeile (splay)
14-06-2010-dr085/235
- Semaphoren in FATEngine korrekt eingesetzt
- Abfrage des Volume-Labels korrigiert
10-06-2010-dr235
- Kommando "ramtest" zugefügt
09-06-2010-dr085
- Fehler in Administra-Bootfunktion behoben
-----------------------------------------------------------------------------------------------
23-04-2011-dr235
Ein neuer Meilenstein: PropForth ist jetzt in TriOS integriert. Als Nebeneffekt starten nun wieder, wie bei meiner ersten SpinOS-Version, alle drei Chips ihren initialen Code aus ihrem EEPROM und nicht mehr vom SD-Laufwerk. Damit gibt es vom Einschalten bis zum Forth-Prompt quasi keine fühlbare Bootzeit mehr. So gehört es sich für einen richtigen Homecomputer. Es ist nun möglich, unmittelbar nach dem Einschalten sofort zu programmieren. Erst wenn man zu Regime wechselt wird kurz reg.sys nachgeladen. Aber selbst die Ladezeiten sind nun durch Verwendung des SD-Blocktransfer erfreulich kurz.
Obwohl das Grundsystem vom Forth den halben hRAM belegt, ist es als genormte Sprache doch eine wunderbare Geschichte im Hive. Viele der Ressourcen sind jetzt schon problemlos in Forth nutzbar und man kann sehr unkompliziert experimentieren.
02-10-2010-dr235
Speicherverwaltung:
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.
Einfacher Modus:
Hierbei kann ein Programm auf den eRAM über 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 überschrieben 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ärts.
ios.ram_wrbyte(ios#sysmod,0,ios#MAGIC)
- Schreibt den Wert 0 in die Systemvariable, um einen Kaltstart auszulösen.
ios.ram_wrbyte(ios#sysmod,$20,$100)
- Schreibt den Wert $20 an die physische Adresse $100 im eRAM.
Da es nun mühsam 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.
ios.ram_wrbyte(ios#usrmod,0,$100)
- Schreibt den Wert 0 an die Adresse $100 im Userspeicher!
In Regime kann man mit dem Kommando "free" jetzt auch die wichtigsten Systemvariablen der Speicherverwaltung anzeigen.
RBAS
- erste physische Adresse des Userspeichers
REND
- Physische Adresse der letzten freien Speicherstelle des Userspeichers.
USER
- Grösse des Userspeichers (REND - RBAS).
RAMDRV
0 - Ramdisk ist nicht initialisiert
1 - Ramdisk ist initialisiert
SYSVAR
- Erste physische Adresse der Systemvariablen.
Noch genauer kann man sich die Speicherbelegung mit dem Tool "eram" anschauen. Nur ein paar Beispiele:
"d" Anzeige des Speichers. Es werden zwei Adressspalten angezeigt. Die zweite schwarze Adresse in jeder Zeile zeigt die physische Adresse, die erste grüne Adresse die virtuelle Adresse im Userspeicher. Man kann sehr gut erkennen, ab welcher Adrese der Userbereich anfängt und wo er endet.
"d 100" Anzeige ab physischer Adresse $100
"d bas" Anzeige vom Start des Userspeichers.
"n" Anzeige inkrementell fortsetzen
Die Nutzung des Userspeichers ist sehr einfach. Es sind dabei nur folgende Regeln zu beachten:
Man muss selbst darauf achten die Speichergrenzen nicht zu überschreiten. Bei Überschreitung 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ützt.
Der Userbereich im eRAM ist nur zur Laufzeit der Anwendung gültig. 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ändert. Wer also residente Daten über die Laufzeit der Anwendung hinaus braucht, muss im strukturierten Modus mit der Ramdisk arbeiten.
In einer Anwendung nicht den einfachen oder strukturierten Modus mischen - das gibt Chaos, wenn man nicht ganz genau aufpasst
Ansonsten kann man wie gehabt die schon bekannten IOS-Routinen verwenden, einzig der Übergabeparameter zur Wahl des System- oder Usermodus sind hinzugekommen. Als Beispiel kann man sich die Soundplayer anschauen, die ihre Dateiliste im Userspeicher ablegen.
Strukturierter Modus:
Was ist aber, wenn wir einen kleinen Texteditor schreiben wollen, der seine Textdaten resident im eRAM speichern kann? Ich möchte also den Texteditor verlassen können, um in Regime zum Beispiel einen Assembler aufzurufen, welcher den Text dann assembliert. Darauf folgend möchte ich meinen Texteditor wieder starten und an dem Text weiter arbeiten. Dafür muss es meiner Anwendung - dem Textprogramm - möglich sein, einen Speicherbereich im eRAM zu reservieren, der von System und anderen Anwendungen respektvoll behandelt wird.
Gedacht, getan: Im strukturierten Modus wird der Speicher in Form einer Ramdisk verwaltet. Die Dateien/Daten können über ihren Namen angesprochen werden. Es kann mit put & get sequentiell, oder mit read & write direkt adressierbar auf die Daten in der Datei zugegriffen werden.
Als erstes praktisches Beispiel mögen die neuen Kommandos in Regime selbst dienen, mit denen man die Ramdisk verwalten kann:
Neue Regime-Kommandos:
xload <sd:fn> - datei in ram laden
xsave <x:fn> - datei aus ram speichern
xdir - verzeichnis im ram anzeigen
xrename <x:fn1> <x:fn2> - datei im ram umbenennen
xdel <x:fn> - datei im ram löschen
xtype <x:fn> - text im ram anzeigen
So ist es also möglich, sich in der Kommandozeile anzuschauen, welche residenten Daten die Programme aktuell angelegt haben. Sofern es Textdaten sind, können diese Daten auch einafch angezeigt werden.
Die Speicherverwaltung ist allerdings noch sehr experimentell - was bedeutet, dass wohl noch einige Bugs drin sein dürften. :)
MAKE.BAT
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.
09-06-2010-dr235
Nach nur zwei Tagen hat drohne085 (frida) das Geheimnis um die Bootroutine gelö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ö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ön kann praktische Parallelverarbeitung sein... ;)
Hier nun eine neue und aktuelle Version mit einer temporären funktionierenden Lösung des Problems.
Im System-Ordner gibt es jetzt folgende ausführbare Administra-Dateien:
admflash.adm Standard-Flash, welches auch im EEProm gespeichert ist
admini.adm Mini-Flash ohne Sound, nor SDCard + Managment-Routinen
admled.adm Das Heartbeat-LED-Testprogramm zum direkten laden
aterm96.adm Die leicht modifizierte Kommandozeile vom Programmierer der FATEngine. Mit
diesem Administra-Code kann man direkt über die Hostschnittstelle (9600 Baud)
mit dem Chip kommunizieren. Dokumentation der Kommandos findet man im
Verzeichnis "komponenten/fat/fatengine beta"
07-06-2010-dr235
Hier der aktuelle Stand von TriOS. Momentan kämpfe ich an einem
Komplexfehler mit dem Bootloader von Administra. Das Problem ist recht
einfach zu reproduzieren, aber leider (für mich) nur schwer zu
erfasen: Die verwendete FATEngine besitzt eine Bootfunktion um einen
neuen BIN-Objektcode in den Propeller zu laden. Dieser Code funktioniert
auch teilweise. So kann man das Administra-Bios selbst laden und dann
auch per Regime-Kommandos verwenden: Die Kommandos "cogs" und "sysinfo"
sprechen Administra-Funktionen an, welche auch korrekt ausgeführt werden.
Das Problem: Nach dem Bootprozess kann man keine SD-Card mehr mounten.
Es ist auch möglich den Fehler noch weiter einzugrenzen: Wenn man die
originale FATEngine (im Verzeichnis komponenten/fat) vom Host direkt in
Administra startet, meldet sich diese in Form einer einfachen Kommando-
zeile per Hostschnittstelle. Versucht man dort eine erzeugte BIN-Datei
genau dieser Kommandozeile (demo.spin) zu booten, so hat man das gleiche
Ergebnis.
Verzeichnisstruktur:
bin - BIN-Dateien für die Flash's und die SD-Card
doku -
flash - Quelltexte für die Software in den EEProms
system - Quelltext für ausführbare BIN-Dateien
zubehör - Kleine Zusatzprogramme (StarTracker, Boulder Dash...)
komponenten - Div. verwendete Objekte (FATEngine, SIDCog...)
Installation:
1. Flashen der drei EEProms mit den BIN-Dateien aus "bin/flash" oder
über das Propellertool aus den Quellen "flash".
2. SD-Card erstellen: Einfach alles aus "bin/sd-card" auf eine FAT16/32
Karte kopieren.
Das System bootet Regnatix und Bellatrix beim Systemstart aus den Dateien
"adm.sys", "reg.sys" bzw. "bel.sys". Diese Dateien können auch das Hidden-Bit gesetzt
haben. Externe Kommandos bzw. ausführbare BIN-Dateien werden im aktuellen
UND im System-Verzeichnis gesucht - alle Systemkommandos können also in das
System-Verzeichnis kopiert werden.
Hilfe gibt es meist über das Kommando "help" oder den Parameter "/h".

View File

@ -2,49 +2,56 @@ echo on
date /T
time /T
REM Pfade
set sd=".\bin\sdcard"
set sd-sys=".\bin\sdcard\system"
set flash=".\bin\flash"
set libpath=".\lib"
REM # Definitionen
REM set D="-D __DEBUG -D __LANG_EN"
REM set D="-D __LANG_EN"
set D="-D __LANG_DE"
REM # Pfade
set bin="..\Bin"
REM bin="\home\ftp\hive"
set sd="%bin%\sdcard"
set sdsys="%sd%\system"
set flash="%bin%\flash"
set libpath="lib"
set BSTC=bstc.exe
REM ----------------------------------------------------------------
REM Alte Versionen löschen
del %flash%\*.* /Q
del %sd%\*.* /Q
del %sd-sys%\*.* /Q
rmdir %bin% /S /Q
mkdir %sdsys%
mkdir %flash%
REM ----------------------------------------------------------------
REM Flashdateien erzeugen
REM --> \bin\flash
%BSTC% -L %libpath% -b -O a .\flash\administra\admflash.spin
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_HSS -D __ADM_HSS_PLAY -D __ADM_WAV -D __ADM_RTC -D __ADM_COM -b -O a .\flash\administra\admflash.spin
copy admflash.binary %flash%
rename admflash.binary admsys.adm
move admsys.adm %sd-sys%
move admflash.binary %sdsys%\admsys.adm
%BSTC% -L %libpath% -D __VGA -b -O a .\flash\bellatrix\belflash.spin
%BSTC% -L %libpath% %D% -D __VGA -b -O a .\flash\bellatrix\belflash.spin
copy belflash.binary %flash%
rename belflash.binary vga.bel
move vga.bel %sd-sys%
move belflash.binary %sdsys%\vga.bel
%BSTC% -L %libpath% -D __TV -b -O a .\flash\bellatrix\belflash.spin
rename belflash.binary tv.bel
move tv.bel %sd-sys%
%BSTC% -L %libpath% %D% -D __TV -b -O a .\flash\bellatrix\belflash.spin
move belflash.binary %sdsys%\tv.bel
%BSTC% -L %libpath% -b -O a .\flash\regnatix\regflash.spin
%BSTC% -L %libpath% %D% -D regime -b -O a .\flash\regnatix\regflash.spin
move regflash.binary %flash%
%BSTC% -L %libpath% %D% -D forth -b -O a .\flash\regnatix\regflash.spin
move regflash.binary %flash%\regforth.binary
REM ----------------------------------------------------------------
REM Startdateie erzeugen
REM reg.sys (Regime)
REM --> \bin\sdcard\
%BSTC% -L %libpath% -b -O a .\system\regnatix\regime.spin
rename regime.binary reg.sys
move reg.sys %sd%
%BSTC% -L %libpath% %D% -b -O a .\system\regnatix\regime.spin
move regime.binary %sd%\reg.sys
REM ----------------------------------------------------------------
@ -52,17 +59,17 @@ REM Slave-Dateien erzeugen
REM admsid, admay, admterm
REM htxt, g0key
%BSTC% -L %libpath% -b -O a .\system\administra\admsid\admsid.spin
%BSTC% -L %libpath% -b -O a .\system\administra\admay\admay.spin
rename *.binary *.adm
%BSTC% -L %libpath% -b -O a .\system\bellatrix\bel-htext\htext.spin
%BSTC% -L %libpath% -b -O a .\system\bellatrix\bel-g0\g0key.spin
rename *.binary *.bel
move *.adm %sd-sys%
move *.bel %sd-sys%
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_SID -b -O a .\flash\administra\admflash.spin
move admflash.binary %sdsys%\admsid.adm
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_AYS -b -O a .\flash\administra\admflash.spin
move admflash.binary %sdsys%\admay.adm
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_HSS -D __ADM_LAN -D __ADM_RTC -D __ADM_COM -b -O a .\flash\administra\admflash.spin
move admflash.binary %sdsys%\admnet.adm
%BSTC% -L %libpath% %D% -b -O a .\system\bellatrix\bel-htext\htext.spin
move htext.binary %sdsys%\htext.bel
%BSTC% -L %libpath% %D% -b -O a .\system\bellatrix\bel-g0\g0key.spin
move g0key.binary %sdsys%\g0key.bel
REM ----------------------------------------------------------------
REM Systemdateien erzeugen
@ -70,10 +77,10 @@ REM - div. externe Kommandos
REM - div. Systemdateien (Farbtabellen usw.)
REM --> \bin\sdcard\system\
for %%x in (.\system\regnatix\*.spin) do %BSTC% -L %libpath% -b -O a %%x
for %%x in (.\system\regnatix\*.spin) do %BSTC% -L %libpath% %D% -b -O a %%x
rename *.binary *.bin
move *.bin %sd-sys%
copy .\forth\*.* %sd-sys%
copy .\system\sonstiges %sd-sys%
move *.bin %sdsys%
copy .\forth\*.* %sdsys%
copy .\system\sonstiges %sdsys%
echo off

View File

@ -1,6 +1,6 @@
echo off
echo Erstelle TriOS...
call make.bat > make.log
call make.bat > ..\make.log
echo Fertig!
pause