[HN Gopher] The Microsoft SoftCard for the Apple II: Getting two...
       ___________________________________________________________________
        
       The Microsoft SoftCard for the Apple II: Getting two processors to
       share memory
        
       Author : zdw
       Score  : 99 points
       Date   : 2025-11-05 02:58 UTC (20 hours ago)
        
 (HTM) web link (devblogs.microsoft.com)
 (TXT) w3m dump (devblogs.microsoft.com)
        
       | systemswizard wrote:
       | Would be cool if Microsoft would focus on engineering instead of
       | blog posts
        
         | johndoe0815 wrote:
         | Raymond Chen's blog posts are one of the best things coming out
         | of Microsoft.
         | 
         | As a Unix person for decades, for me it's great to see his
         | incredibly experienced and insightful view on software
         | development in general and specifically OS development at
         | Microsoft and to read about his experience with all these nice
         | processor architectures no longer supported by NT.
        
         | ZeroConcerns wrote:
         | Personally, I prefer cool blog posts over "add another Copilot
         | button that does nothing to something that did not require it
         | anyway" or "paper over a perfectly fine API with a newer
         | version that has 60% of the functionality and 120% of the bugs"
         | (which is what Microsoft engineering mostly seems to boil down
         | to these days), but you be you...
        
         | kryptiskt wrote:
         | The Old New Thing is very much engineering. Any contemporary
         | engineers who don't think they have anything to learn from the
         | experience of the past as recounted in the blog are doomed to
         | repeat the same missteps.
         | 
         | And much as one would hope that Raymond Chen's blogging is
         | holding up any important Microsoft initiatives, I very much
         | doubt that it's much of a distraction for a megacorporation.
        
           | asdefghyk wrote:
           | RE "....Any contemporary engineers who don't think they have
           | anything to learn from the experience of the past....." 100%
           | correct
        
           | WorldMaker wrote:
           | Also, you should be able to still search for Raymond Chen's
           | blog process posts, but part of why he has nearly a blog post
           | every work day for quite so many years is that he built up a
           | huge queue, adds to the queue only during relatively free
           | time, and has automated the posting of that queue. It's also
           | seems to relate to why so many are multi-part deep dives.
           | (This post also ends with a tease for the next post.) It was
           | often probably only one root investigative journey related to
           | a Windows support question investigation or user story
           | writeup or documentation was needed to be written or some
           | other TIL rabbit hole was found, but breaking it into
           | multiple parts keeps each part easy to read individually and
           | also keeps the queue full for weeks where things are much
           | busier.
        
         | mikkupikku wrote:
         | They don't have an engineering problem, they have a management
         | problem which ruins and obstructs anything good their engineers
         | might try to make.
        
         | mschaef wrote:
         | He's been blogging continuously for close to twenty years - he
         | was one of the original wave of Microsoft bloggers (along with
         | Larry Osterman, Michael Kaplan, and several others I can't
         | remember).
         | 
         | It is very much an engineer's engineering blog, and written by
         | someone deeply in the trenches.
        
         | ezconnect wrote:
         | They have been blogging about engineering before blogging was
         | mainstream. You have to subscribe to their CD of MSDN articles
         | to appreciate how info they put out for their products because
         | they used to be developer centric.
        
       | johndoe0815 wrote:
       | I wonder if anyone ever used the Z80 Softcard or one of its many
       | clones to run something different than CP/M?
        
         | pontifk8r wrote:
         | I got MP/M working on the softcard back in the day. Never
         | really had an application for it though.
        
       | JSR_FDED wrote:
       | I remember my dad using the Z80 Softcard to run WordStar, which
       | was astonishingly powerful considering how long ago it was king
       | of word processors. I'd be surprised if some of the control keys
       | hadn't influenced our editors, although as a Vim user I can't
       | immediately think of any.
        
         | jhbadger wrote:
         | Turbo Pascal and other Borland products used to use keys based
         | on WordStar. These days JOE (Joe's Own Editor) still uses a
         | similar keyset.
        
           | mschuster91 wrote:
           | > These days JOE (Joe's Own Editor) still uses a similar
           | keyset.
           | 
           | joe is definitely among the easiest CLI/TUI editors there
           | are.
        
             | icedchai wrote:
             | Back in the 90's, "pico" was always the go-to editor for
             | those who didn't want to mess around with emacs or vi.
        
               | technothrasher wrote:
               | Jove was the big editor on campus at the University of
               | Rochester back in the very early 90's, mostly because
               | Jonathan Payne, who wrote it, attended the school. When I
               | got there I pushed for Joe adoption because it was a
               | simpler editor for the less geeky undergraduate users to
               | use. Pico never really was a phenomenon there at the
               | time.
        
             | EvanAnderson wrote:
             | I remember finding joe back in the 90s, having come to
             | Linux from mainly DOS, and bring overjoyed. The little Unix
             | I'd used up to that point (mainly Xenix and a little SCO)
             | had me using ed, which was enough like old DOS EDLIN that I
             | could manage. When I found myself in vi I'd just hang up
             | the modem because I never could figure out how to get out
             | of it. >smile<
        
         | ErroneousBosh wrote:
         | WordStar was basically all we needed, and it still is.
         | 
         | Imagine if you had something that small and powerful today.
        
           | gapan wrote:
           | > WordStar was basically all we needed, and it still is. > >
           | Imagine if you had something that small and powerful today.
           | 
           | I completely agree with the first part. But why do you think
           | we don't have that today, if we choose to do so?
        
             | flenserboy wrote:
             | 1. there is no longer a market for certain sorts of
             | software, whether due to market dominance (Word), or the
             | likely market size being too small to bother with.
             | 
             | 2. FOSS has dropped into Code Reuse Mode*, & getting out of
             | that is going to require motivated individuals to build
             | their own, entirely new versions. LibreOffice is Good
             | Enough for most users, so why go to all the effort of
             | starting from ground level when a fork & reskin will do?
             | 
             | one would hope that FOSS would lead to having cool,
             | alternate approaches to particular use problems (as in the
             | old days, when there were myriad word processors on the
             | market -- XyWrite, WordPerfect, WriteNow, Word, etc.,
             | etc.), but Good Enough means that attention can be put on
             | more interesting problems. what we're left with is a
             | mediocre mass of applications.
             | 
             | *which is why nearly every alternate OS ends up feeling
             | like Linux with missing programs & weird commands, so why
             | not just use Linux? we're going to be stuck in a rut for a
             | long time to come.
        
               | yjftsjthsd-h wrote:
               | > FOSS has dropped into Code Reuse Mode _, & getting out
               | of that is going to require motivated individuals to
               | build their own, entirely new versions
               | 
               | I don't necessarily disagree that there are some issues
               | in the ecosystem, but I don't think that's the problem.
               | For starters, I don't think anyone _is* forking
               | LibreOffice and throwing on a layer of paint? And when I
               | need a word processor, I personally prefer AbiWord, which
               | is its own thing.
               | 
               | In particular,
               | 
               | > _which is why nearly every alternate OS ends up feeling
               | like Linux with missing programs & weird commands, so why
               | not just use Linux? we're going to be stuck in a rut for
               | a long time to come.
               | 
               | This feels backwards. Alternatives tend to present a
               | similar interface _without* sharing code. In fact, even
               | just on Linux I'd argue we have a rather lot of
               | (re)implementations of the same things: Consider that we
               | are in a position where Debian is shipping GNU coreutils,
               | Ubuntu replaced them with a rust version (uutils), and
               | Alpine has been happily shipping busybox for years
               | (AFAIK, as long as it's existed).
        
             | philipallstar wrote:
             | > But why do you think we don't have that today, if we
             | choose to do so?
             | 
             | Network effects.
        
           | fragmede wrote:
           | https://archive.org/details/wordstar_202310
        
       | mimsee wrote:
       | "According to Wikipedia..." aargh Wikipedia is not the source!
        
         | ktallett wrote:
         | I mean Wikipedia is referenced and well sourced so it is a
         | perfectly valid source in this day and age. I read papers
         | weekly and they are full of more lies or dishonesty than
         | Wikipedia nowadays where there is a desire to publish often.
        
         | immibis wrote:
         | Maybe in 2005, but in 2025, Wikipedia is more reliably accurate
         | than many more-official-sounding sources.
        
       | whobre wrote:
       | Cool post from Raymond as usual!
       | 
       | I'd like to add that the hardware for the SoftCard was designed
       | by Tim Paterson at SCP about the same time he was writing the
       | future MS-DOS
        
         | mrandish wrote:
         | I've never met Raymond but based on his posts, I have a fantasy
         | that Microsoft would make him "Benevolent Dictator For Life" of
         | Windows desktop OS. At this point, it's the only thing that
         | might save Windows 11 as a daily desktop operating system for
         | power users.
        
       | raw_anon_1111 wrote:
       | Years later. the Apple Dos Compstibility Card (code named
       | Houdini) could do the same thing. It had a 486DX/2-66 and a Sound
       | blaster card on board. By default it shared the host Mac's memory
       | and you could run both simultaneously. But it wasn't a great
       | experience on either side. They both ran slower
       | 
       | Alternatively, you could put up to a 32MB RAM SIMM directly on
       | the card.
       | 
       | Now that I think about it, my first Mac did the same thing with
       | the Apple //e card.
        
         | PAPPPmAc wrote:
         | I find hosted/hybrid machines particularly fascinating, so I
         | have a 6100/66 DOS with a Houdini II Nubus card and a
         | Education-market LC with the Gemini-based Apple IIe PDS card
         | that I've collected over the years.
         | 
         | They are ...weird... machines.
         | 
         | Both have a (different) extremely bespoke Y cable that are
         | almost required, such that if you find a card separated from
         | the cable, you probably shouldn't pay much for it.
         | 
         | The IIe card has a little lag in the video circuitry compared
         | to the real thing (at least in a first gen LC host, apparently
         | that problem goes away if you stick it in a faster machine with
         | a 24-bit PDS slot).
         | 
         | Coaxing the Houdini II to boot things that are not
         | fundamentally MSDOS is always a good way to throw away a couple
         | hours, but it does a great job of convincing anything up to
         | Win95 that it's a PC. Performance is absurdly better with
         | dedicated RAM.
         | 
         | There are a couple other things in the family, the MacCharlie
         | and AST Mac86/Mac286 products for bolting PC hardware onto
         | various Macs, and the later OrangePC cards (they ended up with
         | the IP from both Apple and ASTs offerings). The apex of "weird
         | hosted computers you can stick in a Mac" are probably the
         | MacIvory (LISP machine on a NuBus card) products, but those are
         | "costly and rare," and are infamously balky even if you do get
         | the hardware (...and I just don't enjoy Lisp).
         | 
         | Sun had a SunPC/SunPCi line in the same vein that will bolt a
         | PC-on-a-card into various SPARC hosts.
         | 
         | Commodore had that first-party Sidecar product with a PC-XT in
         | a box for Amigas, and there was ShapeShifter that would let you
         | fake a Mac semi-native on a 68k Amiga. Likewise DayDream
         | (recently updated into DarkMatter) to run a Mac environment on
         | a 68k NeXT host, both of which "needed" Mac ROMs attached on a
         | dongle for license reasons.
         | 
         | MAE is emulation, but it was an Apple-blessed way to run MacOS
         | hosted on contemporary Unix workstations of the early 90s,
         | which is sort of the opposite. I've managed to prod it onto a
         | (real) PA-RISC/HPUX host, and (emulated, because my SS20 has
         | been super balky as long as I've had it) SPARC/Solaris host
         | just for sport - I'm pretty sure it was built out of
         | decapitated A/UX parts and an emulator when A/UX4 didn't
         | happen.
         | 
         | I'd like to round out my set with at least a IIe with a Premium
         | Softcard IIe at some point, but I'm not willing to pay ebay
         | prices for any of that stuff.
        
           | raw_anon_1111 wrote:
           | Both the Apple LCII with the Apple //e card, 5-1/4 drive for
           | it and the Apple //e joystick and the PowerMac 6100/60 with
           | the DOS Compatibility card exists somewhere in my parent's
           | house.
           | 
           | I have no idea where my 5-1/4 disks are. But I know where the
           | 3-1/2 disks are for my Mac. They aren't in the attic. They
           | are in my childhood bedroom.
           | 
           | My old Apple //e though is lost forever.
           | 
           | I don't have any real sentimental attachment to the hardware.
           | If anything, i am going to eventually take the time to rin
           | emulators on my Mac.
           | 
           | Since the 6100/60, I've only bought them three Macs - a G4
           | Mac Mini, an Intel Core 2 Duo Mac Mini and my current M2
           | MacBook Air. The rest have been cheap PCs. I don't really use
           | my personal computer for much of anything.
        
       | thristian wrote:
       | Steve Wozniak was incredibly foresighted when designing the Apple
       | II, to make sure that expansion cards could disable the default
       | ROMs and even disable the CPU, making this kind of thing
       | possible. The article mentions a chunk of memory "used by
       | peripheral devices"; every expansion card got its own slice of
       | the address space, so you could plug a card in any slot and it
       | would Just Work (maybe you'd have to tell software what slot the
       | card was in). I was very disappointed when I "upgraded" to a 386
       | and suddenly cards had to be manually configured to non-
       | conflicting IRQs and I/O addresses.
        
         | wslh wrote:
         | Clearly Steve Wozniak was a very unique [technical and geeky]
         | guy at that time. Thinking about interoperability at that time
         | was prophetic.
        
           | cbm-vic-20 wrote:
           | I woldn't go so far as to say it was "prophetic".
           | Contemporary DEC PDP-8 (OMNIBUS) and PDP-11 (UNIBUS / QBUS)
           | systems have a similar approach to "interoperability", where
           | cards for peripherals were also mapped into the machine's
           | address space. It was great that Woz saw the utility of this
           | and brought it into the homebrew/microcomputer design.
        
           | tasty_freeze wrote:
           | I think it was more driven by his own desire to not limit
           | what future hardware hacking he wanted to do with this
           | computer he just designed.
        
         | kurlberg wrote:
         | I don't think this is entirely due to Wozniak. Early "home"
         | computer systems were based on connecting cards to a bus (eg
         | the S-100 bus), eg. with one card supporting the CPU, another
         | RAM, a third for disk drive, video card etc, etc. The cards
         | where then memory mapped, presumably you controlled the memory
         | mapping by setting jumpers. (I guess you're saying that Apple
         | II managed this automatically?) Of course the full story might
         | be a bit more complicated: 6502 and 6800 used memory mapped
         | I/O, whereas 8080 (and Z80?) had certain I/O pins coming out of
         | the CPU.
        
           | raw_anon_1111 wrote:
           | Memory mapping happened automatically. Each card was mapped
           | based on the slot it was in. $C000 - $C700 I believe with
           | each slot assigned 256 bytes.
        
             | kot_manul wrote:
             | You're correct; slot 6 for instance is $C600. If you
             | crashed to the system monitor you could boot a disk by
             | entering C600G (with the 'G' standing for 'go to').
             | 
             | IIRC the disk controller had firmware that loaded the first
             | 256 byte sector from disk into memory.
        
               | Dwedit wrote:
               | If you crashed to the monitor, you could hit Ctrl+B and
               | get back to BASIC, then type IN#6 to boot the disk.
        
               | Joe_Cool wrote:
               | Yeah. It was neat. But it rebooted in under a second so a
               | complete crash was no biggie.
               | 
               | RAM wasn't even cleared so usually no (or limited) data
               | loss.
               | 
               | I thought it was PR#6 (redirect output) to boot from the
               | disk controller in slot 6. I wonder what redirecting
               | input would do.
        
               | raw_anon_1111 wrote:
               | That was it at the AppleSoft BASIC prompt (or IN#6). But
               | the parent poster commented on how to do it from
               | assembly.
        
               | Joe_Cool wrote:
               | There is an even quicker way from the monitor:
               | 
               | 6 CTRL+P
               | 
               | Will instantly divert output to slot 6. (and boot the
               | disk if there is hardware there)
        
               | Polizeiposaune wrote:
               | Both worked to start a boot from the disk controller in
               | that slot.
        
         | Joe_Cool wrote:
         | And if something didn't work he included a complete debugger
         | inside "Apple II Machine Language Monitor" in ROM so you could
         | always just disassemble and poke at things, pipe disassembly to
         | the printer, read memory, change code, add own macros to CTRL+Y
         | and rerun stuff. All that without extra software or a massive
         | pile of printed assembly.
         | 
         | from BASIC:                 CALL -151 (short for CALL 65385,
         | but BASIC can't handle unsigned INT so that wouldn't work)
         | F666G
         | 
         | and the machine is your playground.
        
         | TMWNN wrote:
         | >to make sure that expansion cards could disable the default
         | ROMs and even disable the CPU, making this kind of thing
         | possible.
         | 
         | Today we would call this bus mastering, yes?
        
       | Mountain_Skies wrote:
       | One of the biggest disappointments of the 8-bit era was the
       | Commodore 128 not being able to use both the 8502 and Z80 CPUs in
       | some kind of coprocessor setup.
        
         | timbit42 wrote:
         | The Commodore 128D has two 6502 CPUs. One is in the floppy
         | drive and you can run software on it while the main 6502 ran
         | something else.
        
           | mschaef wrote:
           | That derives logically from the way Commodore implemented
           | disks. If you bought a 1540 or 1541 (or any other Commodore
           | drive) for a C-64 or VIC-20, it had an onboard 6502 to run
           | the disk drive. The interaction between the computer and the
           | disk drive was somewhat similar in concept to fetching a file
           | from a network server.
           | 
           | This could be useful to save on costs in computer labs... my
           | grade school used multiplexer boxes to share a single 1541
           | across four C-64's.
        
             | Joe_Cool wrote:
             | It was always awkward to do low level disk stuff by
             | basically "remoting" into the drive to execute code.
             | OPEN 1,8,15,"N:NEWDISK,01":CLOSE 1
             | 
             | was always a weird way to format a floppy...
        
               | mschaef wrote:
               | Knowing what I know now, I'd have appreciated it much
               | more than I did at the time. (Also, fixing the link rate
               | on the C64 would've been nice too.)
        
           | rasz wrote:
           | 128D had 3 cpus :)
        
           | GlenTheMachine wrote:
           | I wrote code to do this between a C64 and a 1541 disk drive
           | when I was in high school. It got me to the international
           | science fair and (probably) earned me a full tuition
           | scholarship for undergrad.
        
       | user3939382 wrote:
       | This is great, I'm building new machines on the 6502 and can use
       | this. Thanks.
        
       | talkingtab wrote:
       | I bought an Apple II and then a SoftCard. I was trying to learn
       | 'C' and there was a compiler on CPM (Borland) but not on the
       | Apple II.
       | 
       | It is always hard to go back and understand what it was like
       | _before_ an event. Like the Velvet Revolution. But at the time I
       | was working on an IBM 360, mostly doing Fortran for scientists
       | running anemometer simulations. The center for this activity was
       | the person in charge of the 360 who could dole out time on the
       | computer.
       | 
       | The power dynamic was something I did not really notice, but in
       | retrospect this was frustrating for the mathematicians/scientist
       | trying to run simulations. They had to queue up and wait.
       | 
       | Then one day a mathematician brought in an Apple II running
       | VisiCalc. His own personal computer. He ran his simulations on
       | that.
       | 
       | It was like our small world trembled as the tectonic plates of
       | technology shifted. The power shifted just in that one instant.
       | It was cool - how we saw the world changed in one instant.
        
       | Dwedit wrote:
       | Ooh, the Z80 refresh line. You can have a program that writes to
       | the R register in a loop and prevent the refreshes from
       | happening.
        
       | LarsDu88 wrote:
       | It was so much easier to do hardware shenanigans with these old-
       | school chips where the pins on these breadboardable chips
       | actually corresponded to memory address bits.
        
       ___________________________________________________________________
       (page generated 2025-11-05 23:02 UTC)