Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
5.0 KiB

  1. ;/*
  2. ; * Microsoft Confidential
  3. ; * Copyright (C) Microsoft Corporation 1991
  4. ; * All Rights Reserved.
  5. ; */
  6. INCSW EQU 0 ;INCLUDE PSDATA.INC ;AN000;
  7. FARSW EQU 1 ;CALL THE PARSER BY NEAR CALL
  8. DATESW EQU 0 ;SUPPRESS DATE CHECKING ;AN000;
  9. TIMESW EQU 0 ;SUPPRESS TIME CHECKING ;AN000;
  10. FILESW EQU 0 ;SUPPRESS CHECKING FILE SPECIFICATION ;AN000;
  11. CAPSW EQU 0 ;SUPPRESS FILE TABLE CAPS ;AN000;
  12. CMPXSW EQU 1 ;SUPPRESS CHECKING COMPLEX LIST
  13. DRVSW EQU 1 ;SUPPRESS SUPPORT OF DRIVE ONLY FORMAT
  14. QUSSW EQU 0 ;SUPPRESS SUPPORT OF QUOTED STRING FORMAT ;AN000;
  15. NUMSW EQU 1 ;SUPPRESS CHECKING NUMERIC VALUE
  16. KEYSW EQU 0 ;SUPPRESS KEYWORD SUPPORT ;AN000;
  17. SWSW EQU 1 ;DO SUPPORT SWITCHES ;AN000;
  18. VAL1SW EQU 0 ;SUPPRESS SUPPORT OF VALUE DEFINITION 1 ;AN000;
  19. VAL2SW EQU 0 ;SUPPRESS SUPPORT OF VALUE DEFINITION 2 ;AN000;
  20. VAL3SW EQU 1 ;DO SUPPORT VALUE DEFINITION 3
  21. include psdata.inc
  22. ;***********************************************************************
  23. ;-------------------------------------------------------------------
  24. ;
  25. ; parser stuff for APPEND
  26. ;
  27. ;-------------------------------------------------------------------
  28. p_block1 $P_PARMS_Blk <offset px_block1, 0, 0> ; parm block
  29. p_block2 $P_PARMS_Blk <offset px_block2, 0, 0> ; parm block
  30. ;------------------------
  31. ; extended parameter block for APPEND first load
  32. px_block1:
  33. db 0 ; min number positional operands
  34. db 0 ; max number positional operands
  35. ; dw 0 ; offset into control block for positionals
  36. db 4 ; APPEND has two switches /E, /X, /PATH, /?
  37. dw offset e_switch ; control block for /E switch
  38. dw offset x_switch ; control block for /X switch
  39. dw offset qu_switch ; " " for /? switch
  40. dw offset path_switch ; control block for /PATH switch
  41. db 0 ; max number of keywords
  42. dw 0 ; offset of keyword control block
  43. ;------------------------
  44. ; extended parameter block for 2nd, 3rd, ... APPEND invocations
  45. px_block2:
  46. db 0 ; min number positional operands
  47. db 1 ; max number positional operands
  48. dw offset dirs_control ; pointer to dirs control block
  49. ; db 2 ; APPEND after first load has two switches /X, /PATH
  50. db 4 ; APPEND has two switches /E, /X, /PATH
  51. dw offset e_switch ; control block for /E switch
  52. dw offset x_switch ; control block for /X switch
  53. dw offset qu_switch ; " " for /? switch
  54. dw offset path_switch ; control block for /PATH switch
  55. db 0 ; max number of keywords
  56. ;------------------------
  57. dirs_control:
  58. dw $P_Simple_S+$P_Optional ; complex, optional string
  59. dw $P_CAP_File ; cap by file table
  60. dw offset dirs_result ; dirs result buffer
  61. dw offset dirs_values ; pointer to null value list
  62. db 0 ; no synonyms
  63. dirs_values:
  64. db 0 ; null value list for dirs
  65. ;------------------------
  66. x_switch:
  67. dw $P_Simple_s+$P_Optional ; /X, /X:ON, /X:OFF simple, optional string
  68. dw $P_CAP_Char ; cap by char table
  69. dw offset x_result ; pointer to result block
  70. dw offset x_values ; pointer to values block
  71. db 1 ; number of switches and synonyms
  72. db "/X",0 ; only /X is valid
  73. x_values:
  74. db 3 ; string values
  75. db 0 ; zeroes here for ranges and
  76. db 0 ; values
  77. db 2 ; 2 possible string values
  78. db 0 ; /X:OFF = 0
  79. dw offset off_string ; pointer to "OFF"
  80. db 1 ; /X:ON = 1
  81. dw offset on_string
  82. ;------------------------
  83. e_switch:
  84. dw 0 ; /E
  85. dw $P_CAP_Char ; cap by char table
  86. dw offset e_result ; pointer to result block
  87. dw offset e_values ; pointer to values block, none
  88. db 1 ; number of switches and synonyms
  89. db "/E",0 ; only /E is valid
  90. e_values:
  91. db 0 ; null value list for /E
  92. ;------------------------
  93. qu_switch:
  94. dw 1 ; optional
  95. dw 0
  96. dw offset qu_result ; pointer to result block
  97. dw offset qu_values ; pointer to values block, none
  98. db 1 ; number of switches and synonyms
  99. db "/?",0 ; only /? is valid
  100. qu_values:
  101. db 0 ; null value list for /E
  102. path_switch:
  103. dw $P_Simple_s ; /PATH:ON, /PATH:OFF simple string
  104. dw $P_CAP_Char ; cap by char table
  105. dw offset path_result ; pointer to result block
  106. dw offset path_values ; pointer to values block
  107. db 1 ; number of switches and synonyms
  108. db "/PATH",0 ; only /PATH is valid
  109. path_values:
  110. db 3 ; string values
  111. db 0 ; zeroes here for ranges and
  112. db 0 ; values
  113. db 2 ; 2 possible string values
  114. db 0 ; /PATH:OFF = 0
  115. dw offset off_string ; pointer to "OFF"
  116. db 1 ; /PATH:ON = 1
  117. dw offset on_string
  118. ;------------------------
  119. off_string:
  120. db "OFF",0 ; off string
  121. on_string:
  122. db "ON",0 ; on string
  123. ;------------------------
  124. x_result $P_Result_Blk <> ; /X result block
  125. e_result $P_Result_Blk <> ; /E result block
  126. qu_result $P_Result_Blk <> ; /? result block
  127. path_result $P_Result_Blk <> ; /PATH result block
  128. dirs_result $P_Result_Blk <> ; dirs result block
  129.