summaryrefslogtreecommitdiff
path: root/sux.h
AgeCommit message (Collapse)Author
2020-08-12- Refactored the escape sequence parsing, and handling.mrb0nk500
It now uses a struct to store the escape sequence. Before it handles the escape sequence, it parses it, which includes things like getting any arguments that are supplied, and getting the mode type. - Moved the code that handles control codes to a separate function. The reason for doing this was because I wanted to make the escape sequence handling faster, but also make the code more readable at the same time. I got the idea to do this from st, a terminal emulator created by the suckless.org project.
2020-08-11Refactored the keyboard I/O emulation, again.mrb0nk500
I decided to use keypad now, and create a function to return the actual key sequences. The keyboard I/O is also now being handled by the io emulation function, and not by the main function. This should get rid of any possible deadlocks.
2020-08-10Refactored the keyboard I/O emulation.mrb0nk500
It now saves the characters of the typed key into a buffer, and returns each character in the buffer one at a time, until it reaches a null terminator, at which point it starts getting the next key. The reason for doing this was to make getting multi character keys faster, by not calling getch() for each character. The only downside to this is that I have to set a timeout() for getch(), making it somewhat non blocking, although the delay is 8 milliseconds. The next thing I'll probably be doing, is working more on the SuB suite.
2020-08-08- Refactored the opcode table, in order to make themrb0nk500
instruction formatting simpler. - Refactored the instruction table of the emulator's assembler, it now has two parts, the addressing mode bits, and the base value. The base value is what's used to generate the actual opcode, with the addressing mode bits telling the assembler what addressing modes this instruction supports. The reason for doing this was to use less space. For comparison, the previous version used 870 bytes for the instruction table, while the new version uses only 222 bytes. The new version is nearly 4 times smaller than the pervious version. - The B register based ALU instructions now use their own addressing mode, and are specified by using 'b' as the operand for those instructions. For example, to add the Accumulator with the B register, you now use "ADC B" instead of "AAB".
2020-08-08Did a ton of stuff.mrb0nk500
- Changed the file structure of the SuB Suite, so that all variable declarations, symbols, and constants are in a single file. - Moved the C library functionss into a separate file, and made them use stack frames. - Added support for using the emulator's assembler for realtime debugging, to enter it, get in to stepping mode by pressing Ctrl+s, press any other key, then press F1, The reason for having to press some other key before pressing F1 is because it only allows entering the assembler when the keyboard is not ready. - Added the ".res" directive to the emulator's assembler, the ".res" directive tells the assembler to reserve however many bytes specified by the operand. - Fixed some bugs in the emulator's assembler.
2020-07-08- Simplified some parts of the codebase.mrb0nk500
- Fixed some bugs with the push, and pull functions - Fixed a bug in the assembler.
2020-07-06- Implemented a new opcode table.mrb0nk500
- Added a new preifx called the OF prefix, which adds the contents of a specific register to the current operand. - Added a table generator, which parses opcode table csv files.
2020-06-13Optimized, and cleaned up the codebase.mrb0nk500
2020-06-13Renamed get_opsize(), to get_addrsize(), in order tomrb0nk500
make it clear about what it does.
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-06-11Did some more stuff.mrb0nk500
- Fix some bugs with strings. - Started to refactor the instruction functions. - Added support for using RS prefixes on the memory based increment, and decrement instructions. - Started work on SuBAsm's lexer. Have fun looking at this, BieHDC. :)
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-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.