[uBasic:] c++~~~~ ?" ^Enter next Level!^ ~~~~"

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

[uBasic:] c++~~~~ ?" ^Enter next Level!^ ~~~~"

Beitragvon Caefix » 07.06.2019, 20:23

~~~~~~~~~~~~~~~~~ C für Touristen ~~~~~~~~~~~~~~~~~~~
Gibt´s was Spannenderes als ein '}' in der falschen Zeile?
Dann für mutige Selbstcompilierer zum Spielen, Testen, Mitmachen...

download/file.php?id=2890
http://downloads.chdk-treff.de/tools/gcc493-host481.7z
Dateianhänge
!ubasic.zip
rem Bei Bedarf...
(51.85 KiB) 48-mal heruntergeladen
Caefix
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 20
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

Re: [uBasic:] c++~~~~ ?" ^Enter next Level!^ ~~~~"

Beitragvon rudi » 08.06.2019, 21:18

Caefix hat geschrieben:~~~~~~~~~~~~~~~~~ C für Touristen ~~~~~~~~~~~~~~~~~~~
Gibt´s was Spannenderes als ein '}' in der falschen Zeile?
Dann für mutige Selbstcompilierer zum Spielen, Testen, Mitmachen...
... und ein weiterer Beitrag von Caefix ohne jegliche Beschreibung von Sinn und Zweck. Downloads ohne Hinweis auf eine Relevanz und Inhalt.

Einen Bezug zu uBasic und C++ kann ich nicht herstellen. Bitte keine undokumentierten Downloads und Skripte einstellen.

Sinnvoll für die Gemeinschaft ist auch eine Beschreibung von Einrichtung und Verwendung der CHDK-GCC-Toolchain.

rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 507
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: [uBasic:] c++~~~~ ?" ^Enter next Level!^ ~~~~"

Beitragvon Caefix » 10.06.2019, 19:59

Ach ja, für die Jugend braucht´s einen Trailer.
&& Danke, Rudi, das Wichtigste steht jetzt 2* da.

Der Umschlag soll ja vorerst nur einige Experten ansprechen.
Vielleicht müssen wir warten, bis sie aus dem Urlaub zurück sind.
Dann wäre ich wohl bald nicht mehr der Einzige mit einem todo:FAST? vollständig funkionierendem uBasic 2019 auf der Kamera.

Code: Alles auswählen
uBASIC by Adam Dunkels
http://www.sics.se/~adam/ubasic/

Pablo d'Angelo improved the parser to support labels and removed the line numbers.


Caefix improved the parser to support

9-stellige Zahlen
IgnoreCase  : If Wait_Click ELSEif etc.
Abkürzungen : wai.0, un.x, md_det., get_ori. etc. // >> 1. Treffer in kw->Liste (tokenizer.c) // avoid i.

Allg: on, off, true, false

   "?" = "print"
   "abs", "odd"
   "mod"= '%'
   "xor"= '^',
   "nor"= weder noch,
   "&&" = "and"
   "||" = "or"
   ++   a=a==1 // mancher Gewohnheit wegen... :)
   '!'= "not",
   "!=" = "<>"
   '´' = "beep"
   '.'.ein Bremserl, jeweils ein "sleep 50" Kürzel.
   "'".ein Bremserl, jeweils ein "sleep 1000" Kürzel.
   '~' = ein Separator zur Verbindung von Wünschen auf EINER Zeile.
// Now possible: if abs a!=3 then ..#a=33~#b=3~c=3~?a,b,#c else a=111 ~ b=222~ c=333 
   swap #a,#b;#c,#d;e,f
   
Ablauf:
   break | cont für do, for, while
   reset
   ++ calculated jump method: goto/gosub 100*i+x |0 = ignore
   ++ exit, wie goto ... + break all!
   ++ is_key|is_pressed K "up" 200+x ~...->> K=200+x

   loop= x : Reset & Neustart bei Fehler oder eof mit akuten Werten, solange <>0 // ++ loop=#@
   
   ++ Get_time 7|8+> Zeitstempel
   ++ hour,min,sec,msec,lsec : Laufzeit

Mathe wie C:
   i++, i+=x, i*=1000, i/=2, i%=10"+5ignored"*10 , i-- , &= , |= , ^=
   I?x:y == wenn I!=0, I=x sonst I=y // wenn I, rechne mit x sonst y
   
   ++ "\r" | "\\r" == while (abs(r)>9) {r=r/10;}; "\-4210"=-4
   ++ "=~" etwa-Operator: if X =~ 100;4 then ? "[96..104] == true"

   ++ # als Variablensignal. // #V wird nicht erst nach Textanalyse als V erkannt.

++   10  weitere Variablen, #0-#9 + ##  // #99=#9 ,immer mod 10
      bevorzugt als Vor-/Rückgabewerte zu nutzen mit/ siehe
   data [+5,|=5,]0,1,2,3,4,5,6,7,i*8,get_...
      oder [ [?+>][data+>]let] Makro hinter
      break, cont für do{once}, for{once}, while, goto, gosub, return, exit, restore  // auch:
   let I=1,i=2,c++,...
                    // return +5,0,i+x,get_orientation_sensor -> #5,#6,...=0,...
                    // ...then break ?i,"broken!". #4,#2 let i=1,x=42
   clean [m [D]] // setzt Bereich ab m[..D]=0, alle=0 ohne Param.

data 0,1,2,3,4,5,6,7,8,9
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9
0 1 2 3 4 5 6 7 8 9
data =5,0,1,2,3,4,5,6,7,8,99,10,11
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,##
5 6 7 8 99 10 11 7 8 9 99
data +5,0,1,2,3,42,5,6,7,8,=
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,##
5 6 7 8 99 0 1 2 3 42 42
   
*( <--
Comments: Multi~/InLine '{'...'}', man kann aber hineinspringen, wenn '{' nicht Zeilenanfang.
   ++ -- ignores Lua Commentline //
   ++ // ignores C Commentline  // (ganze Zeile)
   ++ "printed Commentline"    //
   ++ i%=10"+5ignored"*10
   ++ ... then exec skiptotodo else {todo...
*) <--
Logging: print : Aus '^' wird '"'.zu ',;' ++ ':'= \n '.'=endof?

Debugging: tron, tronly, troff, beep, bug, debug [0-2]
   list prefix: list ~ "Zeile" = print+do
   varlist ["comment"]
++  Fehlerzeile
   
++   Alter exit_alt & enter_alt Fehler im '_statement': erledigt.

++ "shoot ~" : rawproof ??, // wartet bis Dateien geschlossen sind.
++ Glättung interner Abläufe (Schleifen/ Sprünge). , Zeilenende sychronisiert.

++ C Code allgemein leichter lesbar ( && ergänzbar :)

!! Der neue Parser entdeckt ein paar alte Syntaxfehler neu.
!! is_key & is_pressed
 do
 ?Wai. 1000
  K=0 @ !! How about that ?  Caefix
  is_key K "up" 100*"." ~? "up",".",K
  is_key K "set" 100*"." ~? "set",".",K
  is_pr. K "down" 100*"." ~? "down",".",K
  is_key K "left" 100*"."  ~? "left",".",K
  is_key K "right" 100*"." ~? "right",".",K
  is_key K "menu" 100*"." ~? "menu",".",K
  is_key K "shoot_half" 100*"." ~? "shoot_half",".",K
 #K?#K:42   
 until K!=42
 ?K~'goto K*10
  ?bug,"------ K=0;",x,bug
 10*K ~ print "KeyNr.";K. ~.click K/100~''
++
++ >> besonders (lange Skripte) können beschleunigt werden:
-gosub ">init" // >go_fwd!
...
@ jedes until, wend, next x, goto liest ab (jetzt) unter @paramblock einige kb leer.
@ >> Signalzeichen am Zeilenanfang : ? # - @
@ spart uBasic u.U. tausende interne Schritte, Zeit für z.B. md_det. im AutoModus?...

:>init
?"..."
#a=..
#b=..
-do...
  -if ...
-  set_...
-until...//
-return



{!! Zw. wait_click & if is_key SLEEP(11) oder print. <- Ein paar flag_yield gesetzt & weitergereicht, passt.}

"Sinnvoll für die Gemeinschaft ist auch eine Beschreibung von Einrichtung und Verwendung der CHDK-GCC-Toolchain."
Gewiss, was ist das? Caefix.

:...i....1....;....2....;....3....;....4.. { Npp++ Tip: Einstellungen-> Stile -> Default -> Deep Black | Black Board } :...i....1....;....2....;....3....;....4..
Code: Alles auswählen
@title execdemo
@chdk_version 1.4
@subtitle :...i....1....;....2....;....3....;....4..
@param    x Wert
 @default x 3
@param    a ab Test
 @range   a -11 11
 @default a 0
@param    q Modus nofu
 @range   q 1 75
 @default q 2
@param    u Extended Echo/Logging
 @default u 1
 @range   u 0 1
@param    l Log:
 @default l -23
@param    T Tron
 @default T 0
 @range   T 0 1
 
 debug=u
 if T tron
 pri.l
 
 for i=1 to x>0
  if x=1 then q++~? "eins" elseif x=2 then q++~? "zwei" elseif x=3 then q++~? "drei" else q++~? "viele"
 next i
  goto 10*a
  ?bug,"-----------",x,bug
 
data 0,1,2,3,4,5,6,7,8,9
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9
data +5,0,1,2,3,4,5,6,7,8,9
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,##
data =5,0,1,2,3,4,5,6,7,8,9
?#0,#1,#2,#3,#4,#5,#6,#7,#8,#9,##
wait_click 0
pla. 1

  ?bug,"-----------",x,bug
10 do
 if x=1 exec {
  ?x,x=1,bug ~EXIT 20
  } elseif x=2 exec {
  ?x,x=2,bug ~break
  } elseIf x=3 exec {
  ?x,x=3,bug ~break
  } elseif x=4 exec {
  ?x,x=4,bug ~break
  } elseif x=5 exec {
  ?x,x=5,bug ~break
  } elseif x=6 exec {
  ?x,x=6,bug  ~break
  } elseif x=7 exec {
  ?x,x=7,bug
  } elseif x=8 exec {
  ?x,x=8,bug
  } elseif x=9 exec {
  ?x,x=9,bug
  } elseif x>9 exec {
  ?x,"x>9",bug
  } elseif x=0 exec {
  ?x,"x=0",bug ~break
  } else ?x,"x<0",bug,"break else!"
  until O=O
  ?bug,"-----------",x,bug
@  } elseif x<0 exec {
@  ?x,"x<0",bug
20
do
 if x=1 then
 exec {
  ?x,bug,x=1
  } else if x=2 exec {
  ?x,bug,x=2 ~exit 30
  } else if x=3 exec {
  ?x,bug,x=3 ~break
  } else if x=4 exec {
  ?x,bug,x=4 ~break
  } else if x=5 exec {
  ?x,bug,x=5 ~break
  } else if x=6 exec {
  ?x,bug,x=6
  } else if x=7 exec {
  ?x,bug,x=7
  } else if x=8 exec {
  ?x,bug,x=8
  } else if x=9 exec {
  ?x,bug,x=9
  } else if x=0 exec {
  ?x,bug,x=9
  } else if x>9 exec {
  ?x,bug,"x>9"
  } else if x=0 exec {
  ?x,"x=0",bug
@  } else if x<0 exec {
@  ?x,"x<0",bug
  } else ?x,"x<0",bug,"break else !"
until O=O
endif
30
  ?bug,"-----------",x,bug
 do
 ?Wai. 1000
  K=0 @ !! How about that ?  Caefix
  is_key K "up" 100*"." ~? "up",".",K
  is_key K "set" 100*"." ~? "set",".",K
  is_pr. K "down" 100*"." ~? "down",".",K
  is_key K "left" 100*"."  ~? "left",".",K
  is_key K "right" 100*"." ~? "right",".",K
  is_key K "menu" 100*"." ~? "menu",".",K
  is_key K "shoot_half" 100*"." ~? "shoot_half",".",K
 #K?#K:42   
 until K!=42
 ?K~'goto K*10
  ?bug,"------ K=0;",x,bug
 10*K ~ print "KeyNr.";K. ~.click K/100~''
  ?bug,"-----------",x,bug
  90
  end
Dateianhänge
!!ubasic.zip
(55.1 KiB) 34-mal heruntergeladen
Caefix
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 20
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron