i have the version 1.7.4 for AT commands. and also the esp-link for the serial bridge and bluetooth managements. i have not tried yet the connections https with this one. now i'm working with a file system manager for scamp3e. if you want to check, the url for esp-link is: https://aceindy.github.io/esp-link/ the link doesn't works on safari browser.
i have the version 1.7.4 for AT commands. and also the esp-link for the serial bridge and bluetooth managements. i have not tried yet the connections https with this one. now i'm working with a file system manager for scamp3e. if you want to check, the url for esp-link is: https://aceindy.github.io/esp-link/
Pere, Have you ever updated the ESP01's firmware to the latest version? If so, could you give me the URL where I can download it? I'll try to establish a secure connection. Cheers, Jan
It should work using the debugger USB port (unless you cut some connections on the board). Did you check the instructions in the board User Guide about the serial CDC connection.
@oh2aun Hi Mikael, thank you for your advice. I have modified p18fxxk42.inc as suggested. But I still cannot get the OK prompt using the following combination connecting a PC. 1. debugger USB port 2. RC2 / RC3 connected to a USB FT232 (RX/TX/GND); power from the debugger USB 3. RB0 / RB3 connected to a USB FT232 (RX/TX/GND); power from the debugger USB 4. RD0 / RD1 connected to a USB FT232 (RX/TX/GND); power from the debugger USB
These config changes could work. I do not have the board. // Define if USB or which UART is used for the operator task // 0=USB 1=UART1 2=UART2 3=UART3 #define OPERATOR_UART 2 #define WANT_UART2 ENABLE // ENABLE or DISABLE CONFIG FEXTOSC = OFF CONFIG RSTOSC = HFINTOSC_64MHZ CONFIG BOREN = ON CONFIG BORV = VBOR_2P85 ; Define UART2 TX pin #if WANT_UART2 == ENABLE #define TX2_TRIS TRISD #define TX2_ANSEL ANSELD #define TX2_BIT 0 #define TX2_PPS RD0PPS #define TX2_LAT LATD #define TX2_CODE 0x16 ; Define...
Do you have a problem ? At least the UART pins have to be configured to match the nano board design. Have you done that ?
Had anybody compiled and run successfully using the curiosity nano PIC18F47K42 board ?
John has made a small copy-paste error in the USB descriptor. I asked him to fix it.
Hi Mikael, John has updated the scamp firmware and I've just tried it, but unfortunately the USB problem on windows persists. Regards, Stefan.
Great, thanks Mikael.
PIC24: In endpoint size 8 for Windows
Yes, there seems to be a problem with windows. It refuses to handle different sizes of in(16) and out(8) end points. Works fine on Linux and I suppose on OSX since John is an Apple guy. I will update the end points to be the same size.
Hi, I've updated my scamp boards with the latest Udamonic firmware, but Windows 10/11 is unable to detect the USB-CDC and returns Unknown USB Device (Invalid configuration descriptor). Rolling back to the previous Scamp3 release works fine. I have no trouble running the latest version firmware on Linux. Could this be a windows-only issue with the latest FlashForth release?
Hi, I've updated my scamp boards with the latest Udamonic firmware, but Windows 10/11 is unable to detect the USB-CDC and returns Unknown USB Device (Invalid configuration descriptor). Rolling back to the previous Scamp3 release works fine. I have no trouble running the previous version firmware on Windows. Could this be an issue with the latest FlashForth release?
I have checked every word en the stack behavior is as it should. In my test program the stack is in balance!
I have checked every word en the stack behavior is as it should. In my test program the stack is in balance!
Is your data stack balanced? Does it grow or shrink?
Using the code below, I'm trying to connect an MCU6050 to the Scamp3. At first, the code seems to work. The I2C clock speed is reduced. But after reading the sensor a few times, the program hangs, or the I2C is broken. With the test program, I call the MCU, delete the result, and print a dot. But after calling the program about 15 times, the program stops. I've also written test code for the Arduino Uno, and it runs perfectly, without the system hanging. Include also the basic procedure arduino to...
PIC18: terminal in background task
i tried yesterday but not communication with METAR. NEITHER inmanual mode. i think that firmware 1.7.4 doesnt allow the https protocol.next week i will check if the esp-link firmware allow me the protocol. another solution is to flash a personal software via arduino ide, to setup the wifi and send the data to serial,port. But you need C code. and im not sure is it works.
I have a 1 MB version AT+GMR AT version:1.7.4.0(Jul 8 2020 15:53:04) SDK version:3.0.5-dev(52383f9) compile time:Aug 28 2020 14:37:33 But after testing some commands I dont have the posiblity to connect with fftps. Do you have wordked woth fftps, or upgrading the firmware? An other solution is to flash a simple arduino code into it, and when it receiveices a "1" it gives back the data of the ISS, and for example if it receive a "2" it gives back the METAR data. On this moment I stock in the further...
ohh I will try soon. its a kind of forget for testing words....
PIC24: transient workaround
I though about a solution to make older versions of FF to work with the transient feature. Here the transient words are located below the $8000 flash real address. : transient ( size -- ) flash latest @ align here >r >r ( size ) aligned $8000 pfl + swap - dp ! latest @ , here $2081 , latest ! r> , r> , ram ;
I though about a solution to make older version of FF to work with the transient feature. There the transient words are located below the $8000 flash real address. : transient ( size -- ) flash latest @ align here >r >r ( size ) aligned $8000 pfl + swap - dp ! latest @ , here $2081 , latest ! r> , r> , ram ;
after some investigation it seems that esp01 doesnt support https. you will need a model with at less 1 or 2 MB. maybe you can chaeck with the firmware esp-link.
these days im on relax days , south of France, until next wednesday. then i will check your code. regarding esp01 firmware there are differents versions. I use version 1.74, uploaded with esptools , also the esp-link is available and programmable as ap sta or both.
these days im on relax days , south of France, until next wednesday. then i will check your code. regarding esp01 firmware there are differents versions. I use version 1.74, uploaded with arduino IDE , also the esp-link is available and programmable as ap sta or both.
Hello Pere, I found out that my ESP01 is not able to handle https, a lot of things I have planned are not working, when calling, for example for METAR data the http connection is redirected to https. Is there a way to flash other software on the esp01 to get it working, or should I switch to the ESP32? This is my METAR call: : metar ( --- ) s' AT+CIPSTART="TCP","aviationweather.gov",80' sendcommand 3000 ms s' AT+CIPSEND=99' sendcommand 500 ms s' GET /api/data/metar?ids=EHRD&format=json HTTP/1.1'...
I have got time to try but, not working. but yor solution 1 day ago with abort is good option for me. i checked and is going quit well, even you can send messages from one to another. thank you a lot for all your help.. the echo in putty terminal is because i forgot remove the echo in setup
I have got time to try but, not working. but yor solution 1 day ago with abort is good option for me. i checked and is going quit well, even you can send messages from one to another. thank you a lot for all your help..
i tried in a very similar way and also not working. i find a code that if a i write code in term and enter nothing but when i write code in wifi and enter then execute the term and when do enter in term then execute in wifi.......? after that in becomes little crazy. i have some new idea, but i can't try until tomorrow.....maybe not possible....
I tried a few hours to get the background io-switch to work, but it did not want to. Giving the >terminal or >wifi from the currently active port works. Giving a command to the BG task to make switch using a global variable works. But not with rx1? and rxu? . -wifi marker -wifi : to-wifi ['] rx1 operator 'key his ! ['] rx1? operator 'key? his ! ['] tx1 operator 'emit his ! ; : to-term ['] rxu operator 'key his ! ['] rxu? operator 'key? his ! ['] txu operator 'emit his ! ; 0 40 40 0 task: io-switch-task...
I tested a bit the background interpreter that uses ABORT. It seems to work quite well, except for the multitasking words which are hard coded to only run from the operator task. These are TASK: TINIT SINGLE END RUN TASKS. Hopefully all other words can be executed in the background and operator tasks in the interpretation state. When compiling new definitions or appending data to the dictionary only one of the terminal at a time can be used. There is only one dictionary so if two tasks write to it...
In my projects, I use the ESP01 in two different modes: 1. Transparent mode. Basically, I use the ESP-Link firmware and use the ESP01 without AT commands, as if it were any UART. I explain this in the Udamonic group. 2. AT mode. With AT firmware, as is the case with the ISS. To preprogram it, I use the TERM program (see attached photo). You can find it in Udamonic, in the serial communications section. Once TERM is running, I enter the commands: AT --> OK AT+CIPMODE=1 --> OK AT+CIPMUX=0 --> OK AT+CWJAP="router","pasw"...
In my projects, I use the ESP01 in two different modes: 1. Transparent mode. Basically, I use the ESP-Link firmware and use the ESP01 without AT commands, as if it were any UART. I explain this in the Udamonic group. 2. AT mode. With AT firmware, as is the case with the ISS. To preprogram it, I use the TERM program (see attached photo). You can find it in Udamonic, in the serial communications section. Once TERM is running, I enter the commands: AT --> OK AT+CIPMODE=1 --> OK AT+CIPMUX=0 --> OK AT+CWJAP="router","pasw"...
Hello Pere, What is this "I have the esp01 already preprogrammed to connect to my router" I'm very curious to know what and how you did that! Maybe I can learn something from that. And why is it important to set the baud rate to 9600 baud? Cheers Jab
I find it hard to understand what you mean by 'control' ? Control of the interpreter in the operator task ? You can do that without any BG tasks. Just use your >terminal and >wifi in the operator task as you have already defined. THANKS FOR THE HELP. YOU ARE RIGTH, but with my words when i do >wifi i can work with a putty terminal in uart1 but... the teratem in serial,port stops. the only way to start it again is do >terminal from uart1, but then putty terminal in uart1 stops. my goal was use both...
What about this ? It would automatically switch the operator task to the I/O that sends in characters. Not tested. : >wifi ['] rx1 operator 'key his ! ['] rx1? operator 'key? his ! ['] tx1 operator 'emit his ! ; : >terminal ['] rxu operator 'key his ! ['] rxu? operator 'key? his ! ['] txu operator 'emit his ! ; 0 40 40 0 task: io-switch-task \ TODO: implement TERMINAL? and WIFI? : io-switch begin pause rx1? terminal? and if >wifi then rxu? wifi? and if >terminal then again ; : run-io-switch ['] io-switch...
I find it hard to understand what you mean by 'control' ? Control of the interpreter in the operator task ? You can do that without any BG tasks. Just use your >terminal and >wifi in the operator task as you have already defined. This is how to switch the I/O of the operator task from any task. : >terminal ['] rxu operator 'key his ! ['] rxu? operator 'key? his ! ['] txu operator 'emit his ! ; : >wifi ['] rx1 operator 'key his ! ['] rx1? operator 'key? his ! ['] tx1 operator 'emit his ! ;
With the word HIS you can access the user variables of a specific task.
hello Mikael. after see your links, I have changed my code, as showed in the file attached. it works very well, but with some limitations. I'd like it if you could help me with my initial idea: If I type >wifi from the serial terminal, control of the scamp goes to the wifi terminal, and if I type >terminal from the wifi terminal, control goes to the serial terminal. It works like a charm. So, how could I create a background task that would do this automatically, with two tasks that would pass control...
I think that if you do not compile simultaneously in the tasks, there is actually a chance that using the interpreter works just fine. You could try putting just ABORT in the end of the BG task. it will enter the infinite QUIT loop that drives the interpreter.
I think that if you do not compile simultaneously in the tasks, there is actually a chance that using the interpreter works just fine.
thanks for the information, i will read it. anyway, in this case the interpret command is working in bg, i will check in depth next days. also i will try the correct size of stacks and i will check the correct quantity of pauses and position
Regarding PAUSE it is only needed before RX1? because RX1? itself does not call PAUSE. RX1, RXU, TX1, TXU will call PAUSE so there will be enough PAUSES. A certain amount is needed for the USB interface not to freeze, because PAUSE is also driving the basic USB state machine. Making RXn? call PAUSE is actually a change that should be done, because there has been many questions about this earlier.
Regarding PAUSE it is only needed before RX1? because RX1? itself does not call PAUSE. RX1, RXU, TX1, TXU will call PAUSE so there will be enough PAUSES. A certain amount is needed for the USB interface not to freeze, because PAUSE is also driving the basic USB state machine. Making RXn? call PAUSE is actually a change that should be done.
Regarding PAUSE it is only needed before RX1? because RX1? itself does not call PAUSE. RX1, RXU, TX1, TXU will call PAUSE so there will be enough PAUSES. A certain amount is needed for the USB interface not to freeze, because PAUSE is also driving the basic USB state machine.
Hi, FlashForth has a limitation that INTERPRET, EVALUATE, and QUIT does not work in a background task. I don't remember exactly why. They may work, but can not be relied on to work fully because the interpreter is not re-entrant. It uses global variables and flags for many things so the operator task and the background task will interfere with each other. Have a look at https://sourceforge.net/p/flashforth/code/ci/master/tree/forth/task-bgio.fs and its comments. There you can see how to use KEY with...
I've been programming the code in the photo for some time without any success. - Sometimes data was displayed in the PUTY terminal, but I couldn't enter data. I could only input it from the serial terminal, but then I couldn't see what I typed. - Sometimes PUTY would work, but the serial terminal would freeze. Suddenly, it occurred to me that some process was blocking the program and it was stuck in an endless loop. So, I started pressing PAUSE in all the places that seemed critical, and... Eureka,...
Hello Jan i have posted my version of the iss code for scamp3e in the udamonic group page. it works very well, you can see the pictures there. the only think to have in mind is that I have the esp01 already preprogrammed to connect to my router and , very important, working at 9600 bauds.
The fix has been published. Henceforth RCALL, can only be used with 16-bit unsigned offsets that are always used as a backwards relative reference. This is also the case for normal FF code.
PIC24: negative rel.addr > 7ffe fix
I have a fix for the RCALL problem and will release it soon.
Can this issue be fixed and if so will it be fixed in a next release of FF for PIC24?
Can this issue be fixed and if so will it be fixed in a next release of FF?
thanks for the information.
There seems to be a serious bug in FlashForth for PIC24. Any code compiled at an absolute flash address greater than $8000 ($8000 + PFL virtual address) in the) can be corrupt. I guess this has not surfaced earlier because no-one has made so large programs. The transient code is compiled to the end of flash, so the problem appears. The problem is in the calculation of the negative RCALL offset address when the offset is greater than $8000. The PIC18 and Atmega does not have the problem because it...
The seems to be a serious bug in FlashForth for PIC24. Any code compiled at an absolute flash address greater than $8000 ($8000 + PFL virtual address) in the) can be corrupt. I guess this has not surfaced earlier because no-one has made so large programs. The transient code is compiled to the end of flash, so the problem appears. The problem is in the calculation of the negative RCALL offset address when the offset is greater than $8000. The PIC18 and Atmega should not have the problem because it...
i made: : test 1 1 + . ; $100 transient : test1 ." this is a transient word" ; permanent : test2 ." this is a permanent word" ; Then words----> i saw test1 ,blank blank test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1, lank blank test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset...
i made: : test 1 1 + . ; $100 transient : test1 ." this is a transient word" ; permanent : test2 ." this is a permanent word" ; Then words----> i saw test1 , test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1, test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working...
i made: : test 1 1 + . ; $100 transient : test1 ." this is a transient word" ; permanent : test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad....
i made: : test 1 1 + . ; $100 transient : test1 ." this is a transient word" ; permanent : test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad....
i made: : test 1 1 + . ; $100 transient : test1 ." this is a transient word" ; permanent : test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad....
i made: test 1 1 + . ; $100 transient test1 ." this is a transient word" ; permanent test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad. a lot...
i made: test 1 1 + . ; $100 transient test1 ." this is a transient word" ; permanent test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad. a lot...
i made: test 1 1 + . ; $100 transient test1 ." this is a transient word" ; permanent test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad. a lot...
i made: test 1 1 + . ; $100 transient test1 ." this is a transient word" ; permanent test2 ." this is a permanent word" ; Then words----> i saw test1 test2 test3 test1 ---> ok test2 ---> ok test3 ---> ok discard words---> i saw again all words. i ran tes1 --->ok test2---> system crash reset and try again all---> all workig well only the words---> test1 test3, not contiguos. reset and try again all---> now all seem ok but after run test 3, the system crash again . reset but system working bad. a lot...
Hard to say. At least the area reserved by TRANSIENT must be large enough to fit all the transient words. I have not used it myself except doing some simple tests. Those words manipulate LATEST which is a eeprom emulated variable, and it is cached in ram. There is a delayed update of ram to emulated eeprom in flash. Maybe there are some problems in that area, depending on execution timing of those words. The transient words were first developed on Atmega. It has real eeprom and it updates the eeprom...
Hard to say. At least the area reserved by TRANSIENT must be large enough to fit all the transient words. I have not used it myself except doing some simple tests. Those words manipulate LATEST which is a eeprom emulated variable, and it is cached in ram. There is delayed a update of ram to emulated eeprom in flash. Maybe there are some problems in that area, depending on execution timing of those words. The transient words were first developed on Atmega. It has real eeprom and it updates the eeprom...
I've been testing the transient.fs file you have in your ff code on SourceForge. I've had some problems with it on my SCAMP3E. Creating transient and permanent words, sometimes when I discard the transients, they still appear in the dictionary. Other times, my board has crashed, and once it got completely out of control and I had to use EMPTY to get it working again. Is it possible there's a code error using it in Scamp3, or is there something I should consider before using the code?
Hey Mikael! I succeeded to build block24 and edit on my Scamp3. VT100 terminal emulation on macOS with iTerm2 app [https://iterm2.com] seems to work :-) Now I have to get used to the editor/screen key-commands. Future steps: I have attached a 32 kByte eeprom (I2C interface) AT24C256. So room for 32 screens. The AT24C256 is read/write accessible via Pages of 64 bytes each.
OK. I'll try again on my Scamp3. (has to wait until this evening...)
The scamp3e is not needed specifically. The block/edit code works the same on any scamp board.
Up till now I used CoolTerm on macOS. In the future iTem2 on MacOS Will give it a try as soon as the Scamp3e board arrives. I'll let you know the result of course. Fred
Up till now I used CoolTerm on macOS. In the future iTem2 on MacOS Will give it a try as soon as the Scamp3e board arrives. Fred
Are you sure? All words are present on my scamp3e. You have to load the files core.fs case.fs vt100.fs yourself first. Then you can load block24.fs and edit.fs. There is a hint about it edit.fs and block24.fs. \ #sendm forth/core forth/case forth/vt100 xxxx/forth/block forth/edit sendm is the command in ff-shell.py for sending multiple files to the serial line. What terminal program are you using to send files to the FF serial line ?
Are you sure? All words are present on my scamp3e. You have to load the files core.fs case.fs vt100.fs yourself first. Then you can load block24.fs and edit.fs
Thank yoy Mikael. I tried block24.fs/edit.fs on my Scamp3. Unfortunately some words/definitions are not available on Scamp3 ☹
I'll give it a try :-)
I'm experimenting with some code you wrote in an earlier thread: evaluate ( caddr n -- ) 'source 2@ >r >r >in @ >r interpret r> >in ! r> r> 'source 2! ; ram create eval-buf 80 allot eval-line ( line-number -- ) \ evaluates a line of #64 characters line-addr 64 eval-buf place eval-buf c@+ evaluate ; load ( n -- ) \ load/interpret screen # from at24c256 get-screen# 16 for 15 r@ - eval-line \ ( interpret ) next ; N.B. get-screen# fetches 1024 bytes from my at24c256 eprom and writes that into a buffer...
I'm experimenting with some code you wrote in an earlier thread: evaluate ( caddr n -- ) 'source 2@ >r >r >in @ >r interpret r> >in ! r> r> 'source 2! ; ram create eval-buf #80 allot eval-line ( line-number -- ) \ evaluates a line of #64 characters line-addr 64 eval-buf place eval-buf c@+ evaluate ; load ( n -- ) \ load/interpret screen # from at24c256 get-screen# 16 for 15 r@ - eval-line \ ( interpret ) next ; N.B. get-screen# fetches 1024 bytes from my at24c256 eprom and writes that into a buffer...
I'm experimenting with some code you wrote in an earlier thread: evaluate ( caddr n -- ) 'source 2@ >r >r >in @ >r interpret r> >in ! r> r> 'source 2! ; ram create eval-buf #80 allot eval-line ( line-number -- ) \ evaluates a line of #64 characters line-addr 64 eval-buf place eval-buf c@+ evaluate ; load ( n -- ) \ load/interpret screen # from at24c256 get-screen# 16 for 15 r@ - eval-line \ ( interpret ) next ; N.B. get-screen# fetches 1024 bytes from my at24c256 eprom and writes that into a buffer...
I'm experimenting with some code you wrote in an earlier thread: evaluate ( caddr n -- ) 'source 2@ >r >r >in @ >r interpret r> >in ! r> r> 'source 2! ; ram create eval-buf #80 allot eval-line ( line-number -- ) \ evaluates a line of #64 characters line-addr #64 eval-buf place eval-buf c@+ evaluate ; load ( n -- ) \ load/interpret screen # from at24c256 get-screen#16 for 15 r@ - eval-line \ ( interpret ) next ; N.B. get-screen# fetches #1024 bytes from my at24c256 eprom and writes that into a buffer...
I published it. block.fs for PIC18 and Atmega, block24.fs for PIC24 and edit.fs. You can play with it, but it is experimental, so don't expect too much. The editor requires a VT100 capable terminal. Only tested with minicom on Linux.
ALL: Experimental block, editor
I have some initial code written, that works somehow. Don't exactly remember. I think there was problems with loading blocks in case an error is encountered. The interpreter aborts on a missing marker word and the loading is prevented, making marker unusable with blocks. Just tried to use it. It uses some special words, that I have since deleted from FF. Need to check what it was supposed to do.
im interested in use it if we can use the 2MB extra flash memory. in other case my idea is to create a text files save-load tool , to keep the programs saved in this extra memory.
@oh2aun In 2024 @ https://sourceforge.net/p/flashforth/discussion/726813/thread/34e8380adc/?limit=25#d286 you wrote: "I have prepared block words and a full screen block editor. I have not published it yet. It stores the blocks in flash, so it eats away from your free program memory unless you have a 128 KB or bigger flash in your PIC24 chip." With the release of the Scamp3e users get an extra 2M Dataflash: https://udamonic.com/what-is-a-scamp.html Thus the possibility appears to create a screen...