172 lines
6.2 KiB
Text
172 lines
6.2 KiB
Text
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.
|