summaryrefslogtreecommitdiff
path: root/opcode.h
AgeCommit message (Collapse)Author
2020-06-13Optimized, and cleaned up the codebase.mrb0nk500
2020-06-13Make the registers single 64 bit uints, and convertmrb0nk500
all the value getting, and setting into macros. This is to make the codebase cleaner.
2020-05-29Make JSL, JSR absolute, and remove RTL.mrb0nk500
The reason for doing this was because JSL, and RTL are redundent, as they both do the same thing as JSR, and RTS.
2020-05-18Did alot of stuff while I was up at the family trailer.mrb0nk500
- Moved the large enums, and large tables into separate header files. - Added enums for implementing the base extension - Fixed a bug in the assembler. - Worked more on SuBAsm.
2020-05-06Removed some duplicate code in the assembler, and mademrb0nk500
the processor status register, a union now.
2020-05-04Made all address decoding, and memory reads/writes bemrb0nk500
done with a union, in order to make it more readable.
2020-05-03Put the instruction, and I/O routines into separatemrb0nk500
functions. I did this to make it more readable, while still making it fast, due to inlining it.
2020-04-27Added support for including source files to themrb0nk500
emulator's assembler. And removed three pointers, and the linewrap table from zero page, in SuBEditor. I moved the linewrap table to address $1000. And because of finally adding include support to the assembler, I can now start work on SuBAsm!
2020-04-17Made both the assembly language monitor, and themrb0nk500
emulator smaller, and faster. I am also starting to make SuBEditor's source code more readable.
2020-04-09Completely changed the assembler.mrb0nk500
It now has a lexer/tokenizer, along with a parser. I have also made the emulator even smaller.
2020-04-02Made the emulator less bloated, and faster.mrb0nk500
2020-03-17Revamped the opcode table, made the emulator moremrb0nk500
efficient, and ported SuBEditor to C. I revamped the opcode table to add another prefix bit for the addressing mode, finally giving access to all addresses, without wasting any bytes. I made the stack based operations more efficient, by sort of applying Duff's device to it. And I ported SuBEditor to C, to make it easier for me to figure out how to implement SuBAsm.
2020-01-10Added GPLv2.mrb0nk500
We're now Free Software!!!
2019-12-24Added support for Indirect addressing modes, and allowmrb0nk500
for use of the B register as an operand, for ALU based instructions. This allows for both low code size, and high performance. This means we can save upto 9 bytes, by just using the B register for ALU operations, rather than using a memory address. The indirect addressing modes, give Sux the abillity to now use pointers. Hope you guys have a Merry Christmas! From mr b0nk 500 <b0nk@b0nk.xyz>
2019-12-19Added the B register, which is used for storing themrb0nk500
remainder during a DIV instruction. I also added the TAB, and TBA instructions, for transfering between the Accumulator, and the B register.
2019-12-14We now have keyboard support!!!mrb0nk500
I also added the WAI instruction, which puts the thread that executed it, into a catatonic stat, where it can't do anything, until an interrupt occurs. I will be starting work on GFsuX next. I also might start work on SuBAsm, the Sux Bootstrapping Assembler.
2019-12-11We can print to the Screen!!!!mrb0nk500
I also added the ASR instruction, for doing arithmetic shifts, and have added a hello world program.
2019-12-08Added support for resolving fixup labels.mrb0nk500
AKA, referencing a label before it has been declared yet.
2019-12-07Added six instructions for transfering datamrb0nk500
between the three main registers. These instructions are: TAY: Transfer Accumulator to Y. TAX: Transfer Accumulator to X. TYX: Transfer Y to X. TYA: Transfer Y to Accumulator. TXA: Transfer X to Accumulator. TXY: Transfer X to Y.
2019-12-06Finally got multithreading support working!!mrb0nk500
I have also added a program that computes the Fibonacci sequence that I wrote in Sux assembly.
2019-12-02Added the ability to disable the prefix byte.mrb0nk500
Any instructions that either have a register size of 8 bits, use implied addressing, or branch can save a byte by disabling the prefix byte. It does this by checking if the first three bits are all set to 1. If true, then it will treat it as a prefix byte, otherwise, it will treat it as an opcode.
2019-11-30Start work on rev2 of Sux.mrb0nk500
Added a prefix byte to tell the CPU certain information such as, how many bytes to load into the registers, or what ISA extension we want to use. I also added an assembly language monitor, so that I don't have to write stuff in machine code.
2019-11-26rev1 of Sux has been completed!rev1mrb0nk500
I have now implemented BRK, and RTI. Also, BieHDC, and I will both be working on rev2.
2019-11-26Revamped the entire emulator.mrb0nk500
I finally implemented the other addressing modes, and added a Makefile. Not sure when I will start work on rev2 of Sux, but it will be sometime soon.
2019-11-20Fixed some bugs in some instructions.mrb0nk500
Fixed stack based instructions. Fixed the rotate instructions. Added carry to the shift instructions.
2019-11-17The emulator is working!!!mrb0nk500
2019-11-16Implemented memory based instructions, and removedmrb0nk500
some unneeded instructions.
2019-11-11Added comments in opcode.h, and started work on themrb0nk500
Sux emulator.
2019-11-10Initial commit.mrb0nk500