~ubuntu-branches/ubuntu/precise/csound/precise

« back to all changes in this revision

Viewing changes to Engine/entry1.c

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2012-04-19 09:26:46 UTC
  • mfrom: (3.2.19 sid)
  • Revision ID: package-import@ubuntu.com-20120419092646-96xbj1n6atuqosk2
Tags: 1:5.17.6~dfsg-1
* New upstream release
 - Do not build the wiimote opcodes (we need wiiuse).
* Add new API function to symbols file
* Disable lua opcodes, they were broken. Requires OpenMP to be enabled.
* Backport fixes from upstream:
  - Link dssi4cs with dl. Backport
  - Fix building of CsoundAC

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
*/
23
23
 
24
24
#include "entry1.h"             /*                      ENTRY1.C        */
 
25
#include "interlocks.h"
25
26
 
26
27
/* thread vals, where isub=1, ksub=2, asub=4:
27
28
                0 =     1  OR   2  (B out only)
121
122
{ "pchmidib",0xffff                                                     },
122
123
{ "poisson", 0xffff                                                     },
123
124
{ "pow",     0xffff,                                                    },
124
 
{ "tableng", 0xffff,                                                    },
 
125
{ "tableng", 0xffff,  TR                                                },
125
126
{ "taninv2", 0xffff                                                     },
126
127
{ "timek",   0xffff,                                                    },
127
128
{ "times",   0xffff,                                                    },
128
129
{ "trirand", 0xffff                                                     },
129
130
{ "unirand", 0xffff,                                                    },
130
131
{ "weibull", 0xffff                                                     },
131
 
{ "oscil",   0xfffe                                                     },
132
 
{ "oscil3",  0xfffe                                                     },
133
 
{ "oscili",  0xfffe                                                     },
 
132
{ "oscil",   0xfffe, TR                                                 },
 
133
{ "oscil3",  0xfffe, TR                                                 },
 
134
{ "oscili",  0xfffe, TR                                                 },
134
135
{ "peak",    0xfffd                                                     },
135
136
{ "rtclock", 0xffff                                                     },
136
 
{ "tablew",  0xfffe                                                     },
137
 
{ "tablewkt",0xfffe                                                     },
 
137
{ "ptablew",  0xfffe, TW                                                 },
 
138
{ "tablew",  0xfffe, TW                                                 },
 
139
{ "tablewkt",0xfffe, TW                                                 },
138
140
{ "ihold",  S(LINK),    1,      "",     "",     ihold                   },
139
141
{ "turnoff",S(LINK),    2,      "",     "",     NULL,   turnoff         },
140
142
{ "=.r",    S(ASSIGN),  1,      "r",    "i",    rassign                 },
146
148
{ "init.k", S(ASSIGNM), 1,      "zzzzzzzzzzzzzzzzzzzzzzzz", "m", minit  },
147
149
{ "init.a", S(ASSIGNM), 1,      "mmmmmmmmmmmmmmmmmmmmmmmm", "m", mainit },
148
150
{ "init.t", S(ASSIGNM), 1,      "t",    "io",                    tinit  },
149
 
{ "tabref", S(TABREF),  3,      "k",    "tk",   tabref_check, tabref, NULL },
 
151
{ "##tabref", S(TABREF),3,      "k",    "tk",   tabref_check, tabref, NULL },
150
152
{ ">",      S(RELAT),   0,      "B",    "kk",   gt,     gt              },
151
153
{ ">=",     S(RELAT),   0,      "B",    "kk",   ge,     ge              },
152
154
{ "<",      S(RELAT),   0,      "B",    "kk",   lt,     lt              },
329
331
{ "expsegr",S(EXPSEG),  7,      "s",    "iin",  xsgrset,kxpsegr,expsegr },
330
332
{ "linen",  S(LINEN),   7,      "s",    "xiii", lnnset, klinen, linen   },
331
333
{ "linenr", S(LINENR),  7,      "s",    "xiii", lnrset, klinenr,linenr  },
332
 
{ "envlpx", S(ENVLPX),  7,      "s","xiiiiiio", evxset, knvlpx, envlpx  },
333
 
{ "envlpxr", S(ENVLPR), 7,      "s","xiiiiioo", evrset, knvlpxr,envlpxr },
 
334
{ "envlpx", S(ENVLPX),  TR|7,   "s","xiiiiiio", evxset, knvlpx, envlpx  },
 
335
{ "envlpxr", S(ENVLPR), TR|7,   "s","xiiiiioo", evrset, knvlpxr,envlpxr },
334
336
{ "phasor", S(PHSOR),   7,      "s",    "xo",   phsset, kphsor, phsor   },
335
 
{ "ephasor", S(EPHSOR),   5,    "ss",    "xko",  ephsset, NULL, ephsor   },
336
 
{ "table",  0xffff                                                      },
337
 
{ "tablei", 0xffff                                                      },
338
 
{ "table3", 0xffff                                                      },
 
337
{ "ephasor", S(EPHSOR),  5,    "ss",    "xko",  ephsset, NULL, ephsor   },
 
338
{ "table",  0xffff, TR                                                  },
 
339
{ "tablei", 0xffff, TR                                                  },
 
340
{ "table3", 0xffff, TR                                                  },
339
341
{ "table.i",  S(TABLE), 1,      "i",    "iiooo",itable                  },
340
342
{ "table.k",  S(TABLE), 3,      "k",    "xiooo",tblset, ktable          },
341
343
{ "table.a",  S(TABLE), 5,      "a",    "xiooo",tblset, NULL, tablefn   },
345
347
{ "table3.i", S(TABLE), 1,      "i",    "iiooo",itabl3                  },
346
348
{ "table3.k", S(TABLE), 3,      "k",    "xiooo",tblset, ktabl3          },
347
349
{ "table3.a", S(TABLE), 5,      "a",    "xiooo",tblset, NULL, tabl3     },
348
 
{ "oscil1", S(OSCIL1),  3,      "k",    "ikii", ko1set, kosc1           },
349
 
{ "oscil1i",S(OSCIL1),  3,      "k",    "ikii", ko1set, kosc1i          },
350
 
{ "osciln", S(OSCILN),  5,      "a",    "kiii", oscnset,NULL,   osciln  },
 
350
{ "ptable",  0xffff, TR                                                 },
 
351
{ "ptablei", 0xffff, TR                                                 },
 
352
{ "ptable3", 0xffff, TR                                                 },
 
353
{ "ptable.i",  S(TABLE), 1,     "i",    "iiooo",pitable                },
 
354
{ "ptable.k",  S(TABLE), 3,     "k",    "xiooo",tblset, pktable        },
 
355
{ "ptable.a",  S(TABLE), 5,     "a",    "xiooo",tblset, NULL, ptablefn },
 
356
{ "ptablei.i", S(TABLE), 1,     "i",    "iiooo",pitabli                },
 
357
{ "ptablei.k", S(TABLE), 3,     "k",    "xiooo",tblset, pktabli        },
 
358
{ "ptablei.a", S(TABLE), 5,     "a",    "xiooo",tblset, NULL, ptabli   },
 
359
{ "ptable3.i", S(TABLE), 1,     "i",    "iiooo",pitabl3                },
 
360
{ "ptable3.k", S(TABLE), 3,     "k",    "xiooo",tblset, pktabl3        },
 
361
{ "ptable3.a", S(TABLE), 5,     "a",    "xiooo",tblset, NULL, ptabl3   },
 
362
{ "oscil1", S(OSCIL1),  TR|3,   "k",    "ikii", ko1set, kosc1         },
 
363
{ "oscil1i",S(OSCIL1),  TR|3,   "k",    "ikii", ko1set, kosc1i        },
 
364
{ "osciln", S(OSCILN),  TR|5,   "a",    "kiii", oscnset,NULL,   osciln  },
351
365
{ "oscil.kk",S(OSC),    7,      "s",    "kkio", oscset, koscil, osckk   },
352
366
{ "oscil.ka",S(OSC),    5,      "a",    "kaio", oscset, NULL,   oscka   },
353
367
{ "oscil.ak",S(OSC),    5,      "a",    "akio", oscset, NULL,   oscak   },
354
368
{ "oscil.aa",S(OSC),    5,      "a",    "aaio", oscset, NULL,   oscaa   },
 
369
/* CHangerthese to
 
370
{ "oscil.kk", S(POSC), 7, "s", "kkio", posc_set, kposc, posckk },
 
371
{ "oscil.ka", S(POSC), 5, "a", "kaio", posc_set, NULL,  poscka },
 
372
{ "oscil.ak", S(POSC), 5, "a", "akio", posc_set, NULL,  poscak },
 
373
{ "oscil.aa", S(POSC), 5, "a", "aaio", posc_set, NULL,  poscaa },
 
374
{ "oscil3.kk",  S(POSC),  7, "s", "kkio", posc_set, kposc3, posc3 },
 
375
*/
355
376
{ "oscili.kk",S(OSC),   7,      "s",    "kkio", oscset, koscli, osckki  },
356
377
{ "oscili.ka",S(OSC),   5,      "a",    "kaio", oscset, NULL,   osckai  },
357
378
{ "oscili.ak",S(OSC),   5,      "a",    "akio", oscset, NULL,   oscaki  },
360
381
{ "oscil3.ka",S(OSC),   5,      "a",    "kaio", oscset, NULL,   oscka3  },
361
382
{ "oscil3.ak",S(OSC),   5,      "a",    "akio", oscset, NULL,   oscak3  },
362
383
{ "oscil3.aa",S(OSC),   5,      "a",    "aaio", oscset, NULL,   oscaa3  },
363
 
{ "foscil", S(FOSC),    5,      "a",  "xkxxkio",foscset,NULL,   foscil  },
364
 
{ "foscili",S(FOSC),    5,      "a",  "xkxxkio",foscset,NULL,   foscili },
365
 
{ "loscil", S(LOSC),    5,      "mm","xkiojoojoo",losset,NULL, loscil   },
366
 
{ "loscil3", S(LOSC),   5,      "mm","xkiojoojoo",losset,NULL, loscil3  },
 
384
/* end change */
 
385
{ "foscil", S(FOSC),    TR|5,      "a",  "xkxxkio",foscset,NULL,   foscil  },
 
386
{ "foscili",S(FOSC),    TR|5,      "a",  "xkxxkio",foscset,NULL,   foscili },
 
387
{ "loscil", S(LOSC),    TR|5,      "mm","xkiojoojoo",losset,NULL, loscil   },
 
388
{ "loscil3", S(LOSC),   TR|5,      "mm","xkiojoojoo",losset,NULL, loscil3  },
367
389
{ "adsyn",  S(ADSYN),   5,      "a",    "kkkTo", adset, NULL,   adsyn   },
368
 
{ "buzz",   S(BUZZ),    5,      "a",  "xxkio",  bzzset, NULL,   buzz    },
369
 
{ "gbuzz",  S(GBUZZ),   5,      "a",  "xxkkkio",gbzset, NULL,   gbuzz   },
370
 
{ "pluck",  S(PLUCK),   5,      "a",  "kkiiioo",plukset,NULL,   pluck   },
 
390
{ "buzz",   S(BUZZ),    TR|5,      "a",  "xxkio",  bzzset, NULL,   buzz    },
 
391
{ "gbuzz",  S(GBUZZ),   TR|5,      "a",  "xxkkkio",gbzset, NULL,   gbuzz   },
 
392
{ "pluck",  S(PLUCK),   TR|5,      "a",  "kkiiioo",plukset,NULL,   pluck   },
371
393
{ "rand",   S(RAND),    7,      "s",    "xvoo", rndset, krand,  arand   },
372
394
{ "randh",  S(RANDH),   7,      "s",    "xxvoo", rhset, krandh, randh   },
373
395
{ "randi",  S(RANDI),   7,      "s",    "xxvoo", riset, krandi, randi   },
391
413
{ "pan",    S(PAN),   5, "aaaa", "akkioo",(SUBR)panset,NULL, (SUBR)pan  },
392
414
{ "soundin",S(SOUNDIN_),5,"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm","Toooo",
393
415
                                                sndinset, NULL, soundin   },
394
 
{ "soundout",S(SNDOUT), 5,      "",     "aTo",  sndo1set, NULL, soundout  },
395
 
{ "soundouts",S(SNDOUTS),5,     "",     "aaTo", sndo1set, NULL, soundouts },
 
416
{ "soundout",S(SNDOUT), _QQ|5,   "",     "aTo",  sndo1set, NULL, soundout  },
 
417
{ "soundouts",S(SNDOUTS),_QQ|5,  "",     "aaTo", sndo1set, NULL, soundouts },
396
418
{ "in",     S(INM),     4,      "a",    "",     NULL,   NULL,   in      },
397
419
{ "ins",    S(INS),     4,      "aa",   "",     NULL,   NULL,   ins     },
398
420
{ "inq",    S(INQ),     4,      "aaaa", "",     NULL,   NULL,   inq     },
399
421
  /* Note that there is code in rdorch.c that assumes that opcodes starting
400
422
     with the charcters out followed by a s, q, h, o or x are in this group
401
423
     ***BEWARE***
 
424
     CODE REMOVED 2011-Dec-14
402
425
   */
403
 
{ "out",    S(OUTM),    4,      "",     "a",    NULL,   NULL,   out     },
404
 
{ "outs",   S(OUTS),    4,      "",     "aa",   NULL,   NULL,   outs    },
 
426
{ "out",    S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
427
{ "outs",   S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
428
{ "outq",   S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
429
{ "outh",   S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
430
{ "outo",   S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
431
{ "outx",   S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
432
{ "out32",  S(OUTX),     4,      "",     "y",    NULL,   NULL,   outall },
 
433
/* { "out",    S(OUTM),    4,      "",     "a",    NULL,   NULL,   out     }, */
 
434
/* { "outs",   S(OUTS),    4,      "",     "aa",   NULL,   NULL,   outs    }, */
405
435
{ "outs1",  S(OUTM),    4,      "",     "a",    NULL,   NULL,   outs1   },
406
436
{ "outs2",  S(OUTM),    4,      "",     "a",    NULL,   NULL,   outs2   },
407
 
{ "outq",   S(OUTQ),    4,      "",     "aaaa", NULL,   NULL,   outq    },
 
437
/* { "outq",   S(OUTQ),    4,      "",     "aaaa", NULL,   NULL,   outq    }, */
408
438
{ "outq1",  S(OUTM),    4,      "",     "a",    NULL,   NULL,   outq1   },
409
439
{ "outq2",  S(OUTM),    4,      "",     "a",    NULL,   NULL,   outq2   },
410
440
{ "outq3",  S(OUTM),    4,      "",     "a",    NULL,   NULL,   outq3   },
440
470
{ "pow.i",    S(POW),   1,      "i",    "iip",  ipow,    NULL,  NULL    },
441
471
{ "pow.k",    S(POW),   2,      "k",    "kkp",  NULL,    ipow,  NULL    },
442
472
{ "pow.a",    S(POW),   4,      "a",    "akp",  NULL,    NULL,  apow    },
443
 
{ "oscilx",   S(OSCILN),5,      "a",    "kiii", oscnset,NULL,   osciln  },
 
473
{ "oscilx",   S(OSCILN),TR|5,   "a",    "kiii", oscnset,NULL,   osciln  },
444
474
{ "linrand.i",S(PRAND), 1,      "i",    "k",    iklinear, NULL, NULL    },
445
475
{ "linrand.k",S(PRAND), 2,      "k",    "k",    NULL, iklinear, NULL    },
446
476
{ "linrand.a",S(PRAND), 4,      "a",    "k",    NULL, NULL,     alinear },
475
505
{ "unirand.i",S(PRAND), 1,     "i",     "k",    ikuniform, NULL,  NULL  },
476
506
{ "unirand.k",S(PRAND), 2,     "k",     "k",    NULL,    ikuniform, NULL},
477
507
{ "unirand.a",S(PRAND), 4,     "a",     "k",    NULL,    NULL, auniform },
478
 
{ "diskin",S(SOUNDINEW),5,  "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "Tkooooo",
 
508
 
 
509
{ "diskin",S(SOUNDINEW),_QQ|5, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
 
510
                            "Tkooooo",
479
511
                            (SUBR) newsndinset, NULL, (SUBR) soundinew  },
480
 
{ "diskin2",S(DISKIN2), 5,  "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "Tkoooooo",
 
512
{ "diskin2",S(DISKIN2), 5,  "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
 
513
                            "Tkoooooo",
481
514
                            (SUBR) diskin2_init, (SUBR) NULL,
482
515
                            (SUBR) diskin2_perf                         },
483
516
{ "noteon", S(OUT_ON),  1,      "",     "iii",  iout_on, NULL,   NULL   },
520
553
{ "filepeak", S(SNDINFOPEAK), 1, "i",   "To",   filepeak, NULL, NULL       },
521
554
{ "filevalid", S(FILEVALID), 1,  "i",   "T",    filevalid, NULL, NULL      },
522
555
/*  { "nlalp", S(NLALP),     5,     "a",    "akkoo", nlalp_set, NULL, nlalp }, */
 
556
{ "ptableiw",  S(TABLEW),TW|1,   "",      "iiiooo", (SUBR)pitablew, NULL, NULL},
 
557
{ "ptablew.kk", S(TABLEW),  3,  "", "kkiooo",(SUBR)itblchkw,(SUBR)pktablew, NULL},
 
558
{ "ptablew.aa", S(TABLEW),  5,  "", "aaiooo",(SUBR)itblchkw, NULL, (SUBR)ptablew},
523
559
/* Robin Whittle */
524
 
{ "tableiw",  S(TABLEW),1,     "",      "iiiooo", (SUBR)itablew, NULL, NULL},
525
 
{ "tablew.kk", S(TABLEW),3,    "", "kkiooo",(SUBR)tblsetw,(SUBR)ktablew, NULL},
526
 
{ "tablew.aa", S(TABLEW),5,    "", "aaiooo",(SUBR)tblsetw, NULL, (SUBR)tablew},
527
 
{ "tablewkt.kk", S(TABLEW),3, "",  "kkkooo",(SUBR)tblsetwkt,(SUBR)ktablewkt,NULL},
528
 
{ "tablewkt.aa", S(TABLEW),5, "",  "aakooo",(SUBR)tblsetwkt,NULL,(SUBR)tablewkt},
 
560
{ "tableiw",  S(TABLEW),TW|1,     "",      "iiiooo", (SUBR)itablew, NULL, NULL},
 
561
{ "tablew.kk", S(TABLEW),  3,    "", "kkiooo",(SUBR)itblchkw,(SUBR)ktablew, NULL},
 
562
{ "tablew.aa", S(TABLEW),  5,    "", "aaiooo",(SUBR)itblchkw, NULL, (SUBR)tablew},
 
563
{ "tablewkt.kk", S(TABLEW),3, "",  "kkkooo",
 
564
                          (SUBR)tblsetwkt,(SUBR)ktablewkt,NULL},
 
565
{ "tablewkt.aa", S(TABLEW),5, "",  "aakooo",
 
566
                          (SUBR)tblsetwkt,NULL,(SUBR)tablewkt},
529
567
{ "tableng.i", S(TABLENG),1,  "i",     "i",    (SUBR)itableng, NULL,  NULL},
530
568
{ "tableng.k",  S(TABLENG),2, "k",     "k",    NULL,   (SUBR)tableng, NULL},
531
 
{ "tableigpw",S(TABLENG),1,   "",  "i",    (SUBR)itablegpw, NULL,  NULL},
 
569
{ "tableigpw",S(TABLENG),TB|1,   "",  "i",    (SUBR)itablegpw, NULL,  NULL},
532
570
{ "tablegpw", S(TABLENG),2,   "",  "k",    NULL,   (SUBR)tablegpw, NULL},
533
 
{ "tableimix",S(TABLEMIX),1,  "",  "iiiiiiiii", (SUBR)itablemix, NULL, NULL},
534
 
{ "tablemix", S(TABLEMIX),2,  "",  "kkkkkkkkk",
 
571
{ "tableimix",S(TABLEMIX),TB|1,  "",  "iiiiiiiii", (SUBR)itablemix, NULL, NULL},
 
572
{ "tablemix", S(TABLEMIX),TB|2,  "",  "kkkkkkkkk",
535
573
                                   (SUBR)tablemixset, (SUBR)tablemix, NULL},
536
 
{ "tableicopy",S(TABLECOPY),1, "", "ii",   (SUBR)itablecopy, NULL, NULL},
537
 
{ "tablecopy", S(TABLECOPY),2, "", "kk",
 
574
{ "tableicopy",S(TABLECOPY),TB|1, "", "ii",   (SUBR)itablecopy, NULL, NULL},
 
575
{ "tablecopy", S(TABLECOPY),TB|2, "", "kk",
538
576
                                      (SUBR)tablecopyset, (SUBR)tablecopy, NULL},
539
 
{ "tablera", S(TABLERA),5,   "a",  "kkk",  (SUBR)tableraset, NULL, (SUBR)tablera},
540
 
{ "tablewa", S(TABLEWA),5,   "k",  "kak",  (SUBR)tablewaset, NULL, (SUBR)tablewa},
541
 
{ "tablekt",  S(TABLE), 7,     "s",  "xkooo",tblsetkt,  ktablekt, tablekt },
542
 
{ "tableikt", S(TABLE), 7,     "s",  "xkooo",tblsetkt,  ktablikt, tablikt },
543
 
{ "zakinit", S(ZAKINIT), 1,  "",   "ii",   (SUBR)zakinit, NULL,  NULL},
544
 
{ "zir",    S(ZKR),     1,   "i",  "i",    (SUBR)zir,     NULL,  NULL},
545
 
{ "zkr",    S(ZKR),     3,   "k",  "k",    (SUBR)zkset,   (SUBR)zkr,   NULL},
546
 
{ "ziw",    S(ZKW),     1,   "",   "ii",   (SUBR)ziw,     NULL,  NULL},
547
 
{ "zkw",    S(ZKW),     3,   "",   "kk",   (SUBR)zkset,   (SUBR)zkw,   NULL},
548
 
{ "ziwm",   S(ZKWM),    1,   "",   "iip",  (SUBR)ziwm,    NULL,  NULL},
549
 
{ "zkwm",   S(ZKWM),    3,   "",   "kkp",  (SUBR)zkset,   (SUBR)zkwm,  NULL},
550
 
{ "zkmod",  S(ZKMOD),   2,   "k",  "kk",   NULL,    (SUBR)zkmod, NULL},
551
 
{ "zkcl",   S(ZKCL),    3,   "",  "kk",   (SUBR)zkset,   (SUBR)zkcl,  NULL},
552
 
{ "zar",    S(ZAR),     5,   "a", "k",    (SUBR)zaset,   NULL,  (SUBR)zar},
553
 
{ "zarg",   S(ZARG),    5,   "a", "kk",   (SUBR)zaset,   NULL,  (SUBR)zarg},
554
 
{ "zaw",    S(ZAW),     5,   "",  "ak",   (SUBR)zaset,   NULL,  (SUBR)zaw},
555
 
{ "zawm",   S(ZAWM),    5,   "",  "akp",  (SUBR)zaset,   NULL,  (SUBR)zawm},
556
 
{ "zamod",  S(ZAMOD),   4,   "a", "ak",   NULL,    NULL,  (SUBR)zamod},
557
 
{ "zacl",   S(ZACL),    5,   "",  "kk",   (SUBR)zaset,   NULL,  (SUBR)zacl},
558
 
{ "inz",    S(IOZ),     4,   "",   "k",    (SUBR)zaset,  NULL,   (SUBR)inz  },
559
 
{ "outz",   S(IOZ),     4,   "",   "k",    (SUBR)zaset,  NULL,   (SUBR)outz },
 
577
{ "tablera", S(TABLERA),TR|5,   "a",  "kkk",
 
578
                                      (SUBR)tableraset, NULL, (SUBR)tablera},
 
579
{ "tablewa", S(TABLEWA),TW|5,   "k",  "kak",
 
580
                                      (SUBR)tablewaset, NULL, (SUBR)tablewa},
 
581
{ "tablekt",  S(TABLE), TR|7,     "s",  "xkooo",tblsetkt,  ktablekt, tablekt },
 
582
{ "tableikt", S(TABLE), TR|7,     "s",  "xkooo",tblsetkt,  ktablikt, tablikt },
 
583
{ "zakinit", S(ZAKINIT), ZB|1,  "",   "ii",   (SUBR)zakinit, NULL,  NULL},
 
584
{ "zir",    S(ZKR),     ZR|1,   "i",  "i",    (SUBR)zir,     NULL,  NULL},
 
585
{ "zkr",    S(ZKR),     ZR|3,   "k",  "k",    (SUBR)zkset,   (SUBR)zkr,   NULL},
 
586
{ "ziw",    S(ZKW),     ZW|1,   "",   "ii",   (SUBR)ziw,     NULL,  NULL},
 
587
{ "zkw",    S(ZKW),     ZW|3,   "",   "kk",   (SUBR)zkset,   (SUBR)zkw,   NULL},
 
588
{ "ziwm",   S(ZKWM),    ZB|1,   "",   "iip",  (SUBR)ziwm,    NULL,  NULL},
 
589
{ "zkwm",   S(ZKWM),    ZB|3,   "",   "kkp",  (SUBR)zkset,   (SUBR)zkwm,  NULL},
 
590
{ "zkmod",  S(ZKMOD),   ZB|2,   "k",  "kk",   NULL,    (SUBR)zkmod, NULL},
 
591
{ "zkcl",   S(ZKCL),    ZW|3,   "",  "kk",   (SUBR)zkset,   (SUBR)zkcl,  NULL},
 
592
{ "zar",    S(ZAR),     ZR|5,   "a", "k",    (SUBR)zaset,   NULL,  (SUBR)zar},
 
593
{ "zarg",   S(ZARG),    ZB|5,   "a", "kk",   (SUBR)zaset,   NULL,  (SUBR)zarg},
 
594
{ "zaw",    S(ZAW),     ZW|5,   "",  "ak",   (SUBR)zaset,   NULL,  (SUBR)zaw},
 
595
{ "zawm",   S(ZAWM),    ZB|5,   "",  "akp",  (SUBR)zaset,   NULL,  (SUBR)zawm},
 
596
{ "zamod",  S(ZAMOD),   ZB|4,   "a", "ak",   NULL,    NULL,  (SUBR)zamod},
 
597
{ "zacl",   S(ZACL),    ZW|5,   "",  "kk",   (SUBR)zaset,   NULL,  (SUBR)zacl},
 
598
{ "inz",    S(IOZ),     ZW|4,   "",   "k",    (SUBR)zaset,  NULL,   (SUBR)inz  },
 
599
{ "outz",   S(IOZ),     ZR|4,   "",   "k",    (SUBR)zaset,  NULL,   (SUBR)outz },
560
600
{ "timek.i", S(RDTIME), 1,   "i",  "",     (SUBR)timek,   NULL,  NULL },
561
601
{ "times.i", S(RDTIME), 1,   "i",  "",     (SUBR)timesr,  NULL,  NULL },
562
602
{ "timek.k",  S(RDTIME), 2,  "k",  "",     NULL,    (SUBR)timek, NULL },
592
632
  /* Note that there is code in rdorch.c that assumes that opcodes starting
593
633
     with the charcters out followed by a s, q, h, o or x are in this group
594
634
     ***BEWARE***
 
635
     CODE REMOVED 2011-Dec-14
595
636
   */
596
 
{ "outh",   S(OUTH),    4,      "",     "aaaaaa",NULL,  NULL,   outh    },
597
 
{ "outo",   S(OUTO),    4,      "",     "aaaaaaaa",NULL,NULL,   outo    },
598
 
{ "outx",   S(OUTX),    4,      "",     "aaaaaaaaaaaaaaaa",NULL,NULL, outx },
599
 
{ "out32",  S(OUTX),    4,      "",     "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
600
 
                                                NULL,   NULL,   outX    },
 
637
/* { "outh",   S(OUTH),    4,      "",     "aaaaaa",NULL,  NULL,   outh    }, */
 
638
/* { "outo",   S(OUTO),    4,      "",     "aaaaaaaa",NULL,NULL,   outo    }, */
 
639
/* { "outx",   S(OUTX),    4,      "",     "aaaaaaaaaaaaaaaa",NULL,NULL, outx }, */
 
640
/* { "out32",  S(OUTX),    4,      "",     "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", */
 
641
                                                /* NULL,   NULL,   outX    }, */
601
642
{ "outch",  S(OUTCH),   4,      "",     "Z",    NULL,   NULL,   outch   },
602
643
{ "outc",   S(OUTX),    4,      "",     "y",    NULL,   NULL,   outall  },
603
 
{ "cpsxpch", S(XENH),   1,      "i",    "iiii", cpsxpch, NULL,  NULL    },
604
 
{ "cps2pch", S(XENH),   1,      "i",    "ii",   cps2pch, NULL,  NULL    },
605
 
{ "cpstun", S(CPSTUN),  2,      "k",    "kkk",   NULL,   cpstun         },
606
 
{ "cpstuni",S(CPSTUNI), 1,      "i",    "ii",   cpstun_i,               },
 
644
{ "cpsxpch", S(XENH),TR|1,      "i",    "iiii", cpsxpch, NULL,  NULL    },
 
645
{ "cps2pch", S(XENH),TR|1,      "i",    "ii",   cps2pch, NULL,  NULL    },
 
646
{ "cpstun", S(CPSTUN),  TR|2,      "k",    "kkk",   NULL,   cpstun         },
 
647
{ "cpstuni",S(CPSTUNI), TR|1,      "i",    "ii",   cpstun_i,               },
607
648
{ "cpstmid", S(CPSTABLE), 1, "i", "i",    (SUBR)cpstmid                    },
608
649
{ "adsr", S(LINSEG),     7,     "s",    "iiiio",adsrset,klnseg, linseg     },
609
650
{ "madsr", S(LINSEG),    7,     "s",    "iiiioj", madsrset,klnsegr, linsegr },
617
658
{ "event", S(LINEVENT),  2,     "",     "SUz",  NULL, eventOpcode, NULL   },
618
659
{ "event_i", S(LINEVENT),1,     "",     "STm",  eventOpcodeI, NULL, NULL  },
619
660
{ "lfo", S(LFO),         7,     "s",    "kko",  lfoset,   lfok,   lfoa    },
620
 
{ "oscils",   S(OSCILS), 5,     "a", "iiio",     (SUBR)oscils_set, NULL, (SUBR)oscils       },
621
 
{ "lphasor",  S(LPHASOR),5,     "a", "xooooooo" ,(SUBR)lphasor_set, NULL, (SUBR)lphasor     },
622
 
{ "tablexkt", S(TABLEXKT),5,    "a", "xkkiooo",  (SUBR)tablexkt_set, NULL, (SUBR)tablexkt   },
623
 
{ "reverb2",  S(NREV2),  5,     "a",    "akkoojoj", (SUBR)reverbx_set,NULL,(SUBR)reverbx    },
624
 
{ "nreverb",  S(NREV2),  5,     "a",    "akkoojoj", (SUBR)reverbx_set,NULL,(SUBR) reverbx    },
 
661
{ "oscils",   S(OSCILS), 5,     "a", "iiio",
 
662
                                         (SUBR)oscils_set, NULL, (SUBR)oscils },
 
663
{ "lphasor",  S(LPHASOR),5,     "a", "xooooooo" ,
 
664
                                         (SUBR)lphasor_set, NULL, (SUBR)lphasor },
 
665
{ "tablexkt", S(TABLEXKT),TR|5,    "a", "xkkiooo",
 
666
                                         (SUBR)tablexkt_set, NULL, (SUBR)tablexkt },
 
667
{ "reverb2",  S(NREV2),  5,     "a",    "akkoojoj",
 
668
                                         (SUBR)reverbx_set,NULL,(SUBR)reverbx },
 
669
{ "nreverb",  S(NREV2),  5,     "a",    "akkoojoj",
 
670
                                         (SUBR)reverbx_set,NULL,(SUBR) reverbx },
625
671
{ "=.f",      S(FASSIGN), 2,    "f",   "f",      NULL, fassign, NULL    },
626
672
{ "init.f",   S(FASSIGN), 2,    "f",   "f",      fassign, NULL, NULL    },
627
673
{ "pvsanal",  S(PVSANAL), 5,    "f",   "aiiiioo",  pvsanalset, NULL, pvsanal  },
630
676
{ "pvscross", S(PVSCROSS),3,    "f",   "ffkk",   pvscrosset, pvscross, NULL },
631
677
{ "pvsfread", S(PVSFREAD),3,    "f",   "kTo",    pvsfreadset, pvsfread, NULL  },
632
678
{ "pvsmaska", S(PVSMASKA),3,    "f",   "fik",    pvsmaskaset, pvsmaska, NULL  },
633
 
{ "pvsftw",   S(PVSFTW),  3,    "k",   "fio",    pvsftwset, pvsftw, NULL  },
634
 
{ "pvsftr",   S(PVSFTR),  3,    "",    "fio",    pvsftrset, pvsftr, NULL  },
 
679
{ "pvsftw",   S(PVSFTW),  TW|3,    "k",   "fio",    pvsftwset, pvsftw, NULL  },
 
680
{ "pvsftr",   S(PVSFTR),  TR|3,    "",    "fio",    pvsftrset, pvsftr, NULL  },
635
681
{ "pvsinfo",  S(PVSINFO), 1,    "iiii","f",      pvsinfo, NULL, NULL    },
636
682
{ "octave",   0xffff                                                    },
637
683
{ "semitone", 0xffff                                                    },
671
717
                   3, "", "xoh",midichannelaftertouch, midichannelaftertouch },
672
718
{ "midipitchbend", S(MIDIPITCHBEND),3, "", "xoh", midipitchbend, midipitchbend },
673
719
{ "mididefault", S(MIDIDEFAULT), 3, "", "xx",   mididefault, mididefault },
674
 
{ "invalue",   0xFFFF,   0,     NULL,   NULL,   NULL, NULL, NULL            },
 
720
{ "invalue",   0xFFFF,   CR,    NULL,   NULL,   NULL, NULL, NULL            },
675
721
{ "invalue.k", S(INVAL), 3,     "k",    "T",    invalset, kinval, NULL      },
676
722
{ "invalue.S", S(INVAL), 3,     "S",    "T",    invalset_S, kinval_S, NULL  },
677
 
{ "outvalue", S(OUTVAL), 3,     "",     "TU",   outvalset, koutval, NULL    },
 
723
{ "outvalue", S(OUTVAL), CW|3,     "",     "TU",   outvalset, koutval, NULL    },
678
724
/* IV - Oct 20 2002 */
679
725
{ "subinstr", S(SUBINST), 5, "mmmmmmmm", "Tm",  subinstrset, NULL, subinstr },
680
726
{ "subinstrinit", S(SUBINST), 1, "",    "Tm",   subinstrset, NULL, NULL  },
681
727
{ "nstrnum", S(NSTRNUM), 1,     "i",    "T",    nstrnumset, NULL, NULL   },
682
 
{ "turnoff2",S(TURNOFF2),2,     "",     "kkk",  NULL, turnoff2, NULL     },
 
728
{ "turnoff2",   0xFFFB,   CW,    NULL,   NULL,   NULL, NULL, NULL  },
 
729
{ "turnoff2.S",S(TURNOFF2),2,     "",     "Skk",  NULL, turnoff2S, NULL     },
 
730
{ "turnoff2.c",S(TURNOFF2),2,     "",     "ikk",  NULL, turnoff2k, NULL     },
 
731
{ "turnoff2.k",S(TURNOFF2),2,     "",     "kkk",  NULL, turnoff2k, NULL     },
 
732
{ "turnoff2.i",S(TURNOFF2),2,     "",     "ikk",  NULL, turnoff2k, NULL     },
 
733
{ "turnoff2.r",S(TURNOFF2),2,     "",     "ikk",  NULL, turnoff2k, NULL     },
683
734
{ "cngoto", S(CGOTO),   3,      "",     "Bl",   ingoto, kngoto, NULL     },
 
735
#ifdef VARGA
684
736
{ "cogoto", S(CGOTO),   3,      "",     "bl",   iingoto, kingoto, NULL   },
 
737
#endif
685
738
/* IV - Sep 8 2002 - added entries for user defined opcodes, xin, xout */
686
739
/* and setksmps */
687
740
{ ".userOpcode", S(UOPCODE), 7, "", "", useropcdset, useropcd, useropcd },
708
761
{ "a.k",    S(INTERP),  5,  "a", "k",    (SUBR)a_k_set,NULL,   (SUBR)interp  },
709
762
{ "integ", S(INDIFF), 7, "s", "xo", (SUBR)indfset,(SUBR)kntegrate,(SUBR)integrate},
710
763
{ "diff",   S(INDIFF),  7,  "s", "xo",   (SUBR)indfset,(SUBR)kdiff, (SUBR)diff },
711
 
{ "samphold",S(SAMPHOLD),7, "s", "xxoo", (SUBR)samphset,(SUBR)ksmphold,(SUBR)samphold},
 
764
{ "samphold",S(SAMPHOLD),7, "s", "xxoo",
 
765
                                 (SUBR)samphset,(SUBR)ksmphold,(SUBR)samphold},
712
766
{ "delay",  S(DELAY),   5,  "a", "aio",  (SUBR)delset, NULL,   (SUBR)delay   },
713
767
{ "delayr", S(DELAYR),  5,  "aX","io",   (SUBR)delrset,NULL,   (SUBR)delayr  },
714
768
{ "delayw", S(DELAYW),  5,  "",  "a",    (SUBR)delwset,NULL,   (SUBR)delayw  },
720
774
{ "reverb", S(REVERB),  5,  "a", "ako",  (SUBR)rvbset, NULL,   (SUBR)reverb  },
721
775
{ "vdelay",   S(VDEL),  5,  "a", "axio", (SUBR)vdelset, NULL,  (SUBR)vdelay  },
722
776
{ "vdelay3",  S(VDEL),  5,  "a", "axio", (SUBR)vdelset, NULL,  (SUBR)vdelay3 },
723
 
{ "vdelayxwq",S(VDELXQ),5,  "aaaa", "aaaaaiio", (SUBR)vdelxqset, NULL, (SUBR)vdelayxwq},
 
777
{ "vdelayxwq",S(VDELXQ),5,  "aaaa", "aaaaaiio",
 
778
                                         (SUBR)vdelxqset, NULL, (SUBR)vdelayxwq},
724
779
{ "vdelayxws",S(VDELXS),5,  "aa", "aaaiio", (SUBR)vdelxsset, NULL, (SUBR)vdelayxws},
725
780
{ "vdelayxw", S(VDELX), 5,  "a",  "aaiio", (SUBR)vdelxset, NULL, (SUBR)vdelayxw},
726
 
{ "vdelayxq", S(VDELXQ),5,  "aaaa", "aaaaaiio", (SUBR)vdelxqset, NULL, (SUBR)vdelayxq},
 
781
{ "vdelayxq", S(VDELXQ),5,  "aaaa", "aaaaaiio",
 
782
                                         (SUBR)vdelxqset, NULL, (SUBR)vdelayxq},
727
783
{ "vdelayxs", S(VDELXS),5,  "aa", "aaaiio", (SUBR)vdelxsset, NULL, (SUBR)vdelayxs},
728
784
{ "vdelayx",  S(VDELX), 5,  "a",  "aaiio", (SUBR)vdelxset, NULL, (SUBR)vdelayx},
729
785
{ "deltapx",  S(DELTAPX),5, "a",  "aio",  (SUBR)tapxset, NULL,  (SUBR)deltapx },
730
786
{ "deltapxw", S(DELTAPX),5,  "",  "aaio", (SUBR)tapxset, NULL, (SUBR)deltapxw },
731
 
{ "multitap", S(MDEL),  5,   "a", "am",   (SUBR)multitap_set,NULL,(SUBR)multitap_play},
 
787
{ "multitap", S(MDEL),  5,   "a", "am",
 
788
                                   (SUBR)multitap_set,NULL,(SUBR)multitap_play},
732
789
{ "comb",   S(COMB),    5,  "a",  "akioo", (SUBR)cmbset,NULL,   (SUBR)comb    },
733
790
{ "alpass", S(COMB),    5,  "a",  "akioo", (SUBR)cmbset,NULL,   (SUBR)alpass  },
734
791
{  "strset",   S(STRSET_OP),   1,  "",     "iS",
807
864
{ "loop_le.k", S(LOOP_OPS),  2,  "", "kkkl", NULL, (SUBR) loop_le_p, NULL  },
808
865
{ "loop_gt.k", S(LOOP_OPS),  2,  "", "kkkl", NULL, (SUBR) loop_g_p, NULL   },
809
866
{ "loop_ge.k", S(LOOP_OPS),  2,  "", "kkkl", NULL, (SUBR) loop_ge_p, NULL  },
810
 
{ "chnget",      0xFFFF,              0,      NULL,           NULL,
811
 
   (SUBR) NULL, (SUBR) NULL, (SUBR) NULL                               },
 
867
{ "chnget",      0xFFFF,    CR                                             },
812
868
{ "chnget.i",    S(CHNGET),           1,      "i",            "S",
813
869
   (SUBR) chnget_opcode_init_i, (SUBR) NULL, (SUBR) NULL               },
814
870
{ "chnget.k",    S(CHNGET),           3,      "k",            "S",
817
873
   (SUBR) chnget_opcode_init_a, (SUBR) NULL, (SUBR) notinit_opcode_stub },
818
874
{ "chnget.S",    S(CHNGET),           1,      "S",            "S",
819
875
   (SUBR) chnget_opcode_init_S, (SUBR) NULL, (SUBR) NULL               },
820
 
{ "chnset",      0xFFFB,              0,      NULL,           NULL,
821
 
   (SUBR) NULL, (SUBR) NULL, (SUBR) NULL                               },
 
876
{ "chnset",      0xFFFB,              CW                               },
822
877
{ "chnset.i",    S(CHNGET),           1,      "",             "iS",
823
878
   (SUBR) chnset_opcode_init_i, (SUBR) NULL, (SUBR) NULL               },
824
879
{ "chnset.r",    S(CHNGET),           1,      "",             "iS",
831
886
   (SUBR) chnset_opcode_init_a, (SUBR) NULL, (SUBR) notinit_opcode_stub },
832
887
{ "chnset.S",    S(CHNGET),           1,      "",             "SS",
833
888
   (SUBR) chnset_opcode_init_S, (SUBR) NULL, (SUBR) NULL               },
834
 
{ "chnmix",      S(CHNGET),           5,      "",             "aS",
 
889
{ "chnmix",      S(CHNGET),           CB|5,      "",             "aS",
835
890
   (SUBR) chnmix_opcode_init, (SUBR) NULL, (SUBR) notinit_opcode_stub  },
836
 
{ "chnclear",    S(CHNCLEAR),         5,      "",             "S",
 
891
{ "chnclear",    S(CHNCLEAR),         CW|5,      "",             "S",
837
892
   (SUBR) chnclear_opcode_init, (SUBR) NULL, (SUBR) notinit_opcode_stub },
838
 
{ "chn_k",       S(CHN_OPCODE_K),     1,      "",             "Sioooo",
 
893
{ "chn_k",       S(CHN_OPCODE_K),     CW|1,      "",             "Sioooo",
839
894
   (SUBR) chn_k_opcode_init, (SUBR) NULL, (SUBR) NULL                  },
840
 
{ "chn_a",       S(CHN_OPCODE),       1,      "",             "Si",
 
895
{ "chn_a",       S(CHN_OPCODE),       CW|1,      "",             "Si",
841
896
   (SUBR) chn_a_opcode_init, (SUBR) NULL, (SUBR) NULL                  },
842
 
{ "chn_S",       S(CHN_OPCODE),       1,      "",             "Si",
 
897
{ "chn_S",       S(CHN_OPCODE),       CW|1,      "",             "Si",
843
898
   (SUBR) chn_S_opcode_init, (SUBR) NULL, (SUBR) NULL                  },
844
899
{ "chnexport",   0xFFFF,              0,      NULL,           NULL,
845
900
   (SUBR) NULL, (SUBR) NULL, (SUBR) NULL                               },
851
906
   (SUBR) chnexport_opcode_init, (SUBR) NULL, (SUBR) NULL              },
852
907
{ "chnexport.S", S(CHNEXPORT_OPCODE), 1,      "S",            "Si",
853
908
   (SUBR) chnexport_opcode_init, (SUBR) NULL, (SUBR) NULL              },
854
 
{ "chnparams",   S(CHNPARAMS_OPCODE), 1,      "iiiiii",       "S",
 
909
{ "chnparams",   S(CHNPARAMS_OPCODE), CR|1,      "iiiiii",       "S",
855
910
   (SUBR) chnparams_opcode_init, (SUBR) NULL, (SUBR) NULL              },
856
 
{ "chnrecv",     S(CHNSEND),          3,      "",             "So",
 
911
{ "chnrecv",     S(CHNSEND),          CR|3,      "",             "So",
857
912
   (SUBR) chnrecv_opcode_init, (SUBR) notinit_opcode_stub, (SUBR) NULL },
858
913
{ "chnsend",     S(CHNSEND),          3,      "",             "So",
859
914
   (SUBR) chnsend_opcode_init, (SUBR) notinit_opcode_stub, (SUBR) NULL },
860
 
{ "chano",       0xFFFD,              0,      NULL,           NULL,
 
915
{ "chano",       0xFFFD,               CW,      NULL,           NULL,
861
916
   (SUBR) NULL, (SUBR) NULL, (SUBR) NULL                               },
862
917
{ "chano.k",     S(ASSIGN),           2,      "",             "kk",
863
918
   (SUBR) NULL, (SUBR) chano_opcode_perf_k, (SUBR) NULL                },
865
920
   (SUBR) NULL, (SUBR) NULL, (SUBR) chano_opcode_perf_a                },
866
921
{ "pvsout",     S(FCHAN),           2,      "",             "fk",
867
922
   (SUBR) NULL, (SUBR) pvsout_perf, (SUBR) NULL                        },
868
 
{ "chani",       0xFFFF,              0,      NULL,           NULL,
 
923
{ "chani",       0xFFFF,              CR,      NULL,           NULL,
869
924
   (SUBR) NULL, (SUBR) NULL, (SUBR) NULL                               },
870
925
{ "chani.k",     S(ASSIGN),           2,      "k",            "k",
871
926
   (SUBR) NULL, (SUBR) chani_opcode_perf_k, (SUBR) NULL                },
880
935
{ "remove",      S(DELETEIN),         1,      "",             "T",
881
936
   (SUBR) delete_instr, (SUBR) NULL, (SUBR) NULL                       },
882
937
#ifdef PARCS
883
 
{ "##globallock",   S(GLOBAL_LOCK_UNLOCK), 3, "", "k", globallock,   globallock,   NULL},
884
 
{ "##globalunlock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k", globalunlock, globalunlock, NULL},
 
938
{ "##globallock",   S(GLOBAL_LOCK_UNLOCK), 3, "", "k",
 
939
                    globallock,   globallock,   NULL},
 
940
{ "##globalunlock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k",
 
941
                    globalunlock, globalunlock, NULL},
885
942
#endif
 
943
{ "##error",S(ERRFN), 1,          "i",     "i",   error_fn, NULL,    NULL    },
886
944
{ "exprandi.i",S(PRANDI), 1,      "i",    "kxx",  iexprndi, NULL,    NULL    },
887
945
{ "exprandi.k",S(PRANDI), 3,      "k",    "kxx",  exprndiset, kexprndi, NULL },
888
946
{ "exprandi.a",S(PRANDI), 4,      "a",    "kxx",  exprndiset, NULL, aexprndi },
892
950
{ "gaussi.i", S(PRANDI), 1,      "i",    "kxx",  igaussi, NULL,    NULL    },
893
951
{ "gaussi.k", S(PRANDI), 3,      "k",    "kxx",  gaussiset, kgaussi, NULL },
894
952
{ "gaussi.a", S(PRANDI), 4,      "a",    "kxx",  gaussiset, NULL, agaussi },
 
953
{ "ftresizei", S(RESIZE), TB|1, "i", "ii", (SUBR) resize_table, NULL, NULL },
 
954
{ "ftresize",  S(RESIZE), TB|2, "k", "kk", NULL, (SUBR) resize_table, NULL },
895
955
/* terminate list */
896
956
{  NULL, 0, 0, NULL, NULL, (SUBR) NULL, (SUBR) NULL, (SUBR) NULL       }
897
957
};
898