Leroy Casterline
3520 Gila Bend
Casper, Wyoming 82604
307/237-3334 (w) ~ 307/472-1755 (h)






I have over 25 years experience developing PC and microcontroller software. I excel at problem-solving and debugging. My interests have lead me to low-level 'to-the-metal' programming and graphical user interface (GUI) development. I am a self-starter and am capable of working independently without supervision, or in a team environment as either a leader or a follower. I am comfortable in a lab environment.


I have a great deal of experience interfacing with and controlling PC, peripheral and embedded hardware, and over the years have written a number of drivers and hardware and software interrupt handlers to support these projects. A number of my embedded systems projects have required the design and implementation of BIOS-like sets of systems services. Many of these projects have required that I produce code which is highly optimized for speed and/or size. I excel at problem-solving and learning new technologies.


My other main area of interest is in developing user interfaces. I take pride in developing GUIs that are responsive, easy to use and that maximize the productivity of the target user. The projects in which I take the greatest pride and have enjoyed the most involve developing software control panels for hardware evaluation boards and kits. These projects allow me to combine my love of low-level programming and user interface design, and take advantage of my problem solving abilities.


I write well-documented, well-organized, readable and maintainable code. When working in non-object-oriented languages, I use source files and language constructs to emulate the advantages of object oriented languages. Overall, my favorite 'high-level' language is C due to its elegance, efficiency and size. My favorite development environment for PC work is Borland C++ Builder because it allows me to easily and quickly develop, modify and tune the user interface.


Languages, Platforms and Technologies:


C, C++, Borland C++ Builder, x86, 805x, Delphi (Object Pascal), Forth, BASIC, FORTRAN


Win16/32, API, VCL, various embedded x86 and 805x, VSS, Wise, DOS, AIX, Linux


GUI, IEEE-488 (HPIB/GPIB), Oscilloscopes/Lab/T&M Equipment, In-Circuit Emulators (ICE), Digital I/O, Data Acquisition, TCP/IP, RS-232C Serial, IEEE-1284 Parallel, Protocol Development, Machine-Level Programming.




PC C++:


Developed a very extensive Win32 software Control Panel for an Evaluation Board for the NSC LMX9510 and LMX9512 cellular transmit and receive chips. The evaluation hardware consists of three boards (the Evaluation Board, a Data Stimulus Board and a Data Capture Board) and five lab instruments (two signal generators, two spectrum analyzers and a digital storage oscilloscope). The boards are connected to the controlling PC via RS-232 ports and the instruments are connected to the PC via an IEEE-488 (GPIB) interface. This project required the integration of Control Panels which I had previously written for the Data Capture and Data Stimulus Boards with new code to control the Evaluation Board and lab instruments.

  The Control Panel software had multiple design goals. One goal was to allow prospective designers to verify that the parts operated as documented by the manufacturer. An additional goal was to allow prospective design engineers to learn to use the part by providing an interactive environment allowing them to experiment with the parts easily and effectively. Another goal was to assist the manufacturer in part validation by automating test sequences that required setting up, operating and reading data from GPIB (IEEE-488) instrumentation and the digital Stimulus and Capture boards.
  The Evaluation Board receives test data from a Stimulus Board and sends test data to a high speed Capture Board, which connect to the Evaluation Board via a digital bus. The Control Panel maintains a library of test waveforms which can be downloaded to the Stimulus Board as necessary. It also receives and stores the data captured by the Capture Board and the attached instruments. Custom software and hardware setups are stored on disk allowing them to be quickly recalled by the operator or in a test script.
  A custom scripting language is provided for automating tests and validation suites, which helps to eliminate errors in complex test setups while saving evaluation and test engineers time. The Control Panel also interfaces with the MatLab engine to provide support for advanced mathematical functions.
  More about this project...
  Embedded 805x:
  Developed firmware for ES1, a remotely re-programmable call forwarding, call screening and answering machine device. 805x assembly.
  Developed the firmware for Logos CallBack, a device used to reduce the cost of international telephone calls. 805x assembly.
  Developed the firmware for a vehicle mileage-logging device, which reads mileage directly from the speedometer cable and maintains an internal list of mileage, destination, date and time. Information may be uploaded to a PC via RS-232 cable. 805x assembly.
  Managed the design and integration of a piggyback module for the Logotronix hardware platform to allow it to recognize Open System Intervals on the analog telephone network so the it can break down a call properly when both parties hang up the line. Implemented extensive firmware modifications and additions to support background OSI detection and filtering to identify CPC events. 805x assembly.
  PC C and x86:
  Developed a program to control, acquire and analyze data from a Cary spectrophotometer. Interface to spectrophotometer was via a 24-bit parallel channel. Microsoft C and x86 assembly.
  Designed & implemented an interface wrapper around the Spontaneous Assembly library (a library of high-performance high- and low-level routines written in x86 assembly language) to allow its use in C projects. x86 assembly
  Developed a PC-based telephone switch, the Logos CBX, used to route international traffic through a US-based callback service bureau. System is installed on the trunk side of the PBX (between the PBX and the CO), and handles up to 48 simultaneous telephone calls. Dialogic hardware, Microsoft C and x86 assembler
  Developed a PC based interactive voice response (IVR) system to allow users to access and update a database remotely via a standard telephone and DTMF tones. The system handles multiple phone lines simultaneously. Based on Dialogic hardware. Borland C and x86 assembly.
  Developed a database and user interface to front-end a FORTRAN erosion and sediment analysis program which is marketed to government agencies, mining companies and hydrologists. Input is taken from keyboard or graphics tablet (volumes, lengths and areas are read directly from a watershed map). Microsoft C and x86 assembler.
  Developed a GSS/VDI graphics device driver and BIOS for a very sophisticated high-speed graphics board on PC equipment under DOS. Microsoft C and x86 assembler
  Developed a program to provide users with data acquisition, data analysis and remote control of a Hach spectrophotometer. Included setup store and data plotting/printing. Microsoft C.
  Developed a PC based interactive voice response (IVR) system to allow users to access and update a database remotely via a standard telephone and DTMF tones. The system handles multiple phone lines simultaneously. Based on Dialogic hardware. Borland C.
  Embedded C and x86:
  Developed BIOS firmware for a remote data collection unit to monitor wireless sensors and send readings to a data collection server via the Internet. Based on an AMD Am188ES 16-bit microcontroller, iReady S7600 iChip and Multitech modem module. Borland C, x86 assembler.