Commit Graph

29 Commits

Author SHA1 Message Date
Bobbi Webber-Manners 86e517a6eb v0.78: VM performance improvement, removed debug printout on error 2018-06-11 22:06:33 -04:00
Bobbi Webber-Manners 6573b80928 v0.77: bugfixes related to storing bytecode in Apple II aux memory 2018-06-06 15:42:05 -04:00
Bobbi Webber-Manners e3f5558b00 v074: comp command now accepts argument for bytecode filename 2018-06-01 16:44:21 -04:00
Bobbi Webber-Manners 489cb5c1a5 Updated memory limits for Apple //e to reflect use of LOADER.SYS 2018-05-28 13:53:09 -04:00
Bobbi Webber-Manners aa819ef166
v0.72: Extended memory support for Apple //e
- Implemented initial version of extended memory support, which allows the EightBall source code to be stored in aux RAM (extended 80 column card).  Once an apparent bug in the cc65 extended memory driver is fixed then bytecode will also be stored in aux RAM.
- Moved non-performance critical portions of interpreter / compiler to Apple II language card memory, which frees up more main memory.
- Improvements to display of free memory (`free` command)
2018-05-27 00:13:48 -04:00
Bobbi Webber-Manners 6dbf45c39c
v0.70: disassembler, immediate mode VM ops
- VM now prompts for filename to load bytecode from
- Added new EightBall disassembler (`disass`), removed disassembly printout from compiler
- Fixes to interpreter / compiler error reporting.  Should no longer report completely incorrect line numbers!
- Added new immediate mode VM instructions for load (`LDAWI`, `LDABI`, `LDRWI`, `LDRBI`), store (`STAWI`, `STABI`, `STRWI`, `STRBI`), and flow control (`JSRI`, `JMPI`, `BRCI`).  Modified compiler to use these new instructions.  This significantly improves code density and VM execution speed.
2018-05-21 13:58:41 -04:00
Bobbi Webber-Manners 42bbb90acf
v0.69: Small bug-fixes and improvements
- Compiler: do not emit LDI 0, DISC sequence, which is a no-op.
- VM: add GPL info and progress when loading bytecode
- Most importantly: a version of Tetris coded in EightBall!
2018-05-18 21:11:53 -04:00
Bobbi Webber-Manners ea3a6a83e2
v0.68: compiler bug fixes, improved efficiency
- Fixed indentation of VM code. Turned on stack checks for GCC only.
- Added new `VM_DISCARD` VM instruction (and compiler support).  This makes the VM significantly more efficient.
- Configured Linux VM to be compatible with Apple II environment.
- Added line to force to interpret mode to prevent surprises.
- Compiler: fixed bug when exiting `for` loop using `return`.  The compiler was leaking a word on the evalutation stack after jumping out of the body of the `for` loop.
2018-05-13 13:59:40 -04:00
Bobbi Webber-Manners 18942a9ba0
v0.67: Source code cleanup, optimizations
- Managed to free up several hundred bytes
2018-05-11 19:43:27 -04:00
Bobbi Webber-Manners e02674d8da
v0.66: Refactoring, added const support
- New keyword `const`
- `const` values are supported as array dimensions and variable.array initializers
- Refactored code and saved several 100 bytes
- Compiler generates better VM code for array allocation
2018-05-11 01:05:43 -04:00
Bobbi Webber-Manners c743831fe3
v0.65: Fixed compiler bug initializing local array
- Fixed compiler bug initializing local array
- Some refactoring to make code a few hundred bytes smaller
2018-05-06 21:11:39 -04:00
Bobbi Webber-Manners aed94857bd
v0.64: Fix compiler bug in array initializer code
- Found bug in array initializer code in v0.63.  This version hopefully fixes it.
- Also shaved another 50 bytes off the code size.
2018-05-05 00:57:09 -04:00
Bobbi Webber-Manners f72fcdc253
v0.63: Added support for array initializers
- Arrays can now be initialized with a list like this: `word aa[4]={1,2,3,4}` ...
- ... or a string literal like this: `byte qw[100]="This is a test"`
- Works in interpreter or compiled.
2018-05-04 23:57:39 -04:00
Bobbi Webber-Manners d9532c8f71
v0.62: Fixed function call bug in compiled code
- The compiler was not pushing the SENTINEL value to the operator stack and popping it afterwards, so the expression parsing was getting messed up.  Now fixed.
- Also added targets to the Makefile to allow the emulators to be run directly (make xvic, make x64, make mame).
2018-05-04 00:02:16 -04:00
Bobbi Webber-Manners e52b236c53
v0.61: Fixed bug in & address of local arrays 2018-05-03 21:09:21 -04:00
Bobbi Webber-Manners 92164c3274
v0.60: Array pass by reference works in compiler
- Evaluating 'naked' array name `A` gives pointer to payload (same as `&A` or even `&A[0]`)
- Improved loading message in VM
- Got array pass-by-reference to work in compiler
- Fixed eval stack leak in array initialization code generated by compiler
2018-05-03 19:53:40 -04:00
Bobbi Webber-Manners dc5ebf741c
v0.59: Added support for char literals 2018-05-03 10:18:17 -04:00
Bobbi Webber-Manners ed032c11ea
v0.58: Allow constant exprs for array dimensions 2018-05-03 01:12:21 -04:00
Bobbi Webber-Manners 7a91e0c0fb
v0.57: Added `mode` statement for Apple II 2018-05-02 20:27:27 -04:00
Bobbi Webber-Manners c026602f62
v0.56: Various minor improvements
- Improved Makefile to make it easier to configure paths to tools
- Made number of signicant characters for subroutine and variable names a `#define` constant and tested it works with different values
- Modified memory allocation in `HEAP2` - the source code is now allocated at the bottom, growing up.  The compiler's linkage table is allocated at the top growing down.  This makes it easy to dispose of the linkage table after compilation is done.
- This revealed that my memory limits were wrong so code was crashing on C64, Apple II.  I bumped up the bottom of `HEAP2` by 0x500 or so.  Not sure why this is needed.
- Added a signon banner to the virtual machine so it is clear it is loading bytecode.  Screen is cleared after loading is complete, so user knows when execution begins.
2018-05-02 17:41:42 -04:00
Bobbi Webber-Manners 085800a743
v0.55: Minor tweaks
- Adjusted memory limits.  Found a few extra bytes for source code buffer on Apple II.
- Compiler: Changed multiply by two to left shift in indexing math for array of word.  More efficient.
2018-05-01 10:46:54 -04:00
Bobbi Webber-Manners fc6583d82d
v0.54: Fixed end of line character on C64, VIC20
End of line on CBM is 13, not 10.
Converted sieve4.8b and unittest,8b to PETSCII and added them to test.d64
Unit tests run on C64 with only one failure (same failure as when running under Linux VM).
2018-04-30 22:39:34 -04:00
Bobbi Webber-Manners d51db8fa03
v0.53 minor fixes
- Fixed bug in compiled code when flow of control hits endsub.
- Removed debug printout from emitldi(). Too much bloat!
2018-04-30 18:26:04 -04:00
Bobbi Webber-Manners cdbfeafda9
v0.52. Fix memory corruption bug.
This fixes a memory corruption bug that occurred when compiling code with subroutines.  The symbol table was corrupting the source code.  This was showing up on 6502 systems only (seemed okay on Linux).
2018-04-28 14:00:56 -04:00
Bobbi Webber-Manners 9550257613
v0.51 fixes memory limits for VIC20, C64, Apple2 2018-04-28 11:58:13 -04:00
Bobbi Webber-Manners 11f99c9840
EightBall v0.5 - With Compile and Virtual Machine 2018-04-27 23:47:22 -04:00
Bobbi Webber-Manners 3dc0c509d6
Fix to ticket #2
Changed XOR operator to ! character (was ^ previously).
This fixes conflict with the power-of operator.
2017-12-04 14:40:17 -05:00
Bobbi Webber-Manners 70bbad1bbe
Added code to switch to 80 column mode on Apple II 2017-12-02 13:30:10 -05:00
Bobbi Webber-Manners c1130feaf3
Initial upload to GitHub v0.4RC
This is the first release candidate for EightBall v0.4.
2017-11-27 19:06:00 -05:00