Konilo Hardware Project Arland & I would like to eventually have a computer running our Forth system with as few intermediate layers as possible. This will be a lengthy project, in part due to a lack of real experience with hardware designs. We are hoping in the short term to make use of existing designs. Longer term, Arland wants to learn enough to create a dedicated CPU for the ilo & arks instruction sets, and have a fully custom system. We are running Konilo initially, and later plan to support Arland's ARKS system as well. Basic Requirements The ilo design calls for: * 64kw of RAM (262,144 bytes) * 32 words of data stack (128 bytes) * 256 words of address stack (1,024 bytes) * IP, SP, RP registers (12 bytes) * Serial or keyboard input * Serial or text display for output Optionally: * a bitmap display (via the graphica extension) * a pointing device (via the pointer extension) Additional memory will be needed for a display (if not using serial i/o), and possibly emulated devices. I've found that it runs fine under host operating systems with around 384k of actual RAM. ARKS basically doubles the memory usage. Target Hardware We've evaluated a number of boards. RP2040 (Raspberry Pi Pico) We like this, but it's a lttle too light on RAM for our needs. We are looking at using it, with a reduced memory version of ilo, as a controller for a keyboard & mouse. Lilygo TTGO VGA Controller This is a nice little ESP32 board with PS2 keyboard & mouse, VGA output, an SD card slot, audio, and onboard wifi. It has 520 kB of RAM, which is enough for ilo, but light for ARKS. We are currently evaluating using this for I/O purposes. Teensy4.1 This is an ARM board with 1MB RAM, 55 I/O pins, an SD card, and support for serial, ethernet, and USB host. Additional SRAM can be soldered to add more RAM. We have a working ilo system running on this. We still need to implement non-serial keyboard & display, but are working on this. (We'll be using a 320x240 bitmap display for the non-serial build) This is currently my primary target. As noted, we are looking at using other systems for I/O purposes, but have not yet (June 2024) made any final decisions on this aspect. Rapsberry Pi We have a RPi 0 and an RPi 3. Running a small Linux install and using a framebuffer for the display, Konilo is working on this. It's not my preferred option. While easy to setup, I dislike needing a full OS under my code, and have not been able to pursue a native system on this yet. Others There are a variety of other possible boards we could use. The Milk-V DUO S is a RISC-V system which might be usable. I'm interested in this, but have not yet obtained one. The Ox64 boards from Pine64 also look interesting. GeDaMo has suggested looking at PIC32, which does have some through hole variations. This looks to be a MIPS architecture and may be useful for a display/io controller? The largest of the DIP packages seems to have 256KB RAM, which I think is enough to the 720x720 resolution Arland would like to use for his clamshell model. Form Factor We are currently working towards three models. The first is a small system, with a port for serial I/O, slots for memory cards for the rom & blocks, a power switch, and USB-C input for power. We also plan to expose at least some I/O pins. The second is a slab, similar to the Cambridge Z88, TRS-80 Model 100, or Amstrad NC 100. This is expected to be around the size of a sheet of A4 paper, and probably around 1" - 1.25" thick. It'll have an integral keyboard, a visual display, and the same card slots for storage. It may also have an audio jack or a small speaker, and will have an internal battery. We are aiming to have this provide at least 24 hours of usage on a charge. The third model is a more traditional clamshell. It'll be based on the slab design, but we are hoping to use a higher resolution display in this model. Arland intends for this model to fully support his ARKS system. Software The computer will run Konilo. The basic environment is complete, and has been in daily use for over a year. I am continuing to write programs (mostly for my own use), and Arland has also written few. He intends to do more with this once the graphics support is complete. Recognizing that non-programmers might find this useful, we are discussing writing interfaces that would allow using it without directly interacting with the Forth listener. (Two text based program launchers have been written, but Arland is considering writing something that make use of the graphical abilities for this). Interacting With The World I'm not overly concerned with this. Our current plan is to eventually provide a limited ethernet or wifi access. For me, I think it'll mostly be small periods of connectivity where I send off messages, receive bundles of things, and then disconnect. We do not plan to support always on internet connectivity. But: we are interested in low power local mesh networks between devices. This is likely to be used w/embedded systems (a separate topic) that our main computers can interact with as needed. Timeline Two prototypes have been built. We have constructed one slab style unit out of wood, cardboard, a Raspberry Pi 3, an LCD, batteries, and a USB keyboard. It's been used a little, but is quite flimsy and is falling apart. I also have a system running on a Teensy 4.1. This doesn't yet have an enclosure, and has various bits loosely attached. In the summer of 2024 I'm trying to complete the initial serial based Teensy build (along with a serial + ps/2 + vga device using the TTGO VGA CONTROLLER). I'm also sourcing the components for the first full slab build. We are going to try to have two of the slabs complete by the end of 2024, and want to start building the more complex clamshell devices in early 2025. Beyond this, if we stick with the process of using the Teensy as a core, the board design is open, so we might be able to design custom boards adding in whatever additional components are used. Discussions on this are ongoing. Once we have functional systems, we do plan to produce a number of them for our use and backup purposes. Arland is interested in potentially offering them for sale if there's interest in them.