The long-awaited USB-CDC terminal driver for RP2040 Pi Pico is up and running and ready for initial testing before release: https://mecrisp.sourceforge.net/usb-rp2040.txt If you feel adventurous, please try it and report back. Matthias
They differ in their memory access capabilities. j1-universal-16kb.v: There are data paths for the two topmost elements of the data stack, so there is "memory write and one drop" + "another drop" necessary to do the effects of "!". j1-universal-16kb-quickstore.v: There are data paths for the three topmost elements of the data stack, allowing to do a memory write and two drops for "!" in one cycle. The first two differ in their stack implementations only. Their memory access model is fine for pseudo-dualport...
Hi Igor, division and modulo are tricky to do on the stack machine, involving a lot of stack shuffling, and that eats away cycles. Also the do ... loop needs more cycles than on ARM, because only the top of return stack is accessible directly, so running "j" and "loop" requires some shuffling also. Unfortunately, single-cycle division and modulo is quite heavy in logic, so its not included for default, but there are six to eight opcodes free (depending on core) which you can use to add these instructions....
Hi Aaron, looks as if you are missing build dependencies. To compile and synthesise, Mecrisp-Ice needs GForth, the Freepascal Compiler, and the oss-cad-suite for the FPGA flow one can download from here: https://github.com/YosysHQ/oss-cad-suite-build/releases Matthias
Hi John, pin 2 should be the RX pin on the Pi Pico, and when unconnected, its ok for it to be stuck as it is not driven. Try swapping RX and TX wires! Thats one of the most common problems to encounter at the beginning. The pins are current-limited these days and survive being swapped. Matthias
Hi David, good ideas, you are that close! Both UARTs share the same clock source, clk_peri, which is already up and running when using Forth, and all peripherals are out of reset after the clock init code, so you can focus on the UART registers, and the special functions for the pins. In terminal.s for the RP2040, thats these lines: UART_Baudrate: ldr r0, =UART0_BASE movs r1, #UART0_IBAUD str r1, [r0, #UARTIBRD] movs r1, #UART0_FBAUD str r1, [r0, #UARTFBRD] movs r1, #UART_8N1 | UART_FIFO str r1,...
Hi David, nice to read that you and Forth found each other again! For a first quick idea, have a look at the file mecrisp-stellaris-3.0.1/mecrisp-stellaris-source/rp2040-ra/terminal.s which initialises the default UART. The pin configuration registers of the Pi Pico are a bit special. When something does not work, it is most of the time caused by a missing clock, or special functions of the pins not set to the peripheral ones wishes to see there. Good night, Matthias
The design uses HDMI video out and USB lines directly connected to the FPGA, which is not the same as HUB75 attached LED panels and ethernet on the Colorlight, and it will require porting effort until you get a nice terminal on your blazingly bright LED wall :-) The other board has HDMI on the breakout maybe? The FemtoMSP430 processor core itself should be quite independent regarding the actual FPGA, just like the FemtoRV32. By the way... Unless you are a big fan of the MSP430 instruction set, make...