summaryrefslogtreecommitdiff
path: root/asmmon.c
AgeCommit message (Collapse)Author
2020-06-01Did some more refactoring to the assembler.mrb0nk500
- Refactored the symbol, and fixup table to now use a linked list - Added support for local symbols to the assembler. - Rewrote SuBEditor, and SuBAsm to use local symbols.
2020-05-30Refactored the assembler a bit more, in order to removemrb0nk500
code duplication. The assembler now uses pre-tokens, which are smaller tokens, that make up the larger tokens.
2020-05-28Refactored the assembler, yet again, and implementedmrb0nk500
support for comma separated values. The assembler now uses a linked list of tokenized lines, each containing a linked list of tokens for that line. I also moved all of the large tables into the higher parts of memory, in order to free up the lower part of memory for the user. Comma sepparated values only work with directives, and only with the byte", word, dword, and qword directives. I also added support for getting the upper, and lower halves of an address. The tokens for both of those are '<', and '>' respectively.
2020-05-18Fixed some more bugs in the assembler.mrb0nk500
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-09Added support for single quote marks to the emulator'smrb0nk500
assembler. Single quote marks works in the assembler just like they do in C, except that it only supports a handful of escaped characters, like '\n', and '\r'.
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-19Removed most of the commented code, and optimized themrb0nk500
emulator some more. I optimized the emulator by replacing the main loop from a conditional while loop, to an unconditional for loop.
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-19Fixed some bugs in both the assembly languagemrb0nk500
monitor, and the cursor movement routines for SuBAsm.
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-13Added support for specifying the number of bytes asmrb0nk500
the suffix. I added this because BieHDC said the already existing notation glowed in the dark too much.
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 support for labels to the assembly languagemrb0nk500
monitor. I also rewrote the fibonacci program to include lables.
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.