Difference between revisions of "PC-98"

From ReactOS Wiki
Jump to: navigation, search
(Add information about QEMU/9821)
m
 
(25 intermediate revisions by 5 users not shown)
Line 2: Line 2:
  
 
== Status ==
 
== Status ==
ReactOS is not ported to PC-9800 series yet and here are some rough estimations if you want to port it.
+
ReactOS PC-98 port is under slow development.
  
You can run ReactOS only on [[Supported Hardware/CPU|i586 class CPUs and above]], so that means you can run it on any of the models with a Pentium CPU. Keep in mind ReactOS requires at least 64 MB of RAM. It's recommended to use NEC PC-9821Ra43 with a Celeron CPU @ 433 MHz which is the last model in the series.
+
=== Completion Status (rough estimates) ===
 +
Progress is also tracked in the Epic ticket {{JIRA|17977}}.
 +
 
 +
{| class="wikitable"
 +
! Stage
 +
! Completion
 +
! Comment
 +
|-
 +
| Create a boot sector floppy || 100% ||
 +
|-
 +
| Create ARC platform-specific code for FreeLoader ||  100% ||
 +
|-
 +
| Create kernel debug driver over serial port || 90% || Implemented as cportlib extension, needs to be in a separate driver.
 +
|-
 +
| Create boot video driver || 100% ||
 +
|-
 +
| Create Hardware Abstraction Layer (HAL) || 90% || Almost complete, only bug fixes and minor improvements expected.
 +
|-
 +
| Create video miniport driver for Win32 subsystem || 80% || Only one mode supported: 640x480x8bpp (256 color PEGC).
 +
|-
 +
| Create driver for IDE controller on C-bus || 75% ||
 +
 
 +
Tracked in {{JIRA|17256}}
 +
|-
 +
| Create driver for keyboard input || 0% || Tracked in {{JIRA|17913}}
 +
|-
 +
| Create driver for mouse input || 90% || Only bug fixes and minor improvements expected.
 +
|-
 +
| Create driver for console video (for 1st stage setup) || 0% ||
 +
|-
 +
| Create a boot sector for HDD || 0% ||
 +
|-
 +
| Add support for PC-98 hard disk partitioning || 0% ||
 +
|-
 +
| Create drivers for other peripherals, such as NIC, audio, or floppy || 0% ||
 +
|-
 +
| More work along with bug fixes || ||
 +
|}
 +
 
 +
== Help in testing ==
 +
You can run ReactOS only on [[Supported Hardware/CPU|i586 class CPUs and above]], so that means you can run it on any of the models with a Pentium CPU. Keep in mind ReactOS requires at least 64 MB of RAM. It's recommended to use NEC PC-9821Ra43 with a Celeron CPU @ 433 MHz which is the last model in the series. Currently, ReactOS only supports booting from a 1.44 MB 3.5" internal floppy drive. After booting up using the diskette, FreeLoader loads a boot image from any supported devices: IDE CD-ROM, SCSI CD-ROM, or MO.
 +
 
 +
You need the following steps:
 +
* Check out [[ReactOS FAQ#Testing ReactOS on real hardware|this article]] to learn more about the testing process.
 +
* You should be able to [[Building ReactOS|compile ReactOS]].
 +
* Open file <code>boot/bootdata/livecd.ini</code> and add <code>/HAL=halpc98.dll</code> to every <code>Options</code> record (To be fixed in future versions).
 +
* Run the following command <code>configure -DSARCH=pc98</code> before compilation to set target platform as PC-98.
 +
* Execute <code>ninja pc98bootfdd</code> build target to create a bootable floppy image. The created image will be placed on <code>/output folder/PC98/</code>.
 +
* Build and burn a LiveCD ISO image (BootCD is not supported yet).
 +
* Insert the floppy disk, medium, and boot ReactOS.
 +
 
 +
Any test results will be useful to improve the PC-98 port.
  
 
== Hardware ==
 
== Hardware ==
The PC-9800 series use a custom hardware C-bus (later models do use PCI) and a firmware that is completely different from a Standard PC BIOS, so a new [[HAL]] should be created.
+
The PC-9800 series use a custom hardware C-bus (later models do use PCI) and a firmware that is completely different from a Standard PC BIOS.
  
 
In Windows 2000 there are four known HALs for this platform:
 
In Windows 2000 there are four known HALs for this platform:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! File Name !! HAL Name
+
! File Name !! Hardware ID String !! HAL Name
 
|-
 
|-
| hal98up.dll || PC-9800 System Clock 10MHz
+
| hal98up.dll || nec98Notmr_up || PC-9800 System Clock 10MHz
 
|-
 
|-
| hal98tmr.dll || PC-9800 System Clock 10MHz (support 2nd Timer)
+
| hal98tmr.dll || nec98tmr_up || PC-9800 System Clock 10MHz (support 2nd Timer)
 
|-
 
|-
| hal98mp.dll || NEC PC-9800 MPS HAL
+
| hal98apc.dll || nec98mps_up || NEC PC-9800 APIC HAL
 
|-
 
|-
| hal98apc.dll || NEC PC-9800 APIC HAL
+
| hal98mp.dll || nec98mps_mp || NEC PC-9800 MPS HAL
 
|}
 
|}
  
 
PC-9800 series hard disks are usually formatted with FAT12, but they use 1024 bytes per sector as opposed to the PC's 512.
 
PC-9800 series hard disks are usually formatted with FAT12, but they use 1024 bytes per sector as opposed to the PC's 512.
 +
 +
Some known chipsets used on the Pentium and later PC-98s are:
 +
* Intel 430FX, 430HX, 430VX, 430TX, 440FX, and 450KX
 +
* VLSI Wildcat (SuperCore 594)
 +
 +
Some known windows accelerators used in PC-98 are:
 +
* Trident Microsystems TGUI 9660/938x/968x
 +
* Cirrus Logic CL-GD5430 and CL-GD5446
 +
 +
=== Tests on hardware ===
 +
* Very first attempts [https://twitter.com/simk98l/status/1324903507623727105 (one)] [https://twitter.com/simk98l/status/1324922769256054785 (two)] by simk98l (7 Nov 2020)
 +
* [https://twitter.com/drachen6jp/status/1476159742070632451 PC-9821Na15 with 80MB RAM] by drachen6jp (29 Dec 2021)
  
 
== Emulation ==
 
== Emulation ==
* Neko Project 21/W is a NEC PC-9821 series emulator which can run Windows 2000. It potentially can be used for ReactOS PC-98 port development and testing.
+
* Neko Project 21/W is an NEC PC-9821 series emulator that can run Windows 2000. It potentially can be used for ReactOS PC-98 port development and testing.
* QEMU/9821 also exists, but it seems not maintained anymore, and does not run Windows 2000.
+
* SL9821 is an NEC PC-9821 series emulator with partial compatibility with Windows 2000 (no sound, no network, IDE issues). ROM image files are required to run SL9821.
 +
* QEMU/9821 also exists, but it seems not maintained anymore and does not run Windows 2000.
 +
* DOSBox-X and MAME can emulate a wide range of PC-98 hardware.  
  
 
== See Also ==
 
== See Also ==
Line 33: Line 98:
 
* [https://www.nicovideo.jp/watch/sm9688577 Windows 2000 booting on NEC PC-9821 RvII26 (SSD, 640 MB RAM)]
 
* [https://www.nicovideo.jp/watch/sm9688577 Windows 2000 booting on NEC PC-9821 RvII26 (SSD, 640 MB RAM)]
 
* [https://www.youtube.com/watch?v=pOlHajhiSLA Linux/98 (Plamo Linux) on NEC PC-9821 V12 (96 MB RAM)]
 
* [https://www.youtube.com/watch?v=pOlHajhiSLA Linux/98 (Plamo Linux) on NEC PC-9821 V12 (96 MB RAM)]
* [https://sites.google.com/site/np21win Neko Project 21/W (japanese)]
+
* [https://web.archive.org/web/20210607062749/https://sites.google.com/site/np21win/ (Archived old website) Neko Project 21/W (in Japanese)]
* [https://sites.google.com/site/np21win/setup/win2000 Neko Project 21/W - Windows 2000 installation guide (japanese)]
+
* [https://simk98.github.io/np21w/ Neko Project 21/W (in Japanese)]
 +
* [https://sites.google.com/site/np21win/setup/win2000 Neko Project 21/W - Windows 2000 installation guide (in Japanese)]
 +
* [http://www.satotomi.com/sl9821 SL9821 (in Japanese)]
 
* [https://www.emucr.com/2012/08/qemu9821-for-windows20120820.html QEMU/9821 for Windows (2012/08/20)]
 
* [https://www.emucr.com/2012/08/qemu9821-for-windows20120820.html QEMU/9821 for Windows (2012/08/20)]
 
* [https://www.betaarchive.com/forum/viewtopic.php?t=27185 ROMs for QEMU/9821]
 
* [https://www.betaarchive.com/forum/viewtopic.php?t=27185 ROMs for QEMU/9821]
 +
* [https://github.com/joncampbell123/dosbox-x DOSBox-X]
 +
* [https://github.com/mamedev/mame MAME]
 
* [https://github.com/joncampbell123/dosbox-x/issues/106#issuecomment-132394519 Overview of PC-98 hardware and BIOS architecture]
 
* [https://github.com/joncampbell123/dosbox-x/issues/106#issuecomment-132394519 Overview of PC-98 hardware and BIOS architecture]
 +
* [https://gist.github.com/tomari/3793102 Example output of the lspci command], [https://www.mail-archive.com/freebsd-users-jp@jp.freebsd.org/msg04032.html and another one (pciconf)]. [http://rs20.nextfoods.jp/index.php?spec Boot log from an SMP machine]. Device manager listing: [http://hamlin.html.xdomain.jp/pc98/pc98irq/pc98irq.htm], [https://weblabo.griffonworks.net/dorlog/2nddorcom/pc-98/52028.html], [http://www.cham-reo.com/logsearch/Log.aspx?c=pc-98&d=19990715T192005&id=2052].
 
* [https://github.com/lpproj/fdkernel/tree/nec98test/nec98 FreeDOS(98) kernel source code]
 
* [https://github.com/lpproj/fdkernel/tree/nec98test/nec98 FreeDOS(98) kernel source code]
 
* [https://www.betaarchive.com/forum/viewtopic.php?f=61&t=35758 Discussion on BetaArchive]
 
* [https://www.betaarchive.com/forum/viewtopic.php?f=61&t=35758 Discussion on BetaArchive]
Line 45: Line 115:
  
 
[[Category:Documentation]]
 
[[Category:Documentation]]
 +
[[Category:Development]]
 +
[[Category:Hardware Platforms]]

Latest revision as of 12:32, 9 January 2024

The NEC PC-9800 series are 16/32-bit computers from NEC Corporation. It marked a shift away from the Z80-based PC-88 to the x86 architecture. Just like their predecessor series, they were known for their unique sound hardware by YAMAHA, and games kept the systems popular. They were likely never released outside Japan in the series lifespan, except for the APC III.

Status

ReactOS PC-98 port is under slow development.

Completion Status (rough estimates)

Progress is also tracked in the Epic ticket CORE-17977.

Stage Completion Comment
Create a boot sector floppy 100%
Create ARC platform-specific code for FreeLoader 100%
Create kernel debug driver over serial port 90% Implemented as cportlib extension, needs to be in a separate driver.
Create boot video driver 100%
Create Hardware Abstraction Layer (HAL) 90% Almost complete, only bug fixes and minor improvements expected.
Create video miniport driver for Win32 subsystem 80% Only one mode supported: 640x480x8bpp (256 color PEGC).
Create driver for IDE controller on C-bus 75%

Tracked in CORE-17256

Create driver for keyboard input 0% Tracked in CORE-17913
Create driver for mouse input 90% Only bug fixes and minor improvements expected.
Create driver for console video (for 1st stage setup) 0%
Create a boot sector for HDD 0%
Add support for PC-98 hard disk partitioning 0%
Create drivers for other peripherals, such as NIC, audio, or floppy 0%
More work along with bug fixes

Help in testing

You can run ReactOS only on i586 class CPUs and above, so that means you can run it on any of the models with a Pentium CPU. Keep in mind ReactOS requires at least 64 MB of RAM. It's recommended to use NEC PC-9821Ra43 with a Celeron CPU @ 433 MHz which is the last model in the series. Currently, ReactOS only supports booting from a 1.44 MB 3.5" internal floppy drive. After booting up using the diskette, FreeLoader loads a boot image from any supported devices: IDE CD-ROM, SCSI CD-ROM, or MO.

You need the following steps:

  • Check out this article to learn more about the testing process.
  • You should be able to compile ReactOS.
  • Open file boot/bootdata/livecd.ini and add /HAL=halpc98.dll to every Options record (To be fixed in future versions).
  • Run the following command configure -DSARCH=pc98 before compilation to set target platform as PC-98.
  • Execute ninja pc98bootfdd build target to create a bootable floppy image. The created image will be placed on /output folder/PC98/.
  • Build and burn a LiveCD ISO image (BootCD is not supported yet).
  • Insert the floppy disk, medium, and boot ReactOS.

Any test results will be useful to improve the PC-98 port.

Hardware

The PC-9800 series use a custom hardware C-bus (later models do use PCI) and a firmware that is completely different from a Standard PC BIOS.

In Windows 2000 there are four known HALs for this platform:

File Name Hardware ID String HAL Name
hal98up.dll nec98Notmr_up PC-9800 System Clock 10MHz
hal98tmr.dll nec98tmr_up PC-9800 System Clock 10MHz (support 2nd Timer)
hal98apc.dll nec98mps_up NEC PC-9800 APIC HAL
hal98mp.dll nec98mps_mp NEC PC-9800 MPS HAL

PC-9800 series hard disks are usually formatted with FAT12, but they use 1024 bytes per sector as opposed to the PC's 512.

Some known chipsets used on the Pentium and later PC-98s are:

  • Intel 430FX, 430HX, 430VX, 430TX, 440FX, and 450KX
  • VLSI Wildcat (SuperCore 594)

Some known windows accelerators used in PC-98 are:

  • Trident Microsystems TGUI 9660/938x/968x
  • Cirrus Logic CL-GD5430 and CL-GD5446

Tests on hardware

Emulation

  • Neko Project 21/W is an NEC PC-9821 series emulator that can run Windows 2000. It potentially can be used for ReactOS PC-98 port development and testing.
  • SL9821 is an NEC PC-9821 series emulator with partial compatibility with Windows 2000 (no sound, no network, IDE issues). ROM image files are required to run SL9821.
  • QEMU/9821 also exists, but it seems not maintained anymore and does not run Windows 2000.
  • DOSBox-X and MAME can emulate a wide range of PC-98 hardware.

See Also

ReactOS ports‎
In active development Intel IA-32 (x86) | AMD64 (x64)
In slow development ARM64 (aarch64) | ARM32 (armv7) | NEC PC-98 (x86) | OG Xbox (x86) | Apple TV (1st generation) (x86)
Unmaintained OLPC (x86)
Missing ports that Windows has Intel IA-64 (Itanium) | IBM PS/2 MCA (x86) | SGI 320/540 (x86) | DEC Alpha (axp) | MIPS | PowerPC (ppc)
Ideas for new ports FM Towns (x86) | PlayStation 4 (x64) | Intel SFI (x86)