Download from Www.Somanuals.com. All Manuals Search And Download.
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)
Download from Www.Somanuals.com. All Manuals Search And Download.
Contents
I.
Getting Started ...................................................................................................................5
What This Manual Covers .................................................................................................5
The Power Supply ..............................................................................................................6
What You See .....................................................................................................................7
Turning It On
......................................................... ......................................................7
II. COSMAC VIP Operation ..................................................................................................9
Using the Operating System .............................................................................................9
Memory Write ........................................................ ..........................................................9
Memory Read ......................................................... ....................................................... 10
Tape Write .............................................................. ....................................................... 10
Tape Read ............................................................... ....................................................... 10
Testing Your Cassette System ............................... ....................................................... 11
III. CHIP-8 Language Programming .......................... ....................................................... 13
Branch Instructions ............................................... ....................................................... 13
How to Change and Use the Variables ................. ....................................................... 13
Using the Display Instructions .............................. ....................................................... 14
Applying CHIP-8 .................................................... ....................................................... 16
Some Program Ideas .............................................. ....................................................... 17
IV. Machine Language Programming ................................................................................. 19
VIP Machine Coding ....................................................................................... .............. 19
Putting Machine Coding and CHIP-8 Language Together ......... ............................... 19
Machine Language Programming Summed Up ........................... ............................... 20
V.
Logic Description .......................................................................................... ................. 21
How Memory is Addressed ............................................................ ............................... 21
How the Input/Output Works ........................................................ ............................... 21
VI. Expansion Considerations and Connections ................................. ............................... 23
Using the Byte Input/Output .......................................................... ............................... 23
Using the Expansion Interface ....................................................... ............................... 24
Some Expansion Ideas .................................................................... ............................... 24
VII. Troubleshooting Hints ................................................................................................... 27
No Sound ......................................................................................................................... 27
No Display ....................................................................................................................... 27
Other Problems .............................................. ............................................................... 27
Signal Tracing ................................................ ............................................................... 27
Last Resorts .................................................... ............................................................... 28
Appendix A - Test and Operating Data ................... ............................................................... 29
Byte Pattern for Displaying "COSMAC" .... ............................................................... 29
Beeper Program ............................................. ............................................................... 29
Cassette Attachment Diagram ...................... ............................................................... 30
Cassette Phase Test ........................................ ............................................................... 30
Cassette Data Test .......................................... ............................................................... 31
Cassette Recording Guidelines ...................... ............................................................... 32
Memory Test Program.................................................................................................... 32
Download from Www.Somanuals.com. All Manuals Search And Download.
Contents (Continued)
Appendix B - Operating System ................................................................................................. 33
Operating System Listing .................................................................................................33
Operating System Register Table ....................................................................................34
Operating System Summary ............................................................................................34
Appendix C - CHIP-8 Interpreter ................................................. ............................................35
CHIP-8 Interpreter Listing ................................................. ............................................35
CHIP-8 Memory Map .......................................................... ............................................36
CDPI802 Register Use for CHIP-8 Interpreter ................. ............................................36
CHIP-8/Operating System Standard Digit Display Format ..........................................37
CHIP-8 User Notes .................................................................................. .........................38
Appendix D - Video Games ........................................................................ ................................39
1. VIP Kaleidoscope .......................................................................................... ...............40
2. VIP Video Display Drawing Game .............................................................. ...............41
3. VIP Wipe Off ................................................................................................. ...............42
4. VIP Space Intercept ...................................................................................... ...............43
5. VIP 4096-Bit Picture ..................................................................................... ...............44
6. VIP Figure Shooting at Moving Target ....................................................... ...............45
7. VIP Tick-Tack-Toe Game ...................................................... .....................................46
8. VIP Spooky Spot ..................................................................... .....................................48
9. VIP Jackpot ............................................................................. .....................................49
10. VIP Snake Race ..................................................................... .....................................51
11. VIP Card Matching Game ................................................... .....................................52
12. VIP Armored Vehicle Clash ................................................. .....................................54
13. VIP Hi-Lo ..................................................................................................... ...............56
14. VIP Hex Reflex ............................................................................................ ...............57
15. VIP Dot-Dash ............................................................................................... ...............58
16. VIP A-Mazing .............................................................................................. ...............60
17. VIP Deduce .................................................................................................. ...............62
18. VIP Shooting Stars ...................................................................................... ...............63
19. VIP Strike-9 ................................................................................................. ...............64
20. VIP Card Game (like the well-known acey-ducey) .................................. ...............66
Appendix E - Logic Diagrams .................................................................... ................................67
Fig. E-1 - Microprocessor and Display Interface Circuits ............ ................................68
Fig. E-2 - ROM Circuits and Expansion Interface ........................ ................................69
Fig. E-3 - Keyboard, Decoding, Audio Oscillator, and Cassette
Interface Circuits ............................................................ ................................70
Fig. E-4 - RAM Circuits ........................................ ...........................................................71
Fig. E-5 - Power Supply Circuit and Byte Input/Otaput Interface ...............................72
Appendix F - Board Layout, Parts List, and Assembly Instructions ........................................73
1. Printed Circuit Board Layout ......................................................................................74
2. Parts List for RCA COSMAC VIP CDP18S711 .........................................................75
3. COSMAC VIP Expansion Notes ..................................................................................77
a. Soldering the PC Board ..................................................................................77
b. Voltage Regulator Option ..............................................................................77
c. Additional 2048-Byte RAM Option ...............................................................77
Appendix G - Data Sheets .............................................................................................................79
CDP 1832 512-Word x 8-Bit Static Read-Only Memory ...............................................81
CDP 1861 Video Display Controller (Video Interface) ..................................................85
CDP 1802 COSMAC Microprocessor .............................................................................97
Download from Www.Somanuals.com. All Manuals Search And Download.
1
1. Getting Started
COSMAC VIP (Video Interface Processor)
CDP18S711 is a complete computer on a single
printed-circuit card. It includes the following:
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.
*RCA CDP1802 Microprocessor (91 instructions)
*2048-byte RAM
*Built-in hex keyboard (modern reliable touchpad
type)
*Graphic video display interface (standard video
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
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.
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.
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.
Download from Www.Somanuals.com. All Manuals Search And Download.
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.)
will facilitate setting up the cassette system and iden-
tifying 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
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.
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.
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
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.
Download from Www.Somanuals.com. All Manuals Search And Download.
1. Getting Started
7
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
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.
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.
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
Download from Www.Somanuals.com. All Manuals Search And Download.
9
11. COSMAC VIP Operation
COSMAC VIP is operated with the RUN switch and
KEY
OPERATION
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.
MW (Memory Write)
MR (Memory Read)
TW (Tape Write) TR
(Tape Read)
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.
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.
Memory Write
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.
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.
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
Download from Www.Somanuals.com. All Manuals Search And Download.
10
RCA COSMAC VIP Instruction Manual
TC-150. In general, better quality recorders provide
more reliable operation.
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
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.
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.
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.
Memory Read
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.
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 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.
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
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-
Download from Www.Somanuals.com. All Manuals Search And Download.
11. COSMAC VIP Operation
1
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.
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.
Download from Www.Somanuals.com. All Manuals Search And Download.
III. CHIP-8 Language Programming
instruction following the 2570. The subroutine itself
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
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.
When using CHIP-8 instructions your program must
always begin at location 0200. There are 16 one-
byte 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.
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.
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 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:
0422
0423
0424
01
06
07
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
Since A7 in hex equals 167 in decimal, we see that the
Download from Www.Somanuals.com. All Manuals Search And Download.
14
RCA COSMAC VIP Instruction Manual
Table I - CHIP-8 Instructions
Instruction
Operation
1MMM
BMMM
2MMM
00EE
Go to 0MMM
Go to 0MMM + V0
Do subroutine at 0MMM (must end with 00EE)
Return from subroutine
3XKK
4XKK
5XY0
9XY0
EX9E
EXAl
6XKK
CXKK
7XKK
8XY0
8XY1
8XY2
8XY4
8XY5
FX07
Skip next instruction if VX = KK
Skip next instruction if VX n.e. KK
Skip next instruction if VX = VY
Skip next instruction if VX n.e. VY
Skip next instruction if VX = Hex key (LSD)
Skip next instruction if VX n.e. Hex key (LSD)
Let VX = KK
Let VX = Random Byte (KK = Mask)
Let VX=VX+ KK
Let VX = VY
Let VX = VX/VY (VF changed)
Let VX = VX & VY (VF changed)
Let VX=VX +VY(VF=00 if VX+VY l.e. FF,VF=01 if VX +VY>FF)
Let VX = VX - VY (VF = 00 if VX < VY, VF = 01 if VX g.e. VY)
Let VX = current timer value
FX0A
FX15
Let VX = hex key digit (waits for any key pressed)
Set timer = VX (01 = 1/60 second)
FX18
Set tone duration = VX (01 = 1/60 second)
Let I = 0MMM
Let I = I + VX
Let I = 5-byte display pattern for LSD of VX
Let MI = 3-decimal digit equivalent of VX (I unchanged)
Let MI = V0:VX (I = I + X + 1)
AMMM
FX1E
FX29
FX33
FX55
FX65
Let V0: VX MI (I = I + X + 1)
00E0
Erase display (all 0's)
DXYN
Show 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.
Do machine language subroutine at 0MMM (subroutine must end with D4 byte)
0MMM
three RAM bytes addressed by I contain the decimal
equivalent of the value of V9.
Using the Display
Instructions
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.
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 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.
The DXYN instruction is used to show a pattern of spots
on the screen. Suppose we wanted to form the
Download from Www.Somanuals.com. All Manuals Search And Download.
III. CHIP-8 Language Programming
15
Fig. 1 - Display screen coordinate structure.
pattern for the digit "8" on the screen. First we make
up a pattern of bits to form "8" as shown in Fig. 2.
pattern will be shown on the screen in the upper left
corner.
You can write a program to show the "8" pattern on
the screen as follows:
0200 A20A I=020A
0202 6100 V1=00
0204 6200 V2=00
0206 D125 SHOW 5MI@VlV2
0208 1208 GO 0208
020A F090
020C F090
020E F000
Fig. 2 - Patternof bitsjorming digit 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.
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:
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.
020A
020B
020C
020D
020E
F0
90
F0
90
F0
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
shown at this spot position and VF will be set 1,6 it value
of 01. You can test VF following a DXTN instruction to
determine if your pattern
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"
Download from Www.Somanuals.com. All Manuals Search And Download.
RCA COSMAC VIP Instruction Manual
16
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.
I =V2 (LSDP)
SHOW 5MI@V4V5
V6=03
TONE=V6
V6=20
0218 F229
021A D455
021C 6603
021E F618
0220 6620
0222 F615
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:
TIME=V6
0224 F607 V6=TIME
0226 3600 SKIP;V6 EQ 00
0228 1224 GO 0224
022A 7301 V3+01
022C 00E0 ERASE
022E 1202 GO 0202
This program continuously increments V3, converts it to
decimal form, and displays it on the screen.
0200 A210 I=0210
0202 6100 V1=00
0204 6200 V2=00
0206 D125 SHOW 5MI@VlV2
0208 D125 SHOW 5MI@VlV2
020A 7101 V1+01
020C 7201 V2+01
020E 1206 GO 0206
0210 F090
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.
0212 F090
0214 F000
Applying CHIP-8
You should now be able to write some simple CHIP-8
programs of your own. Here are some things to try:
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.
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
make it move left or right when keys 4 or 6 are held
down.
2.
4.
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.
Appendix C shows the format for these standard hex
patterns. The following program illustrates the use of
the FX29 and FX33 instructions:
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
0200 6300 V3=00
0202 A300 I=0300
are only allowed to press
horizontally or vertically adjacent to the last key
pressed.
a
key which is
MI=V3 (3DD)
VO:V2=MI
V4=00
0204 F333
0206 F265
0208 6400
020A 6500
020C F029
020E D455
0210 7405
0212 F129
0214 D455
0216 7405
V5=00
I =VO (LSDP)
SHOW 5MI@V4V5
V4+05
I=Vl(LSDP)
SHOW 5MI@V4V5
V4+05
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
Download from Www.Somanuals.com. All Manuals Search And Download.
111. CHIP-8 Language Programming
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.
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.
CAPTURE - Try to chase and catch randomly
moving spots within a specified time limit.
12. LEARNING EXPERIENCES - Program graphic
hand and eye coordination exercises for young
children or those with learning disabilities.
After the above practice you are ready to design more
sophisticated CHIP-8 programs. Always prepare a
flowchart 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).
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.
Some Program Ideas
15. FOOTBALL - Each player enters his play via the
hex keyboard and the computer moves the ball on
the screen.
Here are a few ideas for programs to write using the
CHIP-8 language:
16. BLACKJACK - Play "21" against the com
puter dealer.
1. INTOXICATION TESTER - Display a six digit
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
goes blank to prove that you're sober and score.
17. HOLIDAY DISPLAYS
-
Design custom,
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.
2. NUMBER BASE QUIZ - Display numbers in
binary or octal on the screen. You must enter
their decimal equivalent to score points.
18.
3. DICE - Push any key to simulate rolling dice
displayed on the screen.
19. TURING MACHINE - Simulate a simplifed
Turing machine on the screen.
4. PUPPETS - Show large face on the screen. Let
small children move mouth and roll eyes by
pushing keys.
TIMER - Use the computer to time chess games,
etc.
20.
21.
HEXAPAWN - Program Hexapawn so that the
computer learns to play a perfect game.
BUSY BOX - Let small children push keys to
r
make different object appear on the screen,
move, and make sounds.
22. NIM - Program Nim with groups of spots
shown on the screen.
6. SHUFFLEBOARD - Simulate shuffleboard
type games on the screen.
23. BLOCK PUZZLES - You can simulate a variety
of sliding block-type puzzles on the screen.
7. COMPUTER ART - Design new programs to
generate pleasing geometric moving patterns on
the screen.
24. BOMBS AWAY - Show a moving ship at the
bottom of the screen. Try to hit the ship by
releasing bombs from a moving plane at the top of
the screen.
8. INVISIBLE MAZE - Try to move a spot
through an invisible maze. Tones indicate when
you bump into a wall.
Download from Www.Somanuals.com. All Manuals Search And Download.
18
RCA COSMAC VIP Instruction Manual
The next section will discuss machine language
programming. You can even combine machine language
subroutines with CHIP-8 programs if desired.
25. PROGRAMMED SPOT - Introduce children to
programming concepts by letting them
preprogram the movements of a spot or object on
the screen.
Download from Www.Somanuals.com. All Manuals Search And Download.
19
IV. Machine Language Programming
The latched Q line output performs several functions
in the COSMAC VIP system. When set, it holds the Q
light on and generates a continuous speaker tone. Ile Q
line is also used for serial output data to a cassette
recorder. You can use the Q output line as a control
signal in an expanded system if you avoid conflicts with
its normal functions.
VIP Machine Coding
For a complete description of machine language
instructions, refer to the User Manual for the CDP1802
COSMAC
Microprocessor
MPM201A.
Your
COSMAC VIP computer incorporates the following
special machine-language input and output instructions:
You can store a machine language program starting at
location 0000. It will be executed when you flip the
RUN switch up. Initially P=0, X=0, R0=0000, Q=0, and
R1=0XFF, where 0X= last page of on-card RAM. (0X =
07 in 2048-byte RAM system). The operating system
uses the last 84 bytes of on-card RAM. You should
avoid using these last 84 RAM bytes when writing
machine language programs. With a 2048-byte RAM,
locations 07AC-07FF would be reserved for use by the
operating system. Note that Rl initially contains the
address of the last on-card RAM byte. Your machine
language program can use Rl to determine the amount of
RAM in your system when required.
CODE
OPERATION
Turn display on (Bus -> MX,D)
Input port byte + MX,D (Optional)
Turn display off (MX -> Bus,RX+1)
MX(LSD) -> Hex keyboard latch,
RX+1
MX -> Output port, RX+1 (Optional)
MX -> Bus,RX+l
69
6B
61
62
63
64
One 64 instruction is always executed by the
Operating System. It can also be used in expanded
systems if desired. Instructions 65, 66, 67, 6A, 6C, 6D,
6E, and 6F are also available for use in expanded
systems.
The External Flag lines are used as follows:
Putting Machine Coding and
CHIP-8 Language Together
USE
FLAG
EF1
Generated by the video interface
(CDPI861)
The operating system and the CHIP-8 language
interpreter use a video display format that is 64 bits wide
by 32 bits high. This 256-byte display can easily be
modified by writing your own video refresh interrupt
routine as explained in the CDP1861 data sheet provided
in Appendix G. Display formats up to 64 bits wide by
128 bits high are possible with no hardware
modification. The 4096-bit picture program in Appendix
D uses a machine language refresh interrupt routine that
provides a format 64 bits wide by 64 bits high.
EF2
EF3
EF4
Serial data from cassette player
Hex key pressed signal
Not used in basic system
EF4 can be used for system expansion. EF3 can also
be used in expanded systems if no key will be depressed
at the same time that an external device is using EF3.
EF1 can only be used by an external device when the
display is turned off. EF2 should not be used in
expanded systems.
Download from Www.Somanuals.com. All Manuals Search And Download.
20
RCA COSMAC VIP Instruction Manual
While the video interface is turned on, you should not
use any of the 3-machine-cycle CDP1802 instructions
(except those used for sync in the refresh interrupt
routine itself). If you are not using the video interface,
then you can use the CDP1802 3-cycle instructions in
your machine language programs. When you initiate a
machine language program at 0000 by flipping RUN up,
the video interface will be off. You must turn it on with a
69 instruction to use the COSMAC VIP graphic display
capability.
The CHIP-8 language described in the previous
section, permits machine language subroutines to be
called with a 0MMM instruction. A D4 machine
language instruction at the end of the machine language
subroutine returns control to the CHIP-8 instruction
following the 0MMM instruction. In Appendix C, the
CDP1802 register use for the CHIP8 language is
provided. R5 is used as the CHIP-8 program counter.
When you call a machine language subroutine with a
0MMM instruction, R5 will be addressing the CHIP-8
instruction following the 0MMM. The machine language
subroutine could retrieve the next two CHIP-8 program
bytes as parameters by addressing with R5 and
incrementing it by 2 before returning control to the
CHIP-8 program with a D4 instruction. RC, RD, RE, and
RF are available for use in machine language
subroutines. RA is the CHIP-8 memory pointer (1).
Changing the high-order byte of RB will cause any
desired RAM page to be displayed. R3 is the machine
language subroutine program counter.
Machine Language
Programming Summed Up
In summary, COSMAC VIP provides you with an
easy-to-use language called CHIP-8. You can insert
machine language subroutines in CHIP-8 programs for
greater flexibility or expanded I/0 capability. You can
write complete machine language programs to fully
utilize CDP1802 capabilities. The operating svstem
facilitates debugging machine language programs by
permitting you to examine general registers R3-RF. (See
operating system register table in Appendix B).
Advanced programmers can even develop their own,
interpretive language tailored to special requirements.
Direct execution of machine language code starting at
location 0000 together with the expansion interface
permits the COSMAC VIP system to be used as a
low-cost development system as well as a personal
recreational or educational computer.
CHIP-8 uses the operating system refresh interrupt
routine contained in ROM for display. You can use this
ROM interrupt routine for 256-byte display in your own
machine language programs. First initialize R1 to 8146
and R2 as a stack pointer before turning on the video
interface with a 69 instruction. Set the desired display
page into RB.1. This interrupt routine uses R0 as the
display refresh pointer and modifies RB.0. R8.1 and
R8.0 are decremented by 1 during each interrupt unless
they are equal to 00. Interrupts occur 60 times per second
when the video interface is turned on. This rate is
controlled by a crystal clock so that R8.0 and R8.1 can
be used as real-time clocks when needed. -
Download from Www.Somanuals.com. All Manuals Search And Download.
21
V. Logic Description
operating system program which uses a 64 instruction to
generate an N2 pulse. This-N2 pulse sets U6A so it no
longer holds U6B in its set state. From this point on, the
selection,of RAM or ROM locations is controlled by the
most significant address bit latched into U6B each cycle
by TPA.
A complete set of logic diagrams is provided in
Appendix E. Power requirements for a system with 2048
bytes of RAM is 5 V DC at 350 mA. If you wish to
expand the system you can use your own higher current
power supply.
This system is designed around the CDP1802
microprocessor Wfl. Refer to the CDP1802 data sheet
and User Manual for the CDPI802 COSMAC
Microprocessor MPM-201A for a complete description
of its operation. The CDP1802 requires a square-wave
clock input at pin 1 for operation. This system uses a
1.7609-MHz clock. One half of U3 is connected as a
U8 latches an additional 4 address bits to provide the
1-9-bit address required in a 4096-byte RAM system.
U9A decodes 2 of these address bits into 4 lines which
are used to select up to four 1024-byte RAM sections.
Each 1024-byte section of RAM consists of two 4 x
1024-bit RAM IC's (U16-U23 in Fig. E-4). Only the first
two sections of RAM (U16-U19) are used in a 2048-byte
system. U9B in Fig. E-2 is wired as a simple gate that
inhibits selecting any section of RAM when either the
ROM is selected or a positive RAM inhibit signal is
generated on pin 19 of the expansion interface by
external circuits.
free-running
crystal-controlled
oscillator.
A
3.52180-MHz crystal is used in this circuit. The output of
this 3.52180-MHz oscillator is then divided by 2 using
U4 to provide the 1.7609MHz input clock for the
CDP1802. Because each CDP1802 machine cycle equals
8 clock cycles, each machine cycle is about 4.54 us in
duration. TPA and TPB are timing pulses generated once
each machine cycle by the CDP 1802 microprocessor.
Memory read (MRD) and write (MWR) signals are
supplied to the RAM at appropriate times by the
CDP1802. Data is transferred between memory,
CDP1802, input, or output via an 8-bit data bus. Pull-up
resistors are provided on this bus for compatibility with
TTL signal swings provided by some RAMs.
How Memory Is Addressed
A debounced RUN level goes high when the RUN
switch is flipped up. This signal causes the CDP1802 to
begin fetching instructions from memory. When the
RUN switch is down, the CDP1802 is held in a reset
state and U6A (in Fig. E-2) is reset. U6B is held set by
U6A. The CDP1802 starts fetching instructions from the
ROM (U10) at location 8000 since UOB is being held
set. The ROM contains the
How the Input/Output Works
Ull and U12 in Fig. E-3 are used to decode the
input/output instruction codes used in the system.
U13 provides the hex keyboard interface. This
interface permits a program to determine which key is
Download from Www.Somanuals.com. All Manuals Search And Download.
RCA COSMAC VIP Instruction Manual
into 5-volt pulses by U14B. The output of U14B is
connected to the CDP1802 EF2 input line. The operating
system reads tape data by examining the timing of the
transitions on the EF2 input line. Cassette read and
record timing is derived from the crystal-controlled clock
so that no adjustments are necessary.
pressed. A 62 machine instruction causes the least
significant 4 bits of memory byte to be latched into U13.
These 4 bits are decoded to bring one of the 16 U13
output lines low. If the key that corresponds to this
output line is pressed, the CDPI802 EF3 input will go
low. The 4-bit codes latched into U13 correspond to the
equivalent key positions. After the program send8 a 4-bit
code to U13, it subsequently examines the EF3 line to
see if the key corresponding to this code is pressed or
not. In this manner, a program can determine when any
specific key is pressed or can sequentially scan all keys
while waiting for any one to be pressed. Key debounce
delays must be provided in the program when required.
A program can also cause a speaker tone to occur when a
key is pressed. Only one key at a time should be pressed
with this method of interfacing the keyboard.
Video output is provided by the unique CDP1861
video display interface IC (U2 in Fig. E-1). Refer to the
CDP1861 data sheet. in Appendix G for a description of
its operation. This chip provides one of the lowest cost
and most useful display interface capabilities available
for any microcomputer. The values of the resistors RI
and R4 in Fig. E-1 of Appendix E connected to output
pins 6 and 7 of U2 can be adjusted for best results with
your video display. 61 and 69 machine language
instructions are used to generate the required on and off
pulses for U2. The down position of the RUN switch
resets the internal U2 circuits. When a program is
initiated, by flipping RUN up, U2 will remain off until a
69 instruction is executed. No CDP1802 interrupt or
DMA requests are generated by U2 until it is turned on
by a 69 instruction. U I and U2 are both driven by the
same clock. They must remain in sync to provide proper
operation of the display.
U15 generates an audible tone when pin 4 is high. The
output on pin 3 drives a small speaker. The 10 ohm
resistor R48 in series with the speaker output can be
raised in value to lower the volume if desired. The
CDP1802 latched Q-line output drives the tone generator
and also turns on the Q light. Q can be set high (1) or low
(0) by machine language instructions. The RC network
connected to pins 2, 6, and 7 of U15 determines the
frequency of the tone. You can increase or decrease the
value of R to adjust this frequency to suit your taste.
Q is also shaped by U14A in Fig. E-3 to form a signal
suitable for recording on an audio cassette. Audio
cassette recorders can't cope with square waves. Tle
divider on the output of U 14A reduces the signal to
about 50 mV which is suitable for the microphone input
of most recorders. During recording, the operating
system program in ROM converts memory bytes into bit
serial form and transmits them to the recorder via the Q
line. See the cassette data test page of Appendix A for
the cassette data code used.
In general, the logic of this system has been kept
simple and straight-forward by the use of software to
replace hardware. This design not only yields a low cost
system, but one that should prove extremely reliable
because of the reduced number of components that can
cause failures. This system will not become obsolete for
a long time. RAM, ROM, and microprocessor are all
state-of-the-art devices and not obsolescent types that are
about to be replaced by better ones. The cassette and
video interfaces are optimum for long life. Also designed
into the system are full expansion capability for added
RAM, ROM, input, output, and full color graphics.
In playback, bit serial data from the cassette drives the
tape light. The serial data is amplified and shaped
Download from Www.Somanuals.com. All Manuals Search And Download.
23
V1. Expansion Considerations and
Connections
The COSMAC VIP was designed primarily as a
self-contained graphic system for home use. Enough
RAM and input/output features are provided for years of
computer fun without adding anything to your system. If,
however, you do want to expand your system, a variety
of features have been included to make expansion as
easy and inexpensive as possible. You can easily
increase RAM to 4096 bytes by adding U20-U23
to your PC card. Use the same type or a compatible type
of RAM as used for U16-U19. You may, however,
have to add a higher-current power supply when
expanding RAM.
buffered Q output line (W) can be used as an output
strobe for transferring the latched output byte to an
external device such as a printer. The EF3 (X) and EF4
(L) input fines can be used to indicate the status of an
external device. Don't forget that EF3 is shared with the
hex keyboard.
Table 11 - Input/Output Port Terminal Connections
(See Fig. E-5, Appendix E)
Pin Signal
Description
Using the Byte
Input/Output
First, you may wish to add some external com-
puter-controlled devices such as relays, input sensing
switches, or even a low-cost printer. The printer will
require an 8-bit parallel input or output port and some
"hand-shaking" signals. One parallel input port and one
parallel output port are available on the PC card as
shown in Fig. E-5 in Appendix E. These ports are
provided by U24, U25, U26, and U27 along with
the associated resistors and two IN914 diodes. The 22
input/output port connection pads (A-Z) along the
back right edge of the PC card are connected to a
standard 44-pin card socket on the COSMAC VIP board.
You can plug your external circuits or devices into this
socket. Table II gives the input/output port terminal
connections.
The
8
buffered
output
signals
(M,N,P,R,S,T,U,V) will each drive up to 2
TTL loads. A 63 machine language instruction will
latch a memory byte into U24 for output. The 8 latched
output lines can be used to drive individual relay driver
circuits, power amplifiers, lights, battery motor drivers,
etc. The
Download from Www.Somanuals.com. All Manuals Search And Download.
24
I
RCA COSMAC VIP Instruction Manual
also latch high-order address bits to select external
devices if desired. When using external circuits to
generate DMA requests, interrupt requests, or input flag
signals, isolate these signals with 1N914 diodes as shown
for EF3 and EF4 in the optional parallel input/ output
port logic. Refer to the User Manual for the CDPI802
COSMAC Microprocessor, MPM-201A, for specific
examples of input/output attachment techniques.
A single photocell input could be provided via the
buffered EF4 line. You can attach the photocell
directly between the L and Z pads. Experimentally
adjust the pull-up resistor on pad L for best
operation. No photocell amplifier should be required
to drive the COS/MOS input. An, externally supplied
positive pulse- on. Pins 2_and 14 of U25,can be used as
an input,byte- strobe when yow want to latch an input
byte into U25. A 68 can be used to store
this input byte in RAM.
Some Expansion Ideas
Using the Expansion
Interface
The August and September 1976 issues of Popular
Electronics contain descriptions of a COSMAC ELF
microcomputer using the CDP1802. These articles
illustrate some input/output attachment techniques.
The 44-pin card socket for the expansion interface
pads along the back left edge of the PC board permits
extensive expansion. If you expand beyond the
capabilities of the power converter provided with the
VIP, you will, of course, have to provide your own power
supply. Output signals should only drive COS/MOS
loads, and must be externally buffered with a. CD4050
or CD4049 IC to drive TTL loads. Keep any wires
connected to the expansion pad signals as short as
possible. Excessive stray capacitance on these signal
lines can interfere with proper operation of the computer.
Input signals should also be buffered with COS/MOS
circuits. Refer to the. machine language programming
section (Section IV) and the logic diagrams (Appendix E)
to avoid conflicts with normal COSMAC VIP use of
these signals. The external option terminal connections
are given in Table III.
The following lists some things that with some
exercise of your ingenuity could be added to your system
at relatively low cost:
1. Manually operated photoelectric paper-tape strip
reader. Only requires
photocells.
a
tape guide and
8
2.
Scanning circuit for multiple input lines from
sensing devices using CD4515 IC.
3. Full alphanumeric keyboard.
4. Low-cost printer.
5. Multi-digit numeric display.
6. Calculator chip.
You can latch up the required high order address bits
with the trailing edge of TPA when adding external
memory. You must provide a Positive level on pad 19 to
disable internal RAM when external RAM is addressed.
The operating system will always use the highest page of
internal (on-card) RAM, even when you add external
RAM.
7. Individual photocells or switches.
8. Output relays to control solenoids, bells,
whistles, sirens, lights, or motors.
9. Sound-generating circuits that can be controlled
by program.
If you wish to substitute an external ROM or
battery-powered COS/MOS RAM for U10, you can use
the signal on pad X to select it. Remove U10 when
substituting an external ROM. If you do use an external
ROM for your own operating system you may no longer
be able to use the CHIP-8 interpreter because it requires
some of the operating system subroutines.
10. Analog-to-digital input circuits.
11.
12. Digital-to-analog output circuits.
Read-Only Memory for fixed program.
Alpha wave monitor input to control pictures on
TV or output devices.
13.
The expansion interface pads provide access to all
CDP1802 signals so that you can add any desired
external circuits.
14. Temperature- or pressure-sensing devices.
Only 5 out of the possible 14 CDP1802 input/output
instructions are used internally, so that you can externally
decode the N0, N1, and N2 lines and use them with MRD
to obtain the use of the remaining 9 input/output
instruction codes. You can
15.
16.
Computer terminal.
A second hex keyboard for multi-player video
games.
Download from Www.Somanuals.com. All Manuals Search And Download.
V1. Expansion Considerations and Connections
.25
Table III - External Option Terminal Connections
(See Fig. E-2, Appendix E)
Pin Signal
Description
Negative-going memory-write pulse Early
timing pulse for M address clocking, etc.
Memory address lines. High-order address byte
appears on these lines during TPA time.,
followed by low-order address byte
8-bit, 2-way tri-state data bus
Low for memory read machine cycles
Chip select for operating system
Optional power for external logic
CDP1802 clock output
Flag input lines #3 and #4
(Flag 3 also used for hex keyboard)
Crystal frequency
Flag input line #1
Low-order 3 bits of N during
6N instruction
Video spot output
Video sync output
Timing pulse for clocking memory byte out, etc.
State code bit (+5 V for SI /S3, GND for SO/S2)
Pulling to GND causes interrupt (22-KE2 input)
State code bit (+5 V for S2/S3, GND for SO/Sl)
Pull to GND for DMA-OUT cycles
Q flip-flop output line
Pull to GND for DMA-IN cycles
+5 V when running, GND when RUN switch down
Internal RAM-disable input
GND when RAM pages C, D, E, and F selected
Optional power for external logic (same as Y-Z)
Download from Www.Somanuals.com. All Manuals Search And Download.
I
26
RCA COSMAC VIP Instruction Manual
Some possible applications for expanded systems
include:
8. Provide a crystal-controlled, programmable
pulse generator, clock, or timer.
Provide a programmable sequencer for light
shows, advertising displays, holiday lighting, etc.
1. Counting packages, parts, cars, or people via
photocell or switch input.
9.
2. Composing poetry or pictures with printer output.
10. Automatic telephone dialer.
3. Video target games using photocell light gun.
4. Monitor burglar alarm switches.
11. Model railroad controller.
12. Battery-operated toy or robot controller.
5. Monitor water level and temperature in fish
tank and regulate automatically.
13. Detect tape-player tones and control slide
projector.
6. Measure motor speed with photocell.
You will soon discover that the potential applications
of a computer such as the COSMAC VIP are only
limited by your imagination and the ability to develop
appropriate interface circuits.
7. Monitor and control experiments in home,
school, or lab. Use video display for real time
bar graphs of multiple variables.
Download from Www.Somanuals.com. All Manuals Search And Download.
27
VIL Troubleshooting Hints
This section is aimed at helping you diagnose and fix
Other Problems
hardware problems should they occur. First, check all
IC's to make sure they are properly inserted in the PC
card. An IC inserted in the wrong direction can be
permanently damaged. Check that the +5 V DC supply
voltage ripple does not exceed 0.2 volt. Visually inspect
the PC card for solder shorts or bad solder joints. Try to
avoid zapping your PC card with static electricity
charges. Discharge youself, if necessary, by touching a
grounded object before touching any IC's or PC card
wiring.
Using operating system mode 0, load bytes into RAM
using all 16 hex keys. If a key doesn't work or shows the
wrong value on the display screen, check the keyboard
and U13.
If everything except the cassette interface works,
check U14. Review the cassette recording guidelines in
Appendix A. Use the cassette phase and data test
procedures described in Appendix A to find out what's
wrong.
No Sound
If you can run some programs but not others, you
may have a bad RAM bit. Load and use the memory test
program provided in Appendix A. Try changing RAM
chips, one at a time.
If everything works but you don't hear any sound
from the speaker you probably have a bad U15, bad
speaker, or bad connection. Flip RUN up with key C
down. Hold any key down and the Q light should come
on. Check the Q line if it doesn't. The Q line should be at
+5 V with a key held. If the Q light is on, but with no
tone, check U15 and your speaker connections.
If nothing seems to work and you can't run the
operating system, check your power supply and PC card
wiring for shorts again. If everything still seems OK you
will have to start signal tracing.
Signal Tracing
No Display
Check the U3 oscillator output. If not present, replace
U3. If the 3.521280-MHz signal is present, check the U4
divider. Replace U4 if it isn't toggling. Make sure you
use a 7474 type. With RUN up, you should see TPA and
TPB pulses being generated at pins 33 and 34 of U1 If
they are not present, check the RUN level to make sure
the switch is working, then replace U1.
If you get no display but do get operating system key
tones, check the video output signal. First, select the
operating system to make sure video should be present.
The video signal should be 0.5 volt peak to peak or
higher. You should see negative-going vertical and
horizontal sync pulses and positive-going video pulses.
The sync pulses should be about 25% of the total swing.
Check your display system and interconnections if you
have the video signal present. Make sure you are using
the correct high-impedance input setting, for example.
Check the output of U6B to make sure that the ROM
is initially selected when RUN is first flipped
Download from Www.Somanuals.com. All Manuals Search And Download.
28
RCA COSMAC VIP Instruction Manual
up with key C down. With RUN up, check bus and
address lines to see if any look different from the others.
They will, of course, be at different levels or bouncing
around but you might spot something suspicious that
would indicate a short or open for one of these lines.
Last Resorts
As a last resort, try replacing Ul and the ROM. Check
the supply voltage at all chips. Examine the PC card for
hairline breaks in the printed conductors. Fill up
plated-through holes with solder to insure continuity.
Check all signals. They should swing between ground
and +4 or 5 volts. If you see a logic signal at some
intermediate voltage, like +1 or 2 volts, check the source
IC.
Try operating with only a 1024-byte RAM (U16 and
U17). Try the other two RAM chips in these sockets.
Check U5 inputs and outputs to verify that all stages are
inverting properly.
Once you get the operating system running, over 90%
of the hardware will be operating properly. There are no
critical adjustments to be made or maintained. All system
timing is controlled by the crystal clock. With reasonable
care your COSMAC VIP system should run for years
without any problems.
If you don't get a pulse at pin 10 of U2 when you flip
RUN up with key C down, U12 may he bad. This pulse
is a difficult pulse to see and you might have to
breadboard a latch or use a latching logic probe to catch
it. If you get the display on pulse at pin 10 of U2, you
should then see U2 output pulses on pins 2, 3, and 9. If
you don't, try replacing U2.
Download from Www.Somanuals.com. All Manuals Search And Download.
29
Appendix A - Test and Operating Data
Byte Pattern for Displaying "COSMAC"
The following figure shows how the word "COSMAC" would be formed by spots (or bits) on the
display screen.
The following bytes when loaded into memory will cause the word "COSMAC" to be shown on
the display in a 2048-byte RAM system. Start pattern of bytes at location OFOO in a 4096-byte
system.
0700
0708
0710
0718
0720
0728
F9 F3 E6 CF 9F 00 00 00
81 12 07 C8 90 00 00 00
81 13 E5 4F 90 00 00 00
81 10 24 48 90 00 00 00
F9 F3 E4 48 9F 00 00 00
00 00 00 00 00 00 00 00
Beeper Program
This machine- language program flashes the Q light and beeps at a rate determined by the byte at
location 0002. Change this byte for faster or slower rates.
0000 7A F8 0F BF 2F 9F 3A 04
0008 31 00 7B 30 01 00 00 00
Download from Www.Somanuals.com. All Manuals Search And Download.
30
RCA COSMAC VIP Instruction Manual
Cassette Attachment Diagram
Cassette Phase Test
For best results your cassette recorder should not
reverse the phase of an input signal on playback. When
playing back a tape recorded on another recorder, it
should not reverse the phase of the output signal. You
may have to reverse the internal head connections on
some cassette recorders to eliminate unwanted phase
reversals.
Run this program to generate a phase test signal on the
tape out line. Record one minute of this test signal, then
play it back and observe the cassette recorder output on a
scope. It should appear as shown in B or C below. Save
this tape to test new recorders on which you want to play
tapes you have recorded on a previously tested machine.
If the playback signal appears upside down from that
shown in B or C, you will have to reverse the internal
head connection leads on the out-of-phase recorder.
To check for phase reversals, load the machine
language test program, given below, into memory.
Test Program
0000
0008
0010
0018
F8 04 AA 7B F8 0C FF 01
3A 06 7A F8 0C FF 01 3A
0D 2A 8A 3A 03 F8 60 FF
01 3A 17 30 00 00 00 00
Signals
Download from Www.Somanuals.com. All Manuals Search And Download.
31
Appendix A - Test and Operating Data
Cassette Data Test
Load the following machine language program into memory:
0000 90 B6 B3 F8 33 A6 F8 OA
0008 A3 D3 F8 6F AC F8 40 B9
0010 93 F6 DC 29 99 3A 10 F8
0018 10 A7 F8 08 A9 06 B7 F8
0020 80 FE DC 97 F6 B7 DC 29
0028 89 3A 23 17 87 F6 DC 30
0030 17 30 31 35 00 00 00 00
Rewind a blank cassette and put recorder into record
mode. Wait 10 seconds and flip RUN up to initiate the
program. The byte at location 0033 will be continuously
recorded on tape. Flip RUN down to stop recording after
a minute or so. You can play this tape to check the
signals shown below. You can also load the tape into
memory for testing purposes. Load 7 pages starting at
0100. You can use this tape to determine the proper
volume control setting for your recorder. You can change
the recorded byte at 0033 if desired. Bits on tape consist
of one cycle at 2 kHz for
"0" or one cycle at 0.8 kHz for "1". Data format is 4
seconds of continuous "0's" for sync followed by the
specified number of data bytes. Bytes always begin with
a "1" start bit (S) followed by 8 data bits (0-7), and end
with a parity bit (P). Odd byte parity is used in this code.
The waveforms below show how a 35 byte would appear
on tape. The operating system translates memory bytes to
bit serial output via the Q output line. Bit serial input
from tape is received via input flag 2 and translated into
parallel form for storage in memory by the operating
system software.
A-OUTPUT OF U14A
B-OUTPUT FROM CASSETTE (TAP IN PAD ON CARD)
C-OUTPUT OF U14B
* WAVEFORMS SHOWN FOR PANASONIC MODEL RO-413S RECORDER.
Download from Www.Somanuals.com. All Manuals Search And Download.
32
RCA COSMAC VIP Instruction Manual
18. When recording give the page key a short tap to
start.
Cassette Recording Guidelines
Use the last byte of a tape block as a program
identification and check code. It will appear on the
display screen after the tape is loaded.
1. Use high quality tape (Maxell UD or
equivalent).
19.
2. Use shortest tapes possible. You can shorten
tapes to several minutes in length if you enjoy
splicing.
When loading a cassette into memory, the tape
must contain as many pages as you specify to be
loaded. If you try to load 8 pages from a 7-page
tape the loading operation won't terminate
properly.
20.
3. Keep heads and pinch rollers clean.
4. Keep heads aligned for tape interchangeability.
5. Avoid recording too close to beginning of tape.
21. You may have to record with the EAR plug out
for some tape recorders.
Always use AC adaptor with recorder for best
results.
6. Make sure cassette is properly seated in
recorder.
22.
If you have trouble with a cassette try others.
You can have a had spot on tape or a warped
cassette.
7
Memory Test Program
8. Highest setting of tone control is usually best.
This machine language program should be loaded into
0000-007F. It checks RAM locations 0000-07FF (UI8
and U19) for proper data storage. Flip RUN up to start
test. Beeps sound during test. Entire 1024 byte section
of RAM being tested is shown on screen. Program stops
with tone on if a bad RAM bit is found. Error byte is at
007F. This byte should be 00 or FF for no error. For
example, if byte is 01 or FE then bit 0 was bad. The
error byte is also shown on the screen.
9. Set recorder volume control so that TAPE light
glows steadily on playback. This setting should
be lower than highest-volume setting. Excessive
TAPE light flickering indicates a bad tape or
misaligned heads.
10. A dirty recorder volume control can cause tape
dropouts.
11. Make sure cassette connection plugs make good
contact.
Set location 0020=00 and location 0023=80 to test
RAM locations 0080-03FF (U16 and U17).
12. Rewind cassettes before removing them from
recorder.
0000 90 B1 B2 B3 F8 17 A3 D3
0008 42 70 22 78 22 52 C4 C4
0010 C4 94 80 91 AO 30 08 F8
0018 0A Al F8 7F A2 E2 69 F8
0020 04 B4 F8 00 A4 94 B7 84
0028 A7 7A E2 F8 00 A5 F8 FF
0030 A6 85 57 94 BA 84 AA 8A
0038 52 87 F3 3A 45 9A 52 97
0040 F3 3A 45 30 47 86 5A 1A
0048 9A 52 94 FC 04 F3 3A 37
0050 07 52 85 F3 3A 6C F8 FF
0058 A5 93 A6 31 60 7B 30 31
0060 17 97 52 94 FC 04 F3 3A
0068 29 7A 30 6A 7B 30 6D 00
0070 00 00 00 00 00 00 00 00
0078 00 00 00 00 00 00 00 00
13. Store cassettes in dust-proof containers.
14. Avoid exposing cassettes to heat or magnetic
fields.
15. Before recording, wind cassette to one end and
fully rewind.
16. Cassette recorders will give you problems once in
a while (they don't like certain cassettes, etc.). If
one gives you problems most of the time replace
it.
17. Make sure that MIKE plug is connected before
recording. You will hear a tone even if MIKE plug
is out. On most recorders the TAPE light will
glow while recording.
Download from Www.Somanuals.com. All Manuals Search And Download.
33
Appendix B - Operating System
Operating System Listing
8000-81FF. This listing can be used to verify the
contents of the ROM if required.
The following shows the machine language code for
the ROM operating system. ROM is addressed at
8000 F8 80 B2 F8 08 A2 E2 D2
8008 64 00 62 0C F8 FF Al F8
8010 0F B1 F8 AA 51 01 FB AA
8018 32 22 91 FF 04 3B 22 B1
8020 30 12 36 28 90 A0 E0 D0
8028 El F8 00 73 81 FB AF 3A
8030 29 F8 D2 73 F8 9F 51 81
8038 A0 91 B0 F8 CF Al D0 73
8040 20 20 40 FF 01 20 50 FB
8048 82 3A 3E 92 B3 F8 51 A3
8050 D3 90 B2 BB BD F8 81 BI
8058 B4 B5 B7 BA BC F8 46 Al
8060 F8 AF A2 F8 DD A4 F8 C6
8068 A5 F8 BA A7 F8 Al AC E2
8070 69 DC D7 D7 D7 B6 D7 D7
8078 D7 A6 D4 DC BE 32 F4 FB
8080 0A 32 EF DC AE 22 61 9E
8088 FB 0B 32 C2 9E FB 0F 3A
8090 8F F8 6F AC F8 40 B9 93
8098 F6 DC 29 99 3A 97 F8 10
80A0 A7 F8 08 A9 46 B7 93 FE
80A8 DC 86 3A AD 2E 97 F6 B7
80B0 DC 29 89 3A AD 17 87 F6
80B8 DC BE 3A 9E DC 69 26 D4
80C0 30 C0 F8 83 AC F8 0A B9
80C8 DC 33 C5 29 99 3A C8 DC
80D0 3B CF F8 09 A9 A7 97 76
80D8 B7 29 DC 89 3A D6 87 F6
80E0 33 E3 7B 97 56 16 86 3A
80E8 CF 2E BE 3A CF 30 BD DC
80F0 16 D4 30 EF D7 D7 D7 56
80F8 D4 16 30 F4 00 00 00 00
<eom>
8100 30 39 22 2A 3E 20 24 34
8108 26 28 2E 18 14 1C 10 12
8110 F0 80 F0 80 F0 80 80 80
8118 F0 50 70 50 F0 50 50 50
8120 F0 80 F0 10 F0 80 F0 90
8128 F0 90 F0 10 F0 10 F0 90
8130 F0 90 90 90 F0 10 10 10
8138 10 60 20 20 20 70 A0 A0
8140 F0 20 20 7A 42 70 22 78
8148 22 52 C4 19 F8 00 A0 9B
8150 B0 E2 E2 80 E2 E2 20 A0
8158 E2 20 A0 E2 20 A0 3C 53
8160 98 32 67 AB 2B 8B B8 88
8168 32 43 7B 28 30 44 D3 F8
8170 0A 3B 76 F8 20 17 7B BF
8178 FF 01 3A 78 39 6E 7A 9F
8180 30 78 D3 F8 10 3D 85 3D
8188 8F FF 01 3A 87 17 9C FE
8190 35 90 30 82 D3 E2 9C AF
8198 2F 22 8F 52 62 E2 E2 3E
81A0 98 F8 04 A8 88 3A A4 F8
81A8 04 A8 36 A7 88 31 AA 8F
81B0 FA 0F 52 30 94 00 00 00
81B8 00 D3 DC FE FE FE FE AE
81C0 DC BE F1 30 B9 D4 AA 0A
81C8 AA F8 05 AF 4A 5D 8D FC
81D0 08 AD 2F 8F 3A CC 8D FC
81D8 D9 AD 30 C5 D3 22 06 73
81E0 86 73 96 52 F8 06 AE F8
81E8 D8 AD 02 F6 F6 F6 F6 D5
81F0 42 FA 0F D5 BE F6 AE 32
81F8 DC 3B EA 1D 1D 30 EA 01
<eom>
Download from Www.Somanuals.com. All Manuals Search And Download.
34
RCA COSMAC VIP Instruction Manual
Operating System Register Table
Memory Register
Memory Register
Address
Byte
Address
Byte,
0XB0
0XB1
0XB2
0XB3
0XB4
0XB5
0XB6
0XB7
0XB8
0XB9
0XBA
0XBB
0XBC
0XBD
0XBE
0XBF
0XC0
0XC1
0XC2
0XC3
0XC4
0XC5
0XC6
0XC7
0XC8
0XC9
0XCA
0XCB
0XCC
0XCD
0XCE
0XCF
R3.0
R4.0
R5.0
R6.0
R7.0
R&0
R9.0
RA.0
RB.0
RC.0
RD.0
RE.0
RF.0
R3.1
R4.1
R5.1
R6.1
R7.1
R8.1
R9.1
RA.1
RB.1
RC.1
RD.1
RE.1
RF.1
0X = 07 for 2048-byte RAM
0X = 0B for 3072-byte RAM
0X = 0F for 4096-byte RAM
R5 = CHIP-8 language program counter
RA = CHIP-8 language I pointer
R3 = Machine Language Subroutine Program Counter
4. Mode 0 can be used to insert temporary stops in a
program for debugging purposes. Insert
Operating System Summary
a
"branch-to-itself" instruction at the desired stopping
point.
1. RUN up with key C pressed selects operating
system at 8000.
The operating system uses the top 84 bytes of RAM
(0XAC-0XFF). Avoid using these byte locations in
your programs.
2. Enter four-digit address followed by mode digit:
5.
A
0
B
F
MR (Memory Read)
MW (Memory Write)
TR (Tape Read)
6. The operating system searches for and uses the top
(highest) 256-byte page of on-card RAM. When
RUN is flipped up to execute a program, beginning
at 0000, the following initial conditions exist:
TW (Tape Write)
3. CDP1802 microprocessor registers are stored as
shown in table above. They may be examined after
a program is run by using operating system mode A.
P=0, Q=0, R0=0000, and R1 =0XFF where 0X highest
page of on-card RAM.
Download from Www.Somanuals.com. All Manuals Search And Download.
35
Appendix C - CHIP-8 Interpreter
locations 0000-0IFF (2 pages). This interpreter will
CHIP-8 Interpreter Listing
allow you to run the games in Appendix D or write your
own programs using the CHIP-8 instruction set
described in section III.
To use the CHIP-8 language you must first load the
following interpreter program into memory
0000 91 BB FF 01 B2 B6 F8 CF
0008 A2 F8 81 B1 F8 46 Al 90
0010 B4 F8 1B A4 F8 01 B5 F8
0018 FC A5 D4 96 B7 E2 94 BC
0020 45 AF F6 F6 F6 F6 32 44
0028 F9 50 AC 8F FA 0F F9 F0
0030 A6 05 F6 F6 F6 F6 F9 F0
0038 A7 4C B3 8C FC 0F AC 0C
0040 A3 D3 30 1B 8F FA 0F B3
0048 45 30 40 22 69 12 D4 00
0050 00 01 01 01 01 01 01 01
0058 01 01 01 01 01 00 01 01
0060 00 7C 75 83 88 95 B4 87
0068 BC 91 EB A4 D9 70 99 05
0070 06 FA 07 BE 06 FA 3F F6
0078 F6 F6 22 52 07 FA 1F FE
0080 FE FE F1 AC 9B BC 45 FA
0088 0F AD A7 F8 D0 A6 93 AF
0090 87 32 F3 27 4A BD 9E AE
0098 8E 32 A4 9D F6 BD 8F 76
00A0 AF 2E 30 98 9D 56 16 8F
00A8 56 16 30 8E 00 EC F8 D0
00B0 A6 93 A7 8D 32 D9 06 F2
00B8 2D 32 BE F8 01 A7 46 F3
00C0 5C 02 FB 07 32 D2 1C 06
00C8 F2 32 CE F8 01 A7 06 F3
00D0 5C 2C 16 8C FC 08 AC 3B
00D8 B3 F8 FF A6 87 56 12 D4
00E0 9B BF F8 FF AF 93 5F 8F
00E8 32 DF 2F 30 E5 00 42 B5
00F0 42 A5 D4 8D A7 87 32 AC
00F8 2A 27 30 F5 00 00 00 00
<e0m>
0100 00 00 00 00 00 45 A3 98
0108 56 D4 F8 81 BC F8 95 AC
0110 22 DC 12 56 D4 06 B8 D4
0118 06 A8 D4 64 0A 01 E6 8A
0120 F4 AA 3B 28 9A FC 01 BA
0128 D4 F8 81 BA 06 FA 0F AA
0130 0A AA D4 E6 06 BF 93 BE
0138 F8 1B AE 2A 1A F8 00 5A
0140 0E F5 3B 48 56 0A FC 01
0148 5A 30 40 4E F6 3B 3C 9F
0150 56 2A 2A D4 00 22 86 52
0158 F8 F0 A7 07 5A 87 F3 17
0160 1A 3A 5B 12 D4 22 86 52
0168 F8 F0 A7 0A 57 87 F3 17
0170 1A 3A 6B 12 D4 15 85 22
0178 73 95 52 25 45 A5 86 FA
0180 0F B5 D4 45 E6 F3 3A 82
0188 15 15 D4 45 E6 F3 3A 88
0190 D4 45 07 30 8C 45 07 30
0198 84 E6 62 26 45 A3 36 88
01A0 D4 3E 88 D4 F8 F0 A7 E7
0lA8 45 F4 A5 86 FA 0F 3B B2
01B0 FC 01 B5 D4 45 56 D4 45
01B8 E6 F4 56 D4 45 FA 0F 3A
01C0 C4 07 56 D4 AF 22 F8 D3
01C8 73 8F F9 F0 52 E6 07 D2
01D0 56 F8 FF A6 F8 00 7E 56
0lD8 D4 19 89 AE 93 BE 99 EE
01E0 F4 56 76 E6 F4 B9 56 45
01E8 F2 56 D4 45 AA 86 FA 0F
01F0 BA D4 00 00 00 00 00 00
01F8 00 00 00 00 00 E0 00 4B
<eom>
Download from Www.Somanuals.com. All Manuals Search And Download.
36
RCA COSMAC VIP Instruction Manual
CHIP-8 Memory Map
CDP1802 Register Use for CHIP-8
Interpreter
R0 = DMA pointer (page 0X for display refresh)
R1 = INTERRUPT routine program counter
R2 = Stack pointer
R3 = INTERPRETER subroutine program counter
R4 = CALL subroutine program counter
R5 = CHIP-8 instruction program counter
R6 = VX pointer (R6.1 must not be changed)
R7 = VY pointer (available for machine-language subroutines)
R8 = Timers (R8.1 = timer, R8.0 = tone duration)
R9 = Random number (+1 in INTERRUPT routine)
RA = I pointer
RB = Display page pointer (RB.1 = 0X)
RC =Available
RD = Available
RE = Available
RF = Available
Download from Www.Somanuals.com. All Manuals Search And Download.
Appendix C - CHIP-8 Interpreter
37
CHIP-8/Operating System Standard Digit Display Format
Download from Www.Somanuals.com. All Manuals Search And Download.
RCA COSMAC VIP Instruction Manual
CHIP-8 User Notes
1 Do not use any of the CDP1802 three-cycle
machine language instructions in CHIP-8
programs.
5.
R7, RC, RD, RE, and RF can be used as
working registers in machine language
subroutines. Changing other registers can cause
the CHIP-8 interpreter to malfunction.
2. CDP1802 R5 is used as the CHIP-8 instruction
counter. It will he addressing the byte following a
0MMM instruction for machine language
6......................................................................................
subroutines and can be used to pass 2-byte
parameters. Refer to the operating system register
table in Appendix B to examine this register during
CHIP-8 program debugging.
7. Program bugs can destroy the CHIP-8 in-
terpreter at locations 0000-01FF. If you suspect
that this has happened, reload the interpreter.
3. ................................................................................
8. The CHIP-8 interpreter uses subroutines and
digit patterns contained in the operating system
ROM. If you modify this operating system, the
CHIP-8 interpreter should not be used.
4....................................................................................
Download from Www.Somanuals.com. All Manuals Search And Download.
39
A
In the listing for each game, the first column is the
This Appendix contains program listings for twenty
video games. These games, which illustrate en-
tertainment applications of COSMAC VIP, were
developed by Joe Weisbecker (games, 1 through
8), Joyce Weisbecker (games 9 and 10), Jef
Winsor (games 11, 12, and 13), Tom Chen
(games 14,15, and 16), and Phil Baltzer (games
17 through 20).
memory location at which the instruction bytes in
the second column are stored. The comments in
the third column indicate the function of the
instruction byte. The comments are not stored in
memory.
The game titles are listed below:
Game Title .....................................................
1. VIP Kaleidoscope ...........................................................
2. VIP Video Display Drawing Game .................................
3. VIP Wipe Off ..................................................................
4. VIP Space Intercept .......................................................
5. VIP 4096-Bit Picture .......................................................
6. VIP Figure Shooting at Moving Target ...........................
7. VIP Tick-Tack-Toe Game ...............................................
8. VIP Spooky Spot ............................................................
9. VIP Jackpot ....................................................................
10. VIP Snake Race ...........................................................
11. VIP Card Matching Game ............................................
12. VIP Armored Vehicle Clash .........................................
13. VIP Hi-Lo ......................................................................
14. VIP Hex Reflex..............................................................
15. VIP Dot-Dash ...............................................................
16. VIP A-Mazing ...............................................................
17. VIP Deduce ..................................................................
18. VIP Shooting Stars .......................................................
19. VIP Strike-9 ..................................................................
20. VIP Card Game (like the well-known acey-
Download from Www.Somanuals.com. All Manuals Search And Download.
40
RCA COSMAC VIP Instruction Manual
entry. Pushing key 0 causes your pattern to be
continuously repeated forming a fascinating, changing
kaleidoscope display on the screen. A "44444442220"
key sequence provides a very nice effect Experiment to
find other nice patterns. The subroutine at 0232-0274
causes your pattern to be duplicated in the four quadrants
of the screen.
1. VIP Kaleidoscope
This program uses the CHIP-8 INTERPRETER at
0000-01FF. Four spots appear in a group at the center of
the screen. Press keys 2, 4, 6, or 8 to create a pattern.
Keep your pattern smaller than 138 key depressions.
Push key 0 to terminate pattern
023C 7101 V1+01
0200 6000 V0=00
023E 4008 SKIP;V0 NE 08
0240 7201 V2+01
0202 6380 V3=80
0204 611F V1=1F
0242 A277 I=0277
0244 6AEO VA=E0
0246 8A12 VA=VA&Vl
0248 6B1F VB=1F
0206 620F V2=0F
0208 2232 DO 0232
020A A200 I=0200
020C F31E I=I+V3
024A 81B2 VI=Vl&VB
024C 3AOO SKIP;VA EQ 00
024E 7201 V2+01
0250 6AFO VA=FO
0252 8A22 VA=VA&V2
0254 6BOF VB=OF
0256 8282 V2=V2&VB
0258 3AOO SKIP; VAEQ 00
025A 7101 V1+01
020E F00A V0=KEY
0210 F055 MI-V0:V0
0212 4000 SKIP;V0 NE 00
0214 121C GO 021C
0216 7301 V3+01
0218 3300 SKIP;V3 EQ 00
021A 1208 GO 0208
021C 6380 V3=80
021E A200 I=0200
0220 F31E I=I+V3
025C 6BIF VB=1F
025E 81B2 Vl=Vl&VB
0260 D121 SHOW 1MI@VlV2
0262 8A10 VA=Vl
0222 F065 VO:VO=MI
0224 4000 SKIP;VO NE 00
0226 121C GO 021C
0228 7301 V3+01
0264 6B1F VB=1F
0266 8B25 VB=VB-V2
0268 DAB1 SHOW 1MI@VAVB
026A 6A3F VA=3F
026C 8A15 VA=VA-VI
026E DABI SHOW 1MI@VAVB
0270 8B20 VB=V2
022A 4300 SKIP;V3 NE 00
022C 121C GO 021C
022E 2232 DO 0232
0230 121E GO 021E
0232 4002 SKIP;V0 NE 02
0234 72FF V2+FF
0272 DAB1 SHOW 1MI@VAVB
0274 00EE RET
0276 0180
0236 4004 SKIP;VO NE 04
0238 71FF VI+FF
023A 4006 SKIP;V0 NE 06
0278 0000
Download from Www.Somanuals.com. All Manuals Search And Download.
41
Appendix D - Video Games
initial values for VO-V9. In this program, locations
0300-03FF are used for the picture. After drawing a
picture, you can change M(0208) from OOEO to 120A.
Write locations 0000-03FF (4 pages) to tape to save your
picture. When you load these four pages back into
memory you will see your original picture. Changing the
OOEO instruction in the program to 120A prevents your
picture from being erased when the program is started.
2. VIP Video Display Drawing Game
This program uses the CHIP-8 INTERPRETER at
0000-01FF. A flashing spot appears in the upper left
corner of the screen. You can move the spot by holding
key 2, 4, 6, or 8. Press key 5 and you can draw a picture
with the spot. Press key 0 and the spot can be moved
without drawing or used to erase a previously drawn
line. 0245-024E is a list of
0200 A245 I=0245
0202 F965 VO:V9=MI
0204 A24F I=024F
0206 0236 MLS@0236
0208 OOEO ERASE
020A F915 TIME-V9
020C FA07 VA=TIME
020E 3AOO SKIP;VA EQ 00
0210 120C GO 020C
0212 D121 SHOW 1MI@V1V2
0214 3FOO SKIP;VF EQ 00
0216 D121 SHOW 1MI@VIV2
0218 E3A1 SKIP;V3 NE KEY
021A 8030 VO=V3
021C E4AI SKIP;V4 NE KEY
O~U 8040 VO=V4
0228 E6A1 SKIP;V6 NE KEY
022A 71FF V1+FF
022C E7AI S&IP;V7 NE KEY
022E 7101 V1+01
0230 E8A1 SKJP;V8 NE KEY
0232 7201 V2+01
0234 120A GO 020A
0236 OlF8
0238 03BB
023A E2D4
023C D121 SHOW 1MI@V1V2
023E 4FOO SKIP;VF NE 00
0240 D121 SHOW 1MI@V1V2
0242 1224 GO 0224
0244 0100
0246 0000
0248 0005
024A 0204
024C 0608
0220 4000 SK1P;VO NE 00
0222 123C GO 023C
0224 E5A1 SKIP;V5 NE KEY
0226 72FF V2+FF
024E 0880
Download from Www.Somanuals.com. All Manuals Search And Download.
67
Appendix E - Logic Diagrams
Fig. E-1
Microprocessor and Display Interface
Circuits
Fig. E-2
Fig. E-3
ROM Circuits and Expansion Interface
Keyboard, Decoding, Audio Oscillator,
and Cassette Interface Circuits
Fig. E-4
Fig. E-5
RAM Circuits
Power Supply Circuit and Byte
Input/Output Interface
Download from Www.Somanuals.com. All Manuals Search And Download.
RCA COSMAC VIP Instruction Manual
68
Fig. E-1 - Microprocessor and Display Interface Circuits
Download from Www.Somanuals.com. All Manuals Search And Download.
Appendix E - Logic Diagrams
69
Fig. E-2 - ROM Circuits and Expansion Interface
Download from Www.Somanuals.com. All Manuals Search And Download.
70
RCA COSMAC VIP Instruction Manual
Fig. E-3 - Keyboard, Decoding, Audio Oscillator,
and Cassette Interface Circuits
Download from Www.Somanuals.com. All Manuals Search And Download.
Appendix E - Logic Diagram's
71
Fig. E-4 - RAM Circuits
Download from Www.Somanuals.com. All Manuals Search And Download.
72
RCA COSMAC VIP Instruction Manuel
Fig. E-5 - Power Supply Circuit and Byte Input/Output Interface
Download from Www.Somanuals.com. All Manuals Search And Download.
72
RCA COSMAC VIP Instruction Manual
Fig. E-5 - Power Supply Circult and Byte Input/Output Interface
Download from Www.Somanuals.com. All Manuals Search And Download.
73
Appendix F -
Board Layout, Parts List, and Expansion Notes
1. Printed Circuit Board Layout
2. Parts List for RCA COSMAC VIP CDP18S711
Download from Www.Somanuals.com. All Manuals Search And Download.
74
, RCA COSMAC VIP Instruction Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Download from Www.Somanuals.com. All Manuals Search And Download.
Appendix F - Board Layout, Parts List, and Assembly Instructions
-76
2. Parts List for RCA COSMAC VIP CDP18S711
Type
Number
Qty.
Description
Integrated Circuits - Supplied
CDP1802
CDPI 861
SN74L00N
SN7474N
CD4049
CD4013
CD4011
CD4042
CD4556
CDPR566
CD4051
CD4028
CD4515
CA3401
CA555CE
2114 or TMS4045
CD4508
Ul
U2
U3
U4
U5
U6
U7
U8
U9
U10
Ull
U12
U13
U14
U15
U16-U19
U24,U25
U26,U27
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4
2
2
COSMAC Microprocessor
Video Interface
Quad NAND Low Power
Dual D-Type Flip-Flop
Hex Inverting Buffer
Dual D-Type Flip-Flop
Quad 2-Input NAND Gate
Quad Clocked "D" Latch
Dual Binary 1 of 4 Decoder
512 x 8-Bit Static ROM (Programmed CDP1832)
Binary 1 of 8 Decoder
BCD-to-Decimal Decoder
4-Bit Latch/] of 16 Decoder
Quad Single-Supply Op-Amp
Timer
1 K x 4-Bit Static RAM
Dual 4-Bit Latch
Hex Buffer
CD4050
Integrated Circuits - Optional
2114 or TMS4045 U20-U23
4
1 K x 4-Bit Static RAM
Capacitors - Supplied
Cl,Cl0
C2
C3
C4,C5
C6,C7,C13
C8,C12
C9
C11
2
1
1
2
3
2
1
1
1
4.7 uF 35 V Electrolytic
100 uF 16 V Electrolytic
0.0047 uF 50 V Poly Film (472)
0.47 uF 50 V
0.0 1 uF 50 V Poly Film (103)
1 uF 50 V Electrolytic
22 uF 16 V Electrolytic
470 pF 500 V Disc
C14
33 pF ± 10% 1 kV
(Continued on next page)
Download from Www.Somanuals.com. All Manuals Search And Download.
Download from Www.Somanuals.com. All Manuals Search And Download.
76
RCA COSMAC VIP Instruction Manual
2. Parts List for RCA COSMAC VIP CDP18S711 (Continued)
Type
Number
Qty.
Description
3.3 K ohm
Resistors - Supplied (1 /4 W except as noted)
RI
1
R3 R5 RIS
Rl6, R33
R39, R40
R2, R17
R6-RI4
7
2
10 K ohm
1 K ohm
R19, R20
R22-R30, R36 28
R41-R47
R18, R21
R31, R32
R37, R38
R50
22 K ohm
100 ohm
2
470 ohm
R34
R35, R49
R52
1
3
100 K ohm
1 megohm
R48
1
1
1
10 ohm 1/2 W
4.7 K ohm
200 ohm
R51
R4
Miscellaneous - Supplied
I N914
CR1 through
CR5
5
3
Diode
HP5082-4494
Red LED
1
1
1
1
1
1
7
4
1
1
1
6
1
2
1
1
1
3.521280 MHz Crystal
7 101 -S-D-V30-B Sl
E7807
18SO22
SPDT Toggle Switch; C&K
Panel Dress Nut for Switch; C&K
Printed Circuit Board
Keyboard, Centralab
Cover, Thermoplastic
Rubber Feet
18-Pin IC Socket
24-Pin IC Socket
40-Pin IC Socket
M-1651.0
C931802
C932402
C934002
CDP18S023
Power Supply, Regulated; 5 V dc, 600 mA; 110 V 50/60 Hz
Cable Straps
Speaker
JI,J2
44-Pin Connector
MPM-201
MPM-920
VIP-311
User Manual for the CDP1802 COSMAC Microprocessor
Instruction Summary for the CDP 1802 COSMAC Microprocessor
RCA COSMAC VIP Instruction Manual
Connectors, cables, hardware
Miscellaneous - Optional
LAD66A2CD
1
2
1
Heat Sink; IERC
4-40 1/4" Binder Hd. Machine Screws and Nuts
Voltage Regulator
7805
U28
Download from Www.Somanuals.com. All Manuals Search And Download.
Download from Www.Somanuals.com. All Manuals Search And Download.
Appendix F - Board Layout, Parts List, and Assembly Instructions
77
3. COSMAC VIP Expansion Notes
a. Soldering the PC Board
regulator IC) to the card together with an appropriate
In the event you wish to make some changes or
add components requiring soldering, you should have
some experience building electronic kits. The PC
board pads are small and close together requiring
extra caution when soldering to avoid shorts or solder
bridges. Use a low-heat, small-tipped, grounded
soldering iron. Keep it clean. Use small gauge, rosin
core 60/40 solder. Preheat the connection and apply
just enough solder to "wet" the connection. Avoid
using excessive amounts of solder because it will flow
through the plated-through holes and form "blobs"
on the top of the card. Excessive or protracted heat
from the soldering iron can damage some of the
components.
heat sink. Make sure the U28 lead pads on the PC DC
card don't touch the heat sink. Disconnect the +5 V
supply at the + V DC and GND pads and connect your
unregulated 8-10 V DC power supply to these pads.
This on-card regulator will handle up to I ampere of
current and is useful for system expansion. Do not use a
plastic cover for your PC card when this on-card
regulator option is used. Air How is needed to permit
the regulator to operate properly.
c. Additional 2048-Byte RAM Option
To increase your COSMAC VIP RAM to a total of
4096 bytes, add U20-U23 to the PC card by plugging
units into the four sockets provided. Measure the power
supply current to be sure it does not exceed the capacity
of the +5 V DC power pack supplied with the VIP (600
mA). If you require additional power supply current use
a regulated +5 V DC supply capable of supplying I
ampere or use an unregulated 8-10 V DC supply with
the voltage regulator option on the cards.
b. Voltage Regulator Option
An unregulated 8-10 volt DC power supply can
be used with the COSMAC VIP card if desired. Cut
LK1 on the PC card. Add U28 (a 7805, 5-volt
Download from Www.Somanuals.com. All Manuals Search And Download.
|