Studying for Mass Storage…

Now that TB 2.5g and G-DOS 0.50b are finalized and out there in the wild, it’s time to turn our focus to Mass Storage.  That’s right, we need to be able to add, remove, modify, and use files contained in some type of file system.  The type of file system may be up for debate.  But regardless of what we decide to do with this computer, we need a way to access binary files, BASIC programs, etc.

So the two main types of file systems of interest to us would be FAT or a CP/M file structure.  Considering that this computer only has 32k of RAM, that dissolves any idea of using CP/M without major modifications.  That’s another project for another day.  FAT on the other hand has several advantages.  Firstly, it is readily readable by a modern PC.  Which means that we should be able to write and transfer files between this computer and a PC with ease.  Secondly, it is highly documented.

Knowing this I set out to learn everything that I could about the hardware side of the SD format.  First thing I discovered is that there are two protocols for communicating with an SD card.  The first is SPI, a pretty straight forward protocol similar to what one would use with Serial Shift Registers. The second is SDIO, which is completely undocumented.  Knowing this I knew that I would be using SPI.  So I would need the following pins: Clock, MISO, MOSI, and Chip Select.  That is in addition to the 3.3v supply voltage.  Speaking of 3.3v, i would also need to level shift from 5v to 3.3v and vice versa.  Luckily I recently ordered 74LS07 Open Collector Buffers, so this is no problem.

But how would I drive these pins?  Well, that is when I began thinking about the onboard 8255 PIO.  Obviously it has plenty of pins…but I wanted to use that for general purpose I/0…  And besides, I do not want to dedicate one whole port to just one input pin!  But wait!  If I were to add a z80 PIO I could use it in Mode 3, or I/O mode!  That means I can specify in software whether a pin is input or output!  Fantastic, I have the hardware figured out.  Now onto the SD SPI Protocol.

And that is where I am at now.  Reading in the plethora of information available on the web, which doesn’t really give me much information about the hardware side (like do I write one byte, then read a byte? Or how do I specify where I want to read data from?).  That is until I found the resources below.  And while I am still trying to crawl through the information, I am taking many notes along the way.

If you’re interested in this type of stuff, I suggest giving it at least a once over.  You’ll probably learn something that is of no real use to you outside of this hobby.

https://www.compuphase.com/mbr_fat.htm

Simple FAT and SD Tutorial Part 1

Simple FAT and SD Tutorial Part 2

Simple FAT and SD Tutorial Part 3

Simple FAT and SD Tutorial Part 4

G-80S Update: G-DOS v0.50b Released

It’s here!  TinyBASIC v2.5g hit the Web late last night.  Today, it’s the G80-S Monitor v0.50b.  The link to the download is below.  Several changes were made to simplify use of this software.  As well as the TinyBASIC being updated to v2.5g.

If you find any bugs, please let me know.  Enjoy!

G80S_v0_50b

TinyBASIC 2.5g Released

Behold!  I present to you TinyBASIC 2.5g!

Thats right, it has been anticipated for some time.  I now feel comfortable releasing it into the wild.  So without further delay, the files are available below.  There are two version, one is a version designed to run on the G80-S Micro Computer.  The other is a version with will require you to write a few routines to work with your particular computer.  In the event that your memory is different than 32k ROM and 32k RAM, you’ll also need to play with the memory locations to get it to work properly.

If you have any questions about how to get it running, shoot me an email, I’ll be happy to see what I can do to help.

tinybasic_2_5g

G80S_tinybasic_2_5g

Avaya ISAPC-00 ISA to PC Card Interface

While PC Cards (or PCMCIA Cards as they were mistakenly known) are a thing of the past, they can often be quite useful.  Take my Compaq SmartStation Laptop setup.  Being from the 486 era, and a laptop, there are not a lot of solutions for mass storage transfer.   There was no USB.  There are no commercially available adapters for installing a 5.25″ drive (although I made my own with my 3D printer).  The only solution you would normally have would be a Parallel Port Zip Drive.  But luckily for me, it does have two PC Card slots.  And since there now exists PC Card to CF Flash adapters, I have a solution for mass transfer.

But, in 1993, someone decided there was a need for a ISA to PC Card adapter.  In fact, there seems to be a few different controllers for them.  One of which is the controller in question here, the Vadem VG-469.  The other one, that I’m aware of, was made by Intel.  And is the basis for the Vadem product.

I believe this particular card, and others like it, were part of some industrial solution.  Someone needed interchangeability between a Laptop and a Desktop for their PC cards.  But the real reason I think this has to be an industrial design is due to the lack of drivers.  There seems to be enough information for a Windows 95 machine to use these controllers.  But not WFW 3.11, which would have been the default OS during the time this card was made.  Unless you were still primarily using DOS at the time (which there are also no drivers for).  That leads me to believe that it was likely for some other OS.  But that is speculation at best.  Maybe someone just needed a portable HDD, and this was the interface.  Thats right, PC Card HDD solutions did exist as well…

Whatever the case, it is an interesting piece of Tech History from the 1990s.  Check out the video below.  Enjoy.

G80-S v0.45t Stable Available for Download

While I iron out some of the details for the release of v0.50b and the v2.5g of TinyBASIC, I figured I better post an updated download for the currect version.  This is a stable pre-release.  And as such, not a lot is going to change between v0.45t and v0.50b.  I’m mostly just working on cleaning up code at this point.  If you’d like to check out the change log, it is attached below.  If you’d like to download the software, I’ve included it too.

I would have like to have already released the v0.50b by now.  But as we all know, sometimes life just gets in the way.  If you have any questions shoot me an email.  The Contact Us page  is your friend.

Also, there is still some availability of the PCB with the PLD option. I’m looking for a dependable supplier for these older parts. Once I do, they will become a more permanent option.

CHANGELOG – v0.45t

G80S_v0_45t

3D Printing Warping Prone Parts

I’ve owned a Da Vinci Pro 1.0 for about a year now.  And I have noticed that like any other printer, the settings are crucial.  And I hope that this will help other owners.  And maybe owners of other machines as well.

3D Printing with ABS can be problematic from time to time.  ABS really shines when it comes to versatility.  Not only is it an easily accessible filament, but it is strong.  However, that strength doesn’t come without weakness.  And ABS has quite a few weaknesses.

First off, the sharpness of the print will not be as high as with other plastics. Due to the properties of the plastic, it just doesn’t lend itself well to printing high detail models.  But it excels at simpler ones.  This coupled with it’s strengths and it’s ability to be chemically bonded to itself with acetone make it a suitable plastic for creating enclosures.  And in electronics, we always need enclosures.

Secondly, ABS tends to warp.  And warping is exaggerated by larger parts with more mass. To break it down, if it is large, or flat, or has sharp corners, you will likely experience warping.  Or in the event that you do not experience warping, you may experience layer separation.

The root cause of the problem is that ABS tends to shrink as it cools.  So whether or not you’re able to make it stick to the build plate, you’re likely going to have some type of distortion.

This effect can be minimized to a degree, but will always be present.  A heated build surface is a must.  As is an enclosed build area.  These two items will help “keep the heat in”, and that will help the layers cool at a more uniform level.  But this isn’t a complete solution.  Even if you print slow, you may have problems with curling, or warping.

Below is an example of a warping prone part.  It’s large, it’s flat, and it would normally have sharp edges.  But I have designed this part to minimize warping.  Let me explain.

The first thing we need to address is mass.  Now this part was originally part of a larger piece.  That larger piece added a lot of height and mass to the model.  The problem with that is that with each layer you’re going to add a slight amount of additional “pull” to the piece.  Which over time, and increasing layers, can worsen the effect of shrinkage.

The next item we will look at is sharp corners.  There is no getting around it, sharp corners are like a magnet for warping.  Some people try to add “shields”, so to speak, around the corners to help maintain an even temperature.  However, I’ve had little luck with this approach.  What I have had luck with is “Mouse Ears.”  By adding a mouse ear to corners, I have found it does two things.  First, it turns a sharp corner into a round corner.  And secondly, it helps to tack the part down to the build surface, preventing it from peeling up.  An example of a Mouse Ear is here:

Another thing that we must discuss is build settings, specifically build speed.  The fact is, the faster you print the more warping you’ll likely get.  Warping happens as the piece cools. But the solution I have found is to allow the part a little time to cool down to the temperature of the heated bed before applying the next layer.  I do this by adjusting only my “Normal” Shell setting on the printer.  This slows the speed on the Outer Shells to 5mm/s.  This means that the shells take a much longer time to print.  Allowing the rest of the previous layer’s temperature to normalize.  See below:

How does this help?  Well, honestly I had experience ZERO warping on the part shown above with this setting.  However, it does substantially increase build time.  How much longer?  Well (and bear in mind the software’s estimates are never correct, they over state the time) with 20mm/s setting it is estimated to take about 3hrs.  With the 5mm/s setting it is estimated to take 5:40 hrs.  That is almost twice as long.  In reality, the part would likely take about 1:30-2 hours to print with the 20mm/s setting, and approximately 4hrs to print with the 5mm/s setting at 20% infill.  So there is a significant increase in time. But I have experience zero warping with this setting.

But there is one more disadvantage to using this setting that I’ve noticed.  At the place where the print nozzle starts (the Da Vinci has a tendency to start from the same spot for many layers in a row) there may be spots that are ‘missed’.  That is to say that they didn’t get filled in with plastic.  I believe this has to the do with the extrude ratio and the extraction.  I haven’t had a chance to experiment with those settings.  But I plan on testing in the future.

I hope this helps someone else with their print settings on the Da Vinci Pro 1.0 printer.

TinyBASIC 2.5g On The Horizon.

TinyBASIC 2.5g is very near release.  The source now includes routines for IN/OUT, PEEK/POKE, CLS, and DELAY.  And the code for executing Machine Code is being worked out.  So all things considered, it is just about ready to dump into the wild.

Along with the release of v2.5g, I will also be releasing the G80-S Monitor v0.50, which will include in ROM TinyBASIC 2.5g.  This greatly expands the ability of the computer by allowing the user to test new hardware on the fly without the need to write code in assembly, and modify the contents of memory from within BASIC.  I’m personally looking forward to the release.

As a note, the G80-S v1.0 boards are up for sale in the store, and on eBay here, and the Prototyping boards will be shortly.  And once I have a chance to do some tinkering with the hardware side of things I’ll be working on code for a FAT file system.

But until then, happy coding!

G80-S Prototyping Boards Arrive!

Retro Depot is happy to announce that the G80-S prototyping boards have arrived. They’ll be added to the store in a day or two.

So far everything looks good. Although we would suggest that you use extra tall stackable headers. Otherwise clearance may be an issue. But your particular setup may give varying results.

These boards feature breakouts for both the z80 bus as well as the PIO ports, a location for a 1117 Regulator (for 3.3v source), power indicator LED, Micro SD location with breakout (including spots for 1208 capacitors), and just over 1000 pads in a standard .100” grid.

G80-S v1.0 PCBs Have Arrived!

Great news fans!  The PCBs have arrived, been tested, and passed!  That means that I’ll will be able to get them up on the store for sale very soon!  I know many of you are anxiously awaiting the availability of these boards.  I’m waiting on a shipment of capacitors and resistors.  That should be coming in the mail before too long.  But it does take time, and because of this, if you order one of the early boards, you may be forced to purchase without the capacitors/resistors (something I plan on offering free of charge with these boards).

If that is the case, they are easy to find.  They are SMD 0805 footprint.  100nF for the capacitors (total of 16), and 10k for the resistors (total of 6).  One could make through hole work in a pinch.  But the safe bet would be to wait until the caps/resistors are ready.  You’ll know as soon as I do.  In the mean time, here is the front and back of the boards.  You’re excited, admit it.   😉

Also, International Shipping rates have been added to the store.  It’s a 3 tier flat rate.  It seems that for anything under about 8oz I can ship it for about $15 USD.  Once you cross over to 9oz it goes up to about $24 USD.   Above that, it’s best to ask for a quote.  But if we’re talking about a couple of PCBs, I should be able to ship 2-4 for $15 USD (plus the cost of the boards).  If you have any questions, just ask.

Contemplating Graphics

I’ve been thinking about graphics the last week or two. One of the items on my list of things to do is to build a video board for the G80-S. However, graphics pose a new problem…

Video Processors of the time period that this computer would exist were very primitive in respect to their capabilities. Wanting to have a machine similar in capabilities to an MSX, this requires me to use a chip compatible with the TMS9918A. The problem with this chip is that it doesn’t have the greatest of text modes. 40×25 characters just doesn’t work for the Monitor program, or any future aspirations of CP/M or DOS, which typically require 80×24 or 80×25 text modes.

There is a solution to this. Grant Searle’s adaptation of Daryl Rictor’s AVR video processor to 80-column text Mode is perfect for CP/M or DOS. But the problem is that: 1) It’s not compatible with the TMs9918A graphics, 2) the graphics mode leaves quite a bit to be desired.

That leaves me contemplating what should be done. I’ve got some ideas, but I figured in the mean time I would play around with a few different projects, at least until my new boards come…

One of the things that I’ve been wanting to play with was a 128*64 pixel graphics display. I bought one off of eBay a while back, and I’ve never toyed with it. 128*64 pixels isn’t a lot to work with. But I figured I should at least be able to get the G80-S to utilize it for it’s display…at least for TinyBASIC. I’d like to have 32-columns at the minimum. At 8-rows that should give a decent display. But cramming 32 characters in a 128 pixel wide display is a chore.

But with luck I came up with what I though would be a decent character set. I’ve attached the images below for your critique. The characters are 4×8 (width x height). That should allow for a 32×8 display and still permit normal graphics. Now I just have to write some code to test it.