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
Get Continuum 93
Continuum 93
A retro-computer emulator designed specifically for game development... In assembly!!
Status | In development |
Category | Other |
Author | Enthusiast Guy |
Tags | assembly, computer, game-development, games, Retro, retro-emulator, virtual-computer |
More posts
- Continuum 93 V 1.0.1356 days ago
- Continuum 93 V 0.7.116Feb 14, 2024
- Continuum 93 V 0.7.114Feb 12, 2024
- Continuum 93 V 0.3.7Sep 11, 2023
- Continuum 93 V 0.1.4Mar 16, 2023
Leave a comment
Log in with itch.io to leave a comment.