! Set up VD: units with ADVD, assuming VDDRIVER is already ! loaded somewhere. DEFINE VERB AsnDF IMAGE sys$system:ASNDF_s264.EXE parameter p1,prompt="DFn:",value(required,type=$device),label=UNIT parameter p2,label=FNAM,prompt="file",value(type=$infile) qualifier ASSIGN qualifier DEASSIGN qualifier SEC64 qualifier SEC32 qualifier READONLY qualifier REPORT qualifier DEVICE qualifier LBN,value(required,type=$number) qualifier LENGTH,value(required,type=$number) qualifier GEOM,value(required,type=$infile) disallow lbn and report disallow length and report disallow sec64 and sec32 disallow device and lbn disallow device and sec64 disallow device and sec32 ! Needs CMKRNL at least. Maybe some others. ! Usage: asndf/switches dfn: dev:file ! where /switches are: ! /report - Tell what file is associated with a virtual disk (omit dev:file arg) ! /assign - Assign a file to a virtual disk unit ! /Deassign - Deassign a virtual disk from a file (puts vdn: offline) ! /SEC64 - Make vdn: geometry 64 sect/trk, 1 trk/cyl, n cyl ! /SEC32 - make vdn: geometry 32 sect/trk, 32 trk/cyl, n cyl ! (disks smaller than 65530 blks get 1 sect/trk, 1 trk/cyl, n cyl) ! default: Use /sec64 geometry unless disk is a "recognized" size in which ! case emulate geometry of the recognized disk type. ! Sizes recognized are of types following: !; losiz hisiz blks cyl trk sect id ! Geotbl 800, 805, 800, 1, 80, 10 ;rx50 ! Geotbl 4800, 4810, 4800, 200, 2, 12 ;RK05 ! Geotbl 10240, 10250, 10240, 256, 2, 40 ;RL01 (sect=256 bytes) ! Geotbl 20480, 20500, 20480, 512, 2, 40 ;RL02 (Sect=256 bytes) ! Geotbl 27126, 27150, 27126, 411, 3, 22 ;RK06 ! GeoTbl 53790, 53830, 53790, 815, 3, 22 ;RK07 ! GeoTbl 131680, 131700, 131680, 823, 5, 32 ;RM03 ! GeoTbl 138672, 138690, 138672, 1024, 8, 17 ;RD53 ! GeoTbl 171798, 171850, 171798, 411, 19, 22 ;RP04 ! GeoTbl 242606, 242650, 242606, 559, 14, 31 ;RM80 (or RB80) ! GeoTbl 340670, 340720, 340670, 815, 19, 22 ;RP06 ! GeoTbl 500384, 500420, 500384, 823, 19, 32 ;RM05 ! GeoTbl 891072, 891110, 891072, 1248, 14, 51 ;RA81 ! GeoTbl 1008000,1008500,1008000,630, 32, 50 ;RP07 ! GeoTbl 1216665,1216700,1216665,1423, 15, 57 ;RA82 ! where losiz and hisiz are sizes of files recognized as being containers of ! the device types, and the other columns are number of blocks, and geometry, ! for the devices. the id column is the device being emulated. Note that ! the device type will still be dt$_FD1 or dt$_rp06 (in vddriver) but ! the geometry is determined as above. ! ! If the /LBN=nnnnn and /LEN=mmmmm switches are used, a command of form ! asnvdm6/assign/lbn=nnnnn/len=mmmmm vdn: device:foo ! will assign the mmmmm blocks starting with logical block nnnnn on device: ! as the container for vdn: (e.g. vd2:) instead of requiring a container file. ! This allows use of foreign mounted or unmounted disks, or any other contiguous ! space. BE CAREFUL using it though; it can totally clobber file structures ! if misused. ! /DEVICE simply assigns the entire container device to the virtual disk ! and overrides file specifiers AND /LBN specifiers. ! When using INIT on emulated disks, use the /NOVERIFY switch to avoid losing ! a bunch of blocks at the end as "bad" (even though they're OK). Otherwise the ! failure to find hardware badblock info causes INIT to declare the last ! track bad. ! You can add new devices to the table by modifying the geotbl entries ! in asnvdm6.mar. Be sure that losiz is at least as large as blks, ! that blks=trk*sect*cyl, and that hisiz>losiz. Also, enter the table ! entries in order of size for sensibility. Hisiz can be equal to losiz ! if that's what you want, but I suggest that it be larger by the ! value of sect anyway; you'd lose less space. Fictitious geometries ! can be added, just so cyl fits into a 16 bit word and trk and sect ! fit into 8 bit bytes. Set the sign bit at your own risk, though. ! Things might break if the number of sectors/track or tracks/cyl ! ever exceed 127. Cylinders of 65000 have been tried and do indeed ! work however.