Starting work on disambiguating PCjs the emulator from PCjs the project/website; the emulator will become PCx86

This commit is contained in:
Jeff Parsons 2016-05-16 20:53:57 -07:00
commit 288f28055d
1519 changed files with 16242 additions and 6939 deletions

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,168 @@
F000:002C @ POST1
F000:00A6 @ POST1_TEST01 ; TEST.01: 286 PROCESSOR TEST (REAL MODE)
F000:01EE @ POST1_TEST02 ; TEST.02: VERIFY CMOS SHUTDOWN BYTE
F000:0213 @ POST1_TEST03 ; TEST.03: ROS CHECKSUM TEST
F000:0225 @ POST1_TEST04 ; TEST.04: 8253 CHECK TIMER 1 (ALL BITS ON)
F000:025C @ POST1_TEST05 ; TEST.05: 8253 CHECK TIMER 1 (ALL BITS OFF)
F000:027B @ POST1_TEST06 ; TEST.06: 8237 DMA 0 INITIALIZATION
F000:02C6 @ POST1_TEST07 ; TEST.07: 8237 DMA 1 INITIALIZATION
F000:033B @ POST1_TEST08 ; TEST.08: DMA PAGE REGISTER TEST
F000:038E @ POST1_TEST09 ; TEST.09: STORAGE REFRESH TEST
F000:03A6 @ POST1_TEST10 ; TEST.10: 8042 TESTS
F000:03DD @ POST1_GETSW ; GET SWITCH SETTINGS
F000:0426 @ POST1_TEST11 ; TEST.11: BASE 64K R/W STORAGE TEST
F000:0606 @ POST1_SETMFG ; SET MFG_TST
F000:060D @ POST1_TEST11A ; TEST.11A: VERIFY GDT/IDT INSTRUCTIONS
F000:06FA @ POST1_TEST12 ; TEST.12: VERIFY CMOS CHECKSUM
F000:07E2 @ POST1_TEST13 ; TEST.13: PROTECTED MODE TEST
F000:08B7 @ POST1_TEST13A ; TEST.13A: MEMORY SIZE TEST (ABOVE 1024K)
F000:0AB4 @ POST1_TEST14 ; TEST.14: INITIALIZE CRT CONTROLLER
F000:0B27 @ POST1_TEST15 ; TEST.15: VIDEO LINE TEST
F000:0B37 @ POST1_TEST16 ; TEST.16: CRT INTERFACE LINES TEST
0C3F +
F000:0000 @ POST2 ; TEST.17: 8259 PIC TEST
F000:0058 @ POST2_CP27 ; CHECKPOINT 0x27
F000:0093 @ POST2_CP29 ; CHECKPOINT 0x29
F000:00C6 @ POST2_TEST18 ; TEST.18: 8253 TIMER TEST (CHECKPOINT 0x2A)
F000:00E7 @ POST2_ERR102 ; DISPLAY 102 ERROR
F000:00F1 @ POST2_CP2B ; CHECKPOINT 0x2B
F000:0107 . ; TIMER COUNTING TOO FAST, DISPLAY 102 ERROR
F000:0111 @ POST2_CP2C ; CHECKPOINT 0x2C
F000:0139 @ POST2_CP2D ; CHECKPOINT 0x2D
F000:014E @ POST2_TEST19 ; TEST.19: ADDITIONAL MEMORY TESTS (CHECKPOINT 0x2F)
F000:0558 @ POST2_TEST20 ; TEST.20: ADDITIONAL PROTECTED-MODE TESTS
F000:0595 @ POST2_TEST21 ; TEST.21: KEYBOARD TEST (CHECKPOINT 0x35)
F000:05AD @ POST2_CP36 ; CHECKPOINT 0x36 (BEGIN KEYBOARD TEST)
F000:05F6 @ POST2_CP37 ; CHECKPOINT 0x37 (CHECK KBD_RESET SCAN CODE)
F000:05FF @ POST2_CP38 ; CHECKPOINT 0x38 (RE-ENABLE KEYBOARD)
F000:0612 @ POST2_CP39 ; CHECKPOINT 0x39 (STUCK KEYS)
F000:0655 @ POST2_CP3A ; CHECKPOINT 0x3A
F000:06E0 @ POST2_TEST23 ; TEST.23: DISKETTE ATTACHMENT TEST
F000:079E @ POST2_RTCUP ; TEST CLOCK UPDATING
F000:080D @ POST2_COMBOHF ; CHECK FOR COMBO HARD/FLOPPY CARD
F000:0877 @ POST2_TEST22 ; TEST.22: CHECK FOR OPTIONAL ROM
F000:08C3 @ POST2_PRINTER ; SETUP PRINTER_BASE
F000:08E6 @ POST2_PS232 ; SETUP RS232
F000:0998 @ POST2_SETTOD ; SET TIME OF DAY
F000:0A6C @ POST2_INT19 ; GO TO BOOT LOADER
1753 +
F000:0000 @ POST4
F000:007F @ KBD_RESET
F000:00B2 @ TEMP_ISR
F000:00CC @ HW_INT
F000:00E8 @ NOT_SEC
F000:00F6 @ SET_INTR_FLAG
187F +
F000:0000 @ POST5
F000:0055 @ EXC_13 ; INT 13 (0x0D) GP FAULT HANDLER
F000:00B4 @ SYS_32 ; INT 32 (0x20) PROT-MODE TEST HANDLER
199C +
F000:0000 @ POST6
F000:0189 @ XMIT_8042
1C2D +
F000:0000 @ POST7
F000:0043 @ POST7_CPF1 ; CHECKPOINT 0xF1
F000:004B @ POST7_INT20 ; TEST NORMAL SOFTWARE INTERRUPT
F000:007F @ POST7_INT0D ; TEST GP FAULT (SEG LIMIT VIOLATION)
F000:0093 @ POST7_LLDT ; TEST LLDT
F000:00DB @ POST7_BOUND ; TEST BOUND
F000:0146 @ POST7_PUSHA ; TEST PUSHA/POPA
F000:019A @ POST7_VERW ; TEST VERW/VERR
F000:01EC @ POST7_ARPL ; TEST ARPL
F000:021A @ POST7_LAR ; TEST LAR/LSL
F000:0264 @ POST7_LOWMEG ; TEST WRITE TO 0x1B0000 VS. B000:0000
1F1A +
F000:0000 @ SYSINIT1
20A5 +
F000:0000 @ DISKETTE_IO_1
F000:0096 @ DISK_RETRY
F000:01CA @ DISK_RESET
F000:020C @ DISK_STATUS
F000:020D @ DISK_READ
F000:0216 @ DISK_VERF
F000:021A @ DISK_FORMAT
F000:0240 @ DISK_WRITE
F000:024C @ RW_OPN
F000:0382 @ GET_PARM
F000:03E2 @ NEC_OUTPUT
F000:041C @ SEEK
F000:04CA @ DMA_SETUP
F000:051A @ CHK_STAT_2
F000:053B @ WAIT_INT
F000:0569 @ DISK_INT_1
F000:0580 @ RESULTS
F000:05CB @ NUM_TRANS
F000:0604 @ READ_DSKCHNG
F000:0646 @ DISK_CHANGE
F000:0698 @ DISK_TYPE
F000:070D @ FORMAT_SET
F000:0771 @ DSKETTE_SETUP
28DA +
F000:0000 @ HDISK_SETUP
F000:0197 @ HDISK_IO
F000:0212 @ HDISK_IO_CONT
F000:02B3 @ HDISK_RESET
F000:0307 @ RETURN_STATUS
F000:0310 @ HDISK_READ
F000:0318 @ HDISK_WRITE
F000:0320 @ HDISK_VERF
F000:0333 @ FMT_TRK
F000:0349 @ READ_DASD_TYPE
F000:038B @ GET_HDPARM
F000:03EA @ INIT_DRV
F000:041F @ RD_LONG
F000:0427 @ WR_LONG
F000:042F @ HDISK_SEEK
F000:044E @ TST_RDY
F000:0465 @ HDISK_RECAL
F000:0489 @ CTLR_DIAGNOSTIC
F000:04BB @ COMMANDI
F000:04FB @ COMMANDO
F000:0544 @ COMMAND
F000:05A5 @ WAIT
F000:05DF @ NOT_BUSY
F000:0608 @ WAIT_DRQ
F000:061E @ CHECK_STATUS
F000:0630 @ CHECK_ST
F000:0664 @ CHECK_ER
F000:068F @ CHECK_DMA
F000:06B4 @ GET_VEC
F000:06CA @ HD_INT
0000 +
F000:2FC8 @ KEYBOARD_IO_1
F000:3054 @ KB_INT_1
F000:30A9 @ K16
F000:3460 @ SHIP_IT
F000:346F @ PRINTER_IO_1
F000:34F5 @ RS232_IO_1
F000:3605 @ VIDEO_IO_1
F000:364E @ SET_MODE
F000:372A @ SET_CTYPE
F000:3751 @ SET_CPOS
F000:377B @ READ_CURSOR
F000:3792 @ ACT_DISP_PAGE
F000:37B6 @ SET_COLOR
F000:37DC @ VIDEO_STATE
F000:37FF @ SCROLL_UP
F000:38A3 @ SCROLL_DOWN
F000:38F5 @ READ_AC_CURRENT
F000:393B @ WRITE_AC_CURRENT
F000:396E @ WRITE_C_CURRENT
F000:3A3B @ READ_DOT
F000:3A4C @ WRITE_DOT
F000:3D38 @ WRITE_TTY
F000:3DBC @ READ_LPEN
F000:3E62 @ MEMORY_SIZE_DETERMINE_1
F000:3E6C @ EQUIPMENT_1
F000:3E76 @ NMI_INT_1
F000:3F2F @ SET_TOD ; CONVERT CMOS TIME TO TIMER TICKS
F000:3FE2 @ CASSETTE_IO_1
F000:4252 @ SHUT9
F000:4392 @ GATE_A20
F000:445C @ TIME_OF_DAY_1
F000:462A @ RTC_INT
F000:4684 @ TIMER_INT_1
F000:46CC @ PRINT_SCREEN_1
F000:4752 @ FILL
F000:E05B @ START
F000:FFF0 @ P_O_R ; POWER-ON RESET

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,171 @@
F000:0050 @ POST1_TEST01 ; TEST.01: 286 PROCESSOR TEST (REAL MODE)
F000:0187 @ POST1_TEST02 ; TEST.02: ROM CHECKSUM TEST
F000:01A3 @ POST1_TEST03 ; TEST.03: VERIFY CMOS SHUTDOWN BYTE
F000:01C9 @ POST1_TEST04 ; TEST.04: 8254 CHECK TIMER 1 (ALL BITS ON)
F000:01F7 @ POST1_TEST05 ; TEST.05: 8254 CHECK TIMER 1 (ALL BITS OFF)
F000:021D @ POST1_TEST06 ; TEST.06: 8237 DMA 0 INITIALIZATION
F000:025F @ POST1_TEST07 ; TEST.07: 8237 DMA 1 INITIALIZATION
F000:02D4 @ POST1_TEST08 ; TEST.08: DMA PAGE REGISTER TEST
F000:0327 @ POST1_TEST09 ; TEST.09: STORAGE REFRESH TEST
F000:033D @ POST1_TEST10 ; TEST.10: 8042 INTERFACE TEST
F000:03B7 @ POST1_TEST11 ; TEST.11: BASE 64K R/W STORAGE TEST
F000:05D6 @ POST1_TEST11A ; TEST.11A: VERIFY GDT/IDT INSTRUCTIONS
F000:06BE @ POST1_TEST12 ; TEST.12: VERIFY CMOS CHECKSUM
F000:0780 @ POST1_TEST13 ; TEST.13: PROTECTED MODE TEST
F000:086E @ POST1_TEST13A ; TEST.13A: MEMORY SIZE TEST (ABOVE 1024K)
F000:0A99 @ POST1_TEST14 ; TEST.14: INITIALIZE CRT CONTROLLER
F000:0B0D @ POST1_TEST15 ; TEST.15: VIDEO LINE TEST
F000:0B1D @ POST1_TEST16 ; TEST.16: CRT INTERFACE LINES TEST
F000:0C25 @ MFG_BOOT ; MANUFACTURING BOOT TEST CODE ROUTINE
;
; IBM's 11/15/85 ROM BIOS listing shows POST2 located at offset 0C96; it's actual location is 0C94.
;
0C94 +
F000:0000 @ POST2
F000:0868 @ POST2_CHK_HFNUM ; CHECK FOR SECOND FIXED DISK PRESENT BUT NOT DEFINED
;
; IBM's 11/15/85 ROM BIOS listing shows POST3 located at offset 1671; it's actual location is 1675.
;
1675 +
F000:0000 @ POST3
;
; IBM's 11/15/85 ROM BIOS listing shows POST4 located at offset 1941; it's actual location is 1945.
;
1945 +
F000:0000 @ POST4
F000:0000 @ CMOS_READ
F000:001A @ CMOS_WRITE
F000:0034 @ DDS
F000:003C @ E_MSG
F000:0071 @ ERR_BEEP
F000:00AF @ BEEP
F000:00F5 @ WAITF ; FIXED TIME WAIT (CX = COUNT OF 15.085737us INTERVALS TO WAIT)
F000:0104 @ CONFIG_BAD
F000:0118 @ XPC_BYTE
F000:012F @ PRT_SEG
F000:0144 @ PROT_PRT
F000:0170 @ ROM_CHECKSUM
F000:017C @ ROM_CHECK
F000:01AE @ KBD_RESET
F000:01D9 @ BLINK_INT
F000:01E7 @ SET_TOD
;
; IBM's 11/15/85 ROM BIOS listing shows POST5 located at offset 1C38; it's actual location is 1C3E.
;
1C3E +
F000:0000 @ POST5
;
; IBM's 11/15/85 ROM BIOS listing shows POST6 located at offset 1EB5; it's actual location is 1EBB.
;
1EBB +
F000:0000 @ POST6
F000:012C @ XMIT_8042
F000:016D @ BOOT_STRAP_1
;
; IBM's 11/15/85 ROM BIOS listing shows DISKETTE_IO_1 located at offset 2143; it's actual location is 2149.
;
20E9 +
F000:0060 @ DISKETTE_IO_1
F000:00E7 @ DISK_RESET
F000:013C @ DISK_STATUS
F000:0148 @ DISK_READ
F000:0154 @ DISK_WRITE
F000:0160 @ DISK_VERF
F000:016C @ DISK_FORMAT
F000:00E7 @ DISK_RESET
F000:01D2 @ DISK_PARMS
F000:02AD @ DISK_CHANGE ; RETURNS THE STATE OF THE DISK CHANGE LINE
F000:02D8 @ FORMAT_SET
F000:028B @ DISK_TYPE
F000:0339 @ SET_MEDIA
F000:03AC @ DR_TYPE_CHECK
F000:03CC @ SEND_SPEC
F000:0403 @ XLAT_NEW
F000:0429 @ XLAT_OLD
F000:07F5 @ SETUP_END
F000:080F @ SETUP_DBL ; CHECK DOUBLE STEP
F000:0873 @ READ_ID
F000:0888 @ CMOS_TYPE
F000:08B6 @ MOTOR_ON
F000:0994 @ NEC_OUTPUT
F000:09C0 @ SEEK
F000:0A85 @ RESULTS
F000:0AC4 @ READ_DSKCHNG
F000:0A5D @ WAIT_INT
F000:0AF5 @ DISK_INT_1
F000:0B0C @ DSKETTE_SETUP
F000:0B60 @ DISK_SETUP
F000:0D09 @ DISK_IO
2C69 +
F000:0000 @ HDISK_SETUP
F000:0104 @ HD_RESET_1
F000:017C @ SET_FAIL
F000:018A @ POD_TCHK
F000:01A9 @ HDISK_IO
F000:0225 @ HDISK_IO_CONT
F000:02C1 @ HDISK_RESET
F000:0315 @ HDISK_STATUS
F000:031E @ HDISK_READ
F000:0325 @ HDISK_WRITE
F000:032C @ HDISK_VERF
F000:033E @ FMT_TRK
F000:0353 @ READ_DASD
F000:0393 @ GET_PARM
F000:03F1 @ INIT_DRV
F000:0423 @ RD_LONG
F000:042A @ WR_LONG
F000:0431 @ DISK_SEEK
F000:044F @ TST_RDY ; TEST HARD DISK READY (AH = 0x10)
F000:0466 @ HDISK_RECAL
F000:048E @ CTLR_DIAGNOSTIC
F000:04C6 @ COMMANDI
F000:0505 @ COMMANDO
F000:055C @ COMMAND
F000:05C2 @ WAIT
F000:05F3 @ NOT_BUSY
F000:061A @ WAIT_DRQ
F000:0630 @ CHECK_STATUS
F000:0642 @ CHECK_ST
F000:0676 @ CHECK_ER
F000:06A1 @ CHECK_DMA
F000:06C4 @ GET_VEC
F000:06DA @ HD_INT
3366 +
F000:0000 @ KEYBOARD_IO_1
F000:00C7 @ K1S ; READ THE KEY TO FIGURE OUT WHAT TO DO
F000:0103 @ K2S ; READ THE KEY TO SEE IF ONE IS PRESENT
F000:0125 @ KIO_E_XLAT ; TRANSLATE SCAN CODE PAIRS FOR EXTENDED CALLS
F000:0130 @ KIO_S_XLAT ; TRANSLATE SCAN CODE PAIRS FOR STANDARD CALLS
F000:0168 @ K4 ; INCREMENT BUFFER POINTER ROUTINE
F000:0175 @ KB_INT_1 ; KEYBOARD INTERRUPT ROUTINE
F000:018B @ KB_INT_01 ; WAIT FOR KEYBOARD DISABLE COMMAND TO BE ACCEPTED
F000:019D @ KB_INT_02 ; CHECK FOR A RESEND COMMAND TO KEYBOARD
F000:01AF @ KB_INT_4 ; RESEND THE LAST BYTE
F000:01B8 @ KB_INT_2 ; UPDATE MODE INDICATORS IF CHANGE IN STATE
F000:01CA @ UP0 ; START OF KEY PROCESSING
F000:0258 @ T_SYS_KEY ; TEST FOR SYSTEM KEY
F000:0299 @ K16A ; TEST FOR SHIFT KEYS
F000:02AC @ K17 ; SHIFT KEY FOUND
F000:02BE @ K17C ; SHIFT KEY FOUND, DETERMINE SET OR TOGGLE
F000:0335 @ K23 ; BREAK SHIFT FOUND
F000:0385 @ K25 ; TEST FOR HOLD STATE
F000:039E @ K26A ; INTERRUPT RETURN
F000:05EE @ K57 ; PUT CHARACTER INTO BUFFER
F000:0635 @ SHIP_IT ; HANDLE TRANSMISSION OF BYTES TO 8042
F000:0644 @ SND_DATA ; HANDLE TRANSMISSION OF COMMAND AND DATA BYTES
F000:0680 @ SND_LED ; TURN ON THE MODE INDICATORS
F000:06D1 @ MAKE_LED ; FORM THE DATA BYTE FOR THE MODE INDICATORS
448D +
F000:0000 @ CASSETTE_IO_1 ; BIOS1 (11/15/85)
F000:0065 @ INT15_EVENT_WAIT
F000:00D0 @ INT15_JOY_STICK
F000:016A @ INT15_WAIT
F000:01CA @ INT15_BLOCKMOVE
F000:028A @ SHUT9 ; RETURN FROM SHUTDOWN
F000:03CC @ GATE_A20
F000:03E5 @ EMPTY_8042
F000:03EE @ EXT_MEMORY
F000:03FA @ X_VIRTUAL
4915 +
F000:0000 @ TIME_OF_DAY_1 ; BIOS2 (11/15/85)
F000:0182 @ RTC_INT ; ALARM INTERRUPT (INT 0x70, IRQ 8)

Binary file not shown.

View file

@ -0,0 +1,132 @@
---
layout: page
title: IBM PC AT (Model 5170) ROMs
permalink: /devices/pcx86/rom/5170/
redirect_from:
- /devices/pcx86/5170/
- /devices/pcx86/bios/5170/
- /devices/pcx86/rom/5170/bios/
---
IBM PC AT (Model 5170) ROM Revisions
---
There were three ROM BIOS revisions for the IBM PC AT, which we refer to as **[Rev 1](#ibm-pc-at-rom-bios-rev-1)**,
**[Rev 2](#ibm-pc-at-rom-bios-rev-2)**, and **[Rev 3](#ibm-pc-at-rom-bios-rev-3)**. Each revision was used with a
corresponding motherboard type (**Type 1**, **Type 2**, and **Type 3**, respectively), which in turn were used with
corresponding 5170 models ([Models 68 and 99](/devices/pcx86/machine/5170/#models-68-and-99),
[Model 239](/devices/pcx86/machine/5170/#model-239), and
[Models 319 and 339](/devices/pcx86/machine/5170/#models-319-and-339), respectively).
IBM PC AT ROM BIOS (Rev 1)
---
[ATBIOS-REV1.json](1984-01-10/ATBIOS-REV1.json) contains the original IBM PC AT BIOS, dated January 10, 1984
("01/10/84"). It was produced for [5170 Models 68 and 99](/devices/pcx86/machine/5170/#models-68-and-99),
announced August 14, 1984.
Do we really think this PC AT BIOS was "finalized" a full 7 months before the PC AT was even announced, let alone
available? I doubt it. I suspect the BIOS date string was simply never updated to reflect the date of the final
change(s).
From [http://minuszerodegrees.net/bios/BIOS_5170_10JAN84_6MHZ.zip](http://minuszerodegrees.net/bios/):
This is the first BIOS for the IBM 5170.
It is dated 10JAN84.
It is found in type 1 motherboards running at 6 Mhz.
U27 has the IBM part number of 6181028, and is 32K in size
U47 has the IBM part number of 6181029, and is 32K in size
8 bit checksum of 6181028 = 36
8 bit checksum of 6181029 = CA
--
added = 00
There are two BIN files in this ZIP file:
1. BIOS_5170_10JAN84_U27_6181028_27256_6MHZ.BIN --> Use this to create a U27 using a 27256 EPROM (rated at 150nS or faster)
2. BIOS_5170_10JAN84_U47_6181029_27256_6MHZ.BIN --> Use this to create a U47 using a 27256 EPROM (rated at 150nS or faster)
The JSON-encoded ROM image that PCjs uses was created using the *FileDump* command-line *merge* option:
filedump --file=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_10JAN84_U27_6181028_27256_6MHZ.BIN --merge=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_10JAN84_U47_6181029_27256_6MHZ.BIN --output=ATBIOS-REV1.json --overwrite
Since a MAP file ([ATBIOS-REV1.map](1984-01-10/ATBIOS-REV1.map)) exists as well, it is automatically appended to the JSON file
([ATBIOS-REV1.json](1984-01-10/ATBIOS-REV1.json)) when using a ROM input file (or JSON output file) with a matching filename.
It is also possible to create a merged binary ROM image ([ATBIOS-REV1.rom](http://archive.pcjs.org/devices/pcx86/rom/5170/ATBIOS-REV1.rom))
by adding *--format=rom* to the command-line (the default is *--format=json*).
These operations can only be performed using the *FileDump* command-line interface; the *FileDump* API does not support
either the *merge* option or the appending of MAP data. For the moment, the API can only dump unadorned ROM images; eg:
http://localhost:8088/api/v1/dump/?file=http://archive.pcjs.org/devices/pcx86/rom/5170/ATBIOS-REV1.rom
---
IBM PC AT ROM BIOS (Rev 2)
---
[ATBIOS-REV2.json](1985-06-10/ATBIOS-REV2.json) contains the second IBM PC AT BIOS, dated June 10, 1985.
This BIOS was produced for [5170 Model 239](/devices/pcx86/machine/5170/#model-239), announced October 10,
1985. It increased the number of supported hard disk types from 15 to 23, fixed some bugs, and added support for 720Kb
3.5-inch floppy diskette drives.
From [http://minuszerodegrees.net/bios/BIOS_5170_10JUN85_6MHZ.zip](http://minuszerodegrees.net/bios/):
This is the second BIOS for the IBM 5170.
It is dated 10JUN85.
It is found in type 2 motherboards running at 6 Mhz.
U27 has the IBM part number of 6480090, and is 32K in size
U47 has the IBM part number of 6480091, and is 32K in size
8 bit checksum of 6480090 = 71
8 bit checksum of 6480091 = 8F
--
added = 00
There are two BIN files in this ZIP file:
1. BIOS_5170_10JUN85_U27_6480090_27256.BIN --> Use this to create a U27 using a 27256 EPROM (rated at 150nS or faster)
2. BIOS_5170_10JUN85_U47_6480091_27256.BIN --> Use this to create a U47 using a 27256 EPROM (rated at 150nS or faster)
The JSON-encoded ROM image that PCjs uses was created using the *FileDump* command-line *merge* option:
filedump --file=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_10JUN85_U27_6480090_27256.BIN --merge=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_10JUN85_U47_6480091_27256.BIN --output=ATBIOS-REV2.json --overwrite
---
IBM PC AT ROM BIOS (Rev 3)
---
[ATBIOS-REV3.json](1985-11-15/ATBIOS-REV3.json) contains the third (and last) IBM PC AT BIOS, dated November 15, 1985.
This BIOS was produced for [5170 Models 319 and 339](/devices/pcx86/machine/5170/#models-319-and-339),
announced April 2, 1986. It added support for 101-key keyboards and 1.44Mb 3.5-inch floppy diskette drives.
Note that, although minuszerodegrees.net says this revision was found in "type 2 motherboards running at 8 Mhz",
the [Vintage Computer Federation](http://www.vcfed.org/forum/showthread.php?26480) refers to the 8Mhz motherboards as
"Type 3".
From [http://minuszerodegrees.net/bios/BIOS_5170_15NOV85_8MHZ_VARIATION_2.zip](http://minuszerodegrees.net/bios/):
This is the third BIOS for the IBM 5170.
It is dated 15NOV85.
It is found in type 2 motherboards running at 8 Mhz.
U27 has the IBM part number of 61X9266, and is 32K in size
U47 has the IBM part number of 61X9265, and is 32K in size
8 bit checksum of 61X9266 = 10
8 bit checksum of 61X9265 = F0
--
added = 00
There are two BIN files in this ZIP file:
1. BIOS_5170_15NOV85_U27_61X9266_27256.BIN --> Use this to create a U27 using a 27256 EPROM (rated at 150nS or faster)
2. BIOS_5170_15NOV85_U47_61X9265_27256.BIN --> Use this to create a U47 using a 27256 EPROM (rated at 150nS or faster)
The JSON-encoded ROM image that PCjs uses was created using the *FileDump* command-line *merge* option:
filedump --file=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_15NOV85_U27_61X9266_27256.BIN --merge=http://archive.pcjs.org/devices/pcx86/rom/5170/BIOS_5170_15NOV85_U47_61X9265_27256.BIN --output=ATBIOS-REV3.json --overwrite