Category Archives: OSI 300 Trainer

OSI-300 Mini Assembly

Assembly of the OSI-300 Mini is fairly straightforward.  I typically start with the shortest height parts, and work up to the tallest.

  1. 1N4148/1N914 diodes D1-D20, D41, D42, and D43
    The black bar on each diode matches the bar on the silkscreen.
  2. 220 ohm resistors R1-R32, R35, and R39
  3. Remaining resistors:
    1. 4.7K ohm resistor R33
    2. 100K ohm resistor R34
    3. 100 ohm resistor R36
    4. 2.2K ohm resistor R37
    5. 4.7K ohm resistor R38
  4. 1N4001 diode D44
  5. .1uF capacitors C1-C5, C7-C9 (Lead spacing: 2.54mm/.1in)
  6. 10pF capacitor C6 (Lead spacing: 5.08mm/.2in)
  7. Sockets (five 14-pin, one 40-pin, one 28-pin)
  8. 3mm LEDs
    The flat edge matches the flat edge on the silkscreen.
  9. Switches
    There are two single-pole double-throw switches wich are different. They are to be used for the run and reset switches. They can be identified by the two slots on the side of the switch body.
  10. Single pin headers
    These should be broken out of the 6-pin breakable header
  11. Jumper
    I usually take a cut lead and bend it into a jumper to bridge the two pads above R34
  12. IC installation
    1. 7417N U1-U4 (buffers)
    2. 6502 U5 (CPU)
    3. 6264 U6 (SRAM)
    4. 7402 U7 (output)
  13. Rubber Feet
    I included two rubber feet to be placed under the OSI-300 Mini. They are too big to fit as-is, but can be cut with a sharp pair of scissors to form four half-circles.

A schematic of the PCB board can be found atminitrainer.pdf

I have found that I can test the board without the CPU and SRAM to ensure that the switches work properly by turning off/on the LEDs with the RUN switch set left.

The operation of the board can be accomplished by following the manual at Dave’s OSI repository

I’ve found that while programming, it is necessary to ensure that the RUN is left and RST is right. To run the program, switch RST left, then right, then switch RUN right, followed by RST to the left.  This sequence ensures that the clock starts properly.

Paul has also pointed out that the reset address used in the OSI manual needs to be adjusted due to the extra address lines.  In place of 7C and 7D, you will want to use FFC and FFD.

Update: at this point due to issues with the postal system I no longer will be mailing kits.  If this changes, I will update this post.

Mini OSI-300 Parts List

IMG_9007_800x600

The final tally of parts is:

  • 1x R6502 NMOS 6502 CPU
  • 1x 6264 8k x 8 SRAM
  • 4x 7417 Hex Open Collector Buffer
  • 1x 7402 Quad NOR Gate
  • 21x 3mm red LED
  • 23x 1N914/1N4148 diode
  • 1x 1N4001 diode
  • 1x 100 ohm 1/4W resistor
  • 34x 220 ohm 1/4W resistor (I used 1/8W)
  • 1x 2.2k ohm 1/4W resistor
  • 2x 4.7k ohm 1/4W resistor
  • 1x 100k ohm 1/4W resistor
  • 8x .1in (2.54mm lead spacing) .1uF capacitor
  • 1x .2in (5.08mm lead spacing) 10pf capacitor (G0P/NP0)
  • 1x 40pin socket (if desired, turned pin preferred)
  • 1x 28pin socket (if desired, turned pin preferred)
  • 5x 14pin socket (if desired, turned pin preferred)
  • 6x breakaway header, single male pin
  • 24x 4.3mm x 8.6mm SPDT switch (C&K OS102011MS2QN1 or Jameco SS12D02)
  • 1x 6.8mm x 8.6mm DPDT switch (C&K OS202011MS2QN1 or SS22D07)

The mini trainer requires a 5v 1Amp supply to operate, although it does run fine from four AA batteries.

A Tale of Switches

Switches with logos
Switches with logos
Switch backs
Switch backs

While working on my mini OSI-300 Trainer, I encountered issues with the switches that I had purchased.  The seller advertised them as SS12D07 switches, which according to the data sheets that I had found, were non-shorting, single pole, double throw switches.

They were single throw, double pole, and fit the size and shape specifications.  Unfortunately, the ones I received were definitely not non-shorting, otherwise known as break before make, switches.  I found a single SS12D02 from Jameco in among my assortment of switches.  It appears to be non-shorting, and taking it apart I found that it uses a slightly different mechanism than the SS12D07 I had purchased.

I placed an order for C&K OS102011MS2QN1 switches, which are designed to be non-shorting (there is a specific shorting version.)   The C&K parts arrived and I have tested and confirmed that they are definitely non-shorting as expected.

In the images above, I show the parts from left to right:

  • Jameco SS12D02
  • C&K OS102011MS2QN1
  • T.O.Y SS12D07 (shorting)

Both the Jameco and C&K parts have two small vertical slots on the side.  The T.O.Y part has an indentation on the opposite side, which can be seen in the second image.

For my mini OSI-300, the T.O.Y parts are usable for all but the Run and Reset switches.  The Data and Address switches are configured as single pole, single throw.  The NMI switch has a resistor to prevent a direct short to ground, and the ROM switch does not switch between power and ground directly.  The Load switch is configured as a double pole, single throw switch as well.

In general, I have had the expected results when purchasing parts from places other than the big parts houses such as Mouser, Digi-key, Jameco, etc.  I find that looking closely at images and reviews improves the odds of receiving a working part.  Out of the ten 6264 SRAM chips I received, although all were marked with the same markings on top, they all had different tool marks on the body, markings on the backside, and three were completely non-functional.

 

Completed OSI-300 mini prototype

Completed PrototypeAs indicated in my previous posting, I had issues with the switches that I purchased and their usage in the OSI-300 mini.  I took apart one of the switches in order to get a closer look at how it worked and if the switch could be adjusted to work properly for my application.

The switch has three blades that are made as extensions to the individual leads.  The switch connection is made by a metal slider that has four contact points, two on each side of the blades.  These contact points are supposed to be sized such that they do not contact the outer two blades at the same time.  The options to fix this are to separate the blades with more space, or shorten the contact points to avoid shorting the outer blades.

I looked at a similar component at work and found that they had shortened the slider slightly by bending the outside corners of the four contacts.  I took a pliers and did the same to two of the switches that I had.  After much trial and error, I was able to adjust the switch to prevent the shorting that I had seen.  I soldered them in place to complete the prototype and took the image above.

 

Prototype OSI-300 mini

Prototype mini-trainer
Prototype mini-trainer

I recently received the boards I designed from the manufacturer.  They were very well done, even with the tight tolerances required to line up the various components.

Additionally, the parts I ordered to assemble the board arrived as well, and I set to assembling the board.

After a few hours of soldering, I was able to come up with the attached image.  I ran into only two issues, one with the design, and one with the parts.

The schematic I drew had an issue with the connection between the resistor and capacitor that form the clock circuit.  After a single trace was cut and a short piece of wire was attached, I had a working clock.

The other issue I ran into involved the switches in the RUN and RST positions.  Both of these switches switch a signal between power and ground.  While the switches I picked were supposed to be non-shorting, they appear to briefly short when switched.  As a result, power is connected to ground, and the contents of the SRAM are lost.  I will try a different manufacturer and see if their switches perform better.

To avoid this, using a pull up or down resistor would be a better design.  I wanted to keep as close to the original design as possible.

The image above shows the board running a simple JMP 0000 loop at address 0000.  The data LEDs represent 01001100, or 4C in hex, the command for a jump.  The address LEDs represent 00000011, or a merge of addresses 0, 1, and 2.  While the LEDs are flashing, they are doing so too quickly to see.