Functionality:

- add programs_list() ("/C"), IVT_list() ("/I").
- join (sorted) device list with MCB list for /A/D;
  join interrupt list with MCB list for /A/I.
- check block device signatures;
  show details for known drivers.
- detect CD-ROM driver.
? add DPMI/VCPI detection.
? search memory for start of MCB list;
  search MCB inside MCB;
  search MT_SYSCODE in upper memory (there should be UMB_MCB).
? EXT_get: check VDISK allocation scheme.
? XMS_get: collect list of UMB segments from XMS (call MCB_insert_UMB()).
? EMS_list: check if EMS is hardware or emulated.

Output:

? use country info for thousands separator and point.
+ big sizes are scaled (35.3k, 640k, 1023k, 9.76M, 89.0M:
  1000-1023 / 1.00-9.99 10.0-99.9 100-128-999 1000-1023).
? mem_list: add list of ROMs under MT_SYSCODE.
? memory_list/interrupt_list: inform if memory block is XMM or EMM.
- device_list: show "11..-1...-....-...." instead "C800" for attributes.
- XMS_list: list program name of each XMM from XMM chain.
- EMS_list: show EMM program name.
? total_list: check if XMS/EMS is common memory.

Code:

? preserve SI around the int 15h calls.
- ENV_say_path: split/cut long lines.
- device_list: prevent infinite loop (limit number of iterations).
- device_list: make internal copy of device list.
- EXT_E820: make external assembler file.
? EMS_list_MPA: deeply combine EMS_MPA segments.
