From 2d04cacc5322951f187bb17e017c12920ac8ebe2 Mon Sep 17 00:00:00 2001 From: Mark Zbikowski Date: Thu, 25 Apr 2024 21:24:10 +0100 Subject: MZ is back! --- v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU | 207 +++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU (limited to 'v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU') diff --git a/v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU b/v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU new file mode 100644 index 0000000..914fc43 --- /dev/null +++ b/v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU @@ -0,0 +1,207 @@ + 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 -- cgit v1.2.3