Changeset 6099cac in buchla-68k for ram/dopatch.c
- Timestamp:
- 11/11/2017 08:56:04 PM (6 years ago)
- Branches:
- master
- Children:
- 494d8ff
- Parents:
- 432327d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ram/dopatch.c
r432327d r6099cac 29 29 int16_t lg2base[7] = { 0, 3, 7, 10, 14, 17, 21}; /* LED group bases */ 30 30 31 int8_t vgtype[] = {31 uint8_t vgtype[] = { 32 32 33 33 ST_NUL, /* PA_NULL */ … … 76 76 if (slot) { /* waveshape slot B */ 77 77 78 vbufs[voice].idhwsb = wsn;78 vbufs[voice].idhwsb = (int8_t)wsn; 79 79 80 80 memcpyw(vbufs[voice].idhwvbf, &wslib[wsn], … … 85 85 memcpyw(fpuws, vbufs[voice].idhwvbf, NUMWPNT); 86 86 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]; 89 89 90 90 } else { /* waveshape slot A */ 91 91 92 vbufs[voice].idhwsa = wsn;92 vbufs[voice].idhwsa = (int8_t)wsn; 93 93 94 94 memcpyw(vbufs[voice].idhwvaf, &wslib[wsn], … … 99 99 memcpyw(fpuws, vbufs[curvce].idhwvaf, NUMWPNT); 100 100 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]; 103 103 104 104 } … … 111 111 */ 112 112 113 void pfpufn( uint16_t voice, uint16_t par, uint16_t dat1, uint16_t dat2)113 void pfpufn(int16_t voice, int16_t par, uint16_t dat1, uint16_t dat2) 114 114 { 115 115 volatile uint16_t *fpu; … … 125 125 case PSA_MLT: /* multiplier */ 126 126 127 *(fpu + (int32_t)FPU_TSF1) = dat2;127 *(fpu + FPU_TSF1) = dat2; 128 128 break; 129 129 130 130 case PSA_TIM: /* time */ 131 131 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); 134 134 135 135 ++delay; 136 136 137 *(fpu + (int32_t)FPU_TEXP) = expbit[dat2 & 0x000F];137 *(fpu + FPU_TEXP) = expbit[dat2 & 0x000F]; 138 138 139 139 break; … … 141 141 case PSA_VAL: /* value */ 142 142 143 sendval(voice, par, dat2);143 sendval(voice, par, (int16_t)dat2); 144 144 break; 145 145 … … 179 179 volatile uint8_t *ser; 180 180 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; 182 183 int16_t baseled, curled, ledctl; 183 184 … … 191 192 if (ST_VGT & sat) { /* vg, osc sub-address types */ 192 193 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 */ 195 196 196 197 if (vgr > 11) { /* sort out voices from groups */ … … 235 236 putwq(&ptefifo, suba); /* closure */ 236 237 237 seqdupd |= ( 1 << trig);238 seqdupd |= ((uint16_t)1 << trig); 238 239 break; 239 240 … … 259 260 case 0: /* transient */ 260 261 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 */ 263 264 break; 264 265 265 266 case 1: /* off */ 266 267 267 *ser = ( temp & 0x00FD) | 0x0080; /* off */268 *ser = (uint8_t)((temp & 0x00FD) | 0x0080); /* off */ 268 269 break; 269 270 270 271 case 2: /* on */ 271 272 272 *ser = temp | 0x0082;/* on */273 *ser = (uint8_t)(temp | 0x0082); /* on */ 273 274 break; 274 275 } … … 290 291 291 292 ledstat[curled] = TRUE; 292 io_leds = curled;293 io_leds = (uint8_t)curled; 293 294 294 295 } else if (ledctl EQ 2) { /* off */ 295 296 296 297 ledstat[curled] = FALSE; 297 io_leds = curled | 0x0080;298 io_leds = (uint8_t)(curled | 0x0080); 298 299 299 300 } else if (ledctl EQ 3) { /* toggle */ … … 302 303 303 304 ledstat[curled] = FALSE; 304 io_leds = curled | 0x0080;305 io_leds = (uint8_t)(curled | 0x0080); 305 306 306 307 } else { /* off -> on */ 307 308 308 309 ledstat[curled] = TRUE; 309 io_leds = curled;310 io_leds = (uint8_t)curled; 310 311 } 311 312 } … … 317 318 318 319 seqline[suba] = dat1; 319 seqdupd |= ( 1 << suba);320 seqdupd |= ((uint16_t)1 << suba); 320 321 break; 321 322 … … 347 348 } 348 349 349 seqdupd |= ( 1 << suba);350 seqdupd |= ((uint16_t)1 << suba); 350 351 break; 351 352 352 353 case PA_TUNE: /* tuning table */ 353 354 354 gettun( dat1);355 gettun((int16_t)dat1); 355 356 break; 356 357 … … 358 359 359 360 sregval[suba] = dat1 ? sregval[dat2] : dat2; 360 seqdupd |= ( 1 << suba);361 seqdupd |= ((uint16_t)1 << suba); 361 362 break; 362 363 363 364 case PA_RADD: /* regsister add */ 364 365 365 temp = sregval[suba] + (dat1 ? sregval[dat2] : dat2);366 temp = (int16_t)(sregval[suba] + (dat1 ? sregval[dat2] : dat2)); 366 367 367 368 if (temp > 99) … … 370 371 temp = 0; 371 372 372 sregval[suba] = temp;373 seqdupd |= ( 1 << suba);373 sregval[suba] = (uint16_t)temp; 374 seqdupd |= ((uint16_t)1 << suba); 374 375 break; 375 376 … … 378 379 if (vgt) { /* group */ 379 380 380 ins2grp[vgn] = (ins2grp[vgn] & 0xFF00) |dat1;381 ins2grp[vgn] = (ins2grp[vgn] & (int16_t)0xFF00) | (int16_t)dat1; 381 382 setv2gi(vgn); 382 383 … … 384 385 385 386 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); 390 391 } 391 392 … … 398 399 for (i = 0; i < 12; i++) 399 400 if (vce2grp[i] EQ (1 + vgn)) 400 pdoctl(i, osc, dat1,dat2);401 pdoctl(i, osc, (int16_t)dat1, (int16_t)dat2); 401 402 402 403 } else { /* voice */ 403 404 404 pdoctl(vgn, osc, dat1,dat2);405 pdoctl(vgn, osc, (int16_t)dat1, (int16_t)dat2); 405 406 } 406 407 … … 413 414 for (i = 0; i < 12; i++) 414 415 if (vce2grp[i] EQ (1 + vgn)) 415 pdows(0, i, dat1);416 pdows(0, i, (int16_t)dat1); 416 417 417 418 } else { /* voice */ 418 419 419 pdows(0, vgn, dat1);420 pdows(0, vgn, (int16_t)dat1); 420 421 } 421 422 … … 428 429 for (i = 0; i < 12; i++) 429 430 if (vce2grp[i] EQ (1 + vgn)) 430 pdows(1, i, dat1);431 pdows(1, i, (int16_t)dat1); 431 432 432 433 } else { /* voice */ 433 434 434 pdows(1, vgn, dat1);435 pdows(1, vgn, (int16_t)dat1); 435 436 } 436 437 … … 444 445 if (vce2grp[i] EQ (1 + vgn)) { 445 446 446 vbufs[i].idhcfg = dat1;447 vbufs[i].idhcfg = (int8_t)dat1; 447 448 dosync(i); 448 449 } 449 450 } else { 450 451 451 vbufs[vgn].idhcfg = dat1;452 vbufs[vgn].idhcfg = (int8_t)dat1; 452 453 dosync(vgn); 453 454 }
Note:
See TracChangeset
for help on using the changeset viewer.