Recent submissions

Comment · 1 month ago
Did you pick some other video card besides CGA?
Comment · 2 months ago
Thanks. This should be fixed for Tandy 1000 now. On PCjr there is no backslash key, you have to type a backspace using alt + /, so I will need to define a macro that does that for you.

The Tandy 1000 will need its own OSD since the tandy keyboard differs from the Model F in significant ways. You'll notice that if you type shift-backslash on the current model-F based OSD you'll get a 7 instead of the expected |. Because backslash is on numpad 7 on the Tandy.

Dealing with this stuff is tons of fun

Comment · 2 months ago
feel free to fork MartyPC to build it for your Amiga
Comment · 2 months ago
yes, swipe up to show a keyboard. this currently only supports the 5150/5160 completely as it is a Model F keyboard and the Tandy/Jr have some differences.
Comment · 2 months ago
I need to know what keyboard layout you're using. If it is not a standard US keyboard it will need a mapping
Comment · 2 months ago
DOS has the 'keyb' utility and 'keyboard.sys' to support different layouts, using various code pages.

If you have a CGA card, you're stuck with the code page of the ROM your card came with, which in most cases was code page 437, although a few variants were made.

EGA/VGA had software fonts so other code pages could be loaded.

Comment · 2 months ago
great emulator and nice guy too. maybe i should ask him if i can use his HDD sounds
Comment · 2 months ago
they're planned at some point. I need to write a utility or custom controller rig with a pico that can step the head on an MFM drive in patterns i can record, then model stepping to cylinder in the hard disk controller.
Comment · 2 months ago
The PCjr also famously has no DMA, so things like floppy drive transfers are both extremely slow and somewhat unreliable - the IBM floppy controller is somewhat additionally weird is that they disable interrupts as well. The only way the PCjr knows what the controller is doing is by polling its status register, and there is enough ambiguity that it sets a 555 timer that will reset the FDC and start everything over if things time out.

The combination of these two decisions means its inadvisable to type while your floppy drive is transferring data

Comment · 2 months ago
I am not the OP of this post, but they're just using my github description. when I first wrote it, Rust was a novel choice for an emulator, and it helped people find examples of emulators written in Rust.

believe it or not I didn't tailor it for the HN meta

Comment · 2 months ago
It is indeed a Marty McFly reference. The original demo I was trying to run was called 8088 MPH and is full of Back to the Future references.

I was trying to Run Back To The Future, so I figured I'd call my emulator either Marty or McFly.

Unfortunately I found out about the FM Towns later, so I renamed it from Marty to MartyPC so you could google "MartyPC Emulator" properly.

Comment · 2 months ago
Yeah the OSD is only the Model F and the Tandy has some difference so the OSD keyboard may not work quite right with the Tandy.

I have to make all new pixel-art for a Tandy 1000 keyboard and PCjr keyboard. Fun

Comment · 2 months ago
I am very close to emulating the Covox - I emulate the Disney Sound Source, which is just a Covox with a FIFO
Comment · 2 months ago
People will generally get angry no matter what you do. People are also angry it is MIT licensed.

But honestly I wanted to learn the Rust programming language and I thought writing an emulator was a good a project to learn as any.

I have been working on a emulator in C++ in collaboration with a friend, it is also cycle-accurate. It is called XTCE-Blue.

Comment · 2 months ago
easy - the PCjr keyboard interface.

It is insane because IBM wanted a wireless keyboard. If you're not familiar with the PCjr keyboard, it has two IR transmitters (they are electrically the same, just having two gives you a better transmission path). The PCjr system has an IR receiver.

Now, a normal keyboard cable is a standard two-wire serial protocol with clock and data. Being wireless, you have no clock, so you have to synchronize clocks, or have clock recovery built into the protocol. The PCjr does the former, using the 8253 timer chip.

The keyboard has no way of knowing if the system has received a keystroke, so the system must receive every keystroke - they can't be stored in a fifo, they can't be resent if the CPU missed it.

This rules out the possibility of using system interrupts - so when you type a key on the CPU and the IR receiver gets the start bit - the NMI line is raised, the 8253 is programmed to time the clock bursts from the IR receiver, and the CPU reads out every bit of the scancode.

In software.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton