Added the actual names of important people who were responsible for several important projects.

This commit is contained in:
Gena Crisman 2019-10-31 02:47:33 +00:00
parent e7eacceaa0
commit 072fb1860e

View file

@ -5,18 +5,20 @@ Via analysis of the specifications for these interpreters, as well as contempora
I would like to clarify that, these interpreters were written by hobbyists for fun, and shared freely on the internet via newsgroups. As far as I'm aware, they were not particularly widely used or analyzed, and they likely did not have access to original implementations or games to verify their interpreters behaved in exactly the same way. This project is not intended to be a criticism of their work, more an investigation and documenting of how and why they behaved as they do. That these interpreters exist to begin with is likely responsible for CHIP-8 being remembered the way it is, so, I'm thankful to them for that.
I would like to add, it is very possible to emulate the HP48 calculator and obtain information without real hardware. I have had success with Emu48. Make sure a) you appreciate that this is a Reverse Polish Notation calculator, so, put things on the stack and then apply instructions, and b) that you must match S or G bios files with S or G binaries, as the display buffer is in a different place.
Here are some explanations of some terms:
#### [CHIP-8](https://en.wikipedia.org/wiki/CHIP-8):
An interpreted Assembly Language designed in the 1970s to allow for people to share games across a handful of home computer platforms. It has since become popular for programmers to write a CHIP-8 interpreter in their language of choice, to become familiar with how simple microprocessors can work, as there are already a good selection of programs available for it.
An interpreted Assembly Language designed in the 1970s by Joseph Weisbecker to allow for people to share games across a handful of home computer platforms. It has since become popular for programmers to write a CHIP-8 interpreter in their language of choice, to become familiar with how simple microprocessors can work, as there are already a good selection of programs available for it.
#### [HP 48](https://en.wikipedia.org/wiki/HP_48_series):
A popular graphing calculator launched in the early 90s by HP. It supported the creation of programs via assembly language for its Saturn microprocessor. Similar in a lot of ways to the popular Ti81, it did however not support an accessible language for general programming, such as BASIC. As a result, (I believe/am guessing) Andreas Gustafsson thought to write a CHIP-8 interpreter for the HP48 so people could more easily write programs and games, and play those that had been already written before.
#### [CHIP-48](binaries/c48_origin.txt):
The name of the CHIP-8 interpreter for the HP48 S that was written by Andreas Gustafsson. It implements only the original 1970s instruction specification without (deliberate?) modifications. The source code for version 2.25 of this interpreter was found in newsgroup archives and is [included as part of this Repo](binaries/source/c48_source.txt).
#### [Super-Chip or SCHIP](binaries/SCHIP_origin.txt):
An expanded instruction set of the CHIP-8 interpreted language with additions such as a higher resolution and scrolling. It was first implemented on the HP48, and used the openly available CHIP-48 source. I'm aware of a [version 1.0](binaries/sc10_origin.txt) (SC10) and a [version 1.1](binaries/SCHIP_origin.txt) (SCHIP) - the Superchip spec and behavior that is most publicly apparent are for version 1.1. The source code for [version 1.0](binaries/source/sc10_source.txt) only has been found, and offers some insight, but version 1.1 was modified for speed and involved a lot of rewriting in several key sections.
An expanded instruction set of the CHIP-8 interpreted language created by Erik Bryntse, with additions such as a higher resolution and scrolling. It was first implemented on the HP48, and used the openly available CHIP-48 source. I'm aware of a [version 1.0](binaries/sc10_origin.txt) (SC10) and a [version 1.1](binaries/SCHIP_origin.txt) (SCHIP) - the Superchip spec and behavior that is most publicly apparent are for version 1.1. The source code for [version 1.0](binaries/source/sc10_source.txt) only has been found, and offers some insight, but version 1.1 was modified for speed and involved a lot of rewriting in several key sections.
#### [Octo](https://github.com/JohnEarnest/Octo):
A modern Javascript based CHIP-8 interpreter which supports the Super-Chip expansions as well as makes some of its own in the form of XO-CHIP. It aims to be accurate in the way it interprets CHIP-8 instructions such that programs designed with it would work when deployed to the original period correct hardware and interpreters. It offers several "Quirk" flags that allow it to correctly emulate different platforms.
A modern Javascript based CHIP-8 interpreter created by John Earnest, which supports the Super-Chip expansions as well as makes some of its own in the form of XO-CHIP. It aims to be accurate in the way it interprets CHIP-8 instructions such that programs designed with it would work when deployed to the original period correct hardware and interpreters. It offers several "Quirk" flags that allow it to correctly emulate different platforms.
# OK, back to what this repo is about:
@ -24,7 +26,7 @@ Aside from the goal of providing a nice extra feature for Octojam III, where com
Many of these additional quirks were quite unexpected and their individual origins were a question that piqued (in particular) my interest - were they deliberate changes? Mistakes? Typos? I decided to investigate each that I became aware of, trying and ascertain & subsequently document their origin, and, if possible, create a new SCHIP binary for the HP48 that conforms closer to the behavior observed on the Cosmac VIP's interpreter, and thus of Octo's default setup: This binary is called SCHPC (SCHIP Compatability). This would make it far easier to take a program from Octo, and be able to run it on an HP48, without having to work around some of the more awkward quirks.
I have taken some additional notes on editing and understanding the binaries, as well as output from the tools I used, which is now available [here](investigations/MessingWithSCHIP.md). This is because I forgot a lot of this over the course of the past year and I should probably have written it down the first time. I have also included new binaries for SCHIP (1.1) and SCHPC, GCHIP and GCHPC, which have been modified for use on the G series calculators (several ram addresses change on the new platform, but these are hardcoded into the binary).
I have taken some additional notes on editing and understanding the binaries, as well as output from the tools I used, which is now available [here](investigations/MessingWithSCHIP.md). This is because I forgot a lot of this over the course of the past year and I should probably have written it down the first time. I have also included new binaries for SCHIP (1.1) and SCHPC, GCHIP and GCHPC, which have been modified for use on the G series calculators (several ram addresses change on the new platform, and these were hardcoded into the binary).
# Behavior and Quirk Investigations
Where possible, these link to a fuller investigation blog of each quirk and the process of fixing it for SCHPC.
@ -61,4 +63,4 @@ None of this would have been possible without [hpcalc.org](http://www.hpcalc.org
I'd also like to thank [John Earnest](https://github.com/JohnEarnest) for making Octo and inspiring me to take a look at this, and also the rest of the [AwfulJams team](http://www.awfuljams.com/) for their tireless? dedication to this cause.
Finally, I'd like to thank the person whom owned my HP48 calculator(s) previously, and kept it safely and in working condition in Portugal for what I can only assume has been around 25 years.
Finally, I'd like to thank the person whom owned my HP48 calculator(s) previously, and kept them safely and in working condition in Portugal for what I can only assume has been around 25 years.