OPCSIFACE(DOCS) Optical Printer Control System OPCSIFACE(DOCS) NAME OPCSIFACE - OPCS Interfacing docs -------------------------------------------------------------------------------- PIO-100 - PARALLEL PORT INTERFACING -------------------------------------------------------------------------------- NAME pio-100 - OPCS parallel port I/O interface board DESCRIPTION The OPCS parallel port interface board (PIO-100) was designed to simplify wiring between the computer parallel port and the various digital sensors on the printer, using standard RJ-45 patch cables to route the signals to each sensor. The board also optically isolates the computer and the optical printer's digital sensors, namely home sensors, buckle/viewer switches, deenergize options, tension motors, etc. There are several revisions of this board: REV 3/Feb 2010: First use by Disney (YCM printers), used by others See: http://seriss.com/opcs/docs/parallel-port-interface/rev3 REV 6/Jan 2021: First use by Mike Ferriter, Andy Kaiser, Bruce Heller, Carl Spencer, etc. See: http://seriss.com/opcs/pio-100/ REV 6 "PIO-100" Parallel I/O Board - Jan 2021 ============================================= This board has a webpage with schematics, wiring diagrams, PCB layouts, photos, and other useful information here: http://seriss.com/opcs/pio-100/ As of this writing (Aug 2021), REV 6 is the latest revision of this board. This board was branded with the model number "PIO-100", to differentiate it from the other OPCS boards (A800, SD-800, etc). At the top, a parallel port connector is connected to the computer's parallel port via a DB-25 ribbon cable. On the right side, a single 12V power connector. Derives 5V with an onboard 7805 used for the computer interface. While this board is optically isolated for the signals, there is a common ground between the 12V and 5V supplies. Along the bottom are 16 RJ-45 connectors arranged in two-tier connector blocks. These fan out to the optical printer's sensors and motor controls as individual RJ-45 patch cables, one per device. These devices can be 12V home sensors (or 'optical sensors'), tension motor control relays (SSR's), buckle/viewer switches, motor enable/disable controls, etc. The REV 6 board looks like this: PARALLEL PORT _______________ ____________________________|_______________|__________________________ | _ _ | | _____ | | | | | | |_______________| | | | | | | | | _____ _____ |7805 | | | |_| | | |_____| |_____| | | | | |_| |_____| | | ||| | | _________ _________ _________ _________ _________ __| | |_________| |_________| |_________| |_________| |_________| -| | 12V | +|__| POW | | | ||..||..||..||..||.. | | ||..||..||..||..||.. | | NPN PNP | | | | ______________________________ ______________________________ | | | TENS TENS TENS OUT | | IN IN IN IN | | | | (2) (3) (4) (5) | | (10) (11) (12) (13) | | | |______________________________| |______________________________| | | | OUT OUT OUT OUT | | IN | | | | (6) (7) (8) (9) | | (15) X X X | | |__|______________________________|__|______________________________|___| \____________________________/ \____________________________/ Eight RJ-45 Eight RJ-45 Connectors Connectors (Two Tiers) (Two Tiers) Regarding the labels on the RJ-45 connectors, the numbers in parenthesis are the parallel port pin#s: > Outputs (from the computer) are pins 2 thru 9. > Inputs (to the computer) are pins 10 thru 13, and 15. TENSION OUTPUTS --------------- At the bottom left, there are three 'TENSION' outputs intended to control the SSR relays for tension motors, one RJ-45 output cable per pair of feed/takeup motors, one pair for each film movement, which is typically: TENS(2) -- Aerial Projector (feed/takeup) TENS(3) -- Main Projector (feed/takeup) TENS(4) -- Camera (feed/takeup) Changing a bit on one of these outputs inverts the state of the feed/takeup so that only one of the two tension motor relays is on, and the other off. In the OPCS software's setup file, OPCSDEFS.OPC, the TENSION(OPCSDEFS) command is used to configure this for each channel that supports tension motors. When the channel is running forward, the TAKEUP motor is energized, and FEED is disabled. Typically a small high power low ohm rating resistor lies across each SSR relay's output, allows a small amount of 110VAC to run the tension motor as a "holding current" when the relay is off. When the relay is on, full 110 VAC drives the tension motor. Actual voltage to the motors are usually tunable with a variac the camera operator can set. ### TENSION(2,3,4) OUTPUTS ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR 1 GND WHT/ORN 2 TAKEUP(-) ORN 3 GND WHT/GRN 4 TAKEUP(+) BLU 5 GND WHT/BLU 6 FEED(-) GRN 7 GND WHT/BRN 8 FEED(+) BRN GENERIC OUTPUTS --------------- Since the first three output pins of the parallel port are used for tension motors, the remaining five pins are generic optically isolated 12V outputs that can be used for various purposes. Often these are used to deenergize channels, allowing the software to unlock motor(s) on command, allowing the operator to freewheel the motor, then the software can re-home the motor on completion. Generic output control can be done via the 'home' command as configured in the HOMEDEFS.HOM file, using either the 'setbit' or 'clrbit' commands. Similar commands in the OPCSDEFS.OPC file and/or OPCS run scripts can be used to change the parallel port's bits via command control, e.g. ldefs -c setbit 0378 8 0 -- set parallel port pin #5 (bitmask 0x08) ldefs -c clrbit 0378 8 0 -- clear parallel port pin #5 (bitmask 0x08) ### OUT(5,6,7,8,9) OUTPUTS ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR 1 GND WHT/ORN 2 GND ORN 3 GND WHT/GRN 4 N/C BLU 5 GND WHT/BLU 6 OUTPUT GRN <-- LOW=GND HI=+12V 7 GND WHT/BRN 8 +12 BRN GENERIC INPUTS -------------- The generic inputs IN(10) thru IN(13) and IN(15) can be used for either home sensors, buckle/viewer switches, etc. These respond to voltages typically 12V (for "on") or pulled to Ground (for off). +12 and Ground signals are provided on each RJ-45 port to be used for driving the home sensor's internal circuits and for 12v/Gnd reference. Home sensors are typically configured for the 'home' command using the HOMEDEFS.HOM file's 'homeport' command, which procedures in that file can then use to test the home sensor to conditionally run motors. Buckle and Viewer switches can also be used to drive these inputs. Schematics are available on the website, and also are printed on the board's silk screen for reference, along with simple wiring diagrams. ### IN(10,11,12,13,15) ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR 1 GND WHT/ORN 2 GND ORN 3 GND WHT/GRN 4 N/C BLU 5 GND WHT/BLU 6 IN GRN 7 GND WHT/BRN 8 +12 BRN INPUT JUMPERS ------------- To support both NPN and PNP home sensors, a jumper block is provided on the board to allow either type to be supported. The default is NPN, which is the most common sensor type. It is advised you standardize on only one type of sensor for all sensors, so they can be easily reassigned without having to change the jumpers. WARNING: BE SURE THE BOARD'S 12V POWER IS REMOVED BEFORE CHANGING JUMPERS. If you must change the jumpers while the board is "hot", remove *both jumpers completely* before replacing to the new positions. AVOID changing one jumper at a time, as that can short the 12V power supply during mid-change. CAVEATS ------- The RJ-45 connectors labeled "X" are unused for I/O, but can be used for access to +12V and GND from the board for various purposes (such as 12V power lights, etc) On the REV 6 board, there are a TWO MINOR ERRORS that will be fixed in future revisions (probably REV 6A and up): > Many of the little diagrams on the silk screen are wrong. White labels are affixed over these problem diagrams to make corrections. All REV 6 boards in the field should already have these white 'fix labels' on them. > Two of the outputs, OUT(8) and OUT(9), do not match the normal wiring pattern of the other connectors. It's advised you do not use OUT(8) and OUT(9) on the REV 6 board, for consistency. REV 3 "Parallel Port Interface Board" - Feb 2010 ================================================ This board has a webpage with schematics, wiring diagrams, PCB layouts, photos, and other useful information here: http://seriss.com/opcs/docs/parallel-port-interface/rev3/ The REV 3 board uses separate +5V and +12V power, to ensure complete isolation. But it is possible to use a single dual +5v/+12v power supply and share the signal ground. At the top, a parallel port connector is connected to the computer's parallel port via a ribbon cable. On the sides, power connectors for the input +12V and +5V. Along the bottom, RJ-45 connectors are used to fan out to the optical printer's sensors and motor controls; home sensors, tension motors, buckle/viewer switches, motor enable/disable controls, etc. It looks like this: PARALLEL PORT ____________ __________________________________________|____________|______________________ | _ | | _ | | | | +5/+12 |____________| +5/+12 | | | | | | POW CHAIN _____ _____ POW | | | | |_| OUTPUT |_____| |_____| |_| | | _______ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | | |_______| |_||_||_||_||_||_||_||_||_||_||_||_||_||_||_| | | ______ ______ | | |______| |______| | | | |______________________________________ _______________________________________| |PWR PWR PWR IN IN IN IN IN | TEN TEN TEN OUT OUT OUT OUT OUT| | 1 2 3 15 13 12 11 10 | 9 8 7 6 5 4 3 2 | |______________________________________|_______________________________________| \___________/ \____________________/ \___________/ \_____________________/ RJ-45 RJ-45 RJ-45 RJ-45 Power Inputs from Buckle, Tension Outputs for Outputs Viewer, Home sensors Motor various uses Outputs For the most part, the buckle/viewer sensors are configured by the BUCKLE(OPCSDEFS) and VIEWER(OPCSDEFS) commands in the OPCSDEFS.OPC file to define the port and bit mask values corresponding to the RJ-45 ports used for those features. The home sensors are configured in the HOME(DOCS) program's HOMEDEFS.HOM to define the port and bit mask values corresponding to the RJ-45 ports used for those features. The tension motor controls are configured with the TENSION(OPCSDEFS) command in the OPCSDEFS.OPC file to define the port and bit mask values corresponding to the RJ-45 ports used for those features, and are wired specially with Crydom solid state relays to control the AC tension motors. Various other inputs/outputs can be controlled by these ports, such as energizing/deenergizing certain motors via OPCS command control. An example would be the LOAD and LINEUP commands, which might want to run the motors small amounts, and deenergize the motors to allow manually loading film. ♀ PARALLEL CONNECTOR The parallel conenctor on the OPCS parllel port interface board is a femal DB-25 connector, which should be connected to one of the computer's parallel ports. PIN PORT MASK I/O RJ-45 DESCRIPTION 2 0x378 0x01 Out OUT(2) Generic output 3 0x378 0x02 Out OUT(3) Generic output 4 0x378 0x04 Out OUT(4) Generic output 5 0x378 0x08 Out OUT(5) Generic output 6 0x378 0x10 Out OUT(6) Generic output 7 0x378 0x20 Out OUT(7) Generic output 8 0x378 0x40 Out TEN(8) Camera Tension 9 0x378 0x80 Out TEN(9) Projector Tension 10 0x379 !0x40 In IN(10) Generic Input 11 0x379 !0x80 In IN(11) Generic Input 12 0x379 0x20 In IN(12) Generic Input 13 0x379 0x10 In IN(13) Generic Input 15 0x379 0x08 In IN(15) Generic Input 18-25 - - Gnd - Ground RJ-45 CONNECTORS ---------------- INPUTS - IN(10-15) ------------------ The 5 generic inputs are realtime inputs that can be read by the computer. The OPCS software can be configured to make use of these inputs by specifying the corresponding port/mask via the OPCSDEFS.OPC or HOMEDEFS.HOM files. Typically generic inputs are used for either home sensors or buckle/viewer switch sensing. ### IN(10) - IN(15) ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR 1 Chassis WHT/ORN 2 GND ORN 3 Chassis WHT/GRN 4 - BLU 5 Chassis WHT/BLU 6 IN GRN 7 Chassis WHT/BRN 8 +12 BRN ♀ OUTPUTS - OUT(2-7) ------------------ The 6 generic outputs can be controlled directly by commands in HOMEDEFS.HOM or OPCSDEFS.OPC, e.g. the SETBIT, CLRBIT, and XORBIT commands. Typically, generic outputs are used for de-energizing motors to allow manual load/unload of film with the custom LOAD and LINEUP commands. ### OUT(2) - OUT(7) ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR 1 Chassis WHT/ORN 2 GND ORN 3 Chassis WHT/GRN 4 - BLU 5 Chassis WHT/BLU 6 OUT GRN 7 Chassis WHT/BRN 8 +12 BRN TENSION OUTPUTS - TEN(8) AND TEN(9) ----------------------------------- The tension motor outputs TEN(8) and TEN(9) can control the FEED and TAKEUP motors for camera and projector. When parallel port pin 8's bit changes from 0 to 1, the TEN(8) RJ-45 connector's FEED and TAKEUP outputs will change state, always being the compliment of each other (ie. if FEED is 'on', TAKEUP will be 'off'). ### TEN(8) AND TEN(9) ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR CRYDOM PIN# 1 Chassis WHT/ORN 4 2 -TAKEUP ORN - 3 Chassis WHT/GRN 3 4 +TAKEUP BLU - 5 Chassis WHT/BLU 4 6 -FEED GRN - 7 Chassis WHT/BRN 3 8 +FEED BRN - POWER OUTPUTS - PWR(1) THRU PWR(3) ---------------------------------- PWR-1 through PWR-3 can be used to supply +12V power to the printer. ### PWR-1 THRU PWR-3 ### ### RJ-45 PINOUTS ### PIN# DESCRIPTION COLOR CRYDOM PIN# 1 Chassis WHT/ORN 4 2 GND ORN - 3 Chassis WHT/GRN 3 4 - BLU - 5 Chassis WHT/BLU 4 6 - GRN - 7 Chassis WHT/BRN 3 8 +12 BRN - -------------------------------------------------------------------------------- SD-800 - STEPPER DISTRIBUTION INTERFACE -------------------------------------------------------------------------------- NAME sd-800 - OPCS 8 channel "stepper distribution" (SD) card DESCRIPTION The OPCS "Stepper Distribution" card (SD-800) was designed to simplify wiring between the computer step pulse generator card (e.g. RTMC16, RTMC48, Kuper Industrial, A800..) and the stepper motor driver modules (Centent, Gecko, LeadShine, etc) by breaking out the DB-37 connector into separate RJ-45 patch cables, one per stepper drive channel. This board really has no active features on it, other than a fanout to simplify wiring. Optional pullup resistor networks can be used if the application requires open collector outputs from the card to be pulled up to +5V for the idle state to prevent noise. As of this writing, there is only one version of the board, REV 0, which looks like this: DB-37 PORT (To RTMC or A800 cards) ____________________ __________|____________________|_________ | | | | | |____________________| | | | | | | | | | | ______________________________ | | | | | | | A B C D | | | |______________________________| | | | | | | | E F G H | | |____|______________________________|_____| \____________________________/ Eight RJ-45 Connectors (Two Tiers) Typically the female DB-37 connector on the board is connected to the DB-37 connector on the ISA stepper pulse generator card plugged into the the DOS computer using 6' male/male cable. And separate RJ-45 patch cables are wired to the A/B/C/D.. ports at the bottom of the board, which run out to the individual stepper drives (Centent, Gecko, LeadShine, etc). The DB-37 follows Kuper's pinout; see 'man kuper' for more info. The RJ-45 pinout diagram is on the board, but is basically: RJ-45 WIRE CENTENT GECKO LEADSHINE PIN# SIGNAL COLOR (*) DRIVE DRIVE DRIVE ---- ---------- -------- ----------- ----------- ------------ 1 GND - N/C N/C N/C 2 GND - N/C N/C N/C _ 3 GND - N/C N/C N/C DIR | 4 DIRECTION BLU DIRECTION (8) DIR DIR-(DIR) |_ 5 +5V WHT/BLU +5 VOLTS DC (10) COMMON DIR+(5V-24V) _ 6 GND - N/C N/C N/C STP | 7 +5V WHT/BRN N/C N/C PUL+(5V-24V) |_ 8 STEPS BRN STEP PULSE (9) STEP PUL-(PUL) (*) Premade RJ-45 patch cables for cat5 and cat5e usually have the standard wire colors shown above. For the signals used, the wiring colors are the same for 568A and 568B. Basically only 4 of the 8 wires are used. In some cases only 3 wires are used (Centent & Gecko). Please note these signals are DIRECTLY FROM THE COMPUTER MOTHERBOARD, so be very careful with them. Do not let them short to chassis ground on the printer, or to each other. For N/C (X) wires, be sure to isolate them from each other to prevent shorts. Either cut them to different lengths as shown below, and tape or heat shrink them to protect them from each other: Wires to Drive Terminals ___________ / \ || || || || || || || || Unused wires || || || || _________ || || || || / \ ...||.||.||.||................. . || || || || . . || || || || || . . || || || || || . . || || || || || || . . || || || || || || . <-- heat shrink wrap . || || || || || || || . . || || || || || || || . . || || || || || || || || . . _||_||_||_||___||_||_||_||_ . .| |. .| |. .|...........................|. | | | RJ-45 | | CABLE | | | Ensure there's enough difference in the wire lengths so that there's no way for their cut ends to touch each other, as the conductors at the cuts are still live. Or, cut the wires close to the cable shield, splay them apart, and put a large blob of liquid electrical tape over them to isolate them. When wiring the Centent or Gecko's, be EXTRA careful with the unused +5V signal wire (WHT/BRN). You don't want that shorting out to ANYTHING, or the entire computer's 5V supply will shut down, causing the machine to reboot (if you're lucky) or blow its internal fuse or worse. So BE CAREFUL with that. When wiring to the screw clamp terminals, I advise tining the wires (if they're stranded) before inserting them, to prevent wire fraying and shorts from stray pieces of stranded wire. Use heat shrink to prevent wire fatigue at the screw terminal points, and use nylon tie downs to also prevent wire motion at the screw terminals. -------------------------------------------------------------------------------- A800 - STEP PULSE GENERATOR INTERFACE -------------------------------------------------------------------------------- NAME A800 - Seriss Corp. A800 stepper motor control card DESCRIPTION The A800 card is a "short slot" ISA card for the IBM PC that can generate steps/direction pulse streams to control up to 8 stepper motors at once. The card uses two PIC chips to manage the stepper pulse generation. The PIC's firmware and MS-DOS driver "A800DRV.COM" source code are open source and available from: https://github.com/erco77/a800-opcs-pic-asm OPCS communicates with the A800 card by way of the MS-DOS device driver "A800DRV.COM", which provides a standard low level interface to the card that OPCS can make use of to run the motors efficiently. The A800DRV.COM driver must be loaded *before* running the OPCS software. This can be installed either by the AUTOEXEC.BAT, or by a separate batch script that invokes OPCS. If the A800 card's jumpers are default (BaseAddr=300 and IRQ=5), then you can install the driver with just: a800drv CONFIGURING THE BASEADDR AND IRQ In OPCS K1.xx, the a800 card did not exist and is not supported. In OPCS K2.00 through K2.09, the base address is configured in OPCSDEFS.OPC with the 'baseaddr' command. IRQ not configurable. In OPCS K2.10 and up, the A800DRV.COM driver allows both the base address and IRQ to be configured on the command line. The default would be: a800drv -b300 -i5 <-- Sets base address=0300h, IRQ=5 | | | IRQ=5 Base Addr=300 ..and if your A800 jumpers are set differently, then specify matching values accordingly. e.g. if the card's jumpers are set to BaseAddr=340 and IRQ=6, then start the driver with: a800drv -b340 -i6 To list the A800DRV driver's options, run 'a800drv -help'. If it does not show a list of options, then it is an older version that does not support command line options. TECHNICAL SYNOPSIS When the software wants to move a motor, it provides 8 separate 12 bit velocity values, one per motor channel. And 107 of these velocity values are sent per second to the card using the hardware interrupt on IRQ 5. Currently only 8 bits of the 12bit value are used for motor speeds. i.e. the lowest velocity is 1 (107 Hz) and the highest velocity is 255 (27,285 Hz). Values above 255 are clipped by the hardware, as the PIC chips are limited by their speed. The high bit (0x8000) is the motor direction bit; 0=foward, 1=reverse. The software has to keep up with this transimission rate, otherwise it will loose track of the motor positions. The A800DRV.COM device driver provides a 64k ring buffer for the motor velocities that OPCS updates in realtime while the motors are running. The OPCS software and A800DRV.COM use INT 99h to intercommunicate, providing the address of the ring buffer, and start/stop commands. The A800 card generates 107 interrupts per second to the A800DRV.COM driver, each interrupt feeds 8 velocities from the tail of the ring buffer to the A800 card, and increments the tail's index to point to the next 8 values in the ring buffer. Meanwhile, the OPCS software feeds velocities into the head of the ring buffer, always keeping ahead of the tail. If the tail catches up to the head prematurely, this causes a SYNC FAULT error, which should never happen unless something is wrong with the computer. ♀ OPCS A800 CARD ============== This card controls 8 axes and is a half sized IBM PC ISA card. For complete info on this card, see: http://seriss.com/opcs/a800 *** A800 *** _________________________________________________ | _____ __________ __________ A800 | ||16Mhz| | CPU2 | | CPU1 | REV-A1 | ||Xtal | |__________| |__________| ____|_ ||_____| ____ 74HCT04 | | | | | | ______ | | | | |8255| |______| | | | | | | ______ | | | DB-37 | BASE | | |______| | | | Connector | ______ ADDR | | ______ | | | | |______| :: IRQ | | |______| | | | | _______ :: :: | | | | | | |_______| :: :: |____| |____|_| | :: :: | |_________________________ ___| |...................| |||||||||||||||||||| DB-37 Connector (similar to Kuper): PIN# SIGNAL PIN SIGNAL -------------------------------- 1 - N/C 20 - +5VDC 2 - STEP A 21 - DIR A 3 - STEP B 22 - DIR B 4 - STEP C 23 - DIR C 5 - STEP D 24 - DIR D 6 - STEP E 25 - DIR E 7 - STEP F 26 - DIR F (*) = JP3 configures DB37 Pin#19: 8 - STEP G 27 - DIR G "+5" - Makes Pin #19 +5 VDC 9 - STEP H 28 - DIR H "GND" - Makes Pin #19 GND (default) 10 - N/C 29 - N/C 11 - N/C 30 - N/C 12 - N/C 31 - N/C NOTE: When fitted with 74LS07 chips, 13 - N/C 32 - N/C outputs are OPEN COLLECTOR TTL. 14 - N/C 33 - N/C 15 - N/C 34 - N/C When those chips are replaced with 16 - N/C 35 - N/C 74ALS1034N, outputs swing a full 17 - N/C 36 - N/C +5/GND and are CMOS/TTL compatible. 18 - N/C 37 - N/C 19 - GND(*) BASE ADDRESS (JP1) ================== Closeup of the 'BASE ADDRESS' jumpers (JP1), which sets the base address of the 8255 chip's I/O port registers: ___________ | BASE ADDR | |___________| | | | 200 o o | | 240 o o | | 280 o o | | 2C0 o o | | 300 o o <-- Default jumper for 300 across these two pins | 340 o o | | 380 o o | | 3C0 o o | |___________| JP1 A800 Base Address Jumpers Always defer to the board's labeling (if any), as the board designs may have changed since this document's writing (May 2020). DEFAULTS: This board has labels for the BASE ADDRESS and IRQs: "300" is the default base address (5th pair of pins from top jumpered). "IRQ5" is the default IRQ (4th pair of pins from top jumpered). DB-37 OUTPUT SIGNALS ==================== The STEPS output are normally high (+5) during idle, and fall low (GND) to pulse the motor a single step. The outputs for DIR (direction) are logic hi (+5) for forward, and logic low (GND) for reverse. The output signals can either be CMOS hi/low levels, or can be "open collector" (where logic 'hi' is 'open', and logic low is gnd). Which it is depends on the chips installed in the three chip positions to the left of the DB-37 connector on the A800 board: 74HCT04 -- CMOS high/low levels (default) 74LS07 -- Open Collector For controlling the modern DM542 and FMD27400 motor drivers, the 74HCT04 chips are recommended in these positions. For Centent and Gecko drives, traditionally 74LS07 chips were used, but will probably also work with the 74HCT04's. While both chips work on all drives, analysis with an oscilloscope monitoring the stepper drive inputs may reveal one chip is better than the other for noise reduction. With 6' cables, 74HCT04 seems the best choice. Always defer to the board's silk screen labelling, as the board designs may change since this document's writing (May 2020). HISTORY Greg Ercolano designed this card in May/June 2020, and the driver software, A800DRV.COM. This card uses "PIC chips", which are programmed with firmware written in the processor's native assembly language for speed and consistent timing for generating the steps and direction motor signals. SEE ALSO RTMC16(DOCS) - notes on the Kuper Controls RTMC16 motor control card RTMC48(DOCS) - notes on the Kuper Controls RTMC48 motor control card 8255(DOCS) - how to control 8255 based digital I/O cards KUPER(DOCS) - documentation on the kuper card connectors AUTHOR Greg Ercolano / Seriss Corporation 2021