From 8ed9a1bb205faf76f6487a2d8a94f3cf2fb721c9 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 30 Aug 2026 19:29:35 +0200 Subject: move unicode tables from nls to unitbl dir in src --- doc/wheelapi2.txt | 69 ---------------------------------------------------- doc/whlapi2.txt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ makefile | 11 ++++++--- nls/cp437uni.tbl | Bin 282 -> 0 bytes nls/cp720uni.tbl | Bin 276 -> 0 bytes nls/cp737uni.tbl | Bin 274 -> 0 bytes nls/cp775uni.tbl | Bin 276 -> 0 bytes nls/cp850uni.tbl | Bin 281 -> 0 bytes nls/cp852uni.tbl | Bin 283 -> 0 bytes nls/cp855uni.tbl | Bin 277 -> 0 bytes nls/cp857uni.tbl | Bin 276 -> 0 bytes nls/cp858uni.tbl | Bin 281 -> 0 bytes nls/cp861uni.tbl | Bin 278 -> 0 bytes nls/cp862uni.tbl | Bin 275 -> 0 bytes nls/cp863uni.tbl | Bin 276 -> 0 bytes nls/cp864uni.tbl | Bin 275 -> 0 bytes nls/cp865uni.tbl | Bin 275 -> 0 bytes nls/cp866uni.tbl | Bin 276 -> 0 bytes nls/cp869uni.tbl | Bin 275 -> 0 bytes nls/cp874uni.tbl | Bin 273 -> 0 bytes nls/license.txt | 46 ----------------------------------- unitbl/cp437uni.tbl | Bin 0 -> 282 bytes unitbl/cp720uni.tbl | Bin 0 -> 276 bytes unitbl/cp737uni.tbl | Bin 0 -> 274 bytes unitbl/cp775uni.tbl | Bin 0 -> 276 bytes unitbl/cp850uni.tbl | Bin 0 -> 281 bytes unitbl/cp852uni.tbl | Bin 0 -> 283 bytes unitbl/cp855uni.tbl | Bin 0 -> 277 bytes unitbl/cp857uni.tbl | Bin 0 -> 276 bytes unitbl/cp858uni.tbl | Bin 0 -> 281 bytes unitbl/cp861uni.tbl | Bin 0 -> 278 bytes unitbl/cp862uni.tbl | Bin 0 -> 275 bytes unitbl/cp863uni.tbl | Bin 0 -> 276 bytes unitbl/cp864uni.tbl | Bin 0 -> 275 bytes unitbl/cp865uni.tbl | Bin 0 -> 275 bytes unitbl/cp866uni.tbl | Bin 0 -> 276 bytes unitbl/cp869uni.tbl | Bin 0 -> 275 bytes unitbl/cp874uni.tbl | Bin 0 -> 273 bytes unitbl/license.txt | 46 +++++++++++++++++++++++++++++++++++ 39 files changed, 123 insertions(+), 118 deletions(-) delete mode 100644 doc/wheelapi2.txt create mode 100644 doc/whlapi2.txt delete mode 100644 nls/cp437uni.tbl delete mode 100644 nls/cp720uni.tbl delete mode 100644 nls/cp737uni.tbl delete mode 100644 nls/cp775uni.tbl delete mode 100644 nls/cp850uni.tbl delete mode 100644 nls/cp852uni.tbl delete mode 100644 nls/cp855uni.tbl delete mode 100644 nls/cp857uni.tbl delete mode 100644 nls/cp858uni.tbl delete mode 100644 nls/cp861uni.tbl delete mode 100644 nls/cp862uni.tbl delete mode 100644 nls/cp863uni.tbl delete mode 100644 nls/cp864uni.tbl delete mode 100644 nls/cp865uni.tbl delete mode 100644 nls/cp866uni.tbl delete mode 100644 nls/cp869uni.tbl delete mode 100644 nls/cp874uni.tbl delete mode 100644 nls/license.txt create mode 100644 unitbl/cp437uni.tbl create mode 100644 unitbl/cp720uni.tbl create mode 100644 unitbl/cp737uni.tbl create mode 100644 unitbl/cp775uni.tbl create mode 100644 unitbl/cp850uni.tbl create mode 100644 unitbl/cp852uni.tbl create mode 100644 unitbl/cp855uni.tbl create mode 100644 unitbl/cp857uni.tbl create mode 100644 unitbl/cp858uni.tbl create mode 100644 unitbl/cp861uni.tbl create mode 100644 unitbl/cp862uni.tbl create mode 100644 unitbl/cp863uni.tbl create mode 100644 unitbl/cp864uni.tbl create mode 100644 unitbl/cp865uni.tbl create mode 100644 unitbl/cp866uni.tbl create mode 100644 unitbl/cp869uni.tbl create mode 100644 unitbl/cp874uni.tbl create mode 100644 unitbl/license.txt diff --git a/doc/wheelapi2.txt b/doc/wheelapi2.txt deleted file mode 100644 index c2b087f..0000000 --- a/doc/wheelapi2.txt +++ /dev/null @@ -1,69 +0,0 @@ -This document describes an extension to the CuteMouse wheelapi.txt -to support two wheels (vertical and horizontal). - -NOTE: Draft, subject to change. - ---------------------------------------------------------------------- -Changes to the wheelapi v1 functions: - -INT 33/0011 - Check wheel support and get capabilities flags - AX = 0011h -Return: AX = 574Dh ('WM' in assembly) if Wheel API is supported by driver - CX = Capabilities flag - Bit(s) Description - ------ ----------- - 0 1=Pointing device supports wheel - 1 1=Pointing device supports 2nd wheel - 2-15 Reserved -Notes: this function should be examined before accessing wheel features. - vbmouse currently assumes this is called after each int33/0, otherwise - wheel events may be sent as keystrokes instead of wheelapi. - -INT 33/0003 - Get cursor position, buttons status and wheel counter - AX = 0003h -Return: BL = buttons status (bits 0-4) - CX = column - DX = row - BH = 8-bit signed counter of wheel movement since last call. - positive value means downward wheel movement. - AH = 8-bit signed counter of 2nd wheel movement since last call. - positive value means rightward wheel movement. -Note: calling this clears the wheel counter for ALL wheels. - -INT 33/0005 - Get button press or wheel movement data - AX = 0005h - BX = button number, -1 for vertical wheel, -2 for 2nd/horizontal wheel - (return values remain the same) -Note: as in wheelapi v1, AH always contains (1st) wheel movement on return - independently of button number requested in BX. - -INT 33/0006 - Get button release or wheel movement data - AX = 0006h - BX = button number, -1 for vertical wheel, -2 for 2nd/horizontal wheel - (return values remain the same) - -INT 33/000C - Define User Interrupt Routine -INT 33/0014 - Exchange User Interrupt Routines -Bitfields for mouse call mask: -Bit(s) Description - 0-6 same as Table 03171 (as in int33.lst) - 7 vertical wheel movement (as in wheelapi.txt) - 8 (absolute mouse event bit) - 9 horizontal wheel movement - 10 4th button pressed - 11 4th button released - 12 5th button pressed - 13 5th button released - 14-15 unused -Notes: on entry, bit 9 of CX (call mask) indicates that the user routine - will be called on horizontal wheel movement - if the user routine is called with bit 9 of AX (condition mask) set, - then BH will hold the 8-bit signed counter of HORIZONTAL wheel - movement since the last call to the routine. if bit 7 is set, then - BH holds VERTICAL wheel movement. - it is impossible for the user routine to be called with both - vertical (bit 7) and horizontal (bit 9) movement. - A program that just sets 0xFFFF event mask and expects to find vertical - wheel movement info in BH (wheelapi v1 style) will be confused, as - here when bit 9 is set BH will contain horizontal wheel movement - instead. DN/2 does this, so horizontal scrolling acts like vertical. diff --git a/doc/whlapi2.txt b/doc/whlapi2.txt new file mode 100644 index 0000000..c2b087f --- /dev/null +++ b/doc/whlapi2.txt @@ -0,0 +1,69 @@ +This document describes an extension to the CuteMouse wheelapi.txt +to support two wheels (vertical and horizontal). + +NOTE: Draft, subject to change. + +--------------------------------------------------------------------- +Changes to the wheelapi v1 functions: + +INT 33/0011 - Check wheel support and get capabilities flags + AX = 0011h +Return: AX = 574Dh ('WM' in assembly) if Wheel API is supported by driver + CX = Capabilities flag + Bit(s) Description + ------ ----------- + 0 1=Pointing device supports wheel + 1 1=Pointing device supports 2nd wheel + 2-15 Reserved +Notes: this function should be examined before accessing wheel features. + vbmouse currently assumes this is called after each int33/0, otherwise + wheel events may be sent as keystrokes instead of wheelapi. + +INT 33/0003 - Get cursor position, buttons status and wheel counter + AX = 0003h +Return: BL = buttons status (bits 0-4) + CX = column + DX = row + BH = 8-bit signed counter of wheel movement since last call. + positive value means downward wheel movement. + AH = 8-bit signed counter of 2nd wheel movement since last call. + positive value means rightward wheel movement. +Note: calling this clears the wheel counter for ALL wheels. + +INT 33/0005 - Get button press or wheel movement data + AX = 0005h + BX = button number, -1 for vertical wheel, -2 for 2nd/horizontal wheel + (return values remain the same) +Note: as in wheelapi v1, AH always contains (1st) wheel movement on return + independently of button number requested in BX. + +INT 33/0006 - Get button release or wheel movement data + AX = 0006h + BX = button number, -1 for vertical wheel, -2 for 2nd/horizontal wheel + (return values remain the same) + +INT 33/000C - Define User Interrupt Routine +INT 33/0014 - Exchange User Interrupt Routines +Bitfields for mouse call mask: +Bit(s) Description + 0-6 same as Table 03171 (as in int33.lst) + 7 vertical wheel movement (as in wheelapi.txt) + 8 (absolute mouse event bit) + 9 horizontal wheel movement + 10 4th button pressed + 11 4th button released + 12 5th button pressed + 13 5th button released + 14-15 unused +Notes: on entry, bit 9 of CX (call mask) indicates that the user routine + will be called on horizontal wheel movement + if the user routine is called with bit 9 of AX (condition mask) set, + then BH will hold the 8-bit signed counter of HORIZONTAL wheel + movement since the last call to the routine. if bit 7 is set, then + BH holds VERTICAL wheel movement. + it is impossible for the user routine to be called with both + vertical (bit 7) and horizontal (bit 9) movement. + A program that just sets 0xFFFF event mask and expects to find vertical + wheel movement info in BH (wheelapi v1 style) will be confused, as + here when bit 9 is set BH will contain horizontal wheel movement + instead. DN/2 does this, so horizontal scrolling acts like vertical. diff --git a/makefile b/makefile index c6dc7e5..0ae4f28 100644 --- a/makefile +++ b/makefile @@ -89,11 +89,13 @@ moustest.obj: moustest.c .AUTODEPEND # Other targets clean: .SYMBOLIC - rm -f vbmouse.exe vbmouse.drv vbsf.exe vbados.flp *.obj *.map + rm -f vbmouse.exe vbmouse.drv vbsf.exe moustest.exe + rm -f *.obj *.map + rm -f vbados.zip vbados.flp vbasrc.zip vbados.flp: mformat -C -f 1440 -v VBADOS -i $^@ :: - mcopy -i $^@ nls/*.tbl :: + mcopy -i $^@ unitbl/*.tbl :: mcopy -i $^@ nls/vbsf.* nls/vbmouse.* :: # Build a floppy image containing the driver @@ -102,5 +104,8 @@ flp: vbados.flp $(bins) $(infs) .SYMBOLIC # Build a zip with the driver binaries zip: vbmouse.exe vbmouse.drv oemsetup.inf vbsf.exe .SYMBOLIC - zip --DOS-names -fz- -j vbados.zip nls/*.tbl nls/vbsf.* nls/vbmouse.* + zip --DOS-names -fz- -j vbados.zip unitbl/*.tbl nls/vbsf.* nls/vbmouse.* zip --DOS-names -fz- vbados.zip $(bins) $(infs) + +srczip: .SYMBOLIC + zip --DOS-names -fz- vbasrc.zip COPYING README.md makefile *.lnk *.h *.c *.inf nls/* unitbl/* doc/* diff --git a/nls/cp437uni.tbl b/nls/cp437uni.tbl deleted file mode 100644 index 76c962d..0000000 Binary files a/nls/cp437uni.tbl and /dev/null differ diff --git a/nls/cp720uni.tbl b/nls/cp720uni.tbl deleted file mode 100644 index f8c868a..0000000 Binary files a/nls/cp720uni.tbl and /dev/null differ diff --git a/nls/cp737uni.tbl b/nls/cp737uni.tbl deleted file mode 100644 index abb1371..0000000 Binary files a/nls/cp737uni.tbl and /dev/null differ diff --git a/nls/cp775uni.tbl b/nls/cp775uni.tbl deleted file mode 100644 index 6bc842d..0000000 Binary files a/nls/cp775uni.tbl and /dev/null differ diff --git a/nls/cp850uni.tbl b/nls/cp850uni.tbl deleted file mode 100644 index cefbfec..0000000 Binary files a/nls/cp850uni.tbl and /dev/null differ diff --git a/nls/cp852uni.tbl b/nls/cp852uni.tbl deleted file mode 100644 index 8809854..0000000 Binary files a/nls/cp852uni.tbl and /dev/null differ diff --git a/nls/cp855uni.tbl b/nls/cp855uni.tbl deleted file mode 100644 index e5bdd65..0000000 Binary files a/nls/cp855uni.tbl and /dev/null differ diff --git a/nls/cp857uni.tbl b/nls/cp857uni.tbl deleted file mode 100644 index a5d83b4..0000000 Binary files a/nls/cp857uni.tbl and /dev/null differ diff --git a/nls/cp858uni.tbl b/nls/cp858uni.tbl deleted file mode 100644 index 9f4dd59..0000000 Binary files a/nls/cp858uni.tbl and /dev/null differ diff --git a/nls/cp861uni.tbl b/nls/cp861uni.tbl deleted file mode 100644 index b76628e..0000000 Binary files a/nls/cp861uni.tbl and /dev/null differ diff --git a/nls/cp862uni.tbl b/nls/cp862uni.tbl deleted file mode 100644 index 03b9559..0000000 Binary files a/nls/cp862uni.tbl and /dev/null differ diff --git a/nls/cp863uni.tbl b/nls/cp863uni.tbl deleted file mode 100644 index 7f424b0..0000000 Binary files a/nls/cp863uni.tbl and /dev/null differ diff --git a/nls/cp864uni.tbl b/nls/cp864uni.tbl deleted file mode 100644 index 1a03811..0000000 Binary files a/nls/cp864uni.tbl and /dev/null differ diff --git a/nls/cp865uni.tbl b/nls/cp865uni.tbl deleted file mode 100644 index be5dd95..0000000 Binary files a/nls/cp865uni.tbl and /dev/null differ diff --git a/nls/cp866uni.tbl b/nls/cp866uni.tbl deleted file mode 100644 index cdc959d..0000000 Binary files a/nls/cp866uni.tbl and /dev/null differ diff --git a/nls/cp869uni.tbl b/nls/cp869uni.tbl deleted file mode 100644 index af30476..0000000 Binary files a/nls/cp869uni.tbl and /dev/null differ diff --git a/nls/cp874uni.tbl b/nls/cp874uni.tbl deleted file mode 100644 index 455ee0b..0000000 Binary files a/nls/cp874uni.tbl and /dev/null differ diff --git a/nls/license.txt b/nls/license.txt deleted file mode 100644 index 85d0d58..0000000 --- a/nls/license.txt +++ /dev/null @@ -1,46 +0,0 @@ -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - -See Terms of Use -for definitions of Unicode Inc.’s Data Files and Software. - -NOTICE TO USER: Carefully read the following legal agreement. -BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S -DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), -YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE -TERMS AND CONDITIONS OF THIS AGREEMENT. -IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE -THE DATA FILES OR SOFTWARE. - -COPYRIGHT AND PERMISSION NOTICE - -Copyright © 1991-2022 Unicode, Inc. All rights reserved. -Distributed under the Terms of Use in https://www.unicode.org/copyright.html. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Unicode data files and any associated documentation -(the "Data Files") or Unicode software and any associated documentation -(the "Software") to deal in the Data Files or Software -without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, and/or sell copies of -the Data Files or Software, and to permit persons to whom the Data Files -or Software are furnished to do so, provided that either -(a) this copyright and permission notice appear with all copies -of the Data Files or Software, or -(b) this copyright and permission notice appear in associated -Documentation. - -THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT OF THIRD PARTY RIGHTS. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS -NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL -DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THE DATA FILES OR SOFTWARE. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, -use or other dealings in these Data Files or Software without prior -written authorization of the copyright holder. diff --git a/unitbl/cp437uni.tbl b/unitbl/cp437uni.tbl new file mode 100644 index 0000000..76c962d Binary files /dev/null and b/unitbl/cp437uni.tbl differ diff --git a/unitbl/cp720uni.tbl b/unitbl/cp720uni.tbl new file mode 100644 index 0000000..f8c868a Binary files /dev/null and b/unitbl/cp720uni.tbl differ diff --git a/unitbl/cp737uni.tbl b/unitbl/cp737uni.tbl new file mode 100644 index 0000000..abb1371 Binary files /dev/null and b/unitbl/cp737uni.tbl differ diff --git a/unitbl/cp775uni.tbl b/unitbl/cp775uni.tbl new file mode 100644 index 0000000..6bc842d Binary files /dev/null and b/unitbl/cp775uni.tbl differ diff --git a/unitbl/cp850uni.tbl b/unitbl/cp850uni.tbl new file mode 100644 index 0000000..cefbfec Binary files /dev/null and b/unitbl/cp850uni.tbl differ diff --git a/unitbl/cp852uni.tbl b/unitbl/cp852uni.tbl new file mode 100644 index 0000000..8809854 Binary files /dev/null and b/unitbl/cp852uni.tbl differ diff --git a/unitbl/cp855uni.tbl b/unitbl/cp855uni.tbl new file mode 100644 index 0000000..e5bdd65 Binary files /dev/null and b/unitbl/cp855uni.tbl differ diff --git a/unitbl/cp857uni.tbl b/unitbl/cp857uni.tbl new file mode 100644 index 0000000..a5d83b4 Binary files /dev/null and b/unitbl/cp857uni.tbl differ diff --git a/unitbl/cp858uni.tbl b/unitbl/cp858uni.tbl new file mode 100644 index 0000000..9f4dd59 Binary files /dev/null and b/unitbl/cp858uni.tbl differ diff --git a/unitbl/cp861uni.tbl b/unitbl/cp861uni.tbl new file mode 100644 index 0000000..b76628e Binary files /dev/null and b/unitbl/cp861uni.tbl differ diff --git a/unitbl/cp862uni.tbl b/unitbl/cp862uni.tbl new file mode 100644 index 0000000..03b9559 Binary files /dev/null and b/unitbl/cp862uni.tbl differ diff --git a/unitbl/cp863uni.tbl b/unitbl/cp863uni.tbl new file mode 100644 index 0000000..7f424b0 Binary files /dev/null and b/unitbl/cp863uni.tbl differ diff --git a/unitbl/cp864uni.tbl b/unitbl/cp864uni.tbl new file mode 100644 index 0000000..1a03811 Binary files /dev/null and b/unitbl/cp864uni.tbl differ diff --git a/unitbl/cp865uni.tbl b/unitbl/cp865uni.tbl new file mode 100644 index 0000000..be5dd95 Binary files /dev/null and b/unitbl/cp865uni.tbl differ diff --git a/unitbl/cp866uni.tbl b/unitbl/cp866uni.tbl new file mode 100644 index 0000000..cdc959d Binary files /dev/null and b/unitbl/cp866uni.tbl differ diff --git a/unitbl/cp869uni.tbl b/unitbl/cp869uni.tbl new file mode 100644 index 0000000..af30476 Binary files /dev/null and b/unitbl/cp869uni.tbl differ diff --git a/unitbl/cp874uni.tbl b/unitbl/cp874uni.tbl new file mode 100644 index 0000000..455ee0b Binary files /dev/null and b/unitbl/cp874uni.tbl differ diff --git a/unitbl/license.txt b/unitbl/license.txt new file mode 100644 index 0000000..85d0d58 --- /dev/null +++ b/unitbl/license.txt @@ -0,0 +1,46 @@ +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +See Terms of Use +for definitions of Unicode Inc.’s Data Files and Software. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2022 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. -- cgit v1.2.3