1987 – 1988

ZZCAD was my first major commercial application. The final product was a computer controlled sewing machine where the user was able to use an intuitive graphic software to easily draw embroidered patterns.

I developed the CAD application and the core CAM routines for the I/O card to control the sewing machine step motors.

Design and Development

ASCII splash screens were all the rage at that time

ASCII splash screens were all the rage at that time

Being 1988, the software tools were rather limited. The application was developed in Microsoft Quick C and would run under DOS at the amazing resolution of 640×480.

The first step was to create a new set of low level graphic routines that could overcome the limitation of the ones in the Quick C library. We needed non-destructive (XOR) elements drawing and the ability to draw way beyond the screen coordinates to allow zoomed-in working. All the graphic routines were developed in Assembler.

The CAD simulated the physical laying down of the wire. No line, arc, or circle could start anywhere else but from the end of the previous element, unless the user intentionally inserted a wire cut or a wire color change element.

Debug tools were available to simulate the actual wire progression and to highlight sections between points that were too far apart for the sewing machine physical limitations.

The sketching was also simplified to allow the users to draw simple elements (like lines, arcs, and circles) and then give them a start/end thickness and density, letting the software figure out the zigzag pattern.


Those were the good old days when the best graphic card was a 640×480 VGA in 16 colors…

CAD features

  • Lines, Circles, and Arcs drawing elements with start/end thickness and step attributes for automatic zigzag patterns
  • Manual point-to-point drawing for accurate connections
  • Element attributes editable at any time
  • Fullscreen/expert mode
  • Zoom during elements creation without interrupting the tool
  • Simplified display mode for outlines
  • Physical wire constraint always considered during drawing
  • Wire cut and color change attributes
  • Tool to explode a drawing element into a point-to-point element for manual adjustments
  • Debug tool to check the step by step progress
  • Customizable grid and snap to grid options
  • Option to customize the display of elements (line breaks, color changes, marked points)
  • Coordinates, memory used, and other drawing statistics
  • Flip, Mirror, Size, Rotate Transforms with different coordinate systems and absolute/relative values
  • All transforms applicable to single elements or to the entire drawing
  • Display options saved with drawing or global
  • Automatic backup
  • Ability to insert elements between other elements

The CAM And The Sewing Machine

The CAM was a separate application that drove the sewing machine using a high speed I/O card based on the CAD design data.

For the CAM, I developed only the low level I/O card control routines in Assembly, using acceleration and deceleration tables to run the step motors at maximum efficiency.

At top speed, the machine was able to do 50 sew points per second with a 5-6 millimeters movements in each axis between points. That was leaving us about 1/100 of a second to accelerate/sustain/decelerate the step motors for each axis and make sure the working surface was stopped before the needle was down again.


The software and the sewing machine were completed and working perfectly, but competition was tough with big names like Brother and Singer having similar (but not as friendly) offers.


  • Ing. Piero Zaltron, who hired me for the CAD development
  • Computer B. Costo In Thiene (VI) Italy, for the support


  1988 /  Last Updated April 10, 2013 by Roberto Ziche