Bradford J. Rodriguez, Ph.D.

Specializing in embedded and distributed control systems -- contract design and development of microprocessor hardware and software, particularly when maximum performance is required from limited resources, or when a blend of hardware and software expertise is needed.
 
CONSULTING PROJECTS
2002-
2003

IsoPod: Wrote the operating software for this family of single-board computers, named one of the "Top 100 Products of 2002" by EDN Magazine. 
  • Converted 68HC12 MaxForth language and 68HC11 IsoMax extensions to the Motorola DSP56F805 microprocessor
  • Added fast object-oriented extensions
  • Wrote I/O library for DSP56F80x peripherals, including PWM, ADC, timers, parallel, serial, and SPI
  • Wrote motion control (trajectory) and PID control software
  • Wrote internal and end-user documentation
  • Continuing maintenance of software and documentation
This project was developed in C, Forth, and DSP5680x assembler, using Metrowerks CodeWarrior.
2002-
2003

ZPC:  Created software for this MIDI guitar controller by merging and unifying the EventStation percussion software with the "Ztar" guitar software.  The new instrument adds all of the EventStation features to the guitar instrument, with more memory, more I/O, and faster performance, on the same "D5" hardware.  New features include more flexible zone processing, more flexible sensor processing, new chording and fingerboard modes, and versatile dump and restore.
2002
Harmonic Analyzer:  Developed DSP software for an industrial test fixture.  This assembly-language software performs signal generation, measurement, and harmonic analysis at a 320 kHz cycle rate.  Recommended a  Motorola DSP56F803 single-board computer at one-twentieth the cost of comparable DSP boards!
2001
Invictus:  Expanded and improved the embedded control software for this industrial laser.  New functions include improved self-test and safety interlocks, interface to Dallas "iButton" for timing and file storage, serial remote control, and "in-place" reprogramming of the operating software in Flash memory.  This project used a 68HC11 processor programmed in Forth.
1999- 2000 EventStation: Expanded and improved this MIDI percussion controller. Designed a "quasi logarithmic" preamplifier to improve dynamic range and sensitivity for piezoelectric sensor inputs. Assumed maintenance of prototype software, and produced final production software, including: 
  • Faster and more flexible scan and event processing
  • MIDI receive processing, sequence recording and playback, and bulk dump
  • Absolute and variable time scheduling, and programmable metronome
  • Memory expansion through paged RAM management
  • "Menu engine" for simpler and more flexible user interface programming
  • Many new operating modes
This project was developed in Forth and Zilog Super8 assembler, using MPE Ltd.'s Forth cross-compiler.
1999 MicroZone: Adapted software from the "Ztar" MIDI instrument to accept an 810-key microtonal keyboard and produce a multichannel MIDI output. 
1998- 1999 ANGL: Developed a distributed object-oriented language for an embedded industrial controller, to meet the requirements of the BACnet(tm) specification for building automation and control networks. Fully responsible for implementing: 
  • Late-binding object-oriented extensions to Forth language
  • BACnet(tm) object model and message services 
  • Predefined classes for control actions, including tokenized formula processing
  • Multi-drop RS-485 master-slave network using 8-bit UARTs: Data Link, Transport, and Application layers
  • Modem & PC gateway for network
  • Thorough documentation
This project was developed in Forth and 68HC12 assembler, using Forth Inc.'s SwiftX(tm) cross compiler.
1998 PSC1000: Developed asynchronous serial drivers for the I/O processor of the PSC1000 microprocessor.
1997- 1998  D5 CPU: Designed a Zilog Super8 embedded processor board for a MIDI musical instrument. The new board is 40% smaller yet has four times the capacity of the previous processor, at comparable cost. Software for the previous board was converted while retaining backward compatibility; new features include aftertouch sensing and output, and support for a microtonal keyboard.
1996- 1997  OTA: Developed software for point-of-sale terminals under the Open Terminal Architecture specification. Supported and extended Forth kernels on 8051, 6303, and 68000 processors; wrote hardware I/O drivers and OS interface routines; implemented extended precision math for security algorithms; installed and validated application code. Developed a byte-code Forth interpreter for an 8051-based "smart card" using less than 128 bytes of RAM and 3.5K of ROM; this interpreter runs twelve times faster than a competitive product. 
1993- 1996  Tandem Accelerator: Conceived and implemented a real-time, distributed, inference-driven control system for a Tandem particle accelerator, including: 
  • fail-safe, retrofit interfaces to the vintage-1968 electronics
  • distributed, embedded expert system - over 3000 inferences/second 
  • temporal algebra and temporal logic for process control 
  • expandable token-ring network using asynchronous serial ports
This project employed a network of 68HC16s and IBM PCs, was written in Forth, and has been accepted for a Ph.D. in Computer Engineering. 
1995  8051 Small C: Wrote and documented Small C for the 8051 microprocessor. 
1994  CamelForth: Developed CamelForth, a portable ANS Forth compiler for Harvard and von Neumann processors, with implementations for Z80, 8051, and 6809. 
1994  6809 SM-II: Designed and constructed an inexpensive multiprocessor for education and research. Designed novel logic to use common 8-bit processors, to reduce total system cost below $200 per CPU.
1993  Chromium metacompiler: Developed Chromium, a interactive Forth cross-compiler. 
1993  68HC16 MPE Forth: Wrote MPE Forth for the 68HC16, including kernel, multitasker, and documentation. 
1991- 1992  Echelon: Conceived and developed the Echelon lighting control system: 
  • expandable multiprocessor hardware using Zilog Super8s 
  • "P4 bus" for interprocessor direct memory transfers 
  • "SP bus" master/slave network for remote, distributed CPUs
  • all processor and I/O hardware - CGA/EGA video, floppy disk, various serial interfaces, analog multiplex I/O 
  • fast multitasker with 13 microsecond context switch 
  • executive and operator interface software 
  • "tiered tandem" calculation routines for 300% faster operation
  • over 20,000 lines of code in Forth and Super8 assembler 
Worked with team members and co-developers in California to complete in 1.5 man-years what took the competition five! 
1991  Z8 Max-Forth: Wrote Z8/Super8 Max-Forth, with adaptation to Harvard architecture. 
1991  Z8 MPE Forth: Wrote MPE Forth for Z8/Super8, including kernel, multitasker, and documentation. 
1989- 1990  Producer II+: Continued software development for Producer II+ lighting console, including improved command processor, remote terminal, video displays, printer and disk functions, in Super8 assembler.
1989 Quantum: Supported software development for the Quantum high performance entertainment lighting system, using the Producer II+ CPU board. 
1988  Producer CPU: Designed and constructed a Zilog Super8 single-board computer for retrofit into the Producer II lighting control console. The new board doubles performance at lower cost, and adds interfaces for floppy disk, printer, high- and low-speed serial, VFD/LCD, and an IBM Color Graphics Adapter. Wrote all I/O drivers, a Z80-to-Super8 assembly language translator, and full documentation. 
1988  BMDSIM: Helped convert a Ballistic Missile Defense simulator from a Tektronix graphics workstation to an IBM PC-AT. Wrote polyForth drivers for Tecmar Graphics Master boards, allowing four EGA-quality graphics displays in a single IBM PC. Improved orbit and target simulations and displays. 
1987  Comstar/MD288: Developed Comstar, a Zilog Super8-based interface and control board for theatrical dimmers. In two months, designed, prototyped, and tested hardware and assembly-language software for multi-protocol data reception, and for real-time phase control of an array of power semiconductors. Wrote full technical documentation, extensive diagnostics. 
1987 VectorForth: Developed software for a PC-based array processing workstation. Wrote assembler and system interface for Vortex and Point-I array coprocessor boards, polyForth language support, and 3-d graphics. 
1987  AirHouse: Designed and wrote Z80 control software for a networked HVAC control system. Implemented PID control algorithms, fault response, and network communications code, using polyForth and clusterForth. Wrote detailed customer documentation. 
1986  PAMELA: Developed IBM PC/XT simulation software for an adaptive optics subsystem, including 3-d modelling, time simulation, and graphic display. Extensive code optimization in polyForth and 8087 assembler achieved 20 times the speed of a VAX.
PREVIOUS POSITIONS
1983- 1986 R&D Software Manager, Strand Lighting: developed, and managed development of, real-time lighting control systems. Managed 3-member software development group; responsible for hiring, firing, performance evaluation, task assignments, budget preparation, capital expense justifications. Supported LSI-11 development system under TSX-Plus v2 and v5; supervised conversion to Unix System V. 
1985- 1986 Managed a crash project to develop Lightboard M, a new low-end lighting controller, in five months. Wrote product and operational specifications, accurate PERT forecasts. Selected and supervised project team. Designed 6809-based hardware, including analog and digital I/O, communications and co-processor interfaces. Wrote 6809 Forth kernel. 
1984- 1986  Designed and managed development of Lightboard XP, a real- time, networked, lighting control system. Supervised 8-person team. Designed system architecure, using multiprocessor 68000, TMS320 coprocessors, 6809 peripheral processors. To meet project cost targets, designed a LAN interface costing less than $25 per drop when comparable systems cost $300. Specified hardware and software requirements, CSMA/CD LAN protocols. Created an application language for lighting control. Designed and wrote multiprocessor operating system, language translators, and LAN drivers, in 68000 assembler and Forth.
1983- 1984  Doubled the capacity of Light Palette, the top-of-the-line LSI-11 lighting controller, to meet market commitments. Product manager said "software is the cleanest I have ever seen in a new program." Managed project to completion on schedule. 
1982- 1983 R&D Software Engineer, Strand Lighting
1983  Produced a marketable product, TV Light Palette, by adapting experimental LSI-11 software to run on existing hardware. 
1982- 1983  Developed real-time software in Forth for Mantrix Memory, a new Z80 lighting control system. Designed and coded kernel, interrupt handlers, I/O drivers, co-processor interface, calculation routines, displays, command interpreter. In five years on the market, this software never required a "bug" fix. 
1982  In three months, expanded an existing Z80 lighting controller, Mantrix, to counter a competitor's market entry. Devised Z80 algorithms yielding an eightfold increase in processing power. 
1982 Independent Contract Programmer 
1982  Developed Z80 and 6502 device drivers, CP/M file server and file transfer programs, for 1553-Net Local Area Network. 
1982  Wrote quicksort programs in assembler for IBM PC and Apple III
1980- 1982 Member of the Technical Staff, TRW Defense & Space Systems
1981- 1982  Designed operating system software in Concurrent Pascal for 8086-based diagnostic system for TRW's Military Computer Family. Wrote functional and software specifications. During three months on project, made up three month lag to bring task on schedule. 
1981  Installed and mantained Intel and GenRad microprocessor development systems for Microprocessor Training Center. Wrote intersystem communications programs. 
1980- 1981  Specified and developed software for DS-VSDS 8080-based telephone switching system, using existing multitasking software. Wrote comprehensive hardware description for training manual. Installed and managed Unix v6 and v7 on PDP-11/70. 
1978- 1980  Director, General Technics. Formed and operated a research and consulting firm with two partners. Implemented and supported CP/M operating system; wrote comprehensive user's manual.
1978- present Personal research: 
  • Forth kernels, expert systems, assemblers, metacompiler 
  • a "minimal" microprogrammed Forth machine using standard TTL 
  • local area network hardware and software 
  • multiprocessor computer hardware and operating systems 
SELECTED PUBLICATIONS
EDUCATION
1998 Ph.D. in Electrical Engineering, McMaster University, Hamilton, Ontario. Thesis: An Embedded Temporal Expert for Control of a Tandem Accelerator (a distributed AI system for real-time control). 
1989 M.S. in Computer Science, Bradley University. Thesis: PatternForth: A Pattern-Matching Language for Real-Time Control (real-time pattern matching and language design).
1980  M.S. in Electrical Engineering, Bradley University. Emphasis on digital logic, communications. Supported Unix v6 system. 
1977  B.S. in Electrical Engineering, Bradley University. Minor in physics, additional work in computer science and instrumentation. 
MISCELLANY

Languages: Fluent in Forth, C, and assembler for 6502, 6809, 68HC11, 68HC12, 68HC16, 68000, 8051, 8080, 8086, LSI-11, Super8, Z8, Z80. Proficient in Pascal, BASIC, FORTRAN.

Operating Systems: Experienced with Unix, RT-11, CP/M, MS/DOS, polyFORTH.