1018 lines
78 KiB
Plaintext
1018 lines
78 KiB
Plaintext
{{
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ Autor: Ingo Kripahle │
|
|
│ Copyright (c) 2010 Ingo Kripahle │
|
|
│ See end of file for terms of use. │
|
|
│ Die Nutzungsbedingungen befinden sich am Ende der Datei │
|
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
Informationen : hive-project.de
|
|
Kontakt : drohne235@googlemail.com
|
|
System : TriOS
|
|
Name : Regime
|
|
Chip : Regnatix
|
|
Typ : Programm
|
|
Version : 00
|
|
Subversion : 02
|
|
|
|
Funktion : "Regime" ist ein einfacher Kommandozeileninterpreter.
|
|
|
|
Logbuch :
|
|
|
|
22-03-2010-dr235 - anpassung trios
|
|
10-04-2010-dr235 - alternatives dir-marker-system eingefügt
|
|
17-04-2010-dr235 - dm-user wird jetzt auch beim start aus dem aktuellen dir gesetzt
|
|
30-04-2010-dr235 - mount robuster gestaltet
|
|
19-09-2010-dr235 - integration ramdisk
|
|
- kommandos: xdir, xdel, xrename, xload, xsave, xtype
|
|
20-09-2010-dr235 - blocktransfer für xload/xsave (wesentlich bessere geschwindigkeit!!!)
|
|
Kommandoliste:
|
|
- siehe regime.txt
|
|
|
|
}}
|
|
|
|
OBJ
|
|
ios: "reg-ios"
|
|
str: "glob-string"
|
|
|
|
CON
|
|
|
|
_CLKMODE = XTAL1 + PLL16X
|
|
_XINFREQ = 5_000_000
|
|
|
|
OS_TIBLEN = 64 'größe des inputbuffers
|
|
OS_MLEN = 8
|
|
ERAM = 1024 * 512 * 2 'größe eram
|
|
HRAM = 1024 * 32 'größe hram
|
|
|
|
RMON_ZEILEN = 16 'speichermonitor - angezeigte zeilen
|
|
RMON_BYTES = 8 'speichermonitor - zeichen pro byte
|
|
|
|
VAR
|
|
'systemvariablen
|
|
byte tib[OS_TIBLEN] 'tastatur-input-buffer
|
|
byte cmdstr[OS_TIBLEN] 'kommandostring für interpreter
|
|
byte token1[OS_TIBLEN] 'parameterstring 1 für interpreter
|
|
byte token2[OS_TIBLEN] 'parameterstring 2 für interpreter
|
|
byte tibpos 'aktuelle position im tib
|
|
byte rows 'aktuelle anzahl der nutzbaren zeilen
|
|
byte cols 'aktuelle Anzahl der nutzbaren spalten
|
|
byte cog[8] 'array for free-cog counter
|
|
byte act_color 'Speicher für gewählte zeichenfarbe
|
|
|
|
|
|
PUB main | flag
|
|
|
|
flag := ios.start 'ios initialisieren
|
|
|
|
if flag == 0 'kaltstart?
|
|
ios.screeninit(0,1) 'systemmeldung
|
|
ios.ram_wrbyte(0,1,ios#SIFLAG) 'screeninit-flag setzen
|
|
ios.os_error(ios.sdmount) 'sd-card mounten
|
|
|
|
if 0 == ios.ram_rdbyte(0,ios#SIFLAG) 'screen neu initialisieren?
|
|
ios.screeninit(0,1) 'systemmeldung
|
|
ios.ram_wrbyte(0,1,ios#SIFLAG)
|
|
|
|
ios.sddmact(ios#DM_USER) 'wieder in userverzeichnis wechseln
|
|
rows := ios.belgetrows 'zeilenzahl bei bella abfragen
|
|
cols := ios.belgetcols 'spaltenzahl bei bella abfragen
|
|
|
|
ios.printnl
|
|
ios.print(@prompt1)
|
|
repeat
|
|
os_cmdinput 'kommandoeingabe
|
|
os_cmdint 'kommandozeileninterpreter
|
|
|
|
|
|
CON ''------------------------------------------------- INTERPRETER
|
|
|
|
PUB os_cmdinput | charc 'sys: stringeingabe eine zeile
|
|
''funktionsgruppe : sys
|
|
''funktion : stringeingabe eine zeile
|
|
''eingabe : -
|
|
''ausgabe : -
|
|
''variablen : tib - eingabepuffer zur string
|
|
'' : tibpos - aktuelle position im tib
|
|
|
|
ios.print(@prompt3)
|
|
tibpos := 0 'tibposition auf anfang setzen
|
|
repeat until (charc := ios.keywait) == $0D 'tasten einlesen bis return
|
|
if (tibpos + 1) < OS_TIBLEN 'zeile noch nicht zu lang?
|
|
case charc
|
|
ios#CHAR_BS: 'backspace
|
|
if tibpos > 0 'noch nicht anfang der zeile erreeicht?
|
|
tib[tibpos--] := 0 'ein zeichen aus puffer entfernen
|
|
ios.printbs 'backspace an terminal senden
|
|
other: 'zeicheneingabe
|
|
tib[tibpos++] := charc 'zeichen speichern
|
|
ios.printchar(charc) 'zeichen ausgeben
|
|
ios.printnl
|
|
tib[tibpos] := 0 'string abschließen
|
|
tibpos := charc := 0 'werte rücksetzen
|
|
|
|
PUB os_nxtoken1: stradr 'sys: token 1 von tib einlesen
|
|
''funktionsgruppe : sys
|
|
''funktion : nächsten token im eingabestring suchen und stringzeiger übergeben
|
|
''eingabe : -
|
|
''ausgabe : stradr - adresse auf einen string mit dem gefundenen token
|
|
''variablen : tib - eingabepuffer zur string
|
|
'' : tibpos - aktuelle position im tib
|
|
'' : token - tokenstring
|
|
|
|
stradr := os_tokenize(@token1)
|
|
|
|
PUB os_nxtoken2: stradr 'sys: token 2 von tib einlesen
|
|
''funktionsgruppe : sys
|
|
''funktion : nächsten token im eingabestring suchen und stringzeiger übergeben
|
|
''eingabe : -
|
|
''ausgabe : stradr - adresse auf einen string mit dem gefundenen token
|
|
''variablen : tib - eingabepuffer zur string
|
|
'' : tibpos - aktuelle position im tib
|
|
'' : token - tokenstring
|
|
|
|
stradr := os_tokenize(@token2)
|
|
|
|
PUB os_tokenize(token):stradr | i 'sys: liest nächsten token aus tib
|
|
|
|
i := 0
|
|
if tib[tibpos] <> 0 'abbruch bei leerem string
|
|
repeat until tib[tibpos] > ios#CHAR_SPACE 'führende leerzeichen ausbenden
|
|
tibpos++
|
|
repeat until (tib[tibpos] == ios#CHAR_SPACE) or (tib[tibpos] == 0) 'wiederholen bis leerzeichen oder stringende
|
|
byte[token][i] := tib[tibpos]
|
|
tibpos++
|
|
i++
|
|
byte[token][i] := 0
|
|
stradr := token
|
|
|
|
PUB os_nextpos: tibpos2 'sys: setzt zeiger auf nächste position
|
|
''funktionsgruppe : sys
|
|
''funktion : tibpos auf nächstes token setzen
|
|
''eingabe : -
|
|
''ausgabe : tibpos2 - position des nächsten tokens in tib
|
|
''variablen : tib - eingabepuffer zur string
|
|
'' : tibpos - aktuelle position im tib
|
|
|
|
if tib[tibpos] <> 0
|
|
repeat until tib[tibpos] > ios#CHAR_SPACE 'führende leerzeichen ausbenden
|
|
tibpos++
|
|
return tibpos
|
|
|
|
PUB os_cmdint 'sys: kommandointerpreter
|
|
''funktionsgruppe : sys
|
|
''funktion : kommandointerpreter; zeichenkette ab tibpos wird als kommando interpretiert
|
|
'' : tibpos wird auf position hinter token gesetzt
|
|
''eingabe : -
|
|
''ausgabe : -
|
|
''variablen : tib - eingabepuffer zur string
|
|
'' : tibpos - aktuelle position im tib
|
|
|
|
repeat 'kommandostring kopieren
|
|
cmdstr[tibpos] := tib[tibpos]
|
|
tibpos++
|
|
until (tib[tibpos] == ios#CHAR_SPACE) or (tib[tibpos] == 0) 'wiederholen bis leerzeichen oder stringende
|
|
cmdstr[tibpos] := 0 'kommandostring abschließen
|
|
os_cmdexec(@cmdstr) 'interpreter aufrufen
|
|
tibpos := 0 'tastaturpuffer zurücksetzen
|
|
tib[0] := 0
|
|
|
|
DAT ' Kommandostrings
|
|
|
|
cmd1 byte "help",0
|
|
cmd2 byte "mount",0
|
|
cmd3 byte "dir",0
|
|
cmd4 byte "type",0
|
|
cmd5 byte "rload",0
|
|
cmd6 byte "cls",0
|
|
cmd7 byte "bload",0
|
|
cmd8 byte "del",0
|
|
cmd9 byte "unmount",0
|
|
cmd10 byte "free",0
|
|
cmd11 byte "attrib",0
|
|
cmd12 byte "cd",0
|
|
cmd13 byte "aload",0
|
|
cmd14 byte "mkdir",0
|
|
cmd15 byte "rename",0
|
|
cmd16 byte "format",0
|
|
cmd17 byte "reboot",0
|
|
cmd18 byte "sysinfo",0
|
|
cmd19 byte "color",0
|
|
cmd20 byte "cogs",0
|
|
cmd21 byte "dm",0
|
|
cmd22 byte "dmset",0
|
|
cmd23 byte "dmclr",0
|
|
cmd24 byte "dmlist",0
|
|
cmd25 byte "debug",0
|
|
cmd26 byte "xload",0
|
|
cmd27 byte "xsave",0
|
|
cmd28 byte "xdir",0
|
|
cmd29 byte "xrename",0
|
|
cmd30 byte "xdel",0
|
|
cmd31 byte "xtype",0
|
|
cmd32 byte "forth",0
|
|
|
|
PUB os_cmdexec(stradr) 'sys: kommando ausführen
|
|
{{os_smdexec - das kommando im übergebenen string wird als kommando interpretiert
|
|
stradr: adresse einer stringvariable die ein kommando enthält}}
|
|
|
|
|
|
if strcomp(stradr,@cmd14) 'mkdir - verzeichnis erstellen
|
|
cmd_mkdir
|
|
elseif strcomp(stradr,@cmd15) 'rename - datei/verzeichnis umbenennen
|
|
cmd_rename
|
|
elseif strcomp(stradr,@cmd16) 'format - sd-card formatieren
|
|
cmd_format
|
|
elseif strcomp(stradr,@cmd17) 'reboot
|
|
cmd_reboot
|
|
elseif strcomp(stradr,@cmd18) 'sysinfo
|
|
cmd_sysinfo
|
|
elseif strcomp(stradr,@cmd19) 'color
|
|
cmd_color
|
|
elseif strcomp(stradr,@cmd20) 'cogs
|
|
cmd_cogs
|
|
elseif strcomp(stradr,@cmd21) 'dm
|
|
cmd_dm
|
|
elseif strcomp(stradr,@cmd22) 'dmset
|
|
cmd_dmset
|
|
elseif strcomp(stradr,@cmd23) 'dmclr
|
|
cmd_dmclr
|
|
elseif strcomp(stradr,@cmd24) 'dmlist
|
|
cmd_dmlist
|
|
elseif strcomp(stradr,@cmd25) 'debug
|
|
cmd_debug
|
|
elseif strcomp(stradr,@cmd1) 'help
|
|
cmd_help
|
|
elseif strcomp(stradr,@cmd2) 'mount - sd-card mounten
|
|
cmd_mount
|
|
elseif strcomp(stradr,@cmd3) 'dir - verzeichnis anzeigen
|
|
cmd_dir
|
|
elseif strcomp(stradr,@cmd4) 'type - textdatei auf bildschirm ausgeben
|
|
cmd_type
|
|
elseif strcomp(stradr,@cmd5) 'rload - lade regnatix-code
|
|
os_load
|
|
elseif strcomp(stradr,@cmd6) 'cls - bildschirm löschen
|
|
ios.printcls
|
|
elseif strcomp(stradr,@cmd7) 'bload - lade bellatrix-code
|
|
cmd_bload
|
|
elseif strcomp(stradr,@cmd8) 'del - datei löschen
|
|
cmd_del
|
|
elseif strcomp(stradr,@cmd9) 'unmount - medium abmelden
|
|
cmd_unmount
|
|
elseif strcomp(stradr,@cmd10) 'free - anzeige datenträgerbelegung
|
|
cmd_free
|
|
elseif strcomp(stradr,@cmd11) 'attrib - attribute ändern
|
|
cmd_attrib
|
|
elseif strcomp(stradr,@cmd12) 'cd - verzeichnis wechseln
|
|
cmd_cd
|
|
elseif strcomp(stradr,@cmd13) 'aload - lade administra-code
|
|
cmd_aload
|
|
elseif strcomp(stradr,@cmd26) 'xload
|
|
rd_load
|
|
elseif strcomp(stradr,@cmd27) 'xsave
|
|
rd_save
|
|
elseif strcomp(stradr,@cmd28) 'xdir
|
|
rd_dir
|
|
elseif strcomp(stradr,@cmd29) 'xrename
|
|
rd_rename
|
|
elseif strcomp(stradr,@cmd30) 'xdel
|
|
rd_del
|
|
elseif strcomp(stradr,@cmd31) 'xtype
|
|
rd_type
|
|
elseif strcomp(stradr,@cmd32) 'forth
|
|
reboot
|
|
elseif os_testbin(stradr) '.bin
|
|
elseif os_testadm(stradr) '.adm
|
|
elseif os_testbel(stradr) '.bel
|
|
else 'kommando nicht gefunden
|
|
ios.print(stradr)
|
|
ios.print(@msg3)
|
|
ios.print(@prompt1)
|
|
|
|
{
|
|
PUB os_error(err):error 'sys: fehlerausgabe
|
|
|
|
if err
|
|
ios.printnl
|
|
ios.print(@err_s1)
|
|
ios.printdec(err)
|
|
ios.print(string(" : $"))
|
|
ios.printhex(err,2)
|
|
ios.printnl
|
|
ios.print(@err_s2)
|
|
case err
|
|
0: ios.print(@err0)
|
|
1: ios.print(@err1)
|
|
2: ios.print(@err2)
|
|
3: ios.print(@err3)
|
|
4: ios.print(@err4)
|
|
5: ios.print(@err5)
|
|
6: ios.print(@err6)
|
|
7: ios.print(@err7)
|
|
8: ios.print(@err8)
|
|
9: ios.print(@err9)
|
|
10: ios.print(@err10)
|
|
11: ios.print(@err11)
|
|
12: ios.print(@err12)
|
|
13: ios.print(@err13)
|
|
14: ios.print(@err14)
|
|
15: ios.print(@err15)
|
|
16: ios.print(@err16)
|
|
17: ios.print(@err17)
|
|
18: ios.print(@err18)
|
|
19: ios.print(@err19)
|
|
20: ios.print(@err20)
|
|
OTHER: ios.print(@errx)
|
|
ios.printnl
|
|
error := err
|
|
}
|
|
PUB os_load | len,i,stradr1,stradr2 'sys: startet bin-datei über loader
|
|
{{ldbin - startet bin-datei über loader}}
|
|
ios.paraset(@tib + os_nextpos) 'parameterstring kopieren
|
|
ios.ldbin(os_nxtoken1)
|
|
|
|
PUB os_testbin(stradr): flag | status,i,len 'sys: testet ob das kommando als bin-datei vorliegt
|
|
{{testbin(stradr): flag - testet ob das kommando als bin-datei vorliegt
|
|
- string bei stradr wird um .bin erweitert
|
|
- flag = TRUE - kommando gefunden}}
|
|
|
|
flag := FALSE
|
|
len := strsize(stradr)
|
|
repeat i from 0 to 3 '.bin anhängen
|
|
byte[stradr][len + i] := byte[@ext1][i]
|
|
byte[stradr][len + i] := 0
|
|
|
|
' im aktuellen dir suchen
|
|
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.paraset(@tib + os_nextpos) 'parameterstring kopieren
|
|
ios.ldbin(stradr) 'anwendung starten
|
|
ios.sdclose
|
|
|
|
'im system-dir suchen
|
|
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
|
ios.sddmact(ios#DM_SYSTEM) 's-marker aktivieren
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.paraset(@tib + os_nextpos) 'parameterstring kopieren
|
|
ios.ldbin(stradr) 'anwendung starten
|
|
ios.sdclose
|
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
|
|
|
'vorbereiten für suche nach anderen dateien
|
|
byte[stradr][len] := 0 'extender wieder abschneiden
|
|
|
|
PUB os_testadm(stradr): flag | status,i,len 'sys: test ob kommando als adm-datei vorliegt
|
|
|
|
flag := FALSE
|
|
len := strsize(stradr)
|
|
repeat i from 0 to 3 '.bel anhängen
|
|
byte[stradr][len + i] := byte[@ext2][i]
|
|
byte[stradr][len + i] := 0
|
|
|
|
' im aktuellen dir suchen
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.admload(stradr) 'administra-code laden
|
|
else 'datei nicht gefunden
|
|
ios.sdclose
|
|
|
|
'im system-dir suchen
|
|
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
|
ios.sddmact(ios#DM_SYSTEM) 's-marker aktivieren
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.admload(stradr) 'administra-code laden
|
|
else 'datei nicht gefunden
|
|
ios.sdclose
|
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
|
|
|
byte[stradr][len] := 0 'extender wieder abschneiden
|
|
|
|
PUB os_testbel(stradr): flag | status,i,len 'sys: test ob kommando als bel-datei vorliegt
|
|
|
|
flag := FALSE
|
|
len := strsize(stradr)
|
|
repeat i from 0 to 3 '.bel anhängen
|
|
byte[stradr][len + i] := byte[@ext3][i]
|
|
byte[stradr][len + i] := 0
|
|
|
|
' im aktuellen dir suchen
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.belload(stradr) 'bellatrix-code laden
|
|
ios.screeninit(0,1) 'systemmeldung
|
|
else 'datei nicht gefunden
|
|
ios.sdclose
|
|
|
|
'im system-dir suchen
|
|
ios.sddmset(ios#DM_USER) 'u-marker setzen
|
|
ios.sddmact(ios#DM_SYSTEM) 's-marker aktivieren
|
|
status := ios.sdopen("r",stradr) 'datei vorhanden?
|
|
if status == 0 'datei gefunden
|
|
flag := TRUE
|
|
ios.belload(stradr) 'bellatrix-code laden
|
|
ios.screeninit(0,1) 'systemmeldung
|
|
else 'datei nicht gefunden
|
|
ios.sdclose
|
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
|
|
|
byte[stradr][len] := 0 'extender wieder abschneiden
|
|
|
|
PRI os_printstr(strptr1,strptr2):strptr3
|
|
|
|
ios.print(strptr1)
|
|
ios.print(strptr2)
|
|
ios.printnl
|
|
strptr3 := strptr2
|
|
|
|
PRI os_printdec(strptr, wert):wert2
|
|
|
|
ios.print(strptr)
|
|
ios.printdec(wert)
|
|
ios.printnl
|
|
wert2 := wert
|
|
|
|
CON ''------------------------------------------------- KOMMANDOS
|
|
|
|
PRI rd_dir | stradr,len 'rd: dir anzeigen
|
|
|
|
if ios.ram_rdbyte(ios#sysmod,ios#RAMDRV)
|
|
ios.rd_dir
|
|
repeat
|
|
len := ios.rd_dlen
|
|
stradr := ios.rd_next
|
|
if stradr
|
|
ios.print(stradr)
|
|
ios.printtab
|
|
ios.printdec(len)
|
|
ios.printnl
|
|
until stradr == 0
|
|
else
|
|
ios.os_error(1)
|
|
|
|
PRI rd_load | stradr,len,fnr,i 'rd: datei in ramdisk laden
|
|
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
ifnot ios.os_error(ios.sdopen("r",stradr)) 'datei öffnen
|
|
len := ios.sdfattrib(ios#F_SIZE)
|
|
ios.rd_newfile(stradr,len) 'datei erzeugen
|
|
fnr := ios.rd_open(stradr)
|
|
ios.rd_seek(fnr,0)
|
|
ios.print(string("Datei laden... "))
|
|
i := 0
|
|
ios.sdxgetblk(fnr,len) 'daten als block direkt in ext. ram einlesen
|
|
ios.sdclose
|
|
ios.rd_close(fnr)
|
|
|
|
PRI rd_save | stradr,fnr,len,i 'rd: datei aus ramdisk speichern
|
|
|
|
stradr := os_nxtoken1
|
|
fnr := ios.rd_open(stradr)
|
|
ifnot fnr == -1
|
|
len := ios.rd_len(fnr)
|
|
ifnot ios.os_error(ios.sdnewfile(stradr))
|
|
ifnot ios.os_error(ios.sdopen("W",stradr))
|
|
ios.print(string("Datei schreiben... "))
|
|
i := 0
|
|
ios.sdxputblk(fnr,len) 'daten als block schreiben
|
|
ios.sdclose
|
|
ios.printnl
|
|
ios.rd_close(fnr)
|
|
|
|
PRI rd_rename 'rd: datei in ramdisk umbenennen
|
|
|
|
ios.os_error(ios.rd_rename(os_nxtoken1,os_nxtoken2))
|
|
|
|
PRI rd_del | adr 'rd: datei löschen
|
|
|
|
ios.os_error(ios.rd_del(os_nxtoken1))
|
|
|
|
PRI rd_type | stradr,len,fnr 'rd: text ausgeben
|
|
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
fnr := ios.rd_open(stradr) 'datei öffnen
|
|
ifnot fnr == -1
|
|
len := ios.rd_len(fnr)
|
|
ios.rd_seek(fnr,0)
|
|
repeat len
|
|
ios.printchar(ios.rd_get(fnr))
|
|
ios.rd_close(fnr)
|
|
|
|
|
|
PUB cmd_debug|stradr,len,fnr,i,x 'cmd: temporäre debugfunktion
|
|
|
|
ios.print(string("Debug : "))
|
|
ios.printnl
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
ifnot ios.os_error(ios.sdopen("r",stradr)) 'datei öffnen
|
|
len := ios.sdfattrib(ios#F_SIZE)
|
|
ios.rd_newfile(stradr,len) 'datei erzeugen
|
|
fnr := ios.rd_open(stradr)
|
|
ios.rd_seek(fnr,0)
|
|
ios.print(string("Datei laden... "))
|
|
i := 0
|
|
x := ios.curgetx
|
|
ios.curoff
|
|
ios.sdxgetblk(fnr,len) 'daten als block direkt in ext. ram einlesen
|
|
ios.print(string("ok"))
|
|
ios.curon
|
|
ios.sdclose
|
|
ios.rd_close(fnr)
|
|
|
|
PUB cmd_dm|wert 'cmd: dir-marker aktivieren
|
|
|
|
ios.os_error(ios.sddmact(cmd_dm_nr))
|
|
|
|
PUB cmd_dmset 'cmd: dir-marker setzen
|
|
|
|
ios.sddmset(cmd_dm_nr)
|
|
|
|
PUB cmd_dmclr 'cmd: dir-marker löschen
|
|
|
|
ios.sddmclr(cmd_dm_nr)
|
|
|
|
PUB cmd_dmlist 'cmd: dir-marker auflisten
|
|
|
|
ios.setcolor(ios#YELLOW)
|
|
ios.print(@msg25)
|
|
cmd_dm_status(ios#DM_ROOT)
|
|
ios.print(@msg24)
|
|
cmd_dm_status(ios#DM_SYSTEM)
|
|
ios.print(@msg26)
|
|
cmd_dm_status(ios#DM_USER)
|
|
ios.setcolor(act_color)
|
|
ios.print(@msg27)
|
|
cmd_dm_status(ios#DM_A)
|
|
ios.print(@msg28)
|
|
cmd_dm_status(ios#DM_B)
|
|
ios.print(@msg29)
|
|
cmd_dm_status(ios#DM_C)
|
|
|
|
PRI cmd_dm_status(markernr)
|
|
|
|
if ios.sddmget(markernr) == TRUE
|
|
ios.print(@msg31)
|
|
else
|
|
ios.print(@msg30)
|
|
|
|
PRI cmd_dm_nr:wert
|
|
|
|
case byte[os_nxtoken1]
|
|
"r": wert := 0 'root
|
|
"s": wert := 1 'system
|
|
"u": wert := 2 'user
|
|
"a": wert := 3 'marker a
|
|
"b": wert := 4 'marker b
|
|
"c": wert := 5 'marker c
|
|
other: wert := 0
|
|
|
|
PUB cmd_color 'cmd: zeichenfarbe wählen
|
|
|
|
ios.setcolor(str.decimalToNumber(act_color := os_nxtoken1))
|
|
|
|
PUB cmd_sysinfo 'cmd: systeminformationen anzeigen
|
|
|
|
ios.printnl
|
|
os_printstr(@msg22,@syst)
|
|
os_printstr(@msg14,@prog)
|
|
os_printstr(@msg23,@copy)
|
|
if ios.sdcheckmounted 'test ob medium gemounted ist
|
|
os_printstr(@msg21,ios.sdvolname)
|
|
ios.printnl
|
|
os_printstr(@msg15,str.numberToBinary(ios#CHIP_VER,32))
|
|
os_printstr(@msg16,str.numberToBinary(ios#CHIP_SPEC,32))
|
|
os_printstr(@msg17,str.numberToBinary(ios.admgetver,32))
|
|
os_printstr(@msg18,str.numberToBinary(ios.admgetspec,32))
|
|
os_printstr(@msg19,str.numberToBinary(ios.belgetver,32))
|
|
os_printstr(@msg20,str.numberToBinary(ios.belgetspec,32))
|
|
os_printstr(@msg32,str.numberToDecimal(ios.belgetcols,4))
|
|
os_printstr(@msg33,str.numberToDecimal(ios.belgetrows,4))
|
|
os_printstr(@msg34,str.numberToDecimal(ios.belgetresx,4))
|
|
os_printstr(@msg35,str.numberToDecimal(ios.belgetresy,4))
|
|
|
|
|
|
PUB cmd_mount | err 'cmd: mount
|
|
|
|
repeat 16
|
|
err := ios.sdmount
|
|
ifnot err
|
|
quit
|
|
ios.os_error(err)
|
|
ifnot err
|
|
ios.setcolor(ios#YELLOW)
|
|
ios.print(@msg4)
|
|
ios.print(ios.sdvolname)
|
|
ios.printnl
|
|
ios.print(@msg25)
|
|
cmd_dm_status(ios#DM_ROOT)
|
|
ios.print(@msg24)
|
|
cmd_dm_status(ios#DM_SYSTEM)
|
|
ios.printnl
|
|
ios.setcolor(act_color)
|
|
|
|
PUB cmd_unmount 'cmd: unmount
|
|
|
|
ios.os_error(ios.sdunmount)
|
|
|
|
PUB cmd_free | wert 'cmd: anzeige freier speicher
|
|
|
|
os_printstr(@msg5,ios.sdvolname)
|
|
wert := os_printdec(@msg6,ios.sdcheckfree*512/1024)
|
|
wert += os_printdec(@msg7,ios.sdcheckused*512/1024)
|
|
os_printdec(@msg8,wert)
|
|
|
|
ios.printnl
|
|
ios.print(string("RBAS : $"))
|
|
ios.printhex(ios.ram_rdlong(ios#sysmod,ios#RAMBAS),8)
|
|
ios.printnl
|
|
ios.print(string("REND : $"))
|
|
ios.printhex(ios.ram_rdlong(ios#sysmod,ios#RAMEND),8)
|
|
ios.printnl
|
|
ios.print(string("USER : $"))
|
|
wert := ios.ram_rdlong(ios#sysmod,ios#RAMEND)
|
|
wert := wert - ios.ram_rdlong(ios#sysmod,ios#RAMBAS)
|
|
ios.printhex(wert,8)
|
|
ios.printnl
|
|
ios.print(string("RAMDRV : $"))
|
|
ios.printhex(ios.ram_rdbyte(ios#sysmod,ios#RAMDRV),2)
|
|
ios.printnl
|
|
ios.print(string("SYSVAR : $"))
|
|
ios.printhex(ios#SYSVAR,8)
|
|
ios.printnl
|
|
|
|
PUB cmd_attrib 'cmd: dateiattribute ändern
|
|
|
|
ios.os_error(ios.sdchattrib(os_nxtoken1,os_nxtoken2))
|
|
|
|
PUB cmd_rename 'cmd: datei/verzeichnis umbenennen
|
|
|
|
ios.os_error(ios.sdrename(os_nxtoken1,os_nxtoken2))
|
|
|
|
PUB cmd_cd 'cmd: verzeichnis wechseln
|
|
|
|
ios.os_error(ios.sdchdir(os_nxtoken1))
|
|
|
|
PUB cmd_mkdir 'cmd: verzeichnis erstellen
|
|
|
|
ios.os_error(ios.sdnewdir(os_nxtoken1))
|
|
|
|
PUB cmd_del | stradr,char 'cmd: datei auf sdcard löschen
|
|
{{sddel - datei auf sdcard löschen}}
|
|
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
ios.print(@msg2)
|
|
if ios.keywait == "j"
|
|
ios.os_error(ios.sddel(stradr))
|
|
|
|
PUB cmd_format | stradr 'cmd: sd-card formatieren
|
|
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
ios.print(@msg12)
|
|
if ios.keywait == "j"
|
|
ios.os_error(ios.sdformat(stradr))
|
|
|
|
PUB cmd_reboot | key, stradr 'cmd: reboot
|
|
|
|
ios.print(@msg13)
|
|
key := ios.keywait
|
|
case key
|
|
"c": ios.ram_wrbyte(ios#sysmod,0,ios#MAGIC)
|
|
ios.ram_wrbyte(ios#sysmod,0,ios#RAMDRV)
|
|
ios.admreset
|
|
ios.belreset
|
|
waitcnt(cnt+clkfreq*3)
|
|
reboot
|
|
"w": ios.ram_wrbyte(ios#sysmod,0,ios#SIFLAG)
|
|
reboot
|
|
|
|
PUB cmd_aload|status,stradr 'cmd: administra-code laden
|
|
|
|
stradr := os_nxtoken1
|
|
status := ios.sdopen("r",stradr)
|
|
if status == 0
|
|
ios.admload(stradr) 'administra-code laden
|
|
else
|
|
ios.os_error(status)
|
|
|
|
PUB cmd_bload | stradr,status 'cmd: bellatrix-code laden
|
|
{{bload - treiber für bellatrix laden}}
|
|
|
|
stradr := os_nxtoken1
|
|
status := ios.sdopen("r",stradr)
|
|
if status == 0
|
|
ios.belload(stradr) 'treiberupload
|
|
ios.screeninit(0,1) 'systemmeldung
|
|
ios.print(@prog) 'programmversion
|
|
else
|
|
ios.os_error(status)
|
|
|
|
PUB cmd_type | stradr,char,n 'cmd: textdatei ausgeben
|
|
{{sdtype <name> - textdatei ausgeben}}
|
|
|
|
stradr := os_nxtoken1 'dateinamen von kommandozeile holen
|
|
n := 1
|
|
ifnot ios.os_error(ios.sdopen("r",stradr)) 'datei öffnen
|
|
repeat 'text ausgeben
|
|
if ios.printchar(ios.sdgetc) == ios#CHAR_NL 'zeilenzahl zählen und stop
|
|
if ++n == (rows - 2)
|
|
n := 1
|
|
if ios.keywait == "q"
|
|
ios.sdclose
|
|
return
|
|
until ios.sdeof 'ausgabe bis eof
|
|
ios.sdclose 'datei schließen
|
|
|
|
PUB cmd_help | i,char,n 'cmd: textdatei ausgeben
|
|
|
|
ios.print(string("Siehe regime.txt!"))
|
|
{
|
|
n := i := 1
|
|
repeat until (char := byte[@help1][i++]) == 0 'text ausgeben
|
|
ios.printchar(char)
|
|
if char == ios#CHAR_NL 'zeilenzahl zählen und stop
|
|
if ++n == (rows - 2)
|
|
n := 1
|
|
if ios.keywait == "q"
|
|
return
|
|
}
|
|
|
|
PUB cmd_dir|fcnt,stradr,hflag 'cmd: verzeichnis anzeigen
|
|
{{sddir - anzeige verzeichnis}}
|
|
|
|
if ios.sdcheckmounted 'test ob medium gemounted ist
|
|
|
|
hflag := 1
|
|
stradr := os_nxtoken1 'parameter einlesen
|
|
ios.print(@msg10)
|
|
ios.print(@msg5)
|
|
ios.print(ios.sdvolname)
|
|
ifnot ios.os_error(ios.sddir) 'verzeichnis öffnen
|
|
if str.findCharacter(stradr,"h")
|
|
hflag := 0
|
|
if str.findCharacter(stradr,"w")
|
|
fcnt := cmd_dir_w(hflag)
|
|
else
|
|
fcnt := cmd_dir_l(hflag) 'dir l
|
|
ios.printnl
|
|
ios.print(@msg10)
|
|
ios.print(@msg9)
|
|
ios.printdec(fcnt)
|
|
else
|
|
ios.os_error(1)
|
|
|
|
PRI cmd_dir_w(hflag):fcnt|stradr,lcnt,wcnt
|
|
|
|
fcnt := 0
|
|
lcnt := (rows - 2) * 4
|
|
wcnt := 3
|
|
ios.printnl
|
|
repeat while (stradr := ios.sdnext)
|
|
ifnot ios.sdfattrib(ios#F_HIDDEN) & hflag 'versteckte dateien anzeigen?
|
|
if ios.sdfattrib(ios#F_DIR) 'verzeichnisname
|
|
ios.setcolor(1)
|
|
ios.printqchar("▶")
|
|
ios.printchar(" ")
|
|
ios.print(stradr)
|
|
ios.setcolor(0)
|
|
elseif ios.sdfattrib(ios#F_HIDDEN)
|
|
ios.setcolor(3)
|
|
ios.print(string(" "))
|
|
str.charactersToLowerCase(stradr)
|
|
ios.print(stradr)
|
|
ios.setcolor(0)
|
|
else 'dateiname
|
|
ios.print(string(" "))
|
|
str.charactersToLowerCase(stradr)
|
|
ios.print(stradr)
|
|
ifnot wcnt--
|
|
wcnt := 3
|
|
ios.printnl
|
|
else
|
|
'ios.printtab
|
|
fcnt++
|
|
ifnot --lcnt
|
|
lcnt := (rows - 2) * 4
|
|
if ios.keywait == "q"
|
|
return
|
|
|
|
PRI cmd_dir_l(hflag):fcnt|stradr,lcnt
|
|
|
|
fcnt := 0
|
|
lcnt := rows - 2
|
|
repeat while (stradr := ios.sdnext)
|
|
ifnot ios.sdfattrib(ios#F_HIDDEN) & hflag 'versteckte dateien anzeigen?
|
|
ios.printnl
|
|
if ios.sdfattrib(ios#F_DIR) 'verzeichnisname
|
|
ios.setcolor(1)
|
|
ios.printqchar("▶")
|
|
ios.printchar(" ")
|
|
ios.print(stradr)
|
|
ios.setcolor(0)
|
|
elseif ios.sdfattrib(ios#F_HIDDEN)
|
|
ios.setcolor(3)
|
|
ios.print(string(" "))
|
|
str.charactersToLowerCase(stradr)
|
|
ios.print(stradr)
|
|
ios.setcolor(0)
|
|
else 'dateiname
|
|
ios.print(string(" "))
|
|
str.charactersToLowerCase(stradr)
|
|
ios.print(stradr)
|
|
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_SIZE),10)) 'dateigröße
|
|
|
|
ios.printchar(" ") 'attribute
|
|
if ios.sdfattrib(ios#F_READONLY)
|
|
ios.printchar("r")
|
|
else
|
|
ios.printchar("-")
|
|
if ios.sdfattrib(ios#F_HIDDEN)
|
|
ios.printchar("h")
|
|
else
|
|
ios.printchar("-")
|
|
if ios.sdfattrib(ios#F_SYSTEM)
|
|
ios.printchar("s")
|
|
else
|
|
ios.printchar("-")
|
|
if ios.sdfattrib(ios#F_ARCHIV)
|
|
ios.printchar("a")
|
|
else
|
|
ios.printchar("-")
|
|
|
|
ios.printchar(" ") 'änderungsdatum
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CDAY),2))
|
|
ios.printchar(".")
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CMONTH),2) + 1)
|
|
ios.printchar(".")
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CYEAR),4) + 1)
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CHOUR),2))
|
|
ios.printchar(":")
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CMIN),2) + 1)
|
|
ios.printchar(":")
|
|
ios.print(str.numberToDecimal(ios.sdfattrib(ios#F_CSEC),2) + 1)
|
|
fcnt++
|
|
ifnot --lcnt
|
|
lcnt := rows - 2
|
|
if ios.keywait == "q"
|
|
return
|
|
|
|
PUB cmd_cogs | i,l 'cmd: belegung der cogs anzeigen
|
|
|
|
ios.print(@cogs4)
|
|
ios.printnl
|
|
|
|
i := ios.reggetcogs 'regnatix
|
|
cmd_cogs_print(8-i,i,@cogs1)
|
|
|
|
i := ios.admgetcogs 'administra
|
|
cmd_cogs_print(8-i,i,@cogs2)
|
|
|
|
i := ios.belgetcogs 'bellatrix
|
|
cmd_cogs_print(8-i,i,@cogs3)
|
|
|
|
ios.setcolor(act_color)
|
|
ios.print(@cogs4)
|
|
ios.printnl
|
|
ios.print(string(" ("))
|
|
ios.setcolor(ios#RED)
|
|
ios.print(string("•"))
|
|
ios.setcolor(act_color)
|
|
ios.print(@cogs5)
|
|
ios.printnl
|
|
|
|
PRI cmd_cogs_print(used,free,stradr)
|
|
|
|
ios.print(stradr)
|
|
if used > 0
|
|
repeat
|
|
ios.setcolor(ios#RED)
|
|
ios.print(string("•"))
|
|
used--
|
|
until used == 0
|
|
if free > 0
|
|
repeat
|
|
ios.setcolor(ios#GREEN)
|
|
ios.print(string("•"))
|
|
free--
|
|
until free == 0
|
|
ios.setcolor(act_color)
|
|
ios.printnl
|
|
|
|
DAT 'strings
|
|
system1 byte "▶Hive: Regime", 0
|
|
syst byte "TriOS",0
|
|
prog byte "Regime",0
|
|
copy byte "06-04-2010 • drohne235",0
|
|
prompt1 byte " ok ", $0d, 0
|
|
prompt2 byte "~ ", 0
|
|
prompt3 byte "∞ ", 0
|
|
msg1 byte "Datei nicht gefunden!",0
|
|
msg2 byte "Datei löschen? <j/*> : ",0
|
|
msg3 byte " ? ",0
|
|
msg4 byte "Volume : ",0
|
|
msg5 byte "Datenträger : ",0
|
|
msg6 byte "Frei : ",0
|
|
msg7 byte "Belegt : ",0
|
|
msg8 byte "Gesamt : ",0
|
|
msg9 byte "Anzahl der Dateien : ",0
|
|
msg10 byte "• ",0
|
|
msg11 byte " KB",0
|
|
msg12 byte "SD-Card formatieren? <j/*> : ",0
|
|
msg13 byte "Hive neu starten? <[c]old/[w]arm/*> : ",0
|
|
msg14 byte "CLI : ",0
|
|
msg15 byte "Regnatix Version : ",0
|
|
msg16 byte "Regnatix Spezifikation : ",0
|
|
msg17 byte "Administra Version : ",0
|
|
msg18 byte "Administra Spezifikation : ",0
|
|
msg19 byte "Bellatrix Version : ",0
|
|
msg20 byte "Bellatrix Spezifikation : ",0
|
|
msg21 byte "Medium : ",0
|
|
msg22 byte "OS : ",0
|
|
msg23 byte "Copyright : ",0
|
|
msg24 byte "[S]ystem : ",0
|
|
msg25 byte "[R]oot : ",0
|
|
msg26 byte "[U]ser : ",0
|
|
msg27 byte "Marker [A] : ",0
|
|
msg28 byte "Marker [B] : ",0
|
|
msg29 byte "Marker [C] : ",0
|
|
msg30 byte "gesetzt",13,0
|
|
msg31 byte "frei",13,0
|
|
msg32 byte "Bellatrix Textspalten : ",0
|
|
msg33 byte "Bellatrix Textzeilen : ",0
|
|
msg34 byte "Bellatrix Auflösung X : ",0
|
|
msg35 byte "Bellatrix Auflösung Y : ",0
|
|
ext1 byte ".BIN",0
|
|
ext2 byte ".ADM",0
|
|
ext3 byte ".BEL",0
|
|
wait1 byte "<WEITER? */q:>",0
|
|
|
|
cstr byte "••••••••",0
|
|
cogs1 byte "Regnatix : ",0
|
|
cogs2 byte "Administra: ",0
|
|
cogs3 byte "Bellatrix : ",0
|
|
cogs4 byte "────────────────────",0
|
|
cogs5 byte " = running cog)",0
|
|
|
|
gdriver byte "bel.sys", 0 'name des grafiktreibers
|
|
|
|
{
|
|
help1 file "regime.txt"
|
|
byte 13,0
|
|
}
|
|
DAT 'systemfehler
|
|
err_s1 byte "Fehlernummer : ",0
|
|
err_s2 byte "Fehler : ",0
|
|
{
|
|
err0 byte "no error",0
|
|
err1 byte "fsys unmounted",0
|
|
err2 byte "fsys corrupted",0
|
|
err3 byte "fsys unsupported",0
|
|
err4 byte "not found",0
|
|
err5 byte "file not found",0
|
|
err6 byte "dir not found",0
|
|
err7 byte "file read only",0
|
|
err8 byte "end of file",0
|
|
err9 byte "end of directory",0
|
|
err10 byte "end of root",0
|
|
err11 byte "dir is full",0
|
|
err12 byte "dir is not empty",0
|
|
err13 byte "checksum error",0
|
|
err14 byte "reboot error",0
|
|
err15 byte "bpb corrupt",0
|
|
err16 byte "fsi corrupt",0
|
|
err17 byte "dir already exist",0
|
|
err18 byte "file already exist",0
|
|
err19 byte "out of disk free space",0
|
|
err20 byte "disk io error",0
|
|
err21 byte "command not found",0
|
|
err22 byte "timeout",0
|
|
errx byte "undefined",0
|
|
}
|
|
DAT 'lizenz
|
|
{{
|
|
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ TERMS OF USE: MIT License │
|
|
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
|
│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
|
|
│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
|
|
│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
|
|
│is furnished to do so, subject to the following conditions: │
|
|
│ │
|
|
│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
|
|
│ │
|
|
│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
|
|
│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
|
|
│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
|
|
│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
}}
|
|
|