RCA CDP18S711 User Manual

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