1 ; SCCSID = @(#)buffer.asm 1.1 85/04/09
2 BREAK <Disk I/O Buffer Header>
3 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
4 ; C A V E A T P R O G R A M M E R ;
7 ; Field definition for I/O buffer information
10 buf_next DW ? ; Pointer to next buffer in list
11 buf_prev DW ? ; Pointer to prev buffer in list
12 buf_ID DB ? ; Drive of buffer (bit 7 = 0)
13 ; SFT table index (bit 7 = 1)
14 ; = FFH if buffer free
15 buf_flags DB ? ; Bit 7 = 1 if Remote file buffer
16 ; = 0 if Local device buffer
17 ; Bit 6 = 1 if buffer dirty
19 ; Bit 4 = Search bit (bit 7 = 1)
20 ; Bit 3 = 1 if buffer is DATA
21 ; Bit 2 = 1 if buffer is DIR
22 ; Bit 1 = 1 if buffer is FAT
24 buf_sector DD ? ; Sector number of buffer (bit 7 = 0)
25 ; The next two items are often refed as a word (bit 7 = 0)
26 buf_wrtcnt DB ? ; For FAT sectors, # times sector written out
27 buf_wrtcntinc DW ? ; " " " , # sectors between each write
28 buf_DPB DD ? ; Pointer to drive parameters
29 buf_fill DW ? ; How full buffer is (bit 7 = 1)
30 buf_reserved DB ? ; make DWORD boundary for 386
33 buf_offset EQU DWORD PTR buf_sector
34 ;For bit 7 = 1, this is the byte
35 ;offset of the start of the buffer in
36 ;the file pointed to by buf_ID. Thus
37 ;the buffer starts at location
38 ;buf_offset in the file and contains
41 BUFINSIZ EQU SIZE BUFFINFO
42 ; Size of structure in bytes
44 buf_Free EQU 0FFh ; buf_id of free buffer
47 buf_isnet EQU 10000000B
48 buf_dirty EQU 01000000B
50 buf_visit EQU 00100000B
52 buf_snbuf EQU 00010000B
54 buf_isDATA EQU 00001000B
55 buf_isDIR EQU 00000100B
56 buf_isFAT EQU 00000010B
57 buf_type_0 EQU 11110001B ; AND sets type to "none"
59 buf_NetID EQU BUFINSIZ
62 ; Buffer Hash Entry Structure
64 BUFFER_HASH_ENTRY STRUC ; DOS 4.00
65 EMS_PAGE_NUM DW -1 ; logical page number for EMS handle
66 BUFFER_BUCKET DD ? ; pointer to buffers
67 DIRTY_COUNT DB 0 ; number of dirty buffers
68 BUFFER_RESERVED DB 0 ; reserved
69 BUFFER_HASH_ENTRY ENDS
71 MaxBuffinBucket EQU 15 ; Max number of buffers per bucket
72 MaxBucketinPage EQU 2 ; Max number of buckets per 16kb page
76 ; C A V E A T P R O G R A M M E R ;
77 ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;