This commit is contained in:
parent
0effa99b04
commit
09f10f9549
|
@ -0,0 +1,234 @@
|
|||
|
||||
1. Installation des Grundsystems
|
||||
2. Forth im Überblick
|
||||
3. Regime im Überblick
|
||||
|
||||
|
||||
|
||||
|
||||
1. Installation des Grundsystems:
|
||||
|
||||
TriOS kann in zwei Versionen instaliert 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.
|
||||
|
||||
Download BST: http://www.fnarfbargle.com/bst.html
|
||||
|
||||
Installation ohne Forth (Standard):
|
||||
|
||||
\flash\administra\admflash.spin --> Administra
|
||||
\flash\bellatrix\belflash.spin --> Bellatrix
|
||||
\flash\regnatix\regflash.spin --> Regnatix
|
||||
|
||||
Installation mit Forth:
|
||||
|
||||
\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 einstellen. Nach einem Reset meldet sich das Propforth im Terminal. Datei "system\basics.mod" in einem Editor öffnen, alles markieren, kopieren und im Terminal einfügen. Der Quelltext wird jetzt im Forth compiliert.
|
||||
|
||||
3. Im Terminalfenster, aso 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. Mit dem Kommando "sys name.f" kann aus jedem anderen Verzeichnis ohne Wechsel die Datei name.f 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.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,738 @@
|
|||
''*****************************
|
||||
''* Hydra Sound System v1.2 *
|
||||
''* (C)2007 Andrew Arsenault *
|
||||
''*****************************
|
||||
''http://www.andrewarsenault.com/hss/
|
||||
''e-mail: ym2413a@yahoo.com
|
||||
''
|
||||
'' Cogs used: 2
|
||||
'' HUB-RAM: ~2.7k
|
||||
|
||||
'' Please visit the website for the latest version, documentation, examples and media files.
|
||||
'' Thank you! --Ym2413a
|
||||
|
||||
'' 25.01.2009 Anpassungen für ein komfortableres Interface zur Visualisierung und Steuerung
|
||||
|
||||
CON
|
||||
#0, iEndFlag 'Repeat oder Ende wurde erreicht
|
||||
iRowFlag 'Flag das Songzeile fertig ist
|
||||
iEngineC 'Patternzähler
|
||||
iBeatC 'Beatzähler
|
||||
iRepeat 'zähler für loops
|
||||
#5, iChannel
|
||||
#5, iChannel1
|
||||
#10, iChannel2
|
||||
#15, iChannel3
|
||||
#16, iChannel4
|
||||
#0, iNote
|
||||
iOktave
|
||||
iVolume
|
||||
iEffekt
|
||||
iInstrument
|
||||
|
||||
VAR
|
||||
|
||||
'Interface
|
||||
word intreg[5 * 5]
|
||||
|
||||
'Sound Engine Stack
|
||||
long hsnd_stack[18]
|
||||
long cog1, cog2
|
||||
|
||||
'WavSynth Parameters
|
||||
long snd_regs[48] 'Regs for Sound Hardware (8x6)+5dpcm
|
||||
long dpcm_regs[5]
|
||||
|
||||
'DPCM Command Variables
|
||||
word dpcmreg_ptr
|
||||
|
||||
'Global Hmus Player Vars
|
||||
word tempo
|
||||
word song_pc
|
||||
word song_div
|
||||
word song_ptr
|
||||
word chfre[4]
|
||||
byte chfx[4]
|
||||
byte chvol[4]
|
||||
byte hmus_state
|
||||
byte hmvol
|
||||
byte fxphs
|
||||
|
||||
'Sound FX Variables
|
||||
word runlen[2]
|
||||
word envamp[2]
|
||||
word sfx_ptr[2]
|
||||
byte envphs[2]
|
||||
byte fmcnt[2], fmfreq[2]
|
||||
byte loadsfx[2]
|
||||
|
||||
CON
|
||||
|
||||
'' Hss Master Control
|
||||
|
||||
PUB start: okay
|
||||
|
||||
okay := cog1 := cognew(@entry, @snd_regs)
|
||||
okay := cog2 := cognew(hsound, @hsnd_stack)
|
||||
|
||||
PUB stop
|
||||
|
||||
cogstop(cog2)
|
||||
cogstop(cog1)
|
||||
|
||||
PUB peek(addrptr) : var1
|
||||
|
||||
var1 := LONG[@snd_regs][addrptr]
|
||||
|
||||
PUB intread(index): wert 'interface: auslesen eines interfaceregisters
|
||||
|
||||
wert := intreg[index]
|
||||
|
||||
|
||||
CON
|
||||
|
||||
'' Hydra Music Commands
|
||||
|
||||
PUB hmus_load(songptr) | z
|
||||
|
||||
hmvol := 15
|
||||
song_div := 0
|
||||
song_ptr := songptr
|
||||
song_pc := WORD[songptr][8]
|
||||
tempo := WORD[songptr][12]
|
||||
repeat z from 0 to 3
|
||||
chfx[z] := 0
|
||||
|
||||
repeat z from 0 to 5*5 'interface: playerinterface alle werte löschen
|
||||
intreg[z] := 0
|
||||
|
||||
|
||||
PUB hmus_play
|
||||
|
||||
hmus_state := 1
|
||||
|
||||
PUB hmus_stop | z
|
||||
|
||||
hmus_state := 0
|
||||
repeat z from 0 to 3
|
||||
chvol[z] := 0
|
||||
|
||||
PUB hmus_pause
|
||||
|
||||
hmus_state := 0
|
||||
|
||||
PUB hmus_tempo(var1)
|
||||
|
||||
tempo := var1
|
||||
|
||||
PUB get_hmus_tempo : var1
|
||||
|
||||
var1 := tempo
|
||||
|
||||
PUB hmus_vol(var1)
|
||||
|
||||
hmvol := var1 <# 15 #> 0
|
||||
|
||||
PUB get_hmus_vol : var1
|
||||
|
||||
var1 := hmvol
|
||||
|
||||
CON
|
||||
|
||||
'' FXsynth Commands
|
||||
|
||||
PUB sfx_play(chan, soundptr)
|
||||
|
||||
if(chan == 1)
|
||||
sfx_ptr[0] := soundptr
|
||||
loadsfx[0] := 0
|
||||
if(chan == 2)
|
||||
sfx_ptr[1] := soundptr
|
||||
loadsfx[1] := 0
|
||||
|
||||
PUB sfx_stop(chan)
|
||||
|
||||
if(chan == 1)
|
||||
sfx_ptr[0] := 0
|
||||
if(chan == 2)
|
||||
sfx_ptr[1] := 0
|
||||
|
||||
PUB sfx_keyoff(chan)
|
||||
|
||||
if(chan == 1)
|
||||
envphs[0] := 3
|
||||
if(chan == 2)
|
||||
envphs[1] := 3
|
||||
|
||||
CON
|
||||
|
||||
'' Hydra DPCM Commands
|
||||
|
||||
PUB dpcm_play(soundptr)
|
||||
|
||||
dpcmreg_ptr := soundptr
|
||||
|
||||
PUB dpcm_stop
|
||||
|
||||
dpcmreg_ptr := 1
|
||||
|
||||
CON
|
||||
''*****************************
|
||||
''* Hss Sound Engine *
|
||||
''*****************************
|
||||
PRI Hsound
|
||||
repeat
|
||||
'Update Music Engine
|
||||
UpdateMus(song_ptr, Hmus_state) 'Update Music Player
|
||||
'volume/frequenzwerte werden in die soundregister geschrieben
|
||||
VolumeInterpol 'Delay and Interpolate Volume to Remove Pops and Clicks.
|
||||
|
||||
'Update DPCM Engine
|
||||
if(dpcmreg_ptr)
|
||||
DpcmUpdate 'Update the DPCM registers
|
||||
|
||||
'Update SoundFX Engine
|
||||
|
||||
'FX channel A
|
||||
FXSynth(0,32)
|
||||
'FX channel B
|
||||
FXSynth(1, 40)
|
||||
|
||||
PRI VolumeInterpol | z, channelmul, musvar, freqval
|
||||
|
||||
fxphs += 5
|
||||
|
||||
'Volume Interpolation
|
||||
repeat z from 0 to 3 step 1
|
||||
channelmul := 4+(8*z)
|
||||
musvar := (chvol[z]*(hmvol+1))&$F0
|
||||
snd_regs[channelmul] := (snd_regs[channelmul] & 15)+musvar
|
||||
|
||||
'Freq Interpolation
|
||||
channelmul -= 1 'Jump down a REG to Freq
|
||||
musvar := chfre[z]<<16
|
||||
|
||||
if(chfx[z] == 0) 'None
|
||||
snd_regs[channelmul] := musvar
|
||||
|
||||
elseif(chfx[z] < 3) 'Vibrato (light/hard)
|
||||
if(fxphs < 128)
|
||||
snd_regs[channelmul] := musvar+(chfre[z]<<(7+chfx[z]))
|
||||
else
|
||||
snd_regs[channelmul] := musvar-(chfre[z]<<(7+chfx[z]))
|
||||
|
||||
elseif(chfx[z] == 3) 'Tremolo
|
||||
if(fxphs < 128)
|
||||
snd_regs[channelmul] := musvar
|
||||
else
|
||||
snd_regs[channelmul] := musvar<<1
|
||||
|
||||
else 'Portamento
|
||||
freqval := snd_regs[channelmul]>>16
|
||||
if(freqval & $F000 == chfre[z] & $F000)
|
||||
snd_regs[channelmul] := musvar
|
||||
elseif(freqval < chfre[z])
|
||||
snd_regs[channelmul] := snd_regs[channelmul]+(chfx[z]<<22)
|
||||
else
|
||||
snd_regs[channelmul] := snd_regs[channelmul]-(chfx[z]<<22)
|
||||
|
||||
PRI UpdateMus(songptr, state) | i, channel, channelmul, scrdat, freq, freqoct, flag
|
||||
|
||||
if(state == 0)
|
||||
return ''Song is not playing.
|
||||
|
||||
song_div++ 'zeitfaktor; wird erhöht bis...
|
||||
|
||||
if(song_div => tempo) 'Tempo Divider 'schwellwert erreicht, dann nächster beat
|
||||
song_div := 0
|
||||
flag := 0
|
||||
intreg[iBeatC] := intreg[iBeatC] + 1 'interface: beatconter erhöhen
|
||||
intreg[iRowFlag] := 0 'interface: Kennung das Zeile bearbeitet wird
|
||||
repeat i from 5 to 5*5 'interface: channelwerte löschen
|
||||
intreg[i] := 0
|
||||
|
||||
repeat 'Score Decoder and Processor
|
||||
scrdat := BYTE[song_ptr][song_pc] 'song_pc ist zeiger auf wert in MusicDat
|
||||
channel := scrdat & 3 'untere zwei bit enthalten die kanalnummer
|
||||
channelmul := channel<<3 'jedem channel sind 8 registerwerte zugeordent
|
||||
intreg[iEngineC] := song_pc 'interface: enginecounter setzen
|
||||
song_pc++ 'zeiger auf nächsten wert setzen
|
||||
|
||||
''Base Commands
|
||||
if(scrdat == 0) 'End Row 'nächste trackerzeile
|
||||
intreg[iRowFlag] := 1 'interface: Zeile fertig bearbeitet
|
||||
quit
|
||||
|
||||
if(scrdat == 1) 'Repeat Song 'wiederholt ab MusicLoop (MusicDat ist also die einleitung)
|
||||
song_pc := WORD[songptr][9]
|
||||
intreg[iRepeat] := intreg[iRepeat] + 1 'interface: flag das songende erreicht wurde
|
||||
quit
|
||||
|
||||
if(scrdat == 2) 'End Song 'status wird auf 0 gesetzt
|
||||
intreg[iEndFlag] := 1 'interface: flag das songende erreicht wurde
|
||||
hmus_stop
|
||||
quit
|
||||
|
||||
if(scrdat == 3) 'Set Flag
|
||||
flag := 1
|
||||
next
|
||||
|
||||
if((scrdat & $3C) == $20) 'Patch HI Note 'oktave erhöhen und veränderung zu "Change Note"
|
||||
flag := 2
|
||||
scrdat := scrdat>>3
|
||||
scrdat += 64+channel
|
||||
|
||||
if(scrdat & 4) 'Change Note
|
||||
freq := scrdat>>3 'note Bit3 bis Bit7 (32 Noten)
|
||||
freqoct := freq/12
|
||||
freq -= freqoct*12
|
||||
case flag
|
||||
1 : freqoct += 2
|
||||
2 : freqoct += 6
|
||||
other : freqoct += 4
|
||||
flag := 0
|
||||
snd_regs[4+channelmul] := snd_regs[4+channelmul] & $FE
|
||||
intreg[(channel*iChannel)+iChannel+iNote] := freq + 1 'interface: note setzen (0 ist erste note!)
|
||||
intreg[(channel*iChannel)+iChannel+iOktave] := freqoct 'interface: oktave setzen
|
||||
'frequenz aus tabelle holen
|
||||
'je nach oktave wird nach rechts verschoben (/2)
|
||||
chfre[channel] := NoteFreqs[freq]>>(6-freqoct)
|
||||
snd_regs[4+channelmul] := (snd_regs[4+channelmul] & $FE)+1
|
||||
next 'Repeat To Next Datum
|
||||
|
||||
if(scrdat & 8) 'Change Evelope / Channel Effect
|
||||
if(flag)
|
||||
intreg[(channel*iChannel)+iChannel+iEffekt] := scrdat>>4 + 1 'interface: effektwert setzen
|
||||
chfx[channel] := scrdat>>4
|
||||
flag := 0
|
||||
else
|
||||
intreg[(channel*iChannel)+iChannel+iVolume] := scrdat>>4 'interface: volume setzen
|
||||
chvol[channel] := scrdat>>4
|
||||
next 'Repeat To Next Datum
|
||||
|
||||
if(scrdat & 16) 'Change Instrument
|
||||
freq := (scrdat & $E0)>>3
|
||||
freq += flag<<5
|
||||
flag := 0
|
||||
intreg[(channel*iChannel)+iChannel+iInstrument] := freq>>2 + 1 'interface: instrument setzen
|
||||
snd_regs[0+channelmul] := songptr+WORD[songptr+32][freq] 'zeiger auf neues instrumentensample
|
||||
snd_regs[1+channelmul] := WORD[songptr+32][freq+1] 'ende des samples
|
||||
snd_regs[2+channelmul] := WORD[songptr+32][freq+2] 'loop
|
||||
snd_regs[4+channelmul] := WORD[songptr+32][freq+3] & $0F 'flags?
|
||||
next 'Repeat To Next Datum
|
||||
|
||||
if(scrdat & 64) 'Detune
|
||||
chfre[channel] := chfre[channel]+(chfre[channel]>>8)
|
||||
|
||||
|
||||
|
||||
PRI DpcmUpdate
|
||||
|
||||
if(dpcmreg_ptr > 15) 'Play Sample.
|
||||
dpcm_regs[2] := 65535 'End sample if one was playing
|
||||
dpcm_regs[0] := dpcmreg_ptr+8
|
||||
dpcm_regs[4] := 128
|
||||
dpcm_regs[3] := LONG[dpcmreg_ptr][1] 'Get sampling rate
|
||||
dpcm_regs[1] := WORD[dpcmreg_ptr][1] 'Get length
|
||||
dpcm_regs[2] := 0 'Reset play counter
|
||||
elseif(dpcmreg_ptr == 1) 'Stop Sample
|
||||
dpcm_regs[2] := 65535 'End sample
|
||||
dpcm_regs[4] := 128
|
||||
|
||||
dpcmreg_ptr := 0
|
||||
|
||||
PRI FXSynth(SoundVars, ChannelFX) | TimeCnt, SoundFX, Modwav, FMwav, AMwav
|
||||
TimeCnt := Cnt
|
||||
SoundFX := sfx_ptr[SoundVars]
|
||||
|
||||
if(loadsfx[SoundVars] == 0)
|
||||
'Setup OSC WaveForm
|
||||
case BYTE[SoundFX][0]
|
||||
$00: 'Sine
|
||||
snd_regs[ChannelFX] := @SineTable
|
||||
snd_regs[1+ChannelFX] := 64
|
||||
$01: 'Fast Sine
|
||||
snd_regs[ChannelFX] := @FastSine
|
||||
snd_regs[1+ChannelFX] := 32
|
||||
$02: 'Sawtooth
|
||||
snd_regs[ChannelFX] := @Sawtooth
|
||||
snd_regs[1+ChannelFX] := 64
|
||||
$03: 'Square
|
||||
snd_regs[ChannelFX] := @SqrTable
|
||||
snd_regs[1+ChannelFX] := 32
|
||||
$04: 'Fast Square
|
||||
snd_regs[ChannelFX] := @FastSqr
|
||||
snd_regs[1+ChannelFX] := 8
|
||||
$05: 'Buzz
|
||||
snd_regs[ChannelFX] := @NoteFreqs
|
||||
snd_regs[1+ChannelFX] := 24
|
||||
$06: 'Noise
|
||||
snd_regs[ChannelFX] := $F002
|
||||
snd_regs[1+ChannelFX] := 3000
|
||||
|
||||
snd_regs[2+ChannelFX] := 0
|
||||
snd_regs[4+ChannelFX] := $01
|
||||
|
||||
loadsfx[SoundVars] := 1
|
||||
runlen[SoundVars] := 0
|
||||
fmcnt[SoundVars] := 0
|
||||
fmfreq[SoundVars] := 0
|
||||
envamp[SoundVars] := 0
|
||||
envphs[SoundVars] := 0
|
||||
|
||||
''Modulation Code
|
||||
fmfreq[SoundVars]++
|
||||
if(fmfreq[SoundVars] => BYTE[SoundFX][4])
|
||||
fmfreq[SoundVars] := 0
|
||||
fmcnt[SoundVars]++
|
||||
fmcnt[SoundVars] := fmcnt[SoundVars] & $3F
|
||||
|
||||
case BYTE[SoundFX][5]
|
||||
$00:
|
||||
Modwav := BYTE[@SineTable][fmcnt[SoundVars]]
|
||||
$01:
|
||||
Modwav := BYTE[@FastSine][fmcnt[SoundVars] & 31]
|
||||
$02:
|
||||
Modwav := fmcnt[SoundVars]<<2
|
||||
$03:
|
||||
Modwav := !fmcnt[SoundVars]<<2
|
||||
$04:
|
||||
if(fmcnt[SoundVars] & 8)
|
||||
Modwav := $ff
|
||||
else
|
||||
Modwav := $00
|
||||
$05:
|
||||
Modwav := BYTE[$F002][fmcnt[SoundVars]]
|
||||
$FF:
|
||||
Modwav := BYTE[SoundFX+12][fmcnt[SoundVars] & 15]
|
||||
|
||||
fmwav := Modwav/(BYTE[SoundFX][6]) 'FM amount
|
||||
amwav := 256-(Modwav/(BYTE[SoundFX][7])) 'AM amount
|
||||
amwav := (BYTE[SoundFX][3]*amwav)>>8
|
||||
|
||||
''Envelope Generator
|
||||
if(envphs[SoundVars] == 0) 'Attack
|
||||
envamp[SoundVars] += BYTE[SoundFX][8]
|
||||
if(envamp[SoundVars] > 8191)
|
||||
envamp[SoundVars] := 8191
|
||||
envphs[SoundVars] := 1
|
||||
if(BYTE[SoundFX][8] == $ff)
|
||||
envamp[SoundVars] := 8191
|
||||
if(envphs[SoundVars] == 1) 'Decay
|
||||
envamp[SoundVars] -= BYTE[SoundFX][9]
|
||||
if(envamp[SoundVars] & $8000)
|
||||
envphs[SoundVars] := 2
|
||||
if(envamp[SoundVars] =< (BYTE[SoundFX][10]<<5))
|
||||
envphs[SoundVars] := 2
|
||||
if(envphs[SoundVars] == 2) 'Sustain
|
||||
envamp[SoundVars] := (BYTE[SoundFX][10]<<5)
|
||||
if(envphs[SoundVars] == 3) 'Release
|
||||
envamp[SoundVars] -= BYTE[SoundFX][11]
|
||||
if(envamp[SoundVars] & $8000)
|
||||
envamp[SoundVars] := 4
|
||||
|
||||
amwav := ((envamp[SoundVars]>>9)*(amwav+1))>>4
|
||||
|
||||
''Run Length and Outputing
|
||||
if(SoundFX > 15)
|
||||
runlen[SoundVars]++
|
||||
snd_regs[3+ChannelFX] := (BYTE[SoundFX][2]+fmwav)<<24 'Update Frequency
|
||||
snd_regs[4+ChannelFX] := (amwav<<4)+(snd_regs[4+ChannelFX] & $0F) 'Update Amplitude
|
||||
else
|
||||
snd_regs[4+ChannelFX] := $00 'Mute
|
||||
|
||||
if(BYTE[SoundFX][1] == $ff) '$ff = never stop
|
||||
runlen[SoundVars] := 0
|
||||
|
||||
if(runlen[SoundVars] > (BYTE[SoundFX][1]<<5)) 'Duration KeyOff
|
||||
envphs[SoundVars] := 3
|
||||
|
||||
WaitCnt(TimeCnt + 52_000) ''Delay for Synth Engine Update.
|
||||
|
||||
DAT
|
||||
|
||||
SineTable byte $80, $8c, $98, $a5, $b0, $bc, $c6, $d0
|
||||
byte $da, $e2, $ea, $f0, $f5, $fa, $fd, $fe
|
||||
byte $ff, $fe, $fd, $fa, $f5, $f0, $ea, $e2
|
||||
byte $da, $d0, $c6, $bc, $b0, $a5, $98, $8c
|
||||
byte $80, $73, $67, $5a, $4f, $43, $39, $2f
|
||||
byte $25, $1d, $15, $0f, $0a, $05, $02, $01
|
||||
byte $00, $01, $02, $05, $0a, $0f, $15, $1d
|
||||
byte $25, $2f, $39, $43, $4f, $5a, $67, $73
|
||||
|
||||
Sawtooth byte $ff, $fb, $f7, $f3, $ef, $eb, $e7, $e3
|
||||
byte $df, $db, $d7, $d3, $cf, $cb, $c7, $c3
|
||||
byte $bf, $bb, $b7, $b3, $af, $ab, $a7, $a3
|
||||
byte $9f, $9b, $97, $93, $8f, $8b, $87, $83
|
||||
byte $80, $7c, $78, $74, $70, $6c, $68, $64
|
||||
byte $60, $5c, $58, $54, $50, $4c, $48, $44
|
||||
byte $40, $3c, $38, $34, $30, $2c, $28, $24
|
||||
byte $20, $1c, $18, $14, $10, $0c, $08, $04
|
||||
|
||||
FastSine byte $80, $98, $b0, $c6, $da, $ea, $f5, $fd
|
||||
byte $ff, $fd, $f5, $ea, $da, $c6, $b0, $98
|
||||
byte $80, $67, $4f, $39, $25, $15, $0a, $02
|
||||
byte $00, $02, $0a, $15, $25, $39, $4f, $67
|
||||
|
||||
SqrTable byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
|
||||
byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff
|
||||
byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||
byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||
|
||||
FastSqr byte $ff, $ff, $ff, $ff, $00, $00, $00, $00
|
||||
|
||||
'Note LookupTable.
|
||||
NoteFreqs word $85F3, $8DEA, $965B, $9F4B, $A8C4, $B2CD, $BD6F, $C8B3, $D4A2, $E147, $EEAC, $FCDE 'Top Octave Lookup
|
||||
|
||||
CON
|
||||
''*****************************
|
||||
''* WaveTable Synth v1.2 *
|
||||
''* DPCM Synth v1.1 *
|
||||
''* (C)2006 Andrew Arsenault *
|
||||
''*****************************
|
||||
DAT
|
||||
org
|
||||
entry mov dira,Port_Pins 'Setup output pins
|
||||
|
||||
mov ctra,Right_ctra 'Setup Right Audio Channel
|
||||
mov ctrb,Left_ctra 'Setup Left Audio Channel
|
||||
|
||||
mov ChlA_wave,#256 'Set channel signals.
|
||||
mov ChlA_offset,#0 'Set channel's offset.
|
||||
mov ChlA_counter,#0
|
||||
|
||||
mov Time,#10
|
||||
add Time,cnt 'Prepare for asm type WAITCNT loop.
|
||||
|
||||
'MAIN LOOP
|
||||
update waitcnt Time,Timing_delay 'Wait for CNT = D, then add S into D
|
||||
|
||||
'Transfer Sound Registers
|
||||
mov addrregs,par
|
||||
mov y,NumberOfChannels
|
||||
|
||||
'Fetch Channel's Registers
|
||||
transferchl rdlong ChlAp_sampptr,addrregs
|
||||
add addrregs,#4
|
||||
rdlong ChlAp_sampend,addrregs
|
||||
add addrregs,#4
|
||||
rdlong Ch1Ap_samplpp,addrregs
|
||||
add addrregs,#4
|
||||
rdlong Ch1Ap_freq,addrregs
|
||||
add addrregs,#4
|
||||
rdlong ChlAp_keyon,addrregs
|
||||
|
||||
'Fetch Channel's Static Variables
|
||||
add addrregs,#8
|
||||
rdlong ChlA_offset,addrregs
|
||||
add addrregs,#4
|
||||
rdlong ChlA_counter,addrregs
|
||||
|
||||
'Run Synth Engine on Channel
|
||||
call #wvsynth
|
||||
|
||||
'Store Channel's Static Variables (Tucked Center X move to Wave)
|
||||
wrlong ChlA_counter,addrregs
|
||||
sub addrregs,#4
|
||||
sub x,#256
|
||||
wrlong ChlA_offset,addrregs
|
||||
sub addrregs,#4
|
||||
mov ChlA_wave,x 'Doesn't Waste anything doing this.
|
||||
wrlong ChlA_wave,addrregs
|
||||
add addrregs,#12
|
||||
|
||||
'Loop Until All Channel's Are Done.
|
||||
djnz y,#transferchl
|
||||
|
||||
'Run DPCM Engine
|
||||
call #dpcm
|
||||
|
||||
'Mix Channels Together
|
||||
mov addrregs,par
|
||||
mov ChlA_wave,#0
|
||||
add addrregs,#5*4
|
||||
mov y,NumberOfChannels
|
||||
|
||||
mixchls rdlong x,addrregs
|
||||
add ChlA_wave,x
|
||||
add addrregs,#8*4
|
||||
djnz y,#mixchls
|
||||
|
||||
mov x,DPCM_wave 'Add DPCM
|
||||
shl x,#2
|
||||
add ChlA_wave,x
|
||||
|
||||
shl ChlA_wave,#20 'Convert 12bit singal into a 32bit one.
|
||||
|
||||
'Update output Channels then repeat again.
|
||||
mov frqa,ChlA_wave
|
||||
mov frqb,ChlA_wave
|
||||
|
||||
jmp #update
|
||||
|
||||
|
||||
|
||||
|
||||
'-------------------------Dpcm Engine-------------------------'
|
||||
|
||||
dpcm mov addrregs,par
|
||||
add addrregs,#192
|
||||
|
||||
rdlong DPCM_address,addrregs 'Start Address
|
||||
add addrregs,#4
|
||||
rdlong DPCM_runlen,addrregs 'File Lenght
|
||||
add addrregs,#4
|
||||
rdlong DPCM_offset,addrregs 'File Offset
|
||||
add addrregs,#4
|
||||
rdlong DPCM_freq,addrregs 'Playback Speed
|
||||
add addrregs,#4
|
||||
rdlong DPCM_wave,addrregs 'Waveform Amp
|
||||
|
||||
'Check for if keyon/length is set.
|
||||
cmp DPCM_offset,DPCM_runlen wc
|
||||
if_ae jmp #mute_dpcm 'End of file
|
||||
|
||||
'Freq Timer/Divider and Increase sampling offset
|
||||
add DPCM_counter,DPCM_freq wc
|
||||
if_nc jmp #done_dpcm
|
||||
|
||||
'Decode DPCM
|
||||
add DPCM_address,DPCM_offset
|
||||
rdbyte x,DPCM_address 'Fetch Datum
|
||||
|
||||
mov DPCM_delta,x
|
||||
shr DPCM_delta,#6
|
||||
mov y,#1
|
||||
shl y,DPCM_delta
|
||||
mov DPCM_delta,y
|
||||
|
||||
mov y,#1
|
||||
shl y,DPCM_phs
|
||||
test x,y wc
|
||||
if_c add DPCM_wave,DPCM_delta
|
||||
if_nc sub DPCM_wave,DPCM_delta
|
||||
|
||||
add DPCM_phs,#1
|
||||
cmp DPCM_phs,#6 wc
|
||||
if_b jmp #done_dpcm
|
||||
|
||||
mov DPCM_phs,#0
|
||||
add DPCM_offset,#1
|
||||
jmp #done_dpcm
|
||||
|
||||
mute_dpcm mov DPCM_wave, #128
|
||||
|
||||
done_dpcm mov addrregs,par
|
||||
add addrregs,#200
|
||||
wrlong DPCM_offset,addrregs 'File Offset
|
||||
add addrregs,#8
|
||||
wrlong DPCM_wave,addrregs 'Wave
|
||||
dpcm_ret ret
|
||||
|
||||
'-----------------------Dpcm Engine End-----------------------'
|
||||
|
||||
|
||||
|
||||
'-------------------------Sound Engine-------------------------'
|
||||
|
||||
'Freq Timer/Divider and Increase sampling offset
|
||||
wvsynth add ChlA_counter,Ch1Ap_freq wc
|
||||
if_c add ChlA_offset,#1
|
||||
|
||||
'Reset sample position and lock at zero if Keyoff.
|
||||
test ChlAp_keyon,#%0001 wc
|
||||
if_nc mov ChlA_offset,#0
|
||||
|
||||
'Reset(loop) if needed
|
||||
cmp ChlA_offset,ChlAp_sampend wc
|
||||
if_ae mov ChlA_offset,Ch1Ap_samplpp
|
||||
|
||||
'Check BitRate and Set Offset
|
||||
mov x,ChlA_offset
|
||||
test ChlAp_keyon,#%0010 wc
|
||||
if_c shr x,#1
|
||||
|
||||
'Fetch WaveTable
|
||||
mov ChlA_wave,ChlAp_sampptr
|
||||
add ChlA_wave,x
|
||||
rdbyte ChlA_wave,ChlA_wave
|
||||
|
||||
'Check BitRate and Skip if 8bit
|
||||
test ChlAp_keyon,#%0010 wc
|
||||
if_nc jmp #skip_4bitsam
|
||||
|
||||
'Convert 4bit to 8bit
|
||||
test ChlA_offset,#%0001 wc
|
||||
if_c shr ChlA_wave,#4
|
||||
if_nc and ChlA_wave,#%00001111
|
||||
|
||||
mov x,ChlA_wave
|
||||
shl ChlA_wave,#4
|
||||
add ChlA_wave,x
|
||||
|
||||
'Center Amplitude and mute if Keyoff.
|
||||
skip_4bitsam test ChlAp_keyon,#%0001 wc
|
||||
if_nc mov ChlA_wave,#128
|
||||
|
||||
'Volume Multiply
|
||||
mov x,#0
|
||||
test ChlAp_keyon,#%10000000 wc
|
||||
if_c add x,ChlA_wave
|
||||
if_nc add x,#128
|
||||
|
||||
shr ChlA_wave,#1
|
||||
test ChlAp_keyon,#%01000000 wc
|
||||
if_c add x,ChlA_wave
|
||||
if_nc add x,#64
|
||||
add x,#64
|
||||
|
||||
shr ChlA_wave,#1
|
||||
test ChlAp_keyon,#%00100000 wc
|
||||
if_c add x,ChlA_wave
|
||||
if_nc add x,#32
|
||||
add x,#96
|
||||
|
||||
shr ChlA_wave,#1
|
||||
test ChlAp_keyon,#%00010000 wc
|
||||
if_c add x,ChlA_wave
|
||||
if_nc add x,#16
|
||||
add x,#112
|
||||
|
||||
'Return Audio as X.
|
||||
wvsynth_ret ret
|
||||
|
||||
'-----------------------Sound Engine End-----------------------'
|
||||
|
||||
Port_Pins long %00000000_00000000_00000011_00000000
|
||||
|
||||
'- CTR PLL -------- BPIN --- APIN
|
||||
Right_ctra long %0_00110_000_00000000_000000_000_001000
|
||||
Left_ctra long %0_00110_000_00000000_000000_000_001001
|
||||
|
||||
Timing_delay long 2500 'Sampling Rate = 32,000.00hz
|
||||
NumberOfChannels long 6
|
||||
|
||||
Time res 1
|
||||
addrregs res 1
|
||||
x res 1
|
||||
y res 1
|
||||
|
||||
'WaveTable Synth Accumulators
|
||||
ChlA_wave res 1
|
||||
ChlA_offset res 1
|
||||
ChlA_counter res 1
|
||||
ChlAp_sampptr res 1
|
||||
ChlAp_sampend res 1
|
||||
Ch1Ap_samplpp res 1
|
||||
Ch1Ap_freq res 1
|
||||
ChlAp_keyon res 1
|
||||
|
||||
'DPCM Accumulators
|
||||
DPCM_wave res 1
|
||||
DPCM_address res 1
|
||||
DPCM_offset res 1
|
||||
DPCM_counter res 1
|
||||
DPCM_freq res 1
|
||||
DPCM_runlen res 1
|
||||
DPCM_phs res 1
|
||||
DPCM_delta res 1
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,23 @@
|
|||
|
||||
Hive-Project
|
||||
-------------------------------------------------------------------------
|
||||
Der Hive ist ein Open-Hardware und Free-Software DIY-Computersystem auf
|
||||
der Basis von drei Parallax P8X32 "Propeller" Mikrocontrollern.
|
||||
|
||||
|
||||
Lizenze
|
||||
-------------------------------------------------------------------------
|
||||
Das Betriebssystem TriOS steht unter MIT-Lizenz. Die Schaltung und das
|
||||
Board-Layout ist unter Creative-Commons CC-BY-SA 3.0 lizensiert.
|
||||
|
||||
MIT-Lizenz: http://www.opensource.org/licenses/mit-license.php
|
||||
CC-BY-SA 3.0: http://creativecommons.org/licenses/by-sa/3.0/de/
|
||||
|
||||
Informationen zum Projekt
|
||||
-------------------------------------------------------------------------
|
||||
http://hive-project.de
|
||||
|
||||
|
||||
Urheberrechtsangabe
|
||||
-------------------------------------------------------------------------
|
||||
Copyright (c) 2009 Ingo Kripahle
|
|
@ -0,0 +1,224 @@
|
|||
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".
|
||||
|
||||
achtung: 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".
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
echo on
|
||||
date /T
|
||||
time /T
|
||||
|
||||
REM Pfade
|
||||
set sd=".\bin\sdcard"
|
||||
set sd-sys=".\bin\sdcard\system"
|
||||
set flash=".\bin\flash"
|
||||
set libpath=".\lib"
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM Alte Versionen löschen
|
||||
|
||||
del %flash%\*.* /Q
|
||||
del %sd%\*.* /Q
|
||||
del %sd-sys%\*.* /Q
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM Flashdateien erzeugen
|
||||
REM --> \bin\flash
|
||||
|
||||
bstc -L %libpath% -b -O a .\flash\administra\admflash.spin
|
||||
move admflash.binary %flash%
|
||||
|
||||
bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin
|
||||
copy belflash.binary %flash%
|
||||
rename belflash.binary vga.bel
|
||||
move vga.bel %sd-sys%
|
||||
|
||||
bstc -L %libpath% -b -O a .\flash\regnatix\regflash.spin
|
||||
move regflash.binary %flash%
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM Startdateien erzeugen
|
||||
REM reg.sys (Regime)
|
||||
REM bel.sys (VGA)
|
||||
REM --> \bin\sdcard\
|
||||
|
||||
bstc -L %libpath% -b -O a .\system\regnatix\regime.spin
|
||||
rename regime.binary reg.sys
|
||||
move reg.sys %sd%
|
||||
|
||||
bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin
|
||||
rename belflash.binary bel.sys
|
||||
move bel.sys %sd%
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM Slave-Dateien erzeugen
|
||||
REM admsid, admay, admterm
|
||||
REM htxt, tv
|
||||
|
||||
bstc -L %libpath% -b -O a .\system\administra\admsid\admsid.spin
|
||||
bstc -L %libpath% -b -O a .\system\administra\admay\admay.spin
|
||||
bstc -L %libpath% -b -O a .\system\administra\aterm\aterm.spin
|
||||
rename *.binary *.adm
|
||||
|
||||
bstc -L %libpath% -b -O a .\system\bellatrix\bel-htext\htext.spin
|
||||
bstc -L %libpath% -b -O a .\system\bellatrix\bel-tv\tv.spin
|
||||
rename *.binary *.bel
|
||||
|
||||
move *.adm %sd-sys%
|
||||
move *.bel %sd-sys%
|
||||
|
||||
|
||||
REM ----------------------------------------------------------------
|
||||
REM Systemdateien erzeugen
|
||||
REM - div. externe Kommandos
|
||||
REM - div. Systemdateien (Farbtabellen usw.)
|
||||
REM --> \bin\sdcard\system\
|
||||
|
||||
for %%x in (.\system\regnatix\*.spin) do bstc -L %libpath% -b -O a %%x
|
||||
rename *.binary *.bin
|
||||
move *.bin %sd-sys%
|
||||
copy .\forth\*.* %sd-sys%
|
||||
copy .\system\sonstiges %sd-sys%
|
||||
|
||||
echo off
|
|
@ -0,0 +1,424 @@
|
|||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>date /T
|
||||
11.11.2011
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>time /T
|
||||
15:28
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Pfade
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set sd=".\bin\sdcard"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set sd-sys=".\bin\sdcard\system"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set flash=".\bin\flash"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set libpath=".\lib"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ----------------------------------------------------------------
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Alte Versionen löschen
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\flash"\*.* /Q
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\sdcard"\*.* /Q
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\sdcard\system" \*.* /Q
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ----------------------------------------------------------------
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Flashdateien erzeugen
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\flash
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\administra\admflash.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object admflash
|
||||
Loading Object adm-fat
|
||||
Loading Object adm-rtc.spin
|
||||
Loading Object adm-hss
|
||||
Loading Object adm-wav
|
||||
Loading Object adm-plx
|
||||
Program size is 12584 longs
|
||||
2 Constants folded
|
||||
Compiled 2429 Lines of Code in 0,186 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move admflash.binary ".\bin\flash"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\bellatrix\belflash.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object belflash
|
||||
Loading Object bel-vga
|
||||
Loading Object bel-keyb
|
||||
Program size is 6432 longs
|
||||
12 Constants folded
|
||||
Compiled 1108 Lines of Code in 0,078 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy belflash.binary ".\bin\flash"
|
||||
1 Datei(en) kopiert.
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename belflash.binary vga.bel
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move vga.bel ".\bin\sdcard\system"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\regnatix\regflash.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object regflash
|
||||
Program size is 32584 longs
|
||||
Compiled 694 Lines of Code in 0,172 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move regflash.binary ".\bin\flash"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ----------------------------------------------------------------
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Startdateien erzeugen
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM reg.sys (Regime)
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM bel.sys (VGA)
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\sdcard\
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\regime.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object regime
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-string
|
||||
Program size is 9168 longs
|
||||
2 Constants folded
|
||||
Compiled 2279 Lines of Code in 0,233 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename regime.binary reg.sys
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move reg.sys ".\bin\sdcard"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\bellatrix\belflash.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object belflash
|
||||
Loading Object bel-vga
|
||||
Loading Object bel-keyb
|
||||
Program size is 6432 longs
|
||||
12 Constants folded
|
||||
Compiled 1108 Lines of Code in 0,078 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename belflash.binary bel.sys
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move bel.sys ".\bin\sdcard"
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ----------------------------------------------------------------
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Slave-Dateien erzeugen
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM admsid, admay, admterm
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM htxt, tv
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\admsid\admsid.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object admsid
|
||||
Loading Object adm-fat
|
||||
Loading Object adm-rtc.spin
|
||||
Loading Object adm-sid
|
||||
Program size is 11968 longs
|
||||
Compiled 2206 Lines of Code in 0,171 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\admay\admay.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object admay
|
||||
Loading Object adm-fat
|
||||
Loading Object adm-rtc.spin
|
||||
Loading Object adm-ay
|
||||
Program size is 8308 longs
|
||||
Compiled 1705 Lines of Code in 0,141 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\aterm\aterm.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object aterm
|
||||
Loading Object glob-com.spin
|
||||
Loading Object glob-string.spin
|
||||
Loading Object adm-fat.spin
|
||||
Loading Object adm-rtc.spin
|
||||
Program size is 10932 longs
|
||||
Compiled 1792 Lines of Code in 0,156 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.adm
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\bellatrix\bel-htext\htext.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object htext
|
||||
Loading Object bel-htext
|
||||
Loading Object bel-keyb
|
||||
Program size is 6656 longs
|
||||
12 Constants folded
|
||||
Compiled 958 Lines of Code in 0,063 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\bellatrix\bel-tv\tv.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object tv
|
||||
Loading Object bel-tv
|
||||
Loading Object bel-keyb
|
||||
Program size is 4204 longs
|
||||
Compiled 979 Lines of Code in 0,063 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.bel
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.adm ".\bin\sdcard\system"
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admay.adm
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admsid.adm
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\aterm.adm
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.bel ".\bin\sdcard\system"
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\htext.bel
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\tv.bel
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ----------------------------------------------------------------
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Systemdateien erzeugen
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM - div. externe Kommandos
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM - div. Systemdateien (Farbtabellen usw.)
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\sdcard\system\
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>for %x in (.\system\regnatix\*.spin) do bstc -L ".\lib" -b -O a %x
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\admtest.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object admtest
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-string
|
||||
Program size is 7940 longs
|
||||
Compiled 2090 Lines of Code in 0,203 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\basic.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object basic
|
||||
Loading Object reg-ios
|
||||
Program size is 8452 longs
|
||||
4 Constants folded
|
||||
Compiled 2481 Lines of Code in 0,156 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\beltest.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object beltest
|
||||
Loading Object reg-ios
|
||||
Program size is 4284 longs
|
||||
Compiled 1689 Lines of Code in 0,124 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\charmap.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object charmap
|
||||
Loading Object reg-ios
|
||||
Program size is 1920 longs
|
||||
Compiled 1402 Lines of Code in 0,063 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\eram.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object eram
|
||||
Loading Object glob-numbers
|
||||
Loading Object reg-ios
|
||||
Program size is 8508 longs
|
||||
2 Constants folded
|
||||
Compiled 2368 Lines of Code in 0,218 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\flash.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object flash
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-sdspi
|
||||
Loading Object glob-numbers
|
||||
Program size is 7160 longs
|
||||
6 Constants folded
|
||||
Compiled 2780 Lines of Code in 0,186 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\fterm.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object fterm
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-fds
|
||||
Program size is 2260 longs
|
||||
Compiled 1582 Lines of Code in 0,078 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\hplay.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object hplay
|
||||
Loading Object reg-ios
|
||||
Program size is 3944 longs
|
||||
8 Constants folded
|
||||
Compiled 1645 Lines of Code in 0,109 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\keycode.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object keycode
|
||||
Loading Object reg-ios
|
||||
Program size is 1892 longs
|
||||
Compiled 1404 Lines of Code in 0,061 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\perplex.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object perplex
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-numbers
|
||||
Program size is 4788 longs
|
||||
Compiled 2132 Lines of Code in 0,139 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\ramtest.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object ramtest
|
||||
Loading Object reg-ios
|
||||
Program size is 3988 longs
|
||||
34 Constants folded
|
||||
Compiled 1658 Lines of Code in 0,109 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\regime.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object regime
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-string
|
||||
Program size is 9168 longs
|
||||
2 Constants folded
|
||||
Compiled 2279 Lines of Code in 0,233 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\rom.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object rom
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-sdspi
|
||||
Program size is 3972 longs
|
||||
3 Constants folded
|
||||
Compiled 2018 Lines of Code in 0,094 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\sfxtool.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object sfxtool
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-numbers
|
||||
Program size is 6048 longs
|
||||
Compiled 2191 Lines of Code in 0,156 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\splay.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object splay
|
||||
Loading Object reg-ios
|
||||
Program size is 2956 longs
|
||||
Compiled 1516 Lines of Code in 0,078 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\sysconf.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object sysconf
|
||||
Loading Object reg-ios
|
||||
Program size is 4392 longs
|
||||
1 Constants folded
|
||||
Compiled 1620 Lines of Code in 0,11 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\time.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object time
|
||||
Loading Object reg-ios
|
||||
Loading Object glob-string
|
||||
Loading Object glob-numbers
|
||||
Program size is 5408 longs
|
||||
Compiled 2180 Lines of Code in 0,156 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\wplay.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object wplay
|
||||
Loading Object reg-ios
|
||||
Program size is 3256 longs
|
||||
Compiled 1537 Lines of Code in 0,092 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\yplay.spin
|
||||
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
|
||||
Compiled for i386 Win32 at 08:17:48 on 2009/07/20
|
||||
Loading Object yplay
|
||||
Loading Object reg-ios
|
||||
Program size is 3208 longs
|
||||
Compiled 1586 Lines of Code in 0,108 Seconds
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.bin
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.bin ".\bin\sdcard\system"
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admtest.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\basic.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\beltest.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\charmap.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\eram.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\flash.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\fterm.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\hplay.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\keycode.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\perplex.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\ramtest.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\regime.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\rom.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\sfxtool.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\splay.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\sysconf.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\time.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\wplay.bin
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\yplay.bin
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy .\forth\*.* ".\bin\sdcard\system"
|
||||
.\forth\adm.lib
|
||||
.\forth\ari.lib
|
||||
.\forth\basics.mod
|
||||
.\forth\bel.lib
|
||||
.\forth\cog.lib
|
||||
.\forth\debug.mod
|
||||
.\forth\error.txt
|
||||
.\forth\hplay.mod
|
||||
.\forth\hss.lib
|
||||
.\forth\key.lib
|
||||
.\forth\rom.mod
|
||||
.\forth\scr.lib
|
||||
.\forth\sd0.lib
|
||||
.\forth\sfx.lib
|
||||
.\forth\splay.mod
|
||||
.\forth\tools.mod
|
||||
.\forth\v1.mod
|
||||
.\forth\wav.lib
|
||||
.\forth\words.mod
|
||||
.\forth\wplay.mod
|
||||
20 Datei(en) kopiert.
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy .\system\sonstiges ".\bin\sdcard\system"
|
||||
.\system\sonstiges\BLUE.COL
|
||||
.\system\sonstiges\BW.COL
|
||||
.\system\sonstiges\BWHALF.COL
|
||||
.\system\sonstiges\CHESS.COL
|
||||
.\system\sonstiges\PAR.COL
|
||||
.\system\sonstiges\regime.txt
|
||||
.\system\sonstiges\test1.txt
|
||||
.\system\sonstiges\test2.txt
|
||||
8 Datei(en) kopiert.
|
||||
|
||||
C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>echo off
|
|
@ -0,0 +1,6 @@
|
|||
echo off
|
||||
echo Erstelle TriOS...
|
||||
call make.bat > make.log
|
||||
echo Fertig!
|
||||
pause
|
||||
|
Loading…
Reference in New Issue