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.