diff options
| author | 2024-04-25 21:24:10 +0100 | |
|---|---|---|
| committer | 2024-04-25 22:32:27 +0000 | |
| commit | 2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch) | |
| tree | 80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/DOS/MS_TABLE.ASM | |
| parent | Merge pull request #430 from jpbaltazar/typoptbr (diff) | |
| download | ms-dos-main.tar.gz ms-dos-main.tar.xz ms-dos-main.zip | |
Diffstat (limited to 'v4.0/src/DOS/MS_TABLE.ASM')
| -rw-r--r-- | v4.0/src/DOS/MS_TABLE.ASM | 710 |
1 files changed, 710 insertions, 0 deletions
diff --git a/v4.0/src/DOS/MS_TABLE.ASM b/v4.0/src/DOS/MS_TABLE.ASM new file mode 100644 index 0000000..b5ffac7 --- /dev/null +++ b/v4.0/src/DOS/MS_TABLE.ASM | |||
| @@ -0,0 +1,710 @@ | |||
| 1 | ; SCCSID = @(#)mstable.asm 1.3 85/07/25 | ||
| 2 | ; Revision history: | ||
| 3 | ; A000 version 4.0 Jan. 1988 | ||
| 4 | ; A001 DCR 486 - Share installation for >32mb drives | ||
| 5 | ; A006 DCR 503 - fake version for IBMCACHE | ||
| 6 | ; A008 PTM 4070 - fake version for MS WINDOWS | ||
| 7 | .xlist | ||
| 8 | .xcref | ||
| 9 | include dosseg.asm | ||
| 10 | include EA.inc ;AN000;; for Extended Attributes | ||
| 11 | include fastopen.inc ;AN000;; for Extended Attributes | ||
| 12 | include dossym.inc | ||
| 13 | .cref | ||
| 14 | .list | ||
| 15 | |||
| 16 | AsmVars <Kanji, Debug, Redirector, ShareF> | ||
| 17 | |||
| 18 | TABLE SEGMENT BYTE PUBLIC 'TABLE' | ||
| 19 | TableZero LABEL BYTE | ||
| 20 | |||
| 21 | PUBLIC MSVERS | ||
| 22 | PUBLIC MSTAB001s,MSTAB001e | ||
| 23 | MSTAB001S label byte | ||
| 24 | |||
| 25 | MSVERS EQU THIS WORD ; MS-DOS version in hex for $GET_VERSION | ||
| 26 | MSMAJOR DB MAJOR_VERSION | ||
| 27 | MSMINOR DB MINOR_VERSION | ||
| 28 | |||
| 29 | I_am YRTAB,8,<200,166,200,165,200,165,200,165> ; [SYSTEM] | ||
| 30 | I_am MONTAB,12,<31,28,31,30,31,30,31,31,30,31,30,31> ; [SYSTEM] | ||
| 31 | |||
| 32 | ; | ||
| 33 | ; This is the error code mapping table for INT 21 errors. This table defines | ||
| 34 | ; those error codes which are "allowed" for each system call. If the error | ||
| 35 | ; code ABOUT to be returned is not "allowed" for the call, the correct action | ||
| 36 | ; is to return the "real" error via Extended error, and one of the allowed | ||
| 37 | ; errors on the actual call. | ||
| 38 | ; | ||
| 39 | ; The table is organized as follows: | ||
| 40 | ; | ||
| 41 | ; Each entry in the table is of variable size, but the first | ||
| 42 | ; two bytes are always: | ||
| 43 | ; | ||
| 44 | ; Call#,Cnt of bytes following this byte | ||
| 45 | ; | ||
| 46 | ; EXAMPLE: | ||
| 47 | ; Call 61 (OPEN) | ||
| 48 | ; | ||
| 49 | ; DB 61,5,12,3,2,4,5 | ||
| 50 | ; | ||
| 51 | ; 61 is the AH INT 21 call value for OPEN. | ||
| 52 | ; 5 indicates that there are 5 bytes after this byte (12,3,2,4,5). | ||
| 53 | ; Next five bytes are those error codes which are "allowed" on OPEN. | ||
| 54 | ; The order of these values is not important EXCEPT FOR THE LAST ONE (in | ||
| 55 | ; this case 5). The last value will be the one returned on the call if | ||
| 56 | ; the "real" error is not one of the allowed ones. | ||
| 57 | ; | ||
| 58 | ; There are a number of calls (for instance all of the FCB calls) for which | ||
| 59 | ; there is NO entry. This means that NO error codes are returned on this | ||
| 60 | ; call, so set up an Extended error and leave the current error code alone. | ||
| 61 | ; | ||
| 62 | ; The table is terminated by a call value of 0FFh | ||
| 63 | |||
| 64 | PUBLIC I21_MAP_E_TAB | ||
| 65 | I21_MAP_E_TAB LABEL BYTE | ||
| 66 | DB International,2,error_invalid_function,error_file_not_found | ||
| 67 | DB MKDir,3,error_path_not_found,error_file_not_found,error_access_denied | ||
| 68 | DB RMDir,4,error_current_directory,error_path_not_found | ||
| 69 | DB error_file_not_found,error_access_denied | ||
| 70 | DB CHDir,2,error_file_not_found,error_path_not_found | ||
| 71 | DB Creat,4,error_path_not_found,error_file_not_found | ||
| 72 | DB error_too_many_open_files | ||
| 73 | DB error_access_denied | ||
| 74 | DB Open,6,error_path_not_found,error_file_not_found,error_invalid_access | ||
| 75 | DB error_too_many_open_files | ||
| 76 | DB error_not_dos_disk,error_access_denied | ||
| 77 | DB Close,1,error_invalid_handle | ||
| 78 | DB Read,2,error_invalid_handle,error_access_denied | ||
| 79 | DB Write,2,error_invalid_handle,error_access_denied | ||
| 80 | DB Unlink,3,error_path_not_found,error_file_not_found,error_access_denied | ||
| 81 | DB LSeek,2,error_invalid_handle,error_invalid_function | ||
| 82 | DB CHMod,4,error_path_not_found,error_file_not_found,error_invalid_function | ||
| 83 | DB error_access_denied | ||
| 84 | DB IOCtl,5,error_invalid_drive,error_invalid_data,error_invalid_function | ||
| 85 | DB error_invalid_handle,error_access_denied | ||
| 86 | DB XDup,2,error_invalid_handle,error_too_many_open_files | ||
| 87 | DB XDup2,2,error_invalid_handle,error_too_many_open_files | ||
| 88 | DB Current_Dir,2,error_not_DOS_disk,error_invalid_drive | ||
| 89 | DB Alloc,2,error_arena_trashed,error_not_enough_memory | ||
| 90 | DB Dealloc,2,error_arena_trashed,error_invalid_block | ||
| 91 | DB Setblock,3,error_arena_trashed,error_invalid_block,error_not_enough_memory | ||
| 92 | DB Exec,8,error_path_not_found,error_invalid_function,error_file_not_found | ||
| 93 | DB error_too_many_open_files,error_bad_format,error_bad_environment | ||
| 94 | DB error_not_enough_memory,error_access_denied | ||
| 95 | DB Find_First,3,error_path_not_found,error_file_not_found,error_no_more_files | ||
| 96 | DB Find_Next,1,error_no_more_files | ||
| 97 | DB Rename,5,error_not_same_device,error_path_not_found,error_file_not_found | ||
| 98 | DB error_current_directory,error_access_denied | ||
| 99 | DB File_Times,4,error_invalid_handle,error_not_enough_memory | ||
| 100 | DB error_invalid_data,error_invalid_function | ||
| 101 | DB AllocOper,1,error_invalid_function | ||
| 102 | DB CreateTempFile,4,error_path_not_found,error_file_not_found | ||
| 103 | DB error_too_many_open_files,error_access_denied | ||
| 104 | DB CreateNewFile,5,error_file_exists,error_path_not_found | ||
| 105 | DB error_file_not_found,error_too_many_open_files,error_access_denied | ||
| 106 | DB LockOper,4,error_invalid_handle,error_invalid_function | ||
| 107 | DB error_sharing_buffer_exceeded,error_lock_violation | ||
| 108 | DB GetExtCntry,2,error_invalid_function,error_file_not_found ;DOS 3.3 | ||
| 109 | DB GetSetCdPg,2,error_invalid_function,error_file_not_found ;DOS 3.3 | ||
| 110 | DB Commit,1,error_invalid_handle ;DOS 3.3 | ||
| 111 | DB ExtHandle,3,error_too_many_open_files,error_not_enough_memory | ||
| 112 | DB error_invalid_function | ||
| 113 | DB ExtOpen,10 | ||
| 114 | DB error_path_not_found,error_file_not_found,error_invalid_access | ||
| 115 | DB error_too_many_open_files,error_file_exists,error_not_enough_memory | ||
| 116 | DB error_not_dos_disk,error_invalid_data | ||
| 117 | DB error_invalid_function,error_access_denied | ||
| 118 | DB GetSetMediaID,4,error_invalid_drive,error_invalid_data | ||
| 119 | DB error_invalid_function,error_access_denied | ||
| 120 | DB 0FFh | ||
| 121 | |||
| 122 | ; | ||
| 123 | ; The following table defines CLASS ACTION and LOCUS info for the INT 21H | ||
| 124 | ; errors. Each entry is 4 bytes long: | ||
| 125 | ; | ||
| 126 | ; Err#,Class,Action,Locus | ||
| 127 | ; | ||
| 128 | ; A value of 0FFh indicates a call specific value (ie. should already | ||
| 129 | ; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT | ||
| 130 | ; THE END, IT IS ASSUMES THAT CLASS, ACTION, LOCUS IS ALREADY SET. | ||
| 131 | ErrTab Macro err,class,action,locus | ||
| 132 | ifidn <locus>,<0FFh> | ||
| 133 | DB error_&err,errCLASS_&class,errACT_&action,0FFh | ||
| 134 | ELSE | ||
| 135 | DB error_&err,errCLASS_&class,errACT_&action,errLOC_&locus | ||
| 136 | ENDIF | ||
| 137 | ENDM | ||
| 138 | |||
| 139 | PUBLIC ERR_TABLE_21 | ||
| 140 | ERR_TABLE_21 LABEL BYTE | ||
| 141 | ErrTab invalid_function, Apperr, Abort, 0FFh | ||
| 142 | ErrTab file_not_found, NotFnd, User, Disk | ||
| 143 | ErrTab path_not_found, NotFnd, User, Disk | ||
| 144 | ErrTab too_many_open_files, OutRes, Abort, Unk | ||
| 145 | ErrTab access_denied, Auth, User, 0FFh | ||
| 146 | ErrTab invalid_handle, Apperr, Abort, Unk | ||
| 147 | ErrTab arena_trashed, Apperr, Panic, Mem | ||
| 148 | ErrTab not_enough_memory, OutRes, Abort, Mem | ||
| 149 | ErrTab invalid_block, Apperr, Abort, Mem | ||
| 150 | ErrTab bad_environment, Apperr, Abort, Mem | ||
| 151 | ErrTab bad_format, BadFmt, User, Unk | ||
| 152 | ErrTab invalid_access, Apperr, Abort, Unk | ||
| 153 | ErrTab invalid_data, BadFmt, Abort, Unk | ||
| 154 | ErrTab invalid_drive, NotFnd, User, Disk | ||
| 155 | ErrTab current_directory, Auth, User, Disk | ||
| 156 | ErrTab not_same_device, Unk, User, Disk | ||
| 157 | ErrTab no_more_files, NotFnd, User, Disk | ||
| 158 | ErrTab file_exists, Already, User, Disk | ||
| 159 | ErrTab sharing_violation, Locked, DlyRet, Disk | ||
| 160 | ErrTab lock_violation, Locked, DlyRet, Disk | ||
| 161 | ErrTab out_of_structures, OutRes, Abort, 0FFh | ||
| 162 | ErrTab invalid_password, Auth, User, Unk | ||
| 163 | ErrTab cannot_make, OutRes, Abort, Disk | ||
| 164 | ErrTab Not_supported, BadFmt, User, Net | ||
| 165 | ErrTab Already_assigned, Already, User, Net | ||
| 166 | ErrTab Invalid_Parameter, BadFmt, User, Unk | ||
| 167 | ErrTab FAIL_I24, Unk, Abort, Unk | ||
| 168 | ErrTab Sharing_buffer_exceeded,OutRes, Abort, Mem | ||
| 169 | ErrTab Handle_EOF, OutRes, Abort, Unk ;AN000; | ||
| 170 | ErrTab Handle_DISK_FULL, OutRes, Abort, Unk ;AN000; | ||
| 171 | ErrTab sys_comp_not_loaded, Unk, Abort, Disk ;AN001; | ||
| 172 | DB 0FFh, 0FFH, 0FFH, 0FFh | ||
| 173 | |||
| 174 | ; | ||
| 175 | ; The following table defines CLASS ACTION and LOCUS info for the INT 24H | ||
| 176 | ; errors. Each entry is 4 bytes long: | ||
| 177 | ; | ||
| 178 | ; Err#,Class,Action,Locus | ||
| 179 | ; | ||
| 180 | ; A Locus value of 0FFh indicates a call specific value (ie. should already | ||
| 181 | ; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT | ||
| 182 | ; THE END. | ||
| 183 | |||
| 184 | PUBLIC ERR_TABLE_24 | ||
| 185 | ERR_TABLE_24 LABEL BYTE | ||
| 186 | ErrTab write_protect, Media, IntRet, Disk | ||
| 187 | ErrTab bad_unit, Intrn, Panic, Unk | ||
| 188 | ErrTab not_ready, HrdFail, IntRet, 0FFh | ||
| 189 | ErrTab bad_command, Intrn, Panic, Unk | ||
| 190 | ErrTab CRC, Media, Abort, Disk | ||
| 191 | ErrTab bad_length, Intrn, Panic, Unk | ||
| 192 | ErrTab Seek, HrdFail, Retry, Disk | ||
| 193 | ErrTab not_DOS_disk, Media, IntRet, Disk | ||
| 194 | ErrTab sector_not_found, Media, Abort, Disk | ||
| 195 | ErrTab out_of_paper, TempSit, IntRet, SerDev | ||
| 196 | ErrTab write_fault, HrdFail, Abort, 0FFh | ||
| 197 | ErrTab read_fault, HrdFail, Abort, 0FFh | ||
| 198 | ErrTab gen_failure, Unk, Abort, 0FFh | ||
| 199 | ErrTab sharing_violation, Locked, DlyRet, Disk | ||
| 200 | ErrTab lock_violation, Locked, DlyRet, Disk | ||
| 201 | ErrTab wrong_disk, Media, IntRet, Disk | ||
| 202 | ErrTab not_supported, BadFmt, User, Net | ||
| 203 | ErrTab FCB_unavailable, Apperr, Abort, Unk | ||
| 204 | ErrTab Sharing_buffer_exceeded,OutRes, Abort, Mem | ||
| 205 | DB 0FFh, errCLASS_Unk, errACT_Panic, 0FFh | ||
| 206 | |||
| 207 | ; | ||
| 208 | ; We need to map old int 24 errors and device driver errors into the new set | ||
| 209 | ; of errors. The following table is indexed by the new errors | ||
| 210 | ; | ||
| 211 | Public ErrMap24 | ||
| 212 | ErrMap24 Label BYTE | ||
| 213 | DB error_write_protect ; 0 | ||
| 214 | DB error_bad_unit ; 1 | ||
| 215 | DB error_not_ready ; 2 | ||
| 216 | DB error_bad_command ; 3 | ||
| 217 | DB error_CRC ; 4 | ||
| 218 | DB error_bad_length ; 5 | ||
| 219 | DB error_Seek ; 6 | ||
| 220 | DB error_not_DOS_disk ; 7 | ||
| 221 | DB error_sector_not_found ; 8 | ||
| 222 | DB error_out_of_paper ; 9 | ||
| 223 | DB error_write_fault ; A | ||
| 224 | DB error_read_fault ; B | ||
| 225 | DB error_gen_failure ; C | ||
| 226 | DB error_gen_failure ; D RESERVED | ||
| 227 | DB error_gen_failure ; E RESERVED | ||
| 228 | DB error_wrong_disk ; F | ||
| 229 | |||
| 230 | Public ErrMap24End | ||
| 231 | ErrMap24End LABEL BYTE | ||
| 232 | |||
| 233 | |||
| 234 | PUBLIC DISPATCH,MAXCALL,MAXCOM | ||
| 235 | |||
| 236 | MAXCALL DB VAL1 | ||
| 237 | MAXCOM DB VAL2 | ||
| 238 | |||
| 239 | ; Standard Functions | ||
| 240 | DISPATCH LABEL WORD | ||
| 241 | short_addr $ABORT ; 0 0 | ||
| 242 | short_addr $STD_CON_INPUT ; 1 1 | ||
| 243 | short_addr $STD_CON_OUTPUT ; 2 2 | ||
| 244 | short_addr $STD_AUX_INPUT ; 3 3 | ||
| 245 | short_addr $STD_AUX_OUTPUT ; 4 4 | ||
| 246 | short_addr $STD_PRINTER_OUTPUT ; 5 5 | ||
| 247 | short_addr $RAW_CON_IO ; 6 6 | ||
| 248 | short_addr $RAW_CON_INPUT ; 7 7 | ||
| 249 | short_addr $STD_CON_INPUT_NO_ECHO ; 8 8 | ||
| 250 | short_addr $STD_CON_STRING_OUTPUT ; 9 9 | ||
| 251 | short_addr $STD_CON_STRING_INPUT ; 10 A | ||
| 252 | short_addr $STD_CON_INPUT_STATUS ; 11 B | ||
| 253 | short_addr $STD_CON_INPUT_FLUSH ; 12 C | ||
| 254 | short_addr $DISK_RESET ; 13 D | ||
| 255 | short_addr $SET_DEFAULT_DRIVE ; 14 E | ||
| 256 | short_addr $FCB_OPEN ; 15 F | ||
| 257 | short_addr $FCB_CLOSE ; 16 10 | ||
| 258 | short_addr $DIR_SEARCH_FIRST ; 17 11 | ||
| 259 | short_addr $DIR_SEARCH_NEXT ; 18 12 | ||
| 260 | short_addr $FCB_DELETE ; 19 13 | ||
| 261 | short_addr $FCB_SEQ_READ ; 20 14 | ||
| 262 | short_addr $FCB_SEQ_WRITE ; 21 15 | ||
| 263 | short_addr $FCB_CREATE ; 22 16 | ||
| 264 | short_addr $FCB_RENAME ; 23 17 | ||
| 265 | short_addr CPMFUNC ; 24 18 | ||
| 266 | short_addr $GET_DEFAULT_DRIVE ; 25 19 | ||
| 267 | short_addr $SET_DMA ; 26 1A | ||
| 268 | |||
| 269 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 270 | ; C A V E A T P R O G R A M M E R ; | ||
| 271 | ; ; | ||
| 272 | short_addr $SLEAZEFUNC ; 27 1B | ||
| 273 | short_addr $SLEAZEFUNCDL ; 28 1C | ||
| 274 | ; ; | ||
| 275 | ; C A V E A T P R O G R A M M E R ; | ||
| 276 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 277 | |||
| 278 | short_addr CPMFUNC ; 29 1D | ||
| 279 | short_addr CPMFUNC ; 30 1E | ||
| 280 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 281 | ; C A V E A T P R O G R A M M E R ; | ||
| 282 | ; ; | ||
| 283 | short_addr $GET_DEFAULT_DPB ; 31 1F | ||
| 284 | ; ; | ||
| 285 | ; C A V E A T P R O G R A M M E R ; | ||
| 286 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 287 | short_addr CPMFUNC ; 32 20 | ||
| 288 | short_addr $FCB_RANDOM_READ ; 33 21 | ||
| 289 | short_addr $FCB_RANDOM_WRITE ; 34 22 | ||
| 290 | short_addr $GET_FCB_FILE_LENGTH ; 35 23 | ||
| 291 | short_addr $GET_FCB_POSITION ; 36 24 | ||
| 292 | VAL1 = ($-DISPATCH)/2 - 1 | ||
| 293 | |||
| 294 | ; Extended Functions | ||
| 295 | short_addr $SET_INTERRUPT_VECTOR ; 37 25 | ||
| 296 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 297 | ; C A V E A T P R O G R A M M E R ; | ||
| 298 | ; ; | ||
| 299 | short_addr $CREATE_PROCESS_DATA_BLOCK ; 38 26 | ||
| 300 | ; ; | ||
| 301 | ; C A V E A T P R O G R A M M E R ; | ||
| 302 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 303 | short_addr $FCB_RANDOM_READ_BLOCK ; 39 27 | ||
| 304 | short_addr $FCB_RANDOM_WRITE_BLOCK ; 40 28 | ||
| 305 | short_addr $PARSE_FILE_DESCRIPTOR ; 41 29 | ||
| 306 | short_addr $GET_DATE ; 42 2A | ||
| 307 | short_addr $SET_DATE ; 43 2B | ||
| 308 | short_addr $GET_TIME ; 44 2C | ||
| 309 | short_addr $SET_TIME ; 45 2D | ||
| 310 | short_addr $SET_VERIFY_ON_WRITE ; 46 2E | ||
| 311 | |||
| 312 | ; Extended functionality group | ||
| 313 | short_addr $GET_DMA ; 47 2F | ||
| 314 | short_addr $GET_VERSION ; 48 30 | ||
| 315 | short_addr $Keep_Process ; 49 31 | ||
| 316 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 317 | ; C A V E A T P R O G R A M M E R ; | ||
| 318 | ; ; | ||
| 319 | short_addr $GET_DPB ; 50 32 | ||
| 320 | ; ; | ||
| 321 | ; C A V E A T P R O G R A M M E R ; | ||
| 322 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 323 | short_addr $SET_CTRL_C_TRAPPING ; 51 33 | ||
| 324 | short_addr $GET_INDOS_FLAG ; 52 34 | ||
| 325 | short_addr $GET_INTERRUPT_VECTOR ; 53 35 | ||
| 326 | short_addr $GET_DRIVE_FREESPACE ; 54 36 | ||
| 327 | short_addr $CHAR_OPER ; 55 37 | ||
| 328 | short_addr $INTERNATIONAL ; 56 38 | ||
| 329 | ; XENIX CALLS | ||
| 330 | ; Directory Group | ||
| 331 | short_addr $MKDIR ; 57 39 | ||
| 332 | short_addr $RMDIR ; 58 3A | ||
| 333 | short_addr $CHDIR ; 59 3B | ||
| 334 | ; File Group | ||
| 335 | short_addr $CREAT ; 60 3C | ||
| 336 | short_addr $OPEN ; 61 3D | ||
| 337 | short_addr $CLOSE ; 62 3E | ||
| 338 | short_addr $READ ; 63 3F | ||
| 339 | short_addr $WRITE ; 64 40 | ||
| 340 | short_addr $UNLINK ; 65 41 | ||
| 341 | short_addr $LSEEK ; 66 42 | ||
| 342 | short_addr $CHMOD ; 67 43 | ||
| 343 | short_addr $IOCTL ; 68 44 | ||
| 344 | short_addr $DUP ; 69 45 | ||
| 345 | short_addr $DUP2 ; 70 46 | ||
| 346 | short_addr $CURRENT_DIR ; 71 47 | ||
| 347 | ; Memory Group | ||
| 348 | short_addr $ALLOC ; 72 48 | ||
| 349 | short_addr $DEALLOC ; 73 49 | ||
| 350 | short_addr $SETBLOCK ; 74 4A | ||
| 351 | ; Process Group | ||
| 352 | short_addr $EXEC ; 75 4B | ||
| 353 | short_addr $EXIT ; 76 4C | ||
| 354 | short_addr $WAIT ; 77 4D | ||
| 355 | short_addr $FIND_FIRST ; 78 4E | ||
| 356 | ; Special Group | ||
| 357 | short_addr $FIND_NEXT ; 79 4F | ||
| 358 | ; SPECIAL SYSTEM GROUP | ||
| 359 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 360 | ; C A V E A T P R O G R A M M E R ; | ||
| 361 | ; ; | ||
| 362 | short_addr $SET_CURRENT_PDB ; 80 50 | ||
| 363 | short_addr $GET_CURRENT_PDB ; 81 51 | ||
| 364 | short_addr $GET_IN_VARS ; 82 52 | ||
| 365 | short_addr $SETDPB ; 83 53 | ||
| 366 | ; ; | ||
| 367 | ; C A V E A T P R O G R A M M E R ; | ||
| 368 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 369 | short_addr $GET_VERIFY_ON_WRITE ; 84 54 | ||
| 370 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 371 | ; C A V E A T P R O G R A M M E R ; | ||
| 372 | ; ; | ||
| 373 | short_addr $DUP_PDB ; 85 55 | ||
| 374 | ; ; | ||
| 375 | ; C A V E A T P R O G R A M M E R ; | ||
| 376 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 377 | short_addr $RENAME ; 86 56 | ||
| 378 | short_addr $FILE_TIMES ; 87 57 | ||
| 379 | short_addr $AllocOper ; 88 58 | ||
| 380 | ; Network extention system calls | ||
| 381 | short_addr $GetExtendedError ; 89 59 | ||
| 382 | short_addr $CreateTempFile ; 90 5A | ||
| 383 | short_addr $CreateNewFile ; 91 5B | ||
| 384 | short_addr $LockOper ; 92 5C | ||
| 385 | short_addr $ServerCall ; 93 5D | ||
| 386 | short_addr $UserOper ; 94 5E | ||
| 387 | short_addr $AssignOper ; 95 5F | ||
| 388 | short_addr $NameTrans ; 96 60 | ||
| 389 | short_addr CPMFunc ; 97 61 | ||
| 390 | short_addr $Get_Current_PDB ; 98 62 | ||
| 391 | ; the next call is reserved for hangool sys call | ||
| 392 | short_addr $ECS_Call ; 99 63 | ||
| 393 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 394 | ; C A V E A T P R O G R A M M E R ; | ||
| 395 | ; ; | ||
| 396 | short_addr $Set_Printer_Flag ; 100 64 | ||
| 397 | ; ; | ||
| 398 | ; C A V E A T P R O G R A M M E R ; | ||
| 399 | ;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; | ||
| 400 | short_addr $GetExtCntry ; 101 65 | ||
| 401 | short_addr $GetSetCdPg ; 102 66 | ||
| 402 | short_addr $ExtHandle ; 103 67 | ||
| 403 | short_addr $Commit ; 104 68 | ||
| 404 | short_addr $GSetMediaID ; 105 69 ;AN000; | ||
| 405 | short_addr $Commit ; 106 6A ;AN000; | ||
| 406 | short_addr $IFS_IOCTL ; 107 6B ;AN000; | ||
| 407 | short_addr $Extended_Open ; 108 6C ;AN000; | ||
| 408 | ; | ||
| 409 | VAL2 = ($-DISPATCH)/2 - 1 | ||
| 410 | |||
| 411 | |||
| 412 | If Installed | ||
| 413 | |||
| 414 | PUBLIC FOO | ||
| 415 | FOO LABEL WORD | ||
| 416 | Short_addr Leave2F | ||
| 417 | DTab DW OFFSET DOSGroup:DOSTable | ||
| 418 | PUBLIC FOO,DTAB | ||
| 419 | |||
| 420 | DOSTable LABEL WORD | ||
| 421 | DB (DOSTableEnd-DOSTable-1)/2 | ||
| 422 | Short_addr DOSInstall ; 0 install check | ||
| 423 | Short_addr DOS_CLOSE ; 1 DOS_CLOSE | ||
| 424 | Short_addr RECSET ; 2 RECSET | ||
| 425 | Short_addr DOSGetGroup ; 3 Get DOSGROUP | ||
| 426 | Short_addr PATHCHRCMP ; 4 PATHCHRCMP | ||
| 427 | Short_addr OUTT ; 5 OUT | ||
| 428 | Short_addr NET_I24_ENTRY ; 6 NET_I24_ENTRY | ||
| 429 | Short_addr PLACEBUF ; 7 PLACEBUF | ||
| 430 | Short_addr FREE_SFT ; 8 FREE_SFT | ||
| 431 | Short_addr BUFWRITE ; 9 BUFWRITE | ||
| 432 | Short_addr SHARE_VIOLATION ; 10 SHARE_VIOLATION | ||
| 433 | Short_addr SHARE_ERROR ; 11 SHARE_ERROR | ||
| 434 | Short_addr SET_SFT_MODE ; 12 SET_SFT_MODE | ||
| 435 | Short_addr DATE16 ; 13 DATE16 | ||
| 436 | Short_addr idle ; 14 empty slot | ||
| 437 | Short_addr SCANPLACE ; 15 SCANPLACE | ||
| 438 | Short_addr idle ; 16 empty slot | ||
| 439 | Short_addr StrCpy ; 17 StrCpy | ||
| 440 | Short_addr StrLen ; 18 StrLen | ||
| 441 | Short_addr Ucase ; 19 Ucase | ||
| 442 | Short_addr POINTCOMP ; 20 POINTCOMP | ||
| 443 | Short_addr CHECKFLUSH ; 21 CHECKFLUSH | ||
| 444 | Short_addr SFFromSFN ; 22 SFFromSFN | ||
| 445 | Short_addr GetCDSFromDrv ; 23 GetCDSFromDrv | ||
| 446 | Short_addr Get_User_Stack ; 24 Get_User_Stack | ||
| 447 | Short_addr GetThisDrv ; 25 GetThisDrv | ||
| 448 | Short_addr DriveFromText ; 26 DriveFromText | ||
| 449 | Short_addr SETYEAR ; 27 SETYEAR | ||
| 450 | Short_addr DSUM ; 28 DSUM | ||
| 451 | Short_addr DSLIDE ; 29 DSLIDE | ||
| 452 | Short_addr StrCmp ; 30 StrCmp | ||
| 453 | Short_addr InitCDS ; 31 initcds | ||
| 454 | Short_addr pJFNFromHandle ; 32 pJfnFromHandle | ||
| 455 | Short_addr $NameTrans ; 33 $NameTrans | ||
| 456 | Short_addr CAL_LK ; 34 CAL_LK | ||
| 457 | Short_addr DEVNAME ; 35 DEVNAME | ||
| 458 | Short_addr Idle ; 36 Idle | ||
| 459 | Short_addr DStrLen ; 37 DStrLen | ||
| 460 | Short_addr NLS_OPEN ; 38 NLS_OPEN DOS 3.3 | ||
| 461 | Short_addr $CLOSE ; 39 $CLOSE DOS 3.3 | ||
| 462 | Short_addr NLS_LSEEK ; 40 NLS_LSEEK DOS 3.3 | ||
| 463 | Short_addr $READ ; 41 $READ DOS 3.3 | ||
| 464 | Short_addr FastInit ; 42 FastInit DOS 3.4 ;AN000; | ||
| 465 | Short_addr NLS_IOCTL ; 43 NLS_IOCTL DOS 3.3 | ||
| 466 | Short_addr GetDevList ; 44 GetDevList DOS 3.3 | ||
| 467 | Short_addr NLS_GETEXT ; 45 NLS_GETEXT DOS 3.3 | ||
| 468 | Short_addr MSG_RETRIEVAL ; 46 MSG_RETRIEVAL DOS 4.0 ;AN000; | ||
| 469 | Short_addr Fake_Version ; 47 Fake_Version DOS 4.0 ;AN006; | ||
| 470 | |||
| 471 | DOSTableEnd LABEL BYTE | ||
| 472 | |||
| 473 | ENDIF | ||
| 474 | |||
| 475 | ; NOTE WARNING: This declaration of HEADER must be THE LAST thing in this | ||
| 476 | ; module. The reason is so that the data alignments are the same in | ||
| 477 | ; IBM-DOS and MS-DOS up through header. | ||
| 478 | ;---------------------------------------Start of Korean support 2/11/KK | ||
| 479 | ; | ||
| 480 | ; The varialbes for ECS version are moved here for the same data alignments | ||
| 481 | ; as IBM-DOS and MS-DOS. | ||
| 482 | ; | ||
| 483 | |||
| 484 | I_AM InterChar, byte ; Interim character flag ( 1= interim) ;AN000; | ||
| 485 | ;AN000; | ||
| 486 | ;------- NOTE: NEXT TWO BYTES SOMETIMES USED AS A WORD !! --------------------- | ||
| 487 | DUMMY LABEL WORD ;AN000; | ||
| 488 | PUBLIC InterCon ; Console in Interim mode ( 1= interim) ;AN000; | ||
| 489 | InterCon db 0 ;AN000; | ||
| 490 | PUBLIC SaveCurFlg ; Print, do not advance cursor flag ;AN000; | ||
| 491 | SaveCurFlg db 0 ;AN000; | ||
| 492 | ;-----------------------------------------End of Korean support 2/11/KK | ||
| 493 | |||
| 494 | |||
| 495 | PUBLIC HEADER | ||
| 496 | Header LABEL BYTE | ||
| 497 | IF DEBUG | ||
| 498 | DB 13,10,"Debugging DOS version " | ||
| 499 | DB MAJOR_VERSION + "0" | ||
| 500 | DB "." | ||
| 501 | DB (MINOR_VERSION / 10) + "0" | ||
| 502 | DB (MINOR_VERSION MOD 10) + "0" | ||
| 503 | ENDIF | ||
| 504 | |||
| 505 | IF NOT IBM | ||
| 506 | DB 13,10,"MS-DOS version " | ||
| 507 | DB MAJOR_VERSION + "0" | ||
| 508 | DB "." | ||
| 509 | DB (MINOR_VERSION / 10) + "0" | ||
| 510 | DB (MINOR_VERSION MOD 10) + "0" | ||
| 511 | |||
| 512 | IF HIGHMEM | ||
| 513 | DB "H" | ||
| 514 | ENDIF | ||
| 515 | |||
| 516 | DB 13,10, "Copyright 1981,82,83,84,88 Microsoft Corp.",13,10,"$" | ||
| 517 | ENDIF | ||
| 518 | |||
| 519 | IF DEBUG | ||
| 520 | DB 13,10,"$" | ||
| 521 | ENDIF | ||
| 522 | |||
| 523 | MSTAB001E label byte | ||
| 524 | |||
| 525 | include copyrigh.inc ;AN000; | ||
| 526 | |||
| 527 | ; SYS init extended table, DOS 3.3 F.C. 5/29/86 | ||
| 528 | ; | ||
| 529 | PUBLIC SysInitTable | ||
| 530 | I_need COUNTRY_CDPG,BYTE | ||
| 531 | I_need SYSINITVAR,BYTE | ||
| 532 | |||
| 533 | SysInitTable label byte | ||
| 534 | dw OFFSET DOSGROUP:SYSINITVAR ; pointer to sysinit var | ||
| 535 | dw 0 ; segment | ||
| 536 | dw OFFSET DOSGROUP:COUNTRY_CDPG ; pointer to country table | ||
| 537 | dw 0 ; segment of pointer | ||
| 538 | ; DOS 3.3 F.C. 6/12/86 | ||
| 539 | |||
| 540 | ; FASTOPEN communications area DOS 3.3 F.C. 5/29/86 | ||
| 541 | ; | ||
| 542 | PUBLIC FastOpenTable | ||
| 543 | PUBLIC FastTable ; a better name | ||
| 544 | EXTRN FastRet:FAR ; defined in misc2.asm | ||
| 545 | |||
| 546 | FastTable label byte ; a better name | ||
| 547 | FastOpenTable label byte | ||
| 548 | dw 2 ; number of entries | ||
| 549 | dw OFFSET DOSGROUP:FastRet ; pointer to ret instr. | ||
| 550 | dw 0 ; and will be modified by | ||
| 551 | dw OFFSET DOSGROUP:FastRet ; FASTxxx when loaded in | ||
| 552 | dw 0 ; | ||
| 553 | ; DOS 3.3 F.C. 6/12/86 | ||
| 554 | PUBLIC FastFlg ;AN000; flags | ||
| 555 | FastFlg label byte ;AN000; don't change the following order | ||
| 556 | I_am FastOpenFlg,BYTE,<0> ;AN000; | ||
| 557 | I_am FastSeekFlg,BYTE,<0> ;AN000; | ||
| 558 | |||
| 559 | PUBLIC FastOpen_Ext_Info | ||
| 560 | |||
| 561 | ; FastOpen_Ext_Info is used as a temporary storage for saving dirpos,dirsec | ||
| 562 | ; and clusnum which are filled by DOS 3.3 when calling FastOpen Insert | ||
| 563 | ; or filled by FastOPen when calling FastOpen Lookup | ||
| 564 | |||
| 565 | FastOpen_Ext_Info label byte | ||
| 566 | db SIZE FASTOPEN_EXTENDED_INFO dup(0) ;dirpos | ||
| 567 | |||
| 568 | ; Dir_Info_Buff is a dir entry buffer which is filled by FastOPen | ||
| 569 | ; when calling FastOpen Lookup | ||
| 570 | |||
| 571 | PUBLIC Dir_Info_Buff | ||
| 572 | |||
| 573 | Dir_Info_Buff label byte | ||
| 574 | db SIZE dir_entry dup (0) | ||
| 575 | |||
| 576 | |||
| 577 | I_am Next_Element_Start,WORD ; save next element start offset | ||
| 578 | |||
| 579 | ; Following 4 variables moved to MSDATA.asm (P4986) | ||
| 580 | ; I_am FSeek_drive,BYTE ;AN000; fastseek drive # | ||
| 581 | ; I_am FSeek_firclus,WORD ;AN000; fastseek first cluster # | ||
| 582 | ; I_am FSeek_logclus,WORD ;AN000; fastseek logical cluster # | ||
| 583 | ; I_am FSeek_logsave,WORD ;AN000; fastseek returned log clus # | ||
| 584 | |||
| 585 | ; The following is a stack and its pointer for interrupt 2F which is uesd | ||
| 586 | ; by NLSFUNC. There is no significant use of this stack, we are just trying | ||
| 587 | ; not to destroy the INT 21 stack saved for the user. | ||
| 588 | |||
| 589 | |||
| 590 | PUBLIC User_SP_2F | ||
| 591 | |||
| 592 | USER_SP_2F LABEL WORD | ||
| 593 | dw OFFSET DOSGROUP:FAKE_STACK_2F | ||
| 594 | |||
| 595 | PUBLIC Packet_Temp | ||
| 596 | Packet_Temp label word ; temporary packet used by readtime | ||
| 597 | PUBLIC DOS_TEMP ; temporary word | ||
| 598 | DOS_TEMP label word | ||
| 599 | FAKE_STACK_2F dw 14 dup (0) ; 12 register temporary storage | ||
| 600 | |||
| 601 | PUBLIC Hash_Temp ;AN000; temporary word | ||
| 602 | Hash_Temp label word ;AN000; | ||
| 603 | dw 4 dup (0) ;AN000; temporary hash table during config.sys | ||
| 604 | |||
| 605 | PUBLIC SCAN_FLAG ; flag to indicate key ALT_Q | ||
| 606 | SCAN_FLAG label byte | ||
| 607 | db 0 | ||
| 608 | ;;; The following 2 words must be adjacent for IBMDOS reasons | ||
| 609 | |||
| 610 | PUBLIC DATE_FLAG | ||
| 611 | DATE_FLAG label word ; flag to | ||
| 612 | dw 0 ; to update the date | ||
| 613 | ;;;; special tag for IBMDOS | ||
| 614 | PUBLIC FETCHI_TAG | ||
| 615 | FETCHI_TAG label word ; TAG to make DOS 3.3 work | ||
| 616 | dw 0 ; must be 22642 | ||
| 617 | ;;; The above 2 words must be adjacent for IBMDOS reasons | ||
| 618 | ; DOS 3.3 F.C. 6/12/86 | ||
| 619 | I_am Del_ExtCluster,WORD ; for dos_delete ;AN000; | ||
| 620 | |||
| 621 | PUBLIC MSG_EXTERROR ; for system message addr ;AN000; | ||
| 622 | MSG_EXTERROR label DWORD ;AN000; | ||
| 623 | dd 0 ; for extended error ;AN000; | ||
| 624 | dd 0 ; for parser ;AN000; | ||
| 625 | dd 0 ; for critical errror ;AN000; | ||
| 626 | dd 0 ; for IFS ;AN000; | ||
| 627 | dd 0 ; for code reduction ;AN000; | ||
| 628 | |||
| 629 | PUBLIC SEQ_SECTOR ; last sector read ;AN000; | ||
| 630 | SEQ_SECTOR label DWORD ;AN000; | ||
| 631 | dd -1 ;AN000; | ||
| 632 | |||
| 633 | I_am XA_CONDITION,BYTE,<0> ; for Extended Attributes ;AN000; | ||
| 634 | ; I_am XA_ES,WORD ; for extended find ;AN000; | ||
| 635 | ; I_am XA_BP,WORD ; for extended find ;AN000; | ||
| 636 | ; I_am XA_handle,WORD ; for get/set EA ;AN000; | ||
| 637 | I_am XA_type,BYTE ; for get/set EA ;AN000; | ||
| 638 | ; I_am XA_device,BYTE ; for get/set EA ;AN000; | ||
| 639 | I_am XA_from,BYTE ; for get/set EA ;AN000; | ||
| 640 | ; I_am XA_VAR,WORD ; for get/set EA ;AN000; | ||
| 641 | ; I_am XA_TEMP,WORD ; for get/set EA ;AN000; | ||
| 642 | ; I_am XA_TEMP2,WORD ; for get/set EA ;AN000; | ||
| 643 | ; | ||
| 644 | |||
| 645 | ; I_am MAX_EA_SIZE,WORD,<29> ; max EA list size ;AN000; | ||
| 646 | ; I_am MAX_EANAME_SIZE,WORD,<20> ; max EA name list size ;AN000; | ||
| 647 | ; I_am XA_COUNT,WORD,<2> ; number of EA entries ;AN000; | ||
| 648 | |||
| 649 | |||
| 650 | ; PUBLIC XA_TABLE ; for get/set EA ;AN000; | ||
| 651 | ; | ||
| 652 | ;XA_TABLE label byte ;AN000; | ||
| 653 | ; db EAISBINARY ;Code Page ;AN000; | ||
| 654 | ; dw EASYSTEM ;AN000; | ||
| 655 | ; db 0,2 ;AN000; | ||
| 656 | ; dw 2 ;AN000; | ||
| 657 | ; db 'CP' ;AN000; | ||
| 658 | ; | ||
| 659 | ; db EAISBINARY ;File Type ;AN000; | ||
| 660 | ; dw EASYSTEM ;AN000; | ||
| 661 | ; db 0,8 ;AN000; | ||
| 662 | ; dw 1 ;AN000; | ||
| 663 | ; db 'FILETYPE' ;AN000; | ||
| 664 | ; | ||
| 665 | |||
| 666 | ; PUBLIC XA_PACKET ;AN000; | ||
| 667 | ;XA_PACKET label byte ;AN000; | ||
| 668 | ;IF DBCS ;AN000; | ||
| 669 | ; dw 18 ;AN000; | ||
| 670 | ; db 18 dup(0) ;AN000; | ||
| 671 | ; PUBLIC DBCS_PACKET ;AN000; | ||
| 672 | ;DBCS_PACKET label byte ;AN000; | ||
| 673 | ; db 5 dup(0) | ||
| 674 | ;ELSE | ||
| 675 | ; dw 2, 0 ; get/set device code page ;AN000; | ||
| 676 | ;ENDIF | ||
| 677 | I_am CurHashEntry,DWORD ; current hash buffer entry ;AN000; | ||
| 678 | ;; I_am ACT_PAGE,WORD,<-1> ;BL ; active EMS page ;AN000; | ||
| 679 | I_am SC_SECTOR_SIZE,WORD ; sector size for SC ;AN000; | ||
| 680 | I_am SC_DRIVE,BYTE ; drive # for secondary cache ;AN000; | ||
| 681 | I_am CurSC_DRIVE,BYTE,<-1> ; current SC drive ;AN000; | ||
| 682 | I_am CurSC_SECTOR,DWORD ; current SC starting sector ;AN000; | ||
| 683 | I_am SC_STATUS,WORD,<0> ; SC status word ;AN000; | ||
| 684 | I_am SC_FLAG,BYTE,<0> ; SC flag ;AN000; | ||
| 685 | I_am IFS_DRIVER_ERR,WORD,<0> ; driver error for IFS ;AN000; | ||
| 686 | |||
| 687 | PUBLIC NO_NAME_ID ;AN000; | ||
| 688 | NO_NAME_ID label byte ;AN000; | ||
| 689 | db 'NO NAME ' ; null media id ;AN000; | ||
| 690 | |||
| 691 | PUBLIC SWAP_AREA_TABLE ;AN000; | ||
| 692 | SWAP_AREA_TABLE label byte ;AN000; | ||
| 693 | I_am NUM_SWAP_AREA,WORD,<2> ; number of swap areas ;AN000; | ||
| 694 | I_am SWAP_IN_DOS,DWORD ; swap in dos area ;AN000; | ||
| 695 | I_am SWAP_IN_DOS_LEN,WORD ; swap in dos area length ;AN000; | ||
| 696 | I_am SWAP_ALWAYS_AREA,DWORD ; swap always area ;AN000; | ||
| 697 | I_am SWAP_ALWAYS_AREA_LEN,WORD ; swap always area length ;AN000; | ||
| 698 | I_am IFSFUNC_SWAP_IN_DOS,DWORD ; ifsfunc swap in dos area ;AN000; | ||
| 699 | I_am IFSFUNC_SWAP_IN_DOS_LEN,WORD ; ifsfunc swap in dos area length ;AN000; | ||
| 700 | |||
| 701 | I_am SWAP_AREA_LEN,WORD ; swap area length ;AN000; | ||
| 702 | I_am FIRST_BUFF_ADDR,WORD ; first buffer address ;AN000; | ||
| 703 | I_am SPECIAL_VERSION,WORD,<0> ;AN006; used by INT 2F 47H | ||
| 704 | I_am FAKE_COUNT,<255> ;AN008; fake version count | ||
| 705 | I_am OLD_FIRSTCLUS,WORD ;AN011; save old first cluster for fastopen | ||
| 706 | |||
| 707 | TABLE ENDS | ||
| 708 | |||
| 709 | |||
| 710 | \ No newline at end of file | ||