286 lines
12 KiB
PHP
286 lines
12 KiB
PHP
;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
|