Announcement

Collapse

Forum Rules and Etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Rule 1: Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Rule 2: Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Rule 3: Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


Rule 4: "PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Rule 5: Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

What if IBM didn't choose the Intel CPU!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • yuhong
    replied
    Originally posted by Chuck(G) View Post
    Another pain in the rear was doing DMA on the 5150 (and the 5170 and ISA successors) that's related to the aforementioned problem. The issue is that the 8237 DMA controller has a 16-bit address space, which means that a 64KB (or 128KB) boundary crossing is going to wrap to the beginning of the 64K physical memory bank. So you have to test to see of your DMA transfer crosses that boundary if you value your system's data. The 5170 implemented 16-bit DMA by shifting the 8237 addresses left one bit, so there the magic boundary is 128K.

    Intel did introduce the 8089 I/O controller that could handle 20 bits of address, but it implemented only 2 DMA channels and required its own program space--and it was very expensive compared to the 8237.

    I don't believe that the PS/2 Microchannel systems have this issue, as they used their own IBM-unique DMA controller.
    Neither did EISA systems, I think.

    Leave a comment:


  • Chuck(G)
    replied
    Another pain in the rear was doing DMA on the 5150 (and the 5170 and ISA successors) that's related to the aforementioned problem. The issue is that the 8237 DMA controller has a 16-bit address space, which means that a 64KB (or 128KB) boundary crossing is going to wrap to the beginning of the 64K physical memory bank. So you have to test to see of your DMA transfer crosses that boundary if you value your system's data. The 5170 implemented 16-bit DMA by shifting the 8237 addresses left one bit, so there the magic boundary is 128K.

    Intel did introduce the 8089 I/O controller that could handle 20 bits of address, but it implemented only 2 DMA channels and required its own program space--and it was very expensive compared to the 8237.

    I don't believe that the PS/2 Microchannel systems have this issue, as they used their own IBM-unique DMA controller.

    When you get memory virtualization involved, where the logical address of a buffer in memory may bear no relationship to its physical address, things get interesting.

    Leave a comment:


  • Trixter
    replied
    Originally posted by Chuck(G) View Post
    One thing that really bothered me about the 8086 was the awkwardness of handling large data structures that were larger than 64K. I was surprised that Intel didn't implement a "segment add" instruction. Or even a "shift 4 bits in one cycle" instruction.
    God, yes. When I'm optimizing something for speed I almost always run into these scenarios and curse them. My solution is to use a table of segments where applicable for the former, and XLAT for the latter. I usually don't have BX free so I burn up 256 bytes in the code segment and use CS: XLAT for the shift (even with the override it's still way faster than SHx REG,CL).

    Leave a comment:


  • Chuck(G)
    replied
    Yeah, one of the things it tried to do was to keep the flags register the same Added is that the only conditional jumps on the 8086 are short relative jumps--and there are no conditional returns from subroutine. As our test, I used an easily-verifiable floating point math package--of course, it was 8080/8085 optimized like crazy, including plugging values into immediate instructions--the objective was speed, after all. It was about 3000 lines of very nasty code.

    "Fast Eddie", our sales guy offered to run a conversion and verification test at the local sales office and buy us lunch. We had a nice meal and started the job on the ISIS-II MDS 200 series there--they even had a hard disk, which was an outrageously expensive option for an MDS. Well, Ed ended up buying us dinner too and the darned thing was still crunching when we left for the night. It still wasn't done the next morning and Eddie, sensing disaster, said he'd get back to us. About 2 weeks later, after the Intel software guys had a look at the translator, Ed returned with the translated program. It was about 50% larger in size than the original 8085 version, which sort of went counter to Intel's claims for the translator.

    It could be that Intel's implementation language at the time was almost exclusively PL/M, or just sloppy implementation. We eventually decided to rewrite our code from scratch.

    One thing that really bothered me about the 8086 was the awkwardness of handling large data structures that were larger than 64K. I was surprised that Intel didn't implement a "segment add" instruction. Or even a "shift 4 bits in one cycle" instruction.
    Last edited by Chuck(G); February 25, 2013, 12:43 PM.

    Leave a comment:


  • Trixter
    replied
    I've thought of converting some 8080 programs to 8086 and it didn't look too hard -- 8086 has more registers and opcodes, and if you set CS=DS=ES then there probably isn't very much actual work to do. Any thoughts on why the 8080 to 8086 translator you used was so slow?

    Leave a comment:


  • Chuck(G)
    replied
    If you look at the 5150 and its descendents, the peripheral chips, but for the bus controller and clock generator were all 8080- or 8085- generation chips (i.e. 8259, 8237, 8259, 8255--and that was the point. At least IBM had the common sense not to use the 8275 CRT controller.

    I've long suspected that if one wanted to restrict memory to 64K, it should be possible without too much trouble to replace the 8088 with an 8085 in a 5150. You'd have to do some kludging for booting and acessing video RAM, but it shouldn't be too hard, cycle-wise.

    The original 8086 assembler ran on an 8080-equipped MDS-80 dev system. One of the first products was a 8080 to 8086 source level translator. I recall that the speed of translation was phenomenally slow. A 1000-line program was enough to kill the thing. But the point was that the whole support setup was in place and ready to go long before the PC.

    Leave a comment:


  • commodorejohn
    replied
    Originally posted by Chuck(G) View Post
    Who knows--had IBM kicked the idea around another year or two, the choices might have been quite different. But to be very clear--IBM was not the first vendor to offer an 8086-based personal computer.
    Oh, not at all - but they were the ones who made it (however unintentionally) the de facto standard.

    I dunno, I guess I just get irked by this notion that the x86 architecture descended fully-formed from the heavens to the sound of an angelic choir and lo, the voice of Charles Babbage spoke: "This is my beloved CPU, in which I am well pleased." Comes from hanging around the Amiga crowd and hearing all the people fantasizing about how it could totally take back the market it never won in the first place if it just became an x86-based Linux PC like absolutely everything else.

    Leave a comment:


  • Chuck(G)
    replied
    Intel did offer a more-or-less complete supply of chips (but for the video controller), so they offered the easy way. 16 bit bus right out of the box would have been highly desirable--and other manufacturers had done just that.

    The Zilog Z8000 was certainly a possibility--AMD had begun second-sourcing it and even set up a cooperative venture with Siemens (called Advanced Microcomputers "AMC"), but Zilog lacked the depth in the support chips. The 68000 was similarly crippled by lack of full-speed support chips.

    Who knows--had IBM kicked the idea around another year or two, the choices might have been quite different. But to be very clear--IBM was not the first vendor to offer an 8086-based personal computer.

    Leave a comment:


  • krebizfan
    replied
    Originally posted by commodorejohn View Post
    By what logic? It's not like the PC won out because of design superiority (*cough*640KB*cough*) And it wouldn't have been an issue of compatibility because there wasn't anything for it to be compatible with in the first place. x86 wasn't even close to the juggernaut it became later on; the only thing that used it at the time were some of the million zillion different microcomputers that got squashed by the PC anyway.
    640kB was a fine amount of memory. I remember reading a SHARE article that the typical 1980 mainframe had 512kB of RAM. PC lines were expected to run about 5 years and then be replaced with something new. Would anyone have expected that any PC would need more RAM than a 5 year old mainframe?

    IBM needed a CPU that was cheap enough that IBM could sell 250,000 units but also sufficiently more capable than existing 6502/Z-80 machines that users would be willing to switch. The CPU also needed a complete set of working support chips and software that could be quickly introduced. AMD, National Semi, and Zilog all had chips that were running into difficulties. Motorola had the 6809 but IBM hadn't been working with it before. Other chips, including IBM's own designs, would have cost more than IBM's planned price for the complete system. It was pretty much either 808x or do normal IBM development and get some form of very expensive workstation that ships in 1986 at the earliest.

    Leave a comment:


  • Unknown_K
    replied
    The IBM PC was a hit because it was cheap (for IBM anyway), sold by IBM (gave the cheap business computer legtitimacy with the fortune 500 of the day), completely open and documented with off the shelf parts, and backed by a huge corperation that knew how to provide support and you knew wasn't going away in a few years. It wasn't realy a superior design, just an open one. And once IBM started making a killing selling open designs they decided to come out with the PS/2 series of propreitary expensive stuff and went down hill from there.

    Its not like home users were buying this thing, and the PC Jr was a flop because IBM knew corperate needs not the home users.

    Leave a comment:


  • commodorejohn
    replied
    By what logic? It's not like the PC won out because of design superiority (*cough*640KB*cough*) And it wouldn't have been an issue of compatibility because there wasn't anything for it to be compatible with in the first place. x86 wasn't even close to the juggernaut it became later on; the only thing that used it at the time were some of the million zillion different microcomputers that got squashed by the PC anyway.

    Leave a comment:


  • Unknown_K
    replied
    Anything else they might have used would have been a flop.

    Leave a comment:


  • krebizfan
    replied
    Originally posted by lynchaj View Post
    Just think, we could have started with 6U chassis VME based 68K CPU boards with full 32 bit support from day one. I think it would have been a better world. Oh well, I guess it was never meant to be.
    IBM tried that with the 9000 lab computer. Not a success. Would the potential benefits of 32 bit be worth paying an extra $4,000 in 1982 (basically comparing dual floppy systems with 128kB of RAM roughly $6,000 for a stripped 9000 versus roughly $2,000 for an expanded PC). The magic price point for a PC was $1,000 which would be difficult to achieve as long as Motorola priced the 68000 higher.

    Leave a comment:


  • yuhong
    replied
    Yea, that was bad enough, but the really bad one (and definitely much worse than the JDA) is the "Microsoft Munchkins" and other unethical attacks on 32-bit OS/2 later on that I mentioned in my blog post.
    Last edited by yuhong; February 24, 2013, 05:48 PM.

    Leave a comment:


  • NobodyIsHere
    replied
    Hi
    IBM was a major chip manufacturer at the time. If they needed to second source the MC68000 from Motorola to meet production demands I am confident they could have negotiated a good deal similar to the one they had with Intel at the time. IBM had enormous resources that dwarfed anything that Apple, Amiga, Atari, Apollo, Sun, etc could ever hope to muster. Production capacity can be ramped up over time with enough resources I think they could have done it easily.

    Instead of the plodding development of the Intel 8088 -> 80386 with all its broken architecture I think we would have seen an accelerated 68000 to 68020 to 68030 and beyond on a similar time line if not sooner. The key would be adding an MMU into the mix early. The major difference is IBM would have used VERSAbus instead of the awful 8 bit ISA bus on the PC. The next logical progression would have been VME which is highly suited for the MC68000 and a hugely *much* better bus than the 16 bit AT ISA bus ever could hope to achieve. Modern VME bus systems are still in production and with the middle connector are at least comparable to PCI if not better.

    It is all speculation in any event but I maintain IBM really screwed up by not adopting the 68000 when they had a chance. Put a decent Sys V or BSD derivative OS on it (Xenix or AIX) and it would have smoked any competition. I think IBM lost 10 or more critical years trying to remediate the deep brokenness of the IBM PC legacy architecture. Even today, it's effects are still lingering in the background. We'll probably never be completely free of it unless we migrate to ARM or something equally drastic.

    Instead Apple semi-led the adoption of the 68000 and so screwed it up with the Mac it basically killed the architecture. I had a bit of hope for them after they fired Jobs and released the Mac II line but they managed to kill that too. And the PPC clones. Its amazing to me Apple is even still in business after the mess they made in the 1990's.

    Just think, we could have started with 6U chassis VME based 68K CPU boards with full 32 bit support from day one. I think it would have been a better world. Oh well, I guess it was never meant to be.

    Thanks and have a nice day!

    Andrew Lynch
    Last edited by NobodyIsHere; February 24, 2013, 04:32 PM.

    Leave a comment:

Working...
X