home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 5
/
FREESOFT.BIN
/
fb386
/
icnmerge
/
icnmerge.bas
next >
Wrap
BASIC Source File
|
1992-08-19
|
5KB
|
100 lines
1000 '/*
1010 '/* アイコンファイル連結ユーティリティ ver 0.01
1020 '/* last update : 1992.01.21
1030 '/*
1040 '/* Produced by Maki 1992 F-BASIC386 L20にて作成しました。
1050 '/*※ 連結するアイコンファイルのID番号は元アイコンファイルのIDの続き
1060 '/* になります。64x64より大きいアイコンファイルを連結すると「アイコ
1070 '/* ン編集」で読めないので注意。
1080 '
1090 '/* ====== 初期設定 ======
1100 CLEAR : ON ERROR GOTO *ERR
1110 Z8$ = "00000000" : Z4$ = "0000" : SIZEMAX1 = 0 : SIZEMAX2 = 0
1120 DEF FNCH(A$) = VAL("&H" + HEX$(ASC(RIGHT$(A$,1))) + RIGHT$(Z4$ + HEX$(ASC(A$)),2))
1130 DEF FNCH$(A) = CHR$(VAL("&H" + RIGHT$(RIGHT$(Z4$ + HEX$(A),4),2))) + CHR$(VAL("&H" + LEFT$(RIGHT$(Z4$ + HEX$(A),4),2)))
1140 DEF FNCHL(A$) = VAL("&H" + HEX$(ASC(MID$(A$,4,1))) + RIGHT$(Z4$ + HEX$(ASC(MID$(A$,3,1))),2) + RIGHT$(Z4$ + HEX$(ASC(MID$(A$,2,1))),2) + RIGHT$(Z4$ + HEX$(ASC(A$)),2))
1150 DEF FNCHL$(A) = CHR$(VAL("&H" + RIGHT$(RIGHT$(Z8$ + HEX$(A),8),2)),VAL("&H" + MID$(RIGHT$(Z8$ + HEX$(A),8),5,2)),VAL("&H" + MID$(RIGHT$(Z8$ + HEX$(A),8),3,2)),VAL("&H" + LEFT$(RIGHT$(Z8$ + HEX$(A),8),2)))
1160 '/* ====== ファイルオープン ======
1170 PRINT " アイコンファイル連結ユーティリティ ver0.01 by Maki 1992"
1180 *OPEN
1190 LINE INPUT "アイコンのファイル名(.ICN)をどうぞ(拡張子は不要) >",A$
1200 LINE INPUT "連結するアイコンのファイル名(.ICN)をどうぞ >",B$
1210 LINE INPUT "作成するアイコンのファイル名(.ICN) >",C$
1220 OPEN "I",#1,A$+".ICN"
1230 OPEN "I",#2,B$+".ICN"
1240 OPEN "O",#3,C$+".ICN"
1250 PRINT "作成中…… by Maki ";
1260 '/* ====== ヘッダ ======
1270 I$ = INPUT$(&H20,#1)
1280 J$ = INPUT$(&H20,#2)
1290 TABLE1 = FNCH(MID$(I$,13,2)) : TABLE2 = FNCH(MID$(J$,13,2)) : ICNNUM1 = FNCH(MID$(I$,15,2)) : ICNNUM2 = FNCH(MID$(J$,15,2))
1300 TABLE = TABLE1 + TABLE2 : ICNNUM = ICNNUM1 + ICNNUM2
1310 A = &H20 : B = FNCH(MID$(I$,13,2)) * &H20 : C = FNCH(MID$(I$,15,2)) * &H30
1320 E = &H20 : F = FNCH(MID$(J$,13,2)) * &H20 : G = FNCH(MID$(J$,15,2)) * &H30
1330 PRINT #3,MID$(I$,1,12) + FNCH$(TABLE) + FNCH$(ICNNUM) + FNCHL$(A + B + F) + MID$(I$,21,12);
1340 PRINT "@";
1350 '/* ====== アイコンテーブル ======
1360 FOR I = 1 TO TABLE1
1370 I$ = INPUT$(&H20,#1)
1380 ID = FNCH(MID$(I$,1,2))
1390 TABLEICN = FNCH(MID$(I$,3,2))
1400 SIZE = FNCH(MID$(I$,7,2))
1410 SIZEMAX1 = SIZEMAX1 + (SIZE * TABLEICN)
1420 J$ = FNCHL$(FNCHL(MID$(I$,9,4)) + F)
1430 K$ = FNCHL$(FNCHL(MID$(I$,13,4)) + F + G)
1440 PRINT #3,MID$(I$,1,8) + J$ + K$ + MID$(I$,17,16);
1450 NEXT I
1460 D = FNCHL(MID$(I$,13,4)) + (SIZE * TABLEICN) - A - B - C
1470 ID = ID + TABLEICN : ID2 = ID
1480 FOR I = 1 TO TABLE2
1490 I$ = INPUT$(&H20,#2)
1500 TABLEICN = FNCH(MID$(I$,3,2))
1510 SIZE = FNCH(MID$(I$,7,2))
1520 SIZEMAX2 = SIZEMAX2 + (SIZE * TABLEICN)
1530 J$ = FNCHL$(FNCHL(MID$(I$,9,4)) + B + C)
1540 K$ = FNCHL$(FNCHL(MID$(I$,13,4)) + B + C + D)
1550 L$ = FNCH$(ID)
1560 ID = ID + TABLEICN
1570 PRINT #3,L$ + MID$(I$,3,6) + J$ + K$ + MID$(I$,17,16);
1580 NEXT I
1590 PRINT "@";
1600 '/* ====== 詳細アイコン情報 ======
1610 FOR I = 1 TO ICNNUM1
1620 I$ = INPUT$(&H30,#1)
1630 J$ = FNCHL$(FNCHL(MID$(I$,21,4)) + F + G)
1640 PRINT #3,MID$(I$,1,20) + J$ + MID$(I$,25,26);
1650 NEXT I
1660 FOR I = 1 TO ICNNUM2
1670 I$ = INPUT$(&H30,#2)
1680 J$ = FNCHL$(FNCHL(MID$(I$,21,4)) + B + C + D)
1690 L$ = FNCH$(ID2+I-1)
1700 PRINT #3,L$ + MID$(I$,3,18) + J$ + MID$(I$,25,26);
1710 NEXT I
1720 PRINT "@";
1730 '/* ====== ベタでーた出力 ======
1740 WHILE SIZEMAX1 > 255
1750 SIZEMAX1 = SIZEMAX1 - 255
1760 I$ = INPUT$(255,#1)
1770 PRINT #3,I$; : PRINT "@";
1780 WEND
1790 I$ = INPUT$(SIZEMAX1,#1) : PRINT #3,I$;
1800 WHILE SIZEMAX2 > 255
1810 SIZEMAX2 = SIZEMAX2 - 255
1820 I$ = INPUT$(255,#2)
1830 PRINT #3,I$; : PRINT "@";
1840 WEND
1850 I$ = INPUT$(SIZEMAX2,#2) : PRINT #3,I$;
1860 '/* ====== おしまい ======
1870 PRINT CHR$(&H0A) + CHR$(&H0D) + C$ + ".ICN" + "を作成しました。"
1880 PRINT "ご利用ありがとうございます。(^_^)"
1890 CLOSE : END
1900 '/* ====== エラー処理 =======
1910 *ERR
1920 IF ERR = 64 THEN PRINT "指定のファイルは既に存在していますよぉ" : RESUME *OPEN
1930 IF ERR = 63 THEN PRINT "指定のファイルがみつからないよぉ(;_;)" : RESUME *OPEN
1940 IF ERR = 55 THEN PRINT "ファイル名が変^^; " : RESUME *OPEN
1950 PRINT "エラーがでました(;_;)強制終了しますよー"
1960 PRINT "エラー番号";ERR : PRINT "エラー行番号";ERL
1970 CLOSE : END
1980 '/* ============= End of ICNLINK.BAS ============