1409 lines
57 KiB
Plaintext
1409 lines
57 KiB
Plaintext
{{
|
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ Autor: Reinhard Zielinski │
|
|
│ Copyright (c) 2013 Reinhard Zielinski │
|
|
│ See end of file for terms of use. │
|
|
│ Die Nutzungsbedingungen befinden sich am Ende der Datei │
|
|
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
Informationen : hive-project.de
|
|
Kontakt : zille09@gmail.com
|
|
System : Plexus
|
|
Name : Plexus-Frontend für den Propeller Signal Generator v1.2 (C) 2012 von Johannes Ahlebrand
|
|
Chip : Regnatix
|
|
Typ : Plexus-Erweiterungsdatei
|
|
Version : 01
|
|
Subversion : 00
|
|
|
|
|
|
Logbuch :
|
|
'############################################### Version 1.0 ######################################################################################################################
|
|
|
|
10-07-2014 -Bildschirmmaske erstellt
|
|
11-07-2014 -Wellenformauswahl erstellt
|
|
16-07-2014 -Parametereingabe-Routine begonnen -> ist noch nicht optimal
|
|
-5665 Longs frei
|
|
17-07-2014 -Parametermaske soweit fertig, Mausauswahl fehlt noch
|
|
-6131 Longs frei
|
|
18-07-2014 -Save-Routine erstellt
|
|
-Load und Iniload-Routine erstellt
|
|
-speichern und laden funktioniert
|
|
-jetzt fehlt noch eine Dateiauswahl für zu ladende Parameterdateien und dann kann der Signalgenerator getestet werden
|
|
-5719 Longs frei
|
|
|
|
'################################################ Version 1.1 #####################################################################################################################
|
|
20-07-2014 -Parameterauswahl per Maus realisiert
|
|
-Parameterübertragung und Funktion soweit fertig
|
|
-es fehlt noch die PWM- und Sweep-Automatik
|
|
-Sweep-Automatik funktioniert, Schleife durch Timer-Abfragen ersetzt
|
|
-5362 Longs frei
|
|
|
|
21-07-2014 -PWM-Automatik funktioniert jetzt auch
|
|
-beide Automatiken mit der Möglichkeit der Inversen Funktion ausgestattet (Werte von From und To können jeweils kleiner oder größer sein)
|
|
-Grundgerüst Ladefenster erstellt
|
|
-5167 Longs frei
|
|
|
|
22-07-2014 -Ladefenster mit Dateiselektion komplettiert ->Mausbedienung fehlt noch
|
|
-5040 Longs frei
|
|
|
|
27-07-2014 -Mausbedienung komplett
|
|
-soweit funktioniert alles, jetzt müsste noch etwas Optimierung ran
|
|
-4981 Longs frei
|
|
|
|
14-08-2014 -Darstellungsfehler bei der Parameterübernahme aus Settingdatei behoben und etwas Optimierung
|
|
-5018 Longs frei
|
|
|
|
}}
|
|
|
|
obj
|
|
ios : "reg-ios-64"
|
|
TMRS : "timer"
|
|
|
|
con
|
|
_CLKMODE = XTAL1 + PLL16X
|
|
_XINFREQ = 5_000_000
|
|
|
|
'------------- Shell-Farben -----------------------------------------------------
|
|
shellhcol =0 'Hauptfensterfarbe
|
|
act_color =1 'Schriftfarbe
|
|
winhcol =2 'Fensterhintergrundfarbe
|
|
winframecol =3 'Fensterrandfarbe
|
|
Titelhcol =4 'Titelleistenfarbe
|
|
titeltextcol =5 'Titelleistentextfarbe
|
|
hcolstatus =6 'statusleiste hintergrundfarbe
|
|
statustextcol =7 'Statustextfarbe
|
|
buttonhcol =8 'Buttonhintergrundfarbe
|
|
buttontextcol =9 'Buttontextfarbe
|
|
messagehcol =10 'Messagebox-Hintergrundfarbe
|
|
messagetextcol =11 'Messagebox-Textfarbe
|
|
selectcol =12 'selektionsfarbe
|
|
mousecol =13 'Mauszeigerfarbe
|
|
panelcol =14 'Farbe des Utility-Panels
|
|
|
|
ADM_SPEC = %00000000_00000000_00000000_01010011
|
|
'-------- Speicher für diverse Texte ------------
|
|
TXT_RAM = $20000
|
|
SETTING_RAM = $7FF00 'Hier stehen die System-Settings
|
|
BRAM = $50000 'Overlay-Puffer
|
|
tmp_buffer = $51000 'temporärer Parameterspeicher
|
|
'-------- Speicher für Dateiliste ---------------
|
|
DIR_RAM = $69440 '....$7DFFF
|
|
'-------- Speicher für Systemfont ---------------
|
|
SYS_FONT = $66800 '....$693FF ' ab hier liegt der System-Font 11kb
|
|
Hour_Glass = $66800+(167*16*4) 'Sanduhr
|
|
MOUSE_RAM = $69400 '....$6943F ' User-Mouse-Pointer 64byte
|
|
|
|
'******************Farben ********************************************************
|
|
#$FC, Light_Grey, #$A8, Grey, #$54, Dark_Grey
|
|
#$C0, Light_Red, #$80, Red, #$40, Dark_Red
|
|
#$30, Light_Green, #$20, Green, #$10, Dark_Green
|
|
#$1F, Light_Blue, #$09, Blue, #$04, Dark_Blue
|
|
#$F0, Light_Orange, #$E6, Orange, #$92, Dark_Orange
|
|
#$CC, Light_Purple, #$88, Purple, #$44, Dark_Purple
|
|
#$3C, Light_Teal, #$28, Teal, #$14, Dark_Teal
|
|
#$FF, White, #$00, Black
|
|
|
|
'------------- Wellenformen ------------------------------------------------------
|
|
MUTE = 14, SAW = 16, TRIANGLE = 18, SQUARE = 22, NOISE = 25, SINE = 32, USER = 42
|
|
|
|
'------------- TASTENCODES -------------------------------------------------------
|
|
Backspace = $C8 ' PS/2 keyboard backspace key
|
|
ESC_KEY = 27
|
|
RETURN_KEY = 13
|
|
Plus_Key = 43
|
|
Minus_Key = 45
|
|
Space_Key = 32
|
|
TAB_KEY = 9
|
|
ENTF_KEY = 186
|
|
EINF_KEY = 187
|
|
POS1_KEY = 6
|
|
END_KEY = 7
|
|
'------------- F-Tasten für Zusatzfunktionen -------------------------------------
|
|
F1_Key = 208
|
|
F2_Key = 209
|
|
F3_Key = 210
|
|
F4_Key = 211
|
|
F5_Key = 212
|
|
F6_Key = 213
|
|
F7_Key = 214
|
|
F8_Key = 215
|
|
F9_Key = 216
|
|
F10_Key = 217
|
|
F11_Key = 218
|
|
F12_Key = 219
|
|
LEFT_KEY = 3
|
|
RIGHT_KEY = 2
|
|
'--------------------------------------------------------------------------------
|
|
|
|
var
|
|
|
|
long systemdir 'Plexus-System-Verzeichnis
|
|
long setting[11]
|
|
long tmpwert
|
|
byte mountmarker,tmptime
|
|
byte colors[15] 'Farbwerte
|
|
byte ma,mb,mc,mz 'Maus-Tasten
|
|
|
|
byte windowx[4]
|
|
byte windowy[4]
|
|
byte windowxx[4]
|
|
byte windowyy[4]
|
|
byte menuey[4] 'y-Koordinate für Start-Menue-Einträge
|
|
byte popupx,popupxx 'x und
|
|
byte popupy,popupyy 'y-Koordinaten des Popupmenues
|
|
byte popupmarker 'Marker für Popupmenue
|
|
byte infomarker
|
|
byte buttonx[11],buttony[11],buttonl[11]
|
|
byte util
|
|
byte timezaehler
|
|
'----------- DCF-Indikator ------------------------------------
|
|
byte dcf_on
|
|
|
|
|
|
byte textline[13] 'Texteingabestring
|
|
byte tmpline[13] 'temp-string
|
|
byte font[25]
|
|
byte pwm_on,sweep_on,mute_on 'PWM-Sweep-und Mute Marker
|
|
byte Waveform 'ausgewählte Wellenform
|
|
byte tabkey 'Tab-Tasten-Zähler
|
|
byte tmp_wave 'temporärer Waveform-Wert
|
|
byte old 'alter tabkey-wert
|
|
byte selection 'selektierte Datei
|
|
byte Verzeichnis_counter 'Verzeichnis-Tiefenzähler
|
|
byte scr 'scrollmerker für Pfeiltasten
|
|
' byte filestring[13] 'selektierte Datei
|
|
byte buff[8] 'Dir-Befehl-variablen
|
|
'----------- Hervorhebungsbalken im Explorer ------------------
|
|
byte y_old 'alte y-Koordinate
|
|
byte highlight 'Hervorhebungsmarker des Dateinamens
|
|
byte textline_old[13] 'alter Dateiname
|
|
byte old_color 'alte Farbe des Dateieintrages merken
|
|
|
|
word filenumber 'Anzahl Dateien
|
|
long pw_von,pw_bis,pw_step
|
|
long sw_von,sw_bis,sw_step
|
|
long scrollende,scrollanfang,zeilenanfang, zeilenende 'Variablen für Scrollfunktion
|
|
|
|
DAT
|
|
regsys byte "PLEXUS.DLL",0 'Reg.sys für Rückkehr aus externem Programm
|
|
SYSTEM Byte "PLEXUS",0 'Plexus-Systemverzeichnis
|
|
ini_file byte "WAVE.INI",0 'Ini-Datei
|
|
|
|
DAT
|
|
Butt0 byte " SAW ",0
|
|
Butt1 byte "Start ",0
|
|
Butt2 byte "Cancel",0
|
|
Butt3 byte "TRIANGLE",0
|
|
Butt4 byte " OK ",0
|
|
Butt5 byte " SQUARE ",0
|
|
Butt6 byte " NOISE ",0
|
|
Butt7 byte " SINE ",0
|
|
MUTING byte " MUTE ",0
|
|
Butt8 byte "LOAD",0
|
|
Butt9 byte "SAVE",0
|
|
|
|
buttons word @Butt0,@Butt1,@Butt2,@Butt3,@Butt4,@Butt5,@Butt6,@Butt7,@butt8,@butt9
|
|
tab byte 9,11,13,15,19,21,23,25,9,14,19
|
|
spalte byte 19,19,19,19,19,17,17,19,25,25,25
|
|
spaces byte 3,2,2,2,3,5,5,3,7,2,3
|
|
|
|
wvp_name byte ".WVP",0
|
|
new_name byte "NEW.WVP",0
|
|
PWM_50 byte "50 ",0
|
|
PWM_25 byte "25 ",0
|
|
PWM_12 byte "12.5",0
|
|
PWM_6 byte "6.25",0
|
|
PWM_3 byte "3.12",0
|
|
PWM_1 byte "1.56",0
|
|
PWM_07 byte "0.78",0
|
|
PWM_03 byte "0.39",0
|
|
|
|
PUB main
|
|
|
|
ios.start
|
|
cmd_mount 'sd-card mounten
|
|
mountmarker:=1 'mount-marker
|
|
'--------------------------------------------------------------------------------------
|
|
activate_dirmarker(0) 'ins root
|
|
ios.sdchdir(@system) 'System-Verzeichnis lesen
|
|
systemdir:=get_dirmarker 'Dir-Marker lesen
|
|
|
|
'--------------------------------------------------------------------------------------
|
|
cmd_unmount
|
|
ios.ram_fill(tmp_buffer,48,0)
|
|
Waveform:=SAW
|
|
bytemove(@textline[0],@new_name,strsize(@new_name))
|
|
iniload 'Ini-Datei mit Farbwerten laden
|
|
ios.mousepointer(MOUSE_RAM)
|
|
testfenster
|
|
util:=0
|
|
pwm_on:=0
|
|
sweep_on:=0
|
|
tabkey:=-1
|
|
buttonx[1]:=0
|
|
buttony[1]:=29
|
|
buttonl[1]:=7
|
|
print_form(waveform,2,23)
|
|
ios.plxHalt
|
|
|
|
'*********************************** Timer-Cog starten ********************************************************************************************************
|
|
TMRS.start(1000) 'Timer-Objekt starten mit 1ms-Aufloesung
|
|
|
|
ios.Gen_Start_FunctionGenerator
|
|
Load_Parameter
|
|
Set_Parameter
|
|
'print_win(@textline,1,1)
|
|
repeat
|
|
|
|
os_cmdinput 'Hauptprogrammschleife
|
|
|
|
PRI os_cmdinput | x,y ,i,b,dk,key,tile_nr,pw_r,sw_r
|
|
pw_r:=0
|
|
sw_r:=0
|
|
highlight:=1 'keine Hervorhebung
|
|
scr:=0
|
|
repeat
|
|
time 'Zeit und Datum anzeigen
|
|
|
|
ma:=ios.mouse_button(0) 'linke Maustaste
|
|
mb:=ios.mouse_button(1) 'rechte Maustaste
|
|
mz:=ios.mousez
|
|
key:=ios.key
|
|
if key
|
|
'printdec_win(key,1,1)
|
|
Key_Command(key)
|
|
'************************** Modulationsautomatik ***************************************************************
|
|
if pwm_on==1
|
|
ifnot mute_on
|
|
if TMRS.isclr(0)
|
|
if setting[1]<setting[2]
|
|
pw_von+=pw_step
|
|
if pw_von => pw_bis
|
|
pw_von:=(setting[1])
|
|
|
|
if setting[1]>setting[2]
|
|
pw_von-=pw_step
|
|
if pw_von =< pw_bis
|
|
pw_von:=setting[1]
|
|
ios.Gen_SetPulseWidth(1<<pw_von)
|
|
TMRS.Set(0,setting[0])
|
|
|
|
|
|
if sweep_on
|
|
ifnot mute_on
|
|
if TMRS.isclr(1)
|
|
if setting[5]<setting[6]
|
|
sw_von+=sw_step
|
|
if sw_von=>sw_bis
|
|
sw_von:=setting[5]
|
|
if setting[5]>setting[6]
|
|
sw_von-=sw_step
|
|
if sw_von=<sw_bis
|
|
sw_von:=setting[5]
|
|
ios.Gen_Frequency(setting[8]+sw_von)
|
|
TMRS.Set(1,setting[4])
|
|
|
|
'***************************************************************************************************************
|
|
|
|
'***************************** linke Maustaste **********************************************************************
|
|
if ma==255
|
|
dk:=0
|
|
x:=ios.mousex
|
|
y:=ios.mousey
|
|
'****************************** Tile aus Fontdatei vergrößert darstellen ***************************************
|
|
if infomarker==0 and popupmarker==0
|
|
|
|
|
|
'****************************** Auswahl PWM und SWEEP ***********************************************************
|
|
if x==20
|
|
case y
|
|
7:Key_Command("P") 'PWM on/off
|
|
17:Key_Command("W") 'Sweep on/off
|
|
|
|
elseif x==7 and y==18
|
|
Key_Command("M") 'MUTE
|
|
elseif x>13 and x<27 and y>8 and y<26
|
|
util:=2
|
|
if x=>25 and x=<27
|
|
repeat i from 8 to 10
|
|
if y==tab[i]
|
|
tabkey:=i
|
|
quit
|
|
else
|
|
repeat i from 0 to 7
|
|
if y==tab[i]
|
|
tabkey:=i
|
|
quit
|
|
tmpwert:=setting[tabkey]
|
|
Ausgabe_Wert(old,setting[old],tab[old],spalte[old],0)
|
|
Ausgabe_Wert(tabkey,setting[tabkey],tab[tabkey],spalte[tabkey],1)
|
|
old:=tabkey
|
|
|
|
'****************************** Startmenue anzeigen ************************************************************
|
|
if popupmarker==1
|
|
if x>10 or y<22 'Menue loeschen, wenn man woanders hinklickt
|
|
popup_info_weg
|
|
util:=0
|
|
if x=>0 and x=<10 and y=>23 and y=<28
|
|
repeat i from 0 to 3
|
|
if menuey[i]==y
|
|
|
|
case i
|
|
0:menueselect(string("Info - F1"),menuey[i])
|
|
Key_Command(F1_Key)
|
|
1:menueselect(string("Load - F2"),menuey[i])
|
|
Key_Command(F2_Key)
|
|
2:menueselect(string("Save - F3"),menuey[i])
|
|
Key_Command(F3_Key)
|
|
3:menueselect(string("-EXIT- F12"),menuey[i])
|
|
Key_Command(F12_Key)
|
|
|
|
|
|
if util==4 and x>12 and x<25 and y>7 and y<18
|
|
selection:=y-7
|
|
getfilename(selection+scrollanfang) 'selektierte Datei nr
|
|
highlight_selection(y)
|
|
if doppelklick
|
|
popup_info_weg
|
|
select_file
|
|
util:=0
|
|
|
|
'****************************** Globale Funktionstasten ********************************************************
|
|
|
|
|
|
|
|
if y==windowy[2] and x==windowx[2] and Infomarker==1 'doppelklick in linke obere ecke des Info-Fensters
|
|
if doppelklick>1
|
|
popup_info_weg
|
|
util:=0
|
|
|
|
elseif y==windowy[2] and x==windowxx[2] and Infomarker==1
|
|
ios.get_window
|
|
popup_info_weg
|
|
util:=0
|
|
|
|
elseif y==0
|
|
if (x==39) 'Beenden-Knopf
|
|
ios.displaytile(1,250,0,0,0,39) 'Schliessen-Symbol
|
|
Mouse_Release 'warten bis Maustaste losgelassen wird
|
|
ios.displaytile(1,colors[winhcol],0,colors[winframecol],0,39) 'Schliessen-Symbol
|
|
ausstieg
|
|
|
|
if (x==0) 'Beenden bei Doppelklick auf linke obere Ecke
|
|
if doppelklick>1
|
|
ausstieg
|
|
if x>1 and x<20 'Doppelklick in die Titelleiste
|
|
if doppelklick>1
|
|
Key_Command(F1_Key)
|
|
|
|
|
|
else
|
|
repeat b from 0 to 9
|
|
if (x=>buttonx[b]) and (x=<buttonx[b]+buttonl[b]) and (y==buttony[b])
|
|
|
|
buttonpress(b)
|
|
case b
|
|
0:Key_Command("A") 'SAW
|
|
1:if popupmarker==1
|
|
popup_info_weg
|
|
else
|
|
popup_info_weg
|
|
startmenue
|
|
mouse_release
|
|
quit
|
|
2:Key_Command(ESC_KEY)
|
|
3:Key_Command("T") 'TRIANGLE
|
|
4:Key_Command(Return_Key)
|
|
5:Key_Command("Q") 'SQUARE
|
|
6:Key_Command("N") 'NOISE
|
|
7:Key_Command("S") 'SINE
|
|
8:Key_Command(F2_KEY) 'Load
|
|
9:Key_Command(F3_KEY) 'Save
|
|
|
|
'**************************** Maus Scrollrad ****************************************
|
|
if mc>mz or (x==31 and y=>6 and y=<11 and ma==255) 'hochscrollen
|
|
if popupmarker==0
|
|
if util==4 'Dateifenster nur scrollen, wenn kein Infofenster angezeigt wird (byte kann keine -1 sein also 255)
|
|
if filenumber>10 'Dateianzahl höher als Zeilen im Dateifenster?
|
|
scrollrunter 'Bildschirm scrollen
|
|
if scr>0
|
|
scr--
|
|
mc:=mz
|
|
|
|
if mc<mz or (x==31 and y=<18 and y=>12 and ma==255) 'runterscrollen
|
|
if popupmarker==0
|
|
if util==4 'Dateifenster nur scrollen, wenn kein Infofenster angezeigt wird
|
|
if filenumber>10
|
|
scrollhoch 'Bildschirm scrollen
|
|
if scr<filenumber-10
|
|
scr++
|
|
mc:=mz
|
|
|
|
PRI toogle_value(at,x,y)
|
|
Mouse_Release
|
|
if at==1
|
|
Win_Tile(140,y,x)
|
|
at:=0
|
|
else
|
|
at:=1
|
|
Win_Tile(139,y,x)
|
|
return at
|
|
pri select_file
|
|
|
|
ios.sdmount
|
|
activate_dirmarker(systemdir)
|
|
load_in_ram(@textline)
|
|
ios.sdclose
|
|
save_ini_name
|
|
ios.sdunmount
|
|
Load_Parameter
|
|
Set_Parameter
|
|
|
|
pri Key_Command(k)|i,tmp
|
|
ifnot util==4' k>5 and k<4
|
|
popup_info_weg
|
|
'util:=0
|
|
case k
|
|
F1_Key:util:=0
|
|
Display_Info
|
|
F2_Key:SD_Card
|
|
F3_Key:Save_fenster
|
|
F12_Key:ausstieg
|
|
ESC_KEY:if util==2
|
|
setting[tabkey]:=tmpwert
|
|
Print_Spaces(spaces[tabkey],spalte[tabkey],tab[tabkey])
|
|
Ausgabe_Wert(tabkey,setting[tabkey],tab[tabkey],spalte[tabkey],0)
|
|
popup_info_weg
|
|
util:=0
|
|
RETURN_KEY:if util==2 'Werteauswahl
|
|
Print_Spaces(spaces,spalte[tabkey],tab[tabkey])
|
|
Ausgabe_Wert(tabkey,setting[tabkey],tab[tabkey],spalte[tabkey],0)
|
|
|
|
elseif util==4 'Load-Fenster
|
|
'******************************Dateien starten oder Verzeichnis wechseln*************
|
|
if selection=<filenumber
|
|
select_file
|
|
getfilename(selection) 'selektierte Datei untersuchen und starten oder anzeigen oder Verzeichnis öffnen
|
|
|
|
popup_info_weg
|
|
util:=0
|
|
TAB_KEY:if infomarker==0 and popupmarker==0
|
|
tabkey++
|
|
util:=2
|
|
if tabkey>10 or tabkey==0
|
|
tabkey:=0
|
|
|
|
tmpwert:=setting[tabkey]
|
|
Ausgabe_Wert(old,setting[old],tab[old],spalte[old],0)
|
|
Ausgabe_Wert(tabkey,setting[tabkey],tab[tabkey],spalte[tabkey],1)
|
|
old:=tabkey
|
|
|
|
"A","a":Waveform:=SAW
|
|
"T","t":Waveform:=TRIANGLE
|
|
"Q","q":Waveform:=SQUARE
|
|
"N","n":Waveform:=NOISE
|
|
"S","s":Waveform:=SINE
|
|
"M","m":Mute_on:=toogle_value(Mute_ON,7,18) 'Mute
|
|
if mute_on
|
|
tmp_wave:=waveform
|
|
waveform:=mute
|
|
else
|
|
waveform:=tmp_wave
|
|
|
|
"P","p":pwm_on:=toogle_value(pwm_ON,20,7) 'pwm an/aus
|
|
ifnot pwm_on
|
|
ios.Gen_SetPulseWidth(setting[10])
|
|
|
|
"W","w":sweep_on:=toogle_value(sweep_ON,20,17) 'sweep an/aus
|
|
ifnot sweep_on
|
|
ios.Gen_Frequency(setting[8])
|
|
|
|
|
|
4:if util==2
|
|
setting[tabkey]++
|
|
elseif util==4
|
|
IF selection>1
|
|
selection--
|
|
getfilename(selection+scr)
|
|
|
|
if selection==1 and scr>0
|
|
scrollrunter
|
|
scr--
|
|
highlight_selection(selection+7)
|
|
|
|
5:if util==2
|
|
setting[tabkey]--
|
|
elseif util==4
|
|
if selection<filenumber
|
|
selection++
|
|
getfilename(selection+scr)
|
|
if selection>10
|
|
if scr<filenumber-10
|
|
scrollhoch
|
|
scr++
|
|
selection:=10
|
|
highlight_selection(selection+7) 'Bildschirm scrollen
|
|
|
|
160:if util==2
|
|
setting[tabkey]+=10
|
|
162:if util==2
|
|
setting[tabkey]-=10
|
|
6:if util==2 and (tabkey==5 or tabkey==6 or tabkey==8)
|
|
setting[tabkey]+=1000
|
|
7:if util==2 and (tabkey==5 or tabkey==6 or tabkey==8)
|
|
setting[tabkey]-=1000
|
|
2:if util==2 and tabkey==8
|
|
setting[tabkey]-=100000
|
|
3:if util==2 and tabkey==8
|
|
setting[tabkey]+=100000
|
|
|
|
print_form(waveform,2,23)
|
|
|
|
if util==2 'Check auf Grenzwerte und anzeigen
|
|
|
|
case tabkey
|
|
0,4: setting[tabkey]:=check_limits(setting[tabkey],0,999)
|
|
1..3: setting[tabkey]:=check_limits(setting[tabkey],0,31)
|
|
7: setting[tabkey]:=check_limits(setting[tabkey],0,999)
|
|
5,6: setting[tabkey]:=check_limits(setting[tabkey],0,99999)
|
|
8: setting[tabkey]:=check_limits(setting[tabkey],0,7500000)
|
|
9: setting[tabkey]:=check_limits(setting[tabkey],0,4)
|
|
10: setting[tabkey]:=check_limits(setting[tabkey],24,31)
|
|
|
|
Print_Spaces(spaces[tabkey],spalte[tabkey],tab[tabkey])
|
|
Ausgabe_Wert(tabkey,setting[tabkey],tab[tabkey],spalte[tabkey],1)
|
|
Set_Parameter
|
|
|
|
PRI Print_Spaces(n,x,y)
|
|
repeat n
|
|
print_win(string(" "),x++,y)
|
|
|
|
pri show_always:msz
|
|
scrollanfang:=0
|
|
msz:=ios.mousez
|
|
selection:=0
|
|
if filenumber>10
|
|
zeilenende:=10
|
|
scrollende:=10
|
|
else
|
|
zeilenende:=filenumber
|
|
scrollende:=filenumber
|
|
display_list(zeilenanfang,zeilenende)
|
|
'util:=4
|
|
scr:=0
|
|
|
|
PRI scrollrunter
|
|
|
|
if scrollanfang<0
|
|
scrollanfang:=0
|
|
if scrollanfang>0
|
|
ios.scrolldown(1,colors[winhcol], 8, 13, 17, 29,1)
|
|
getfilename(scrollanfang)
|
|
display_Filename(@textline,8,colors[act_color])'Scan_File(4)
|
|
scrollanfang--
|
|
scrollende--
|
|
y_old++
|
|
|
|
PRI scrollhoch
|
|
if scrollende<filenumber
|
|
ios.scrollup(1,colors[winhcol], 8, 13, 17, 29,1)
|
|
getfilename(scrollende+1)
|
|
display_Filename(@textline,18,colors[act_color])'Scan_File(24)
|
|
scrollende++
|
|
scrollanfang++
|
|
y_old--
|
|
if scrollende>filenumber
|
|
scrollende:=filenumber
|
|
scrollanfang:=filenumber-9
|
|
|
|
PRI highlight_selection(position) 'Dateiname mit einem farbigen Balken hervorheben
|
|
|
|
if util==4 and position>7 'nur im Dateifenster ab position y==4 hervorheben
|
|
'if highlight 'erstes mal Datei angeklickt(keine Old-Parameter)
|
|
|
|
display_line(@textline,position,colors[winhcol],colors[act_color]) 'Dateiname mit Balken anzeigen
|
|
|
|
if {highlight and }strsize(@textline_old)>0 'Hervorhebung aktiv und String im Puffer?
|
|
|
|
display_line(@textline_old,y_old,colors[act_color],colors[winhcol]) 'alter Dateiname an alter Position ohne Balken anzeigen
|
|
bytemove(@textline_old,@textline,12) 'neuen Dateinamen in den Puffer schreiben
|
|
y_old:=position 'y-Koordinate merken
|
|
|
|
PRI display_Line(stradr,ty,vor,hin) 'Ausgabe Dateiname, Icon, Größe und Erstellungsdatum
|
|
|
|
printfont(stradr,hin,0,vor,13,ty)
|
|
pri Ausgabe_Wert(n,w,y,x,inv)|j
|
|
if inv
|
|
case n
|
|
0..8:printdec_win_inv(setting[n],tab[n],spalte[n])
|
|
9: printdec_win_inv(setting[n]*6,tab[n],spalte[n])
|
|
10: case setting[n]
|
|
31:print_win_inv(@PWM_50,spalte[n],tab[n])
|
|
30:print_win_inv(@PWM_25,spalte[n],tab[n])
|
|
29:print_win_inv(@PWM_12,spalte[n],tab[n])
|
|
28:print_win_inv(@PWM_6,spalte[n],tab[n])
|
|
27:print_win_inv(@PWM_3,spalte[n],tab[n])
|
|
26:print_win_inv(@PWM_1,spalte[n],tab[n])
|
|
25:print_win_inv(@PWM_07,spalte[n],tab[n])
|
|
24:print_win_inv(@PWM_03,spalte[n],tab[n])
|
|
|
|
|
|
else
|
|
case n
|
|
0..8:printdec_win(setting[n],tab[n],spalte[n])
|
|
9: printdec_win(setting[n]*6,tab[n],spalte[n])
|
|
10: case setting[n]
|
|
31:print_win(@PWM_50,spalte[n],tab[n])
|
|
30:print_win(@PWM_25,spalte[n],tab[n])
|
|
29:print_win(@PWM_12,spalte[n],tab[n])
|
|
28:print_win(@PWM_6,spalte[n],tab[n])
|
|
27:print_win(@PWM_3,spalte[n],tab[n])
|
|
26:print_win(@PWM_1,spalte[n],tab[n])
|
|
25:print_win(@PWM_07,spalte[n],tab[n])
|
|
24:print_win(@PWM_03,spalte[n],tab[n])
|
|
|
|
|
|
|
|
pri check_limits(act_wert,min_wert,max_wert):ergebnis
|
|
ergebnis:=act_wert
|
|
if act_wert<min_wert
|
|
ergebnis:=max_wert
|
|
if act_wert>Max_wert
|
|
ergebnis:=min_wert
|
|
|
|
PRI printdec_win(n,y,x)
|
|
printdec(n,y,x,colors[winhcol],colors[act_color])
|
|
PRI printdec_win_inv(n,y,x)
|
|
printdec(n,y,x,colors[act_color],colors[winhcol])
|
|
PRI print_titel(stradr,x,y):a
|
|
a:=printfont(stradr,colors[titelhcol],0,colors[titeltextcol],x,y)
|
|
pri print_form(n,x,y)
|
|
|
|
case n
|
|
SAW:print_win(@Butt0,x,y)
|
|
TRIANGLE:print_win(@Butt3,x,y)
|
|
SQUARE:print_win(@Butt5,x,y)
|
|
NOISE:print_win(@Butt6,x,y)
|
|
SINE:print_win(@Butt7,x,y)
|
|
'USER:print_win(@muting,x,y)
|
|
|
|
|
|
|
|
PRI printbin(value, digits,hint,vor,x,y) |c 'screen: binären zahlenwert auf bildschirm ausgeben
|
|
|
|
value <<= 32 - digits
|
|
repeat digits
|
|
c:=(value <-= 1) & 1 + "0"
|
|
ios.displaytile(c-16,hint,0,vor,y,x++)
|
|
con'--------------------------------------------------- Datei-Ladefenster ---------------------------------------------------------------------------------------------------------
|
|
PRI SD_Card:msz|b
|
|
b:=0
|
|
util:=4
|
|
'reset_Highlight 'Hervorhebungsparameter löschen
|
|
popup_info_weg
|
|
ios.backup_area(13-1,8-2,30+1,18+1,BRAM) 'Hintergrund sichern
|
|
window(2,8,8,13,18,30,@butt8) 'Programmfenster(8,ios.sdvolname)
|
|
infomarker:=1
|
|
cmd_dir
|
|
msz:=show_always 'Dateiliste aus dem E-Ram anzeigen
|
|
|
|
|
|
PRI display_list(a,b)|n,tt 'Dateiliste aus dem Speicher lesen und anzeigen
|
|
tt:=7
|
|
repeat n from a to b
|
|
getfilename(n)
|
|
display_filename(@textline,tt,colors[act_color])
|
|
tt++
|
|
|
|
PRI getfilename(nummer)|adress,position,c,z',aus 'Dateiname aus dem E-Ram holen
|
|
position:=(nummer-1)*13
|
|
adress:=DIR_RAM+position 'Adresse Dateiname im eRam
|
|
z:=0
|
|
'aus:=0
|
|
bytefill(@textline,12,0)
|
|
repeat 12
|
|
c:=ios.ram_rdbyte(adress++) 'Dateiname aus Dir-Ram lesen
|
|
textline[z++]:=c
|
|
|
|
textline[z]:=0
|
|
|
|
|
|
PRI cmd_dir|stradr,n,d,c,ty',sh 'cmd: verzeichnis anzeigen
|
|
{{sddir - anzeige verzeichnis}}
|
|
n:=0
|
|
c:=5
|
|
ty:=8
|
|
ios.sdmount
|
|
activate_dirmarker(systemdir)
|
|
ios.sddir 'kommando: verzeichnis öffnen
|
|
|
|
repeat while (stradr <> 0) 'Begrenzung der Einträge auf die mit DIR_ENTRY vereinbarte 'ist eintrag gültig?
|
|
'wiederhole bis verzeichnisende
|
|
stradr:=ios.sdnext 'einen eintrag holen
|
|
if stradr <> 0
|
|
if ios.sdfattrib(17) 'unsichtbare Dateien ausblenden und Verzeichnisse
|
|
next
|
|
if ios.sdfattrib(19)
|
|
next
|
|
scanstr_ext(stradr,1)
|
|
if strcomp(@buff,@wvp_name)
|
|
n++
|
|
WriteNameToRam(stradr,n) 'Dateiname zur spaeteren Verwendung in ERam speichern an adresse n
|
|
|
|
filenumber:=n
|
|
ios.ram_fill(DIR_RAM+(n*13),$1BFF-(n*13),0) 'Variablen,Dir-Speicher,nach letzten Eintrag löschen
|
|
ios.sdunmount
|
|
|
|
PRI WriteNameToRam(st,nummer)|adress,position,c 'Dateiliste in ERam schreiben
|
|
position:=(nummer-1)*13
|
|
adress:=DIR_RAM+position
|
|
repeat strsize(st)
|
|
c:=byte[st++]
|
|
ios.ram_wrbyte(c,adress++)
|
|
|
|
PRI scanstr_ext(f,mode) | z ,c ,a ,i 'Dateiendung extrahieren
|
|
if mode==1
|
|
repeat while strsize(f)
|
|
if c:=byte[f++] == "." 'bis punkt springen
|
|
quit
|
|
f--
|
|
z:=0
|
|
repeat 4 'dateiendung lesen
|
|
c:=byte[f++]
|
|
buff[z++] := c
|
|
buff[z++] := 0
|
|
return @buff
|
|
PRI display_Filename(stradr,ty,col)|p 'Ausgabe Dateiname, Icon, Größe und Erstellungsdatum
|
|
|
|
if strsize(stradr)>0 and ty<18
|
|
print_win(stradr,13,ty)
|
|
|
|
con'--------------------------------------------------- Speicherroutine -----------------------------------------------------------------------------------------------------------
|
|
PRI Save_Fenster:s|l
|
|
infofenster(9,10,29,15,string("Save Parameter"),1) 'Info-Fenster anzeigen
|
|
util:=3
|
|
Print_win(string("Filename:"),9,10)
|
|
scanstr(@textline)
|
|
Print_win(@textline,18,10)
|
|
print_win(string(".WVP"),26,10)
|
|
s:=Text_Input(18,26,10,0,8)
|
|
l:=strsize(@textline)
|
|
if l<1
|
|
bytemove(@textline[0],@new_name,7)
|
|
l:=7
|
|
else
|
|
bytemove(@textline[l],@wvp_name,4)
|
|
textline[l+4]:=0
|
|
ios.display2dbox(colors[winhcol],23,25,24,36,0)
|
|
print_win(@textline,25,23)
|
|
|
|
if s==13
|
|
popup_info_weg
|
|
util:=0
|
|
Save_File(@textline)
|
|
|
|
PRI Save_File(str)|adr,count,i
|
|
ios.sdmount
|
|
activate_dirmarker(systemdir)
|
|
adr:=tmp_buffer
|
|
i:=0
|
|
repeat 11 'Longs in den Tmp-Puffer schreiben
|
|
ios.ram_wrlong(setting[i++],adr)
|
|
adr+=4
|
|
ios.ram_wrbyte(waveform,adr++)
|
|
ios.ram_wrbyte(pwm_on,adr++)
|
|
ios.ram_wrbyte(sweep_on,adr++)
|
|
ios.ram_wrbyte(mute_on,adr)
|
|
|
|
adr:=tmp_buffer
|
|
if ifexist(str)
|
|
ios.mousepointer(hour_glass) 'Sanduhr anzeigen
|
|
ios.sdopen("W",str)
|
|
ios.sdseek(0)
|
|
repeat 48 'Parameter vom Tmp-Puffer auf SD-Karte schreiben
|
|
ios.sdputc(ios.ram_rdbyte(adr++))
|
|
ios.sdputc(0)
|
|
ios.sdclose
|
|
|
|
save_ini_name
|
|
ios.mousepointer(Mouse_ram) 'Mauszeiger anzeigen
|
|
|
|
else
|
|
ios.sdclose
|
|
|
|
ios.sdunmount
|
|
pri save_ini_name|i
|
|
|
|
i:=0
|
|
ios.sddel(@ini_file) 'alte ini-datei löschen
|
|
ios.sdnewfile(@ini_file) 'datei neu erstellen
|
|
ios.sdopen("W",@ini_file)
|
|
i:=0
|
|
repeat strsize(@textline)
|
|
ios.sdputc(textline[i++]) 'Dateiname in die ini-Datei schreiben
|
|
ios.sdputc(0)
|
|
ios.sdclose
|
|
|
|
PRI Load_Parameter|adr,i
|
|
i:=0
|
|
adr:=tmp_buffer
|
|
|
|
repeat i from 0 to 10 'Longs aus dem Tmp-Puffer lesen
|
|
setting[i]:=ios.ram_rdlong(adr)
|
|
Print_Spaces(spaces[i],spalte[i],tab[i])
|
|
Ausgabe_Wert(i,setting[i],tab[i],spalte[i],0)'display_parameter(i++)
|
|
adr+=4
|
|
waveform:=ios.ram_rdbyte(adr++)
|
|
pwm_on :=ios.ram_rdbyte(adr++)
|
|
sweep_on:=ios.ram_rdbyte(adr++)
|
|
mute_on :=ios.ram_rdbyte(adr++)
|
|
Win_Tile(140-Mute_on,18,7) 'Mute
|
|
Win_Tile(140-pwm_on,7,20) 'pwm an/aus
|
|
Win_Tile(140-sweep_on,17,20) 'sweep an/aus
|
|
print_form(waveform,2,23)
|
|
print_win(@textline,25,23)
|
|
|
|
if mute_on
|
|
tmp_wave:=waveform
|
|
waveform:=mute
|
|
|
|
'pri display_parameter(n)
|
|
'printdec_win(setting[n],tab[n],spalte[n])
|
|
' Ausgabe_Wert(n,setting[n],spalte[n],tab[n],0)
|
|
|
|
pri Set_Parameter|pwm_wert
|
|
pwm_wert:=1<<setting[10]
|
|
ios.Gen_SetParameter(waveform, setting[8], setting[9], pwm_wert)
|
|
pw_von:=setting[1]
|
|
pw_bis:=setting[2]
|
|
pw_step:=setting[3]
|
|
sw_von:=setting[5]
|
|
sw_bis:=setting[6]
|
|
sw_step:=setting[7]
|
|
TMRS.set(0,setting[0])
|
|
TMRS.set(1,setting[4])
|
|
|
|
PRI ifexist(dateiname):e|d 'abfrage,ob datei schon vorhanden, wenn ja Überschreiben-Sicherheitsabfrage
|
|
e:=0
|
|
d:=ios.sdnewfile(dateiname) 'existiert die dateischon?
|
|
if d '"File exist! Overwrite? y/n" 'fragen, ob ueberschreiben
|
|
ios.sdclose
|
|
if d==18
|
|
e:=display_error(d) 'abfrage Datei überschreiben oder nicht
|
|
else
|
|
display_error(d) 'Fehlerausgabe, wenn erfolglos
|
|
else
|
|
e:=1 'kein Fehler
|
|
|
|
PRI scanstr(f) | c 'Dateiendung extrahieren
|
|
repeat while strsize(f)
|
|
if c:=byte[f] == "." 'bis punkt springen
|
|
byte[f]:=0
|
|
quit
|
|
f++
|
|
PRI display_error(er):r
|
|
if er
|
|
messagebox(ram_txt(er))
|
|
r:=abfrage
|
|
|
|
PRI abfrage:taste|a,x,y,k
|
|
repeat
|
|
a:=ios.mouse_button(0)
|
|
k:=ios.key
|
|
until a==255 or k==27 or k==13
|
|
x:=ios.mousex
|
|
y:=ios.mousey
|
|
|
|
if((x=>buttonx[4]) and (x=<buttonx[4]+5) and (y==buttony[4]))or k==13 'ok
|
|
buttonpress(4)
|
|
taste:=1
|
|
|
|
if((x=>buttonx[2]) and (x=<(buttonx[2]+6)) and (y==buttony[2]))or k==27 'cancel
|
|
buttonpress(2)
|
|
taste:=0
|
|
|
|
popup_info_weg
|
|
|
|
PRI ram_txt(nummer)|c,i,ad
|
|
i:=0
|
|
ad:=TXT_RAM+((nummer-1)*25)
|
|
repeat while c:=ios.ram_rdbyte(ad++)
|
|
if c>13
|
|
font[i++]:=c
|
|
font[i]:=0
|
|
return @font
|
|
|
|
PRI messagebox(st)|laenge,mindest,messagex
|
|
laenge:=strsize(st)+2
|
|
mindest:= 20
|
|
messagex:=10+laenge
|
|
ios.backup_area(7,10,messagex,17,BRAM) 'Hintergrund sichern
|
|
ios.display3DBox(white, colors[messagehcol], black, 10, 7, 17, messagex)
|
|
windowx[2]:=7
|
|
windowy[2]:=10
|
|
windowxx[2]:=messagex
|
|
windowyy[2]:=17
|
|
print_message(st,8,11)
|
|
Infomarker:=1
|
|
|
|
button(4,10,15)
|
|
button(2,1+laenge,15)
|
|
|
|
PRI print_message(stradr,x,y)
|
|
printfont(stradr,colors[messagehcol],0,colors[messagetextcol],x,y)
|
|
|
|
con'
|
|
PRI Text_Input(min_x,max_x,zeile,adr,ch):ausg|k,ii,x,y,blck,inp,adr_tmp,kl,spalten
|
|
{{#######################################################
|
|
adr=Adresse Parameter-Ram adr=0 normales Textfeld
|
|
ch=maximale Anzahl Zeichen
|
|
#######################################################
|
|
}}
|
|
ii:=1
|
|
blck:=0
|
|
adr_tmp:=adr+1 'Adresse merken
|
|
'tmps:=adr
|
|
inp:=0 'Eingabe Merker, wird aktiviert, wenn was verändert wurde
|
|
spalten:=min_x
|
|
|
|
|
|
WIN_TILE(6,zeile,spalten) 'Eingabe-Cursor
|
|
|
|
repeat
|
|
time 'Zeitaktualisierung
|
|
k:=ios.key
|
|
ma:=ios.mouse_button(0)
|
|
|
|
if k==27 or ma 'Abbruch mit ESC
|
|
x:=ios.mousex
|
|
y:=ios.mousey
|
|
kl:=ios.get_window//10 'Icon-Button-Nummer des Fensters
|
|
if (kl==1) or (kl==2) or (k==27) 'Abfrage auf Fensterloeschen
|
|
popup_info_weg
|
|
quit
|
|
|
|
if(x=>buttonx[4]) and (x=<buttonx[4]+5) and (y==buttony[4]) 'ok im Infofenster
|
|
buttonpress(4)
|
|
popup_info_weg
|
|
'Button muss extra gelöscht werden, sonst Fehldarstellungen
|
|
ausg:=13
|
|
quit
|
|
|
|
if k==13
|
|
ausg:=13
|
|
quit
|
|
|
|
if k==9
|
|
ausg:=9
|
|
quit
|
|
if k==ios#CHAR_BS 'Backspace
|
|
if ii>1
|
|
if spalten<min_x+1
|
|
spalten:=min_x
|
|
'if ii<ch
|
|
WIN_TILE(16,zeile,spalten--) 'Zeichen hinter dem Cursor löschen
|
|
if spalte>min_x
|
|
WIN_TILE(6,zeile,spalten) 'Cursor einen Schritt zurück
|
|
else
|
|
WIN_TILE(16,zeile,spalten) 'Leerzeichen
|
|
|
|
adr--
|
|
inp:=1 'Text wurde verändert
|
|
ii--
|
|
blck:=0
|
|
|
|
if k>13 'Alle Zeichen außer Return
|
|
if ii>ch
|
|
ii:=ch 'Zeichenanzahl nicht mehr erhöhen
|
|
blck:=1 'feste Zeichenanzahl-merker
|
|
else
|
|
ii++
|
|
if k>96
|
|
k&=!32
|
|
if spalten+1<max_x
|
|
WIN_TILE(6,zeile,spalten+1) 'Eingabemarker weiterrücken
|
|
ifnot blck 'ist die maximale Zeichenanzahl erreicht, wird nicht weitergeschrieben
|
|
WIN_TILE(k-16,zeile,spalten)
|
|
textline[adr]:=k 'Text in String schreiben
|
|
spalten++
|
|
adr++
|
|
inp:=1 'Text wurde verändert
|
|
else
|
|
ausg:=13 'automatisch rausspringen, wenn max-Zeichenzahl erreicht ist
|
|
quit
|
|
|
|
|
|
if inp and ausg==13 'neue Eingabe-Daten
|
|
textline[adr]:=0 'normaler Text-Modus, String abschliessen
|
|
popup_info_weg
|
|
elseif ausg==9
|
|
popup_info_weg
|
|
|
|
PRI Display_Info
|
|
infofenster(9,10,31,15,string("Program-Info"),1) 'Info-Fenster anzeigen
|
|
Print_win(string("Wave-Generator for Hive"),9,10)
|
|
Print_win(string("Version 1.1 - 07/2014"),9,11)
|
|
Print_win(string("Autor:R.Zielinski"),9,12)
|
|
Print_win(string("Hive-Project.de"),9,13)
|
|
|
|
PRI infofenster(x,y,xx,yy,strg,knopf)'|i
|
|
|
|
ios.backup_area(x-1,y-2,xx+1,yy+1,BRAM) 'Hintergrund sichern
|
|
window(2,4,y,x,yy,xx,strg) 'Fenster erstellen
|
|
if knopf==1
|
|
button(4,((xx-x)/2)+x-2,yy)
|
|
if knopf==2
|
|
button(2,((xx-x)/2)+x-2,yy)
|
|
infomarker:=1
|
|
|
|
PRI button(n,x,y)
|
|
buttonx[n]:=x
|
|
buttony[n]:=y
|
|
buttonl[n]:=strsize(@@buttons[n])
|
|
if n==1
|
|
printfont(@@buttons[n],colors[hcolstatus],0,colors[statustextcol],x,y)
|
|
else
|
|
printfont(@@buttons[n],colors[buttonhcol],0,colors[buttontextcol],x,y)
|
|
|
|
PRI Mouse_Release
|
|
repeat while ios.mouse_button(0) 'warten bis Maustaste losgelassen wird
|
|
|
|
pri ausstieg
|
|
|
|
ios.DisplayMouse(1,colors[mousecol])
|
|
ios.mousepointer(hour_glass)
|
|
ios.GEN_Stop_FunctionGenerator
|
|
ios.plxrun
|
|
cmd_mount
|
|
activate_dirmarker(systemdir)
|
|
ios.sdopen("r",@regsys)
|
|
ios.ldbin(@regsys)
|
|
|
|
|
|
pri testfenster|a
|
|
|
|
a:=0
|
|
window(0,4,2,1,27,38,string("Wave-Generator V1.1"))
|
|
rahmen (12,5,38,27)
|
|
rahmen (1,1,38,3)
|
|
Print_win(string("Wave-Generator for Hive-Computer"),2,2)
|
|
|
|
rahmen (1,5,10,20)
|
|
rahmen (1,21,10,27)
|
|
Print_win(string("Waveform"),2,5)
|
|
Print_win(string("select"),2,21)
|
|
print_win(string("Settings"),13,5)
|
|
|
|
rahmen (13,7,22,16)
|
|
print_win(string("PWM"),14,7)
|
|
ios.displaytile(140,colors[winhcol],0,colors[act_color],7,20)
|
|
print_win(string("RATE:"),14,9)
|
|
print_win(string("from:"),14,11)
|
|
|
|
print_win(string("to :"),14,13)
|
|
|
|
print_win(string("Step:"),14,15)
|
|
|
|
rahmen (13,17,22,26)
|
|
print_win(string("SWEEP"),14,17)
|
|
ios.displaytile(140,colors[winhcol],0,colors[act_color],17,20)
|
|
print_win(string("RATE:"),14,19)
|
|
print_win(string("fr:"),14,21)
|
|
|
|
print_win(string("to:"),14,23)
|
|
|
|
print_win(string("Step:"),14,25)
|
|
|
|
print_win(string("Mute:"),2,18)
|
|
ios.displaytile(140,colors[winhcol],0,colors[act_color],18,7)
|
|
button(0,2,7)
|
|
button(3,2,9)
|
|
button(5,2,11)
|
|
button(6,2,13)
|
|
button(7,2,15)
|
|
|
|
rahmen (24,7,37,11)
|
|
print_win(string("Frequency"),25,7)
|
|
print_win(string("HZ"),35,9)
|
|
|
|
rahmen (24,12,37,16)
|
|
print_win(string("Damp-Level"),25,12)
|
|
print_win(string("DB"),35,14)
|
|
|
|
rahmen (24,17,37,21)
|
|
print_win(string("Pulse-Width"),25,17)
|
|
print_win(string("%"),35,19)
|
|
|
|
rahmen(24,22,37,26)
|
|
print_win(string("File"),25,22)
|
|
button(8,25,25)
|
|
button(9,33,25)
|
|
|
|
|
|
|
|
PRI Print_win(str,x,y)
|
|
printfont(str,colors[winhcol],0,colors[act_color],x,y)
|
|
PRI Print_win_inv(str,x,y)
|
|
printfont(str,colors[act_color],0,colors[winhcol],x,y)
|
|
|
|
PRI printhex(value, digits,x,y,back,vor)|wert 'screen: hexadezimalen zahlenwert auf bildschirm ausgeben
|
|
{{hex(value,digits) - screen: hexadezimale bildschirmausgabe eines zahlenwertes}}
|
|
value <<= (8 - digits) << 2
|
|
repeat digits
|
|
wert:=lookupz((value <-= 4) & $F : "0".."9", "A".."F")
|
|
ios.displaytile(wert-16,back,0,vor,y,x++)
|
|
|
|
con'****************************************************** Datum und Zeitanzeige *************************************************************************************************
|
|
|
|
PRI time|s 'Zeitanzeige in der Statusleiste
|
|
timezaehler++
|
|
if timezaehler>150
|
|
timezaehler:=0
|
|
s:=ios.getminutes
|
|
Status_extern(ios.dcf_sync,dcf_on,170,34,29,green,black) 'Anzeige des aktuellen Status in der Titelzeile
|
|
if s<>tmptime
|
|
displaytime
|
|
|
|
PRI displaytime|h,m
|
|
|
|
h:=ios.gethours
|
|
m:=ios.getminutes
|
|
|
|
print_zehner(h,29,35,colors[hcolstatus],colors[statustextcol])
|
|
ios.displaytile(42,colors[hcolstatus],0,colors[statustextcol],29,37)
|
|
|
|
print_zehner(m,29,38,colors[hcolstatus],colors[statustextcol])
|
|
tmptime:=m
|
|
date
|
|
|
|
PRI date
|
|
|
|
print_zehner(ios.getdate,0,29,colors[titelhcol],colors[titeltextcol])
|
|
ios.displaytile(30,colors[titelhcol],0,colors[titeltextcol],0,31)
|
|
|
|
print_zehner(ios.getmonth,0,32,colors[titelhcol],colors[titeltextcol])
|
|
ios.displaytile(30,colors[titelhcol],0,colors[titeltextcol],0,34)
|
|
printdec(ios.getyear,0,35,colors[titelhcol],colors[titeltextcol])
|
|
|
|
pri print_zehner(wert,y,x,hin,vor)|a
|
|
a:=0
|
|
if wert<10
|
|
printdec(0,y,x,hin,vor)
|
|
a:=1
|
|
printdec(wert,y,x+a,hin,vor)
|
|
|
|
pri Status_extern(wert1,wert2,tnr_act,x,y,col,f3)
|
|
|
|
if wert1==1
|
|
ios.displaytile(tnr_act,colors[hcolstatus],col,f3,y,x) 'Status ok-anzeigen
|
|
else
|
|
if wert2 'Externe Komponente in Settingmenue ausgewählt?
|
|
ios.displaytile(tnr_act,colors[hcolstatus],grey,0,y,x) 'Symbol grau
|
|
else
|
|
ios.displaytile(16,colors[hcolstatus],colors[statustextcol],0,y,x) 'Ohne externe Komponente arbeiten (kein Symbol)
|
|
'printdec(dcf_on,1,1,colors[winhcol],colors[act_color])
|
|
con'
|
|
PRI doppelklick:click 'pseudo-doppelklick
|
|
click:=0
|
|
'ios.get_window
|
|
Mouse_Release
|
|
|
|
repeat 500
|
|
if ios.mouse_button(0)==255
|
|
click++
|
|
|
|
con'
|
|
PRI iniload|i,a,c,adr
|
|
a:=SETTING_RAM
|
|
repeat i from 0 to 14
|
|
colors[i]:=ios.ram_rdbyte(a++)
|
|
dcf_on:=ios.ram_rdbyte(a+3)
|
|
ios.sdmount
|
|
activate_dirmarker(systemdir)
|
|
ifnot ios.sdopen("r",@ini_file)
|
|
i:=0
|
|
'********* Dateinamen der letzten Setting-Datei lesen ********
|
|
repeat
|
|
c:=ios.sdgetc
|
|
tmpline[i++]:=c
|
|
until ios.sdeof
|
|
tmpline[i]:=0
|
|
bytemove(@textline[0],@tmpline,strsize(@tmpline))
|
|
ios.sdclose
|
|
'print_win(@textline,1,1)
|
|
'********* Parameter der Setting-Datei in den Ram schreiben **
|
|
load_in_ram(@textline)
|
|
'ifnot ios.sdopen("r",@textline)
|
|
' adr:=tmp_buffer
|
|
' repeat
|
|
' ios.ram_wrbyte(ios.sdgetc,adr++)
|
|
' until ios.sdeof
|
|
|
|
ios.sdclose
|
|
ios.sdunmount
|
|
pri load_in_ram(str)|adr
|
|
|
|
ifnot ios.sdopen("r",str)
|
|
adr:=tmp_buffer
|
|
repeat
|
|
ios.ram_wrbyte(ios.sdgetc,adr++)
|
|
until ios.sdeof
|
|
|
|
PRI activate_dirmarker(mark) 'USER-Marker setzen
|
|
|
|
ios.sddmput(ios#DM_USER,mark) 'usermarker wieder in administra setzen
|
|
ios.sddmact(ios#DM_USER) 'u-marker aktivieren
|
|
|
|
PRI get_dirmarker:dm 'USER-Marker lesen
|
|
|
|
ios.sddmset(ios#DM_USER)
|
|
dm:=ios.sddmget(ios#DM_USER)
|
|
PRI cmd_mount :err 'cmd: mount
|
|
|
|
repeat 16
|
|
err:=ios.sdmount
|
|
ifnot err
|
|
mountmarker:=1
|
|
quit
|
|
else
|
|
' display_error(err)
|
|
quit
|
|
|
|
PRI cmd_unmount|err 'cmd: unmount
|
|
err:=ios.sdunmount
|
|
ifnot err
|
|
mountmarker:=0
|
|
else
|
|
'display_error(err)
|
|
|
|
PRI window(num,cntrl,y,x,yy,xx,strg) 'ein Fenster erstellen
|
|
|
|
windowx[num]:=x-1
|
|
windowy[num]:=y-2
|
|
windowxx[num]:=xx+1
|
|
windowyy[num]:=yy+1
|
|
|
|
ios.window(num,0,colors[winhcol],0,colors[winframecol],colors[titelhcol],colors[titeltextcol],colors[hcolstatus],colors[statustextcol],y-2,x-1,yy+1,xx+1,cntrl,0)
|
|
ios.printcursorrate(0)
|
|
ios.printchar(12) 'cls
|
|
printfont(strg,colors[titelhcol],0,colors[titeltextcol],x,y-2)
|
|
|
|
PRI printfont(str1,a,b,c,d,e)|f
|
|
|
|
repeat strsize(str1)
|
|
f:= byte[str1++]
|
|
if f >96
|
|
f^=32
|
|
f-=16 'anderer Zeichensatz, Zeichen um -16 Positionen versetzt
|
|
if d>39 'wenn Bildschirmrand erreicht, neue Zeile
|
|
d:=0
|
|
e++
|
|
ios.displayTile(f,a,b,c,e,d) 'einzelnes Tile anzeigen ('displayTile(tnr,pcol,scol,tcol, row, column))
|
|
|
|
d++
|
|
PRI printdec(value,y,xx,hint,vor) | i ,c ,x 'screen: dezimalen zahlenwert auf bildschirm ausgeben
|
|
{{printdec(value) - screen: dezimale bildschirmausgabe zahlenwertes}}
|
|
' if value < 0 'negativer zahlenwert
|
|
' -value
|
|
'printchar("-")
|
|
|
|
i := 1_000_000_000
|
|
repeat 10 'zahl zerlegen
|
|
if value => i
|
|
x:=value / i + "0"
|
|
ios.displayTile(x-16,hint,0,vor,y,xx) 'printchar(x)
|
|
xx++
|
|
c:=value / i + "0"
|
|
value //= i
|
|
result~~
|
|
elseif result or i == 1
|
|
printfont(string("0"),hint,0,vor,xx,y) 'printchar("0")
|
|
xx++
|
|
i /= 10 'nächste stelle
|
|
con '************************************************** Button-Funktionen ********************************************************************************************************
|
|
|
|
PRI buttonpress(n)
|
|
printfont(@@buttons[n],250,0,0,buttonx[n],buttony[n])
|
|
if n==1
|
|
printfont(@@buttons[n],250,0,0,buttonx[n],buttony[n])
|
|
ios.displaytile(144,colors[shellhcol],250,colors[shellhcol],29,7)
|
|
else
|
|
printfont(@@buttons[n],250,0,0,buttonx[n],buttony[n])
|
|
Mouse_Release
|
|
if n==1
|
|
printfont(@@buttons[n],colors[hcolstatus],0,colors[statustextcol],buttonx[n],buttony[n])
|
|
ios.displaytile(144,colors[shellhcol],colors[hcolstatus],colors[shellhcol],29,7)
|
|
else
|
|
printfont(@@buttons[n],colors[Buttonhcol],0,colors[buttontextcol],buttonx[n],buttony[n])
|
|
|
|
con '*************************************************** Start-Menue *************************************************************************************************************
|
|
PRI Menue(x,y,xx,yy)|i
|
|
popup(x,y,xx,yy)
|
|
repeat i from x to xx
|
|
ios.displaytile(16,colors[Titelhcol],$ff,$ff,y-1,i)
|
|
|
|
PRI separator(x,y,xx)|i
|
|
repeat i from x to xx
|
|
ios.displaytile(6,colors[Messagehcol],0,colors[winframecol],y,i)
|
|
|
|
PRI menueselect(stri,y)
|
|
printfont(stri,colors[messagetextcol],0,colors[messagehcol],0,y)
|
|
Mouse_Release
|
|
printfont(stri,colors[messagehcol],0,colors[messagetextcol],0,y)
|
|
popup_info_weg
|
|
|
|
PRI Startmenue
|
|
menue(0,23,9,28)
|
|
printfont(string("Startmenue"),colors[titelhcol],0,colors[titeltextcol],0,22)
|
|
printfont(string("Info - F1"),colors[messagehcol],0,colors[messagetextcol],0,23)
|
|
menuey[0]:=23
|
|
printfont(string("Load - F2"),colors[messagehcol],0,colors[messagetextcol],0,24)
|
|
menuey[1]:=24
|
|
|
|
printfont(string("Save - F3"),colors[messagehcol],0,colors[messagetextcol],0,25)
|
|
menuey[2]:=25
|
|
separator(0,26,9)
|
|
|
|
printfont(string("-EXIT- F12"),colors[messagehcol],0,colors[messagetextcol],0,27)
|
|
menuey[3]:=27
|
|
popupmarker:=1
|
|
con '*************************************************** Popup-Menue *************************************************************************************************************
|
|
|
|
PRI popup(x,y,xx,yy)
|
|
popupx:=x
|
|
popupy:=y-1
|
|
popupyy:=yy
|
|
popupxx:=xx
|
|
ios.backup_area(popupx,popupy,popupxx,popupyy,BRAM)
|
|
ios.display2dbox(colors[messagehcol],y,x,yy,xx,0)
|
|
|
|
PRI Popup_Info_weg
|
|
if popupmarker==1 'Popupmenue sichtbar?
|
|
ios.restore_area(popupx,popupy,popupxx,popupyy,BRAM) 'Hintergrund wiederherstellen
|
|
popupmarker:=0 'Popupmarker loeschen
|
|
if infomarker==1
|
|
ios.restore_area(windowx[2],windowy[2],windowxx[2],windowyy[2],BRAM) 'Hintergrund wiederherstellen
|
|
buttonx[2]:=buttony[2]:=buttonl[2]:=buttonx[4]:=buttony[4]:=buttonl[4]:=-1 'Buttonwerte löschen
|
|
infomarker:=0
|
|
|
|
|
|
PRI rahmen(x,y,xx,yy)|i
|
|
win_tile(137,y,x)
|
|
win_tile(136,yy,x)
|
|
win_tile(157,y,xx)
|
|
win_tile(119,yy,xx)
|
|
repeat i from y+1 to yy-1
|
|
win_tile(2,i,x)
|
|
win_tile(114,i,xx)
|
|
line(x+1,y,xx-1)
|
|
line(x+1,yy,xx-1)
|
|
|
|
PRI line(x,y,xx)|i
|
|
repeat i from x to xx
|
|
win_tile(130,y,i)
|
|
|
|
con '---------------------------------------------- Ausgaberoutinen ---------------------------------------------------------------------------------------------------------------
|
|
PRI Win_Tile(nu,ty,tx)
|
|
ios.displaytile(nu,colors[winhcol],0,colors[act_color],ty,tx)
|
|
|