Chip 8 Interpreter
The Studio chip 8 interpreter was designed by me, Marcel van Tongeren, and is based on VIP chip 8. This interpreter runs on the RCA Studio II, RCA Studio III and Conic machines.
To use the chip 8 interpreter in Emma 02 load the 'chip8.xml' xml file or one of the Multi-Cart xml files.
On HW this chip 8 interpreter can run on a Studio II (and RCA Studio III and Conic) with the 40th Anniversary Multi-Cart as designed by FLiP. Due to HW differences of the Studio macines compared with the VIP there are some limitations:
- Free RAM is limited to hex 0x9F bytes. Chip 8 code writing to memory will try to emulate writing to RAM by changing register I to a value within hex 0xB00 and hex 0xB9F (addressing Studio II memory hex 0x800-0x89F). This will work for the simplest cases but most SW will need re-coding if RAM is used.
- Chip 8 size should be lass than hex 0xB00 bytes.
- Keys A to F do not exist on a Studio machine, these keys are mapped to keypad two 1 (A) to 6 (F).
Memory map: 0 - 0x2FF: Interpreter 0x300 - 0x7FF: Chip 8 SW using an offset of hex 100 mapped to chip 8 memory hex 0x200-0x6FF. i.e. a JP to address hex 0x200 in chip 8 code will jump to Studio address 0x300. 0x800 - 0x89F: RAM free to use by chip 8 SW with an 1 offset of hex 0x300. i.e. to address RAM register I should contain a value between 0xB00-0xB9F. 0x8A0 - 0x8CF: Chip 8 Stack 0x8D0 - 0x8EF: Chip 8 interpreter work area 0x8F0 - 0x8FF: Content V0 - VF 0x900 - 0x9FF: Display RAM 0xA00 - 0xBFF: Not used 0xC00 - 0xFFF: Chip 8 SW using an offset of 0x500 mapped to chip 8 memory hex 0x700-0xAFF. i.e. a JP to address hex 0x700 in chip 8 code will jump to Studio address C00.Note: JP or CALL in Studio chip 8 is not possible to address range hex 0x800-0xBFF.
Memory map as seen by the chip 8 interpreter: 0x200 - 0x6FF: Chip 8 SW stored in Studio memory 0x300-0x7FF 0x700 - 0xAFF: Chip 8 SW stored in Studio memory 0xC00-0xFFF 0xB00 - 0xB9F: RAM free to use by chip 8 SW stored in Studio memory 0x800-0x89F