Merge with default
M .hgtags +2 -0
@@ 7,3 7,5 @@ fd2e5ddd8245bd2bf536a8314b8e0da74e931fd9
 623723ab9e348d44e09f6abd6a8d27bb2332831a version_1.28
 97c4baa181af787fe7da475556ebc5e4f6d89610 version_1.29
 5a17bdbc9b0761db92c0c7700e7a84617703aa5f version_1.30
+58e017b2030419a730ce66cb0524232d41f6de3c version_1.31
+538d4f5eabab5ba345f83a24bc81d05848dfe520 version_1.32

          
M core/core/json/json_reader.cpp +14 -15
@@ 111,22 111,22 @@ namespace core { namespace json {
 	void Reader::read_and_buffer_encoded_char() {
 		read_next_char();
 
-		if (_char == 'u') {
+		if (_char == L'u') {
 			read_and_buffer_hex();
 			return;
 		}
 
-		if (_char == '"' || _char == '\\' || _char == '/') {
+		if (_char == L'"' || _char == L'\\' || _char == L'/') {
 			
-		} else if (_char == 'b') {
+		} else if (_char == L'b') {
 			_char = 8;
-		} else if (_char == 'f') {
+		} else if (_char == L'f') {
 			_char = 12;
-		} else if (_char == 'n') {
+		} else if (_char == L'n') {
 			_char = 10;
-		} else if (_char == 'r') {
+		} else if (_char == L'r') {
 			_char = 13;
-		} else if (_char == 't') {
+		} else if (_char == L't') {
 			_char = 9;
 		} else {
 			generate_parse_error("Invalid character following \\ in a string.");

          
@@ 173,8 173,7 @@ namespace core { namespace json {
 	}
 
 	void Reader::buffer_wide_character(uint32_t wide_char) {
-		static_assert(sizeof(uint32_t) == sizeof(wchar_t), "Wide character is assumed to be 32-bit");
-		_char = wide_char;
+		_char = static_cast<wchar_t>(wide_char);
 		buffer_character();
 	}
 

          
@@ 195,8 194,8 @@ namespace core { namespace json {
 		while(true) {
 			read_next_char();
 			if (is_digit()) {
-				number = number * 10 + (_char - '0');
-			} else if (_char == 'e' || _char == '.') {
+				number = number * 10 + (_char - L'0');
+			} else if (_char == L'e' || _char == L'.') {
 				unread_char();
 				parse_float = true;
 				break;

          
@@ 224,7 223,7 @@ namespace core { namespace json {
 
 	void Reader::parse_decimal(int32_t integer, bool negative, float &number) {
 		read_next_char();
-		if (_char == 'e') {
+		if (_char == L'e') {
 			float exponent = 0.0f;
 			parse_exponent(exponent);
 			number = static_cast<float>(integer) * powf(10.0f, exponent);

          
@@ 237,8 236,8 @@ namespace core { namespace json {
 		while(true) {
 			read_next_char();
 			if (is_digit()) {
-				decimals += multiplier * (_char - '0');
-			} else if (_char == 'e') {
+				decimals += multiplier * (_char - L'0');
+			} else if (_char == L'e') {
 				float exponent = 0.0f;
 				parse_exponent(exponent);
 

          
@@ 284,7 283,7 @@ namespace core { namespace json {
 
 	bool Reader::is_negative_number() {
 		peek_next_char();
-		if (_char == '-') {
+		if (_char == L'-') {
 			read_next_char();
 			return true;
 		}

          
M jasm/CMakeLists.txt +2 -2
@@ 27,8 27,8 @@ add_executable(jasm ${jasm_src})
 
 if (${MINGW})
 	add_custom_command(TARGET jasm POST_BUILD
-		COMMAND ${CMAKE_COMMAND} -E copy_if_different "/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libgcc_s_seh-1.dll" $<TARGET_FILE_DIR:jasm>
-		COMMAND ${CMAKE_COMMAND} -E copy_if_different "/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libstdc++-6.dll" $<TARGET_FILE_DIR:jasm>
+		COMMAND ${CMAKE_COMMAND} -E copy_if_different "/usr/lib/gcc/x86_64-w64-mingw32/10-win32/libgcc_s_seh-1.dll" $<TARGET_FILE_DIR:jasm>
+		COMMAND ${CMAKE_COMMAND} -E copy_if_different "/usr/lib/gcc/x86_64-w64-mingw32/10-win32/libstdc++-6.dll" $<TARGET_FILE_DIR:jasm>
 	)
 endif()
 

          
M jasm/version.h +1 -1
@@ 1,1 1,1 @@ 
-1,31
+1,32

          
M jasm/website/site/index.html +17 -2
@@ 121,10 121,10 @@ 
 				<h1>The Binaries</h1>
 				<ul>
 					<li>
-						<a href="binaries/jasm_1.31_linux64.7z">jAsm 1.31 for 64-bit Linux</a>
+						<a href="binaries/jasm_1.32_linux64.7z">jAsm 1.32 for 64-bit Linux</a>
 					</li>
 					<li>
-						<a href="binaries/jasm_1.31_win64.7z">jAsm 1.31 for 64-bit Windows</a>
+						<a href="binaries/jasm_1.32_win64.7z">jAsm 1.32 for 64-bit Windows</a>
 					</li>
 				</ul>
 				<h1>The Source</h1>

          
@@ 139,6 139,21 @@ 
 				<h1>Version History</h1>
 				<ul>
 					<li>
+						1.32
+						<ul>
+							<li>JSON import function.</li>
+							<li>Break statement for loops.</li>
+							<li>Optional argument to the BRK instruction.</li>
+							<li>Arithmetic shift right operator.</li>
+							<li>Shifts supports negative values.</li>
+							<li>Assignment add for strings.</li>
+							<li>Loop over characters in a string using range for.</li>
+							<li>min() and max() functions can take a list argument.</li>
+							<li>Fix for a bug that accepted null characters in include files.</li>
+							<li>"petscii" conversion format has been replaced with "pet", "pet2001", "vic20", "c16", "plus4", "c64" and "c128".</li>
+						</ul>
+					</li>
+					<li>
 						1.31
 						<ul>
 							<li>Fixed a serious bug where 16 bit branches in 65ce02 and 45gs02 jumped to the wrong address.</li>

          
M release.py +1 -1
@@ 55,7 55,7 @@ def build_mingw(version):
 		if error_code != 0:
 			raise Exception("Failed to compress")
 		os.chdir("..")
-		error_code = run(["7z", "a", "../jasm/website/site/binaries/jasm_%s_win64.7z" % version, "/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libgcc_s_seh-1.dll", "/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/libstdc++-6.dll"])
+		error_code = run(["7z", "a", "../jasm/website/site/binaries/jasm_%s_win64.7z" % version, "/usr/lib/gcc/x86_64-w64-mingw32/10-win32/libgcc_s_seh-1.dll", "/usr/lib/gcc/x86_64-w64-mingw32/10-win32/libstdc++-6.dll"])
 		if error_code != 0:
 			raise Exception("Failed to compress")
 	finally: