Fixed build issues and added upload to vimlocal

This commit is contained in:
Dreaded_X 2020-09-21 20:52:58 +02:00
parent 637dfa2c07
commit 2c32ab39e7
123 changed files with 14049 additions and 34 deletions

View File

@ -1 +1,2 @@
map <silent> <F9> :Make<cr>
map <silent> <F10> :Dispatch upload --mojo syn/main.bin<cr>

View File

@ -5,7 +5,7 @@ syn/main.bin: syn/main.ncd mb/Graphics/Release/Graphics.elf
syn/main.ncd: syn/main.prj syn/main.xst src/*.v ipcore_dir/*.v syn/xst/projnav.tmp/
@cd syn && xst -intstyle ise -ifn "main.xst" -ofn "main.syr"
@cd syn && ngdbuild -intstyle ise -dd _ngo -sd ../ipcore_dir -nt timestamp -i -p xc6slx9-tqg144-2 main.ngc main.ngd -bm "../ipcore_dir/microblaze_mcs.bmm"
@cd syn && ngdbuild -intstyle ise -dd _ngo -sd ../ipcore_dir -nt timestamp -uc /home/tim/Projects/z80/hdmi/src/constraints.ucf -p xc6slx9-tqg144-2 main.ngc main.ngd -bm "../ipcore_dir/microblaze_mcs.bmm"
@cd syn && map -intstyle ise -p xc6slx9-tqg144-2 -w -logic_opt off -ol high -t 1 -xt 0 -register_duplication off -r 4 -global_opt off -mt off -ir off -pr off -lc off -power off -o main_map.ncd main.ngd main.pcf
@cd syn && par -w -intstyle ise -ol high -mt off main_map.ncd main.ncd main.pcf
@cd syn && trce -intstyle ise -v 3 -s 2 -n 3 -fastpaths -xml main.twx main.ncd -o main.twr main.pcf

View File

@ -91,7 +91,7 @@
<property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Constrain" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Implementation Top" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Implementation Top" xil_pn:value="false" xil_pn:valueState="non-default"/>
<property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/>
@ -297,7 +297,7 @@
<property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Area" xil_pn:valueState="default"/>
<property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Bitgen Command Line Options spartan6" xil_pn:value="-bd &quot;/home/tim/Projects/z80/hdmi-mb/Graphics/Release/Graphics.elf&quot; tag microblaze_mcs" xil_pn:valueState="non-default"/>
<property xil_pn:name="Other Bitgen Command Line Options spartan6" xil_pn:value="-bd &quot;/home/tim/Projects/z80/hdmi/mb/Graphics/Release/Graphics.elf&quot; tag microblaze_mcs" xil_pn:valueState="non-default"/>
<property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Fit" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/>
@ -406,7 +406,7 @@
<property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/>
<property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Module Instance Name" xil_pn:value="/mojo_top/spi" xil_pn:valueState="non-default"/>
<property xil_pn:name="Selected Module Instance Name" xil_pn:value="/main/spi" xil_pn:valueState="non-default"/>
<property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="work.spi" xil_pn:valueState="non-default"/>
<property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
@ -534,7 +534,7 @@
</properties>
<bindings>
<binding xil_pn:location="/mojo_top" xil_pn:name="src/constraints.ucf"/>
<binding xil_pn:location="/main" xil_pn:name="src/constraints.ucf"/>
</bindings>
<libraries/>

View File

@ -0,0 +1,37 @@
##
## Core Generator Run Script, generator for Project Navigator regen command
##
proc findRtfPath { relativePath } {
set xilenv ""
if { [info exists ::env(XILINX) ] } {
if { [info exists ::env(MYXILINX)] } {
set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ]
} else {
set xilenv $::env(XILINX)
}
}
foreach path [ split $xilenv $::xilinx::path_sep ] {
set fullPath [ file join $path $relativePath ]
if { [ file exists $fullPath ] } {
return $fullPath
}
}
return ""
}
source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ]
set result [ run_cg_regen "hdmi_clk" xc6slx9-2tqg144 Verilog CURRENT ]
if { $result == 0 } {
puts "Core Generator regen command completed successfully."
} elseif { $result == 1 } {
puts "Core Generator regen command failed."
} elseif { $result == 3 || $result == 4 } {
# convert 'version check' result to real return range, bypassing any messages.
set result [ expr $result - 3 ]
} else {
puts "Core Generator regen cancelled."
}
exit $result

View File

@ -0,0 +1,37 @@
##
## Core Generator Run Script, generator for Project Navigator regen command
##
proc findRtfPath { relativePath } {
set xilenv ""
if { [info exists ::env(XILINX) ] } {
if { [info exists ::env(MYXILINX)] } {
set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ]
} else {
set xilenv $::env(XILINX)
}
}
foreach path [ split $xilenv $::xilinx::path_sep ] {
set fullPath [ file join $path $relativePath ]
if { [ file exists $fullPath ] } {
return $fullPath
}
}
return ""
}
source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ]
set result [ run_cg_regen "microblaze_mcs" xc6slx9-2tqg144 Verilog CURRENT ]
if { $result == 0 } {
puts "Core Generator regen command completed successfully."
} elseif { $result == 1 } {
puts "Core Generator regen command failed."
} elseif { $result == 3 || $result == 4 } {
# convert 'version check' result to real return range, bypassing any messages.
set result [ expr $result - 3 ]
} else {
puts "Core Generator regen cancelled."
}
exit $result

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<symbol version="7" name="hdmi_clk">
<symboltype>BLOCK</symboltype>
<timestamp>2020-9-17T15:18:55</timestamp>
<timestamp>2020-9-21T18:2:44</timestamp>
<pin polarity="Input" x="0" y="80" name="clk_in1" />
<pin polarity="Output" x="608" y="80" name="clk_out1" />
<pin polarity="Output" x="608" y="176" name="clk_out2" />

View File

@ -1,7 +1,7 @@
##############################################################
#
# Xilinx Core Generator version 14.7
# Date: Thu Sep 17 15:18:44 2020
# Date: Mon Sep 21 18:02:33 2020
#
##############################################################
#

View File

@ -50,8 +50,8 @@
<!-- -->
<property xil_pn:name="PROP_DesignName" xil_pn:value="hdmi_clk" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2020-09-17T17:18:57" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="9C4B53858E4C5064C7E51761156BB29A" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2020-09-21T20:02:45" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="3F469F5C71C64704824888D979DF0B8F" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
</properties>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<symbol version="7" name="microblaze_mcs">
<symboltype>BLOCK</symboltype>
<timestamp>2020-9-20T19:27:36</timestamp>
<timestamp>2020-9-21T18:2:10</timestamp>
<pin polarity="Input" x="0" y="80" name="clk" />
<pin polarity="Input" x="0" y="112" name="reset" />
<pin polarity="Output" x="768" y="656" name="gpi2_interrupt" />

View File

@ -7,7 +7,7 @@
// \ \ \/ Version: P.20131013
// \ \ Application: netgen
// / / Filename: microblaze_mcs.v
// /___/ /\ Timestamp: Sun Sep 20 21:27:36 2020
// /___/ /\ Timestamp: Mon Sep 21 20:02:10 2020
// \ \ / \
// \___\/\___\
//

View File

@ -1,7 +1,7 @@
##############################################################
#
# Xilinx Core Generator version 14.7
# Date: Sun Sep 20 19:25:41 2020
# Date: Mon Sep 21 18:00:15 2020
#
##############################################################
#

View File

@ -66,8 +66,8 @@
<!-- -->
<property xil_pn:name="PROP_DesignName" xil_pn:value="microblaze_mcs" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2020-09-20T21:27:37" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="044D6B7A37DFFF9EFD796E528492BD84" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2020-09-21T20:02:11" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="534E782F69499841CE64BF2098D784B5" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
</properties>

View File

@ -20,14 +20,14 @@ ADDRESS_MAP microblaze_mcs MICROBLAZE-LE 100
ADDRESS_SPACE lmb_bram RAMB16 [0x00000000:0x00003FFF]
BUS_BLOCK
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[0].RAMB16_S4_1 RAMB16 [31:28] [0:4095] INPUT = microblaze_mcs.lmb_bram_0.mem PLACED = X1Y18;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[1].RAMB16_S4_1 RAMB16 [27:24] [0:4095] INPUT = microblaze_mcs.lmb_bram_1.mem PLACED = X1Y24;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[2].RAMB16_S4_1 RAMB16 [23:20] [0:4095] INPUT = microblaze_mcs.lmb_bram_2.mem PLACED = X1Y8;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[3].RAMB16_S4_1 RAMB16 [19:16] [0:4095] INPUT = microblaze_mcs.lmb_bram_3.mem PLACED = X1Y28;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[4].RAMB16_S4_1 RAMB16 [15:12] [0:4095] INPUT = microblaze_mcs.lmb_bram_4.mem PLACED = X1Y20;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[5].RAMB16_S4_1 RAMB16 [11:8] [0:4095] INPUT = microblaze_mcs.lmb_bram_5.mem PLACED = X1Y26;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[6].RAMB16_S4_1 RAMB16 [7:4] [0:4095] INPUT = microblaze_mcs.lmb_bram_6.mem PLACED = X1Y16;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[7].RAMB16_S4_1 RAMB16 [3:0] [0:4095] INPUT = microblaze_mcs.lmb_bram_7.mem PLACED = X1Y22;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[0].RAMB16_S4_1 RAMB16 [31:28] [0:4095] INPUT = microblaze_mcs.lmb_bram_0.mem PLACED = X0Y26;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[1].RAMB16_S4_1 RAMB16 [27:24] [0:4095] INPUT = microblaze_mcs.lmb_bram_1.mem PLACED = X0Y20;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[2].RAMB16_S4_1 RAMB16 [23:20] [0:4095] INPUT = microblaze_mcs.lmb_bram_2.mem PLACED = X0Y24;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[3].RAMB16_S4_1 RAMB16 [19:16] [0:4095] INPUT = microblaze_mcs.lmb_bram_3.mem PLACED = X0Y18;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[4].RAMB16_S4_1 RAMB16 [15:12] [0:4095] INPUT = microblaze_mcs.lmb_bram_4.mem PLACED = X0Y30;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[5].RAMB16_S4_1 RAMB16 [11:8] [0:4095] INPUT = microblaze_mcs.lmb_bram_5.mem PLACED = X0Y22;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[6].RAMB16_S4_1 RAMB16 [7:4] [0:4095] INPUT = microblaze_mcs.lmb_bram_6.mem PLACED = X0Y28;
mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S4.The_BRAMs[7].RAMB16_S4_1 RAMB16 [3:0] [0:4095] INPUT = microblaze_mcs.lmb_bram_7.mem PLACED = X0Y16;
END_BUS_BLOCK;
END_ADDRESS_SPACE;

View File

@ -1,6 +1,6 @@
<EDKSYSTEM EDKVERSION="14.5" EDWVERSION="1.2" TIMESTAMP="Sun Sep 20 21:27:35 2020">
<EDKSYSTEM EDKVERSION="14.5" EDWVERSION="1.2" TIMESTAMP="Mon Sep 21 20:02:09 2020">
<SYSTEMINFO ARCH="spartan6" DEVICE="xc6slx9" PACKAGE="tqg144" PART="xc6slx9tqg144-2" SOURCE="" SPEEDGRADE="-2"/>

View File

@ -0,0 +1,505 @@
SET_FLAG DEBUG FALSE
SET_FLAG MODE BATCH
SET_FLAG STANDALONE_MODE FALSE
SET_PREFERENCE devicefamily spartan6
SET_PREFERENCE device xc6slx9
SET_PREFERENCE speedgrade -2
SET_PREFERENCE package tqg144
SET_PREFERENCE verilogsim true
SET_PREFERENCE vhdlsim false
SET_PREFERENCE simulationfiles Behavioral
SET_PREFERENCE busformat BusFormatAngleBracketNotRipped
SET_PREFERENCE outputdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/
SET_PREFERENCE workingdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/
SET_PREFERENCE subworkingdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/_cg/
SET_PREFERENCE transientdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/_cg/_dbg/
SET_PREFERENCE designentry Verilog
SET_PREFERENCE flowvendor Other
SET_PREFERENCE addpads false
SET_PREFERENCE projectname coregen
SET_PREFERENCE formalverification false
SET_PREFERENCE asysymbol false
SET_PREFERENCE implementationfiletype Ngc
SET_PREFERENCE foundationsym false
SET_PREFERENCE createndf false
SET_PREFERENCE removerpms false
SET_PARAMETER Component_Name hdmi_clk
SET_PARAMETER Use_Freq_Synth true
SET_PARAMETER Use_Phase_Alignment false
SET_PARAMETER Use_Min_Power false
SET_PARAMETER Use_Dyn_Phase_Shift false
SET_PARAMETER Use_Dyn_Reconfig false
SET_PARAMETER Jitter_Sel No_Jitter
SET_PARAMETER Use_Spread_Spectrum false
SET_PARAMETER Use_Spread_Spectrum_1 false
SET_PARAMETER Prim_In_Freq 50
SET_PARAMETER In_Freq_Units Units_MHz
SET_PARAMETER In_Jitter_Units Units_UI
SET_PARAMETER Relative_Inclk REL_PRIMARY
SET_PARAMETER Secondary_In_Freq 100.000
SET_PARAMETER Jitter_Options UI
SET_PARAMETER Clkin1_UI_Jitter 0.010
SET_PARAMETER Clkin2_UI_Jitter 0.010
SET_PARAMETER Prim_In_Jitter 0.010
SET_PARAMETER Secondary_In_Jitter 0.010
SET_PARAMETER Clkin1_Jitter_Ps 200.0
SET_PARAMETER Clkin2_Jitter_Ps 100.0
SET_PARAMETER Clkout2_Used true
SET_PARAMETER Clkout3_Used false
SET_PARAMETER Clkout4_Used false
SET_PARAMETER Clkout5_Used false
SET_PARAMETER Clkout6_Used false
SET_PARAMETER Clkout7_Used false
SET_PARAMETER Num_Out_Clks 2
SET_PARAMETER Clk_Out1_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out2_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out3_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out4_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out5_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out6_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out7_Use_Fine_Ps_GUI false
SET_PARAMETER primary_port CLK_IN1
SET_PARAMETER CLK_OUT1_port CLK_OUT1
SET_PARAMETER CLK_OUT2_port CLK_OUT2
SET_PARAMETER CLK_OUT3_port CLK_OUT3
SET_PARAMETER CLK_OUT4_port CLK_OUT4
SET_PARAMETER CLK_OUT5_port CLK_OUT5
SET_PARAMETER CLK_OUT6_port CLK_OUT6
SET_PARAMETER CLK_OUT7_port CLK_OUT7
SET_PARAMETER DADDR_port DADDR
SET_PARAMETER DCLK_port DCLK
SET_PARAMETER DRDY_port DRDY
SET_PARAMETER DWE_port DWE
SET_PARAMETER DIN_port DIN
SET_PARAMETER DOUT_port DOUT
SET_PARAMETER DEN_port DEN
SET_PARAMETER PSCLK_port PSCLK
SET_PARAMETER PSEN_port PSEN
SET_PARAMETER PSINCDEC_port PSINCDEC
SET_PARAMETER PSDONE_port PSDONE
SET_PARAMETER Clkout1_Requested_Out_Freq 75
SET_PARAMETER Clkout1_Requested_Phase 0.000
SET_PARAMETER Clkout1_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout2_Requested_Out_Freq 150
SET_PARAMETER Clkout2_Requested_Phase 0.000
SET_PARAMETER Clkout2_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout3_Requested_Out_Freq 100.000
SET_PARAMETER Clkout3_Requested_Phase 0.000
SET_PARAMETER Clkout3_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout4_Requested_Out_Freq 100.000
SET_PARAMETER Clkout4_Requested_Phase 0.000
SET_PARAMETER Clkout4_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout5_Requested_Out_Freq 100.000
SET_PARAMETER Clkout5_Requested_Phase 0.000
SET_PARAMETER Clkout5_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout6_Requested_Out_Freq 100.000
SET_PARAMETER Clkout6_Requested_Phase 0.000
SET_PARAMETER Clkout6_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout7_Requested_Out_Freq 100.000
SET_PARAMETER Clkout7_Requested_Phase 0.000
SET_PARAMETER Clkout7_Requested_Duty_Cycle 50.000
SET_PARAMETER Use_Max_I_Jitter false
SET_PARAMETER Use_Min_O_Jitter false
SET_PARAMETER Prim_Source Single_ended_clock_capable_pin
SET_PARAMETER Use_Inclk_Switchover false
SET_PARAMETER secondary_port CLK_IN2
SET_PARAMETER Secondary_Source Single_ended_clock_capable_pin
SET_PARAMETER Clkout1_Drives BUFG
SET_PARAMETER Clkout2_Drives BUFG
SET_PARAMETER Clkout3_Drives BUFG
SET_PARAMETER Clkout4_Drives BUFG
SET_PARAMETER Clkout5_Drives BUFG
SET_PARAMETER Clkout6_Drives BUFG
SET_PARAMETER Clkout7_Drives BUFG
SET_PARAMETER Feedback_Source FDBK_AUTO
SET_PARAMETER Clkfb_In_Signaling SINGLE
SET_PARAMETER CLKFB_IN_port CLKFB_IN
SET_PARAMETER CLKFB_IN_P_port CLKFB_IN_P
SET_PARAMETER CLKFB_IN_N_port CLKFB_IN_N
SET_PARAMETER CLKFB_OUT_port CLKFB_OUT
SET_PARAMETER CLKFB_OUT_P_port CLKFB_OUT_P
SET_PARAMETER CLKFB_OUT_N_port CLKFB_OUT_N
SET_PARAMETER Platform lin64
SET_PARAMETER Summary_Strings empty
SET_PARAMETER Use_Locked false
SET_PARAMETER calc_done DONE
SET_PARAMETER Use_Reset false
SET_PARAMETER Use_Power_Down false
SET_PARAMETER Use_Status false
SET_PARAMETER Use_Freeze false
SET_PARAMETER Use_Clk_Valid false
SET_PARAMETER Use_Inclk_Stopped false
SET_PARAMETER Use_Clkfb_Stopped false
SET_PARAMETER RESET_port RESET
SET_PARAMETER LOCKED_port LOCKED
SET_PARAMETER Power_Down_port POWER_DOWN
SET_PARAMETER CLK_VALID_port CLK_VALID
SET_PARAMETER STATUS_port STATUS
SET_PARAMETER CLK_IN_SEL_port CLK_IN_SEL
SET_PARAMETER INPUT_CLK_STOPPED_port INPUT_CLK_STOPPED
SET_PARAMETER CLKFB_STOPPED_port CLKFB_STOPPED
SET_PARAMETER Override_Mmcm false
SET_PARAMETER Mmcm_Notes None
SET_PARAMETER Mmcm_Divclk_Divide 1
SET_PARAMETER Mmcm_Bandwidth OPTIMIZED
SET_PARAMETER Mmcm_Clkfbout_Mult_F 4.000
SET_PARAMETER Mmcm_Clkfbout_Phase 0.000
SET_PARAMETER Mmcm_Clkfbout_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkin1_Period 10.000
SET_PARAMETER Mmcm_Clkin2_Period 10.000
SET_PARAMETER Mmcm_Clkout4_Cascade false
SET_PARAMETER Mmcm_Clock_Hold false
SET_PARAMETER Mmcm_Compensation ZHOLD
SET_PARAMETER Mmcm_Ref_Jitter1 0.010
SET_PARAMETER Mmcm_Ref_Jitter2 0.010
SET_PARAMETER Mmcm_Startup_Wait false
SET_PARAMETER Mmcm_Clkout0_Divide_F 4.000
SET_PARAMETER Mmcm_Clkout0_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout0_Phase 0.000
SET_PARAMETER Mmcm_Clkout0_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout1_Divide 1
SET_PARAMETER Mmcm_Clkout1_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout1_Phase 0.000
SET_PARAMETER Mmcm_Clkout1_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout2_Divide 1
SET_PARAMETER Mmcm_Clkout2_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout2_Phase 0.000
SET_PARAMETER Mmcm_Clkout2_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout3_Divide 1
SET_PARAMETER Mmcm_Clkout3_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout3_Phase 0.000
SET_PARAMETER Mmcm_Clkout3_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout4_Divide 1
SET_PARAMETER Mmcm_Clkout4_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout4_Phase 0.000
SET_PARAMETER Mmcm_Clkout4_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout5_Divide 1
SET_PARAMETER Mmcm_Clkout5_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout5_Phase 0.000
SET_PARAMETER Mmcm_Clkout5_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout6_Divide 1
SET_PARAMETER Mmcm_Clkout6_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout6_Phase 0.000
SET_PARAMETER Mmcm_Clkout6_Use_Fine_Ps false
SET_PARAMETER Override_Dcm false
SET_PARAMETER Dcm_Notes None
SET_PARAMETER Dcm_Clkdv_Divide 2.0
SET_PARAMETER Dcm_Clkfx_Divide 2
SET_PARAMETER Dcm_Clkfx_Multiply 3
SET_PARAMETER Dcm_Clkin_Divide_By_2 false
SET_PARAMETER Dcm_Clkin_Period 20.000
SET_PARAMETER Dcm_Clkout_Phase_Shift NONE
SET_PARAMETER Dcm_Deskew_Adjust SYSTEM_SYNCHRONOUS
SET_PARAMETER Dcm_Phase_Shift 0
SET_PARAMETER Dcm_Clk_Feedback NONE
SET_PARAMETER Dcm_Startup_Wait false
SET_PARAMETER Dcm_Clk_Out1_Port CLKFX
SET_PARAMETER Dcm_Clk_Out2_Port CLK0
SET_PARAMETER Dcm_Clk_Out3_Port CLK0
SET_PARAMETER Dcm_Clk_Out4_Port CLK0
SET_PARAMETER Dcm_Clk_Out5_Port CLK0
SET_PARAMETER Dcm_Clk_Out6_Port CLK0
SET_PARAMETER Override_Dcm_Clkgen false
SET_PARAMETER Dcm_Clkgen_Notes None
SET_PARAMETER Dcm_Clkgen_Clkfx_Divide 1
SET_PARAMETER Dcm_Clkgen_Clkfx_Multiply 4
SET_PARAMETER Dcm_Clkgen_Clkfxdv_Divide 2
SET_PARAMETER Dcm_Clkgen_Clkfx_Md_Max 0.000
SET_PARAMETER Dcm_Clkgen_Startup_Wait false
SET_PARAMETER Dcm_Clkgen_Clkin_Period 10.000
SET_PARAMETER Dcm_Clkgen_Spread_Spectrum NONE
SET_PARAMETER Dcm_Clkgen_Clk_Out1_Port CLKFX
SET_PARAMETER Dcm_Clkgen_Clk_Out2_Port CLKFX
SET_PARAMETER Dcm_Clkgen_Clk_Out3_Port CLKFX
SET_PARAMETER Override_Pll false
SET_PARAMETER Pll_Notes None
SET_PARAMETER Pll_Bandwidth OPTIMIZED
SET_PARAMETER Pll_Clkfbout_Mult 9
SET_PARAMETER Pll_Clkfbout_Phase 0.000
SET_PARAMETER Pll_Clk_Feedback CLKFBOUT
SET_PARAMETER Pll_Divclk_Divide 1
SET_PARAMETER Pll_Clkin_Period 20.000
SET_PARAMETER Pll_Compensation INTERNAL
SET_PARAMETER Pll_Ref_Jitter 0.010
SET_PARAMETER Pll_Clkout0_Divide 6
SET_PARAMETER Pll_Clkout0_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout0_Phase 0.000
SET_PARAMETER Pll_Clkout1_Divide 3
SET_PARAMETER Pll_Clkout1_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout1_Phase 0.000
SET_PARAMETER Pll_Clkout2_Divide 1
SET_PARAMETER Pll_Clkout2_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout2_Phase 0.000
SET_PARAMETER Pll_Clkout3_Divide 1
SET_PARAMETER Pll_Clkout3_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout3_Phase 0.000
SET_PARAMETER Pll_Clkout4_Divide 1
SET_PARAMETER Pll_Clkout4_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout4_Phase 0.000
SET_PARAMETER Pll_Clkout5_Divide 1
SET_PARAMETER Pll_Clkout5_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout5_Phase 0.000
SET_PARAMETER dcm_pll_cascade NONE
SET_PARAMETER clock_mgr_type AUTO
SET_PARAMETER primtype_sel PLL_BASE
SET_PARAMETER primitive MMCM
SET_PARAMETER SS_Mode CENTER_HIGH
SET_PARAMETER SS_Mod_Freq 250
SET_SIM_PARAMETER c_clkout2_used 1
SET_SIM_PARAMETER c_clkout3_used 0
SET_SIM_PARAMETER c_clkout4_used 0
SET_SIM_PARAMETER c_clkout5_used 0
SET_SIM_PARAMETER c_clkout6_used 0
SET_SIM_PARAMETER c_clkout7_used 0
SET_SIM_PARAMETER c_use_clkout1_bar 0
SET_SIM_PARAMETER c_use_clkout2_bar 0
SET_SIM_PARAMETER c_use_clkout3_bar 0
SET_SIM_PARAMETER c_use_clkout4_bar 0
SET_SIM_PARAMETER c_component_name hdmi_clk
SET_SIM_PARAMETER c_platform lin64
SET_SIM_PARAMETER c_use_freq_synth 1
SET_SIM_PARAMETER c_use_phase_alignment 0
SET_SIM_PARAMETER c_prim_in_jitter 0.010
SET_SIM_PARAMETER c_secondary_in_jitter 0.010
SET_SIM_PARAMETER c_jitter_sel No_Jitter
SET_SIM_PARAMETER c_use_min_power 0
SET_SIM_PARAMETER c_use_min_o_jitter 0
SET_SIM_PARAMETER c_use_max_i_jitter 0
SET_SIM_PARAMETER c_use_dyn_phase_shift 0
SET_SIM_PARAMETER c_use_inclk_switchover 0
SET_SIM_PARAMETER c_use_dyn_reconfig 0
SET_SIM_PARAMETER c_use_spread_spectrum 0
SET_SIM_PARAMETER c_use_spread_spectrum_1 0
SET_SIM_PARAMETER c_primtype_sel PLL_BASE
SET_SIM_PARAMETER c_use_clk_valid 0
SET_SIM_PARAMETER c_prim_in_freq 50
SET_SIM_PARAMETER c_in_freq_units Units_MHz
SET_SIM_PARAMETER c_secondary_in_freq 100.000
SET_SIM_PARAMETER c_feedback_source FDBK_AUTO
SET_SIM_PARAMETER c_prim_source Single_ended_clock_capable_pin
SET_SIM_PARAMETER c_secondary_source Single_ended_clock_capable_pin
SET_SIM_PARAMETER c_clkfb_in_signaling SINGLE
SET_SIM_PARAMETER c_use_reset 0
SET_SIM_PARAMETER c_use_locked 0
SET_SIM_PARAMETER c_use_inclk_stopped 0
SET_SIM_PARAMETER c_use_clkfb_stopped 0
SET_SIM_PARAMETER c_use_power_down 0
SET_SIM_PARAMETER c_use_status 0
SET_SIM_PARAMETER c_use_freeze 0
SET_SIM_PARAMETER c_num_out_clks 2
SET_SIM_PARAMETER c_clkout1_drives BUFG
SET_SIM_PARAMETER c_clkout2_drives BUFG
SET_SIM_PARAMETER c_clkout3_drives BUFG
SET_SIM_PARAMETER c_clkout4_drives BUFG
SET_SIM_PARAMETER c_clkout5_drives BUFG
SET_SIM_PARAMETER c_clkout6_drives BUFG
SET_SIM_PARAMETER c_clkout7_drives BUFG
SET_SIM_PARAMETER c_inclk_sum_row0 "Input Clock Freq (MHz) Input Jitter (UI)"
SET_SIM_PARAMETER c_inclk_sum_row1 __primary______________50____________0.010
SET_SIM_PARAMETER c_inclk_sum_row2 no_secondary_input_clock
SET_SIM_PARAMETER c_outclk_sum_row0a "Output Output Phase Duty Pk-to-Pk Phase"
SET_SIM_PARAMETER c_outclk_sum_row0b "Clock Freq (MHz) (degrees) Cycle (%) Jitter (ps) Error (ps)"
SET_SIM_PARAMETER c_outclk_sum_row1 CLK_OUT1____75.000______0.000______50.0______248.869____240.171
SET_SIM_PARAMETER c_outclk_sum_row2 CLK_OUT2___150.000______0.000______50.0______216.897____240.171
SET_SIM_PARAMETER c_outclk_sum_row3 no_CLK_OUT3_output
SET_SIM_PARAMETER c_outclk_sum_row4 no_CLK_OUT4_output
SET_SIM_PARAMETER c_outclk_sum_row5 no_CLK_OUT5_output
SET_SIM_PARAMETER c_outclk_sum_row6 no_CLK_OUT6_output
SET_SIM_PARAMETER c_outclk_sum_row7 no_CLK_OUT7_output
SET_SIM_PARAMETER c_clkout1_requested_out_freq 75
SET_SIM_PARAMETER c_clkout2_requested_out_freq 150
SET_SIM_PARAMETER c_clkout3_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout4_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout5_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout6_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout7_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout1_requested_phase 0.000
SET_SIM_PARAMETER c_clkout2_requested_phase 0.000
SET_SIM_PARAMETER c_clkout3_requested_phase 0.000
SET_SIM_PARAMETER c_clkout4_requested_phase 0.000
SET_SIM_PARAMETER c_clkout5_requested_phase 0.000
SET_SIM_PARAMETER c_clkout6_requested_phase 0.000
SET_SIM_PARAMETER c_clkout7_requested_phase 0.000
SET_SIM_PARAMETER c_clkout1_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout2_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout3_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout4_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout5_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout6_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout7_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout1_out_freq 75.000
SET_SIM_PARAMETER c_clkout2_out_freq 150.000
SET_SIM_PARAMETER c_clkout3_out_freq N/A
SET_SIM_PARAMETER c_clkout4_out_freq N/A
SET_SIM_PARAMETER c_clkout5_out_freq N/A
SET_SIM_PARAMETER c_clkout6_out_freq N/A
SET_SIM_PARAMETER c_clkout7_out_freq N/A
SET_SIM_PARAMETER c_clkout1_phase 0.000
SET_SIM_PARAMETER c_clkout2_phase 0.000
SET_SIM_PARAMETER c_clkout3_phase N/A
SET_SIM_PARAMETER c_clkout4_phase N/A
SET_SIM_PARAMETER c_clkout5_phase N/A
SET_SIM_PARAMETER c_clkout6_phase N/A
SET_SIM_PARAMETER c_clkout7_phase N/A
SET_SIM_PARAMETER c_clkout1_duty_cycle 50.0
SET_SIM_PARAMETER c_clkout2_duty_cycle 50.0
SET_SIM_PARAMETER c_clkout3_duty_cycle N/A
SET_SIM_PARAMETER c_clkout4_duty_cycle N/A
SET_SIM_PARAMETER c_clkout5_duty_cycle N/A
SET_SIM_PARAMETER c_clkout6_duty_cycle N/A
SET_SIM_PARAMETER c_clkout7_duty_cycle N/A
SET_SIM_PARAMETER c_mmcm_notes None
SET_SIM_PARAMETER c_mmcm_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_mmcm_clkfbout_mult_f 4.000
SET_SIM_PARAMETER c_mmcm_clkin1_period 10.000
SET_SIM_PARAMETER c_mmcm_clkin2_period 10.000
SET_SIM_PARAMETER c_mmcm_clkout4_cascade FALSE
SET_SIM_PARAMETER c_mmcm_clock_hold FALSE
SET_SIM_PARAMETER c_mmcm_compensation ZHOLD
SET_SIM_PARAMETER c_mmcm_divclk_divide 1
SET_SIM_PARAMETER c_mmcm_ref_jitter1 0.010
SET_SIM_PARAMETER c_mmcm_ref_jitter2 0.010
SET_SIM_PARAMETER c_mmcm_startup_wait FALSE
SET_SIM_PARAMETER c_mmcm_clkout0_divide_f 4.000
SET_SIM_PARAMETER c_mmcm_clkout1_divide 1
SET_SIM_PARAMETER c_mmcm_clkout2_divide 1
SET_SIM_PARAMETER c_mmcm_clkout3_divide 1
SET_SIM_PARAMETER c_mmcm_clkout4_divide 1
SET_SIM_PARAMETER c_mmcm_clkout5_divide 1
SET_SIM_PARAMETER c_mmcm_clkout6_divide 1
SET_SIM_PARAMETER c_mmcm_clkout0_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout1_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout2_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout3_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout4_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout5_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout6_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkfbout_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout0_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout1_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout2_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout3_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout4_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout5_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout6_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkfbout_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout0_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout1_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout2_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout3_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout4_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout5_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout6_use_fine_ps FALSE
SET_SIM_PARAMETER c_pll_notes None
SET_SIM_PARAMETER c_pll_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_pll_clk_feedback CLKFBOUT
SET_SIM_PARAMETER c_pll_clkfbout_mult 9
SET_SIM_PARAMETER c_pll_clkin_period 20.000
SET_SIM_PARAMETER c_pll_compensation INTERNAL
SET_SIM_PARAMETER c_pll_divclk_divide 1
SET_SIM_PARAMETER c_pll_ref_jitter 0.010
SET_SIM_PARAMETER c_pll_clkout0_divide 6
SET_SIM_PARAMETER c_pll_clkout1_divide 3
SET_SIM_PARAMETER c_pll_clkout2_divide 1
SET_SIM_PARAMETER c_pll_clkout3_divide 1
SET_SIM_PARAMETER c_pll_clkout4_divide 1
SET_SIM_PARAMETER c_pll_clkout5_divide 1
SET_SIM_PARAMETER c_pll_clkout0_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout1_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout2_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout3_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout4_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout5_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkfbout_phase 0.000
SET_SIM_PARAMETER c_pll_clkout0_phase 0.000
SET_SIM_PARAMETER c_pll_clkout1_phase 0.000
SET_SIM_PARAMETER c_pll_clkout2_phase 0.000
SET_SIM_PARAMETER c_pll_clkout3_phase 0.000
SET_SIM_PARAMETER c_pll_clkout4_phase 0.000
SET_SIM_PARAMETER c_pll_clkout5_phase 0.000
SET_SIM_PARAMETER c_dcm_notes None
SET_SIM_PARAMETER c_dcm_clkdv_divide 2.000
SET_SIM_PARAMETER c_dcm_clkfx_divide 2
SET_SIM_PARAMETER c_dcm_clkfx_multiply 3
SET_SIM_PARAMETER c_dcm_clkin_divide_by_2 FALSE
SET_SIM_PARAMETER c_dcm_clkin_period 20.0
SET_SIM_PARAMETER c_dcm_clkout_phase_shift NONE
SET_SIM_PARAMETER c_dcm_clk_feedback NONE
SET_SIM_PARAMETER c_dcm_clk_feedback_port NONE
SET_SIM_PARAMETER c_dcm_deskew_adjust SYSTEM_SYNCHRONOUS
SET_SIM_PARAMETER c_dcm_phase_shift 0
SET_SIM_PARAMETER c_dcm_startup_wait FALSE
SET_SIM_PARAMETER c_dcm_clk_out1_port CLKFX
SET_SIM_PARAMETER c_dcm_clk_out2_port CLK0
SET_SIM_PARAMETER c_dcm_clk_out3_port NONE
SET_SIM_PARAMETER c_dcm_clk_out4_port NONE
SET_SIM_PARAMETER c_dcm_clk_out5_port NONE
SET_SIM_PARAMETER c_dcm_clk_out6_port NONE
SET_SIM_PARAMETER c_dcm_clkgen_notes None
SET_SIM_PARAMETER c_dcm_clkgen_clkfxdv_divide 2
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_divide 1
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_multiply 4
SET_SIM_PARAMETER c_dcm_clkgen_dfs_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_dcm_clkgen_prog_md_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_dcm_clkgen_clkin_period 20.0
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_md_max 0.000
SET_SIM_PARAMETER c_dcm_clkgen_spread_spectrum NONE
SET_SIM_PARAMETER c_dcm_clkgen_startup_wait FALSE
SET_SIM_PARAMETER c_dcm_clkgen_clk_out1_port CLKFX
SET_SIM_PARAMETER c_dcm_clkgen_clk_out2_port CLKFX
SET_SIM_PARAMETER c_dcm_clkgen_clk_out3_port NONE
SET_SIM_PARAMETER c_clock_mgr_type AUTO
SET_SIM_PARAMETER c_override_mmcm 0
SET_SIM_PARAMETER c_override_pll 0
SET_SIM_PARAMETER c_override_dcm 0
SET_SIM_PARAMETER c_override_dcm_clkgen 0
SET_SIM_PARAMETER c_dcm_pll_cascade NONE
SET_SIM_PARAMETER c_primary_port CLK_IN1
SET_SIM_PARAMETER c_secondary_port CLK_IN2
SET_SIM_PARAMETER c_clk_out1_port CLK_OUT1
SET_SIM_PARAMETER c_clk_out2_port CLK_OUT2
SET_SIM_PARAMETER c_clk_out3_port CLK_OUT3
SET_SIM_PARAMETER c_clk_out4_port CLK_OUT4
SET_SIM_PARAMETER c_clk_out5_port CLK_OUT5
SET_SIM_PARAMETER c_clk_out6_port CLK_OUT6
SET_SIM_PARAMETER c_clk_out7_port CLK_OUT7
SET_SIM_PARAMETER c_reset_port RESET
SET_SIM_PARAMETER c_locked_port LOCKED
SET_SIM_PARAMETER c_clkfb_in_port CLKFB_IN
SET_SIM_PARAMETER c_clkfb_in_p_port CLKFB_IN_P
SET_SIM_PARAMETER c_clkfb_in_n_port CLKFB_IN_N
SET_SIM_PARAMETER c_clkfb_out_port CLKFB_OUT
SET_SIM_PARAMETER c_clkfb_out_p_port CLKFB_OUT_P
SET_SIM_PARAMETER c_clkfb_out_n_port CLKFB_OUT_N
SET_SIM_PARAMETER c_power_down_port POWER_DOWN
SET_SIM_PARAMETER c_daddr_port DADDR
SET_SIM_PARAMETER c_dclk_port DCLK
SET_SIM_PARAMETER c_drdy_port DRDY
SET_SIM_PARAMETER c_dwe_port DWE
SET_SIM_PARAMETER c_din_port DIN
SET_SIM_PARAMETER c_dout_port DOUT
SET_SIM_PARAMETER c_den_port DEN
SET_SIM_PARAMETER c_psclk_port PSCLK
SET_SIM_PARAMETER c_psen_port PSEN
SET_SIM_PARAMETER c_psincdec_port PSINCDEC
SET_SIM_PARAMETER c_psdone_port PSDONE
SET_SIM_PARAMETER c_clk_valid_port CLK_VALID
SET_SIM_PARAMETER c_status_port STATUS
SET_SIM_PARAMETER c_clk_in_sel_port CLK_IN_SEL
SET_SIM_PARAMETER c_input_clk_stopped_port INPUT_CLK_STOPPED
SET_SIM_PARAMETER c_clkfb_stopped_port CLKFB_STOPPED
SET_SIM_PARAMETER c_clkin1_jitter_ps 200.0
SET_SIM_PARAMETER c_clkin2_jitter_ps 100.0
SET_SIM_PARAMETER c_primitive MMCM
SET_SIM_PARAMETER c_ss_mode CENTER_HIGH
SET_SIM_PARAMETER c_ss_mod_period 4000
SET_CORE_NAME Clocking Wizard
SET_CORE_VERSION 3.6
SET_CORE_VLNV xilinx.com:ip:clk_wiz:3.6
SET_CORE_CLASS com.xilinx.ip.clk_wiz_v3_6.clk_wiz_v3_6
SET_CORE_PATH /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6
SET_CORE_GUIPATH /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/gui/clk_wiz_v3_6.tcl
SET_CORE_DATASHEET /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/pg065_clk_wiz.pdf
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/pg065_clk_wiz.pdf><pg065_clk_wiz.pdf>
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/clk_wiz_v3_6_readme.txt><clk_wiz_v3_6_readme.txt>
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/clk_wiz_v3_6_vinfo.html><clk_wiz_v3_6_vinfo.html>

View File

@ -0,0 +1,505 @@
SET_FLAG DEBUG FALSE
SET_FLAG MODE BATCH
SET_FLAG STANDALONE_MODE FALSE
SET_PREFERENCE devicefamily spartan6
SET_PREFERENCE device xc6slx9
SET_PREFERENCE speedgrade -2
SET_PREFERENCE package tqg144
SET_PREFERENCE verilogsim true
SET_PREFERENCE vhdlsim false
SET_PREFERENCE simulationfiles Behavioral
SET_PREFERENCE busformat BusFormatAngleBracketNotRipped
SET_PREFERENCE outputdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/
SET_PREFERENCE workingdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/
SET_PREFERENCE subworkingdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/_cg/
SET_PREFERENCE transientdirectory /home/tim/Projects/z80/hdmi/ipcore_dir/tmp/_cg/_dbg/
SET_PREFERENCE designentry Verilog
SET_PREFERENCE flowvendor Other
SET_PREFERENCE addpads false
SET_PREFERENCE projectname coregen
SET_PREFERENCE formalverification false
SET_PREFERENCE asysymbol false
SET_PREFERENCE implementationfiletype Ngc
SET_PREFERENCE foundationsym false
SET_PREFERENCE createndf false
SET_PREFERENCE removerpms false
SET_PARAMETER Component_Name hdmi_clk
SET_PARAMETER Use_Freq_Synth true
SET_PARAMETER Use_Phase_Alignment false
SET_PARAMETER Use_Min_Power false
SET_PARAMETER Use_Dyn_Phase_Shift false
SET_PARAMETER Use_Dyn_Reconfig false
SET_PARAMETER Jitter_Sel No_Jitter
SET_PARAMETER Use_Spread_Spectrum false
SET_PARAMETER Use_Spread_Spectrum_1 false
SET_PARAMETER Prim_In_Freq 50
SET_PARAMETER In_Freq_Units Units_MHz
SET_PARAMETER In_Jitter_Units Units_UI
SET_PARAMETER Relative_Inclk REL_PRIMARY
SET_PARAMETER Secondary_In_Freq 100.000
SET_PARAMETER Jitter_Options UI
SET_PARAMETER Clkin1_UI_Jitter 0.010
SET_PARAMETER Clkin2_UI_Jitter 0.010
SET_PARAMETER Prim_In_Jitter 0.010
SET_PARAMETER Secondary_In_Jitter 0.010
SET_PARAMETER Clkin1_Jitter_Ps 200.0
SET_PARAMETER Clkin2_Jitter_Ps 100.0
SET_PARAMETER Clkout2_Used true
SET_PARAMETER Clkout3_Used false
SET_PARAMETER Clkout4_Used false
SET_PARAMETER Clkout5_Used false
SET_PARAMETER Clkout6_Used false
SET_PARAMETER Clkout7_Used false
SET_PARAMETER Num_Out_Clks 2
SET_PARAMETER Clk_Out1_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out2_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out3_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out4_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out5_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out6_Use_Fine_Ps_GUI false
SET_PARAMETER Clk_Out7_Use_Fine_Ps_GUI false
SET_PARAMETER primary_port CLK_IN1
SET_PARAMETER CLK_OUT1_port CLK_OUT1
SET_PARAMETER CLK_OUT2_port CLK_OUT2
SET_PARAMETER CLK_OUT3_port CLK_OUT3
SET_PARAMETER CLK_OUT4_port CLK_OUT4
SET_PARAMETER CLK_OUT5_port CLK_OUT5
SET_PARAMETER CLK_OUT6_port CLK_OUT6
SET_PARAMETER CLK_OUT7_port CLK_OUT7
SET_PARAMETER DADDR_port DADDR
SET_PARAMETER DCLK_port DCLK
SET_PARAMETER DRDY_port DRDY
SET_PARAMETER DWE_port DWE
SET_PARAMETER DIN_port DIN
SET_PARAMETER DOUT_port DOUT
SET_PARAMETER DEN_port DEN
SET_PARAMETER PSCLK_port PSCLK
SET_PARAMETER PSEN_port PSEN
SET_PARAMETER PSINCDEC_port PSINCDEC
SET_PARAMETER PSDONE_port PSDONE
SET_PARAMETER Clkout1_Requested_Out_Freq 75
SET_PARAMETER Clkout1_Requested_Phase 0.000
SET_PARAMETER Clkout1_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout2_Requested_Out_Freq 150
SET_PARAMETER Clkout2_Requested_Phase 0.000
SET_PARAMETER Clkout2_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout3_Requested_Out_Freq 100.000
SET_PARAMETER Clkout3_Requested_Phase 0.000
SET_PARAMETER Clkout3_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout4_Requested_Out_Freq 100.000
SET_PARAMETER Clkout4_Requested_Phase 0.000
SET_PARAMETER Clkout4_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout5_Requested_Out_Freq 100.000
SET_PARAMETER Clkout5_Requested_Phase 0.000
SET_PARAMETER Clkout5_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout6_Requested_Out_Freq 100.000
SET_PARAMETER Clkout6_Requested_Phase 0.000
SET_PARAMETER Clkout6_Requested_Duty_Cycle 50.000
SET_PARAMETER Clkout7_Requested_Out_Freq 100.000
SET_PARAMETER Clkout7_Requested_Phase 0.000
SET_PARAMETER Clkout7_Requested_Duty_Cycle 50.000
SET_PARAMETER Use_Max_I_Jitter false
SET_PARAMETER Use_Min_O_Jitter false
SET_PARAMETER Prim_Source Single_ended_clock_capable_pin
SET_PARAMETER Use_Inclk_Switchover false
SET_PARAMETER secondary_port CLK_IN2
SET_PARAMETER Secondary_Source Single_ended_clock_capable_pin
SET_PARAMETER Clkout1_Drives BUFG
SET_PARAMETER Clkout2_Drives BUFG
SET_PARAMETER Clkout3_Drives BUFG
SET_PARAMETER Clkout4_Drives BUFG
SET_PARAMETER Clkout5_Drives BUFG
SET_PARAMETER Clkout6_Drives BUFG
SET_PARAMETER Clkout7_Drives BUFG
SET_PARAMETER Feedback_Source FDBK_AUTO
SET_PARAMETER Clkfb_In_Signaling SINGLE
SET_PARAMETER CLKFB_IN_port CLKFB_IN
SET_PARAMETER CLKFB_IN_P_port CLKFB_IN_P
SET_PARAMETER CLKFB_IN_N_port CLKFB_IN_N
SET_PARAMETER CLKFB_OUT_port CLKFB_OUT
SET_PARAMETER CLKFB_OUT_P_port CLKFB_OUT_P
SET_PARAMETER CLKFB_OUT_N_port CLKFB_OUT_N
SET_PARAMETER Platform lin64
SET_PARAMETER Summary_Strings empty
SET_PARAMETER Use_Locked false
SET_PARAMETER calc_done DONE
SET_PARAMETER Use_Reset false
SET_PARAMETER Use_Power_Down false
SET_PARAMETER Use_Status false
SET_PARAMETER Use_Freeze false
SET_PARAMETER Use_Clk_Valid false
SET_PARAMETER Use_Inclk_Stopped false
SET_PARAMETER Use_Clkfb_Stopped false
SET_PARAMETER RESET_port RESET
SET_PARAMETER LOCKED_port LOCKED
SET_PARAMETER Power_Down_port POWER_DOWN
SET_PARAMETER CLK_VALID_port CLK_VALID
SET_PARAMETER STATUS_port STATUS
SET_PARAMETER CLK_IN_SEL_port CLK_IN_SEL
SET_PARAMETER INPUT_CLK_STOPPED_port INPUT_CLK_STOPPED
SET_PARAMETER CLKFB_STOPPED_port CLKFB_STOPPED
SET_PARAMETER Override_Mmcm false
SET_PARAMETER Mmcm_Notes None
SET_PARAMETER Mmcm_Divclk_Divide 1
SET_PARAMETER Mmcm_Bandwidth OPTIMIZED
SET_PARAMETER Mmcm_Clkfbout_Mult_F 4.000
SET_PARAMETER Mmcm_Clkfbout_Phase 0.000
SET_PARAMETER Mmcm_Clkfbout_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkin1_Period 10.000
SET_PARAMETER Mmcm_Clkin2_Period 10.000
SET_PARAMETER Mmcm_Clkout4_Cascade false
SET_PARAMETER Mmcm_Clock_Hold false
SET_PARAMETER Mmcm_Compensation ZHOLD
SET_PARAMETER Mmcm_Ref_Jitter1 0.010
SET_PARAMETER Mmcm_Ref_Jitter2 0.010
SET_PARAMETER Mmcm_Startup_Wait false
SET_PARAMETER Mmcm_Clkout0_Divide_F 4.000
SET_PARAMETER Mmcm_Clkout0_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout0_Phase 0.000
SET_PARAMETER Mmcm_Clkout0_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout1_Divide 1
SET_PARAMETER Mmcm_Clkout1_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout1_Phase 0.000
SET_PARAMETER Mmcm_Clkout1_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout2_Divide 1
SET_PARAMETER Mmcm_Clkout2_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout2_Phase 0.000
SET_PARAMETER Mmcm_Clkout2_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout3_Divide 1
SET_PARAMETER Mmcm_Clkout3_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout3_Phase 0.000
SET_PARAMETER Mmcm_Clkout3_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout4_Divide 1
SET_PARAMETER Mmcm_Clkout4_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout4_Phase 0.000
SET_PARAMETER Mmcm_Clkout4_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout5_Divide 1
SET_PARAMETER Mmcm_Clkout5_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout5_Phase 0.000
SET_PARAMETER Mmcm_Clkout5_Use_Fine_Ps false
SET_PARAMETER Mmcm_Clkout6_Divide 1
SET_PARAMETER Mmcm_Clkout6_Duty_Cycle 0.500
SET_PARAMETER Mmcm_Clkout6_Phase 0.000
SET_PARAMETER Mmcm_Clkout6_Use_Fine_Ps false
SET_PARAMETER Override_Dcm false
SET_PARAMETER Dcm_Notes None
SET_PARAMETER Dcm_Clkdv_Divide 2.0
SET_PARAMETER Dcm_Clkfx_Divide 2
SET_PARAMETER Dcm_Clkfx_Multiply 3
SET_PARAMETER Dcm_Clkin_Divide_By_2 false
SET_PARAMETER Dcm_Clkin_Period 20.000
SET_PARAMETER Dcm_Clkout_Phase_Shift NONE
SET_PARAMETER Dcm_Deskew_Adjust SYSTEM_SYNCHRONOUS
SET_PARAMETER Dcm_Phase_Shift 0
SET_PARAMETER Dcm_Clk_Feedback NONE
SET_PARAMETER Dcm_Startup_Wait false
SET_PARAMETER Dcm_Clk_Out1_Port CLKFX
SET_PARAMETER Dcm_Clk_Out2_Port CLK0
SET_PARAMETER Dcm_Clk_Out3_Port CLK0
SET_PARAMETER Dcm_Clk_Out4_Port CLK0
SET_PARAMETER Dcm_Clk_Out5_Port CLK0
SET_PARAMETER Dcm_Clk_Out6_Port CLK0
SET_PARAMETER Override_Dcm_Clkgen false
SET_PARAMETER Dcm_Clkgen_Notes None
SET_PARAMETER Dcm_Clkgen_Clkfx_Divide 1
SET_PARAMETER Dcm_Clkgen_Clkfx_Multiply 4
SET_PARAMETER Dcm_Clkgen_Clkfxdv_Divide 2
SET_PARAMETER Dcm_Clkgen_Clkfx_Md_Max 0.000
SET_PARAMETER Dcm_Clkgen_Startup_Wait false
SET_PARAMETER Dcm_Clkgen_Clkin_Period 10.000
SET_PARAMETER Dcm_Clkgen_Spread_Spectrum NONE
SET_PARAMETER Dcm_Clkgen_Clk_Out1_Port CLKFX
SET_PARAMETER Dcm_Clkgen_Clk_Out2_Port CLKFX
SET_PARAMETER Dcm_Clkgen_Clk_Out3_Port CLKFX
SET_PARAMETER Override_Pll false
SET_PARAMETER Pll_Notes None
SET_PARAMETER Pll_Bandwidth OPTIMIZED
SET_PARAMETER Pll_Clkfbout_Mult 9
SET_PARAMETER Pll_Clkfbout_Phase 0.000
SET_PARAMETER Pll_Clk_Feedback CLKFBOUT
SET_PARAMETER Pll_Divclk_Divide 1
SET_PARAMETER Pll_Clkin_Period 20.000
SET_PARAMETER Pll_Compensation INTERNAL
SET_PARAMETER Pll_Ref_Jitter 0.010
SET_PARAMETER Pll_Clkout0_Divide 6
SET_PARAMETER Pll_Clkout0_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout0_Phase 0.000
SET_PARAMETER Pll_Clkout1_Divide 3
SET_PARAMETER Pll_Clkout1_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout1_Phase 0.000
SET_PARAMETER Pll_Clkout2_Divide 1
SET_PARAMETER Pll_Clkout2_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout2_Phase 0.000
SET_PARAMETER Pll_Clkout3_Divide 1
SET_PARAMETER Pll_Clkout3_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout3_Phase 0.000
SET_PARAMETER Pll_Clkout4_Divide 1
SET_PARAMETER Pll_Clkout4_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout4_Phase 0.000
SET_PARAMETER Pll_Clkout5_Divide 1
SET_PARAMETER Pll_Clkout5_Duty_Cycle 0.500
SET_PARAMETER Pll_Clkout5_Phase 0.000
SET_PARAMETER dcm_pll_cascade NONE
SET_PARAMETER clock_mgr_type AUTO
SET_PARAMETER primtype_sel PLL_BASE
SET_PARAMETER primitive MMCM
SET_PARAMETER SS_Mode CENTER_HIGH
SET_PARAMETER SS_Mod_Freq 250
SET_SIM_PARAMETER c_clkout2_used 1
SET_SIM_PARAMETER c_clkout3_used 0
SET_SIM_PARAMETER c_clkout4_used 0
SET_SIM_PARAMETER c_clkout5_used 0
SET_SIM_PARAMETER c_clkout6_used 0
SET_SIM_PARAMETER c_clkout7_used 0
SET_SIM_PARAMETER c_use_clkout1_bar 0
SET_SIM_PARAMETER c_use_clkout2_bar 0
SET_SIM_PARAMETER c_use_clkout3_bar 0
SET_SIM_PARAMETER c_use_clkout4_bar 0
SET_SIM_PARAMETER c_component_name hdmi_clk
SET_SIM_PARAMETER c_platform lin64
SET_SIM_PARAMETER c_use_freq_synth 1
SET_SIM_PARAMETER c_use_phase_alignment 0
SET_SIM_PARAMETER c_prim_in_jitter 0.010
SET_SIM_PARAMETER c_secondary_in_jitter 0.010
SET_SIM_PARAMETER c_jitter_sel No_Jitter
SET_SIM_PARAMETER c_use_min_power 0
SET_SIM_PARAMETER c_use_min_o_jitter 0
SET_SIM_PARAMETER c_use_max_i_jitter 0
SET_SIM_PARAMETER c_use_dyn_phase_shift 0
SET_SIM_PARAMETER c_use_inclk_switchover 0
SET_SIM_PARAMETER c_use_dyn_reconfig 0
SET_SIM_PARAMETER c_use_spread_spectrum 0
SET_SIM_PARAMETER c_use_spread_spectrum_1 0
SET_SIM_PARAMETER c_primtype_sel PLL_BASE
SET_SIM_PARAMETER c_use_clk_valid 0
SET_SIM_PARAMETER c_prim_in_freq 50
SET_SIM_PARAMETER c_in_freq_units Units_MHz
SET_SIM_PARAMETER c_secondary_in_freq 100.000
SET_SIM_PARAMETER c_feedback_source FDBK_AUTO
SET_SIM_PARAMETER c_prim_source Single_ended_clock_capable_pin
SET_SIM_PARAMETER c_secondary_source Single_ended_clock_capable_pin
SET_SIM_PARAMETER c_clkfb_in_signaling SINGLE
SET_SIM_PARAMETER c_use_reset 0
SET_SIM_PARAMETER c_use_locked 0
SET_SIM_PARAMETER c_use_inclk_stopped 0
SET_SIM_PARAMETER c_use_clkfb_stopped 0
SET_SIM_PARAMETER c_use_power_down 0
SET_SIM_PARAMETER c_use_status 0
SET_SIM_PARAMETER c_use_freeze 0
SET_SIM_PARAMETER c_num_out_clks 2
SET_SIM_PARAMETER c_clkout1_drives BUFG
SET_SIM_PARAMETER c_clkout2_drives BUFG
SET_SIM_PARAMETER c_clkout3_drives BUFG
SET_SIM_PARAMETER c_clkout4_drives BUFG
SET_SIM_PARAMETER c_clkout5_drives BUFG
SET_SIM_PARAMETER c_clkout6_drives BUFG
SET_SIM_PARAMETER c_clkout7_drives BUFG
SET_SIM_PARAMETER c_inclk_sum_row0 "Input Clock Freq (MHz) Input Jitter (UI)"
SET_SIM_PARAMETER c_inclk_sum_row1 __primary______________50____________0.010
SET_SIM_PARAMETER c_inclk_sum_row2 no_secondary_input_clock
SET_SIM_PARAMETER c_outclk_sum_row0a "Output Output Phase Duty Pk-to-Pk Phase"
SET_SIM_PARAMETER c_outclk_sum_row0b "Clock Freq (MHz) (degrees) Cycle (%) Jitter (ps) Error (ps)"
SET_SIM_PARAMETER c_outclk_sum_row1 CLK_OUT1____75.000______0.000______50.0______248.869____240.171
SET_SIM_PARAMETER c_outclk_sum_row2 CLK_OUT2___150.000______0.000______50.0______216.897____240.171
SET_SIM_PARAMETER c_outclk_sum_row3 no_CLK_OUT3_output
SET_SIM_PARAMETER c_outclk_sum_row4 no_CLK_OUT4_output
SET_SIM_PARAMETER c_outclk_sum_row5 no_CLK_OUT5_output
SET_SIM_PARAMETER c_outclk_sum_row6 no_CLK_OUT6_output
SET_SIM_PARAMETER c_outclk_sum_row7 no_CLK_OUT7_output
SET_SIM_PARAMETER c_clkout1_requested_out_freq 75
SET_SIM_PARAMETER c_clkout2_requested_out_freq 150
SET_SIM_PARAMETER c_clkout3_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout4_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout5_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout6_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout7_requested_out_freq 100.000
SET_SIM_PARAMETER c_clkout1_requested_phase 0.000
SET_SIM_PARAMETER c_clkout2_requested_phase 0.000
SET_SIM_PARAMETER c_clkout3_requested_phase 0.000
SET_SIM_PARAMETER c_clkout4_requested_phase 0.000
SET_SIM_PARAMETER c_clkout5_requested_phase 0.000
SET_SIM_PARAMETER c_clkout6_requested_phase 0.000
SET_SIM_PARAMETER c_clkout7_requested_phase 0.000
SET_SIM_PARAMETER c_clkout1_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout2_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout3_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout4_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout5_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout6_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout7_requested_duty_cycle 50.000
SET_SIM_PARAMETER c_clkout1_out_freq 75.000
SET_SIM_PARAMETER c_clkout2_out_freq 150.000
SET_SIM_PARAMETER c_clkout3_out_freq N/A
SET_SIM_PARAMETER c_clkout4_out_freq N/A
SET_SIM_PARAMETER c_clkout5_out_freq N/A
SET_SIM_PARAMETER c_clkout6_out_freq N/A
SET_SIM_PARAMETER c_clkout7_out_freq N/A
SET_SIM_PARAMETER c_clkout1_phase 0.000
SET_SIM_PARAMETER c_clkout2_phase 0.000
SET_SIM_PARAMETER c_clkout3_phase N/A
SET_SIM_PARAMETER c_clkout4_phase N/A
SET_SIM_PARAMETER c_clkout5_phase N/A
SET_SIM_PARAMETER c_clkout6_phase N/A
SET_SIM_PARAMETER c_clkout7_phase N/A
SET_SIM_PARAMETER c_clkout1_duty_cycle 50.0
SET_SIM_PARAMETER c_clkout2_duty_cycle 50.0
SET_SIM_PARAMETER c_clkout3_duty_cycle N/A
SET_SIM_PARAMETER c_clkout4_duty_cycle N/A
SET_SIM_PARAMETER c_clkout5_duty_cycle N/A
SET_SIM_PARAMETER c_clkout6_duty_cycle N/A
SET_SIM_PARAMETER c_clkout7_duty_cycle N/A
SET_SIM_PARAMETER c_mmcm_notes None
SET_SIM_PARAMETER c_mmcm_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_mmcm_clkfbout_mult_f 4.000
SET_SIM_PARAMETER c_mmcm_clkin1_period 10.000
SET_SIM_PARAMETER c_mmcm_clkin2_period 10.000
SET_SIM_PARAMETER c_mmcm_clkout4_cascade FALSE
SET_SIM_PARAMETER c_mmcm_clock_hold FALSE
SET_SIM_PARAMETER c_mmcm_compensation ZHOLD
SET_SIM_PARAMETER c_mmcm_divclk_divide 1
SET_SIM_PARAMETER c_mmcm_ref_jitter1 0.010
SET_SIM_PARAMETER c_mmcm_ref_jitter2 0.010
SET_SIM_PARAMETER c_mmcm_startup_wait FALSE
SET_SIM_PARAMETER c_mmcm_clkout0_divide_f 4.000
SET_SIM_PARAMETER c_mmcm_clkout1_divide 1
SET_SIM_PARAMETER c_mmcm_clkout2_divide 1
SET_SIM_PARAMETER c_mmcm_clkout3_divide 1
SET_SIM_PARAMETER c_mmcm_clkout4_divide 1
SET_SIM_PARAMETER c_mmcm_clkout5_divide 1
SET_SIM_PARAMETER c_mmcm_clkout6_divide 1
SET_SIM_PARAMETER c_mmcm_clkout0_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout1_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout2_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout3_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout4_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout5_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkout6_duty_cycle 0.500
SET_SIM_PARAMETER c_mmcm_clkfbout_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout0_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout1_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout2_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout3_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout4_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout5_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkout6_phase 0.000
SET_SIM_PARAMETER c_mmcm_clkfbout_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout0_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout1_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout2_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout3_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout4_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout5_use_fine_ps FALSE
SET_SIM_PARAMETER c_mmcm_clkout6_use_fine_ps FALSE
SET_SIM_PARAMETER c_pll_notes None
SET_SIM_PARAMETER c_pll_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_pll_clk_feedback CLKFBOUT
SET_SIM_PARAMETER c_pll_clkfbout_mult 9
SET_SIM_PARAMETER c_pll_clkin_period 20.000
SET_SIM_PARAMETER c_pll_compensation INTERNAL
SET_SIM_PARAMETER c_pll_divclk_divide 1
SET_SIM_PARAMETER c_pll_ref_jitter 0.010
SET_SIM_PARAMETER c_pll_clkout0_divide 6
SET_SIM_PARAMETER c_pll_clkout1_divide 3
SET_SIM_PARAMETER c_pll_clkout2_divide 1
SET_SIM_PARAMETER c_pll_clkout3_divide 1
SET_SIM_PARAMETER c_pll_clkout4_divide 1
SET_SIM_PARAMETER c_pll_clkout5_divide 1
SET_SIM_PARAMETER c_pll_clkout0_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout1_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout2_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout3_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout4_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkout5_duty_cycle 0.500
SET_SIM_PARAMETER c_pll_clkfbout_phase 0.000
SET_SIM_PARAMETER c_pll_clkout0_phase 0.000
SET_SIM_PARAMETER c_pll_clkout1_phase 0.000
SET_SIM_PARAMETER c_pll_clkout2_phase 0.000
SET_SIM_PARAMETER c_pll_clkout3_phase 0.000
SET_SIM_PARAMETER c_pll_clkout4_phase 0.000
SET_SIM_PARAMETER c_pll_clkout5_phase 0.000
SET_SIM_PARAMETER c_dcm_notes None
SET_SIM_PARAMETER c_dcm_clkdv_divide 2.000
SET_SIM_PARAMETER c_dcm_clkfx_divide 2
SET_SIM_PARAMETER c_dcm_clkfx_multiply 3
SET_SIM_PARAMETER c_dcm_clkin_divide_by_2 FALSE
SET_SIM_PARAMETER c_dcm_clkin_period 20.0
SET_SIM_PARAMETER c_dcm_clkout_phase_shift NONE
SET_SIM_PARAMETER c_dcm_clk_feedback NONE
SET_SIM_PARAMETER c_dcm_clk_feedback_port NONE
SET_SIM_PARAMETER c_dcm_deskew_adjust SYSTEM_SYNCHRONOUS
SET_SIM_PARAMETER c_dcm_phase_shift 0
SET_SIM_PARAMETER c_dcm_startup_wait FALSE
SET_SIM_PARAMETER c_dcm_clk_out1_port CLKFX
SET_SIM_PARAMETER c_dcm_clk_out2_port CLK0
SET_SIM_PARAMETER c_dcm_clk_out3_port NONE
SET_SIM_PARAMETER c_dcm_clk_out4_port NONE
SET_SIM_PARAMETER c_dcm_clk_out5_port NONE
SET_SIM_PARAMETER c_dcm_clk_out6_port NONE
SET_SIM_PARAMETER c_dcm_clkgen_notes None
SET_SIM_PARAMETER c_dcm_clkgen_clkfxdv_divide 2
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_divide 1
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_multiply 4
SET_SIM_PARAMETER c_dcm_clkgen_dfs_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_dcm_clkgen_prog_md_bandwidth OPTIMIZED
SET_SIM_PARAMETER c_dcm_clkgen_clkin_period 20.0
SET_SIM_PARAMETER c_dcm_clkgen_clkfx_md_max 0.000
SET_SIM_PARAMETER c_dcm_clkgen_spread_spectrum NONE
SET_SIM_PARAMETER c_dcm_clkgen_startup_wait FALSE
SET_SIM_PARAMETER c_dcm_clkgen_clk_out1_port CLKFX
SET_SIM_PARAMETER c_dcm_clkgen_clk_out2_port CLKFX
SET_SIM_PARAMETER c_dcm_clkgen_clk_out3_port NONE
SET_SIM_PARAMETER c_clock_mgr_type AUTO
SET_SIM_PARAMETER c_override_mmcm 0
SET_SIM_PARAMETER c_override_pll 0
SET_SIM_PARAMETER c_override_dcm 0
SET_SIM_PARAMETER c_override_dcm_clkgen 0
SET_SIM_PARAMETER c_dcm_pll_cascade NONE
SET_SIM_PARAMETER c_primary_port CLK_IN1
SET_SIM_PARAMETER c_secondary_port CLK_IN2
SET_SIM_PARAMETER c_clk_out1_port CLK_OUT1
SET_SIM_PARAMETER c_clk_out2_port CLK_OUT2
SET_SIM_PARAMETER c_clk_out3_port CLK_OUT3
SET_SIM_PARAMETER c_clk_out4_port CLK_OUT4
SET_SIM_PARAMETER c_clk_out5_port CLK_OUT5
SET_SIM_PARAMETER c_clk_out6_port CLK_OUT6
SET_SIM_PARAMETER c_clk_out7_port CLK_OUT7
SET_SIM_PARAMETER c_reset_port RESET
SET_SIM_PARAMETER c_locked_port LOCKED
SET_SIM_PARAMETER c_clkfb_in_port CLKFB_IN
SET_SIM_PARAMETER c_clkfb_in_p_port CLKFB_IN_P
SET_SIM_PARAMETER c_clkfb_in_n_port CLKFB_IN_N
SET_SIM_PARAMETER c_clkfb_out_port CLKFB_OUT
SET_SIM_PARAMETER c_clkfb_out_p_port CLKFB_OUT_P
SET_SIM_PARAMETER c_clkfb_out_n_port CLKFB_OUT_N
SET_SIM_PARAMETER c_power_down_port POWER_DOWN
SET_SIM_PARAMETER c_daddr_port DADDR
SET_SIM_PARAMETER c_dclk_port DCLK
SET_SIM_PARAMETER c_drdy_port DRDY
SET_SIM_PARAMETER c_dwe_port DWE
SET_SIM_PARAMETER c_din_port DIN
SET_SIM_PARAMETER c_dout_port DOUT
SET_SIM_PARAMETER c_den_port DEN
SET_SIM_PARAMETER c_psclk_port PSCLK
SET_SIM_PARAMETER c_psen_port PSEN
SET_SIM_PARAMETER c_psincdec_port PSINCDEC
SET_SIM_PARAMETER c_psdone_port PSDONE
SET_SIM_PARAMETER c_clk_valid_port CLK_VALID
SET_SIM_PARAMETER c_status_port STATUS
SET_SIM_PARAMETER c_clk_in_sel_port CLK_IN_SEL
SET_SIM_PARAMETER c_input_clk_stopped_port INPUT_CLK_STOPPED
SET_SIM_PARAMETER c_clkfb_stopped_port CLKFB_STOPPED
SET_SIM_PARAMETER c_clkin1_jitter_ps 200.0
SET_SIM_PARAMETER c_clkin2_jitter_ps 100.0
SET_SIM_PARAMETER c_primitive MMCM
SET_SIM_PARAMETER c_ss_mode CENTER_HIGH
SET_SIM_PARAMETER c_ss_mod_period 4000
SET_CORE_NAME Clocking Wizard
SET_CORE_VERSION 3.6
SET_CORE_VLNV xilinx.com:ip:clk_wiz:3.6
SET_CORE_CLASS com.xilinx.ip.clk_wiz_v3_6.clk_wiz_v3_6
SET_CORE_PATH /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6
SET_CORE_GUIPATH /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/gui/clk_wiz_v3_6.tcl
SET_CORE_DATASHEET /opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/pg065_clk_wiz.pdf
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/pg065_clk_wiz.pdf><pg065_clk_wiz.pdf>
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/clk_wiz_v3_6_readme.txt><clk_wiz_v3_6_readme.txt>
ADD_CORE_DOCUMENT </opt/Xilinx/14.7/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/clk_wiz_v3_6/doc/clk_wiz_v3_6_vinfo.html><clk_wiz_v3_6_vinfo.html>

0
mb/.metadata/.lock Normal file
View File

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<item value="/home/tim/Projects/z80/hdmi/ipcore_dir/microblaze_mcs_sdk.xml" key="com.xilinx.sdk.hw.ui.hwspec.last"/>
</section>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<item value="" key="org.eclipse.cdt.codan.internal.ui.preferences.CodanPreferencePage.selection"/>
</section>

View File

@ -0,0 +1,793 @@
<?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__=&quot;4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)&quot;"/>
<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__=&quot;4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)&quot;"/>
<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__=&quot;4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)&quot;"/>
<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__=&quot;4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)&quot;"/>
<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>

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
</section>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<cHelpSettings>
<project name="Graphics_bsp">
<provider id="org.eclipse.cdt.ui.provider1"/>
</project>
</cHelpSettings>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<item value="Default C source template" key="LastUsedSourceTemplate"/>
<section name="OptionalMessageDialog.hide.">
<item value="0" key="askReindex.detail"/>
</section>
<section name="completion_proposal_size">
</section>
<section name="IncludeSysmbolsPropertyPage">
<item value="0" key="pageIndex"/>
</section>
<section name="CPathsPropertyPage">
<item value="4" key="pageIndex"/>
</section>
<section name="org.eclipse.cdt.ui.text.hover.CMacroExpansionExploration">
</section>
</section>

View File

@ -0,0 +1,208 @@
#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) {
}
}

View File

@ -0,0 +1,212 @@
#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) {
}
}

View File

@ -0,0 +1,252 @@
#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) {
}
}

View File

@ -0,0 +1,268 @@
#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+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) {
}
}

View File

@ -0,0 +1,264 @@
#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) {
}
}

View File

@ -0,0 +1,266 @@
#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) {
}
}

View File

@ -0,0 +1,247 @@
#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) {
}
}

View File

@ -0,0 +1,252 @@
#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) {
}
}

View File

@ -0,0 +1,213 @@
#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) {
}
}

View File

@ -0,0 +1,208 @@
#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) {
}
}

View File

@ -0,0 +1,208 @@
#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) {
}
}

View File

@ -0,0 +1,210 @@
#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) {
}
}

View File

@ -0,0 +1,202 @@
#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) {
}
}

View File

@ -0,0 +1,199 @@
#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) {
}
}

View File

@ -0,0 +1,256 @@
#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) {
}
}

View File

@ -0,0 +1,268 @@
#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) {
}
}

View File

@ -0,0 +1,230 @@
#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) {
}
}

View File

@ -0,0 +1,232 @@
#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) {
}
}

View File

@ -0,0 +1,268 @@
#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) {
}
}

View File

@ -0,0 +1,268 @@
#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) {
}
}

View File

@ -0,0 +1,260 @@
#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) {
}
}

View File

@ -0,0 +1,204 @@
#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) {
}
}

View File

@ -0,0 +1,202 @@
#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) {
}
}

View File

@ -0,0 +1,258 @@
#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) {
}
}

View File

@ -0,0 +1,231 @@
#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) {
}
}

View File

@ -0,0 +1,248 @@
#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) {
}
}

View File

@ -0,0 +1,211 @@
#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) {
}
}

View File

@ -0,0 +1,213 @@
#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) {
}
}

View File

@ -0,0 +1,230 @@
#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) {
}
}

View File

@ -0,0 +1,265 @@
#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);
for (int y = 0; y < (45+2); ++y) {
Xint16 temp = (y << 8);
for (int 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);
for (int 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) {
}
}

View File

@ -0,0 +1,198 @@
#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) {
}
}

View File

@ -0,0 +1,246 @@
#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) {
}
}

View File

@ -0,0 +1,252 @@
#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) {
}
}

View File

@ -0,0 +1,267 @@
#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 y;
int x;
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);
for (int 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) {
}
}

View File

@ -0,0 +1,212 @@
#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) {
}
}

View File

@ -0,0 +1,202 @@
#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) {
}
}

View File

@ -0,0 +1,198 @@
#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) {
}
}

View File

@ -0,0 +1,264 @@
#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) {
}
}

View File

@ -0,0 +1,231 @@
#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) {
}
}

View File

@ -0,0 +1,205 @@
#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) {
}
}

View File

@ -0,0 +1,228 @@
#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) {
}
}

View File

@ -0,0 +1,209 @@
#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) {
}
}

View File

@ -0,0 +1,252 @@
#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) {
}
}

View File

@ -0,0 +1,256 @@
#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) {
}
}

View File

@ -0,0 +1,212 @@
#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) {
}
}

View File

@ -0,0 +1,268 @@
#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) {
}
}

View File

@ -0,0 +1,220 @@
#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) {
}
}

View File

@ -0,0 +1,205 @@
#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) {
}
}

View File

@ -0,0 +1,220 @@
#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) {
}
}

View File

@ -0,0 +1,269 @@
#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+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) {
}
}

View File

@ -0,0 +1,3 @@
eclipse.preferences.version=1
macros/workspace=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<macros/>\n
org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=true

View File

@ -0,0 +1,3 @@
eclipse.preferences.version=1
indexer/preferenceScope=0
language.settings.providers.disabled=true

View File

@ -0,0 +1,3 @@
eclipse.preferences.version=1
indexer/preferenceScope=0
language.settings.providers.disabled=true

View File

@ -0,0 +1,2 @@
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\="&lt;?xml version\=&quot;1.0&quot; encoding\=&quot;UTF-8&quot; standalone\=&quot;no&quot;?&gt;&\#10;&lt;project referencedProjects\=&quot;true&quot;/&gt;&\#10;" typeId\="org.eclipse.cdt.debug.core.containerType.project"/>\n</sourceContainers>\n</sourceLookupDirector>\n

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.cdt.make.core.scanner.discovery.console.enabled=false

View File

@ -0,0 +1,5 @@
eclipse.preferences.version=1
properties/LED_Controller.xilinx.gnu.mb.exe.1814969487/xilinx.gnu.mb.exe.debug.32422249=\#\n\#Mon Sep 21 19\:24\:22 CEST 2020\nxilinx.gnu.mb.c.toolchain.linker.debug.963016491\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.1526133289.453942197\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.32422249.1916704164\=\\\#\\n\\\#Mon Sep 21 19\\\:13\\\:04 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\\\#Mon Sep 21 19\\\:13\\\:04 CEST 2020\\nrcState\\\=-1\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.compiler.debug.1526133289\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.size.debug.1827824083\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\: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\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.elfcheck.mb.debug.497589591\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\: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\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.debug.toolchain.1375698673\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.assembler.debug.503356807\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.cxx.toolchain.compiler.debug.2077065818\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.704915466\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:22 CEST 2020\\nrebuildState\\\=true\\n\n
properties/LED_Controller.xilinx.gnu.mb.exe.1814969487/xilinx.gnu.mb.exe.release.1608365019=\#\n\#Mon Sep 21 19\:24\:18 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\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.elfcheck.mb.release.2093836222\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 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\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.cxx.toolchain.compiler.release.623808407\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.1608365019\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 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\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.size.release.805765542\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.1608365019.2101405724\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.exe.release.toolchain.449620394\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\norg.eclipse.cdt.managedbuilder.ui.rcbs.941823551\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=true\\n\nxilinx.gnu.mb.c.toolchain.linker.release.948464890\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 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\\\#Mon Sep 21 19\\\:24\\\:18 CEST 2020\\nrebuildState\\\=false\\n\nxilinx.gnu.mb.c.toolchain.compiler.release.1363891138\=\\\#\\n\\\#Mon Sep 21 19\\\:24\\\:18 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

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
spelling_locale_initialized=true
useAnnotationsPrefPage=true
useQuickDiffPrefPage=true

View File

@ -0,0 +1,3 @@
buildConsole/keepLog=true
buildConsole/logLocation=/home/tim/Projects/z80/hdmi-mb/.metadata/.plugins/org.eclipse.cdt.ui/Graphics.build.log
eclipse.preferences.version=1

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
version=1

View File

@ -0,0 +1,5 @@
//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

View File

@ -0,0 +1,3 @@
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|

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none

Some files were not shown because too many files have changed in this diff Show More