change windows build scripts, add readmes
This commit is contained in:
parent
4ab67599f0
commit
a2c50eb15b
|
@ -0,0 +1,5 @@
|
||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
*.bat text eol=crlf
|
|
@ -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
|
|
@ -12,7 +12,7 @@ Einleitung
|
||||||
==========
|
==========
|
||||||
|
|
||||||
Dies ist ein IRC-Client für den Hive (http://hive-project.de). Er sollte auf
|
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,
|
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
|
welches aus einer Propeller-basierten Hardware ausschließlich für diesen Zweck
|
||||||
|
@ -27,23 +27,18 @@ Funktionalitäten dar.
|
||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
Der Hive IRC-Client ist Bestandteil des TriOS Netzwerk-Paketes. Die aktuellste
|
Der Hive IRC-Client ist Bestandteil von TriOS und wird bei dessen Installation
|
||||||
Version steht immer im ersten Beitrag des zugehörigen Forum-Threads unter
|
ins System-Verzeichnis der SD-Karte installiert.
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
Testserver
|
Empfohlener Server
|
||||||
==========
|
==================
|
||||||
|
|
||||||
Für erste Versuche mit IRC steht ein eigener Server zur Verfügung. Dieser kann
|
Auf German-Elite existiert ein IRC-Channel für den Hive. Dieser kann wie folgt
|
||||||
wie folgt erreicht werden:
|
erreicht werden:
|
||||||
|
|
||||||
IRC-Server (IP-Adresse:Port): 88.198.147.76:6667
|
IRC-Server (Hostname:Port): irc.german-elite.net:6667
|
||||||
nutzbarer Channel: #Hive
|
nutzbarer Channel: #hive
|
||||||
|
|
||||||
|
|
||||||
Nutzung
|
Nutzung
|
||||||
|
@ -52,15 +47,18 @@ Nutzung
|
||||||
Start
|
Start
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Vor dem Start des IRC-Clients muß in Administra der Netzwerk-Code geladen sein.
|
Der IRC-Client benötigt den Netzwerk-Code in Administra. Dieser kann direkt in
|
||||||
Dies geschieht durch direktes Flashen in Administra oder durch Eingabe von
|
Administra geflasht oder durch Eingabe von "admnet" geladen werden. Beim Start
|
||||||
"admnet". Außerdem muß der Hive natürlich an ein Netzwerk mit Internet-
|
prüft der IRC-Client das Vorhandensein der Netzwerk-Funktionalitäten. Sind
|
||||||
Verbindung angeschlossen sein und mittels "ipconfig" entsprechend konfiguriert
|
diese nicht vorhanden, wird automatisch versucht, "/system/admnet.adm" von der
|
||||||
werden.
|
SD-Card zu laden.
|
||||||
|
|
||||||
Der Start erfolgt dann einfach durch Eingabe von "irc" am Regime-Prompt. Nach
|
Außerdem muß der Hive natürlich an ein Netzwerk mit Internet-Verbindung
|
||||||
dem ersten Start wird automatisch die Konfiguration aufgerufen. Nach Eingabe
|
angeschlossen sein und mittels "ipconfig" entsprechend konfiguriert werden.
|
||||||
der erforderlichen Parameter (s.u.) werden diese gespeichert. Nun kann mittels
|
|
||||||
|
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.
|
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
|
Das aktive Fenster wird jeweils hervorgehoben und kann mittels Tabulator-Taste
|
||||||
umgeschalten werden. Im aktiven Fenster kann mittels Cursor hoch/runter
|
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
|
Die Bedienung erfolgt durch Betätigung der Funktionstasten oder die Eingabe
|
||||||
von Befehlen im EingabeFenster (s.u.). Alle Befehle beginnen mit einem
|
von Befehlen im EingabeFenster (s.u.). Alle Befehle beginnen mit einem
|
||||||
Schrägstrich (/).
|
Schrägstrich (/).
|
||||||
|
|
||||||
Beim Erscheinen einer neuen Mitteilung im aktuellen Kanal blinkt die Regnatix-
|
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
|
Befehlsübersicht
|
||||||
|
@ -99,6 +98,8 @@ Befehlsübersicht
|
||||||
F9 /quit Verbindung zu Server trennen
|
F9 /quit Verbindung zu Server trennen
|
||||||
F10 Programm beenden
|
F10 Programm beenden
|
||||||
/msg Private Mitteilung (/msg <Empfänger> <Text>)
|
/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>)
|
/srv Mit Server verbinden und anmelden (srv <IP:Port>)
|
||||||
/save Einstellungen speichern
|
/save Einstellungen speichern
|
||||||
Tab Fenster umschalten, Scrollen mit Cursor hoch/runter
|
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
|
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
|
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.
|
definierte Wert.
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
- offene Eingabefenster blockieren nicht den IRC-Empfang
|
|
||||||
- Support für mehrere gleichzeitige Channel
|
- Support für mehrere gleichzeitige Channel
|
||||||
- Scrollen auch im Eingabe-Fenster
|
|
|
@ -5,7 +5,7 @@ Der Hive ist ein Open-Hardware und Free-Software DIY-Computersystem auf
|
||||||
der Basis von drei Parallax P8X32 "Propeller" Mikrocontrollern.
|
der Basis von drei Parallax P8X32 "Propeller" Mikrocontrollern.
|
||||||
|
|
||||||
|
|
||||||
Lizenze
|
Lizenz
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Das Betriebssystem TriOS steht unter MIT-Lizenz. Die Schaltung und das
|
Das Betriebssystem TriOS steht unter MIT-Lizenz. Die Schaltung und das
|
||||||
Board-Layout ist unter Creative-Commons CC-BY-SA 3.0 lizensiert.
|
Board-Layout ist unter Creative-Commons CC-BY-SA 3.0 lizensiert.
|
|
@ -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".
|
|
@ -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
|
275
installation.txt
275
installation.txt
|
@ -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
|
|
380
logbuch.txt
380
logbuch.txt
|
@ -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".
|
|
77
make.bat
77
make.bat
|
@ -2,49 +2,56 @@ echo on
|
||||||
date /T
|
date /T
|
||||||
time /T
|
time /T
|
||||||
|
|
||||||
REM Pfade
|
REM # Definitionen
|
||||||
set sd=".\bin\sdcard"
|
REM set D="-D __DEBUG -D __LANG_EN"
|
||||||
set sd-sys=".\bin\sdcard\system"
|
REM set D="-D __LANG_EN"
|
||||||
set flash=".\bin\flash"
|
set D="-D __LANG_DE"
|
||||||
set libpath=".\lib"
|
|
||||||
|
|
||||||
|
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
|
set BSTC=bstc.exe
|
||||||
|
|
||||||
REM ----------------------------------------------------------------
|
REM ----------------------------------------------------------------
|
||||||
REM Alte Versionen löschen
|
REM Alte Versionen löschen
|
||||||
|
|
||||||
del %flash%\*.* /Q
|
rmdir %bin% /S /Q
|
||||||
del %sd%\*.* /Q
|
mkdir %sdsys%
|
||||||
del %sd-sys%\*.* /Q
|
mkdir %flash%
|
||||||
|
|
||||||
REM ----------------------------------------------------------------
|
REM ----------------------------------------------------------------
|
||||||
REM Flashdateien erzeugen
|
REM Flashdateien erzeugen
|
||||||
REM --> \bin\flash
|
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%
|
copy admflash.binary %flash%
|
||||||
rename admflash.binary admsys.adm
|
move admflash.binary %sdsys%\admsys.adm
|
||||||
move admsys.adm %sd-sys%
|
|
||||||
|
|
||||||
%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%
|
copy belflash.binary %flash%
|
||||||
rename belflash.binary vga.bel
|
move belflash.binary %sdsys%\vga.bel
|
||||||
move vga.bel %sd-sys%
|
|
||||||
|
|
||||||
%BSTC% -L %libpath% -D __TV -b -O a .\flash\bellatrix\belflash.spin
|
%BSTC% -L %libpath% %D% -D __TV -b -O a .\flash\bellatrix\belflash.spin
|
||||||
rename belflash.binary tv.bel
|
move belflash.binary %sdsys%\tv.bel
|
||||||
move tv.bel %sd-sys%
|
|
||||||
|
|
||||||
%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%
|
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 ----------------------------------------------------------------
|
||||||
REM Startdateie erzeugen
|
REM Startdateie erzeugen
|
||||||
REM reg.sys (Regime)
|
REM reg.sys (Regime)
|
||||||
REM --> \bin\sdcard\
|
REM --> \bin\sdcard\
|
||||||
|
|
||||||
%BSTC% -L %libpath% -b -O a .\system\regnatix\regime.spin
|
%BSTC% -L %libpath% %D% -b -O a .\system\regnatix\regime.spin
|
||||||
rename regime.binary reg.sys
|
move regime.binary %sd%\reg.sys
|
||||||
move reg.sys %sd%
|
|
||||||
|
|
||||||
|
|
||||||
REM ----------------------------------------------------------------
|
REM ----------------------------------------------------------------
|
||||||
|
@ -52,17 +59,17 @@ REM Slave-Dateien erzeugen
|
||||||
REM admsid, admay, admterm
|
REM admsid, admay, admterm
|
||||||
REM htxt, g0key
|
REM htxt, g0key
|
||||||
|
|
||||||
%BSTC% -L %libpath% -b -O a .\system\administra\admsid\admsid.spin
|
%BSTC% -L %libpath% %D% -D __ADM_FAT -D __ADM_SID -b -O a .\flash\administra\admflash.spin
|
||||||
%BSTC% -L %libpath% -b -O a .\system\administra\admay\admay.spin
|
move admflash.binary %sdsys%\admsid.adm
|
||||||
rename *.binary *.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% -b -O a .\system\bellatrix\bel-htext\htext.spin
|
%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
|
||||||
%BSTC% -L %libpath% -b -O a .\system\bellatrix\bel-g0\g0key.spin
|
move admflash.binary %sdsys%\admnet.adm
|
||||||
rename *.binary *.bel
|
|
||||||
|
|
||||||
move *.adm %sd-sys%
|
|
||||||
move *.bel %sd-sys%
|
|
||||||
|
|
||||||
|
%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 ----------------------------------------------------------------
|
||||||
REM Systemdateien erzeugen
|
REM Systemdateien erzeugen
|
||||||
|
@ -70,10 +77,10 @@ REM - div. externe Kommandos
|
||||||
REM - div. Systemdateien (Farbtabellen usw.)
|
REM - div. Systemdateien (Farbtabellen usw.)
|
||||||
REM --> \bin\sdcard\system\
|
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
|
rename *.binary *.bin
|
||||||
move *.bin %sd-sys%
|
move *.bin %sdsys%
|
||||||
copy .\forth\*.* %sd-sys%
|
copy .\forth\*.* %sdsys%
|
||||||
copy .\system\sonstiges %sd-sys%
|
copy .\system\sonstiges %sdsys%
|
||||||
|
|
||||||
echo off
|
echo off
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
echo off
|
echo off
|
||||||
echo Erstelle TriOS...
|
echo Erstelle TriOS...
|
||||||
call make.bat > make.log
|
call make.bat > ..\make.log
|
||||||
echo Fertig!
|
echo Fertig!
|
||||||
pause
|
pause
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue