Russell Follansbee
hireme@guicide.com
resume in Word format
resume in text format
2/03 – 4/03 ARC International, Nashua NH.
I implemented double-buffering for USB On-the-go software on the ARCangel3 processor.
10/01 – Present Stone Hill Consulting, Francestown, NH
Stone Hill Consulting is run by my long-time friend Mike Jones. We worked together at Watermark, Keyfile, Infinet and Nixdorf. Stone Hill has several clients and I’ve worked on Visual C++/MFC software for some of them.
6/01 – 8/01 Global Data Inc, Amherst, NH
The project I worked on attaches a cellular modem to a metering device. Results from the metering device are phoned in from remote locations. The software is 128K of 6502 assembly language, written in 1991. I was the only software engineer in an office of 12 people. The hardware and software had been maintained by a California subsidiary.
I wrote the following Win32 programs in Visual C++/MFC:
A 6502 instruction simulator with
breakpoints, watchpoints and instruction history.
A Motorola S-format hex file display and verification program.
A serial port monitor to control our device from a Win32 computer.
I wrote the following Win32 command line programs in Visual C:
A 6502 disassembler.
A 'make' facility in C to speed
up the build process.
An error message extractor for the assembler and linker to find the errors
which would otherwise have scrolled off the screen.
A program that inserts the date, time and source directory into a Motorola
S-format hex file.
A program that takes a memory fetch trace from a logic analyzer and displays
the actual instructions executed.
Using nested batch files and lots of redirection, I prevented the ten-year-old assembler and linker from removing the scrollbars and session history from the DOS shell where the builds were performed.
Using logic analyzers, I debugged the bootstrap
code. I developed a technique for viewing the RAM that is internal to the
processor (and therefore invisible to the logic analyzer) by copying it to ROM
where the logic analyzer could detect it.
12/97 - 4/01 VAutomation Inc., Nashua, NH An ARC Cores Company
VAutomation provides synthesizable cores for microprocessors (Turbo80186 and proprietary v8 RISC) and serial communications controllers (USB, MAC, CAN, UART). We also provide a prototype board containing a Xilinx chip and several peripherals. I was the only software engineer. The company grew from 5 to 35 during my tenure.
Using Visual C++/MFC I created an instruction set simulator for the v8 RISC. I created a scripting language for the simulator so peripheral responses could be simulated.
To debug software on our v8 prototype board, we created a small board with a serial port and JTAG connector. The board contains flash memory and a Xilinx chip. Using C I wrote a program which resides in flash and is loaded into RAM on power up. This program controls a slave v8 via a JTAG connector and accepts user commands via a serial port. I used Visual C++/MFC to write a debugger for the v8. It has the same look and feel as the simulator.
Using Visual C++/MFC I created a program which reads Xilinx HDL simulation data for the v8 or the 80186 and graphically displays program flow and memory modification. I was able to show not only what parts of the program had executed, but the actual instructions and register values as well. This program specifically displayed all USB activity in an easy to understand format.
I used a logic analyzer to debug and profile code on both the v8 and 80186. Using Visual C++/MFC I wrote programs to analyze output from the analyzer. The programs disassembled instructions and displayed program flow.
Using Visual J++ I developed several test applications for a Java ASIC. I wrote a JVM simulator in Visual C++/MFC. I wrote a Java disassembler in Visual C.
Using C on the v8 I wrote programs to implement USB hosts, devices and hubs. I maintained a software based debugger.
Using Visual C and gcc I maintained and enhanced a v8 assembler on Windows and Sparc.
I wrote a v8 disassembler for Windows and Sparc as the C compiler didn't provide source listings. The output is used as input to the simulator and debugger.
I wrote a CPU regression test in assembly for the v8.
Using Visual C++/MFC I created a product installer which encrypted and compressed the HDL files which we shipped to customers.
I provided alpha and beta test feedback to HiTech for a C compiler they developed for the v8.
I provided beta test feedback to Paradigm for a C compiler they developed for the 80186.
We purchased an 80186 TCP/IP stack written in C which I modified to support our 80186. I added code to it to display a web page.
4/96 - 10/97 Watermark Software,
Burlington, MA
Designed and implemented in MFC for Win32:
Windows NT API call logger.
Network open file monitor.
File Manager extensions.
Explorer extensions.
Utility for determining which DLLs a program uses.
Application toolbar programs.
2/94 - 4/96 Business Matters Incorporated, Waltham, MA
Designed and implemented for Visual Basic/Windows:
Runtime patch to fix VB3 print
bug.
Data entry custom controls. (VBX and OCX).
Software installer.
DLL functions.
Utility to detect memory leaks.
6/90 - 2/94 Keyfile Corporation,
Nashua, NH
Designed and implemented for Windows 3.1:
TIFF display with support for
video accelerators.
ASCII display.
Tools for drawing lines and text on TIFF.
Print servers for rendering TIFF and ASCII and comments on
Windows printers with and without accelerator cards.
Scan servers for several scanners.
Windows 3.1 utilities to determine what's really happening.
5/88 - 6/90 Tranti Systems,
Billerica, MA
Designed and implemented for 80188 Embedded POS restaurant system:
IEEE-488 network operating
system.
RS-422 printer driver.
ROM bootstrap.
Algorithm to compute Seattle meals tax.
DOS emulator of POS system.
11/86 - 5/88 Boston Business Computing,
Lawrence, MA
Designed and implemented for DOS:
Word processor.
Several commands for VMS emulator.
Macro keystroke language for running DOS
commands beneath VMS emulator.
Comm program for polling VAX and downloading E-Mail.
Several unix-like commands.
4/85 - 10/86 Applied Information Retrieval
Systems, Waltham, MA
Designed and implemented for 68000
Double precision math library.
Terminal I/O cache.
Terminal drivers.
Inter-process communication routines.
6/84 - 3/85 Infinet, Andover, MA.
Designed and implemented for Ultrix:
Network controller software.
5/81 - 6/84 Nixdorf Computer,
Burlington, MA
Designed and implemented for Data General Nova:
Multi-user word processing software including:
Spelling checker.
Terminal driver.
Mathematics package.
Converted for VAX/VMS:
Data processing software from Nova assembler to C.
4/80 - 5/81 Monosson Microsystems, Watertown, MA
Customized third-party accounts receivable applications.
9/79 - 4/81 Bentley College
Computer Lab, Waltham, MA
Assisted fellow students with computer homework.
|
Skill |
Years |
|
C |
21 |
|
C++ |
7 |
|
MFC |
7 |
|
Embedded Systems |
5 |
|
Windows NT/2000 |
7 |
|
Windows 95/98 |
7 |
|
Java |
3 |
|
Visual Basic |
3 |
|
VBX/OCX |
3 |
|
80x86 asm |
16 |
|
680x0 asm |
3 |
|
Windows 3.1 |
5 |
|
HP Logic Analyzers |
8 |
|
VXD |
1 |
|
OLE |
2 |
|
Vax asm |
3 |
|
DECSystem-10 asm |
3 |
|
DG Nova asm |
4 |
|
FORTRAN |
1 |
|
COBOL |
2 |
|
RPG |
1 |
|
8080 |
1 |
|
6502 |
1 |