Only in fasm/source: fasm.diff diff -ur fasm/source/Linux/fasm.asm fasmn/source/Linux/fasm.asm --- fasm/source/Linux/fasm.asm 2007-02-18 11:46:20.000000000 +0200 +++ fasmn/source/Linux/fasm.asm 2007-02-28 13:21:27.000000000 +0200 @@ -13,7 +13,11 @@ call display_string mov [command_line],esp + mov eax, [esp+8] + sub eax, 2 + mov [param_ptr], eax pop eax + mov [param_count], eax lea esp,[esp+eax*4] pop eax pop [environment] @@ -137,9 +141,26 @@ je passes_option cmp al,'P' je passes_option + cmp al,'d' + je define_option + cmp al,'D' + je define_option bad_params: stc ret + define_option: + mov eax, esi +@@: cmp [esi], word ':=' + je @f + cmp [esi], byte 0 + je bad_params + inc esi + jmp @b +@@: xor eax, esi + jz bad_params + cmp [esi+2], byte 0 + jne next_param + jmp bad_params memory_option: cmp byte [esi],0 jne get_memory_setting @@ -217,6 +238,7 @@ db 'optional settings:',0xA db ' -m set the limit in kilobytes for the memory available to assembler',0xA db ' -p set the maximum allowed number of passes',0xA + db ' -dSYMBOL:=VALUE define a symbolic constant',0xA db 0 _memory_prefix db ' (',0 _memory_suffix db ' kilobytes memory)',0xA,0 diff -ur fasm/source/preproce.inc fasmn/source/preproce.inc --- fasm/source/preproce.inc 2007-02-18 11:46:20.000000000 +0200 +++ fasmn/source/preproce.inc 2007-02-28 13:24:59.000000000 +0200 @@ -47,6 +47,45 @@ mov edx,esi call open jc main_file_not_found + push esi + push ebx + mov esi, [param_ptr] +do_param: + mov edi, esi + cmp [esi], word '-d' + je @f + cmp [esi], word '-D' + jne not_symdef +@@: xor ecx, ecx + add esi, 2 +@@: inc ecx + cmp [esi+ecx], byte ':' + jne @b + add edi, 2 + add edi, ecx + mov ch, 10b + call add_preprocessor_symbol + xor ecx, ecx +@@: inc ecx + cmp [edi+ecx], byte 0 + jne @b + mov [edi], byte 0x1a + mov [edx+8], edi + mov [edx+12], ecx + sub ecx, 2 + mov [edi+1], cl +not_symdef: + dec [param_count] + jz done_params +@@: inc edi + cmp [edi], byte 0 + jne @b + mov esi, edi + inc esi + jmp do_param +done_params: + pop ebx + pop esi mov edi,[memory_start] call preprocess_file mov eax,[error_line] diff -ur fasm/source/variable.inc fasmn/source/variable.inc --- fasm/source/variable.inc 2007-02-18 11:46:20.000000000 +0200 +++ fasmn/source/variable.inc 2007-02-28 13:18:24.000000000 +0200 @@ -121,3 +121,6 @@ characters rb 100h converted rb 100h + +param_count rd 1 +param_ptr rd 1