2: 2009-11-17 (火) 12:07:28 |
現: 2024-01-08 (月) 12:58:57 lina |
- | *これはなにか? | + | TITLE:x |
| + | *これはなにか? [#o78e6234] |
| hideyosiが、ASKAをLinuxに移植しようともくろんであれやこれやと弄くりまわした時の記録です。こんな文章でもどなたかのご参考くらいにはなるかもしれないと思い、恥を忍んで公開しています。 | | hideyosiが、ASKAをLinuxに移植しようともくろんであれやこれやと弄くりまわした時の記録です。こんな文章でもどなたかのご参考くらいにはなるかもしれないと思い、恥を忍んで公開しています。 |
| -すこし読んでいただければすぐにわかると思いますが、私はC、ましてやC++なんて出来ません。ヒーヒー言いながらGoogleで調べながらやってみました。 | | -すこし読んでいただければすぐにわかると思いますが、私はC、ましてやC++なんて出来ません。ヒーヒー言いながらGoogleで調べながらやってみました。 |
| | | |
| えーと・・長過ぎるので、コメントはこのへんにでも。 (^^;) | | えーと・・長過ぎるので、コメントはこのへんにでも。 (^^;) |
- | #comment | + | |
| | | |
| | | |
| ---- | | ---- |
| | | |
- | *Linuxに移植してみよう! でも、そのまえに・・・ | + | *Linuxに移植してみよう! でも、そのまえに・・・ [#x602c91a] |
| -まずは、Windowsでコンパイルしてみる。 | | -まずは、Windowsでコンパイルしてみる。 |
| --そもそも、私はCとかがよくわからない。また、Linuxだってそんなによくわかるわけでもないのだ。そこで、まずは移植以前に、本来のプラットホームであるWindows上でコンパイルを実体験してみよう。 | | --そもそも、私はCとかがよくわからない。また、Linuxだってそんなによくわかるわけでもないのだ。そこで、まずは移植以前に、本来のプラットホームであるWindows上でコンパイルを実体験してみよう。 |
| | | |
| | | |
- | *ASKAをLinuxに移植する試み | + | *ASKAをLinuxに移植する試み [#ta91bdc1] |
| さて、上記のような作業を通してちょっとだけものが解ったつもりになった私は、Linuxへの移植にチョッカイを出しました。 | | さて、上記のような作業を通してちょっとだけものが解ったつもりになった私は、Linuxへの移植にチョッカイを出しました。 |
| | | |
| -一応。 ''makefile'' を、 ''Makefile''にリネームしておく。 | | -一応。 ''makefile'' を、 ''Makefile''にリネームしておく。 |
| | | |
- | ***俺は乱暴ものだ!! | + | ***俺は乱暴ものだ!! [#xb792714] |
| -そういうわけで、とりあえず下準備はOKなのだ。さて、どうするかっていうと・・・・いきなりメイクじゃ!! | | -そういうわけで、とりあえず下準備はOKなのだ。さて、どうするかっていうと・・・・いきなりメイクじゃ!! |
| | | |
| | | |
| | | |
- | ***残りの6個のcppファイルをコンパイルテスト | + | ***残りの6個のcppファイルをコンパイルテスト [#i3f52905] |
| --まず、ここいらあたりから。さっそく単品コンパイル。 | | --まず、ここいらあたりから。さっそく単品コンパイル。 |
| | | |
| module.h:11: io.h: ?????????????????????? | | module.h:11: io.h: ?????????????????????? |
| ~/aska/ensrc$ | | ~/aska/ensrc$ |
| + | |
| ~/aska/ensrc$ gcc -O2 -c module.cpp | | ~/aska/ensrc$ gcc -O2 -c module.cpp |
| In file included from module.cpp:2: | | In file included from module.cpp:2: |
| module.h:11: io.h: ?????????????????????? | | module.h:11: io.h: ?????????????????????? |
| ~/aska/ensrc$ | | ~/aska/ensrc$ |
| + | |
| ~/aska/ensrc$ gcc -O2 -c parser.cpp | | ~/aska/ensrc$ gcc -O2 -c parser.cpp |
| In file included from parser.h:21, | | In file included from parser.h:21, |
| module.h:11: io.h: ?????????????????????? | | module.h:11: io.h: ?????????????????????? |
| ~/aska/ensrc$ | | ~/aska/ensrc$ |
| + | |
| ~/aska/ensrc$ gcc -O2 -c generator.cpp | | ~/aska/ensrc$ gcc -O2 -c generator.cpp |
| In file included from generator.h:21, | | In file included from generator.h:21, |
| module.h:11: io.h: ?????????????????????? | | module.h:11: io.h: ?????????????????????? |
| ~/aska/ensrc$ | | ~/aska/ensrc$ |
| + | |
| ~/aska/ensrc$ gcc -O2 -c module.cpp | | ~/aska/ensrc$ gcc -O2 -c module.cpp |
| In file included from module.cpp:2: | | In file included from module.cpp:2: |
| module.h:11: io.h: ?????????????????????? | | module.h:11: io.h: ?????????????????????? |
| ~/aska/ensrc$ | | ~/aska/ensrc$ |
| + | |
| ~/aska/ensrc$ gcc -O2 -c main.cpp | | ~/aska/ensrc$ gcc -O2 -c main.cpp |
| In file included from parser.h:21, | | In file included from parser.h:21, |
| | | |
| | | |
- | ***さて、手始めに、 scanner.cpp あたりから。 | + | ***さて、手始めに、 scanner.cpp あたりから。 [#yf286b9f] |
| -ではでは。さっそくコンパイルしてみる。 | | -ではでは。さっそくコンパイルしてみる。 |
| | | |
| | | |
| | | |
- | ***おっしゃぁ! 次は、parser.cpp じゃ! | + | ***おっしゃぁ! 次は、parser.cpp じゃ! [#c3b66e10] |
| -さっそくコンパイル。 | | -さっそくコンパイル。 |
| | | |
| | | |
| | | |
- | ***module.cpp いってみようか! | + | ***module.cpp いってみようか! [#z575a9da] |
| -コンパイルすると、 | | -コンパイルすると、 |
| | | |
| #include <string.h> | | #include <string.h> |
| #include "module.h" | | #include "module.h" |
| + | |
| //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | | //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ |
| string Module::MakeFullPath(string& p){ | | string Module::MakeFullPath(string& p){ |
| #include <string.h> | | #include <string.h> |
| #include "module.h" | | #include "module.h" |
| + | |
| #include <sys/stat.h> | | #include <sys/stat.h> |
| int filelength (int fd) | | int filelength (int fd) |
| return st.st_size; | | return st.st_size; |
| } | | } |
| + | |
| //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | | //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ |
| string Module::MakeFullPath(string& p){ | | string Module::MakeFullPath(string& p){ |
| | | |
| | | |
- | ***generator.cpp いくぞー! | + | ***generator.cpp いくぞー! [#a3e780ae] |
| -コンパイル。 | | -コンパイル。 |
| | | |
| | | |
| 45行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | | 45行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); |
| + | |
| 68行目 strcat(buf, ltoa(param.scale, buf2, 10)); | | 68行目 strcat(buf, ltoa(param.scale, buf2, 10)); |
| + | |
| 79行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | | 79行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); |
| ''↓'' | | ''↓'' |
| 45行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | | 45行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); |
| + | |
| 68行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | | 68行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); |
| + | |
| 79行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | | 79行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); |
| -よーし。これでいいかな。コンパイル。 | | -よーし。これでいいかな。コンパイル。 |
| | | |
| 45行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | | 45行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); |
| + | |
| 68行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | | 68行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); |
| + | |
| 79行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | | 79行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); |
| -さーて、こんどこそ大丈夫かな。 | | -さーて、こんどこそ大丈夫かな。 |
| | | |
| 510行目 strcpy(buf, buf1); strcat(buf, ","); strcat(buf, itoa(x, buf2, 10)); | | 510行目 strcpy(buf, buf1); strcat(buf, ","); strcat(buf, itoa(x, buf2, 10)); |
| + | |
| 554行目 strcat(buf, ","); strcat(buf, itoa(x, buf1, 10)); | | 554行目 strcat(buf, ","); strcat(buf, itoa(x, buf1, 10)); |
| + | |
| 722行目 OutputMASM("#local", "equ", itoa(sysvarlocalvalue, buf, 10), ""); | | 722行目 OutputMASM("#local", "equ", itoa(sysvarlocalvalue, buf, 10), ""); |
| ''↓'' | | ''↓'' |
| 510行目 strcpy(buf, buf1); strcat(buf, ","); sprintf(buf2,"%d",x);strcat(buf, buf2); | | 510行目 strcpy(buf, buf1); strcat(buf, ","); sprintf(buf2,"%d",x);strcat(buf, buf2); |
| + | |
| 554行目 strcat(buf, ","); sprintf(buf1,"%d",x);strcat(buf, buf1); | | 554行目 strcat(buf, ","); sprintf(buf1,"%d",x);strcat(buf, buf1); |
| + | |
| 722行目 sprintf(buf,"%d",sysvarlocalvalue);OutputMASM("#local", "equ", buf, ""); | | 722行目 sprintf(buf,"%d",sysvarlocalvalue);OutputMASM("#local", "equ", buf, ""); |
| -いよーし!!。これでコンパイル、完了!!! | | -いよーし!!。これでコンパイル、完了!!! |
| | | |
- | ***うおぉぉ! table.cpp じゃ! | + | ***うおぉぉ! table.cpp じゃ! [#xa806b31] |
| -さーて・・・こいつはどこ修正するのかなぁ・・・ | | -さーて・・・こいつはどこ修正するのかなぁ・・・ |
| | | |
| -・・・・あれ? 通っちゃった・・・ ひえぇーー!! | | -・・・・あれ? 通っちゃった・・・ ひえぇーー!! |
| | | |
- | *** main.cpp キタ━━━━(゚∀゚)━━━━ッ!! | + | *** main.cpp キタ━━━━(゚∀゚)━━━━ッ!! [#i26f33ee] |
| -いくぞ!! ラスト! | | -いくぞ!! ラスト! |
| | | |
| -え?つーことは???。全コンパイル、いけるのか! いっけるのくあぁぁぁ!? | | -え?つーことは???。全コンパイル、いけるのか! いっけるのくあぁぁぁ!? |
| | | |
- | ***ASKAちゃん、大地に立つ! | + | ***ASKAちゃん、大地に立つ! [#k316a419] |
| -えーと・・・。そんなわけで、これでとりあえず、LinuxでASKAがコンパイルできます。ただ、このままメイクすると、aska.exe になっちゃうんで、 makefile を一部修正。44行目ね。 | | -えーと・・・。そんなわけで、これでとりあえず、LinuxでASKAがコンパイルできます。ただ、このままメイクすると、aska.exe になっちゃうんで、 makefile を一部修正。44行目ね。 |
| | | |
| CPPFLAGS = | | CPPFLAGS = |
| PGNAME = aska.exe | | PGNAME = aska.exe |
| + | |
| # | | # |
| # SRC Directory | | # SRC Directory |
| CPPFLAGS = | | CPPFLAGS = |
| PGNAME = aska | | PGNAME = aska |
| + | |
| # | | # |
| # SRC Directory | | # SRC Directory |
| -ASKAか・・・・ なにもかもがみななつかすい・・・・・(T∀T) | | -ASKAか・・・・ なにもかもがみななつかすい・・・・・(T∀T) |
| | | |
- | *ASKA、新たなる旅立ち | + | *ASKA、新たなる旅立ち [#f5c48c38] |
| -さてさて、そーゆーわけで、ついにASKAがコンパイルできましたが、はたして、これは動くのでしょうか??? | | -さてさて、そーゆーわけで、ついにASKAがコンパイルできましたが、はたして、これは動くのでしょうか??? |
| -そんなわけで、とりあえず tolset05.lzh に付属の hello0.ask と、hellok0.ask を当ててみました。 | | -そんなわけで、とりあえず tolset05.lzh に付属の hello0.ask と、hellok0.ask を当ててみました。 |
| | | |
| | | |
- | *ASKA 発動編---- | + | *ASKA 発動編---- [#ka7f7eca] |
| -そんなわけでコンパイルに成功し、またとりあえず簡単な動作実験を行った。なんかいけそうだ。 | | -そんなわけでコンパイルに成功し、またとりあえず簡単な動作実験を行った。なんかいけそうだ。 |
| -そんな折、T.Takさんからもコンパイル成功の一報が入る。 | | -そんな折、T.Takさんからもコンパイル成功の一報が入る。 |
| ---- | | ---- |
| | | |
- | *一応報告(I.Tak.) | + | *一応報告(I.Tak.) [#ia32cac4] |
| -LinuxでASKAをコンパイルだけすることに成功しました。 | | -LinuxでASKAをコンパイルだけすることに成功しました。 |
| --module.h(多分): #include <io.h> を #include <sys/io.h> に変更 | | --module.h(多分): #include <io.h> を #include <sys/io.h> に変更 |
| HRESULT Module::ReadLine(LPSTR buf){ | | HRESULT Module::ReadLine(LPSTR buf){ |
| int i; | | int i; |
| + | |
| if(lpMdlPos == NULL) return 3; | | if(lpMdlPos == NULL) return 3; |
| if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | | if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; |
| HRESULT Module::ReadLine(LPSTR buf){ | | HRESULT Module::ReadLine(LPSTR buf){ |
| int i; | | int i; |
| + | |
| if(lpMdlPos == NULL) return 3; | | if(lpMdlPos == NULL) return 3; |
| if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | | if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; |
| for(i = 0; i < 1023; i++){ | | for(i = 0; i < 1023; i++){ |
| // if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | | // if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ |
| + | |
| if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | | if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ |
| *buf = '\0'; | | *buf = '\0'; |
| return 0; // 1行終了(DOS) | | return 0; // 1行終了(DOS) |
| } | | } |
| + | |
| if(*lpMdlPos == 0x0A || *lpMdlPos == 0x0D){ | | if(*lpMdlPos == 0x0A || *lpMdlPos == 0x0D){ |
| *buf = '\0'; | | *buf = '\0'; |
| return 0; // 1行終了(UNIX or MAC) | | return 0; // 1行終了(UNIX or MAC) |
| } | | } |
| + | |
| *(buf++) = *(lpMdlPos++); | | *(buf++) = *(lpMdlPos++); |
| } | | } |
| | | |
| | | |
- | *ASKA めぐり合い宇宙編 | + | *ASKA めぐり合い宇宙編 [#ve101142] |
| -これで、ほぼASKAをLinuxに移植することは成功だと思う。(逆に、これ以上の部分に問題があった場合、もうそろそろ私には手におえないものだろう。) | | -これで、ほぼASKAをLinuxに移植することは成功だと思う。(逆に、これ以上の部分に問題があった場合、もうそろそろ私には手におえないものだろう。) |
| -I.Takさんが最後に清書してくれた版を、ASKAのページにて公開している。現在は、最後の動作実験のためtest版だが、おそらくこれが完成版となるだろう。 | | -I.Takさんが最後に清書してくれた版を、ASKAのページにて公開している。現在は、最後の動作実験のためtest版だが、おそらくこれが完成版となるだろう。 |
| -この検証が終われば、I.Takさんが書いてくれたhistoryやらなんやらもひとまとめにして、Kタンに「どんなもんじゃろ?これ?」と提案してみるつもりである。 | | -この検証が終われば、I.Takさんが書いてくれたhistoryやらなんやらもひとまとめにして、Kタンに「どんなもんじゃろ?これ?」と提案してみるつもりである。 |