.PAGE .SBTTL MESSAGE AND REPORT CHECKING MACRO SECTION ; ;===================================================================== ;.........................MESSAGE MACROS.............................. ;===================================================================== ; ; .MACRO MESSAGE MATCH,REPLY,STRING,?A ; .NARG NARG .IF EQ NARG ;DEFAULT NO PARAMETERS .EMIT <.WORD 0,0,0 ;TERMINATE TABLE ENTRY> .MEXIT .ENDC ; .IF EQ NARG-3 ;NORMAL STATUS SET UP TABLE .IIF EQ LST$$ .LIST .WORD MATCH,REPLY ;LOAD MINIMUM MATCH COUNT AND REPLY CODE .WORD A-.-2 ;CALCULATE STRING LENGTH .ASCII STRING A: .EVEN .IIF EQ LST$$ .NLIST .ENDC .ENDM MESSAGE ; ; .MACRO MFUNCTION MATCH,DIRECTION,?A .IF NB MATCH .IIF EQ LST$$ .LIST CMP #MATCH,R0 ;IS FUNCTION LOCATED BNE A ;J IF FUNCTION NOT FOUND .IIF EQ LST$$ .NLIST .ENDC .IIF EQ LST$$ .LIST JMP DIRECTION A: .IIF EQ LST$$ .NLIST .ENDM MFUNCTION ; ; ; ; ;================================================================= ;......................REPORT MACROS.............................. ;================================================================= ; ; ; ; .MACRO REPORT REPLY,STRING,CONTROL .MCALL $WOFFSET,$LAB ; .NARG NARG ;GET NUMBER OF ARGUMENTS ; .IF EQ NARG ;NO PARAMETERS SO TERMINATE DATA AREA .IIF EQ LST$$ .LIST .WORD 0,0 ;TERMINATE REPORT LIST .IIF EQ LST$$ .NLIST .MEXIT ;ESCAPE OF MACRO VERY QUICKLY .ENDC ;END OF TERMINATE SECTION ; ; NOW FOR THE CLEVER STUFF ; .IF EQ NARG-2 ;IF NORMAL MODE FILL IN DATA AREA .IIF EQ LST$$ .LIST .WORD REPLY ;STORE THE HUNTER VALUE .IIF EQ LST$$ .NLIST $WOFFSET ;STORE THE STRING LENGTH .IIF EQ LST$$ .LIST .ASCII STRING .IIF EQ LST$$ .NLIST $LAB .EVEN ;KEEP US ON A WORD BOUNDARY .MEXIT ;JOB DONE .ENDC ; .IF EQ NARG-3 ;ONLY PROCESS IF WE HAVE THREE FIELDS ; ; THE SMARTY TRYS A LONG REPLY ; .IF IDN CONTROL,FIRST ;IS THIS THE START ENTRY .IIF EQ LST$$ .LIST .WORD REPLY ;STORE THE HUNTER VALUE .IIF EQ LST$$ .NLIST $WOFFSET ;HOLD THE STRING LENGTH ;STORE THE FIRST STRING .IIF EQ LST$$ .LIST .ASCII STRING .IIF EQ LST$$ .NLIST .ENDC ; ; NOW A CONTINUATION LINE ; .IF IDN CONTROL,CONT ;IS THIS A CONTINUATION LINE .IIF EQ LST$$ .LIST .ASCII STRING .IIF EQ LST$$ .NLIST .ENDC ; ; AT LAST THE FINAL LINE ; .IF IDN CONTROL,LAST ;IS THIS THE TERMINATION LINE .IIF EQ LST$$ .LIST .ASCII STRING .IIF EQ LST$$ .NLIST $LAB ;CREATE A LABLE .EVEN ;STOP ON A WORD BOUNDRY .ENDC .ENDC .ENDM REPORT ; ; ; .END ; ;