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.

516 lines
20 KiB

  1. ;*******************************************************************
  2. ; Parser include file
  3. ;*******************************************************************
  4. IF1 ;AN000;
  5. ; %OUT INCLUDING COMP=COMMON DSN=PSDATA.INC...;AN000;
  6. ENDIF ;AN000;
  7. INCLUDE version.inc
  8. ;
  9. ;**** Default assemble switches definition *************************
  10. IFNDEF FarSW ;AN000;
  11. FarSW equ 0 ;AN000; Near call expected
  12. ENDIF ;AN000;
  13. IFNDEF DateSW ;AN000;
  14. DateSW equ 1 ;AN000; Check date format
  15. ENDIF ;AN000;
  16. IFNDEF TimeSW ;AN000;
  17. TimeSW equ 1 ;AN000; Check time format
  18. ENDIF ;AN000;
  19. IFNDEF FileSW ;AN000;
  20. FileSW equ 1 ;AN000; Check file specification
  21. ENDIF ;AN000;
  22. IFNDEF CAPSW ;AN000;
  23. CAPSW equ 1 ;AN000; Perform CAPS if specified
  24. ENDIF ;AN000;
  25. IFNDEF CmpxSW ;AN000;
  26. CmpxSW equ 1 ;AN000; Check complex list
  27. ENDIF ;AN000;
  28. IFNDEF NumSW ;AN000;
  29. NumSW equ 1 ;AN000; Check numeric value
  30. ENDIF ;AN000;
  31. IFNDEF KeySW ;AN000;
  32. KeySW equ 1 ;AN000; Support keywords
  33. ENDIF ;AN000;
  34. IFNDEF SwSW ;AN000;
  35. SwSW equ 1 ;AN000; Support switches
  36. ENDIF ;AN000;
  37. IFNDEF Val1SW ;AN000;
  38. Val1SW equ 1 ;AN000; Support value definition 1
  39. ENDIF ;AN000;
  40. IFNDEF Val2SW ;AN000;
  41. Val2SW equ 1 ;AN000; Support value definition 2
  42. ENDIF ;AN000;
  43. IFNDEF Val3SW ;AN000;
  44. Val3SW equ 1 ;AN000; Support value definition 3
  45. ENDIF ;AN000;
  46. IFNDEF DrvSW ;AN000;
  47. DrvSW equ 1 ;AN000; Support drive only format
  48. ENDIF ;AN000;
  49. IFNDEF QusSW ;AN000;
  50. QusSW equ 1 ;AN000; Support quoted string format
  51. ENDIF ;AN000;
  52. IFNDEF LFEOLSW ;AN028;
  53. LFEOLSW EQU 1 ;AN028; Accept Line feed (0AH) as end of line
  54. ENDIF ;AN028;
  55. ;**** Equation field
  56. ;-------- Character code definition
  57. $P_DBSP1 equ DB_SP_HI ;AN000; 1st byte of DBCS blank
  58. $P_DBSP2 equ DB_SP_LO ;AN000; 2nd byte of DBCS blank
  59. $P_Period equ "." ;AN020;
  60. $P_Slash equ "/" ;AN020;
  61. $P_Space equ " " ;AN000; SBCS blank
  62. $P_Comma equ "," ;AN000;
  63. $P_Switch equ "/" ;AN000;
  64. $P_Keyword equ "=" ;AN000;
  65. $P_Colon equ ":" ;AN000;
  66. $P_Plus equ "+" ;AN000;
  67. $P_Minus equ "-" ;AN000;
  68. $P_Rparen equ ")" ;AN000;
  69. $P_Lparen equ "(" ;AN000;
  70. ;(deleted ;AN025;) $P_SQuote equ "'"
  71. $P_DQuote equ '"' ;AN000;
  72. $P_NULL equ 0 ;AN000;
  73. $P_TAB equ 9 ;AN000;
  74. $P_CR equ 0Dh ;AN000;
  75. $P_LF equ 0Ah ;AN000;
  76. $P_ASCII80 equ 80h ;AN000; ASCII 80h character code
  77. ;-------- Masks
  78. $P_Make_Lower equ 20h ;AN000; make lower case character
  79. $P_Make_Upper equ 0ffh-$P_Make_Lower ;AN000; make upper case character
  80. PAGE ;AN000;
  81. ;-------- DOS function call related equs
  82. $P_DOS_Get_CDI equ 3800h ;AN000; get country dependent information
  83. ; by this call, following information
  84. $P_CDI struc ;AN000; is returned.
  85. $P_CDI_DateF dw 0 ;AN000;
  86. $P_CDI_Money db 0,0,0,0,0 ;AN000;
  87. $P_CDI_1000 db 0,0 ;AN000;
  88. $P_CDI_Dec db 0,0 ;AN000;
  89. $P_CDI_DateS db 0,0 ;AN000;
  90. $P_CDI_TimeS db 0,0 ;AN000;
  91. db 0 ;AN000;
  92. db 0 ;AN000;
  93. $P_CDI_TimeF db 0 ;AN000;
  94. dw 0,0 ;AN000;
  95. db 0,0 ;AN000;
  96. dw 5 dup(0) ;AN000;
  97. $P_CDI ends ;AN000;
  98. $P_Date_MDY equ 0 ;AN000;
  99. $P_Date_DMY equ 1 ;AN000;
  100. $P_Date_YMD equ 2 ;AN000;
  101. ;-------------
  102. $P_DOS_GetEV equ 6300h ;AN000; get DBCS EV call
  103. ;AN000; DS:SI will points to DBCS EV
  104. ;-------------
  105. $P_DOS_Get_TBL equ 65h ;AN000; get uppercase table call
  106. ;AN000; following parameters are set
  107. ;AN000; to get casemap table.
  108. $P_DOSTBL_Def equ -1 ;AN000; get default
  109. $P_DOSTBL_BL equ 5 ;AN000; buffer length for Tbl pointer
  110. $P_DOSTBL_File equ 4 ;AN000; get file uppercase table
  111. $P_DOSTBL_Char equ 2 ;AN000; get character uppercase table
  112. ; By this call following information
  113. ; is returned.
  114. $P_DOS_TBL struc ;AN000;
  115. $P_DOS_InfoID db 0 ;AN000; information id for the table
  116. $P_DOS_TBL_Off dw 0 ;AN000; offset address of the table
  117. $P_DOS_TBL_Seg dw 0 ;AN000; segment address of the table
  118. $P_DOS_TBL ends ;AN000;
  119. PAGE ;AN000;
  120. ;---------------------------------------------------------------------------------------------------------
  121. ; PARMS LABEL BYTE
  122. ; DW PARMSX
  123. ; DB 2 ; NUMBER OF STRINGS (0, 1, 2)
  124. ; DB length ; LENGTH OF THE NEXT LIST, 0 IF NONE
  125. ; DB " .. " ; EXTRA DELIMITER LIST,
  126. ; ; TYPICAL ARE ";", "="
  127. ; ; "," & WHITESPACE ALWAYS
  128. ; DB length ; LENGTH OF THE NEXT LIST, 0 IF NONE
  129. ; DB " .. " ; EXTRA END OF LINE LIST, CR, LF OR 0 ALWAYS
  130. ;---------------------------------------------------------------------------------------------------------
  131. ;-------------------------------- PARMS block structure
  132. $P_PARMS_Blk struc ;AN000;
  133. $P_PARMSX_Address dw 0 ;AN000; Address of PARMSX
  134. $P_Num_Extra db 0 ;AN000; Number of extra stuff
  135. $P_Len_Extra_Delim db 0 ;AN000; Length of extra delimiter
  136. $P_PARMS_Blk ends ;AN000;
  137. $P_Len_PARMS equ 4 ;AN000;
  138. $P_I_Use_Default equ 0 ;AN000; no extra stuff specified
  139. $P_I_Have_Delim equ 1 ;AN000; extra delimiter specified
  140. $P_I_Have_EOL equ 2 ;AN000; extra EOL specified
  141. ;---------------------------------------------------------------------------------------------------------
  142. ; PARMSX LABEL BYTE
  143. ; DB minp,maxp ; MIN, MAX POSITIONAL OPERANDS ALLOWED
  144. ; DW CONTROL ; DESCRIPTION OF POSITIONAL 1
  145. ; : ; REPEATS maxp-1 TIMES
  146. ; DB maxs ; # OF SWITCHES
  147. ; DW CONTROL ; DESCRIPTION OF SWITCH 1
  148. ; : ; REPEATS maxs-1 TIMES
  149. ; DB maxk ; # OF KEYWORD
  150. ; DW CONTROL ; DESCRIPTION OF KEYWORD 1
  151. ; : ; REPEATS maxk-1 TIMES
  152. ;---------------------------------------------------------------------------------------------------------
  153. ;-------------------------------- PARMSX block structure
  154. $P_PARMSX_Blk struc ;AN000;
  155. $P_MinP db 0 ;AN000; Minimum positional number
  156. $P_Maxp db 0 ;AN000; Maximum positional number
  157. $P_1st_Control dw 0 ;AN000; Address of the 1st CONTROL block
  158. $P_PARMSX_Blk ends ;AN000;
  159. PAGE ;AN000;
  160. ;---------------------------------------------------------------------------------------------------------
  161. ; << Control field definition >>
  162. ;
  163. ;
  164. ;CONTROL LABEL BYTE
  165. ; DW MATCH_FLAGS ; CONTROLS TYPE MATCHED
  166. ; ; 8000H=NUMERIC VALUE, (VALUE LIST WILL BE CHECKED)
  167. ; ; 4000H=SIGNED NUMERIC VALUE (VALUE LIST WILL BE CHECKED)
  168. ; ; 2000H=SIMPLE STRING(VALUE LIST WILL BE CHECKED)
  169. ; ; 1000H=DATE STRING (VALUE LIST WON'T BE CHECKED)
  170. ; ; 0800H=TIME STRING (VALUE LIST WON'T BE CHECKED)
  171. ; ; 0400H=COMPLEX LIST (VALUE LIST WON'T BE CHECKED)
  172. ; ; 0200H=FILE SPEC (VALUE LIST WON'T BE CHECKED)
  173. ; ; 0100H=DRIVE ONLY (VALUE LIST WON'T BE CHECKED)
  174. ; ; 0080H=QUOTED STRING (VALUE LIST WON'T BE CHECKED)
  175. ; ; 0010H=IGNORE ":" AT END IN MATCH
  176. ; ; 0002H=REPEATS ALLOWED
  177. ; ; 0001H=OPTIONAL
  178. ; DW FUNCTION_FLAGS
  179. ; ; 0001H=CAP RESULT BY FILE TABLE
  180. ; ; 0002H=CAP RESULT BY CHAR TABLE
  181. ; ; 0010H=REMOVE ":" AT END
  182. ; (tm10) ; 0020H=colon is not necessary for switch
  183. ; DW RESULT ; RESULT BUFFER
  184. ; DW VALUES ; VALUE LISTS
  185. ; DB nid ; NUMBER OF KEYWORD/SWITCH SYNONYMS IN FOLLOWING LIST
  186. ; DB "...",0 ; IF n >0, KEYWORD 1
  187. ; :
  188. ;
  189. ;Note:
  190. ; - The MATCH_FLAG is bit significant. You can set, for example, TIME bit and
  191. ; DATE bit simalteniously.
  192. ;
  193. ; The parser examins each bit along with the following priority.
  194. ;
  195. ; COMPLEX -> DATE -> TIME -> NUMERIC VAL -> SIGNED NUMERIC VAL -> DRIVE ->
  196. ; FILE SPEC -> SIMPLE STRING.
  197. ;
  198. ;
  199. ; - When the FUNCTION_FLAG is 0001 or 0002, the STRING pointed to by a pointer
  200. ; in the result buffer is capitalized.
  201. ;
  202. ; - Match_Flags 0001H and 0002H have meaning only for the positional.
  203. ;
  204. ;
  205. ; - The "...",0 (bottom most line) does require '=' or '/'. When you need a
  206. ; switch, for example, '/A', then STRING points to;
  207. ;
  208. ; DB 1 ; number of following synonyms
  209. ; DB '/A',0
  210. ;
  211. ; When you need a keyword, for example, 'CODEPAGE=', then "...",0 will be;
  212. ;
  213. ; DB 1 ; number of following synonyms
  214. ; DB 'CODEPAGE=',0
  215. ;
  216. ;
  217. ; - "..." must consist of upper case characters only because the parser
  218. ; performs pattern matching after converting input to upper case (by
  219. ; using the current country upper case table)
  220. ;
  221. ;
  222. ; - One "..." can contain only one switch or keyword. If you need, for
  223. ; example /A and /B, the format will be;
  224. ;
  225. ; DB 2 ; number of following synonyms
  226. ; DB '/A',0
  227. ; DB '/B',0
  228. ;---------------------------------------------------------------------------------------------------------
  229. ;**** Match_Flags
  230. $P_Num_Val equ 8000h ;AN000; Numeric Value
  231. $P_SNum_Val equ 4000h ;AN000; Signed numeric value
  232. $P_Simple_S equ 2000h ;AN000; Simple string
  233. $P_Date_S equ 1000h ;AN000; Date string
  234. $P_Time_S equ 0800h ;AN000; Time string
  235. $P_Cmpx_S equ 0400h ;AN000; Complex string
  236. $P_File_Spc equ 0200h ;AN000; File Spec
  237. $P_Drv_Only equ 0100h ;AN000; Drive Only
  238. $P_Qu_String equ 0080h ;AN000; Quoted string
  239. $P_Ig_Colon equ 0010h ;AN000; Ignore colon at end in match
  240. $P_Repeat equ 0002h ;AN000; Repeat allowed
  241. $P_Optional equ 0001h ;AN000; Optional
  242. ;**** Function flags
  243. $P_CAP_File equ 0001h ;AN000; CAP result by file table
  244. $P_CAP_Char equ 0002h ;AN000; CAP result by character table
  245. $P_Rm_Colon equ 0010h ;AN000; Remove ":" at the end
  246. $P_colon_is_not_necessary equ 0020h ;AN000;(tm10) /+10 and /+:10
  247. ;-------------------------------- Control block structure
  248. $P_Control_Blk struc ;AN000;
  249. $P_Match_Flag dw 0 ;AN000; Controls type matched
  250. $P_Function_Flag dw 0 ;AN000; Function should be taken
  251. $P_Result_Buf dw 0 ;AN000; Result buffer address
  252. $P_Value_List dw 0 ;AN000; Value list address
  253. $P_nid db 0 ;AN000; # of keyword/SW synonyms
  254. $P_KeyorSW db 0 ;AN000; keyword or sw
  255. $P_Control_Blk ends ;AN000;
  256. PAGE ;AN000;
  257. ;---------------------------------------------------------------------------------------------------------
  258. ; << Value List Definition >>
  259. ;
  260. ;VALUES LABEL BYTE
  261. ; DB nval ; NUMBER OF VALUE DEFINITIONS (0 - 3)
  262. ; +-
  263. ; | DB nrng ; NUMBER OF RANGES
  264. ; | +DB ITEM_TAG ; RETURN VALUE IF RANGE MATCHED
  265. ; | +DD X,Y ; RANGE OF VALUES
  266. ; | :
  267. ; | DB nnval ; NUMBER OF CHOICES
  268. ; | +DB ITEM_TAG ; RETURN VALUE IF NUMBER CHOICE MATCHED
  269. ; | +DD VALUE ; SPECIFIC CHOICE IF NUMBER
  270. ; | :
  271. ; | DB nstrval ; NUMBER OF CHOICES
  272. ; | +DB ITEM_TAG ; RETURN VALUE IF STRING CHOICE MATCHED
  273. ; | +DW STRING ; SPECIFIC CHOICE IF STING
  274. ; +- :
  275. ;
  276. ;STRING DB "...",0 ; ASCIIZ STRING IMAGE
  277. ;
  278. ;Note:
  279. ; - ITEM_TAG must not be 0FFH, which will be used in the result buffer
  280. ; when no choice lists are provided.
  281. ;
  282. ; - STRING must consist of upper case characters only because the parser
  283. ; performs pattern matching after converting input to upper case (by
  284. ; using the current country upper case table)
  285. ;---------------------------------------------------------------------------------------------------------
  286. $P_nval_None equ 0 ;AN000; no value list ID
  287. $P_nval_Range equ 1 ;AN000; range list ID
  288. $P_nval_Value equ 2 ;AN000; value list ID
  289. $P_nval_String equ 3 ;AN000; string list ID
  290. $P_Len_Range equ 9 ;AN000; Length of a range choice(two DD plus one DB)
  291. $P_Len_Value equ 5 ;AN000; Length of a value choice(one DD plus one DB)
  292. $P_Len_String equ 3 ;AN000; Length of a string choice(one DW plus one DB)
  293. $P_No_nrng equ 0 ;AN000; (tm07) no nrng. nnval must not be 0.
  294. $P_Val_List struc ;AN000;
  295. $P_NumofList db 0 ;AN000; number of following choice
  296. $P_Val_XL dw 0 ;AN000; lower word of value
  297. $P_Val_XH dw 0 ;AN000; higher word of value
  298. $P_Val_YL dw 0 ;AN000; lower word of another value
  299. $P_Val_YH dw 0 ;AN000; higher word of another value
  300. $P_Val_List ends ;AN000;
  301. PAGE ;AN000;
  302. ;---------------------------------------------------------------------------------------------------------
  303. ; << Result Buffer Definition >>
  304. ;
  305. ;RESULT LABEL BYTE ; BELOW FILLED IN FOR DEFAULTS
  306. ; DB type ; TYPE RETURNED: 0=RESERVED,
  307. ; ; 1=NUMBER, 2=LIST INDEX,
  308. ; ; 3=STRING, 4=COMPLEX,
  309. ; ; 5=FILESPEC, 6=DRIVE
  310. ; ; 7=DATE, 8=TIME
  311. ; ; 9=QUOTED STRING
  312. ; DB ITEM_TAG ; MATCHED ITEM TAG
  313. ;
  314. ; dw synonym@ ; es:@ points to found SYNONYM if provided.
  315. ;
  316. ; +-
  317. ; | DD n ; VALUE IF NUMBER
  318. ; | or
  319. ; | DW i ; INDEX (OFFSET) INTO VALUE LIST
  320. ; | ; (ES presents Segment address)
  321. ; | or
  322. ; | DD STRING ; OFFSET OF STRING VALUE
  323. ; | or
  324. ; | DB drv ; DRIVE NUMBER (1-A, 2-B,..., 26-Z)
  325. ; | or
  326. ; | DW YEAR ;(1980-2099) IN CASE OF DATE
  327. ; | DB MONTH ;(1-12) Note: Range check is not performed.
  328. ; | DB DATE ;(1-31) 0 is filled when the corresponding field was not specified.
  329. ; | or
  330. ; | DB HOUR ;(0-23) IN CASE OF TIME
  331. ; | DB MINUTES ;(0-59) Note: Range check is not performed .
  332. ; | DB SECONDS ;(0-59) 0 is filled when the corresponding field was not specified .
  333. ; | DB HUNDREDTHS ;(0-99)
  334. ; +-
  335. ;
  336. ;
  337. ;Note: ITEM_TAG is 0FFH when the caller does not specify the choice
  338. ; list.
  339. ;
  340. ; YEAR: If the input value for the year is less than 100, parser
  341. ; adds 1900 to it. For example, when 87 is input to parser for
  342. ; the year value, he returns 1987.
  343. ;---------------------------------------------------------------------------------------------------------
  344. ;-------------------------------- Result block structure
  345. $P_Result_Blk struc ;AN000;
  346. $P_Type db 0 ;AN000; Type returned
  347. $P_Item_Tag db 0 ;AN000; Matched item tag
  348. $P_SYNONYM_Ptr dw 0 ;AN000; pointer to Synonym list returned
  349. $P_Picked_Val db 0,0,0,0 ;AN000; value
  350. $P_Result_Blk ends ;AN000;
  351. ;--------------------------------
  352. ;**** values for the type field in the result block
  353. $P_EOL equ 0 ;AN000; End of line
  354. $P_Number equ 1 ;AN000; Number
  355. $P_List_Idx equ 2 ;AN000; List Index
  356. $P_String equ 3 ;AN000; String
  357. $P_Complex equ 4 ;AN000; Complex
  358. $P_File_Spec equ 5 ;AN000; File Spec
  359. $P_Drive equ 6 ;AN000; Drive
  360. $P_Date_F equ 7 ;AN000; Date
  361. $P_Time_F equ 8 ;AN000; Time
  362. $P_Quoted_String equ 9 ;AN000; Quoted String
  363. $P_No_Tag equ 0FFH ;AN000; No ITEM_TAG found
  364. ;**** Return code
  365. ;
  366. ; following return code will be returned in the AX register.
  367. $P_No_Error equ 0 ;AN000; No error
  368. $P_Too_Many equ 1 ;AN000; Too many operands
  369. $P_Op_Missing equ 2 ;AN000; Required operand missing
  370. $P_Not_In_SW equ 3 ;AN000; Not in switch list provided
  371. $P_Not_In_Key equ 4 ;AN000; Not in keyword list provided
  372. $P_Out_Of_Range equ 6 ;AN000; Out of range specified
  373. $P_Not_In_Val equ 7 ;AN000; Not in value list provided
  374. $P_Not_In_Str equ 8 ;AN000; Not in string list provided
  375. $P_Syntax equ 9 ;AN000; Syntax error
  376. $P_RC_EOL equ -1 ;AN000; End of command line
  377. PAGE ;AN000;
  378. ;********************** Local Data *************************************
  379. $P_ORDINAL dw 0 ;AN000; Operand ordinal save area
  380. $P_RC dw 0 ;AN000; Return code from parser
  381. $P_SI_Save dw 0 ;AN000; Pointer of command buffer
  382. $P_DX dw 0 ;AN000; Return result buffer address
  383. $P_Terminator db 0 ;AN000; Terminator code (ASCII)
  384. $P_DBCSEV_OFF dw 0 ;AN000; Offset of DBCS EV
  385. $P_DBCSEV_SEG dw 0 ;AN000; Segment of DBCS EV
  386. $P_Flags dw 0 ;AN000; Parser internal flags
  387. $P_Flags1 equ byte ptr $P_Flags ;AN038; to reference first byte flags
  388. $P_Flags2 equ byte ptr $P_Flags+1 ;AN038; to reference second byte flags only
  389. ;in second byte of $P_Flags, referenced as $P_Flags2:
  390. $P_equ equ 01h ;AN000; "=" packed in string buffet
  391. $P_Neg equ 02h ;AN000; Negative value
  392. $P_Time12 equ 04h ;AN000; set when PM is specified
  393. $P_Key_Cmp equ 08h ;AN000; set when keyword compare
  394. $P_SW_Cmp equ 10h ;AN000; set when switch compare
  395. $P_Extra equ 20h ;AN000; set when extra delimiter found
  396. $P_SW equ 40h ;AN000; set when switch found (tm08)
  397. $P_Signed equ 80h ;AN000; signed numeric specified
  398. ;in first byte of $P_Flags, referenced as $P_Flags1:
  399. $P_time12am equ 01h ;AN038; set when AM is specified on time
  400. $P_TIME_AGAIN EQU 02H ;AN039; SET WHEN READY TO RE-PARSE TIME
  401. $P_SaveSI_Cmpx dw 0 ;AN000; save si for later use by complex
  402. $P_KEYorSW_Ptr dw 0 ;AN000; points next to "=" or ":" code
  403. $P_Save_EOB dw 0 ;AN000; save pointer to EOB
  404. $P_Found_SYNONYM dw 0 ;AN000; es:@ points to found synonym
  405. $P_STRING_BUF db 128 dup(0) ;AN000; Pick a operand from command line
  406. $P_STRING_BUF_END equ $ ;AN000;
  407. IF TimeSw ;AN039; For TIME only
  408. $P_ORIG_ORD DW 0 ;AN039; ORIGINAL ORDINAL FROM CX
  409. $P_ORIG_STACK DW 0 ;AN039; ORIGINAL VALUE OF STACK FROM SP
  410. $P_ORIG_SI DW 0 ;AN039; ORIGINAL START PARSE POINTER FROM SI
  411. ENDIF ;AN039;
  412. IF DateSw+TimeSw ;AN000;(Check if date or time format is supported)
  413. ;------------------------------
  414. ;
  415. $P_Got_Time db 0 ;AN023; if 1, use Time delimiters
  416. $P_NeedToBeRead equ 0ffffh ;AN000;
  417. $P_COUNTRY_INFO $P_CDI <$P_NeedToBeRead> ;AN000;
  418. ;
  419. $P_1st_Val dw 0 ;AN000; used when process date or time
  420. $P_2nd_Val dw 0 ;AN000; used when process date or time
  421. $P_3rd_Val dw 0 ;AN000; used when process date or time
  422. $P_4th_Val dw 0 ;AN000; used when process date or time
  423. ;------------------------------
  424. ENDIF ;AN000;(of DateSW+TimeSW)
  425. $P_Char_CAP_Ptr db 0ffh ;AN000; info id
  426. dw 0 ;AN000; offset of char case map table
  427. dw 0 ;AN000; segment of char case map table
  428. IF CAPSW ;AN000;(Check if uppercase conversion is supported)
  429. $P_File_CAP_Ptr db 0ffh ;AN000; info id
  430. dw 0 ;AN000; offset of file case map table
  431. dw 0 ;AN000; segment of file case map table
  432. ENDIF ;AN000;(of CAPSW)
  433. ; (tm06) IF FileSW ;AN000;(Check if file spec is supported)
  434. ;
  435. ;M029
  436. ;!!!WARNING!!!
  437. ; In routine SYSPARSE (parse.asm), $P_FileSp_Char is reinitialized using
  438. ;hardcoded strings. If the chars in the string are changed here, corresponding
  439. ;changes need to be made in SYSPARSE
  440. ;
  441. IF FileSW+DrvSW ;AN000;(Check if file spec is supported)
  442. $P_FileSp_Char db '[]|<>+=;"' ;AN000; delimitter of file spec
  443. $P_FileSp_Len equ $-$P_FileSp_Char ;AN000;
  444. ENDIF ;AN000;(of FileSW)
  445. ; (tm05) IF QusSW ;AN000;(Check if quoted string is supported)
  446. ;(deleted ;AN025;) IF QusSW+CmpxSW ; (tm05) ;AN000;(Check if quoted string is supported)
  447. ;(deleted ;AN025;) $P_SorD_Quote db 0 ;AN000; keep double or single quote
  448. ;(deleted ;AN025;) ENDIF ;AN000;(of QueSW)
  449. IF KeySW ;AN029; if keywords supported
  450. $P_count_to_eol dw 0 ;AN029; count of chars not including EOL
  451. ; REGISTER EQUATES - SPECIAL USAGE FOR REGISTERS
  452. $P_REG_BH_CG_SW EQU BH ;AN029;0="NO CHANGES MADE", FF=CHANGES MADE
  453. $P_REG_BL_DQ_SW EQU BL ;AN029;0=NOT IN QUOTES,FF=IN QUOTES
  454. $P_DOUBLE_QUOTE EQU """" ;AN029;
  455. $P_BL_EQ EQU " =" ;AN029;
  456. $P_EQ_BL EQU "= " ;AN029;
  457. $P_TB_EQ EQU 093DH ;AN029; ;"<TAB>="
  458. $P_EQ_TB EQU 3D09H ;AN029; ;"=<TAB>"
  459. ENDIF ;AN029; IF KeySW Supported
  460. ; delimiter parsing
  461. $P_colon_period equ 01 ;AN032; check for colon & period
  462. $P_period_only equ 02 ;AN032; check only for period
  463. ;filespec error flag
  464. $P_err_flag db 00 ;AN033; flag set if filespec parsing error
  465. ;AN033; was detected.
  466. $P_error_filespec equ 01 ;AN033; mask to set flag
  467. ;***********************************************************************
  468.