Code Monkey home page Code Monkey logo

cosmic's Introduction

im clay

cosmic's People

Contributors

akkartik avatar aklsh avatar carmank avatar clbx avatar gwarks avatar imgbotapp avatar mend-bolt-for-github[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cosmic's Issues

Add Serial Support

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.

Implement Cycles?

Implementing Cycles would make the project more realistic, would add a small amount of complexity

image

Explore Pi Implementation

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

Variables get converted to hex twice in assembler

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.

Cosmic/asm/cosasm.py

Lines 320 to 330 in 696c892

def getOperand(token):
addrMode = getAddrMode(token)
operand = ""
operator = ""
if(addrMode == "IMP" or addrMode == "ABS"):
operand = token
else:
operator = token[0]
operand = token[1:]
print(operand)
return addrMode,operator,int(operand,16)

This issue occurs because of this in the resolveVariable function

Cosmic/asm/cosasm.py

Lines 271 to 282 in 696c892

if(variableTable[operand][1] > 2):
warning("Variable {} is larger than opcode can handle".format(operand))
tokens[i] = operator + str(variableTable[operand][0] + 0xC800)
if(operand in labelTable):
operand = labelTable[operand]
tokens[i] = str(operator) + str(operand)
return tokens

This effectively converts the numbers to base 16 twice, making the addresses variables point to incorrect.

Create CLI

Create CLI to run over SSH on Pi

Either using curses or ImTui

MacOS BigSur: won't compile

Awesome project gentlemen. Any chance you can update the source, so it compiles properly on BigSur and higher?

Fix scope of hotkeys

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.

Add Integration Testing

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.

Define Mult/Div/SID.

Don't really have a reason as to why they haven't been defined yet. Will get to it eventually.

Explore Arduino Implementation

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.

Write test programs

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.

Tabbed Memory Editor doesn't work

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

Make Register Access Consistent

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

Add Keyboard Support

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.