.bp .pn 51 .cs 5 .mt 5 .mb 6 .pl 66 .ll 65 .po 10 .hm 2 .fm 2 .he CP/M-8000 Programmer's Guide 4.2 File Access Functions .ft All Information Presented Here is Proprietary to Digital Research .tc 4.2.18 Write Random With Zero Fill Function .sh 4.2.18 Write Random With Zero Fill Function .qs .sp 3 .nf FUNCTION 40: WRITE RANDOM WITH ZERO FILL Entry Parameters: Register R5: 28H Register RR6: FCB Address Returned Values: Register R7: Return Code success: 00H error: 02H, 03H 05H, 06H .sp 2 .fi .pp The Write Random With Zero Fill Function, like the Random Write Function (34), writes a 128-byte record from the current DMA buffer to the disk file. The address of a 36-byte FCB is passed in register RR6. The last three bytes contain the FCB random record field. This field specifies the record number of the record that this write random function writes to the file. Refer to Write Random Function (34) for details on the FCB and setting its random record field. .pp Like the Write Random Function, this function allocates a data block before writing the record when a block is not already allocated. However, in addition to allocating the data block, this function also initializes the block with zeroes before writing the record. If your program uses this function to write random records to files, it ensures that the contents of unwritten records in the block are predictable. .pp After the random write function completes, register R5 contains either an error code (see Table 4-9), or the value 00H, which indicates the operation was successful. .bp .he CP/M-8000 Programmer's Guide 4.3 Drive Functions .tc 4.3 Drive Functions .sh 4.3 Drive Functions .qs .ix drive functions .pp This section describes drive functions that reset the disk system, select and write-protect disks, and return vectors. They include the functions listed in Table 4-11. .sp 2 .ce .sh Table 4-11. Drive Functions .sp .nf .in 7 Function Function Number .sp Reset Disk System 13 .sp Select Disk 14 .sp Return Login Vector 24 .sp Return Current Disk 25 .sp Write Protect Disk 28 .sp Get Read-Only Vector 29 .sp Get Disk Parameters 31 .sp Reset Drive 37 .sp Get Disk Free Space 46 .bp .in 0 .fi .tc 4.3.1 Reset Disk System Function .sh 4.3.1 Reset Disk System Function .qs .ix reset disk system function .sp 3 .nf FUNCTION 13: RESET DISK SYSTEM Entry Parameters: Register R5: 0DH Returned Values: Register R7: 00H .sp 2 .fi .pp The Reset Disk System Function restores the file system to a reset state. All disks are set to read-write (see Write Protect Disk (28) and Get Read-Only Vector (29) Functions), and all the disk drives are logged out. This function can be used by an application program that requires disk changes during operation. The Reset Drive Function (37) can also be used for this purpose. All files must be closed before your program invokes this function. .ix reset disk .bp .tc 4.3.2 Select Disk Function .sh 4.3.2 Select Disk Function .qs .ix select disk function .sp 3 .nf FUNCTION 14: SELECT DISK Entry Parameters: Register R5: 0EH Register R7: Disk Number Returned Values: Register R7: 00H .sp 2 .fi .pp 5 The Select Disk Function designates the disk drive specified in register R7 as the default disk for subsequent file operations. The decimal numbers 0 through 15 correspond to drives A through P. For example, R7 contains a 0 for drive A, a 1 for drive B, and so forth through 15 for a full 16-drive system. In addition, the designated drive is logged-in if it is currently in the reset state. Logging in a drive places it in an on-line status which activates the drive's directory until the next cold start, or Reset Disk System (13) or Reset Drive (37) Function. .pp When the FCB drive code equals zero (dr = 0H), this function references the currently selected drive. However, when the FCB drive code value is between 1 and 16, this function references drives A through P. .pp If this function fails, CP/M-8000 returns a CP/M Disk select error, which is described in Section 4.2.2. .ix select disk .bp .tc 4.3.3 Return Login Vector Function .sh 4.3.3 Return Login Vector Function .qs .sp 3 .ix return login vector function .nf FUNCTION 24: RETURN LOGIN VECTOR Entry Parameters: Register R5: 18H Returned Values: Register R7: Login Vector .sp 3 .fi .pp The Return Login Vector Function returns in register R7 a 16-bit value that denotes the log-in status of the drives. The least significant bit corresponds to the first drive A, and the high order bit corresponds to the sixteenth drive, labeled P. Each bit has a value of zero or one. The value zero indicates the drive is not on-line. The value one denotes the drive is on-line. When a drive is logged in, its bit in the log-in vector has a value of one. Explicitly or implicitly logging in a drive sets its bit in the log-in vector. The Select Disk Function (14) explicitly logs in a drive. File operations implicitly log in a drive when the FCB drive field (dr) contains a nonzero value. .ix login vector .bp .tc 4.3.4 Return Current Disk Function .sh 4.3.4 Return Current Disk Function .qs .sp 3 .ix return current disk function .nf FUNCTION 25: RETURN CURRENT DISK Entry Parameters: Register R5: 19H Returned Values: Register R7: Current Disk .sp 2 .fi .pp The Return Current Disk Function returns the current default disk number in register R7. The disk numbers range from 0 through 15, which correspond to drives A through P. Note that this numbering convention differs from the FCB drive field, which specifies integers 1 through 16 correspond to drives labeled A through P. .ix return current disk .ix current default disk numbers .bp .tc 4.3.5 Write Protect Disk Function .sh 4.3.5 Write Protect Disk Function .qs .ix write protect disk function .sp 3 .nf FUNCTION 28: WRITE PROTECT DISK Entry Parameters: Register R5: 1CH Returned Values: Register R7: 00H .sp 2 .fi .pp The disk write protect function provides temporary write protection for the currently selected disk. Any attempt to write to the disk, before the next cold start, warm start, disk system reset, or drive reset operation produces the message: .sp .ti 8 Disk change error on drive x .ix write protect disk .ix disk change error .sp Your program terminates when this error occurs. Program control returns to the CCP. .bp .tc 4.3.6 Get Read-Only Vector Function .sh 4.3.6 Get Read-Only Vector Function .qs .ix get Read-Only vector function .sp 3 .nf FUNCTION 29: GET READ-ONLY VECTOR Entry Parameters: Register R5: 1DH Returned Values: Register R7: Read-Only Vector Value .sp 2 .fi .ix read-only bit .pp The Get Read-Only Vector Function returns a 16-bit vector in register R7. The vector denotes drives that have the temporary read-only bit set. Similar to the Return Login Vector Function (24), the least significant bit corresponds to drive A, and the most significant bit corresponds to drive P. The Read-Only bit is set either by an explicit call to the Write Protect Disk Function (28), or by the automatic software mechanisms within CP/M-8000 that detect changed disks. .ix get read-only vector .bp .tc 4.3.7 Get Disk Parameters Function .sh 4.3.7 Get Disk Parameters Function .qs .ix get disk parameters function .sp 3 .nf FUNCTION 31: GET DISK PARAMETERS Entry Parameters: Register R5: 1FH Register RR6: CDPB Address Returned Values: Register R7: 00H Register CDPB: Contains DPB Values .sp 2 .fi .ix DPB .ix CDPB .pp The Get Disk Parameters Function writes a copy of the 16-byte BIOS Disk Parameter Block (DPB) for the current default disk, called the CDPB, at the address specified in register RR6. Figure 4-2 illustrates the format of the DPB and CDPB. The values in the CDPB can be extracted and used for display and space computation purposes. Normally, application programs do not use this function. For more details on the BIOS DPB, refer to the \c .ul CP/M-8000 Operating System System Guide. .qu .sp 3 .nf SPT BSH BLM EXM RES DSM DRM RES CKS OFF 16 8 8 8 8 16 16 16 16 16 .sp 2 .fi .ce .sh Figure 4-2. DPB and CDBP .qs .bp .pp Table 4-12 lists the fields in the DPB and CDPB. .sp 2 .ce .sh Table 4-12. Fields in the DPB and CDPB .qs .sp .nf .in 5 Field Description .fi .sp .ll 60 .in 18 .ti -12 .qs SPT Number of 128-byte logical sectors per track .sp .ti -12 BSH Block shift factor .sp .ti -12 BLM Block mask .sp .ti -12 EXM Extent mask .sp .ti -12 RES Reserved byte .sp .ti -12 DSM Total number of blocks on the disk .sp .ti -12 DRM Total number of directory entries on the disk .sp .ti -12 RES Reserved for system use .sp .ti -12 CKS Length (in bytes) of the checksum vector .sp .ti -12 OFF Track offset to disk directory .in 0 .ll 65 .ix get address of disk parameter block .bp .tc 4.3.8 Reset Drive Function .sh 4.3.8 Reset Drive Function .qs .ix reset drive function .sp 3 .nf FUNCTION 37: RESET DRIVE Entry Parameters: Register R5: 25H Register R7: Drive Vector Returned Values: Register R7: 00H .sp 2 .fi .pp The Reset Drive function restores specified drives to the reset state. A reset drive is not logged-in and its status is read-write. Register R7 contains a 16-bit vector indicating the drives this function resets. The least significant bit corresponds to the first drive, A. The high order bit corresponds to the sixteenth drive, labeled P. Bit values of 1 indicate the drives this function resets. .ix reset drive .pp To maintain compatibility with other Digital Research operating systems, this function returns the value zero in register R7. .bp .tc 4.3.9 Get Disk Free Space Function .sh 4.3.9 Get Disk Free Space Function .qs .ix get disk free space function .sp 3 .nf FUNCTION 46: GET DISK FREE SPACE Entry Parameters: Register R5: 2EH Register R7: Disk Number Returned Values: Register DMA Buffer: Free Sector Count .fi .sp 2 .ix free sector count .pp The Get Free Disk Space Function returns the free sector count, the number of free 128-byte sectors on a specified drive, in the first four bytes of the current DMA buffer. The drive number is passed in register R7. CP/M-8000 assigns disk numbers sequentially from 0 through 15 (decimal). Each number corresponds to a drive in the range A through P. For example, the disk number for drive A is 0 and for drive B, the number is 1. .pp Note that these numbers do not correspond to those in the drive field of the FCB. The FCB drive field (dr) uses the numbers 1 through 16 (decimal) to designate drives. .nx foure