Changeset 26553e2 in buchla-68k for ram


Ignore:
Timestamp:
11/12/2017 07:21:55 PM (6 years ago)
Author:
Thomas Lopatic <thomas@…>
Branches:
master
Children:
3fcb810
Parents:
fa50076
Message:

Fixed sqexec.c.

Location:
ram
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • ram/ptdisp.c

    rfa50076 r26553e2  
    99
    1010uint16_t        seqflag[16];            /* sequence flags */
    11 uint16_t        seqline[16];            /* current sequencer line */
     11int16_t         seqline[16];            /* current sequencer line */
    1212uint16_t        seqstim[16];            /* sequence stimulus */
    1313uint16_t        seqtime[16];            /* sequence timers */
  • ram/ptdisp.x

    rfa50076 r26553e2  
    2020extern  int8_t          *ptmcon[];
    2121extern  uint16_t        seqflag[16];
    22 extern  uint16_t        seqline[16];
     22extern  int16_t         seqline[16];
    2323extern  uint16_t        seqstim[16];
    2424extern  struct  seqent  seqtab[NSLINES];
  • ram/sqexec.c

    rfa50076 r26553e2  
    2121#endif
    2222
    23 int16_t seqdspn;
    24 
    25 int16_t rtab[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F,
    26                    0x003F, 0x003F, 0x003F };
     23int16_t         seqdspn;
     24
     25uint16_t        rtab[] = {
     26                        0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F,
     27                        0x003F, 0x003F, 0x003F
     28};
    2729
    2830/*
     
    5052        case SQ_RND:    /* random number */
    5153
    52                 return((int16_t)rand24() & rtab[SQ_MVAL & dat]);
     54                return((uint16_t)rand24() & rtab[SQ_MVAL & dat]);
    5355
    5456        default:        /* something weird got in here ... */
     
    6466*/
    6567
    66 int16_t dosqact(uint16_t seq, uint16_t act, uint16_t dat)
     68int16_t dosqact(int16_t seq, uint16_t act, uint16_t dat)
    6769{
    6870        register uint16_t obj, val;
     
    105107                trstate[val] = 1;
    106108                putwq(&ptefifo, (0x1100 | val));
    107                 seqdupd |= (1 << val);
     109                seqdupd |= ((uint16_t)1 << val);
    108110                return(0);
    109111
     
    111113
    112114                trstate[val] = 0;
    113                 seqdupd |= (1 << val);
     115                seqdupd |= ((uint16_t)1 << val);
    114116                return(0);
    115117
     
    121123                        putwq(&ptefifo, (0x1100 | val));
    122124
    123                 seqdupd |= (1 << val);
     125                seqdupd |= ((uint16_t)1 << val);
    124126                return(0);
    125127
     
    131133
    132134                sregval[obj] = evaltv(dat);
    133                 seqdupd |= (1 << obj);
     135                seqdupd |= ((uint16_t)1 << obj);
    134136                return(0);
    135137
     
    138140                if (dat & SQ_MFLG) {
    139141
    140                         sv = sregval[obj] - evaltv(dat);
     142                        sv = (int16_t)(sregval[obj] - evaltv(dat));
    141143
    142144                        if (sv < 0)
    143145                                sv = 0;
    144146
    145                         sregval[obj] = sv;
     147                        sregval[obj] = (uint16_t)sv;
    146148
    147149                } else {
    148150
    149                         sv = sregval[obj] + evaltv(dat);
     151                        sv = (int16_t)(sregval[obj] + evaltv(dat));
    150152
    151153                        if (sv > 99)
    152154                                sv = 99;
    153155
    154                         sregval[obj] = sv;
     156                        sregval[obj] = (uint16_t)sv;
    155157
    156158                }
    157159
    158                 seqdupd |= (1 << obj);
     160                seqdupd |= ((uint16_t)1 << obj);
    159161                return(0);
    160162
     
    195197        case SQ_JUMP:                   /* Jump to sequence line */
    196198
    197                 seqline[seq]  = dat;
     199                seqline[seq]  = (int16_t)dat;
    198200                seqtime[seq]  = seqtab[dat].seqtime;
    199201                seqflag[seq] |= SQF_CLK;
    200202
    201                 seqdupd |= (1 << seq);
     203                seqdupd |= ((uint16_t)1 << seq);
    202204                return(-1);
    203205
     
    209211                seqtime[seq] = 0;
    210212
    211                 seqdupd |= (1 << seq);
     213                seqdupd |= ((uint16_t)1 << seq);
    212214                return(-1);
    213215
     
    221223*/
    222224
    223 void sqexec(uint16_t seq)
     225void sqexec(int16_t seq)
    224226{
    225         register uint16_t act, dat, line;
     227        register uint16_t act, dat;
    226228        register struct seqent *sp;
    227         register int16_t rc;
     229        register int16_t line, rc;
    228230
    229231        line = seqline[seq];
     
    291293#endif
    292294
    293         seqdupd |= (1 << seq);
     295        seqdupd |= ((uint16_t)1 << seq);
    294296}
    295297
     
    302304void seqproc(void)
    303305{
    304         register uint16_t oldsr, seq;
    305         register int16_t dspn;
     306        register uint16_t oldsr;
     307        register int16_t seq, dspn;
    306308        register uint16_t *fp;
    307309        int8_t  linbuf[66];
     
    319321
    320322                                        if (0 EQ --seqtime[seq])
    321                                                 *fp &= ~SQF_CLK;
     323                                                *fp &= ~(uint16_t)SQF_CLK;
    322324
    323325                                } else {
    324326
    325                                         *fp &= ~SQF_CLK;
     327                                        *fp &= ~(uint16_t)SQF_CLK;
    326328                                }
    327329                        }
     
    344346                        ndisp, seqdupd);
    345347#endif
    346                 if (seqdupd & (1 << seqdspn)) {
     348                if (seqdupd & ((uint16_t)1 << seqdspn)) {
    347349
    348350                        dspn = seqdspn;
     
    371373                                  PDSEQRN : PDSEQFG) << 4) | PDSEQBG, 16);
    372374#endif
    373                         seqdupd &= ~(1 << dspn);
     375                        seqdupd &= ~((uint16_t)1 << dspn);
    374376                }
    375377
  • ram/sqexec.x

    rfa50076 r26553e2  
    1515*/
    1616
    17 extern  int16_t         rtab[];
     17extern  uint16_t        rtab[];
    1818extern  int16_t         seqdspn;
    1919
     
    2424*/
    2525
    26 extern  int16_t         dosqact(uint16_t seq, uint16_t act, uint16_t dat);
     26extern  int16_t         dosqact(int16_t seq, uint16_t act, uint16_t dat);
    2727extern  uint16_t        evaltv(uint16_t dat);
    2828extern  void            seqproc(void);
    29 extern  void            sqexec(uint16_t seq);
     29extern  void            sqexec(int16_t seq);
Note: See TracChangeset for help on using the changeset viewer.