• Please review our updated Terms and Rules here

Northstar DOS

psteichen

Member
Joined
Dec 1, 2014
Messages
14
Location
Maine Prairie, United States
Hey everyone! I'm new to this forum, but you may see more of me going forward. I have always been a computer geek, and Mr. Fixit, but with my new project I'm in over my head (for now). I grew up using an 8088 as my first computer, and learned a lot...liked it so much I taught myself BASIC and spent a whole month writing a GUI for my 8088. Later I took a few programing classes in college (ASM & C mostly), but I'm far from proficient these days.

Okay, so my project I'm working on now predates my earlier machines. It's an IMSIA 8080 that I picked up at a government auction 20 years ago. I'm just now getting around to working on it. It seems to be functional and has two Shugart single density 5.25" drives that spin up nicely. I'll post more details in the future, but for now I'd really like to find a Northstar DOS v2 boot disk. The machine has a Northstar MDC-A4 board, and I have an original paper manual for Northstar DOS f2f that should work nicely with it...but no floppy.

Any advice would be most welcome, and I look forward to sharing more info on this machine as I figure it out.
 
psteichen said:
...like to find a Northstar DOS v2 boot disk...have a Northstar MDC-A4 board...original paper manual for Northstar DOS f2f...but no floppy...

I have a NorthStar MDS, the same product. I bought the light blue box and board kit for the $699 price of 1978 or '79. Still have everything including a lot of NS diskettes.

Information on Northstar:
http://retrotechnology.com/herbs_stuff/d_nstar.html

NorthStar System Disks:
You might find a system floppy image on "Dave's Old Computers" website; I don't have the URL, but it appears in a lot of searches. I think he has a section for installation floppy images and a subsection of NorthStar. Its denoted as "NSI" type format and I think he has a driver for that.
 
Last edited:
JDallas: Thanks for the great link! Even a complete decompilation of NSDOS v2 Rev 3, which is the exact manual I have that came with the machine, including penciled in I/O routine corrections (I wish the disk came with it too...). I'm sure this will be handy if I can figure out a way to compile it and write it to a single density hard sector disk.

It's odd, the card is labeled MDC-A4, yet the manual for the board is labeled MDS-A. Are these designations synonymous, or do you think I might have the wrong manual for the board? I'll see if I can attach a photo of the board to this post.
2014-11-27 17.57.34.jpg.jpg
 
Last edited:
At one time these guys 'http://www.athana.com/html/diskette.html' sold hard sectored floppy disks. I don't see any on their website anymore - but it might be worth an e-mail if you know what you want. They may have some boxes going spare...

Dave
 
To The North Star And Back

To The North Star And Back

psteichen said:
...complete decompilation of NSDOS v2 Rev 3...including penciled in I/O routine corrections...way to compile it...write it to a single density...
If you want to combine efforts to re-enter printed code, I'm game.

Idea. Maybe we can write a new driver to allow it to use soft-sectored floppies by timing sectors from the index pulse?.

I messed with the driver code some back in the day... I think it relies on the micro driver to recognize the index pulse and then count the sector pulses to determine when to start a read or write. If that's true, a new driver could calculate and count to where the hard sectors should be.

...It's odd, the card is labeled MDC-A4, yet the manual for the board is labeled MDS-A...
I think I've run into this before.. I think MDS is the System; MDC is the controller card.
 
Last edited:
JDallas: Hey thanks much for your offer of help. I will be grateful for any assistance. I won't be ready for any hard core work for few weeks as I have some prior commitments to clear up first, but I'm certainly going to learn all I can in the meantime.

Your idea of modifying the driver for the controller is interesting. I'm picturing this thing being hard wired rather than software driven, but I really have no idea. If I were to need hard sector disks it sounds like they're hard to find. I searched eBay and found a few sales over the past few months, but nothing current. Nothing on Amazon. Tried a recommendation from a forum and Google insists the site is infected with malware, so I assume they went out of business and a malcontent bought the domain.

I did come across some talk about making hard sector disks by punching more holes in a soft sector disk. Has anyone had luck with this technique? Also, if I do find hard sector disks, can I write to them using a soft sector drive/controller, or do I need to find someone with a working and bootable hard sector system to create my boot disk?

I have to say it is fun to try remembering the things I knew as a teen. Most of it has been lost :)
 
The controller is indeed hardwired for 10-sector floppies. Some of the Heathkit guys have looked into creating hard sector simulator hardware (derives 10 extra pulses from the index pulse, or I believe one of the advanced designs actually read sector headers from the disks).

If you can find enough disks to make it practical, these single-density North Star controllers are really solid. I've got a few running with various S-100 systems. Problems I've encountered have never been the controller's fault!

The first thing you'll want to do is determine whether your IMSAI is fully functional, including at least 16 KB of RAM. Then we'll need to know what your console I/O setup looks like -- if it's not compatible with the standard North Star console (Intel 8251 at specific ports, like the Horizon), you'll need to patch North Star DOS for your specific hardware. Then, you can either generate physical disks using Dave Dunfield's NST, or one of us (PM sent) can generate disks for you, to skip the initial "bare metal bootstrap" process.
 
glitch said:
...looked into creating hard sector simulator...
Its a simple sequencer. Catch a Index pulse, time the assertion of simulated sector pulses, constantly calibrate by the period between index pulses.

Maybe the others failed because they had no auto-calibration scheme when doing it in TTL hardware.

If you used a simple micro-controller with 10 pins or less, you could put more intelligence into it. For example, a micro could auto-calibrate with no additional circuitry assuring that sector pulses are proportional to the current index period. It might also encode in internal reall-time clock (RTC) value on the index pulse line when the drive motor was turned off... i.e. a phantom signal for RTC anytime the system micro wanted it.

The MSP430 is overkill but could do the RTC feature by adding a tiny surface-mount RTC crystal. A tiny PIC could also do the job without the RTC feature. Either way the add-on surface mount circuitry would likely fit within the TTL DIP profile so that a 74xx chip swap would be the only installation (ideally) for the simple version of synthesizing 10 auto-calibrated sector pulses per revolution.

You could then always unplug the add-in DIP circuit and put the original 74xx DIP back in the socket. No software changes required.

Taking it further (probably no real justification as the best pay-off is using soft-sectored floppies). you might add a higher storage format geometry. It would be nice to get more storage on each MDS floppy. Maybe a larger sectors size with a smaller sector count? Maybe adding 80 track drive support would be a transparent enhancement requiring only firmware driver changes. I did a 4x floppy storage increase via Rom hack to add 80 track double sided support in my Xerox 820s long ago.

I've got my MDS system at home now and will look through the schematics and documentation to see what is really feasible.

Using a tiny micro allows the possibility to bit-banged one of the drive control lines with a command semaphore to switch to perhaps 11 sectors a track instead of 10 or even 5 or 6 sector pulses for larger sector sizes. Its quite possible there is room for more data by some altered track geometry. The only hard sector floppies I recall being available were 10 and maybe 16 back in the day, so its quite possible 10 sectors was not optimal.

I'll have a better idea what track geometries are possible when I map-out a used NS floppy. Until then I'll do it the the long way via documentation and schematics.


However, I do remember working through the operations manuals and still believe that the micro just monitors MDC flags via the MDS code, and then starts reading or writing if a very crude manner. In this case the circuit simulator could be done, but only saves patching the code to do it without. It has the advantage of ease. To do switchable format geometries, obviously you'd have to modify the MDS drivers.

That auto-recalibration trick could be used in software too. Most systems won't have a CTC timer but I'll explore the MDC's schematics this weekend and see if a viable hack allows software only conversions. As I've designed real-time controllers most of my career, should be fun.

Update: NorthStar MDS Documentation:
(1) NorthStar BASIC, Ver 6, Ver 6-FPB, Copyright 1977, Rev 5, booklet, 26 pages
(2) NorthStar Disk Operating System, Ver 2 Rel 3, Copyright 1977, Rev 5, booklet, 21 pages
(3) NorthStar Micro-Disk System MDS-A, Copyright 1977, Rev 5, booklet, 31 pages
(4) NorthStar Monitor, Ver 1, Copyright 1977, Rev 1, stapled set, 16 pages
(5) Release 4 System Software Changes, June 1978, stapled set, 10 pages
(6) Release 4 Software Errata Sheet, June 30 1978, 1 page
(7) Missing: Parts List has an "OEM Manual" that I checked as included back in 1978.

Above, (3), has the good stuff:
Parts List, Theory of Operation, Block Diagram, Commands, Status Bytes, Floppy Format, Software, Interrupts, Assembly and Check-out Instructions, System Integration, Schematics.
 
Last edited:
JDallas: Sounds like some great ideas. I'm still leaning towards using 10 hard sector floppies, for authenticity sake, but it's looking like obtaining them may be difficult. So in the end your idea may be the best.

Dave2: I'm hoping to hear back soon from Athana. They've already told me they're out of them, but I'm hoping to find out if they plan on getting a new supply someday soon.

glitch: Thanks for the PM and your offer to help make a disk! I'll keep you posted on my search.

So from looking at the NST tools, it sounds like you can use them to load a DOS image into memory via a serial cable from another computer? Sounds complicated, but handy if necessary. Looks like a bunch of other useful tools in there too.
 
NorthStar MDS-A For Soft Sectored 5.25 Inch Floppies

NorthStar MDS-A For Soft Sectored 5.25 Inch Floppies

NorthStar MDS Conversion For Soft Sectored Floppies:
The best candidate for a replacing a socketed chip with a tiny circuit board is component "7C", a 74LS174 hex flip-flop with clear. That component takes the combined index/sector pulses of a hard sectored floppy, and outputs a MDC clock synchronized version. Five other signals are likewise synchronized.

The "PCB" herein refers to the tiny printed circuit board that swaps into the socket "7C" location. The PCB circuitry is two surface mount components fitting within the profile of the original 16-pin chip. The PCB contains a substitution chip for the one replaced, and also a tiny internally programmed micro-controller to do the fancy sector stuff.

The substitution chip does the same function as the original for 5 of the 6 signals passing through. One input and output pair is instead routed through the micro-controller. That micro reads the index/sector pulse from the floppy drive, and either passes them through unchanged for hard sector floppies or inserts synthesizes sector pulses after the index pulse for soft sectored floppies.

This allows the NorthStar board to operate without knowing whether a soft sector floppy is actually in use. The micro makes any disk inserted look like a hard sectored floppy with 10 sector holes. Note that any disk inserted can only be used in the standard NorthStar format, or the floppy capacity enhancements mentioned next, if implemented.

Simple concept, tiny circuit layout, and easy swap-replacement. The challenge is of course in the micro-controller selection and firmware. But it not a hard, real-time controller application.


Other Possible NorthStar MDS Floppy Capacity Enhancements:
Note that as you increase the capacity of the floppy significantly, you'll need to address the addition of more directory space in the floppy. Setting that aside for now, here's a quick review of capacity enhancements that deliver the biggest addition with the minimum modifications.

The first easy hack is in the NorthStar OS to allow it to support 80 track floppy drives instead of just the original 35 tracks. The following shows the increased capacity:
89,600 bytes per floppy at 1 head, 35 tracks, 10 sectors, 256 bytes/sector in the original.
204,800 bytes per floppy at 1 head, 80 tracks, 10 sectors, 256 bytes/sector with 80 track support.


The next possible hack would be in hardware to support double-sided 80 track drives. As the Northstar MDS doesn't use the two-sided floppy signals, a means to control a Head Select signal would be needed as well as the connections to the floppy cable. I'll examine and post on this subject in more detail later
409,600 bytes per floppy at 2 heads, 80 tracks, 10 sectors, 256 bytes/sector at 80 track, double sided.

There is still excess capacity in the floppy format but its unlikely to gain much more than another 100KB storage at the cost of more hardware modification. It gets to the point of diminishing return. That being the case, its reasonable to only implement the soft-sector hack and modify to NS OS to allow 80 tracks for 204KB capacity. The adventurous can add double-sided, to double that again to 409KB.

I'll write more about control options to set the Head Selection through the normal NorthStar controls.
 
Last edited:
JDallas: That sounds plausible, but I have to admit that it is well beyond my abilities at this point. I'm just starting to get into programming micro-controllers with my son. If you were to get it working though, I'd bet there would be quite a few Northstar MDS owners that would want to buy a chip upgrade.
 
psteichen said:
...the card is labeled MDC-A4, yet the manual for the board is labeled MDS-A...

I pulled out my MDS-A system and confirmed that the board is labeled "MDC-A4" too. The silkscreen adds, "Micro-Disk Controller" to that identification.
 
Last edited:
Good link!

I'm in luck. A generous fellow offered to sell me a portion of his personal supply of hard sector disks. I think for now I'm going to proceed using those, but the mods you guys are mentioning may come in handy down the road. These disks are getting really rare. Someone could make some $ if they could manufacture a few thousand new ones.
 
As an addendum:

The 10 hard sector disks were also used in the Heathkit H8/H17 combo. Late in the game they offered a soft sector option for the H89 that may have been called a Z-89-37.
 
Generic Hard/Soft Sector Pulse Mod

Generic Hard/Soft Sector Pulse Mod

I'm going to make a few snap-off boards for the soft/hard-sector mod I've described.

STATUS:
Tonight I'm going to do a quick little schematic and printed circuit board layout in Pads for the MSP430F200x and 74x14 TSSOPs to see if they fit within the normal chip profile of a through-hole DIP package of the existing chip on the NorthStar MDC-A4 board. If the tiny version of the MSP430 is too large, I'll look at other sparse pinout micros.


Previously I suggested replacing the 74LS174 with the snap-off board. I've decided to replace the 74LS14 instead. I had hoped to grab more signals on the '174 to add other features, but it doesn't seem worth the bother. Moving it to the 74LS14 has the advantage of making the micro's firmware a more universal solution for hard-sector controllers as 74LS14s are commonly used to read the signals from the floppy disk drive.

I looked at the North Star MDS series board: -A1, -A2, -A4, -AD, -AD3. The last two were the double density versions. The -A4 has the index+sector signal enter the '14 chip on pin 1 and out on 2. That's probably true of all the -Ax boards though I only have the -A4 schematics. In contrast the -ADx boards enter on pin 3 and out of 4. Thus it would be nice to have the board support either board type via the micro.

Single Density MDS boards (74LS14):
Ax: pin 1-->2 HOLE (index+sector)
Ax: pin 3-->4 TRACK0

Double Density MDS boards (74LS14):
ADx: pin 1-->2 (spare; not used)
ADx: pin 3-->4 HOLE (index+sector)

I'll look over some of the other hard-sector systems. They would likely use a 74LS14 in the same way, so the micro's firmware should be useful for them too, when placed on a snap-off board matching its 74LS14 pinout.

As there are six Schmitt triggered inverters on the 74LS14 chip, each gate with one input and one output, a universal solution would be to either do 6 versions of the tiny board where the micro intercepts the right inverter gate with its program, or make it jumperable via zero-ohm SMT resistors (aka a jumper). For now I'm probably just put the two NorthStar versions on the edge of each of my prototype boards.

The snap-off board will be built with Surface Mount Technology chips (SMT) using package size know as TSSOP. Two chips will be on the board, a 74x14 to to do the function of the original 74LS14 for 5 pairs of pins. That 74x14 will divert its index+sector output pin on pin of the micro - the micro will create the TTL level signal, INDEX+SECTOR. I'll use a micro that doesn't require a SMT crystal, maybe a Texas Instruments MSP430F200x. That has 10 I/O pins so I'd prefer something with less and still smaller; I'll look over several that should do this simple task.

Micro Required 2 I/O pins:
. . 1 input to read the drive's index+sector or index-only signal onto the MDC-A4. (Pin 1 of the 74LSxx?)
. . 1 output to write the sector pulses as if they came from a hard-sectored floppy. (Pin 3 of the 74LSxx?)

Micro Optional 2 I/O pins: Add two SMT LEDs to signal mode
. . 1 output to a illuminate a red LED when running in hard-sector mode
. . 1 output to a illuminate a green LED when running in soft-sector mode

As I've discovered other common hard-sector floppy hole-counts, I'll devise the algorithm to run for any given sector-count, and make 10,16 and 26 available by jumper if pins and board space allow.

Besides using the rotational speed of the last floppy revolution to recalibrate the synthetic hard-sectors, I think it should also use the last soft-sector index hole duration to recalibrate the synthetic hard-sector pulse durations. I'd rather do this on a micro that could implement it with counters and count-capture registers, but it likely loose enough that a multi-task code loop could suffice. Its tasks being roughly:

(A) On power-up:
. . (1) Initialize
. . (2) Set up Standby Mode: blinks both Sector Mode LEDs every 2 seconds (indicates board is alive)
(B) Standby Mode:
. . (1) Sleep loop supporting Standby Mode LED timing
(C) Activitity Wakup:
. . (0) Wake by a index+sector pulse.
. . (1) Setup on index-pulse inactivity time-out to return to Initilize Standby Mode.
. . (2) Set both Sector Mode LEDs ON to indicate detected index+sector activity.
. . (3) If not N additional pulses within spin-up window, return to Initialize Standby Mode.
. . (4) Sync up on Index if hard-sector pattern, else soft-sector Index only.
. . (5) Loop Timing next revolution, if in motor speed tolerance proceed
. . (6) Turn off both Sector Mode LEDs
(D) For detected soft-sector floppy:
. . (0) Turn on Soft-Sector LED (GREEN)
. . (1) Setup task to always measure index period to always recalibrate next rotation synthetic sector timing.
. . (2) Setup task to always measure index pulse duration to use as next rotation synthetic sector pulse duration.
. . (3) Loop creating sector pulses until index period out of calibration then goto Init Standby Mode.
(E) For detected hard-sector floppy:
. . (0) Turn on Hard-Sector LED (RED)
. . (1-A) either gate the index+sector pulse directly to the output pin, bypassing the micro (sleep mode), or
. . (1-B) trigger a level following output pin from the input index+sector pulse (ghost mode)
. . (2) Loop maintaining (1-x) state until index period out of calibration then goto Init Standby Mode.

ISSUE TO RESOLVE: Fast Selection of another drive under worst case situation.
(Status: Appears not to be an issue)
Definition: The situation here is when a floppy drive controller switches to another drive in mid-rotation. The mod-board doesn't know when drive select changes, but it can detect unexpected index+sector pulses appearing. Of course this only applies to floppy disk controllers designed for hard-sector floppies. The mod-board needs to assure that the controller won't start writing sectors on the newly selected drive, using the rotation remainder synthetic sector pulses.

First reason this condition never occurs is that hard-sector controllers must first fill and synchronizing sector count so that it never confuses the index pulse with a sector. It can only do that after one full rotation under the best conditions.

If a switch is made from a soft-sector drive to a hard sector drive, the mod-board will immediately detect unexpected index+sector pulses and then exit to establish the type of disk. In other words it gets out of the way quickly and works fine.

If a switch is made from soft-sector to soft-sector drives, the mod-board would continue supplying remaining synthetic sector pulses until it expects the next index pulse, if its not there, it will exit to establish the type of disk. That would deny one full revolution for the hard-sector controller to sync up on, so that's fine. The other case is the new soft sector index pulse arriving before the expect previous drive's index pulse, to which the mod-board exits as above to establish the type of disk.

This negates any problems, under the assumption of the hard-sector controller using a full revolution to sync its sector and notched index pattern. I think this is valid.

Note that it is assumed for now that synthetic sector pulses are never applied except with the index period is within rotational spec. This may violate some hard-sector controller's time-out conditions so should be considered.
 
Last edited:
I like your idea of building the sector pulse injector right into the 74LS17 socket!

I've been down a similar road with 8" belt drive Shugarts with 32 hard sectors. I tried numerous techniques for syncing with the drive's rotational rate, but sector jitter was still substantial. I tried running averages from 1 to 64 full rotations and also tried additional intra-track adjustment using running averages from 1 to 32 sector times. However, sector jitter was still outside an acceptable range.

I got to thinking that the sector jitter may actually be more predictable than random based on fixed irregularities of the hub flywheel. My next step was going to be maintaining an average per sector across multiple rotations (i.e., 32 separate averages), but I was pulled off by more "important" projects and have re-visited this one.

Keep us posted!
 
To Average or Not To Average

To Average or Not To Average

I considered averaging, its a quick calculation when you use powers of 2 samples, but the results are probably the cause of the jitter when you consider the problem this way:

(1) If a hard-sector floppy were used instead of a soft-sector floppy, the index+sector pulses are at fixed radial positions around the track and thus sectors are some duration following that event. So the pattern of sector and index pulses is fixed with only one variable, the instantaneous rotational speed.

(2) A solution for a soft-sector floppy has to assume that the speed of the motors are relatively stable over the course of 2, up-to-speed revolutions; (2/6ths of a second for 8 inch and 2/5s for 5.25). Given that, for a given index period, the next revolution should have one set of correct sector pulse patterns.

(3) Now if you induce averaging instead, you introduce variance around that correct sector pulse pattern, and thus increase the odds that they'll cause problems. That variance is the jitter. Supplying a more precise value will have less variance and the margins around it allow for some variance in the rotational speed from the last measurement.

- - -

So I conclude that the solution requires accurate timing of the previous index period and then mathematically recalculating the sector timing from that last measurement. Of course these are concurrent tasks, while one revolution is sector timed by the previous revolution, it is also measuring the current revolution for the next revolution's sector timing.

That can be done best with a micro with a counter with input pin triggered capture... can't have the code looping or polling as that adds jitter too. The counter and triggers keep it time-event synchronized, and the code sets up the next situation with the counter or events triggering it. The pulse transition timing requires automatically using a reload register value so that there is no variance in timing around the processor trying to reconfigure in at the event. Just put the next sector count in the reload register before its needed and the timing stays more precise.

Note that the mathematical, proportional timing of the sector pulses could be done two ways. You could focus on a particular drive type and sector count and build a quick look-up table for the sector timing, but taking the index duration and running it through a binary tree look-up for class ranges of significance determined by spread-sheeting the data before building the table.

However, to support the ability to do various sector counts per track, calculating the sector timing should be easy enough. Add to that the relatively slow speed of revolution and lots of processing time per sector event.
 
Last edited:
Back
Top