im clay
clbx / cosmic Goto Github PK
View Code? Open in Web Editor NEWA ๐๐๐๐๐๐๐ simulated 8-bit computer architecture
License: MIT License
A ๐๐๐๐๐๐๐ simulated 8-bit computer architecture
License: MIT License
im clay
In addition to using a Raspberry Pi, using an Arduino could also be a good way to interact with the real world. Implementation would be limited due to the Arduino's limited resources.
Allow keyboard input to be given through the video out window (probably should rename that too)
Keyboard functionality will use 2 bytes, one to give the character given to the keyboard allowing for 256 different characters, the other to use for status. The only current planned use of the status byte is to flag when a new character is added.
Push at minimum status register onto the stack when an interrupt it triggered. Decide if registers should be pushed too.
Write programs that thoroughly test each of the opcodes.
Implement a way to be automatically tested either through an existing testing library or short script.
Create 3 labs for requirements for Senior Project
Investigate to make sure these aren't anything we need to worry about.
Adding a serial in and out will give standard I/O that was found on machines of the era and also makes it easier to have a "terminal" environment.
Fix the output message
Currently 16 bit MOV just writes to the register +1 so if 2 is given, it'll write to 2 and 3 instead of 3 and 4.
Not sure how we want to handle this or if it/ how it should be taken care of in the assembler
The first line loads in right, but after that I have no idea what it's doing.
Having it on an FPGA would be dope and really add usefulness.
Add testing of full programs to make sure that all systems are working correctly. Then add to Travis. We should make a few ROMs that test specific parts of the system and have It run on every build and compare the memory states to verify that they are working correctly.
Just shows the same thing across all tabs and doing things on other tabs does not impact memory. Separate memory editor objects will be needed
Find a way to reduce the amount of deeply nested logic in envmain
Currently debug messages write to stdout, which is bad. Needs to be redirected to another place, preferably a panel in the GUI.
Implementation on the Pi will not be possible in the current state due to the lack of OpenGL hardware support. Two options are available, using OpenGLES for the Pi build, or implementing ImTui, a text based ncurses implementation of ImGui
Tests are rapidly approaching god class status. Find a good way to split them up.
Currently building for Windows requires MinGW installed and a few extra libraries. Building with msvc would relieve these issues
Finding a way to successfully build statically would also solve this issue.
Related to #21
If pushing PSW to stack is implemented, a new RETI function will need to be added to make sure PSW is returned.
Some Instructions when given R1 take from r[0], some take from r[1].
Example:
MOV R0 points to [0]
JMP R0 points to [1]
A proper way should be decided and made uniform
Need to implement compare. this is just so I remember cause im going to bed
Add memory mapped I/O for the raspberry pi.
Create CLI to run over SSH on Pi
Either using curses or ImTui
Currently the GUI holds all of the execution for the processor. Remove this dependency
Interrupts are currently "added" to the processor, but have not been tested. Interrupts need to also implemented to the assembler
Right now whenever a hotkey for running the processor (Space for stepping, r for reset proc, m for reset memory) it doesn't matter what window is active
this isn't a problem right now but once we have other things that will need input it will become an issue.
The current way of putting in the file path sucks
Did some testing, doesn't seem to be linked to the ctrl+c to clear debug log, but this shortcut should be changed anyway because the debug log gets wrecked anytime you copy while working in the assembler.
Possibly only a problem with bigger files as Clay mentioned it might be that a buffer is too small.
Don't really have a reason as to why they haven't been defined yet. Will get to it eventually.
Get operand takes a token and separates it into its addressing mode, operator, and operant. On the last line of this it takes the operand given ( a string) and converts it to a base 16 number.
Lines 320 to 330 in 696c892
This issue occurs because of this in the resolveVariable function
Lines 271 to 282 in 696c892
This effectively converts the numbers to base 16 twice, making the addresses variables point to incorrect.
Awesome project gentlemen. Any chance you can update the source, so it compiles properly on BigSur and higher?
Video out window is empty on Linux confirmed on x86 needs testing on ARM
Use submodules in the repository instead of having dependencies (like ImGUI) in the repository.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.