Giter Club home page Giter Club logo

astro8-computer's Introduction



โ–ถ Check Out My Youtube Channel, AstroSam


Here Are Some Projects ๐Ÿ—

  • ๐Ÿ’ฝ Astro-8
    • 16-bit processor architecture I designed from scratch, and built an accompanying emulator for in C++
  • ๐Ÿ’ป Z-Sharp (Z#) $\textsf{\color{orange} (no longer in development)}$
    • My own programming language with a cross-platform interpreter, built in C++
  • ๐Ÿ’ฐ Distributed-Compute-Coin (DCC)
    • P2P blockchain cryptocurrency allowing developers to purchase distributed computing power to run their compute-heavy applications. Built-in C++
  • ๐Ÿง  Neural Networks
    • Always testing new and challenging tasks for AI to learn
  • ๐ŸŒ‰ Polybridge AI
    • Genetic algorithm designed to create structural bridges for holding a load, similar style to polybridge puzzles
  • ๐Ÿ” Vault
    • Custom offline password and password-protected data manager
  • ๐ŸŒฑ Plant Disease Recognition
    • Project designed around the identification and classification of plant diseases through images and location data, collected through an autonomous drone system
  • ๐Ÿ““ LMark (LaTeX Markdown)
    • Custom Markdown style meant to compile into LaTeX, meant for very fast notetaking with the customizability of LaTeX, but without having to type nearly as much.
  • ๐Ÿ•โ€๐Ÿฆบ Quadruped
    • 3D printed quadruped robot utilizing inexpensive servos and an arduino

astro8-computer's People

Contributors

electronicsarchiver avatar lilweege avatar sam-astro avatar userjhansen 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

astro8-computer's Issues

Bug in documentation (memory layout)

In memory layout range of "Variable and General Purpose Memory" is from 16528 to 61439, and range of "Video Memory" form 61439 to 65535
End of VGPM overlaps with begin of VM and (if I calculated it correctly) VGPM end must be 61438.

BTW, I'm noticed this bug on creating arrays for Armstrong, I haven't finished yet but maybe you would be interested ;).

Bitwise math

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Bitwise math is like the core of binary

Describe the solution you'd like
A clear and concise description of what you want to happen.
or xor xnor and nand left-shift right-shift etc

Additional context
Add any other context or screenshots about the feature request here.

Create new assembly standard

Is your feature request related to a problem? Please describe.
The current assembly is very spaced out and takes up much more space than it needs to by only using actual CPU instructions.

Describe the solution you'd like
Substituting some commands that take up multiple line with single-line ones.

benchmark

which is faster; Astro8, 8086, or MC68000?

Refine Documentation and Make it More Accurate

Is your feature request related to a problem? Please describe.
To be honest earlier version of documentation was better, felt less bloated. Everything was on one page, no need to jump through couple pages to find that part you were interested.

Describe the solution you'd like
Revert or rework documentation. New documentation feels over the top.

Better speed management system

Is your feature request related to a problem? Please describe.
The current system automatically throttles the video to only render at/around 60fps, which keeps the video circuitry from taking up most of the CPU's execution time. Although this doesn't scale the CPU cycle rate, so calculations per second will vary drastically between different computers,

Describe the solution you'd like
Better speed scaling so all systems execute at a similar speed.

Logisim CPU design error

Describe the bug
The logisim version of the CPU does not function the same as the emulator, it possibly has memory accessing problems or something that causes programs to execute improperly.

Last pixel is black

Describe the bug
Its not possible to set or see (idk for now) last pixel on emulator on Linux (maybe on windows too but I dont has windows so idk) from version 0.2.0 upwards (0.1.1 works)

To Reproduce
Steps to reproduce the behavior:

  1. Open rainbow_gradient.armstrong
  2. See error (last pixel is black)

Expected behavior
Whole screen is "rainbow"

Additional context
Screenshot of bug
image

Arrays for Armstrong

Is your feature request related to a problem? Please describe.
It is currently not possible to easily access fixed areas of memory without direct addressing, and that way also doesn't allow for dynamic indexing and isn't allocated automatically in variable memory.

Describe the solution you'd like
Add arrays, where values are accessed by array[<index>], and new arrays are created array $name, <size>

segmentation fault when pressing enter

Describe the bug
When you run the emulator, and dont give an input (just press enter) the program will segfault.

To Reproduce
Steps to reproduce the behavior:

  1. run program
  2. press enter
  3. question your life choices
  4. See error

Expected behavior
not entirely sure, but definitely not a segfault. Maybe a help message?

Additional context
Add any other context about the problem here.

Re-make sound synthesizer

The current implementation of the sound synthesizer has audio artifacts and pitch inaccuracies, mainly because each channel is loaded from an audio file and its speed changed, instead of being generated dynamically.

The system needs to be remade to create 4 channels of audio (1 and 2 are square waves, 3 is a triangle wave, and 4 is noise).

Unfortunately, I don't have much experience with creating an audio synthesizer, so any help would be appreciated.
An application you can use to test the sound is the music tracker at https://github.com/sam-astro/MusicalYabal/blob/main/musical.asm
(press underscore/minus key to play/pause)

Resolution increase

Is your feature request related to a problem? Please describe.
The current resolution is somewhat low and unrealistic to use legitimately.

Describe the solution you'd like
Increase the resolution to 240x180 pixels (40x30 characters). This will require a rework of the memory and an additional 43.2kb is needed for pixels, along with 1.2kb for characters.

Port to linux

The Linux version almost works, but there are a few errors preventing it from running correctly.

Floating point numbers in Armstrong

Is your feature request related to a problem? Please describe.
I'd love to make a raytracing demo, but without floats it seems beyond impractical, and more just impossible.

Describe the solution you'd like
Signed fractional numbers with add, sub, mult and div operators. Even very limited precision will do the job, since screen resolution is so small.

Allow for multiple keys to be pressed at a time

The pong game isn't very fun because the EX port can only register one key at a time.

I'm not sure how to fix this, but you mentioned in the video that the EX port is 16 bit and "available for any device to use", so something could be done more with that, and utilize more of the port.

Add better performance management and optimization.

Is your feature request related to a problem? Please describe.
Some complex programs run much slower than they should, even though the emulator stays at ~60fps.

Describe the solution you'd like
CPU frequency to be controlled instead of the FPS, which could cause lower FPS ~20 or 30, but will make sure all emulators run at the same speed across computers.

cannot compile emulator on arch (and possibly others)

To Reproduce
Steps to reproduce the behavior:
1.git clone https://github.com/sam-astro/Astro8-Computer
2. cd Astro8-Computer/Astro8-Emulator/linux-build
4. cmake ..
5. make

[ 50%] Linking CXX executable astro8
/usr/bin/ld: CMakeFiles/astro8.dir/main.cpp.o: in function `destroy(SDL_Renderer*, SDL_Window*)':
main.cpp:(.text+0x14a3): undefined reference to `Mix_FreeChunk'
/usr/bin/ld: CMakeFiles/astro8.dir/main.cpp.o: in function `Update()':
main.cpp:(.text+0x20e5): undefined reference to `Mix_Playing'
/usr/bin/ld: main.cpp:(.text+0x2108): undefined reference to `Mix_Playing'
/usr/bin/ld: main.cpp:(.text+0x2145): undefined reference to `Mix_Playing'
/usr/bin/ld: main.cpp:(.text+0x2422): undefined reference to `Mix_Playing'
/usr/bin/ld: main.cpp:(.text+0x2452): undefined reference to `Mix_HaltChannel'
/usr/bin/ld: main.cpp:(.text+0x2489): undefined reference to `Mix_PlayChannel'
/usr/bin/ld: CMakeFiles/astro8.dir/main.cpp.o: in function `InitGraphics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, int)':
main.cpp:(.text+0x3f3e): undefined reference to `Mix_OpenAudio'
/usr/bin/ld: main.cpp:(.text+0x3f68): undefined reference to `Mix_QuerySpec'
/usr/bin/ld: main.cpp:(.text+0x3f7a): undefined reference to `Mix_AllocateChannels'
/usr/bin/ld: main.cpp:(.text+0x400a): undefined reference to `Mix_LoadWAV'
/usr/bin/ld: main.cpp:(.text+0x40c1): undefined reference to `Mix_LoadWAV'
/usr/bin/ld: main.cpp:(.text+0x4180): undefined reference to `Mix_LoadWAV'
/usr/bin/ld: main.cpp:(.text+0x423f): undefined reference to `Mix_LoadWAV'
/usr/bin/ld: CMakeFiles/astro8.dir/main.cpp.o: in function `destroy(SDL_Renderer*, SDL_Window*)':
main.cpp:(.text+0x14e0): undefined reference to `Mix_Quit'
/usr/bin/ld: CMakeFiles/astro8.dir/main.cpp.o: in function `setupPlaybackSpeedEffect(Mix_Chunk const*, float const&, int, bool, bool)':
main.cpp:(.text+0x15d7): undefined reference to `Mix_RegisterEffect'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/astro8.dir/build.make:99: astro8] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/astro8.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Expected behavior
able to compile and use the Emulator from github build

Additional context
Yes i have SDL installed

extra/sdl2 2.26.2-1 [0B 4.43MiB] [Installed]
extra/sdl2_image 2.6.2-4 [0B 199.44KiB] [Installed]
extra/sdl2_mixer 2.6.2-2 [0B 393.83KiB] [Installed]
multilib/lib32-sdl2 2.26.2-1 [0B 2.21MiB] [Installed]

i do not have extra/sdl2_gfx or extra/sdl2_net or extra/sdl2_ttf installed
these errors look like sound errors though (which should be handled by mixer

Add programCounter as a register

Is your feature request related to a problem? Please describe.
This can much improve jumps in the code, for example we can write programCounter to @A, jump to other part of code and after few instructions jump back to address written in @A

Describe the solution you'd like
I think best name for that register is @PC

Armstrong compiler issue

Describe the bug
Pointers used directly in an arithmetic operation fail to compile properly.

Doesn't work:

mult *$memoryLocationA,64 -> $tmp

Works:

mult $variable,64 -> $tmp

Interface Rework

This will either be a pull request or a fork.

Using Qt, the interface system will be reworked to hopefully make it windowed-only. This will help with MacOS .app bundling and making the application simple to use for people not familiar with the console. This will also expand upon debugging, for example, pausing, playing, frame-by-frame, and memory viewing. If you still wish to use the console command, then you still can.

And no, I am not doing this just for the purpose of Mac support, it's actually a feature that would be helpful for all the other platforms as well.

If I end up not being able to do this fully in C++, then I may make an emulator in Python or Java and see what I can do with that. If anybody want to help, then that would be nice, since it would give me motivation.

Thanks, everyone, and thanks @sam-astro for making a project that I actually have the passion to help for.

Verify the MacOS Binary

I'll try building this through MacOS. If it works, I'll upload it here. If not, I'll see what I can do to make it work.

To build it yourself:

Make sure you have:

XCode Command Line Tools (May be installed already on your computer)
SDL2
CMake
Make
A C++ compiler

Now make sure you have Homebrew

Install the requirements on Terminal with:

#xcode-select --install
brew install sdl2
brew install cmake

The rest of the building is the same as the normal source building.

If this brings you an error than let me know and I'll try and find the cause.

Running on windows?

This is probably a stupid question, but where is the windows exe? Do I have to compile it myself?

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.