From f5c8abcc1813bd46dafc28de4422c4262843228b Mon Sep 17 00:00:00 2001 From: tixiv Date: Sun, 28 Dec 2008 21:49:28 +0000 Subject: [PATCH] weitergem8 --- COMPILING.txt | 27 ++++++ compat/eeprom.h | 2 +- config.h | 2 +- defaults.mk | 16 ++- random/noekeon_asm.S | 6 +- rules.mk | 3 - scrolltext/config.in | 1 - scrolltext/scrolltext3.c | 6 ++ simulator/i386pe.x | 204 +++++++++++++++++++++++++++++++++++++++ simulator/main.c | 14 +-- 10 files changed, 256 insertions(+), 25 deletions(-) create mode 100644 COMPILING.txt create mode 100644 simulator/i386pe.x diff --git a/COMPILING.txt b/COMPILING.txt new file mode 100644 index 0000000..5a2b7ad --- /dev/null +++ b/COMPILING.txt @@ -0,0 +1,27 @@ + +**** Ubuntu Linux ***** +To Compile for the AVR you'll need the packages gcc-avr and avr-libc. You'll +also need gcc and libncurses to be able to use menuconfig. To use the simulator +you'll also need libglut. + +Type +$ make menuconfig +and set your settings or load one of the default profiles. Then type +$ make +to compile for the avr. You can upload the image to a borg-16's serial +bootloader (foodloader) by typing +$ make sflash +. + + +****Windows XP**** +Under Windows you'll need to install the following things: +-WinAVR +-Cygwin with the following packages: +--gcc +--libncurses-devel +--make (the one that WinAVR delivers doesn't work right) +--opengl (for the simulator) + +now go to the cygwin bash shell and use the same commands as with Linux to +compile and flash. diff --git a/compat/eeprom.h b/compat/eeprom.h index 28b9b62..8cca008 100644 --- a/compat/eeprom.h +++ b/compat/eeprom.h @@ -13,6 +13,6 @@ uint16_t eeprom_read_word (const uint16_t *p); #define eeprom_busy_wait() - #define EEMEM + #define EEMEM __attribute__((section(".eeprom"))) #endif diff --git a/config.h b/config.h index 52aba5e..f2253fc 100644 --- a/config.h +++ b/config.h @@ -18,7 +18,7 @@ //#define SCROLL_X_SPEED 20 //#define SCROLL_Y_SPEED 20 -#define BORG_CAN +//#define BORG_CAN // spi.[ch] defines #define SPI_HARDWARE diff --git a/defaults.mk b/defaults.mk index 941a530..f266235 100644 --- a/defaults.mk +++ b/defaults.mk @@ -27,11 +27,19 @@ LDFLAGS += -mmcu=$(MCU) ############################################################################# #Settings for Simulator build -CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2 -LDFLAGS_SIM = -Wl -#LIBS_SIM = -lglut -lpthread -lGL -lGLU -LIBS_SIM = -lglut32 -lglu32 -lopengl32 +OSTYPE = $(shell echo $$OSTYPE) +#$(info $(OSTYPE)) + +ifeq ($(OSTYPE),cygwin) + CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2 -D_WIN32 -mno-cygwin + LDFLAGS_SIM = -Wl -mno-cygwin -T simulator/i386pe.x + LIBS_SIM = -lglut32 -lglu32 -lopengl32 +else + CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2 + LDFLAGS_SIM = -Wl + LIBS_SIM = -lglut -lpthread -lGL -lGLU +endif ############################################################################## # the default target diff --git a/random/noekeon_asm.S b/random/noekeon_asm.S index 5b23292..98a11e3 100644 --- a/random/noekeon_asm.S +++ b/random/noekeon_asm.S @@ -183,9 +183,9 @@ void theta(uint32_t* k, uint32_t* a){ } */ -round_const: .byte 0x1B, 0x36, 0x6C, 0xD8, 0xAB, 0x4D, 0x9A, \ - 0x2F, 0x5E, 0xBC, 0x63, 0xC6, 0x97, 0x35, 0x6A, \ - 0xD4 +round_const: .byte 0x1B, 0x36, 0x6C, 0xD8, 0xAB, 0x4D, 0x9A, \ + 0x2F, 0x5E, 0xBC, 0x63, 0xC6, 0x97, 0x35, 0x6A, \ + 0xD4 ;-- a[0] state0_0 = 2 diff --git a/rules.mk b/rules.mk index 9502d22..cbe88c1 100644 --- a/rules.mk +++ b/rules.mk @@ -40,9 +40,6 @@ objects_sim: $(OBJECTS_SIM) - - - clean-common: $(RM) $(TARGET) *.[odasE] *.d.new *~ $(RM) -r ./obj_avr diff --git a/scrolltext/config.in b/scrolltext/config.in index bee4d83..70e1225 100644 --- a/scrolltext/config.in +++ b/scrolltext/config.in @@ -8,7 +8,6 @@ choice 'Scrolltext Font' \ 'Arial_8' SCROLLTEXT_FONT int "Scrolltest buffer size" SCROLLTEXT_BUFFER_SIZE 128 -int "Scrolltext default delay" SCROLLTEXT_DELAY 60 int "Default x speed" SCROLL_X_SPEED 20 int "Default y speed" SCROLL_Y_SPEED 20 diff --git a/scrolltext/scrolltext3.c b/scrolltext/scrolltext3.c index c2942c7..c7e9608 100644 --- a/scrolltext/scrolltext3.c +++ b/scrolltext/scrolltext3.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "../config.h" #include "scrolltext.h" @@ -16,6 +17,11 @@ #define MAX_FONTS 1 font fonts[MAX_FONTS]; #define MAX_SPECIALCOLORS 3 + +#ifndef AVR + #define strtok_r(s,d,l) strtok(s,d) +#endif + unsigned char PROGMEM colorTable[MAX_SPECIALCOLORS*NUM_ROWS] = {1, 1, 2, 3, 3, 2, 1, 1, 3, 3, 2, 1, 1, 2, 3, 3, 3, 3, 2, 2, 3, 3, 2, 2 diff --git a/simulator/i386pe.x b/simulator/i386pe.x new file mode 100644 index 0000000..cfbfcbf --- /dev/null +++ b/simulator/i386pe.x @@ -0,0 +1,204 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT(pei-i386) +SEARCH_DIR("/usr/i686-pc-cygwin/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/lib/w32api"); +SECTIONS +{ + . = 0; + /*.eeprom (NOLOAD) : { *.(eeprom) }*/ + /* Make the virtual address and file offset synced if the alignment is + lower than the target page size. */ + . = SIZEOF_HEADERS; + . = ALIGN(__section_alignment__); + .text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) : + { + *(.init) + *(.text) + *(SORT(.text$*)) + *(.glue_7t) + *(.glue_7) + ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; + LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); + ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; + LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); + *(.fini) + /* ??? Why is .gcc_exc here? */ + *(.gcc_exc) + PROVIDE (etext = .); + *(.gcc_except_table) + } + /* The Cygwin32 library uses a section to avoid copying certain data + on fork. This used to be named ".data". The linker used + to include this between __data_start__ and __data_end__, but that + breaks building the cygwin32 dll. Instead, we name the section + ".data_cygwin_nocopy" and explictly include it after __data_end__. */ + .data BLOCK(__section_alignment__) : + { + __data_start__ = . ; + *(.data) + *(.data2) + *(SORT(.data$*)) + *(.jcr) + __data_end__ = . ; + *(.data_cygwin_nocopy) + } + .rdata BLOCK(__section_alignment__) : + { + *(.rdata) + *(SORT(.rdata$*)) + *(.eh_frame) + ___RUNTIME_PSEUDO_RELOC_LIST__ = .; + __RUNTIME_PSEUDO_RELOC_LIST__ = .; + *(.rdata_runtime_pseudo_reloc) + ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; + __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; + } + .pdata BLOCK(__section_alignment__) : + { + *(.pdata) + } + .bss BLOCK(__section_alignment__) : + { + __bss_start__ = . ; + *(.bss) + *(COMMON) + __bss_end__ = . ; + } + .edata BLOCK(__section_alignment__) : + { + *(.edata) + } + /DISCARD/ : + { + *(.debug$S) + *(.debug$T) + *(.debug$F) + *(.drectve) + } + .idata BLOCK(__section_alignment__) : + { + /* This cannot currently be handled with grouped sections. + See pe.em:sort_sections. */ + SORT(*)(.idata$2) + SORT(*)(.idata$3) + /* These zeroes mark the end of the import list. */ + LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); + SORT(*)(.idata$4) + SORT(*)(.idata$5) + SORT(*)(.idata$6) + SORT(*)(.idata$7) + } + .CRT BLOCK(__section_alignment__) : + { + ___crt_xc_start__ = . ; + *(SORT(.CRT$XC*)) /* C initialization */ + ___crt_xc_end__ = . ; + ___crt_xi_start__ = . ; + *(SORT(.CRT$XI*)) /* C++ initialization */ + ___crt_xi_end__ = . ; + ___crt_xl_start__ = . ; + *(SORT(.CRT$XL*)) /* TLS callbacks */ + /* ___crt_xl_end__ is defined in the TLS Directory support code */ + ___crt_xp_start__ = . ; + *(SORT(.CRT$XP*)) /* Pre-termination */ + ___crt_xp_end__ = . ; + ___crt_xt_start__ = . ; + *(SORT(.CRT$XT*)) /* Termination */ + ___crt_xt_end__ = . ; + } + .tls BLOCK(__section_alignment__) : + { + ___tls_start__ = . ; + *(.tls) + *(.tls$) + *(SORT(.tls$*)) + ___tls_end__ = . ; + } + .endjunk BLOCK(__section_alignment__) : + { + /* end is deprecated, don't use it */ + PROVIDE (end = .); + PROVIDE ( _end = .); + __end__ = .; + } + .rsrc BLOCK(__section_alignment__) : + { + *(.rsrc) + *(SORT(.rsrc$*)) + } + .reloc BLOCK(__section_alignment__) : + { + *(.reloc) + } + .stab BLOCK(__section_alignment__) (NOLOAD) : + { + *(.stab) + } + .stabstr BLOCK(__section_alignment__) (NOLOAD) : + { + *(.stabstr) + } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section. Unlike other targets that fake this by putting the + section VMA at 0, the PE format will not allow it. */ + /* DWARF 1.1 and DWARF 2. */ + .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_aranges) + } + .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_pubnames) + } + /* DWARF 2. */ + .debug_info BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_info) *(.gnu.linkonce.wi.*) + } + .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_abbrev) + } + .debug_line BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_line) + } + .debug_frame BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_frame) + } + .debug_str BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_str) + } + .debug_loc BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_loc) + } + .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_macinfo) + } + /* SGI/MIPS DWARF 2 extensions. */ + .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_weaknames) + } + .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_funcnames) + } + .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_typenames) + } + .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_varnames) + } + /* DWARF 3. */ + .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : + { + *(.debug_ranges) + } +} diff --git a/simulator/main.c b/simulator/main.c index 1da7b0a..c634133 100644 --- a/simulator/main.c +++ b/simulator/main.c @@ -1,4 +1,6 @@ +#include +#include #ifdef _WIN32 # include @@ -18,24 +20,12 @@ # include #endif -#include -#include #include "../config.h" #include "../display_loop.h" #include "../pixel.h" -//#include "programm.h" -//#include "menu.h" -//#include "../tetris/logic.h" #include "trackball.h" -//#include "../games/snake.h" -//#include "stonefly.h" - -//#include "scrolltext.h" - - unsigned char fakeport; -jmp_buf newmode_jmpbuf; volatile unsigned char oldMode, oldOldmode, mode; extern unsigned char waitForFire;