Improve the output to help and add author.
This commit is contained in:
parent
bc97f5bd79
commit
64dfa8abbd
@ -43,7 +43,7 @@ int main(int argc, char *argv[])
|
|||||||
if(execute(op_code,data_addr,ram)) //EXECUTE instruction, jump if ALU says
|
if(execute(op_code,data_addr,ram)) //EXECUTE instruction, jump if ALU says
|
||||||
pc=find_data(ram[pc]);
|
pc=find_data(ram[pc]);
|
||||||
else pc++;
|
else pc++;
|
||||||
if(pc>4095) pc = pc % 4096; //TOY can only address 12 Bit
|
if(pc>4095) pc = pc % 4096; //TOY_CPU can only address 12 Bit
|
||||||
|
|
||||||
//Handele user output
|
//Handele user output
|
||||||
printf("PROGRAM COUNTER: %" PRIu16 "\n",pc);
|
printf("PROGRAM COUNTER: %" PRIu16 "\n",pc);
|
||||||
@ -54,7 +54,12 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if(quit == 'c') makeHexDump(true,ram);
|
if(quit == 'c') makeHexDump(true,ram);
|
||||||
|
|
||||||
else if(quit == 'q') run = false;
|
else if(quit == 'q')
|
||||||
|
{
|
||||||
|
run = false;
|
||||||
|
printf("\nThis is an interpreter for the Koopman_TOY_CPU by\n"
|
||||||
|
"\tmichael.krause@uni-leipzig.de\n\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
31
src/toy.c
31
src/toy.c
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
void print_instructionSet(void)
|
void print_instructionSet(void)
|
||||||
{
|
{
|
||||||
printf("Boot process aborted!\n");
|
printf("interpretation terminated.\n");
|
||||||
printf("TOY-CPU Instruction Set:\n\n");
|
printf("TOY-CPU Instruction Set:\n\n");
|
||||||
printf("OP_Code 0 (0000b):\t STORE<12 BIT ADDRESS>\n");
|
printf("OP_Code 0 (0000b):\t STORE<12 BIT ADDRESS>\n");
|
||||||
printf("OP_Code 1 (0001b):\t LOAD\t<12 BIT ADDRESS>\n");
|
printf("OP_Code 1 (0001b):\t LOAD\t<12 BIT ADDRESS>\n");
|
||||||
@ -12,23 +12,27 @@ void print_instructionSet(void)
|
|||||||
printf("OP_Code 5 (0101b):\t OR\t<12 BIT ADDRESS>\n");
|
printf("OP_Code 5 (0101b):\t OR\t<12 BIT ADDRESS>\n");
|
||||||
printf("OP_Code 6 (0110b):\t AND\t<12 BIT ADDRESS>\n");
|
printf("OP_Code 6 (0110b):\t AND\t<12 BIT ADDRESS>\n");
|
||||||
printf("OP_Code 7 (0111b):\t XOR\t<12 BIT ADDRESS>\n");
|
printf("OP_Code 7 (0111b):\t XOR\t<12 BIT ADDRESS>\n");
|
||||||
printf("OP_Code 8 (1000b):\t NOT\n");
|
printf("OP_Code 8 (1000b):\t NOT\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 9 (1001b):\t INC\n");
|
printf("OP_Code 9 (1001b):\t INC\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 10 (1010b):\t DEC\n");
|
printf("OP_Code 10 (1010b):\t DEC\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 11 (1011b):\t ZERO\n");
|
printf("OP_Code 11 (1011b):\t ZERO\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 12 (1100b):\t NOP\n");
|
printf("OP_Code 12 (1100b):\t NOP\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 13 (1101b):\t NOP\n");
|
printf("OP_Code 13 (1101b):\t NOP\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 14 (1110b):\t NOP\n");
|
printf("OP_Code 14 (1110b):\t NOP\t<12 BIT undefined>\n");
|
||||||
printf("OP_Code 15 (1111b):\t NOP\n\n");
|
printf("OP_Code 15 (1111b):\t NOP\t<12 BIT undefined>\n\n");
|
||||||
|
|
||||||
printf("BIT\t 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n"
|
printf("BIT\t|15 14 13 12|11 10 9 8 7 6 5 4 3 2 1 0|\n"
|
||||||
"\t--------------------------------------\n"
|
"\t---------------------------------------\n"
|
||||||
"\t| OP-CODE |\t\tADDRESS\t |\n"
|
"\t| OP-CODE |\t\tADDRESS\t |\n"
|
||||||
"\t--------------------------------------\n\n");
|
"\t---------------------------------------\n\n");
|
||||||
printf("This machine has the following registers:\n"
|
printf("This machine has the following registers:\n"
|
||||||
"16 BIT Instruction Register(4 BIT OP, 12 BIT Adr)\n"
|
"16 BIT Instruction Register(4 BIT OP, 12 BIT Adr)\n"
|
||||||
"16 BIT Accumulator\n"
|
"16 BIT Accumulator\n"
|
||||||
"12 BIT Program Counter\n");
|
"12 BIT Program Counter\n\n");
|
||||||
|
printf("Example: 0001000000001010 on RAM position 0\n"
|
||||||
|
"0001 means: LOAD the content of ADDRESS 000000001010 into the ACCU\n\n");
|
||||||
|
printf("This is an interpreter for the Koopman_TOY_CPU by\n"
|
||||||
|
"\tmichael.krause@uni-leipzig.de\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
//gibt Anzahl der erfolgreich gelesenen Maschinenworte zurück(-1 im Fehlerfall).
|
//gibt Anzahl der erfolgreich gelesenen Maschinenworte zurück(-1 im Fehlerfall).
|
||||||
@ -117,7 +121,6 @@ int get2compl(uint16_t value)
|
|||||||
|
|
||||||
bool execute(uint8_t op_code, int data_addr, uint16_t *ram) // jump if true
|
bool execute(uint8_t op_code, int data_addr, uint16_t *ram) // jump if true
|
||||||
{
|
{
|
||||||
//Vorsicht: bool ops bei sigend int typs sind nach c99 undefiniert !
|
|
||||||
static uint16_t accu;
|
static uint16_t accu;
|
||||||
bool jump=false;
|
bool jump=false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user