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.
169 lines
5.0 KiB
169 lines
5.0 KiB
;/*
|
|
; * Microsoft Confidential
|
|
; * Copyright (C) Microsoft Corporation 1991
|
|
; * All Rights Reserved.
|
|
; */
|
|
|
|
INCSW EQU 0 ;INCLUDE PSDATA.INC ;AN000;
|
|
FARSW EQU 1 ;CALL THE PARSER BY NEAR CALL
|
|
DATESW EQU 0 ;SUPPRESS DATE CHECKING ;AN000;
|
|
TIMESW EQU 0 ;SUPPRESS TIME CHECKING ;AN000;
|
|
FILESW EQU 0 ;SUPPRESS CHECKING FILE SPECIFICATION ;AN000;
|
|
CAPSW EQU 0 ;SUPPRESS FILE TABLE CAPS ;AN000;
|
|
CMPXSW EQU 1 ;SUPPRESS CHECKING COMPLEX LIST
|
|
DRVSW EQU 1 ;SUPPRESS SUPPORT OF DRIVE ONLY FORMAT
|
|
QUSSW EQU 0 ;SUPPRESS SUPPORT OF QUOTED STRING FORMAT ;AN000;
|
|
NUMSW EQU 1 ;SUPPRESS CHECKING NUMERIC VALUE
|
|
KEYSW EQU 0 ;SUPPRESS KEYWORD SUPPORT ;AN000;
|
|
SWSW EQU 1 ;DO SUPPORT SWITCHES ;AN000;
|
|
VAL1SW EQU 0 ;SUPPRESS SUPPORT OF VALUE DEFINITION 1 ;AN000;
|
|
VAL2SW EQU 0 ;SUPPRESS SUPPORT OF VALUE DEFINITION 2 ;AN000;
|
|
VAL3SW EQU 1 ;DO SUPPORT VALUE DEFINITION 3
|
|
|
|
include psdata.inc
|
|
;***********************************************************************
|
|
|
|
;-------------------------------------------------------------------
|
|
;
|
|
; parser stuff for APPEND
|
|
;
|
|
;-------------------------------------------------------------------
|
|
|
|
|
|
|
|
p_block1 $P_PARMS_Blk <offset px_block1, 0, 0> ; parm block
|
|
p_block2 $P_PARMS_Blk <offset px_block2, 0, 0> ; parm block
|
|
|
|
;------------------------
|
|
; extended parameter block for APPEND first load
|
|
|
|
px_block1:
|
|
db 0 ; min number positional operands
|
|
db 0 ; max number positional operands
|
|
; dw 0 ; offset into control block for positionals
|
|
|
|
db 4 ; APPEND has two switches /E, /X, /PATH, /?
|
|
dw offset e_switch ; control block for /E switch
|
|
dw offset x_switch ; control block for /X switch
|
|
dw offset qu_switch ; " " for /? switch
|
|
dw offset path_switch ; control block for /PATH switch
|
|
|
|
db 0 ; max number of keywords
|
|
dw 0 ; offset of keyword control block
|
|
|
|
;------------------------
|
|
; extended parameter block for 2nd, 3rd, ... APPEND invocations
|
|
|
|
px_block2:
|
|
db 0 ; min number positional operands
|
|
db 1 ; max number positional operands
|
|
dw offset dirs_control ; pointer to dirs control block
|
|
|
|
; db 2 ; APPEND after first load has two switches /X, /PATH
|
|
db 4 ; APPEND has two switches /E, /X, /PATH
|
|
dw offset e_switch ; control block for /E switch
|
|
dw offset x_switch ; control block for /X switch
|
|
dw offset qu_switch ; " " for /? switch
|
|
dw offset path_switch ; control block for /PATH switch
|
|
|
|
db 0 ; max number of keywords
|
|
|
|
;------------------------
|
|
dirs_control:
|
|
dw $P_Simple_S+$P_Optional ; complex, optional string
|
|
dw $P_CAP_File ; cap by file table
|
|
dw offset dirs_result ; dirs result buffer
|
|
dw offset dirs_values ; pointer to null value list
|
|
db 0 ; no synonyms
|
|
|
|
dirs_values:
|
|
db 0 ; null value list for dirs
|
|
|
|
|
|
|
|
;------------------------
|
|
x_switch:
|
|
dw $P_Simple_s+$P_Optional ; /X, /X:ON, /X:OFF simple, optional string
|
|
dw $P_CAP_Char ; cap by char table
|
|
dw offset x_result ; pointer to result block
|
|
dw offset x_values ; pointer to values block
|
|
db 1 ; number of switches and synonyms
|
|
db "/X",0 ; only /X is valid
|
|
|
|
x_values:
|
|
db 3 ; string values
|
|
db 0 ; zeroes here for ranges and
|
|
db 0 ; values
|
|
db 2 ; 2 possible string values
|
|
db 0 ; /X:OFF = 0
|
|
dw offset off_string ; pointer to "OFF"
|
|
db 1 ; /X:ON = 1
|
|
dw offset on_string
|
|
;------------------------
|
|
|
|
e_switch:
|
|
dw 0 ; /E
|
|
dw $P_CAP_Char ; cap by char table
|
|
dw offset e_result ; pointer to result block
|
|
dw offset e_values ; pointer to values block, none
|
|
db 1 ; number of switches and synonyms
|
|
db "/E",0 ; only /E is valid
|
|
|
|
e_values:
|
|
db 0 ; null value list for /E
|
|
|
|
|
|
;------------------------
|
|
|
|
qu_switch:
|
|
dw 1 ; optional
|
|
dw 0
|
|
dw offset qu_result ; pointer to result block
|
|
dw offset qu_values ; pointer to values block, none
|
|
db 1 ; number of switches and synonyms
|
|
db "/?",0 ; only /? is valid
|
|
|
|
qu_values:
|
|
db 0 ; null value list for /E
|
|
|
|
|
|
|
|
path_switch:
|
|
dw $P_Simple_s ; /PATH:ON, /PATH:OFF simple string
|
|
dw $P_CAP_Char ; cap by char table
|
|
dw offset path_result ; pointer to result block
|
|
dw offset path_values ; pointer to values block
|
|
db 1 ; number of switches and synonyms
|
|
db "/PATH",0 ; only /PATH is valid
|
|
|
|
|
|
path_values:
|
|
db 3 ; string values
|
|
db 0 ; zeroes here for ranges and
|
|
db 0 ; values
|
|
db 2 ; 2 possible string values
|
|
db 0 ; /PATH:OFF = 0
|
|
dw offset off_string ; pointer to "OFF"
|
|
db 1 ; /PATH:ON = 1
|
|
dw offset on_string
|
|
|
|
|
|
;------------------------
|
|
|
|
off_string:
|
|
db "OFF",0 ; off string
|
|
|
|
on_string:
|
|
db "ON",0 ; on string
|
|
|
|
|
|
;------------------------
|
|
|
|
x_result $P_Result_Blk <> ; /X result block
|
|
e_result $P_Result_Blk <> ; /E result block
|
|
qu_result $P_Result_Blk <> ; /? result block
|
|
path_result $P_Result_Blk <> ; /PATH result block
|
|
dirs_result $P_Result_Blk <> ; dirs result block
|
|
|
|
|
|
|