Page 1 of 1

The OSI C1P Page

Posted: Fri Nov 14, 2008 9:54 pm
by Scott Larson
What were all my C1P projects?

The first thing to do was get the 6502 cranked up to 2 Mhz. This was the earliest form of overclocking I have ever heard of and the issues were the same: keeping the innards cool so they'd be fast enough to keep up. I think the 450 ns 2114's didn't have any problem but if you had the older 550 ns ones you were asking for trouble. I had at least two fans since OSI's linear power supply was HOT. After a few years it died and I replaced it with a tiny cool switching power supply, just like the Apple II's had been using all along.

A fun experiment was to see how slow I could get the 6502 to run. At something like 10,000 kHz it started to fail, probably because dynamic electronics in the chip weren't being refreshed often enough. It was fun to see the poor screen scroll one character at a time. No wonder it looked so ugly.

Naturally I added more RAM. I got a memory board (probably from Aardvark) and soldered many many expensive 2114's on it and got 8K more RAM. Don't forget the .1 microfarad capacitors! You could never have enough of those capacitors! If your memory was flaky, soldering in a couple more capacitors in often solved the problem. A few years later there were 64K byte static RAMs on a single chip that cost a few bucks.

I built a parallel printer interface from scratch. It was just an addressable latch (one byte of write-only memory!). The trick was that STROBE, the signal that told the printer a new character had arrived needed to be much longer than the time it took to write to the latch, so I added some flip-flop delay thing to make a pulse when addressed. I don't know how I implemented BUSY, the signal that came from the printer saying its buffer was full. Most likely I just sent characters slow enough so that would never happen, or perhaps I ANDed the 6502's clock to halt the CPU whenever that signal was high. It's not like the computer was doing anything else.

I made a 300 baud modem from a kit then I made the serial port to do double duty with the modem and the cassette interface. I probably had a big switch that had "MODEM" and "CASS" labels from my label maker. Technically the modem required real RS-232 level signals. There were chips that converted TTL to RS-232 but they required -12 volts which I didn't have. Fortunately the modem felt zero volts was close enough to -12 volts so I lucked out. There were elaborate instructions on how to tune the modem but I just tuned it by ear while listening to another modem until it worked. It turned out that 300 baud frequency-shifting modems and cassette interfaces were practically the same thing.

I made a cheap drum machine. I somehow hooked up an addressable line to an amplifier and whenever I POKEd the memory location, the speaker would thump and it sounded amazingly like the bass drum on an expensive drum machine. It was easy to program any rhythm with delays in a BASIC program. I also wrote something that would let me tap a rhythm on the keyboard and it would remember it and play it over and over until my parents told me to turn it off.

One day I decided that there was no reason to buy a disk interface when I had the schematic of one. As you all remember, OSI had no expensive disk controller "chip" like fancy computers had. It was just a serial port (!) and a PIA to move the head around, essentially just two chips. Of course I didn't have the OS65 (or whatever it was called) disk operating system which was barely usable to begin with, but someone had written some kind of simple DOS that I bought and used. I remember some guy on CompuServe was trying to sell me a used floppy disk drive for $600, about three times the cost for a new one. He said it was a true IBM disk drive hence it was worth its weight in gold. I decided to buy a new one instead.

Of course I did the scariest modification of all: the 64 characters per line mod. That involved lots of piggy-backed chips and lots and lots of debugging. The best thing about that was after I was done, I actually understood how video worked: how the video RAM was sequentially addressed with shift registers, how each byte addressed eight bytes in the character ROM to represent a character, how those bytes were latched and serially sent out the video port, and how all the vertical and horizontal blanking happened at the right times. There was also the issue of blanking the video whenever the video RAM was being addressed which made OSI's video by far the ugliest of any computer. Scrolling nearly made the screen go blank. Didn't it just disable the video addressing whenever the CPU was addressing the RAM? Apparently real graphic chips only changed the video memory during blanking. It seemed like at the small expense of speed, they could have halted the CPU whenever it accessed the video RAM whenever the video was reading it.

I was so pumped up at understanding everything about video that I designed and built the ultimate OSI graphics card: 100% bit graphics. I simply duplicated the existing shift register video design on another board (same chips even!) and changed it to address 16K of RAM instead of 2K of RAM and the character ROM. The character and bitmap graphics came from the same clock and were combined with a simple OR gate just before it went out to the monitor. I wish I could say that this was a success, but for some reason bytes weren't getting stored properly. At times bits ended up in the wrong spots. It wasn't software because I'd run it again and it worked fine. I never could figure out what was wrong so I decided to stick to software. I may have slightly damaged a component when I built it or something.

Re: The OSI C1P Page

Posted: Wed Dec 10, 2008 8:12 pm
by Steve Gray
Quite a tale ;-)

Yes, those were the days when you could actually get right into the guts of the machine and play! Nice.

Steve

Re: The OSI C1P Page

Posted: Fri Dec 12, 2008 12:07 pm
by Crawford
Scott,

Great info, thanks!

Do you recall if the 64 character-wide mod made the C1P display compatible with the C2P?

I gave my C2P away ages ago :( , but recently bought a C1P with expansion card and floppy disk. The C1P has some odd modifications, is in what looks like a VT100 or Hazeltime case (including mummified mouse). I need to clean it up before I check it out.

-Crawford

Re: The OSI C1P Page

Posted: Fri Jan 16, 2009 9:55 pm
by stevewahl
I had / have a C1P, too. A while back, I wrote this on a personal web page:

Later upgraded to 16K RAM and hardware hacked to a 32x32 display, 600 baud cassette, add joysticks, sound, and an RS232 port. The 32x32 display was done with a kit from a company called Progressive Computing. 600 baud cassette modification was from a Kilobaud Microcomputing magazine article. Joystick, sound, and RS232 mods were more or less designed into the original schematic but the parts weren't populated on the board. This computer finally died when I tried to put in the modification for a 32x64 display. A machine I have fond memories of; I still have it, and maybe someday I'll fix it.

The memory upgrade was the 610 board, so I had the floppy controller, just never bought the drive.

I learned to program on this and the Apple II's they had at school (Minnesota, late 70's, early 80's). I did mostly basic, but did some assembly, I particularly remember writing a triple USR(x) function that based on the value of X would clear the screen, wait for a key, or play a tone (still had to poke the frequency and duration of the tone, though). All my assembly was hand assembly at the time. I also remember writing a program that simulated a bank marquee display, drawing a couple boxes and the bank name, and then doing messages in a scrolling text box in the middle of the screen.

After it resided in my parents' attic for years, I have possession of it once again, and I intend to make it work again... Someday!

As my own kids approach the same age I was when I got this machine, I'm wondering what the modern easy programming language is to direct them to -- for instance, for algebra my son had to calculate the value of a poynomial for various values of X. None of the current easy languages seem as easy as basic:

10 READ X
20 PRINT X ^ 3 + 5 * X ^ 2 - 7 * X +3
30 GOTO 10

At the very least, all the current stuff (tcl, python, etc.) seems to require you to be acutely aware of the difference between integers and floating point, multiplying everything by 1.0 to force float. (I currently program mostly in C and some C++).

Re: The OSI C1P Page

Posted: Tue Oct 28, 2014 9:35 pm
by Scott Larson
I've been reading about how the Apple II worked at it's sad that OSI couldn't think of the things that Woz did. Yes, the Apple II cost over twice the C1P but some of these differences would have cost nothing or very little.

First, why static RAM? I remember the more expensive OSI systems had dynamic RAM. Why did OSI force us to use those hot, expensive and amp-eating 2114's? The Apple II like several other computers just let the video scanning refresh the dynamic RAM so no more electronics were required. Well, OK, the 4116's multiplexed the address lines so you needed to latch half the address but that's one chip.

Another topic that I keep thinking about is how they allowed the CPU to access the video RAM whenever it wanted. OSI's crummy solution was to blank the video whenever the memory was being update, assuming that watching parts of the screen go dark was better than watching them burst with random snow. The PET's solution was kind of clever: whenever the CPU accessed the video RAM, it was stopped until horizontal retrace. That slowed video access down a lot and I bet scrolling was very slow. In fact you could POKE some memory value and turn off the delay at the expense of filling the screen with snow.

The Apple II's solution was perfectly simple: interleave the video and CPU memory accesses so they never conflicted. This required fast memory but the standard 4116's were fast enough to handle both a CPU and video access (in fact the Apple II supported DMA). Of course they couldn't crank their 6502 up to 2 Mhz like we could.

The Apple II had so many cheap extras that easily could have been added to the C1P and Superboard II. A simple 1 bit speaker for sound would have cost a couple of bucks. The game paddles on the Apple II were laughingly simple. Now an A/D chip would be the obvious solution but that would have been expensive in the 70's. On the Apple II you strobed the paddle and looped waiting for a line to change. How many times you looped told you what position the paddle was. Yes, it was a simple discharge circuit costing about a dollar.

Did OSI ever start using switching power supplies? Damn, that linear power supply with a fan seems ridiculous now.

I think Apple went too far on the cheap side for the floppy drives. They did not have a track zero check preferring to slam the head 35-40 times making a grinding sound whenever the drive was reset. They also didn't use the index hole on the floppy and instead read the data to figure out where the head was on the media. Both these features are just two lines on the PIA that even OSI had no problem using. Apparently leaving these two detectors out made the Apple floppy drives cheaper.

Re: The OSI C1P Page

Posted: Sat Nov 01, 2014 3:45 am
by MK14HAK
Scott do you still have a working OSI system? What was that "small DOS" ?

Nice thing about the A2 and OSI is how easily they can communicate together. RS232, CFFA ADTPro to PC to OSI etc.
I converted OSI extended monitor to run on the A2 complete with a DOS command parser.
You make some valid hardware comparisons. I like the hackability of the OSI harware and software, the expansion card slots on the apple. Together they make a great 8 bit salad.

Re: The OSI C1P Page

Posted: Tue Nov 04, 2014 6:54 pm
by Scott Larson
I have a stack of OSI stuff in my basement. I don't know if my C1P is still in there but the C8P (or some variation of it) with gigantic 8" floppy drives is definitely there. I'm scared to plug it in since I see a wax paper-coated transformer whenever I walk past it and it looks like fire to me. Once I got a job doing computer stuff, I didn't want anything to do with computers when I got home so it got boxed away.

In its final years I was using the C1P only as a terminal to Unix machines at school. I wrote a terminal program in assembly and wrote a custom "termcap" which told the Unix machine how to move the cursor to put characters on the screen. It had no problem talking to a terminal with non-standard 32x64 character screen. Initially my terminal program couldn't do much more than move the cursor around the screen so programs often had to redraw lines or even the entire screen -- a real pain at 1200 baud. I went through the Unix termcap and started implementing more functions from it: delete a character, insert a character, delete a line, insert a line, and so on. It became more and more usable, especially when the 2400 baud modems came out. I may have burned the terminal program into an EPROM to replace the Microsoft BASIC ROM which I never used.

I wasn't a fan of Microsoft's version of BASIC for OSI. Remember the garbage collection bug? If you started to run out of memory, BASIC attempted to clean up and defragment strings in memory. What it actually did was lock up the computer so you'd lose your data. There was a "fix" ROM for this which did indeed prevent the routine from locking up the computer. It now simply scrambled all of your strings. The real fix was to get lots of memory so BASIC never did any garbage collection. Believe me, the Apple II and TRS-80 people didn't have to deal with major bugs like this for as long as we did.

I may have done some other hardware hacks. I know I wanted to try replacing all memory with a single chip. In the late 80's there was an inexpensive chip with 64K of static RAM. One chip! It seemed like some kind of dream after buying so many 2114's. It may have multiplexed the address lines though. I also have a vague memory of using a 3 inch drive with it when I discovered electrically they were no different from 5 inch drives.

I don't remember the name of the small disk OS I used. It was just something some guy wrote and was probably sold through Aardvark. In fact I found a floppy with it a few years ago and threw it out.

I found one thing that OSI did that Apple II didn't. OSI was smart enough to make the characters in the character ROM match ASCII codes. The Apple II character ROM had the alphabetic characters starting at around hex 60 and chose to have inverse characters instead of lower case. I guess Woz never thought his computer would ever talk to another computer. OSI of course started with computers that needed ASCII terminals.

Re: The OSI C1P Page

Posted: Tue Nov 04, 2014 8:43 pm
by Scott Larson
After some research, I'm certain the simple disk OS I used was HEXDOS which is described here:

http://www.atarimagazines.com/compute/i ... ARD_II.php