]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MAPPER/SETFSINF.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / MAPPER / SETFSINF.ASM
1
2 page 80,132
3 ;\e0\ f
4 title CP/DOS DosSetFsInfo mapper
5
6
7 dosxxx segment byte public 'dos'
8 assume cs:dosxxx,ds:nothing,es:nothing,ss:nothing
9 ;
10 ; ************************************************************************* *
11 ; *
12 ; * MODULE: DosSetFsInfo
13 ; *
14 ; * FUNCTION: This module will delete the volume label on a specified
15 ; * drive.
16 ; *
17 ; * CALLING SEQUENCE:
18 ; *
19 ; * PUSH WORD DriveNumber ; Drive Number
20 ; * PUSH OTHER FSInfoLevel ; File system info required
21 ; * PUSH@ OTHER FSInfoBuf ; File system info buffer
22 ; * PUSH WORD FSInfoBufSize ; file system info buffer size
23 ; * Call DosSetFsInfo
24 ; *
25 ; *
26 ; * MODULES CALLED: DOS int 21H function 13H
27 ; *
28 ; *************************************************************************
29
30 public DosSetFsInfo
31 .sall
32 .xlist
33 include macros.inc
34 include error.inc
35 .list
36
37 str struc
38 old_bp dw ?
39 return dd ?
40 sbufsize dw ? ; info buffer size
41 sbuffoff dw ? ; info buffer offset
42 sbuffseg dw ? ; info buffer segment
43 slevel dw ? ; info level
44 sdrive dw ? ; drive number
45 str ends
46
47
48 ;-----------------------------------------------
49 ;--- Extended FCB, used to delete Volume Labels.
50 ;-----------------------------------------------
51 Ext_FCB db 0FFh ;Indicates extended FCB
52 db 0,0,0,0,0 ;Reserved
53 FCB_Attr db 08 ;Attribute for vol label
54 FCBDrive db 0 ;Drive number
55 VLabel db "???????????" ;Match any vol name found
56 db 25 dup (0) ;Rest of the opened FCB
57
58
59
60
61
62
63
64
65 DosSetFsInfo proc far
66 Enter DosSetfsinfo ; push registers
67 mov ax,[bp].sdrive ; Get drive number
68 mov FCBDrive,al ; Place it in the extended FCB
69 ;--------------------------
70 ;-- FCB Delete old volume label
71 ;--------------------------
72 mov ah,013h ; FCB Delete
73 push cs
74 pop ds
75 mov dx,offset Ext_FCB
76 int 021h ; Call DOS to delete volume label
77 ;---------------------------------
78 ;-- Handle_Create new Volume label
79 ;---------------------------------
80 mov cx,08h ; Volume label attribute
81 mov ah,03ch ; Handle create new volume label
82 mov dx,[bp].sbuffoff
83 push [bp].sbuffseg
84 pop ds
85 int 021h ; Do it
86 jc retrn ; Oops, there was an error. Not surprised...
87 ;--------------------------
88 ;-- Close the Volume Label
89 ;--------------------------
90 mov bx,ax ; Place handle in BX
91 mov ah,03eh ; Close the volume label
92 int 021h ; Do IT!
93
94
95 deleted:
96 sub ax,ax ; set good return code
97 retrn:
98 mexit ; pop registers
99 ret size str - 6 ; return
100
101 DosSetFsInfo endp
102
103 dosxxx ends
104
105 end