PC‐DOS 7.1 - Maverick-Shark/retroGuru GitHub Wiki

Cómo instalar PC-DOS 7.1 en una tarjeta SD con FAT32 (ZX-Uno)

Publicado el 15 abril, 2022 por desUBIKado

Para mi siguiente distribución para el ZX-Uno he querido usar una tarjeta SD de 16GB formateada en FAT32 para meter principalmente el contenido para los cores de Spectrum y PC-XT, y así liberar de espacio de la otra tarjeta SD de 4GB formateada en FAT16 que ya estaba muy llena y que no permitía añadir casi nada sin borrar antes contenido.

Voy a comentar los pasos que he dado para crear esa tarjeta desde linux y que pueda arrancar en el ZX-Uno con los cores de PC-XT VGA y CGA, ademas de poderse usar con otros cores que tengan soporte de FAT32.

1.- Particionado de la tarjeta SD de 16GB

He particionado la tarjeta SD para contener 3 particiones. La primera en FAT32 que ocupará la mayoría del espacio, y una segunda de 32MB y una tercera de 4MB que son necesarias para instalar Fuzix.

Para la partición principal he usado la utilidad de particionado de discos duros de la distribución de linux Mageia, y para las 2 últimas el comando fdisk.

Así se encuentra particionada:

image

2.- Crear una imagen en el disco duro del contenido de la tarjeta SD

Para ello utilizo el comando dd como root. El dispositivo que corresponde en mi ordenador a la tarjeta SD es el /dev/sdh

dd if=/dev/sdh of=PC71.img bs=8M

3.- Convertir la imagen de la tarjeta al formato .vdi que usa VirtualBox

La conversión la realizo con la herramienta qemu-img

qemu-img convert -f raw -O vdi PC71.img PC71.vdi

4.- Crear un disquete de instalación con PC-DOS 7.1

Para ello he seguido las instrucciones que se pueden ver en esta pagina y que utilizan los ficheros contenidos en este archivo comprimido:

ibm_sw_sgtk_1_3_07_anyos_anycpu

image

NOTA: Los pasos a) a f) no hace falta hacerlos ya que en el paso g) se encuentra la imagen de disquete ya lista para el siguiente punto.

a) Descomprimir el contenido del archivo anterior.

b) Hacer una copia del archivo imagen de disquete sgdeploy/sgtk/ads/images/tk_raid.vfd con otro nombre, por ejemplo tk_raid_edu.vfd

c) Hay que montar la nueva imagen de disquete (en Windows se puede hacer con WinImage. Como yo uso linux he creado un directorio llamado disquete y luego he montado la imagen sobre ese directorio usando mount como usuario root:

mount -o loop tk_raid_edu.vfd disquete

d) Hay que entrar dentro de la carpeta disquete y borrar todos los ficheros dejando solo COMMAND.COM, IBMBIO.COM e IBMDOS.COM.

e) Copiar todos los ficheros de sgdeploy/sgtk/DOS/ a la carpeta disquete excepto los ficheros COMMAND.COM, IBMBIO.COM e IBMDOS.COM.

image

f) Salir de la carpeta disquete y desmontar la imagen de disquete con umount:

umount disquete

g) El contenido de la imagen de disquete con los archivos ya copiados se encuentra aquí:

tk_raid_edu.vfd

4.- Crear una máquina virtual con VirtualBox de tipo MS-DOS y montar como almacenamiento la imagen del disquete y la de la tarjeta SD como un disco duro.

image image image

5.- Encender la máquina virtual y ejecutar tras el arranque el comando

fdisk32 /status

Eso nos presenta la cantidad de megas disponibles que tenemos en la unidad C: y que en mi caso eran 14.579 megas.

image

Asignamos a la unidad C: como primaria con el comando:

A:\> fdisk32 1 /pri:14579

6.- Formatear el disco duro C: en FAT32 haciéndolo arrancable y copiando los ficheros de sistema.

Para ello se debe ejecutar este comando:

A:\> makeboot

Esto formateará la unidad C: y copiará los ficheros COMMAND.COM, IBMBIO.COM e IBMDOS.COM (estos dos últimos con atributo oculto).

7.- Crearemos en el disco duro C: la carpeta DOS y pasaremos a ella todos los ficheros del disquete con los comandos:

A:\>MKDIR C:\DOS
A:\>XCOPY *.* C:\DOS /S
A:\>COPY CFGFILES\*.* C:\

8.- Una vez copiados los archivos al disco duro C: esto es lo que veremos al ejecutar un DIR sobre él.

image

9.- Para comprobar que ya está todo creado y funciona correctamente debemos apagar la máquina virtual, extraer del almacenamiento la imagen de disquete y volver a arrancarla solo con el disco duro.

Tras el arranque deberemos ver algo como esto.

image

Si ha arrancado correctamente deberemos apagar la máquina virtual ya que no usaremos más el VirtualBox.

10.- Convertir la imagen de disco .vdi a .img

Para ello deberemos volver a usar la utilidad qemu-img y ejecutar el siguiente comando:

qemu-img convert -f vdi -O raw PC71.vdi PC_ZXUNO.img

11.- Grabar la imagen en la tarjeta SD

Para ello usaré de nuevo el comando dd (CUIDADO: el comando dd es altamente destructivo si se equivoca en señalar la unidad destino correcta)

dd if=PC_ZXUNO.img of=/dev/sdh bs=8M

12.- Una vez grabada la imagen en la tarjeta SD está ya debería poderse usar en el ZX-Uno para arrancar con los cores de PC-XT. Ahora ya solo faltaría añadir utilidades de DOS y ajustar los ficheros CONFIG.SYS y AUTOEXEC.BAT para un arranque óptimo… pero esa es otra historia.

13.- EPILOGO: El fichero .img se puede renombrar a .VHD y utilizarse en otras FPGA como disco duro virtual, por ejemplo con el core next186.

{UPDATE: This procedure has been superceded by a simplified procedure that does not require DOS 7.0 as an intermediary step. See below.}

PC-DOS 7.1, not to be confused with PC-DOS 7.0 revision 1 (aka PC-DOS 2000), was a series of updates to PC-DOS 2K, most prominently featuring support for logical block addressing (LBA) and FAT32. It was not made available commercially, and is not a complete OS. Installing it under VirtualBox proved tricky for me (I'll detail my experience in a subsequent post). In the end, I had to install PC-DOS 7.0, then replace it with the 7.1 files.

I. Build the installation disk

As a result of a number of issues I encountered I was unable to install PC-DOS 7.1 directly onto a hard drive under VirtualBox 5.18. Instead, we're going to do it in a round-about way via PC-DOS 2000.

  1. Get yourself a bootable PC-DOS 2000 floppy disk image (you're on your own here, but it shouldn't be too difficult -- nudge nudge wink wink). Pare it down to only the following six files:
  ATTRIB.EXE
  COMMAND.COM
  IBMBIO.COM
  IBMDOS.COM
  FDISK.COM
  FORMAT.CO
  1. Download a copy of the IBM ServerGuide Scripting Toolkit, DOS Edition (SGTK): https://www-947.ibm.com/support/entry/p ... MIGR-53564. Unpack the SGTK package and locate the PC-DOS 7.1 files in sgdeploy/sgtk/DOS/.

  2. Make a subdirectory on your installation floppy (I called mine PCDOS71) and copy all the PC-DOS 7.1 files from the SGTK into it. Don't forget the AUTOEXEC.BAT and CONFIG.SYS file in sgdeploy/sgtk/DOS/cfgfiles/.

II. Create a DOS VM

Create a basic DOS VM in VirtualBox. Just take all the default settings.

III. Install PC-DOS 2000

Boot your DOS VM from the installation image you created in Step I.

When you get to the A:> prompt, run FDISK and create a primary DOS partition on your hard drive -- just press ENTER four times to take all the defaults and reboot the VM.

Now format the C: drive, give it a label and transfer the system files:

A:\>format c: /v:pcdos71 /s

WARNING: ALL DATA ON NON-REMOVABLE DISK
DRIVE C: WILL BE LOST!
Proceed with Format (Y/N)?Y

Formatting 499.53M
System transferred

  523,526,144 bytes total disk space
      139,264 bytes used by system
  523,386,880 bytes available on disk

       8,192 bytes in each allocation unit.
      63,890 allocation units available on disk.

Volume Serial Number is 1E48-1107

In addition to formatting the partition, the above FORMAT command also writes a DOS boot record to the C: partition and transfers the three system files, IBMBIO.COM, IBMDOS.COM and COMMAND.COM.

You can check:

A:\>DIR C:\ /aa

 Volume in drive C is PCDOS71
 Volume Serial Number is 1E48-1107
 Directory of C:\

IBMBIO   COM      40,726 04-30-98   1:00p
IBMDOS   COM      37,066 04-30-98   1:00p
COMMAND  COM      52,965 04-30-98   1:00p
         3 files(s)      130,757 bytes
                   523,386,880 bytes free

IV. Install PC-DOS 7.1

We really only wanted the boot record from PC-DOS 2000, so now we'll replace the system files with 7.1's. Delete the 7.0 system files:

A:>ATTRIB -S -H -R C:

A:>DEL C:*.* All files in directory will be deleted! Are you sure (Y/N)?Y


Copy the 7.1 system files to the C: drive. Make sure you do it in this order!

```sh
A:\>CD PCDOS71

A:\PCDOS71>COPY IBMBIO.COM C:
        1 file(s) copied

A:\PCDOS71>COPY IBMDOS.COM C:
        1 file(s) copied

A:\PCDOS71>COPY COMMAND.COM C:
        1 file(s) copied

A:\PCDOS71>COPY CONFIG.SYS C:
        1 file(s) copied

A:\PCDOS71>COPY AUTOEXEC.BAT C:
        1 file(s) copied

Create a DOS directory on C: and copy the 7.1 files into it:

A:\PCDOS71>MKDIR C:\DOS
A:\PCDOS71>COPY *.* C:\DOS
   ...
XCOPY.EXE
       43 file(s) copied

We're done! Your C:\ drive should now look like this:

A:\PCDOS71>DIR C:\

 Volume in drive C is PCDOS71
 Volume Serial Number is 1E48-1107
 Directory of C:\

IBMBIO   COM      44,656 06-29-05   6:03a
IBMDOS   COM      42,566 06-29-05   6:03a
COMMAND  COM      53,802 06-29-05   6:02a
CONFIG   SYS         135 06-16-06  12:45p
AUTOEXEC BAT         753 03-31-05   4:09a
DOS          <DIR>       11-07-16  12:13p
        6 file(s)      141,912 bytes
                   522,354,688 bytes free

V. Boot

Unmount the floppy image, and reboot the VM. You should wind up at a C:\ prompt. Type VER to check.

Starting PC DOS...


HIMEM:DOS XMS Driver, Version 3.15 - 05/30/94
Extended Memory Specification (XMS) Version 3.0
Copyright (C) IBM Corp. 1988, 1994

128 extended memory handles available.
Installed A20 handler number 2.
64K High Memory Area is available.

C:\>ver

PC DOS Version 7.1 
Revision 0
Wrap-Up

This issues I encountered prevented me from creating a FAT32 partition.

The PC-DOS 7.1 files in the IBM ServerGuide Scripting Toolkit do not represent a full OS. Many of the standard utilities are missing. If you have a copy of PC-DOS 2000, you can simply copy files from there. Just be sure not to overwrite any files with the same name.

And if anyone has figured out how to install 7.1 directly, let me know how you did it.

Links

Installing PC-DOS 7.1

http://desubikado.sytes.net/2022/04/15/como-instalar-pc-dos-7-1-en-una-tarjeta-sd-con-fat32/

⚠️ **GitHub.com Fallback** ⚠️