HISTORY.TXT--
Change Log File for ASMC
========================

Changes in 2.22 - xx xxx 2017
- added .FOR[S] [<initialization>] : [<condition>] : [<increment/decrement>]
- added .GOTOSW[1|2|3] [[(<case_val>)] | [.IF <condition>]]
- added .CONT[1|2|3] and .BREAK[1|2|3]
- added .CONT0[1|2|3]
- added .ENDCxx
- added .UNTIL[SB|SW|SD]
- added .WHILE[SB|SW|SD]
- added .UNTIL[B|W|D]
- added .WHILE[B|W|D]
- added .UNTILAXZ, DX, and BX
- added switch /h and /? -- went missing..
- added .BREAKxx, CONTxx, UNTILxx, and WHILExx
- added .IFxx
	.IFA	- if Above
	.IFB	- if Below
	.IFG	- if Greater (signed)
	.IFL	- if Less (signed)
	.IFO	- if Overflow (signed)
	.IFP	- if Parity
	.IFS	- if Signed (signed)
	.IFZ	- if Zero
	.IFNA	- if Not Above
	.IFNB	- if Not Below
	.IFNG	- if Not Greater (signed)
	.IFNL	- if Not Less (signed)
	.IFNO	- if Not Overflow (signed)
	.IFNP	- if No Parity
	.IFNS	- if Not Signed (signed)
	.IFNZ	- if Not Zero
- added Signed compare: .IFS, .IFSB, .IFSW, .IFSB
- extended .IFB/.IFW to 32-bit, .IFB to 16-bit
- added use of proto typedefs in HLL
- fixed bug in switch -D, -I and -Fi used with -I"quoted text"
- added command line switch /ws - Create Unicode strings
- added OPTION WSTRING:[ON|OFF] - Toggle ASCII/Unicode
- disabled asmc-added HLL directives when switch /Xc used
  Note: OPTION ASMC:OFF do not disable these keywords
- fixed bug in .WHILE (eax || edx) && ecx
- fixed bug in .WHILE !(eax || edx) && ecx

Changes in 2.21 - 12 Oct 2016
- added .ASSERT directive
- added .IFD to down-size a 64-bit function call return -- .ifd api() == -1
- added .IFW and .IFB -- cmp ax/al, -1
- added .ASSERTD, .ASSERTW, and .ASSERTB
- added OPTION CSTACK (-Cs) to 64-bit
- added OPTION LOOPALIGN:0|1|2|4|8|16
- added OPTION CASEALIGN:0|1|2|4|8|16
- -pe dllimport:<dll> external proto <no args> (call) error
   call error A2014: cannot define as public or external : <name>
   invoke handle import prefix ([__imp_]<name>), call do not
   if <name>() is dll-import invoke will be used in HLL()
   - regress\src\pe\PE3.ASM
- set OPTION SWITCH:NOTABLE as default
- removed OPTION SWITCH:AUTO
- removed command line switch /swa - Sets jump-table creation to Auto in .SWITCH
- added command line switch /swr - use register [R|E]AX in .SWITCH code
- added OPTION SWITCH:REGAX - use register [R|E]AX in .SWITCH code
- added OPTION SWITCH:NOREGS - use stack in .SWITCH code (default)
- added OPTION SWITCH:NOTEST - skip range test in switch-table jump
- added byte index to switch (64-bit)
- added error A3022: .CASE redefinition : A(val) : B(val)
- fixed bug in environ -- %AsmcDir% accepted as %Asmc%
- fixed bug in inline macro @CStr()

Changes in 2.20 - 15 May 2016
- added OPTION SWITCH:[ C | PASCAL | AUTO | TABLE | NOTABLE ]
  The switch comes in two main types: a structured switch (Pascal) or an
  unstructured switch (C). The default type is unstructured.
  The AUTO, TABLE, and NOTABLE options control the jump-table creation in the
  switch. The default setting is AUTO.
- added command line switch /swa - Sets jump-table creation to Auto in .SWITCH
- added command line switch /swc - Emulate a C-switch with fall through
- added command line switch /swn - No jump-table creation in .SWITCH
- added command line switch /swp - Emulate a Pascal-switch
- added command line switch /swt - Force jump-table creation in .SWITCH
- added inline macro @CStr( string )
  Macro function that creates a string in the .DATA segment. The macro accepts
  C-escape characters in the string. Strings are added to a stack and reused if
  duplicated strings are found. The macro returns offset string.
  Example:
	mov eax,@CStr( "\tCreate a \"C\" string: %s%d\n" )
- changed macro @Date to yyyy-mm-dd

Changes in 2.19 - 7 Apr 2016
- CreateVariable() does not zero asym.value3264, if equate already exist.
  https://sourceforge.net/p/jwasm/bugs/303/
- fixed bug in _time() function -- day miscalculation
  after Feb the @Date macro failed: 04/05/16 --> 04/07/16

Changes in 2.18 - 3 Feb 2016
- corrected encodings for 4 AVX instructions:
  - vpermilpd xmm0, xmm1, 1
  - vpermilpd ymm0, ymm1, 1
  - vpermilps xmm0, xmm1, 1
  - vpermilps ymm0, ymm1, 1

Changes in 2.17 - 2 Feb 2016
- fixed command line switch -X -- used lower -x
- added command line switches -0..10[p] -- missing

Changes in 2.16 - 25 Jan 2016
- fixed: command line failed with more than 64 arguments.

Changes in 2.15 - 28 Nov 2015
- fixed bug in expansion of " \"quoted string\" "
- fixed %OUT directive -- didn't work
- fixed command line switch /D<tmacro>[=<value>] -- didn't work correctly

Changes in 2.14 - 16 Oct 2015
- ported some code to assembly and switched to a new C-library
- added .SWITCH, .CASE, .DEFAULT, and .ENDSW
- added switch -Xc: Disable ASMC extensions
  This will disable syntax extensions which aren't supported by JWasm
  Currently these are:
  - Delayed expansion of HLL expression in .WHILE, .ELSEIF, and .CASE
  - Use of procedures in HLL expression and INVOKE
  - Use of procedures without INVOKE
  - Use of "quoted strings" in procedures
- added OPTION ASMC: 0 (default is 1)
- added switch -Cs: C stack: push USER regs first
- added OPTION CSTACK: 1 (default is 0)
- removed use of "quoted strings" outside procedures( "" )

Changes in 2.12 - 30 Oct 2014
- Updated version from JWASM 2.12

Changes in 2.11 - 10 Sep 2014
- Updated version from JWASM 2.11

Changes in 2.10 - 06 Jun 2014
- Updated version from JWASM 2.10
- added C-string -- invoke printf,"%s\n",eax

Changes in 2.09 - 10 Des 2012
- Updated version from JWASM 2.09
  - added label() call in HLL -- .while label() < 1
  - added proc() call in HLL  -- .while proc() < 1
  - added proc( " string " ) in HLL -- .if proc( "string" )
  - added invoke proc,"string"
  - Testing result use TEST REG,REG -- not AND/OR
  - The .UNTILCXZ do not use LOOPx but DEC ECX, JNZ .REPEAT

Changes in 2.06 - 15 Des 2011
- Made a modified version of JWASM used as a TASM clone. This was used for
  some DOS tools in WinXP. The changes from JWASM was:
  - Uses full or relative path on source files (as given)
  - Do not convert short file names (DOS) to long file names
  - A switch (-r) is added to compile a directory tree

