1987 - 2002
Morris R. Dovey
1410 20th Street, #20
West Des Moines, Iowa 50265

As a consulting software engineer at Maytag Corporation’s R&D Center in Newton, Iowa I designed and implemented a package to allow “whiteware” (washers, driers, dishwashers. etc) designers to describe product behavior in an Excel spreadsheet, then process that data directly into compilable ready-to-use ISO/IEC standard-compliant C code which, following compilation and linking, could be installed in the firm’s appliance products.

As a consulting software engineer at Philips Semiconductor’s Cable Networking Group in San Jose, California I modified, designed, implemented, debugged, and documented software to perform design verification hardware testing of Phillips’ MIPS-based Venus cable modem system-on-a-chip for the following blocks:

  • Docsis LAN
  • Ethernet, MAC, and interface to (off-chip) PHY
  • I²C controller
  • Interrupt controller
  • LMC DMA controller
  • UART
  • GPIO controller
  • SPI controller
  • SSI controller
  • EBIU (external bus interface unit)
  • Timers
  • EJTAG controller
  • PI (Philips internal bus)
  • Memory

I designed and implemented an I/O trace package which permitted post execution display of all of a program’s I/O activity with the ability to display registers (with their names) and register bit-field (also with names) values in binary, octal, decimal, or hexadecimal. The trace utility did an automatic verification read-back of values written and was valuable in identifying several interface timing issues.

I designed and implemented a memory-mapped I/O access methodology which offers significant speed, size, and reliability advantages over that which had hitherto been used. The increase in speed permitted identification of several interface timing problems previously unseen or intermittant; but which would have led to serious reliability problems in the final product. In addition, this methodology permits safe use of the full optimization capabilities of the GNU C compiler for substantial performance improvement in the final product.

I designed and implemented a MIPS crt0 function and a host command line to S-record conversion function so that the MIPS diagnostics could be invoked and passed parameters using a standard [int main(int argc,char **argv)] C program start-up mechanism. To this I added a third [char **envp] parameter to permit the optional use of keyword parameters (such as: baud=57600) in the command line.

I designed, implemented, and documented software to erase, program, and verify the off-chip flash EEPROM; as well as an application to download S-record files from a Win/NT host through the MIPS UART for programming the flash EEPROM.

I designed and implemented a debug utility to run on a Win/NT host to read any target memory (RAM or ROM) location or register or write any target MIPS location or register through the MIPS EJTAG controller.

I designed and implemented a Win/NT C-language application to download S-record files to the MIPS from the PC’s parallel port through the MIPS EJTAG interface to a DMA controller to either load the data into RAM or program a flash EEPROM as dictated by the record’s load address.

As a consultant to the Philadelphia Stock Exchange (PHLX) in Philadelphia, Pennsylvania:

1) I increased the benchmarked multicast publish/subscribe message rate on the primary Sun network (which used Talarian SmartSockets) by 7600% to exceed PHLX’s anticipated three-year throughput requirements without requiring additional hardware expenditures. I also implemented a highly flexible test program used for regression testing and continuing measurement of the network’s throughput capabilities. Much of the test program was developed under Linux (off site) but the finished test programs ran under SunOS and Solaris.

2) Subsequently I contributed to PHLX’s decimalization effort and helped to upgrade the Stratus/VOS options processing code so that the system could trade in fractions and/or decimals (controlled on a per-symbol basis.)

3) Following decimalization I implemented a delay in processing of auto-cancellations, in order to give specialists on the trading floor time to complete a transaction in progress without having the auto cancellation make the partially built transaction vanish from their trading screen without warning.

4) I then implemented a facility to disable/enable quote feeds at either the market or option series level when quote data was stale or erroneous. This latter involved recalculation of the BBO (Best Bid or Offer) for all options traded at the disabled/enabled markets without falling behind in processing the incoming quote stream itself.

As a consultant I acted as temporary IS Director at Check Control, Inc. in West Des Moines, Iowa and was responsible for implementation and maintenance of new systems to provide Xact! check verification and collection services and data distribution between Xact! offices and client sites using Linux-based PC platforms attached to the internet. Designed and personally implemented the Xact! web site’s HTML, C-language cgi, and graphics. Designed and implemented a stand-alone Linux application to permit merchants to accept payments on bad checks and maintain data synchronization with the Xact! host system. Designed and implemented a stand-alone Linux application to provide an in-store check verification capability with automatic synchronization of the local database with the Xact! host system via FTP over the internet. Designed and implemented the Linux Xact! host system to provide dial-in check verification services and serve the needs of the other two (remote) stand-alone systems. These systems are all implemented in C (with Tcl/Tk/Tix script "helpers" for the graphic interfaces) and bash scripting for installation and establishment of the point to point internet connections. The ppp scripts extend the Linux distribution scripts by implementing retry on errors and provide a debug mode trace capability.

At Network Teaching Systems in Hampton, Virginia initiated formulation of formal marketing plan, business plan, and business strategy and provided the base flow design and a preliminary control structure for NTS’ intranet teaching package using HTML, JavaScript, Perl, and Postgres95.

At Collins Avionics Division of Rockwell International in Cedar Rapids, Iowa I implemented a switched network dial-up WAN subsystem to accumulate and distribute aircraft log/maintenance data to airline customer sites worldwide. Subsystem was implemented in Visual C++ to run in a Windows 95 environment on a PC.

At National Chiropractic Mutual Insurance Company in West Des Moines, Iowa I developed corporate data processing requirements analysis and specified hardware and software environment and development tools and strategy for a client-server system to replace the existing mainframe COBOL programming. Assisted in identifying additional development personnel to implement the system.

Following a failed internal development effort at Vali-Chek, Inc. in West Des Moines, Iowa I provided a re-design and full working implementation of their targeted VIP/PC package which permits their clients to track Vali-Chek’s bad check collection efforts (via locally printed reports and display screens) and which permits the client to accept payments (either full or partial) on bad checks being processed at Vali-Chek. This system interfaces with the host system through the switched network to maintain both the local (merchant) data base and the host (Vali-Chek) data base. This system is implemented in C and runs under MS-DOS.

Designed and implemented an on-line computer bulletin board system (BBS) which permitted computer systems consultants and contract systems personnel to dial in to provide contact information, complete a skills/experience inventory, and upload a résumé file from their personal computer. This system also permitted firms who use consultants and contract workers to dial in to specify their consulting/contract needs and search the data base of consultant information (including résumés) for individuals meeting their requirements. Clients could schedule searches for off-hours, run immediate searches, and even set "watches" to perform checks whenever there was any change to the consultant data base. Whenever a search resulted in a match, the system automatically sent a search report and consultant résumé immediately to the client company’s fax machine. This system was implemented in C and ran under MS-DOS.

Designed and implemented a wide-area network (WAN) and software to support remote updating of National Employment Wire Service (NEWS) Corporation’s operation. Rented office space for this client, hired and trained data entry and network operations personnel, and implemented all software to completely update all remote sites automatically. This comprehensive system maintained a central data base which provided up-to-the-minute information for each of the remote sites as to remote advertizing screen update status, employment data base update status, connectability, update history, and administrative information for each site. This system used the switched network to dial each remote site, verify the actual update status of the remote system, download the appropriate update files with an automatically generated script file to effect the necessary updates (including removal of files no longer needed), and initiate the update process in the remote system prior to breaking the telephone connection. The system also generated all of the reports needed to administer the operation. This system is implemented in C and runs under MS-DOS.

Taught “Computers in Business” seminar at the University of South Florida’s Sarasota Campus.

1979 - 1986

MRD Systems, Inc.
Post Office Box 147
Spring Valley, Minnesota 55975

President and Chairman of the Board. Developed an industrial grade data collection terminal incorporating an alphanumeric liquid crystal display, keyboard, processor, 92K byte memory, real-time clock, RS232/RS422/RS423 communications capability, and general-purpose I/O interfaces for magnetics, bar code, printer, etc. The terminal measures 1.25 inches by 5.5 inches by 8.5 inches and is capable of portable (battery) operation. The terminal is designed for use in transaction-oriented systems and solved the response-time problem by conducting all transaction dialog with the user without direction from the central computer. Intelligence to conduct the transaction dialog is stored in the terminal itself, so that only completed transactions need be reported to the central computer system. The terminal memory permits buffering of a thousand or more complete transactions during portable use or host computer outages. The multi-tasking workstation firmware is implemented in assembler and the hosting package is implemented in C.

Designed and implemented a data presentation system package (DPS80) to perform block mode I/O taking advantage of all of the screen formatting capabilities of the IBM-3101 terminal attached to a Z80 based microcomputer. This utility package provides for optional display of input field data as part of the prompt, checking of numeric field data, optional conversion of alphanumeric field data to upper case, justification of data, zero fill, specification of modified data tags, etc. This package is implemented in Z80 assembler.

Developed a new algorithm for critical path analysis which drastically reduces storage requirements and exection time. The implemented algorithm simultaneously determines early start, late start, early completion, and late completion times, from which the critical schedule elements are identified. Packages have been implemented in BASIC, assembler, and C.

Under contract to Eastman-Kodak in Rochester, New York, assisted in the design and implementation of the Ektachem 400, a multi-microprocessor device to perform body-fluid analysis using linear regression methods on colorimetric and potentiometric data. My primary contributions were in the areas of mathematical models and hardware/software interface design for the first of the multi-wavelength colorimetric tests (neo-natal bilirubin). All modules in the E-400 are implemented in assembler.

Under contract to Owatonna Tool Company in Owatonna, Minnesota I designed an on-line data collection system using an IBM 8140 system running under DPPX. Wrote a set of programs in COBOL to support the collection of manufacturing data (labor and materials) in real time to provide shop office functions (inquiry, detection of invalid or erroneous transactions, scheduling of work at work centers, etc.), assist in minimization of WIP (work in process) inventory, and communicate with a host IBM S/370-145 system.

Designed and implemented initial release of PL/C language facility, including market studies, ad preparation, and preparation of user documentation. PL/C (Programming Language/Compilers) is the implementation of Bakus-Naur Notation as a high-level programming language for compilers, translators, and interpreters for complex command languages. Published article Introduction to PL/C in Dr. Dobbs Journal (March 1984). I have implemented PL/C in BASIC, assembler, C, and PL/C.

1985 - 1986

Spectrum Digital Sign Co., Inc.
Post Office Box 147
Spring Valley, Minnesota 55975

Co-founder and director. Responsible for development of the firm's initial computer-controlled advertizing display systems. The product uses the MRD Systems terminal computer to define and schedule message display and to control operation of the display system. The stackable (modular) display design permits building display signs of virtually unlimited size; and the firmware provides all of the known functions of all competitive products. Up to two thousand display messages may be stored and scheduled for display. Participated in formulation of all parts of the firm’s business plan and strategies.

1978 - 1979

H.L. Yoh Company
Division of Day & Zimmerman
Armonk, New York

Senior Programmer/Analyst. Three consecutive contracts to IBM development lab in Kingston, New York. Designed and implemented an I/O adapter model and system component model to be used with the IBM 8100 Program Development Simulator (PDS) package. The adapter model simulated all I/O interface logic for driver validation; while the component model simulates I/O delays and processor loading. The models used all features of the PDS package and are used for regression testing to assure correctness of all future PDS releases, as well as initial documentation verification. The package was designed to run under both MVS(TSO) and VM/370(CMS). All modules were implemented using Assembler H.

Concurrently designed and implemented a microfiche generation system to prepare properly formatted microfiche production tapes for all IBM 8100 software and firmware releases. This package provides a wide range of options and was written in PL/S II to run under VM/370.

1976 - 1978

Comcon, Incorporated
504 U.S. Route 130
Cinnaminson, New Jersey 08077

Senior Analyst. Performed contract work at customer and home offices for Data General Eclipse multiprocessor systems, as follows:

Developed real-time telemetry decommutation algorithms for the NASA’s TIROS-N weather satellites. The major part of this effort involved design of algorithms which resulted in maximum recovery of data in the real-time environment.

Assisted with modifications to the Algol ATLAS compiler used to generate programs for testing the TIROS-N satellite under development.

Development (hardware and software) of portions of a real-time global intelligence-gathering system for the NSA.

1975 - 1976

IBM Corporation
General Systems Division
U.S. Highway 52 North
Rochester, Minnesota 55901

Senior Associate Programmer. Assisted in design and implementation of firmware used in a multi-microprocessor-controlled terminal product line.

1970 - 1975

IBM Corporation
Systems Products Division
East Fishkill, NY

Senior Associate Programmer. Designed and implemented the first working version of IBM’s Management Planning and Control System (MPACS). The system is used to allocate dollar resources to departments/ projects. Two previous efforts failed to produce functional packages on a S/360-80. I was able to design, code, and debug the working version in six weeks using a 32K IBM 1130, which required approximately eight hours to process a complete planning cycle. It may be of interest to note that subsequently two departments spent a year and a half converting the 1130 MPACS to run on a S/370 after the third attempt to do a S/360 implementation failed. The converted MPACS package requires approximately eighteen hours per planning cycle.

Following successful implementation of 1130 MPACS, I was reassigned to the Functional Products Group (still within SPD) to design and implement I/O driver firmware for the IBM-379x product line. I was involved with the first of IBM’s flexible disk storage units, the first of the Winchester technology disk storage units, several printers (including IBM’s first band printer), and several communications adapters. Additionally, I was involved in architectural studies which ultimately led to the development of the IBM 8100 processor family.

1969 - 1970

Service Bureau Corporation
Field Programming Office
Dallas, Texas

Programmer/analyst. Performed contract programming at various customer locations on IBM 1130, IBM 1800, and IBM S/360 systems as follows:

Assisted in design and implementation of a system to manufacture and provide security accounting for embossed, magnetic stripe encoded credit cards. This process control system design encompassed the entire card manufacturing and distribution process. My primary effort was with modification of the IBM-1800 MPX operation system to accomodate the necessary non-standard peripheral devices.

Designed and implemented an IPL-able routine to provide for extremely rapid dump and restore to/from cards on the IBM 1130. A full system and user library reload could be effected in less than five minutes using the 1442 card read-punch – a considerable reduction from the hour and a half previously required by the standard IBM utility.

Designed and implemented a system to perform budget optimization at the cost center level for an IBM division, using non-linear regression methods. The system derived the appropriate regression equations from historical data, determined limits of reasonable variation for each variable, then tuned each of the variables to maximize NIBT (Net Income Before Taxes). Approximately four hours was sufficient to process eleven years of 1200 cost center history into an optimized budget for the following year. Of interest is the fact that the first run with live data produced a (real) budget yielding a actual 30% increase in NIBT. Implementation of a set of virtual memory management routines permited the run time to be reduced to four hours from the forty-plus hours which would have been required using standard FORTRAN data management techniques.

Assisted in design and implementation of a quality control system to perform complete MST memory chip and module testing using an IBM 1800 system to drive a much-modified S/360 processor (as a high-speed test controller). Each 1800 system could control up to sixteen such controllers, each of which, in turn, controlled up to sixteen test stations. Each test station was capable of completely testing 18 chips or modules (depending on station type) per second. My primary contributions were in the areas of on-line software diagnostic tools, high-speed data conversions, normalization of standard device data for system calibration, and the discovery of a fast algorithm for system fault determination, which permitted automatic shut-down of all or part of the system if test data statistics indicated that chips/modules were being rejected as a result of test system failure.

1969 - 1969

RCA Corporation
Consumer Electronics Division
Indianapolis, IN

Systems Programmer. Responsible for design and implementation of the first real-time, multiprogrammable process control operating system for the then unannounced RCA-1600 computer (successfully completed). Conducted familiarization, operating, and programming classes on the RCA 1600.

Provided software support to color television engineering group (design optimization and process control).

Provided instruction to analysts and programmers on use and features of the various time-sharing facilities used on site (RCA, SBC, CEIR, and ALCOM).

1968 - 1969

Rose Polytechnic Institute
Terre Haute, Indiana

Supervised operation of the college computing center, reporting to the Dean of Faculty. Responsible for all aspects of computing center operation, including student operator training, administrative systems and user (student, faculty, and administration) special problem consultation. Implemented comprehensive alumni, admissions, and grade processing systems, as well as a sizable number of statistical and graphics utilities for student and faculty use in laboratory data analysis.


High School

Abqaiq Senior Staff School - Abqaiq, Saudi Arabia
Culver Military Academy - Culver, Indiana


US Army Language School - Monterey, California
Rose Polytechnic Institute - Terre Haute, Indiana
Marist College - Poughkeepsie, New York

Miscellaneous Personal Information

Date and Place of Birth
Born 9 July 1942 in Atlanta, Georgia (US Citizen)

Military Service
U.S. Army (AIS) 1962-1965
Top Secret Security Clearance, Parachutist’s Badge, Good Conduct Award, Honorable Discharge

Arabic, French, Portuguese (all rusty), Beginning Russian

Civilian Travel
Austria, Bahamas, Canada, Cyprus, Denmark, Egypt, France, French West Indies, Germany, Great Britain, Hong Kong, India, Italy, Japan, Lebanon, Netherlands, Netherlands Antilles, St. Kitts and Nevis, Saudi Arabia, Switzerland, Thailand

cabinetmaking, computer hardware/software architecture, photography, sailing, kayaking, amateur radio (WB0YEF)

Articles, Etc.
Introduction to PL/C, Doctor Dobbs' Journal, March 1984
Patent filed for woodworking tool
Patent filed for VHF communications antenna design

Processor [Operating System] Language Experience

Bendix G-15 PPR, Intercom 500/1000/1000D
IBM-1130 [DM1, DM2, GLEEM] FORTRAN IV, APL, Assembler
CDC-6500 [SCOPE] FORTRAN IV, Compass
PDP-8 FORTRAN IV, Focal, Assembler
RCA-1600 Machine Language, Assembler (mine)
IBM-1800 [MPX] FORTRAN IV, Assembler
RCA Spectra 70/45 [TOS, DOS] FORTRAN IV
IBM S/360, S/370 [MFT, MVT, MVS, CP/67, VM/370] APL, BASIC, FORTRAN IV, PL/I, PL/S, SNOBOL, Assembler (F and H)
DG Nova 1200 [RDOS] FORTRAN IV, Assembler
DG Nova-3 [RDOS] FORTRAN IV, BASIC, Assembler
DG DCU-50 Assembler
IBM-379x [BCP] Assembler
IBM-8100 [DPPX] PL/DS, Assembler, COBOL
Intel 8080 [MRDOS, CP/M] Assembler, BASIC
Zilog Z80 [MRDOS, CP/M] Assembler (TDL and Microsoft), BASIC, C, COBOL, FORTRAN IV, Pascal, PL/C
IBM Arctic Assembler
Motorola 6800 Assembler
Motorola 6802 Assembler
Motorola 6809 Assembler
National NSC-800 [CP/M, MRDOS] Assembler, BASIC, C, PL/C
IBM PC, PC/XT, PC/AT [MS-DOS, Linux, Unix, Xenix, Coherent, OS/2, Windows] APL, Assembler, BASIC, C, C++, PostScript, Tcl/Tk
Sun (various) [SunOS, Solaris] C, PostScript, Tcl/Tk, tcsh
Stratus [VOS/NetX] C
Philips MIPS C

Copyright © 1998, 2013 Morris R Dovey  (http://www.iedu.com/mrd/mrd_res1.html) Revised: December 31, 2013  (Click here to send mail)
Back to the About Morris page