TriOS-alt/system/regnatix/time.spin

283 lines
23 KiB
Plaintext
Raw Permalink Normal View History

2011-11-11 17:41:02 +01:00
<EFBFBD><EFBFBD>{{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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 : flash
Chip : Regnatix
Typ : Programm
Version :
Subversion :
Funktion : RTC-Funktionen Date/Time
Komponenten : -
COG's : -
Logbuch :
05.12.2010-stephan - DateTime Funktionen
09-04-2011-dr235 - auskopplung aus regime
Kommandoliste :
Notizen :
}}
OBJ
ios: "reg-ios"
str: "glob-string"
num: "glob-numbers" 'Number Engine
CON
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
VAR
byte parastr[64]
PUB main
ios.start 'ios initialisieren
ios.parastart 'parameter<00>bergabe starten
repeat while ios.paranext(@parastr) 'parameter einlesen
if byte[@parastr][0] == "/" 'option?
case byte[@parastr][1]
"?": ios.print(@help)
"d": cmd_date
"l": cmd_date_long
"t": cmd_time
"s": cmd_setDateTime
other: ios.print(@help)
ios.stop
CON ''------------------------------------------------- DATE TIME FUNKTIONEN
PUB cmd_date | stringpointer, format 'rtc: aktuelles Datum zur<00>ckgeben
format := ios.getNVSRAM(ios#NVRAM_DATEFORMAT)
case format
ios#DATEFORMAT_DE: 'YYYY-MM-DD
ios.print(str.trimCharacters(str.numberToDecimal(ios.getDate, 2)))
ios.print(string("."))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMonth, 2)))
ios.print(string("."))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getYear, 4)))
ios.printnl
ios#DATEFORMAT_UK: 'DD/MM/YYYY
ios.print(str.trimCharacters(str.numberToDecimal(ios.getDate, 2)))
ios.print(string("/"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMonth, 2)))
ios.print(string("/"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getYear, 4)))
ios.printnl
ios#DATEFORMAT_US: 'MM/DD/YYYY
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMonth, 2)))
ios.print(string("/"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getDate, 2)))
ios.print(string("/"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getYear, 4)))
ios.printnl
other: 'DATEFORMAT_CANONICAL 'YYYY-MM-DD
ios.print(str.trimCharacters(str.numberToDecimal(ios.getYear, 4)))
ios.print(string("-"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMonth, 2)))
ios.print(string("-"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getDate, 2)))
ios.printnl
PRI cmd_date_long | stringpointer, month, weekday 'rtc: aktuelles Datum zur<00>ckgeben
case ios.getNVSRAM(ios#NVRAM_LANG)
ios#LANG_EN:
weekday := lookup(ios.getDay: string("Sunday"), string("Monday"), string("Tuesday"), string("Wednesday"), string("Thursday"), string("Friday"), string("Saturday"))
flash\administra\admflash.spin - Überarbeitung der Routine zum mounten der SD-Card. Da verschiedene Karten unterschiedliches Timing haben, wird jetzt solange versucht zu mounten, bis ein Erfolg eintritt, was zusätzlich akustisch durch einen leise anschwellenden Ton angezeigt wird. Das Verfahren ist jetzt wesentlich robuster. - rtc.setSQWOUTState(1) --> rtc.setSQWOUTState(0) deaktiviert den Frequenzausgang, verringert damit lt. DS1307-Datenblatt den Pufferstrom von 480 auf 300 nA und erhöht somit die Pufferdauer der Batterie auf das 1,6-fache. - Plexbus-Funktionen entfernt - Screeninterface-Funktionen zugefügt flash\bellatrix\belflash.spin - Anpassung für verschiedene Zeilenumbrüche in print_char eingefügt. flash\regnatix\regflash.spin - Der Loader hat fälschlicherweise das Warmstartflag für die Ramdisk gesetzt, wodurch sie nicht resetfest war. forth\fib.mod - Fibonacci-Benchmark (iterativ) in Forth. lib\adm-fat.spin - Fehler in setCharacterPosition: Bei einem Wechsel von einer Position > 0 auf Position = 0 wurde der erste Sektor mit falschen Daten überschrieben. lib\reg-ios.spin - Funktionsset für Grafikmodus 0 eingefügt - sfx_keyoff, sfx_stop eingefügt - printq zugefügt: Ausgabe einer Zeichenkette ohne Steuerzeichen - Korrektur char_ter_bs - Plexbus-Funktionen entfernt - Screeninterface-Funktionen eingefügt - Bellatrix-Funktionen blktrans, bmgr_load eingefügt - Funktion os_error zugefügt für zentrale Ausgabe von Fehlern - Korrektur BS in input-Funktion - Funktion printblk für schnellen Blocktransfer - Div. Fehler in den Ramdisk-Funktionen, welche jetzt auch resetfest ist. - Funktion rd_getback um Zeichen rückwärts aus der Ramdisk zu lesen. - Funktion ram_getfree liefert freien Speicher im eRAM system\regnatix\eram.spin - Korrektur BS-Steuercode system\regnatix\hplay.spin - Der HSS-Player hat seine Daten fals im SYS-Modus im eRAM abgelegt und so die Ramdisk beschädigt. Korrektur der Speichernutzung. system\regnatix\regime.spin - Korrekte Initialisierung der Ramdisk (resetfest) - Korrektur der Bisldschirminitialisierung nach dem Laden von Bellatrix-Code - Verwendung von ios.os_error für die Fehlerausgabe - Fehler im Kommando "reboot" beim Kaltstart behoben - Korrektur Ausgabe von "cogs" system\regnatix\time.spin - Korrektur Tipfehler system\regnatix\basic.spin Ich habe Femto Basic entfernt, da es nicht integraler Bestandteil von TriOS ist und mir die Zeit fehlt es an den aktuelen Stand anzupassen.
2012-02-08 18:09:41 +01:00
month := lookup(ios.getMonth: string("January"), string("February"), string("March"), string("April"), string("May"), string("June"), string("July"), string("August"), string("September"), string("October"), string("November"), string("December"))
2011-11-11 17:41:02 +01:00
other:
weekday := lookup(ios.getDay: string("Montag"), string("Dienstag"), string("Mittwoch"), string("Donnerstag"), string("Freitag"), string("Samstag"), string("Sonntag"))
flash\administra\admflash.spin - Überarbeitung der Routine zum mounten der SD-Card. Da verschiedene Karten unterschiedliches Timing haben, wird jetzt solange versucht zu mounten, bis ein Erfolg eintritt, was zusätzlich akustisch durch einen leise anschwellenden Ton angezeigt wird. Das Verfahren ist jetzt wesentlich robuster. - rtc.setSQWOUTState(1) --> rtc.setSQWOUTState(0) deaktiviert den Frequenzausgang, verringert damit lt. DS1307-Datenblatt den Pufferstrom von 480 auf 300 nA und erhöht somit die Pufferdauer der Batterie auf das 1,6-fache. - Plexbus-Funktionen entfernt - Screeninterface-Funktionen zugefügt flash\bellatrix\belflash.spin - Anpassung für verschiedene Zeilenumbrüche in print_char eingefügt. flash\regnatix\regflash.spin - Der Loader hat fälschlicherweise das Warmstartflag für die Ramdisk gesetzt, wodurch sie nicht resetfest war. forth\fib.mod - Fibonacci-Benchmark (iterativ) in Forth. lib\adm-fat.spin - Fehler in setCharacterPosition: Bei einem Wechsel von einer Position > 0 auf Position = 0 wurde der erste Sektor mit falschen Daten überschrieben. lib\reg-ios.spin - Funktionsset für Grafikmodus 0 eingefügt - sfx_keyoff, sfx_stop eingefügt - printq zugefügt: Ausgabe einer Zeichenkette ohne Steuerzeichen - Korrektur char_ter_bs - Plexbus-Funktionen entfernt - Screeninterface-Funktionen eingefügt - Bellatrix-Funktionen blktrans, bmgr_load eingefügt - Funktion os_error zugefügt für zentrale Ausgabe von Fehlern - Korrektur BS in input-Funktion - Funktion printblk für schnellen Blocktransfer - Div. Fehler in den Ramdisk-Funktionen, welche jetzt auch resetfest ist. - Funktion rd_getback um Zeichen rückwärts aus der Ramdisk zu lesen. - Funktion ram_getfree liefert freien Speicher im eRAM system\regnatix\eram.spin - Korrektur BS-Steuercode system\regnatix\hplay.spin - Der HSS-Player hat seine Daten fals im SYS-Modus im eRAM abgelegt und so die Ramdisk beschädigt. Korrektur der Speichernutzung. system\regnatix\regime.spin - Korrekte Initialisierung der Ramdisk (resetfest) - Korrektur der Bisldschirminitialisierung nach dem Laden von Bellatrix-Code - Verwendung von ios.os_error für die Fehlerausgabe - Fehler im Kommando "reboot" beim Kaltstart behoben - Korrektur Ausgabe von "cogs" system\regnatix\time.spin - Korrektur Tipfehler system\regnatix\basic.spin Ich habe Femto Basic entfernt, da es nicht integraler Bestandteil von TriOS ist und mir die Zeit fehlt es an den aktuelen Stand anzupassen.
2012-02-08 18:09:41 +01:00
month := lookup(ios.getMonth: string("Januar"), string("Februar"), string("M<00>rz"), string("April"), string("Mai"), string("Juni"), string("Juli"), string("August"), string("September"), string("Oktober"), string("November"), string("Dezember"))
2011-11-11 17:41:02 +01:00
case ios.getNVSRAM(ios#NVRAM_DATEFORMAT)
ios#DATEFORMAT_DE: 'YYYY-MM-DD
ios.print(weekday)
ios.print(string(", "))
ios.print(str.trimCharacters(num.ToStr(ios.getDate, num#DEC)))
ios.print(string(". "))
ios.print(month)
ios.print(string(" "))
ios.print(str.trimCharacters(num.ToStr(ios.getYear, num#DEC)))
ios.print(string(" "))
cmd_time
ios#DATEFORMAT_UK: 'DD/MM/YYYY
ios.print(weekday)
ios.print(string(", "))
ios.print(str.trimCharacters(num.ToStr(ios.getDate, num#DEC)))
ios.print(string(" "))
ios.print(month)
ios.print(string(" "))
ios.print(str.trimCharacters(num.ToStr(ios.getYear, num#DEC)))
ios.print(string(" "))
cmd_time
ios#DATEFORMAT_US: 'MM/DD/YYYY
ios.print(weekday)
ios.print(string(", "))
ios.print(month)
ios.print(string(" "))
ios.print(str.trimCharacters(num.ToStr(ios.getDate, num#DEC)))
ios.print(string(", "))
ios.print(str.trimCharacters(num.ToStr(ios.getYear, num#DEC)))
ios.print(string(" "))
cmd_time
PUB cmd_time | stringpointer, value, suffix 'rtc: aktuelle Zeit zur<00>ckgeben
'time - aktuelle Zeit
case ios.getNVSRAM(ios#NVRAM_TIMEFORMAT)
ios#TIMEFORMAT_12: 'HH:MM:SS[PM|AM]
value := ios.getHours
if(value > 12)
suffix := string("PM")
value -= 12
else
suffix := string("AM")
ios.print(str.trimCharacters(str.numberToDecimal(value, 2)))
ios.print(string(":"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMinutes, 2)))
ios.print(string(":"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getSeconds, 2)))
ios.print(suffix)
ios#TIMEFORMAT_12UK: 'HH.MM.SS[PM|AM]
value := ios.getHours
if(value > 12)
suffix := string("PM")
value -= 12
else
suffix := string("AM")
ios.print(str.trimCharacters(str.numberToDecimal(value, 2)))
ios.print(string("."))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMinutes, 2)))
ios.print(string("."))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getSeconds, 2)))
ios.print(suffix)
other: 'ios#TIMEFORMAT_24: 'HH:MM:SS
ios.print(str.trimCharacters(str.numberToDecimal(ios.getHours, 2)))
ios.print(string(":"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getMinutes, 2)))
ios.print(string(":"))
ios.print(str.trimCharacters(str.numberToDecimal(ios.getSeconds, 2)))
ios.printnl
PRI cmd_setDateTime | buffer, changed 'rtc: Datum/Zeit setzen
buffer := string(" ")
'bytefill(buffer, 0, 5)
ios.print(string("aktuelles Datum: "))
cmd_Date_long
ios.print(string("neues Datum eingeben? (j/n): "))
if ios.keywait == "j"
ios.printnl
ios.print(string("Jahr (2000 - 2127): "))
ios.input(buffer, 4)
ios.setYear(num.FromStr(buffer, num#DEC))
ios.printnl
ios.print(string("Monat (1 - 12): "))
ios.input(buffer, 2)
ios.setMonth(num.FromStr(buffer, num#DEC))
ios.printnl
flash\administra\admflash.spin - Überarbeitung der Routine zum mounten der SD-Card. Da verschiedene Karten unterschiedliches Timing haben, wird jetzt solange versucht zu mounten, bis ein Erfolg eintritt, was zusätzlich akustisch durch einen leise anschwellenden Ton angezeigt wird. Das Verfahren ist jetzt wesentlich robuster. - rtc.setSQWOUTState(1) --> rtc.setSQWOUTState(0) deaktiviert den Frequenzausgang, verringert damit lt. DS1307-Datenblatt den Pufferstrom von 480 auf 300 nA und erhöht somit die Pufferdauer der Batterie auf das 1,6-fache. - Plexbus-Funktionen entfernt - Screeninterface-Funktionen zugefügt flash\bellatrix\belflash.spin - Anpassung für verschiedene Zeilenumbrüche in print_char eingefügt. flash\regnatix\regflash.spin - Der Loader hat fälschlicherweise das Warmstartflag für die Ramdisk gesetzt, wodurch sie nicht resetfest war. forth\fib.mod - Fibonacci-Benchmark (iterativ) in Forth. lib\adm-fat.spin - Fehler in setCharacterPosition: Bei einem Wechsel von einer Position > 0 auf Position = 0 wurde der erste Sektor mit falschen Daten überschrieben. lib\reg-ios.spin - Funktionsset für Grafikmodus 0 eingefügt - sfx_keyoff, sfx_stop eingefügt - printq zugefügt: Ausgabe einer Zeichenkette ohne Steuerzeichen - Korrektur char_ter_bs - Plexbus-Funktionen entfernt - Screeninterface-Funktionen eingefügt - Bellatrix-Funktionen blktrans, bmgr_load eingefügt - Funktion os_error zugefügt für zentrale Ausgabe von Fehlern - Korrektur BS in input-Funktion - Funktion printblk für schnellen Blocktransfer - Div. Fehler in den Ramdisk-Funktionen, welche jetzt auch resetfest ist. - Funktion rd_getback um Zeichen rückwärts aus der Ramdisk zu lesen. - Funktion ram_getfree liefert freien Speicher im eRAM system\regnatix\eram.spin - Korrektur BS-Steuercode system\regnatix\hplay.spin - Der HSS-Player hat seine Daten fals im SYS-Modus im eRAM abgelegt und so die Ramdisk beschädigt. Korrektur der Speichernutzung. system\regnatix\regime.spin - Korrekte Initialisierung der Ramdisk (resetfest) - Korrektur der Bisldschirminitialisierung nach dem Laden von Bellatrix-Code - Verwendung von ios.os_error für die Fehlerausgabe - Fehler im Kommando "reboot" beim Kaltstart behoben - Korrektur Ausgabe von "cogs" system\regnatix\time.spin - Korrektur Tipfehler system\regnatix\basic.spin Ich habe Femto Basic entfernt, da es nicht integraler Bestandteil von TriOS ist und mir die Zeit fehlt es an den aktuelen Stand anzupassen.
2012-02-08 18:09:41 +01:00
ios.print(string("Wochentag (1(Mo) - 7(So)): "))
2011-11-11 17:41:02 +01:00
ios.input(buffer, 1)
ios.setDay(num.FromStr(buffer, num#DEC))
ios.printnl
ios.print(string("Tag (1 - 31): "))
ios.input(buffer, 2)
ios.setDate(num.FromStr(buffer, num#DEC))
changed := 1
ios.printnl
ios.print(string("neue Uhrzeit eingeben? (j/n): "))
if ios.keywait == "j"
ios.printnl
ios.print(string("Stunden (0 - 23): "))
ios.input(buffer, 2)
ios.setHours(num.FromStr(buffer, num#DEC))
ios.printnl
ios.print(string("Minuten (0 - 59): "))
ios.input(buffer, 2)
ios.setMinutes(num.FromStr(buffer, num#DEC))
ios.printnl
ios.print(string("Sekunden (0 - 59): "))
ios.input(buffer, 2)
ios.setSeconds(num.FromStr(buffer, num#DEC))
changed := 1
ios.printnl
ios.print(string("Datumsformat <00>ndern? (j/n): "))
if ios.keywait == "j"
ios.printnl
ios.print(string("Datumsformat (0-DE, 1-Canonical, 2-UK, 3-US): "))
ios.input(buffer, 1)
ios.setNVSRAM(ios#NVRAM_DATEFORMAT, num.FromStr(buffer, num#DEC))
ios.printnl
ios.print(string("Zeitformat (0-24, 1-12, 2-12UK): "))
ios.input(buffer, 2)
ios.setNVSRAM(ios#NVRAM_TIMEFORMAT, num.FromStr(buffer, num#DEC))
changed := 1
if changed == 1
ios.printnl
ios.print(string("neues Datum: "))
cmd_Date_long
ios.printnl
DAT 'sys: helptext
help byte "/? : Hilfe",13
byte "/d : Datum anzeigen",13
byte "/l : Datum Langformat anzeigen",13
byte "/t : Zeit anzeigen",13
byte "/s : Datum/Zeit stellen",13
byte 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. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}}