[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) 1782-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
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: 510
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.

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
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... <img src="./images/smilies/smile.gif" alt=":)" title="Smile" />
        "!"= "not",
    "!=" = "<>"
         "´" = "beep"
    ".".ein Bremserl, jeweils ein "sleep 50" 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 &#39;_statement&#39;: 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 <img src="./images/smilies/smile.gif" alt=":)" title="Smile" />

!! 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~&#39;goto K*10
  ?bug,"------ K=0;",x,bug
 10*K ~ print "KeyNr.";K. ~.click K/100~&#39;&#39;
++
++ >> 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
Erstellt in 0.030 Sekunden, mit GeSHi 1.0.8.9

{!! 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..
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
@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~&#39;goto K*10
  ?bug,"------ K=0;",x,bug
 10*K ~ print "KeyNr.";K. ~ .click K/100
  ?bug,"-----------",x,bug
  90
  end
Erstellt in 0.013 Sekunden, mit GeSHi 1.0.8.9
Dateianhänge
!!ubasic.zip
(55.1 KiB) 1664-mal heruntergeladen
Zuletzt geändert von Caefix am 18.10.2021, 20:03, insgesamt 3-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 23.11.2019, 19:38

Hier ist noch ein gui_script.c mit ubas_done bit für ../trunk-xxxx/core
So wie der @param Block in LUA mit "--]]" beendet wird, kann man für dieses uBasic "@@" schreiben.
So vermeidet man eine gelegentliche Parserkollision bei '#x=' am Zeilenanfang.

motion_detector.c für ../trunk-xxxx/modules kennt sogar 2 neue bits.
md_detect_motion a,b,1,d,e,f,G, h ,i,j,k,j+(a%2=0)-(a=2),k+(b%2=0)-(b=2), N ,o,p

MD_DO_IMMEDIATE_SHOOT {[n=1,9]}, were triggered if one cell hit.
Now two lines containing MD_AT_ONCE {(N=16,17,25)} break the for loops to save milliseconds between
first hit in field "2x5" and calculating on until '10*10'.
The return value is adjusted to idx ("2x5").
N=25 verwendet 'shoot_full_only'.

G=5,6,7 : draw_grid & 4 -->> nur die getriggerten Felder, meist rot, werden gezeichnet.

Noch ein kleines Extra, aber auf 4 Dateien verteilt (Gui-menu.zip):
"@range VAR MIN MAX [step]"

Die Reihenfolge muß übrigens @param @default @range sein...
Code: Alles auswählen
@param    q Modus nofu
 @default q 2
 @range   q 1 98 16
@param    Q Modus nOfu
 @range   Q 1 98 16
 @default Q 2

Viel Spaß mit CHDK!
Dateianhänge
gui_menu.zip
(17.7 KiB) 1536-mal heruntergeladen
motion_detector.c
(26.26 KiB) 1570-mal heruntergeladen
gui_script.c
(28.74 KiB) 1587-mal heruntergeladen
Zuletzt geändert von Caefix am 12.12.2019, 20:52, insgesamt 1-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 12.12.2019, 20:37

++ Einige Vokabeln aus shooting.c & Luascript.c
Syntax: [ Download ] [ Verstecken ]
  1. get_eff_focal_length 
  2. get_imager_active 
  3. get_nd_current_ev96 
  4. get_nd_value_ev96 
  5. get_current_av96 
  6. get_current_tv96* 
  7. get_max_av96 
  8. get_min_av96 
  9. peek & poke 
Syntax: [ Download ] [ Verstecken ]
Benutze Apache configuration Syntax Highlighting
++ macros in Print: ?=?:=!:=/;"/";=.:
==>>
sx710hs-101a-CHDK_DE-1.5.0-5324
A/DCIM/173___12/Img_0506
:---=----=--+-=----=----

++ Hex lesen x=0xffFF & schreiben ?=%x,"=",x
++ "to"=".."
++ Bereichs- & Mengenoperator "in" : if x in 1,3,5... or x in 7..42 ...
++ get_aflock()
++ ifkey 1-| 0 |1  ::  1:is_pressed == if_key | -1:if_key == is_pressed
++
...
-- ??
Erstellt in 0.006 Sekunden, mit GeSHi 1.0.8.9

how to do usb_warm_up_coffee_statement ??
Dateianhänge
!!!ubasic.zip
(36.94 KiB) 1549-mal heruntergeladen
Zuletzt geändert von Caefix am 18.10.2021, 15:55, insgesamt 1-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 30.05.2020, 20:22

++ get_metering_mode()
++ set_metering_mode() // ?? Firmware Limit :( readonly
++ get_wheel() // -1=links, 1=rechts
++ if wheel_left & until wheel_right

// #5560
++ echo, wie print ohne print_screen, nur Konsole.
++ get_af_frame
+? set_af_frame // ?? Firmware Limit :( readonly
++ mem_dump 0xaddr,size

// #5564
++ CPUbasic hat eine neue Dateifunktion: write
Was 'echo' nur auf die Konsole bzw 'print' auf die Konsole und in LOG_xxxx.TXT schreiben würde,
kann man mit 'write ...' oder 'write =, ...' an Log_xxxx.Log anhängen; (... & nur, wenn auch print_screen <>0.)
Oder mit 'write ="A/blafasel.log", ...' anderswo.
Wenn der Dateiname ungültig ist, werden die Zeilen in "A/uBerror.Log" gesammelt.
write ... schreibt weiter in die so definierte Datei.

+++ Debugging, etwa Schreibfehler wie 'XX=' :)
++ Meldungen, zB:
112-> Expected 3, got 12 // In Zeile 112 wurde eine Variable erwartet, aber ')' gelesen (Siehe tokenizer.h)

Neu in Lua seit Release ~5550, drum auch in CPUbasic.
++ get_canon_raw_support
// return current canon image format as bitmask 1 = jpg, 2 = raw, 3 = raw+jpg
++ get_canon_image_format
++ set_canon_image_format

// #5570
// Extrem Debuuging only!!: (uBasic & Lua)
++ exception() // Schaltet die Kamera 100%ig aus und verursacht (hoffentlich) in ~20sec ein Romlog. (--> Romlog.lua)[/syntax]
Dateianhänge
!Luascript#5570.zip
FUNC(get_wheel)
FUNC(is_wheel_right)
FUNC(is_wheel_left)
FUNC(exception)
(22.5 KiB) 1342-mal heruntergeladen
console.c
// misc->console->display last console
FILE *fh = fopen("A/console.Log","wb");
case KEY_LEFT:
save_console();
break;
(8.59 KiB) 1341-mal heruntergeladen
Zuletzt geändert von Caefix am 18.10.2021, 16:00, insgesamt 2-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 28.10.2020, 19:40

// #6503
ubasic ++ << & >> wie C.
Seit Beginn viele Syntax- & Strukturvereinfachungen für an Lua & C Gewöhnte...


Kleine Anpassungen für EOS-M Kameras:
shooting.c braucht es nur dafür, um ein paar Lücken (get_zoom, get_focus, ...) zu schließen.
--[[get_focus ist derzeit ein 'short', sollte mal ein 'int' werden; Noch nicht optimal, "Ist in Arbeit...", aber besser als "0".
Eher Fokus-Positionen, keine metrischen Werte. (Teils erledigt, hängt vom Objektiv ab...)]]--

set_zoom_rel(1) bzw. (101), wenn "m3_101a" Am Anfang eines Skripts setzt derzeit eine spezifische Variable, die noch nicht anders zugänglich ist.

// #6505
++ modules/gui_read.c -- Mit differenzierteren Tasten, sanftes Zurück mit 'left' & 'up'. Prinzipbedingt geht´s nicht besser.

// #6506 shooting.c etc. für portierte EOS_M:
:arrow: :arrow: :arrow: https://chdk.setepontos.com/index.php?t ... #msg144440

// #5616
:idea: Option für "neuere" Kameras, die "neuesten" Compilerwarnings...
https://chdk.setepontos.com/index.php?t ... #msg144518
Dateianhänge
gui_read.c
/modules/gui_read.c
(12.65 KiB) 1306-mal heruntergeladen
Zuletzt geändert von Caefix am 19.11.2020, 21:22, insgesamt 1-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 19.11.2020, 20:43

// #5630

++ nand // if a<>0 and b==0 ==>> if a nand b
++ shift[1[,5]] // wie Abakus in Batchfiles: data 0,11,22,33...99 setzt die Argumente %0..%9
++ is = '='


// #5642-45

!! Wer schon mal "print hour,min,sec" gescriptet hat, muß jetzt zu 'minute' ergänzen.
++ min a,b[,c,...][;] nimmt jetzt den kleinsten Wert aus einer Reihe,
++ max ... den größten.
Z.B. x=(min a,b,c)+y oder x=max a,b,c;/2


// #5670-80
!! Wer mit einer der älteren Versionen weitermachen mochte, muß ab hier diesen Schnipsel einfügen.
Code: Alles auswählen
case TOKENIZER_ENTER_ALT:
      accept(token);
      enter_alt(1);
      accept_cr();
      break;

++ odd x // x ungerade?
++ even x // x gerade?

// #5678
Official Luascript.c hat ein paar interne Änderungen für den Compiler erfahren. Hier ist die JogdialVersion daran angeglichen.

// #5681
Ubasic auf dem Laufenden...

// #5681_2
Die übrigen Goodies gesammelt, easy dropIn..

// #5695
++ _... print x, _ignore, y _comment +z --> = ?x,y+z
++ select ... end_select ... kleine Korrektur, anstatt "case_else #a=#a".
++ begin internes Lesezeichen, obere Zeilen & :labels abgeschnitten, zur Optimierung der Sprünge u. Schleifen.
Dateianhänge
Ubasic#5695.zip
(49.06 KiB) 1262-mal heruntergeladen
!Trunk5681.zip
(75.51 KiB) 1291-mal heruntergeladen
Lua-Wheel5678.zip
(23.59 KiB) 1295-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 05.02.2021, 20:36

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@param    R Readmode
 @default R 0
 @range   R 0 1
@subtitle :...,....2..+.,....3....;....4....

R=R
if R then Worums geht.
:BEGIN
play_sound(0)
?=*:=?:=!:=/;"/";=.:
set_console_layout 0
   rem  PlaceYourProgHere
end
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9

// #5728

Was man als Textdatei lädt und nicht .LUA heißt, wird dem Ubasic-Interpreter überlassen. :shock:
Wenn die 1. Zeile falsch ist, ist es kein Ubasic, :oops: merkt er gleich.
Anstatt abzubrechen, :idea: wird er nun zum alternativen Reader mit Stopuhr.
// Limits: 127 Zeichen, 0xffff Zeilen, Speicher, kein 'Whitespace',...

Man kann auch per "display z[,L]" vom Skript zum Reader wechseln. :wink:
"display" funktioniert wie "goto", springt zum :label und zeigt L Zeilen an.
:arrow: <menu> setzt das Programm fort, indem von da abwärts nach :BEGIN gesucht wird.
Wenn nicht da, dann von vorne, wenn nicht da, dann geht´s da weiter,
wo man die Zeile platziert hat.
Sehr praktisch, :evil: wenn man jeden Fehler mal gemacht haben will...

Oder man lädt ein Skript mit den oberen Zeilen zum Lesen und startet mit :arrow: <menu> #-o

++ Logik: (A ^^ B) entweder oder, !A, !& nand, !| nor, !=
++ uns X // X = (unsigned short) X
++ multiline elseif
++ print 1;,2 -->> 1,2 statt print 1;",";2
++ strlen Länge der letzten print|write|echo|strlen ... Zeile.
++ Die 62+2 Variablen auch als Feld: #(0)=a, #(26)=A
...
++ get_time "s" | "m" | "h" | "Y" | "M" | "D" ...
...
++ motion_detector a=400, b=1, C=7,... oder 20,20,7,... zum experimentellen Beobachten & Vergleichen der Props, im AutoMode sehr bunt...

// #5729 (Vorschau wg. falsches Fenster editiert...)
Ulkig: gcc 10.x hat eine neue Zeile reklamiert, die sonst funkioniert hat. Keine wichtige, und anders gelöst (->tokenizer.h) ...
++ get_time ("s") ...

// #5732 ...md_detect mit Anwendung \:D/

// #5735 ... tuned the fiddle :-({|=

// #5736
++ :idea: ?=*:=; Weitere Printkürzel zum Loggen von @title =* u. dem 1. @subtitle.
Dateianhänge
#Ubasic5736.zip
(46.56 KiB) 1248-mal heruntergeladen
!md_detect5735.zip
(19.05 KiB) 1251-mal heruntergeladen
Zuletzt geändert von Caefix am 18.10.2021, 16:04, insgesamt 1-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 20.03.2021, 21:17

:D :arrow: :arrow: :arrow: ++ https://app.assembla.com/spaces/chdk/su ... mmits/5792

++ do = repeat
++ click("set") etc.
Als weitere Vereinfachung der Syntaxdetails zu Lua. (Easy c&p)
if is_pressed("up") and get_shooting() ~= false then x=x end :idea: könnte jetzt auch eine ubasic Zeile sein...

+++ MAKEFILE etc. für einen 2. Ubasic Ordner namens xbasic. Nun können Interessierte immer 2 Versionen zusammen kompilieren und in der Kamera mit xuBaswap.lua tauschen.
:!: Die aktive Version ist immer ubasic.flt!

// #5862
++ on X=0,1,2,3,4{,X] goto/gosub/exit 0,100,22,333,"vier","deFault"
:evil: Bei gosub ist immer wichtig, daß man nicht aus Schleifen heraus returniert (geht in Lua u. C) oder ein endif verpaßt... ;)

// !! Nachtrag ~6080 :cry: #-o Da wäre noch was Auszubessern, ... :leer:
Syntax: [ Download ] [ Verstecken ]
Benutze BlitzBasic Syntax Highlighting
//GOSUB test for end_select and set to gosub-
        if (case_gosub) break_stack_ptr--;
        break_statement(); // don´t 'break|cont' in script.bas!
        end_select_statement();
        if (case_gosub) {
          gosub_stack[gosub_stack_ptr-1] = tokenizer_line_number()+1; //+1;
#ifdef PUSH_POP
          tokenizer_push();
#endif
          break_stack[break_stack_ptr] = TOKENIZER_RETURN;
          break_stack_ptr++;
          jump_line(gosub_ln);
          DEBUG_PRINTF("end_select_statement: GOSUB: returnLN=%d\n", gosub_stack[gosub_stack_ptr-1]);
        }
//GOSUB
Erstellt in 0.010 Sekunden, mit GeSHi 1.0.8.9

Weitere bewährte Dateien sind gleich mitgezippt, :roll: zur Enlastung der Maus...
Dateianhänge
xubasic5862.zip
(114.17 KiB) 1192-mal heruntergeladen
Lua-Wheel#5792.zip
(23.68 KiB) 1234-mal heruntergeladen
Zuletzt geändert von Caefix am 22.03.2022, 20:38, insgesamt 1-mal geändert.
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 03.05.2021, 18:58

// #5869
Jetzt sollte eigentlich sogar return / break / cont im "Nested if" Kontext und aus Schleifen heraus funktionieren, wie man es von Lua oder C her gewohnt sein könnte ... :D \:D/

// #5909 :idea:
++ Skript- Errorhandling: Stackprüfung der Schleifen.
++ Jetzt auch ' als Stringsymbol: print ' click "menu" '
++ optionales ',' in random 1,5 etc.

// #5910 Noch ein potentieller Syntax- Fehler, den wohl seit ~5555 niemand sonst gemacht hat, behoben...

// #6002 // #6001 In ubasic.c wäre an Zeile 3808 " reset(); " anzufügen...
Dateianhänge
xubasic5910.zip
Freie Atemwege für alle!
(105.53 KiB) 1157-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 28.02.2022, 19:44

#6075 :idea:
Eher ein tokenizer update.

++ def
++ fn

Was man mit fünf Buchstaben so alles machen kann ... 8)

def fna - fnz, fnA..fnZ
Man definiert Zeilen(/fragmente) wie bisher Variablen, Vorkommen von "fn_" werden im Skript mit dem Definat ersetzt, kann was mathematisches sein, was literarisches,
ein if-Einzeiler oder eine sperrige Anweisung aus der Anleitung...
Es muß lediglich sich lediglich syntaktisch und logisch in den Kontext einfügen, keine Sprünge...

Schleifen werden nicht mehr Zeilenweise abgewickelt, Zeigerstapel ersparen dem ubasic nun u.U. ein paar kb Textanalyse pro Durchlauf.

-- Bestimmt hab´ ich was zu Erzählen vergessen... #-o

#6077
++ BUGFIX: Vom wend zurück zum while ging ein Zeiger verloren :oops: , läuft jetzt wieder rund.

#6078
++ Ein Variablenfeld @(0) .. @(256) für Zeilen wie :p @(o)+=o*10 ~? o,o*10,@(o)
#6079
++ data: @( :idea: ) 1,2,3,a+b,,.... zum Initialisieren ab ( :idea: x|y), soweit die Kommata reichen, :arrow: , auch zeilenübergreifend, wenn Komma zuletzt...
(Für [def] fn? ist das immer ein Einzeiler.)

#6080
++ Zu Vergleichszwecken #define PUSH_POP in ubasic & tokenizer, schaltet zw. Zeilen- u. Pointervariante, (& bugfix exit x :oops: ).
++ ? asc "@"
++ Bugfix, seit ~5862 :evil: hat gosub aus select/case heraus nicht mehr funktioniert... ( :oops: : 3 Zeilen zu wenig, break_stack_ptr verpaßt )

#6081
++ ? asc("@abc",-4), "=64"
++ ? ' Freier Speicher in kb:',memory :-D

!! Beim Kopieren :evil: ist das makefile von /xbasic auch in den /ubasic Ordner geraten. :oops: 2* "x" -> "u" , dann funkts...
Dateianhänge
xubasic6081.zip
IS THE SD-CARD LOCKED ??
(142.38 KiB) 1001-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 28.05.2022, 20:38

#6087-97

:arrow: Da fand ich mal eine Idee und fand sie gut. :arrow: http://zenoshrdlu.com/kapstuff/zsubasic.html :D

Jetzt mit Strings von a$-z$. A$-Z$ :-({|= , und ...
Code: Alles auswählen
// new string-related statements and functions
  {"abc$",                  TOKENIZER_ABC$},
  {"left$",                   TOKENIZER_LEFT$},  //
  {"mid$",                    TOKENIZER_MID$},
  {"right$",                  TOKENIZER_RIGHT$},
  {"mem$",                  TOKENIZER_MEM$},  // addr[,len]
  {"up$",                   TOKENIZER_UP$},
  {"low$",                  TOKENIZER_LOW$},
  {"read$",                 TOKENIZER_READ$}, // read$(A$[,"A/readme.txt"])
  {"rev$",                  TOKENIZER_REV$}, // reverse
  {"rep$",                  TOKENIZER_REP$}, // replace (a$,"?!")
  {"strol$",                TOKENIZER_STROL$}, // rotate left,1  abcd -> bcda
  {"stror$",                TOKENIZER_STROR$}, // rotate right,1 abcd -> dabc
  {"spc$",                  TOKENIZER_SPC$}, // spc$(3)="   "
  {"str$",                    TOKENIZER_STR$}, // str$(123*10+x)
  {"trim$",                 TOKENIZER_TRIM$}, // cut framing " '\"\10\r\n"
  {"arg$",                  TOKENIZER_ARG$}, // a$="a,b,c,d" ~> arg$(a$,0)="a"
  {"chr$",                    TOKENIZER_CHR$}, // =chr$(64,4) ~> @@@@

  {"args",                  TOKENIZER_ARGS}, // args(a$[,',']) ~> =4
  {"val",                     TOKENIZER_VAL},
  {"len",                     TOKENIZER_LEN},
  {"instr",                   TOKENIZER_INSTR},
  {"asc",                     TOKENIZER_ASC},
  {"open",                  TOKENIZER_OPEN},  // if open read$ a$
  {"close",                 TOKENIZER_CLOSE}, // ?read$~ close. //readfile
  {"file_browser",          TOKENIZER_FILE_BROWSER},
  {"textbox",               TOKENIZER_TEXTBOX},
// end of string additions

... und eine arm_rules.inc Variation. Damit dieses Ubasic überhaupt mit gcc4.93 kompilierbar ist, mußte ich erst noch die Optimierung des Compilers -Os anpassen ... :oops:
Dateianhänge
xubasic6097.zip
SummaryOfSilence
(180.7 KiB) 963-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

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

Beitragvon Caefix » 01.02.2023, 21:06

#2024

Das Instant-Update für CHDK 1.7 :D

Nichts neues meinerseits, es galt nur gut 100 Zeilen, die sich seit #6097 oder mit dem XIMR Code ( für Digic VI 8) ) eingeschlichen haben in meine Varianten einzufügen oder anzupassen. :oops: :roll:
Ansonsten ist xbasic die letzte Version vor den Strings, kann mit !ubaSwap.lua bei Bedarf getauscht werden.

:idea: Lua-Wheel etc. sind mitgezippt...
Dateianhänge
!xubasic6224.zip
(285.4 KiB) 854-mal heruntergeladen
EsGibtKeinenErdaufgangAufDemMond! SoSimpel...
Benutzeravatar
Caefix
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 78
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!


Zurück zu Code-Ecke

Wer ist online?

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

cron