AMSDOS Hidden RSX Functions
Below "Hidden" RSX commands are having non-ASCII names, so they cannot be used under BASIC by typing |NAME. Instead, they can be used only in machine code, by obtaining the function address via KL_FIND_COMMAND, for details see: BIOS Kernel RSX Functions (Resident System Extensions)
chr(81h) MESSAGE_ON_OFF ;in: A=flag(00h=on, >=01h=off) (R,I,C);out:A=old
Set Drive Speed
chr(82h) SET_DRIVE_SPEED ;in: HL=ptr to 9 bytes 00h 2 spin-up time in 1/50sec ticker ticks (usually 50) 02h 2 spin-down time in 1/50sec ticker ticks (usually 250) 04h 1 usually AFh, delay for chr(86h) function 05h 1 whatever? in 1ms units (usually 15 = 15ms) 06h 1 settletime AND steprate in 1ms units (usually 12 = 12ms) 07h 1 head unload time in 32ms units (usually 1 = 32ms) 08h 1 head load time, bit0=DMA disable (usually 16ms)
Set Disk Type
chr(83h) SET_DISK_TYPE ;in: A=type (0xh=IBM, 4xh=CPM, Cxh=DATA)
chr(84h) READ_SECTOR ;in: E=drv, D=trk, C=sec, HL=dest chr(85h) WRITE_SECTOR ;in: E=drv, D=trk, C=sec, HL=src
chr(86h) FORMAT_TRACK ;in: E=drv, D=trk, C=sec1, HL=ptr to 9x4 byte
chr(87h) SEEK_TRACK ;in: E=drv, D=trk, out: cy=1=okay
chr(88h) TEST_DRIVE ;in: A=drv, out: cy=1=okay
Set Retry Count
chr(89h) SET_RETRY_COUNT ;in: A=retry count (default=10) (01h..(1)00h)
[C006h] INIT ;in/out: DE=LORAM, HL=HIRAM, CY=?
This the initialization function (called by KL_ROM_WALK, which is automatically done on power-up). The function is always found in the first entry of the RSX lists, ie. [C006h]=address, and [C004h]=name. Where known names are:
"CPM ROM" Amstrad AMSDOS and Vortex VDOS1.0 "V ROM" Vortex VDOS2.0 "Pdos" PARADOS "Vdos" VARADOS "ROMDOS " KDS ROMDOS, Siren Software ROMDOS XL, and XL 4.0 "XDDOS ROM" Dobbertin X-DDOS 1.11 and X-DDOS 2.10 "RODOS ROM" Romantic Robot RODOS 2.11, 2.15, 2.19
The names are typically containing "invalid" characters like spaces or lowercase letters, so they can't be accidentally used in BASIC as |NAME.
- AMSDOS supports only single-sided disks (the FDC supports two sides, but AMSDOS doesn't). All other DOS clones like VDOS, RODOS, ROMDOS, PARADOS, XD-DOS support double-sided disks. However, unknown if/how some/all/which of that clones allow to access the 2nd side via above functions (possibly/best by unused bits in the drive number, or by extending track number to 0..159 for 2x80 tracks)?
- The above chr(8xh) function vectors are usually at ROM7:C033h..C04Dh in AMSDOS, however, clones like VDOS, RODOS, ROMDOS, X-DDOS have the vectors arranged differently, so always use KL_FIND_COMMAND to obtain the function address.