Here's a Windows command line port of the official assembler made for those who can't get the Python version to work. From Arkia on Discord DM's: "Alright I did it. I wrote a real assembler in C. It works exactly like the python script does and cleans up a few very strange things I discovered while porting it (but still keeps some I'm too lazy to change)"
Not sure if he/she is even fine with this: Also, if you want to toy around with a formerly-unreleased version that has a 4-channel PSG, an updated renderer that allows for stuff such as mid-line palette changes, a "Get Stack Pointer" instruction, some updates on the software side, some unfinished stuff that (indefinitely?) halted CHROMA-60 development, and some strange crash bug I don't know what could be the cause, check out this Twitter thread! I'm hoping someone could make a tracker or something for it!
Assembly language! It has a custom 8-bit fantasy architecture called the F8B25 (yeah, not the Fairchild F8!). It has sixteen 8-bit general-purpose data registers/accumulators, a 64K address space, and a pretty basic instruction set (which honestly shares some similarities to the 6502 and some RISC-type designs, but is more limited in the context of addressing modes).
Code density is just low to be honest. They sure had enough spare opcode space for add/subtract without carry, and a way to get the stack pointer value (which is certainly a must-need thing other 8-bit ISA's have, otherwise stack-based arguments is difficult, and multi-stacks are impossible).
Also, note that the manual has a few typos here and there. I downloaded the source code, and confirmed that some opcodes are misaligned, "PSH I" exists and ALS appears to be broken. I think "CMP R, I" might be broken too, in that it doesn't set the CARRY flag if the immediate operand is 0 (always clears it, since the AND-mask and +1 add are backwards), which may indicate the code that there was a borrow even though any unsigned value minus 0 doesn't produce one.
Also, I don't think the OVERFLOW flag's detection handles all cases correctly, since it literally just detects if the MSB of the destination register is flipped by an ADD/SUB/CMP.
← Return to Fantasy Computer
Comments
Log in with itch.io to leave a comment.
The Fantasy Consoles Discord server is back!
As of now, we have dedicated channels for:
(33) Fantasy Consoles
(17) Fantasy Computers
(13) Engines
and
(7) Game Creation Systems.
Chroma-60 is of course included.
https://discord.gg/jcT9CXDgHB
Here's a Windows command line port of the official assembler made for those who can't get the Python version to work. From Arkia on Discord DM's: "Alright I did it. I wrote a real assembler in C. It works exactly like the python script does and cleans up a few very strange things I discovered while porting it (but still keeps some I'm too lazy to change)"
Not sure if he/she is even fine with this: Also, if you want to toy around with a formerly-unreleased version that has a 4-channel PSG, an updated renderer that allows for stuff such as mid-line palette changes, a "Get Stack Pointer" instruction, some updates on the software side, some unfinished stuff that (indefinitely?) halted CHROMA-60 development, and some strange crash bug I don't know what could be the cause, check out this Twitter thread! I'm hoping someone could make a tracker or something for it!
make it also for mac please
Hey, what programming language is this?
I want to program it to spray deadly neurotoxin at my enemies.
Never mind... There's a manual here. Soaked in neurotoxin. Lovely.
Its Assembly
Assembly language! It has a custom 8-bit fantasy architecture called the F8B25 (yeah, not the Fairchild F8!). It has sixteen 8-bit general-purpose data registers/accumulators, a 64K address space, and a pretty basic instruction set (which honestly shares some similarities to the 6502 and some RISC-type designs, but is more limited in the context of addressing modes).
Code density is just low to be honest. They sure had enough spare opcode space for add/subtract without carry, and a way to get the stack pointer value (which is certainly a must-need thing other 8-bit ISA's have, otherwise stack-based arguments is difficult, and multi-stacks are impossible).
Also, note that the manual has a few typos here and there. I downloaded the source code, and confirmed that some opcodes are misaligned, "PSH I" exists and ALS appears to be broken. I think "CMP R, I" might be broken too, in that it doesn't set the CARRY flag if the immediate operand is 0 (always clears it, since the AND-mask and +1 add are backwards), which may indicate the code that there was a borrow even though any unsigned value minus 0 doesn't produce one.
Also, I don't think the OVERFLOW flag's detection handles all cases correctly, since it literally just detects if the MSB of the destination register is flipped by an ADD/SUB/CMP.