home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / fb386 / fmsconv / fmsconv.bas next >
BASIC Source File  |  1980-01-02  |  4KB  |  88 lines

  1. 1000 ' FMBデータ→BASICデータ コンバーター
  2. 1010 '                   for F-BASIC386 V1.1L20以上
  3. 1020 ' 初期設定
  4. 1030 DIM NUM(128),FM%(23) : N=1
  5. 1040 KEY 1,"Q:\FJ\FM\":CONSOLE 0,24,2:COLOR 7
  6. 1050 ON ERROR GOTO *ERROR
  7. 1060 ' コンバートデータの前手続き
  8. 1070 *LOAD_FILE
  9. 1080 PRINT "ロードするFMBファイルのファイル名を入力して下さい。"
  10. 1090 LINE INPUT "FILE NAME (.FMBは付けない) : ";FMB$
  11. 1100 LOAD@ FMB$+".FMB"
  12. 1110 PRINT:PRINT "コンバートする音色番号を入力して下さい。(0で終了)"
  13. 1120 *INPUT 
  14. 1130 PRINT USING "### ";N;:INPUT ".音色番号 ( 1-128 or 0 ) : ",NUM(N)
  15. 1140 IF NUM(N)>128 THEN BEEP : GOTO *INPUT
  16. 1150 IF NUM(N)>0 THEN *CHECK
  17. 1160 *INPUT_END : N=N-1
  18. 1170 ON N+1 GOTO *END,*DATA_CONV
  19. 1180 PRINT "ソート中です。しばらくお待ち下さい。"
  20. 1190 FOR I=1 TO N-1
  21. 1200   FOR J=1 TO N-1
  22. 1210     IF NUM(J)>NUM(J+1) THEN SWAP NUM(J),NUM(J+1) 
  23. 1220 NEXT J,I
  24. 1230 ' データのコンバート
  25. 1240 *DATA_CONV
  26. 1250 PRINT : PRINT "ディスクをドライブAに入れ、ファイルを書き込むディレクトリを指定して下さい。ルートディレクトリに書き込む場合は、そのままリターンキーを押して下さい。"
  27. 1260 INPUT "ディレクトリ : \",DIR$
  28. 1270 PRINT "ドライブAに"+CHR$(&H22)+"NONAME.FMS"+CHR$(&H22)+"が作成されます。"
  29. 1280 *SAVE_FILE
  30. 1290 OPEN "O",#1,"A:"+DIR$+"\NONAME.FMS"
  31. 1300 PRINT #1,"30000 *FM_SET"
  32. 1310 PRINT #1,"30010 DIM FM%(23)"
  33. 1320 PRINT #1,"30020 SAD=VARPTR(FM%(0))"
  34. 1330 PRINT #1,"30030 FOR I=1 TO";N
  35. 1340 PRINT #1,"30040   READ NUM"
  36. 1350 PRINT #1,"30050   FOR OFSET=8 TO 33"
  37. 1360 PRINT #1,"30060     READ DT$"
  38. 1370 PRINT #1,"30070     POKE SAD+OFSET,VAL(";CHR$(&H22);"&H";CHR$(&H22);"+DT$)"
  39. 1380 PRINT #1,"30080   NEXT"
  40. 1390 PRINT #1,"30090   VOICE NUM,FM%"
  41. 1400 PRINT #1,"30100 NEXT : RETURN"
  42. 1410 SAD=VARPTR(FM%(0)):POKE SAD+33,(PEEK(SAD+33) AND &H37)
  43. 1420 PRINT #1,"30110 'FM TONE DATA"
  44. 1430 FOR L=1 TO N:LNUM=30120+(L-1)*30
  45. 1440   VOICE COPY NUM(L),FM%
  46. 1450   PRINT #1,MID$(STR$(LNUM),2);" DATA";NUM(L);" '";
  47. 1460   FOR OFSET=0 TO 7:PRINT #1,CHR$(PEEK(SAD+OFSET));:NEXT:PRINT #1
  48. 1470   OFSET=8 :PRINT #1,MID$(STR$(LNUM+10),2);" DATA ";:GOSUB *PRINT
  49. 1480   FOR OFSET=9  TO 19:PRINT #1,",";:GOSUB *PRINT :NEXT:PRINT #1
  50. 1490   OFSET=20:PRINT #1,MID$(STR$(LNUM+20),2);" DATA ";:GOSUB *PRINT
  51. 1500   FOR OFSET=21 TO 33:PRINT #1,",";:GOSUB *PRINT :NEXT:PRINT #1
  52. 1510 NEXT L
  53. 1520 CLOSE #1
  54. 1530 ' 後処理
  55. 1540 PRINT "作成されたファイルの行番号は ";:COLOR 5
  56. 1550 PRINT "30000 ";:COLOR 7:PRINT "-";:COLOR 5
  57. 1560 PRINT LNUM+20;:COLOR 7:PRINT " です。"
  58. 1570 *END : PRINT "コンバートを終了しました。音プロ作り、頑張ってね。"
  59. 1580 END
  60. 1590 ' ディスクへの書き込みサブルーチン
  61. 1600 *PRINT
  62. 1610 DAT=PEEK(SAD+OFSET)
  63. 1620 IF DAT>15 THEN PRINT #1,HEX$(DAT); ELSE PRINT #1,"0";HEX$(DAT);
  64. 1630 RETURN
  65. 1640 *CHECK
  66. 1650 I=1
  67. 1660 WHILE I-N
  68. 1670   IF NUM(I)=NUM(N) THEN PRINT "データが重複しています。":BEEP:GOTO *INPUT
  69. 1680   I=I+1
  70. 1690 WEND:N=N+1:IF N=129 THEN *INPUT_END ELSE *INPUT
  71. 1700 ' エラートラップ
  72. 1710 *ERROR
  73. 1720 CLOSE
  74. 1730 IF ERR=72 THEN *ERR_1
  75. 1740 IF ERL=1100 THEN BEEP:RESUME *LOAD_FILE
  76. 1750 IF ERL=1290 THEN *ERR_2
  77. 1760 COLOR 2:PRINT USING "#####行にエラー発生!! ( ERROR ### )";ERL;ERR 
  78. 1770 STOP
  79. 1780 *ERR_1:BEEP:PRINT "ディスクがセットされていません。正しくセットしたらリターンキーを押してください。"
  80. 1790 GOSUB *WAIT
  81. 1800 *ERR_2
  82. 1810 IF ERR=64 THEN KILL "A:"+DIR$+"\NONAME.FMS"
  83. 1820 IF ERR=63 THEN CMDLINE$="MKDIR A:\"+DIR$:SHELL CMDLINE$
  84. 1830 IF ERR=65 THEN BEEP:PRINT "ディレクトリ領域が一杯です。":RESUME *DATA_CONV
  85. 1840 IF ERR=67 THEN BEEP:PRINT "ディスクが一杯です。":RESUME *DATA_CONV
  86. 1850 RESUME *SAVE_FILE
  87. 1860 *WAIT:IF INKEY$<>CHR$(&HD) THEN *WAIT ELSE RETURN
  88.