No, I'm not talking about hacking an Internet file server. At CFC, Inc. we kept the CNC drilling and routing programs on a file server running Xenix which was a Microsoft branded version of Unix. The CNC machines were plugged directly into this file server using RS-232 ports. Until we purchased this server we had been keeping all our programs on punched paper tape and stored on shelves but now we could keep all this stored electronically.
Okay, this new way of doing things would have been great except that the file server cost lots of money and it wasn't reliable. Every so many weeks or months the computer would crash for one reason or another. When this happened it would run fsck on bootup. This would sometimes find some file system records to repair because the machine didn't have a chance to write everything to disk when it crashed. The end result? We would sometimes lose files from the file server. Bad, bad and worse because all our backups were on tape and we had really bad luck restoring from tape.
We didn't want to spend any more money on this file server. I wanted to develop a replacement in house. It would run on DOS which didn't have the bad habit of delaying writes to the file system. Not bulletproof, but bullet resistant and cheap. But, I had a problem. The only documentation I had which explained the communication protocol for the file server was very thin and hard to understand. I was stuck.
Remember the RS-232 monitor that I grabbed at the GTE auction? I knew right away how useful it would be for this project! Back at the factory I installed this monitor between one of the CNC machines and the Xenix file server. With the ability to see data moving back and forth I was able to figure out how the file server worked. It was tricky because data was actually delivered in packets. There was a non-trivial conversation that happened between these machines but it looked like the code for this was going to be fun to write!
I was ready to get started!
Showing posts with label cnc. Show all posts
Showing posts with label cnc. Show all posts
Saturday, March 12, 2011
Thursday, March 18, 2010
Mousing Around
Since my Tandy 1000SX had high resolution graphics (if you could call monochrome CGA 640x200 high resolution) we thought it made sense to get a mouse and learn to program with it. Then we might be able to write even better software for the engineers to use when setting up each circuitboard for production. We had a crude graphical CNC simulator that ran on the Kaypro machines, so this could be a step forward for us with more detailed graphics and a mouse for a pointing device.
We bought the mouse at Radio Shack. It was a pretty nice little mouse, and it came with its own interface card like most mice did back then. I'm guessing that this mouse was made by the same people who made the the famous Microsoft Mouse. It was very similar. All the mice at that time had a ball for tracking movement, and this one was a metal ball with a rubber coating.
I believe that my first experiments with the mouse were in Turbo BASIC. There were no built in commands for the mouse. I don't remember exactly how the mouse was read either, but I remember there was documentation. Playing around with some code for drawing on the screen with the mouse inspired me to write an experimental character recognizer. I would draw letters on the screen and the program would attempt to convert them to ASCII characters. It really wasn't that hard to do, but prototypes don't have to be practical. It was fun.
We bought the mouse at Radio Shack. It was a pretty nice little mouse, and it came with its own interface card like most mice did back then. I'm guessing that this mouse was made by the same people who made the the famous Microsoft Mouse. It was very similar. All the mice at that time had a ball for tracking movement, and this one was a metal ball with a rubber coating.
I believe that my first experiments with the mouse were in Turbo BASIC. There were no built in commands for the mouse. I don't remember exactly how the mouse was read either, but I remember there was documentation. Playing around with some code for drawing on the screen with the mouse inspired me to write an experimental character recognizer. I would draw letters on the screen and the program would attempt to convert them to ASCII characters. It really wasn't that hard to do, but prototypes don't have to be practical. It was fun.
Labels:
ascii,
CGA graphics,
circuitboard,
cnc,
kaypro,
microsoft mouse,
mouse,
radio shack,
tandy 1000sx,
turbo basic
Thursday, February 18, 2010
My First Text Editor
Using a word processor to edit CNC programs didn't seem quite right to me, so I decided to write a text editor especially for editing drilling and routing programs. I had never written a text editor before, but I had a pretty good idea how to go about it. The Osborne 1 had a terminal style display, so there were control and escape sequences for inserting and deleting lines and characters which makes it pretty easy to write a screen editor.
One thing that motivated me to write this editor was to save time. Sometimes it was really useful to be able to mark of bunch of drilling coordinates and move them or make copies at an offset. My editor made this easy to do.
I wrote the editor in MBASIC. I'm pretty sure it was also compiled to a standalone application using BASCOM. This was in a before IDEs, and programs needed to be compiled and linked.
One thing that motivated me to write this editor was to save time. Sometimes it was really useful to be able to mark of bunch of drilling coordinates and move them or make copies at an offset. My editor made this easy to do.
I wrote the editor in MBASIC. I'm pretty sure it was also compiled to a standalone application using BASCOM. This was in a before IDEs, and programs needed to be compiled and linked.
The Osborne 1
The Osborne 1 was a portable CP/M computer with a Z-80 processor. It looked like a portable sewing machine. You tip it on its side and undo the latches and the end would come off revealing a keyboard which was attached to the rest of the machine by a wide ribbon cable. Removing the keyboard revealed two large floppy drives, a tiny 5 inch screen, cubbies for floppy disks, and a bunch of ports. We would plug the RS-232 cable from the paper punch into one of the ports.
The 5 inch screen could only display 52 characters wide, but it could scroll. You had to have a tolerance for reading very small type to use this machine. I was okay with it, but today I probably wouldn't enjoy it.
Aside from editing CNC programs, we also had MBASIC on these machines and so we could do a little programming to help us with our work. Bob knew how to write in BASIC and he had written a few things. For example there was a program for spitting out a simple routing program for a rectangular board. You just punch in the size of the board and it would generate a file. Anything more complex than that required manual coding.
One problem we had with the Osborne 1 machines we had was that the keyboard bezel was metal and it wasn't grounded well. If you walked up to the computer and touched the keyboard it wasn't unusual to discharge some static electricity and reset the computer, losing whatever work you were doing.
The 5 inch screen could only display 52 characters wide, but it could scroll. You had to have a tolerance for reading very small type to use this machine. I was okay with it, but today I probably wouldn't enjoy it.
Aside from editing CNC programs, we also had MBASIC on these machines and so we could do a little programming to help us with our work. Bob knew how to write in BASIC and he had written a few things. For example there was a program for spitting out a simple routing program for a rectangular board. You just punch in the size of the board and it would generate a file. Anything more complex than that required manual coding.
One problem we had with the Osborne 1 machines we had was that the keyboard bezel was metal and it wasn't grounded well. If you walked up to the computer and touched the keyboard it wasn't unusual to discharge some static electricity and reset the computer, losing whatever work you were doing.
Labels:
applesoft basic,
cnc,
cp/m,
floppy drive,
mbasic,
osborne 1,
routing,
rs-232,
static discharge,
z-80
Subscribe to:
Posts (Atom)