From 2d04cacc5322951f187bb17e017c12920ac8ebe2 Mon Sep 17 00:00:00 2001 From: Mark Zbikowski Date: Thu, 25 Apr 2024 21:24:10 +0100 Subject: MZ is back! --- v4.0/src/DOS/MS_TABLE.ASM | 710 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 710 insertions(+) create mode 100644 v4.0/src/DOS/MS_TABLE.ASM (limited to 'v4.0/src/DOS/MS_TABLE.ASM') 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 @@ +; SCCSID = @(#)mstable.asm 1.3 85/07/25 +; Revision history: +; A000 version 4.0 Jan. 1988 +; A001 DCR 486 - Share installation for >32mb drives +; A006 DCR 503 - fake version for IBMCACHE +; A008 PTM 4070 - fake version for MS WINDOWS +.xlist +.xcref +include dosseg.asm +include EA.inc ;AN000;; for Extended Attributes +include fastopen.inc ;AN000;; for Extended Attributes +include dossym.inc +.cref +.list + + AsmVars + +TABLE SEGMENT BYTE PUBLIC 'TABLE' +TableZero LABEL BYTE + + PUBLIC MSVERS +PUBLIC MSTAB001s,MSTAB001e +MSTAB001S label byte + +MSVERS EQU THIS WORD ; MS-DOS version in hex for $GET_VERSION +MSMAJOR DB MAJOR_VERSION +MSMINOR DB MINOR_VERSION + + I_am YRTAB,8,<200,166,200,165,200,165,200,165> ; [SYSTEM] + I_am MONTAB,12,<31,28,31,30,31,30,31,31,30,31,30,31> ; [SYSTEM] + +; +; This is the error code mapping table for INT 21 errors. This table defines +; those error codes which are "allowed" for each system call. If the error +; code ABOUT to be returned is not "allowed" for the call, the correct action +; is to return the "real" error via Extended error, and one of the allowed +; errors on the actual call. +; +; The table is organized as follows: +; +; Each entry in the table is of variable size, but the first +; two bytes are always: +; +; Call#,Cnt of bytes following this byte +; +; EXAMPLE: +; Call 61 (OPEN) +; +; DB 61,5,12,3,2,4,5 +; +; 61 is the AH INT 21 call value for OPEN. +; 5 indicates that there are 5 bytes after this byte (12,3,2,4,5). +; Next five bytes are those error codes which are "allowed" on OPEN. +; The order of these values is not important EXCEPT FOR THE LAST ONE (in +; this case 5). The last value will be the one returned on the call if +; the "real" error is not one of the allowed ones. +; +; There are a number of calls (for instance all of the FCB calls) for which +; there is NO entry. This means that NO error codes are returned on this +; call, so set up an Extended error and leave the current error code alone. +; +; The table is terminated by a call value of 0FFh + +PUBLIC I21_MAP_E_TAB +I21_MAP_E_TAB LABEL BYTE + DB International,2,error_invalid_function,error_file_not_found + DB MKDir,3,error_path_not_found,error_file_not_found,error_access_denied + DB RMDir,4,error_current_directory,error_path_not_found + DB error_file_not_found,error_access_denied + DB CHDir,2,error_file_not_found,error_path_not_found + DB Creat,4,error_path_not_found,error_file_not_found + DB error_too_many_open_files + DB error_access_denied + DB Open,6,error_path_not_found,error_file_not_found,error_invalid_access + DB error_too_many_open_files + DB error_not_dos_disk,error_access_denied + DB Close,1,error_invalid_handle + DB Read,2,error_invalid_handle,error_access_denied + DB Write,2,error_invalid_handle,error_access_denied + DB Unlink,3,error_path_not_found,error_file_not_found,error_access_denied + DB LSeek,2,error_invalid_handle,error_invalid_function + DB CHMod,4,error_path_not_found,error_file_not_found,error_invalid_function + DB error_access_denied + DB IOCtl,5,error_invalid_drive,error_invalid_data,error_invalid_function + DB error_invalid_handle,error_access_denied + DB XDup,2,error_invalid_handle,error_too_many_open_files + DB XDup2,2,error_invalid_handle,error_too_many_open_files + DB Current_Dir,2,error_not_DOS_disk,error_invalid_drive + DB Alloc,2,error_arena_trashed,error_not_enough_memory + DB Dealloc,2,error_arena_trashed,error_invalid_block + DB Setblock,3,error_arena_trashed,error_invalid_block,error_not_enough_memory + DB Exec,8,error_path_not_found,error_invalid_function,error_file_not_found + DB error_too_many_open_files,error_bad_format,error_bad_environment + DB error_not_enough_memory,error_access_denied + DB Find_First,3,error_path_not_found,error_file_not_found,error_no_more_files + DB Find_Next,1,error_no_more_files + DB Rename,5,error_not_same_device,error_path_not_found,error_file_not_found + DB error_current_directory,error_access_denied + DB File_Times,4,error_invalid_handle,error_not_enough_memory + DB error_invalid_data,error_invalid_function + DB AllocOper,1,error_invalid_function + DB CreateTempFile,4,error_path_not_found,error_file_not_found + DB error_too_many_open_files,error_access_denied + DB CreateNewFile,5,error_file_exists,error_path_not_found + DB error_file_not_found,error_too_many_open_files,error_access_denied + DB LockOper,4,error_invalid_handle,error_invalid_function + DB error_sharing_buffer_exceeded,error_lock_violation + DB GetExtCntry,2,error_invalid_function,error_file_not_found ;DOS 3.3 + DB GetSetCdPg,2,error_invalid_function,error_file_not_found ;DOS 3.3 + DB Commit,1,error_invalid_handle ;DOS 3.3 + DB ExtHandle,3,error_too_many_open_files,error_not_enough_memory + DB error_invalid_function + DB ExtOpen,10 + DB error_path_not_found,error_file_not_found,error_invalid_access + DB error_too_many_open_files,error_file_exists,error_not_enough_memory + DB error_not_dos_disk,error_invalid_data + DB error_invalid_function,error_access_denied + DB GetSetMediaID,4,error_invalid_drive,error_invalid_data + DB error_invalid_function,error_access_denied + DB 0FFh + +; +; The following table defines CLASS ACTION and LOCUS info for the INT 21H +; errors. Each entry is 4 bytes long: +; +; Err#,Class,Action,Locus +; +; A value of 0FFh indicates a call specific value (ie. should already +; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT +; THE END, IT IS ASSUMES THAT CLASS, ACTION, LOCUS IS ALREADY SET. +ErrTab Macro err,class,action,locus +ifidn ,<0FFh> + DB error_&err,errCLASS_&class,errACT_&action,0FFh +ELSE + DB error_&err,errCLASS_&class,errACT_&action,errLOC_&locus +ENDIF +ENDM + +PUBLIC ERR_TABLE_21 +ERR_TABLE_21 LABEL BYTE + ErrTab invalid_function, Apperr, Abort, 0FFh + ErrTab file_not_found, NotFnd, User, Disk + ErrTab path_not_found, NotFnd, User, Disk + ErrTab too_many_open_files, OutRes, Abort, Unk + ErrTab access_denied, Auth, User, 0FFh + ErrTab invalid_handle, Apperr, Abort, Unk + ErrTab arena_trashed, Apperr, Panic, Mem + ErrTab not_enough_memory, OutRes, Abort, Mem + ErrTab invalid_block, Apperr, Abort, Mem + ErrTab bad_environment, Apperr, Abort, Mem + ErrTab bad_format, BadFmt, User, Unk + ErrTab invalid_access, Apperr, Abort, Unk + ErrTab invalid_data, BadFmt, Abort, Unk + ErrTab invalid_drive, NotFnd, User, Disk + ErrTab current_directory, Auth, User, Disk + ErrTab not_same_device, Unk, User, Disk + ErrTab no_more_files, NotFnd, User, Disk + ErrTab file_exists, Already, User, Disk + ErrTab sharing_violation, Locked, DlyRet, Disk + ErrTab lock_violation, Locked, DlyRet, Disk + ErrTab out_of_structures, OutRes, Abort, 0FFh + ErrTab invalid_password, Auth, User, Unk + ErrTab cannot_make, OutRes, Abort, Disk + ErrTab Not_supported, BadFmt, User, Net + ErrTab Already_assigned, Already, User, Net + ErrTab Invalid_Parameter, BadFmt, User, Unk + ErrTab FAIL_I24, Unk, Abort, Unk + ErrTab Sharing_buffer_exceeded,OutRes, Abort, Mem + ErrTab Handle_EOF, OutRes, Abort, Unk ;AN000; + ErrTab Handle_DISK_FULL, OutRes, Abort, Unk ;AN000; + ErrTab sys_comp_not_loaded, Unk, Abort, Disk ;AN001; + DB 0FFh, 0FFH, 0FFH, 0FFh + +; +; The following table defines CLASS ACTION and LOCUS info for the INT 24H +; errors. Each entry is 4 bytes long: +; +; Err#,Class,Action,Locus +; +; A Locus value of 0FFh indicates a call specific value (ie. should already +; be set). AN ERROR CODE NOT IN THE TABLE FALLS THROUGH TO THE CATCH ALL AT +; THE END. + +PUBLIC ERR_TABLE_24 +ERR_TABLE_24 LABEL BYTE + ErrTab write_protect, Media, IntRet, Disk + ErrTab bad_unit, Intrn, Panic, Unk + ErrTab not_ready, HrdFail, IntRet, 0FFh + ErrTab bad_command, Intrn, Panic, Unk + ErrTab CRC, Media, Abort, Disk + ErrTab bad_length, Intrn, Panic, Unk + ErrTab Seek, HrdFail, Retry, Disk + ErrTab not_DOS_disk, Media, IntRet, Disk + ErrTab sector_not_found, Media, Abort, Disk + ErrTab out_of_paper, TempSit, IntRet, SerDev + ErrTab write_fault, HrdFail, Abort, 0FFh + ErrTab read_fault, HrdFail, Abort, 0FFh + ErrTab gen_failure, Unk, Abort, 0FFh + ErrTab sharing_violation, Locked, DlyRet, Disk + ErrTab lock_violation, Locked, DlyRet, Disk + ErrTab wrong_disk, Media, IntRet, Disk + ErrTab not_supported, BadFmt, User, Net + ErrTab FCB_unavailable, Apperr, Abort, Unk + ErrTab Sharing_buffer_exceeded,OutRes, Abort, Mem + DB 0FFh, errCLASS_Unk, errACT_Panic, 0FFh + +; +; We need to map old int 24 errors and device driver errors into the new set +; of errors. The following table is indexed by the new errors +; +Public ErrMap24 +ErrMap24 Label BYTE + DB error_write_protect ; 0 + DB error_bad_unit ; 1 + DB error_not_ready ; 2 + DB error_bad_command ; 3 + DB error_CRC ; 4 + DB error_bad_length ; 5 + DB error_Seek ; 6 + DB error_not_DOS_disk ; 7 + DB error_sector_not_found ; 8 + DB error_out_of_paper ; 9 + DB error_write_fault ; A + DB error_read_fault ; B + DB error_gen_failure ; C + DB error_gen_failure ; D RESERVED + DB error_gen_failure ; E RESERVED + DB error_wrong_disk ; F + +Public ErrMap24End +ErrMap24End LABEL BYTE + + + PUBLIC DISPATCH,MAXCALL,MAXCOM + +MAXCALL DB VAL1 +MAXCOM DB VAL2 + +; Standard Functions +DISPATCH LABEL WORD + short_addr $ABORT ; 0 0 + short_addr $STD_CON_INPUT ; 1 1 + short_addr $STD_CON_OUTPUT ; 2 2 + short_addr $STD_AUX_INPUT ; 3 3 + short_addr $STD_AUX_OUTPUT ; 4 4 + short_addr $STD_PRINTER_OUTPUT ; 5 5 + short_addr $RAW_CON_IO ; 6 6 + short_addr $RAW_CON_INPUT ; 7 7 + short_addr $STD_CON_INPUT_NO_ECHO ; 8 8 + short_addr $STD_CON_STRING_OUTPUT ; 9 9 + short_addr $STD_CON_STRING_INPUT ; 10 A + short_addr $STD_CON_INPUT_STATUS ; 11 B + short_addr $STD_CON_INPUT_FLUSH ; 12 C + short_addr $DISK_RESET ; 13 D + short_addr $SET_DEFAULT_DRIVE ; 14 E + short_addr $FCB_OPEN ; 15 F + short_addr $FCB_CLOSE ; 16 10 + short_addr $DIR_SEARCH_FIRST ; 17 11 + short_addr $DIR_SEARCH_NEXT ; 18 12 + short_addr $FCB_DELETE ; 19 13 + short_addr $FCB_SEQ_READ ; 20 14 + short_addr $FCB_SEQ_WRITE ; 21 15 + short_addr $FCB_CREATE ; 22 16 + short_addr $FCB_RENAME ; 23 17 + short_addr CPMFUNC ; 24 18 + short_addr $GET_DEFAULT_DRIVE ; 25 19 + short_addr $SET_DMA ; 26 1A + +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $SLEAZEFUNC ; 27 1B + short_addr $SLEAZEFUNCDL ; 28 1C +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + + short_addr CPMFUNC ; 29 1D + short_addr CPMFUNC ; 30 1E +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $GET_DEFAULT_DPB ; 31 1F +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr CPMFUNC ; 32 20 + short_addr $FCB_RANDOM_READ ; 33 21 + short_addr $FCB_RANDOM_WRITE ; 34 22 + short_addr $GET_FCB_FILE_LENGTH ; 35 23 + short_addr $GET_FCB_POSITION ; 36 24 +VAL1 = ($-DISPATCH)/2 - 1 + +; Extended Functions + short_addr $SET_INTERRUPT_VECTOR ; 37 25 +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $CREATE_PROCESS_DATA_BLOCK ; 38 26 +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr $FCB_RANDOM_READ_BLOCK ; 39 27 + short_addr $FCB_RANDOM_WRITE_BLOCK ; 40 28 + short_addr $PARSE_FILE_DESCRIPTOR ; 41 29 + short_addr $GET_DATE ; 42 2A + short_addr $SET_DATE ; 43 2B + short_addr $GET_TIME ; 44 2C + short_addr $SET_TIME ; 45 2D + short_addr $SET_VERIFY_ON_WRITE ; 46 2E + +; Extended functionality group + short_addr $GET_DMA ; 47 2F + short_addr $GET_VERSION ; 48 30 + short_addr $Keep_Process ; 49 31 +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $GET_DPB ; 50 32 +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr $SET_CTRL_C_TRAPPING ; 51 33 + short_addr $GET_INDOS_FLAG ; 52 34 + short_addr $GET_INTERRUPT_VECTOR ; 53 35 + short_addr $GET_DRIVE_FREESPACE ; 54 36 + short_addr $CHAR_OPER ; 55 37 + short_addr $INTERNATIONAL ; 56 38 +; XENIX CALLS +; Directory Group + short_addr $MKDIR ; 57 39 + short_addr $RMDIR ; 58 3A + short_addr $CHDIR ; 59 3B +; File Group + short_addr $CREAT ; 60 3C + short_addr $OPEN ; 61 3D + short_addr $CLOSE ; 62 3E + short_addr $READ ; 63 3F + short_addr $WRITE ; 64 40 + short_addr $UNLINK ; 65 41 + short_addr $LSEEK ; 66 42 + short_addr $CHMOD ; 67 43 + short_addr $IOCTL ; 68 44 + short_addr $DUP ; 69 45 + short_addr $DUP2 ; 70 46 + short_addr $CURRENT_DIR ; 71 47 +; Memory Group + short_addr $ALLOC ; 72 48 + short_addr $DEALLOC ; 73 49 + short_addr $SETBLOCK ; 74 4A +; Process Group + short_addr $EXEC ; 75 4B + short_addr $EXIT ; 76 4C + short_addr $WAIT ; 77 4D + short_addr $FIND_FIRST ; 78 4E +; Special Group + short_addr $FIND_NEXT ; 79 4F +; SPECIAL SYSTEM GROUP +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $SET_CURRENT_PDB ; 80 50 + short_addr $GET_CURRENT_PDB ; 81 51 + short_addr $GET_IN_VARS ; 82 52 + short_addr $SETDPB ; 83 53 +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr $GET_VERIFY_ON_WRITE ; 84 54 +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $DUP_PDB ; 85 55 +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr $RENAME ; 86 56 + short_addr $FILE_TIMES ; 87 57 + short_addr $AllocOper ; 88 58 +; Network extention system calls + short_addr $GetExtendedError ; 89 59 + short_addr $CreateTempFile ; 90 5A + short_addr $CreateNewFile ; 91 5B + short_addr $LockOper ; 92 5C + short_addr $ServerCall ; 93 5D + short_addr $UserOper ; 94 5E + short_addr $AssignOper ; 95 5F + short_addr $NameTrans ; 96 60 + short_addr CPMFunc ; 97 61 + short_addr $Get_Current_PDB ; 98 62 +; the next call is reserved for hangool sys call + short_addr $ECS_Call ; 99 63 +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; +; C A V E A T P R O G R A M M E R ; +; ; + short_addr $Set_Printer_Flag ; 100 64 +; ; +; C A V E A T P R O G R A M M E R ; +;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----; + short_addr $GetExtCntry ; 101 65 + short_addr $GetSetCdPg ; 102 66 + short_addr $ExtHandle ; 103 67 + short_addr $Commit ; 104 68 + short_addr $GSetMediaID ; 105 69 ;AN000; + short_addr $Commit ; 106 6A ;AN000; + short_addr $IFS_IOCTL ; 107 6B ;AN000; + short_addr $Extended_Open ; 108 6C ;AN000; +; +VAL2 = ($-DISPATCH)/2 - 1 + + + If Installed + +PUBLIC FOO +FOO LABEL WORD + Short_addr Leave2F +DTab DW OFFSET DOSGroup:DOSTable + PUBLIC FOO,DTAB + +DOSTable LABEL WORD + DB (DOSTableEnd-DOSTable-1)/2 + Short_addr DOSInstall ; 0 install check + Short_addr DOS_CLOSE ; 1 DOS_CLOSE + Short_addr RECSET ; 2 RECSET + Short_addr DOSGetGroup ; 3 Get DOSGROUP + Short_addr PATHCHRCMP ; 4 PATHCHRCMP + Short_addr OUTT ; 5 OUT + Short_addr NET_I24_ENTRY ; 6 NET_I24_ENTRY + Short_addr PLACEBUF ; 7 PLACEBUF + Short_addr FREE_SFT ; 8 FREE_SFT + Short_addr BUFWRITE ; 9 BUFWRITE + Short_addr SHARE_VIOLATION ; 10 SHARE_VIOLATION + Short_addr SHARE_ERROR ; 11 SHARE_ERROR + Short_addr SET_SFT_MODE ; 12 SET_SFT_MODE + Short_addr DATE16 ; 13 DATE16 + Short_addr idle ; 14 empty slot + Short_addr SCANPLACE ; 15 SCANPLACE + Short_addr idle ; 16 empty slot + Short_addr StrCpy ; 17 StrCpy + Short_addr StrLen ; 18 StrLen + Short_addr Ucase ; 19 Ucase + Short_addr POINTCOMP ; 20 POINTCOMP + Short_addr CHECKFLUSH ; 21 CHECKFLUSH + Short_addr SFFromSFN ; 22 SFFromSFN + Short_addr GetCDSFromDrv ; 23 GetCDSFromDrv + Short_addr Get_User_Stack ; 24 Get_User_Stack + Short_addr GetThisDrv ; 25 GetThisDrv + Short_addr DriveFromText ; 26 DriveFromText + Short_addr SETYEAR ; 27 SETYEAR + Short_addr DSUM ; 28 DSUM + Short_addr DSLIDE ; 29 DSLIDE + Short_addr StrCmp ; 30 StrCmp + Short_addr InitCDS ; 31 initcds + Short_addr pJFNFromHandle ; 32 pJfnFromHandle + Short_addr $NameTrans ; 33 $NameTrans + Short_addr CAL_LK ; 34 CAL_LK + Short_addr DEVNAME ; 35 DEVNAME + Short_addr Idle ; 36 Idle + Short_addr DStrLen ; 37 DStrLen + Short_addr NLS_OPEN ; 38 NLS_OPEN DOS 3.3 + Short_addr $CLOSE ; 39 $CLOSE DOS 3.3 + Short_addr NLS_LSEEK ; 40 NLS_LSEEK DOS 3.3 + Short_addr $READ ; 41 $READ DOS 3.3 + Short_addr FastInit ; 42 FastInit DOS 3.4 ;AN000; + Short_addr NLS_IOCTL ; 43 NLS_IOCTL DOS 3.3 + Short_addr GetDevList ; 44 GetDevList DOS 3.3 + Short_addr NLS_GETEXT ; 45 NLS_GETEXT DOS 3.3 + Short_addr MSG_RETRIEVAL ; 46 MSG_RETRIEVAL DOS 4.0 ;AN000; + Short_addr Fake_Version ; 47 Fake_Version DOS 4.0 ;AN006; + +DOSTableEnd LABEL BYTE + + ENDIF + +; NOTE WARNING: This declaration of HEADER must be THE LAST thing in this +; module. The reason is so that the data alignments are the same in +; IBM-DOS and MS-DOS up through header. +;---------------------------------------Start of Korean support 2/11/KK +; +; The varialbes for ECS version are moved here for the same data alignments +; as IBM-DOS and MS-DOS. +; + + I_AM InterChar, byte ; Interim character flag ( 1= interim) ;AN000; + ;AN000; +;------- NOTE: NEXT TWO BYTES SOMETIMES USED AS A WORD !! --------------------- +DUMMY LABEL WORD ;AN000; + PUBLIC InterCon ; Console in Interim mode ( 1= interim) ;AN000; +InterCon db 0 ;AN000; + PUBLIC SaveCurFlg ; Print, do not advance cursor flag ;AN000; +SaveCurFlg db 0 ;AN000; +;-----------------------------------------End of Korean support 2/11/KK + + + PUBLIC HEADER +Header LABEL BYTE + IF DEBUG + DB 13,10,"Debugging DOS version " + DB MAJOR_VERSION + "0" + DB "." + DB (MINOR_VERSION / 10) + "0" + DB (MINOR_VERSION MOD 10) + "0" + ENDIF + + IF NOT IBM + DB 13,10,"MS-DOS version " + DB MAJOR_VERSION + "0" + DB "." + DB (MINOR_VERSION / 10) + "0" + DB (MINOR_VERSION MOD 10) + "0" + + IF HIGHMEM + DB "H" + ENDIF + + DB 13,10, "Copyright 1981,82,83,84,88 Microsoft Corp.",13,10,"$" + ENDIF + +IF DEBUG + DB 13,10,"$" +ENDIF + +MSTAB001E label byte + +include copyrigh.inc ;AN000; + +; SYS init extended table, DOS 3.3 F.C. 5/29/86 +; + PUBLIC SysInitTable + I_need COUNTRY_CDPG,BYTE + I_need SYSINITVAR,BYTE + +SysInitTable label byte + dw OFFSET DOSGROUP:SYSINITVAR ; pointer to sysinit var + dw 0 ; segment + dw OFFSET DOSGROUP:COUNTRY_CDPG ; pointer to country table + dw 0 ; segment of pointer +; DOS 3.3 F.C. 6/12/86 + +; FASTOPEN communications area DOS 3.3 F.C. 5/29/86 +; + PUBLIC FastOpenTable + PUBLIC FastTable ; a better name + EXTRN FastRet:FAR ; defined in misc2.asm + +FastTable label byte ; a better name +FastOpenTable label byte + dw 2 ; number of entries + dw OFFSET DOSGROUP:FastRet ; pointer to ret instr. + dw 0 ; and will be modified by + dw OFFSET DOSGROUP:FastRet ; FASTxxx when loaded in + dw 0 ; +; DOS 3.3 F.C. 6/12/86 + PUBLIC FastFlg ;AN000; flags +FastFlg label byte ;AN000; don't change the following order + I_am FastOpenFlg,BYTE,<0> ;AN000; + I_am FastSeekFlg,BYTE,<0> ;AN000; + + PUBLIC FastOpen_Ext_Info + +; FastOpen_Ext_Info is used as a temporary storage for saving dirpos,dirsec +; and clusnum which are filled by DOS 3.3 when calling FastOpen Insert +; or filled by FastOPen when calling FastOpen Lookup + +FastOpen_Ext_Info label byte + db SIZE FASTOPEN_EXTENDED_INFO dup(0) ;dirpos + +; Dir_Info_Buff is a dir entry buffer which is filled by FastOPen +; when calling FastOpen Lookup + + PUBLIC Dir_Info_Buff + +Dir_Info_Buff label byte + db SIZE dir_entry dup (0) + + + I_am Next_Element_Start,WORD ; save next element start offset + +; Following 4 variables moved to MSDATA.asm (P4986) +; I_am FSeek_drive,BYTE ;AN000; fastseek drive # +; I_am FSeek_firclus,WORD ;AN000; fastseek first cluster # +; I_am FSeek_logclus,WORD ;AN000; fastseek logical cluster # +; I_am FSeek_logsave,WORD ;AN000; fastseek returned log clus # + +; The following is a stack and its pointer for interrupt 2F which is uesd +; by NLSFUNC. There is no significant use of this stack, we are just trying +; not to destroy the INT 21 stack saved for the user. + + + PUBLIC User_SP_2F + +USER_SP_2F LABEL WORD + dw OFFSET DOSGROUP:FAKE_STACK_2F + + PUBLIC Packet_Temp +Packet_Temp label word ; temporary packet used by readtime + PUBLIC DOS_TEMP ; temporary word +DOS_TEMP label word +FAKE_STACK_2F dw 14 dup (0) ; 12 register temporary storage + + PUBLIC Hash_Temp ;AN000; temporary word +Hash_Temp label word ;AN000; + dw 4 dup (0) ;AN000; temporary hash table during config.sys + + PUBLIC SCAN_FLAG ; flag to indicate key ALT_Q +SCAN_FLAG label byte + db 0 +;;; The following 2 words must be adjacent for IBMDOS reasons + + PUBLIC DATE_FLAG +DATE_FLAG label word ; flag to + dw 0 ; to update the date +;;;; special tag for IBMDOS + PUBLIC FETCHI_TAG +FETCHI_TAG label word ; TAG to make DOS 3.3 work + dw 0 ; must be 22642 +;;; The above 2 words must be adjacent for IBMDOS reasons +; DOS 3.3 F.C. 6/12/86 + I_am Del_ExtCluster,WORD ; for dos_delete ;AN000; + + PUBLIC MSG_EXTERROR ; for system message addr ;AN000; +MSG_EXTERROR label DWORD ;AN000; + dd 0 ; for extended error ;AN000; + dd 0 ; for parser ;AN000; + dd 0 ; for critical errror ;AN000; + dd 0 ; for IFS ;AN000; + dd 0 ; for code reduction ;AN000; + + PUBLIC SEQ_SECTOR ; last sector read ;AN000; +SEQ_SECTOR label DWORD ;AN000; + dd -1 ;AN000; + + I_am XA_CONDITION,BYTE,<0> ; for Extended Attributes ;AN000; +; I_am XA_ES,WORD ; for extended find ;AN000; +; I_am XA_BP,WORD ; for extended find ;AN000; +; I_am XA_handle,WORD ; for get/set EA ;AN000; + I_am XA_type,BYTE ; for get/set EA ;AN000; +; I_am XA_device,BYTE ; for get/set EA ;AN000; + I_am XA_from,BYTE ; for get/set EA ;AN000; +; I_am XA_VAR,WORD ; for get/set EA ;AN000; +; I_am XA_TEMP,WORD ; for get/set EA ;AN000; +; I_am XA_TEMP2,WORD ; for get/set EA ;AN000; +; + +; I_am MAX_EA_SIZE,WORD,<29> ; max EA list size ;AN000; +; I_am MAX_EANAME_SIZE,WORD,<20> ; max EA name list size ;AN000; +; I_am XA_COUNT,WORD,<2> ; number of EA entries ;AN000; + + +; PUBLIC XA_TABLE ; for get/set EA ;AN000; +; +;XA_TABLE label byte ;AN000; +; db EAISBINARY ;Code Page ;AN000; +; dw EASYSTEM ;AN000; +; db 0,2 ;AN000; +; dw 2 ;AN000; +; db 'CP' ;AN000; +; +; db EAISBINARY ;File Type ;AN000; +; dw EASYSTEM ;AN000; +; db 0,8 ;AN000; +; dw 1 ;AN000; +; db 'FILETYPE' ;AN000; +; + +; PUBLIC XA_PACKET ;AN000; +;XA_PACKET label byte ;AN000; +;IF DBCS ;AN000; +; dw 18 ;AN000; +; db 18 dup(0) ;AN000; +; PUBLIC DBCS_PACKET ;AN000; +;DBCS_PACKET label byte ;AN000; +; db 5 dup(0) +;ELSE +; dw 2, 0 ; get/set device code page ;AN000; +;ENDIF + I_am CurHashEntry,DWORD ; current hash buffer entry ;AN000; +;; I_am ACT_PAGE,WORD,<-1> ;BL ; active EMS page ;AN000; + I_am SC_SECTOR_SIZE,WORD ; sector size for SC ;AN000; + I_am SC_DRIVE,BYTE ; drive # for secondary cache ;AN000; + I_am CurSC_DRIVE,BYTE,<-1> ; current SC drive ;AN000; + I_am CurSC_SECTOR,DWORD ; current SC starting sector ;AN000; + I_am SC_STATUS,WORD,<0> ; SC status word ;AN000; + I_am SC_FLAG,BYTE,<0> ; SC flag ;AN000; + I_am IFS_DRIVER_ERR,WORD,<0> ; driver error for IFS ;AN000; + + PUBLIC NO_NAME_ID ;AN000; +NO_NAME_ID label byte ;AN000; + db 'NO NAME ' ; null media id ;AN000; + + PUBLIC SWAP_AREA_TABLE ;AN000; +SWAP_AREA_TABLE label byte ;AN000; + I_am NUM_SWAP_AREA,WORD,<2> ; number of swap areas ;AN000; + I_am SWAP_IN_DOS,DWORD ; swap in dos area ;AN000; + I_am SWAP_IN_DOS_LEN,WORD ; swap in dos area length ;AN000; + I_am SWAP_ALWAYS_AREA,DWORD ; swap always area ;AN000; + I_am SWAP_ALWAYS_AREA_LEN,WORD ; swap always area length ;AN000; + I_am IFSFUNC_SWAP_IN_DOS,DWORD ; ifsfunc swap in dos area ;AN000; + I_am IFSFUNC_SWAP_IN_DOS_LEN,WORD ; ifsfunc swap in dos area length ;AN000; + + I_am SWAP_AREA_LEN,WORD ; swap area length ;AN000; + I_am FIRST_BUFF_ADDR,WORD ; first buffer address ;AN000; + I_am SPECIAL_VERSION,WORD,<0> ;AN006; used by INT 2F 47H + I_am FAKE_COUNT,<255> ;AN008; fake version count + I_am OLD_FIRSTCLUS,WORD ;AN011; save old first cluster for fastopen + +TABLE ENDS + + + \ No newline at end of file -- cgit v1.2.3