1 TITLE DISKCOPY MSDOS Disk Copier
2 ;----------------------------------------------------------
4 ; Diskcopy - Program to copy entire diskettes
6 ; Copyright 1982 by Microsoft Corporation
7 ; Written by Chris Peters, August 1982
9 ;-----------------------------------------------------------
11 ; Rev 1.00 Initial instance
31 CONST
SEGMENT PUBLIC BYTE
34 DATA SEGMENT PUBLIC BYTE
37 DG GROUP
CODE,CONST
,DATA
40 assume
cs:DG
,ds:DG
,es:DG
,ss:DG
42 EXTRN dskrd
:NEAR,dskwrt
:NEAR,promptyn
:NEAR
43 PUBLIC PRINT
,PCRLF
,ASKANOTHER
,sec64k
,secsiz
63 pcrlf: mov dx,OFFSET DG
: crlf
64 print: mov ah,STD_CON_STRING_OUTPUT
68 getkey: mov dx,OFFSET DG
: keymsg
70 mov ah,12 ;wait for key press
75 ; returns number of sectors on the disk in cx, sector size in ax
81 mov al,[bx+dpb_cluster_mask
]
84 mov cx,[bx+dpb_max_cluster
]
87 add ax,[bx+dpb_first_sector
]
88 mov cx,[bx+dpb_sector_size
]
101 ; set zero flag if drives the same
114 cli ;set up local stack
119 ;Code to print header
121 ; MOV DX,OFFSET DG: HEADER
125 mov dx,OFFSET DG
: drverr1
141 int bdos
;empty buffer queue
143 mov bx,OFFSET DG
:progsiz
+ 15
149 int 21h
;give back extra memory
151 mov bx,0FFFFh ;ask for Biggest hunk
162 mov [start
],0 ;Initialize start sector
165 mov dx,OFFSET DG
: srcmsg
167 onedrv1:mov dx,OFFSET DG
: fdstmsg
179 mov dx,OFFSET DG
: srcmsg
183 twodrv1:mov dl,[source
]
185 mov dx,OFFSET DG
: drverr3
186 cmp [media
],bl ;make sure media and sizes match
200 mov [sec64k
],ax ;set number of sectors in 64K bytes
204 mov [passcnt
],ax ;set number of sectors per pass
206 call compare
;print copying....
208 mov dx,OFFSET DG
: cpymsg
219 countok:mov dx,[start
]
229 mov dx,OFFSET DG
: dstmsg
233 twodrv2:mov al,[dest
]
247 mov dx,OFFSET DG
: srcmsg
254 int bdos
;empty buffer queue
255 mov dx,OFFSET DG
: goodmsg
258 mov dx,OFFSET DG
: good1
262 mov dx,OFFSET DG
:anoprompt
267 int boot
;home, james...
271 CONST
SEGMENT PUBLIC BYTE
273 EXTRN fdstmsg
:BYTE,dstmsg
:BYTE,fdstlet
:BYTE,dstlet
:BYTE
274 EXTRN cpymsg
:BYTE,good1
:BYTE,goodmsg
:BYTE,srcmsg
:BYTE,srclet
:BYTE
275 EXTRN keymsg
:BYTE,drverr1
:BYTE,drverr3
:BYTE,crlf
:BYTE
278 db ' MICROSOFT - PETERS '