Preparation of SD-Card


Preface

You don’t need to partition the SD-Card as explained below. You can also simply use a FAT-32 formatted SD-Card and copy your disk image files to any directory you want and then attach individual files to the units. The partition support is rather a remnant from my first RLV12 emulators. However I find it rather practical. Also if no startup configuration file exists partitions are automatically attached to the units in ascending order.

Formatting

First you need to prepare the SD-Card. The following serves as an example of formatting a SD-Card using macOS. Make sure that you select the correct device else you might overwrite valuable data. The example below formats the SD-Cards producing three partitions. The first has the approximate size of an RD54 and the second has the size of an RA72 disk. The third partition just occupies the rest of the SD-Card and is formatted as FAT-32. The session logs are taken with a macOS system. Other operating systems require their own commands. The patitioning scheme must be MBR.

peter@MacBook-Air-von-Peter part % diskutil partitionDisk /dev/disk8 3 MBR "HFS+" 
   DL0 312300S "HFS+" DL1 1954100S "MS-DOS" FILES R
Started partitioning on disk8
$<3>Unmounting disk
$<3>Creating the partition map
$<3>Waiting for partitions to activate
$<3>Formatting disk8s1 as Mac OS Extended with name DL0
$<3>Initialized /dev/rdisk8s1 as a 152 MB case-insensitive HFS Plus volume
$<3>Mounting disk
$<3>Formatting disk8s2 as Mac OS Extended with name DL1
$<3>Initialized /dev/rdisk8s2 as a 954 MB case-insensitive HFS Plus volume
$<3>Mounting disk
$<3>Formatting disk8s3 as MS-DOS (FAT) with name FILES
$<3>512 bytes per physical sector
/dev/rdisk8s3: 1590848 sectors in 49714 FAT16 clusters (16384 bytes/cluster)
bps=512 spc=32 res=1 nft=2 rde=512 mid=0xf8 spf=195 spt=32 hds=128 hid=2271232 drv=0x80 bsec=1591296
$<3>Mounting disk
$<3>Finished partitioning on disk8
/dev/disk8 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 GB     disk8
   1:                  Apple_HFS DL0                     159.9 MB   disk8s1
   2:                  Apple_HFS DL1                     1.0 GB     disk8s2
   3:                 DOS_FAT_32 FILES                   814.7 MB   disk8s3
peter@MacBook-Air-von-Peter part % 

The first two partitions are used as disks by the MSCP controller. Note that these partitions must be either formatted using partition type “Linux” or “HFS+”. Later we will see how this matters for the MSCP controller.

As a next step we will fill the first two partitions with working disk images with the OS installed to DU:. You can download examples from the internet or create your own image using simh. Make sure you install to a diskimage built for an MSCP controller and use a standard disk image size. Currently the MSCP Emulator expects partitions and disk images, as we see later, of at least the size of the real disks. Depending on the disk type some margin for larger images are accepted.

But before we can copy the diskimages to the partition we need to unmount the volumes because macOS has mounted the HFS+ formated partitions automatically and you cannot copy disk images to mounted volumes.

peter@MacBook-Air-von-Peter part % diskutil unmount DL0
Volume DL0 on disk8s1 unmounted
peter@MacBook-Air-von-Peter part % diskutil unmount DL1
Volume DL1 on disk8s2 unmounted
peter@MacBook-Air-von-Peter part % diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk0
   1:             Apple_APFS_ISC Container disk1         524.3 MB   disk0s1
   2:                 Apple_APFS Container disk3         2.0 TB     disk0s2
   3:        Apple_APFS_Recovery Container disk2         5.4 GB     disk0s3

/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +2.0 TB     disk3
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            14.5 GB    disk3s1
   2:              APFS Snapshot com.apple.os.update-... 14.5 GB    disk3s1s1
   3:                APFS Volume Preboot                 14.2 GB    disk3s2
   4:                APFS Volume Recovery                2.2 GB     disk3s3
   5:                APFS Volume Data                    968.4 GB   disk3s5
   6:                APFS Volume VM                      5.4 GB     disk3s6

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 TB     disk4
   1:         Microsoft Reserved                         16.8 MB    disk4s1
   2:                 Apple_APFS Container disk5         4.0 TB     disk4s2

/dev/disk5 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +4.0 TB     disk5
                                 Physical Store disk4s2
   1:                APFS Volume BackupPeter             2.9 TB     disk5s2

/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 TB     disk6
   1:                  Apple_HFS Libraries               2.0 TB     disk6s1

/dev/disk8 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 GB     disk8
   1:                  Apple_HFS DL0                     159.9 MB   disk8s1
   2:                  Apple_HFS DL1                     1.0 GB     disk8s2
   3:                 DOS_FAT_32 FILES                   814.7 MB   disk8s3

peter@MacBook-Air-von-Peter part % 

Carefully look out for the IDNETIFIER as we will need it as the destination of the copying process. Now we can copy the disk images to the appropriate partitions. To do so we use dd. You can press ^T during the copy process to get an intermediate status if you are impatient.


peter@MacBook-Air-von-Peter part % sudo dd if=rsx11mplus_4_6_bl87.dsk of=/dev/disk8s1
Password:
load: 3.02  cmd: dd 79897 uninterruptible 0.11u 0.63s
219361+0 records in
219361+0 records out
112312832 bytes transferred in 34.616298 secs (3244507 bytes/sec)
load: 2.64  cmd: dd 79897 uninterruptible 0.16u 0.87s
299681+0 records in
299681+0 records out
153436672 bytes transferred in 46.377044 secs (3308462 bytes/sec)
311300+0 records in
311300+0 records out
159385600 bytes transferred in 48.087487 secs (3314492 bytes/sec)
peter@MacBook-Air-von-Peter part % sudo dd if=/Volumes/Libraries/diskimages/2.11BSD_rq.dsk of=/dev/disk8s2
load: 2.10  cmd: dd 79908 uninterruptible 0.07u 0.35s
123617+0 records in
123617+0 records out
63291904 bytes transferred in 18.367582 secs (3445848 bytes/sec)
load: 2.22  cmd: dd 79908 uninterruptible 0.34u 1.78s
599009+0 records in
599009+0 records out
306692608 bytes transferred in 91.929333 secs (3336178 bytes/sec)
load: 2.45  cmd: dd 79908 uninterruptible 0.74u 3.90s
1324257+0 records in
1324257+0 records out
678019584 bytes transferred in 198.645462 secs (3413215 bytes/sec)
1954001+0 records in
1954001+0 records out
1000448512 bytes transferred in 291.531509 secs (3431699 bytes/sec)
peter@MacBook-Air-von-Peter part % 

Once you have copied the disk images you can eject the SD-Card. If you want you can also copy disk images to the FAT-32 partition. We will see how to use them later.

Activating Partitions

If you have formatted the partition with partition type Linux you can skip the following steps. However macOS does not allow to format Linux partitions with the built-in tools and therefore we need to take this intermediate step using the MSCP Emulator. First insert the SD-Card into the MSCP Emulator and you will see the following output when connected via a terminal emulation to serial USB port of the MSCP Emulator

]
SD Card inserted 0xF0 0xF8 0xFC 0xFE 0xFF 0xFF 0xFF 0xFF
Sending CMD0...
Response:
     Address Error
     Erase Sequence Error
     CRC Error
     Illegal Command
     Erase Reset Error
     In Idle State
Sending CMD8...
Response:
     In Idle State
     Command Version: 00
     Voltage Accepted: 2.7-3.6V
     Echo: 0xAA
Sending CMD58...
Response:
     In Idle State
     Card Power Up Status: BUSY
     VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     Card Ready
Sending CMD58...
Response:
     Card Ready
     Card Power Up Status: READY
     CCS Status: 0
     VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD9...
Response:
CSD:
     CSD Version.. 1.0
     TAAC:........ 0x06 0x04
     NSAC:........ 0x00
     TRAN_SPEED:.. 0x02 0x06
     Capacity 1'977'614'336bytes.

Finddrive with size 0x0004C3F0

Finddrive with size 0x001DD138
Create VCB 0x6F66

Read Init File: 'RLV12.INI'

Init - RLV12.INI not found

]

Now you can display the recognised partitions. You should see the three partitions we have created previously. Note how the first two partitions are in idle state. This indicates that the partitions are valid but have the wrong partition type.

]show partitions
Partition 01 (pcb:0x6FE2) starting at sector 0x00000800 MBR at 0x00000000 is idle offset 0x01BE
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
Partition 02 (pcb:0x6FC2) starting at sector 0x0004D000 MBR at 0x00000000 is idle offset 0x01CE
  Drive has 0x001DD0D1 blocks, 0x39 sectors/track, 0x13 tracks/cylinder and 0x0781 cylinders  
  Drive type/flags and name 0x00/0x01  RA72
Partition 43 (pcb:0x6FA2) starting at sector 0x0022A800 MBR at 0x00000000 is volume C:
 Label:"FILES      " Volume Size:    1'591'296 Sectors

]

As a next step you can activate the partition, which will overwrite the partition type HFS+ with partition type Linux. The same is actually the case when you prepare an SD-Card with FAT-12 partitions of the size of an RL01/02 to be used in the RLV12 emulator. Before you can use the partitions in the emulator you have to activate them.

]activate partition1
]activate partition2
]show partitions
Partition 01 (pcb:0x6FE2) starting at sector 0x00000800 MBR at 0x00000000 is not attached
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
Partition 02 (pcb:0x6FC2) starting at sector 0x0004D000 MBR at 0x00000000 is not attached
  Drive has 0x001DD0D1 blocks, 0x39 sectors/track, 0x13 tracks/cylinder and 0x0781 cylinders  
  Drive type/flags and name 0x00/0x01  RA72
Partition 43 (pcb:0x6FA2) starting at sector 0x0022A800 MBR at 0x00000000 is volume C:
 Label:"FILES      " Volume Size:    1'591'296 Sectors

]

This is a security measure to make sure you don’t accidentally use existing HFS+ partitions which may have some of your old legacy data. Linux users must be careful. In this state you can now attach these partitions to the units. Or you can remove and re-insert the SD-Card to let the MSCP Emulator automatically do the job. This is shown in the next chapter.

Insert the SD-Card

Assuming you have the previously prepared SD-Card and you insert the SD-Card you will see the following output

]
SD Card inserted 0xF0 0xF8 0xFC 0xFE 0xFF 0xFF 0xFF 0xFF
Sending CMD0...
Response:
     Address Error
     Erase Sequence Error
     CRC Error
     Illegal Command
     Erase Reset Error
     In Idle State
Sending CMD8...
Response:
     In Idle State
     Command Version: 00
     Voltage Accepted: 2.7-3.6V
     Echo: 0xAA
Sending CMD58...
Response:
     In Idle State
     Card Power Up Status: BUSY
     VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     In Idle State
Sending CMD55...
Response:
     In Idle State
Sending ACMD41...
Response:
     Card Ready
Sending CMD58...
Response:
     Card Ready
     Card Power Up Status: READY
     CCS Status: 0
     VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD9...
Response:
CSD:
     CSD Version.. 1.0
     TAAC:........ 0x06 0x04
     NSAC:........ 0x00
     TRAN_SPEED:.. 0x02 0x06
     Capacity 1'977'614'336bytes.

Finddrive with size 0x0004C3F0

Finddrive with size 0x001DD138
Create VCB 0x6F66

Read Init File: 'RLV12.INI'

Init - RLV12.INI not found

]

As there was no RLV12.INI (for now it always looks for RLV12.INI, later the filename will depend on the emulation firmware). The MSCP Emulator has silently attached partitions to units.

]show units
Unit 0 (0x4D90) is attached to partition 01 (0x6FE2) starting at sector 0x00000800
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54

Unit 1 (0x4DA0) is attached to partition 02 (0x6FC2) starting at sector 0x0004D000
  Drive has 0x001DD0D1 blocks, 0x39 sectors/track, 0x13 tracks/cylinder and 0x0781 cylinders  
  Drive type/flags and name 0x00/0x01  RA72

Unit 2 (0x4DB0) is not attached 

Unit 3 (0x4DC0) is not attached 

]

Unit 0 and Unit 1 are now available and can be brought online by MSCP commands.

SD-Cards prepared in this way can be used without startup configuration file and are ready to boot the PDP-11 from any unit without intervention on the command line.

Initialisation File

As you have noticed, the MSCP Emulator looks up all partition and the first FAT-32 formatted partition will be used as normal volume to store disk images. You can also place a text file named RLV12.INI to the root directory of this volume which allows you to do your own mapping of partitions and disk images to the units. See what happens when the MSCP Emulator finds such a initialisation file.


]
SD Card inserted 0xF0 0xF8 0xFC 0xFE 0xFF 0xFF 0xFF 0xFF
Sending CMD0...
Response:
        Address Error
        Erase Sequence Error
        CRC Error
        Illegal Command
        Erase Reset Error
        In Idle State
Sending CMD8...
Response:
        In Idle State
        Command Version: 00
        Voltage Accepted: 2.7-3.6V
        Echo: 0xAA
Sending CMD58...
Response:
        In Idle State
        Card Power Up Status: BUSY
        VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD55...
Response:
        In Idle State
Sending ACMD41...
Response:
        In Idle State
Sending CMD55...
Response:
        In Idle State
Sending ACMD41...
Response:
        In Idle State
Sending CMD55...
Response:
        In Idle State
Sending ACMD41...
Response:
        Card Ready
Sending CMD58...
Response:
        Card Ready
        Card Power Up Status: READY
        CCS Status: 0
        VDD Window: 2.7-2.8, 2.8-2.9, 2.9-3.0, 3.0-3.1, 3.1-3.2, 3.2-3.3, 3.3-3.4, 3.4-3.5, 3.5-3.6
Sending CMD9...
Response:
CSD:
        CSD Version.. 1.0
        TAAC:........ 0x06 0x04
        NSAC:........ 0x00
        TRAN_SPEED:.. 0x02 0x06
        Capacity   507'379'712bytes.

Finddrive with size 0x00005000

Finddrive with size 0x00005000

Finddrive with size 0x00005000

Finddrive with size 0x00005000

Finddrive with size 0x00005000

Finddrive with size 0x00005000

Finddrive with size 0x0004C400

Finddrive with size 0x0004C400
Create VCB 0x6EA6

Read Init File: 'RLV12.INI'

Init - RLV12.INI successfully opened
Init - Executing Command:'[RLV12]'
Init - Executing Command:'attach unit0 par8'

]

Even so it has found many partitions


]show partitions
Partition 01 (pcb:0x6FE2) starting at sector 0x0000003F MBR at 0x00000000 is not attached
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 02 (pcb:0x6FC2) starting at sector 0x00005079 MBR at 0x00000000 is not attached
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 03 (pcb:0x6FA2) starting at sector 0x0000A0B3 MBR at 0x00000000 is idle offset 0x01DE
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 04 (pcb:0x6F82) starting at sector 0x0000F0ED MBR at 0x0000F0B3 is idle offset 0x01BE
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 05 (pcb:0x6F62) starting at sector 0x00014127 MBR at 0x000140ED is idle offset 0x01BE
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 06 (pcb:0x6F42) starting at sector 0x00019161 MBR at 0x00019127 is not attached
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02
Partition 07 (pcb:0x6F22) starting at sector 0x0001E19B MBR at 0x0001E161 is not attached
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
Partition 08 (pcb:0x6F02) starting at sector 0x0006A5BD MBR at 0x0006A59B is attached
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
Partition 43 (pcb:0x6EE2) starting at sector 0x000B69DF MBR at 0x000B69BD is volume C:
 Label:"FILES      " Volume Size:      242'928 Sectors

]

they are not automatically attached to units and instead the RLV12.INI file is analyzed. In our example the initialisation file has just two lines. You can in fact display the contents text files using the MSCP emulator by using the type command.

]type RLV12.INI
[RLV12]
attach unit0 par8
]

The first entry is the keyword [RLV12]. This let’s the MSCP Emulator start to interprete the next lines as commands. And as you can see there is only one command that attaches Partition 8 to Unit 0, which will set the MSCP Emulator to the following configuration

]show units
Unit 0 (0x4D90) is attached to partition 08 (0x6F02) starting at sector 0x0006A5BD
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54

Unit 1 (0x4DA0) is not attached 

Unit 2 (0x4DB0) is not attached 

Unit 3 (0x4DC0) is not attached 

]

In other word just one unit is available. Of course you can now manually change the configuration. You can dettach and attach partitions and disk images as required. However be careful that your changes do not affect a potentially running system on your PDP-11. Else the result will be catastrophic. E.g. the MSCP Emulator will set the unit offline, but it cannot know if a subsequent online request from the host expects that the disk has changed. I did not yet implement the “offline” message to inform the OS about changes. Your manual changes will also be lost when you power-cycle the sytem or enter the reset comand.

Disk Image Files

As already mentioned you can also attach units to disk image files. For this the SD-Card must contain a FAT-32 formatted partition. Only the first FAT-32 formatted partition is considered. When inserted you can use the commands dir, pwd, cd to view and list the content.

]pwd
/

]dir
Directory of /

A    Cl:00000000  <Volume>     FILES
     Cl:00000086  <DIR>        diskimages

]cd diskimages
]pwd
/diskimages

]dir
Directory of /diskimages

A    Cl:0000008B 1'000'448'512 2.11BSD_rq.dsk
A    Cl:000077D2   159'385'600 rsx11mplus_4_6_bl87.dsk
A    Cl:00008AE3    10'485'760 rsx11mphack.dsk
A    Cl:00008C25    10'485'760 rt11v57dl4.dsk

]cd ..
]dir diskimages
Directory of /diskimages

A    Cl:0000008B 1'000'448'512 2.11BSD_rq.dsk
A    Cl:000077D2   159'385'600 rsx11mplus_4_6_bl87.dsk
A    Cl:00008AE3    10'485'760 rsx11mphack.dsk
A    Cl:00008C25    10'485'760 rt11v57dl4.dsk

]

Hint:when you use the terminal window and use cp on a macOS to copy disk images one after the other to the SD-Card, in this case to the directory diskimages the chances are high that the files are contiguous. This is not really a requirement but slightly increases the performance of the MSCP Emulator. the fewer fragments a file has, the faster is the logic to translate host system IOs to SD-Card reads and writes.

Now you can try to attach these disk images to units

]dir diskimages
Directory of /diskimages

A    Cl:0000008B 1'000'448'512 2.11BSD_rq.dsk
A    Cl:000077D2   159'385'600 rsx11mplus_4_6_bl87.dsk
A    Cl:00008AE3    10'485'760 rsx11mphack.dsk
A    Cl:00008C25    10'485'760 rt11v57dl4.dsk

]att un1 diskimages/rsx11mplus_4_6_bl87.dsk
Finddrive with size 0x0004C004

Attach - Full File Name:'diskimages/rsx11mplus_4_6_bl87.dsk'
/diskimages/rsx11mplus_4_6_bl87.dsk

]show unit
Unit 0 (0x4D90) is attached to partition 07 (0x6F22) starting at sector 0x00021800
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
  Unit is ONLINE 

Unit 1 (0x4DA0) is attached to file (0x6A56) /diskimages/rsx11mplus_4_6_bl87.dsk
  File is contiguous.
  Fragments of file
  Start:0029AA34  Length:0004C040
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54

Unit 2 (0x4DB0) is not attached 

Unit 3 (0x4DC0) is not attached 

]att un2 diskimages/2.11BSD_rq.dsk
Finddrive with size 0x001DD0D1

Attach - Full File Name:'diskimages/2.11BSD_rq.dsk'
/diskimages/2.11BSD_rq.dsk

]show unit
Unit 0 (0x4D90) is attached to partition 07 (0x6F22) starting at sector 0x00021800
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54
  Unit is ONLINE 

Unit 1 (0x4DA0) is attached to file (0x6A56) /diskimages/rsx11mplus_4_6_bl87.dsk
  File is contiguous.
  Fragments of file
  Start:0029AA34  Length:0004C040
  Drive has 0x0004C004 blocks, 0x11 sectors/track, 0x0F tracks/cylinder and 0x04C8 cylinders  
  Drive type/flags and name 0x00/0x01  RD54

Unit 2 (0x4DB0) is attached to file (0x69F2) /diskimages/2.11BSD_rq.dsk
  File is contiguous.
  Fragments of file
  Start:000BD874  Length:001DD100
  Drive has 0x001DD0D1 blocks, 0x39 sectors/track, 0x13 tracks/cylinder and 0x0781 cylinders  
  Drive type/flags and name 0x00/0x01  RA72

Unit 3 (0x4DC0) is not attached 

]

The MSCP Emulator will recognise if a file is contiguous and flags it as such. The result is that IO is as performant as for partitions. On the other hand the impact on performance in case the file is non-contiguous is not really that much. Note as well, that the memory of the microcontroller will be able to handle only approx 200 fragment windows. The logic of windows is similar to the logic of the F11ACP in RSX-11M except that we do not limit the number of windows held in memory, instead we either can hold all fragment windows in memory or the file will not be attached.

RLV12.INI

For the time being the MSCP Emulator looks for a file named RLV12.INI in the root directory. If such a file is found it will not automatically attach partitions with disk images to the units but instead look up the file for commands to execute. Before it executes any command it expects to find a line with the keyword

[RLV12]

Then it will process any line as if it was entered via the command line interface. As a start I recommend to just use the attach command. You can either attach units to partitions or disk image files on the first FAT-32 partition on the SD-Card. Any syntax error will just print an error message and the command will be ignored. Processing continues with the next line until the end of the file is reached.

For more commands that can be used see the corresponding article.

About Disk Images

The MSCP Emulator tries to match the size of a partition or a disk image to an internal table. In this table I have listed a number of known disk types. But instead of exact sizes I have allowed for some extra blocks for disk entries that are not always seen with the real size of the disk, e.g. the RD54 disk image found on the internet had 311300. blocks whereas the real RD54 has only 311200. blocks. Also simh tends to add some blocks to existing disk images for no obvious reasons and once the disk image has been used it is physically larger but logically still the same. E.g. the RTSE/E disk image I have received to test had initially 311200. blocks but after being used once by simh it had 311201. Therefore I allowed for a range of blocks to identify disks. This identification is then used to return the known media type identifier which is then often used by operating systems to display the disk type attached to the unit.

The MSCP emulator will currently always report the real size of the disk image. Either the size of the partition or the size of the file rounded down to multiples of 512. bytes, aka entire blocks only. Also there is no RAUSER as in simh. Which means you need to provide a file with a matching size.

Note that the handling of disk sizes is still work in progress. Most likely I will add something similar to the RAUSER and there will be an option for the attach command to specify the size which should be reported to overwrite the real size of the disk image. How this will be implemented is still not decided.