ページへ戻る
印刷
hideyosi/osalink1でお勉強2
をテンプレートにして作成 ::
OSASK計画
osaskwiki
:hideyosi/osalink1でお勉強2 をテンプレートにして作成
開始行:
*osalink1を.g01化!
-なんで?
--osalink1は簡単そうだからだ! <絶対痛い目見るぞコイ...
*メイクの流れ
.g01アプリはコンパイルの流れが今までと違う。こういう流れ...
hijk sjisconv sjis in:ターゲット.c out:ターゲット.ca
28GOcc1 -I../z_tools/guigui01/ -Os -Wall -quiet -o ター...
hijk gas2nask -a D:4 -A in:ターゲット.gas out:ターゲット...
hijk Nasuka in:ターゲット.nas out:ターゲット.obj
hijk obj2bim rul:../z_tools/guigui01/guigui01.rul out:タ...
rlm:ターゲット.rlm ../z_tools/guigui01/g01libc0.l...
../z_tools/guigui01/g01libc1.lib
hijk bim2g01 ターゲット.bim ターゲット.org ターゲット.rlm
hijk tekmin0 ターゲット.org ターゲット.nho
bim2bin -osacmp in:ターゲット.nho out:ターゲット.nh5
hijk tekmin1 -efg01-noadc ターゲット.nh5 ターゲット.g01
まずはとにかく、Makefileをこう書き換えて、いきなりメイク...
include ../z_tools/command.txt
TARGET = osalink1
MODE = g01
OBJS = $(TARGET).obj
INCPATH = ../z_tools/guigui01/
include ../z_tools/com_mak.txt
*28GOcc1の段階でエラーがドバーっと!
-#include <guigui01.h>
--まず最初。このプログラムは.g01。その意味においては、''...
-GO1Main
--.g01アプリの最初の関数はこれになる。
osalink1.ca: In function `G01Main':
osalink1.ca:51: warning: implicit declaration of functio...
まずはこれ。string.hをインクルードすればOK。
osalink1.ca:52: warning: implicit declaration of functio...
あっれぇ?guigui01には、fprintf関数がない・・・ぞ?~
うーん困ったな。解説書も見当たらないや・・・・しょうがな...
jg01_fwrite1f_5 ←こういう命令で読み書きをしてるのが解っ...
[[ここ>http://osask.net/w/201.html]]に手がかりがあったが...
**一旦棚上げ(毎度乙!)
fprintfって、ファイルに書き込む命令でそ? [[こっち>http:...
**再開・・・
まずはこういう手の表記。
FILE *fp0, *fp1;
.g01では''スロット''というものを使ってファイルハンドルと...
// OPTIONFILEの読み込みと各ファイルのサイズ取得
fp0 = fopen(optfile, "r");
if (fp0 == NULL) {
fprintf(stderr, "Can't open \"%s\".\n", optfile);
return 1;
}
ここでosalink1.optを開いてるよね。これを・・・・
// OPTIONFILEの読み込みと各ファイルのサイズ取得
char *buffer1 = g01_bss1a1;
jg01_fopen(1, 4, optfile);
jg01_fread0_4(2 * 1024 * 1024, buffer1);
if (strlen(buffer1) == 0) {
g01_putstr0("Can't open optfile\n");
return 1;
}
こういうことでいいのかな・・・
COLOR(red){ちょっと面白いこと発見。このosalink1は、元々内...
g01のapiでは、''一行読み込み''はない。すでにbuffer1内に全...
改行コードを元に、自分で配列とかを作って割ってやらないと...
//まずは改行コードを一旦統一する
for ( i = 0; i < strlen(buffer1); i++){
//とりあえずLFに統一するか・・・
if (buffer1[i] == 0x0D) buffer1[i] = 0x0A;
//これで、CRが全部LFに置換されるはず。
}
//先頭にある邪魔なLFなどを排除するため、開始地点を探っ...
int stppoint; stppoint = 0;
for ( i =0; i < strlen(buffer1); i++){
if ( buffer1[i] != 0x0A ){
stppoint = i;
break;
}
}
//これでもし先頭にLFがあっても全て飛ばした位置から開始...
//新しい配列変数を確保する。
int ii2; ii2 = 0;
int lfs; lfs = 0;
unsigned char files[strlen(buffer1)+1];
for ( i = stppoint; i < strlen(buffer1); i++){
if ( buffer1[i] == 0x0A && buffer1[i-1] == 0x0A ){
// 連続したLFだったらシカトして進める。
}
else {
if ( buffer1[i] == 0x0A ){
files[ii2] = 0;
lfs++;
}
else {
files[ii2] = buffer1[i];
}
ii2++;
// LFを終端コードに置換
}
}
//最後に終端コードを打っておく
files[ii2+1] = 0;
//これで、0によって区切られた配列になったはず。
//files配列内の、0の位置を記憶する配列を用意する。
//厳密には0の前。行頭というべきか・・・
int zeropoint[lfs + 1];
//↑の処理で先頭は必ず行頭になってるはずなので・・・
zeropoint[0]=0;
int i3; i3 = 1;
for (i = 1; i < ii2 +1; i++){
if (files[i] != 0 && files[i-1] == 0){
//ここが行頭になるはず。位置を記憶
zeropoint[i3] = i;
i3++;
}
}
//これで、有効な行数はi3個。lfpointが行の先頭になってい...
for ( i = 0; i < i3; i++){
g01_putstr0(files + zeropoint[i] ); g01_putstr0("\n");
}
これでどおぉぉぉだあぁぁぁ!! コンツクショー!!! (...
*とりあえず動いたぞ(笑
[[この辺>http://sourceforge.jp/projects/osask/svn/view/28...
あとはコマンドラインを受け取れるようにしたいんだが・・・...
*ダメだ。一旦固める!
コマンドライン引数のファイルパスタイプの「規定値」がどう...
-COLOR(blue){・・・どうも、intタイプ以外のコマンドライン...
-COLOR(red){があぁぁぁん! testslot関数は廃止されている...
-COLOR(red){・・・まいったなぁ・・・g01アプリでは、''ファ...
- 確認しました。testslotは無効にされているようです(#ifdef...
終了行:
*osalink1を.g01化!
-なんで?
--osalink1は簡単そうだからだ! <絶対痛い目見るぞコイ...
*メイクの流れ
.g01アプリはコンパイルの流れが今までと違う。こういう流れ...
hijk sjisconv sjis in:ターゲット.c out:ターゲット.ca
28GOcc1 -I../z_tools/guigui01/ -Os -Wall -quiet -o ター...
hijk gas2nask -a D:4 -A in:ターゲット.gas out:ターゲット...
hijk Nasuka in:ターゲット.nas out:ターゲット.obj
hijk obj2bim rul:../z_tools/guigui01/guigui01.rul out:タ...
rlm:ターゲット.rlm ../z_tools/guigui01/g01libc0.l...
../z_tools/guigui01/g01libc1.lib
hijk bim2g01 ターゲット.bim ターゲット.org ターゲット.rlm
hijk tekmin0 ターゲット.org ターゲット.nho
bim2bin -osacmp in:ターゲット.nho out:ターゲット.nh5
hijk tekmin1 -efg01-noadc ターゲット.nh5 ターゲット.g01
まずはとにかく、Makefileをこう書き換えて、いきなりメイク...
include ../z_tools/command.txt
TARGET = osalink1
MODE = g01
OBJS = $(TARGET).obj
INCPATH = ../z_tools/guigui01/
include ../z_tools/com_mak.txt
*28GOcc1の段階でエラーがドバーっと!
-#include <guigui01.h>
--まず最初。このプログラムは.g01。その意味においては、''...
-GO1Main
--.g01アプリの最初の関数はこれになる。
osalink1.ca: In function `G01Main':
osalink1.ca:51: warning: implicit declaration of functio...
まずはこれ。string.hをインクルードすればOK。
osalink1.ca:52: warning: implicit declaration of functio...
あっれぇ?guigui01には、fprintf関数がない・・・ぞ?~
うーん困ったな。解説書も見当たらないや・・・・しょうがな...
jg01_fwrite1f_5 ←こういう命令で読み書きをしてるのが解っ...
[[ここ>http://osask.net/w/201.html]]に手がかりがあったが...
**一旦棚上げ(毎度乙!)
fprintfって、ファイルに書き込む命令でそ? [[こっち>http:...
**再開・・・
まずはこういう手の表記。
FILE *fp0, *fp1;
.g01では''スロット''というものを使ってファイルハンドルと...
// OPTIONFILEの読み込みと各ファイルのサイズ取得
fp0 = fopen(optfile, "r");
if (fp0 == NULL) {
fprintf(stderr, "Can't open \"%s\".\n", optfile);
return 1;
}
ここでosalink1.optを開いてるよね。これを・・・・
// OPTIONFILEの読み込みと各ファイルのサイズ取得
char *buffer1 = g01_bss1a1;
jg01_fopen(1, 4, optfile);
jg01_fread0_4(2 * 1024 * 1024, buffer1);
if (strlen(buffer1) == 0) {
g01_putstr0("Can't open optfile\n");
return 1;
}
こういうことでいいのかな・・・
COLOR(red){ちょっと面白いこと発見。このosalink1は、元々内...
g01のapiでは、''一行読み込み''はない。すでにbuffer1内に全...
改行コードを元に、自分で配列とかを作って割ってやらないと...
//まずは改行コードを一旦統一する
for ( i = 0; i < strlen(buffer1); i++){
//とりあえずLFに統一するか・・・
if (buffer1[i] == 0x0D) buffer1[i] = 0x0A;
//これで、CRが全部LFに置換されるはず。
}
//先頭にある邪魔なLFなどを排除するため、開始地点を探っ...
int stppoint; stppoint = 0;
for ( i =0; i < strlen(buffer1); i++){
if ( buffer1[i] != 0x0A ){
stppoint = i;
break;
}
}
//これでもし先頭にLFがあっても全て飛ばした位置から開始...
//新しい配列変数を確保する。
int ii2; ii2 = 0;
int lfs; lfs = 0;
unsigned char files[strlen(buffer1)+1];
for ( i = stppoint; i < strlen(buffer1); i++){
if ( buffer1[i] == 0x0A && buffer1[i-1] == 0x0A ){
// 連続したLFだったらシカトして進める。
}
else {
if ( buffer1[i] == 0x0A ){
files[ii2] = 0;
lfs++;
}
else {
files[ii2] = buffer1[i];
}
ii2++;
// LFを終端コードに置換
}
}
//最後に終端コードを打っておく
files[ii2+1] = 0;
//これで、0によって区切られた配列になったはず。
//files配列内の、0の位置を記憶する配列を用意する。
//厳密には0の前。行頭というべきか・・・
int zeropoint[lfs + 1];
//↑の処理で先頭は必ず行頭になってるはずなので・・・
zeropoint[0]=0;
int i3; i3 = 1;
for (i = 1; i < ii2 +1; i++){
if (files[i] != 0 && files[i-1] == 0){
//ここが行頭になるはず。位置を記憶
zeropoint[i3] = i;
i3++;
}
}
//これで、有効な行数はi3個。lfpointが行の先頭になってい...
for ( i = 0; i < i3; i++){
g01_putstr0(files + zeropoint[i] ); g01_putstr0("\n");
}
これでどおぉぉぉだあぁぁぁ!! コンツクショー!!! (...
*とりあえず動いたぞ(笑
[[この辺>http://sourceforge.jp/projects/osask/svn/view/28...
あとはコマンドラインを受け取れるようにしたいんだが・・・...
*ダメだ。一旦固める!
コマンドライン引数のファイルパスタイプの「規定値」がどう...
-COLOR(blue){・・・どうも、intタイプ以外のコマンドライン...
-COLOR(red){があぁぁぁん! testslot関数は廃止されている...
-COLOR(red){・・・まいったなぁ・・・g01アプリでは、''ファ...
- 確認しました。testslotは無効にされているようです(#ifdef...
ページ名: