100 PRINT CHR$(147):PRINT " SIDPLAYER UTILITY DURATION CONVERTER" 110 PRINT " BY CRAIG CHAMBERLAIN":PRINT 120 DN=8:SA=780:SX=781:SY=782:SP=783:DIM VL(2),VA(2) 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 MV=4436:FM=4548:EX=4602:SH=4858:UC=5160:UO=5161:ER=5162 160 LA=FNDP(49)+500:MT=FNDP(51)-500 300 F$="":INPUT " LOAD FILENAME";F$:IF F$="" OR LEN(F$)>12 GOTO 300 310 PRINT:GOSUB 600:POKE SA,0:POKE SX,FNL(LA):POKE SY,FNH(LA) 320 SYS 65493:IF PEEK(SP)AND1 GOTO 700 330 FOR K=0 TO 2:VL(K)=FNDP(LA+2*K):NEXT:EA=FNDP(SX) 340 VA(0)=LA+6:VA(1)=VA(0)+VL(0):VA(2)=VA(1)+VL(1) 400 PRINT " 1 EXPAND":PRINT " 2 CONTRACT":PRINT " 3 SAVE":PRINT 402 PRINT " WHICH OPTION? "; 404 WAIT 198,15:GET G$:IF G$="1" THEN CN=1:PRINT "EXPAND":PRINT:GOTO 410 406 IF G$="2" THEN CN=2:PRINT "CONTRACT":PRINT:GOTO 410 408 IF G$="3" THEN PRINT "SAVE":PRINT:GOTO 500 409 GOTO 404 410 PRINT " WHICH VOICE? "; 412 WAIT 198,15:GET G$:IF G$<"1" OR G$>"3" GOTO 412 414 VN=ASC(G$)-49:PRINT G$:PRINT 420 SM=-1:INPUT " STARTING MEASURE";SM:IF SM>999 GOTO 420 422 PRINT:IF SM<0 THEN AS=VA(VN):GOTO 430 424 F=VA(VN):T=VA(VN)+VL(VN):M=SM:GOSUB 650 426 IF A=T THEN PRINT " ERROR: NOT FOUND":PRINT:GOTO 420 428 AS=A 430 EM=1000:INPUT " ENDING MEASURE";EM:IF EM<0 GOTO 430 432 PRINT:IF EM>999 THEN AE=VA(VN)+VL(VN):GOTO 440 434 F=AS:T=VA(VN)+VL(VN):M=EM:GOSUB 650 436 IF A=T THEN PRINT " ERROR: NOT FOUND":PRINT:GOTO 430 438 AE=A 440 PRINT " 1 UTL DURATIONS":PRINT " 2 UTV DURATIONS":PRINT 442 PRINT " WHICH TYPE? "; 444 WAIT 198,15:GET G$:IF G$<"1" OR G$>"2" GOTO 444 446 UN=ASC(G$)-48:PRINT G$:PRINT 450 S=AS:L=EA-AS:D=MT-L:GOSUB 675 460 POKE 251,FNL(D):POKE 252,FNH(D) 462 Z=D+AE-AS:X=FNL(Z):Y=FNH(Z) 464 POKE 253,FNL(AS):POKE 254,FNH(AS) 470 POKE UO,4:POKE UC,22:IF UN=2 THEN POKE UO,36:POKE UC,246 471 IF CN=2 GOTO 475 472 POKE SX,X:POKE SY,Y:SYS EX 473 IF PEEK(ER) THEN PRINT " ERROR: ILLEGAL DURATION":END 474 AX=FNDP(253):GOTO 480 475 POKE SX,X:POKE SY,Y:SYS SH 479 AX=FNDP(253) 480 L=EA-AE:S=MT-L:D=AX:GOSUB 675 490 VL(VN)=VL(VN)+(AX-AS)-(AE-AS) 492 VA(1)=VA(0)+VL(0):VA(2)=VA(1)+VL(1) 494 EA=EA+(AX-AS)-(AE-AS) 496 GOTO 400 500 FOR K=0 TO 2:POKE LA+2*K,FNL(VL(K)):POKE LA+2*K+1,FNH(VL(K)):NEXT 510 F$="":INPUT " SAVE FILENAME";F$:IF F$="" OR LEN(F$)>12 GOTO 510 520 PRINT:GOSUB 600:POKE SA,251:POKE 251,FNL(LA):POKE 252,FNH(LA) 530 POKE SX,FNL(EA):POKE SY,FNH(EA):SYS 65496:IF PEEK(SP)AND1 GOTO 700 540 PRINT " SAVED" EA-LA "BYTES":END 600 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 650 POKE 251,FNL(F):POKE 252,FNH(F) 652 POKE 253,FNL(T):POKE 254,FNH(T) 654 POKE SX,FNL(M):POKE SY,FNH(M) 656 SYS FM:A=FNDP(251):RETURN 675 POKE 251,FNL(S):POKE 252,FNH(S) 676 POKE 253,FNL(D):POKE 254,FNH(D) 677 POKE SX,FNL(L):POKE SY,FNH(L):SYS MV:RETURN 700 IF PEEK(SA)=4 THEN PRINT " ERROR: FILE NOT FOUND":END 710 PRINT " ERROR":END