PDA

View Full Version : IBM PC 5150 BIOS Versions



modem7
August 5th, 2006, 01:44 AM
According to:
1. Microsoft article 33706
2. Various editions of Upgrading & Repairing PC's (Scott Mueller)
3. Internet sources
4. ROMs in possession
5. Information provided by members of these forums

-------------------------
04/24/81
-------------------------
ROM SIZE = 40K (U33 BIOS = 8K, U29-U32 BASIC = 8K each)
ROM U33 = 8K chip labeled with IBM part number of 5700051
ID/SUBMODEL/VERSION = FF/--/--
* Used on 16/64K motherboards.
* Only up to 544K RAM is recognisable (BIOS only reads first 4 switches of the SW2 block)

Memory map:
. = unused
b = ROM BASIC
R = ROM BIOS
------: 0---1---2---3---4---5---6---7---8---9---A---B---C---D---E---F---
0F0000: ........................bbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbRRRRRRRR
------: ........................|<-U29->|<-U30->|<-U31->|<-U32->|<-U33->|


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

Memory map:
. = unused
b = ROM BASIC
R = ROM BIOS
------: 0---1---2---3---4---5---6---7---8---9---A---B---C---D---E---F---
0F0000: ........................bbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbRRRRRRRR
------: ........................|<-U29->|<-U30->|<-U31->|<-U32->|<-U33->|


-------------------------
10/27/82
-------------------------
ROM SIZE = 40K (U33 BIOS = 8K, U29-U32 BASIC = 8K each)
ROM U33 = 8K chip labeled with IBM part number of 1501476
ID/SUBMODEL/VERSION = FF/--/--
* All 64/256K motherboards contained the 10/27/82 BIOS.
* 640K RAM is now recognisable (BIOS now reads first 5 switches of the SW2 block)
* All machines released after Mar'83 have this version of the BIOS.
* In Apr'84, IBM released a 'BIOS Update kit' for the 16/64K motherboards to update the BIOS to this version.
* Adds support for adapters that have a ROM BIOS extension (e.g. hard disk drive adapter)

Memory map:
. = unused
b = ROM BASIC
R = ROM BIOS
------: 0---1---2---3---4---5---6---7---8---9---A---B---C---D---E---F---
0F0000: ........................bbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbRRRRRRRR
------: ........................|<-U29->|<-U30->|<-U31->|<-U32->|<-U33->|

billdeg
June 14th, 2008, 11:52 AM
Using Debug commands, I have extracted three IBM PC 5150 BIOS versions. They can be retrieved here:
http://www.vintagecomputer.net/ibm/5150/BIOS_dumps/

The numbers associated with these files correspond to their IBM 5150 serial numbers. The silkscreen markings on the ROM chips are listed below (slashes separate each line).

0192562.BIN
S/N 0192562 (16/64K "A" Model)
U28 EMPTY
U29 5700019 / IBM 1981 / XE / 8220E NM
U30 5700027 / IBM 1981 / XE 8223B NM
U31 MK36905N-4 / 5700035 / 2A / IBM 1981 / D MALAYSIA / 8225
U32 5700043 / IBM 1981 / XE 8220E NM
U33 5700671 / IBM 1981 / XE8223B N M


0239462.BIN
S/N 0239462 (16/64K "A" Model)
U28 EMPTY
U29 5700019 / IBM 1981 / XE / 8231B NM
U30 5700027 / IBM 1981 / XE 8231A NM
U31 MK36905N-4 / 5700035 / IBM 1981 / MALAYSIA / 8231
U32 MK367284-4 / 5700043/ IBM 1981 / MALAYSIA / 8230
U33 AMI 8609 MAH / S68B364 / 1501476 / IBM CORP / 1981, 1983 / PHILIPPINES


1004872.BIN
S/N 10048725150 (64/256K "B" Model)
U28 EMPTY
U29 5000019 / AM92640PC / 34148 8347ZAP
U30 AM9264DPC34149 / 5000021 / 8413FPM / IBM 1981, 1983
U31 AM9264DPL34150 / 5000022 / 8411DPM / IBM 1981, 1983
U32 AM9264DPC34180 / 5000023 / 8406YPM / IBM 1981, 1982
U33 1501476 / AM9264DPC / 34146 8340ZPP

per
June 15th, 2008, 08:28 AM
Seems for me that the "A" Models used Casette Basic 1.00, while "B" models, XTs and ATs used Casette Basic 1.10.


Using Debug commands, I have extracted three IBM PC 5150 BIOS versions. They can be retrieved here:
http://www.vintagecomputer.net/ibm/5150/BIOS_dumps/

The numbers associated with these files correspond to their IBM 5150 serial numbers. The silkscreen markings on the ROM chips are listed below (slashes separate each line).
(...)

MikeS
June 15th, 2008, 10:59 AM
Seems for me that the "A" Models used Casette Basic 1.00, while "B" models, XTs and ATs used Casette Basic 1.10.
-----
Well, my PC has BASIC C1.10.

Chip markings FWIW:
(That late U32 kinda stands out)

U29: XE6359109 8446R NM (Motorola)
U30: XE6359111 8446A NM (Motorola)
U31: XE5000022 8444B NM (Motorola)
U32: 6359113 8604MAY (AMI S68B364)
U33: 1501476 8444DMM (AMI 9264DPC34184)

All copyright 1981, 1983 IBM Corp.

m

fs5500
November 26th, 2008, 06:05 AM
Hi, everybody.

I compared the each BIOS files by FC.EXE command.

The difference between Rev.1 and Rev.2 is the following attached.

I got BIOS file of Rev.1 from the internet and compared this with Rev.2

from MESS.

5700051 -- Rev.1 (8KB)

(SHA1 : f046058faa016ad13aed5a082a45b21dea43d346)
(CRC32 : 12d33fb8)

5700671 -- Rev.2 (8KB)

(SHA1 : bdb06f846c4768f39eeff7e16b6dbff8cd2117d2)
(CRC32 : b7d4ec46)

wdegroot
December 26th, 2008, 07:39 AM
the aim or every red-blooded american boy or man was to put a genuine IBM bios in his pc or xt..
at "eni" they used ibm pc's as a dedicated controller for medical testing.
pc's came back to be repaired anmd one, an xt in this case, came in with an e-propm, not a masked prom. The techs, aware of this, attempted to copy the chip. Unsucessfully, I think the difference was IBM used 2332 and the clones used a 2732 chip.
it had a different pinout.
there was a set of basic chips that could be installed in any pc/xt that had more rom sockets.
( clones up to the 8 mhz models)
But it was easier to use a program to " suck out"
the basic ( using a pc/xt ) and create a disk based exe file that was true ibm basic.

clone bios' would work in a AT,. I believe.
i HAVE SOME HERE AND WILL TRY IT.

billdeg
April 4th, 2009, 06:37 PM
I got another 5150 A rev 2 today
s/n -159618 (16/64K "A" Model)

Here are the silkscreen markings on the ROM chips for the 0159618
U28 EMPTY
U29 (M) 5700019 / (c) IBM 1981 / XE 8212 M N M
U30 (M) 5700027 / (C) IBM 1981 / XE8206A N M
U31 5700035 / (C) IBM 1981 / XE / 8208A NM
U32 (M) 5700043 / (C) IBM 1981 / XE 8211ENM
U33 (M) 5700671 / (C) IBM 1981 / XE8201C N M

This one has the ROMs from 10/81
http://www.vintagecomputer.net/ibm/5150/BIOS_dumps/
0159618.bin

It's hard to find the 16-64 boards that still have the original ROM chips in them. I have two 16-64 boards with upgraded chips. Makes sense to have done it then, but bummer from a history perspective.

Bill

Lorne
May 28th, 2009, 01:37 PM
And here's one that I got yesterday:
(Same as Billdeg's except for numbers in red font).

S/N - 0150246 (16-64KB 'A' model)

Here are the silkscreen markings on the ROM chips for the 0150246
U28 EMPTY
U29 (M) 5700019 / (c) IBM 1981 / XE 8212 M N M
U30 (M) 5700027 / (C) IBM 1981 / XE8206A N M
U31 5700035 / (C) IBM 1981 / XE /8207A NM
U32 (M) 5700043 / (C) IBM 1981 / XE 8209A NM
U33 (M) 5700671 / (C) IBM 1981 / XE8201C N M

channelmaniac
October 1st, 2009, 08:45 PM
Sorry to bring back the dead... but can you guys give me more information about the BIOS chip itself?

The image is 8k in size, but how many pins does the chip have?

If it's a 28 pin then a standard 2764 will work... but if it's a 24 pin there are a couple of different chips it could be. A common pinout for that would be what the Motorola 68764/68766 has.

Thanks!

RJ


EDIT: Never mind! It is the same pinout as the 68764/68766 and the picture here (http://www.sothius.com/images/additional/ibmpcrom.jpg)shows it's a 400ns part in the socket. :D

modem7
October 1st, 2009, 10:13 PM
and the picture here (http://www.sothius.com/images/additional/ibmpcrom.jpg)shows it's a 400ns part in the socket. :D
According to the 5150 Technical Reference, the ROMs have an access time of 250 ns and a cycle time of 375 ns.

ZOBEX
October 15th, 2009, 01:29 AM
[QUOTE=wdegroot;81470]the aim or every red-blooded american boy or man was to put a genuine IBM bios in his pc or xt..]

I was one of those red bloods. With a 4.77 xt and a NeedHams eprom burner I spent months using a program to suck out ever XT and AT bios I could find an built up a data base for lets say resale to customers wanting an upgrade. I would split and rematch across multiple eprom chips. Even rewrote some of the code for various projects. Some place I have a box full of 360k floppys just of snatched bios's.

Maybe I'll go looking for it.

k2x4b524[
December 23rd, 2009, 08:28 PM
hate to further bring back a dead post, but can one of those bioses be used to get an AT with 720kb support to support a 1440kb drive?

modem7
December 25th, 2009, 01:53 PM
hate to further bring back a dead post, but can one of those bioses be used to get an AT with 720kb support to support a 1440kb drive?
In case you are unaware, 'partial' 1.44M support can be gained by the proper use of DRIVER.SYS (launched via CONFIG.SYS). The use of DRIVER.SYS won't allow the IBM AT to boot from a 1.44M diskette.

If you need the capability to boot from a 1.44M diskette, yes, you'll need an updated BIOS. The 11/15/85 BIOS for the IBM AT supports 1.44M drives. That BIOS is at at http://members.dodo.com.au/~slappanel555/bios.htm Also there is a suitable AMI and suitable Award BIOS for the IBM AT.

If you use the 11/15/85 BIOS, you may need to use something like GSETUP (at http://members.dodo.com.au/~slappanel555/software/GSETUP.ZIP) to then set 1.44M in the CMOS setup/configuration.

mmruzek
October 26th, 2011, 03:06 PM
Question: The 10/27/1982 BIOS from IBM for the 5150 would be the logical choice for True Blue enthusiasts, but what after-market or clone BIOS for the 5 slot PC motherboard adds the most functionality? ( I have an EPROM burner and I know how to use it!) Would appreciate all inputs and points of view. Thank You, Michael.

RuudB
November 12th, 2011, 12:43 PM
I interested, I made an ASM file of the 11/08/82 BIOS for the 5160. I already enhanced it for my self by speeding up the RAM test so one hasn't to wait 'ages' :) You're free to have the sources of these and other BIOSes to create one according your own taste. You only need the old Borland TASM V3.2 to create the BINs.

Groetjes, Ruud Baltissen
www.Baltissen.org

hopper
March 20th, 2012, 04:56 AM
There's a lot of details about the three BIOS revisions here and in the wiki (http://www.vintage-computer.com/vcforum/showwiki.php?title=Systems:IBM+PC+5150), 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?

modem7
April 2nd, 2012, 03:09 PM
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

modem7
June 9th, 2012, 07:05 PM
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/misc/5150_post_and_initialisation.htm

fs5500
February 7th, 2013, 04:32 PM
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.

modem7
February 8th, 2013, 10:47 PM
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.

fs5500
February 10th, 2013, 09:04 PM
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.

Chuck(G)
February 10th, 2013, 09:51 PM
Has anyone done a simple binary compare of the BIOSes and tested if they differ only in the date?

modem7
February 10th, 2013, 10:52 PM
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.

fs5500
February 17th, 2013, 11:47 AM
>-------------------------
>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

GOLD CHIP
February 28th, 2013, 10:03 PM
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

Chuck(G)
March 1st, 2013, 08:33 AM
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.

sergey
March 1st, 2013, 11:06 AM
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 (http://www.phatcode.net/downloads.php?id=101), 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 (http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=Xi%208088). 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 (http://www.mtmscientific.com/pc-retro.html) kit. Basically a complete copy of an IBM PC
- My Xi 8088 (http://n8vem-sbc.pbworks.com/w/page/59325872/Xi%208088) project.
- SBC-188 (http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ECB%20SBC-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).

Chuck(G)
March 1st, 2013, 01:40 PM
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.

yuhong
March 1st, 2013, 01:49 PM
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.sys.att/2ciY_Z9Xsj8/S96D5XRLeRQJ

Chuck(G)
March 1st, 2013, 02:34 PM
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.

GOLD CHIP
March 3rd, 2013, 11:55 PM
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.



Sergey, your super, super kind thank you.

I agree about the data bus thing, Its going to be more complicated than simple when using pure 16-bit bus.

:confused1:

I will ask some VLSI guy whether they can burn this mess into a silicon. The plan is to put all chip except the micro and memory section on VLSI.
So the layout on the PCB would be "microprocessor", Memory, and "glue chip" very simple.

Since the RAM is using SRAM instead of DRAM, what kind of change do you thing it is appropriate?

Its got to use AT or PS2 keyboard, its too damn difficult to get XT keyboard (I've got 2 of them but I don't lend them for school use hehe)

I think I know the answer about the 8-bit ISA card, its strictly forbidden, its not pure 16-bit design.

For now, I've got several tube of 8086, several 16-bit sRAM (left over from 68K project), CPLD chip and its programmer.

BTW
I've browse through the Xi 8088 project, its really awesome, where can I get that?

sergey
March 6th, 2013, 07:23 AM
Sorry, it took me some time to reply.



I will ask some VLSI guy whether they can burn this mess into a silicon. The plan is to put all chip except the micro and memory section on VLSI.
So the layout on the PCB would be "microprocessor", Memory, and "glue chip" very simple.


While it is possible to implement all the glue logic, and possibly clock generator (8284) and bus controller (8288 ) in a CPLD, you still will need DMAC (8237), PIC (8259), PIT (8254), and keyboard controller ICs. They are way too complicated to be implemented in a CPLD. Of course you can do FPGA, but then why not implement the 8086 itself in the FPGA too?! :-)
[another question is where to get the VHDL implementation for all these ICs...]



Since the RAM is using SRAM instead of DRAM, what kind of change do you thing it is appropriate?


Using SRAM makes things easier - you don't need to implement memory refresh and address multiplexing. Just connect it to the address / data bus. You can use a couple of 512 Kbit x 8 SRAMs (like this (http://www.mouser.com/ProductDetail/Alliance-Memory/AS6C4008-55PCN/?qs=sGAEpiMZZMt9mBA6nIyysPeGHDtAZQ%252bHv1ODopTep9 8%3D)). With 16-bit you'll need to decode /BHE and A0 to generate /CS to one or both SRAMs.




Its got to use AT or PS2 keyboard, its too damn difficult to get XT keyboard (I've got 2 of them but I don't lend them for school use hehe)


Two options here:
1. Use an AT or PS/2 compatible keyboard controller - usually 8242 micro-controller with keyboard controller firmware or a specialized keyboard controller IC (e.g. VIA VT82C42N). PS/2 compatible controllers also provide mouse interface... You can refer to Xi 8088 schematic for such implementation. Note that it is not a 100% PC compatible (rather a 100% AT or PS/2 compatible), but it is compatible enough for most programs.
2. Implement XT compatible keyboard interface and use XT2AT keyboard converter (http://www.vintage-computer.com/vcforum/showwiki.php?title=AT2XT+keyboard+converter).



I've browse through the Xi 8088 project, its really awesome, where can I get that?

I still have a few Xi 8088 PCBs left, they are $25 + shipping (something like $4 in US and $13 anywhere else). PM me if you want to purchase one.

GOLD CHIP
March 6th, 2013, 10:50 PM
Sorry, it took me some time to reply.


It gives me time to think it over thoroughly.

I want this project clean and pure 16-bit design. to do with that I need to get away from "IBM PC compatibility". Hmmm why can't I think of that many years ago. stupid me.

ok.

the spec. would be

1. clean 16-bit design
2. using 8086 micro (not FPGA clone hehe) // allready have 2 tube of 8086 chips.
3. using 16-bit SRAM (I allready have the 16-bit SRAM chip)
4. all those glue logic would be in FPGA.

Question
how do we design the easiest DMA, PIC, PIT, keyboard controller (using PS2 keyboard)?

My guess is to design the address for each DMA, PIC, etc. and then call the FPGA guy to do the rest.

Question again:
How do we modified the BIOS to suit this new arrangement of glue chips.

Thank you in advance

mbbrutman
March 7th, 2013, 04:12 AM
Guys,

This thread is supposed to be a reference for BIOS versions. Please start another thread. (I will clean this thread up when that happens.)


Mike

fs5500
March 7th, 2013, 06:59 AM
Here are all IBM PC 5150's ROM BIOS and checksum (verified)
(Assume that segment of BIOS is F000. All checksum bytes are 00h)


Revision 1 (Apr.24.1981) (with Revision A 16-64K motherboard / IBM Cassette BASIC C1.00)

5700019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2700 / CRC32 : b59e8f6c) - BASIC C1.00 (1/4)
5700027.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : bfff99b8) - BASIC C1.00 (2/4)
5700035.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e8900 / CRC32 : 9fe4ec11) - BASIC C1.00 (3/4)
5700043.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ede00 / CRC32 : ea2794e6) - BASIC C1.00 (4/4)
5700051.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000e8600 / CRC32 : 12d33fb8) - BIOS (04/24/81, IBM Corp. 1981)


Revision 2 (Oct.19.1981) (with Revision A 16-64K motherboard / IBM Cassette BASIC C1.00)

5700019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2700 / CRC32 : b59e8f6c) - BASIC C1.00 (1/4)
5700027.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : bfff99b8) - BASIC C1.00 (2/4)
5700035.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e8900 / CRC32 : 9fe4ec11) - BASIC C1.00 (3/4)
5700043.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ede00 / CRC32 : ea2794e6) - BASIC C1.00 (4/4)
5700671.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000e8600 / CRC32 : b7d4ec46) - BIOS (10/19/81, IBM Corp. 1981)

Revision 3 (Oct.27.1982) (with Revision A 16-64K motherboard / IBM Cassette BASIC C1.00) -- (by Upgrade Kit)

5700019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2700 / CRC32 : b59e8f6c) - BASIC C1.00 (1/4)
5700027.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : bfff99b8) - BASIC C1.00 (2/4)
5700035.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e8900 / CRC32 : 9fe4ec11) - BASIC C1.00 (3/4)
5700043.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ede00 / CRC32 : ea2794e6) - BASIC C1.00 (4/4)
1501476.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000eb000 / CRC32 : e88792b3) - BIOS (10/27/82, IBM Corp. 1982)

Revision 3 (Oct.27.1982) (with Revision B 64-256K motherboard / IBM Cassette BASIC C1.00)

5700019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2700 / CRC32 : b59e8f6c) - BASIC C1.00 (1/4)
5700027.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : bfff99b8) - BASIC C1.00 (2/4)
5700035.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e8900 / CRC32 : 9fe4ec11) - BASIC C1.00 (3/4)
5700043.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ede00 / CRC32 : ea2794e6) - BASIC C1.00 (4/4)
1501476.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000eb000 / CRC32 : 9b791d3e) - BIOS (10/27/82, IBM Corp. 1981)


Revision 3 (Oct.27.1982) (with Revision B 64-256K motherboard / IBM Cassette BASIC C1.10)

5000019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2e00 / CRC32 : 80d3cf5d) - BASIC C1.10 (1/4)
5000021.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : 673a4acc) - BASIC C1.10 (2/4)
5000022.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e9700 / CRC32 : aac3fc37) - BASIC C1.10 (3/4)
5000023.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ef300 / CRC32 : 3062b3fc) - BASIC C1.10 (4/4)
1501476.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000eb000 / CRC32 : 9b791d3e) - BIOS (10/27/82, IBM Corp. 1981)


Revision 3 (Oct.27.1982) (with Revision B 64-256K motherboard / IBM Cassette BASIC C1.10)

5000019.U29 (Size : 8192 / Area : 6000-7FFF / Checksum-32 : 000e2e00 / CRC32 : 80d3cf5d) - BASIC C1.10 (1/4)
5000021.U30 (Size : 8192 / Area : 8000-9FFF / Checksum-32 : 000f2d00 / CRC32 : 673a4acc) - BASIC C1.10 (2/4)
5000022.U31 (Size : 8192 / Area : A000-BFFF / Checksum-32 : 000e9700 / CRC32 : aac3fc37) - BASIC C1.10 (3/4)
5000023.U32 (Size : 8192 / Area : C000-DFFF / Checksum-32 : 000ef300 / CRC32 : 3062b3fc) - BASIC C1.10 (4/4)
1501476.U33 (Size : 8192 / Area : E000-FFFF / Checksum-32 : 000eb000 / CRC32 : e88792b3) - BIOS (10/27/82, IBM Corp. 1982)

sergey
March 7th, 2013, 10:00 AM
Guys,

This thread is supposed to be a reference for BIOS versions. Please start another thread. (I will clean this thread up when that happens.)


Mike

Agree, I created a new thread (http://www.vintage-computer.com/vcforum/showthread.php?36027-8086-Based-Computer-Design) in the Vintage hardware sub-forum.

fs5500
March 23rd, 2013, 12:19 AM
I've maid simple BIOS sum program on BASIC.

10 CLS
20 DEF SEG=&HF000
30 FOR B=0 TO 7
40 GOSUB 60
50 NEXT:END
60 A=0:FOR I=&H2000*B TO &H2000*(B+1)-1
70 A=A+PEEK(I):NEXT
80 PRINT "SUM";B;"=";A
90 RETURN

To check BIOS version, run this statement on BASIC

PRINT "BIOS version is";:FOR I=0 TO 7:PRINT CHR$(PEEK(&HFFF5+I));:NEXT

Normal value must be following

SUM 0 = 2088960 (default, but variable, 0000-1FFF)
SUM 1 = 2088960 (default, but variable, 2000-3FFF)
SUM 2 = 2088960 (default, but variable, 4000-5FFF)
SUM 3 = 927488 (BASIC C1.00, 6000-7FFF), SUM 3 = 929280 (BASIC C1.10, 6000-7FFF)
SUM 4 = 994560 (BASIC C1.00 or C1.10, 8000-9FFF)
SUM 5 = 952576 (BASIC C1.00, A000-BFFF), SUM 5 = 956160 (BASIC C1.10, A000-BFFF)
SUM 6 = 974336 (BASIC C1.00, C000-DFFF), SUM 6 = 979712 (BASIC C1.10, C000-DFFF)
SUM 7 = 951808 (BIOS version 04/24/81 or 10/19/81, E000-FFFF), SUM 7 = 962560 (BIOS version 10/27/82, E000-FFFF)

fs5500
February 18th, 2015, 03:07 AM
http://i150.photobucket.com/albums/s107/ebigon/IBM%205150%20A%20Feb%202015/DSC_0292_zps01aad569.jpg

Now Rev.1 (04/24/84) is verified!

ropersonline
July 17th, 2015, 11:50 AM
I've [made a] simple BIOS sum program on BASIC.

Thank you very much for this; that's really useful, especially with a machine that may not have a functioning floppy, but that definitely has ROM BASIC. :)

fs5500
October 14th, 2016, 09:06 AM
http://i150.photobucket.com/albums/s107/ebigon/IBM%205150%20A%20Feb%202015/DSC_0292_zps01aad569.jpg

Now Rev.1 (04/24/84) is verified!

http://i.imgur.com/Vpd21LV.png

I fixed the link.