100 PRINT CHR$(147):PRINT " SIDPLAYER MUSIC FILE MERGE UTILITY" 110 PRINT " BY CRAIG CHAMBERLAIN":PRINT 120 DN=8:SA=780:SX=781:SY=782:SP=783:TA=0:TB=0:DIM LA(3),LB(3) 130 DEF FNH(N)=INT(N/256):DEF FNL(N)=N-256*INT(N/256) 140 DEF FNDP(N)=PEEK(N)+256*PEEK(N+1) 150 FOR K=49152 TO 49313:READ N:POKE K,N:NEXT:MB=49152:BG=49263 160 S=0:D=0:L=0:BA=FNDP(49)+100:MT=FNDP(51)-100 300 F$="":INPUT " LOAD FILENAME";F$:IF F$="" OR LEN(F$)>12 GOTO 300 310 GOSUB 600:POKE SA,0:POKE SX,FNL(BA):POKE SY,FNH(BA) 320 SYS 65493:IF PEEK(SP)AND1 GOTO 700 330 FOR V=1 TO 3:LA(V)=FNDP(BA+2*V-2):TA=TA+LA(V):NEXT:A=FNDP(SX) 400 F$="":INPUT " APPEND FILENAME";F$:IF LEN(F$)>12 GOTO 400 410 PRINT:IF F$="" GOTO 500 420 F$=F$+".MUS":OPEN 1,DN,0,F$:GET#1,L$,H$ 430 FOR V=1 TO 3:GET#1,L$,H$:LB(V)=ASC(L$+CHR$(0))+256*ASC(H$+CHR$(0)) 435 TA=TA+LB(V)-2:NEXT 440 IF TA>MT-BA THEN PRINT " ERROR: NOT ENOUGH MEMORY":CLOSE 1:END 450 A=BA+6:S=A+LA(1):L=LA(2)+LA(3)-2:D=MT-L:GOSUB 630:A=A+LA(1)-2:S=A:L=LB(1) 460 GOSUB 660:A=A+L:L=LA(2)-2:S=MT-LA(3)-L:D=A:GOSUB 630:A=A+L:S=A:L=LB(2) 470 GOSUB 660:A=A+L:L=LA(3)-2:S=MT-L:D=A:GOSUB 630:A=A+L:S=A:L=LB(3):GOSUB 660 480 A=A+L:IF ST GOTO 520 490 K=FRE(0):GET#1,F$:IF F$<>"" THEN POKE A,ASC(F$):A=A+1:GOTO 490 495 CLOSE 1:POKE A,0:A=A+1:FOR V=1 TO 3:LA(V)=LA(V)+LB(V)-2:NEXT:GOTO 400 500 FOR V=1 TO 3:POKE BA+2*V-2,FNL(LA(V)):POKE BA+2*V-1,FNH(LA(V)):NEXT 510 F$="":INPUT " SAVE FILENAME";F$:IF F$="" OR LEN(F$)>12 GOTO 510 520 GOSUB 600:POKE SA,251:POKE 251,FNL(BA):POKE 252,FNH(BA) 530 POKE SX,FNL(A):POKE SY,FNH(A):SYS 65496:IF PEEK(SP)AND1 GOTO 700 540 PRINT " SAVED" A-BA "BYTES":END 600 PRINT:POKE SA,1:POKE SX,DN:POKE SY,0:SYS 65466:F$=F$+".MUS" 610 FOR K=1 TO LEN(F$):POKE 584+K,ASC(MID$(F$,K)):NEXT 620 POKE SA,LEN(F$):POKE SX,73:POKE SY,2:SYS 65469:RETURN 630 POKE 251,FNL(S):POKE 252,FNH(S):POKE 253,FNL(D):POKE 254,FNH(D) 640 POKE SX,FNL(L):POKE SY,FNH(L):SYS MB:RETURN 660 POKE 251,FNL(S):POKE 252,FNH(S):POKE 253,FNL(L):POKE 254,FNH(L) 670 SYS BG:IF PEEK(SP)AND1 THEN CLOSE 1:GOTO 700 680 RETURN 700 PRINT " ERROR":END 800 DATA 142,109,192,140,110,192,165,253,56,229,251,170,165,254,229,252,236,109 801 DATA 192,237,110,192,144,35,160,0,174,110,192,240,14,177,251,145,253,200 802 DATA 208,249,230,252,230,254,202,208,242,174,109,192,240,8,177,251,145,253 803 DATA 200,202,208,248,96,173,110,192,168,101,252,133,252,152,24,101,254,133 804 DATA 254,172,109,192,240,9,136,177,251,145,253,192,0,208,247,174,110,192 805 DATA 240,16,198,252,198,254,136,177,251,145,253,192,0,208,247,202,208,240 806 DATA 96,0,0,162,1,32,198,255,176,43,165,251,168,101,253,133,253,165,252,101 807 DATA 254,133,254,169,0,133,251,32,207,255,176,21,145,251,200,208,2,230,252 808 DATA 196,253,208,240,165,252,197,254,208,234,32,204,255,24,96