home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 5 / FREESOFT.BIN / fb386 / icnmerge / icnmerge.bas next >
BASIC Source File  |  1992-08-19  |  5KB  |  100 lines

  1. 1000 '/*
  2. 1010 '/* アイコンファイル連結ユーティリティ ver 0.01
  3. 1020 '/* last update : 1992.01.21
  4. 1030 '/*
  5. 1040 '/*  Produced by Maki 1992 F-BASIC386 L20にて作成しました。
  6. 1050 '/*※  連結するアイコンファイルのID番号は元アイコンファイルのIDの続き
  7. 1060 '/*    になります。64x64より大きいアイコンファイルを連結すると「アイコ
  8. 1070 '/*      ン編集」で読めないので注意。
  9. 1080 '
  10. 1090 '/* ====== 初期設定 ======
  11. 1100 CLEAR : ON ERROR GOTO *ERR
  12. 1110 Z8$ = "00000000" : Z4$ = "0000" : SIZEMAX1 = 0 : SIZEMAX2 = 0
  13. 1120 DEF FNCH(A$) = VAL("&H" + HEX$(ASC(RIGHT$(A$,1))) + RIGHT$(Z4$ + HEX$(ASC(A$)),2))
  14. 1130 DEF FNCH$(A) = CHR$(VAL("&H" + RIGHT$(RIGHT$(Z4$ + HEX$(A),4),2))) + CHR$(VAL("&H" + LEFT$(RIGHT$(Z4$ + HEX$(A),4),2)))
  15. 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))
  16. 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)))
  17. 1160 '/* ====== ファイルオープン ======
  18. 1170 PRINT " アイコンファイル連結ユーティリティ ver0.01 by Maki 1992"
  19. 1180 *OPEN
  20. 1190 LINE INPUT "アイコンのファイル名(.ICN)をどうぞ(拡張子は不要) >",A$
  21. 1200 LINE INPUT "連結するアイコンのファイル名(.ICN)をどうぞ >",B$
  22. 1210 LINE INPUT "作成するアイコンのファイル名(.ICN) >",C$
  23. 1220 OPEN "I",#1,A$+".ICN"
  24. 1230 OPEN "I",#2,B$+".ICN"
  25. 1240 OPEN "O",#3,C$+".ICN"
  26. 1250 PRINT "作成中…… by Maki  ";
  27. 1260 '/* ====== ヘッダ ======
  28. 1270 I$ = INPUT$(&H20,#1)
  29. 1280 J$ = INPUT$(&H20,#2)
  30. 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)) 
  31. 1300 TABLE = TABLE1 + TABLE2 : ICNNUM = ICNNUM1 + ICNNUM2
  32. 1310 A = &H20 : B = FNCH(MID$(I$,13,2)) * &H20 : C = FNCH(MID$(I$,15,2)) * &H30
  33. 1320 E = &H20 : F = FNCH(MID$(J$,13,2)) * &H20 : G = FNCH(MID$(J$,15,2)) * &H30
  34. 1330 PRINT #3,MID$(I$,1,12) + FNCH$(TABLE) + FNCH$(ICNNUM) + FNCHL$(A + B + F) + MID$(I$,21,12);
  35. 1340 PRINT "@";
  36. 1350 '/* ====== アイコンテーブル ======
  37. 1360 FOR I = 1 TO TABLE1
  38. 1370     I$ = INPUT$(&H20,#1)
  39. 1380     ID = FNCH(MID$(I$,1,2))
  40. 1390     TABLEICN = FNCH(MID$(I$,3,2))
  41. 1400     SIZE = FNCH(MID$(I$,7,2)) 
  42. 1410     SIZEMAX1 = SIZEMAX1 + (SIZE * TABLEICN)
  43. 1420     J$ = FNCHL$(FNCHL(MID$(I$,9,4)) + F)
  44. 1430     K$ = FNCHL$(FNCHL(MID$(I$,13,4)) + F + G)
  45. 1440     PRINT #3,MID$(I$,1,8) + J$ + K$ + MID$(I$,17,16);
  46. 1450 NEXT I
  47. 1460 D = FNCHL(MID$(I$,13,4)) + (SIZE * TABLEICN) - A - B - C
  48. 1470 ID = ID + TABLEICN : ID2 = ID
  49. 1480 FOR I = 1 TO TABLE2
  50. 1490     I$ = INPUT$(&H20,#2)
  51. 1500     TABLEICN = FNCH(MID$(I$,3,2))
  52. 1510     SIZE = FNCH(MID$(I$,7,2))
  53. 1520     SIZEMAX2 = SIZEMAX2 + (SIZE * TABLEICN)
  54. 1530     J$ = FNCHL$(FNCHL(MID$(I$,9,4)) + B + C)
  55. 1540     K$ = FNCHL$(FNCHL(MID$(I$,13,4)) + B + C + D)
  56. 1550     L$ = FNCH$(ID)
  57. 1560     ID = ID + TABLEICN
  58. 1570     PRINT #3,L$ + MID$(I$,3,6) + J$ + K$ + MID$(I$,17,16);
  59. 1580 NEXT I
  60. 1590 PRINT "@";
  61. 1600 '/* ====== 詳細アイコン情報 ======
  62. 1610 FOR I = 1 TO ICNNUM1
  63. 1620     I$ = INPUT$(&H30,#1)
  64. 1630     J$ = FNCHL$(FNCHL(MID$(I$,21,4)) + F + G)
  65. 1640     PRINT #3,MID$(I$,1,20) + J$ + MID$(I$,25,26);
  66. 1650 NEXT I
  67. 1660 FOR I = 1 TO ICNNUM2
  68. 1670     I$ = INPUT$(&H30,#2)
  69. 1680     J$ = FNCHL$(FNCHL(MID$(I$,21,4)) + B + C + D)
  70. 1690     L$ = FNCH$(ID2+I-1)
  71. 1700     PRINT #3,L$ + MID$(I$,3,18) + J$ + MID$(I$,25,26);
  72. 1710 NEXT I
  73. 1720 PRINT "@";
  74. 1730 '/*  ====== ベタでーた出力 ======
  75. 1740 WHILE SIZEMAX1 > 255
  76. 1750     SIZEMAX1 = SIZEMAX1 - 255
  77. 1760     I$ = INPUT$(255,#1)
  78. 1770     PRINT #3,I$; : PRINT "@";
  79. 1780 WEND
  80. 1790 I$ = INPUT$(SIZEMAX1,#1) : PRINT #3,I$;
  81. 1800 WHILE SIZEMAX2 > 255
  82. 1810     SIZEMAX2 = SIZEMAX2 - 255
  83. 1820     I$ = INPUT$(255,#2)
  84. 1830     PRINT #3,I$; : PRINT "@";
  85. 1840 WEND
  86. 1850 I$ = INPUT$(SIZEMAX2,#2) : PRINT #3,I$;
  87. 1860 '/* ====== おしまい ======
  88. 1870 PRINT CHR$(&H0A) + CHR$(&H0D) + C$ + ".ICN" + "を作成しました。"
  89. 1880 PRINT "ご利用ありがとうございます。(^_^)"
  90. 1890 CLOSE : END
  91. 1900 '/* ====== エラー処理 =======
  92. 1910 *ERR
  93. 1920 IF ERR = 64 THEN PRINT "指定のファイルは既に存在していますよぉ" : RESUME *OPEN
  94. 1930 IF ERR = 63 THEN PRINT "指定のファイルがみつからないよぉ(;_;)" : RESUME *OPEN
  95. 1940 IF ERR = 55 THEN PRINT "ファイル名が変^^;  " : RESUME *OPEN
  96. 1950 PRINT "エラーがでました(;_;)強制終了しますよー"
  97. 1960 PRINT "エラー番号";ERR : PRINT "エラー行番号";ERL
  98. 1970 CLOSE : END
  99. 1980 '/* ============= End of ICNLINK.BAS ============
  100.