Changeset 6099cac in buchla-68k for ram/dopatch.c


Ignore:
Timestamp:
11/11/2017 08:56:04 PM (6 years ago)
Author:
Thomas Lopatic <thomas@…>
Branches:
master
Children:
494d8ff
Parents:
432327d
Message:

Fixed dopatch.c.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ram/dopatch.c

    r432327d r6099cac  
    2929int16_t lg2base[7] = { 0, 3, 7, 10, 14, 17, 21};        /* LED group bases */
    3030
    31 int8_t  vgtype[] = {
     31uint8_t vgtype[] = {
    3232
    3333        ST_NUL,         /* PA_NULL */
     
    7676        if (slot) {             /* waveshape slot B */
    7777
    78                 vbufs[voice].idhwsb = wsn;
     78                vbufs[voice].idhwsb = (int8_t)wsn;
    7979
    8080                memcpyw(vbufs[voice].idhwvbf, &wslib[wsn],
     
    8585                memcpyw(fpuws, vbufs[voice].idhwvbf, NUMWPNT);
    8686
    87                 *(fpuws - 1) = vbufs[voice].idhwvbf[0];
    88                 *(fpuws + NUMWPNT) = vbufs[voice].idhwvbf[NUMWPNT - 1];
     87                *(fpuws - 1) = (uint16_t)vbufs[voice].idhwvbf[0];
     88                *(fpuws + NUMWPNT) = (uint16_t)vbufs[voice].idhwvbf[NUMWPNT - 1];
    8989
    9090        } else {                /* waveshape slot A */
    9191
    92                 vbufs[voice].idhwsa = wsn;
     92                vbufs[voice].idhwsa = (int8_t)wsn;
    9393
    9494                memcpyw(vbufs[voice].idhwvaf, &wslib[wsn],
     
    9999                memcpyw(fpuws, vbufs[curvce].idhwvaf, NUMWPNT);
    100100
    101                 *(fpuws - 1) = vbufs[voice].idhwvaf[0];
    102                 *(fpuws + NUMWPNT) = vbufs[voice].idhwvaf[NUMWPNT - 1];
     101                *(fpuws - 1) = (uint16_t)vbufs[voice].idhwvaf[0];
     102                *(fpuws + NUMWPNT) = (uint16_t)vbufs[voice].idhwvaf[NUMWPNT - 1];
    103103
    104104        }
     
    111111*/
    112112
    113 void pfpufn(uint16_t voice, uint16_t par, uint16_t dat1, uint16_t dat2)
     113void pfpufn(int16_t voice, int16_t par, uint16_t dat1, uint16_t dat2)
    114114{
    115115        volatile uint16_t *fpu;
     
    125125        case PSA_MLT:           /* multiplier */
    126126
    127                 *(fpu + (int32_t)FPU_TSF1) = dat2;
     127                *(fpu + FPU_TSF1) = dat2;
    128128                break;
    129129
    130130        case PSA_TIM:           /* time */
    131131
    132                 *(fpu + (int32_t)FPU_TMNT) = (((int32_t)dat2 & 0x0000FFF0L)
    133                         * ((int32_t)timemlt & 0x0000FFFFL)) >> 15;
     132                *(fpu + FPU_TMNT) = (uint16_t)(((uint32_t)(dat2 & 0xFFF0)
     133                        * (uint32_t)timemlt) >> 15);
    134134
    135135                ++delay;
    136136
    137                 *(fpu + (int32_t)FPU_TEXP) = expbit[dat2 & 0x000F];
     137                *(fpu + FPU_TEXP) = expbit[dat2 & 0x000F];
    138138
    139139                break;
     
    141141        case PSA_VAL:           /* value */
    142142
    143                 sendval(voice, par, dat2);
     143                sendval(voice, par, (int16_t)dat2);
    144144                break;
    145145
     
    179179        volatile uint8_t *ser;
    180180        int8_t *iorec;
    181         uint16_t chan, oldsr, osc, port, spec, sat,trig, vgr, vgn, vgt;
     181        uint16_t oldsr;
     182        int16_t chan, osc, port, spec, sat, trig, vgr, vgn, vgt;
    182183        int16_t baseled, curled, ledctl;
    183184
     
    191192        if (ST_VGT & sat) {             /* vg, osc sub-address types */
    192193
    193                 vgr  = 0x00FF & (suba >>  8);           /* voice / group */
    194                 osc  = 0x00FF &  suba;                  /* oscillator */
     194                vgr  = (int16_t)(0x00FF & (suba >> 8));         /* voice / group */
     195                osc  = (int16_t)(0x00FF &  suba);               /* oscillator */
    195196
    196197                if (vgr > 11) {         /* sort out voices from groups */
     
    235236                        putwq(&ptefifo, suba);          /* closure */
    236237
    237                 seqdupd |= (1 << trig);
     238                seqdupd |= ((uint16_t)1 << trig);
    238239                break;
    239240
     
    259260                case 0:                         /* transient */
    260261
    261                         *ser = temp | 0x0082;                   /* on */
    262                         *ser = (temp & 0x00FD) | 0x0080;        /* off */
     262                        *ser = (uint8_t)(temp | 0x0082);                /* on */
     263                        *ser = (uint8_t)((temp & 0x00FD) | 0x0080);     /* off */
    263264                        break;
    264265
    265266                case 1:                         /* off */
    266267
    267                         *ser = (temp & 0x00FD) | 0x0080;        /* off */
     268                        *ser = (uint8_t)((temp & 0x00FD) | 0x0080);     /* off */
    268269                        break;
    269270
    270271                case 2:                         /* on */
    271272
    272                         *ser = temp | 0x0082;                   /* on */
     273                        *ser = (uint8_t)(temp | 0x0082);                /* on */
    273274                        break;
    274275                }
     
    290291
    291292                                ledstat[curled] = TRUE;
    292                                 io_leds = curled;
     293                                io_leds = (uint8_t)curled;
    293294
    294295                        } else if (ledctl EQ 2) {               /* off */
    295296
    296297                                ledstat[curled] = FALSE;
    297                                 io_leds = curled | 0x0080;
     298                                io_leds = (uint8_t)(curled | 0x0080);
    298299
    299300                        } else if (ledctl EQ 3) {               /* toggle */
     
    302303
    303304                                        ledstat[curled] = FALSE;
    304                                         io_leds = curled | 0x0080;
     305                                        io_leds = (uint8_t)(curled | 0x0080);
    305306
    306307                                } else {                        /* off -> on */
    307308
    308309                                        ledstat[curled] = TRUE;
    309                                         io_leds = curled;
     310                                        io_leds = (uint8_t)curled;
    310311                                }
    311312                        }
     
    317318
    318319                seqline[suba] = dat1;
    319                 seqdupd |= (1 << suba);
     320                seqdupd |= ((uint16_t)1 << suba);
    320321                break;
    321322
     
    347348                }
    348349
    349                 seqdupd |= (1 << suba);
     350                seqdupd |= ((uint16_t)1 << suba);
    350351                break;
    351352
    352353        case PA_TUNE:           /* tuning table */
    353354
    354                 gettun(dat1);
     355                gettun((int16_t)dat1);
    355356                break;
    356357
     
    358359
    359360                sregval[suba] = dat1 ? sregval[dat2] : dat2;
    360                 seqdupd |= (1 << suba);
     361                seqdupd |= ((uint16_t)1 << suba);
    361362                break;
    362363
    363364        case PA_RADD:           /* regsister add */
    364365
    365                 temp = sregval[suba] + (dat1 ? sregval[dat2] : dat2);
     366                temp = (int16_t)(sregval[suba] + (dat1 ? sregval[dat2] : dat2));
    366367
    367368                if (temp > 99)
     
    370371                        temp = 0;
    371372
    372                 sregval[suba] = temp;
    373                 seqdupd |= (1 << suba);
     373                sregval[suba] = (uint16_t)temp;
     374                seqdupd |= ((uint16_t)1 << suba);
    374375                break;
    375376
     
    378379                if (vgt) {      /* group */
    379380
    380                         ins2grp[vgn] = (ins2grp[vgn] & 0xFF00) | dat1;
     381                        ins2grp[vgn] = (ins2grp[vgn] & (int16_t)0xFF00) | (int16_t)dat1;
    381382                        setv2gi(vgn);
    382383
     
    384385
    385386                        if (curvce EQ vgn)
    386                                 curinst = dat1;
    387 
    388                         s_inst[vgn] = dat1;
    389                         execins(vgn, dat1, 1);
     387                                curinst = (int16_t)dat1;
     388
     389                        s_inst[vgn] = (int16_t)dat1;
     390                        execins(vgn, (int16_t)dat1, 1);
    390391                }
    391392
     
    398399                        for (i = 0; i < 12; i++)
    399400                                if (vce2grp[i] EQ (1 + vgn))
    400                                         pdoctl(i, osc, dat1, dat2);
     401                                        pdoctl(i, osc, (int16_t)dat1, (int16_t)dat2);
    401402
    402403                } else {                /* voice */
    403404
    404                         pdoctl(vgn, osc, dat1, dat2);
     405                        pdoctl(vgn, osc, (int16_t)dat1, (int16_t)dat2);
    405406                }
    406407
     
    413414                        for (i = 0; i < 12; i++)
    414415                                if (vce2grp[i] EQ (1 + vgn))
    415                                         pdows(0, i, dat1);
     416                                        pdows(0, i, (int16_t)dat1);
    416417
    417418                } else {                /* voice */
    418419
    419                         pdows(0, vgn, dat1);
     420                        pdows(0, vgn, (int16_t)dat1);
    420421                }
    421422
     
    428429                        for (i = 0; i < 12; i++)
    429430                                if (vce2grp[i] EQ (1 + vgn))
    430                                         pdows(1, i, dat1);
     431                                        pdows(1, i, (int16_t)dat1);
    431432
    432433                } else {                /* voice */
    433434
    434                         pdows(1, vgn, dat1);
     435                        pdows(1, vgn, (int16_t)dat1);
    435436                }
    436437
     
    444445                                if (vce2grp[i] EQ (1 + vgn)) {
    445446
    446                                         vbufs[i].idhcfg = dat1;
     447                                        vbufs[i].idhcfg = (int8_t)dat1;
    447448                                        dosync(i);
    448449                                }
    449450                } else {
    450451
    451                         vbufs[vgn].idhcfg = dat1;
     452                        vbufs[vgn].idhcfg = (int8_t)dat1;
    452453                        dosync(vgn);
    453454                }
Note: See TracChangeset for help on using the changeset viewer.