Skip to content

Commit 860341c

Browse files
committed
очень много изменений для 5 лабы
1 parent a64d198 commit 860341c

File tree

25 files changed

+1200
-813
lines changed

25 files changed

+1200
-813
lines changed

bcomp-ng-ui/src/main/java/ru/ifmo/cs/bcomp/ui/CLI.java

Lines changed: 114 additions & 78 deletions
Large diffs are not rendered by default.

bcomp-ng-ui/src/main/java/ru/ifmo/cs/bcomp/ui/Nightmare.java

Lines changed: 178 additions & 179 deletions
Large diffs are not rendered by default.

bcomp-ng-ui/src/main/java/ru/ifmo/cs/bcomp/ui/components/BasicView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public BasicView(GUI gui) {
146146
new SignalListener(new DataDestination() {
147147
@Override
148148
public void setValue(long value) {
149-
cycleview.updateProg(cpu.getProgramState(State.PROG) == 1);
149+
cycleview.updateProg(cpu.getProgramState(State.P) == 1);
150150
}
151151
}, HALT, SET_PROGRAM)
152152
});

bcomp-ng-ui/src/main/java/ru/ifmo/cs/bcomp/ui/components/ComponentManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public void run() {
317317
new SignalListener(regs.get(Reg.CR), WRCR),
318318
new SignalListener(regs.get(Reg.IP), WRIP),
319319
new SignalListener(regs.get(Reg.AC), WRAC),
320-
new SignalListener(regs.get(Reg.PS), RDPS,WRPS,SETC, SETV, STNZ, DINT, EINT, HALT,SET_PROGRAM),
320+
new SignalListener(regs.get(Reg.PS), RDPS,WRPS,SETC, SETV, STNZ, SET_EI, HALT,SET_PROGRAM),
321321
new SignalListener(regs.get(Reg.SP), WRSP),
322322
new SignalListener(regs.get(Reg.BR),WRBR)
323323

@@ -455,7 +455,7 @@ public void cmdStart() {
455455

456456
public void cmdInvertRunState() {
457457
cpu.invertRunState();
458-
long state = cpu.getProgramState(State.RUN);
458+
long state = cpu.getProgramState(State.W);
459459
rbRanStop.setSelected(state == 1);
460460
rbRanStop.setText(buttonProperties[BUTTON_RUN].texts[(int)state]);
461461
regs.get(Reg.PS).setValue();

bcomp-ng/src/main/java/ru/ifmo/cs/bcomp/BasicComp.java

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,23 @@
1010
*/
1111
public class BasicComp {
1212
private final CPU cpu;
13-
// private final IOCtrl[] ioctrls;
14-
// private final IODevTimer timer;
13+
private final IOCtrl[] ioctrls = new IOCtrl[4];
14+
private final IODevTimer timer;
1515

1616
public BasicComp() throws Exception {
1717
cpu = new CPU();
1818
cpu.startCPU();
1919

20-
/* CPU2IO cpu2io = cpu.getCPU2IO();
21-
ioctrls = new IOCtrl[] {
22-
new IOCtrl(0, IOCtrl.Direction.OUT, cpu2io),
23-
new IOCtrl(1, IOCtrl.Direction.OUT, cpu2io),
24-
new IOCtrl(2, IOCtrl.Direction.IN, cpu2io),
25-
new IOCtrl(3, IOCtrl.Direction.INOUT, cpu2io),
26-
new IOCtrl(4, IOCtrl.Direction.OUT, cpu2io),
27-
new IOCtrl(5, IOCtrl.Direction.OUT, cpu2io),
28-
new IOCtrl(6, IOCtrl.Direction.OUT, cpu2io),
29-
new IOCtrl(7, IOCtrl.Direction.IN, cpu2io),
30-
new IOCtrl(8, IOCtrl.Direction.IN, cpu2io),
31-
new IOCtrl(9, IOCtrl.Direction.INOUT, cpu2io),
32-
};
33-
timer = new IODevTimer(ioctrls[0]);*/
20+
cpu.addDestination(ControlSignal.IRQS,
21+
(ioctrls[0] = new IOCtrlBasicOutput(0, 0, cpu,
22+
(ioctrls[1] = new IOCtrlBasicOutput(2, 1, cpu,
23+
(ioctrls[2] = new IOCtrlBasicInput(4, 2, cpu,
24+
(ioctrls[3] = new IOCtrlBasicInputOutput(6, 3, cpu)).getIRQSC()
25+
)).getIRQSC()
26+
)).getIRQSC()
27+
)).getIRQSC()
28+
);
29+
timer = new IODevTimer(ioctrls[0]);
3430
}
3531

3632
public CPU getCPU() {
@@ -58,20 +54,20 @@ public void removeDestination(SignalListener[] listeners) {
5854
cpu.tickUnlock();
5955
}
6056
}
61-
62-
public void loadProgram(ProgramBinary prog) throws RuntimeException {
63-
if (cpu.isLocked())
64-
throw new RuntimeException("Операция невозможна: выполняется программа");
65-
if (!cpu.executeSetAddr(prog.load_address))
66-
throw new RuntimeException("Операция прервана: выполняется программа");
67-
for (Integer cmd : prog.binary) {
68-
if (!cpu.executeWrite(cmd))
69-
throw new RuntimeException("Операция прервана: выполняется программа");
70-
}
71-
if (!cpu.executeSetAddr(prog.start_address))
72-
throw new RuntimeException("Операция прервана: выполняется программа");
73-
}
74-
/*
57+
58+
public void loadProgram(ProgramBinary prog) throws RuntimeException {
59+
if (cpu.isLocked())
60+
throw new RuntimeException("Операция невозможна: выполняется программа");
61+
if (!cpu.executeSetAddr(prog.load_address))
62+
throw new RuntimeException("Операция прервана: выполняется программа");
63+
for (Integer cmd : prog.binary) {
64+
if (!cpu.executeWrite(cmd))
65+
throw new RuntimeException("Операция прервана: выполняется программа");
66+
}
67+
if (!cpu.executeSetAddr(prog.start_address))
68+
throw new RuntimeException("Операция прервана: выполняется программа");
69+
}
70+
7571
public IOCtrl[] getIOCtrls() {
7672
return ioctrls;
7773
}
@@ -84,6 +80,7 @@ public void stopTimer() {
8480
timer.done();
8581
}
8682

83+
/*
8784
private void ctrlDestination(ControlSignal cs, DataDestination dest, boolean remove) {
8885
int iodev;
8986
IOCtrl.ControlSignal iocs;

0 commit comments

Comments
 (0)