title1.gif (2079 bytes)

 

 

Technical Specs and Info

 

General Overview

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

The following text is taken from the Vectrex technical manual.

As a general description, the HP3OOO is a self-contained video game system intended for home use. The system includes its own 9" B&W monitor screen and 3" permanent magnet speaker. Plug-in ROM type cartridges are available offering arcade type video and sound game play. No external TV receiver hookup is needed or provided for. A front panel storable controller allows control over the game via joystick and push button action switches. For two player operation a second controller identical to the single player controller is available as an accessory product. Both controllers attach to the main game console through nine wire coiled telephone style cables. There is a consumer power switch/volume control on the front panel as well as a game reset button. A consumer adjustable brightness control is located on the main console rear housing.

 


Technical Overview

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

The following text is taken from the Vectrex technical manual.

For the technical description which follows, the reader is encouraged to refer to the block diagram and schematic [see the technical manual].

The HP3OOO is a microprocessor based, vector scan system using a standard 9" black & white CRT as its video display device. The microprocessor (MPU) is the Motorola 68A09 device. The MPU operates at 1.6 MHz from a 6 MHz external Xtal. An internal divide by 4 circuit generates the MPU 1.6 MHz "E" clock signal used in the system. Program memory is stored in the 8K x 8 bit 2363 type ROM. This ROM contains common subroutines, the "executive" or assembler instructions plus one complete game.

Two 1K x 4 bit 2114 type static RAMS provide storage locations for data indicative of locations of objects, game status, and various other information needed by the microprocessor during game operation.

Peripheral Interface Adaptor (PIA) Chip, has two 8 bit peripheral ports which interfaces the MPU with peripheral devices and external signals. One of the PIA ports interfaces the General Instrument AY-3-8912 sound-I.O. chip with the MPU and also drives the digital to analog converter chip MC1408. The other PIA port is used as control lines for the sound chip, selector control for the multiplex chip and as a means to read the A/D comparator that's used in the joystick successive approximation circuitry. Sound is either MPU generated directly or by use of the AY-3-8912 sound chip.

The AY-3-8912 sound chip is a programmable sound generator containing 3 tone generators and wave shaping circuitry. This chip also has a single 8 bit I.O. port used to read the status of each of the hand controller's 4 action switches.

The standard TTL device types 74LS00 and 74LS32 are used as control line decoders to allow the MPU to select the appropriate circuit element to be addressed at any particular time.

The analog processing section includes digital to analog converter (DAC) chip type MC1408, dual 4 channel multiplexer/demultiplexer chip type CD4052, and dual channel op-amps types LF353 and LF347.

DAC chip MC1408 receives an 8 bit word at data terminals D0-D7. DAC output (pin 4) is current source. One section of IC LF353 is used to change this current to a voltage representative of the 8 bit digital word received by the DAC chip. The LF353 voltage is applied to an input of the dual 4 channel multiplexer (MUX) chip CD4052. This same voltage (designated "DAC" on the schematic) is the X-axis drive signal. The CD4052 MUX chip serves two purposes: it selectively couples, under MPU control, the output of the DAC current/voltage converter to one of 4 places and is used to selectively couple the inputs from the joystick pots to the voltage comparator IC LF353.

 


Joystick Diagram

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

The following information was extracted from the Vectrex technical manual. I have re-drawn the schematic and added the table to make it easier to understand.

If you have a basic understanding of electronics you should be able to convert another joystick to use with the Vectrex without too much trouble.

stick.gif (4644 bytes)

 

Pin No. Wire Colour
1 Green Button 1
2 Yellow Button 2
3 Orange Button 3
4 Red Button 4
5 Brown Joystick X
6 White Joystick Y
7 Grey +5v
8 Black Gnd
9 Blue - 5v

 

 


Cartridge Port Pin-Outs

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

The Following information was taken from a text file on the Vectrex FTP site. I cannot credit the author as no details were given.

Pin #     info source    designation
-----     -----------    -----------
1         Ohm            HALT* (MPU 40)
2         Ohm            Vcc (MPU 7)
3         cart           A7 (ROM 1)
4         Ohm            Vcc (MPU 7)
5         cart           A6 (ROM 2)
6         cart           A8 (ROM 23)
7         cart           A5 (ROM 3)
8         cart           A9 (ROM 22)
9         cart           A4 (ROM 4)
10        cart           A11 (ROM 21)
11        cart           A3 (ROM 5)
12        cart           OE*/Vpp (ROM 20) (LS32 1)
13        cart           A2 (ROM 6)
14        cart           A10 (ROM 19)
15        cart           A1 (ROM 7)
16        cart           CE* (ROM 18) A15 (MPU 23) (LS32 2)
17        cart           A0 (ROM 8)
18        cart           D7 (ROM 17)
19        cart           D0 (ROM 9)
20        cart           D6 (ROM 16)
21        cart           D1 (ROM 10)
22        cart           D5 (ROM 15)
23        cart           D2 (ROM 11)
24        cart           D4 (ROM 14)
25        cart           GND
26        cart           D3 (ROM 13)
27        cart           GND
28        cart           GND (ROM 12)
29        Ohm            A12 (MPU 20)
30        Ohm            (PIA 22) (35 Ohms to R/W* (MPU 32))
31        Ohm            A13 (MPU 21)
32        Ohm            (LS32 3)
33        Ohm            A14 (MPU 22)
34        Ohm            NMI* (MPU 2)
35        Ohm            (PIA 16)
36        Ohm            IRQ* (MPU 3)

 


Light Pen Details

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

The following schematic was taken from a file on the Vectrex FTP site.

 

Here is a schematic of a lightpen that is reported to work reasonably
well with the vectrex. This is NOT the official vectrex lightpen.
Provided by Tony Duell <ard@p850ug1.demon.co.uk> April 1995


     +--------------------------+--------------------------+----- +5v (7)
     |                          |                          |
     /                          /                         === 4u7
     \  10k                     \ 2k2        4            --- (Tant)
     /                     10k  /          +---|\   6      |
     \                   +-/\/- +----------+   |#)o---+   -+-
     |                   |      /          +---|/     |   ///
     |        | |        |   |/              5        |
     +------- | | -------+---|    2N3904     74LS132  +-------- SW7 (4)
     |        | |            |\             (+5v=14, Gnd=7)     Output
     /        10nF             >\
  |/   MEL12                     |
  |\>  Photodarlington           |                       +------- Gnd (8)
    >\                          -+-                      |
     |                          ///                     -+-
    -+-                                                 ///
    ///

Notes
------
0) Not the official Vectrex lightpen.
1) Pin connections to vectrex left joystick port shown in brackets
2) For some reason, 74LS14 does _not work_ in this circuit. 74LS13 should be OK
3) MEL12 available from Maplin. Do not know of any equivlents
4) Use Seqa extension cable (with plug cut off) to make connection to vectrex.

The following information on how the light pen works was taken from the readme file included with DVE 1.4. It is written by the emulators current maintainer, Chris Salamon.

How I think the vectrex lightpen works:
(forgive me if something in here doesn't sound very professional,
 cause I really am a technical illiterate, I just describe what I found
 out looking at the Art Master Rom...
 and ... I never programmed a 6809 processor)

Artmaster uses sort of two different ways to locate the lightpen:
a. check known positions if something is there
b. search the hole screen for a lightpen

a. To put it simple: The last lightpen position is known, Vectrex thinks
   the lightpen must still be somewhere near, so it draws something like
   a spider net arround the last position.
                                   /-----\
                /---\             /       \
    /-\        /     \            I       I
    I*I        I  *  I            I   *   I         ...
    \-/        \     /            I       I
                \---/             \       /
                                   \-----/

   If it is found somewhere on the WEB Vectrex is happy :-)!
   If not it stops searching and is unhappy :-(!
   You will see that very often using Artmasters Sketch or Connect
   Menu (everytime you release the button!).

   Emulating this was fairly simple, since the only thing to be added
   was mouse position information.
   The lightpen will generate an interrupt on the PIA line CA1.
   So I only changed the analog section of the emulator, if
   the position of the vector ray was near the mouse position
   then...
   t6522IFLG|=E6522IFLG_CA1;
   change the PIA interrupt register so that it thinks an interrupt had
   occured. Actually I didn't like to put it in the Analog section,
   since it is a PIA interrupt, and all other PIA interrupts are triggered
   in the PIA section of the code... but than again it is triggered sort
   of by the vector beam too...

b. The method used in animation modus is somewhere different, for
   you can put 'new' lines anywhere on the screen, so 'webbing' would
   be sort of unefficent.

   ArtMaster scans the whole screen for the lightpen position.
   It draws lines from bottom to top (search_screen_for_scanlines (0721)).
   (0x7a lines by the way (0721)) These lines are drawn every
   0x0200 (0766) vectrex coordinates (y-axis that is).
   It starts at position 14944 (decimal)(0726) and goes up (screen upwards)
   to -17888.

   A line is drawn all the way, after it is finnished there is a check if
   a lightpen pick occured, if so then further testing regarding the
   horizontal position is done (find_point_of_intersection (076d)).
   If it doesn't find a pick at all it leaves the routine
   (being unhappy again...).

   The horizontal position is somewhat trickier to get. ArtMaster
   calculates the position. It redraws the scanline (0770...) where
   it found the lightpen pick, starts a counter (register b=0x7f (0798))
   draws the line and while decreasing the counter waits for an
   interrupt to occur. (lightpen interrupt on PIA CA1, 0776...)
   If an interrupt occurs, the position is calculated and stored
   (process_ISR (07B7)).
   Finished.

   So I had to implement a new interrupt, the vectrex emulator
   did not react on CA1 interrupts (this was done in five minutes, since
   it was virtually nothing!).
   After me having optimized the processor to multi-ticks (that's what
   I call it) calculation of the horizontal position was somewhat
   difficult. I actually had to reimplement the old single-tick cpu
   again to calculate the position correctly, furthermore an analog
   tick HAD to occur every cycle, otherwise the emulator could miss
   the position it was looking for.
   The beam position had to be integrated every tick and could not
   be calculated per ticks since last integration.
   All this makes lightpen emulation sort of inefficient :-(.
   BUT I only use this sort of testing and integrating when BOTH
   mousebutton is pressed and an CIA interrupt is enabled... so
   most of the time emulation goes smooth still.

   While we are at it... I cheated somewhat here!
   ArtMaster tries to disable interrupts with following code
   (disable_interrupts (07aa)):

   clra
   sta   0x0e

   Which doesn't really clear anything, since the interrupt vector
   to be cleared must be specified, it should be something like:

   lda   #0x02
   sta   0x0e

   This incorrectness caused a slowdown once the interrupt was enabled
   the first time and the mouse button was pressed...
   The workarround to that was, that EVERYTIME an interrupt is cleared
   bit two is set!
   (emu6522.c function: UBYTE f6522Addr0EWrite(UWORD tAddress,UBYTE tData))
   This shouldn't really concern any other vectrex rom, since that
   interrupt is only used by the lightpen (I think).
   But I really hated doing that, since emulation
   perfection is somewhat broken...
   The other way would have been to change the ROM, but that would
   have been a none trivial task, since there is not so much
   space for new code in there...

   The width for a mouse position to be recognized is 0x100 vectrex
   coordinates, I derived that value of the ArtMaster
   search_screen_for_lightpen routine, which scans in intervalls of
   0x200. Sometimes with the emulator lightpens are not recognized,
   this relates directly to the above mentioned 0x100. It could
   probably be a bit wider range, but a miss happens fairly seldom,
   so why bother, I guess it happened with a real lightpen too.
   To take a wider range than 0x100 would have made
   for example connect and scetch somewhat inaccurate, so I left it at
   0x100...

 

 


Technical Manual

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

Finally i've got hold of a complete set of decent quality scans of the Vectrex Technical Manual. The zip contains large BMP files of all the pages (including the front cover!).

Be warned though, it's a pretty big file (over 6 meg) and the whole lot unzips to over 100 meg!!

Click Here to Download the manual

 


Programming

#General Overview | #Technical Overview | #Joystick Diagram | #Cartridge Port Pin-Outs | #Light Pen Details | #Technical Manual | #Programmming

 

Chris Salamon has put together an excellent package of information about programming the Vectrex. It includes tutorials, source code, utilities, everything you need to start writing your own software

Click Here to download the package

Back to Main Index