Copyright 1978 by RCA Corporation
(All rights reserved under Pan-American Copyright Convention)
Printed in USA/2-78
VIP-311
ACKNOWLEDGMENT
COSMAC VIP has been created by Joe Weisbecker of
the RCA Laboratories, Princeton, N.J. so that everyone can
have fun and useful personal computer experiences. The
elegant and simple hardware system design and the
powerful video output together with the customized CHIP-8
language interpreter constitute a fresh and promising
approach to personal computers.
If questions arise regarding the VIP software or
hardware, write to
VIP
RCA Solid State Division
Box 3200
Somerville, N.J. 08876
or telephone
Area code 201 526-6141
Information furnished by RCA is believed to be accurate
and reliable. However, no responsibility is assumed by
RCA for its use; nor for any infringements of patents or
other rights of third parties which may result from its use.
No license is granted by implication or otherwise under
any patent or patent rights of RCA.
Trademarks Registered
Marca(s) Registrada(s)
Contents
I.Getting Started ...................................................................................................................5
What This Manual Covers .................................................................................................5
The Power Supply ..............................................................................................................6
What You See .....................................................................................................................7
Turning It On......................................................... ......................................................7
output)
*100-byte-per-second audio cassette interface
*Regulated power supply (wall-pack type)
*Crystal clock
*Sound circuits (for signal tones and games)
*512-byte ROM operating system
*Comprehensive documentation
*20 ready-to-use video game programs
*Unique CHIP-8 language (31 easy-to-use in-
structions)
*On-card RAM expansion up to 40% bytes
*On-card parallel 1/0 port
*Connector for extensive external expansion
capability
COSMAC VIP was designed for home hobby use. Just
add an inexpensive video display and an audio cassette
recorder for program storage. You don't need expensive,
hidden extras such as power supply, computer terminal,
external keyboard, or additional RAM. COSMAC VIP
provides everything needed for years of creative
computer fun for the whole family. With COSMAC VIP
you're immediately ready to play video games,
experiment with computer art or animation, write your
own programs with a new language called CHIP-8, or get
hands-on experience using machine language.
With COSMAC VIP you can easily create pictures
on the display screen and move them around. This
feature is invaluable for video games and not usually
available with computers costing several times as
much. The software you need to use your computer is
provided free instead of at added cost or not at all.
Simplified operation was a primary design goal so
that you don't have to waste a lot of time learning and
remembering complex operating procedures.
COSMAC VIP uses state-of-the-art devices coupled
with an efficient design. Full expansion capability
allows you to inexpensively tailor COSMAC VIP to
specific applications such as model railroad control,
music synthesis, or color graphics. You will soon.dis
cover that COSMAC VIP provides a refreshingly
new, lower-cost alternative to conventional computers
which have been aimed more toward mathematics
and business than fun.
What This Manual Covers
T'his manual serves several purposes. It lets you get
started playing video games with minimum effort. just
set up your system as described in this section and learn
how to use the operating system and cassette interface as
described in the next section. You can immediately use
all the video games in Appendix D without going any
further.
If you want to learn to write your own programs,
Section III describes an easy language to start with called
CHIP-8. Most of the programs in Appendix D were
designed using this language. CHIP-8 looks somewhat
like machine language but is quicker to learn and easier
to use than many of the more common high-level
languages. It also requires much less RAM, which save8
you a lot of money.
6
RCA COSMAC VIP Instruction Manual
CHIP-8 includes a real time clock, random number
generator, decimal conversion, and digit or graphic
display capability. It only uses 512 bytes of RAM leaving
over 1024 bytes for programs in a 2048-byte system.
(You can get an additional 2048 bytes of RAM by
plugging four more RAM chips into your card.)
With the aid of the User Manual for the CDPI802
COSMAC Microprocessor, MPM-201, you can explore
the fascinating world of machine language programming.
You can even combine, machine language programs with
CHIP-8 programs or develop your own interpretive
languages.
For hardware hackers, COSMAC VIP provides
complete external interface capabilities. Some
suggestions for inexpensive external devices and
applications are listed in Section VI. Logic diagrams,
data sheets, trouble -shooting hints, and test programs are
provided so that you can explore the hardware in as much
detail as you want.
This manual assumes that you are familiar with
computer basics from reading one or more of the
excellent magazines devoted to home computing. You
should understand RAM, ROM, memory addressing,
instructions, bytes, etc. The use of a scope
will facilitate setting up the cassette system and identifying hardware problems in the rare case where they
occur. Hex notation is used in this manual unless noted
otherwise. (One byte equals two hex digits.)
The Power Supply
The output wires of the internally regulated power
converter supplied with the COSMAC VIP CDP18S711
are connected to the +V DC and GND pads at the back
left comer of the PC card. The power converter output is
regulated +5 V DC at 600 mA. If you wish to add more
RAM to your system, however, you may need a
higher-current power supply. A 2048-byte system
requires about 350 mA (600 mA worst case). A
4096-byte system should require average current of
about 600 mA. If, however, your RAM chips require
above average power, you may need to supply as much
as 900 mA at 5 V DC, regulated. You can also use your
own unregulated 8 to 10 V DC power supply by adding
voltage regulator U28 (plus heatsink) to your COSMAC
VIP card and cutting the printed circuit link called LKI.
Never apply more than +5 V DC to the card unless the
U28 regulator has been added and link LKI cut.
Photograph of COSMAC VIP (Video Interface Processor) CDP18S711 The
cables in the upper right are for the video display and for cassette
operation. Cable on the upper left goes to the power converter.
1. Getting Started7
What You See
You must now decide on the video display for your
computer. The video pad at the back right comer of the
COSMAC VIP card provides a video signal which you
can connect directly to the high-impedance input of most
standard video monitors. The horizontal sync frequency
is 15,720 Hz and the vertical sync frequency is 60 Hz.
One solution to your video display need is a commercial
video monitor having a suitable input -- not rf or antenna
input. Another option is your TV receiver used with a
relatively inexpensive FCC-approved modulator. Do not
use a standard TV receiver with the VIP output connected
to the VHF or UHF antenna terminals. Do not use
transformerless TV receivers.
Turning It On
After attaching a suitable video display, apply power.
Make sure the RUN switch is in the down (or reset)
position. Hold hex key C down while you flip the RUN
switch up. You should hear a tone with key
C pressed and the Q light should be on. When you release
key C the tone and Q light should both go off. (The tone
occurs whenever the Q light is on.) You should now see a
random pattern of small square spots on the display. Push
hex keys 8008 in sequence and you should see 8008 at
the bottom left of the screen and 64 at the lower right.
Adjust your display controls for the best picture (white
spots on a-black background). You can experiment with
changing the values of RI, R2, and R4 on the COSMAC
VIP card to improve picture quality although this step
shouldn't be necessary. Certain modulators work better
with an R4 of 1 kilohm instead of 200 ohms. If you don't
get a video picture refer to Section VII for
troubleshooting hints.
After completing the above set-up procedure, you are ready
to enter and run programs on your COSMAC VIP.
The COSMAC VIP operating system, explained in the
next section, permits you to load programs into memory
from the hex keyboard, verify them, and record them
on cassettes for later reuse.
11. COSMAC VIP Operation
9
COSMAC VIP is operated with the RUN switch and
hex keyboard. The PWR light shows that power is on.
The Q light is activated by various programs. A tone is
sounded whenever the Q light is on. The TAPE light
glows when cassette input data is present. When using
COSMAC VIP, always start with the RUN switch in the
down (or reset) position. Flipping the RUN switch up
initiates execution of machine language programs
beginning at memory location 0000. If you have
previously stored the CHIP-8 Ian_ guage interpreter
program at locations 0000-01FF, execution of a program
written in this language will begin at 0200. To manually
terminate execution of any program, flip RUN down.
Using the Operating System
With COSMAC VIP you can load programs into
memory from the hex keyboard or cassette recorder,
record the contents of memory on cassettes, show the
contents of memory bytes in hex form on the display,
and examine the contents of CDP1802 microprocessor
registers. These functions are performed with the aid of a
special program called an operating system. This
operating system is contained in a ROM so that it's ready
to use as soon as power is turned on. It is located at
memory locations 8000-81FF. A machine code listing
and summary of this operating system is provided in
Appendix B.
To use the operating system hold key C down on the
hex keyboard when you flip RUN up. You will hear a
tone. Release key C and you're ready to use the
operating system.
KEYOPERATION
0
A
F
B
For any of these operations you must first enter a
memory address. Enter the 4 hex digits of any memory
address using the hex keyboard (most significant digit
first). You will see the address at the lower left of the
screen and the byte contained in that address at the lower
right. Remember that addresses and bytes are always
entered and shown in hex form. Suppose you entered
0200. You will see 0200 at the bottom left of the screen
and the byte stored at 0200 at the lower right.
If you want to change this byte, press the 0 key. Now
press two digits of the new byte (most significant digit
first) and it will be stored at 0200 replacing the original
byte. You will see this change on the screen. If you enter
another byte it will be shown and stored at the next
higher address in sequence (0201 in this example). You
can load any, sequence of bytes directly from the hex
keyboard in this manner. If you make a mistake, flip
RUN down. With key C pressed, flip RUN back up.
Enter the address at which you made the error. Press key
0 and resume entering your program.
After selecting the operating system you can do four
different operations as shown in the following table:
Note the random bit pattern on the screen above the
hex display. This pattern is the binary data
10
RCA COSMAC VIP Instruction Manual
contained in the last 256-byte page of the on-card RAM.
If you have a 2048-byte RAM, you are seeing locations
0700-7FF on the screen. Bit 7 of the byte at 0700 is in
the upper left comer. Try storing a sequence of eight AA
bytes followed by eight 55 bytes starting at location
0700. Keep repeating this sequence to draw a
checkerboard pattern on the screen. There are 32 rows of
spots on the screen. Each row represents 8 memory bytes
(64 bits). Locations 0700-0707 are shown in the top row,
0708-07OF in the next row down. Draw a bit map on
paper and you can construct pictures on the TV screen by
entering the proper byte sequences. The byte pattern for
displaying the word COSMAC is shown in Appendix A.
Memory Read
Suppose you wish to examine the contents of a
memory location. Flip RUN up while pressing key C.
Enter the address of the location you want to examine.
Press key A for the Memory Read mode. You will see
the memory address and the byte stored at that address
on the screen. Press any hex key to step through memory
and see the contents. Memory locations examined are
left unchanged. If a program doesn't run properly you
can use this mode to verify that it was stored correctly in
memory.
You can now enter and run the short beeper program
shown in Appendix A. Flip RUN up with key C pressed.
Release key C and enter address 0000. Press key 0 to
select the Memory Write mode. Now enter the beeper
program one byte at a time using the hex keyboard. Flip
RUN down to reset the computer. Flip RUN up to
execute the beeper program you just loaded into
locations 0000-OOOC. You can load and run any
COSMAC VIP program in this manner. For most of the
game programs you will first have to load the CHIP-8
interpreter (Appendix C) into locations 0000-OIFF
followed by the game program starting at location 0200.
Tape Write
Any program you load into memory will be lost when
you turn off power. Unless it is safely stored, you will
have to key it in by hand again the next time you want to
use it. The cassette interface is provided so that after
keying in a program you can then record it on an audio
cassette; and when you want to use the program again,
all you have to do is play it back into the memory from
the cassette. This playback usually takes less than 30
seconds.
The COSMAC VIP cassette interface was designed to
work with most standard audio cassette recorders.
Panasonic models RQ-309DS, RQ-212D, and RQ-413S
have yielded satisfactory results as has the Sony
TC-150. In general, better quality recorders provide
more reliable operation.
Your tape recorder must have an 8-ohm earphone or
external speaker jack and a microphone input jack.
Connect the cassette recorder to the COSMAC VIP
tape-in tape-out pads on the right-hand side of the card as
shown in the cassette attachment diagram in Appendix
A.
After properly connecting your cassette recorder you
can try recording and playing back a cassette using the
operating system as described below. Follow the cassette
recording guidelines provided in Appendix A for best
results. If you run into trouble, use the cassette phase and
data test procedures described in Appendix A for
troubleshooting.
The memory is divided into 256-byte pages for
recording. You can record 1 to 15 consecutive pages on
tape. The low-order byte of your starting address should
be 00. Select the operating system by holding key C
down while flipping RUN up. Enter the 4-digit address
of the first page to be recorded on tape. Press key F and
you're ready to record. Rewind a blank cassette and place
your cassette unit in the record mode. Wait about 10
seconds and tap the hex key that represents the number
of pages you want to record on tape. The screen will go
blank and you'll hear a tone while recording. When the
specified number of pages has been recorded on the
cassette, the tone will end and the last memory byte
recorded on tape will be shown on the screen.
Tape Read
To load memory from a previously recorded cassette,
first select the operating system (RUN and key C). Enter
the memory address of the first page to be loaded
(usually 0000). Press key B to select the Tape Read
mode. Rewind and play the cassette. Immediately press
the hex key representing the number of pages you want
to load into memory from the cassette. The tape recorder
tone control should be set to maximum high. The volume
control should be set for a steadily glowing tape light
when data is being read from the tape. The screen will go
blank while the program is loaded from the tape into
memory. It will show the last byte loaded into memory
at the end of loading.
If the Q light and tone come on while a tape is being
read, an error occurred. Flip RUN down, rewind the
cassette, and try again. You may h ' ave to readjust the
cassette volume control. Be sure that the cassette
contains at least as many pages as you specify to be
loaded. For most of the game programs, load the
CHIP-8 interpreter program (Appendix C) into 0000-
11. COSMAC VIP Operation1
01FF, then load the game program starting at 0200.
Record a cassette from 0000 to the end of the game
program. When you load this tape, starting at 0000, you
will be ready to play the game.
Testing Your Cassette
System
Test your cassette system by entering the beeper
program at 0000 (Appendix A). Store 25 at 06FF. Now
record 7 pages on a cassette starting at 0000. Load these
7 pages back into memory from the cassette starting at
0000. If no errors occur you should see "06FF 25" on
the screen after loading is complete. Flip RUN down,
then up, and the beeper program should be running.
After recording and checking a program cassette, you can
break out the tabs at the top of the cassette to prevent
accidental erasure. In the event you wish to record on a
cassette after you have broken out the tabs, you can do so
simply by pasting tape over the tab holes. You can record and
keep your own cassette software library starting with the game
programs in Appendix D. Cassette recording or playback
should require 5 + 2.5N seconds. N is the number of pages
recorded on tape. Recording or loading the entire 2048-byte
RAM (8 pages) will require less than 30 seconds. Ile next
section describes how you can design your own programs
using a unique easy-to-learn programming language called
CHIP-8.
III. CHIP-8 Language Programming
CHIP-8 is an easy-to-learn programming language
that lets you write your own programs. To use the
CHIP-8 language, you must first store the 512-byte
CHIP-8 language program at memory locations 0000 to
01FF. The CHIP-8 language program is shown in
Appendix C in hex form so you can enter it directly in
memory using the hex keyboard. You can then record it
on a memory cassette for future use. Each CHIP-8
instruction is a two-byte (4-hex-digit) code. There are
31, easy-to-use CHIP-8 instructions as shown in Table L
When using CHIP-8 instructions your program must
always begin at location 0200. There are 16 onebyte variables labeled 0-F. VX or VY refers to the value
of one of these variables. A 63FF instruction sets
variable 3 to the value FF (V3=FF). I is a memory
pointer that can be used to specify any location in RAM.
An A232 instruction would set I= 0232. 1 would then
address memory location 0232.
Branch Instructions
There are several types of jump or branch instructions
in the CHIP-8 language. Instruction 1242 would cause
an unconditional branch to the instruction at memory
location 0242. Instruction BMMM lets you index the
branch address by adding the value of variable 0 to it
before branching. Eight conditional skip instructions let
you test the values of the 16 one-byte variables or
determine if a specific hex key is being pressed. This
latter capability is useful in video game programs. (Only
the least significant hex digit of VX is used to specify
the key.)
A 2570 instruction would branch to a subroutine
starting at location 0570. 00EE at the end of this
subroutine will return program execution to the
instruction following the 2570. The subroutine itself
could use another 2MMM instruction to branch to (or
call) another subroutine. This technique is known as
subroutine nesting. Note that all subroutines called (or
branched to) by 2MMM instructions must end with
00EE. Ignoring this rule will cause hard-to-find
program bugs.
How to Change and
Use the Variables
The CXKK instruction sets a random byte value into
VX. This random byte would have any bits matching 0
bit positions in KK set to 0. For example, a C407
instruction would set V4 equal to a random byte value
between 00 and 07.
A timer (or real-time clock) can be set to any value
between 00 and FF by a FX15 instruction. This timer is
automatically decremented by one, 60 times per second
until it reaches 00. Setting it to FF would require about 4
seconds for it to reach 00. This timer can be examined
with a FX07 instruction. A FX18 instruction causes a
tone to be sounded for the time specified by the value of
VX. A value of FF would result in a 4-second tone. The
minimum time that the speaker will respond to is that
corresponding to the variable value 02.
A FX33 instruction converts the value of VX to
decimal form. Suppose 1=0422 and V9=A7. A F933
instruction would cause the following bytes to be stored
in memory:
042201
042306
042407
Since A7 in hex equals 167 in decimal, we see that the
14
RCA COSMAC VIP Instruction Manual
Table I - CHIP-8 Instructions
InstructionOperation
1MMMGo to 0MMM
BMMMGo to 0MMM + V0
2MMMDo subroutine at 0MMM (must end with 00EE)
00EEReturn from subroutine
3XKKSkip next instruction if VX = KK
4XKKSkip next instruction if VX n.e. KK
5XY0Skip next instruction if VX = VY
9XY0Skip next instruction if VX n.e. VY
EX9ESkip next instruction if VX = Hex key (LSD)
EXAlSkip next instruction if VX n.e. Hex key (LSD)
6XKKLet VX = KK
CXKKLet VX = Random Byte (KK = Mask)
7XKKLet VX=VX+ KK
8XY0Let VX = VY
8XY1Let VX = VX/VY (VF changed)
8XY2Let VX = VX & VY (VF changed)
8XY4Let VX=VX +VY(VF=00 if VX+VY l.e. FF,VF=01 if VX +VY>FF)
8XY5Let VX = VX - VY (VF = 00 if VX < VY, VF = 01 if VX g.e. VY)
FX07Let VX = current timer value
FX0ALet VX = hex key digit (waits for any key pressed)
FX15Set timer = VX (01 = 1/60 second)
FX18Set tone duration = VX (01 = 1/60 second)
AMMMLet I = 0MMM
FX1ELet I = I + VX
FX29Let I = 5-byte display pattern for LSD of VX
FX33Let MI = 3-decimal digit equivalent of VX (I unchanged)
FX55Let MI = V0:VX (I = I + X + 1)
FX65Let V0: VX MI (I = I + X + 1)
00E0Erase display (all 0's)
DXYNShow n-byte MI pattern at VX-VY coordinates.
I unchanged. MI pattern is combined with existing display via EXCLUSIVE-OR function.
VF = 01 if a 1 in MI pattern matches 1 in existing display.
0MMMDo machine language subroutine at 0MMM (subroutine must end with D4 byte)
three RAM bytes addressed by I contain the decimal
equivalent of the value of V9.
If 1 =0327, a F355 instruction will cause the values of
VO, V1, V2, and V3 to be stored at memory locations 0327,
0328, 0329, and 032A. If 1=0410, a F265 instruction would
set V0, V1, and V2 to the values of the bytes stored at RAM
locations 0410, 0411, and 0412. FX55 and FX65 let you
store the values of variables in RAM and set the values of
variables to RAM bytes. A sequence of variables (V0 to
VX) is always transferred to or from RAM. If X = 0, only
VO is transferred.
The 8XYI, 8XY2, and 8XY4, and 8XY5 instructions
perform logic and binary arithmetic operations on two
1-byte variables. VF is used for overflow in the arithmetic
operations.
Using the Display
Instructions
An 00E0 instruction erases the screen to all 0's. When the
CHIP-8 language is used, 256 bytes of RAM are displayed
on the screen as'an array of spots 64 wide by 32 high. A
white spot represents a I bit in RAM, while a dark (or off)
spot represents a 0 bit in RAM. Each spot position on th ' e
screen can be located by a pair of coordinates as shown in
Fig. 1.
The VX byte value specifies the number of horizontal
spot positions from the upper left corner of the display. The
VY byte value specifies the number of vertical spot
positions from the upper left corner of the display.
The DXYN instruction is used to show a pattern of spots
on the screen. Suppose we wanted to form the
III. CHIP-8 Language Programming15
Fig. 1 - Display screen coordinate structure.
pattern for the digit "8" on the screen. First we makepattern will be shown on the screen in the upper left
up a pattern of bits to form "8" as shown in Fig. 2.corner.
You can write a program to show the "8" pattern on
the screen as follows:
Fig. 2 - Patternof bitsjorming digit 8.
In this example we made the "8" pattern five spots
high by four spots wide. Patterns to be shown on the
screen using the DXYN instruction must always be one
byte wide and no more than fifteen bytes high. (Several
small patterns can be combined to form larger ones on
the screen when required). To the right of the."8" pattern
in Fig. 2 are the equivalent byte values in hex form. We
could now store this pattern as a list of five bytes at
RAM location 020A as follows:
020AF0
020B90
020CF0
020D90
020EF0
Suppose we now want to show this pattern in the
upper left corner of the screen. Well assign V I= VX and
V2=VY. Now we let VI=V2=00 and set I=020A. If we
now do a D125 instruction, the "8"
The first column of this program shows the memory
locations at which the instruction bytes in the second
column are stored. The third column indicates the
function performed by each instruction in shorthand
form. Only the bytes in the second column are actually
stored in memory.
With the CHIP-8 interpreter stored at 0000-OIFF, you
can load the above program in memory and run it. Set VI
and V2 to different values to relocate the “8" pattern on
the screen. The VX-VY coordinates always specify the
screen position of the upper lefthand bit of your pattern.
This bit can be either 0 or 1. The last digit of the DXYN
instruction specifies the height of your patterns or the
number of bytes in your pattern list.
When a pattern is displayed, it is compared with any
pattern already on the screen. If a 1 bit in your ,pattern
matches a I bit already on the screen, then a 0 bit will be
it
shown at this spot position and VF will be set 1,6
value
of 01. You can test VF following a DXTN instruction to
determine if your pattern
16
0202 A300
0300
RCA COSMAC VIP Instruction Manual
touched any part of a previously displayed pattern. This
feature permits programming video games which require
knowing if one moving pattern touches or hits another
pattern.
Because trying to display two I spots at the same
position on the screen results in a 0 spot, you can use the
DXYN instruction to erase a previously displayed
pattern by displaying it a second time in the same
position. (The entire screen can be erased with a single
00E0 instruction.) The following program shows the "8"
pattern, shows it again to erase it, and then changes VX
and VY coordinates to create a moving pattern:
This program continuously increments V3, converts it to
decimal form, and displays it on the screen.
The FX0A instruction waits for a hex key to he
pressed, VX is then set to the value of the pressed key,
and program execution continues when the key is
released. (If key 3 is pressed, VX=03). A tone is heard
while the key is pressed. This instruction is used to wait
for keyboard input.
I =V2 (LSDP)
SHOW 5MI@V4V5
V6=03
TONE=V6
V6=20
TIME=V6
V6=TIME
SKIP;V6 EQ 00
GO 0224
V3+01
ERASE
GO 0202
Applying CHIP-8
The "8" pattern byte list was moved to 0210 to make
room for the other instructions. Try changing the values
that VI and V2 are incremented by for different
movement speeds and angles. A delay could be inserted
between the two DXYN instructions for slower motion.
The FX29 instruction sets I to the RAM address of a
five-byte pattern representing the least significant hex
digit of VX. If VX =07, then I would be set to the
address of a "7" pattern which could then be shown on
the screen with a DXYN instruction. N should
always be 5 for these built-in hex-digit patterns.4.
Appendix C shows the format for these standard hex
patterns. The following program illustrates the use of
the FX29 and FX33 instructions:
MI=V3 (3DD)
VO:V2=MI
V4=00
V5=00
I =VO (LSDP)
SHOW 5MI@V4V5
V4+05
I=Vl(LSDP)
SHOW 5MI@V4V5
V4+05
You should now be able to write some simple CHIP-8
programs of your own. Here are some things to try:
1.Wait for a key to be pressed and show it on the
display in decimal form.
Show an 8-bit by 8-bit square on the screen and
2.
make it move left or right when keys 4 or 6 are held
down.
Show an 8-bit square on the screen. Make it move
randomly around the screen.
Show a single bit and make it move randomly
around the screen leaving a trail.
Program a simple number game. Show 100
(decimal) on the screen. Take turns with another
player. On each turn you can subtract 1-9 from the
number by pressing key 1-9. The first player to
reach 000 wins. The game is more interesting if you
are only allowed to press a key which is
horizontally or vertically adjacent to the last key
pressed.
If you are unsure of the operation of any CHIP-8
instruction, just write a short program using it. This step
should clear up any questions regarding its operation. In
your CHIP-8 programs be careful not to write into
memory locations 0000-01FF or you will
111. CHIP-8 Language Programming
CAPTURE
ly
ified ti
17
lose the CHIP-8 interpreter and will have to reload it.
You can insert stopping points in your program for
debugging purposes. Suppose you want to stop and
examine variables when your program reaches the
instruction at 0260. Just write a 1260 instruction at
location 0260. Flip RUN down and use operating system
mode A to examine variables V0-VF. The memory map
in Appendix C shows where you can find them.
After the above practice you are ready to design more
sophisticated CHIP-8 programs. Always prepare aflowchart before actually writing a program. The last
352 bytes of on-card RAM are used for variables and
display refresh. In a 2048-byte RAM system you can use
locations 0200-069F for your programs. This area is
enough for 592 CHIP-8 instructions (1184 bytes). In a
4096-byte RAM system you can use locations
0200-0E8F. This area is equal to 1608-CHIP-8
instructions (3216 bytes).
Some Program Ideas
Here are a few ideas for programs to write using the
CHIP-8 language:
9.LUNAR LANDING - Program a graphic lunar
landing game.
10.COLLIDE - Try to maneuver a spot from one
edge of the screen to the other without hitting
randomly moving obstacles.
Il.
moving spots within a spec
- Try to chase and catch random
me limit.
12.LEARNING EXPERIENCES - Program graphic
hand and eye coordination exercises for young
children or those with learning disabilities.
13.NUMBER RECOGNITION - Show groups of
objects or spots on the screen. Young child must
press key representing number of objects shown
to score.
WALL BALL - Program a wall-ball-type paddle
game for one player.
15. FOOTBALL - Each player enters his play via the
hex keyboard and the computer moves the ball on
the screen.
1.INTOXICATION TESTER - Display a six digit
16.BLACKJACK - Play "21" against the com
random number on the screen for several seconds.
You must remember this number and enter it from
the keyboard within ten seconds after the screen
17. HOLIDAY DISPLAYS - Design custom,
goes blank to prove that you're sober and score.
2.NUMBER BASE QUIZ - Display numbers in18.
binary or octal on the screen. You must enter
their decimal equivalent to score points.
3.DICE - Push any key to simulate rolling dice
displayed on the screen.
19.TURING MACHINE - Simulate a simplifed
4.PUPPETS - Show large face on the screen. Let
small children move mouth and roll eyes by20.
pushing keys.
BUSY BOX - Let small children push keys to21.
r
make different object appear on the screen,
move, and make sounds.
22.NIM - Program Nim with groups of spots
6.SHUFFLEBOARD - Simulate shuffleboard
type games on the screen.
23.BLOCK PUZZLES - You can simulate a variety
7.COMPUTER ART - Design new programs to
generate pleasing geometric moving patterns on
the screen.
24.BOMBS AWAY - Show a moving ship at the
8.INVISIBLE MAZE - Try to move a spot
through an invisible maze. Tones indicate when
you bump into a wall.
puter dealer.
animated displays for birthdays, Halloween,
Christmas, etc.
METRIC CONVERSION - Help children learn
metric by showing lengths on screen in inches and
requiring centimeter equivalent to be entered to
score.
Turing machine on the screen.
TIMER - Use the computer to time chess games,
etc.
HEXAPAWN - Program Hexapawn so that the
computer learns to play a perfect game.
shown on the screen.
of sliding block-type puzzles on the screen.
bottom of the screen. Try to hit the ship by
releasing bombs from a moving plane at the top of
the screen.
18
RCA COSMAC VIP Instruction Manual
25.PROGRAMMED SPOT - Introduce children to
programming concepts by letting them
preprogram the movements of a spot or object on
the screen.
The next section will discuss machine language
programming. You can even combine machine language
subroutines with CHIP-8 programs if desired.
Loading...
+ 38 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.