|
Forum Index : Microcontroller and PC projects : MMBasic V6.03.00 release candidates
| Author | Message | ||||
| Bleep Guru Joined: 09/01/2022 Location: United KingdomPosts: 795 |
Hi Peter, I fully realise this isn't much to go on, but incase anyone else reports a problem, I've had 2 occurances of a crash requiring a flash nuke to get out of. This was using B5 on a USB LCD ST7796S. Each time I was running a version of the Recursive Mandelbrot attached, I saw a brief flash of heap out of memory or similar then a reboot, displaying the first 3 lines of the normal boot up, then "PC=100055EA LR=100052A9" followed by an immediate reboot, but each subsiquent itteration I only get the "PC=100055EA LR=100052A9", swiftly followed by a reboot.... I've attached a zip with two versions of Mandelbrot, one standard, one recursive. The recursive is almost twice as fast, I did it just to see if it would be and quicker in Basic. :) Kevin mandelbrot.zip |
||||
| Frank N. Furter Guru Joined: 28/05/2012 Location: GermanyPosts: 1098 |
...now a new error with the same program. The program is called "demo.bas" and was working perfectly until recently. You can download it here: https://github.com/guidouil/PicoCalcStuffs With the latest version, PicoMiteRP2350V6.03.00RC7, the program now crashes with this error: Error: Cannot find label (F2 line 358) Line 358 reads: restore edges ...with edges: in same sub.data 0,1, 0,2, 0,4, 1,3, 1,5, 2,3 data 2,6, 3,7, 4,5, 4,6, 5,7, 6,7 In addition, the following will now always be displayed with GFXterm: B:/> [?7h Frank |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11352 |
Can't do anything until the weekend so revert to an older version of necessary. |
||||
| Frank N. Furter Guru Joined: 28/05/2012 Location: GermanyPosts: 1098 |
Try doing the following - Create a file with the following content: Font 8 and launch the program using the built-in file manager.CLS RGB(0,0,0) That changes the font size to "small" for me. The file manager and any LIST I open also appear in small text. This program Font 1 undoes everything. It must also be launched from the file manager.CLS RGB(0,0,0) I hope that Peter won't change the way the system works... Frank Edited 2026-05-14 02:53 by Frank N. Furter |
||||
| Frank N. Furter Guru Joined: 28/05/2012 Location: GermanyPosts: 1098 |
No problem!!! I just wanted to point that out. Frank |
||||
| toml_12953 Guru Joined: 13/02/2015 Location: United StatesPosts: 637 |
Try doing the following - Create a file with the following content: Font 8 and launch the program using the built-in file manager.CLS RGB(0,0,0) That changes the font size to "small" for me. The file manager and any LIST I open also appear in small text. This program Font 1 undoes everything. It must also be launched from the file manager.CLS RGB(0,0,0) I hope that Peter won't change the way the system works... Frank Works great. Thanks! I never would've thought of reducing the font size to eliminate the CRLF at 40 columns. Footnote added 2026-05-14 18:25 by toml_12953 BTW, here's the subroutine I use: SUB LLIST(fname$) FONT 8 OPTION console serial IF fname$="" THEN LIST all ELSE LIST all fname$ END IF PRINT :PRINT :PRINT :PRINT :PRINT PRINT :PRINT FONT 1 OPTION console screen END SUB |
||||
| karlelch Guru Joined: 30/10/2014 Location: GermanyPosts: 327 |
Hi, I have a question regarding LIST COLLISIONS. For my latest robot program (which uses a library), I get: > list collisions LOCAL: none GLOBAL bucket 10: VL53_I2C_CHUNK TOF.PROCESSMSK R.SENDTELEMETRYV GLOBAL bucket 29: DEBUG_VERBOSE J GLOBAL bucket 47: VL53_BUF_SIZE TELE_N_CMD_BYTES GLOBAL bucket 61: IS_RUNNING R._UPDATEFACEP_N GLOBAL bucket 63: VL53_I2C_FREQ VL GLOBAL bucket 65: VL53_I2C_SDA USE_REMOTE_KB GLOBAL bucket 84: PIN_DRV_MA_EN CMD_STOP GLOBAL bucket 85: VL53_I2C_SCL CMD_POWERDOWN GLOBAL bucket 119: SHOW_TOF_DATA SELF GLOBAL bucket 203: TOF_SINC_FREQ R.SENDTELEMETRYSOUT GLOBAL bucket 256: VL53_FW_PART1_SIZE TOF.PROCESSPRAV GLOBAL bucket 273: C_BKG TOF_PARAMS GLOBAL bucket 282: VL53_I2C_ADDR TOF.PROCESSRAV GLOBAL bucket 314: VEL_TURN R._LOGMAXLN GLOBAL bucket 339: PIN_DRV_MA_PH VL53.UPDATE_DATAPBH GLOBAL bucket 353: VL53_RES_4X4 TELE_DATA_OFFS GLOBAL bucket 370: SHOW_SPLASH TOF.PROCESSPDST GLOBAL bucket 393: RMP_MAX_STEPS PIN_COM2_TX GLOBAL bucket 420: VL53_REG_CMD_STAT PIN_BAT R._SERVICECALLBACKT_FACE GLOBAL bucket 472: T_START TOF.PROCESSPPIX GLOBAL bucket 499: VT_DEL_LEFT TOF.PROCESSN_RAV If I want to reduce collisions, how do I do that? The the manual it says "Use this after a representative run to decide whether OPTION LOCAL VARIABLES n should be retuned, or whether a particular variable should be renamed to break a collision.". With OPTION LOCAL VARIABLES n I can reduce the number of collisions to approx. half, but what can I do with renaming? The variable names are so different, how would I need to rename them? This is more out of curiosity; my program runs currently fast enough. Thanks Thomas |
||||
| Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 8842 |
Microline 184? Wow... that brings back memories. My second printer was the OKI Microline 80. I still have it somewhere. I even have the stand to take teletype rolls! I don't think I ever used that though. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11352 |
Just make any small change to a variable name e.g. add x to the end. Any change will change the hash key. However, if the variable table is nearly full you may then get a different hash collision. |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 490 |
@Peter, is there a possibility to change the behaviour of WEB NTP a litte bit? If if the optional NTP-address parameter is empty e.g. ntp_ip = "" WEB NTP 1,ntp_ip,1000 it would be great that instead of the error "Error : Failed to find NTP address" it would consider the parameter as missing like in WEB NTP 1,,1000 which works. This would make the choice in a program easier if it switches between a specified NTP and a default one. thanks, Gerald 73 de OE1HGA, Gerald |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 490 |
@Peter, sorry, but ... once again to the WIFI connect problem with Fritzboxes. Is it possible to set the mm.errno and mm.errmsg$ variables straight after startup and a failed wifi connect to some value other than 0 and ""? The reason is that if you specifiy the full OPTION WIFI "SSID","passwd","nodename","IP","netmask","gateway","country" a mm.info(ip address) resolves to the ip address set in the option, regardless if the connect succeeded or not. If the options specified are just OPTION WIFI "SSID","passwd","nodename","country" mm.info(ip address) resolves either to the ip received via dhcp or "0.0.0.0". In that case it is possible to decide whether the connect failed or not. In both cases you get an errormessage at the console. So at least the firmware knows that the connect did fail but it is not reported into the mmbasic environment. Gerald 73 de OE1HGA, Gerald |
||||
| Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 5884 |
@Peter, The 2040 mini version has a similar problem as 6.01.02 with PIO. After a cold boot all works, but a second or third run PIO communication via FIFO Goes wrong. As if with RUN not all fifo’s are cleared. I have had a workaround with typing PIO STOP N,m, and PIO CLEAR N on the command line with this particular PIO program. Hard for me to diagnose further. I noticed this with the quadrature decoder. Running 6.02.01 runs fine (not a mini, I know….). Any idea? Volhout Edited 2026-05-16 02:45 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 490 |
@Peter, there is probably a bug in the BIT function: ' OPTION EXPLICIT OPTION DEFAULT NONE dim integer res type test_type intgr as integer end type dim a as test_type a.intgr = &b0001 print a.intgr bit(a.intgr,1)=1 print a.intgr res = bit(a.intgr,0) in the example above the last statement fails with [18] res = Bit(a.intgr,0) Error : Not an integer Version is: WebMite MMBasic RP2350A Edition V6.03.00RC7 Gerald 73 de OE1HGA, Gerald |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11352 |
Various MMbasic commands are not structure enabled (many math commands). Adding all of these would inflate the image size dramatically for little advantage. The structures manual identifies the commands that are supported. If a command or function is not explicitly mentioned in the manual it probably isn't supported. Frank The problem with your program is that the label is indented on the line. This used to be allowed even though the manual says the label must be the first thing on the line but the current RC doesn't allow it any more. I'll look at this but no promises (optimisation restricts flexibility sometimes) Edited 2026-05-16 04:04 by matherp |
||||
| Frank N. Furter Guru Joined: 28/05/2012 Location: GermanyPosts: 1098 |
Peter, thanks for your explanation! It's always a bit puzzling when a program that was working fine suddenly stops running... Frank Edited 2026-05-16 04:48 by Frank N. Furter |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 490 |
If a command or function is not explicitly mentioned in the manual it probably isn't supported. Thanks Peter, didn't see it that way but it's clear now. Gerald 73 de OE1HGA, Gerald |
||||
| terekgabor Regular Member Joined: 02/01/2026 Location: HungaryPosts: 77 |
Hello Peter! I tested web error handle and it seems it became much better. Now I can handle errors, so I have no slowing down experienced. Some idea for music playing (for example Flac or Mp3): Can be good a LOOP option in the Play command. If I play a single file it can start from beginning when ended. If I play a directory start playing first file after the last ended. And I don’t know if there is a possibility to make PLAY REWIND n /PLAY FORWARD n for example to go forward or backward n seconds in the actually playing file. G@bor |
||||
| toml_12953 Guru Joined: 13/02/2015 Location: United StatesPosts: 637 |
The first . character in the filename is treated as the start of the extension. If there is already an extension defined then .bas isn't added. This won't be changing If I want to load a program in the directory above the current directory, then LOAD "..\progname" doesn't work. I have to do this: LOAD "..\progname.bas" The manual should mention that the automatic BAS extension only works for programs in the current directory. Edited 2026-05-16 12:58 by toml_12953 |
||||
TassyJim![]() Guru Joined: 07/08/2011 Location: AustraliaPosts: 6529 |
are you on the latest firmware level? I am running a 7530 AX on V8.2 and a 7490 on whatever the latest is for that ancient device. Both are firmware versions for Australia not Europe. With the 7490 and webmite 2040 versions I continually could only connect every second attempt. With the AP on a different device and the DHCP server on the Fritz, things works correctly so I assumed that the 'problem' is with the WiFI itself and not the DHCP server. Now with the 7530, and both 2040 and 2350 webmites, I can connect every time. I haven't found the need to try Peters suggested settings. I am not sure when the fail every second connect problem went away for me. I also found that keeping the CPU speed below ~230MHz made the 2040 very reliable. Running for months at a time and only shut down for software changes. I haven't tested the 7350 for speed reliability yet. Jim VK7JH MMedit |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 490 |
@Jim, thanks for the info. I will try to force a Webmite to connect directly to the Box and not via one of my accesspoints. And yes, I also assume it's not the DHCP as the issue is even when no DHCP (full specification of option wifi) is or should be involved. Specifying the country code in option wifi didn't change anything in the connect behavior but the connection loss issue seems to be gone now. There are certainly area specific differences in the WIFI implementation bebause of regulation reasons. But I always assumed that AVM did it particularly right for Germany/Austria as the regulations are very similar. Maybe this strict adherence is the reason. OTOH the ESP32 stack does not show such issues. Anyway, IMHO if the initial connect error could be trapped in MMBasic, things could be handled easier. Maybe Peter can change this. Gerald 73 de OE1HGA, Gerald |
||||
| The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2026 |