Age | Commit message (Collapse) | Author |
|
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.
|
|
expressions to the emulator's assembler.
|
|
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".
|
|
- 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.
|
|
- 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.
|
|
- Fixed some bugs in the emulator's assembler.
- Worked on SuBAsm's lexer some more.
- Created a new directory for the SuB suite, and moved
all of the SuB suite's files in there.
|
|
- 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. :)
|
|
- Fixed a bug in SuBAsm.
|
|
- 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.
|
|
code duplication.
The assembler now uses pre-tokens, which are smaller
tokens, that make up the larger tokens.
|
|
The reason for doing this was because JSL, and RTL are
redundent, as they both do the same thing as JSR, and
RTS.
|
|
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.
|
|
|
|
- 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.
|
|
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'.
|
|
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!
|
|
emulator some more.
I optimized the emulator by replacing the main loop
from a conditional while loop, to an unconditional for
loop.
|
|
emulator smaller, and faster.
I am also starting to make SuBEditor's source code
more readable.
|
|
It now has a lexer/tokenizer, along with a parser.
I have also made the emulator even smaller.
|
|
|
|
inserting characters without replacing the old ones.
|
|
|
|
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.
|
|
Which I am now calling, SuBEditor.
|
|
I also added a new input testing program called
input-3.s, which contains a mostly working editor.
|
|
We're now Free Software!!!
|
|
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>
|
|
monitor, and the cursor movement routines for SuBAsm.
|
|
Also added support for moving the cursor arround.
|