Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CHIP48 - A CHIP-8 interpreter for the HP48SX (version 2.20)

82 views
Skip to first unread message

Don Froula

unread,
Sep 11, 1990, 12:52:34 PM9/11/90
to
I've found that the CHIP-8 interpreter and sample BRIX program seems to work
just fine on my REV. D '48. The speed is quite good. Thanks for a nice
game development tool!

Craig Ruff

unread,
Sep 11, 1990, 1:34:11 PM9/11/90
to
In article <44...@apricot29.UUCP> fro...@motcid.UUCP (Don Froula) writes:
>I've found that the CHIP-8 interpreter and sample BRIX program seems to work
>just fine on my REV. D '48. The speed is quite good.

On my system, the game display seems to be skewed. My guess is that the
screen buffer addresses are off somehow.
--
Craig Ruff NCAR cr...@ncar.ucar.edu
(303) 497-1211 P.O. Box 3000
Boulder, CO 80307

David Moews

unread,
Sep 11, 1990, 3:04:40 PM9/11/90
to
Does anyone know how fast this interpreter is, compared to the original
one running on a 1.78 MHz 1802?
--
David Moews mo...@math.berkeley.edu

Jan Brittenson

unread,
Sep 11, 1990, 10:04:48 PM9/11/90
to
In article <1990Sep3.1...@santra.uucp>
gs...@niksula.hut.fi (Andreas Gustafsson) writes:

> Below is a HP48SX machine code object that should be uudecoded and
> then downloaded to the calculator using Kermit.

Excuse me for asking, but how would you load it? The only way I
could load it was to strip off the archive header/code object
type/length, load it with kermit, and change the type from string to
code. It didn't work on my rev D, though (no surprise there).

Andreas Gustafsson

unread,
Sep 12, 1990, 9:42:05 AM9/12/90
to

> > Below is a HP48SX machine code object that should be uudecoded and
> > then downloaded to the calculator using Kermit.

> Excuse me for asking, but how would you load it? The only way I
> could load it was to strip off the archive header/code object
> type/length, load it with kermit, and change the type from string to
> code. It didn't work on my rev D, though (no surprise there).

Some people may have had problems downloading CHIP48 and BRIX because
they don't have the "uudecode" program (a standard Unix utility, and
also available as PD for most other systems including MS-DOS).

Several other people have been successful with uudecode, but have had
problems downloading the resulting binary files using Kermit. One
reason for this is that most Kermits silently destroy binary files if
you don't remember to set Kermit to binary mode first (on most Kermits
the command for this is "set file type binary"). Note that you need
to do this on the computer; just setting binary mode on the HP48SX is
_not_ enough.

When downloaded to the HP48SX, CHIP is supposed to be a "Code" object
(displayed as the word "Code" when you press "blue-shift CHIP"). BRIX
should be a string containing seemingly random gibberish.

For those who still have problems, here are the same objects as in the
original posting, but encoded using the "->ASC" program by Bill Wickes.
If you get your uudecode and Kermit to work properly you shouldn't
need these, but here they are anyway:

Decode this using ASC-> and store the resulting Code object
as CHIP:

%%HP: T(1)A(R)F(,);
"CCD207AE008FFBA818FB976034EC607134152080863F0808431500662184A340
00208FD7B5013681AF0AAF0AF1AF2AF381AF123400400C213414713514334C2A
208A6A1174143818F843400C108B260693117477418F2D760174E78FB976081A
F1A13481B43459C00C2135808210515F0F217015C1161CC96CBE808FD281AF08
3200281AF0B81B43444D00C2134D21447133D232831134146DA1468A68F80824
08F000EF281AF0179B05A180874D98F2D760142164808C808F8F75D0081AF1BD
A818F0181AF037391135D217015701C0C6C681B4CA34F3C00C2134D215E381B4
CA81B5818F2B0681B2460697F11B1088F735608FB97606F6F8A86115F015C016
0170CC6AEF01785114E96AB2161156090AF116015E2801BBE8082200C0E3215C
2D232831134146DA1468A68F8082408F000EF281AF118A6606F70D23108EA340
8F000EF681AF017CC014E96A80A6E14C16114E96A80A6E14C77C0320108018F0
6110DAD280115E31583FC0EF6808740080870008087370301037B701560FE808
2010EF2154062EFD22215702017114F1C101C681AF12C201D21570C681B4CA34
BEA00C213401D230064EFD230F6BDFD2310161DFD2311167CFD231216DBFD231
4163BF76AFD214E06172789FD014A071C201172758F1C2D215E106767FD015A1
07DE01F6F680821100E62067A7F0714C03C681B4CA34FD900C2134D215E08018
F06110DAD280116015E00EF20113613406762F81AF1874FE13507DA0172DEDAD
2310E8A2D031EE8A2440281B4346C700CA3104D5130146134AF2154716F15471
6F14C818F04A6D96D7D0381B434AB900C21341428A800818F83140818F24C213
4D215E381AF0B037C3E81AF0B0381B43447900C2134142818F24C213681AF131
583136142818F0334040008B60014060BF7A0E17114B14E9664181AF2B818F21
81AF2B0374ED17114B14E962EE69DF742E6CCF7C1E6AEF7EBD17114B148037FA
D17114B14EA6214C0317115B01C1300906B07CFD14803301906017BED0E6A15C
1033029060175DD0E6215C103303906D17FBDAE80E690E62BEE0E6514C033049
06017C9DC215C167BD30590651768DBECC2E615C16C9D306906917B6DAEA8196
215C1AE6618D307906C07C4DDE63CF30E906017A3DC615C1655D02759C81AF08
037AAC758CD014AC281AF0B03739C344010013615A113617114F1C10E6214C03
6561744B47F90A6F70E281AF18764C81AF087E9CD731F10E6631F30E63171AE2
15F0A62AE53102B61550AE1AE215F0B6980D080CF2EA82201C171037BB28E41C
FAE22E90A50B6614C200377DBD214E708CAE3A8717114B1C131E9962D0311A96
2E002AEBAE069CDAEBAE0699D13606D3DB7C3C90E017D5A413B076AEF7BAB314
015C1734A471DB701C90E4E07134AEB030702774B17114B1C131709668113606
7A5B14A071361480331A0966417B7F47014C03076D2931519662114E06702B07
14C0331819662114E06711B0714C0331E1966B1D214E81AF10A3A40081AF0003
319296681D215E0DAC6C6C281AF0803313396260639014EAE781B4349F400C21
34D096B42AEB808A0C015E205CA04162819636EDF02D881AF1880824DFF008B2
007E1A134D4D2221500160154016021150016015401602015001601540033155
9665371DA14E14D1361348BAE117116181AF18B3640081AF0866DF0331569663
3759A14F14C1361348BA2E17116181AF18B3640081AF0866DF0281B4340E400C
213681AF1814416481AF1914416481AF1A14416481AF1B1441640181B434E940
0C213614681AF0816414681AF0916414681AF0A16414681AF0B164012C300202
C90E40C420D6C4C4C281B4CA349C100C281AF09DB819F2819F2819F2C6C681AF
0A31700E63C781B434C3000C2CB81AF0B81AF1813415E1D1AE5136818F2181AF
0881AF1B81B3C5C5C5C5C5C5C5C581B434F1100CAD2A89C6C213414EAE7BF3BF
3F5D2A89C6C213414EAE7BF3BF3F5D2A89C6C213414EAE7BF3BF3F5D2A89C6C2
13414EAE781AF111301462C90E80818F04818F042081AF0181AF12C21343102B
6280821809E650AE6A6E80D01561A9A0E1791AF080FD2E30180FDA9F0E1AB9F0
E1780FD2C90EB180FD154116F16F16115416B0080FD154120A4E94A6067AE010
00C030FC0CCC3CF303C333FF0FCF3FFC7907E99070C9072E90740A0762A0784A
07A6A07C8A07EAA070DA072FA0741B0763B0785B07A7B07C9B07EBB070EB0720
C0742C0764C0786C07A8C07CAC07ECC070FC0721D0743D0765D0787D07A9D07C
BD07EDD0700E0722E0744E0766E0788E07AAE07CCE07EEE0701F0723F0745F07
67F0789F07ABF07CDF07EFF07020172401746017680178A017AC01785807A780
7C9807EB8070E807209074290764907F999F26227F1F8FF1F1F99F11F8F1FF8F
9FF1244F9F9FF9F1FF9F99E9E9EF888FE999EF8F8FF8F8810020040080061023
0460821148884824844422824221812814121119720F030B13026308830E930E
A30DB302D306A306B402C409D404050595052600000000000000000000000000
0000000000010040000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000157B"

Decode this using ASC-> and store the resulting rather ugly
string object as BRIX:

%%HP: T(1)A(R)F(,);
"C2A2053200E6505600B660A6003AC0AD1BA740A3042180B720B3212160C602D6
F13A01CD1D226F060016003A210D1107803AE00D1106040F510F70030021436C
F076E1861096FF3AE06D173A01CD1D06400E1AC7EF06600E1AC72006F3C820CD
1D3AE06D176848784906F3682016F1782174F121CA6400861064F386FF740096
106D17F31021AA74F121AA06500857F30021AA06100F81080616CF08213AC00D
1706EF9830226F5710226F540621ED216496FF0806085CF31021AC16200851F3
10210E0851F31021EE0851F310218E06020F813AE0E7FF080E084016000D11E3
00210321ED87FF84EF86FF21EE87108420861006400F8196FF21073A415F332F
561F92367346003D5437502F923D5400EE0E000800CF00AA0000000000D4B3"

Sizes and checksums (for version 2.20):

CHIP 1878 bytes, checksum #B751h
BRIX 285 bytes, checksum #3B4Dh

Note that CHIP modifies itself when run, so the checksum applies only
to the newly downloaded code object. Calculate checksums using
"blue-arrow CHIP BYTES" and "blue-arrow BRIX BYTES", respectively.

The BRIX demo is run by pressing BRIX CHIP. For detailed
instructions, please refer to the original CHIP-48 release posting
(<1990Sep3.1...@santra.uucp>).

--
Andreas Gustafsson
Internet: gs...@niksula.hut.fi
Voice: +358 0 563 5592

Andreas Gustafsson

unread,
Sep 15, 1990, 5:43:49 AM9/15/90
to
mo...@math.berkeley.edu (David Moews) writes:
> Does anyone know how fast this interpreter is, compared to the original
> one running on a 1.78 MHz 1802?

I haven't run any actual benchmarks, but they appear approximately
equal. A 1.78 MHz 1802 is about 0.11 MIPS.

In the 1802 interpreter, the DXYN instruction waited for for the next
60 Hz interrupt in order to synchronize drawing with the display
refresh. CHIP48 tries to emulate this behaviour by waiting for the
next 64 Hz timer increment, so most games run slightly faster on the
HP48SX. Removing this synchronization causes typical programs such as
BRIX to run perhaps twice as fast, in both implementations.

0 new messages