home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 1 / FREEWARE.BIN / basic / itemedit / itemedit.bas next >
BASIC Source File  |  1989-10-17  |  6KB  |  154 lines

  1. 10 '********************************************************************
  2. 20 '*                                                                  *
  3. 30 '*       アイテムパターン編集ツール V1.0      by N.Watanabe         *
  4. 40 '*                                                                  *
  5. 50 '*                                                                  *
  6. 60 '*  機能    : TOWNS-MENUの『表示-アイテム表示』で表示されるアイ     *
  7. 70 '*            コンをエディトするツールです。                         *
  8. 80 '*                                                                  *
  9. 90 '*  使用方法: TOWNSシステムソフトウェアCD中の『TMENU.ICN』をFPDに   *
  10. 100 '*            コピーし、本ツール動作時のカレントディレクトリに置い  *
  11. 110 '*            て使って下さい。                                       *
  12. 120 '*            編集したパターンは『スペシャル-アイテム登録』で使用   *
  13. 130 '*            することがてきます。                                   *
  14. 140 '*                                                                  *
  15. 150 '*  注意!!  : にわか作りのため少々バグや仕様不備があるかと思います。 *
  16. 160 '*            お気付きの点はメールにてお願いします。                 *
  17. 170 '*            なお、『TMENU.ICN』のファイルフォーマットについては当  *
  18. 180 '*            方の独自解析によるものですので、メーカーさんに対する   *
  19. 190 '*            問い合わせ等は御遠慮願います。                         *
  20. 200 '*                                                                  *
  21. 210 '********************************************************************
  22. 220 DIM FD&(32),P%(32*32),FC&(128,32):CLS:N$=CHR$(0)
  23. 230 OPEN "I",#1,"TMENU.ICN"
  24. 240 FOR I=1 TO 128
  25. 250   F$=INPUT$(128,#1):IF F$=STRING$(128,&H0) THEN 310
  26. 260   FOR L%=0 TO 31
  27. 270     FD&(L%)=CVL(MID$(F$,4,1)+MID$(F$,3,1)+MID$(F$,2,1)+MID$(F$,1,1))
  28. 280     F$=MID$(F$,5,128)
  29. 290     FC&(I,L%)=FD&(L%)
  30. 300   NEXT L%
  31. 310 F$=INPUT$(128,1):NEXT I:CLOSE
  32. 320 CN=0:FOR X=0 TO 600 STEP 40
  33. 330 FOR Y=0 TO 40*7 STEP 40
  34. 340 LINE (X,Y)-(X+33,Y+33),PSET,1,B:NEXT:NEXT
  35. 350 FOR I=1 TO 128
  36. 360   XC%=(CN MOD 16)*40:YC%=(CN \ 16)*40:CN=CN+1
  37. 370   FOR L%=0 TO 31
  38. 380     FD&(L%)=FC&(I,L%)
  39. 390   NEXT L%
  40. 400   PUT@ (XC%+1,YC%+1)-(XC%+32,YC%+32),FD&,PSET
  41. 410 NEXT I
  42. 420 LOCATE 0,20:PRINT "編集するアイテムパターンを選んで下さい"
  43. 430 LOCATE 0,22:PRINT "終了"
  44. 440 LINE (0,22*19-2)-(4*8,23*19),PSET,1,B
  45. 450 MOUSE 0
  46. 460 MOUSE 1,310,20*16,1
  47. 470 IF MOUSE(2,0)=-1 THEN 470
  48. 480 IF MOUSE(2,0)=0 THEN 480
  49. 490 X=MOUSE(4,0):Y=MOUSE(5,0)
  50. 500 IF (X>=0 AND X<=4*8)AND(Y>=22*19-2 AND Y<=23*19) THEN 530
  51. 510 X=INT(X/40):Y=INT(Y/40)
  52. 520 IF Y>7 THEN 470 ELSE 540
  53. 530 CLOSE:SYSTEM
  54. 540 LINE (X*40+1,Y*40+1)-(X*40+32,Y*40+32),XOR,1,BF
  55. 550 REC=X+Y*16+1
  56. 560 OPEN "R",1,"(256)TMENU.ICN"
  57. 570 FIELD #1,128 AS F$,128 AS DMY$
  58. 580 GET #1,REC:FF$=F$
  59. 590 CLS
  60. 600 FOR X=0 TO 320 STEP 10:CONNECT (X,0)-(X,320),1:CONNECT (0,X)-(320,X),1:NEXT
  61. 610 CN=0
  62. 620 FOR I=1 TO 128
  63. 630 A=ASC(MID$(FF$,I,1))
  64. 640 FOR B=1 TO 8
  65. 650 X=(CN MOD 32)*10:Y=(CN \ 32)*10
  66. 660 IF (A AND &H80)=&H80 THEN LINE (X,Y)-(X+10,Y+10),PSET,1,BF,7:P%(CN)=1 ELSE P%(CN)=0
  67. 670 CN=CN+1:A=A*2
  68. 680 NEXT:NEXT
  69. 690   FOR L%=0 TO 31
  70. 700     FD&(L%)=CVL(MID$(FF$,4,1)+MID$(FF$,3,1)+MID$(FF$,2,1)+MID$(FF$,1,1))
  71. 710     FF$=MID$(FF$,5,128)
  72. 720   NEXT L%
  73. 730 LOCATE 44,0:PRINT "実物大"
  74. 740   PUT@ (360,30)-(391,61),FD&,PSET
  75. 750 RESTORE 810:FOR Y=0 TO 2 
  76. 760 LINE (500,Y*30)-(639,Y*30+30),PSET,4,BF,1
  77. 770 READ A$
  78. 780 SYMBOL (525,Y*30+10),A$,2,1,0
  79. 790 SYMBOL (521,Y*30+7),A$,2,1,7
  80. 800 NEXT
  81. 810 DATA "保  存","終  了","反  転"
  82. 820 CIRCLE (570,300),61,1,,,,F,,1
  83. 830 CIRCLE (570,300),38,4,,,,F,,4
  84. 840 CIRCLE (570,300),61,4,,.9!,.6!,F,,4
  85. 850 CIRCLE (570,300),61,4,,.74!,.76!,F,,4
  86. 860 CIRCLE (570,300),35,0,,,,F,,0
  87. 870 CIRCLE (570,300),34,4,,,,F,,4
  88. 880 SYMBOL (544,301),"FUJITSU",1,1,0
  89. 890 SYMBOL (543,300),"FUJITSU",1,1,4
  90. 900 SYMBOL (538,249),"ON",1,1,7
  91. 910 SYMBOL (581,249),"OFF",1,1,7
  92. 920 IF MOUSE(2,0)=-1 THEN 950
  93. 930 IF MOUSE(2,1)=-1 THEN 1010 
  94. 940 GOTO 920
  95. 950 X=INT(MOUSE(0)/10):Y=INT(MOUSE(1)/10)
  96. 960 IF (X>31) OR (Y>31) THEN 1070
  97. 970 I=Y*32+X
  98. 980 IF P%(I)=1 THEN 920
  99. 990 P%(I)=1:LINE (X*10,Y*10)-(X*10+10,Y*10+10),PSET,1,BF,7:PSET (X+360,Y+30)
  100. 1000 GOTO 920
  101. 1010 X=INT(MOUSE(0)/10):Y=INT(MOUSE(1)/10)
  102. 1020 IF (X>31) OR (Y>31) THEN 920
  103. 1030 I=Y*32+X
  104. 1040 IF P%(I)=0 THEN 920
  105. 1050 P%(I)=0:LINE (X*10,Y*10)-(X*10+10,Y*10+10),PSET,1,BF,0:PRESET (X+360,Y+30)
  106. 1060 GOTO 920
  107. 1070 IF X<49 THEN 920
  108. 1080 IF Y>3*3 THEN 920
  109. 1090 IF Y>3*2 THEN 1120
  110. 1100 IF Y>3*1 THEN CLS:CLOSE:GOTO 320
  111. 1110 GOTO 1170
  112. 1120 FOR X=0 TO 31
  113. 1130 FOR Y=0 TO 31
  114. 1140 IF P%(Y*32+X)=0 THEN P%(Y*32+X)=1:LINE (X*10,Y*10)-(X*10+10,Y*10+10),PSET,1,BF,7:PSET (X+360,Y+30) ELSE P%(Y*32+X)=0:LINE (X*10,Y*10)-(X*10+10,Y*10+10),PSET,1,BF,0:PRESET (X+360,Y+30)
  115. 1150 NEXT:NEXT
  116. 1160 GOTO 920
  117. 1170 Q$="":I=0:CLS
  118. 1180 A=0:FOR C=1 TO 8
  119. 1190 A=A*2+P%(I)
  120. 1200 I=I+1
  121. 1210 NEXT
  122. 1220 Q$=Q$+CHR$(A):IF I<>1024 THEN 1180
  123. 1230 LSET F$=Q$
  124. 1240 CN=0:FOR X=0 TO 600 STEP 40
  125. 1250 FOR Y=0 TO 40*7 STEP 40
  126. 1260 LINE (X,Y)-(X+33,Y+33),PSET,1,B:NEXT:NEXT
  127. 1270 FOR I=1 TO 128
  128. 1280   XC%=(CN MOD 16)*40:YC%=(CN \ 16)*40:CN=CN+1
  129. 1290   FOR L%=0 TO 31
  130. 1300     FD&(L%)=FC&(I,L%)
  131. 1310   NEXT L%
  132. 1320   PUT@ (XC%+1,YC%+1)-(XC%+32,YC%+32),FD&,PSET
  133. 1330 NEXT I
  134. 1340 LOCATE 0,20:PRINT "登録する場所を選んで下さい"
  135. 1350 REC=X+Y*16+1
  136. 1360   FOR L%=0 TO 31
  137. 1370   FD&(L%)=CVL(MID$(Q$,4,1)+MID$(Q$,3,1)+MID$(Q$,2,1)+MID$(Q$,1,1))
  138. 1380   Q$=MID$(Q$,5,128)
  139. 1390   NEXT L%
  140. 1400   PUT@ (10*40+1,10*40+1)-(10*40+32,10*40+32),FD&,PSET
  141. 1410 MOUSE 1,310,20*16,1
  142. 1420 IF MOUSE(2,0)=-1 THEN 1420
  143. 1430 IF MOUSE(2,0)=0 THEN 1430
  144. 1440 X=MOUSE(4,0):Y=MOUSE(5,0)
  145. 1450 X=INT(X/40):Y=INT(Y/40)
  146. 1460 IF Y>7 THEN 1420
  147. 1470 REC=X+Y*16+1
  148. 1480 PUT #1,REC
  149. 1490   LINE (X*40+1,Y*40+1)-(X*40+32,Y*40+32),PSET,1,BF,0
  150. 1500   PUT@ (X*40+1,Y*40+1)-(X*40+32,Y*40+32),FD&,PSET
  151. 1510   LINE (10*40+1,10*40+1)-(10*40+32,10*40+32),PSET,0,BF,0
  152. 1520 FOR I=0 TO 32:FC&(REC,I)=FD&(I):NEXT
  153. 1530 CLOSE:GOTO 420
  154.