mirror of
https://github.com/open-simh/simtools.git
synced 2026-01-17 16:45:16 +00:00
318 lines
9.1 KiB
Plaintext
318 lines
9.1 KiB
Plaintext
How to use fsio to transfer files in/out of SIMH emulators
|
||
----------------------------------------------------------
|
||
|
||
The examples below assume a basic knowlegde of fsio (see the man pages - fsio.1
|
||
fsio-dos11.1 and fsio-rt11.1). The following examples assume that we want to
|
||
move an ASCII formatted file "file.txt" into the target operating system. If
|
||
fsio understands the target file system (DOS-11 and RT-11 right now), we can
|
||
copy the file directly into the SIMH container file used for booting the
|
||
operating system. For other target file systems we need to transfer into a
|
||
file system that the target operating system understands, even if it is not
|
||
the native file system for that operation system. In the DEC world, this is
|
||
typically RT-11.
|
||
|
||
Note: all of these examples assume that we are running on a Linux or Unix-like
|
||
operating system (in my case Raspbian on a Raspberry Pi).
|
||
|
||
Native File System Support
|
||
--------------------------
|
||
|
||
DOS-11
|
||
------
|
||
|
||
For DOS-11, fsio understands the native disk format so we can transfer
|
||
directly into the bootable SIMH disk ("system.dsk" in the examples).
|
||
|
||
pi@host:~ $ fsio
|
||
fsio> mount dk: system.dsk dos11
|
||
dk: successfully mounted
|
||
Total blocks: 4800, Free blocks: 3591, Interleave: 1
|
||
fsio> copy -a file.txt dk:file.txt
|
||
fsio> quit
|
||
pi@host:~ $
|
||
|
||
This will copy file.txt into the default UFD ([1,1]) on the target file system.
|
||
The copy will be in ASCII mode meaning that line endings will be translated
|
||
into the character pair <cr><lf> which DOS/BATCH-11 requires. If you wish to
|
||
transfer the file into another (existing) UFD (e.g. [200,200]) you can use
|
||
either of the following 2 options:
|
||
|
||
fsio> copy -a file.txt dk:file.txt[200,200]
|
||
|
||
or
|
||
fsio> set dk: uic [200,200]
|
||
fsio> copy -a file.txt dk:file.txt
|
||
|
||
If the destination UFD does not already exist on the target file system use
|
||
the following to create the UFD:
|
||
|
||
fsio> set dk: ufd [200,200]
|
||
fsio> copy -a file.txt dk:file.txt
|
||
|
||
RT-11
|
||
-----
|
||
|
||
For RT-11, fsio understands the native disk format so we can transfer
|
||
directly into the bootable SIMH disk ("rt11sys.dsk" in the examples). Note
|
||
that RT-11 disk images can hold multiple partitions, each having a maximum
|
||
size of 32MB. Partitions are named by appending an octal number to the device
|
||
name - xx0: will be the first partition, xx1: the second etc. fsio will only
|
||
allow access to partitions which have been initialized with an RT-11 file
|
||
system. The example below shows a disk with 3 partitions but only the first
|
||
and last have been initialized.
|
||
|
||
pi@host:~ $ fsio
|
||
fsio> mount dk: rt11sys.dsk rt11
|
||
dk: successfully mounted (2 partitions)
|
||
|
||
dk0:
|
||
Total blocks: 65536, Free blocks: 24279
|
||
Directory segments: 31 (Highest 4)
|
||
Extra bytes/directory entry: 0
|
||
dk2:
|
||
Total blocks: 65536, Free blocks: 65422
|
||
Directory segments: 31 (Highest 1)
|
||
Extra bytes/directory entry: 0
|
||
fsio> copy -a file.txt dk:file.txt
|
||
fsio> quit
|
||
pi@host:~ $
|
||
|
||
This will copy file.txt into the target file system. The copy will be in
|
||
ASCII mode meaning that line endings will be translated into the character
|
||
pair <cr><lf> which RT-11 requires. In addition, unless the file ends
|
||
exactly on a block (512 bytes) boundary, a ^Z (octal 32) will be appended
|
||
to the file indicating end-of-file.
|
||
|
||
|
||
Foreign File System Support
|
||
---------------------------
|
||
|
||
For other target operating systems we will use an RT-11 format RL02 disk as an
|
||
intermediary for performing the transfer:
|
||
|
||
pi@host:~ $ fsio
|
||
fsio> newfs -a xfer.dsk rt11
|
||
fsio> mount dk: xfer.dsk rt11
|
||
fsio> copy -a file.txt dk:file.txt
|
||
fsio> quit
|
||
pi@host:~ $
|
||
|
||
This will create a maximum sized, single partition RT-11 file system in a
|
||
container file called "xfer.dsk" which may be copied to the target system
|
||
running SIMH.
|
||
|
||
Once on the target system, the commands to copy the file into the emulated
|
||
operating system will depend on that operating system and, possible, its age.
|
||
|
||
RSX-11M/RSX-11M+
|
||
----------------
|
||
|
||
Use the FLX utility to copy the file over to the Files-11 file system:
|
||
|
||
>set /uic=[1,2]
|
||
>^E
|
||
Simulation stopped, PC: 017460 (BR 17426)
|
||
sim> att rq2 xfer.dsk
|
||
sim> c
|
||
|
||
>all du2:
|
||
>mou du2:/for
|
||
>ins $flx
|
||
>flx [200,200]/fa=du2:file.txt/rt
|
||
>pip [200,200]file.txt/fu
|
||
|
||
|
||
Directory DU0:[200,200]
|
||
2019-01-10 18:10
|
||
|
||
FILE.TXT;1 (6400,15) 1./1. 2019-01-10 18:09
|
||
[1,2] [RWED,RWED,RWED,R]
|
||
|
||
Total of 1./1. blocks in 1. file
|
||
|
||
>dmo du2:
|
||
18:10:28 *** DU2: -- Dismount complete
|
||
DMO -- TT0: dismounted from DU2: *** Final dismount initiated ***
|
||
>dea du2:
|
||
>^E
|
||
Simulation stopped, PC: 017460 (BR 17426)
|
||
sim> det rq2
|
||
sim> c
|
||
|
||
>
|
||
|
||
Note that RSX FLX cannot handle formatted ASCII input files with an embedded
|
||
^Z character indicating end-of-file. Use the "-p" switch during the copy to
|
||
pad the file with NULLs.
|
||
|
||
IAS
|
||
---
|
||
|
||
The following example assumes that you are logged into a non-console
|
||
terminal. You will still need to break in on the cosole with ^E and attach
|
||
the RT-11 transfer disk as in all the other examples.
|
||
|
||
PDS> ALLOC DL0:
|
||
PDS> MOU/FOR DL0:
|
||
MOUNT-**Volume Information**
|
||
Device =DL0
|
||
Class =Foreign
|
||
UIC =[201,201]
|
||
Access =[RWED,RWED,RWED,RWED]
|
||
Charac =[FOR,ATCH,DCF]
|
||
PDS> DIR DL0:/RT
|
||
|
||
|
||
DIRECTORY DL0:
|
||
31-JAN-99
|
||
|
||
FILE .TXT 1. 12-87
|
||
< UNUSED > 20411.
|
||
|
||
20411. FREE BLOCKS
|
||
|
||
TOTAL OF 1. BLOCKS IN 1. FILES
|
||
|
||
PDS> COPY DL:FILE.TXT/RT *.*
|
||
PDS> DIR
|
||
|
||
|
||
Directory DU0:[201,201]
|
||
31-JAN-99 15:56
|
||
|
||
FILE.TXT;1 1. 31-JAN-99 15:56
|
||
|
||
Total of 1./1. blocks in 1. file
|
||
|
||
PDS> DISM DL0:
|
||
DMO -- DL00: ** DISMOUNT COMPLETE **
|
||
|
||
Note that in order to use the RL02 drive from timesharing, the following
|
||
changes will need to be made to the IAS startup scripts of the PiDP-11
|
||
distribution:
|
||
|
||
1. [1,1]STARTUP.CMD
|
||
|
||
Add the following lines at the start of the file:
|
||
|
||
INS [11,1]DL
|
||
LOA DL
|
||
|
||
2. [1,1]IASSTART.CMD
|
||
|
||
Add the following lines after the one containing "DU0/S":
|
||
|
||
DL0
|
||
DL1
|
||
|
||
After making these changes, reboot the system and users will be able to access
|
||
the 2 RL02 drives.
|
||
|
||
|
||
RSTS/E
|
||
------
|
||
|
||
For this example I have used the "-a" on the fsio "newfs" command to create an
|
||
empty RL02 disk image. Use the "-p" switch on the fsio "copy" command to pad
|
||
the file with NULLs, otherwise the ^Z will be copied into the RSTS/E file. Use
|
||
the FIT utility to copy the file over to the RSTS/E file system:
|
||
|
||
$ ^E
|
||
Simulation stopped, PC: 065640 (BR 65630)
|
||
sim> att rl0 xfer.dsk
|
||
sim> c
|
||
|
||
$ run auxlib$:fit
|
||
FIT V10.1-A RSTS V10.1-L RSTS/E V10.1
|
||
FIT>sy:=dl0:file.txt/rt11
|
||
FIT>^Z
|
||
$ dir file.txt/fu
|
||
|
||
Name .Typ Size Prot Access Date Time Clu RTS Pos Op/rr SY:[1,2]
|
||
FILE .TXT 1 < 60> 12-Jan-19 12-Jan-87 04:23 PM 8 RT11 214 0/0
|
||
|
||
Total of 1 block in 1 file in SY:[1,2]
|
||
|
||
$ ^E
|
||
Simulation stopped, PC: 065640 (BR 65630)
|
||
sim> det rl0
|
||
sim> c
|
||
|
||
$
|
||
|
||
VMS
|
||
---
|
||
|
||
Use the exchange utility to copy the file over to the VMS file system:
|
||
|
||
$^E
|
||
Simulation stopped, PC: 80B90B8D (BBC #3,26C(R3),80B90BE1)
|
||
sim> att rq1 xfer.dsk
|
||
sim> c
|
||
|
||
$ mou/for dua1:
|
||
%MOUNT-I-MOUNTED, mounted on _ROUTER$DUA1:
|
||
$ exchange copy dua1:file.txt/volume=rt11/record=stream file.txt
|
||
%EXCHANGE-S-MOUNTED, the RT-11 volume _ROUTER$DUA1: has been mounted
|
||
$ dism dua1:
|
||
$^E
|
||
Simulation stopped, PC: 80B90936 (ASHL #1,R3,R0)
|
||
sim> det rq1
|
||
sim> c
|
||
|
||
$ dir file.txt
|
||
|
||
Directory SYS$SYSROOT:[SYSMGR]
|
||
|
||
FILE.TXT;1
|
||
|
||
Total of 1 file.
|
||
$
|
||
|
||
This can be especially useful for getting the Hobbyist licences into VMS
|
||
before you have any network running.
|
||
|
||
TOPS-10
|
||
-------
|
||
The RTFLX utility is available on TOPS-10 reading/writing files on an RX20
|
||
drive (combination of RX02 drive and controller) attached to a DECsystem-2020
|
||
(KS10). In order to access the RX20, a new system generation must be
|
||
performed. There is a help file on Tops-10 for RTFLX but no other
|
||
documentation.
|
||
|
||
.
|
||
Simulation stopped, PC: 000001 (SOJG 6,1)
|
||
sim> att ry0 xfer.dsk
|
||
RY: buffering file in memory
|
||
sim> c
|
||
|
||
.assign rxa0: rt:
|
||
RXA000 assigned
|
||
.r rtflx
|
||
|
||
|
||
RTFLX>dir
|
||
|
||
FILE TXT 1 11-Jun-87
|
||
|
||
Total of 1 block in 1 file
|
||
973 blocks free on RT:
|
||
|
||
RTFLX>copy rt:file.txt
|
||
FILE.TXT=RT:FILE.TXT
|
||
|
||
RTFLX>exit
|
||
|
||
.dir *.txt
|
||
|
||
|
||
FILE TXT 1 <057> 11-Jun-87 DSKB: [1,2]
|
||
|
||
.deassign rxa0:
|
||
.
|
||
|
||
If you use the RTFLX "ZERO" command to initialize an RT-11 file system it
|
||
will create an RT-11 V2 format file system and you will need to use the "-f"
|
||
switch to force fsio to see the file system.
|
||
|