示例#1
0
// Uses value in IR to determine course of action
// Returns false if errors
bool interpreter() {
  bool success = true;
  //While no error flag and no timer interrupt
  while (success && timer_interrupt < QUANTUM) {
    machine.IR = main_memory[MMU(machine.PC)];
    machine.PC++; // Increment Program Counter
    unsigned short int op = getOpcode(machine.IR);
    switch (op) {
      case 0:  success = LOD(); break;
      case 1:  success = STO(); break;
      case 2:  success = ADD(); break;
      case 3:  success = SUB(); break;
      case 4:  success = ADR(); break;
      case 5:  success = SUR(); break;
      case 6:  success = AND(); break;
      case 7:  success = IOR(); break;
      case 8:  success = NOT(); break;
      case 9:  success = JMP(); break;
      case 10: success = JEQ(); break;
      case 11: success = JGT(); break;
      case 12: success = JLT(); break;
      case 13: success = CMP(); break;
      case 14: success = CLR(); break;
      case 15:    return HLT(); break; //Quit early on HLT
      default: success = false; break;
    }
    usleep(1000000); // Sleep 1 second to allow easier instruction tracing
    (*sysclock)++;
    timer_interrupt++;
  }
  timer_interrupt = 0;
  return success;
}
示例#2
0
文件: mjam.c 项目: rivasyafri/ADT
void MasukProgram() {
	int a,b;
	scanf("%d",&a);
	
	switch (a) {
		case 1 : { 
					BacaJam(&J1);
					break;
				}
		case 2 : {
					BacaJam(&J2);
					break;
				}
		case 3 : {
					TulisJam(J1);	
					break;
				}
		case 4 : {
					TulisJam(J2);				
					break;
				}
		case 5 : { 
					
					printf("Masukkan jam pada jam 1 yang diubah : ");
					scanf("%d",&b);
					SetHH(J1,b);
					break; 
				}
		case 6 : { 
					
					printf("Masukkan menit pada jam 1 yang diubah : ");
					scanf("%d",&b);
					SetMM(J1,b);
					break; 
				}
		case 7 : { 
					
					printf("Masukkan detik pada jam 1 yang diubah : ");
					scanf("%d",&b);
					SetSS(J1,b);
					break; 
				}
		case 8 : {
					printf("Jam 1 itu %d detik\n",JamToDetik(J1));
					break;
				}
		case 9 : {
					printf("Jam 2 itu %d detik\n",JamToDetik(J2));
					break;
				}
		case 10 : {
					printf("Masukkan detik yang mau dikonvert : ");
					scanf("%d",&b);
					TulisJam(DetikToJam(b));
					break;
				}
		case 11 : {
					if (JEQ(J1,J2)) {
						printf("Ya\n");
					} else {
						printf("Tidak\n");
					}
					break;
				}
		case 12 : {
					if (JNEQ(J1,J2)) {
						printf("Ya\n");
					} else {
						printf("Tidak\n");
					}
					break;
				}
		case 13 : {
					if (JLT(J1,J2)) {
						printf("Ya\n");
					} else {
						printf("Tidak\n");
					}
					break;
				}
		case 14 : {
					if (JGT(J1,J2)) {
						printf("Ya\n");
					} else {
						printf("Tidak\n");
					}
					break;
				}
		case 15 : {
					TulisJam(JPlus(J1,J2));
					break;
				}
		case 16 : {
					TulisJam(JMinus(J1,J2));
					break;
				}
		case 17 : {
					TulisJam(NextDetik(J1));
					break;
				}
		case 18 : {
					printf("Masukkan jumlah detik yang mau ditambahkan : ");
					scanf("%d",&b);
					TulisJam(NextNDetik(J1,b));
					break;
				}
		case 19 : {
					TulisJam(PrevDetik(J1));
					break;
				}
		case 20 : {
					printf("Masukkan jumlah detik yang mau ditambahkan : ");
					scanf("%d",&b);
					TulisJam(PrevNDetik(J1,b));
					break;
				}
		case 21 : {
					printf("Durasinya adalah %d\n",Durasi(J1,J2));
					break;
				}
		case 22 : {
					keluar = true;
					break;
				}
	}
}