A modern 3D printer being controlled by an ancient KayPro II. It's printing a G-Code file saved on the floppy disk!

@SamTornado and I did an incredible amount of work to get this going. It's connected to the printer via the serial. We also had to figure out how to connect the KayPro to a PC to copy the G-Code over.

Also wrote a custom program in Z80 assembly to stream the file to the printer.

All this to prove that we could have had home 3D printers in the 80s!

#3dprinting #retrocomputing

@unlimitedbacon @SamTornado yes, because any FDM-based 3D printer is essentially just a hot glue gun with a precise & motorized control.

No, because it would've been frightingly expensive and unaffordable given the fact that microcontroller the printer has is millions of times faster than the KayPro.

Maybe, because CNC routers and milling machines even existed that were controlled by VIC-20's.

@kkarhan @unlimitedbacon @SamTornado At low speeds you don't really need a fast uC. It'd be fun to do some rough estimates of what kind of computing power you would need. Lacking modern stepper drivers too you'd either need to implement your own in discrete components or do a naive full step one with reduction gearing or something.

@dalias @unlimitedbacon @SamTornado I'm shure a crude #3Dprinter would've been possible using #COTS parts like a stepper motor from a #Floppy drive...

It would certainly result in far more "coarse" builds that are less precise and intricate.

Basically a computer-controlled hot glue gun...

@kkarhan @unlimitedbacon @SamTornado Pretty sure a 6502 or Z80 could do motion planning only a few times slower than the AVRs that were standard til a couple years ago. That should suffice for modern precision up to 30 mm/s or so.

@dalias @unlimitedbacon @SamTornado depends...

#Z80 or even #i8080 were back then quite pricy, so I'd assume those 3D printers - had they existed back then - to still cost as much as a decent car...

@kkarhan @unlimitedbacon @SamTornado I guess I'm thinking late 80s not early. Run the motion control on a NES or something. ๐Ÿ˜
@kkarhan @dalias @unlimitedbacon @SamTornado I think a useful data point is the C64 disk drive had its own 6502. Reasonable precedent for second processor used for fairly intensive time sensitive stuff on a home computer. But yeah, not cheap. By the time the Sega Genesis had a Z80 sound processor (and Master System emulator) in '88, it was much less noteable, though.
@dalias @kkarhan @unlimitedbacon @[email protected] I think I would posit that a 3D printer needs equal or less processing power to a graphical paper printer, so thereโ€™s your high water mark
@dalias @kkarhan @unlimitedbacon actually probably better to compare with a different peripheral that was all over the place in the 80โ€™s: the plotter

@cinebox @dalias @unlimitedbacon yeah ,that should be somewhat like that since we swap "color" for height as 3rd info besides 2D coordinates for a monochrome printer...

Which is why all modern print systems that do more than one colour internally act as multiple single-colour print systems staggered after one another...

From Inkjet to Laser/LED to huge Offset printing machines...

@kkarhan @dalias @unlimitedbacon well the big difference is that a 3D printer is just fed Gcode, not a model. Graphical printers ingest postscript which is infinitely more complex
@cinebox @kkarhan @unlimitedbacon This is true, but even gcode is a lot higher level than a raster 2D print format like consumer printers used before having the processing power to do PS. This is because you have dynamic motion that's respecting acceleration constraints, not a fixed motion path with modulation of ink/whatever.

@dalias @kkarhan @unlimitedbacon yeah I guess I had my mind dead set thinking about the LaserWriter for โ€œ80s graphical printerโ€

(Lmao ios autocorrect insists on capitalizing that)

@unlimitedbacon @[email protected] That is awesome! That could be a talk at HOPE or Defcon.
@unlimitedbacon @SamTornado I wrote unsold magazine articles and bad screenplays in my 20s on my Kaypro 2. If only I had known, it *is* capable of greatness!

@unlimitedbacon makes perfect sense to me. The first CNC machines I programmed in high school were run the same way off 8-bit micros.

@[email protected]

@unlimitedbacon @SamTornado omg! (First computer I ever used/my family ever owned.)

@unlimitedbacon @SamTornado

This looks amazing, congrats!

It does prove that, had precision components had been available in the 1980s, you could have communicated the Kaypro with 21st century technology, had 21st century technology been available in the 1980s.

Alternatively, using extremely costly 1980s prototyping technology, that did actually exist, and car makers did actually have back then.

Definitely not at home, and definitely not cheap in the 1980s.

@unlimitedbacon @SamTornado that's insane, can you put it in github or something?
GitHub - unlimitedbacon/kayprint: Running a 3D printer with an 80s retro computer

Running a 3D printer with an 80s retro computer. Contribute to unlimitedbacon/kayprint development by creating an account on GitHub.

GitHub
@unlimitedbacon @SamTornado Of course we could have 3D printing in the 80s. Come on, just say that you did it for fun, having fun is good ๐Ÿ˜Š
@unlimitedbacon @SamTornado - doesn't the 3D printer's microcontroller (Arduino based?) outperform the Z80?!?

@axel_hartmann @SamTornado Yah. They're both 8 bit CPUs, but iirc the Arduino is clocked higher.

Also there's a huge performance difference between reading/writing to floppy disks and flash memory.

@unlimitedbacon @SamTornado nicely done. I can well believe it would have been possible. In the 1980s, I made a flatbed X-Y plotter that connected to my ZxSpectrum and a few years later was programming industrial CNC machines in GCode.
@unlimitedbacon Designing and slicing a model with a 8Bit CPU would be no fun. I remeber my first Mandelbrot fractal program on a Z80, 1MHz, CP/M with MBasic. It took over 16 hours...
@unlimitedbacon @SamTornado That sounds a bit akin to the reasoning that Ben Franklin could have built a nitrogen laser ๐Ÿ˜„
@recursive @SamTornado Ok. I really want to hear how Ben Franklin could build a laser now.

@unlimitedbacon @SamTornado I was mostly making a wisecrack, it's not exactly analogous, since in this case it's more the development of scientific knowledge than engineering practice, but basically like this:

- build an inefficient nitrogen laser using plain air as the lasing medium, e.g. https://physicsopenlab.org/2020/07/16/diy-nitrogen-tea-laser/ and you could basically do it with materials of the time (glass, metal foil, wire)
- power it with electrostatic generators of the time, including https://en.wikipedia.org/wiki/Franklin%27s_electrostatic_machine

But: [1/2]

DIY Nitrogen TEA Laser - PhysicsOpenLab

Abstract : in the cover image the homebuilt TEA nitrogen laser in use at PhyscsOpenLab. The entire l

PhysicsOpenLab
@unlimitedbacon @SamTornado
- If it works, would anyone have a useful explanation for why it's an interesting creation (it's not obviously interesting, it just makes this faint beam which causes some things to fluoresce, the short duration wouldn't be measurable with the technology of the time)?
- If it doesn't work, would anyone have the ability to explain why, e.g.: too much inductance between the capacitor and the spark gap resulting in an insufficiently fast discharge, etc.
[2/2]
@recursive
Oh! Very cool, Thanks!
We figured it was a "wisecrack" ๐Ÿ˜‰.
But than @unlimitedbacon and I got to talk about, "how would Ben Franklin Build a laser"๐Ÿค” ๐Ÿ˜‚
@unlimitedbacon @SamTornado
Iโ€™ve always thought 3D printers are very reminiscent of pen plotters from the 80s.
@unlimitedbacon @SamTornado awesome! Question is of course, how long would this machine have taken to slice the STL?
@unlimitedbacon @SamTornado This is really cool. Love the aesthetics as well.
@unlimitedbacon @SamTornado now you've reminded me of the Oculus "First Contact" program
@unlimitedbacon @SamTornado Now also run the STL modeler or at least the slicing program on the KayPro II to /really/ prove we could have had home 3D printers in the 80s ;)
@thp @SamTornado That would be a ton of work but I think you could do a very very basic slicer that just rasters out the shape for each layer. Also you can't fit very bit STLs on a floppy disk.๐Ÿ˜‚
@unlimitedbacon @thp
We had enough trouble getting Gcode to fit on a floppy... Maybe one day we'll spring for a 20MB hard drive ๐Ÿ˜…
@unlimitedbacon @SamTornado it has some neat retrofuturistic / lost-tech vibe, which is neat. Overall incredible, that this works.
@unlimitedbacon @SamTornado sweet! so does the printer understand G-code, or is your Z80 code translating that into printerese on the fly?
@DrHyde @SamTornado Yes, the printer speaks G-Code. It is the standard language for 3D printers.
@unlimitedbacon @SamTornado oh! how wonderful! i had always assumed that they used something new and exciting for no good reason just because that's what modern technology does!
@unlimitedbacon @SamTornado youโ€™re insane! I love this what an amazing thing.
@unlimitedbacon @SamTornado can you share some about your process getting files onto the Kaypro? I have a Kaypro 4 I've been struggling to download files to, despite being able to set up a terminal connection between it and my modern PC.
@clyde @SamTornado We found some programs called PCGET and PCPUT. I don't remember the exact process, but it involved typing some assembly in by hand and compiling it on the Kaypro.
Google Docs: Sign-in

Access Google Docs with a personal Google account or Google Workspace account (for business use).

@unlimitedbacon @SamTornado yes, but the amount of processing power required to turn a 3D model into G-code with supports would probably be very expensive in the 80s ๐Ÿ˜‚
@unlimitedbacon @SamTornado Hello, you can try using Kermit to send files from PC to Kaypro.
@vince @unlimitedbacon
Yes, that's what we ultimately ended up using, but our Kaypro didn't come with a Kermit disk.
So we had to type-in a much simpler program (PCGet I think) in assembly, which we used to upload Kermit and save it to a floppy disk.
@unlimitedbacon @SamTornado @foone in case no-one's tagged you in this yet