Disk/User Manipulation Routines Get / Set Current User area - GUA, SUA Return the current Disk/User - RETUD Log into a specified Disk/User - LOGUD Save/Restore Current Disk/User - PUTUD, GETUD Set DMA Transfer Address - SETDMA ------------------------------------------------------------- Disk/User Manipulation Routines This is a set of six routines which allow the user to readily move around between Disks and User Areas. These routines are: GUA - Return the Current User SUA - Log into a specified User Area RETUD - Return the Current Disk/User LOGUD - Log into a specified Disk/User PUTUD - Save away the Current Disk/User GETUD - Restore the Disk/User saved by PUTUD GUA and SUA are to be used to find out what User Area the program is in (GUA) and to enter a specific User Area (SUA). For example: CALL GUA ; Find out current user PUSH AF ; Save it < move around on other user areas> POP AF ; Get current user CALL SUA ; Log into User GUA and SUA are useful in conjunction with the automatic disk logging feature of CP/M, where the first byte of the FCB indicates a Disk to autolog (1=A, 2=B, etc., 0=default). RETUD and LOGUD are to be used to find out where the program is (RETUD) and to enter a specific Disk/User Area (LOGUD). For example: CALL RETUD ; Find out where we are PUSH BC ; Save Disk/User < move around on disks/users > POP BC ; Get Disk/User CALL LOGUD ; Log into Disk/User PUTUD and GETUD are designed to be used as a place marker and return combination. They are intended to be used in such code sequences as the following: CALL PUTUD ; Mark current location < move around on disks/users > CALL GETUD ; Return to marked location Since PUTUD stores the values in a single level buffer, multiple calls to PUTUD should be avoided since GETUD will restore the last Disk/User saved by PUTUD. GUA - Return Current User Area ENTER: None EXIT : A = User Area (0-31) USES : AF Usage: This routine is simply used to return the currently logged User Area. No error codes exist with this function. SUA - Set Current User Area ENTER: A = User Area (0-31) EXIT : None USES : None Usage: This routine is used to log into the user area represented by the low-order 5 bits of the supplied value (value 0-31). No error codes exist with this function. RETUD - Return the Current Disk/User ENTER: None EXIT : BC = Disk/User. B=Disk (Drive A=0), C=User (0..31) USES : BC Usage: This routine is commonly used to return the currently logged User Number and currently logged Drive in a single operation. LOGUD - Log Into a Disk/User ENTER: BC = Disk/User. B=Disk (Drive A=0), C=User (0..31) EXIT : None USES : None Usage: This routine is used to log in a specified Drive and set the specified User Area to Current in a single operation. PUTUD - Save Away Disk/User GETUD - Restore Disk/User Saved by PUTUD ENTER: None EXIT : None USES : None Usage: These routines are commonly used near the beginning of a program or routine to save the Current User and Disk numbers for restoration upon program/routine exit. PUTUD saves the Current Disk and User in a local buffer, while GETUD restores these saved settings to the Currently logged BDOS values. The buffer used by PUTUD and GETUD is internal and not available for general use. SETDMA - Set the BDOS DMA Transfer Address ENTER: HL = Start of DMA Buffer to set EXIT : None USES : None Usage: This routine simply sets the DMA Transfer Address within the BDOS and BIOS to the specified address. Since no registers are destroyed by this routine, it is suitable for use within loops in programs.