From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search

The disc operating system VDOS was developed by the German company Vortex.

It was provided for use with the Vortex Disc Drives from Vortex (F1-D, F1-S, F1-X, M1-D, M1-S or M1-X).

VDOS was supplied on an EPROM, and was released in 3 versions:

  • VDOS 1.0
  • VDOS 2.0
  • VDOS 2.11

Further there were German and English versions of this ROMs.

The VDOS ROM also contained a machine language monitor.

VDOS is the first DOS to support the Vortex format which become a standard format later on.


  • Vortex is a German company, so they added RSX commands in German and English language. VDOS had both |TAPE and |CAS (which resemble equivalent German word Kassette). (Dobbertin's X-DDOS had the same for compatibility).
  • |USER/|DRIVE did not exist in V1.0 instead |SELECT is used (which resemble equivalent German word Selektieren). (Dobbertin's X-DDOS also had |SELECT for compatibility).

|SELECT is used to both select user and/or drive. e.g. |SELECT,"3" for user 3, |SELECT,"B" for drive B, |SELECT "4B" for user 4 on drive B. VDOS doesn't have USER or DRIVE commands.

  • VDOS supplied both German ROMs (with messages in their native language) and English ROMs where the messages are translated. The RSX commands are identical.
  • When using the firmware function CAS CATALOG you give it the address of a buffer to fill with the list of files in the current user and drive (in SOFT968 this is a 2KB buffer but only because AMSDOS is limited to 64 directory entries and each directory is 32 bytes - 64x32 = 2048). For VDOS you should use a 4KB buffer to support 128 directory entries. In addition the format of the data stored in the buffer differs compared to AMSDOS.

AMSDOS uses:

<ff> <8 bytes filename> <3 bytes extension> <2 bytes size in K> with a byte of 00 to indicate the end of the list.

VDOS uses:

<user> <8 bytes filename> <3 bytes extension> <2 bytes size in K> with a byte of FF to indicate the end of the list.

This is important if you use CAS CATALOG and parse the data to fetch the list of files.

  • AMSDOS allows you to specify both the user and drive in a filename.

e.g. "3B:TEST.BIN" is valid and will try to find TEST.BIN in user 3 of drive B.

VDOS doesn't allow this. VDOS only allows the drive to be specified.

e.g. "B:TEST.BIN".

Therefore it's recommended to use SELECT to specify the user. A program should also not rely on the memory location of DOS specific data and poke it directly. Therefore it should use KL FIND COMMAND to detect |SELECT and use that if found, otherwise find and use |DRIVE and |USER. This allows maximum compatibility.

  • VDOS will autoboot a file called "HELLO.BAS" if it exists on the disc. AMSDOS doesn't have this. This is VDOS's 'Turnkey' system.
  • VDOS 1.0 supports 3 drives but only two are accessibly by VDOS at one time. The DOS stores details for 2 XDPB at one time. Using |S you can change the logical drive mappings. Logical drive A is normally unit 0 and logically drive B is normally unit 1. With |S you can map unit 2 to logical drive A or to logical drive B.
|S,0 - 3rd drive is ignored:
|S,0:|SELECT,"A" - access unit 0
|S,0:|SELECT,"B" - access unit 1
|S,1 or |S,2 - choose if 'A' or 'B' is 3rd drive. i.e. Decide if |A is 1st drive or 3rd drive or |B is 2nd drive or 3rd drive.
|S,1:|SELECT,"A" - drive A is unit 2.
|S,2:|SELECT,"B" - drive B is unit 2.
  • TO BE CONFIRMED: VDOS supports other double sided disc formats by programming the XDPB. AMSDOS doesn't allow this.
  • When using CAS TEST EOF firmware function and soft end of file is reached the following conditions are return: carry true, zero false, A=&1A this is different to AMSDOS which has the conditions: carry false, zero false, A=&1A
  • When using CAS IN OPEN/CAS OUT OPEN VDOS will crop the filename and extension part. i.e. if you use the filename "LONGFILENAME.LONGEXTENSION" it will crop it to "LONGFILE.LON" and attempt to load it. AMSDOS will give a 'Bad command' error.
  • VDOS has different error codes compared to AMSDOS.
  • You should push/pop ix and iy around firmware functions if you use them. VDOS appears to have different conditions for some CAS functions. TO BE CONFIRMED: exactly which functions are different.

VDOS for Vortex Winchester Harddisk

  • The VDOS for the WD20 doesn't seem to autodetect the harddisk. It asks you if the interface is connected before accessing it.

Vortex Disc format

Sector numbers are 01h..09h (same as AMSDOS IBM Format, but with a 9th sector). Disks are Double-Sided, Double Density, 80 Tracks, 9 Sectors, blocks are allocated in 4K units. Total capacity is 720K (704K available):

  • First 9K contain two System Tracks (eg. CP/M Bootstrap)
  • Next 4K contain directory (see Note)
  • Next 704K are data (allocated in 4K blocks) (aka 4K clusters)
  • Last 3K are unused (due to 4K allocation size)

Note: According to the manual, the directory can hold 128 entries under VDOS2.0 (whole 4K used), but only 64 entries under VDOS1.0 (only half of the 4K area used).




Manual (German)