Release: CRT, reset, networking, bluetooth
Here is the new release of zeST, mostly with fixes to make life better.
Scan doubler rework
The scan doubler has received particular attention for this new release. Indeed, a large part of its logic has been rewritten.
This module is one of the first implemented in zeST, even before I got the TOS system to boot. It was already there when I displayed my first image out of the Atari ST logic on a HDMI screen. At the time, and it’s still the case today, its purpose was to allow me to provide a display signal that the HDMI screen can handle. Old PAL/NTSC cathodic-ray tubes (CRT) screens had a horizontal refresh rate of 15.6 kHz, which many modern screens do not support. The scan doubler’s work is to “memorise” the pixels of 15.6 kHz scanlines and output two 31.2 kHz scanlines containing the same pixels, but transmitted twice as fast. Such horizontal frequencies are much more likely to be supported by modern monitors. This technique has been around for a long time, since it was already used in PAL/NTSC to VGA converters. It is also used in modern PAL/NTSC HDMI adapters such as the OSSC for instance.
One major change in the new version of the scan doubler is that it now proposes CRT emulation. Instead of just displaying two identical scanlines, which was the only available mode until now, now it allows to insert “intermediate lines” between “normal lines". Those intermediate lines tend to mimic the behaviour of our old CRTs on which we could see darker space between scanlines. This way the pixels appear to be less blocky, and their appearance is closer to the original.
You can see the difference below: first is the original “VGA” (double scanlines) mode, and then is the CRT emulation mode.
Also, the rewrite was the occasion for a bit of optimisation. I recovered quite a deal of logic resources, that will be quite useful for future zeST improvements.
Reset
In short: reset now works as intended! Warm reset really corresponds to pushing the reset button on the ST, and cold reset really completely resets the ST, just as it were turned off then on again.
A different set of fixes were able to solve both cases. You can now choose between watching reset demos or cold rebooting without any issue.
Overlay file system
On the Zynq board, part of zeST runs as software on the Arm cores of the chip. These are the non-critical parts that do not require to be cycle exact, such as disk emulation, keyboard, mouse, or the user interface. This code runs on an embedded Linux system that is very useful for peripheral access (SD card, USB, ethernet…).
The Linux file system is a ramdisk, whose contents is loaded on boot from the rootfs.ub
file on the SD card.
The problem when using a ramdisk is that you can modify files inside it, but the changes will be lost on next boot.
If you decide to configure some peripherals, the root account, everything is lost on next boot.
I have found the solution to use Linux’s overlay file system: this is a way to map a directory on top of another and merge the contents of both. The way I use it is that zeST creates an overlay binary disk image on the SD card (if it does not exist already), create a Linux-compatible file system on it, then overlay some of its directories on top of the ram disk. If the binary file is lost or corrupted, just booting without the file will reset the system to its original status and another overlay binary file will be created.
Now a set of system directories (/etc
,/var
and /root
) use that overlay system, and any changes done in these directories or any of their subdirectories are now permanent.
This will be useful for the other Linux-side improvements I describe below.
Networking support
Thanks to the overlay system I described above, now you can set up a network access for your zeST board. This is useful to copy files between your PC and the board, control the execution of zeST and so. It was already possible to be done using an USB cable and a terminal emulator, now networking makes it much easier and faster.
So far, networking only works using Ethernet. I have spent countless hours trying to get network working using a USB Wi-Fi device. Somehow I had no success in my attempts, this is why zeST currently has no support for wlan devices.
The current documentation already describes how to manipulate zeST from the Linux side, but for now it’s only using a USB serial connection. I will update it soon, to explain how to use Ethernet. But I’m sure most of you know how to get it working already!
Basic bluetooth support
The Linux system has basic support for bluetooth. That means, you can connect devices such as a keyboard, a mouse or a game controller if you’re using a USB bluetooth dongle. Thanks to the new overlay system, any device configuration becomes permanent between reboots.
I call this support “basic” because there is no user interface for the moment.
You’ll have to use the command line (through serial or Ethernet) and get used to the bluetoothctl
command line tool.
There are plenty of tutorials available on the internet, such as
this one
or that one.
Additional changes
Besides a few bug fixes, there have been minor changes.
Display brightness
Colour scaling has been changed: instead of inserting zeros when converting from 9-bit to 24-bit colour spaces,
now zeST performs colour interpolation so the full 24-bit range is used.
If you know about colour encoding, typically the white colour really is the #ffffff
white, while it was the #e0e0e0
light grey before.
Default ROM
The default EmuTOS ROM file is no longer distributed in the zeST archive. Instead, it has been placed on the Linux filesystem. The reason is to make sure there is always a ROM file available if loading the user-provided ROM fails for a reason or another. So instead of getting a black screen you can still boot and get some input.
That’s all folks!
Thank you for reading this release report.
As usual, download and installation instructions are available on the getting started page.
Comments
With an account on the Fediverse or Mastodon, you can respond to this post. Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one. Known non-private replies are displayed below.