uDISK and vTAPE
(Disclaimer uDisk is no relation to uDrive)

The CoCo 5 is setup for maximum compatibility with classic systems while offering some perks. One small perk is that some small parts of the systems memory can be used as replacements or supplements for floppy disk and tape storage and 160K of this storage will keep it's data after power down because of being in NVRAM.

The 256K NVRAM consists of 56K for Settings Memory + 40K for OS9 Boot from "ROM" +160K of uDisk memory.
Total uDisk memory comes to 1440K and may be divided by flexible partitions the standard partition layout is described in the layout below.

Designator OS9 Designation Notes:
U9 Boot Rom
40 K for OS9 boot ROM
U0 /ud0
The Disk starting @ 100K into NV-RAM is always designated U0.
U1 /ud1
The Disks fully in Volatile RAM are designated U1 ... U8,
there may be from zero to eight such disks and any set
is permissable for example you mifht have three disks
and those three might be U1,U4 and U8.
U2 /ud2
U3 /ud3
U4 /ud4
U5 /ud5
U6 /ud6
U7 /ud7
U8 /share
The uDisks standard configuration is all RS-DOS drives.

Default unDisk Map ( Factory Settings )

9 = 40K Qtr Disk in  NVRAM

0= 160K       Disk in  NVRAM
1= 160K       Disk in  RAM
2= 160K       Disk in  RAM
3= 160K       Disk in  RAM
4= 160K       Disk in  RAM
5= 160K       Disk in  RAM
6= 160K       Disk in  RAM
7= 160K       Disk in  RAM
8= 160K       Disk in  RAM
    =====
     1480K

To change this configuration you must first switch to Dual CoCo mode then change focus to the hardware manager and run the following commands.
[TANDY] (Press and repeat until you get the X prompt on the bottom of the screen.)
X> MODE DUAL (This command sets the CoCo5 to enter Dual CoCo mode on next Power UP)
X> RESET FULL (This command has the same effect as powering the CoCo5 OFF and then turning it back ON again.)
[TANDY] (Press and repeat until you get the H prompt on the bottom of the screen.)
H> REPART (This command will pop up a uDisk Info window and a summery help screen.)


Now Suppose you wanted to create a single 1440K  OS9 disk drive the commands would be as follow in bold.
H> REPART KILL ALL (This command deleted partitions 0 through 8 but not 9 which is immortal)

For OS-9 standard settings are assumed for 160,180,360,720 and 1440 Drives any other size requires explicit settingssuch as ,
REPART MAKE {drive number} DMODE /ud{drive number} cyl={number of virtual cylinders} sid={1 or 2} sct={sectors per track}
or the commands
H>REPART MAKE {drive number} BLANK {size in kilobytes 160 to 1440}K
H>RESTORE FROM TYPE={ TAR or DW } SOURCE={ for TAR{CASS or VCASS or VCR*} for DW {Drivewire URL must end with extension .DSK}
In the case of Tape storage the first file found is taken and should be either an .ADSK or .DSK file extension not checked the VCASS option limited to drives less then 256K in size and the VCR option only available if the advanced adapter supporting video digitization is installed.

Special features of U0:

The disk known as U0: or in Nitros9 as /ud0 has some special features:

H>ucompat {url} checks if the remote disk is compatible with U0: and creates a FIXIT script on the server to prep your virtual disk.
H>
ucompat without the URL looks at the contents of U0: and if the files os9boot,ccbkrn,sysgo,gofetch and the contents of /NVR total more then is 150K  then you are prompted for each file in /NVR to Keep or Move ? Each file moved is put in the /MOVED directory and the U0: disk is defraged super quick because the process is aided by GPU 32Bit 28MHz. block moves. If you reach a point where the next file puts you over the limit rather then being asked you are told that that file will be moved.

Ok so gofetch is a OS9 program that causes any file or program on the remote image of U0: to be synced with the actual ram drive as needed gofetch should be added to the startup so that required files will be synced as needed with the up to 1440K disk image on the drivewire server.

gofetch {url} where url is the url of the disk image of U0, the client must be running DOG so you can tell the dog to gofetch. Dog uses Toolshed to find and extract the wanted file and then gofetch uses drivewire to do a dw server list {url} where {url} is the url of the extracted file.

gofetch {url} PERDICT trys to predict what files you will need next  and supply them in the background.
gofetch
{url} ALL just downloads all of the content as quickly as possible halting that virtual CPU and displaying a progress bar @460KB/Sec this requires about 75 seconds for a full disk.

So all well and good but how would these uDisks actually be used.

Well at the  H> prompt's we can assign mappings to these uDisks.

How with the SET Commands.

Example with results and comments.

H>ULIST CPUS
  u0:>0#1,u1:>1#1,u2:>2#1,u3:>0#2,u4:>1#2,u5:>4#3,u6:>5#3,u7:>6#3,u8:SFF,u9:ROM#1
This is the "factory" default for a CoCo5 you read the above as
uDisk 0 mapped as drive 0 on CPU#1 
uDisk 1 mapped as drive 1 on CPU#1 ......
  ......  uDisk 7 mapped
into drive 6 on CPU#3 uDisk8 locked as Shared Follow Focus Disk and uDisk9 LOCKED as OS9 in ROM BOOTSTRAP and currently assigned to CPU#1.

Suppose we run these commands.

   SET u0:=#3(0)
   SET u1:=#3(1)
   SET u2:=#2(0)
   SET u3:=#1(0)
   SET u4:=#3(5)


Then
H>ULIST CPUS  will display
  u0:>0#3,u1:>1#3,u2:>0#2,u3:>0#1,4:>5#3,u5:>4#3,u6:>???,u7:>6#3,u8:SFF,u9:ROM#1

where the entry u6:>??? indicates that u6: exists but is not assigned to any virtual CoCo.
If CPU#3's previous drive 5 , u6: ,was not in use when the command
SET u4:=#3(5) was entered.
If however u6:  was in use then the command

SET u4:=#3(5)  would respond with the error message
Drive u6: currently locking 5#3 command failed.
and no changes would be made to the mapping of either u4: or u6:

 ☺


vTAPE

vTAPE refers to 256K of the CoCo5's memory that is dedicated to emulating a cassette tape. It can be used two ways:

This 256K area of memory may be assigned as a single 256K tape to a single virtual CoCo or may be setup as 4 or 8, 64K or 32K vTapes by the command VCT.

X>HRDMAN VCT SETUP=8 {This command wipes all data in virtual tape memory upon the next soft or hard reset.}
X>RESET 1,2,3 {Do a soft reset of witch ever virtual cpu's currently have a vcass connection in this example #1 #2 and #3 all have connections.}

By the way with CPU#0 in focus holding down the reset button and then holding down the keys 1, 2 and 3 and not releasing them until after releasing the reset button is the equivalent of typing RESET 1,2,3 [ENTER] at the X prompt, further keyboard presses are ignored until 1, 2 and 3 are all released.

The command
X>
HRDMAN #{CPU} NEXTRACK
switches virtual cassettes available to the virtual CPU to the next one on it's list.
If all vTAPES are assigned to a single CPU then the #{CPU} parameter is not needed if  also the vTape is in 8-Track mode the command
X>8TRK {n} can be used from either the X or H prompt in this case n is the track number.
Example:

8TRK  5

which means jump to track 5.