Hello.
As promised in the immediately preceding community update, here is the first Crosstalk dev log.
Earlier this week, I got a SystemVerilog-described 8086-compatible CPU running, but I don't have any interesting programs for it. 16-bit real mode was something I didn't particularly feel like doing, so I just had it print the standard "hello, world" and do some basic arithmetic. The obvious next step for me was 32-bit protected mode with paging, which means that ...:
Crosstalk can now simulate an i386-compatible processor without any external dependencies. I've been working on this one for a while, and now it's in a presentable state. The processor, described in SystemVerilog, is able to run software supported by the original architecture. You can write programs for it, including shells, trackers, games, or operating systems.
I wanted to see if my kernel project would run on it, so I gave it a shot. Below are the results from three different perspectives, with the final perspective being Crosstalk itself (video coming after full integration into Crosstalk's game modes and FPGA placement logic):
This is the kernel booting into my shell within a popular open-source emulator
The shell supports basic commands and has its own filesystem, keyboard, CGA, FDC and IDE driver, rudimentary graphics, and bidirectional serial comms
Simply, in this context, emulation works by translating instructions of one architecture to those of another. If you ever played a gaming console-only game on a PC or developed for a mobile device and tested using an associated emulator, then you experienced emulation.
Physical hardware, like this Compaq Portable 386/87 (20MHz), decodes and executes instructions natively on its 80386 processor. At boot time, the bootloader loads the kernel from a diskette into system memory.
The kernel runs on an original Portable 386. The bar is an artifact of misaligned phases of a camera's shutter and the gas plasma display's scan
Another look at the machine to show its wide but surprisingly friendly body. They made them different back then
If you'd like to see some more Portable content involving this kernel:
Crosstalk was able to simulate the i386-compatible edge-by-edge and run my kernel inside:
Pstart: 00000000 end: 00000000
����������������������������������������
mem: 00000800KiB total, 000005D4KiB free
DANGLING512 booting...
CTX init'd!
straw frame at: 0002B000
ctx[00025004] spawned with CS: 00000008
******************************************************
DANGLING512 r0.2.8 - 512KiB (of which 508KiB usable)
******************************************************
00000008
entering ctx0 via IRET...
dropping into awwBRN...
type "help" for cmds!
aww #
screen; cycle: 14000000
|mem: 00000800KiB total, 000005D4KiB free
|DANGLING512 booting...
|0002500400025000CTX init'd!
|straw frame at: 0002B000
|ctx[00025004] spawned with CS: 00000008
|
|******************************************************
|DANGLING512 r0.2.8 - 512KiB (of which 508KiB usable)
|******************************************************
|
|00000008
|entering ctx0 via IRET...
|
|
|dropping into awwBRN...
|type "help" for cmds!
|
|aww #
|
|
|
|
|
|
| 000005D4KiB
run done; cycles: 14000000; loc: 2CE70
It can also execute shell commands:
|aww # sysinfo
|
|******************************************************
|DANGLING512 r0.2.8 - 512KiB (of which 508KiB usable)
|******************************************************
|
|a *DanglingPtr (Simon Slamka) kernel
|aww # 000005D4KiB
run done; cycles: 14000000; loc: 2CE70
My Crosstalk time is split between testing and bug-fixing of the city-builder side of Crosstalk and this. In-game FPGA support is next, at which point I am going to record a video of SystemVerilog being taken from text inserted by a human to a running program. The plan is to take some input, process it, and then output a control signal. It's most likely going to be a lever switch controlling an LED via an FPGA as a simple demonstration, with something more complex coming later (I am thinking a sound synthesizer).
If you'd like to stay tuned, then please join the Discord and wishlist the game:
Thank you!
*DanglingPtr