summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/DISKCOPY/DISKCOPY.EQU
blob: 914fc433f6095b0ad4e22fa28a4085efdaa9d3ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
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