summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-01-24sux.h: Corrected typo in `reg2` initialization.mrb0nk500
2022-01-24sux.h: Add bitmasks for arithmetic operations.mrb0nk500
2022-01-24sux.h: Add bitmasks for register transfers.mrb0nk500
2022-01-24sux.h: Correct typos in bitmasks for registermrb0nk500
assignments, and for inverting `tmp`.
2022-01-21sux.h: Use conditional branch code for unconditionalmrb0nk500
jumps. This gets rid of some code duplication, and is also how `bra` was implemented anyway. So, might as well use it for unconditional jumps too.
2022-01-21sux.h: Add bitmask for relative addressing.mrb0nk500
2022-01-21sux.h: Add bitmasks for conditional branches.mrb0nk500
2022-01-21sux.h: Corrected typos in bitmasks that dealt withmrb0nk500
conditional branches.
2022-01-21opcode-bitmask-gen: Add relative addressing to themrb0nk500
list of addressing modes. oof, forgot about that until just now.
2022-01-21sux.h: Add bitmasks for setting/testing/clearing flags,mrb0nk500
and for bitwise operations.
2022-01-19sux.h: Add bitmask for unconditional jumps.mrb0nk500
2022-01-19sux.h: Add bitmasks for stack related operations.mrb0nk500
2022-01-19sux.h: Make `rs` non const.mrb0nk500
2022-01-19sux.h: Set program counter to interrupt vectors, whenmrb0nk500
an interrupt gets triggered. This is done in order to properly use the `read_addr()` function.
2022-01-19sux.h: Add bitmasks for writing a value to memory.mrb0nk500
2022-01-19sux.h: Corrected bitmask for `reg = &cpu->a;`.mrb0nk500
2022-01-19opcode-bitmask-gen: Fixed bug that occurred when maskingmrb0nk500
out unwanted bits when inverting the addressing mode bitmask.
2022-01-18opcode-bitmask-gen: Invert the addressing mode bitmaskmrb0nk500
after all bits have been found, if inverting is enabled.
2022-01-18Add support for getting an inverted addressing modemrb0nk500
bitmask in `opcode-bitmask-gen`.
2022-01-18Add bitmasks for operations that mogrify (overwrite)mrb0nk500
memory directly.
2022-01-18Add bitmask for instructions that use the processormrb0nk500
status register.
2022-01-18Remove `pbits` from instruction handler.mrb0nk500
2022-01-18Initialize `tmp`, and `tmp2` to `0`, rather than `-1`.mrb0nk500
2022-01-18Add the rest of the load opcodes to the other registermrb0nk500
bitmasks.
2022-01-18Add `LDA` opcodes to accumulator bitmask.mrb0nk500
2022-01-16Add bitmasks for the registers.mrb0nk500
2022-01-16Fix bug in print_mask() where it'd always use the firstmrb0nk500
instruction entry, rather than the entry of the supplied instruction id(s).
2022-01-14Consolidate reading addresses for non-indirect addressingmrb0nk500
modes into a single block.
2022-01-14Add bitmasks for indexing, and indirect addressing.mrb0nk500
2022-01-14Add bitmasks for reading data from memory, andmrb0nk500
immediate data.
2022-01-14Add bitmask for absolute addressing.mrb0nk500
2022-01-14Add a bitmask generator for the new instruction handlermrb0nk500
macro. This program will help with generating the bitmasks for the instruction handler macro.
2022-01-14Start work on new instruction handler macro.mrb0nk500
This macro will create a function for each opcode, but with only a single block of code for each one. It uses a bitmask (one bit for each opcode) that will evaluate which blocks of code are used by each opcode. The bitmask checks are (usually) evaluated at compile time, which means that each function will only have the blocks that had the bit for that opcode set in the bitmask.
2021-05-09Subtract another 16 from the size in clr_arr.HEADmastermrb0nk500
This fixes a bug where it would zero out the info of the next malloc'd block.
2021-05-09Replace call to memcpy, with call to memcpy_dir.mrb0nk500
This fixes a bug where when shifting the line left, it would overwrite everything after the cursor with the character at the cursor's position. The reason this was happening is because memcpy copies from start to end, and because the destination is more than one byte ahead of the source, it overwrites the next length source bytes, which will repeat until it's copied n bytes.
2021-05-09Add a end to start version of memcpy, and a selectablemrb0nk500
direction version of memcpy. This can help with some subroutines/functions like shftln, which need to copy data in a certain direction depending on the condition.
2021-05-09Add scr_ptr to the list of outputted addresses when inmrb0nk500
debuging mode.
2021-05-08Fixed a bug in print_char caused by not zero extendingmrb0nk500
`b`.
2021-05-08Fixed a bug in print_str to do with clobberedmrb0nk500
registers. This was due to print_char clobbering `d` when calling get_index.
2021-05-08Replace get_ctrlidx with get_index in print_char.mrb0nk500
This helps reduce code duplication, and makes it easier to both read, and add new handlers.
2021-05-08Add a new subroutine called get_index.mrb0nk500
This subroutine gets the index of a given character from a string. This will help in replacing some routines like get_ctrlidx, isdelm, and isdelm2.
2021-05-08Get the pointer from the control code handler tablemrb0nk500
using SIB, rather than with lsl. This doesn't increase, or decrease the code size, but does make it both more compact, and easier to read.
2021-05-08Replace the old string parsing code inmrb0nk500
handle_directive() with a call to parse_quote(). This not only reduces code duplication, but also makes it more robust in the process.
2021-05-08Add support for saving to a string buffer inmrb0nk500
parse_quote(). This allows for replacing the string parsing code in handle_directive() with a call to parse_quote().
2021-05-08Rewrite `clr_arr` to use the ortho extension.mrb0nk500
This makes the code much smaller than the previous version.
2021-05-08Replace all instances of $/0x1B with the escapemrb0nk500
sequence for the escape character.
2021-05-08Start replacing the numbered duplicate local symbolsmrb0nk500
with deeper scope local symbols. This is done to make the code easier to read.
2021-05-08Fixed a bug with how local symbols with a depthmrb0nk500
greater than one are handled. It wasn't getting the correct depth when relative local symbols were used. So to account for that, it adds the relative depth (number of '@'s in a row), with the absolute depth (number of '.'s), to get the true scope depth.
2021-05-08Start implementing whole file lexing.mrb0nk500
This will eventually replace the per-line lexer.
2021-04-04- Fixed a bug to do with how SIB operands were parsedmrb0nk500
in the assembler. - Rewrote more of the SuB Suite to use the new calling convention. - Fixed a bug to do with SIB operands in the emulator's disassembler. - Made the MMV instruction not require a loop prefix for copying data.