Sunday, November 20, 2016

Office / Shop: Floor

The existing base boards around the perimeter wall of the shop were totally rotted.



I ripped those 2x4s out...



There are lots of 2x4 cross braces along the perimeter wall. I went with treated 2x6s for the bottom plates so I could build a 2x4 wall along the perimeter without interfering with the existing cross boards. And the new wall will be flush across the 6x6 columns as opposed to having a bump from the middle and corners columns.



The existing concrete floor was also in rough shape. A few major cracks...


I had never used self-leveling concrete, but this seemed like the perfect situation for it. I first applied Home Depot's SikaLevel Primer.


Then the next day I poured SikaLevel self-leveling concrete.


I'm experienced with concrete, but this was my first go with the self-leveling variety. I had no idea how much I would need for my shop space. No one seems to want to give a good rule of thumb - likely because it's a huge "it depends" situation. I could have (and probably should have) gone with quite a few more bags. If anyone else is looking to use the self-leveling concrete, you'd probably want to budget -minimum- one 50 pound bag per 20 sq ft - regardless of how level and smooth it currently is. Unfortunately the stuff is not cheap!


When pouring concrete, there is a small range between "minimum sufficient" water and "too much" water. If you see dry powder (after mixing), you've got too little water. If you see a pool of water floating at the top (after mixing), you've got too much water. The directions said to use 1 gallon of water per 50 pound bag; I did that with the first batch and it was very thick and hard to spread. For the additional bags I ended up exceeding the 1 gallon of water recommendation (but still under "too much") so future bags spread out much better.

From reading up on self-leveling concrete, it sounded like the wet concrete would seep through every tiny gap in the wall and leak out. That was a non-issue; there was no problem keeping it contained even when I mixed extra water.

I don't know how SikaLevel compares to other brands. My first "thicker" pour is a bit uneven (from me trying to spread it), but overall I'm happy with the results. Cracks are gone!


Next up is the epoxy paint for a shiny uniform finish. Unfortunately my weather window to get that done has closed. Per Rustoleum's instructions:

Apply when air (ambient) temperature is 60-85°F and relative humidity is below 80%. Concrete floors take a long time to warm up; make sure the previous day has also been at least 60°F prior to painting. Minimum floor temperature for painting is 55°F. Painting in mid-afternoon ensures the best cure. Do not apply coating if night time temperature is expected to drop below a low of 65°F (18.3°C). For best results, temperatures should not drop below 65°F for 24-48 hours after applying the coating.

None of that is happening until summer or until I can get the room insulated and heated.






Sunday, November 13, 2016

Retro Computing: Gateway 2000 486 DX4/100

Nostalgia is getting the better of me. I recently bought a Nintendo 64 along with a bunch of the must-have N64 games. And now I'm returning to the good old days of computing when keyboard was king, memory was measured in kilobytes, and plug and pray was wishful thinking.


So... I bought one of the computers I had growing up. A Gateway 2000 486 DX4/100 off E-bay. I've been playing Doom 2 and the original Grand Theft Auto on it, and they're fantastic. :-) The computer came with Windows 95, so I also installed Spaceward Ho.

If you've never played Spaceward Ho, go download it... now... I'll hear back from you in a few days how awesome it is.


Rather than continuing down memory lane, I figured I'd offer some tips for others that are going a bit retro. Computer RAM nowadays is measured in GBs, but in the 90s it was measured in MBs. Worse yet though, on DOS based machines in the 80s/early 90s (before Windows 95), you had to care about the first 1 MB of your memory.

That first MB of memory was divided into conventional and upper memory. (I found a Wiki article that covers it pretty well: https://en.wikipedia.org/wiki/DOS_memory_management ) Any ordinary application you were going to run needed conventional memory to get going. Even if you had 16 MB of total memory, those apps could easily require 580+ KB of conventional memory (out of 640 KB max). The issue is DOS and all its drivers (mouse, sound card, CD-ROM, etc) needed to be in that first MB of memory as well.

For those young ones out there, that's what "Boot Disks" were for. If you were going to play a certain game, you made a floppy disk the computer booted from for just that game so it only loaded the bare minimum necessary to keep as much conventional memory free to enable the DOS game to run.

I hated that, so I got obsessed with maximizing my conventional memory so I never had to make a boot disk. Things got easier in later DOS versions (memmaker was awesome). But just a couple key things would help:
1. Load as many of your drivers into upper memory as possible (area between 640 KB and 1 MB).
2. Find more efficient drivers that required less memory.

With the DOS command:
mem /c /p
You could see how your memory was being used.

Here's my memory on my new (old) computer after loading as much as I could to upper memory.



My available memory... 587K (601,584 bytes)
With only 1K (1,472 bytes) remaining unused in the upper memory block.

Could be better but not too shabby! I'm sure there are more efficient drivers I could load, but I've reached the conventional memory threshold such that no program should complain it's not enough.

When a DOS based computer boots up, it goes through the CONFIG.SYS then AUTOEXEC.BAT files to load up drivers and any other software that starts automatically. (So much nicer than the hundred ways a nefarious Windows program can sneak its way into starting now.)


My C:\CONFIG.SYS ...

DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICE=C:\WINDOWS\EMM386.EXE RAM
DOS=HIGH,UMB
FILES=40
DEVICEHIGH=C:\WINDOWS\SETVER.EXE
DEVICEHIGH=C:\SB16\DRV\CTSB16.SYS /UNIT=0 /BLASTER=A:220 I:5 D:1 H:5
DEVICEHIGH=C:\SB16\DRV\CTMMSYS.SYS
DEVICEHIGH=C:\SB16\DRV\SBCD.SYS /D:MSCD001 /P:220

HIMEM.SYS is necessary for the computer to access high memory and memory beyond the first 1 MB.

EMM386.EXE provides expanded memory support and access to upper memory for programs. Beyond the first MB of memory, the RAM can be treated as Expanded (EMS) or Extended (XMS). Most programs of the day required EMS rather than XMS, so adding the "RAM" keyword after EMM386.EXE was necessary. Unfortunately it also eats up a lot of upper memory. The alternate keyword is "NOEMS", but then programs that require Expanded memory can't load.

HIMEM.SYS and EMM386 should be at the top; after that you can start taking advantage of your upper memory with DEVICEHIGH.

DOS=HIGH,UMB instructs DOS to load itself into the high memory just above "upper" memory. This always helps free up memory, and I've never seen a downside to it.

FILES=40 allows DOS to have 40 files open simultaneously. I've seen this value as low as 30 and as high as 40.

SETVER.EXE allows you to spoof other DOS versions so you can run older programs. This is tiny and easily fits in upper memory with DEVICEHIGH.

CTSB16.SYS, CTMMSYS.SYS, and SBCD.SYS are all for the sound card and CD-ROM. 


My C:\AUTOEXEC.BAT ...

SET SOUND=C:\SB16
SET BLASTER=A220 I5 D1 H5 P330 T6
SET MIDI=SYNTH:1 MAP:E
C:\SB16\DIAGNOSE /S
C:\SB16\MIXERSET /P /Q
LH C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MSCD001 /V /M:15 /E
C:\MOUSE\CTMOUSE.EXE
@ECHO OFF
PROMPT $p$g
PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\DOS
SET TEMP=C:\DOS

The SET command defines DOS environment variables so programs later can know how the computer is configured. As you can see in my setup, mine are mostly for the sound card.

MSCDEX.EXE gets the CD-ROM going.

CTMOUSE.EXE are mouse drivers from the FreeDOS project.

@ECHO OFF is just used to hide the following commands so startup looks cleaner.

PROMPT $p$g gives you the classic C:\ look.

PATH is very handy to set what folders DOS should look in whenever you type something into the prompt. I could create a new folder called C:\UTILITY and put a bunch of executable files in there to help me manage my computer. Rather than explicitly typing C:\UTILITY\PROGRAM.EXE each time I wanted to execute one, I just add C:\UTILITY to my PATH. Then I can type "PROGRAM.EXE" from any folder and it would execute it.

Computers with Windows 95 could actually boot straight to DOS. From there you could start Windows by typing "win". Since the vast majority of the programs I'm running on this computer are DOS based, I modified the C:\MSDOS.SYS file to always boot directly to DOS.


Just needed to change BootGUI=1 to BootGUI=0

This is what the computer starts up to!


So far I've just been transferring files to and from the computer via a 3.5" floppy and CD-ROM. However, I want something more sustainable long term. Although these old computers don't have USB, this time period was the high point of serial communication ports so support there is ready to go.

I purchased a USB->COM port adapter for my modern computer.


To physically connect the computers, I ended up with the old computer connected to a 9-pin serial cable connected to a "Null Modem" adapter (which reverses the transmit and receive wires) connected to a gender change connected to the USB->COM adapter connected to the modern computer.


(You can buy a single USB->Null Modem Serial cable that literally encompasses everything above, but I already had all the other components and I like the flexibility.)

My USB->COM adapter reported in Windows as COM3.


So I started PuTTY on the modern computer and configured it for COM3


Next I opened QBasic 4.5 on the old computer (yes, I still have my original 3.5" install disks and manual) and loaded the example TERMINAL.BAS program.


My serial cable was connected to COM1 on the old computer so that was fine in the example, but I did increase the baud rate from 1200 to 9600.

Finally I ran the TERMINAL.BAS program on the old computer and opened the connection in PuTTY on the new!



We have 2-way communication!

Now that I have this connection made, there are many solutions out there for transferring files over the serial cable. I may make my own approach; we'll see how it goes. :-)

On a lighter note, when I opened the CD-ROM drive on the computer, the seller had put an AOL CD in there. Freaking awesome! For anyone that owned a computer in the 90s, you know what's up with that.


Side thing you don't care about but I want recorded on the Internet so it will be easy for me to lookup later: You press F1 to bring up the BIOS on this Gateway computer. F1!? Right!? Not delete. Not F2. F1! Does it tell you F1 enters the BIOS at bootup? Of course not.