2013年8月11日日曜日

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラムです。

X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須です
(ないと読み込み異常を起こします)。

現在のWindows上の各種テキストエディタやXcodeはEOFを付加しないので、
それを付けるのがこのプログラムです。

一応ここでもソースコードを公開しますが、 X-BASIC/68用なので、X-BASIC/68またはぺけ-BASIC上で動かさないと無意味です(保存時はSHIFT-JISで)。

それと、高速化を何も考慮してないので、かなり遅いです。 必要なら、BC.Xでコンパイルしてくださいまし。


/* X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム
/* X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須である。
/* (ないと異常動作を起こす。)
/* ぺけ-BASICはサイズでも認識するのでなくても問題ない。X-BASIC for iOSも同様。
/* 現在のWindows上のエディタやXcodeはEOFを付加しないので、それを付けるのがこのプログラム。
/* これはX-BASIC/68またはぺけ-BASIC上で動かさないと無意味。
/*
print "X-BASIC/68でサンプルプログラムを正常読み込みさせるため、"
print "BASICプログラムファイルの終端に&h1aのコードを付加します。"
int fp,ofp
int c,cc
str fname,ofname
input "ファイル名(拡張子.bas不要)";fname
ofname=fname+"_1a.bas"
 fname= fname+".bas"
print "出力ファイル名:";ofname
print "開始するには何かキーを押してください"
while inkey$(0)="":endwhile
print "しばらくお待ちください"
/*
fp=fopen(fname,"r")
if fp<0 then {
 print "ファイルが見つかりません:";fname
 end
}
ofp=fopen(ofname,"c")
if ofp<0 then {
 fclose(fp)
 print "ファイルが作成できません:";ofname
 end
}
cc=-1
while 1
 c=fgetc(fp)
 if c<0 then break
 fputc(c,ofp)
 cc=c:/*1つ前の出力文字
endwhile
if cc<>&h1a then fputc(&h1a,ofp)
fclose(ofp)
fclose(fp)
print "終了しました"
end

X68用なので、LZHで圧縮しています。
LZHファイル : add1a.lzh

ちなみに、ぺけ-BASICはサイズでも認識するのでなくても問題ありません。
X-BASIC for iOSも同様です。

0 件のコメント:

コメントを投稿