From 64dfa8abbdd2209d3f7164d4547f19e9935f1637 Mon Sep 17 00:00:00 2001 From: lux Date: Fri, 18 Aug 2017 16:18:36 +0200 Subject: [PATCH] Improve the output to help and add author. --- src/main.c | 9 +++++++-- src/toy.c | 33 ++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main.c b/src/main.c index 53e8795..2b5b427 100644 --- a/src/main.c +++ b/src/main.c @@ -43,7 +43,7 @@ int main(int argc, char *argv[]) if(execute(op_code,data_addr,ram)) //EXECUTE instruction, jump if ALU says pc=find_data(ram[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 printf("PROGRAM COUNTER: %" PRIu16 "\n",pc); @@ -54,7 +54,12 @@ int main(int argc, char *argv[]) { 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; diff --git a/src/toy.c b/src/toy.c index 550c781..0e99455 100644 --- a/src/toy.c +++ b/src/toy.c @@ -2,7 +2,7 @@ void print_instructionSet(void) { - printf("Boot process aborted!\n"); + printf("interpretation terminated.\n"); printf("TOY-CPU Instruction Set:\n\n"); printf("OP_Code 0 (0000b):\t STORE<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 6 (0110b):\t AND\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 9 (1001b):\t INC\n"); - printf("OP_Code 10 (1010b):\t DEC\n"); - printf("OP_Code 11 (1011b):\t ZERO\n"); - printf("OP_Code 12 (1100b):\t NOP\n"); - printf("OP_Code 13 (1101b):\t NOP\n"); - printf("OP_Code 14 (1110b):\t NOP\n"); - printf("OP_Code 15 (1111b):\t NOP\n\n"); + printf("OP_Code 8 (1000b):\t NOT\t<12 BIT undefined>\n"); + printf("OP_Code 9 (1001b):\t INC\t<12 BIT undefined>\n"); + printf("OP_Code 10 (1010b):\t DEC\t<12 BIT undefined>\n"); + printf("OP_Code 11 (1011b):\t ZERO\t<12 BIT undefined>\n"); + printf("OP_Code 12 (1100b):\t NOP\t<12 BIT undefined>\n"); + printf("OP_Code 13 (1101b):\t NOP\t<12 BIT undefined>\n"); + printf("OP_Code 14 (1110b):\t NOP\t<12 BIT undefined>\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" - "\t--------------------------------------\n" - "\t| OP-CODE |\t\tADDRESS\t |\n" - "\t--------------------------------------\n\n"); + printf("BIT\t|15 14 13 12|11 10 9 8 7 6 5 4 3 2 1 0|\n" + "\t---------------------------------------\n" + "\t| OP-CODE |\t\tADDRESS\t |\n" + "\t---------------------------------------\n\n"); printf("This machine has the following registers:\n" "16 BIT Instruction Register(4 BIT OP, 12 BIT Adr)\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). @@ -117,7 +121,6 @@ int get2compl(uint16_t value) 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; bool jump=false;