MP/M-II XIOS

This XIOS is more like a quick-and-dirty adaptation of the MP/M 1.1 XIOS. You can get it from the downloads page. On the same page you will also find Y2K updates for the TOD and SCHED utilities, as well as an updated DS1202 utility. The other MP/M utilities that use dates are SDIR, SET and SHOW, but they do not need modifications; years will be correctly output with two digits (e.g. 2000 as 00, 2001 as 01, etc.)

The current version of the XIOS implements the following features:

  • Support for two consoles: the main terminal at 19200 baud, the second at 9600 baud (like in UZI180 or MP/M 1.1, the baud rates are fixed).
  • Floppy disks: the same formats as the enhanced CP/M BIOS supports.
  • Task-switching by timer interrupts (50 ticks per second).
  • Banked memory support, up to the maximum 8 segments allowed by MP/M. Common area size is 20K, giving a bank size of 44K.
  • Customized MPMLDR.COM and boot loader.
  • No GIDE or SCSI support yet.

The bootable image was generated with support for 8 memory banks, so a P112 with at least 512K of RAM is recommended. The timing parameters are for a CPU running at 16 MHz. Of course, you can use a machine with less memory, but you'll have to run GENSYS again to specify a different number of memory segments.

Compiling the XIOS

Microsoft's M80 and Digital Research's LINK are used to generate the banked XIOS:

M80 =XIOS.180
LINK BNKXIOS=XIOS[NR,OS]

The system was generated as shown below (consult the MP/M-II manual for more details):

0A>gensys


MP/M II V2.1 System Generation
Copyright (C) 1981, Digital Research


Default entries are shown in (parens).
Default base is Hex, precede entry with # for decimal

Use SYSTEM.DAT for defaults (Y) ? 
Top page of operating system (FF) ? 
Number of TMPs (system consoles) (#1) ? 2
Number of Printers (#1) ? 
Breakpoint RST (06) ? 
Enable Compatibility Attributes (N) ? 
Add system call user stacks (Y) ? 
Z80 CPU (Y) ? 
Number of ticks/second (#50) ? 
System Drive (A:) ? 
Temporary file drive (A:) ? 
Maximum locked records/process (#16) ? 
Total locked records/system (#32) ? 
Maximum open files/process (#16) ? 
Total open files/system (#32) ? 
Bank switched memory (Y) ? 
Number of user memory segments (#7) ? 
Common memory base page (B0) ? 
Dayfile logging at console (N) ? 

 SYSTEM  DAT  FF00H  0100H
 TMPD    DAT  FE00H  0100H
 USERSYS STK  FC00H  0200H
 XIOSJMP TBL  FB00H  0100H

Accept new system data page entries (Y) ? 

 RESBDOS SPR  EF00H  0C00H
 XDOS    SPR  CD00H  2200H

Select Resident and Banked System Processes:
 ABORT   RSP (N) ? 
 MPMSTAT RSP (N) ? 
 SCHED   RSP (N) ? 
 SPOOL   RSP (N) ? 

 BNKXIOS SPR  BC00H  1100H
 BNKBDOS SPR  9900H  2300H
 BNKXDOS SPR  9700H  0200H
 TMP     SPR  9300H  0400H

 LCKLSTS DAT  9000H  0300H
 CONSOLE DAT  8E00H  0200H

Enter memory segment table:
 Base,size,attrib,bank (8E,72,80,00) ? 
 Base,size,attrib,bank (00,8F,00,00) ? 0,8e,0,0
 Base,size,attrib,bank (00,B0,00,01) ? 
 Base,size,attrib,bank (00,B0,00,02) ? 
 Base,size,attrib,bank (00,B0,00,03) ? 
 Base,size,attrib,bank (00,B0,00,04) ? 
 Base,size,attrib,bank (00,B0,00,05) ? 
 Base,size,attrib,bank (00,B0,00,06) ? 

 MP/M II Sys  8E00H  7200H  Bank 00
 Memseg  Usr  0000H  8E00H  Bank 00
 Memseg  Usr  0000H  B000H  Bank 01
 Memseg  Usr  0000H  B000H  Bank 02
 Memseg  Usr  0000H  B000H  Bank 03
 Memseg  Usr  0000H  B000H  Bank 04
 Memseg  Usr  0000H  B000H  Bank 05
 Memseg  Usr  0000H  B000H  Bank 06

Accept new memory segment table entries (Y) ? 

** GENSYS DONE **
0A>

To load the new system, run MPMLDR (or, alternatively, reboot the machine if MPMLDR has been saved into the system tracks of the floppy):

A>xmpmldr

D-X Designs P112 Loader Bios (V2.1)



MP/M II V2.1 Loader   
Copyright (C) 1981, Digital Research
Nmb of consoles     =  2
Breakpoint RST #    =  6
Memory Segment Table:
SYSTEM  DAT  FF00H  0100H
TMPD    DAT  FE00H  0100H
USERSYS STK  FC00H  0200H
XIOSJMP TBL  FB00H  0100H
RESBDOS SPR  EF00H  0C00H
XDOS    SPR  CD00H  2200H
BNKXIOS SPR  BC00H  1100H
BNKBDOS SPR  9900H  2300H
BNKXDOS SPR  9700H  0200H
TMP     SPR  9300H  0400H
LCKLSTS DAT  9000H  0300H
CONSOLE DAT  8E00H  0200H
-------------------------
MP/M II Sys  8E00H  7200H  Bank 0
Memseg  Usr  0000H  8E00H  Bank 0
Memseg  Usr  0000H  B000H  Bank 1
Memseg  Usr  0000H  B000H  Bank 2
Memseg  Usr  0000H  B000H  Bank 3
Memseg  Usr  0000H  B000H  Bank 4
Memseg  Usr  0000H  B000H  Bank 5
Memseg  Usr  0000H  B000H  Bank 6

D-X Designs P112 MP/M-II Banked Xios (V2.1)

MP/M II V2.1
Copyright (C) 1982, Digital Research

0A>ds1202 /r

Setting system time from CMOS clock: 12/21/02 12:29:17

0A>

Note the automatic startup command (ds1202 /r) after the system is reloaded. If you have another terminal connected to the second serial port, you should see the MP/M-II prompt appearing there as well:

MP/M II V2.1
Copyright (C) 1982, Digital Research

1A>

Loader BIOS

The MP/M Loader BIOS is exactly the same used in MP/M 1.1. The binary image is generated at address 1700h:

M80 =LDRBIOS.180
LINK LDRBIOS.BIN=LDRBIOS[NR,L1700]

then combined with the MPMLDR.COM program using an utility like DDT:

0A>DDT MPMLDR.COM
[MP/M II] DDT VERS 2.0
NEXT  PC
1780 0100
-ILDRBIOS.BIN
-R1600
NEXT  PC
1F00 0100      (note the NEXT address)
-V1F00         (MP/M's DDT makes things easier,
003C             Falconer's DDTZ is even better)
-IXMPMLDR.COM
-W3C

The process is explained in detail in the MP/M-II System's Implementor Guide.

Making a bootable floppy

This MP/M-II distribution uses the same floppy boot loader from MP/M 1.1, and the boot track image generation is done exactly in the same way.

Last modified: 4-Feb-2007