Osborne 1 Computer

Osborne 1 computer just as it arrived from Goodwill. A little scuffed but minimal yellowing for its age.

2022-02-26 22.04.20.jpg
Goodwill find - The back
2022-02-26 19.02.39.jpg
Check that price!
2022-02-26 22.04.00.jpg
Goodwill find - The front
2022-02-26 22.07.52.jpg
Goodwill find - On the desk


First problem. No video output.

When I powered up the Osborne in Goodwill there was no video. Adjusting the brightness and contrast did nothing. I figured for the price it was worth the risk and brought it home. Once I got it home it didn't take long to figure out what was going on.

By default the Osborne displays 52 column video to its internal display. There is a card edge connector for external video that is normally terminated. That termination enables the internal display. My Osborne came with a "Drive C:" upgrade card which plugs into the video port and passes the signal through to an RCA plug. I grabbed my Commodore 1902 monitor and connected it to the Osborne 1 and boom! Video!

2022-02-26 22.24.03.jpg
Osborne video on a Commodore 1902


So now I just need a terminator to test the monitor. Turns out that is easy too. All you need is the appropriate sized edge connector and jumper the top pins to the bottom pins. Once attached I got video on the internal display.

2022-03-02 20.04.58.jpg
Osborne video on internal display


And here is a closeup of the video terminator.

OsborneVideoTerminator.jpg
Osborne video terminator


Once I had video I was able to tune the brightness and contrast. The pots were pretty bad so I had to hit them with tuner cleaner and exercise them a bit.

OMG it has a fan!

Everyone always says the Osborne doesn't have a fan. Well, turns out this Osborne did have a fan from the factory which may have been the one from the later Executive model. The fan is on by default and hidden in the bulge under the handle. It is behind a door and running completely smothered unless opened.

2022-03-08 19.07.12.jpg
Fan module opened
2022-03-08 19.07.39.jpg
Fan module from behind


Recap that power supply

Like many power supplies from the time, the Osborne power supply has Rifa caps that blow and release the magic smoke. Mine were cracked but otherwise still working.

2022-03-07 20.27.39.jpg
Power supply with yellow Rifa in the middle


Before going any further I ordered a recap kit from Console5 and replaced all of the caps.

Creating disks

So what do you do when you have no disks and no old PC's with 5 1/4 disk drives? You will need something that can write Single Sided Single Density or Single Sided Double Density disks. Enter the Commodore 128 and 1571 floppy drive.

I also used a 1581 drive and a pi1541 to transfer files to the 128 with SD cards but an SD2IEC should work just as well. Why the 1581? I found that writing the images directly from the pi1541 would often result in a failed image. The 1581 is an extra step to get reliable images.

Starting on a Windows machine I downloaded Osborne 1 Double Density CP/M from http://dunfield.classiccmp.org/img42841/system.htm. The Double Density image is important. I have had no luck writing Single Density images on my 1571. Next extract your downloaded files.

On Windows download samdisk from https://simonowen.com/samdisk/ so you can work with these images. There are other tools but this one worked well for me.

Next convert your IMD images to RAW:
samdisk O1CPM.IMD o1cpm.raw
Note: You want the files names in lower case otherwise they will be PETSCII characters on the 128.

Now Download DraCopy V1.0.d ( I couldn't get the newer version to play nice ) for use later.

Download The 1571 MFM Disk Image Writer from biosrhythm.com.

Lastly download Vice to get access to the c1541 utility.

Now extract the files from the 1571 MFM Disk Image Writer d64 so we can write them to a d81. I must have used c1541 for this. Here are the files you want:
burst
kaypro4-write
msdos-write
osb1dd-write
start

Make a new d81 image:
c1541 -format oscpm,001 d81 oscpm.d81

Write 1571 MFM Disk Image Writer and up to 3 disk images to your oscpm.d81 image. o1cpm.raw is probably the most important one:
c1541 -attach oscpm.d81 -write burst
c1541 -attach oscpm.d81 -write kaypro4-write
c1541 -attach oscpm.d81 -write msdos-write
c1541 -attach oscpm.d81 -write osb1dd-write
c1541 -attach oscpm.d81 -write start
c1541 -attach oscpm.d81 -write o1cpm.raw
c1541 -attach oscpm.d81 -write o1cbmb.raw
c1541 -attach oscpm.d81 -write o1scalc.raw

Move the following the the pi1541 sdcard:
  • DraCopy V1.0.d
  • oscpm.d81

Now move to your Commodore 128. Format a real 1581 Floppy. Mu 1581 was at id 10.
HEADER "TEST DISK",IAA,D0,U10

From your pi1541 run DraCopy. Once DraCopy is running mount oscpm.d81 on your pi1541. Using DraCopy copy all files from oscpm.d81 to your real 1581 (or of course a 1571 if you have 2). Exit DraCopy.

Now lets burn the image. From the real 1581 ( or 1571 )
  • Run start
  • Select Osborne
  • Filename o1cpm.raw
  • Drive: 10 (This is the source drive)
  • Blank Floppy in Drive 8 ( No option to specify another drive )
  • Go!

If all goes well you now have an Osborne 1 CP/M disk. Do NOT turn your Osborne on or off with a floppy in the drive. Your disk will likely be corrupted.

Turn on your Osborne, insert your disk in Drive A and hit return. If everything worked the following screen should be displayed after the Osborne logo:

2022-03-03 15.56.15.jpg
Osborne Help Menu


cpmtools

cpmtools can be used to read and write files from CP/M disk images on Linux. I'm running Ubuntu under WSL so I installed it there. I have standalone Linux but all of my other tools were for Windows so I went with WSL so everything is in one place.

To install on Ubuntu:
sudo apt install cpmtools

Out of the box cpmtools did an excellent job of reading single sided double density disks using osborne1 as the format.
$ cpmls -l -f osborne1 o1cpm.raw
0:
-rwxrwxrwx    8192 Dec 31 1969  asm.com
-rwxrwxrwx    2432 Dec 31 1969  autost.com
-rwxrwxrwx    4352 Dec 31 1969  copy.com
-rwxrwxrwx    5120 Dec 31 1969  ddt.com
-rwxrwxrwx     512 Dec 31 1969  dump.com
-rwxrwxrwx    6656 Dec 31 1969  ed.com
-rwxrwxrwx   17920 Dec 31 1969  help.com
-rwxrwxrwx    2048 Dec 31 1969  load.com
-rwxrwxrwx   11008 Dec 31 1969  movcpm.com
-rwxrwxrwx    7424 Dec 31 1969  pip.com
-rwxrwxrwx    4992 Dec 31 1969  setup.com
-rwxrwxrwx    5376 Dec 31 1969  stat.com
-rwxrwxrwx    1536 Dec 31 1969  submit.com
-rwxrwxrwx    1536 Dec 31 1969  sysgen.com
-rwxrwxrwx    2304 Dec 31 1969  xdir.com
-rwxrwxrwx    4096 Dec 31 1969  xsub.com

Problem is that many of the disk images online are single sided single density. The disk definitions for cpmtools can be found in /etc/cpmtools/diskdefs and at least on Ubuntu there is no working definition for SSSD.

I tried my own hand at getting a working definition. I could get most of the directory but never the whole thing. I don't remember where I found it but the following definition works for SSSD images. Just add to your /etc/cpmtools/diskdefs file:
# BEGIN osb1sssd  Osborne 1 - SSSD 48 tpi 5.25" - 256 x 10
# Test OK - image size = 102,400, from Don Maslin's archive
diskdef osb1sssd
  seclen 256
  tracks 40
  sectrk 10
  blocksize 2048
  maxdir 64
  skew 2
  boottrk 3
  os 2.2
# DENSITY MFM ,LOW
# BSH 4 BLM 15 EXM 1 DSM 45 DRM 63 AL0 080H AL1 0 OFS 3
end

Example reading the Drive C: SSSD disk:
$ cpmls -l -f osb1sssd drive_c.raw
0:
-rwxrwxrwx     768 Dec 31 1969  autost.com
-rwxrwxrwx    9984 Dec 31 1969  dca.com
-rwxrwxrwx    6656 Dec 31 1969  dcl.com
-rwxrwxrwx     896 Dec 31 1969  dcq.com
-rw-rw-rw-     128 Dec 31 1969  dcq.dat
-rwxrwxrwx     768 Dec 31 1969  dcqaut.com
-rwxrwxrwx    7296 Dec 31 1969  dcqins.com
-rwxrwxrwx    6272 Dec 31 1969  dcu.com
-rw-rw-rw-    2560 Dec 31 1969  dfd.spr
-rwxrwxrwx    7424 Dec 31 1969  pip.com
-rw-rw-rw-    7936 Dec 31 1969  prn.tst
-rwxrwxrwx    2304 Dec 31 1969  xdir.com

Now cpmtools can be used to extract files from your image. For example:
cpmcp -f osb1sssd drive_c.raw 0:autost.com autost.com
cpmcp -f osb1sssd drive_c.raw 0:dca.com dca.com
cpmcp -f osb1sssd drive_c.raw 0:dcl.com dcl.com
cpmcp -f osb1sssd drive_c.raw 0:dcq.com dcq.com
cpmcp -f osb1sssd drive_c.raw 0:dcq.dat dcq.dat
cpmcp -f osb1sssd drive_c.raw 0:dcqaut.com dcqaut.com
cpmcp -f osb1sssd drive_c.raw 0:dcqins.com dcqins.com
cpmcp -f osb1sssd drive_c.raw 0:dcu.com dcu.com
cpmcp -f osb1sssd drive_c.raw 0:dfd.spr dfd.spr
cpmcp -f osb1sssd drive_c.raw 0:pip.com pip.com
cpmcp -f osb1sssd drive_c.raw 0:prn.tst prn.tst
cpmcp -f osb1sssd drive_c.raw 0:xdir.com xdir.com

So now I have files. Now how do I get those to my Osborne? I tried exporting the files and then and then writing them to a CP/M image that had room but I never ended up with a functioning image. I got close but always one or two of the executables would be broken. Since creating images and bouncing from Windows to C128 to Osborne 1 is a pain, I moved on to getting serial working.

Serial communications on the Osborne 1

Some things to understand about your Osborne 1's serial first:
  1. Default baud rate is 1200
  2. You want a straight through serial cable. No NULL modem required.
  3. The Osborne 1 speaks old fashioned RS-232 at 12 Volts. This means modern USB serial adapters will likely not work.

12 Volt serial

I chose to connect to an old PC with a real serial port but the IMSAI Guy has a number of excellent Osborne videos on YouTube including a mod that allows the Osborne 1 to work with 5 volt serial.

Kermit

CP/M comes with a powerful tool called PIP which can be used to move files between devices. Unfortunately it is limited to text files and when transferring over serial it has a size limitation. The first thing you are going to want to do is use PIP to get Kermit on your Osborne. This process is covered in several places on the internet. I followed the following two sources:

Basic Steps:
  • Get cp4ker.hex and cp4osb.hex from the internet
  • Split cp4ker.hex into two smaller files ( f1.hex and f2.hex )
  • Transfer all 3 hex files with PIP
  • Join F1.HEX and F2.HEX into CP4KER.HEX on the Osborne
  • Use DDT to load CP4KER.HEX, apply the CP4OSB.HEX patch and save to kermit40.com

I struggled with this a bit and then after I got everything working I went back to document and I couldn't reproduce my success.

What you must know:
  • Don't upgrade your serial port to 2400+ until AFTER you get Kermit onto the Osborne. PIP does not seem to like anything over 1200 baud. At 2400 baud, no matter what I tried, only every other line of the file would transfer. As soon as I went back to 1200 baud PIP worked just fine.
  • After the file is done transferring look at the Osborne. If it is still waiting then hit CTRL-Z from the source machine. Then Wait! When the Osborne is ready it will say END OF FILE, CTL-Z. Now you can hit CTRL-Z on the Osborne and your file will be saved.
  • F2.HEX has ^Z at the end of the file so it will trigger the CTRL-Z for you on the client end.
  • If you hit CTRL-Z or anything else on the Osborne too early you will interrupt the transfer and get an incomplete file.

1200 to 2400 baud serial

WARNING: PIP does not like 2400+ baud. Might be something I did but I could not get PIP to work at high speeds. Get Kermit on your machine before you upgrade the speed.

Switching you max baud rate from 1200 to 2400 is simple. Just remove the jumper from J1.

Osborne1Serial.jpg
Remove J1 to get 2400 baud


You can access the jumper by simply removing the front of the Osborne 1. The hardest part for me was removing the brightness and contrast knobs.

Osborne1SerialFront.jpg
Remove J1 to get 2400 baud


If you want to go all the way up to 9600 baud the IMSAI Guy has another excellent video:

Drive C: expansion

The Drive C: expansion provides RAM disk and print buffer features. I don't have a printer so I configured mine to use all 384k as a drive C: RAM disk.

2022-03-08 18.51.51.jpg
Drive C: and harness
2022-03-08 18.52.03.jpg
Drive C: Front
2022-03-08 18.52.22.jpg
Drive C: Top
2022-03-08 19.02.45.jpg
Drive C: Bottom
2022-03-08 18.59.14.jpg
Drive C: Inside


The Drive C: is very flexible. You only need a couple files from the driver disk to mount the RAM as drive C:. You can also run a configuration utility to configure a boot disk which copies all files from drive A: and/or B: to the C: drive. Once the system is booted you have a very fast CP/M system that partially survives reboots. After a reset the system will boot from drive A: and detect that files have already been copied to C:. It will then perform an abbreviated boot and have you up and running in seconds.

I found a drice_C.imd SSSD image online and exported the files:
cpmcp -f osb1sssd drive_c.raw 0:autost.com autost.com
cpmcp -f osb1sssd drive_c.raw 0:dca.com dca.com
cpmcp -f osb1sssd drive_c.raw 0:dcl.com dcl.com
cpmcp -f osb1sssd drive_c.raw 0:dcq.com dcq.com
cpmcp -f osb1sssd drive_c.raw 0:dcq.dat dcq.dat
cpmcp -f osb1sssd drive_c.raw 0:dcqaut.com dcqaut.com
cpmcp -f osb1sssd drive_c.raw 0:dcqins.com dcqins.com
cpmcp -f osb1sssd drive_c.raw 0:dcu.com dcu.com
cpmcp -f osb1sssd drive_c.raw 0:dfd.spr dfd.spr
cpmcp -f osb1sssd drive_c.raw 0:pip.com pip.com
cpmcp -f osb1sssd drive_c.raw 0:prn.tst prn.tst
cpmcp -f osb1sssd drive_c.raw 0:xdir.com xdir.com

I then created a copy of my CP/M boot disk and deleted any files that were also found on the Drive C: disk. Next I used Kermit to transfer all of the Drive C: files to my new boot disk. I then rebooted the system to see if my new disk would boot.

If there is an existing DCQ.DAT file then then QuickPak will run that configuration. Otherwise you will be told to configure your Drive C:.

To configure just run DCQINS.COM and follow the instructions.

Commands

Format a Disk

COPY is the command that will format a disk. Just run COPY and follow the instructions.

Of course COPY can also be used to copy a disk.

Copy a file to another disk

Copy bob.pas from C: to A:
PIP A:bob.pas=c:bob.pas

Boot from drive B:

At the 'Insert disk in Drive A and press RETURN' prompt, press SHIFT + SINGLE/DOUBLE QUOTE key.

This swaps drive A: with drive b: and boots from the right drive.

Software

Turbo Pascal 3.0

Keys
Key Combination Action
CTRL-E Up
CTRL-X Down
CTRL-S Left
CTRL-D Right
CTRL-G Delete character under cursor
CTRL-K D End edit
CTRL-N Insert line before current line
CTRL-Y Delete current line

program helloworld;
begin
  writeln('Hello, world!');
end.
I Attachment Action Size Date Who Comment
2022-02-26 19.02.39.jpgjpg 2022-02-26 19.02.39.jpg manage 6 MB 17 Apr 2022 - 00:43 BobWicksall  
2022-02-26 22.04.00.jpgjpg 2022-02-26 22.04.00.jpg manage 6 MB 17 Apr 2022 - 00:43 BobWicksall  
2022-02-26 22.04.20.jpgjpg 2022-02-26 22.04.20.jpg manage 6 MB 17 Apr 2022 - 00:40 BobWicksall  
2022-02-26 22.07.52.jpgjpg 2022-02-26 22.07.52.jpg manage 7 MB 17 Apr 2022 - 00:44 BobWicksall  
2022-02-26 22.24.03.jpgjpg 2022-02-26 22.24.03.jpg manage 8 MB 17 Apr 2022 - 01:36 BobWicksall  
2022-03-02 20.04.58.jpgjpg 2022-03-02 20.04.58.jpg manage 5 MB 17 Apr 2022 - 01:43 BobWicksall  
2022-03-03 15.56.15.jpgjpg 2022-03-03 15.56.15.jpg manage 172 K 17 Apr 2022 - 03:09 BobWicksall  
2022-03-07 20.27.39.jpgjpg 2022-03-07 20.27.39.jpg manage 1 MB 17 Apr 2022 - 02:03 BobWicksall  
2022-03-08 18.51.51.jpgjpg 2022-03-08 18.51.51.jpg manage 1 MB 18 Apr 2022 - 02:40 BobWicksall  
2022-03-08 18.52.03.jpgjpg 2022-03-08 18.52.03.jpg manage 2 MB 18 Apr 2022 - 02:41 BobWicksall  
2022-03-08 18.52.22.jpgjpg 2022-03-08 18.52.22.jpg manage 2 MB 18 Apr 2022 - 02:41 BobWicksall  
2022-03-08 18.59.14.jpgjpg 2022-03-08 18.59.14.jpg manage 2 MB 18 Apr 2022 - 02:41 BobWicksall  
2022-03-08 19.02.45.jpgjpg 2022-03-08 19.02.45.jpg manage 2 MB 18 Apr 2022 - 02:41 BobWicksall  
2022-03-08 19.07.12.jpgjpg 2022-03-08 19.07.12.jpg manage 7 MB 17 Apr 2022 - 01:54 BobWicksall  
2022-03-08 19.07.39.jpgjpg 2022-03-08 19.07.39.jpg manage 6 MB 17 Apr 2022 - 01:53 BobWicksall  
Osborne1Serial.jpgjpg Osborne1Serial.jpg manage 896 K 17 Apr 2022 - 18:47 BobWicksall  
Osborne1SerialFront.jpgjpg Osborne1SerialFront.jpg manage 471 K 17 Apr 2022 - 18:52 BobWicksall  
OsborneVideoTerminator.jpgjpg OsborneVideoTerminator.jpg manage 142 K 17 Apr 2022 - 01:45 BobWicksall  
Topic revision: r4 - 18 Apr 2022, BobWicksall
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback