Announcement

Collapse

Forum 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.


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.


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.



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.


"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.

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

IBM PC 5150 BIOS Versions

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    There's a lot of details about the three BIOS revisions here and in the wiki, but not much information about motherboard revisions. The wiki article only says that there were two hardware versions (16/64K "A" and 64/256K "B"), but it looks like there were several versions of each type. I have two 64/256KB 5150s and they have completely different motherboards.

    The first is from November 1983 and has "1501480 XM" written on the motherboard. There is a space between the parity bit and Bit 0 for all four RAM banks.
    The second is from October 1984 and clearly states "P/N 6137399". The is no space between the nine RAM chips in each bank.

    1501480 XM and 6137399 seem like very different part numbers. Is there a list anywhere of part numbers for 16/64KB and 64/256KB 5150 motherboards?

    Comment


      #17
      Like myself, others have discovered that the 10/27/82 BIOS for the 5150 has a requirement for a minimum of four banks of motherboard RAM.
      That requirement is contrary to IBM's documentation.
      I've started reseaching why the requirement exists, and documenting the results at http://www.minuszerodegrees.net

      Comment


        #18
        The 10/27/82 revision of the 5150 BIOS has a bug related to XT-class hard disk controllers (if controller added).

        If the ROM on that controller is corrupt (different from 'dead'), then instead of the error code of "C800 ROM" being displayed, there will be heard 1 long beep then 2 short beeps (which suggests an MDA/CGA video related problem).

        Details at http://www.minuszerodegrees.net/5150...ialisation.htm

        Comment


          #19
          Hi.

          I found Revision 3 (10/27/82) version exists as 3 kinds.

          1) BIOS with IBM BASIC C1.00 (BIOS - 1501476 COPR. IBM 1981 / Checksum : 00, value of FFFFh is 78h)
          2) BIOS with IBM BASIC C1.10 (BIOS - 1501476 COPR. IBM 1981 / Checksum : 00, value of FFFFh is 78h)
          3) BIOS with IBM BASIC C1.10 (BIOS - 1501476 COPR. IBM 1982 / Checksum : 00, value of FFFFh is 77h)

          Of course they're dumped correctly.
          I have all of them.
          Last edited by fs5500; February 8, 2013, 07:22 AM.

          Comment


            #20
            Originally posted by fs5500 View Post
            I found Revision 3 (10/27/82) version exists as 3 kinds.

            1) BIOS with IBM BASIC C1.00 (BIOS - 1501476 COPR. IBM 1981 / Checksum : 00, value of FFFFh is 78h)
            2) BIOS with IBM BASIC C1.10 (BIOS - 1501476 COPR. IBM 1981 / Checksum : 00, value of FFFFh is 78h)
            3) BIOS with IBM BASIC C1.10 (BIOS - 1501476 COPR. IBM 1982 / Checksum : 00, value of FFFFh is 77h)
            This is the third revision BIOS for the 5150. It is dated "10/27/82" in code, and has "1501476" printed on the top of the chip.

            What fs5500 is bringing our attention to, is that there are two versions of the third revision BIOS for the 5150.

            The difference is in the year that appears in the copyright string at the start of the ROM:
            1. "1501476 COPR. IBM 1981"; or
            2. "1501476 COPR. IBM 1982"

            As expected, the checksum byte (last byte) in the ROM is different also.

            To verify what fs5500 wrote, I inspected the eight 1501476 chips that I have access to.
            Of those:
            * Three are "1501476 COPR. IBM 1981" ones, and have "1982" printed on their top;
            * Five are "1501476 COPR. IBM 1982" ones, and have "1981, 1983" printed on their top.

            Comment


              #21
              Thanks modem7.

              This is only possibility.

              BIOS with IBM BASIC C1.00 (BIOS - 1501476 COPR. IBM 1982 / Checksum : 00, value of FFFFh is 77h)

              --> In this case, any user may upgrade (exchange) U33 ROM chip on Rev.1 or Rev.2 motherboard.
              It is also possible to be updated with IBM PC 5150 BIOS Upgrade kit.

              Comment


                #22
                Has anyone done a simple binary compare of the BIOSes and tested if they differ only in the date?

                Comment


                  #23
                  Originally posted by Chuck(G) View Post
                  Has anyone done a simple binary compare of the BIOSes and tested if they differ only in the date?
                  Yes, I did that. Different in only the year string and in the checksum byte.

                  Comment


                    #24
                    >-------------------------
                    >10/19/81
                    >-------------------------
                    >ROM SIZE = 40K (U33 BIOS = 8K, U29-U32 BASIC = 8K each)
                    >ROM U33 = 8K chip labeled with IBM part number of 5700671
                    >ID/SUBMODEL/VERSION = FF/--/--
                    >* Fixed a couple of minor display bugs.

                    I've checked about "Fixed a couple of minor display bugs."
                    I think it is related with font of CHR(4) on IBM PC 5150 Rev.1 (04/24/81)

                    Charactor 4 Font from IBM PC 5150 Revision 1 (04/24/81)

                    http://www.mediafire.com/?hx2ts944uq56ovr


                    Charactor 4 Font from IBM PC 5150 Revision 2 (10/19/81)

                    http://www.mediafire.com/?lfiooocq053zm2x


                    I've compared two bioses from 1A6E (F000:FA6E) to 1E6D (F000:FE6D)

                    Only 1 byte is different from each other at 1A95 (F000:FA95)

                    Rev.1 : 08h / Rev.2 : 00h

                    08h must be incorrect, 00h is right.

                    I've tested in PCE (IBM 5150) emulator with Rev.1 (BASIC Mode)
                    Screen is changed to 1 (40x24 mode with graphic)

                    http://www.mediafire.com/?sqz9wicbxfvzfub

                    A font of Character 4 must be strange.

                    But if you change SCREEN 1 to SCREEN 0 (Text Mode), the font is shown correctly.

                    http://www.mediafire.com/?odthb88vcs7ndb1

                    I think this must be from CGA font ROM.
                    Anyway, Rev.1 BIOS has a minor bug.
                    But I think it is Not bad dumped, because checksum byte is correct and source code of IBM PC 5150 is shown as 08h.

                    http://www.classiccmp.org/cini/files/PCBios.ASM

                    Comment


                      #25
                      8086 , ibm compatible

                      Hi all,

                      I want to build 8086 based computer with 16-bit ISA bus, compatible with IBM 5150 or 5160. this is for educational purpose only.

                      Reason, 8086 is 16-bit computer, so I want it build with 16 bit ROM and SRAM. I hate swapping 8-bit data around.

                      This make the design straight forward.

                      QUESTION:

                      Can I read BIOS from original BIOS chip in IBM 5150 and insert it to 16-bit EEPROM.
                      I have 2 IBM 5150, one with cassette port and the other doesn't have it.

                      IF I can't do that, is there some free BIOS which I can program into 16-bit EEPROM.

                      Thank you in advance

                      Comment


                        #26
                        There's no practical reason why an 8-bit BIOS won't work on a 16-bit card. But I suspect that the width of the PROM bus is going to be the least of your problems.

                        In particular, You will need to observe the rigamarole that goes on when odd addresses are accessed (gate them to the lower part of the bus) to emulate the 8088 BIU operation. Look to the 5170 logic for that.

                        Comment


                          #27
                          Originally posted by GOLD CHIP View Post
                          Hi all,

                          I want to build 8086 based computer with 16-bit ISA bus, compatible with IBM 5150 or 5160. this is for educational purpose only.

                          Reason, 8086 is 16-bit computer, so I want it build with 16 bit ROM and SRAM. I hate swapping 8-bit data around.

                          This make the design straight forward.

                          QUESTION:

                          Can I read BIOS from original BIOS chip in IBM 5150 and insert it to 16-bit EEPROM.
                          I have 2 IBM 5150, one with cassette port and the other doesn't have it.

                          IF I can't do that, is there some free BIOS which I can program into 16-bit EEPROM.

                          Thank you in advance
                          First of all to answer your question, there is the XT BIOS by Anonymous, which is as far as I can tell is pretty popular for clone XT systems.
                          I wrote my own BIOS, which is IBM PC compatible, but also supports many features from AT and PS/2 (RTC, AT keyboard, PS/2 mouse, support for HD/ED floppy drives). You can find the source code and binaries here. Note that this BIOS will not work on the original PC or XT, at least because it requires AT keyboard and doesn't configure DMA to perform DRAM refresh.

                          Now I would like to question your idea of building 8086 based system

                          It is completely possible to build a 8086-based system with 16-bit SRAM and ROM. The memory part is the least trouble just use 2 chips to get 16-bit data width. You can also put 8-bit I/O devices without using A0 address line (using A1) instead, and use only even addresses to access them.
                          But it is impossible to implement an IBM PC compatible system without implementing proper data bus steering logic. That is because in IBM PC compatible systems:
                          - All the on-board I/O (Keyboard/8255 PPI, 8259 PIC, 8237 DMA, and so on) is using 8-bit data bus and steering logic will be required to access odd I/O addresses.
                          - ISA cards can have 8-bit memory, and many have 8-bit I/O.

                          So you have several choices here:
                          - You can implement a non-IBM PC compatible 8086 system. But in this case I see little reason for using 8086 CPU (unless you happen to have one and really want to put it in use). You could use a 80186 instead, and enjoy multiple peripherals it has on the chip, or use 80286 (or perhaps even 386SX/386EX) and get a more speedy system. The IBM PC compatible BIOS will not work on such system, at least not without serious modifications.
                          - You can implement an IBM PC compatible system, implementing bus steering logic (which is quite complex). There are a few IBM compatible PCs that have done that: Olivetti M24, ES1840/ES1841, IBM PS/2 models 25 and 30. I think I saw Olivetti M24 schematics on the net - and it is considerably more complicated than IBM PC one.
                          - You can use 8088 processor, which makes building IBM PC compatible system much easier.

                          In case you just want to build an x86 computer, you might want to check the following:
                          - PC Retro kit. Basically a complete copy of an IBM PC
                          - My Xi 8088 project.
                          - SBC-188 project. Much more simple than previous two, yet partially IBM PC compatible (as long as the program uses BIOS/DOS API to access the hardware).
                          Last edited by sergey; March 1, 2013, 12:20 PM.

                          Comment


                            #28
                            One other consideration--if you are set on using 16-bit cards, bear in mind that these come in two flavors.

                            There are those that were made to function in either 8 or 16-bit slots (several NICs and display cards)--they're okay. Then there were those that would work in 16-bit slots only (e.g. disk adapters, SCSI cards, etc.) You'll find that very often, their extension ROMs use the 80186 instruction additions and that an 8086 won't execute the code. You can, however, substitute a NEC V30 to accommodate those.

                            Comment


                              #29
                              Originally posted by sergey View Post
                              I think I saw Olivetti M24 schematics on the net - and it is considerably more complicated than IBM PC one.
                              And not exactly correct either:
                              https://groups.google.com/d/msg/comp...8/S96D5XRLeRQJ

                              Comment


                                #30
                                Yeah, we "rediscovered" this 6300 quirk when trying to get the XT-CF going in 16-bit mode on a 6300--all the bytes were swapped. The answer was to conduct our 6300-to-CF traffic in 8 bit mode. Fortunately, 8 bit mode is a non-optional requirement for CF cards, unlike PATA drives.

                                The 6300 bus converter logic is far from simple.

                                Comment

                                Working...
                                X