Processor.java

1
// Copyright © 2004-2006 University of Helsinki, Department of Computer Science
2
// Copyright © 2012 various contributors
3
// This software is released under GNU Lesser General Public License 2.1.
4
// The license text is at http://www.gnu.org/licenses/lgpl-2.1.html
5
6
package fi.helsinki.cs.titokone;
7
8
import fi.helsinki.cs.titokone.devices.*;
9
import fi.helsinki.cs.ttk91.*;
10
11
import java.util.*;
12
13
/**
14
 * This class represents the processor. It can be told to run for one
15
 * command cycle at a time.
16
 */
17
public class Processor
18
        implements TTK91Cpu, Interruptable {
19
20
21
    /**
22
     * When SVC call is made PC points to this place.
23
     */
24
    public static final int OS_CODE_AREA = -1;
25
26
    public static final String INVALID_OPCODE_MESSAGE = "Invalid operation code {0}";
27
    public static final String ADDRESS_OUT_OF_BOUNDS_MESSAGE = "Memory address out of bounds";
28
    public static final String BAD_ACCESS_MODE_MESSAGE = "Invalid memory addressing mode";
29
    public static final String BRANCH_BAD_ACCESS_MODE_MESSAGE = "Invalid memory access mode in branching command";
30
    public static final String STORE_BAD_ACCESS_MODE_MESSAGE = "Invalid memory access mode in STORE";
31
    public static final String NO_KDB_DATA_MESSAGE = "No keyboard data available";
32
    public static final String NO_STDIN_DATA_MESSAGE = "No standard input data available";
33
    public static final String INVALID_DEVICE_MESSAGE = "Invalid device number";
34
    public static final String INTEGER_OVERFLOW_MESSAGE = "Integer overflow";
35
    public static final String DIVISION_BY_ZERO_MESSAGE = "Division by zero";
36
37
    /**
38
     * CRT-device
39
     */
40
    public static final int CRT = 0;
41
    /**
42
     * KBD-device
43
     */
44
    public static final int KBD = 1;
45
    /**
46
     * STDIN-device
47
     */
48
    public static final int STDIN = 6;
49
    /**
50
     * STDOUT-device
51
     */
52
    public static final int STDOUT = 7;
53
54 2
    protected ArrayList<IODevice> ioDevices = new ArrayList<IODevice>();
55
56
    /**
57
     * This field represents the memory of computer.
58
     * this is actually the "virtual" ram
59
     */
60
    private RandomAccessMemory ram;
61
    /**
62
     * this ram is the "physical" ram, even though this might
63
     * include some mmapped devices and actually be a
64
     * "combiningrandomaccessmemoryimpl" or something
65
     */
66
    private RandomAccessMemory physRam;
67
68
    /**
69
     * This field represents the registers of computer.
70
     */
71
    private Registers regs;
72
73
    /**
74
     * Is program running.
75
     */
76 3
    private int status = TTK91Cpu.STATUS_SVC_SD;
77
78
    /**
79
     * Rundebugger
80
     */
81 2
    private RunDebugger runDebugger = new RunDebugger();
82
    private int memsize;
83
84
    /*  a programmable interrupt controller*/
85 2
    protected Pic pic = new Pic();
86
87
    /*  reference to the Display so we can control it*/
88 1
    protected Display display = null;
89
90
91
    /**
92
     * state register array.
93
     * index:
94
     * 0 - greater
95
     * 1 - equal
96
     * 2 - less
97
     * 3 - arithmetic overflow
98
     * 4 - divide by zero
99
     * 5 - unknown instruction
100
     * 6 - forbidden memory access
101
     * 7 - device interrupt
102
     * 8 - supervisor call
103
     * 9 - priviledged mode
104
     * 10 - interrupts disabled
105
     */
106 3
    private boolean[] sr = new boolean[11];
107
108
    /*  if an interrupt has been flagged
109
  this will be automatically cleared
110
  when the processor does the jump to
111
  the interrupt routine*/
112 3
    protected boolean interrupted = false;
113
114
    //Added by Harri Tuomikoski, 12.10.2004, Koskelo-project.
115 3
    private int stack_size = 0;
116 3
    private int stack_max_size = 0;
117 3
    private int commands_executed = 0;
118
119
    /**
120
     * The stdinData and kbdData fields stores buffer data to be read with
121
     * the IN operation. When the data has been read, the field should be
122
     * set to be null.
123
     */
124 2
    private Integer stdinData = null, kbdData = null;
125
126
    /**
127
     * Creates new processor, memory and registers.
128
     * Processor state, program counter get initial values
129
     *
130
     * @param memsize creates new computer with given size of memory.
131
     *                Proper values are power of two (from 512 to 64k).
132
     */
133
    public Processor(int memsize) {
134 1
        this.memsize = memsize;
135 1
        reinitMemory(memsize);
136 2
        regs = new Registers();
137
138
        //Added by HT, 12.10.2004, Koskelo-project
139 3
        this.stack_size = 0;
140 3
        this.stack_max_size = 0;
141 3
        this.commands_executed = 0;
142 1
        initDevices();
143
    }
144
145
    /**
146
     * flag that an interrupt has happened. this should only
147
     * be called on the "rising edge" of the interrupt. so if the
148
     * interrupt line stays high, this will not be retriggered.
149
     */
150
    public void flagInterrupt(InterruptGenerator ig) {
151
        /*  set internal variable to flag interrupt
152
            dont know if we could use sr[7] for this*/
153 3
        interrupted = true;
154
    }
155
156
    public void clearInterrupt() {
157 3
        interrupted = false;
158
    }
159
160
    private void reinitMemory(int memsize) {
161 2
        physRam = new RandomAccessMemoryImpl(memsize);
162 1
        resetDevices();
163
    }
164
165
    /**
166
     * this is used to set external devices which are somehow difficult
167
     * and global. like the Display
168
     */
169
    public void setExternalDevice(Device d) {
170 1
        if (d instanceof Display) {
171 1
            display = (Display) display;
172
        }
173
    }
174
175
    private void initDevices() {
176
        /*  link pic to report it's interrupt to processor*/
177 1
        pic.link(this);
178
        //!TBD combine below classes into a sensible stdout inner class
179
        // or two
180 4
        IODevice crt = new InvalidIODevice(1) {
181
            @Override
182
            public void setPort(int n, int value) {
183 1
                if (n != 0) {
184 5
                    throw new RuntimeException("shouldnt happen " + n);
185
                }
186 6
                runDebugger.setOUT(CRT, regs.getRegister(value));
187
            }
188
        };
189 4
        IODevice stdout = new InvalidIODevice(1) {
190
            @Override
191
            public void setPort(int n, int value) {
192 1
                if (n != 0) {
193 5
                    throw new RuntimeException("shouldnt happen " + n);
194
                }
195 6
                runDebugger.setOUT(STDOUT, regs.getRegister(value));
196
            }
197
        };
198 1
        registerDevice(crt);
199 5
        registerDevice(new InvalidIODevice(1) {
200
            @Override
201
            public int getPort(int n)
202
                    throws TTK91RuntimeException {
203 1
                if (n != 0) {
204 5
                    throw new RuntimeException("shouldnt happen " + n);
205
                }
206
207 2
                if (kbdData == null) {
208 3
                    throw new TTK91NoKbdData(new Message(Processor.NO_KDB_DATA_MESSAGE).toString());
209
                }
210 6
                runDebugger.setIN(KBD, kbdData.intValue());
211 2
                int ret = kbdData.intValue();
212 1
                kbdData = null;
213 1
                return ret;
214
            }
215
        });
216 4
        registerDevice(new InvalidIODevice(4));
217 5
        registerDevice(new InvalidIODevice(1) {
218
            @Override
219
            public int getPort(int n)
220
                    throws TTK91RuntimeException {
221 1
                if (n != 0) {
222 5
                    throw new RuntimeException("shouldnt happen " + n);
223
                }
224
225 2
                if (stdinData == null) {
226 3
                    throw new TTK91NoStdInData(new Message(Processor.NO_KDB_DATA_MESSAGE).toString());
227
                }
228 6
                runDebugger.setIN(STDIN, stdinData.intValue());
229 2
                int ret = stdinData.intValue();
230 1
                stdinData = null;
231 1
                return ret;
232
            }
233
        });
234 1
        registerDevice(stdout); //7
235 4
        registerDevice(new InvalidIODevice(3)); //reserve up to 10
236 2
        registerDevice(new ZeroIODevice()); //here you can read zeroes
237 2
        registerDevice(new RandomIODevice()); //random numbers
238 2
        MMU mmu = new MMU() {
239
            protected RandomAccessMemory getMem() {
240 2
                return physRam;
241
            }
242
        };
243 1
        ram = mmu;
244 1
        registerDevice(mmu);//dont register this if you want a passthrough
245
        //stupid mmu
246 1
        registerDevice(pic);
247 4
        registerDevice(new UART(10)); //10 clocks per bit (fast!)
248 4
        registerDevice(new UART(10)); //another..
249 3
        registerDevice(new VIC() {
250
            public Display getDisplay() {
251 1
                return Processor.this.display;
252
            }
253
        }); //video
254 2
        registerDevice(new RTC());
255 2
        registerDevice(new SID());
256
    }
257
258
    /**
259
     * register a new device which might either be an
260
     * IODevice, a MMAPDevice or both. It will be allocated the
261
     * next free ioports and memory addresses
262
     */
263
    public void registerDevice(Device d) {
264 1
        if (d instanceof IODevice) {
265 2
            int base = 0;
266 4
            for (IODevice iod : ioDevices) {
267 2
                base += iod.getPortCount();
268
            }
269
            /*  remap the device so it sees itself starting from 0*/
270 2
            ioDevices.add(new AddressMappingIODevice(base, (IODevice) d));
271
        }
272 2
        if (d instanceof InterruptGenerator &&
273
                !(d instanceof Pic)) {
274 1
            ((InterruptGenerator) d).link(pic);
275 1
            pic.add((InterruptGenerator) d);
276
        }
277
        //handle MMAPDevices
278
    }
279
280
    /**
281
     * reset all devices to reboot state
282
     */
283
    public void resetDevices() {
284 4
        for (IODevice iod : ioDevices) {
285 1
            iod.reset();
286
        }
287
        //MMAP devices
288
    }
289
290
    /**
291
     * give all devices a chance to update their state
292
     * with PIC last.
293
     */
294
    public void updateDevices() {
295 4
        for (IODevice iod : ioDevices) {
296 1
            if (!(iod instanceof Pic)) {
297 1
                iod.update();
298
            }
299
        }
300
        //MMAP devices
301 1
        pic.update();
302
    }
303
304
    /**
305
     * get the IODevice which handles this port or
306
     * InvalidIODevice
307
     */
308
    protected IODevice getDevice(int port) {
309 2
        int base = 0;
310 4
        for (IODevice iod : ioDevices) {
311 2
            base += iod.getPortCount();
312 2
            if (base > port) {
313 1
                return iod;
314
            }
315
        }
316 4
        return new InvalidIODevice(65000);
317
    }
318
319
    /**
320
     * Returns the memory attached to the processor.
321
     * will actually return the virtual ram how it is viewed by
322
     * the processor
323
     */
324
    public TTK91Memory getMemory() {
325 1
        return ram;
326
    }
327
328
    /**
329
     * will return the underlying physical view of the ram
330
     */
331
    public TTK91Memory getPhysicalMemory() {
332 1
        return physRam;
333
    }
334
335
    /**
336
     * Returns the value of given registerID. The index numbers
337
     * are available from the TTK91CPU interface.
338
     *
339
     * @param registerID Identifying number of the register.
340
     * @return Value of given register. Inproper value returns -1.
341
     */
342
    public int getValueOf(int registerID) {
343 2
        return regs.getRegister(registerID);
344
    }
345
346
    /**
347
     * Returns queried memory line.
348
     *
349
     * @param row Number of the row in processor's memory.
350
     * @return Queried memory line.
351
     */
352
    public MemoryLine getMemoryLine(int row) {
353 2
        return ram.getMemoryLine(row);
354
    }
355
356
    /**
357
     * Method returns the current value of Processor. Status values
358
     * are available from the TTK91CPU interface.
359
     *
360
     * @return Current status of the Processor.
361
     */
362
    public int getStatus() {
363 1
        return status;
364
    }
365
366
    /**
367
     * Method erases memorylines from memory. Memory will be filled
368
     * with 0-lines.
369
     */
370
    public void eraseMemory() {
371 1
        reinitMemory(memsize);
372 2
        regs = new Registers();
373
    }
374
375
    /**
376
     * Method for loading MemoryLines to Processor, Loader classes uses
377
     * this for loading application to processor.
378
     *
379
     * @throws IllegalArgumentException If inputLine is null.
380
     * @throws TTK91AddressOutOfBounds  If the rownumber is either below 0 or
381
     *                                  beyond the memory size.
382
     */
383
    public void memoryInput(int rowNumber, MemoryLine inputLine)
384
            throws TTK91AddressOutOfBounds {
385
        String errorMessage;
386
        try {
387 1
            ram.setMemoryLine(rowNumber, inputLine);
388
        } catch (ArrayIndexOutOfBoundsException e) {
389 6
            errorMessage = new Message("Row number {0} is beyond memory " +
390
                    "limits.", "" + rowNumber).toString();
391 1
            throw new TTK91AddressOutOfBounds(errorMessage);
392
393
        }
394
    }
395
396
    /**
397
     * This method adds a line of keyboard data to a buffer the Processor
398
     * can read it from during its next command cycle (or previous cycle
399
     * repeated).
400
     *
401
     * @param kbdInput An int to be "read from the keyboard".
402
     */
403
    public void keyboardInput(int kbdInput) {
404 2
        kbdData = new Integer(kbdInput);
405
    }
406
407
    /**
408
     * This method adds a line of stdin data to a buffer the Processor
409
     * can read it from during its next command cycle (or previous cycle
410
     * repeated).
411
     *
412
     * @param stdinInput An int to be "read from STDIN (file)".
413
     */
414
    public void stdinInput(int stdinInput) {
415 2
        stdinData = new Integer(stdinInput);
416
    }
417
418
    /**
419
     * Initializes processor with new program
420
     * set FP and SP, PC = 0  and return RunInfo
421
     *
422
     * @return RunInfo created by RunDebugger.
423
     */
424
    public void runInit(int initSP, int initFP) {
425 3
        status = TTK91Cpu.STATUS_STILL_RUNNING;
426 5
        regs.setRegister(TTK91Cpu.CU_PC, 0);
427 5
        regs.setRegister(TTK91Cpu.CU_PC_CURRENT, 0);
428
429 3
        regs.setRegister(TTK91Cpu.REG_SP, initSP);
430 3
        regs.setRegister(TTK91Cpu.REG_FP, initFP);
431
432 4
        ram.setCodeAreaLength(initFP + 1);
433 2
        ram.setDataAreaLength(initSP - initFP);
434
    }
435
436
    /**
437
     * Process next instruction.
438
     *
439
     * @return RunInfo created by RunDebugger.
440
     */
441
    public RunInfo runLine() throws TTK91RuntimeException {
442 3
        if (status == TTK91Cpu.STATUS_SVC_SD) {
443 1
            return null;
444
        }
445
        // if last command set status to ABNORMAL_EXIT repeat that command
446 3
        if (status == TTK91Cpu.STATUS_ABNORMAL_EXIT) {
447 9
            regs.setRegister(TTK91Cpu.CU_PC, regs.getRegister(TTK91Cpu.CU_PC) - 1);
448
        }
449
450
        /*  give peripherals some attention*/
451 1
        updateDevices();
452 1
        checkForInterrupt();
453
        try {
454
            // get PC
455 3
            int PC = regs.getRegister(TTK91Cpu.CU_PC);
456
457
            // fetch the next command to IR from memory and increase PC
458 1
            MemoryLine IR = ram.getMemoryLine(PC);
459
460 2
            runDebugger.cycleStart(PC, IR.getSymbolic());
461
462 4
            regs.setRegister(TTK91Cpu.CU_IR, IR.getBinary());
463 6
            regs.setRegister(TTK91Cpu.CU_PC, PC + 1);
464
465
            // cut up the command in IR
466 2
            Instruction insn = new Instruction(IR.getBinary());
467 1
            int opcode = insn.getOpcode();                          // operation code
468 4
            int Rj = insn.getRj() + TTK91Cpu.REG_R0;  // first operand (register 0..7)
469 1
            int M = insn.getM();                      // memory addressing mode
470 4
            int Ri = insn.getRi() + TTK91Cpu.REG_R0;  // index register
471 1
            int ADDR = insn.getAddr();                     // address
472
473 2
            runDebugger.runCommand(IR.getBinary());
474
475
            // fetch parameter from memory
476 3
            if (Ri != TTK91Cpu.REG_R0) {
477 2
                ADDR += regs.getRegister(Ri);   // add indexing register Ri
478
            }
479
            int param = ADDR;                               // constant value        
480 3
            if (M == 1) {
481 1
                param = ram.getValue(ADDR);                 // one memory fetch
482 1
                runDebugger.setValueAtADDR(param);
483
            }
484 3
            if (M == 2) {
485 1
                param = ram.getValue(param);                // two memory fetches
486 1
                runDebugger.setValueAtADDR(param);
487 1
                param = ram.getValue(param);
488 1
                runDebugger.setSecondFetchValue(param);
489
            }
490
491
            // run the command
492 3
            if (M == 3) {
493 3
                status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
494 3
                throw new TTK91BadAccessMode(new Message(Processor.BAD_ACCESS_MODE_MESSAGE).toString());
495
            }
496
497 1
            if (opcode == 0) {
498 1
                nop();
499 8
            } else if (opcode >= 1 && opcode <= 4) {
500 1
                transfer(opcode, Rj, M, ADDR, param);
501
            }
502
            //            else if (opcode >= 17 && opcode <= 27) alu (opcode, Rj, param); // Modified to support 'NOT' - Lauri 2004-09-23
503 8
            else if (opcode >= 17 && opcode <= 28) {
504 1
                alu(opcode, Rj, param);
505 3
            } else if (opcode == 31) {
506 1
                comp(Rj, param);
507 8
            } else if (opcode >= 32 && opcode <= 44) {
508 1
                branch(opcode, Rj, M, ADDR, param);
509 8
            } else if (opcode >= 49 && opcode <= 50) {
510 1
                subr(opcode, Rj, ADDR, param);
511 8
            } else if (opcode >= 51 && opcode <= 54) {
512 1
                stack(opcode, Rj, Ri, param);
513 3
            } else if (opcode == 112) {
514 1
                svc(Rj, param);
515
            } else {
516 3
                status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
517 7
                throw new TTK91InvalidOpCode(new Message(Processor.INVALID_OPCODE_MESSAGE, "" + opcode).toString());
518
            }
519
        } catch (ArrayIndexOutOfBoundsException e) {
520 3
            status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
521 3
            throw new TTK91AddressOutOfBounds(new Message(Processor.ADDRESS_OUT_OF_BOUNDS_MESSAGE).toString());
522
        }
523
524
        //Added by HT, 12.10.2004, Koskelo-project
525 4
        ++this.commands_executed;
526
527
        // update PC_CURRENT
528 6
        regs.setRegister(TTK91Cpu.CU_PC_CURRENT, regs.getRegister(TTK91Cpu.CU_PC));
529
530
        // give registers to runDebugger
531 2
        int[] registers = new int[8];
532 5
        for (int i = 0; i < registers.length; i++) {
533 4
            registers[i] = regs.getRegister(i + TTK91Cpu.REG_R0);
534
        }
535 1
        runDebugger.setRegisters(registers);
536
537 2
        return runDebugger.cycleEnd();
538
    }
539
540
    //Added by HT, 12.10.2004, Koskelo-project
541
    public int giveCommAmount() {
542
543 1
        return this.commands_executed;
544
545
    }//giveCommAmount
546
547
    //Added by HT, 12.10.2004, Koskelo-project
548
    public int giveStackSize() {
549
550 1
        return this.stack_size;
551
552
    }//giveStackSize
553
554
    //Added by LL, 12.12.2004, Koskelo-project
555
    public int giveStackMaxSize() {
556 1
        return this.stack_max_size;
557
    }
558
559
    /**
560
     * Transfer-operations.
561
     */
562
    private void transfer(int oc, int Rj, int M, int ADDR, int param)
563
            throws TTK91RuntimeException {
564 3
        runDebugger.setOperationType(RunDebugger.DATA_TRANSFER_OPERATION);
565 1
        OpCode opcode = OpCode.getOpCode(oc);
566
        IODevice dev = null;
567 107
        switch (opcode) {
568
            case STORE: // STORE
569 3
                if (M == 2) {
570 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
571 3
                    throw new TTK91BadAccessMode(new Message(Processor.STORE_BAD_ACCESS_MODE_MESSAGE).toString());
572
                }
573
574 1
                if (M == 0) {
575 2
                    writeToMemory(ADDR, regs.getRegister(Rj));
576
                }
577 3
                if (M == 1) {
578 3
                    writeToMemory(ram.getValue(ADDR), regs.getRegister(Rj));
579
                }
580
                break;
581
582
            case LOAD: // LOAD
583 1
                regs.setRegister(Rj, param);
584
                break;
585
586
            case IN: // IN
587
                try {
588 1
                    dev = getDevice(param);
589 2
                    regs.setRegister(Rj, dev.getPort(param));
590 3
                    status = TTK91Cpu.STATUS_STILL_RUNNING;
591
                } catch (TTK91RuntimeException id) {
592 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
593
                    throw id;
594
                }
595
                break;
596
597
            case OUT: // OUT
598
                try {
599 1
                    dev = getDevice(param);
600 1
                    dev.setPort(param, Rj);
601
                } catch (TTK91RuntimeException id) {
602 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
603
                    throw id;
604
                }
605
                break;
606
        }
607
    }
608
609
610
    /**
611
     * ALU-operations.
612
     *
613
     * @return Result of the ALU-operation.
614
     */
615
    private void alu(int oc, int Rj, int param)
616
            throws TTK91IntegerOverflow, TTK91DivisionByZero {
617 3
        runDebugger.setOperationType(RunDebugger.ALU_OPERATION);
618 1
        OpCode opcode = OpCode.getOpCode(oc);
619
        long n;
620 1
        switch (opcode) {
621
            case ADD: // ADD
622 2
                n = (long) regs.getRegister(Rj) + (long) param;
623 2
                if (isOverflow(n)) {
624 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
625 3
                    throw new TTK91IntegerOverflow(new Message(Processor.INTEGER_OVERFLOW_MESSAGE).toString());
626
                }
627 1
                regs.setRegister(Rj, (int) n);
628
                break;
629
630
            case SUB: // SUB
631 2
                n = (long) regs.getRegister(Rj) - (long) param;
632 2
                if (isOverflow(n)) {
633 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
634 3
                    throw new TTK91IntegerOverflow(new Message(Processor.INTEGER_OVERFLOW_MESSAGE).toString());
635
                }
636 1
                regs.setRegister(Rj, (int) n);
637
                break;
638
639
            case MUL: // MUL
640 2
                n = (long) regs.getRegister(Rj) * (long) param;
641 2
                if (isOverflow(n)) {
642 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
643 3
                    throw new TTK91IntegerOverflow(new Message(Processor.INTEGER_OVERFLOW_MESSAGE).toString());
644
                }
645 1
                regs.setRegister(Rj, (int) n);
646
                break;
647
648
            case DIV: // DIV
649 1
                if (param == 0) {
650 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
651 3
                    throw new TTK91DivisionByZero(new Message(Processor.DIVISION_BY_ZERO_MESSAGE).toString());
652
                }
653 3
                regs.setRegister(Rj, regs.getRegister(Rj) / param);
654
                break;
655
656
            case MOD: // MOD
657 1
                if (param == 0) {
658 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
659 3
                    throw new TTK91DivisionByZero(new Message(Processor.DIVISION_BY_ZERO_MESSAGE).toString());
660
                }
661 3
                regs.setRegister(Rj, regs.getRegister(Rj) % param);
662
                break;
663
664
            case AND: // AND
665 3
                regs.setRegister(Rj, regs.getRegister(Rj) & param);
666
                break;
667
668
            case OR: // OR
669 3
                regs.setRegister(Rj, regs.getRegister(Rj) | param);
670
                break;
671
672
            case XOR: // XOR
673 3
                regs.setRegister(Rj, regs.getRegister(Rj) ^ param);
674
                break;
675
676
            case SHL: // SHL
677 3
                regs.setRegister(Rj, regs.getRegister(Rj) << param);
678
                break;
679
680
            case SHR: // SHR
681 3
                regs.setRegister(Rj, regs.getRegister(Rj) >>> param);
682
                break;
683
            //SHRA MOVED
684
            case NOT: // NOT
685 5
                regs.setRegister(Rj, ~(regs.getRegister(Rj))); // Command 'NOT' added 2004-09-23
686
                break;
687
688
            case SHRA: // SHRA
689 3
                regs.setRegister(Rj, regs.getRegister(Rj) >> param);
690
                break;
691
        }
692
693 2
        runDebugger.setALUResult(regs.getRegister(Rj));
694
    }
695
696
    /**
697
     * Compare-method manipulates status register.
698
     *
699
     * @param Rj    First value to compare (register index).
700
     * @param param Second value.
701
     */
702
    private void comp(int Rj, int param) {
703
        // COMP
704 3
        runDebugger.setOperationType(RunDebugger.COMP_OPERATION);
705 3
        if (regs.getRegister(Rj) > param) {
706 4
            sr[0] = true;
707 4
            sr[1] = false;
708 4
            sr[2] = false;
709 3
            runDebugger.setCompareResult(0);
710 5
            regs.setRegister(TTK91Cpu.CU_SR, 1);
711 3
        } else if (regs.getRegister(Rj) < param) {
712 4
            sr[0] = false;
713 4
            sr[1] = false;
714 4
            sr[2] = true;
715 3
            runDebugger.setCompareResult(2);
716 5
            regs.setRegister(TTK91Cpu.CU_SR, 4);
717
        } else {
718 4
            sr[0] = false;
719 4
            sr[1] = true;
720 4
            sr[2] = false;
721 3
            runDebugger.setCompareResult(1);
722 5
            regs.setRegister(TTK91Cpu.CU_SR, 2);
723
        }
724
    }
725
726
    /**
727
     * Branching.
728
     */
729
    private void branch(int oc, int Rj, int M, int ADDR, int param)
730
            throws TTK91BadAccessMode {
731 3
        runDebugger.setOperationType(RunDebugger.BRANCH_OPERATION);
732 3
        if (M == 2) {
733 3
            status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
734 3
            throw new TTK91BadAccessMode(new Message(Processor.BRANCH_BAD_ACCESS_MODE_MESSAGE).toString());
735
        }
736 1
        OpCode opcode = OpCode.getOpCode(oc);
737 1
        switch (opcode) {
738
            case JUMP: // JUMP
739 1
                setNewPC(param);
740
                break;
741
742
            case JNEG: // JNEG
743 3
                if (regs.getRegister(Rj) < 0) {
744 1
                    setNewPC(param);
745
                }
746
                break;
747
748
            case JZER: // JZER
749 2
                if (regs.getRegister(Rj) == 0) {
750 1
                    setNewPC(param);
751
                }
752
                break;
753
754
            case JPOS: // JPOS
755 3
                if (regs.getRegister(Rj) > 0) {
756 1
                    setNewPC(param);
757
                }
758
                break;
759
760
            case JNNEG: // JNNEG
761 3
                if (regs.getRegister(Rj) >= 0) {
762 1
                    setNewPC(param);
763
                }
764
                break;
765
766
            case JNZER: // JNZER
767 2
                if (regs.getRegister(Rj) != 0) {
768 1
                    setNewPC(param);
769
                }
770
                break;
771
772
            case JNPOS: // JNPOS
773 3
                if (regs.getRegister(Rj) <= 0) {
774 1
                    setNewPC(param);
775
                }
776
                break;
777
778
            case JLES: // JLES
779 3
                if (sr[2]) {
780 1
                    setNewPC(param);
781
                }
782
                break;
783
784
            case JEQU: // JEQU
785 3
                if (sr[1]) {
786 1
                    setNewPC(param);
787
                }
788
                break;
789
790
            case JGRE: // JGRE
791 3
                if (sr[0]) {
792 1
                    setNewPC(param);
793
                }
794
                break;
795
796
            case JNLES: // JNLES
797 6
                if (sr[1] || sr[0]) {
798 1
                    setNewPC(param);
799
                }
800
                break;
801
802
            case JNEQU: // JNEQU
803 6
                if (sr[2] || sr[0]) {
804 1
                    setNewPC(param);
805
                }
806
                break;
807
808
            case JNGRE: // JNGRE
809 6
                if (sr[2] || sr[1]) {
810 1
                    setNewPC(param);
811
                }
812
                break;
813
        }
814
    }
815
816
    /**
817
     * Stack.
818
     */
819
    private void stack(int oc, int Rj, int Ri, int param)
820
            throws TTK91AddressOutOfBounds {
821 3
        runDebugger.setOperationType(RunDebugger.STACK_OPERATION);
822 1
        OpCode opcode = OpCode.getOpCode(oc);
823 1
        switch (opcode) {
824
            case PUSH: // PUSH
825 5
                regs.setRegister(Rj, regs.getRegister(Rj) + 1);
826 2
                writeToMemory(regs.getRegister(Rj), param);
827
                //Added by HT, 12.10.2004, Koskelo-project, modified by LL, 12.12.2004
828 1
                addToStack();
829
                break;
830
831
            case POP: // POP
832 3
                regs.setRegister(Ri, ram.getValue(regs.getRegister(Rj)));
833 5
                regs.setRegister(Rj, regs.getRegister(Rj) - 1);
834
                //Added by HT, 12.10.2004, Koskelo-project
835 4
                --this.stack_size;
836
                break;
837
838
            case PUSHR: // PUSHR
839 7
                for (int i = 0; i < 7; i++) {
840 5
                    regs.setRegister(Rj, regs.getRegister(Rj) + 1);
841 6
                    writeToMemory(regs.getRegister(Rj), regs.getRegister(TTK91Cpu.REG_R0 + i));
842
                    //Added by HT, 12.10.2004, Koskelo-project, modified by LL, 12.12.2004
843 1
                    addToStack();
844
                }
845
                break;
846
847
            case POPR: // POPR
848 7
                for (int i = 0; i < 7; i++) {
849 6
                    regs.setRegister(TTK91Cpu.REG_R6 - i, ram.getValue(regs.getRegister(Rj)));
850 5
                    regs.setRegister(Rj, regs.getRegister(Rj) - 1);
851
                    //Added by HT, 12.10.2004, Koskelo-project
852 4
                    --this.stack_size;
853
                }
854
                break;
855
        }
856
    }
857
858
    /**
859
     * see if we have been interrupted and execute a jump
860
     * if so.
861
     */
862
    protected void checkForInterrupt()
863
            throws TTK91AddressOutOfBounds {
864 1
        if (interrupted) {
865
            /*  fake a CALL*/
866 1
            clearInterrupt();
867 9
            subr(OpCode.CALL.code(), TTK91Cpu.REG_R0, ram.getValue(0), 0);
868
        }
869
    }
870
871
    /**
872
     * Subroutine.
873
     */
874
    private void subr(int oc, int Rj, int ADDR, int param)
875
            throws TTK91AddressOutOfBounds {
876 3
        runDebugger.setOperationType(RunDebugger.SUB_OPERATION);
877
        int sp;
878 1
        OpCode opcode = OpCode.getOpCode(oc);
879 1
        switch (opcode) {
880
            case CALL: // CALL
881
                // push PC and FP to stack (Rj is stack pointer)
882 1
                sp = regs.getRegister(Rj);
883 5
                writeToMemory(++sp, regs.getRegister(TTK91Cpu.CU_PC));
884 1
                addToStack(); // <-- by Kohahdus 2006-11-23
885 5
                writeToMemory(++sp, regs.getRegister(TTK91Cpu.REG_FP));
886 1
                addToStack(); // <-- by Kohahdus 2006-11-23
887
888
                // update stack and frame pointers
889 1
                regs.setRegister(Rj, sp);
890 3
                regs.setRegister(TTK91Cpu.REG_FP, sp);
891
892
                // set PC
893 1
                setNewPC(ADDR);
894
                break;
895
896
            case EXIT: // EXIT
897
                // pop FP and PC from stack (Rj is stack pointer)
898 1
                sp = regs.getRegister(Rj);
899 5
                regs.setRegister(TTK91Cpu.REG_FP, ram.getValue(sp--));
900 4
                stack_size--; // <-- by Kohahdus 2006-11-23
901 3
                setNewPC(ram.getValue(sp--));
902 4
                stack_size--; // <-- by Kohahdus 2006-11-23
903
904
                // decrease number of parameters from stack
905 2
                regs.setRegister(Rj, sp - param);
906 2
                stack_size = stack_size - param; // <-- by Kohahdus 2006-11-23
907
                break;
908
        }
909
    }
910
911
    /**
912
     * Supervisor call.
913
     */
914
    private void svc(int Rj, int param)
915
            throws TTK91AddressOutOfBounds, TTK91NoKbdData {
916 1
        runDebugger.setSVCOperation(param);
917
        Calendar calendar;
918
919
        // make CALL operation to supervisor
920 5
        subr(49, Rj, OS_CODE_AREA, param);
921
922
        switch (param) {
923
            case 11: // HALT
924 3
                runDebugger.setOperationType(RunDebugger.SVC_OPERATION);
925 3
                status = TTK91Cpu.STATUS_SVC_SD;
926
                break;
927
928
            case 12: // READ
929 1
                if (kbdData == null) {
930 7
                    subr(50, Rj, 0, 1);    // EXIT from SVC(READ) with one parameter
931 3
                    runDebugger.setOperationType(RunDebugger.SVC_OPERATION);
932 3
                    status = TTK91Cpu.STATUS_ABNORMAL_EXIT;
933 3
                    throw new TTK91NoKbdData(new Message(Processor.NO_KDB_DATA_MESSAGE).toString());
934
                }
935 4
                runDebugger.setIN(KBD, kbdData.intValue());
936 9
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 2), kbdData.intValue());
937 1
                kbdData = null;
938 3
                status = TTK91Cpu.STATUS_STILL_RUNNING;
939 7
                subr(50, Rj, 0, 1);    // EXIT from SVC(READ) with one parameter
940
                break;
941
942
            case 13: // WRITE
943 10
                runDebugger.setOUT(CRT, ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 2));
944 7
                subr(50, Rj, 0, 1);    // EXIT from SVC(WRITE) with 1 parameter
945
                break;
946
947
            case 14: // TIME
948 1
                calendar = new GregorianCalendar();
949
950 3
                int hour = calendar.get(Calendar.HOUR);
951 3
                int minute = calendar.get(Calendar.MINUTE);
952 3
                int second = calendar.get(Calendar.SECOND);
953
954
                // Write second, minute and hour to given places. Right places are found from stack.
955 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 2), second);
956 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 3), minute);
957 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 4), hour);
958 7
                subr(50, Rj, 0, 3);    // EXIT from SVC(TIME) with 3 parameters
959
                break;
960
961
            case 15: // DATE
962 1
                calendar = new GregorianCalendar();
963
964 3
                int year = calendar.get(Calendar.YEAR);
965 3
                int month = calendar.get(Calendar.MONTH);
966 3
                int date = calendar.get(Calendar.DATE);
967
968
                // Write date, month and year to given places. Right places are found from stack.
969 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 2), date);
970 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 3), month);
971 8
                writeToMemory(ram.getValue(regs.getRegister(TTK91Cpu.REG_FP) - 4), year);
972 7
                subr(50, Rj, 0, 3);    // EXIT from SVC(DATE) with 3 parameters
973
                break;
974
        }
975 3
        runDebugger.setOperationType(RunDebugger.SVC_OPERATION);
976
    }
977
978
    private void nop() {
979 3
        runDebugger.setOperationType(RunDebugger.NO_OPERATION);
980
    }
981
982
    private void writeToMemory(int row, int value) throws TTK91AddressOutOfBounds {
983 3
        MemoryLine memoryLine = new MemoryLine(value, new BinaryInterpreter().binaryToString(value));
984 1
        ram.setMemoryLine(row, memoryLine);
985 1
        runDebugger.addChangedMemoryLine(row, memoryLine);
986
    }
987
988
    private void setNewPC(int newPC) {
989 3
        regs.setRegister(TTK91Cpu.CU_PC, newPC);
990 1
        runDebugger.setNewPC(newPC);
991
    }
992
993
    /**
994
     * Tests if given long value is acceptable int value.
995
     */
996
    private boolean isOverflow(long value) {
997 13
        return (value > (long) Integer.MAX_VALUE || value < (long) Integer.MIN_VALUE);
998
    }
999
1000
1001
    //Added by LL, 12.12.2004, Koskelo-project
1002
    private void addToStack() {
1003 4
        this.stack_size++;
1004 2
        if (this.stack_size > this.stack_max_size) {
1005 4
            ++stack_max_size;
1006
        }
1007
    }
1008
}

Mutations

54

Removed assignment to member variable ioDevices : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/ArrayList::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

76

Removed assignment to member variable status : SURVIVED

Substituted 902 with 903 : SURVIVED

Replaced constant value of 902 with 903 : SURVIVED

81

Removed assignment to member variable runDebugger : SURVIVED

removed call to fi/helsinki/cs/titokone/RunDebugger::<init> : SURVIVED

85

removed call to fi/helsinki/cs/titokone/devices/Pic::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable pic : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

88

Removed assignment to member variable display : SURVIVED

106

Substituted 11 with 12 : SURVIVED

Replaced constant value of 11 with 12 : TIMED_OUT

Removed assignment to member variable sr : SURVIVED

112

Removed assignment to member variable interrupted : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

115

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable stack_size : SURVIVED

116

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable stack_max_size : SURVIVED

117

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable commands_executed : SURVIVED

124

Removed assignment to member variable stdinData : SURVIVED

Removed assignment to member variable kbdData : SURVIVED

134

Removed assignment to member variable memsize : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

135

removed call to fi/helsinki/cs/titokone/Processor::reinitMemory : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

136

removed call to fi/helsinki/cs/titokone/Registers::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable regs : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

139

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable stack_size : SURVIVED

140

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable stack_max_size : SURVIVED

141

Substituted 0 with 1 : SURVIVED

Removed assignment to member variable commands_executed : SURVIVED

Substituted 0 with 1 : SURVIVED

142

removed call to fi/helsinki/cs/titokone/Processor::initDevices : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

153

Removed assignment to member variable interrupted : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

157

Removed assignment to member variable interrupted : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

161

removed call to fi/helsinki/cs/titokone/RandomAccessMemoryImpl::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable physRam : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

162

removed call to fi/helsinki/cs/titokone/Processor::resetDevices : SURVIVED

170

negated conditional : NO_COVERAGE

171

Removed assignment to member variable display : NO_COVERAGE

177

removed call to fi/helsinki/cs/titokone/devices/Pic::link : SURVIVED

180

Substituted 1 with 0 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor$1::<init> : SURVIVED

Substituted 1 with 0 : SURVIVED

Removed assignment to member variable this$0 : SURVIVED

183

negated conditional : NO_COVERAGE

184

removed call to java/lang/RuntimeException::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

186

removed call to fi/helsinki/cs/titokone/Processor::access$100 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$000 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOUT : NO_COVERAGE

189

Removed assignment to member variable this$0 : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor$2::<init> : SURVIVED

Substituted 1 with 0 : SURVIVED

192

negated conditional : NO_COVERAGE

193

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/RuntimeException::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

195

Replaced constant value of 7 with 8 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$000 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOUT : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$100 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

198

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

199

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

Removed assignment to member variable this$0 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor$3::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

203

negated conditional : NO_COVERAGE

204

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/RuntimeException::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

207

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$200 : NO_COVERAGE

208

removed call to fi/helsinki/cs/ttk91/TTK91NoKbdData::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

210

removed call to fi/helsinki/cs/titokone/Processor::access$100 : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$200 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setIN : NO_COVERAGE

211

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$200 : NO_COVERAGE

212

removed call to fi/helsinki/cs/titokone/Processor::access$202 : NO_COVERAGE

213

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

216

removed call to fi/helsinki/cs/titokone/devices/InvalidIODevice::<init> : SURVIVED

Substituted 4 with 5 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

Substituted 4 with 5 : SURVIVED

217

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor$4::<init> : SURVIVED

Removed assignment to member variable this$0 : SURVIVED

221

negated conditional : NO_COVERAGE

222

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/RuntimeException::<init> : NO_COVERAGE

225

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$300 : NO_COVERAGE

226

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91NoStdInData::<init> : NO_COVERAGE

228

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$100 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setIN : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$300 : NO_COVERAGE

229

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::access$300 : NO_COVERAGE

230

removed call to fi/helsinki/cs/titokone/Processor::access$302 : NO_COVERAGE

231

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

234

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

235

removed call to fi/helsinki/cs/titokone/devices/InvalidIODevice::<init> : SURVIVED

Substituted 3 with 4 : SURVIVED

Substituted 3 with 4 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

236

removed call to fi/helsinki/cs/titokone/devices/ZeroIODevice::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

237

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

removed call to fi/helsinki/cs/titokone/devices/RandomIODevice::<init> : SURVIVED

238

Removed assignment to member variable this$0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Processor$5::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

240

removed call to fi/helsinki/cs/titokone/Processor::access$400 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

mutated return of Object value for fi/helsinki/cs/titokone/Processor$5::getMem to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

243

Removed assignment to member variable ram : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

244

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

246

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

247

Substituted 10 with 11 : SURVIVED

Replaced constant value of 10 with 11 : SURVIVED

removed call to fi/helsinki/cs/titokone/devices/UART::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

248

Replaced constant value of 10 with 11 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

Substituted 10 with 11 : SURVIVED

removed call to fi/helsinki/cs/titokone/devices/UART::<init> : SURVIVED

249

Removed assignment to member variable this$0 : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor$6::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

251

mutated return of Object value for fi/helsinki/cs/titokone/Processor$6::getDisplay to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

254

removed call to fi/helsinki/cs/titokone/devices/RTC::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

255

removed call to fi/helsinki/cs/titokone/devices/SID::<init> : SURVIVED

removed call to fi/helsinki/cs/titokone/Processor::registerDevice : SURVIVED

264

negated conditional : SURVIVED

265

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

266

removed call to java/util/Iterator::next : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Iterator::hasNext : SURVIVED

removed call to java/util/ArrayList::iterator : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

267

removed call to fi/helsinki/cs/titokone/IODevice::getPortCount : SURVIVED

Replaced integer addition with subtraction : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

270

removed call to java/util/ArrayList::add : SURVIVED

removed call to fi/helsinki/cs/titokone/devices/AddressMappingIODevice::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

272

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : SURVIVED

274

removed call to fi/helsinki/cs/titokone/InterruptGenerator::link : SURVIVED

275

removed call to fi/helsinki/cs/titokone/devices/Pic::add : SURVIVED

284

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Iterator::hasNext : SURVIVED

removed call to java/util/ArrayList::iterator : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Iterator::next : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

285

removed call to fi/helsinki/cs/titokone/IODevice::reset : SURVIVED

295

removed call to java/util/ArrayList::iterator : NO_COVERAGE

removed call to java/util/Iterator::next : NO_COVERAGE

removed call to java/util/Iterator::hasNext : NO_COVERAGE

negated conditional : NO_COVERAGE

296

negated conditional : NO_COVERAGE

297

removed call to fi/helsinki/cs/titokone/IODevice::update : NO_COVERAGE

301

removed call to fi/helsinki/cs/titokone/devices/Pic::update : NO_COVERAGE

309

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

310

removed call to java/util/Iterator::next : NO_COVERAGE

removed call to java/util/ArrayList::iterator : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/util/Iterator::hasNext : NO_COVERAGE

311

removed call to fi/helsinki/cs/titokone/IODevice::getPortCount : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

312

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

313

mutated return of Object value for fi/helsinki/cs/titokone/Processor::getDevice to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

316

mutated return of Object value for fi/helsinki/cs/titokone/Processor::getDevice to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/devices/InvalidIODevice::<init> : NO_COVERAGE

Replaced constant value of 65000 with 65001 : NO_COVERAGE

Substituted 65000 with 65001 : NO_COVERAGE

325

mutated return of Object value for fi/helsinki/cs/titokone/Processor::getMemory to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testChangeMemorySize(fi.helsinki.cs.titokone.ControlTest)

332

mutated return of Object value for fi/helsinki/cs/titokone/Processor::getPhysicalMemory to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

343

removed call to fi/helsinki/cs/titokone/Registers::getRegister : SURVIVED

replaced return of integer sized value with (x == 0 ? 1 : 0) : SURVIVED

353

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getMemoryLine : NO_COVERAGE

mutated return of Object value for fi/helsinki/cs/titokone/Processor::getMemoryLine to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

363

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

371

removed call to fi/helsinki/cs/titokone/Processor::reinitMemory : SURVIVED

372

removed call to fi/helsinki/cs/titokone/Registers::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable regs : SURVIVED

387

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::setMemoryLine : SURVIVED

389

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

391

removed call to fi/helsinki/cs/ttk91/TTK91AddressOutOfBounds::<init> : NO_COVERAGE

404

removed call to java/lang/Integer::<init> : NO_COVERAGE

Removed assignment to member variable kbdData : NO_COVERAGE

415

Removed assignment to member variable stdinData : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

425

Replaced constant value of 901 with 902 : SURVIVED

Removed assignment to member variable status : SURVIVED

Substituted 901 with 902 : SURVIVED

426

Substituted 0 with 1 : SURVIVED

removed call to fi/helsinki/cs/titokone/Registers::setRegister : SURVIVED

Substituted 0 with 1 : SURVIVED

Replaced constant value of 203 with 204 : SURVIVED

Substituted 203 with 204 : SURVIVED

427

Replaced constant value of 204 with 205 : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 204 with 205 : SURVIVED

Substituted 0 with 1 : SURVIVED

removed call to fi/helsinki/cs/titokone/Registers::setRegister : SURVIVED

429

Substituted 407 with 408 : SURVIVED

removed call to fi/helsinki/cs/titokone/Registers::setRegister : SURVIVED

Replaced constant value of 407 with 408 : SURVIVED

430

Substituted 408 with 409 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

Replaced constant value of 408 with 409 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Registers::setRegister : SURVIVED

432

Substituted 1 with 0 : SURVIVED

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::setCodeAreaLength : SURVIVED

Substituted 1 with 0 : SURVIVED

Replaced integer addition with subtraction : SURVIVED

433

Replaced integer subtraction with addition : SURVIVED

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::setDataAreaLength : SURVIVED

442

Replaced constant value of 902 with 903 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 902 with 903 : NO_COVERAGE

443

mutated return of Object value for fi/helsinki/cs/titokone/Processor::runLine to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

446

Replaced constant value of 903 with 904 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

447

Substituted 1 with 0 : NO_COVERAGE

Substituted 203 with 204 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 203 with 204 : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

451

removed call to fi/helsinki/cs/titokone/Processor::updateDevices : NO_COVERAGE

452

removed call to fi/helsinki/cs/titokone/Processor::checkForInterrupt : NO_COVERAGE

455

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

Substituted 203 with 204 : NO_COVERAGE

458

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getMemoryLine : NO_COVERAGE

460

removed call to fi/helsinki/cs/titokone/MemoryLine::getSymbolic : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::cycleStart : NO_COVERAGE

462

Substituted 202 with 203 : NO_COVERAGE

Replaced constant value of 202 with 203 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE

463

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 203 with 204 : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

466

removed call to fi/helsinki/cs/titokone/Instruction::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE

467

removed call to fi/helsinki/cs/titokone/Instruction::getOpcode : NO_COVERAGE

468

removed call to fi/helsinki/cs/titokone/Instruction::getRj : NO_COVERAGE

Substituted 401 with 402 : NO_COVERAGE

Replaced constant value of 401 with 402 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

469

removed call to fi/helsinki/cs/titokone/Instruction::getM : NO_COVERAGE

470

Substituted 401 with 402 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Instruction::getRi : NO_COVERAGE

Replaced constant value of 401 with 402 : NO_COVERAGE

471

removed call to fi/helsinki/cs/titokone/Instruction::getAddr : NO_COVERAGE

473

removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::runCommand : NO_COVERAGE

476

Substituted 401 with 402 : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced constant value of 401 with 402 : NO_COVERAGE

477

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

480

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

481

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

482

removed call to fi/helsinki/cs/titokone/RunDebugger::setValueAtADDR : NO_COVERAGE

484

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

485

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

486

removed call to fi/helsinki/cs/titokone/RunDebugger::setValueAtADDR : NO_COVERAGE

487

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

488

removed call to fi/helsinki/cs/titokone/RunDebugger::setSecondFetchValue : NO_COVERAGE

492

Substituted 3 with 4 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

493

Substituted 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

494

removed call to fi/helsinki/cs/ttk91/TTK91BadAccessMode::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

497

negated conditional : NO_COVERAGE

498

removed call to fi/helsinki/cs/titokone/Processor::nop : NO_COVERAGE

499

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

500

removed call to fi/helsinki/cs/titokone/Processor::transfer : NO_COVERAGE

503

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Replaced constant value of 17 with 18 : NO_COVERAGE

Substituted 28 with 29 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 17 with 18 : NO_COVERAGE

Replaced constant value of 28 with 29 : NO_COVERAGE

504

removed call to fi/helsinki/cs/titokone/Processor::alu : NO_COVERAGE

505

negated conditional : NO_COVERAGE

Substituted 31 with 32 : NO_COVERAGE

Replaced constant value of 31 with 32 : NO_COVERAGE

506

removed call to fi/helsinki/cs/titokone/Processor::comp : NO_COVERAGE

507

Replaced constant value of 44 with 45 : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced constant value of 32 with 33 : NO_COVERAGE

Substituted 32 with 33 : NO_COVERAGE

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 44 with 45 : NO_COVERAGE

508

removed call to fi/helsinki/cs/titokone/Processor::branch : NO_COVERAGE

509

negated conditional : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Replaced constant value of 49 with 50 : NO_COVERAGE

Substituted 49 with 50 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

510

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

511

Replaced constant value of 54 with 55 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 51 with 52 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Replaced constant value of 51 with 52 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 54 with 55 : NO_COVERAGE

512

removed call to fi/helsinki/cs/titokone/Processor::stack : NO_COVERAGE

513

Replaced constant value of 112 with 113 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 112 with 113 : NO_COVERAGE

514

removed call to fi/helsinki/cs/titokone/Processor::svc : NO_COVERAGE

516

Substituted 903 with 904 : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

517

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91InvalidOpCode::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

520

Replaced constant value of 903 with 904 : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

521

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91AddressOutOfBounds::<init> : NO_COVERAGE

525

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable commands_executed : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

528

Substituted 204 with 205 : NO_COVERAGE

Substituted 203 with 204 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced constant value of 204 with 205 : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

531

Substituted 8 with 9 : NO_COVERAGE

Replaced constant value of 8 with 9 : NO_COVERAGE

532

negated conditional : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

533

Replaced constant value of 401 with 402 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 401 with 402 : NO_COVERAGE

535

removed call to fi/helsinki/cs/titokone/RunDebugger::setRegisters : NO_COVERAGE

537

removed call to fi/helsinki/cs/titokone/RunDebugger::cycleEnd : NO_COVERAGE

mutated return of Object value for fi/helsinki/cs/titokone/Processor::runLine to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

543

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

550

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

556

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

564

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

565

removed call to fi/helsinki/cs/ttk91/OpCode::getOpCode : NO_COVERAGE

567

Substituted 31 with 32 : NO_COVERAGE

Substituted 26 with 27 : NO_COVERAGE

Replaced constant value of 13 with 14 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 15 with 16 : NO_COVERAGE

Replaced constant value of 24 with 25 : NO_COVERAGE

Substituted 9 with 10 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 30 with 31 : NO_COVERAGE

Substituted 34 with 35 : NO_COVERAGE

Replaced constant value of 18 with 19 : NO_COVERAGE

Replaced constant value of 16 with 17 : NO_COVERAGE

Substituted 33 with 34 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 14 with 15 : NO_COVERAGE

Replaced constant value of 19 with 20 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 33 with 34 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 11 with 12 : NO_COVERAGE

Replaced constant value of 31 with 32 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 17 with 18 : NO_COVERAGE

Substituted 18 with 19 : NO_COVERAGE

Replaced constant value of 8 with 9 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 17 with 18 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 34 with 35 : NO_COVERAGE

Replaced constant value of 9 with 10 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 32 with 33 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 21 with 22 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 29 with 30 : NO_COVERAGE

Substituted 23 with 24 : NO_COVERAGE

Substituted 8 with 9 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 14 with 15 : NO_COVERAGE

Substituted 30 with 31 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 29 with 30 : NO_COVERAGE

Substituted 22 with 23 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Replaced constant value of 27 with 28 : NO_COVERAGE

Substituted 5 with 6 : NO_COVERAGE

Replaced constant value of 25 with 26 : NO_COVERAGE

Replaced constant value of 26 with 27 : NO_COVERAGE

Replaced constant value of 23 with 24 : NO_COVERAGE

Substituted 24 with 25 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 16 with 17 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 5 with -1 : NO_COVERAGE

Substituted 20 with 21 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 25 with 26 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Replaced constant value of 15 with 16 : NO_COVERAGE

Replaced constant value of 11 with 12 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 35 with 36 : NO_COVERAGE

Replaced constant value of 12 with 13 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 28 with 29 : NO_COVERAGE

Substituted 28 with 29 : NO_COVERAGE

Substituted 35 with 36 : NO_COVERAGE

Substituted 10 with 11 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::values : NO_COVERAGE

Replaced constant value of 32 with 33 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 13 with 14 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 12 with 13 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 19 with 20 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Substituted 27 with 28 : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

Replaced constant value of 20 with 21 : NO_COVERAGE

Replaced constant value of 21 with 22 : NO_COVERAGE

Replaced constant value of 10 with 11 : NO_COVERAGE

Replaced constant value of 22 with 23 : NO_COVERAGE

569

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

570

Removed assignment to member variable status : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

571

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91BadAccessMode::<init> : NO_COVERAGE

574

negated conditional : NO_COVERAGE

575

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

577

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

578

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

583

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

588

removed call to fi/helsinki/cs/titokone/Processor::getDevice : NO_COVERAGE

589

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/IODevice::getPort : NO_COVERAGE

590

Substituted 901 with 902 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 901 with 902 : NO_COVERAGE

592

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

599

removed call to fi/helsinki/cs/titokone/Processor::getDevice : NO_COVERAGE

600

removed call to fi/helsinki/cs/titokone/IODevice::setPort : NO_COVERAGE

602

Removed assignment to member variable status : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

617

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

618

removed call to fi/helsinki/cs/ttk91/OpCode::getOpCode : NO_COVERAGE

620

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

622

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced long addition with subtraction : NO_COVERAGE

623

removed call to fi/helsinki/cs/titokone/Processor::isOverflow : NO_COVERAGE

negated conditional : NO_COVERAGE

624

Substituted 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

625

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91IntegerOverflow::<init> : NO_COVERAGE

627

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

631

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced long subtraction with addition : NO_COVERAGE

632

removed call to fi/helsinki/cs/titokone/Processor::isOverflow : NO_COVERAGE

negated conditional : NO_COVERAGE

633

Replaced constant value of 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

634

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91IntegerOverflow::<init> : NO_COVERAGE

636

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

640

Replaced long multiplication with division : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

641

removed call to fi/helsinki/cs/titokone/Processor::isOverflow : NO_COVERAGE

negated conditional : NO_COVERAGE

642

Substituted 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

643

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91IntegerOverflow::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

645

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

649

negated conditional : NO_COVERAGE

650

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

651

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91DivisionByZero::<init> : NO_COVERAGE

653

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced integer division with multiplication : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

657

negated conditional : NO_COVERAGE

658

Substituted 903 with 904 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

659

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91DivisionByZero::<init> : NO_COVERAGE

661

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced integer modulus with multiplication : NO_COVERAGE

665

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced bitwise AND with OR : NO_COVERAGE

669

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced bitwise OR with AND : NO_COVERAGE

673

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced XOR with AND : NO_COVERAGE

677

Replaced Shift Left with Shift Right : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

681

Replaced Unsigned Shift Right with Shift Left : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

685

Substituted -1 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced XOR with AND : NO_COVERAGE

689

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced Shift Right with Shift Left : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

693

removed call to fi/helsinki/cs/titokone/RunDebugger::setALUResult : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

704

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

705

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

706

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

707

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

708

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

709

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setCompareResult : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

710

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 205 with 206 : NO_COVERAGE

Replaced constant value of 205 with 206 : NO_COVERAGE

711

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

712

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

713

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

714

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

715

removed call to fi/helsinki/cs/titokone/RunDebugger::setCompareResult : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

716

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Replaced constant value of 205 with 206 : NO_COVERAGE

Substituted 205 with 206 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

718

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

719

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

720

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

721

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setCompareResult : NO_COVERAGE

722

Replaced constant value of 205 with 206 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 205 with 206 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

731

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

732

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

negated conditional : NO_COVERAGE

733

Removed assignment to member variable status : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

734

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91BadAccessMode::<init> : NO_COVERAGE

736

removed call to fi/helsinki/cs/ttk91/OpCode::getOpCode : NO_COVERAGE

737

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

739

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

743

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

744

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

749

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

negated conditional : NO_COVERAGE

750

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

755

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

756

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

761

changed conditional boundary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

negated conditional : NO_COVERAGE

762

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

767

negated conditional : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

768

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

773

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

774

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

779

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

780

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

785

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

786

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

791

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

792

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

797

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

798

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

803

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

804

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

809

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

810

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

821

Replaced constant value of 6 with 7 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

822

removed call to fi/helsinki/cs/ttk91/OpCode::getOpCode : NO_COVERAGE

823

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

825

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

826

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

828

removed call to fi/helsinki/cs/titokone/Processor::addToStack : NO_COVERAGE

832

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

833

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

835

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Removed assignment to member variable stack_size : NO_COVERAGE

839

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

840

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

841

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced constant value of 401 with 402 : NO_COVERAGE

Substituted 401 with 402 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

843

removed call to fi/helsinki/cs/titokone/Processor::addToStack : NO_COVERAGE

848

negated conditional : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

849

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Replaced constant value of 407 with 408 : NO_COVERAGE

Substituted 407 with 408 : NO_COVERAGE

850

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

852

Removed assignment to member variable stack_size : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

864

negated conditional : NO_COVERAGE

866

removed call to fi/helsinki/cs/titokone/Processor::clearInterrupt : NO_COVERAGE

867

removed call to fi/helsinki/cs/ttk91/OpCode::code : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 401 with 402 : NO_COVERAGE

Replaced constant value of 401 with 402 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

876

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Substituted 5 with 6 : NO_COVERAGE

Substituted 5 with -1 : NO_COVERAGE

878

removed call to fi/helsinki/cs/ttk91/OpCode::getOpCode : NO_COVERAGE

879

removed call to fi/helsinki/cs/ttk91/OpCode::ordinal : NO_COVERAGE

882

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

883

Substituted 203 with 204 : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

884

removed call to fi/helsinki/cs/titokone/Processor::addToStack : NO_COVERAGE

885

Replaced constant value of 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

886

removed call to fi/helsinki/cs/titokone/Processor::addToStack : NO_COVERAGE

889

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

890

Substituted 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

893

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

898

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

899

Changed increment from -1 to 1 : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

900

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable stack_size : NO_COVERAGE

901

Changed increment from -1 to 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::setNewPC : NO_COVERAGE

902

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Removed assignment to member variable stack_size : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

905

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

906

Replaced integer subtraction with addition : NO_COVERAGE

Removed assignment to member variable stack_size : NO_COVERAGE

916

removed call to fi/helsinki/cs/titokone/RunDebugger::setSVCOperation : NO_COVERAGE

920

Substituted 49 with 50 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

Replaced constant value of 49 with 50 : NO_COVERAGE

924

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

925

Substituted 902 with 903 : NO_COVERAGE

Replaced constant value of 902 with 903 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

929

negated conditional : NO_COVERAGE

930

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

931

Replaced constant value of 7 with 8 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

932

Removed assignment to member variable status : NO_COVERAGE

Substituted 903 with 904 : NO_COVERAGE

Replaced constant value of 903 with 904 : NO_COVERAGE

933

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/ttk91/TTK91NoKbdData::<init> : NO_COVERAGE

935

removed call to fi/helsinki/cs/titokone/RunDebugger::setIN : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

936

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

937

Removed assignment to member variable kbdData : NO_COVERAGE

938

Replaced constant value of 901 with 902 : NO_COVERAGE

Substituted 901 with 902 : NO_COVERAGE

Removed assignment to member variable status : NO_COVERAGE

939

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

943

Replaced integer subtraction with addition : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOUT : NO_COVERAGE

944

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

948

removed call to java/util/GregorianCalendar::<init> : NO_COVERAGE

950

Replaced constant value of 10 with 11 : NO_COVERAGE

Substituted 10 with 11 : NO_COVERAGE

removed call to java/util/Calendar::get : NO_COVERAGE

951

Substituted 12 with 13 : NO_COVERAGE

removed call to java/util/Calendar::get : NO_COVERAGE

Replaced constant value of 12 with 13 : NO_COVERAGE

952

Replaced constant value of 13 with 14 : NO_COVERAGE

Substituted 13 with 14 : NO_COVERAGE

removed call to java/util/Calendar::get : NO_COVERAGE

955

Replaced constant value of 408 with 409 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

956

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

957

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

958

Substituted 3 with 4 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 50 with 51 : NO_COVERAGE

962

removed call to java/util/GregorianCalendar::<init> : NO_COVERAGE

964

Substituted 1 with 0 : NO_COVERAGE

removed call to java/util/Calendar::get : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

965

removed call to java/util/Calendar::get : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

966

removed call to java/util/Calendar::get : NO_COVERAGE

Substituted 5 with 6 : NO_COVERAGE

Substituted 5 with -1 : NO_COVERAGE

969

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

970

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

971

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::getValue : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::getRegister : NO_COVERAGE

Substituted 408 with 409 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::writeToMemory : NO_COVERAGE

Replaced constant value of 408 with 409 : NO_COVERAGE

972

Substituted 50 with 51 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 50 with 51 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Processor::subr : NO_COVERAGE

975

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

Substituted 7 with 8 : NO_COVERAGE

Replaced constant value of 7 with 8 : NO_COVERAGE

979

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/RunDebugger::setOperationType : NO_COVERAGE

983

removed call to fi/helsinki/cs/titokone/MemoryLine::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::binaryToString : NO_COVERAGE

984

removed call to fi/helsinki/cs/titokone/RandomAccessMemory::setMemoryLine : NO_COVERAGE

985

removed call to fi/helsinki/cs/titokone/RunDebugger::addChangedMemoryLine : NO_COVERAGE

989

Substituted 203 with 204 : NO_COVERAGE

Replaced constant value of 203 with 204 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Registers::setRegister : NO_COVERAGE

990

removed call to fi/helsinki/cs/titokone/RunDebugger::setNewPC : NO_COVERAGE

997

Replaced constant value of -2147483648 with -2147483647 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted -2147483648 with -2147483647 : NO_COVERAGE

Replaced constant value of 2147483647 with 2147483648 : NO_COVERAGE

Substituted 2147483647 with 2147483648 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

1003

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Removed assignment to member variable stack_size : NO_COVERAGE

1004

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

1005

Removed assignment to member variable stack_max_size : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 0.27