Removed software component
This commit is contained in:
parent
90e280af07
commit
03b78a078e
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<item value="/home/tim/Projects/fpga/micro_test/ipcore_dir/microblaze_mcs_sdk.xml" key="com.xilinx.sdk.hw.ui.hwspec.last"/>
|
||||
</section>
|
Binary file not shown.
Binary file not shown.
|
@ -1,793 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?scdStore version="2"?>
|
||||
|
||||
<scannerInfo id="org.eclipse.cdt.make.core.discoveredScannerInfo">
|
||||
<instance id="xilinx.gnu.mb.exe.debug.32422249;xilinx.gnu.mb.exe.debug.32422249.">
|
||||
<collector id="org.eclipse.cdt.make.core.PerProjectSICollector">
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include-fixed"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/../../../../microblaze-xilinx-elf/include"/>
|
||||
<definedSymbol symbol="__STDC__=1"/>
|
||||
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||
<definedSymbol symbol="__GNUC__=4"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=6"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=4"/>
|
||||
<definedSymbol symbol="__VERSION__="4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)""/>
|
||||
<definedSymbol symbol="__FINITE_MATH_ONLY__=0"/>
|
||||
<definedSymbol symbol="__SIZEOF_INT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_LONG__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SHORT__=2"/>
|
||||
<definedSymbol symbol="__SIZEOF_FLOAT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SIZE_T__=4"/>
|
||||
<definedSymbol symbol="__CHAR_BIT__=8"/>
|
||||
<definedSymbol symbol="__BIGGEST_ALIGNMENT__=4"/>
|
||||
<definedSymbol symbol="__ORDER_LITTLE_ENDIAN__=1234"/>
|
||||
<definedSymbol symbol="__ORDER_BIG_ENDIAN__=4321"/>
|
||||
<definedSymbol symbol="__ORDER_PDP_ENDIAN__=3412"/>
|
||||
<definedSymbol symbol="__BYTE_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__FLOAT_WORD_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__SIZEOF_POINTER__=4"/>
|
||||
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WCHAR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WINT_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__INTMAX_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINTMAX_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_FAST8_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST16_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST32_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INTPTR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__UINTPTR_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__GXX_ABI_VERSION=1002"/>
|
||||
<definedSymbol symbol="__SCHAR_MAX__=127"/>
|
||||
<definedSymbol symbol="__SHRT_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__LONG_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__LONG_LONG_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__WCHAR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__WINT_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__WINT_MIN__=0U"/>
|
||||
<definedSymbol symbol="__PTRDIFF_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIZE_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__INTMAX_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INTMAX_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINTMAX_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINTMAX_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__INT8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT32_C(c)=c ## L"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INT64_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT32_C(c)=c ## UL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINT64_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__INT_FAST8_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST16_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST32_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INTPTR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__UINTPTR_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__FLT_EVAL_METHOD__=0"/>
|
||||
<definedSymbol symbol="__DEC_EVAL_METHOD__=2"/>
|
||||
<definedSymbol symbol="__FLT_RADIX__=2"/>
|
||||
<definedSymbol symbol="__FLT_MANT_DIG__=24"/>
|
||||
<definedSymbol symbol="__FLT_DIG__=6"/>
|
||||
<definedSymbol symbol="__FLT_MIN_EXP__=(-125)"/>
|
||||
<definedSymbol symbol="__FLT_MIN_10_EXP__=(-37)"/>
|
||||
<definedSymbol symbol="__FLT_MAX_EXP__=128"/>
|
||||
<definedSymbol symbol="__FLT_MAX_10_EXP__=38"/>
|
||||
<definedSymbol symbol="__FLT_DECIMAL_DIG__=9"/>
|
||||
<definedSymbol symbol="__FLT_MAX__=3.4028234663852886e+38F"/>
|
||||
<definedSymbol symbol="__FLT_MIN__=1.1754943508222875e-38F"/>
|
||||
<definedSymbol symbol="__FLT_EPSILON__=1.1920928955078125e-7F"/>
|
||||
<definedSymbol symbol="__FLT_DENORM_MIN__=1.4012984643248171e-45F"/>
|
||||
<definedSymbol symbol="__FLT_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__DBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__DBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__DBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__DBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__DBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DBL_DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__DBL_MAX__=((double)1.7976931348623157e+308L)"/>
|
||||
<definedSymbol symbol="__DBL_MIN__=((double)2.2250738585072014e-308L)"/>
|
||||
<definedSymbol symbol="__DBL_EPSILON__=((double)2.2204460492503131e-16L)"/>
|
||||
<definedSymbol symbol="__DBL_DENORM_MIN__=((double)4.9406564584124654e-324L)"/>
|
||||
<definedSymbol symbol="__DBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__LDBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__LDBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__LDBL_MAX__=1.7976931348623157e+308L"/>
|
||||
<definedSymbol symbol="__LDBL_MIN__=2.2250738585072014e-308L"/>
|
||||
<definedSymbol symbol="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
|
||||
<definedSymbol symbol="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DEC32_MANT_DIG__=7"/>
|
||||
<definedSymbol symbol="__DEC32_MIN_EXP__=(-94)"/>
|
||||
<definedSymbol symbol="__DEC32_MAX_EXP__=97"/>
|
||||
<definedSymbol symbol="__DEC32_MIN__=1E-95DF"/>
|
||||
<definedSymbol symbol="__DEC32_MAX__=9.999999E96DF"/>
|
||||
<definedSymbol symbol="__DEC32_EPSILON__=1E-6DF"/>
|
||||
<definedSymbol symbol="__DEC32_SUBNORMAL_MIN__=0.000001E-95DF"/>
|
||||
<definedSymbol symbol="__DEC64_MANT_DIG__=16"/>
|
||||
<definedSymbol symbol="__DEC64_MIN_EXP__=(-382)"/>
|
||||
<definedSymbol symbol="__DEC64_MAX_EXP__=385"/>
|
||||
<definedSymbol symbol="__DEC64_MIN__=1E-383DD"/>
|
||||
<definedSymbol symbol="__DEC64_MAX__=9.999999999999999E384DD"/>
|
||||
<definedSymbol symbol="__DEC64_EPSILON__=1E-15DD"/>
|
||||
<definedSymbol symbol="__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD"/>
|
||||
<definedSymbol symbol="__DEC128_MANT_DIG__=34"/>
|
||||
<definedSymbol symbol="__DEC128_MIN_EXP__=(-6142)"/>
|
||||
<definedSymbol symbol="__DEC128_MAX_EXP__=6145"/>
|
||||
<definedSymbol symbol="__DEC128_MIN__=1E-6143DL"/>
|
||||
<definedSymbol symbol="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
|
||||
<definedSymbol symbol="__DEC128_EPSILON__=1E-33DL"/>
|
||||
<definedSymbol symbol="__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL"/>
|
||||
<definedSymbol symbol="__REGISTER_PREFIX__="/>
|
||||
<definedSymbol symbol="__USER_LABEL_PREFIX__="/>
|
||||
<definedSymbol symbol="__GNUC_GNU_INLINE__=1"/>
|
||||
<definedSymbol symbol="__NO_INLINE__=1"/>
|
||||
<definedSymbol symbol="__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1"/>
|
||||
<definedSymbol symbol="__PRAGMA_REDEFINE_EXTNAME=1"/>
|
||||
<definedSymbol symbol="__SIZEOF_WCHAR_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WINT_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_PTRDIFF_T__=4"/>
|
||||
<definedSymbol symbol="__MICROBLAZE__=1"/>
|
||||
<definedSymbol symbol="__microblaze__=1"/>
|
||||
<definedSymbol symbol="_BIG_ENDIAN=1"/>
|
||||
<definedSymbol symbol="__BIG_ENDIAN__=1"/>
|
||||
<definedSymbol symbol="__MICROBLAZEEB__=1"/>
|
||||
</collector>
|
||||
</instance>
|
||||
<instance id="xilinx.gnu.mb.exe.release.1608365019;xilinx.gnu.mb.exe.release.1608365019.">
|
||||
<collector id="org.eclipse.cdt.make.core.PerProjectSICollector">
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include-fixed"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/../../../../microblaze-xilinx-elf/include"/>
|
||||
<definedSymbol symbol="__STDC__=1"/>
|
||||
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||
<definedSymbol symbol="__GNUC__=4"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=6"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=4"/>
|
||||
<definedSymbol symbol="__VERSION__="4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)""/>
|
||||
<definedSymbol symbol="__FINITE_MATH_ONLY__=0"/>
|
||||
<definedSymbol symbol="__SIZEOF_INT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_LONG__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SHORT__=2"/>
|
||||
<definedSymbol symbol="__SIZEOF_FLOAT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SIZE_T__=4"/>
|
||||
<definedSymbol symbol="__CHAR_BIT__=8"/>
|
||||
<definedSymbol symbol="__BIGGEST_ALIGNMENT__=4"/>
|
||||
<definedSymbol symbol="__ORDER_LITTLE_ENDIAN__=1234"/>
|
||||
<definedSymbol symbol="__ORDER_BIG_ENDIAN__=4321"/>
|
||||
<definedSymbol symbol="__ORDER_PDP_ENDIAN__=3412"/>
|
||||
<definedSymbol symbol="__BYTE_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__FLOAT_WORD_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__SIZEOF_POINTER__=4"/>
|
||||
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WCHAR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WINT_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__INTMAX_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINTMAX_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_FAST8_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST16_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST32_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INTPTR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__UINTPTR_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__GXX_ABI_VERSION=1002"/>
|
||||
<definedSymbol symbol="__SCHAR_MAX__=127"/>
|
||||
<definedSymbol symbol="__SHRT_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__LONG_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__LONG_LONG_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__WCHAR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__WINT_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__WINT_MIN__=0U"/>
|
||||
<definedSymbol symbol="__PTRDIFF_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIZE_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__INTMAX_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INTMAX_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINTMAX_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINTMAX_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__INT8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT32_C(c)=c ## L"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INT64_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT32_C(c)=c ## UL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINT64_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__INT_FAST8_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST16_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST32_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INTPTR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__UINTPTR_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__FLT_EVAL_METHOD__=0"/>
|
||||
<definedSymbol symbol="__DEC_EVAL_METHOD__=2"/>
|
||||
<definedSymbol symbol="__FLT_RADIX__=2"/>
|
||||
<definedSymbol symbol="__FLT_MANT_DIG__=24"/>
|
||||
<definedSymbol symbol="__FLT_DIG__=6"/>
|
||||
<definedSymbol symbol="__FLT_MIN_EXP__=(-125)"/>
|
||||
<definedSymbol symbol="__FLT_MIN_10_EXP__=(-37)"/>
|
||||
<definedSymbol symbol="__FLT_MAX_EXP__=128"/>
|
||||
<definedSymbol symbol="__FLT_MAX_10_EXP__=38"/>
|
||||
<definedSymbol symbol="__FLT_DECIMAL_DIG__=9"/>
|
||||
<definedSymbol symbol="__FLT_MAX__=3.4028234663852886e+38F"/>
|
||||
<definedSymbol symbol="__FLT_MIN__=1.1754943508222875e-38F"/>
|
||||
<definedSymbol symbol="__FLT_EPSILON__=1.1920928955078125e-7F"/>
|
||||
<definedSymbol symbol="__FLT_DENORM_MIN__=1.4012984643248171e-45F"/>
|
||||
<definedSymbol symbol="__FLT_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__DBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__DBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__DBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__DBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__DBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DBL_DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__DBL_MAX__=((double)1.7976931348623157e+308L)"/>
|
||||
<definedSymbol symbol="__DBL_MIN__=((double)2.2250738585072014e-308L)"/>
|
||||
<definedSymbol symbol="__DBL_EPSILON__=((double)2.2204460492503131e-16L)"/>
|
||||
<definedSymbol symbol="__DBL_DENORM_MIN__=((double)4.9406564584124654e-324L)"/>
|
||||
<definedSymbol symbol="__DBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__LDBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__LDBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__LDBL_MAX__=1.7976931348623157e+308L"/>
|
||||
<definedSymbol symbol="__LDBL_MIN__=2.2250738585072014e-308L"/>
|
||||
<definedSymbol symbol="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
|
||||
<definedSymbol symbol="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DEC32_MANT_DIG__=7"/>
|
||||
<definedSymbol symbol="__DEC32_MIN_EXP__=(-94)"/>
|
||||
<definedSymbol symbol="__DEC32_MAX_EXP__=97"/>
|
||||
<definedSymbol symbol="__DEC32_MIN__=1E-95DF"/>
|
||||
<definedSymbol symbol="__DEC32_MAX__=9.999999E96DF"/>
|
||||
<definedSymbol symbol="__DEC32_EPSILON__=1E-6DF"/>
|
||||
<definedSymbol symbol="__DEC32_SUBNORMAL_MIN__=0.000001E-95DF"/>
|
||||
<definedSymbol symbol="__DEC64_MANT_DIG__=16"/>
|
||||
<definedSymbol symbol="__DEC64_MIN_EXP__=(-382)"/>
|
||||
<definedSymbol symbol="__DEC64_MAX_EXP__=385"/>
|
||||
<definedSymbol symbol="__DEC64_MIN__=1E-383DD"/>
|
||||
<definedSymbol symbol="__DEC64_MAX__=9.999999999999999E384DD"/>
|
||||
<definedSymbol symbol="__DEC64_EPSILON__=1E-15DD"/>
|
||||
<definedSymbol symbol="__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD"/>
|
||||
<definedSymbol symbol="__DEC128_MANT_DIG__=34"/>
|
||||
<definedSymbol symbol="__DEC128_MIN_EXP__=(-6142)"/>
|
||||
<definedSymbol symbol="__DEC128_MAX_EXP__=6145"/>
|
||||
<definedSymbol symbol="__DEC128_MIN__=1E-6143DL"/>
|
||||
<definedSymbol symbol="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
|
||||
<definedSymbol symbol="__DEC128_EPSILON__=1E-33DL"/>
|
||||
<definedSymbol symbol="__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL"/>
|
||||
<definedSymbol symbol="__REGISTER_PREFIX__="/>
|
||||
<definedSymbol symbol="__USER_LABEL_PREFIX__="/>
|
||||
<definedSymbol symbol="__GNUC_GNU_INLINE__=1"/>
|
||||
<definedSymbol symbol="__NO_INLINE__=1"/>
|
||||
<definedSymbol symbol="__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1"/>
|
||||
<definedSymbol symbol="__PRAGMA_REDEFINE_EXTNAME=1"/>
|
||||
<definedSymbol symbol="__SIZEOF_WCHAR_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WINT_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_PTRDIFF_T__=4"/>
|
||||
<definedSymbol symbol="__MICROBLAZE__=1"/>
|
||||
<definedSymbol symbol="__microblaze__=1"/>
|
||||
<definedSymbol symbol="_BIG_ENDIAN=1"/>
|
||||
<definedSymbol symbol="__BIG_ENDIAN__=1"/>
|
||||
<definedSymbol symbol="__MICROBLAZEEB__=1"/>
|
||||
</collector>
|
||||
</instance>
|
||||
<instance id="xilinx.gnu.mb.exe.debug.32422249;xilinx.gnu.mb.exe.debug.32422249.1916704164;xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.453942197;xilinx.gnu.compiler.input.1228398252">
|
||||
<collector id="org.eclipse.cdt.make.core.PerProjectSICollector">
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include-fixed"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/../../../../microblaze-xilinx-elf/include"/>
|
||||
<definedSymbol symbol="__STDC__=1"/>
|
||||
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||
<definedSymbol symbol="__GNUC__=4"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=6"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=4"/>
|
||||
<definedSymbol symbol="__VERSION__="4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)""/>
|
||||
<definedSymbol symbol="__FINITE_MATH_ONLY__=0"/>
|
||||
<definedSymbol symbol="__SIZEOF_INT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_LONG__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SHORT__=2"/>
|
||||
<definedSymbol symbol="__SIZEOF_FLOAT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SIZE_T__=4"/>
|
||||
<definedSymbol symbol="__CHAR_BIT__=8"/>
|
||||
<definedSymbol symbol="__BIGGEST_ALIGNMENT__=4"/>
|
||||
<definedSymbol symbol="__ORDER_LITTLE_ENDIAN__=1234"/>
|
||||
<definedSymbol symbol="__ORDER_BIG_ENDIAN__=4321"/>
|
||||
<definedSymbol symbol="__ORDER_PDP_ENDIAN__=3412"/>
|
||||
<definedSymbol symbol="__BYTE_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__FLOAT_WORD_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__SIZEOF_POINTER__=4"/>
|
||||
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WCHAR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WINT_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__INTMAX_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINTMAX_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_FAST8_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST16_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST32_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INTPTR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__UINTPTR_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__GXX_ABI_VERSION=1002"/>
|
||||
<definedSymbol symbol="__SCHAR_MAX__=127"/>
|
||||
<definedSymbol symbol="__SHRT_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__LONG_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__LONG_LONG_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__WCHAR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__WINT_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__WINT_MIN__=0U"/>
|
||||
<definedSymbol symbol="__PTRDIFF_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIZE_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__INTMAX_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INTMAX_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINTMAX_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINTMAX_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__INT8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT32_C(c)=c ## L"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INT64_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT32_C(c)=c ## UL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINT64_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__INT_FAST8_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST16_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST32_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INTPTR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__UINTPTR_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__FLT_EVAL_METHOD__=0"/>
|
||||
<definedSymbol symbol="__DEC_EVAL_METHOD__=2"/>
|
||||
<definedSymbol symbol="__FLT_RADIX__=2"/>
|
||||
<definedSymbol symbol="__FLT_MANT_DIG__=24"/>
|
||||
<definedSymbol symbol="__FLT_DIG__=6"/>
|
||||
<definedSymbol symbol="__FLT_MIN_EXP__=(-125)"/>
|
||||
<definedSymbol symbol="__FLT_MIN_10_EXP__=(-37)"/>
|
||||
<definedSymbol symbol="__FLT_MAX_EXP__=128"/>
|
||||
<definedSymbol symbol="__FLT_MAX_10_EXP__=38"/>
|
||||
<definedSymbol symbol="__FLT_DECIMAL_DIG__=9"/>
|
||||
<definedSymbol symbol="__FLT_MAX__=3.4028234663852886e+38F"/>
|
||||
<definedSymbol symbol="__FLT_MIN__=1.1754943508222875e-38F"/>
|
||||
<definedSymbol symbol="__FLT_EPSILON__=1.1920928955078125e-7F"/>
|
||||
<definedSymbol symbol="__FLT_DENORM_MIN__=1.4012984643248171e-45F"/>
|
||||
<definedSymbol symbol="__FLT_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__DBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__DBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__DBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__DBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__DBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DBL_DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__DBL_MAX__=((double)1.7976931348623157e+308L)"/>
|
||||
<definedSymbol symbol="__DBL_MIN__=((double)2.2250738585072014e-308L)"/>
|
||||
<definedSymbol symbol="__DBL_EPSILON__=((double)2.2204460492503131e-16L)"/>
|
||||
<definedSymbol symbol="__DBL_DENORM_MIN__=((double)4.9406564584124654e-324L)"/>
|
||||
<definedSymbol symbol="__DBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__LDBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__LDBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__LDBL_MAX__=1.7976931348623157e+308L"/>
|
||||
<definedSymbol symbol="__LDBL_MIN__=2.2250738585072014e-308L"/>
|
||||
<definedSymbol symbol="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
|
||||
<definedSymbol symbol="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DEC32_MANT_DIG__=7"/>
|
||||
<definedSymbol symbol="__DEC32_MIN_EXP__=(-94)"/>
|
||||
<definedSymbol symbol="__DEC32_MAX_EXP__=97"/>
|
||||
<definedSymbol symbol="__DEC32_MIN__=1E-95DF"/>
|
||||
<definedSymbol symbol="__DEC32_MAX__=9.999999E96DF"/>
|
||||
<definedSymbol symbol="__DEC32_EPSILON__=1E-6DF"/>
|
||||
<definedSymbol symbol="__DEC32_SUBNORMAL_MIN__=0.000001E-95DF"/>
|
||||
<definedSymbol symbol="__DEC64_MANT_DIG__=16"/>
|
||||
<definedSymbol symbol="__DEC64_MIN_EXP__=(-382)"/>
|
||||
<definedSymbol symbol="__DEC64_MAX_EXP__=385"/>
|
||||
<definedSymbol symbol="__DEC64_MIN__=1E-383DD"/>
|
||||
<definedSymbol symbol="__DEC64_MAX__=9.999999999999999E384DD"/>
|
||||
<definedSymbol symbol="__DEC64_EPSILON__=1E-15DD"/>
|
||||
<definedSymbol symbol="__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD"/>
|
||||
<definedSymbol symbol="__DEC128_MANT_DIG__=34"/>
|
||||
<definedSymbol symbol="__DEC128_MIN_EXP__=(-6142)"/>
|
||||
<definedSymbol symbol="__DEC128_MAX_EXP__=6145"/>
|
||||
<definedSymbol symbol="__DEC128_MIN__=1E-6143DL"/>
|
||||
<definedSymbol symbol="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
|
||||
<definedSymbol symbol="__DEC128_EPSILON__=1E-33DL"/>
|
||||
<definedSymbol symbol="__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL"/>
|
||||
<definedSymbol symbol="__REGISTER_PREFIX__="/>
|
||||
<definedSymbol symbol="__USER_LABEL_PREFIX__="/>
|
||||
<definedSymbol symbol="__GNUC_GNU_INLINE__=1"/>
|
||||
<definedSymbol symbol="__NO_INLINE__=1"/>
|
||||
<definedSymbol symbol="__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1"/>
|
||||
<definedSymbol symbol="__PRAGMA_REDEFINE_EXTNAME=1"/>
|
||||
<definedSymbol symbol="__SIZEOF_WCHAR_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WINT_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_PTRDIFF_T__=4"/>
|
||||
<definedSymbol symbol="__MICROBLAZE__=1"/>
|
||||
<definedSymbol symbol="__microblaze__=1"/>
|
||||
<definedSymbol symbol="_BIG_ENDIAN=1"/>
|
||||
<definedSymbol symbol="__BIG_ENDIAN__=1"/>
|
||||
<definedSymbol symbol="__MICROBLAZEEB__=1"/>
|
||||
</collector>
|
||||
</instance>
|
||||
<instance id="xilinx.gnu.mb.exe.debug.32422249;xilinx.gnu.mb.exe.debug.32422249.;xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289;xilinx.gnu.compiler.input.123140396">
|
||||
<collector id="org.eclipse.cdt.make.core.PerProjectSICollector">
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/include-fixed"/>
|
||||
<includePath path="/opt/Xilinx/14.7/ISE_DS/EDK/gnu/microblaze/lin/bin/../lib/gcc/microblaze-xilinx-elf/4.6.4/../../../../microblaze-xilinx-elf/include"/>
|
||||
<definedSymbol symbol="__STDC__=1"/>
|
||||
<definedSymbol symbol="__STDC_HOSTED__=1"/>
|
||||
<definedSymbol symbol="__GNUC__=4"/>
|
||||
<definedSymbol symbol="__GNUC_MINOR__=6"/>
|
||||
<definedSymbol symbol="__GNUC_PATCHLEVEL__=4"/>
|
||||
<definedSymbol symbol="__VERSION__="4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)""/>
|
||||
<definedSymbol symbol="__FINITE_MATH_ONLY__=0"/>
|
||||
<definedSymbol symbol="__SIZEOF_INT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_LONG__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SHORT__=2"/>
|
||||
<definedSymbol symbol="__SIZEOF_FLOAT__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_LONG_DOUBLE__=8"/>
|
||||
<definedSymbol symbol="__SIZEOF_SIZE_T__=4"/>
|
||||
<definedSymbol symbol="__CHAR_BIT__=8"/>
|
||||
<definedSymbol symbol="__BIGGEST_ALIGNMENT__=4"/>
|
||||
<definedSymbol symbol="__ORDER_LITTLE_ENDIAN__=1234"/>
|
||||
<definedSymbol symbol="__ORDER_BIG_ENDIAN__=4321"/>
|
||||
<definedSymbol symbol="__ORDER_PDP_ENDIAN__=3412"/>
|
||||
<definedSymbol symbol="__BYTE_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__FLOAT_WORD_ORDER__=__ORDER_BIG_ENDIAN__"/>
|
||||
<definedSymbol symbol="__SIZEOF_POINTER__=4"/>
|
||||
<definedSymbol symbol="__SIZE_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__PTRDIFF_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WCHAR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__WINT_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__INTMAX_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINTMAX_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__CHAR32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_TYPE__=signed char"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_TYPE__=short int"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_TYPE__=long int"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_TYPE__=unsigned char"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_TYPE__=short unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_TYPE__=long unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INT_FAST8_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST16_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST32_TYPE__=int"/>
|
||||
<definedSymbol symbol="__INT_FAST64_TYPE__=long long int"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_TYPE__=long long unsigned int"/>
|
||||
<definedSymbol symbol="__INTPTR_TYPE__=int"/>
|
||||
<definedSymbol symbol="__UINTPTR_TYPE__=unsigned int"/>
|
||||
<definedSymbol symbol="__GXX_ABI_VERSION=1002"/>
|
||||
<definedSymbol symbol="__SCHAR_MAX__=127"/>
|
||||
<definedSymbol symbol="__SHRT_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__LONG_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__LONG_LONG_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__WCHAR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__WINT_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__WINT_MIN__=0U"/>
|
||||
<definedSymbol symbol="__PTRDIFF_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIZE_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__INTMAX_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INTMAX_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINTMAX_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINTMAX_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)"/>
|
||||
<definedSymbol symbol="__INT8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INT_LEAST8_MAX__=127"/>
|
||||
<definedSymbol symbol="__INT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST16_MAX__=32767"/>
|
||||
<definedSymbol symbol="__INT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__INT_LEAST32_MAX__=2147483647L"/>
|
||||
<definedSymbol symbol="__INT32_C(c)=c ## L"/>
|
||||
<definedSymbol symbol="__INT_LEAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__INT64_C(c)=c ## LL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST8_MAX__=255"/>
|
||||
<definedSymbol symbol="__UINT8_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST16_MAX__=65535"/>
|
||||
<definedSymbol symbol="__UINT16_C(c)=c"/>
|
||||
<definedSymbol symbol="__UINT_LEAST32_MAX__=4294967295UL"/>
|
||||
<definedSymbol symbol="__UINT32_C(c)=c ## UL"/>
|
||||
<definedSymbol symbol="__UINT_LEAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__UINT64_C(c)=c ## ULL"/>
|
||||
<definedSymbol symbol="__INT_FAST8_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST16_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST32_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__INT_FAST64_MAX__=9223372036854775807LL"/>
|
||||
<definedSymbol symbol="__UINT_FAST8_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST16_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST32_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__UINT_FAST64_MAX__=18446744073709551615ULL"/>
|
||||
<definedSymbol symbol="__INTPTR_MAX__=2147483647"/>
|
||||
<definedSymbol symbol="__UINTPTR_MAX__=4294967295U"/>
|
||||
<definedSymbol symbol="__FLT_EVAL_METHOD__=0"/>
|
||||
<definedSymbol symbol="__DEC_EVAL_METHOD__=2"/>
|
||||
<definedSymbol symbol="__FLT_RADIX__=2"/>
|
||||
<definedSymbol symbol="__FLT_MANT_DIG__=24"/>
|
||||
<definedSymbol symbol="__FLT_DIG__=6"/>
|
||||
<definedSymbol symbol="__FLT_MIN_EXP__=(-125)"/>
|
||||
<definedSymbol symbol="__FLT_MIN_10_EXP__=(-37)"/>
|
||||
<definedSymbol symbol="__FLT_MAX_EXP__=128"/>
|
||||
<definedSymbol symbol="__FLT_MAX_10_EXP__=38"/>
|
||||
<definedSymbol symbol="__FLT_DECIMAL_DIG__=9"/>
|
||||
<definedSymbol symbol="__FLT_MAX__=3.4028234663852886e+38F"/>
|
||||
<definedSymbol symbol="__FLT_MIN__=1.1754943508222875e-38F"/>
|
||||
<definedSymbol symbol="__FLT_EPSILON__=1.1920928955078125e-7F"/>
|
||||
<definedSymbol symbol="__FLT_DENORM_MIN__=1.4012984643248171e-45F"/>
|
||||
<definedSymbol symbol="__FLT_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__FLT_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__DBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__DBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__DBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__DBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__DBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DBL_DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__DBL_MAX__=((double)1.7976931348623157e+308L)"/>
|
||||
<definedSymbol symbol="__DBL_MIN__=((double)2.2250738585072014e-308L)"/>
|
||||
<definedSymbol symbol="__DBL_EPSILON__=((double)2.2204460492503131e-16L)"/>
|
||||
<definedSymbol symbol="__DBL_DENORM_MIN__=((double)4.9406564584124654e-324L)"/>
|
||||
<definedSymbol symbol="__DBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__DBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__LDBL_MANT_DIG__=53"/>
|
||||
<definedSymbol symbol="__LDBL_DIG__=15"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_EXP__=(-1021)"/>
|
||||
<definedSymbol symbol="__LDBL_MIN_10_EXP__=(-307)"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_EXP__=1024"/>
|
||||
<definedSymbol symbol="__LDBL_MAX_10_EXP__=308"/>
|
||||
<definedSymbol symbol="__DECIMAL_DIG__=17"/>
|
||||
<definedSymbol symbol="__LDBL_MAX__=1.7976931348623157e+308L"/>
|
||||
<definedSymbol symbol="__LDBL_MIN__=2.2250738585072014e-308L"/>
|
||||
<definedSymbol symbol="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
|
||||
<definedSymbol symbol="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_DENORM__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_INFINITY__=1"/>
|
||||
<definedSymbol symbol="__LDBL_HAS_QUIET_NAN__=1"/>
|
||||
<definedSymbol symbol="__DEC32_MANT_DIG__=7"/>
|
||||
<definedSymbol symbol="__DEC32_MIN_EXP__=(-94)"/>
|
||||
<definedSymbol symbol="__DEC32_MAX_EXP__=97"/>
|
||||
<definedSymbol symbol="__DEC32_MIN__=1E-95DF"/>
|
||||
<definedSymbol symbol="__DEC32_MAX__=9.999999E96DF"/>
|
||||
<definedSymbol symbol="__DEC32_EPSILON__=1E-6DF"/>
|
||||
<definedSymbol symbol="__DEC32_SUBNORMAL_MIN__=0.000001E-95DF"/>
|
||||
<definedSymbol symbol="__DEC64_MANT_DIG__=16"/>
|
||||
<definedSymbol symbol="__DEC64_MIN_EXP__=(-382)"/>
|
||||
<definedSymbol symbol="__DEC64_MAX_EXP__=385"/>
|
||||
<definedSymbol symbol="__DEC64_MIN__=1E-383DD"/>
|
||||
<definedSymbol symbol="__DEC64_MAX__=9.999999999999999E384DD"/>
|
||||
<definedSymbol symbol="__DEC64_EPSILON__=1E-15DD"/>
|
||||
<definedSymbol symbol="__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD"/>
|
||||
<definedSymbol symbol="__DEC128_MANT_DIG__=34"/>
|
||||
<definedSymbol symbol="__DEC128_MIN_EXP__=(-6142)"/>
|
||||
<definedSymbol symbol="__DEC128_MAX_EXP__=6145"/>
|
||||
<definedSymbol symbol="__DEC128_MIN__=1E-6143DL"/>
|
||||
<definedSymbol symbol="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
|
||||
<definedSymbol symbol="__DEC128_EPSILON__=1E-33DL"/>
|
||||
<definedSymbol symbol="__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL"/>
|
||||
<definedSymbol symbol="__REGISTER_PREFIX__="/>
|
||||
<definedSymbol symbol="__USER_LABEL_PREFIX__="/>
|
||||
<definedSymbol symbol="__GNUC_GNU_INLINE__=1"/>
|
||||
<definedSymbol symbol="__NO_INLINE__=1"/>
|
||||
<definedSymbol symbol="__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1"/>
|
||||
<definedSymbol symbol="__PRAGMA_REDEFINE_EXTNAME=1"/>
|
||||
<definedSymbol symbol="__SIZEOF_WCHAR_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_WINT_T__=4"/>
|
||||
<definedSymbol symbol="__SIZEOF_PTRDIFF_T__=4"/>
|
||||
<definedSymbol symbol="__MICROBLAZE__=1"/>
|
||||
<definedSymbol symbol="__microblaze__=1"/>
|
||||
<definedSymbol symbol="_BIG_ENDIAN=1"/>
|
||||
<definedSymbol symbol="__BIG_ENDIAN__=1"/>
|
||||
<definedSymbol symbol="__MICROBLAZEEB__=1"/>
|
||||
</collector>
|
||||
</instance>
|
||||
</scannerInfo>
|
|
@ -1,3 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
</section>
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<item value="Default C source template" key="LastUsedSourceTemplate"/>
|
||||
<section name="completion_proposal_size">
|
||||
</section>
|
||||
<section name="org.eclipse.cdt.ui.text.hover.CMacroExpansionExploration">
|
||||
</section>
|
||||
</section>
|
|
@ -1,208 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,212 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
Xint16 temp = (y << 8);
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,252 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,264 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 3) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 3) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,266 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 3) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 3) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
} else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) {
|
||||
set_foreground(escape_parameter_1 - 90 + 8);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,247 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reverse = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reverse << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reverse << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reverse << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,252 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,213 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,208 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, y << 8 + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,208 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,210 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
Xint16 temp = (y << 8);
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,202 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,199 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,204 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
// Indicate that we are working
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate that we are done
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,256 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,268 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 4) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 4) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
} else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) {
|
||||
set_foreground(escape_parameter_1 - 90 + 8);
|
||||
} else if (escape_parameter_1 >= 100 && escape_parameter_1 <= 107) {
|
||||
set_background(escape_parameter_1 - 100 + 8);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,230 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
}
|
||||
if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,232 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,268 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 4) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 4) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {x
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < (45+2); ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < (80+24); ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
} else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) {
|
||||
set_foreground(escape_parameter_1 - 90 + 8);
|
||||
} else if (escape_parameter_1 >= 100 && escape_parameter_1 <= 107) {
|
||||
set_background(escape_parameter_1 - 100 + 8);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,204 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
// Indicate that we are working
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate that we are done
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,268 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 4) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 4) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {x
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < (45+2); ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < (80+24); ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < (80+24); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
} else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) {
|
||||
set_foreground(escape_parameter_1 - 90 + 8);
|
||||
} else if (escape_parameter_1 >= 100 && escape_parameter_1 <= 107) {
|
||||
set_background(escape_parameter_1 - 100 + 8);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,204 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
// Indicate that we are working
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate that we are done
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,260 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,204 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
|
||||
int i;
|
||||
for (i = 1; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,202 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,258 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,231 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,248 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reversed << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reversed << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,211 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,213 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,230 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,198 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,204 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
// Indicate that we are working
|
||||
XIOModule_DiscreteReset(&gpo, 3, 1);
|
||||
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Indicate that we are done
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,246 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reversed << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reversed << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 3, (reversed << 7) + (background << 4) + (foreground << 1) + 0);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,252 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,212 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,202 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,198 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
commit();
|
||||
}
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
int i;
|
||||
for (i = 0; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
commit();
|
||||
}
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,264 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((background << 3) + foreground) << 8;
|
||||
} else {
|
||||
properties = ((foreground << 3) + background) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,231 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
}
|
||||
if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,205 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,228 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
}
|
||||
if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,209 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,252 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = 0;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,256 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
properties = ((reversed << 6) + (background << 3) + foreground) << 8;
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_foreground(escape_parameter_1 - 40);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,212 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,268 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
Xint8 reversed = 0;
|
||||
Xint8 foreground = 0b111;
|
||||
Xint8 background = 0;
|
||||
|
||||
Xint16 properties = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void calculate_properties() {
|
||||
if (reversed) {
|
||||
properties = ((foreground << 3) + background) << 8;
|
||||
} else {
|
||||
properties = ((background << 3) + foreground) << 8;
|
||||
}
|
||||
}
|
||||
|
||||
void set_foreground(Xint8 color) {
|
||||
foreground = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void set_background(Xint8 color) {
|
||||
background = color;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
reversed = enable;
|
||||
|
||||
calculate_properties();
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
reverse(0);
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, properties + c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
if (escape_parameter_1 == 0) {
|
||||
reverse(0);
|
||||
set_foreground(0b111);
|
||||
set_background(0);
|
||||
} else if (escape_parameter_1 == 7) {
|
||||
reverse(1);
|
||||
} else if (escape_parameter_1 >= 30 && escape_parameter_1 <= 37) {
|
||||
set_foreground(escape_parameter_1 - 30);
|
||||
} else if (escape_parameter_1 >= 40 && escape_parameter_1 <= 47) {
|
||||
set_background(escape_parameter_1 - 40);
|
||||
} else if (escape_parameter_1 >= 90 && escape_parameter_1 <= 97) {
|
||||
set_foreground(escape_parameter_1 - 90 + 8);
|
||||
} else if (escape_parameter_1 >= 100 && escape_parameter_1 <= 107) {
|
||||
set_background(escape_parameter_1 - 100 + 8);
|
||||
}
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,220 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(u8 enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,205 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < 45*80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = 1; i < (80 - x); ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll) + i) % (80*45));
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (x + 80*(y + scroll)) % (80*45));
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_2 - 1;
|
||||
y = escape_parameter_1 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,220 +0,0 @@
|
|||
#include <xparameters.h>
|
||||
#include <xiomodule.h>
|
||||
|
||||
XIOModule gpo;
|
||||
|
||||
Xint8 x = 0;
|
||||
Xint8 y = 0;
|
||||
Xint8 scroll = 0;
|
||||
|
||||
void commit() {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void reverse(uint8_t enable) {
|
||||
if (enable) {
|
||||
XIOModule_DiscreteSet(&gpo, 3, 2);
|
||||
} else {
|
||||
XIOModule_DiscreteClear(&gpo, 3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void clear_screen() {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, 0);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int x;
|
||||
int y;
|
||||
for (y = 0; y < 45; ++y) {
|
||||
Xint16 temp = (y << 8);
|
||||
for (x = 0; x < 80; ++x) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
}
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
scroll = 0;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
}
|
||||
|
||||
void clear_eol() {
|
||||
Xint16 temp = (y << 8);
|
||||
|
||||
XIOModule_DiscreteWrite(&gpo, 1, 0);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + x);
|
||||
XIOModule_DiscreteSet(&gpo, 3, 1);
|
||||
|
||||
int i;
|
||||
for (i = x; i < 80; ++i) {
|
||||
XIOModule_DiscreteWrite(&gpo, 2, temp + i);
|
||||
}
|
||||
|
||||
XIOModule_DiscreteClear(&gpo, 3, 1);
|
||||
}
|
||||
|
||||
void write(u8 c) {
|
||||
XIOModule_DiscreteWrite(&gpo, 1, c);
|
||||
XIOModule_DiscreteWrite(&gpo, 2, (y << 8) + x);
|
||||
commit();
|
||||
}
|
||||
|
||||
void next() {
|
||||
x++;
|
||||
if (x >= 80) {
|
||||
y++;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
}
|
||||
|
||||
// @todo This does not appear to work quite correctly
|
||||
void previous() {
|
||||
x--;
|
||||
if (x < 0) {
|
||||
y--;
|
||||
x %= 80;
|
||||
}
|
||||
|
||||
if (y < 0) {
|
||||
y = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 data = 0;
|
||||
u8 had = 0;
|
||||
u8 escape = 0;
|
||||
u8 escape_parameter_1 = 0;
|
||||
u8 escape_parameter_2 = 0;
|
||||
|
||||
|
||||
void clock() {
|
||||
u8 signals = XIOModule_DiscreteRead(&gpo, 3) & 0b11;
|
||||
|
||||
if (!(signals & 0b01)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (signals & 0b10) {
|
||||
data = XIOModule_DiscreteRead(&gpo, 1) & 0xFF;
|
||||
had = 1;
|
||||
} else if (had) {
|
||||
had = 0;
|
||||
|
||||
if (escape == 1) {
|
||||
if (data == '[') {
|
||||
escape = 2;
|
||||
} else {
|
||||
escape = 0;
|
||||
}
|
||||
} else if (escape) {
|
||||
switch (data) {
|
||||
// For now we are only going to implement what we actually use
|
||||
case 'K':
|
||||
// Assume parameter 0
|
||||
clear_eol();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
if (escape_parameter_1 == 0) {
|
||||
escape_parameter_1 = 1;
|
||||
}
|
||||
|
||||
if (escape_parameter_2 == 0) {
|
||||
escape_parameter_2 = 1;
|
||||
}
|
||||
|
||||
x = escape_parameter_1 - 1;
|
||||
y = escape_parameter_2 - 1;
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
// Assume parameter 2
|
||||
clear_screen();
|
||||
escape = 0;
|
||||
break;
|
||||
|
||||
case '0' ... '9':
|
||||
escape_parameter_1 *= 10;
|
||||
escape_parameter_1 += (data - 48);
|
||||
break;
|
||||
|
||||
case ';':
|
||||
escape_parameter_2 = escape_parameter_1;
|
||||
escape_parameter_1 = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
escape = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (data) {
|
||||
case '\n':
|
||||
y++;
|
||||
if (y >= 45) {
|
||||
y--;
|
||||
scroll = (scroll + 1) % 45;
|
||||
XIOModule_DiscreteWrite(&gpo, 4, scroll);
|
||||
clear_eol();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
x = 0;
|
||||
break;
|
||||
|
||||
case 0x08:
|
||||
previous();
|
||||
break;
|
||||
|
||||
case 0x1B:
|
||||
escape = 1;
|
||||
escape_parameter_1 = 0;
|
||||
escape_parameter_2 = 0;
|
||||
// Handle escape code
|
||||
break;
|
||||
|
||||
default:
|
||||
write(data - 32);
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
XIOModule_Initialize(&gpo, XPAR_IOMODULE_0_DEVICE_ID); // Initialize the GPO module
|
||||
|
||||
microblaze_register_handler(XIOModule_DeviceInterruptHandler,
|
||||
XPAR_IOMODULE_0_DEVICE_ID); // register the interrupt handler
|
||||
|
||||
XIOModule_Start(&gpo); // start the GPO module
|
||||
|
||||
XIOModule_Connect(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR, clock,
|
||||
NULL); // register timerTick() as our interrupt handler
|
||||
XIOModule_Enable(&gpo, XIN_IOMODULE_GPI_2_INTERRUPT_INTR); // enable the interrupt
|
||||
|
||||
microblaze_enable_interrupts(); // enable global interrupts
|
||||
|
||||
// Clear the screen
|
||||
clear_screen();
|
||||
|
||||
while (1) {
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
|
Binary file not shown.
Binary file not shown.
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=true
|
|
@ -1,3 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
indexer/preferenceScope=0
|
||||
language.settings.providers.disabled=true
|
|
@ -1,3 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
indexer/preferenceScope=0
|
||||
language.settings.providers.disabled=true
|
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.debug.core.cDebug.default_source_containers=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<sourceLookupDirector>\n<sourceContainers duplicates\="false">\n<container memento\="AbsolutePath" typeId\="org.eclipse.cdt.debug.core.containerType.absolutePath"/>\n<container memento\="programRelativePath" typeId\="org.eclipse.cdt.debug.core.containerType.programRelativePath"/>\n<container memento\="<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>&\#10;<project referencedProjects\="true"/>&\#10;" typeId\="org.eclipse.cdt.debug.core.containerType.project"/>\n</sourceContainers>\n</sourceLookupDirector>\n
|
|
@ -1,5 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
properties/LED_Controller.xilinx.gnu.mb.exe.1814969487/xilinx.gnu.mb.exe.debug.32422249=\#\n\#Fri Sep 18 21\:44\:22 CEST 2020\nxilinx.gnu.mb.c.toolchain.linker.debug.963016491\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.453942197\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.32422249.1916704164\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.444111638\=\\\#\\n\\\#Thu Sep 17 17\\\:39\\\:25 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.32422249\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrcState\\\=0\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.1526133289\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.size.debug.1827824083\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.835513525\=\\\#\\n\\\#Thu Sep 17 17\\\:39\\\:25 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.toolchain.archiver.967447973\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.elfcheck.mb.debug.497589591\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.32422249.1321561043\=\\\#\\n\\\#Thu Sep 17 17\\\:39\\\:25 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.cxx.toolchain.linker.debug.2014002494\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.toolchain.1375698673\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.assembler.debug.503356807\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.cxx.toolchain.compiler.debug.2077065818\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.704915466\=\\\#\\n\\\#Fri Sep 18 21\\\:44\\\:22 CEST 2020\\nrebuildState\\\=true\\n\n
|
||||
properties/LED_Controller.xilinx.gnu.mb.exe.1814969487/xilinx.gnu.mb.exe.release.1608365019=\#\n\#Fri Sep 18 21\:59\:16 CEST 2020\norg.eclipse.cdt.managedbuilder.ui.rcbs.964590779\=\\\#\\n\\\#Thu Sep 17 17\\\:41\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138.1568151430\=\\\#\\n\\\#Thu Sep 17 17\\\:41\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138.1347973672\=\\\#\\n\\\#Thu Sep 17 17\\\:41\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.cxx.toolchain.linker.release.219817069\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.elfcheck.mb.release.2093836222\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.585520295\=\\\#\\n\\\#Thu Sep 17 17\\\:39\\\:56 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138.188090075\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.cxx.toolchain.compiler.release.623808407\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.1608365019\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrcState\\\=0\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138.1472073695\=\\\#\\n\\\#Thu Sep 17 17\\\:39\\\:56 CEST 2020\\nrebuildState\\\=true\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.303281880\=\\\#\\n\\\#Thu Sep 17 17\\\:41\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.toolchain.archiver.728941664\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.size.release.805765542\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.1608365019.2101405724\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.toolchain.449620394\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.941823551\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.linker.release.948464890\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.1608365019.1177911836\=\\\#\\n\\\#Thu Sep 17 17\\\:41\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.assembler.release.1529446162\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138\=\\\#\\n\\\#Fri Sep 18 21\\\:59\\\:16 CEST 2020\\nrebuildState\\\=false\\n\n
|
||||
properties/LED_Controller.xilinx.gnu.mb.exe.1958147925/xilinx.gnu.mb.exe.debug.1340360104=\#\n\#Sun Sep 13 01\:13\:41 CEST 2020\nxilinx.gnu.mb.cxx.toolchain.compiler.debug.1718510779\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.elfcheck.mb.debug.1120413088\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.toolchain.archiver.1415277683\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.284561060\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.1340360104\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:28 CEST 2020\\nrcState\\\=0\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.cxx.toolchain.linker.debug.819611121\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.size.debug.2065098265\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.assembler.debug.1411310899\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.toolchain.2009906249\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.linker.debug.1517138700\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:41 CEST 2020\\nrebuildState\\\=false\\n\n
|
||||
properties/LED_Controller.xilinx.gnu.mb.exe.1958147925/xilinx.gnu.mb.exe.release.183079614=\#\n\#Sun Sep 13 01\:13\:33 CEST 2020\nxilinx.gnu.mb.c.toolchain.assembler.release.39538095\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.elfcheck.mb.release.1610739964\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.cxx.toolchain.compiler.release.1977882343\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.toolchain.archiver.340405373\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.size.release.414266922\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.exe.release.183079614\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.exe.release.toolchain.659377477\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.cxx.toolchain.linker.release.1164015715\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.910828759\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.linker.release.105016765\=\\\#\\n\\\#Sun Sep 13 01\\\:13\\\:33 CEST 2020\\nrebuildState\\\=true\\n\n
|
|
@ -1,4 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
spelling_locale_initialized=true
|
||||
useAnnotationsPrefPage=true
|
||||
useQuickDiffPrefPage=true
|
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
version=1
|
|
@ -1,5 +0,0 @@
|
|||
//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug;org.eclipse.cdt.cdi.launch.localCLaunch,run
|
||||
//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug
|
||||
//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug
|
||||
//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.remoteApplicationLaunchType=org.eclipse.rse.remotecdt.dsf.debug,debug
|
||||
eclipse.preferences.version=1
|
|
@ -1,3 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<launchPerspectives/>\n
|
||||
preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget|
|
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none
|
|
@ -1,2 +0,0 @@
|
|||
browsers=<?xml version\="1.0" encoding\="UTF-8"?>\n<web-browsers current\="0">\n<system/>\n</web-browsers>
|
||||
eclipse.preferences.version=1
|
|
@ -1,2 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
overviewRuler_migration=migrated_3.1
|
|
@ -1,6 +0,0 @@
|
|||
PROBLEMS_FILTERS_MIGRATE=true
|
||||
TASKS_FILTERS_MIGRATE=true
|
||||
eclipse.preferences.version=1
|
||||
platformState=1599945748943
|
||||
quickStart=false
|
||||
tipsAndTricks=true
|
|
@ -1,3 +0,0 @@
|
|||
CURRENT_THEME_ID=org.eclipse.ui.ide.systemDefault
|
||||
eclipse.preferences.version=1
|
||||
showIntro=false
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<session version="1.0">
|
||||
<refactoring comment="Delete 2 resources" deleteContents="true" description="Delete 2 resources" element1="/LED_Controller" element2="/LED_Controller_bsp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="2" stamp="1599952443965"/>
|
||||
</session>
|
|
@ -1 +0,0 @@
|
|||
1599952443965 Delete 2 resources
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="RefactoringWizard.preview">
|
||||
<item value="400" key="height"/>
|
||||
<item value="600" key="width"/>
|
||||
</section>
|
||||
</section>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="org.eclipse.cdt.ui.pdomSearchViewPage">
|
||||
<item value="true" key="showEnclosingDefinitions"/>
|
||||
</section>
|
||||
</section>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="quick_assist_proposal_size">
|
||||
</section>
|
||||
</section>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="NewWizardAction">
|
||||
</section>
|
||||
</section>
|
|
@ -1,30 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="org.eclipse.ui.texteditor.FindReplaceDialog_dialogBounds">
|
||||
<item value="320" key="DIALOG_WIDTH"/>
|
||||
<item value="389" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value="1120" key="DIALOG_X_ORIGIN"/>
|
||||
<item value="478" key="DIALOG_HEIGHT"/>
|
||||
<item value="1|Segoe UI|10.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
|
||||
</section>
|
||||
<section name="org.eclipse.ui.texteditor.FindReplaceDialog">
|
||||
<item value="true" key="wrap"/>
|
||||
<item value="false" key="casesensitive"/>
|
||||
<item value="false" key="isRegEx"/>
|
||||
<item value="false" key="incremental"/>
|
||||
<item value="false" key="wholeword"/>
|
||||
<item value="&gpo, 1" key="selection"/>
|
||||
<list key="findhistory">
|
||||
<item value="&gpo, 1"/>
|
||||
<item value="gpo, 2"/>
|
||||
<item value="scroll++;"/>
|
||||
<item value="scroll++"/>
|
||||
<item value="addr"/>
|
||||
<item value="write()"/>
|
||||
<item value="scroll"/>
|
||||
<item value=""/>
|
||||
</list>
|
||||
<list key="replacehistory">
|
||||
</list>
|
||||
</section>
|
||||
</section>
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="WorkbenchPreferenceDialogSettings">
|
||||
<item value="27" key="DIALOG_Y_ORIGIN"/>
|
||||
<item value="616" key="DIALOG_X_ORIGIN"/>
|
||||
</section>
|
||||
<section name="NewWizardAction">
|
||||
<item value="com.xilinx.sdk.appwiz.AppWizard" key="NewWizardSelectionPage.STORE_SELECTED_ID"/>
|
||||
<list key="NewWizardSelectionPage.STORE_EXPANDED_CATEGORIES_ID">
|
||||
<item value="com.xilinx.sdk.ui.category.newWizards"/>
|
||||
</list>
|
||||
</section>
|
||||
<section name="org.eclipse.ui.preferences.keysPreferencePage">
|
||||
<item value="true" key="uncategorizedFilter"/>
|
||||
<item value="true" key="internalFilter"/>
|
||||
<item value="true" key="actionSetFilter"/>
|
||||
</section>
|
||||
</section>
|
|
@ -1,430 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workbench progressCount="21" version="2.0">
|
||||
<workbenchAdvisor/>
|
||||
<window height="623" maximized="true" width="994" x="1886" y="-264">
|
||||
<fastViewData fastViewLocation="1024"/>
|
||||
<intro standby="true"/>
|
||||
<perspectiveBar>
|
||||
<itemSize x="160"/>
|
||||
</perspectiveBar>
|
||||
<coolbarLayout>
|
||||
<coolItem id="group.file" itemType="typeGroupMarker"/>
|
||||
<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="337" y="38"/>
|
||||
<coolItem id="additions" itemType="typeGroupMarker"/>
|
||||
<coolItem id="org.eclipse.cdt.ui.CElementCreationActionSet" itemType="typeToolBarContribution" x="254" y="38"/>
|
||||
<coolItem id="org.eclipse.debug.ui.launch.toolbar" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||
<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="194" y="38"/>
|
||||
<coolItem id="org.eclipse.debug.ui.main.toolbar" itemType="typeToolBarContribution" x="48" y="38"/>
|
||||
<coolItem id="com.xilinx.sdk.xbash.toolbar1" itemType="typeToolBarContribution" x="48" y="38"/>
|
||||
<coolItem id="com.xilinx.sdk.targetmanager.ui.toolbar1" itemType="typeToolBarContribution" x="82" y="38"/>
|
||||
<coolItem id="com.xilinx.sdk.sw.toolbar1" itemType="typeToolBarContribution" x="48" y="38"/>
|
||||
<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="108" y="38"/>
|
||||
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="116" y="38"/>
|
||||
<coolItem id="group.nav" itemType="typeGroupMarker"/>
|
||||
<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="288" y="38"/>
|
||||
<coolItem id="group.editor" itemType="typeGroupMarker"/>
|
||||
<coolItem id="org.eclipse.ui.DefaultTextEditor" itemType="typePlaceholder" x="-1" y="-1"/>
|
||||
<coolItem id="org.eclipse.cdt.make.editor" itemType="typePlaceholder" x="-1" y="-1"/>
|
||||
<coolItem id="org.eclipse.cdt.ui.editor.CEditor" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||
<coolItem id="group.help" itemType="typeGroupMarker"/>
|
||||
<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||
</coolbarLayout>
|
||||
<page aggregateWorkingSetId="Aggregate for window 1599951484106" focus="true" label="Workspace - C/C++">
|
||||
<editors>
|
||||
<editorArea activeWorkbook="DefaultEditorWorkbook">
|
||||
<info part="DefaultEditorWorkbook">
|
||||
<folder appearance="1" expanded="2">
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
</editorArea>
|
||||
<editor activePart="true" focus="true" id="org.eclipse.cdt.ui.editor.CEditor" name="LEDBlinker.c" partName="LEDBlinker.c" path="/home/tim/Projects/fpga/micro_test/software/LED_Controller/src/LEDBlinker.c" title="LEDBlinker.c" tooltip="LED_Controller/src/LEDBlinker.c" workbook="DefaultEditorWorkbook">
|
||||
<input factoryID="org.eclipse.ui.part.FileEditorInputFactory" path="/LED_Controller/src/LEDBlinker.c"/>
|
||||
<editorState selectionHorizontalPixel="0" selectionLength="0" selectionOffset="1270" selectionTopPixel="781"/>
|
||||
</editor>
|
||||
</editors>
|
||||
<views>
|
||||
<view id="org.eclipse.ui.navigator.ProjectExplorer" partName="Project Explorer">
|
||||
<viewState CommonNavigator.LINKING_ENABLED="0" org.eclipse.cdt.ui.cview.groupincludes="false" org.eclipse.cdt.ui.cview.groupmacros="false" org.eclipse.cdt.ui.editor.CUChildren="true" org.eclipse.ui.navigator.resources.workingSets.showTopLevelWorkingSets="0"/>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.views.PropertySheet" partName="Properties">
|
||||
<viewState/>
|
||||
</view>
|
||||
<view id="org.eclipse.search.ui.views.SearchView" partName="Search">
|
||||
<viewState isPinned="false">
|
||||
<view IMemento.internal.id="" org.eclipse.search.lastActivation="0"/>
|
||||
</viewState>
|
||||
</view>
|
||||
<view id="org.eclipse.cdt.make.ui.views.MakeView" partName="Make Target"/>
|
||||
<view id="org.eclipse.tm.terminal.view.TerminalView" partName="Terminal"/>
|
||||
<view id="org.eclipse.ui.views.ProblemView" partName="Problems">
|
||||
<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.severityAndDescriptionField" categoryGroup="org.eclipse.ui.ide.severity" markerContentGenerator="org.eclipse.ui.ide.problemsGenerator" partName="Problems">
|
||||
<expanded>
|
||||
<category IMemento.internal.id="Errors"/>
|
||||
</expanded>
|
||||
<columnWidths org.eclipse.ui.ide.locationField="90" org.eclipse.ui.ide.markerType="1497" org.eclipse.ui.ide.pathField="120" org.eclipse.ui.ide.resourceField="90" org.eclipse.ui.ide.severityAndDescriptionField="300"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.severityAndDescriptionField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
|
||||
</viewState>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.console.ConsoleView" partName="Console">
|
||||
<viewState/>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.internal.introview" partName="Welcome">
|
||||
<viewState>
|
||||
<presentation currentPage="root" restore="true"/>
|
||||
<standbyPart/>
|
||||
</viewState>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.views.TaskList" partName="Tasks">
|
||||
<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.completionField" categoryGroup="none" markerContentGenerator="org.eclipse.ui.ide.tasksGenerator" partName="Tasks">
|
||||
<columnWidths org.eclipse.ui.ide.completionField="40" org.eclipse.ui.ide.descriptionField="300" org.eclipse.ui.ide.locationField="90" org.eclipse.ui.ide.markerType="1427" org.eclipse.ui.ide.pathField="120" org.eclipse.ui.ide.priorityField="30" org.eclipse.ui.ide.resourceField="90"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.completionField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.priorityField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.descriptionField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
|
||||
<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
|
||||
</viewState>
|
||||
</view>
|
||||
<view id="org.eclipse.ui.views.ContentOutline" partName="Outline">
|
||||
<viewState/>
|
||||
</view>
|
||||
</views>
|
||||
<perspectives activePart="org.eclipse.cdt.ui.editor.CEditor" activePerspective="org.eclipse.cdt.ui.CPerspective">
|
||||
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
|
||||
<descriptor class="org.eclipse.cdt.internal.ui.CPerspectiveFactory" id="org.eclipse.cdt.ui.CPerspective" label="C/C++"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.rse.core.search.searchActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.SearchActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.CElementCreationActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.make.ui.makeTargetActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.buildConfigActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.NavigationActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.OpenActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.cdt.ui.CodingActionSet"/>
|
||||
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.presentation"/>
|
||||
<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
|
||||
<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
|
||||
<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
|
||||
<show_view_action id="org.eclipse.ui.views.ProblemView"/>
|
||||
<show_view_action id="org.eclipse.cdt.ui.CView"/>
|
||||
<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
|
||||
<show_view_action id="org.eclipse.ui.views.PropertySheet"/>
|
||||
<show_view_action id="org.eclipse.ui.views.TaskList"/>
|
||||
<show_view_action id="org.eclipse.tm.terminal.view.TerminalView"/>
|
||||
<show_view_action id="org.eclipse.cdt.codan.internal.ui.views.ProblemDetails"/>
|
||||
<show_view_action id="org.eclipse.cdt.make.ui.views.MakeView"/>
|
||||
<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||
<show_view_action id="org.eclipse.cdt.ui.includeBrowser"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFolderCreationWizard"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFileCreationWizard"/>
|
||||
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewClassCreationWizard"/>
|
||||
<new_wizard_action id="com.xilinx.sdk.appwiz.AppWizard"/>
|
||||
<new_wizard_action id="com.xilinx.sdk.sw.ui.NewBspWizard"/>
|
||||
<perspective_action id="org.eclipse.debug.ui.DebugPerspective"/>
|
||||
<perspective_action id="org.eclipse.team.ui.TeamSynchronizingPerspective"/>
|
||||
<hide_toolbar_item_id id="org.eclipse.debug.ui.commands.RunToLine"/>
|
||||
<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
|
||||
<view id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||
<view id="org.eclipse.ui.views.ProblemView"/>
|
||||
<view id="org.eclipse.ui.views.TaskList"/>
|
||||
<view id="org.eclipse.ui.console.ConsoleView"/>
|
||||
<view id="org.eclipse.ui.views.PropertySheet"/>
|
||||
<view id="org.eclipse.tm.terminal.view.TerminalView"/>
|
||||
<view id="org.eclipse.ui.views.ContentOutline"/>
|
||||
<view id="org.eclipse.cdt.make.ui.views.MakeView"/>
|
||||
<view id="org.eclipse.search.ui.views.SearchView"/>
|
||||
<view id="org.eclipse.ui.internal.introview"/>
|
||||
<fastViewBars/>
|
||||
<layout>
|
||||
<mainWindow>
|
||||
<info folder="true" part="topLeft">
|
||||
<folder activePageID="org.eclipse.ui.navigator.ProjectExplorer" appearance="2" expanded="2">
|
||||
<page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/>
|
||||
<page content="org.eclipse.cdt.ui.CView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
<info folder="true" part="org.eclipse.ui.internal.ViewStack@36d8a923" ratio="0.7495049" ratioLeft="757" ratioRight="253" relationship="2" relative="topLeft">
|
||||
<folder activePageID="org.eclipse.ui.internal.introview" appearance="2" expanded="2">
|
||||
<page content="org.eclipse.search.ui.views.SearchView" label="Search"/>
|
||||
<page content="org.eclipse.ui.internal.introview" label="Welcome"/>
|
||||
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
|
||||
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
<part id="1"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
<info part="org.eclipse.ui.editorss" ratio="0.11494253" ratioLeft="190" ratioRight="1463" relationship="2" relative="topLeft"/>
|
||||
<info folder="true" part="bottom" ratio="0.74186045" ratioLeft="957" ratioRight="333" relationship="4" relative="org.eclipse.ui.editorss">
|
||||
<folder activePageID="org.eclipse.ui.console.ConsoleView" appearance="2" expanded="2">
|
||||
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
|
||||
<page content="org.eclipse.ui.views.TaskList" label="Tasks"/>
|
||||
<page content="org.eclipse.ui.console.ConsoleView" label="Console"/>
|
||||
<page content="org.eclipse.ui.views.PropertySheet" label="Properties"/>
|
||||
<page content="org.eclipse.tm.terminal.view.TerminalView" label="Terminal"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
<part id="1"/>
|
||||
<part id="2"/>
|
||||
<part id="3"/>
|
||||
<part id="4"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
<info folder="true" part="topRight" ratio="0.74934036" ratioLeft="568" ratioRight="190" relationship="2" relative="org.eclipse.ui.editorss">
|
||||
<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
|
||||
<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
|
||||
<page content="org.eclipse.cdt.make.ui.views.MakeView" label="Make Target"/>
|
||||
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||
<part id="0"/>
|
||||
<part id="1"/>
|
||||
</presentation>
|
||||
</folder>
|
||||
</info>
|
||||
</mainWindow>
|
||||
</layout>
|
||||
</perspective>
|
||||
</perspectives>
|
||||
<workingSets/>
|
||||
<navigationHistory>
|
||||
<editors>
|
||||
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" path="/LED_Controller/src/LEDBlinker.c"/>
|
||||
</editors>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="936" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1278" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1350" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="469" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1320" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1421" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1743" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1540" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1575" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2697" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2782" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="233" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2455" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2719" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2811" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="3003" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="843" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1143" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="1504" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="122" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="346" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="246" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2447" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2501" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="382" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="817" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="717" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="328" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="552" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="3128" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="3176" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2971" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="2996" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="774" y="0"/>
|
||||
</item>
|
||||
<item historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="794" y="0"/>
|
||||
</item>
|
||||
<item active="true" historyLabel="LEDBlinker.c" index="0">
|
||||
<position info="not_deleted" x="345" y="0"/>
|
||||
</item>
|
||||
</navigationHistory>
|
||||
<input factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/" type="8"/>
|
||||
</page>
|
||||
<workbenchWindowAdvisor/>
|
||||
<actionBarAdvisor/>
|
||||
<trimLayout>
|
||||
<trimArea IMemento.internal.id="128">
|
||||
<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
|
||||
</trimArea>
|
||||
<trimArea IMemento.internal.id="1024">
|
||||
<trimItem IMemento.internal.id="org.eclise.ui.internal.FastViewBar"/>
|
||||
<trimItem IMemento.internal.id="org.eclipse.jface.action.StatusLineManager"/>
|
||||
<trimItem IMemento.internal.id="org.eclipse.ui.internal.progress.ProgressRegion"/>
|
||||
</trimArea>
|
||||
</trimLayout>
|
||||
</window>
|
||||
<mruList>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xbasic_types.h" tooltip="LED_Controller_bsp/microblaze_mcs/include/xbasic_types.h">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/include/xbasic_types.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xiomodule.h" tooltip="LED_Controller_bsp/microblaze_mcs/include/xiomodule.h">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/include/xiomodule.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xparameters.h" tooltip="LED_Controller_bsp/microblaze_mcs/include/xparameters.h">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/include/xparameters.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xiomodule_l.c" tooltip="LED_Controller_bsp/microblaze_mcs/libsrc/iomodule_v1_04_a/src/xiomodule_l.c">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/libsrc/iomodule_v1_04_a/src/xiomodule_l.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xiomodule_l.h" tooltip="LED_Controller_bsp/microblaze_mcs/include/xiomodule_l.h">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/include/xiomodule_l.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.xilinx.sdk.sw.MSSEditor" name="system.mss" tooltip="LED_Controller_bsp/system.mss">
|
||||
<persistable path="/LED_Controller_bsp/system.mss"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xiomodule.c" tooltip="LED_Controller_bsp/microblaze_mcs/libsrc/iomodule_v1_04_a/src/xiomodule.c">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/libsrc/iomodule_v1_04_a/src/xiomodule.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="LEDBlinker.c" tooltip="LED_Controller/src/LEDBlinker.c">
|
||||
<persistable path="/LED_Controller/src/LEDBlinker.c"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.ui.editor.CEditor" name="xbram.h" tooltip="LED_Controller_bsp/microblaze_mcs/libsrc/bram_v3_03_a/src/xbram.h">
|
||||
<persistable path="/LED_Controller_bsp/microblaze_mcs/libsrc/bram_v3_03_a/src/xbram.h"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.xilinx.sdk.lscript.editor" name="lscript.ld" tooltip="LED_Controller/src/lscript.ld">
|
||||
<persistable path="/LED_Controller/src/lscript.ld"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.ui.DefaultTextEditor" name="README.txt" tooltip="LED_Controller/src/README.txt">
|
||||
<persistable path="/LED_Controller/src/README.txt"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.make.editor" name="makefile" tooltip="LED_Controller/Debug/makefile">
|
||||
<persistable path="/LED_Controller/Debug/makefile"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.cdt.make.editor" name="objects.mk" tooltip="LED_Controller/Debug/objects.mk">
|
||||
<persistable path="/LED_Controller/Debug/objects.mk"/>
|
||||
</file>
|
||||
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.xilinx.sdk.hw.ui.HwSpecXMLEditor" name="system.xml" tooltip="micro_test/system.xml">
|
||||
<persistable path="/micro_test/system.xml"/>
|
||||
</file>
|
||||
</mruList>
|
||||
</workbench>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<workingSetManager>
|
||||
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1599951484107_0" label="Window Working Set" name="Aggregate for window 1599951484106"/>
|
||||
</workingSetManager>
|
|
@ -1 +0,0 @@
|
|||
org.eclipse.core.runtime=1
|
|
@ -1,239 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?>
|
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="xilinx.gnu.mb.exe.debug.32422249">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.32422249" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.debug.32422249" name="Debug" parent="xilinx.gnu.mb.exe.debug">
|
||||
<folderInfo id="xilinx.gnu.mb.exe.debug.32422249." name="/" resourcePath="">
|
||||
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.1375698673" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.635252805" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
|
||||
<builder buildPath="${workspace_loc:/LED_Controller}/Debug" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.1343314410" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.503356807" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
|
||||
<option id="xilinx.gnu.mb.assembler.usele.1562834598" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||
<inputType id="xilinx.gnu.assembler.input.1469822917" superClass="xilinx.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1835142212" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1356500802" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.914884122" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.52376722" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.1896975486" name="Enable garbage collector (-ffunction-sections -fdata-sections)" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usereorderinstr.875088264" name="Do not generate swap instruction (-mno-xl-reorder)" superClass="xilinx.gnu.mb.compiler.inferred.usereorderinstr" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1837548138" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1172561642" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/include"/>
|
||||
</option>
|
||||
<inputType id="xilinx.gnu.compiler.input.123140396" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.2077065818" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.908233026" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.280737520" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1212260747" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.1640436207" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.2061687527" name="Enable garbage collector (-ffunction-sections -fdata-sections)" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usereorderinstr.389025365" name="Do not generate swap instruction (-mno-xl-reorder)" superClass="xilinx.gnu.mb.compiler.inferred.usereorderinstr" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1948932767" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.595986724" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/include"/>
|
||||
</option>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.toolchain.archiver.967447973" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.963016491" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1652636264" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.291715080" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.1810357269" name="Enable garbage collector (-Wl,--gc-sections)" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.910553568" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1385167435" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.791742306" name="Software Platform Inferred Flags" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.858564754" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.linker.input.854736909" superClass="xilinx.gnu.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.1978361477" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.2014002494" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.33804120" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.1847387590" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.290786884" name="Enable garbage collector (-Wl,--gc-sections)" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.1146495724" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.890324418" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.98455404" name="Software Platform Inferred Flags" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.1672752145" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.size.debug.1827824083" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
|
||||
<tool id="xilinx.elfcheck.mb.debug.497589591" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.debug">
|
||||
<option id="xilinx.elfcheck.option.hwspec.1225865245" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../micro_test/system.xml" valueType="string"/>
|
||||
<option id="xilinx.elfcheck.option.procname.449983111" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_mcs" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<fileInfo id="xilinx.gnu.mb.exe.debug.32422249.1916704164" name="LEDBlinker.c" rcbsApplicability="disable" resourcePath="src/LEDBlinker.c" toolsToInvoke="xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.453942197">
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.453942197" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289">
|
||||
<option id="xilinx.gnu.compiler.option.optimization.level.1794496476" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" value="gnu.c.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1148078725" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<inputType id="xilinx.gnu.compiler.input.1228398252" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
</tool>
|
||||
<tool customBuildStep="true" id="org.eclipse.cdt.managedbuilder.ui.rcbs.704915466" name="Resource Custom Build Step">
|
||||
<inputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype.1136256196" name="Resource Custom Build Step Input Type">
|
||||
<additionalInput kind="additionalinputdependency" paths=""/>
|
||||
</inputType>
|
||||
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1542489465" name="Resource Custom Build Step Output Type"/>
|
||||
</tool>
|
||||
</fileInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="xilinx.gnu.mb.exe.release.1608365019">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.release.1608365019" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.release.1608365019" name="Release" parent="xilinx.gnu.mb.exe.release">
|
||||
<folderInfo id="xilinx.gnu.mb.exe.release.1608365019." name="/" resourcePath="">
|
||||
<toolChain id="xilinx.gnu.mb.exe.release.toolchain.449620394" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.release.toolchain">
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.release.1888229225" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.release"/>
|
||||
<builder buildPath="${workspace_loc:/LED_Controller}/Release" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.release.1875113617" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.mb.toolchain.builder.release"/>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.release.1529446162" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.release">
|
||||
<option id="xilinx.gnu.mb.assembler.usele.554266772" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||
<inputType id="xilinx.gnu.assembler.input.95302604" superClass="xilinx.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.release.1363891138" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.release">
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.615692965" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1141200274" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1868482011" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.820260484" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.1460990105" name="Enable garbage collector (-ffunction-sections -fdata-sections)" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usereorderinstr.455386622" name="Do not generate swap instruction (-mno-xl-reorder)" superClass="xilinx.gnu.mb.compiler.inferred.usereorderinstr" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1967045225" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.77040399" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/include"/>
|
||||
</option>
|
||||
<inputType id="xilinx.gnu.compiler.input.1952219906" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.release.623808407" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.release">
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1059716585" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1384873606" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1539951458" name="MicroBlaze Version" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.1392641229" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.1076631497" name="Enable garbage collector (-ffunction-sections -fdata-sections)" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usereorderinstr.1515351481" name="Do not generate swap instruction (-mno-xl-reorder)" superClass="xilinx.gnu.mb.compiler.inferred.usereorderinstr" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.2115074973" name="Produce little endian code (-mlittle-endian)" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1952383387" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/include"/>
|
||||
</option>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.toolchain.archiver.728941664" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.release.948464890" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.release">
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1056503606" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.992825498" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.766761108" name="Enable garbage collector (-Wl,--gc-sections)" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.2105793741" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.2092727466" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.1046055029" name="Software Platform Inferred Flags" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.490239218" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
<inputType id="xilinx.gnu.linker.input.852448180" superClass="xilinx.gnu.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.2132181401" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.release.219817069" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.release">
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.752564044" name="MicroBlaze Version" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.40.a" valueType="string"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.1453655971" name="No relaxation (-Wl,--no-relax)" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.322858624" name="Enable garbage collector (-Wl,--gc-sections)" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.450196390" name="Produce little endian artifacts (-mlittle-endian)" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.2010027756" name="Software Platform Library Path" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="../../LED_Controller_bsp/microblaze_mcs/lib"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.1404700792" name="Software Platform Inferred Flags" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
</option>
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.928875610" name="Linker Script" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
</tool>
|
||||
<tool id="xilinx.gnu.mb.size.release.805765542" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.release"/>
|
||||
<tool id="xilinx.elfcheck.mb.release.2093836222" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.release">
|
||||
<option id="xilinx.elfcheck.option.hwspec.2044494070" name="Hardware Specification" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../micro_test/system.xml" valueType="string"/>
|
||||
<option id="xilinx.elfcheck.option.procname.1521069396" name="Processor Name" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_mcs" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<fileInfo id="xilinx.gnu.mb.exe.release.1608365019.2101405724" name="LEDBlinker.c" rcbsApplicability="disable" resourcePath="src/LEDBlinker.c" toolsToInvoke="xilinx.gnu.mb.c.toolchain.compiler.release.1363891138.188090075">
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.release.1363891138.188090075" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.release.1363891138">
|
||||
<option id="xilinx.gnu.compiler.option.optimization.level.1242352644" superClass="xilinx.gnu.compiler.option.optimization.level" value="gnu.c.optimization.level.most" valueType="enumerated"/>
|
||||
<inputType id="xilinx.gnu.compiler.input.1323965893" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
</tool>
|
||||
<tool customBuildStep="true" id="org.eclipse.cdt.managedbuilder.ui.rcbs.941823551" name="Resource Custom Build Step">
|
||||
<inputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype.1009935834" name="Resource Custom Build Step Input Type">
|
||||
<additionalInput kind="additionalinputdependency" paths=""/>
|
||||
</inputType>
|
||||
<outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1085365006" name="Resource Custom Build Step Output Type"/>
|
||||
</tool>
|
||||
</fileInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="LED_Controller.xilinx.gnu.mb.exe.1814969487" name="Xilinx MicroBlaze Executable" projectType="xilinx.gnu.mb.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1608365019;xilinx.gnu.mb.exe.release.1608365019.;xilinx.gnu.mb.c.toolchain.compiler.release.1363891138;xilinx.gnu.compiler.input.1952219906">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1608365019;xilinx.gnu.mb.exe.release.1608365019.">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.32422249;xilinx.gnu.mb.exe.debug.32422249.">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.32422249;xilinx.gnu.mb.exe.debug.32422249.;xilinx.gnu.mb.c.toolchain.compiler.debug.1526133289;xilinx.gnu.compiler.input.123140396">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||
<configuration configurationName="Release">
|
||||
<resource resourceType="PROJECT" workspacePath="/LED_Controller"/>
|
||||
</configuration>
|
||||
<configuration configurationName="Debug">
|
||||
<resource resourceType="PROJECT" workspacePath="/LED_Controller"/>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
</cproject>
|
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>LED_Controller</name>
|
||||
<comment>LED_Controller_bsp - microblaze_mcs</comment>
|
||||
<projects>
|
||||
<project>LED_Controller_bsp</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
Binary file not shown.
|
@ -1,65 +0,0 @@
|
|||
################################################################################
|
||||
# Automatically-generated file. Do not edit!
|
||||
################################################################################
|
||||
|
||||
-include ../makefile.init
|
||||
|
||||
RM := rm -rf
|
||||
|
||||
# All of the sources participating in the build are defined here
|
||||
-include sources.mk
|
||||
-include src/subdir.mk
|
||||
-include subdir.mk
|
||||
-include objects.mk
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(strip $(C_DEPS)),)
|
||||
-include $(C_DEPS)
|
||||
endif
|
||||
ifneq ($(strip $(S_UPPER_DEPS)),)
|
||||
-include $(S_UPPER_DEPS)
|
||||
endif
|
||||
endif
|
||||
|
||||
-include ../makefile.defs
|
||||
|
||||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
ELFSIZE += \
|
||||
|
||||
ELFCHECK += \
|
||||
|
||||
|
||||
# All Target
|
||||
all: LED_Controller.elf secondary-outputs
|
||||
|
||||
# Tool invocations
|
||||
LED_Controller.elf: $(OBJS) ../src/lscript.ld $(USER_OBJS)
|
||||
@echo 'Building target: $@'
|
||||
@echo 'Invoking: MicroBlaze gcc linker'
|
||||
mb-gcc -Wl,-T -Wl,../src/lscript.ld -L../../LED_Controller_bsp/microblaze_mcs/lib -mlittle-endian -mcpu=v8.40.a -mxl-soft-mul -Wl,--no-relax -Wl,--gc-sections -o "LED_Controller.elf" $(OBJS) $(USER_OBJS) $(LIBS)
|
||||
@echo 'Finished building target: $@'
|
||||
@echo ' '
|
||||
|
||||
LED_Controller.elf.size: LED_Controller.elf
|
||||
@echo 'Invoking: MicroBlaze Print Size'
|
||||
mb-size LED_Controller.elf |tee "LED_Controller.elf.size"
|
||||
@echo 'Finished building: $@'
|
||||
@echo ' '
|
||||
|
||||
LED_Controller.elf.elfcheck: LED_Controller.elf
|
||||
@echo 'Invoking: Xilinx ELF Check'
|
||||
elfcheck LED_Controller.elf -hw ../../micro_test/system.xml -pe microblaze_mcs |tee "LED_Controller.elf.elfcheck"
|
||||
@echo 'Finished building: $@'
|
||||
@echo ' '
|
||||
|
||||
# Other Targets
|
||||
clean:
|
||||
-$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES)$(ELFSIZE)$(ELFCHECK)$(S_UPPER_DEPS) LED_Controller.elf
|
||||
-@echo ' '
|
||||
|
||||
secondary-outputs: $(ELFSIZE) $(ELFCHECK)
|
||||
|
||||
.PHONY: all clean dependents
|
||||
.SECONDARY:
|
||||
|
||||
-include ../makefile.targets
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user