Continuum 93 V 0.6.8


0.6.8 - 26.01.2024

==================

Features

--------

- Enabled Continuum to work on Raspberry Pi (Tested on Rpi 4, Rpi 400);

- Refactored compiler, interpreter, interrupts and basically everything so the path

referencing is now cross-platform;

- Removed a Windows specific implementation of the mouse handler, replaced with a

cross-platform implementation;

- Added a machine interrupt that shuts down the emulator. Correspondingly, updated

the Q operating system to shut down the machine on RCtrl+Del;

- Improved the Q operating system to be controlled by a gamepad (only on gamepad index 0);

- Added interrupt 0x01 function 0x20 (Plot) which is used to plot points on video pages;

- Added video interrupts for more video drawing control:

* 0x01, function 0x30 (Read layers visibility);

* 0x01, function 0x31 (Set layers visibility);

* 0x01, function 0x32 (Read Buffer Control Mode);

* 0x01, function 0x33 (Set Buffer Control Mode)

to read or set layers visibility individually and also to read or set the auto buffered

layer draw mode;

- Implemented instruction VDL which forces update of the video buffers from RAM

per layer. This is meant to be used in combination with Buffer Control Mode manual

so the user has more liberty about when the drawing takes place;

- Deprecated and removed instructions ER and DR since VDL in conjunction with

the Buffer Control Mode mechanism offer a better control;

- Added "SETF f", "RESF f" and "INVF f" instructions meant to manipulate a specific flag. This

would be used in conjunction with calls that the user choses to use as evaluators;

- Added LDF r; LDF r, n; LDF (rrr); LDF (rrr), n; LDF (nnn) and LDF (nnn), n instructions that

enable loading the flags as a byte to an 8-bit register or memory location reffered by a

24-bit register or immediate address. The instructions that take the n parameter will mask out

the result using that value with AND masking;

- Implemented 16 floating point registers (F0 -> F15) as 32-bit on the IEEE 754

standard, extended the existing instructions to use them: LD, ADD, SUB, DIV, MUL, EX,

CP. Modified MIN, MAX. Added: SIN, COS, POW, SQR, CBR (cube root), ISQR (inverse square root),

ISGN (invert sign), ABS, ROUND, FLOOR, CEIL;

There are some variations from the standard in the sense the infinity or NaN are

not used;

- Implemented new interrupts to add Gamepad support:

* interrupt 0x02, function 0x14 (ReadGamePadsState) which allows

the developer to access connected gamepad controllers, up to 4 simultaneously (41 bytes for all 4);

* interrupt 0x02, function 0x15 (ReadGamePadsCapabilities) which provides the

capabilities of connected controllers (17 bytes of data for all 4);

* interrupt 0x02, function 0x16 (ReadGamePadsNames) which provides the names of

the connected controllers as null terminated strings, max 256 bytes for all 4.

- Implemented new interrupts to add support for loading images from "drive" to memory:

* interrupt 0x04, function 0x30 (LoadImageAndPalette) which loads an image, converts it to indexed

color image and deposits both palette and image around the specified input address;

* interrupt 0x04, function 0x31 (LoadImage) which loads an image, converts it to indexed color

image and deposits it at specified address;

* interrupt 0x04, function 0x32 (LoadPalette) which loads an image's color palette at the

specified address.

- Implemented new sprite draw interrupt to allow simple drawing from a tilemap loaded

with interrupts 0x04, functions 0x30 or 0x31:

* interrupt 0x01 function 0x0E (Draw Tile Map Sprite).

- Added support for declaring signed numbers to simple registers. They are converted using

two's complement. So for instance LD A, -1 loads value 0xFF to A. The minus sign can be applied

to decimal, hex, binary and octal numbers;

- Added SDIV (signed division) and SMUL (signed multiply) instructions that performs two's

complement division and multiplication on registers;

- Added SCP (signed compare) to evaluate registers as signed numbers;

- Updated Continuum Tools to handle signed numbers in some certain cases. For instance LD also takes

signed numbers but we have no way of knowing the developer's intention, while SDIV is clearly

working with signed numbers;

- Improved interrupts:

* 0x01 function 0x06 (Draw filled rectangle),

* 0x01 function 0x0E (Draw tile map sprite),

* 0x01 function 0x10 (Sprite draw),

* 0x01 function 0x12 (Draw text)

to support signed x, y coordinates in order to partially draw from off-screen and also trimming

to allow right and bottom overflow drawing to be clipped;

- Implemented new graphical interrupts:

* 0x01 function 0x07 (Draw rectangle),

* 0x01 function 0x21 (Line),

* 0x01 function 0x22 (Ellipse),

* 0x01 function 0x23 (Filled ellipse),

- Added logical instructions NAND, NOR, XNOR and IMPLY;

- Implemented Tools/debugger support for floating point registers;

- Implemented Tools/debugger support for visualizing flags;

- Implemented new Tools view to observe color palettes and a 3D model of stacked video

layers;

- Implemented a history stack to Tools (visible always on the bottom) and a menu to

toggle sections;

- Added a Continuum implementation of the Bubble Universe demo and a 3D Cube demo, to test the newly

implemented floating point registers and trigonometry functions;

- Added a more narrow font called "SlickAntsContourSlim";

- Added a rather bold font called "DoctorJack";

- Heavily improved the Assembly reference documentation.

Files

Continuum 93 V 0.6.8.zip 17 MB
98 days ago

Get Continuum 93

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.