REM PROGRAM TO MAKE ASM FILES FOR CONSTRUCTUNG REM TUNE TABLE FOR TUNES TO BE PLAYED BY MUSIC3 REM PROGRAM. REM READS FROM FILE PREPARED BY ED PROGRAM. EACH LINE REM OF INPUT IS A LINE OF OUTPUT. REM LINES HAVE THE TIME AND A NOTE OR REM A REST FOR EACH OF FOUR VOICES. NOTES IN THE REM FORM C3#, D4 ETC. SEPARATED BY SPACES. REM OCTAVES FROM 1 THROUGH 6 (C1 TO C6) REM TIME IS 1 FOR WHOLE NOTE, 2 FOR HALF, 4 QUARTER,ETC. REM FILE MUST BE EDITED TO REMOVE " SIGNS BEFORE REM RUNNING ASM. ED MS"^Z^Z REMOVES ALL "S FROM REM A FILE. DIM V$(4), N1$(4), NOTE$(66) FOR I=0 TO 65 READ NOTE$(I) REM SET UP TABLE OF NOTES C1 TO C6 NEXT I DATA "R","C1","C1#","D1","D1#","E1","F1","F1#","G1" DATA "G1#","A1","A1#","B1","C2","C2#","D2","D2#","E2" DATA "F2","F2#","G2","G2#","A2","A2#","B2","C3","C3#" DATA "D3","D3#","E3","F3","F3#","G3","G3#","A3","A3#" DATA "B3","C4","C4#","D4","D4#","E4","F4","F4#","G4" DATA "G4#","A4","A4#","B4","C5","C5#","D5","D5#","E5" DATA "F5","F5#","G5","G5#","A5","A5#","B5","C6" DATA "C6#","D6","D6#","E6" HT$=CHR$(9) ORG$=HT$+"ORG"+HT$+"100H" DB$=HT$+DB$+"DB"+HT$ END$=HT$+"END"+HT$+"100H" INPUT "INPUT FILE NAME"; IF$ INPUT "OUTPUT FILE NAME"; OF$ INPUT "TEMPO"; TEM$ FILE OF$ IF END #1 THEN 10 FILE IF$ IF END #2 THEN 300 10 PRINT #1; ORG$ PRINT #1; DB$+TEM$ LINE=1 100 READ #2; ST$ PRINT LINE;":";ST$ IF LEFT$(ST$,1)="0" THEN 300 IF LEFT$(ST$,1)=";" THEN 400 LST=LEN(ST$) FOR P=1 TO LST IF MID$(ST$,P,1)=" " THEN 110 NEXT P 110 IF P=LST THEN A=P+1 ELSE A=P FOR I=1 TO A IF MID$(ST$,I,1)<"0" OR MID$(ST$,I,1)>"9" THEN 930 T$=STR$(INT(128/VAL(ST$)+.5)) IF MID$(ST$,A-1,1)="." THEN T$=STR$(VAL(T$)+.5*VAL(T$)) FOR I=1 TO 4 IF P>=LEN(ST$) THEN V$(I)="R" : GO TO 140 ST$=MID$(ST$,P+1,LEN(ST$)-P) FOR P=1 TO LEN(ST$) IF MID$(ST$,P,1)=" " THEN 120 NEXT P 120 CR1$=MID$(ST$,1,1) IF LEN(CR1$)=0 THEN V$(I)="R": GO TO 140 IF (CR1$<"A" OR CR1$>"G") AND CR1$<>"R" THEN 900 CR2$=MID$(ST$,2,1) IF (CR2$<"1" OR CR2$>"6") AND CR1$<>"R" THEN 910 IF P<4 THEN 130 IF MID$(ST$,3,1)<>"#" THEN 920 130 V$(I)=MID$(ST$,1,P-1) 140 NEXT I FOR I=1 TO 4 N$=MID$(V$(I),1,1) O$=MID$(V$(I),2,1) S$=MID$(V$(I),3,1) IF (N$<"A" OR N$>"G") AND N$<>"R" THEN 900 IF (O$<"1" OR O$>"6") AND N$<>"R" THEN 910 IF S$<>"#" AND LEN(V$(I))>2 THEN 920 FOR J=0 TO 65 IF V$(I)=NOTE$(J) THEN 200 NEXT J 200 N1$(I)=STR$(2*J) NEXT I L$=DB$+T$+","+N1$(1)+","+N1$(2)+","+N1$(3)+","+N1$(4)\ +HT$+";"+STR$(LINE) PRINT #1; L$ LINE=LINE+1 GO TO 100 300 PRINT #1; DB$+STR$(0) PRINT #1; END$ CLOSE (1) STOP 400 PRINT #1; ST$ GO TO 100 900 PRINT "VOICE";I;" NOTE ERROR" GO TO 100 910 PRINT "VOICE";I;" OCTAVE ERROR" GO TO 100 920 PRINT "VOICE";I;" SHARP ERROR" GO TO 100 930 PRINT "TIME ERROR" GO TO 100 END