TOP
-
KCP53010 64-bit RISC-V processor core
-
640x480 MGIA for bitmapped monochrome video
-
1MB of program RAM, expandable to 8MB typ.
-
Mass storage TBD.
=== Repositories
Have been moved to the Mantle page,
where it better belongs.
Adding support for mouse involves
-
Add button down Gtk event handler to k2 (rose_event_mouse_btn_down)
-
Add button up Gtk event handler to k2 (rose_event_mouse_btn_up)
-
Add mouse motion event handler to k2 (rose_event_mouse_motion)
-
Add Mantle procedure to upcall mouse handler to k2
-
Add event interest flag for mouse events
-
DEMO APP: Tic-tac-toe
-
Draw initial playfield on program startup. Default player is X.
-
Implement drag and drop from stack of X/O card onto grid.
-
Draw current stack of X cards.
-
Draw current stack of O cards.
-
When user grabs an X/O card, track mouse motion on the screen.
-
When user releases a card over grid square, place it on grid and switch players.
-
Detect winning combination and declare winner
-
Add button to reset game back to starting condition.
-
Add button to exit program.
I'm considering a single mouse event that wraps everything up into the dword.
uint16_t x; // absolute!
uint16_t y;
uint16_t reserved;
uint8_t btnDownMask; // which buttons have been pressed since last report
uint8_t btnUpMask; // which buttons have been released since last report
This would allow for mice with up to eight buttons.
The Kestrel-2/EX is an out-growth of
the original and since defunct
Kestrel Computer Project.
After closing down the Kestrel Computer Project,
I still felt the need to build my own
homebrew computer and operating system
from scratch.
My most successful homebrew to date has been the original Kestrel-2,
which was publicly debuted in a SVFIG meeting.
However, the original Kestrel-2 was severely under-powered;
it would need a major upgrade to handle my preferred productivity software.
This lead to the development of the Kestrel-2DX.
The 2DX still lacked adequate resources, however.
If only it had more memory, a higher resolution display, and more stable storage.
I tried to couple PSRAM and other DRAM technologies
to the circuit without any success.
So, for several years, I let the idea languish.
Then, in 2025, I decided no more;
so I picked the project back up.
However,
this time,
I would work from a different perspective.
I would start with a software emulation of the ideal computer design.
This grants several advantages:
-
I (and, indeed, anyone else) can develop a useful set of software for the fantasy platform;
I'm no longer the bottleneck here.
-
I can explore different system software designs
to simplify the overall architecture before committing things to expensive hardware.
-
The emulator, being the least capable realization of the computer,
is a natural basis from which to judge compatibility when real hardware exists.
-
When real hardware is desired, I can explore different implementation techniques;
is CPU emulation better in FPGA or in microcontroller? How does mass storage work?
Etc. Similar to the IBM AS/400, I can change out just about the entire
hardware stack without the client software ever knowing what happened.
It would also come with expanded hardware resources as well.
While it retains the 64-bit processor core of the 2DX,
the memory is increased from 48KB to no less than 1MB.
Also, the display resolution has been increased to
640x480 (or, preferably, larger; the emulator lets you choose 800x600 or 1024x768 if you wish)
to take advantage of native (S)VGA display resolutions.
This expanded experiment thus defines the Kestrel-2/EX.
Originally called Kestrel-2/DX2, as it was my 2nd developer experiment.
Later renamed for easier naming in Git repositories.
-
Development platform for Mantle, an abstract kernel that serves as a kind of hardware abstraction layer for the remainder of the system.
-
Development platform for ROSE, a GEOS-like user interface.
-
Mantle and ROSE, combined, forms the 2EX's native operating system. In a sense, consider it STS Version 3.
-
Many limitations of the system are intentional.
-
1MB of RAM intended to force developers to remain conscious of resource utilization.
-
Monochrome graphics intended to force UI/UX developers to remain conscious of interface design limitations.