diff --git a/Hercules_VS2008.vcproj b/Hercules_VS2008.vcproj
index f154edd47..e45f82818 100644
--- a/Hercules_VS2008.vcproj
+++ b/Hercules_VS2008.vcproj
@@ -404,6 +404,10 @@
RelativePath=".\tfswap.c"
>
+
+
+
diff --git a/Hercules_VS2015.vcxproj.filters b/Hercules_VS2015.vcxproj.filters
index 48cc3cf21..3b90e77b5 100644
--- a/Hercules_VS2015.vcxproj.filters
+++ b/Hercules_VS2015.vcxproj.filters
@@ -777,6 +777,9 @@
Source Files\Utilities\other
+
+ Source Files\Utilities\other
+
Source Files\Hercules\Emulation\Source Files
diff --git a/Hercules_VS2017.vcxproj b/Hercules_VS2017.vcxproj
index 375ae0b5a..a8c734fec 100644
--- a/Hercules_VS2017.vcxproj
+++ b/Hercules_VS2017.vcxproj
@@ -452,6 +452,7 @@
+
diff --git a/Hercules_VS2017.vcxproj.filters b/Hercules_VS2017.vcxproj.filters
index 48cc3cf21..3b90e77b5 100644
--- a/Hercules_VS2017.vcxproj.filters
+++ b/Hercules_VS2017.vcxproj.filters
@@ -777,6 +777,9 @@
Source Files\Utilities\other
+
+ Source Files\Utilities\other
+
Source Files\Hercules\Emulation\Source Files
diff --git a/Hercules_VS2019.vcxproj b/Hercules_VS2019.vcxproj
index 7690cb11f..8e70922d9 100644
--- a/Hercules_VS2019.vcxproj
+++ b/Hercules_VS2019.vcxproj
@@ -452,6 +452,7 @@
+
diff --git a/Hercules_VS2019.vcxproj.filters b/Hercules_VS2019.vcxproj.filters
index 48cc3cf21..3b90e77b5 100644
--- a/Hercules_VS2019.vcxproj.filters
+++ b/Hercules_VS2019.vcxproj.filters
@@ -777,6 +777,9 @@
Source Files\Utilities\other
+
+ Source Files\Utilities\other
+
Source Files\Hercules\Emulation\Source Files
diff --git a/Hercules_VS2022.vcxproj b/Hercules_VS2022.vcxproj
index a9067d0fd..61de8c420 100644
--- a/Hercules_VS2022.vcxproj
+++ b/Hercules_VS2022.vcxproj
@@ -452,6 +452,7 @@
+
diff --git a/Hercules_VS2022.vcxproj.filters b/Hercules_VS2022.vcxproj.filters
index 48cc3cf21..3b90e77b5 100644
--- a/Hercules_VS2022.vcxproj.filters
+++ b/Hercules_VS2022.vcxproj.filters
@@ -777,6 +777,9 @@
Source Files\Utilities\other
+
+ Source Files\Utilities\other
+
Source Files\Hercules\Emulation\Source Files
diff --git a/Makefile.am b/Makefile.am
index 2862a43e1..bd8369910 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -251,6 +251,7 @@ bin_PROGRAMS = \
tapesplt \
tfprint \
tfswap \
+ txt2card \
vmfplc2 \
$(HERCIFC) \
$(HERCLIN)
@@ -737,6 +738,10 @@ tfswap_SOURCES = tfswap.c
tfswap_LDADD = $(tools_ADDLIBS)
tfswap_LDFLAGS = $(tools_LD_FLAGS)
+txt2card_SOURCES = txt2card.c
+txt2card_LDADD = $(tools_ADDLIBS)
+txt2card_LDFLAGS = $(tools_LD_FLAGS)
+
#------------------------------------------------------------------------------
# Files that are not 'built' per-se
# Also contains some WIN32 only source files
diff --git a/Makefile.in b/Makefile.in
index 24564abcb..81c4cfacd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -110,7 +110,8 @@ bin_PROGRAMS = cckdcdsk$(EXEEXT) cckdcomp$(EXEEXT) cckddiag$(EXEEXT) \
hetinit$(EXEEXT) hetmap$(EXEEXT) hetupd$(EXEEXT) \
maketape$(EXEEXT) tapecopy$(EXEEXT) tapemap$(EXEEXT) \
tapesplt$(EXEEXT) tfprint$(EXEEXT) tfswap$(EXEEXT) \
- vmfplc2$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2)
+ txt2card$(EXEEXT) vmfplc2$(EXEEXT) $(am__EXEEXT_1) \
+ $(am__EXEEXT_2)
EXTRA_PROGRAMS = hercifc$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -581,6 +582,12 @@ tfswap_DEPENDENCIES = $(am__DEPENDENCIES_3)
tfswap_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(tfswap_LDFLAGS) $(LDFLAGS) -o $@
+am_txt2card_OBJECTS = txt2card.$(OBJEXT)
+txt2card_OBJECTS = $(am_txt2card_OBJECTS)
+txt2card_DEPENDENCIES = $(am__DEPENDENCIES_3)
+txt2card_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(txt2card_LDFLAGS) $(LDFLAGS) -o $@
am_vmfplc2_OBJECTS = vmfplc2.$(OBJEXT)
vmfplc2_OBJECTS = $(am_vmfplc2_OBJECTS)
vmfplc2_DEPENDENCIES = $(am__DEPENDENCIES_3) libhdt3420_not_mod.la
@@ -690,11 +697,11 @@ am__depfiles_remade = ./$(DEPDIR)/_archdep_templ.Plo \
./$(DEPDIR)/tfprint.Po ./$(DEPDIR)/tfswap.Po \
./$(DEPDIR)/timer.Plo ./$(DEPDIR)/trace.Plo \
./$(DEPDIR)/transact.Plo ./$(DEPDIR)/tuntap.Plo \
- ./$(DEPDIR)/vector.Plo ./$(DEPDIR)/version.Plo \
- ./$(DEPDIR)/vm.Plo ./$(DEPDIR)/vmd250.Plo \
- ./$(DEPDIR)/vmfplc2.Po ./$(DEPDIR)/vstore.Plo \
- ./$(DEPDIR)/x75.Plo ./$(DEPDIR)/xstore.Plo \
- ./$(DEPDIR)/zfcp.Plo
+ ./$(DEPDIR)/txt2card.Po ./$(DEPDIR)/vector.Plo \
+ ./$(DEPDIR)/version.Plo ./$(DEPDIR)/vm.Plo \
+ ./$(DEPDIR)/vmd250.Plo ./$(DEPDIR)/vmfplc2.Po \
+ ./$(DEPDIR)/vstore.Plo ./$(DEPDIR)/x75.Plo \
+ ./$(DEPDIR)/xstore.Plo ./$(DEPDIR)/zfcp.Plo
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -740,7 +747,7 @@ SOURCES = $(dyncrypt_la_SOURCES) $(dyngui_la_SOURCES) \
$(hetget_SOURCES) $(hetinit_SOURCES) $(hetmap_SOURCES) \
$(hetupd_SOURCES) $(maketape_SOURCES) $(tapecopy_SOURCES) \
$(tapemap_SOURCES) $(tapesplt_SOURCES) $(tfprint_SOURCES) \
- $(tfswap_SOURCES) $(vmfplc2_SOURCES)
+ $(tfswap_SOURCES) $(txt2card_SOURCES) $(vmfplc2_SOURCES)
DIST_SOURCES = $(dyncrypt_la_SOURCES) $(dyngui_la_SOURCES) \
$(hdt1052c_la_SOURCES) $(hdt1403_la_SOURCES) \
$(hdt2703_la_SOURCES) $(hdt2880_la_SOURCES) \
@@ -767,7 +774,8 @@ DIST_SOURCES = $(dyncrypt_la_SOURCES) $(dyngui_la_SOURCES) \
$(hercules_SOURCES) $(hetget_SOURCES) $(hetinit_SOURCES) \
$(hetmap_SOURCES) $(hetupd_SOURCES) $(maketape_SOURCES) \
$(tapecopy_SOURCES) $(tapemap_SOURCES) $(tapesplt_SOURCES) \
- $(tfprint_SOURCES) $(tfswap_SOURCES) $(vmfplc2_SOURCES)
+ $(tfprint_SOURCES) $(tfswap_SOURCES) $(txt2card_SOURCES) \
+ $(vmfplc2_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@@ -1606,6 +1614,9 @@ tfprint_LDFLAGS = $(tools_LD_FLAGS)
tfswap_SOURCES = tfswap.c
tfswap_LDADD = $(tools_ADDLIBS)
tfswap_LDFLAGS = $(tools_LD_FLAGS)
+txt2card_SOURCES = txt2card.c
+txt2card_LDADD = $(tools_ADDLIBS)
+txt2card_LDFLAGS = $(tools_LD_FLAGS)
#------------------------------------------------------------------------------
# Files that are not 'built' per-se
@@ -2392,6 +2403,10 @@ tfswap$(EXEEXT): $(tfswap_OBJECTS) $(tfswap_DEPENDENCIES) $(EXTRA_tfswap_DEPENDE
@rm -f tfswap$(EXEEXT)
$(AM_V_CCLD)$(tfswap_LINK) $(tfswap_OBJECTS) $(tfswap_LDADD) $(LIBS)
+txt2card$(EXEEXT): $(txt2card_OBJECTS) $(txt2card_DEPENDENCIES) $(EXTRA_txt2card_DEPENDENCIES)
+ @rm -f txt2card$(EXEEXT)
+ $(AM_V_CCLD)$(txt2card_LINK) $(txt2card_OBJECTS) $(txt2card_LDADD) $(LIBS)
+
vmfplc2$(EXEEXT): $(vmfplc2_OBJECTS) $(vmfplc2_DEPENDENCIES) $(EXTRA_vmfplc2_DEPENDENCIES)
@rm -f vmfplc2$(EXEEXT)
$(AM_V_CCLD)$(vmfplc2_LINK) $(vmfplc2_OBJECTS) $(vmfplc2_LDADD) $(LIBS)
@@ -2578,6 +2593,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transact.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tuntap.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt2card.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vm.Plo@am__quote@ # am--include-marker
@@ -3178,6 +3194,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/trace.Plo
-rm -f ./$(DEPDIR)/transact.Plo
-rm -f ./$(DEPDIR)/tuntap.Plo
+ -rm -f ./$(DEPDIR)/txt2card.Po
-rm -f ./$(DEPDIR)/vector.Plo
-rm -f ./$(DEPDIR)/version.Plo
-rm -f ./$(DEPDIR)/vm.Plo
@@ -3412,6 +3429,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/trace.Plo
-rm -f ./$(DEPDIR)/transact.Plo
-rm -f ./$(DEPDIR)/tuntap.Plo
+ -rm -f ./$(DEPDIR)/txt2card.Po
-rm -f ./$(DEPDIR)/vector.Plo
-rm -f ./$(DEPDIR)/version.Plo
-rm -f ./$(DEPDIR)/vm.Plo
diff --git a/msgenu.h b/msgenu.h
index 9742b5be8..f4897158b 100644
--- a/msgenu.h
+++ b/msgenu.h
@@ -2420,7 +2420,16 @@ LOGM_DLL_IMPORT int panel_command_capture( char* cmd, char** resp, bool quiet )
#define HHC03254 "File successfully swapped from %s endian to %s endian"
//efine HHC03255 - HHC03299 (available)
-// range 03300 - 03399 available
+// txt2card
+#define HHC03300 "Usage: txt2card codepage infile outfile"
+#define HHC03301 "Incorrect number of arguments"
+#define HHC03302 "Invalid/unsupported codepage"
+#define HHC03303 "Error opening \"%s\": %s"
+#define HHC03304 "I/O error on file \"%s\": %s"
+//efine HHC03305 - HHC03349 (available)
+
+//efine HHC03350 - HHC03399 (available)
+
// range 03400 - 03499 available
// range 03500 - 03599 available
// range 03600 - 03699 available
diff --git a/msvc.makefile.includes/MODULES.msvc b/msvc.makefile.includes/MODULES.msvc
index cf024ac4a..f8a202b08 100644
--- a/msvc.makefile.includes/MODULES.msvc
+++ b/msvc.makefile.includes/MODULES.msvc
@@ -75,4 +75,5 @@ EXECUTABLES = \
$(X)tapesplt.exe \
$(X)tfprint.exe \
$(X)tfswap.exe \
+ $(X)txt2card.exe \
$(X)vmfplc2.exe
diff --git a/msvc.makefile.includes/MOD_RULES2.msvc b/msvc.makefile.includes/MOD_RULES2.msvc
index 5c2a3e22a..b584b24ed 100644
--- a/msvc.makefile.includes/MOD_RULES2.msvc
+++ b/msvc.makefile.includes/MOD_RULES2.msvc
@@ -167,6 +167,8 @@ $(X)tfprint.exe: $(O)$(@B).obj $(O)hengine.lib $(O)hsys.lib $(O)hutil.lib $(O)h
$(X)tfswap.exe: $(O)$(@B).obj $(O)hsys.lib $(O)hutil.lib $(O)hercmisc.res
+$(X)txt2card.exe: $(O)$(@B).obj $(O)hsys.lib $(O)hutil.lib $(O)hercmisc.res
+
$(X)conspawn.exe: $(O)$(@B).obj $(O)hercmisc.res
# ---------------------------------------------------------------------