For each line TMA calls the function parse: in PARSER.INC. If a label
definition changed, a new pass is done. (see TMA.INC)
If no error occurred, the generated code is stored by COMFILE.INC or
EXEFILE.INC.

Processing a single line (PARSER.INC):

	1. The line that needs to be processed will be copied to the
	   line buffer. Comments are truncated and macro parameters are
	   inserted.
	2. If a label (not a keyword in DIRTABLE.INC) is found, it's buffered.
	   (see keep_label: in LABELS.INC)
	3. If an assembler command is found, its handler in DIRECT.INC
	   is called, and the function is terminated.
	4. If a mnemonic is found, the function does the following:
		1. The mnemonic's token, the operand types and sizes
		   will be stored to the parserinfo data area in TMA.ASM.
		2. For effective addresses (parse_ea: in PARSER.INC)
		   the ModRM byte is generated (MODRM.INC).
		3. Constants or label contents are processed by CONSTANT.INC.
		4. mapoperands: in GENERATE.INC is called. It'll check, if
		   the operands match with the mnemonic's instruction
		   descriptor in OPCODESC.INC.
		5. If they match, execution is passed to createcode: in
		   GENERATE.INC which will output the opcode depending on
		   information in OPCODESC.INC.
        5. If noone already processed the buffered label, and if it's not a
           macro or structure, it's stored to the label database.
	   (see update_label: in LABELS.INC)
	6. End of function.

