Rendered at 12:48:21 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
Rygian 3 hours ago [-]
"The machine boots into BASIC" :-)
I was 8 or 9 years old when the ZX Spectrum +2 arrived home.
I'm seriously considering installing this on an old laptop and giving it to my son when he's 8 years old, together with a hard-copy of a BASIC reference and a few simple programs and games to type in.
Getting a FAT32 filesystem on day 1 is already a huge jump from my childhood experience (loading from tape).
StilesCrisis 1 hours ago [-]
As a parent who had a very similar experience growing up, I've tried putting BASIC in front of my young kids. It didn't work at all; the magic just isn't there anymore. If you've got an iPad, there's unfortunately no wonder in "I can make the computer do whatever I want". Also, kids know how modern computers are supposed to look and feel, and BASIC won't get them there.
Sorry.
raverbashing 41 minutes ago [-]
That sounds more like an opportunity to rethink how a new beginner language for modern computers should look like
(Maybe something more like Hypercard I guess - or something that renders to HTML)
roryirvine 4 hours ago [-]
Not FOSS? That's a real pity.
I learned to program on 8 bit micros, and created a rough boot-to-BASIC experiment ~15 years ago following the JeOS pattern. So this project sounds really exciting, but I'd be more interested if I weren't restricted to being a passive end user.
skrellm 44 minutes ago [-]
I agree, it's a shame it's not FOSS.
Besides UEFI, it has a Windows GDI port, but if it were FOSS one could add SDL backend for example and then one could compile it for Linux and Webassembly as well.
JoeAltmaier 2 days ago [-]
Very cool! The raw-metal boot part is impressive.
BASIC requires more support than you'd expect. Here's an interpreter, with a similarly long list of features it has to support:
This is a great project. How do you handle saving/loading data? You mentioned file operations but you need some sort of file system - perhaps FAT32 - to support that. I'd need that to consider using it on UEFI.
One thing you could use for more test cases is the book 101 BASIC Computers Games by David Ahl. Games always encouraged people to use computers and that's as classic as it gets!
WalterGR 2 days ago [-]
> How do you handle saving/loading data?
The linked page has this to say:
"Disk I/O — SAVE, LOAD, MERGE, FILES, KILL, running directly on the UEFI Simple File System."
Gorsefound 1 days ago [-]
That's right.
It uses UEFI's FAT32.
fuzzfactor 2 hours ago [-]
If you have a PC mainboard whose UEFI supports NTFS, does that filesystem work too?
skrellm 48 minutes ago [-]
> If you have a PC mainboard whose UEFI supports NTFS, does that filesystem work too?
Yes. The UEFI Simple Filesystem Protocol is transparent to the UEFI app. The protocol gives you open/read/write/close calls, without needing to know the underlying fs.
dlcarrier 2 days ago [-]
I learned to program on the Commodore 64 and in QBASIC in th 90's. I'll give it a try.
Considering how much it supports, if it could chainload a full operating system, it would make a great replacement for GRUB or rEFIt.
skrellm 29 minutes ago [-]
> it would make a great replacement for GRUB or rEFIt.
What's wrong with those bootloaders? Maybe try syslinux?
Gorsefound 1 days ago [-]
That's an interesting idea. :-)
polaris64 5 hours ago [-]
I really like this! I started a personal project a long time ago to boot a Raspberry PI into an environment like this, the idea being to bring back the good old days of the ZX Spectrum, Amstrad CPC, Commodore 64, etc. I had to abandon the project but seeing this makes me want to resurrect it.
This is great! Allowing anyone to program like it is the 1980s and bring them back to their hardware somewhat. I think it will also find it's way to the permacomputing crowd since UEFI is so ubiquitous these days it may be a good platform for that can offer modern features with a understandable interface.
saidnooneever 1 hours ago [-]
this is actually a really cool project been thinking of something like this ever since i saw a dudes Pascal (amd64) uefi loader and OS project
looks like a lot of fun to explore and learn from thank you
ale42 5 hours ago [-]
Great, nice project! In the time of Electron bloat, it's really refreshing to see bare-metal UEFI stuff.
fuzzfactor 2 hours ago [-]
Looking at the download sizes:
UEFI "native" 114kb
Windows version 1.4mb
VHD version 12.6mb
None of them are huge but it does emphasize how much difference in resource savings is available if your program can run directly on "bare metal" without even an OS at all.
ale42 1 hours ago [-]
Not sure why the Windows version would be much bigger than the bare metal one. If you use native code, the code size overhead from using native GDI calls to draw the window is almost zero. Didn't check if the Windows version uses some GUI toolkit that inflates the size.
skrellm 36 minutes ago [-]
> Not sure why the Windows version would be much bigger than the bare metal one.
That's probably because there's a bug in the linker, which puts uninitialized variables in the data segment instead of bss. This means unlike the bare metal variant, the Windows executable is full of zeros.
I was 8 or 9 years old when the ZX Spectrum +2 arrived home.
I'm seriously considering installing this on an old laptop and giving it to my son when he's 8 years old, together with a hard-copy of a BASIC reference and a few simple programs and games to type in.
Getting a FAT32 filesystem on day 1 is already a huge jump from my childhood experience (loading from tape).
Sorry.
(Maybe something more like Hypercard I guess - or something that renders to HTML)
I learned to program on 8 bit micros, and created a rough boot-to-BASIC experiment ~15 years ago following the JeOS pattern. So this project sounds really exciting, but I'd be more interested if I weren't restricted to being a passive end user.
Besides UEFI, it has a Windows GDI port, but if it were FOSS one could add SDL backend for example and then one could compile it for Linux and Webassembly as well.
BASIC requires more support than you'd expect. Here's an interpreter, with a similarly long list of features it has to support:
https://www.moondew.com/basic/index.htm
One thing you could use for more test cases is the book 101 BASIC Computers Games by David Ahl. Games always encouraged people to use computers and that's as classic as it gets!
The linked page has this to say:
"Disk I/O — SAVE, LOAD, MERGE, FILES, KILL, running directly on the UEFI Simple File System."
Yes. The UEFI Simple Filesystem Protocol is transparent to the UEFI app. The protocol gives you open/read/write/close calls, without needing to know the underlying fs.
Considering how much it supports, if it could chainload a full operating system, it would make a great replacement for GRUB or rEFIt.
Try https://gitlab.com/bztsrc/easyboot
But it is not bare metal yet and it is not BASIC.
looks like a lot of fun to explore and learn from thank you
UEFI "native" 114kb
Windows version 1.4mb
VHD version 12.6mb
None of them are huge but it does emphasize how much difference in resource savings is available if your program can run directly on "bare metal" without even an OS at all.
That's probably because there's a bug in the linker, which puts uninitialized variables in the data segment instead of bss. This means unlike the bare metal variant, the Windows executable is full of zeros.
This is a well known bug (see https://github.com/msys2/MINGW-packages/issues/18612 for example) which also affects my projects: https://gitlab.com/bztsrc/skandi The Linux CLI version is 216K, the Windows CLI version is 5.4M and the only difference is the lack of bss.
I am investigating whether it would be feasible to do something similar for Python.
But binding micropython and posix-uefi is a weekend project. [0]
[0] https://gitlab.com/bztsrc/posix-uefi