Commit Graph

76 Commits

Author SHA1 Message Date
Nemo b0aa03980c [10] Finishes compiler implementation 2020-07-07 03:23:06 +05:30
Nemo 02cb984fec Fix empty expression tags, and add directory support 2020-07-06 21:44:22 +05:30
Nemo a274797e58 Fixes <statements> opening after first statement 2020-07-06 21:15:19 +05:30
Nemo d25f7407da Got most of the Compilation Engine working
- Expressions aren't tested
- Some issues with xml ordering and empty tags
2020-07-06 21:12:00 +05:30
Nemo 19f0d670ac [10] Tokenizer works on all files correctly 2020-06-16 02:43:01 +05:30
Nemo c54e5ccaa4 [10] Adds XML output support 2020-06-16 02:05:33 +05:30
Nemo 43f982f06f [09] Wrote a Tic-Tac-Toe (2player) implementation 2020-06-10 02:01:57 +05:30
Nemo 23324814bd Compiled pre-programs 2020-06-10 02:01:46 +05:30
Nemo 7be5183fd0 Adds symlinks to the provided standard library for now 2020-06-09 01:08:03 +05:30
Nemo aed6f0a372 [08] Finishes VM Implementation
Lots of different changes:

- modular code with lots of helper methods
- fixed the return jump address getting overridden bug
2020-06-08 23:56:54 +05:30
Nemo 286df5b147 [08] Finishes call/init implementation
Found 2 bugs:

0. ic+=10 is incorrect jump for the boolean compare methods
1. Another bug was in the write() method, which was increasing the instruction
counter even for label commands, which aren't supposed to do that.

Another minor issue in my interpretation of the "call" to `Sys.init`
which I was so far just doing via a jump. Changed that to a proper call
2020-06-04 15:48:49 +05:30
Nemo 4fdc98bb72 [08] Implemented call, but it is breaking somewhere 2020-06-04 15:48:44 +05:30
Nemo 5160559eff [08] Optimized function starts a little 2020-06-04 15:48:41 +05:30
Nemo 6bdbec501a [08] Init Use LC=300, ARG=400 as standard values for now 2020-06-04 15:48:38 +05:30
Nemo 91b8ef006e [08] Fixes frame restoration, so return works properly now 2020-06-04 15:48:35 +05:30
Nemo b052ab617c [08] Implement Return/Function/Init
Return isn't functional (yet)
Init isn't called (yet)
2020-06-04 15:48:32 +05:30
Nemo 2fbdba0cf2 [08] Goto is functional.
Wasted 15 minutes stepping through the assembly, only to find out I was
missing a $ in $globalLabel
2020-06-04 15:48:27 +05:30
Nemo b61d4c4339 [08] Adds support for label and if-goto commands 2020-06-04 15:48:20 +05:30
Nemo 4e49913808 [07/Static] Implements static push/pop memory segment 2020-06-02 17:28:20 +05:30
Nemo 67b4e2653e [07/Pointers] Implemented pointer segment push/pop 2020-06-02 17:04:51 +05:30
Nemo 16e830851e Remove unused tests 2020-06-02 04:16:57 +05:30
Nemo c46f739aed Was missing an indirect lookup on segment pushes 2020-06-02 04:16:13 +05:30
Nemo 32242242cb I think the bug is somewhere in segment based pushes 2020-06-02 04:00:35 +05:30
Nemo 777523c24f Write Limited tests for segment pops 2020-06-02 03:51:40 +05:30
Nemo 551546c953 Break into multiple files for easier navigation 2020-06-02 03:19:28 +05:30
Nemo 9782ba7e4d [07] Almost done with BasicTest implementation 2020-06-02 01:42:15 +05:30
Nemo 3fa5a5c07a [07] StackTest passes 2020-06-02 00:12:41 +05:30
Nemo be69ac321d Reduce stack manipulation (use M instead of A) 2020-06-01 23:05:42 +05:30
Nemo b186ee7df1 [07/SimpleAdd] Partial working implementation
Implemented right now:

- push constant
- add
2020-06-01 21:47:50 +05:30
Nemo c1cac6ad6f [07] Initial work on VM Translator 2020-06-01 19:49:55 +05:30
Nemo f15f5e6906 Assemble all test programs 2020-05-30 01:22:22 +05:30
Nemo fbad268db5 [05/Computer] My computer can run Hack instructions now 2020-05-28 21:28:20 +05:30
Nemo 79aaca88af [05] Ran the CPU-external tests as well 2020-05-28 21:18:36 +05:30
Nemo 3dbb04035c [05/CPU] CPU is done.
I prefered using Nands here, wherever possible.
2020-05-28 21:13:25 +05:30
Nemo e7d72b1020 [05/CPU] Implements most of the CPU
This includes:

- Handling of data i/o (for A/D/M)
- Handling the ALU properly (all 28 computations)
- Basic incremental PC (i/o)
- PC reset
- read/write to M

What's missing:

- Handling jumps
2020-05-28 19:58:12 +05:30
Nemo 69a32190dc 05/Memory 2020-05-28 18:10:51 +05:30
Nemo ae35d75d17 My Keyboard based fill is just +2 of manualfill 2020-05-28 16:48:24 +05:30
Nemo e85ff27425 [04/fill] Done with Automated screen fill
Updated NOTES
2020-05-28 16:45:38 +05:30
Nemo 25e828ec9d Initial work on Fill.asm
Scrapped everything I did yesterday, basing it on scratch
from what I wrote in manual-fill.asm
2020-05-28 15:59:49 +05:30
Nemo 90526cc036 Fixes RAM16K. I was using too many registers and the addressing was
wrong
2020-05-28 15:04:07 +05:30
Nemo 37c0f41a4a [04/mult] Multiply is possible 2020-05-27 19:44:39 +05:30
Nemo 56eb3699a4 Added the sum program from Fig 4.2 2020-05-27 19:43:50 +05:30
Nemo 64c2f79409 Note cost for ALU 2020-05-21 01:59:59 +05:30
Nemo f20e8b082c [03] Program Counter 2020-05-21 01:06:50 +05:30
Nemo cbd6834f07 [03] RAM16K 2020-05-20 19:35:39 +05:30
Nemo e54a23fc3c [03] RAM4K + RAM512 2020-05-20 19:31:35 +05:30
Nemo 09182a661f [03] Adds RAM64 2020-05-20 19:22:54 +05:30
Nemo 93d6273201 [03] RAM8 2020-05-20 19:13:01 +05:30
Nemo 9a28b2f33f [03] Register 2020-05-20 18:59:22 +05:30
Nemo bb7a45e03f [03] Bit 2020-05-20 18:56:05 +05:30