MZ is back!
This commit is contained in:
committed by
Microsoft Open Source
parent
8ee9712c74
commit
2d04cacc53
@@ -0,0 +1,285 @@
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
data segment public para 'DATA' ;an000;bgb ;AN000;
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; Publics ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
; Public Drive_Letter_Buffer ;an000;bgb
|
||||
Public SwBuffer ;an000;bgb
|
||||
Public Switch_F_Buffer ;an000;bgb
|
||||
; Public FileSpec_Buffer ;an000;bgb
|
||||
public buffer ;an000;bgb
|
||||
public sw_v, sw_f ;an000;bgb;an020;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;*************************************************************************** ;an000;bgb
|
||||
; Equates ;an000;bgb
|
||||
;*************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
;Match Flags ;an000;bgb
|
||||
;an000;bgb
|
||||
Numeric_Value equ 8000h ; ;an000;bgb;AN000;
|
||||
Signed_Numeric_Value equ 4000h ; ;an000;bgb;AN000;
|
||||
Simple_String equ 2000h ; ;an000;bgb;AN000;
|
||||
Date_String equ 1000h ; ;an000;bgb;AN000;
|
||||
Time_String equ 0800h ; ;an000;bgb;AN000;
|
||||
Complex_List equ 0400h ; ;an000;bgb;AN000;
|
||||
Quoted_String equ 0080h ; ;an000;bgb;AN000;
|
||||
Ignore_Colon equ 0010h ; ;an000;bgb;AN000;
|
||||
Repeats_Allowed equ 0002h ; ;an000;bgb;AN000;
|
||||
Optional equ 0001h ; ;an000;bgb;AN000;
|
||||
Filespec equ 0200h ; ;an000;bgb;AN000;
|
||||
Drive_Only equ 0100h ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;Function_Flags ;an000;bgb
|
||||
;an000;bgb
|
||||
File_Table_Capitalize equ 1 ; ;an000;bgb;AN000;
|
||||
Char_Table_Capitalize equ 2 ; ;an000;bgb;AN000;
|
||||
Remove_Colon equ 10h ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;Extra delimeters and EOL ;an000;bgb
|
||||
;an000;bgb
|
||||
Delimiters_Only equ 1 ; ;an000;bgb;AN000;
|
||||
EOL_Or_Delimiters equ 2 ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
Semi_Colon equ ";" ; ;an000;bgb;AN000;
|
||||
Tab equ 09h ; ;an000;bgb;AN000;
|
||||
Colon equ ":" ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
;Parse Errors ;an000;bgb
|
||||
;an000;bgb
|
||||
No_Error equ 0 ; ;an000;bgb;AN000;
|
||||
Too_Many_Operands equ 1 ; ;an000;bgb;AN000;
|
||||
Operand_Missing equ 2 ; ;an000;bgb;AN000;
|
||||
Not_In_Switch_List equ 3 ; ;an000;bgb;AN000;
|
||||
Not_In_Keyword_List equ 4 ; ;an000;bgb;AN000;
|
||||
Out_Of_Range equ 6 ; ;an000;bgb;AN000;
|
||||
Not_In_Value_List equ 7 ; ;an000;bgb;AN000;
|
||||
Not_In_String_List equ 8 ; ;an000;bgb;AN000;
|
||||
Syntax_Error equ 9 ; ;an000;bgb;AN000;
|
||||
End_Of_Parse equ -1 ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;Return types ;an000;bgb
|
||||
;an000;bgb
|
||||
Type_Reserved equ 0 ; ;an000;bgb;AN000;
|
||||
Type_Number equ 1 ; ;an000;bgb;AN000;
|
||||
Type_List_Index equ 2 ; ;an000;bgb;AN000;
|
||||
Type_String equ 3 ; ;an000;bgb;AN000;
|
||||
Type_Complex equ 4 ; ;an000;bgb;AN000;
|
||||
Type_Filespec equ 5 ; ;an000;bgb;AN000;
|
||||
Type_Drive equ 6 ; ;an000;bgb;AN000;
|
||||
Type_Date equ 7 ; ;an000;bgb;AN000;
|
||||
Type_Time equ 8 ; ;an000;bgb;AN000;
|
||||
Type_Quoted_String equ 9 ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;Other ;an000;bgb
|
||||
;an000;bgb
|
||||
None equ 0 ; ;an000;bgb;AN000;
|
||||
No_Error equ 0 ; ;an000;bgb;AN000;
|
||||
Switch_Found equ 0FFFFh ; ;an000;bgb;AN000;
|
||||
Range_Ok equ 1 ; ;an000;bgb;AN000;
|
||||
Command_Line_Parms equ 81h ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; Parse Structures ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
Control struc ;an000;bgb
|
||||
;an000;bgb
|
||||
Match_Flags dw ? ;an000;bgb
|
||||
Function_Flags dw ? ;an000;bgb
|
||||
Result dw ? ;an000;bgb
|
||||
Values dw ? ;an000;bgb
|
||||
Num_Keywords db ? ;an000;bgb
|
||||
Keyword db ? ;an000;bgb
|
||||
;an000;bgb
|
||||
Control ends ;an000;bgb
|
||||
;an000;bgb
|
||||
;Drive_Letter_Return struc ; ;an000;bgb ;AN000;
|
||||
;Drive_Type db 0 ; ;an000;bgb ;AN000;
|
||||
;Drive_Item_Tag db 0 ; ;an000;bgb ;AN000;
|
||||
;Drive_Pointer dw 0 ; ;an000;bgb ;AN000;
|
||||
;Drive_Number db 0 ;A=1, B=2, C=3 ;an000;bgb ;AN000;
|
||||
;Drive_debug db 8 dup(0) ;an000;bgb
|
||||
;Drive_Letter_Return ends ; ;an000;bgb ;AN000;
|
||||
; ;an000;bgb
|
||||
;Filespec_Return struc ;AN000;SM ;an000;bgb
|
||||
;Filespec_Type db 0 ;AN000;SM ;an000;bgb
|
||||
;FileSpec_Item db 0 ;AN000;SM ;an000;bgb
|
||||
;FileSpec_Pointer dw 0 ;AN000;SM ;an000;bgb
|
||||
;Filespec_String_Off dw 0 ;AN000;SM ;an000;bgb
|
||||
;FileSpec_String_Seg dw 0 ;an000;bgb
|
||||
;FileSpec_Return ends ;an000;bgb
|
||||
;an000;bgb
|
||||
single_Return struc ;AN000;SM ;an000;bgb
|
||||
dftype db 0 ;AN000;SM ;an000;bgb
|
||||
Item db 0 ;AN000;SM ;an000;bgb
|
||||
Pointer dw 0 ;AN000;SM ;an000;bgb
|
||||
drnum_stroff dw 0 ;AN000;SM ;an000;bgb
|
||||
return_strseg dw 0 ;an000;bgb
|
||||
single_return ends ;an000;bgb
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
Switch_Return struc ; ;an000;bgb;AN000;
|
||||
Switch_Type db 0 ; ;an000;bgb;AN000;
|
||||
Switch_Item_Tag db 0 ; ;an000;bgb;AN000;
|
||||
Switch_Pointer dw 0 ; ;an000;bgb;AN000;
|
||||
Switch_Debug db 4 dup(0) ;an000;bgb
|
||||
Switch_Return ends ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
Switch_Num_Return struc ; ;an000;bgb;AN000;
|
||||
Switch_Num_Type db 0 ; ;an000;bgb ;AN000;
|
||||
Switch_Num_Item_Tag db 0 ; ;an000;bgb ;AN000;
|
||||
Switch_Num_Pointer dw 0 ; ;an000;bgb ;AN000;
|
||||
Switch_Number_Low dw 0 ; ;AN0;an000;bgb00;
|
||||
Switch_Number_High dw 0 ; ;AN0;an000;bgb00;
|
||||
Switch_Num_Return ends ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
Switch_String_Return struc ; ;an000;bgb;AN000;
|
||||
Switch_String_Type db 0 ; ;an000;bgb ;AN000;
|
||||
Switch_String_Item_Tag db 0 ; ;an000;bgb ;AN000;
|
||||
Switch_String_Pointer dw 0 ; ;an000;bgb ;AN000;
|
||||
Switch_String_Off dw 0 ; ;an000;bgb;AN000;
|
||||
Switch_String_Seg dw 0 ; ;an000;bgb;AN000;
|
||||
Switch_String_Return ends ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
; Parse tables ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
Public input_Table ;an000;bgb
|
||||
input_Table label byte ; ;AN000;;an000;bgb
|
||||
;an000;bgb
|
||||
dw offset dg:ext_table ;Point to next level ;A;an000;bgbN000;
|
||||
db Delimiters_Only ; ;an000;bgb;AN000;
|
||||
db 1 ; ;an000;bgb;AN000;
|
||||
db Semi_Colon ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
Drive_Table label byte ;an000;bgb;AN000;
|
||||
; ;an000;bgb
|
||||
dw offset dg:Drive_Control_Definition ;Point to next level ;an000;bgb ;AN000;
|
||||
db Delimiters_Only ; ;an000;bgb;AN000;
|
||||
db 1 ; ;an000;bgb;AN000;
|
||||
db Semi_Colon ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
;Define Positionals, Switches and Keywords ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
Public ext_table ;an000;bgb
|
||||
ext_table label byte ; ;an000;bgb;AN000;
|
||||
; ;an000;bgb
|
||||
db 0,1 ;up to one parm, either drive or file ;an000;bgb;an026;bgb
|
||||
dw dg:dfcontrol ;Pointer to control table ;an000;bgb ;AN000;
|
||||
db 1 ;1 switch def ;an000;bgb;AN020;bgb
|
||||
dw dg:SwControl ;switch control block ;an000;bgb;AN020;bgb
|
||||
db None ;No Keywords (maxk) ;an000;bgb;AN000;
|
||||
; ;an000;bgb
|
||||
Drive_Control_Definition label byte ; ;an000;bgb;AN000;
|
||||
; ;an000;bgb
|
||||
db 0,1 ;Only drive letter positional ;an000;bgb;AN000;
|
||||
dw dg:dfControl ;Pointer to control table ;AN0;an000;bgb00;
|
||||
db None ;0 switches ;an000;bgb;AN000;
|
||||
db None ;No Keywords (maxk) ;an000;bgb;AN000;
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
; Define Positionals, Switches and Keywords ;an000;bgb
|
||||
;************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;this is the new control block for both drive letters and filespecs ;an000;bgb
|
||||
Public dfControl ;an000;bgb
|
||||
dfControl label byte ; ;AN000;;an000;bgb
|
||||
dw drive_only+FileSpec+Optional ; ;an000;bgb ;AN000;
|
||||
dw None ; ;an000;bgb;AN000;
|
||||
dw dg:Buffer ; ;AN000; ;an000;bgb
|
||||
dw dg:No_Value ; ;an000;bgb;AN000;
|
||||
db None ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
Public SwControl ;an02;an000;bgb0;bgb
|
||||
SwControl label byte ; ;AN020;;an000;bgbbgb
|
||||
dw None ; ;an000;bgb;AN000;
|
||||
dw None ; ;an000;bgb;AN000;
|
||||
dw dg:SwBuffer ; ;AN000;;an000;bgb
|
||||
dw dg:No_Value ;an000;bgb ;AN000;
|
||||
db 2 ; ;an000;bgb;AN020;bgb
|
||||
sw_v db "/V",0 ; ;an000;bgb;AN020;bgb
|
||||
sw_f db "/F",0 ; ;an000;bgb;AN020;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; Value lists ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
No_Value db 0 ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;************************************************************************ ;an000;bgb
|
||||
; PARSE Return Buffers ;an000;bgb
|
||||
;************************************************************************ ;an000;bgb
|
||||
; ;an000;bgb
|
||||
; these buffers were replaced by a single buffer due to the parser bug ;an000;bgb
|
||||
;Drive_Letter_Buffer Drive_Letter_Return <> ;Example of structure ;an000;bgb ;AN000;
|
||||
;FileSpec_Buffer FileSpec_Return <> ; ;an000;bgb
|
||||
SwBuffer Switch_Return <> ; ;an000;bgb;AN000;
|
||||
Switch_F_Buffer Switch_Return <> ; ;an000;bgb;AN000;
|
||||
buffer single_return <> ; new results buffer ;an000;bgb
|
||||
data ends ; ;an000;bgb;AN000;
|
||||
;an000;bgb
|
||||
; ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; SysParse Routines ;an000;bgb
|
||||
;***************************************************************************** ;an000;bgb
|
||||
; ;an000;bgb
|
||||
;an000;bgb
|
||||
;an000;bgb
|
||||
code segment public para 'CODE' ;an000;bgb
|
||||
;an000;bgb
|
||||
FarSW equ Not_Include ; ;an000;bgb;AN000; ;AN000;
|
||||
DateSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
TimeSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
FileSW equ Do_Include ; ;an000;bgb;AN000;
|
||||
CAPSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
CmpxSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
NumSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
KeySW equ Not_Include ; ;an000;bgb;AN000;
|
||||
SwSW equ Do_Include ; ;an000;bgb;AN000;
|
||||
Val1SW equ Not_Include ; ;an000;bgb;AN000;
|
||||
Val2SW equ Not_Include ; ;an000;bgb;AN000;
|
||||
Val3SW equ Not_Include ; ;an000;bgb;AN000;
|
||||
DrvSW equ Do_Include ; ;an000;bgb;AN000;
|
||||
QusSW equ Not_Include ; ;an000;bgb;AN000;
|
||||
basesw equ 1 ;use ds as the default register ;an025;bgb
|
||||
incsw equ 0 ;include psdata myself ;an028;bgb
|
||||
code ends ;an028;bgb
|
||||
|
||||
|
||||
data segment PUBLIC para 'DATA' ;an028;bgb
|
||||
include psdata.inc ;an028;bgb
|
||||
data ends ;an028;bgb
|
||||
|
||||
code segment PUBLIC para 'CODE' ;an028;bgb
|
||||
pathlabl parser ;an028;bgb
|
||||
INCLUDE PARSE.ASM ;AN000; ;an028;bgb
|
||||
pathlabl parser ;an028;bgb
|
||||
code ends ;an000;bgb
|
||||
Reference in New Issue
Block a user