summaryrefslogtreecommitdiff
path: root/v4.0/src/MAPPER/SETFSINF.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/MAPPER/SETFSINF.ASM')
-rw-r--r--v4.0/src/MAPPER/SETFSINF.ASM105
1 files changed, 105 insertions, 0 deletions
diff --git a/v4.0/src/MAPPER/SETFSINF.ASM b/v4.0/src/MAPPER/SETFSINF.ASM
new file mode 100644
index 0000000..fb45a26
--- /dev/null
+++ b/v4.0/src/MAPPER/SETFSINF.ASM
@@ -0,0 +1,105 @@
1
2page 80,132
3;0
4title CP/DOS DosSetFsInfo mapper
5
6
7dosxxx 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
37str struc
38old_bp dw ?
39return dd ?
40sbufsize dw ? ; info buffer size
41sbuffoff dw ? ; info buffer offset
42sbuffseg dw ? ; info buffer segment
43slevel dw ? ; info level
44sdrive dw ? ; drive number
45str ends
46
47
48;-----------------------------------------------
49;--- Extended FCB, used to delete Volume Labels.
50;-----------------------------------------------
51Ext_FCB db 0FFh ;Indicates extended FCB
52 db 0,0,0,0,0 ;Reserved
53FCB_Attr db 08 ;Attribute for vol label
54FCBDrive db 0 ;Drive number
55VLabel db "???????????" ;Match any vol name found
56 db 25 dup (0) ;Rest of the opened FCB
57
58
59
60
61
62
63
64
65DosSetFsInfo 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
95deleted:
96 sub ax,ax ; set good return code
97retrn:
98 mexit ; pop registers
99 ret size str - 6 ; return
100
101DosSetFsInfo endp
102
103dosxxx ends
104
105 end