home *** CD-ROM | disk | FTP | other *** search
- /* MED-newmsgh.c --- viestien kΣsittely (V2.00:sta alkaen) */
- /* Uuden msghandlerin kirjoittamisen urakka aloitettu 12.10.1989 */
- #include <hardware/custom.h>
- #include "med.h"
- #define SHIFT (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT)
- #define ALT (ALTLEFT|ALTRIGHT)
- extern struct CIA far ciaa;
- extern struct Custom far custom;
- extern struct Image pylvasimage;
- extern struct RastPort *wrp;
- extern struct Kappale far tamakappale;
- extern struct Window *window,*pw;
- extern struct NewWindow far pnw;
- extern struct Screen *screen;
- extern struct StringInfo strinfo[];
- extern struct PropInfo far propinfo[];
- extern struct Image far kuviot,far loadgadgimg,far savegadgimg;
- extern struct Gadget far gadget1[],far gadget2[],far gadget3[],far gadget4[];
- extern struct Gadget far gadget5[],far gadget6[],far gadget9[],far *glists[];
- extern struct Gadget far gadget7[],far gadgetA[];
- extern UWORD *imgdataptr[],far nappokt,chip mouse0[],chip mouse1[];
- extern BOOL naytonpaivitys,aanipaalla[];
- extern LONG pylvasalku0;
- extern void __asm PaivitaNaytto(register __d0 BOOL);
- extern void __asm Korosta(register __a0 struct Gadget *,register __d0 BOOL);
- extern char kappaleennimi[];
- extern UBYTE firstdisptrk,thiscol;
- UWORD nykyinenosio;
- UBYTE far klevx[] = { 0,0,0,0,24,0,0,0,8,8,8,8,0,24,0,0,0,8,8,8,8,0,24,0,0,0,
- 8,8,8,8,0,24,0,0,0,8,8,8,8,0 };
- UBYTE far midiactive = 0;
- UWORD lohkoja,soittimennum = 1,kursorix = 4,currtrk = 0,currpos = 0;
- BOOL ilmoitusnakyy = FALSE;
- UWORD volatile tempo = 60,soittorivi,soittolohko,soittolohkonnum,soittotila;
- struct Lohko far *lohko[100];
- BOOL KasitteleGadget();
- static BOOL KasitteleOsio7();
- void OsionValinta(),KasitteleNappain();
- static void KasitteleOsio2(),KasitteleOsio3(),KasitteleOsio4();
- static void KasitteleOsio5(),KasitteleOsio6(),HandlePlainKey();
- static void KasitteleOsio9(),KasitteleOsioA();
- static UBYTE f5_10line[5] = { 0,16,32,48,63 },waitsomething;
- static char *abouttxt[] = { "MED2.00 by Teijo Kinnunen, 1990",
- "Address: Oksantie 19...","SF-86300 OULAINEN, FINLAND",
- "IFF 8SVX loader by S. Hayes","Then some greetings:",
- "Greetings to Topi & Osku","and of course, to Erkki Hannila",
- "MED is in Public Domain","Copy me!!!",
- "The End." };
- BOOL __asm KasitteleViesti(register __d0 ULONG luokka,
- register __d1 UWORD koodi,register __d2 UWORD qual,
- register __a0 APTR osoite)
- {
- if(waitsomething) {
- if(waitsomething == 1 && pw) {
- if(luokka == MOUSEBUTTONS && koodi == SELECTUP) return(0);
- pylvasalku0 = 0L; CloseWindow(pw); pw = NULL;
- Korosta(&gadget3[6],(BOOL)pylvasalku0); }
- waitsomething = 0;
- }
- if(ilmoitusnakyy && (!(luokka == MOUSEBUTTONS && koodi ==
- SELECTUP) && (luokka != RAWKEY || (luokka == RAWKEY &&
- !(koodi & 0x80))))) Ilmoita(NULL);
- switch(luokka) {
- case RAWKEY:
- KasitteleNappain(koodi,qual);
- break;
- case GADGETDOWN:
- case GADGETUP:
- return(KasitteleGadget(osoite));
- case MOUSEBUTTONS:
- if(koodi == MENUDOWN) {
- ShowTitle(screen,naytonpaivitys);
- if(!(naytonpaivitys = !naytonpaivitys)) {
- RemEqualizer();
- RemCopperList();
- } else if(gadget3[21].GadgetID & 0x1000)
- InitEqualizer();
- }
- }
- return(0); /* ei lopu */
- }
-
- BOOL KasitteleGadget(APTR addr)
- {
- UWORD gid = (((struct Gadget *)addr)->GadgetID) & 0xfff;
- switch(gid & 0xf00) {
- case 0x100: OsionValinta((struct Gadget *)addr); break;
- case 0x200: KasitteleOsio2(gid); break;
- case 0x300: KasitteleOsio3(gid); break;
- case 0x400: KasitteleOsio4(gid); break;
- case 0x500: KasitteleOsio5(gid); break;
- case 0x600: KasitteleOsio6(gid); break;
- case 0x700: return(KasitteleOsio7(gid)); break;
- case 0x900: KasitteleOsio9(gid); break;
- case 0xA00: KasitteleOsioA(gid); break;
- case 0xF00:
- if(gid == 0xF00) KasitteleOsio6(0x600);
- else if(gid == 0xF01) KasitteleOsio6(0x601);
- else if(gid == 0xF02) {
- if(nappokt < 3) KasitteleOsio6(nappokt + 0x613);
- else KasitteleOsio6(0x612);
- }
- }
- return(0);
- }
-
- void KasitteleNappain(UWORD koodi,UWORD qual)
- {
- if(qual & IEQUALIFIER_CONTROL) {
- switch(koodi) {
- case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55:
- OsionValinta(&gadget1[koodi - 0x50]);
- return;
- case 0x57: OsionValinta(&gadget1[6]); return;
- case 0x58: OsionValinta(&gadget1[7]); return;
- case 0x05: case 0x06:
- if(qual & SHIFT) EditHandler(koodi+0x100);
- else KasitteleOsio3(0x302 + koodi);
- break;
- case CURSORLEFT:
- if(firstdisptrk) firstdisptrk -= 4;
- else firstdisptrk = lohko[soittolohko]->numtracks - 4;
- currtrk = firstdisptrk + currpos;
- PaivitaNaytto(TRUE); DispInfoGadgets();
- break;
- case CURSORRIGHT:
- firstdisptrk += 4;
- if(firstdisptrk >= lohko[soittolohko]->numtracks)
- firstdisptrk = 0;
- currtrk = firstdisptrk + currpos;
- PaivitaNaytto(TRUE); DispInfoGadgets();
- break;
- case 0x3E: KasitteleOsio3(0x30C); break;
- case 0x1E: KasitteleOsio3(0x30D); break;
- case 0x3D: KasitteleOsio3(0x30E); break;
- case 0x1D: KasitteleOsio3(0x30F); break;
- case 0x2D: KasitteleOsio3(0x311); break;
- case 0x2F: KasitteleOsio3(0x310); break;
- case 0x0F: KasitteleOsio3(0x312); break;
- case 0x3C: KasitteleOsio3(0x313); break;
- case 0x2E: KasitteleOsio3(0x314); break;
- case 0x20: KasitteleOsio6(0x619); break;
- case 0x13: RetFileName(); break;
- case 0x37: SetMark(); break;
- case 0x32: case 0x33: case 0x34:
- HandleMark(koodi); break;
- default: if((qual & SHIFT) && koodi >= 0x01 &&
- koodi <= 0x0A) EditHandler(koodi+0x100);
- else HandlePlainKey(koodi,qual);
- }
- }
- else if(qual & AMIGAKEYS) {
- if(koodi == 0x28) KasitteleOsio2(0x214);
- else if(koodi == 0x17) {
- OsionValinta(&gadget1[2]);
- if(qual & SHIFT) {
- tamakappale.soitin[soittimennum][0] = 0;
- RefreshGList(&gadget4[0],window,NULL,1);
- }
- ActivateGadget(&gadget4[0],window,NULL);
- }
- else if(koodi == 0x23) KasitteleOsio3(0x305);
- else if(koodi == 0x26) KasitteleOsio4(0x406);
- else if(koodi == 0x33) KasitteleOsio5(qual&SHIFT?0x50D:0x50A);
- else if(koodi == 0x32) KasitteleOsio5(qual&SHIFT?0x50E:0x50B);
- else if(koodi == 0x34) KasitteleOsio5(qual&SHIFT?0x50F:0x50C);
- else if(koodi == 0x19) KasitteleOsio3(0x300);
- else if(koodi == 0x13 && nykyinenosio == 4)
- ActivateGadget(&gadget4[8],window,NULL);
- else HandlePlainKey(koodi,qual);
- }
- else if((qual & SHIFT) && (qual & ALT)) {
- if(koodi >= 0x50 && koodi <= 0x59) Ilmoita(abouttxt[koodi-0x50]);
- else if(koodi == 0x40) KasitteleOsio3(0x300);
- else HandlePlainKey(koodi,qual);
- }
- else if(qual & SHIFT) {
- switch(koodi) {
- case 0x40: KasitteleOsio3(0x303); break;
- case 0x1D: case 0x1E: case 0x1F:
- KasitteleOsio6(0x5ED+koodi); break;
- case 0x2D: case 0x2E: case 0x2F:
- KasitteleOsio6(0x5E0+koodi); break;
- case 0x3D: case 0x3E: case 0x3F:
- KasitteleOsio6(0x5D3+koodi); break;
- default:
- if((koodi >= 0x01 && koodi <= 0x0A) ||
- koodi == 0x46)
- EditHandler(koodi);
- else HandlePlainKey(koodi,qual);
- }
- }
- else if(qual & ALT) {
- if(koodi == 0x40) KasitteleOsio3(0x304);
- else HandlePlainKey(koodi,qual);
- }
- else if(koodi == 0x40) KasitteleOsio3(0x302); /* Stop playing */
- else HandlePlainKey(koodi,qual);
- }
-
- static void HandlePlainKey(UWORD koodi,UWORD qual)
- {
- switch(koodi) {
- case CURSORUP:
- if(qual & SHIFT) KasitteleOsio5(0x509);
- else if(qual & ALT) KasitteleOsio5(0x506);
- else {
- if((gadget6[1].GadgetID & 0x1000) &&
- !(soittorivi & 0x01) && soittorivi-- == 0)
- soittorivi = 63;
- if(soittorivi-- == 0) { soittorivi = 63; PaivitaNaytto(FALSE); }
- else PaivitaNaytto(FALSE);
- }
- break;
- case CURSORDOWN:
- if(qual & SHIFT) KasitteleOsio5(0x508);
- else if(qual & ALT) KasitteleOsio5(0x507);
- else {
- if((gadget6[1].GadgetID & 0x1000) &&
- !(soittorivi & 0x01)) soittorivi++;
- if(++soittorivi > 63) { soittorivi -= 64; PaivitaNaytto(FALSE); }
- else PaivitaNaytto(FALSE);
- }
- break;
- case CURSORLEFT:
- if(qual & SHIFT) {
- if(qual & ALT) {
- soittimennum = (soittimennum > 16 ?
- 16 : 1);
- PaivitaSoittimennimi();
- } else EdSoitin();
- } else {
- NaytaKursori();
- if(qual & ALT) {
- if(kursorix == currpos * 9 + 4)
- if(!currpos--) currpos = 3;
- kursorix = currpos * 9 + 4;
- }
- else if(kursorix == 4) kursorix = 38;
- else {
- kursorix--;
- if(!klevx[kursorix])
- while(!klevx[--kursorix]);
- }
- currpos = (kursorix<12?0:(kursorix<21?1:(kursorix<30?2:3)));
- currtrk = firstdisptrk + currpos;
- NaytaKursori();
- }
- break;
- case CURSORRIGHT:
- if(qual & SHIFT) {
- if(qual & ALT) {
- soittimennum = (soittimennum < 15 ?
- 15 : 31);
- PaivitaSoittimennimi();
- } else SeurSoitin();
- } else {
- NaytaKursori();
- if(qual & ALT) {
- if(++currpos > 3) currpos = 0;
- kursorix = currpos * 9 + 4;
- }
- else if(kursorix == 38) kursorix = 4;
- else {
- kursorix++;
- if(!klevx[kursorix])
- while(!klevx[++kursorix]);
- }
- currpos = (kursorix<12?0:(kursorix<21?1:(kursorix<30?2:3)));
- currtrk = firstdisptrk + currpos;
- NaytaKursori();
- }
- break;
- case 0x50: case 0x51: case 0x52: case 0x53: case 0x54:
- KasitteleOsio6(0x5C2+koodi); break;
- case 0x55: case 0x56: case 0x57: case 0x58: case 0x59:
- soittorivi = (UWORD)(f5_10line[koodi - 0x55]);
- PaivitaNaytto(FALSE); break;
- case 0x45: /* Esc */ KasitteleOsio6(0x600); break;
- case 0x1D: case 0x1E: case 0x1F:
- KasitteleOsio6(0x5E5+koodi); break;
- case 0x2D: case 0x2E: case 0x2F:
- KasitteleOsio6(0x5D8+koodi); break;
- case 0x3D: case 0x3E: case 0x3F:
- KasitteleOsio6(0x5CB+koodi); break;
- case 0x5F: Ilmoita("Try Shift+Alt+F1-10!!!"); break;
- case 0: KasitteleOsio6(0x601); break; /* 2╫space */
- default:
- SoitaNappain(koodi,TRUE,qual);
- }
- }
-
- void OsionValinta(struct Gadget *gd)
- {
- UWORD edno = nykyinenosio;
- struct Gadget *scangptr;
- if((gd->GadgetID & 0xff) == nykyinenosio) return; /* ei nykyistΣ */
- RemoveGList(window,gadget1[10].NextGadget,-1);
- nykyinenosio = 1; /* Korosta() tarkistaa nykyisen osion */
- if(edno) Korosta(&gadget1[edno >= 0x09 ? edno-3 : edno - 2],FALSE);
- edno = gd->GadgetID & 0xff;
- Korosta(&gadget1[edno >= 0x09 ? edno-3 : edno-2],TRUE);
- nykyinenosio = edno;
- kuviot.ImageData = imgdataptr[nykyinenosio];
- DrawImage(&(screen->RastPort),&kuviot,5,18);
- if(nykyinenosio == 2) {
- if(gadget2[10].GadgetID & 0x1000)
- DrawImage(&(screen->RastPort),&loadgadgimg,162,19);
- else DrawImage(&(screen->RastPort),&savegadgimg,162,19);
- }
- for(scangptr = glists[nykyinenosio];scangptr;scangptr = scangptr->NextGadget)
- if(scangptr->GadgetID & 0x1000) { /* on korostettu */
- scangptr->GadgetID &= ~0x1000; /* korostus pois */
- Korosta(scangptr,TRUE); /* ja korostetaan taas */
- }
- AddGList(window,glists[nykyinenosio],-1,-1,NULL);
- RefreshGList(glists[nykyinenosio],window,NULL,-1);
- switch(nykyinenosio) { /* osiokohtainen nΣyt÷npΣivitys */
- case 0x2:
- UpdateFReqDsp(); break;
- case 0x4: case 0x5: case 0x9: /* soitin, lohko, midi */
- PaivitaSoittimennimi(); break;
- case 0x3: /* soitto */
- TulostaSoittoLohkot(); ShowTempo(); break;
- case 0x6: DispFNnum(); break;
- case 0x7: /* muut - lootien vΣrit kohdalleen */
- SetAPen(wrp,4); RectFill(wrp,55,52,62,59);
- SetAPen(wrp,5); RectFill(wrp,65,52,72,59);
- SetAPen(wrp,6); RectFill(wrp,75,52,82,59);
- SetAPen(wrp,7); RectFill(wrp,85,52,92,59);
- SetAPen(wrp,0); DrawColorGadgets(-1);
- GetUndoColors(); break;
- case 0xA: PlayTransp(tamakappale.playtransp);
- }
- }
-
- static void KasitteleOsio2(UWORD gid) /* tiedostot */
- {
- switch(gid) {
- case 0x20A:
- Korosta(&gadget2[10],TRUE);
- Korosta(&gadget2[11],FALSE);
- DrawImage(&(screen->RastPort),&loadgadgimg,162,19);
- RemoveGList(window,gadget2[16].NextGadget,-1);
- AddGList(window,&gadget2[17],-1,-1,NULL);
- break;
- case 0x20B:
- Korosta(&gadget2[10],FALSE);
- Korosta(&gadget2[11],TRUE);
- DrawImage(&(screen->RastPort),&savegadgimg,162,19);
- RemoveGList(window,gadget2[16].NextGadget,-1);
- AddGList(window,&gadget2[20],-1,-1,NULL);
- if(gadget2[25].GadgetID & 0x1000) {
- gadget2[25].GadgetID &= ~0x1000;
- Korosta(&gadget2[25],TRUE);
- }
- break;
- case 0x214: case 0x215: case 0x216: case 0x217: case 0x218:
- case 0x219: case 0x21A: case 0x21B:
- KasitteleOsio3(0x302); /* Stop playing!!! */
- SetPointer(window,&mouse0[0],23,16,-1,0);
- switch(gid) {
- case 0x214: LoadSong(kappaleennimi);
- break;
- case 0x215: LoadInstrument(kappaleennimi,FALSE);
- break;
- case 0x216: STModLoader(kappaleennimi);
- break;
- case 0x217: SaveSong(kappaleennimi,FALSE);
- break;
- case 0x218: SaveRawSample(kappaleennimi);
- break;
- case 0x219: STSongSaver(kappaleennimi);
- break;
- case 0x21A: SaveSong(kappaleennimi,TRUE);
- break;
- case 0x21B: WriteObj(kappaleennimi);
- break;
- }
- SetPointer(window,&mouse1[0],23,16,-1,0);
- if(gid != 0x218) ClrFileName();
- break;
- case 0x209:
- break;
- case 0x21C:
- Korosta(&gadget2[25],(BOOL)(gadget2[25].GadgetID &
- 0x1000 ? FALSE : TRUE));
- break;
- default:
- FReqHandler(gid);
- }
- }
-
- static void KasitteleOsio3(UWORD gid) /* soitto */
- {
- UWORD edsoittotila = soittotila;
- switch(gid) {
- case 0x300: /* Soita kappale */
- soittorivi = soittolohkonnum = 0;
- case 0x303: /* Jatka kappaletta */
- soittotila = SOITAKAPPALE;
- soittolohko = tamakappale.soittojarjestys[soittolohkonnum];
- Korosta(&gadget3[0],TRUE);
- Korosta(&gadget3[1],FALSE);
- if(edsoittotila == ALASOITA) ciaa.ciacra |= CIACRAF_START;
- break;
- case 0x301: /* Soita lohkoa */
- soittorivi = 0;
- case 0x304: /* Jatka lohkoa */
- soittotila = SOITALOHKO;
- Korosta(&gadget3[0],FALSE);
- Korosta(&gadget3[1],TRUE);
- if(edsoittotila == ALASOITA) ciaa.ciacra |= CIACRAF_START;
- break;
- case 0x302: /* Soitto seis!! */
- soittotila = ALASOITA;
- Korosta(&gadget3[0],FALSE);
- Korosta(&gadget3[1],FALSE);
- SammutaAanet(999);
- SetPointer(window,&mouse1[0],23,16,-1,0);
- break;
- case 0x305: /* Suodatin */
- tamakappale.liput ^= LIPPU_SUODATINPAALLA;
- AsetaSuodatin();
- break;
- case 0x306:
- if(!pylvasalku0) {
- if(screen->Height >= 256) pylvasalku0 =
- (LONG)(screen->BitMap.Planes[0]+8484);
- else if(pw = OpenWindow(&pnw)) {
- DrawImage(pw->RPort,&pylvasimage,0,0);
- pylvasalku0=(LONG)(screen->BitMap.Planes[0]+1124);
- waitsomething = 1; }
- }
- else if(screen->Height >= 256) pylvasalku0 = 0L;
- Korosta(&gadget3[6],(BOOL)pylvasalku0);
- break;
- case 0x307: case 0x308: /* Liu'utus: 5 / 6 */
- tamakappale.vaihtoja = gid - 0x302;
- Korosta(&gadget3[7],(BOOL)(tamakappale.vaihtoja ==
- 6 ? FALSE : TRUE));
- Korosta(&gadget3[8],(BOOL)(tamakappale.vaihtoja ==
- 6 ? TRUE : FALSE));
- break;
- case 0x309: ChgTempo((propinfo[1].HorizPot + 137) / 274 + 1);
- break;
- case 0x30A: if(tempo > 1) ChgTempo(tempo - 1); break;
- case 0x30B: if(tempo < 240) ChgTempo(tempo + 1); break;
- case 0x30C: if(soittolohkonnum) soittolohkonnum--; break;
- case 0x30D: if(soittolohkonnum <
- tamakappale.kappaleen_pituus) soittolohkonnum++; break;
- case 0x30E: soittolohkonnum = 0; break;
- case 0x30F: soittolohkonnum =
- tamakappale.kappaleen_pituus - 1; break;
- case 0x310: if(soittolohkonnum == /* + */
- tamakappale.kappaleen_pituus) {
- if(tamakappale.kappaleen_pituus < 100) {
- tamakappale.soittojarjestys[
- (++tamakappale.kappaleen_pituus)-1] =0;
- }
- else DisplayBeep(screen);
- }
- else if(tamakappale.soittojarjestys[
- soittolohkonnum] < lohkoja-1)
- tamakappale.soittojarjestys[soittolohkonnum]++;
- break;
- case 0x311: if(soittolohkonnum == /* - */
- tamakappale.kappaleen_pituus) {
- if(tamakappale.kappaleen_pituus > 1) {
- tamakappale.kappaleen_pituus--;
- soittolohkonnum--;
- }
- }
- else if(tamakappale.soittojarjestys[soittolohkonnum] > 0)
- tamakappale.soittojarjestys[soittolohkonnum]--;
- break;
- case 0x312: InsertSeq(0); break;
- case 0x313: DelSeq(); break;
- case 0x314: InsertSeq(soittolohko); break;
- case 0x315: Korosta(&gadget3[21],(BOOL)(!(gadget3[21].
- GadgetID & 0x1000)));
- if(naytonpaivitys) {
- if(gadget3[21].GadgetID & 0x1000)
- InitEqualizer();
- else { RemEqualizer(); RemCopperList(); }
- }
- break;
- }
- if(gid >= 0x30C && gid <= 0x311) {
- TulostaLohkoJaSoitin();
- TulostaSoittoLohkot();
- }
- }
-
- static void KasitteleOsio5(UWORD gid) /* lohko 1 */
- {
- UWORD chgblock;
- switch(gid) {
- case 0x508: /* seur.lohko */
- if(soittolohko < lohkoja-1) soittolohko++;
- break;
- case 0x506: /* ens. */
- soittolohko = 1; /* ovelasti tehty, eik÷ vain */
- case 0x509: /* ed.lohko */
- if(soittolohko) soittolohko--;
- break;
- case 0x507: /* viim. */
- soittolohko = lohkoja - 1;
- break;
- case 0x504: /* Uusi */
- if(lohkoja < 100 && !AllocBlock(lohkoja,4)) lohkoja++;
- TulostaLohkoJaSoitin();
- break;
- case 0x505: /* Tuhoa viim. */
- if(lohkoja > 1 && soittolohko < lohkoja - 1)
- FreeBlock(--lohkoja);
- TulostaLohkoJaSoitin();
- break;
- case 0x500: /* Uusi tΣhΣn */
- NewBlockHere(soittolohko,4);
- break;
- case 0x501: /* Tuhoa tΣmΣ */
- DelBlockHere(soittolohko);
- break;
- case 0x50A: case 0x50B: case 0x50C: case 0x50D:
- CutCopyPaste(soittolohko,0,64,currtrk,1,gid-0x50A);
- PaivitaNaytto(TRUE);
- break;
- case 0x50E: case 0x50F: case 0x510: case 0x511:
- CutCopyPaste(soittolohko,0,64,0,lohko[soittolohko]->
- numtracks,gid - 0x50E);
- PaivitaNaytto(TRUE);
- break;
- case 0x512: case 0x513: case 0x514: case 0x515:
- chgblock = soittolohko;
- if(ChangeBlockSize(chgblock,gid - 0x511))
- Ilmoita("Probably out of memory!!");
- TulostaLohkoJaSoitin();
- break;
- }
- if(gid >= 0x506 && gid <= 0x509) { /* vaihdettiin lohkoa */
- soittorivi = 0;
- PaivitaNaytto(FALSE);
- }
- }
-
- static void KasitteleOsio4(UWORD gid) /* soitin */
- {
- switch(gid) {
- case 0x401:
- soittimennum = 1;
- PaivitaSoittimennimi();
- break;
- case 0x402:
- soittimennum = 31;
- PaivitaSoittimennimi();
- break;
- case 0x403:
- EdSoitin();
- break;
- case 0x404:
- SeurSoitin();
- break;
- case 0x405: case 0x400:
- SetPointer(window,&mouse0[0],23,16,-1,0);
- tamakappale.stoisto[soittimennum] =
- tamakappale.stoistonpit[soittimennum] = 0;
- if(!LoadInstrument(tamakappale.soitin[soittimennum],
- TRUE)) Ilmoita("Sample is now loaded.");
- PaivitaSoittimennimi();
- SetPointer(window,&mouse1[0],23,16,-1,0);
- break;
- case 0x406: /* hyppΣΣk÷ ukko?????????? */
- tamakappale.hyppysoitin ^= 1<<soittimennum;
- if(tamakappale.hyppysoitin & (1<<soittimennum))
- Korosta(&gadget4[6],TRUE);
- else Korosta(&gadget4[6],FALSE);
- break;
- case 0x407: RemoveInstrument(); break;
- case 0x408: GetRepeat(); break;
- case 0x409: GetRepLen(); break;
- case 0x40A:
- if(tamakappale.soittimenvoimakkuus[soittimennum])
- tamakappale.soittimenvoimakkuus[soittimennum]--;
- DispVolGadget();
- break;
- case 0x40C:
- if(tamakappale.soittimenvoimakkuus[soittimennum] < 64)
- tamakappale.soittimenvoimakkuus[soittimennum]++;
- DispVolGadget();
- break;
- case 0x40B:
- tamakappale.soittimenvoimakkuus[soittimennum] =
- (propinfo[2].HorizPot + 512) / 1024;
- DispVolGadget();
- break;
- }
- }
-
- static void KasitteleOsio6(UWORD gid) /* eli editointi */
- {
- if(gid >= 0x612 && gid <= 0x615) {
- Korosta(&gadget6[nappokt + 18],FALSE);
- nappokt = gid - 0x612;
- Korosta(&gadget6[nappokt + 18],TRUE);
- } else if(gid >= 0x602 && gid <= 0x611) {
- Korosta(&gadget6[gid - 0x600],(BOOL)(aanipaalla[gid -
- 0x602] = !aanipaalla[gid - 0x602]));
- if(!aanipaalla[gid - 0x602]) SammutaAanet(gid - 0x602);
- } else if(gid == 0x600)
- Korosta(&gadget6[0],(BOOL)(!(gadget6[0].GadgetID & 0x1000)));
- else if(gid == 0x601) Korosta(&gadget6[1],(BOOL)(!(gadget6[1].GadgetID & 0x1000)));
- else if(gid == 0x619) Korosta(&gadget6[25],(BOOL)(!(gadget6[25].GadgetID & 0x1000)));
- else if(gid >= 0x617 && gid <= 0x61C) EditHandler(gid);
- DispInfoGadgets(); /* ^^ jump to local handler routine ^^ */
- }
-
- static void KasitteleOsio9(UWORD gid)
- {
- switch(gid) {
- case 0x900:
- if(gadget9[0].GadgetID & 0x1000) {
- Korosta(&gadget9[0],FALSE);
- Korosta(&gadget9[23],FALSE);
- FreeSerial();
- midiactive = 0;
- } else if(!GetSerial()) {
- Korosta(&gadget9[0],TRUE);
- midiactive = 1;
- }
- break;
- case 0x901:
- if(!tamakappale.midikanava[soittimennum])
- tamakappale.midikanava[soittimennum] = 1;
- PaivitaSoittimennimi();
- break;
- case 0x902:
- tamakappale.midikanava[soittimennum] = 0;
- PaivitaSoittimennimi();
- break;
- case 0x914:
- if(tamakappale.midipreset[soittimennum])
- tamakappale.midipreset[soittimennum]--;
- DispPresetGadget();
- break;
- case 0x915:
- tamakappale.midipreset[soittimennum] =
- (propinfo[3].HorizPot + 254) / 508;
- DispPresetGadget();
- break;
- case 0x916:
- if(tamakappale.midipreset[soittimennum] < 128)
- tamakappale.midipreset[soittimennum]++;
- DispPresetGadget();
- break;
- case 0x913:
- if(strinfo[5].LongInt < 0 || strinfo[5].LongInt
- > 128) {
- DisplayBeep(screen);
- } else tamakappale.midipreset[soittimennum] =
- (UBYTE)(strinfo[5].LongInt);
- DispPresetGadget();
- break;
- case 0x917:
- if(midiactive) { Korosta(&gadget9[23],
- (BOOL)(!(gadget9[23].GadgetID & 0x1000)));
- if(gadget9[23].GadgetID & 0x1000)
- custom.intena = 0x8800; /*RBF on*/
- else custom.intena = 0x0800; /*RBF off*/
- }
- break;
- default:
- if(gid >= 0x903 && gid <= 0x912) {
- tamakappale.midikanava[soittimennum] =
- gid - 0x902;
- PaivitaSoittimennimi();
- }
- }
- }
-
- static BOOL KasitteleOsio7(UWORD gid)
- {
- switch(gid) {
- case 0x70D: case 0x70E: case 0x70F:
- if(gid == 0x70D) tamakappale.liput &= ~LIPPU_HYPPELYPAALLA;
- else if(gid == 0x70E) tamakappale.liput |=
- (LIPPU_HYPPELYPAALLA|LIPPU_HYPPELYTAHTIIN);
- else { tamakappale.liput |= LIPPU_HYPPELYPAALLA;
- tamakappale.liput &= ~LIPPU_HYPPELYTAHTIIN;
- }
- UpdateJumpGadgets();
- break;
- case 0x711: case 0x712: case 0x713:
- if(gadget7[gid - 0x701].GadgetID & 0x1000)
- Korosta(&gadget7[gid - 0x701],FALSE);
- else {
- Korosta(&gadget7[16],(BOOL)(gid == 0x711));
- Korosta(&gadget7[17],(BOOL)(gid == 0x712));
- Korosta(&gadget7[18],(BOOL)(gid == 0x713));
- }
- break;
- case 0x714:
- KasitteleOsio3(0x302);
- if(gadget7[16].GadgetID & 0x1000) {
- Korosta(&gadget7[16],FALSE);
- AlustaKappale(TRUE); PaivitaNaytto(TRUE);
- } else if(gadget7[17].GadgetID & 0x1000) {
- Korosta(&gadget7[17],FALSE);
- AlustaKappale(FALSE); PaivitaNaytto(FALSE);
- } else if(gadget7[18].GadgetID & 0x1000) {
- Korosta(&gadget7[18],FALSE);
- return(1); /* QUIT !!!!!! */
- }
- break;
- default:
- if(gid >= 0x700 && gid <=0x70C) ColorHandler(gid);
- }
- return(0);
- }
-
- void KasitteleOsioA(UWORD gid)
- {
- static BYTE trtb[4] = { 12,1,-1,-12 };
- switch(gid) {
- case 0xA0C: PlayTransp(tamakappale.playtransp - 1); break;
- case 0xA0D: PlayTransp((propinfo[4].HorizPot + 1311) / 2622 - 13); break;
- case 0xA0E: PlayTransp(tamakappale.playtransp + 1); break;
- case 0xA11: case 0xA12:
- Korosta(&gadgetA[17],(BOOL)(gid == 0xA11));
- Korosta(&gadgetA[18],(BOOL)(gid == 0xA12));
- break;
- case 0xA0F: ExpandBlock(soittolohko); break;
- case 0xA10: ShrinkBlock(soittolohko); break;
- default:
- if(gid >= 0xA00 && gid <= 0xA0B)
- Transpose(trtb[gid & 0x0003],(gid -
- 0xA00) / 4);
- break;
- }
- }
-
- void MIDIon() /* called by Load120Song if there are any MIDI instruments */
- {
- if(!midiactive) KasitteleOsio9(0x900);
- }
-