/* E Source generated by SRCGEN v0.1 */ /* Coding start day: 10. Feb. 1995 */ OPT LARGE MODULE 'gadtools','libraries/gadtools','intuition/intuition', 'intuition/screens', 'intuition/gadgetclass', 'graphics/text', 'ptreplay_pragmas', '+SvProjects/getsysinfo', 'dos/dos', 'exec/memory', 'reqtools', 'libraries/reqtools', 'powerpacker', 'libraries/ppbase', 'exec/lists', 'exec/nodes', 'dos/dos', '+SvProjects/detatch', 'other/ecode', 'exec/interrupts', 'exec/nodes', 'hardware/intbits' ENUM NONE,NOCONTEXT,NOGADGET,NOWB,NOVISUAL,OPENGT,NOWINDOW,NOMENUS SET PT_NICEDISPLAY, PT_BACKDROPWIN, PT_MODSAVER, PT_SPECTRUMANAL, PT_QUADRAANAL DEF project0wnd:PTR TO window, project0glist, infos:PTR TO gadget, /* Knapp nr. */ type, /* Gadget type */ gadstri:PTR TO stringinfo, /* String/Integer gadget innhold */ gadtext:PTR TO LONG, /* Pointer til tekst */ scr:PTR TO screen, visual=NIL, offx,offy,tattr,mainscr,bullport, req:PTR TO rtfilerequester,jubalongteller=-1,retval=0, settings=PT_NICEDISPLAY, cpu,fpu,mmu, notedat[605]:ARRAY OF LONG, samplen[605]:ARRAY OF LONG, effectc[605]:ARRAY OF LONG, /**************************************/ volumeptr:PTR TO gadget,sampleptr:PTR TO gadget, positionptr:PTR TO gadget,patternptr:PTR TO gadget, lengthptr:PTR TO gadget,finetuneptr:PTR TO gadget, repeatptr:PTR TO gadget, replenptr:PTR TO gadget, tempoptr:PTR TO gadget, samplelenptr:PTR TO gadget, stbarpatternptr:PTR TO gadget, samplegad:PTR TO gadget, songnamegad:PTR TO gadget, message[34]:STRING,status[38]:STRING,statuso[38]:STRING,menutxt[80]:STRING, oldmemf,oldmemc,songname, /**************************************/ pattern[100]:ARRAY OF INT,masterv=64,mastervolume=64, lengthdata=1,sampledata=1,position=0, finetunedata[$FF]:ARRAY OF INT, volumedata[$FF]:ARRAY OF INT, repeatdata[$FF]:ARRAY OF LONG, replendata[$FF]:ARRAY OF LONG, samplelen[$FF]:ARRAY OF LONG, tempo=125,module=0,modmem=0,modlen=0,equalizertype=0,signset=0,editcnt=0, vbint:PTR TO is, project1wnd:PTR TO window, project1glist, add:PTR TO gadget, itemposition=0, listv:PTR TO LONG, addname:PTR TO ln,gadinfo, lhac[1024]:ARRAY OF LONG, selected[256]:STRING,arcname[256]:STRING ENUM PLUSS, MINUS CONST FILEREQ=0, REQINFO=1 PROC setupscreen() mainscr:=OpenS(640,256,2,$8000,'ProTracker V4.0', [SA_PUBNAME,'ProTracker', SA_PENS,[-1]:INT, NIL]) IF mainscr THEN PubScreenStatus(mainscr,0) IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT IF (scr:=LockPubScreen('ProTracker'))=NIL THEN RETURN NOWB IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL offy:=scr.wbortop+Int(scr.rastport+58)-10 tattr:=['topaz.font',8,0,0]:textattr ENDPROC PROC closedownscreen() IF visual THEN FreeVisualInfo(visual) IF scr THEN UnlockPubScreen(NIL,scr) IF gadtoolsbase THEN CloseLibrary(gadtoolsbase) IF mainscr THEN CloseS(mainscr) ENDPROC PROC openproject0window() DEF g:PTR TO gadget IF (g:=CreateContext({project0glist}))=NIL THEN RETURN NOCONTEXT IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+260,offy+11,90,11,' Play',tattr,1,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+369,offy+11,108,11,'Stop',tattr,2,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+479,offy+11,108,11,'Plst',tattr,3,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(CHECKBOX_KIND,g, [offx+610,offy+11,26,11,'1',tattr,4,1,visual,0]:newgadget, [GTCB_CHECKED,1, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+260,offy+22,90,11,' Pattern',tattr,5,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+369,offy+22,108,11,'Clear',tattr,6,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+479,offy+22,108,11,'Pset-ed',tattr,7,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(CHECKBOX_KIND,g, [offx+610,offy+22,26,11,'2',tattr,8,1,visual,0]:newgadget, [GTCB_CHECKED,1, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+260,offy+33,108,11,'Edit',tattr,9,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+369,offy+33,108,11,'Edit Op.',tattr,10,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+479,offy+33,108,11,'Setup',tattr,11,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(CHECKBOX_KIND,g, [offx+610,offy+33,26,11,'3',tattr,12,1,visual,0]:newgadget, [GTCB_CHECKED,1, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+260,offy+44,108,11,'Record',tattr,13,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+369,offy+44,108,11,'Disk Op.',tattr,14,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+479,offy+44,108,11,'Sampler',tattr,15,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(CHECKBOX_KIND,g, [offx+610,offy+44,26,11,'4',tattr,16,1,visual,0]:newgadget, [GTCB_CHECKED,1, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+610,offy+55,26,11,'A',tattr,17,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(CYCLE_KIND,g, [offx+260,offy+55,348,11,'',tattr,18,0,visual,0]:newgadget, [GTCY_LABELS,['Quadrascope','Spectrum Analyzer',0], NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+11,81,12,'Pos',tattr,19,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+86,offy+11,23,12,'I',tattr,20,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+112,offy+11,24,12,'D',tattr,21,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (positionptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+11,52,12,'',tattr,22,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+11,24,12,'<',tattr,23,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+11,24,12,'>',tattr,24,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (patternptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+23,52,12,'',tattr,25,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (lengthptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+35,52,12,'',tattr,26,0,visual,0]:newgadget, [GTIN_NUMBER,1, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (finetuneptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+47,52,12,'',tattr,27,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (sampleptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+59,52,12,'',tattr,28,0,visual,0]:newgadget, [GTIN_NUMBER,1, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (volumeptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+71,52,12,'',tattr,29,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,4, NIL]))=NIL THEN RETURN NOGADGET IF (repeatptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+83,52,12,'',tattr,30,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,5, NIL]))=NIL THEN RETURN NOGADGET IF (replenptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+138,offy+95,52,12,'',tattr,31,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,5, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+23,132,12,'Pattern',tattr,32,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+35,132,12,'Length',tattr,33,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+47,132,12,'Finetune',tattr,34,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+59,060,12,'Sample',tattr,35,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+71,132,12,'Volume',tattr,36,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+83,132,12,'Repeat',tattr,37,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+95,132,12,'Replen',tattr,38,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+23,24,12,'<',tattr,39,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+23,24,12,'>',tattr,40,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+35,24,12,'<',tattr,41,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+35,24,12,'>',tattr,42,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+47,24,12,'<',tattr,43,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+47,24,12,'>',tattr,44,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+59,24,12,'<',tattr,45,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+59,24,12,'>',tattr,46,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+71,24,12,'<',tattr,47,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+71,24,12,'>',tattr,48,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+83,24,12,'<',tattr,49,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+83,24,12,'>',tattr,50,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+192,offy+95,24,12,'<',tattr,51,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+218,offy+95,24,12,'>',tattr,52,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+107,238,12,'Songname',tattr,53,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (songnamegad:=g:=CreateGadgetA(STRING_KIND,g, [offx+244,offy+107,315,12,'',tattr,54,0,visual,0]:newgadget, [GTST_MAXCHARS,$200, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+119,238,12,'Samplename',tattr,55,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (samplegad:=g:=CreateGadgetA(STRING_KIND,g, [offx+244,offy+119,329,12,'',tattr,56,0,visual,0]:newgadget, [GTST_MAXCHARS,$200, NIL]))=NIL THEN RETURN NOGADGET IF (stbarpatternptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+13,offy+135,38,12,'',tattr,57,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,3, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+574,offy+119,62,12,'Load',tattr,58,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+109,offy+135,16,12,'-',tattr,59,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+126,offy+135,16,12,'+',tattr,60,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (tempoptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+143,offy+135,41,12,'',tattr,61,0,visual,0]:newgadget, [GTIN_NUMBER,125, GTIN_MAXCHARS,3, NIL]))=NIL THEN RETURN NOGADGET IF (samplelenptr:=g:=CreateGadgetA(INTEGER_KIND,g, [offx+065,offy+059,71,12,'',tattr,62,0,visual,0]:newgadget, [GTIN_NUMBER,0, GTIN_MAXCHARS,5, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(SLIDER_KIND,g, /* new stuff */ [offx+244,offy+11,13,96,'',tattr,63,0,visual,0]:newgadget, [GA_RELVERIFY,1, GTSL_MAX,64, GTSL_LEVEL,64, PGA_FREEDOM,LORIENT_VERT, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+351,offy+11,17,11,'C',tattr,64,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+351,offy+22,17,11,'C',tattr,65,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (project0wnd:=OpenWindowTagList(NIL, [WA_LEFT,0, WA_TOP,11, WA_WIDTH,offx+640, WA_HEIGHT,offy+245, WA_IDCMP,$24C077E, WA_FLAGS,$100E, WA_TITLE,'ProTracker V4.0 © 1995 Procyon Software', WA_CUSTOMSCREEN,scr, WA_MINWIDTH,67, WA_MINHEIGHT,21, WA_MAXWIDTH,$280, WA_MAXHEIGHT,256, WA_AUTOADJUST,1, WA_AUTOADJUST,1, WA_GADGETS,project0glist, NIL]))=NIL THEN RETURN NOWINDOW PrintIText(project0wnd.rport, [1,0,0,189,137,tattr,'Status:',NIL]:intuitext,offx,offy) PrintIText(project0wnd.rport, [1,0,0,65,137,tattr,'Tempo',NIL]:intuitext,offx,offy) PrintIText(project0wnd.rport, [1,0,0,595,109,tattr,':',NIL]:intuitext,offx,offy) DrawBevelBoxA(project0wnd.rport,562,107,74,11, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,450,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,356,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,260,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,545,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,248,134,283,13, [GT_VISUALINFO,visual,GTBB_RECESSED,1,NIL]) DrawBevelBoxA(project0wnd.rport,6,186,630,13, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,5,131,631,19, [GT_VISUALINFO,visual,NIL]) Gt_RefreshWindow(project0wnd,NIL) ENDPROC PROC closeproject0window() IF project0wnd THEN CloseWindow(project0wnd) IF project0glist THEN FreeGadgets(project0glist) ENDPROC PROC wait4message(win:PTR TO window) DEF mes:PTR TO intuimessage,g:PTR TO gadget,msg=0 -> REPEAT type:=0 IF mes:=Gt_GetIMsg(win.userport) type:=mes.class IF type=IDCMP_MENUPICK infos:=mes.code ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP) g:=mes.iaddress masterv:=mes.code infos:=g.gadgetid gadstri:=g.specialinfo gadtext:=gadstri.buffer gadinfo:=mes.code ELSEIF type=IDCMP_REFRESHWINDOW Gt_BeginRefresh(win) Gt_EndRefresh(win,TRUE) type:=0 ELSEIF type<>IDCMP_CLOSEWINDOW /* remove these if you like */ type:=0 ENDIF Gt_ReplyIMsg(mes) ELSE /*********************** alt dette isteden for WaitPort(win.userport) *****/ IF msg:=GetMsg(win.userport) ReplyMsg(msg) WHILE msg:=GetMsg(win.userport) DO ReplyMsg(msg) ELSE IF bullport Wait(signset OR win.userport OR bullport) ELSE Wait(signset OR win.userport) ENDIF ENDIF ENDIF /*************************************************************************/ -> UNTIL type -> WriteF('Msg er altså: \d\n',msg) ENDPROC type PROC reporterr(er) DEF erlist:PTR TO LONG IF er erlist:=['get context','create gadget','lock screen','get visual infos', 'open "gadtools.library" v37+','open window','create menus'] EasyRequestArgs(0,[20,0,0,'Could not \s!','ok'],0,[erlist[er-1]]) ENDIF ENDPROC er PROC main() DEF rowold,row,pttrn,posit,dummy=0,pttrnold,oldrast,intsys=0 detatch('ProTrackerV4.0') -> Detatches ProTracker from CLI!!! IF (settings AND PT_NICEDISPLAY) THEN intsys:=installintsys() ELSE inform('Can''t set up VBeam interrupt / server') IF KickVersion(37)=FALSE THEN (WriteF('ProTracker V4 need''s Kickstart 2.0 or higher to run...\n') AND CleanUp(5)) cpu,fpu,mmu:=getsysinfo() IF cpu<=68010 THEN inform(' WARNING:\n\nProTracker V4.0 may be considerable slow on 68000 and 68010 cpu''s.\nI recommend that you use an older version of ProTracker for now.\nBut if you really want to use this version you can start ProTracker\nwith.. ProTrackerV4 -nowarn to skip this warning...') FOR rowold:=0 TO 601 DO notedat[rowold]:=String(3) FOR rowold:=0 TO 601 DO StrCopy(notedat[rowold],'---',STRLEN) FOR rowold:=0 TO 601 DO samplen[rowold]:=0 FOR rowold:=0 TO 601 DO effectc[rowold]:=0 StrCopy(status,'ProTrackerV4.0',ALL) IF signset:=AllocSignal(-1)<>-1 IF ptreplaybase:=OpenLibrary('ptreplay.library',4) -> BSET #1,$BFE001 IF reporterr(setupscreen())=0 reporterr(openproject0window()) -> movedisplay(NIL,NIL) /* This stuff is for fixing a litle gfx bug on the edit line */ oldrast:=SetStdRast(project0wnd.rport) Line(08,187,630,187,3) Line(08,188,630,188,3) Line(08,197,630,197,3) SetStdRast(oldrast) /* ********************************************************* */ start: REPEAT IF StrCmp(statuso,status,StrLen(status))=FALSE OR oldmemc<>AvailMem(MEMF_CHIP) OR oldmemf<>AvailMem(MEMF_FAST) oldmemc:=AvailMem(MEMF_CHIP) oldmemf:=AvailMem(MEMF_FAST) StringF(menutxt,'ProTracker V4.0 C: \d Bytes - F: \d Bytes - Tune: \d Bytes',oldmemc,oldmemf,modlen) SetWindowTitles(project0wnd,-1,menutxt) showstat(status) StrCopy(statuso,status,StrLen(status)) ENDIF IF (type=64 AND infos=01) THEN playsong() IF (type=64 AND infos=02) THEN stopsong() IF (type=64 AND infos=03) THEN plst() IF (type=64 AND infos=04) THEN togglechannel(1) IF (type=64 AND infos=05) THEN patternplay() IF (type=64 AND infos=06) THEN clearrequest() IF (type=64 AND infos=07) THEN psetedit() IF (type=64 AND infos=08) THEN togglechannel(2) IF (type=64 AND infos=09) THEN edit() IF (type=64 AND infos=10) THEN editop() IF (type=64 AND infos=11) THEN setup() IF (type=64 AND infos=12) THEN togglechannel(3) IF (type=64 AND infos=13) THEN record() IF (type=64 AND infos=14) THEN diskop() IF (type=64 AND infos=15) THEN sampler() IF (type=64 AND infos=16) THEN togglechannel(4) IF (type=64 AND infos=17) THEN about() IF (type=64 AND infos=18) THEN toggleequalizer() /*********************************************************************/ IF (type=64 AND infos=19) THEN pos() IF (type=64 AND infos=20) THEN insertpos() /* OK */ IF (type=64 AND infos=21) THEN deletepos() /* OK */ IF (type=64 AND infos=22) THEN setpos() /* OK */ IF (type=64 AND infos=23) THEN posctrl(MINUS) /* OK */ IF (type=64 AND infos=24) THEN posctrl(PLUSS) /* OK */ IF (type=64 AND infos=25) THEN setpattern() /* OK */ IF (type=64 AND infos=26) THEN setlength() /* OK */ IF (type=64 AND infos=27) THEN setfinetune() /* OK */ IF (type=64 AND infos=28) THEN setsample() /* OK */ IF (type=64 AND infos=29) THEN setvolume() /* OK */ IF (type=64 AND infos=30) THEN setrepeat() /* OK */ IF (type=64 AND infos=31) THEN setreplen() /* OK */ IF (type=64 AND infos=32) THEN activatepattern() IF (type=64 AND infos=33) THEN activatelength() IF (type=64 AND infos=34) THEN activatefinetune() IF (type=64 AND infos=35) THEN activatesample() IF (type=64 AND infos=36) THEN activatevolume() IF (type=64 AND infos=37) THEN activaterepeat() IF (type=64 AND infos=38) THEN activatereplen() IF (type=64 AND infos=39) THEN patternctrl(MINUS) /* OK */ IF (type=64 AND infos=40) THEN patternctrl(PLUSS) /* OK */ IF (type=64 AND infos=41) THEN lengthctrl(MINUS) /* OK */ IF (type=64 AND infos=42) THEN lengthctrl(PLUSS) /* OK */ IF (type=64 AND infos=43) THEN finetunectrl(MINUS) /* OK */ IF (type=64 AND infos=44) THEN finetunectrl(PLUSS) /* OK */ IF (type=64 AND infos=45) THEN samplectrl(MINUS) /* OK */ IF (type=64 AND infos=46) THEN samplectrl(PLUSS) /* OK */ IF (type=64 AND infos=47) THEN volumectrl(MINUS) /* OK */ IF (type=64 AND infos=48) THEN volumectrl(PLUSS) /* OK */ IF (type=64 AND infos=49) THEN repeatctrl(MINUS) /* OK */ IF (type=64 AND infos=50) THEN repeatctrl(PLUSS) /* OK */ IF (type=64 AND infos=51) THEN replenctrl(MINUS) /* OK */ IF (type=64 AND infos=52) THEN replenctrl(PLUSS) /* OK */ IF (type=64 AND infos=53) THEN activatesongname() IF (type=64 AND infos=54) THEN setsongname(gadtext) IF (type=64 AND infos=55) THEN activatesamplename() IF (type=64 AND infos=56) THEN setsamplename() IF (type=64 AND infos=57) THEN setstbarpattern() /* OK */ IF (type=64 AND infos=58) THEN loadsample() IF (type=64 AND infos=59) THEN tempoctrl(MINUS) /* OK */ IF (type=64 AND infos=60) THEN tempoctrl(PLUSS) /* OK */ IF (type=64 AND infos=61) THEN settempo() /* OK */ IF (type=64 AND infos=62) THEN setsamplelength() /* OK */ IF (type=64 AND infos=63) THEN globalvol() IF (type=64 AND infos=64) THEN WriteF('Continue play...\n') IF (type=64 AND infos=65) THEN WriteF('Continue pattern...\n') -> WriteF('type:\d - info \d\n',type,infos) posit:=PtSongPos(module) pttrn:=PtSongPattern(module,posit) row:=PtPatternPos(module) IF pttrnold<>pttrn decodedata(pttrn) pttrnold:=pttrn ENDIF IF row<>rowold rowold:=row position:=posit IF position>=lengthdata THEN position:=lengthdata-1 IF position<0 THEN position:=0 Gt_SetGadgetAttrsA(positionptr,project0wnd,NIL,[GTIN_NUMBER,position,NIL]) Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pttrn,NIL]) movedisplay(row,pattern) ENDIF wait4message(project0wnd) UNTIL type=IDCMP_CLOSEWINDOW /* ---- We skip this part as long as we test-run this programm ---- dummy:=ask('Are you sure you want to quit','Yes|No') IF dummy=FALSE THEN JUMP start ---------------------------------------------------------------- */ closeproject0window() ENDIF closedownscreen() IF (module AND modmem) AND modlen PtStop(module) PtFreeMod(module) /* Correct way to free mem!!! */ FreeMem(modmem,modlen) /* Yes, yes, yes, yes!!! */ ENDIF CloseLibrary(ptreplaybase) -> BCLR #1,$BFE001 ENDIF FreeSignal(signset) ENDIF IF intsys THEN removeintsys() ENDPROC /******************************/ PROC playsong() DEF posit,pttrn,positold,pttrnold,row,rowold,slutt=0 IF module StrCopy(status,'Playing module...',ALL) PtPlay(module) PtSetVolume(module,mastervolume) PtSetPos(module,position) Delay(05) posit:=PtSongPos(module) pttrn:=PtSongPattern(module,posit) row:=PtPatternPos(module) IF row<>rowold rowold:=row Gt_SetGadgetAttrsA(positionptr,project0wnd,NIL,[GTIN_NUMBER,posit,NIL]) Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pttrn,NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pttrn,NIL]) /************************************************************************/ movedisplay(row,pattern) ENDIF ENDIF ENDPROC /******************************/ PROC stopsong() IF module StrCopy(status,'ProTrackerV4.0',ALL) PtStop(module) ENDIF ENDPROC /******************************/ PROC plst() ; DisplayBeep(NIL) ;inform('Not yet implemented!'); ENDPROC /******************************/ PROC togglechannel(channel) ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC patternplay() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC clearrequest() DEF topic topic:=EasyRequestArgs(project0wnd, [20,10,'ProTracker request','Clear what?','Song|Samples|All|Cancel'],0,0) IF topic=1 THEN inform('song') IF topic=2 THEN inform('samples') IF topic=3 IF module AND modmem AND modlen PtStop(module) PtFreeMod(module) FreeMem(modmem,modlen) module:=0 ; modmem:=0 ; modlen:=0 inform('All module data cleared') ELSE inform('Nothing to clear...') ENDIF ENDIF IF topic=0 THEN inform('cancel') ENDPROC /******************************/ PROC psetedit() ; DisplayBeep(NIL) ;inform('Not yet implemented!'); ENDPROC /******************************/ PROC edit() DEF oldrast oldrast:=SetStdRast(project0wnd.rport) INC editcnt IF editcnt=1 TextF(535,140,'E') ELSEIF editcnt>1 TextF(535,140,' ') editcnt:=0 ENDIF SetStdRast(oldrast) ENDPROC /******************************/ PROC editop() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC setup() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC record() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC diskop() DEF loadstr[1024]:STRING,buf[108]:STRING WriteF('\d\n',ask('Choose...','Load Module|Save Module|Load Sample|Save Sample|Cancel')) IF reqtoolsbase:=OpenLibrary('reqtools.library',37) IF req:=RtAllocRequestA(FILEREQ,0) RtChangeReqAttrA(req,[ RTFI_DIR,'ST-00:Modules/', RTFI_MATCHPAT,'(mod.#?|#?.lha|#?.lzh|#?.lzx|#?.xpk|#?.mod)',NIL]) IF RtFileRequestA(req,buf,'Select module to load:',[ RT_SCREEN,scr, RT_WINDOW,project0wnd, RT_WAITPOINTER,TRUE, RT_REQPOS,REQPOS_CENTERSCR, RTFI_FLAGS,FREQF_PATGAD, NIL]) StringF(loadstr,'\s/\s',req.dir,buf) IF (module AND modmem) AND modlen showstat('Unloading module...') PtStop(module) PtFreeMod(module) FreeMem(modmem,modlen) module:=0 ; modmem:=0 ; modlen:=0 ENDIF showstat('Loading module...') loadmodule(loadstr) /* Leser all info inn der det skal */ -> ** SYNTAX: PtInstallBits(Module, Restart, Pos, Row, Fade) ** <- PtInstallBits(module, -1, -1, signset, -1) ELSE -> module:=0 ENDIF StrCopy(status,'ProTrackerV4.0',ALL) RtFreeRequest(req) ELSE inform('Problems allocating file-request') ENDIF CloseLibrary(reqtoolsbase) ELSE inform('Can''t open ReqTools.Library V37 or higher...') ENDIF ENDPROC /******************************/ PROC sampler() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC about() DEF text[500]:STRING StringF(text,' ProTracker V4.0 © 1995 Procyon Software\n\n'+ ' CPU: \d\n'+ ' FPU: \d\n\n'+ 'Bug reports:\n Svein Engelsgjerd (Sv/Procyon)\n 5590 Etne\n Norway\n\n or...\n\n'+ ' Stein Eikesdal (Demonoid/Procyon)\n 5576 Øvre Vats\n Norway',cpu,fpu) inform(text) ENDPROC /******************************/ PROC toggleequalizer() DEF oldrast,tell INC equalizertype IF equalizertype>1 THEN equalizertype:=0 oldrast:=SetStdRast(project0wnd.rport) IF equalizertype=0 Box(260,68,631,106,0) DrawBevelBoxA(project0wnd.rport,450,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,356,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,260,68,86,37, [GT_VISUALINFO,visual,NIL]) DrawBevelBoxA(project0wnd.rport,545,68,86,37, [GT_VISUALINFO,visual,NIL]) ELSEIF equalizertype=1 Box(260,68,631,106,0) FOR tell:=260 TO 624 STEP 12 DrawBevelBoxA(project0wnd.rport,tell,68,12,37, [GT_VISUALINFO,visual,GTBB_RECESSED,TRUE,NIL]) ENDFOR ENDIF SetStdRast(oldrast) ENDPROC /******************************/ PROC pos() ;inform('Not yet implemented!'); ENDPROC /* Pos/PatternEditor her... */ /******************************/ PROC insertpos() ;/* No operation */; ENDPROC /******************************/ PROC deletepos() ;/* No operation */; ENDPROC /******************************/ PROC setpos() position:=Val(gadtext) IF position>=lengthdata THEN position:=lengthdata-1 IF position<0 THEN position:=0 Gt_SetGadgetAttrsA(positionptr,project0wnd,NIL,[GTIN_NUMBER,position,NIL]) Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDPROC /******************************/ PROC posctrl(opt) IF opt=MINUS THEN position:=position-1 IF opt=PLUSS THEN position:=position+1 IF position>=lengthdata THEN position:=lengthdata-1 IF position<0 THEN position:=0 PtSetPos(module,position) Gt_SetGadgetAttrsA(positionptr,project0wnd,NIL,[GTIN_NUMBER,position,NIL]) Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDPROC /******************************/ PROC setpattern() DEF temp temp:=Val(gadtext) pattern[position]:=temp IF temp>100 THEN pattern[position]:=100 IF temp<000 THEN pattern[position]:=000 Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDPROC /******************************/ PROC setsamplelength() DEF temp temp:=Val(gadtext) samplelen[sampledata]:=temp IF samplelen[sampledata]>65535 THEN samplelen[sampledata]:=65535 IF samplelen[sampledata]<0 THEN samplelen[sampledata]:=0 Gt_SetGadgetAttrsA(samplelenptr,project0wnd,NIL,[GTIN_NUMBER,samplelen[sampledata],NIL]) ENDPROC /******************************/ PROC setlength() DEF temp temp:=Val(gadtext) lengthdata:=temp IF lengthdata>100 THEN lengthdata:=100 IF lengthdata<001 THEN lengthdata:=001 Gt_SetGadgetAttrsA(lengthptr,project0wnd,NIL,[GTIN_NUMBER,lengthdata,NIL]) ENDPROC /******************************/ PROC setfinetune() DEF temp temp:=Val(gadtext) finetunedata[sampledata]:=temp IF finetunedata[sampledata]>7 THEN finetunedata[sampledata]:=7 IF finetunedata[sampledata]<-8 THEN finetunedata[sampledata]:=-8 Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) ENDPROC /******************************/ PROC setsample() DEF temp=0 temp:=Val(gadtext) sampledata:=temp IF temp>31 THEN sampledata:=31 IF temp<00 THEN sampledata:=00 /* Null fordi nullsamplefunksjonen */ Gt_SetGadgetAttrsA(sampleptr,project0wnd,NIL,[GTIN_NUMBER,sampledata,NIL]) Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) Gt_SetGadgetAttrsA(samplelenptr,project0wnd,NIL,[GTIN_NUMBER,samplelen[sampledata],NIL]) ENDPROC /******************************/ PROC setvolume() DEF temp=0 temp:=Val(gadtext) volumedata[sampledata]:=temp IF temp<$00 THEN volumedata[sampledata]:=0 IF temp>$40 THEN volumedata[sampledata]:=$40 Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) ENDPROC /******************************/ PROC setrepeat() DEF temp=0 temp:=Val(gadtext) repeatdata[sampledata]:=temp IF temp>$FFFC THEN repeatdata[sampledata]:=$FFFC IF temp<$0000 THEN repeatdata[sampledata]:=$0000 Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) ENDPROC /******************************/ PROC setreplen() DEF temp=0 temp:=Val(gadtext) replendata[sampledata]:=temp IF temp>$FFFE THEN replendata[sampledata]:=$FFFE IF temp<$0000 THEN replendata[sampledata]:=$0000 Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) ENDPROC /******************************/ /******************************/ PROC activatepattern() ActivateGadget(patternptr,project0wnd,NIL) ENDPROC /******************************/ PROC activatelength() ActivateGadget(lengthptr,project0wnd,NIL) ENDPROC /******************************/ PROC activatefinetune() ActivateGadget(finetuneptr,project0wnd,NIL) ENDPROC /******************************/ PROC activatesample() ActivateGadget(sampleptr,project0wnd,NIL) ENDPROC /******************************/ PROC activatevolume() ActivateGadget(volumeptr,project0wnd,NIL) ENDPROC /******************************/ PROC activaterepeat() ActivateGadget(repeatptr,project0wnd,NIL) ENDPROC /******************************/ PROC activatereplen() ActivateGadget(replenptr,project0wnd,NIL) ENDPROC /******************************/ PROC patternctrl(opt) IF opt=MINUS THEN pattern[position]:=pattern[position]-1 IF opt=PLUSS THEN pattern[position]:=pattern[position]+1 IF pattern[position]>100 THEN pattern[position]:=100 IF pattern[position]<000 THEN pattern[position]:=000 Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDPROC /******************************/ PROC lengthctrl(opt) IF opt=MINUS THEN DEC lengthdata IF opt=PLUSS THEN INC lengthdata IF lengthdata>100 THEN lengthdata:=100 IF lengthdata<001 THEN lengthdata:=001 Gt_SetGadgetAttrsA(lengthptr,project0wnd,NIL,[GTIN_NUMBER,lengthdata,NIL]) ENDPROC /******************************/ PROC finetunectrl(opt) IF opt=MINUS THEN finetunedata[sampledata]:=finetunedata[sampledata]-1 IF opt=PLUSS THEN finetunedata[sampledata]:=finetunedata[sampledata]+1 IF finetunedata[sampledata]>7 THEN finetunedata[sampledata]:=7 IF finetunedata[sampledata]<-8 THEN finetunedata[sampledata]:=-8 Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) ENDPROC /******************************/ PROC samplectrl(opt) IF opt=MINUS THEN DEC sampledata IF opt=PLUSS THEN INC sampledata IF sampledata>31 THEN sampledata:=31 IF sampledata<00 THEN sampledata:=00 /* Null fordi nullsamplefunksjonen */ Gt_SetGadgetAttrsA(sampleptr,project0wnd,NIL,[GTIN_NUMBER,sampledata,NIL]) Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) Gt_SetGadgetAttrsA(samplelenptr,project0wnd,NIL,[GTIN_NUMBER,samplelen[sampledata],NIL]) ENDPROC /******************************/ PROC volumectrl(opt) IF opt=MINUS THEN volumedata[sampledata]:=volumedata[sampledata]-1 IF opt=PLUSS THEN volumedata[sampledata]:=volumedata[sampledata]+1 IF volumedata[sampledata]>64 THEN volumedata[sampledata]:=64 IF volumedata[sampledata]<00 THEN volumedata[sampledata]:=00 Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) ENDPROC /******************************/ PROC repeatctrl(opt) IF opt=MINUS THEN repeatdata[sampledata]:=repeatdata[sampledata]-1 IF opt=PLUSS THEN repeatdata[sampledata]:=repeatdata[sampledata]+1 IF repeatdata[sampledata]>$FFFC THEN repeatdata[sampledata]:=$FFFC IF repeatdata[sampledata]<$0000 THEN repeatdata[sampledata]:=$0000 Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) ENDPROC /******************************/ PROC replenctrl(opt) IF opt=MINUS THEN replendata[sampledata]:=replendata[sampledata]-1 IF opt=PLUSS THEN replendata[sampledata]:=replendata[sampledata]+1 IF replendata[sampledata]>$FFFC THEN replendata[sampledata]:=$FFFC IF replendata[sampledata]<$0000 THEN replendata[sampledata]:=$0000 Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) ENDPROC /******************************/ PROC globalvol() mastervolume:=masterv PtSetVolume(module,mastervolume) ENDPROC /******************************/ PROC activatesongname() ActivateGadget(songnamegad,project0wnd,NIL) ENDPROC /******************************/ PROC setsongname(sngme) StrCopy(songname,sngme,StrLen(sngme)) ENDPROC /******************************/ PROC activatesamplename() ActivateGadget(samplegad,project0wnd,NIL) ENDPROC /******************************/ PROC setsamplename() ; DisplayBeep(NIL) ; ENDPROC /******************************/ PROC setstbarpattern() DEF temp temp:=Val(gadtext) pattern[position]:=temp IF temp>100 THEN pattern[position]:=100 IF temp<000 THEN pattern[position]:=000 Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDPROC /******************************/ PROC loadsample() ; DisplayBeep(NIL); inform('Not yet implemented!') ; ENDPROC /******************************/ PROC tempoctrl(opt) IF opt=MINUS THEN DEC tempo IF opt=PLUSS THEN INC tempo IF tempo>255 THEN tempo:=255 IF tempo<032 THEN tempo:=032 Gt_SetGadgetAttrsA(tempoptr,project0wnd,NIL,[GTIN_NUMBER,tempo,NIL]) ENDPROC /******************************/ PROC settempo() DEF temp temp:=Val(gadtext) tempo:=temp IF temp>255 THEN tempo:=255 IF temp<032 THEN tempo:=032 Gt_SetGadgetAttrsA(tempoptr,project0wnd,NIL,[GTIN_NUMBER,tempo,NIL]) ENDPROC /******************************/ PROC inform(message) IF reqtoolsbase:=OpenLibrary('reqtools.library',38) RtEZRequestA(message,'OK',NIL,NIL,[RT_WINDOW,project0wnd,RT_REQPOS,REQPOS_CENTERSCR,RTEZ_REQTITLE,'ProTracker V4.0 Information requester',NIL]) CloseLibrary(reqtoolsbase) ELSE EasyRequestArgs(project0wnd,[20,10,'ProTracker V4.0 Information requester',message,'OK'],0,0) ENDIF ENDPROC /******************************/ PROC ask(mesgtxt,choosetxt) DEF retval=0 IF reqtoolsbase:=OpenLibrary('reqtools.library',38) retval:=RtEZRequestA(mesgtxt,choosetxt,NIL,NIL,[RT_WINDOW,project0wnd,RT_REQPOS,REQPOS_CENTERSCR,RTEZ_REQTITLE,'ProTracker V4.0 Information requester',NIL]) CloseLibrary(reqtoolsbase) ELSE retval:=EasyRequestArgs(project0wnd,[20,10,'ProTracker V4.0 Information requester',mesgtxt,choosetxt],0,0) ENDIF ENDPROC retval /******************************/ PROC showstat(stuff) DEF oldrast StrCopy(message,stuff,ALL) oldrast:=SetStdRast(project0wnd.rport) SetAPen(stdrast,1) TextF(253,143,' ') TextF(253,143,message) SetStdRast(oldrast) ENDPROC /*****************************/ PROC movedisplay(row,pattern) DEF oldrast,tdata=0,tdatb=0,a=0,b=0,c=0,d=0,samtd=0 oldrast:=SetStdRast(project0wnd.rport) SetAPen(stdrast,1) IF row-4>=00 THEN TextF(007,160,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row-4,notedat[(row*4)-16],samplen[(row*4)-16],effectc[(row*4)-16], notedat[(row*4)-15],samplen[(row*4)-15],effectc[(row*4)-15], notedat[(row*4)-14],samplen[(row*4)-14],effectc[(row*4)-14], notedat[(row*4)-13],samplen[(row*4)-13],effectc[(row*4)-13]) ELSE TextF(007,160,' ') IF row-3>=00 THEN TextF(007,168,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row-3,notedat[(row*4)-12],samplen[(row*4)-12],effectc[(row*4)-12], notedat[(row*4)-11],samplen[(row*4)-11],effectc[(row*4)-11], notedat[(row*4)-10],samplen[(row*4)-10],effectc[(row*4)-10], notedat[(row*4)-9],samplen[(row*4)-9],effectc[(row*4)-9]) ELSE TextF(007,168,' ') IF row-2>=00 THEN TextF(007,176,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row-2,notedat[(row*4)-8],samplen[(row*4)-8],effectc[(row*4)-8], notedat[(row*4)-7],samplen[(row*4)-7],effectc[(row*4)-7], notedat[(row*4)-6],samplen[(row*4)-6],effectc[(row*4)-6], notedat[(row*4)-5],samplen[(row*4)-5],effectc[(row*4)-5]) ELSE TextF(007,176,' ') IF row-1>=00 THEN TextF(007,184,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row-1,notedat[(row*4)-4],samplen[(row*4)-4],effectc[(row*4)-4], notedat[(row*4)-3],samplen[(row*4)-3],effectc[(row*4)-3], notedat[(row*4)-2],samplen[(row*4)-2],effectc[(row*4)-2], notedat[(row*4)-1],samplen[(row*4)-1],effectc[(row*4)-1]) ELSE TextF(007,184,' ') SetAPen(stdrast,2) ; SetBPen(stdrast,3) TextF(007,195,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row,notedat[row*4],samplen[row*4],effectc[row*4], notedat[(row*4)+1],samplen[(row*4)+1],effectc[(row*4)+1], notedat[(row*4)+2],samplen[(row*4)+2],effectc[(row*4)+2], notedat[(row*4)+3],samplen[(row*4)+3],effectc[(row*4)+3]) updatequ(equalizertype,notedat[row*4],notedat[(row*4)+1],notedat[(row*4)+2],notedat[(row*4)+3]) SetAPen(stdrast,1) ; SetBPen(stdrast,0) IF row+1<=63 THEN TextF(007,205,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row+1,notedat[(row*4)+4],samplen[(row*4)+4],effectc[(row*4)+4], notedat[(row*4)+5],samplen[(row*4)+5],effectc[(row*4)+5], notedat[(row*4)+6],samplen[(row*4)+6],effectc[(row*4)+6], notedat[(row*4)+7],samplen[(row*4)+7],effectc[(row*4)+7]) ELSE TextF(007,205,' ') IF row+2<=63 THEN TextF(007,213,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row+2,notedat[(row*4)+8],samplen[(row*4)+8],effectc[(row*4)+8], notedat[(row*4)+9],samplen[(row*4)+9],effectc[(row*4)+9], notedat[(row*4)+10],samplen[(row*4)+10],effectc[(row*4)+10], notedat[(row*4)+11],samplen[(row*4)+11],effectc[(row*4)+11]) ELSE TextF(007,213,' ') IF row+3<=63 THEN TextF(007,221,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row+3,notedat[(row*4)+12],samplen[(row*4)+12],effectc[(row*4)+12], notedat[(row*4)+13],samplen[(row*4)+13],effectc[(row*4)+13], notedat[(row*4)+14],samplen[(row*4)+14],effectc[(row*4)+14], notedat[(row*4)+15],samplen[(row*4)+15],effectc[(row*4)+15]) ELSE TextF(007,221,' ') IF row+4<=63 THEN TextF(007,229,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row+4,notedat[(row*4)+16],samplen[(row*4)+16],effectc[(row*4)+16], notedat[(row*4)+17],samplen[(row*4)+17],effectc[(row*4)+17], notedat[(row*4)+18],samplen[(row*4)+18],effectc[(row*4)+18], notedat[(row*4)+19],samplen[(row*4)+19],effectc[(row*4)+19]) ELSE TextF(007,229,' ') IF row+5<=63 THEN TextF(007,237,'\z\d[2] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3] | \s \z\h[2]\z\h[3]',row+5,notedat[(row*4)+20],samplen[(row*4)+20],effectc[(row*4)+20], notedat[(row*4)+21],samplen[(row*4)+21],effectc[(row*4)+21], notedat[(row*4)+22],samplen[(row*4)+22],effectc[(row*4)+22], notedat[(row*4)+23],samplen[(row*4)+23],effectc[(row*4)+23]) ELSE TextF(007,237,' ') SetStdRast(oldrast) ENDPROC /*****************************/ PROC loadmodule(name) DEF load, /* Dummy variable for now... */ dummy,a,b,c,d,e,f,g,h,temp,bull=0,samtd=0,tdata=0,tdatb=0,del,saft, memloc:PTR TO LONG,memlen:PTR TO LONG,err=0,fhs,tempfile=FALSE Forbid() showstat('Scanning file...') IF load:=Open(name,OLDFILE) a:=Inp(load) b:=Inp(load) c:=Inp(load) d:=Inp(load) e:=Inp(load) f:=Inp(load) g:=Inp(load) h:=Inp(load) IF (a="X" AND b="P" AND c="K" AND d="F") inform(' XPK Packed file\n'+ 'Depack function for xpk files not supported yet.') Permit() RETURN 0 ENDIF IF (a="L" AND b="Z" AND c="X") inform(' LZX Packed file\n'+ ' The archive system should handle this...') RETURN 0 ENDIF IF (c="-" AND d="l" AND e="h" AND g="-") /* inform(' LHA Packed file\n'+ 'Packed with lh4 or lh5... The archive system will handle this...') */ arcsys(name,NIL) /* 0 = Lha/Lhz 1 = Lzx */ StrCopy(name,'T:PtTempFile',ALL) ENDIF IF (a="P" AND b="P" AND c="2" AND d="0") showstat('Decrunching powerpacked file...') IF ppbase:=OpenLibrary('powerpacker.library',0) IF (err:=PpLoadData(name,DECR_POINTER,MEMF_FAST,{memloc},{memlen},0))=NIL IF fhs:=Open('T:PtTempFile',NEWFILE) Write(fhs,memloc,memlen) StrCopy(name,'T:PtTempFile',ALL) Close(fhs) tempfile:=TRUE ENDIF FreeMem(memloc,memlen) ELSE SELECT err CASE PP_OPENERR Permit() inform('Unable to open file...') CASE PP_READERR Permit() inform('Read error...') CASE PP_NOMEMORY Permit() inform('Can''t allocate memory for operation...') CASE PP_CRYPTED Permit() inform('File is encrypted... can''t handle this situation yet...') CASE PP_PASSERR Permit() inform('Incorect password...(- Warning something is WRONG D-luxe -)') CASE PP_EMPTYFILE Permit() inform('File is empty... Why load nothing?...') CASE PP_UNKNOWNPP Permit() inform('This file is packed with an unknown version of powerpacker or another packer!...') DEFAULT Permit() inform('Can''t load file...!') ENDSELECT ENDIF CloseLibrary(ppbase) ELSE Permit() inform('Can''t open PowerPacker.Library') RETURN 0 ENDIF ENDIF Close(load) ENDIF IF load:=Open(name,OLDFILE) modlen:=FileLength(name) modmem:=AllocMem(modlen,MEMF_CHIP OR MEMF_CLEAR) Read(load,modmem,modlen) WriteF('Module located: $\h - $\h\n',modmem,modmem+modlen) WriteF('Songname: ') FOR dummy:=0 TO 19 WriteF('\c',a:=getmem(modmem,NIL)) ENDFOR ; WriteF('\n\n') ; Delay(10) showstat('Decoding sample-data...') FOR dummy:=1 TO 31 temp:=dummy sampledata:=temp IF temp>31 THEN sampledata:=31 IF temp<00 THEN sampledata:=00 /* Null fordi nullsamplefunksjonen */ Gt_SetGadgetAttrsA(sampleptr,project0wnd,NIL,[GTIN_NUMBER,sampledata,NIL]) Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) -> WriteF('Sample \d: ',dummy) FOR bull:=1 TO 22 WriteF('\c',a:=getmem(modmem,NIL)) ENDFOR ; /* a:=getmem(modmem,NIL) fordi 22 oppforbi. */ ; WriteF('\n') a:=getmem(modmem,NIL) b:=getmem(modmem,NIL) a:=Shl(a,8) c:=(c:=(a OR b))*2 temp:=c samplelen[sampledata]:=temp IF samplelen[sampledata]>65535 THEN samplelen[sampledata]:=65535 IF samplelen[sampledata]<0 THEN samplelen[sampledata]:=0 Gt_SetGadgetAttrsA(samplelenptr,project0wnd,NIL,[GTIN_NUMBER,samplelen[sampledata],NIL]) temp:=getmem(modmem,NIL) IF temp=$00 THEN temp:=00 IF temp=$01 THEN temp:=01 IF temp=$02 THEN temp:=02 IF temp=$03 THEN temp:=03 IF temp=$04 THEN temp:=04 IF temp=$05 THEN temp:=05 IF temp=$06 THEN temp:=06 IF temp=$07 THEN temp:=07 IF temp=$08 THEN temp:=-8 IF temp=$09 THEN temp:=-7 IF temp=$0A THEN temp:=-6 IF temp=$0B THEN temp:=-5 IF temp=$0C THEN temp:=-4 IF temp=$0D THEN temp:=-3 IF temp=$0E THEN temp:=-2 IF temp=$0F THEN temp:=-1 finetunedata[sampledata]:=temp IF finetunedata[sampledata]>7 THEN finetunedata[sampledata]:=7 IF finetunedata[sampledata]<-8 THEN finetunedata[sampledata]:=-8 Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) temp:=getmem(modmem,NIL) volumedata[sampledata]:=temp IF temp<$00 THEN volumedata[sampledata]:=0 IF temp>$40 THEN volumedata[sampledata]:=$40 Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) a:=getmem(modmem,NIL) b:=getmem(modmem,NIL) a:=Shl(a,8) c:=(c:=(a OR b))*2 temp:=c repeatdata[sampledata]:=temp IF temp>$FFFC THEN repeatdata[sampledata]:=$FFFC IF temp<$0000 THEN repeatdata[sampledata]:=$0000 Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) a:=getmem(modmem,NIL) b:=getmem(modmem,NIL) a:=Shl(a,8) c:=(c:=(a OR b))*2 temp:=c replendata[sampledata]:=temp IF temp>$FFFE THEN replendata[sampledata]:=$FFFE IF temp<$0000 THEN replendata[sampledata]:=$0000 Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) ENDFOR showstat('Decoding length & pattern-data...') /* Les dataen in i arrays... */ WriteF('Lenght of song: \d/128 patterns\n',a:=getmem(modmem,NIL)) /* Songlenght */ temp:=a lengthdata:=temp IF lengthdata>100 THEN lengthdata:=100 IF lengthdata<001 THEN lengthdata:=001 Gt_SetGadgetAttrsA(lengthptr,project0wnd,NIL,[GTIN_NUMBER,lengthdata,NIL]) WriteF('"Checkmark" \d ...(127)\n',a:=getmem(modmem,NIL)) /* 127 checkmark or noisetracker restart*/ FOR bull:=1 TO 128 WriteF('Position \d = \d \b',bull,a:=getmem(modmem,NIL)) position:=bull IF position>=lengthdata THEN position:=lengthdata-1 IF position<0 THEN position:=0 Gt_SetGadgetAttrsA(positionptr,project0wnd,NIL,[GTIN_NUMBER,position,NIL]) -> Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) temp:=a pattern[position-1]:=temp IF temp>100 THEN pattern[position]:=100 IF temp<000 THEN pattern[position]:=000 Gt_SetGadgetAttrsA(patternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) Gt_SetGadgetAttrsA(stbarpatternptr,project0wnd,NIL,[GTIN_NUMBER,pattern[position],NIL]) ENDFOR ; WriteF('\n') showstat('Scanning module-type...') /* Denne skal inneholde "M.K." 4 bytes. */ IF (a:=getmem(modmem,NIL))="M" THEN WriteF('Phase 1/4...\b') ELSE WriteF('Error!!! 1/4...\n') IF (a:=getmem(modmem,NIL))="." THEN WriteF('Phase 2/4...\b') ELSE WriteF('Error!!! 2/4...\n') IF (a:=getmem(modmem,NIL))="K" THEN WriteF('Phase 3/4...\b') ELSE WriteF('Error!!! 3/4...\n') IF (a:=getmem(modmem,NIL))="." THEN WriteF('Phase 4/4 \n') ELSE WriteF('Error!!! 4/4...\n') WriteF('\n----------\nNote data:\n----------\n\n') showstat('Decoding notation data...') WriteF('Notedata: $\h - \d\n',modmem+jubalongteller,modmem+jubalongteller) /* FOR del:=0 TO (63*4)+4 a:=getmem(modmem,NIL) b:=getmem(modmem,NIL) c:=getmem(modmem,NIL) d:=getmem(modmem,NIL) CLR.L D0 /* D0 = %00000000 00000000 00000000 00000000 */ CLR.L D1 /* D1 = %00000000 00000000 00000000 00000000 */ CLR.L D2 MOVE.L a ,D0 /* D0 = %00000000 00000000 00000000 11112222 */ ROR.L #4,D0 /* D0 = %22220000 00000000 00000000 00001111 */ MOVE.B D0,D1 /* D1 = %00000000 00000000 00000000 00001111 */ CLR.B D0 /* D0 = %22220000 00000000 00000000 00000000 */ ROL.L #8,D0 /* D0 = %00000000 00000000 00000000 22220000 */ ROL.L #4,D0 /* D0 = %00000000 00000000 00002222 00000000 */ MOVE.L b ,D2 /* D2 = %00000000 00000000 00000000 33333333 */ MOVE.B D2,D0 /* D0 = %00000000 00000000 00002222 33333333 */ MOVE.L D0,tdatb /* Noteperiod calculated (12-Bits number) */ CLR.L D0 CLR.L D2 CLR.L D3 MOVE.L c ,D0 /* D0 = %00000000 00000000 00000000 11111111 */ MOVE.L D0,D2 /* D2 = %00000000 00000000 00000000 11111111 */ ROL.L #4,D0 /* D0 = %00000000 00000000 00001111 11110000 */ CLR.B D0 /* D0 = %00000000 00000000 00001111 00000000 */ ROR.L #4,D0 /* D0 = %00000000 00000000 00000000 11110000 */ ROL.L #8,D1 /* D1 = %00000000 00000000 00001111 00000000 */ MOVE.B D0,D1 /* D1 = %00000000 00000000 00001111 11110000 */ ROR.L #4,D1 /* D1 = %00000000 00000000 00000000 11111111 */ MOVE.L D1,saft /* Samplenumber calculated out of two difrent bytes */ ROL.L #4,D2 /* D2 = %00000000 00000000 00001111 11110000 */ MOVE.B D2,D3 /* D3 = %00000000 00000000 00000000 11110000 */ ROL.L #4,D3 /* D3 = %00000000 00000000 00001111 00000000 */ MOVE.L d ,D2 /* En liten fiks siden vi allerede er ferdige med D2 */ MOVE.B D2,D3 /* D3 = %00000000 00000000 00001111 22222222 */ MOVE.L D3,tdata /* Effect cmd. Must be showed in HEX form */ /* Asm rutine virker nå 100% slik den skal */ SELECT tdatb /* select er raskere en if */ CASE 856;StrCopy(notedat[del],'C-1',3);CASE 428;StrCopy(notedat[del],'C-2',3);CASE 214;StrCopy(notedat[del],'C-3',3) CASE 808;StrCopy(notedat[del],'C#1',3);CASE 404;StrCopy(notedat[del],'C#2',3);CASE 202;StrCopy(notedat[del],'C#3',3) CASE 762;StrCopy(notedat[del],'D-1',3);CASE 381;StrCopy(notedat[del],'D-2',3);CASE 190;StrCopy(notedat[del],'D-3',3) CASE 720;StrCopy(notedat[del],'D#1',3);CASE 360;StrCopy(notedat[del],'D#2',3);CASE 180;StrCopy(notedat[del],'D#3',3) CASE 678;StrCopy(notedat[del],'E-1',3);CASE 339;StrCopy(notedat[del],'E-2',3);CASE 170;StrCopy(notedat[del],'E-3',3) CASE 640;StrCopy(notedat[del],'F-1',3);CASE 320;StrCopy(notedat[del],'F-2',3);CASE 160;StrCopy(notedat[del],'F-3',3) CASE 604;StrCopy(notedat[del],'F#1',3);CASE 302;StrCopy(notedat[del],'F#2',3);CASE 151;StrCopy(notedat[del],'F#3',3) CASE 570;StrCopy(notedat[del],'G-1',3);CASE 285;StrCopy(notedat[del],'G-2',3);CASE 143;StrCopy(notedat[del],'G-3',3) CASE 538;StrCopy(notedat[del],'G#1',3);CASE 269;StrCopy(notedat[del],'G#2',3);CASE 135;StrCopy(notedat[del],'G#3',3) CASE 508;StrCopy(notedat[del],'A-1',3);CASE 254;StrCopy(notedat[del],'A-2',3);CASE 127;StrCopy(notedat[del],'A-3',3) CASE 480;StrCopy(notedat[del],'A#1',3);CASE 240;StrCopy(notedat[del],'A#2',3);CASE 120;StrCopy(notedat[del],'A#3',3) CASE 453;StrCopy(notedat[del],'B-1',3);CASE 226;StrCopy(notedat[del],'B-2',3);CASE 113;StrCopy(notedat[del],'B-3',3) DEFAULT StrCopy(notedat[del],'---',3) ENDSELECT -> WriteF('\s',notedat[del]) samplen[del]:=saft effectc[del]:=tdata -> WriteF(' Eff: \z\h[2]»\z\h[4] |',saft,tdata) ENDFOR */ /* Yeargh */ temp:=01 sampledata:=temp IF temp>31 THEN sampledata:=31 IF temp<00 THEN sampledata:=00 /* Null fordi nullsamplefunksjonen */ Gt_SetGadgetAttrsA(sampleptr,project0wnd,NIL,[GTIN_NUMBER,sampledata,NIL]) Gt_SetGadgetAttrsA(volumeptr,project0wnd,NIL,[GTIN_NUMBER,volumedata[sampledata],NIL]) Gt_SetGadgetAttrsA(repeatptr,project0wnd,NIL,[GTIN_NUMBER,repeatdata[sampledata],NIL]) Gt_SetGadgetAttrsA(replenptr,project0wnd,NIL,[GTIN_NUMBER,replendata[sampledata],NIL]) Gt_SetGadgetAttrsA(finetuneptr,project0wnd,NIL,[GTIN_NUMBER,finetunedata[sampledata],NIL]) module:=PtSetupMod(modmem) position:=0 PtSetPos(module,position) getmem(NIL,TRUE) Close(load) IF tempfile=TRUE showstat('Deleting temporarly file...') DeleteFile('T:PtTempFile') tempfile:=FALSE ENDIF decodedata(pattern[0]) movedisplay(NIL,NIL) ENDIF Permit() ENDPROC PROC getmem(memptr,nilset) IF nilset=TRUE THEN jubalongteller:=-2 INC jubalongteller ENDPROC Char(memptr+jubalongteller) PROC decodedata(pattstuff) DEF a,b,c,d,del,tdata,tdatb,saft a:=getmem(modmem,TRUE) FOR del:=0 TO (63*4)+4 a:=getmem((modmem+1084)+(pattstuff*1024),NIL) b:=getmem((modmem+1084)+(pattstuff*1024),NIL) c:=getmem((modmem+1084)+(pattstuff*1024),NIL) d:=getmem((modmem+1084)+(pattstuff*1024),NIL) CLR.L D0 /* D0 = %00000000 00000000 00000000 00000000 */ CLR.L D1 /* D1 = %00000000 00000000 00000000 00000000 */ CLR.L D2 MOVE.L a ,D0 /* D0 = %00000000 00000000 00000000 11112222 */ ROR.L #4,D0 /* D0 = %22220000 00000000 00000000 00001111 */ MOVE.B D0,D1 /* D1 = %00000000 00000000 00000000 00001111 */ CLR.B D0 /* D0 = %22220000 00000000 00000000 00000000 */ ROL.L #8,D0 /* D0 = %00000000 00000000 00000000 22220000 */ ROL.L #4,D0 /* D0 = %00000000 00000000 00002222 00000000 */ MOVE.L b ,D2 /* D2 = %00000000 00000000 00000000 33333333 */ MOVE.B D2,D0 /* D0 = %00000000 00000000 00002222 33333333 */ MOVE.L D0,tdatb /* Noteperiod calculated (12-Bits number) */ CLR.L D0 CLR.L D2 CLR.L D3 MOVE.L c ,D0 /* D0 = %00000000 00000000 00000000 11111111 */ MOVE.L D0,D2 /* D2 = %00000000 00000000 00000000 11111111 */ ROL.L #4,D0 /* D0 = %00000000 00000000 00001111 11110000 */ CLR.B D0 /* D0 = %00000000 00000000 00001111 00000000 */ ROR.L #4,D0 /* D0 = %00000000 00000000 00000000 11110000 */ ROL.L #8,D1 /* D1 = %00000000 00000000 00001111 00000000 */ MOVE.B D0,D1 /* D1 = %00000000 00000000 00001111 11110000 */ ROR.L #4,D1 /* D1 = %00000000 00000000 00000000 11111111 */ MOVE.L D1,saft /* Samplenumber calculated out of two difrent bytes */ ROL.L #4,D2 /* D2 = %00000000 00000000 00001111 11110000 */ MOVE.B D2,D3 /* D3 = %00000000 00000000 00000000 11110000 */ ROL.L #4,D3 /* D3 = %00000000 00000000 00001111 00000000 */ MOVE.L d ,D2 /* En liten fiks siden vi allerede er ferdige med D2 */ MOVE.B D2,D3 /* D3 = %00000000 00000000 00001111 22222222 */ MOVE.L D3,tdata /* Effect cmd. Must be showed in HEX form */ /* Asm rutine virker nå 100% slik den skal */ SELECT tdatb /* select er raskere en if */ CASE 856;StrCopy(notedat[del],'C-1',3);CASE 428;StrCopy(notedat[del],'C-2',3);CASE 214;StrCopy(notedat[del],'C-3',3) CASE 808;StrCopy(notedat[del],'C#1',3);CASE 404;StrCopy(notedat[del],'C#2',3);CASE 202;StrCopy(notedat[del],'C#3',3) CASE 762;StrCopy(notedat[del],'D-1',3);CASE 381;StrCopy(notedat[del],'D-2',3);CASE 190;StrCopy(notedat[del],'D-3',3) CASE 720;StrCopy(notedat[del],'D#1',3);CASE 360;StrCopy(notedat[del],'D#2',3);CASE 180;StrCopy(notedat[del],'D#3',3) CASE 678;StrCopy(notedat[del],'E-1',3);CASE 339;StrCopy(notedat[del],'E-2',3);CASE 170;StrCopy(notedat[del],'E-3',3) CASE 640;StrCopy(notedat[del],'F-1',3);CASE 320;StrCopy(notedat[del],'F-2',3);CASE 160;StrCopy(notedat[del],'F-3',3) CASE 604;StrCopy(notedat[del],'F#1',3);CASE 302;StrCopy(notedat[del],'F#2',3);CASE 151;StrCopy(notedat[del],'F#3',3) CASE 570;StrCopy(notedat[del],'G-1',3);CASE 285;StrCopy(notedat[del],'G-2',3);CASE 143;StrCopy(notedat[del],'G-3',3) CASE 538;StrCopy(notedat[del],'G#1',3);CASE 269;StrCopy(notedat[del],'G#2',3);CASE 135;StrCopy(notedat[del],'G#3',3) CASE 508;StrCopy(notedat[del],'A-1',3);CASE 254;StrCopy(notedat[del],'A-2',3);CASE 127;StrCopy(notedat[del],'A-3',3) CASE 480;StrCopy(notedat[del],'A#1',3);CASE 240;StrCopy(notedat[del],'A#2',3);CASE 120;StrCopy(notedat[del],'A#3',3) CASE 453;StrCopy(notedat[del],'B-1',3);CASE 226;StrCopy(notedat[del],'B-2',3);CASE 113;StrCopy(notedat[del],'B-3',3) DEFAULT StrCopy(notedat[del],'---',3) ENDSELECT samplen[del]:=saft effectc[del]:=tdata ENDFOR ENDPROC PROC updatequ(equt,d1,d2,d3,d4) DEF oldrast,y=0 IF equt=1 oldrast:=SetStdRast(project0wnd.rport) IF (StrCmp(d1,'---',STRLEN) OR StrCmp(d2,'---',STRLEN) OR StrCmp(d3,'---',STRLEN) OR StrCmp(d4,'---',STRLEN)) Box(y:=261+1,69,y+4,103,0) Box(y:=261+1,69,y+4,103,0) Box(y:=273+1,69,y+4,103,0) Box(y:=285+1,69,y+4,103,0) Box(y:=297+1,69,y+4,103,0) Box(y:=309+1,69,y+4,103,0) Box(y:=321+1,69,y+4,103,0) Box(y:=333+1,69,y+4,103,0) Box(y:=345+1,69,y+4,103,0) Box(y:=357+1,69,y+4,103,0) Box(y:=369+1,69,y+4,103,0) Box(y:=381+1,69,y+4,103,0) Box(y:=393+1,69,y+4,103,0) Box(y:=405+1,69,y+4,103,0) Box(y:=417+1,69,y+4,103,0) Box(y:=429+1,69,y+4,103,0) Box(y:=441+1,69,y+4,103,0) Box(y:=453+1,69,y+4,103,0) Box(y:=465+1,69,y+4,103,0) Box(y:=477+1,69,y+4,103,0) Box(y:=489+1,69,y+4,103,0) Box(y:=501+1,69,y+4,103,0) Box(y:=513+1,69,y+4,103,0) Box(y:=525+1,69,y+4,103,0) Box(y:=537+1,69,y+4,103,0) Box(y:=549+1,69,y+4,103,0) Box(y:=561+1,69,y+4,103,0) Box(y:=573+1,69,y+4,103,0) Box(y:=585+1,69,y+4,103,0) Box(y:=597+1,69,y+4,103,0) Box(y:=609+1,69,y+4,103,0) Box(y:=621+1,69,y+4,103,0) Box(y:=621+1,69,y+4,103,0) Box(y:=621+1,69,y+4,103,0) Box(y:=621+1,69,y+4,103,0) Box(y:=621+1,69,y+4,103,0) ENDIF IF StrCmp(d1,d2,3) THEN JUMP c2 IF StrCmp(d1,'C-1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d1,'C#1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d1,'D-1',STRLEN) THEN Box(y:=273+1,69,y+4,103,3) IF StrCmp(d1,'D#1',STRLEN) THEN Box(y:=285+1,69,y+4,103,3) IF StrCmp(d1,'E-1',STRLEN) THEN Box(y:=297+1,69,y+4,103,3) IF StrCmp(d1,'F-1',STRLEN) THEN Box(y:=309+1,69,y+4,103,3) IF StrCmp(d1,'F#1',STRLEN) THEN Box(y:=321+1,69,y+4,103,3) IF StrCmp(d1,'G-1',STRLEN) THEN Box(y:=333+1,69,y+4,103,3) IF StrCmp(d1,'G#1',STRLEN) THEN Box(y:=345+1,69,y+4,103,3) IF StrCmp(d1,'A-1',STRLEN) THEN Box(y:=357+1,69,y+4,103,3) IF StrCmp(d1,'A#1',STRLEN) THEN Box(y:=369+1,69,y+4,103,3) IF StrCmp(d1,'B-1',STRLEN) THEN Box(y:=381+1,69,y+4,103,3) IF StrCmp(d1,'C-2',STRLEN) THEN Box(y:=393+1,69,y+4,103,3) IF StrCmp(d1,'C#2',STRLEN) THEN Box(y:=405+1,69,y+4,103,3) IF StrCmp(d1,'D-2',STRLEN) THEN Box(y:=417+1,69,y+4,103,3) IF StrCmp(d1,'D#2',STRLEN) THEN Box(y:=429+1,69,y+4,103,3) IF StrCmp(d1,'E-2',STRLEN) THEN Box(y:=441+1,69,y+4,103,3) IF StrCmp(d1,'F-2',STRLEN) THEN Box(y:=453+1,69,y+4,103,3) IF StrCmp(d1,'F#2',STRLEN) THEN Box(y:=465+1,69,y+4,103,3) IF StrCmp(d1,'G-2',STRLEN) THEN Box(y:=477+1,69,y+4,103,3) IF StrCmp(d1,'G#2',STRLEN) THEN Box(y:=489+1,69,y+4,103,3) IF StrCmp(d1,'A-2',STRLEN) THEN Box(y:=501+1,69,y+4,103,3) IF StrCmp(d1,'A#2',STRLEN) THEN Box(y:=513+1,69,y+4,103,3) IF StrCmp(d1,'B-2',STRLEN) THEN Box(y:=525+1,69,y+4,103,3) IF StrCmp(d1,'C-3',STRLEN) THEN Box(y:=537+1,69,y+4,103,3) IF StrCmp(d1,'C#3',STRLEN) THEN Box(y:=549+1,69,y+4,103,3) IF StrCmp(d1,'D-3',STRLEN) THEN Box(y:=561+1,69,y+4,103,3) IF StrCmp(d1,'D#3',STRLEN) THEN Box(y:=573+1,69,y+4,103,3) IF StrCmp(d1,'E-3',STRLEN) THEN Box(y:=585+1,69,y+4,103,3) IF StrCmp(d1,'F-3',STRLEN) THEN Box(y:=597+1,69,y+4,103,3) IF StrCmp(d1,'F#3',STRLEN) THEN Box(y:=609+1,69,y+4,103,3) IF StrCmp(d1,'G-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d1,'G#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d1,'A-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d1,'A#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d1,'B-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) c2: IF StrCmp(d2,d3,3) THEN JUMP c3 IF StrCmp(d2,'C-1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d2,'C#1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d2,'D-1',STRLEN) THEN Box(y:=273+1,69,y+4,103,3) IF StrCmp(d2,'D#1',STRLEN) THEN Box(y:=285+1,69,y+4,103,3) IF StrCmp(d2,'E-1',STRLEN) THEN Box(y:=297+1,69,y+4,103,3) IF StrCmp(d2,'F-1',STRLEN) THEN Box(y:=309+1,69,y+4,103,3) IF StrCmp(d2,'F#1',STRLEN) THEN Box(y:=321+1,69,y+4,103,3) IF StrCmp(d2,'G-1',STRLEN) THEN Box(y:=333+1,69,y+4,103,3) IF StrCmp(d2,'G#1',STRLEN) THEN Box(y:=345+1,69,y+4,103,3) IF StrCmp(d2,'A-1',STRLEN) THEN Box(y:=357+1,69,y+4,103,3) IF StrCmp(d2,'A#1',STRLEN) THEN Box(y:=369+1,69,y+4,103,3) IF StrCmp(d2,'B-1',STRLEN) THEN Box(y:=381+1,69,y+4,103,3) IF StrCmp(d2,'C-2',STRLEN) THEN Box(y:=393+1,69,y+4,103,3) IF StrCmp(d2,'C#2',STRLEN) THEN Box(y:=405+1,69,y+4,103,3) IF StrCmp(d2,'D-2',STRLEN) THEN Box(y:=417+1,69,y+4,103,3) IF StrCmp(d2,'D#2',STRLEN) THEN Box(y:=429+1,69,y+4,103,3) IF StrCmp(d2,'E-2',STRLEN) THEN Box(y:=441+1,69,y+4,103,3) IF StrCmp(d2,'F-2',STRLEN) THEN Box(y:=453+1,69,y+4,103,3) IF StrCmp(d2,'F#2',STRLEN) THEN Box(y:=465+1,69,y+4,103,3) IF StrCmp(d2,'G-2',STRLEN) THEN Box(y:=477+1,69,y+4,103,3) IF StrCmp(d2,'G#2',STRLEN) THEN Box(y:=489+1,69,y+4,103,3) IF StrCmp(d2,'A-2',STRLEN) THEN Box(y:=501+1,69,y+4,103,3) IF StrCmp(d2,'A#2',STRLEN) THEN Box(y:=513+1,69,y+4,103,3) IF StrCmp(d2,'B-2',STRLEN) THEN Box(y:=525+1,69,y+4,103,3) IF StrCmp(d2,'C-3',STRLEN) THEN Box(y:=537+1,69,y+4,103,3) IF StrCmp(d2,'C#3',STRLEN) THEN Box(y:=549+1,69,y+4,103,3) IF StrCmp(d2,'D-3',STRLEN) THEN Box(y:=561+1,69,y+4,103,3) IF StrCmp(d2,'D#3',STRLEN) THEN Box(y:=573+1,69,y+4,103,3) IF StrCmp(d2,'E-3',STRLEN) THEN Box(y:=585+1,69,y+4,103,3) IF StrCmp(d2,'F-3',STRLEN) THEN Box(y:=597+1,69,y+4,103,3) IF StrCmp(d2,'F#3',STRLEN) THEN Box(y:=609+1,69,y+4,103,3) IF StrCmp(d2,'G-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d2,'G#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d2,'A-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d2,'A#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d2,'B-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) c3: IF StrCmp(d3,d4,3) THEN JUMP c4 IF StrCmp(d3,'C-1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d3,'C#1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d3,'D-1',STRLEN) THEN Box(y:=273+1,69,y+4,103,3) IF StrCmp(d3,'D#1',STRLEN) THEN Box(y:=285+1,69,y+4,103,3) IF StrCmp(d3,'E-1',STRLEN) THEN Box(y:=297+1,69,y+4,103,3) IF StrCmp(d3,'F-1',STRLEN) THEN Box(y:=309+1,69,y+4,103,3) IF StrCmp(d3,'F#1',STRLEN) THEN Box(y:=321+1,69,y+4,103,3) IF StrCmp(d3,'G-1',STRLEN) THEN Box(y:=333+1,69,y+4,103,3) IF StrCmp(d3,'G#1',STRLEN) THEN Box(y:=345+1,69,y+4,103,3) IF StrCmp(d3,'A-1',STRLEN) THEN Box(y:=357+1,69,y+4,103,3) IF StrCmp(d3,'A#1',STRLEN) THEN Box(y:=369+1,69,y+4,103,3) IF StrCmp(d3,'B-1',STRLEN) THEN Box(y:=381+1,69,y+4,103,3) IF StrCmp(d3,'C-2',STRLEN) THEN Box(y:=393+1,69,y+4,103,3) IF StrCmp(d3,'C#2',STRLEN) THEN Box(y:=405+1,69,y+4,103,3) IF StrCmp(d3,'D-2',STRLEN) THEN Box(y:=417+1,69,y+4,103,3) IF StrCmp(d3,'D#2',STRLEN) THEN Box(y:=429+1,69,y+4,103,3) IF StrCmp(d3,'E-2',STRLEN) THEN Box(y:=441+1,69,y+4,103,3) IF StrCmp(d3,'F-2',STRLEN) THEN Box(y:=453+1,69,y+4,103,3) IF StrCmp(d3,'F#2',STRLEN) THEN Box(y:=465+1,69,y+4,103,3) IF StrCmp(d3,'G-2',STRLEN) THEN Box(y:=477+1,69,y+4,103,3) IF StrCmp(d3,'G#2',STRLEN) THEN Box(y:=489+1,69,y+4,103,3) IF StrCmp(d3,'A-2',STRLEN) THEN Box(y:=501+1,69,y+4,103,3) IF StrCmp(d3,'A#2',STRLEN) THEN Box(y:=513+1,69,y+4,103,3) IF StrCmp(d3,'B-2',STRLEN) THEN Box(y:=525+1,69,y+4,103,3) IF StrCmp(d3,'C-3',STRLEN) THEN Box(y:=537+1,69,y+4,103,3) IF StrCmp(d3,'C#3',STRLEN) THEN Box(y:=549+1,69,y+4,103,3) IF StrCmp(d3,'D-3',STRLEN) THEN Box(y:=561+1,69,y+4,103,3) IF StrCmp(d3,'D#3',STRLEN) THEN Box(y:=573+1,69,y+4,103,3) IF StrCmp(d3,'E-3',STRLEN) THEN Box(y:=585+1,69,y+4,103,3) IF StrCmp(d3,'F-3',STRLEN) THEN Box(y:=597+1,69,y+4,103,3) IF StrCmp(d3,'F#3',STRLEN) THEN Box(y:=609+1,69,y+4,103,3) IF StrCmp(d3,'G-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d3,'G#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d3,'A-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d3,'A#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d3,'B-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) c4: IF StrCmp(d4,'C-1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d4,'C#1',STRLEN) THEN Box(y:=261+1,69,y+4,103,3) IF StrCmp(d4,'D-1',STRLEN) THEN Box(y:=273+1,69,y+4,103,3) IF StrCmp(d4,'D#1',STRLEN) THEN Box(y:=285+1,69,y+4,103,3) IF StrCmp(d4,'E-1',STRLEN) THEN Box(y:=297+1,69,y+4,103,3) IF StrCmp(d4,'F-1',STRLEN) THEN Box(y:=309+1,69,y+4,103,3) IF StrCmp(d4,'F#1',STRLEN) THEN Box(y:=321+1,69,y+4,103,3) IF StrCmp(d4,'G-1',STRLEN) THEN Box(y:=333+1,69,y+4,103,3) IF StrCmp(d4,'G#1',STRLEN) THEN Box(y:=345+1,69,y+4,103,3) IF StrCmp(d4,'A-1',STRLEN) THEN Box(y:=357+1,69,y+4,103,3) IF StrCmp(d4,'A#1',STRLEN) THEN Box(y:=369+1,69,y+4,103,3) IF StrCmp(d4,'B-1',STRLEN) THEN Box(y:=381+1,69,y+4,103,3) IF StrCmp(d4,'C-2',STRLEN) THEN Box(y:=393+1,69,y+4,103,3) IF StrCmp(d4,'C#2',STRLEN) THEN Box(y:=405+1,69,y+4,103,3) IF StrCmp(d4,'D-2',STRLEN) THEN Box(y:=417+1,69,y+4,103,3) IF StrCmp(d4,'D#2',STRLEN) THEN Box(y:=429+1,69,y+4,103,3) IF StrCmp(d4,'E-2',STRLEN) THEN Box(y:=441+1,69,y+4,103,3) IF StrCmp(d4,'F-2',STRLEN) THEN Box(y:=453+1,69,y+4,103,3) IF StrCmp(d4,'F#2',STRLEN) THEN Box(y:=465+1,69,y+4,103,3) IF StrCmp(d4,'G-2',STRLEN) THEN Box(y:=477+1,69,y+4,103,3) IF StrCmp(d4,'G#2',STRLEN) THEN Box(y:=489+1,69,y+4,103,3) IF StrCmp(d4,'A-2',STRLEN) THEN Box(y:=501+1,69,y+4,103,3) IF StrCmp(d4,'A#2',STRLEN) THEN Box(y:=513+1,69,y+4,103,3) IF StrCmp(d4,'B-2',STRLEN) THEN Box(y:=525+1,69,y+4,103,3) IF StrCmp(d4,'C-3',STRLEN) THEN Box(y:=537+1,69,y+4,103,3) IF StrCmp(d4,'C#3',STRLEN) THEN Box(y:=549+1,69,y+4,103,3) IF StrCmp(d4,'D-3',STRLEN) THEN Box(y:=561+1,69,y+4,103,3) IF StrCmp(d4,'D#3',STRLEN) THEN Box(y:=573+1,69,y+4,103,3) IF StrCmp(d4,'E-3',STRLEN) THEN Box(y:=585+1,69,y+4,103,3) IF StrCmp(d4,'F-3',STRLEN) THEN Box(y:=597+1,69,y+4,103,3) IF StrCmp(d4,'F#3',STRLEN) THEN Box(y:=609+1,69,y+4,103,3) IF StrCmp(d4,'G-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d4,'G#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d4,'A-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d4,'A#3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) IF StrCmp(d4,'B-3',STRLEN) THEN Box(y:=621+1,69,y+4,103,3) SetStdRast(oldrast) ENDIF ENDPROC /***************** PROTRACKER'S ARCHIVE SYSTEM V1.0 ********************/ PROC openproject1window() DEF g:PTR TO gadget IF (g:=CreateContext({project1glist}))=NIL THEN RETURN NOCONTEXT listv:=[0,0,0,0] ; listv[0]:=listv+4 ; listv[2]:=listv IF (add:=g:=CreateGadgetA(LISTVIEW_KIND,g, [offx+4,offy+11,495,112,'',tattr,1,0,visual,0]:newgadget, [GTLV_LABELS,listv, GTLV_TOP,itemposition, GTLV_SHOWSELECTED,NIL, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+500,offy+11,122,11,'Load',tattr,2,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+500,offy+22,122,11,'Delete',tattr,3,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+500,offy+33,122,11,'Save',tattr,4,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+500,offy+44,122,11,'Quit',tattr,5,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (project1wnd:=OpenWindowTagList(NIL, [WA_LEFT,9, WA_TOP,27, WA_WIDTH,offx+627, WA_HEIGHT,offy+125, WA_IDCMP,$24C077E, WA_FLAGS,$100E, WA_TITLE,'ProTracker V4.0 - Archive system V1.0', WA_CUSTOMSCREEN,scr, WA_MINWIDTH,67, WA_MINHEIGHT,21, WA_MAXWIDTH,$280, WA_MAXHEIGHT,256, WA_AUTOADJUST,1, WA_AUTOADJUST,1, WA_GADGETS,project1glist, NIL]))=NIL THEN RETURN NOWINDOW DrawBevelBoxA(project1wnd.rport,503,56,115,67, [GT_VISUALINFO,visual,NIL]) Gt_RefreshWindow(project0wnd,NIL) ENDPROC PROC closeproject1window() IF project1wnd THEN CloseWindow(project1wnd) IF project1glist THEN FreeGadgets(project1glist) ENDPROC PROC setuplistv() DEF temp[256]:STRING,load,c=0 StringF(temp,'LHA vq \s >T:ARCTEMP',arcname) Execute(temp,NIL,NIL) IF load:=Open('T:ARCTEMP',OLDFILE) Fgets(load,temp,200) Fgets(load,temp,200) /* Skip non-important stuff... */ Fgets(load,temp,200) Fgets(load,temp,200) REPEAT addlistv(temp) lhac[c]:=String(StrLen(temp)+10) StrCopy(lhac[c],temp,(StrLen(temp)-1)) INC c UNTIL Fgets(load,temp,200)=NIL Close(load) ENDIF ENDPROC PROC addlistv(insinfo) DEF text[200]:STRING INC itemposition /* Gadget posisjon i ListView */ addname:=New(SIZEOF ln) /* Hvilken linje vi er kommer til */ text:=String(100) /* Denne MÅ være her, prøv uten så får du se */ StrCopy(text,insinfo,(StrLen(insinfo)-1)) /* Kopier gadget innhold til text string */ addname.name:=text /* Bruk innholdet */ AddTail(listv,addname) /* Add den til LISTA :) */ Gt_SetGadgetAttrsA(add,project1wnd,NIL,[GTLV_LABELS,listv,GTLV_TOP,itemposition,NIL,NIL]) /* Oppdater lista */ ENDPROC PROC arcsys(name,arctype) DEF execstr[256]:STRING IF arctype=0 IF openproject1window()=NIL StrCopy(arcname,name,StrLen(name)) Gt_RefreshWindow(project1wnd,NIL) /* I use this to fix a litle gfx bug in the ListView gadget */ setuplistv() REPEAT wait4message(project1wnd) IF (type=64 AND infos=01) THEN StrCopy(selected,lhac[gadinfo],StrLen(lhac[gadinfo])) IF (type=64 AND infos=02) StringF(execstr,'LHA e "\s" "\s" T:',name,selected) Execute(execstr,NIL,NIL) StringF(execstr,'RAM:T/\s',selected) Rename(execstr,'T:PtTempFile') DeleteFile('T:ARCTEMP') type:=IDCMP_CLOSEWINDOW ENDIF IF (type=64 AND infos=03) THEN WriteF('Delete ..ask...\n') IF (type=64 AND infos=04) THEN WriteF('Save not be here...\n') IF (type=64 AND infos=05) THEN type:=IDCMP_CLOSEWINDOW UNTIL type=IDCMP_CLOSEWINDOW closeproject1window() ENDIF ENDIF ENDPROC PROC installintsys() IF bullport:=CreateMsgPort() IF vbint:=AllocMem(SIZEOF is, MEMF_PUBLIC OR MEMF_CLEAR) vbint::ln.type:=NT_INTERRUPT vbint::ln.pri:=-16 vbint::ln.name:='ProTrackerV4-VBeam Server' vbint.data:=0 vbint.code:=eCodeIntServer({vertBServer}) AddIntServer(INTB_VERTB, vbint) ENDIF RETURN TRUE ENDIF ENDPROC PROC removeintsys() IF bullport THEN DeleteMsgPort(bullport) IF vbint RemIntServer(INTB_VERTB, vbint) FreeMem(vbint,SIZEOF is) ENDIF ENDPROC PROC vertBServer() PutMsg(bullport,%11111111) ENDPROC