etxmato / emma_02 Goto Github PK
View Code? Open in Web Editor NEWEmma 02 - RCA CDP 1802 Multi-system Emulator
License: Other
Emma 02 - RCA CDP 1802 Multi-system Emulator
License: Other
I found a bit confusing that instead of the clock setting being the clock speed of the processor. It's the clock speed before it's dived by 2.
Most of the other systems in the emulator are the clock speed of the processor. Which really makes more sense as no one is thinking about a pixel clock in an emulator.
on Linux: COMX-35 emulation misses a lot of my keystrokes if I type even at moderate speed (reported by Mark)
As soon as the 1802 trace is started in the debugger Emma 02 crashes with a segmentation fault
At least not the default values, when re-selecting it works ok.
Only on Linux
(emma_02:15558): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index >= 0 && index <= layout->length' failed
No clue what this is as yet, reported by Mark
Instead it should be in ~/emma_02 on Linux
On windows maybe it should stay as is - to be looked into
On OS X either the same as on Linux or maybe emma_02.ini should be in the application/emma_02 folder
First thanks for the emulator! It is nice that there is one that takes care of so many exotic systems whit this nice CPU. :-)
While testing VP590 support in my own emulator and comparing behavior of CHIP-8X I found that the Bxyn
opcode is not working correctly. Debugging the issue showed that the interpreter file in data/VIP/chip8x.ram
has a bug, I guess it is based on OCR of a hex-dump and somehow the byte at offset 0x228
in the file is 0x9c
but should be 0x8c
, as clearly readable in the VP580, VP585, VP590, VP595 Instruction Manual page II-3.
With that byte changed Bxyn
works as described.
I mean there ain't no 1802 emulators on Android yet.
On linux only
I've tried a few tools to convert the DEB and RPM files to run on Manjaro, but with no luck. Would you be able to package Emma_02 up in a compatible format, or release it as Flatpak or AppImage? I've even tried the Windows version on my Steam Deck but that doesn't run either.
Does anyone else have the knowledge to do this?
When using Memory Access in the comx-35, it should change the EOP to point at the end of the loaded space when SpecifyLocation is check.
EOP is commend in basic and returns the end of program. It's also used by PSAVE to tell it when to end.
The EOP value is located in memory at 0x4283 high byte and 0x4284 low byte.
Just so I don't forget:
Seen by Mark, I haven't seen it for a while on Fedora, needs to be debugged
I'm experimenting a bit with how the random numbers are generated on the superchip vm, and...
Seem the numbers generated there do following some patterns and it's pretty short and pretty deterministic. Doesn't look good...
Expected results are where the Hex mixt and Framed MK1 fills the whole screen:
I'm proposing to make use of LSFR [linear shift feedback register] which I think it's good for being simplistic and having more randomness to it. I consider 16-bit LSFR is good, and should be shifted 8 times when fetching one byte from it. (still having period of 65535)
pseudocode
seed = 12345 # 16-bit initial feedback value, could be any number
def shift(seed):
return ((((seed>>1)^seed)<<15)|(seed>>1))&0xFFFF
def shiftByte(seed):
return shift(shift(shift(shift(shift(shift(shift(shift(seed)))))))) # shift 8 times
# print random bytes 10 times
for n in range(10):
seed = shiftByte(seed)
print(seed&255)
One may shift it to only few to save cycles, or by making it perform shifts for every chip8 instr executed. It depends on implementation.
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.