2 data segment PUBLIC para 'DATA' ;AC000;bgb
3 ;*****************************************************************************
5 ;*****************************************************************************
7 lastchar dw 0 ;an024;bgb
9 fndback dw 0 ;point to where backslash found
10 old_subdir db 64 dup(0) ;current sub directory
11 new_subdir db 64 dup(0) ;new sub directory
16 sixteen dw 16 ; mul ax for 32 bytes / fat entry
17 exit_sw dw ? ; loop exit switch ;AN000;bgb
18 exit_sw2 dw ? ; loop exit switch ;AN000;bgb
19 old_drive db 0 ;original drive to restore to ;an008;bgb
20 drvlet db 'A: ',13,10,13,10,0 ; ;AN000;
21 rec_num dw ? ; ;AN000;
22 x_value_lo dw ? ; ;AN000;
23 x_value_hi dw ? ; ;AN000;
24 y_value_lo dw ? ; ;AN000;
25 y_value_hi dw ? ; ;AN000;
29 ;-----------------------------------------------------------------------;
30 Prompted db 0 ; TRUE => prompt has already been done
31 hardch dd ? ; saved int 24 vector
32 the_root db 0 ; root directory flag
33 fudge db 0 ; directory changed flag
39 fname_buffer db 128 dup(0)
44 ExitStatus db 0 ;Errorlevel code ;AN000;
47 BPB_Buffer A_DeviceParameters <> ; ;AN000;
49 TranSrc db "A:\",0 ; ;AN000;
51 Data_Start_Low dw ? ; ;AN000;
52 Data_Start_High dw ? ; ;AN000;
54 INT_23_Old_Off dw ? ; ;AN000;
55 INT_23_Old_Seg dw ? ; ;AN000;
56 INT_24_Old_Off dw ? ; ;AN000;
57 INT_24_Old_Seg dw ? ; ;AN000;
60 Command_Line_Buffer db 128 dup(0) ; ;AN000;
61 Fatal_Error db 0 ; ;AN000;
63 Command_Line db NO ; ;AN000;
65 ;These should stay together ; ;an022;bgb
66 ; --------------------------------------- ; ; ;an022;bgb
67 ifdef fsexec ;an022;bgb
68 FS_String_Buffer db 13 dup(" ") ; ;AN000; ;an022;bgb
69 FS_String_End db "REC.EXE",0 ; ;AN000; ;an022;bgb
70 ;---------------------------------------- ; ;an022;bgb
71 FS_Not_Fat db 0 ; ;AN000;;an022;bgb
72 FAT12_String db "FAT12 " ;
73 FAT16_String db "FAT16 " ;
75 Media_ID_Buffer Media_ID <> ; ;AN000;
81 dirent db 'FILE0000REC'
84 fcb_copy db 32 dup (?)
92 secall dw 0000 ; sectors per cluster
97 bytes_per_sector dw 0000
102 dw 0000 ;carry noted here - 2 bytes after filsiz
106 dbcs_sw db 0 ;zero if not dbcs - one if dbcs found ;an024;bgb
110 Read_Write_Relative Relative_Sector_Buffer <>
111 Drive_Letter_Msg db "A:",0 ;Drive for exec fail message
113 ifdef fsexec ;an022;bgb
114 ;Exec_Block Exec_Block_Parms <> ;an022;bgb
115 ;EXEC_Path db 66 dup(0) ;an022;bgb
116 ;These next two should stay together
117 ; ---------------------------------------
118 ;Path_String db "PATH=" ; ;an022;bgb
119 ;Len_Path_String equ 5 ; length of path= string ;AN000;bgb ;an022;bgb
122 ;----------------------------------------
123 driveLetter db "X",":",0
127 ;----------------------------------------
131 table dw offset dg:fattbl ;AC000;bgb
135 ;*****************************************************************************
137 ; this data area writes over ram, so leave it at the very end of the pgm.
138 ;*****************************************************************************
139 lastseg segment PUBLIC para 'last' ;AC000;bgb
141 fattbl db 0 ;AC000;bgb
142 lastseg ends ;AN000;bgb
145 data segment public para 'DATA' ;AC000;bgb
146 ;******************************************************************************
148 ;******************************************************************************
149 public header, prompted, hardch, the_root, fudge, user_drive, drive, dirchar ;AN000;bgb
150 public userdir, fname_buffer, found, done, driveletter, psp_segment, exitstatus ;AN000;bgb
151 public drvlet, bpb_buffer, transrc, data_start_low, data_start_high, ;AN000;bgb
152 public int_23_old_off, int_23_old_seg, int_24_old_off, int_24_old_seg, append ;AN000;bgb
153 public command_line_buffer, command_line_length, fatal_error, command_line, ;AN000;bgb
154 ifdef fsexec ;an022;bgb
155 public fs_string_buffer, fs_string_end, len_fs_string_end, fs_not_fat, ;an022;bgb;AN000;bgb
156 public fat12_string, fat16_string, len_fs_id_string, media_id_buffer, ;an022;bgb;AN000;bgb
157 public exec_block, exec_path, path_string ;AN000;bgb ;an022;bgb
158 public len_path_string ;an022;bgb;AN011;bgb
160 public dirent, fcb_copy, filcnt, fatcnt, fatnum, fatsiz, firfat, fatptr ;AN000;bgb
161 public secall, target, maxent, firrec, firdir, secsiz, siztmp, filsiz, maxclus ;AN000;bgb
162 public lastfat, table, fattbl, dbcs_vector, dbcs_vector_off, dbcs_vector_seg ;AN000;bgb
163 public read_write_relative, drive_letter_msg ;AN000;bgb ;an022;bgb
164 public drvlet1, rec_num, x_value_lo, x_value_hi, y_value_lo, y_value_hi
165 public bytes_per_sector, exit_sw, exit_sw2, paras_per_fat, secs_per_64k
166 public sec_count, paras_per_64k
167 data ends ;put this 1st so that the recmsg works