source: buchla-68k/ram/etadyn.c@ b28a12e

Last change on this file since b28a12e was b28a12e, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Zero redundant declarations.

  • Property mode set to 100644
File size: 3.3 KB
RevLine 
[f40a309]1/*
2 =============================================================================
3 etadyn.c -- MIDAS assignment editor -- dynamics to group field handlers
4 Version 7 -- 1988-07-13 -- D.N. Lynx Crowe
5 =============================================================================
6*/
7
[b28a12e]8#include "ram.h"
[f40a309]9
10/*
11 =============================================================================
12 et_adyn() -- load the edit buffer
13 =============================================================================
14*/
15
[7258c6a]16int16_t et_adyn(int16_t n)
[f40a309]17{
[7258c6a]18 register int16_t grp;
[f40a309]19
20 grp = 0x00FF & (n >> 8);
21
22 ebuf[0] = grpdyn[grp] + '0';
23 ebuf[1] = '\0';
24
25 ebflag = TRUE;
26
27 return(SUCCESS);
28}
29
30/*
31
32*/
33
34/*
35 =============================================================================
36 setdyn() -- set dynamics for a group
37 =============================================================================
38*/
[7258c6a]39
[f40a309]40void setdyn(int16_t grp, int16_t dyn)
[7258c6a]41{
42 register int16_t g, i, val;
43 register int32_t ltmp;
[f40a309]44 register uint16_t *fpu;
[7258c6a]45 register struct idfnhdr *fp;
46 uint16_t fpmant, fpexp;
47 int16_t oldsr;
[f40a309]48 int16_t nop;
49
50 grpdyn[grp] = dyn;
51 val = dyntab[dyn];
52 g = grp + 1;
[7258c6a]53
54 fpmant = (((int32_t)curintp & 0x0000FFF0L) *
[f40a309]55 ((int32_t)timemlt & 0x0000FFFFL)) >> 15;
56
57 fpexp = expbit[curintp & 0x000F];
58
59/*
60
61*/
62 for (i = 0; i < 12; i++)
63 if (g EQ vce2grp[i]) {
64
65 fp = &vbufs[i].idhfnc[8];
66 fpu = io_fpu + FPU_OFNC + (i << 8) + 0x0080;
67
68 oldsr = setsr(0x2200);
69
70/* ++++++++++++++++++++++++++++ FPU interrupts disabled +++++++++++++++++++++ */
[7258c6a]71
[f40a309]72 fp->idftmd ^= I_NVBITS;
[7258c6a]73 *(fpu + (int32_t)FPU_TMNT) = fpmant;
[f40a309]74 ++nop; ++nop; ++nop;
75 *(fpu + (int32_t)FPU_TEXP) = fpexp;
76 ++nop; ++nop; ++nop;
[7258c6a]77
[f40a309]78 if (fp->idftmd & I_VNSUBN)
[7258c6a]79 *(fpu + (int32_t)FPU_TNV1) = val;
[f40a309]80 else
81 *(fpu + (int32_t)FPU_TNV0) = val;
82
[7258c6a]83 ++nop; ++nop; ++nop;
[f40a309]84
85 *(fpu + (int32_t)FPU_TCTL) =
86 (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0001;
87
88 setsr(oldsr);
89
90/* ++++++++++++++++++++++++++++ Interrupts restored +++++++++++++++++++++++++ */
91
92 }
93}
94
95/*
96
97*/
98
99/*
100 =============================================================================
101 ef_adyn() -- parse (unload) the edit buffer
[7258c6a]102 =============================================================================
[f40a309]103*/
[7258c6a]104
[f40a309]105int16_t ef_adyn(int16_t n)
106{
107 register int16_t dyn, grp;
108
109 grp = 0x00FF & (n >> 8);
110
111 ebuf[1] = '\0'; /* terminate the string in ebuf */
112 ebflag = FALSE;
113
114 dyn = ebuf[0] - '0';
115
116 setdyn(grp, dyn);
117 modasg();
118 return(SUCCESS);
119}
120
121/*
122
123*/
124
125/*
126 =============================================================================
[7258c6a]127 rd_adyn() -- (re)display the field
[f40a309]128 =============================================================================
[7258c6a]129*/
[f40a309]130
131int16_t rd_adyn(int16_t nn)
132{
133 register int16_t n, grp;
134
135 n = 0x00FF & nn;
136 grp = 0x00FF & (nn >> 8);
137
138 dspbuf[0] = grpdyn[grp] + '0';
139 dspbuf[1] = '\0';
140
141 vbank(0);
142 vcputsv(asgob, 64, adbox[n][4], adbox[n][5],
143 cfetp->frow, cfetp->flcol, dspbuf, 14);
144
145 return(SUCCESS);
146}
147
148/*
149 =============================================================================
[7258c6a]150 nd_adyn() -- handle new data entry
[f40a309]151 =============================================================================
[7258c6a]152*/
[f40a309]153
154int16_t nd_adyn(int16_t nn, int16_t k)
155{
156 register int16_t n;
157
158 n = nn & 0xFF;
159
160 dspbuf[0] = ebuf[0] = k + '0';
161 dspbuf[1] = ebuf[1] = '\0';
162
163 vbank(0);
164 vcputsv(asgob, 64, AK_ENTRY, adbox[n][5], stcrow, stccol, dspbuf, 14);
[6262b5c]165
166 return(SUCCESS);
167}
168
169
Note: See TracBrowser for help on using the repository browser.