OSDN Git Service

supported Linux environment
authornaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sun, 13 Jun 2010 20:10:25 +0000 (20:10 +0000)
committernaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Sun, 13 Jun 2010 20:10:25 +0000 (20:10 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@361 24ea1065-a21e-4ca1-99c9-f5125deb0858

client/trunk/anago/Makefile
client/trunk/anago/anago.c
client/trunk/anago/progress.c
client/trunk/anago/script_dump.c
client/trunk/anago/script_flash.c
client/trunk/reader_kazzo.c
client/trunk/reader_master.h
client/trunk/unagi.txt
client/trunk/usb_device.c

index 516cac7..89c3f65 100644 (file)
@@ -1,10 +1,10 @@
-all: anago.exe
+all: anago
 LIBUSB = d:/dev/LibUSB-Win32
-SQUIRREL = ../SQUIRREL2
+SQUIRREL = ../../SQUIRREL2
 KAZZO = ../../kazzo/firmware
 VPATH = ..
-#CFLAGS = -g -O0
-CFLAGS = -O2 -DNDEBUG
+CFLAGS = -g -O0
+#CFLAGS = -O2 -DNDEBUG
 CFLAGS += -Wall -Werror -I.. -I$(LIBUSB)/include -I$(SQUIRREL)/include -I$(KAZZO) -DDEBUG=1 -DANAGO=1
 LDFLAG = -L. -L$(LIBUSB)/lib/gcc -L$(SQUIRREL)/lib
 CC = gcc
@@ -14,7 +14,7 @@ OBJ = anago.o header.o crc32.o file.o \
        reader_dummy.o reader_kazzo.o usb_device.o squirrel_wrap.o memory_manage.o
 clean:
        rm -f $(OBJ)
-anago.exe: $(OBJ) 
+anago: $(OBJ) 
        g++ -o $@ $(LDFLAG) $(OBJ) -lusb -lsqstdlib -lsquirrel
 
 script_flash.o: squirrel_wrap.h
index 4a53110..b0e417e 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdbool.h>
+#include <stdlib.h> //atoi()
 #include "memory_manage.h"
 #include "type.h"
 #include "flash_device.h"
index 6a5976c..966a534 100644 (file)
@@ -2,7 +2,9 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <stdbool.h>
-#include <windows.h>
+#ifdef WIN32
+  #include <windows.h>
+#endif
 #include "progress.h"
 
 void progress_init(void)
@@ -43,22 +45,22 @@ static void draw(const char *name, long offset, long count)
 }
 void progress_draw(long program_offset, long program_count, long charcter_offset, long charcter_count)
 {
-       if(0){
+#ifdef WIN32
+       HANDLE c;
+       CONSOLE_SCREEN_BUFFER_INFO info;
+       c = GetStdHandle(STD_OUTPUT_HANDLE);
+       if(GetConsoleScreenBufferInfo(c, &info) == 0){
+               //command.com, cygwin shell, mingw shell
                printf("\x1b[2A\x1b[35D");
        }else{
-               HANDLE c;
-               CONSOLE_SCREEN_BUFFER_INFO info;
-               c = GetStdHandle(STD_OUTPUT_HANDLE);
-               if(GetConsoleScreenBufferInfo(c, &info) == 0){
-                       //command.com, cygwin shell, mingw shell
-                       printf("\x1b[2A\x1b[35D");
-               }else{
-                       //cmd.exe
-                       info.dwCursorPosition.X = 0;
-                       info.dwCursorPosition.Y -= 2;
-                       SetConsoleCursorPosition(c, info.dwCursorPosition);
-               }
+               //cmd.exe
+               info.dwCursorPosition.X = 0;
+               info.dwCursorPosition.Y -= 2;
+               SetConsoleCursorPosition(c, info.dwCursorPosition);
        }
+#else
+       printf("\x1b[2A\x1b[35D");
+#endif
        draw("program memory ", program_offset, program_count);
        draw("charcter memory", charcter_offset, charcter_count);
        fflush(stdout);
index 00b971c..bb23285 100644 (file)
@@ -1,5 +1,6 @@
 #include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include <squirrel.h>
 #include <sqstdio.h>
 #include <sqstdaux.h>
@@ -23,7 +24,7 @@ struct dump_driver{
        uint8_t (*const vram_connection)(void);
        bool progress;
 };
-static SQInteger write(HSQUIRRELVM v, struct memory_driver *t)
+static SQInteger write_memory(HSQUIRRELVM v, struct memory_driver *t)
 {
        long address, data;
        SQRESULT r = qr_argument_get(v, 2, &address, &data);
@@ -41,7 +42,7 @@ static SQInteger cpu_write(HSQUIRRELVM v)
        if(SQ_FAILED(r)){
                return r;
        }
-       return write(v, &d->cpu);
+       return write_memory(v, &d->cpu);
 }
 
 static void buffer_show(struct memory *t, long length)
@@ -82,7 +83,7 @@ static void progress_show(struct dump_driver *d)
                progress_draw(d->cpu.memory.offset, d->cpu.memory.size, d->ppu.memory.offset, d->ppu.memory.size);
        }
 }
-static SQInteger read(HSQUIRRELVM v, struct memory_driver *t, bool progress)
+static SQInteger read_memory(HSQUIRRELVM v, struct memory_driver *t, bool progress)
 {
        long address, length;
        SQRESULT r = qr_argument_get(v, 2, &address, &length);
@@ -103,7 +104,7 @@ static SQInteger cpu_read(HSQUIRRELVM v)
        if(SQ_FAILED(r)){
                return r;
        }
-       r = read(v, &d->cpu, d->progress);
+       r = read_memory(v, &d->cpu, d->progress);
        progress_show(d);
        return r;
 }
@@ -115,7 +116,7 @@ static SQInteger ppu_read(HSQUIRRELVM v)
        if(SQ_FAILED(r)){
                return r;
        }
-       r = read(v, &d->ppu, d->progress);
+       r = read_memory(v, &d->ppu, d->progress);
        progress_show(d);
        return r;
 }
index ae037b2..5d8b449 100644 (file)
@@ -1,5 +1,6 @@
 #include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include <squirrel.h>
 #include <sqstdio.h>
 #include <sqstdaux.h>
@@ -91,7 +92,7 @@ static SQInteger ppu_command(HSQUIRRELVM v)
        }
        return command_set(v, &d->order_ppu);
 }
-static SQInteger write(HSQUIRRELVM v, struct anago_flash_order *t)
+static SQInteger write_memory(HSQUIRRELVM v, struct anago_flash_order *t)
 {
        long address, data;
        SQRESULT r = qr_argument_get(v, 2, &address, &data);
@@ -109,7 +110,7 @@ static SQInteger cpu_write(HSQUIRRELVM v)
        if(SQ_FAILED(r)){
                return r;
        }
-       return write(v, &d->order_cpu);
+       return write_memory(v, &d->order_cpu);
 }
 static SQInteger erase_set(HSQUIRRELVM v, struct anago_flash_order *t, const char *region)
 {
@@ -234,11 +235,11 @@ static SQInteger erase_wait(HSQUIRRELVM v)
                if(timer_wait < timer_ppu){
                        timer_wait = timer_ppu;
                }
-               Sleep(timer_wait);
+               wait(timer_wait);
        }else{
                uint8_t s[2];
                do{
-                       Sleep(2);
+                       wait(2);
                        d->flash_status(s);
                //ËÜÍè¤Î°Õ¿Þ¤«¤é¤Ç¤Ï¤³¤³¤Î¾ò·ï¼°¤Ï && ¤Ç¤Ï¤Ê¤¯ || ¤À¤¬¡¢Àè¤Ë erase ¤¬½ª¤ï¤Ã¤¿¥Ç¥Ð¥¤¥¹¤¬Æ°¤«¤»¤ë¤Î¤Ç»Ä¤·¤Æ¤ª¤¯
                }while((s[0] != KAZZO_TASK_FLASH_IDLE) && (s[1] != KAZZO_TASK_FLASH_IDLE));
@@ -290,7 +291,7 @@ static SQInteger program_main(HSQUIRRELVM v)
        while((state_cpu != SQ_VMSTATE_IDLE) || (state_ppu != SQ_VMSTATE_IDLE)){
                uint8_t s[2];
                bool console_update = false;
-               Sleep(sleepms);
+               wait(sleepms);
                d->flash_status(s);
                if(state_cpu != SQ_VMSTATE_IDLE && s[0] == KAZZO_TASK_FLASH_IDLE){
                        if(program_memoryarea(co_cpu, &d->order_cpu, d->compare, "program", &state_cpu, &console_update) == false){
index 83bc08d..c64894a 100644 (file)
@@ -1,4 +1,5 @@
 #include <assert.h>
+#include <string.h>
 #include <stdlib.h>
 #include <usb.h>
 #include <kazzo_request.h>
@@ -51,7 +52,7 @@ static void device_read(usb_dev_handle *handle, enum request r, enum index index
                handle, 
                USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 
                r, address, 
-               index, data, length, TIMEOUT
+               index, (char *) data, length, TIMEOUT
        );
        if(cnt != length){
                puts(__FUNCTION__);
@@ -98,7 +99,7 @@ static void device_write(usb_dev_handle *handle, enum request w, enum index inde
                handle, 
                USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,
                w, address, 
-               index, d, length, TIMEOUT
+               index, (char *) d, length, TIMEOUT
        );
        if(cnt != length){
                puts(__FUNCTION__);
index f92d7ec..93da71b 100644 (file)
@@ -1,7 +1,12 @@
 #ifndef _READER_MASTER_H_
 #define _READER_MASTER_H_
 #include "type.h"
-#include <windows.h>
+#ifdef WIN32
+ #include <windows.h>
+#else
+ #include <unistd.h>
+#endif
+
 //C++ ¤Î Class ¤â¤É¤­¤ò C ¤Ç¼ÂÁõ¤·¤Æ¤¤¤ë´¶¤¬Áý¤·¤Æ¤­¤¿...
 enum reader_control{
        READER_OPEN, READER_CLOSE
@@ -56,6 +61,10 @@ static inline void wait(long msec)
        if(msec == 0){
                return;
        }
+#ifdef WIN32
        Sleep(msec);
+#else
+       usleep(msec * 1000);
+#endif
 }
 #endif
index 162d9ab..5708591 100644 (file)
@@ -1,8 +1,7 @@
 famicom ROM cartridge utility - unagi
-client version 0.6.0
+client version 0.6.x
 by 鰻開発協同組合
 公式サイト http://unagi.sourceforge.jp/
-掲示板     http://unagi.sourceforge.jp/t/bbs.html
 
 --はじめに--
 famicom ROM cartridge のデータ転送を行います。 ハードウェアは国内で有
index acdd2ee..7729942 100644 (file)
@@ -117,6 +117,7 @@ int usbOpenDevice(
        usb_dev_handle *handle = NULL;
        int errorCode = USBOPEN_ERR_NOTFOUND;
 
+    usb_init();
     usb_find_busses();
     usb_find_devices();
     for(bus = usb_get_busses(); bus; bus = bus->next){