IF1 ; %OUT COMPONENT=DISKCOPY, INCLUDING DISKCOPY.EQU... ; ENDIF ; ; $SALUT (4,21,26,36) ;---------------------------------------------------------------------------; ; EQUATES ; ;---------------------------------------------------------------------------; ; *** CONSTANTS *** ZERO EQU 0 ; ONE EQU 1 ; TWO EQU 2 ; THREE EQU 3 ; FOUR EQU 4 ; TYPE_4 EQU 4 ; FIVE EQU 5 ; SIX EQU 6 ; SEVEN EQU 7 ; EIGHT EQU 8 ; NINE EQU 9 ; TEN EQU 0AH ; ON EQU 1 ; OFF EQU 0 ; TRUE EQU 01 ; FALSE EQU 00 ; GOOD EQU 0 ; BAD EQU 1 ; FIRST EQU 1 ; SECOND EQU 2 ; NO_ERROR EQU 0 ; SOFT_ERROR EQU 1 ; HARD_ERROR EQU 2 ; BLANK EQU 20H ;BLANK IN ASCII (32 DEC) CLEAR_SEGMENT EQU 0E0H ;USED TO CLEAR SEGMENT BITS (ROUND UP ;TO NEXT SECTOR) SECTOR8 EQU 8 ; SECTOR9 EQU 9 ; SECTOR14 EQU 14 ; SECTOR15 EQU 15 ; DRV_48TPI EQU 0 ;48 TPI DRIVE DRV_96TPI EQU 1 ;96 TPI DRIVE DRV_720 EQU 2 ;3.5", 720 KB DRIVE (FOR CASHEW OR P14) NRLFUNC EQU 5F02H ;GET NETWORK-REDIRECTION-LIST FUNCTION NRLMAX EQU 1CH ;(MAXIMUM # OF NAMES ON NRL) - 1 DOS20 EQU 2 ;DOS VERSION 2.0 PUBLIC FINE ;AN000;PARSER NEEDS IT FINE EQU -1 ;"FINE AND DANDY", USED FOR RETURN CODE ;(-1 WAS USED TO AVOID CONFUSION WITH ERROR ;OFFSET WHICH CAN BE ZERO) LOCAL_DRV EQU -1 ;DEVICE NOT DIRECTED REMOTE_DRV EQU 1000H ;REMOTE DRIVE TEST BITS NO_OPTION EQU -1 ;NO OPTION "/1" SPECIFIED OPTION_1 EQU 1 ;OPTION "/1" SPECIFIED REMOVABLE EQU 0000H ;REMOVABLE FILE INVAL_PARM EQU -9 ;INVALID PARAMETER ENTERED ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; *** COPY STATUS BYTE *** FATAL EQU 01H ;FATAL COPY ERROR, ABORT OK EQU 00H ;OK, PROCEED ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; *** PROGRAM SEGMENT PREFIX *** FCB1_DRV_ID EQU 5CH ;DRIVE NUMBER ADDR IN FILE CONTROL BLOCK 1 FCB1_FILENM EQU 5DH ;FILE NAME ADDR IN FILE CONTROL BLOCK 1 FCB2_DRV_ID EQU 6CH ;DRIVE NUMBER ADDR IN FILE CONTROL BLOCK 2 FCB2_FILENM EQU 6DH ;FILE NAME ADDR IN FILE CONTROL BLOCK 2 BEGIN_UNFORM_AREA EQU 80H ;BEGINNING @ OF THE UNFORMATTED AREA END_UNFORM_AREA EQU 100H ;ENDING @ OF THE UNFORMATTED AREA ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; *** DOS FUNCTONS *** KB_INPUT_FUNC EQU 01H ;DOS KEYBOARD INPUT FUNCTION PRINT_FUNC EQU 09H ;DOS PRINT STRING FUNCTION REDIRECTED_FUNC EQU 09H ;IOCTL SUB FUNCTION ****** TO BE CHECKED **** CURRENTDRV_FUNC EQU 19H ;GET CURRENT DRIVE FUNCTION CALL DOSVER_FUNC EQU 30H ;DOS VERSION FUNCTION CALL IOCTL_FUNC EQU 44H ;IOCTL FUNCTION CALL GET_DISKBASE_VECTOR EQU 351EH ; SET_DISKBASE_VECTOR EQU 251EH ; GET_CTL_BREAK_VECT EQU 3523H ;AN000;GET VECTOR FOR INT 23H (CTRL-BREAK) SET_CTL_BREAK_VECT EQU 2523H ;AN000;SET VECTOR FOR INT 23H (CTRL-BREAK) DRIVE_CHECK EQU 4408H ;DOS CHECK FOR REMOVABLE DRIVE IOCTL CALL STD_ERROR EQU 0002H ;STANDARD ERROR FILE HANDLE WRITE_FILE EQU 40H ;WRITE TO FILE OR DEVICE FUNCTION CALL GET_ASSIGN_MODE EQU 5F00H ;SET ASSIGN MODE COMMAND SET_ASSIGN_MODE EQU 5F01H ;SET ASSIGN MODE COMMAND SERVER EQU 2AH ;NETWORK SERVER INTERUPT SHARED EQU 03H ;DEVICE SHARED CHECK EXTENDED_ERROR EQU 59H ;EXTENDED ERROR GET_DATE EQU 2AH ;AN000;READ SYSTEM DATE GET_TIME EQU 2CH ;AN000;READ SYSTEM TIME CLOCK RET_CD_EXIT EQU 4CH ;AN000;EXIT TO DOS, PASSING RETURN CODE GET_EXT_CNTRY_INFO EQU 65H ;AN000;GET EXTENDED COUNTRY INFORMATION YESNO_CHECK EQU 23H ;AN000;REQUEST (Y/N) CHECK OF GET_EXT_CNTRY_INFO NO EQU 0 ;AN006;(Y/N) RESPONSE IS "NO" YES EQU 1 ;AN000;(Y/N) RESPONSE IS "YES" BAD_YESNO EQU 2 ;AN000;(Y/N) RESPONSE IS NEITHER "Y" NOR "N" ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; *** IOCTL DISKETTE I/O FUNCTONS *** GENERIC_IOCTL_CODE EQU 0DH ;GENERIC IOCTL REQUEST MAJOR_CODE EQU 08H ;GENERIC IOCTL MAJOR CODE READ_FUNC EQU 61H ;IOCTL DISKETTE READ FUNCTION WRITE_FUNC EQU 41H ;IOCTL DISKETTE WRITE FUNCTION VERIFY_FUNC EQU 62H ;IOCTL DISKETTE VERIFY FUNCTION FORMAT_FUNC EQU 42H ;IOCTL DISKETTE FORMAT FUNCTION GETDEVPARM EQU 60H ;IOCTL GET DEVICE PARAMETER SETDEVPARM EQU 40H ;IOCTL SET DEVICE PARAMETER SET_LOGIC_DRIVE EQU 0FH ;AN000;IOCTL SET LOGICAL DRIVE ;(deleted ;AN013) GSET_MEDIA_ID EQU 69H ;GET OR SET MEDIA ID ;AN009; ;(deleted ;AN013) GET_ID EQU 0 ;AL=0;GET MEDIA ID ;AN009; ;(deleted ;AN013) SET_ID EQU 1 ;AL=1;SET MEDIA ID ;AN009; ;special Functions GET_SP_FUNC_DEF EQU 00000000B ;GET DEVICE PARM. DEFAULT BPB GET_SP_FUNC_MED EQU 00000001B ;GET DEVICE PARM. BOOT BPB SET_SP_FUNC_DEF EQU 00000100B ;SET DEFAULT DEVICE PARM SET_SP_FUNC_DOS EQU 00000100B ;SET DEVICE PARM BEFORE RETURN TO DOS. SET_SP_BF_FORM EQU 00000101B ;SET DEV PARM BEFORE FORMAT R_W_SP_FUNC EQU 00000000B ;READ, WRITE STATUS_CHK EQU 00000001B ;USED IN FORMAT PACKET AND VALIDATE ;THE "SET DEVICE PARM" REQUEST. FORMAT_SP_FUNC EQU 00000000B ;FORMAT .XLIST ; ;READ_DASD_FUNC EQU 15H ;BIOS READ DASD TYPE (DISKETTE DRIVE TYPE) ;SET_DASD_FUNC EQU 17H ;BIOS SET DASD TYPE ;COMPARE_FUNC EQU 03H ;BIOS COMPARE FUNC # FOR ERROR MSG PROC .LIST ; ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; *** BIOS DISKETTE I/O ERROR CODES *** ;NOT_READY EQU 80H ;DISKETTE I/O NOT READY ERROR ;CHANG_LINE EQU 06H ;CHANGE LINE ERROR ;BAD_CONTROLLER EQU 20H ;BAD DISKETTE/DISK CONTOROLLER ;WRITE_PROTECT EQU 03H ;DISKETTE I/O WRITE PROTECT ERROR ;BAD_ADDR_MARK EQU 02H ;DISKETTE I/O BAD ADDRESS MARK ERROR ;REC_NOT_FOUND EQU 04H ;DISETTTE I/O RECORD NOT FOUND ERROR ;BAD_CRC EQU 10H ;DISKETTE I/O BAD CRC ERROR ;HARD_WR_ERROR EQU 03H ;DISKETTE WRITE HARD ERROR COUNT ;HARD_FMT_ERROR EQU 02H ;DISKETTE FORMAT HARD ERROR COUNT ;SINGLE_SIDE_COPY EQU 00H ;WHEN READING TRACK 0 SIDE 1 IF HARD ERROR ;OCCURS, WE WILL ASSUME IT WILL BE SINGLE ;SIDED COPY AND AL WILL BE SET TO 0, SO THAT ;BUFFER_PTR WILL NOT BE ADVANCED AND ;IF THE TRACK HAPPENS TO FALL INTO DMA BOUNDRY ;IT WILL SKIP THE SECOND PART OF READ_TRACK ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; SYSTEM MESSAGE HANDLER EQUATES EXT_ERR_CLASS EQU 01H ;AN000;DOS Extended error class PARSE_ERR_CLASS EQU 02H ;AN000;Parse error class UTILITY_MSG_CLASS EQU 0FFH ;AN000;Utility message class CLASS_A EQU UTILITY_MSG_CLASS ;AN000;IN MSG DESCRIPTOR MAX_0 EQU 0 ;AN000;MAXIMUM WIDTH OF STRING FIELD (0=NO LIMIT) PAD_BLK EQU " " ;AN000;CHAR FOR PAD FIELD STDOUT EQU 0001H ;AN000;Standard Output device handle STDERR EQU 0002H ;AN000;Standard Error Output device handle ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; SELECT MULTIPLEXOR INTERFACE SELECT_MPX EQU 0ADC1H ;AN006;THE SELECT MULTIPLEXOR ID SELECT_PRESENT EQU 0FFH ;AN006;RESPONSE IN AL, IF SELECT IS PRESENT MULTIPLEXOR EQU 2FH ;AN006;THE MULTIPLEXOR INTERRUPT NUMBER ;---------------------------------------------------------------------------; ; CONTROL BLOCKS (STRUCS) ; ;---------------------------------------------------------------------------; MSG_DESC STRUC ; MSG_NUM DW 0 ;AN000;MESSAGE NUMBER (TO AX) MSG_HANDLE DW STDOUT ;AN000;HANDLE OF OUTPUT DEVICE (TO BX) MSG_SUBLIST DW 0 ;AN000;POINTER TO SUBLIST (TO SI) MSG_COUNT DW 0 ;AN000;SUBSTITUTION COUNT (TO CX) MSG_CLASS DW CLASS_A SHL 8 ;AN000;MESSAGE CLASS (IN HIGH BYTE, TO DH) ; LOW BYTE HAS 0 (FUNCTION "NO INPUT", TO DL);AN000; MSG_DESC ENDS ;AN000; ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = SUBLIST STRUC ;AN000; SUB_SIZE DB 11 ;AN000;SUBLIST SIZE (POINTER TO NEXT SUBLIST) SUB_RES DB 0 ;AN000;RESERVED ;NEXT FIELD IS TO BE USED AS A DOUBLE WORD SUB_VALUE DW 0 ;AN000;TIME, DATE, OR PTR TO DATA ITEM SUB_VALUE_SEG DW 0 ;AN000;SEG ID OF PTR ;(ABOVE FIELD MUST BE FILLED AT EXECUTION ; TIME, IF THIS IS A .COM FILE) SUB_ID DB 0 ;AN000;N OF %N SUB_FLAGS DB 0 ;AN000;DATA TYPE FLAGS SUB_MAX_WIDTH DB MAX_0 ;AN000;MAXIMUM FIELD WIDTH (0=UNLIMITED) SUB_MIN_WIDTH DB 0 ;AN000;MINIMUM FIELD WIDTH SUB_PAD_CHAR DB PAD_BLK ;AN000;CHARACTER FOR PAD FIELD ; CAN BE " ", "0" OR ",". ; "," CAUSES INSERTION OF THE ACTIVE ; THOUSANDS SEPARATOR BETWEEN EVERY ; 3 DIGITS. SUBLIST ENDS ;AN000; ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ;BUFFER AREA FOR COMMUNICATION WITH GET/SET MEDIA ID FUNCTION CALL ; (USED BY VOLSER PROC) ;(deleted ;AN013;) A_MEDIA_ID_INFO STRUC ; ;AN000; ;(deleted ;AN013;) MI_LEVEL DW 0 ;INFO LEVEL ;AN000; ;(deleted ;AN013;) MI_SERIAL DD 0 ;SERIAL # ;AN000; ;(deleted ;AN013;) MI_LABEL DB 11 DUP (' ') ;VOLUME LABEL ;AN000; ;(deleted ;AN013;) MI_SYSTEM DB 8 DUP (' ') ;FILE SYSTEM TYPE ;AN000; ;(deleted ;AN013;) A_MEDIA_ID_INFO ENDS ; ;AN000; ;END OF DISKCOPY.EQU