Lines Matching refs:proc

13 static void cpu(processor_t *proc, int op, int address) {  in cpu()  argument
15 int64_t n = core_read(proc, address); in cpu()
16 int next_pc = proc->program_counter + 1; in cpu()
32 proc->accumulator = in cpu()
33 alu_add(&proc->overflow, op, proc->accumulator, proc->accumulator, n); in cpu()
48 proc->core_store[address] = proc->accumulator; in cpu()
49 proc->accumulator = alu_add(&proc->overflow, op, proc->accumulator, n, n); in cpu()
64 proc->core_store[address] = in cpu()
65 alu_add(&proc->overflow, op, proc->accumulator, proc->accumulator, n); in cpu()
80 proc->core_store[address] = in cpu()
81 alu_add(&proc->overflow, op, proc->accumulator, n, n); in cpu()
82 proc->accumulator = n; in cpu()
101 if (proc->accumulator < 0) { in cpu()
106 if (0 == proc->accumulator) { in cpu()
111 if (proc->overflow) { in cpu()
113 proc->overflow = false; in cpu()
120 if (proc->accumulator < 0) { in cpu()
125 if (0 == proc->accumulator) { in cpu()
130 if (proc->overflow) { in cpu()
132 proc->overflow = false; in cpu()
152 proc->accumulator >>= 1; in cpu()
153 proc->auxiliary_register >>= 1; in cpu()
154 if (0 != (proc->accumulator & half_bit)) { in cpu()
155 proc->auxiliary_register |= ar_msb; in cpu()
157 proc->accumulator &= thirty_nine_bits; in cpu()
158 proc->auxiliary_register &= thirty_eight_bits; in cpu()
164 proc->accumulator >>= 1; in cpu()
165 proc->accumulator &= thirty_eight_bits; // exclude sign in cpu()
167 proc->auxiliary_register = 0; in cpu()
171 &proc->accumulator, &proc->auxiliary_register, proc->accumulator, n); in cpu()
176 alu_multiply(&ah, &al, proc->accumulator, n); in cpu()
179 proc->accumulator = al | sign_bit; in cpu()
181 proc->accumulator = al; in cpu()
183 proc->overflow = true; in cpu()
185 proc->auxiliary_register = 0; in cpu()
189 bool negative = proc->accumulator < 0; in cpu()
191 proc->auxiliary_register <<= 1; in cpu()
192 if (0 != (proc->auxiliary_register & sign_bit)) { in cpu()
193 proc->accumulator |= half_bit; in cpu()
195 proc->accumulator <<= 1; in cpu()
196 if ((proc->accumulator < 0) != negative) { in cpu()
197 proc->overflow = true; in cpu()
200 proc->auxiliary_register &= thirty_eight_bits; in cpu()
204 bool negative = proc->accumulator < 0; in cpu()
206 proc->accumulator <<= 1; in cpu()
207 if ((proc->accumulator < 0) != negative) { in cpu()
208 proc->overflow = true; in cpu()
211 proc->auxiliary_register = 0; in cpu()
215 proc->accumulator = alu_divide( in cpu()
216 &proc->overflow, proc->accumulator, proc->auxiliary_register, n); in cpu()
217 proc->auxiliary_register = 0; in cpu()
220 proc->accumulator = proc->auxiliary_register; in cpu()
227 proc->auxiliary_register = 0; in cpu()
267 proc->accumulator = fpu_add(&proc->overflow, proc->accumulator, n); in cpu()
270 proc->accumulator = in cpu()
271 fpu_add(&proc->overflow, proc->accumulator, fpu_neg(n)); in cpu()
274 proc->accumulator = in cpu()
275 fpu_add(&proc->overflow, fpu_neg(proc->accumulator), n); in cpu()
278 proc->accumulator = fpu_mpy(&proc->overflow, proc->accumulator, n); in cpu()
281 proc->accumulator = fpu_div(&proc->overflow, proc->accumulator, n); in cpu()
286 if (0 != (proc->accumulator & sign_bit)) { in cpu()
287 proc->accumulator |= half_bit; in cpu()
289 proc->accumulator <<= 1; in cpu()
292 proc->accumulator = fpu_standardise(proc->accumulator); in cpu()
297 proc->mode = exec_mode_stop; in cpu()
301 proc->mode = exec_mode_stop; in cpu()
320 proc->accumulator = proc->word_generator; in cpu()
321 ++(proc->wg_polls); in cpu()
335 if (!pts_reader(proc, unit, &c)) { in cpu()
336 proc->io_busy = reader_busy; in cpu()
339 proc->accumulator |= (int64_t)(c) << word_shift; in cpu()
344 proc->mode = exec_mode_stop; in cpu()
349 proc->core_store[address] = in cpu()
350 ((int64_t)(proc->program_counter) << (second_address_shift - 1)) & in cpu()
364 if (!pts_punch(proc, unit, (uint8_t)(0xff & address))) { in cpu()
365 proc->io_busy = punch_busy; in cpu()
372 proc->mode = exec_mode_stop; in cpu()
376 proc->mode = exec_mode_stop; in cpu()
380 proc->mode = exec_mode_stop; in cpu()
387 if (proc->program_counter == next_pc) { in cpu()
392 proc->mode = exec_mode_stop; in cpu()
395 proc->program_counter = next_pc; in cpu()
398 void cpu803_execute(processor_t *proc) { in cpu803_execute() argument
404 int64_t word = core_read_program(proc, proc->program_counter >> 1); in cpu803_execute()
406 proc->mode = exec_mode_stop; in cpu803_execute()
409 if (0 == (1 & proc->program_counter)) { in cpu803_execute()
415 proc->b_addr = proc->program_counter | 1; // set the half bit in cpu803_execute()
416 proc->b_data = word; in cpu803_execute()
419 cpu(proc, op, address); in cpu803_execute()
424 if (proc->program_counter == proc->b_addr) { in cpu803_execute()
425 word = proc->b_data; in cpu803_execute()
426 proc->b_addr = 0; // invalidate B cache in cpu803_execute()
430 int64_t modifier = core_read(proc, address); in cpu803_execute()
436 cpu(proc, op, address); in cpu803_execute()