This repository has been archived on 2026-05-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
piquant/README.md
2024-05-12 21:42:09 -04:00

2.0 KiB

Build Status

Piquant

Piquant is a little toy operating system I'm building.

Why?

Because it's fun. Don't you like to have fun? Ogre.

What does it do?

Right now, not much. It boots from a 1.44mB floppy disk, and enters into a BASIC interpreter, just like your favorite home computers of the 70s/80s!

Image of Piquant v0.1

Currently the BASIC only understands a few simple basic commands: PRINT, LIST, GOTO and RUN. The arithmetic parser was yanked out as part of a refactor that is still ongoing so it can't do math right now. The eventual target is for this to be fully MS BASIC-80 compliant.

Beware, this is a work in progress and is probably in some state of brokenness. The last couple of git log entries should be relied upon to understand the current state.

How can I run it?

You have to build it to run it. To build it, you need:

  • bcc (bruce's c compiler - check your OS's package repositories)
  • nasm
  • gnu make
  • ld86, objdump86, as86

To run it, you need either an x86 computer with a floppy drive (or the bochs emulator. For emulation you can use any x86 emulator that can boot a floppy image, but the makefile assumes you have 'bochs' installed.

make clean run

This will rebuild all of the sources and fire up the bochs emulator. Have fun.

Developing & Testing

You need gcc to run the unit tests. To run the unit tests:

make test

Keep in mind that the unit tests are compiled with gcc, not bcc, as I couldn't find an elegant way to make bcc produce objects that could easily be run in linux (especially Travis-CI). So while the tests are an accurate test of the C code under ANSI spec, they make no promises re: what bcc is eventually going to do with that code.

New unit tests are created by making a new *.c file in tests/. Drop the name of whatever portions of piquant it relies on into a '.deps' file. Look at the others for examples.