summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-02 22:11:02 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-02 22:11:02 +0100
commit5a76ab8976b63a7f27b244d31db0ee1ffdc53fde (patch)
tree4c46aa478452cb707b22711517d93139879fd0ba
parent4798a0ca3d2d63c451afac9d15bd0834ea83094e (diff)
[toolchain] rework some parts of the ISA (logisim)
also renamed newcpu.hpp to 64k.hpp Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
-rw-r--r--C++Kit/AsmKit/Arch/64k.hpp (renamed from C++Kit/AsmKit/Arch/NewCPU.hpp)25
-rw-r--r--CompilerDriver/cc.cxx2
-rw-r--r--CompilerDriver/ccplus.cxx2
-rw-r--r--CompilerDriver/ld.cxx6
-rw-r--r--CompilerDriver/masm.cxx2
-rw-r--r--CompilerFrontend/cl/dparse.d21
-rw-r--r--PDF/README.txt2
-rw-r--r--PDF/X64000.circ692
8 files changed, 105 insertions, 647 deletions
diff --git a/C++Kit/AsmKit/Arch/NewCPU.hpp b/C++Kit/AsmKit/Arch/64k.hpp
index 36dcbcc..4cd09d8 100644
--- a/C++Kit/AsmKit/Arch/NewCPU.hpp
+++ b/C++Kit/AsmKit/Arch/64k.hpp
@@ -11,9 +11,8 @@
#include <C++Kit/Defines.hpp>
-// @brief NewCPU backend for C++ Kit a RISC architecture.
-// It aims to be as simple as the Motorola 68k
-// @file Arch/NewCPU.hpp
+// @brief 64x0 support.
+// @file Arch/64k.hpp
#define kAsmOpcodeDecl(__NAME, __OPCODE, __FUNCT3, __FUNCT7) \
{ .fName = __NAME, .fOpcode = __OPCODE, .fFunct3 = __FUNCT3, .fFunct7 = __FUNCT7 },
@@ -42,23 +41,23 @@ inline std::vector<NCOpcode> kOpcodesStd = {
kAsmOpcodeDecl("jr", 0b1110011, 0b0001011, kAsmJump) // jump to register
kAsmOpcodeDecl("jal", 0b1110011, 0b0000001, kAsmJump)
kAsmOpcodeDecl("mv", 0b0100011, 0b101, kAsmRegToReg)
- kAsmOpcodeDecl("psh", 0b1101011, 0b0, kAsmImmediate) // push to sp
+ kAsmOpcodeDecl("psh", 0b0111011, 0b0, kAsmImmediate) // push to sp
kAsmOpcodeDecl("pop", 0b0111011, 0b1, kAsmImmediate) // pop from sp.
- kAsmOpcodeDecl("bg", 0b1100011, 0b111, kAsmRegToReg)
- kAsmOpcodeDecl("bl", 0b1101011, 0b011, kAsmRegToReg)
- kAsmOpcodeDecl("beq", 0b1101011, 0b000, kAsmRegToReg)
+ kAsmOpcodeDecl("bg", 0b1100111, 0b111, kAsmRegToReg)
+ kAsmOpcodeDecl("bl", 0b1100111, 0b011, kAsmRegToReg)
+ kAsmOpcodeDecl("beq", 0b1100111, 0b000, kAsmRegToReg)
kAsmOpcodeDecl("bne", 0b1100111, 0b001, kAsmRegToReg)
- kAsmOpcodeDecl("bge", 0b1100011, 0b101, kAsmRegToReg)
- kAsmOpcodeDecl("ble", 0b1111011, 0b100, kAsmRegToReg)
- kAsmOpcodeDecl("stw", 0b1100011, 0b100, kAsmImmediate)
- kAsmOpcodeDecl("ldw", 0b1010011, 0b100, kAsmImmediate)
+ kAsmOpcodeDecl("bge", 0b1100111, 0b101, kAsmRegToReg)
+ kAsmOpcodeDecl("ble", 0b1100111, 0b100, kAsmRegToReg)
+ kAsmOpcodeDecl("stw", 0b0001111, 0b100, kAsmImmediate)
+ kAsmOpcodeDecl("ldw", 0b0001111, 0b100, kAsmImmediate)
kAsmOpcodeDecl("lda", 0b0001111, 0b101, kAsmImmediate)
- kAsmOpcodeDecl("sta", 0b0000111, 0b001, kAsmImmediate)
+ kAsmOpcodeDecl("sta", 0b0001111, 0b001, kAsmImmediate)
kAsmOpcodeDecl("add", 0b0101011, 0b100, kAsmImmediate)
kAsmOpcodeDecl("dec", 0b0101011, 0b101, kAsmImmediate)
kAsmOpcodeDecl("scall", 0b1110011, 0b00, kAsmSyscall)
kAsmOpcodeDecl("sbreak", 0b1110011, 0b01, kAsmSyscall)
- kAsmOpcodeDecl("mh", 0b1110011, 0b011111, kAsmJump)
+ kAsmOpcodeDecl("mh", 0b1110011, 0b1111111, kAsmJump)
};
// \brief NewCPU register prefix
diff --git a/CompilerDriver/cc.cxx b/CompilerDriver/cc.cxx
index 8fc35e6..66a8294 100644
--- a/CompilerDriver/cc.cxx
+++ b/CompilerDriver/cc.cxx
@@ -13,7 +13,7 @@
#include <fstream>
#include <iostream>
#include <uuid/uuid.h>
-#include <C++Kit/AsmKit/Arch/NewCPU.hpp>
+#include <C++Kit/AsmKit/Arch/64k.hpp>
#include <C++Kit/ParserKit.hpp>
#define kOk 0
diff --git a/CompilerDriver/ccplus.cxx b/CompilerDriver/ccplus.cxx
index a6bd950..e028326 100644
--- a/CompilerDriver/ccplus.cxx
+++ b/CompilerDriver/ccplus.cxx
@@ -14,7 +14,7 @@
#include <iostream>
#include <stack>
#include <utility>
-#include <C++Kit/AsmKit/Arch/NewCPU.hpp>
+#include <C++Kit/AsmKit/Arch/64k.hpp>
#include <C++Kit/ParserKit.hpp>
#define kOk 0
diff --git a/CompilerDriver/ld.cxx b/CompilerDriver/ld.cxx
index a74e62e..664803d 100644
--- a/CompilerDriver/ld.cxx
+++ b/CompilerDriver/ld.cxx
@@ -259,7 +259,7 @@ int main(int argc, char** argv)
std::size_t cnt = ae_header.fCount;
if (kVerbose)
- kStdOut << "ld: AE: header found, record count: " << cnt << "\n";
+ kStdOut << "ld: object header found, record count: " << cnt << "\n";
pef_container.Count = cnt;
@@ -308,7 +308,7 @@ ld_mark_header:
command_header.Size = ae_records[ae_record_index].fSize;
if (kVerbose)
- kStdOut << "ld: AE: record: " << ae_records[ae_record_index].fName << " was marked.\n";
+ kStdOut << "ld: object record: " << ae_records[ae_record_index].fName << " was marked.\n";
pef_command_hdrs.emplace_back(command_header);
}
@@ -582,4 +582,4 @@ ld_continue_search:
return 0;
}
-// Last rev 28-12-23 \ No newline at end of file
+// Last rev 2-1-23 \ No newline at end of file
diff --git a/CompilerDriver/masm.cxx b/CompilerDriver/masm.cxx
index c7662a9..ed15bf3 100644
--- a/CompilerDriver/masm.cxx
+++ b/CompilerDriver/masm.cxx
@@ -18,7 +18,7 @@
/////////////////////////////////////////////////////////////////////////////////////////
-#include <C++Kit/AsmKit/Arch/NewCPU.hpp>
+#include <C++Kit/AsmKit/Arch/64k.hpp>
#include <C++Kit/ParserKit.hpp>
#include <C++Kit/StdKit/PEF.hpp>
#include <C++Kit/StdKit/AE.hpp>
diff --git a/CompilerFrontend/cl/dparse.d b/CompilerFrontend/cl/dparse.d
deleted file mode 100644
index b6537ec..0000000
--- a/CompilerFrontend/cl/dparse.d
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/*
- * ========================================================
- *
- * MP-UX C Compiler
- * Copyright WestCo, all rights reserved.
- *
- * ========================================================
- */
-
-module cl.dparse;
-
-//Parse D syntax, from a line to AST.
-
-struct ast_type
-{
- string p_keyword;
- ast_type* p_prev;
- ast_type* p_next;
-}
-
diff --git a/PDF/README.txt b/PDF/README.txt
new file mode 100644
index 0000000..7cfec4b
--- /dev/null
+++ b/PDF/README.txt
@@ -0,0 +1,2 @@
+The X64000 draft papers
+They contain thing that might appear through the next iteration of 64k. \ No newline at end of file
diff --git a/PDF/X64000.circ b/PDF/X64000.circ
index b23336d..8c3d7ec 100644
--- a/PDF/X64000.circ
+++ b/PDF/X64000.circ
@@ -90,9 +90,6 @@
<a name="width" val="16"/>
</comp>
<comp lib="1" loc="(450,480)" name="AND Gate"/>
- <comp lib="8" loc="(195,90)" name="Text">
- <a name="text" val="32k reset line"/>
- </comp>
<wire from="(320,380)" to="(320,410)"/>
<wire from="(320,410)" to="(360,410)"/>
<wire from="(350,590)" to="(500,590)"/>
@@ -587,631 +584,112 @@
<wire from="(930,460)" to="(930,530)"/>
<wire from="(930,570)" to="(930,640)"/>
</circuit>
- <circuit name="XIC">
- <a name="appearance" val="logisim_evolution"/>
- <a name="circuit" val="XIC"/>
+ <circuit name="X1101">
+ <a name="circuit" val="X1101"/>
<a name="circuitnamedboxfixedsize" val="true"/>
<a name="simulationFrequency" val="1.0"/>
- <comp lib="0" loc="(1070,1260)" name="Pin">
+ <comp lib="0" loc="(1090,1240)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1100,1020)" name="Pin">
<a name="appearance" val="classic"/>
- <a name="label" val="A16HL"/>
- <a name="output" val="true"/>
- <a name="tristate" val="true"/>
- <a name="width" val="16"/>
+ <a name="label" val="B"/>
</comp>
- <comp lib="0" loc="(110,710)" name="Constant">
- <a name="facing" val="north"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(1150,1050)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="16"/>
- <a name="incoming" val="16"/>
- </comp>
- <comp lib="0" loc="(1160,1130)" name="Splitter">
- <a name="bit1" val="0"/>
- <a name="bit10" val="0"/>
- <a name="bit11" val="0"/>
- <a name="bit12" val="0"/>
- <a name="bit13" val="0"/>
- <a name="bit14" val="0"/>
- <a name="bit15" val="0"/>
- <a name="bit16" val="1"/>
- <a name="bit17" val="1"/>
- <a name="bit18" val="1"/>
- <a name="bit19" val="1"/>
- <a name="bit2" val="0"/>
- <a name="bit20" val="1"/>
- <a name="bit21" val="1"/>
- <a name="bit22" val="1"/>
- <a name="bit23" val="1"/>
- <a name="bit24" val="1"/>
- <a name="bit25" val="1"/>
- <a name="bit26" val="1"/>
- <a name="bit27" val="1"/>
- <a name="bit28" val="1"/>
- <a name="bit29" val="1"/>
- <a name="bit3" val="0"/>
- <a name="bit30" val="1"/>
- <a name="bit31" val="1"/>
- <a name="bit4" val="0"/>
- <a name="bit5" val="0"/>
- <a name="bit6" val="0"/>
- <a name="bit7" val="0"/>
- <a name="bit8" val="0"/>
- <a name="bit9" val="0"/>
- <a name="facing" val="north"/>
- <a name="incoming" val="32"/>
+ <comp lib="0" loc="(1100,1070)" name="Pin">
+ <a name="appearance" val="classic"/>
+ <a name="label" val="B1"/>
</comp>
- <comp lib="0" loc="(1280,1240)" name="Pin">
+ <comp lib="0" loc="(1100,970)" name="Pin">
<a name="appearance" val="classic"/>
- <a name="label" val="A16H"/>
- <a name="output" val="true"/>
- <a name="tristate" val="true"/>
- <a name="width" val="16"/>
+ <a name="label" val="A"/>
</comp>
- <comp lib="0" loc="(1310,1030)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="16"/>
- <a name="incoming" val="16"/>
+ <comp lib="0" loc="(1100,990)" name="Pin">
+ <a name="appearance" val="classic"/>
+ <a name="label" val="A1"/>
</comp>
- <comp lib="0" loc="(1370,1280)" name="Pin">
+ <comp lib="0" loc="(1150,1360)" name="Pin">
<a name="appearance" val="classic"/>
- <a name="label" val="A16L"/>
+ <a name="label" val="Q"/>
<a name="output" val="true"/>
- <a name="tristate" val="true"/>
- <a name="width" val="16"/>
- </comp>
- <comp lib="0" loc="(140,790)" name="Pull Resistor">
- <a name="facing" val="north"/>
</comp>
- <comp lib="0" loc="(1470,1010)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="16"/>
- <a name="incoming" val="16"/>
- </comp>
- <comp lib="0" loc="(1480,1080)" name="Splitter">
- <a name="bit1" val="0"/>
- <a name="bit10" val="0"/>
- <a name="bit11" val="0"/>
- <a name="bit12" val="0"/>
- <a name="bit13" val="0"/>
- <a name="bit14" val="0"/>
- <a name="bit15" val="0"/>
- <a name="bit16" val="1"/>
- <a name="bit17" val="1"/>
- <a name="bit18" val="1"/>
- <a name="bit19" val="1"/>
- <a name="bit2" val="0"/>
- <a name="bit20" val="1"/>
- <a name="bit21" val="1"/>
- <a name="bit22" val="1"/>
- <a name="bit23" val="1"/>
- <a name="bit24" val="1"/>
- <a name="bit25" val="1"/>
- <a name="bit26" val="1"/>
- <a name="bit27" val="1"/>
- <a name="bit28" val="1"/>
- <a name="bit29" val="1"/>
- <a name="bit3" val="0"/>
- <a name="bit30" val="1"/>
- <a name="bit31" val="1"/>
- <a name="bit4" val="0"/>
- <a name="bit5" val="0"/>
- <a name="bit6" val="0"/>
- <a name="bit7" val="0"/>
- <a name="bit8" val="0"/>
- <a name="bit9" val="0"/>
- <a name="facing" val="north"/>
- <a name="incoming" val="32"/>
- </comp>
- <comp lib="0" loc="(1490,1200)" name="Splitter">
- <a name="bit1" val="0"/>
- <a name="bit10" val="0"/>
- <a name="bit11" val="0"/>
- <a name="bit12" val="0"/>
- <a name="bit13" val="0"/>
- <a name="bit14" val="0"/>
- <a name="bit15" val="0"/>
- <a name="bit16" val="0"/>
- <a name="bit17" val="0"/>
- <a name="bit18" val="0"/>
- <a name="bit19" val="0"/>
- <a name="bit2" val="0"/>
- <a name="bit20" val="0"/>
- <a name="bit21" val="0"/>
- <a name="bit22" val="0"/>
- <a name="bit23" val="0"/>
- <a name="bit24" val="0"/>
- <a name="bit25" val="0"/>
- <a name="bit26" val="0"/>
- <a name="bit27" val="0"/>
- <a name="bit28" val="0"/>
- <a name="bit29" val="0"/>
- <a name="bit3" val="0"/>
- <a name="bit30" val="0"/>
- <a name="bit31" val="0"/>
- <a name="bit32" val="1"/>
- <a name="bit33" val="1"/>
- <a name="bit34" val="1"/>
- <a name="bit35" val="1"/>
- <a name="bit36" val="1"/>
- <a name="bit37" val="1"/>
- <a name="bit38" val="1"/>
- <a name="bit39" val="1"/>
- <a name="bit4" val="0"/>
- <a name="bit40" val="1"/>
- <a name="bit41" val="1"/>
- <a name="bit42" val="1"/>
- <a name="bit43" val="1"/>
- <a name="bit44" val="1"/>
- <a name="bit45" val="1"/>
- <a name="bit46" val="1"/>
- <a name="bit47" val="1"/>
- <a name="bit48" val="1"/>
- <a name="bit49" val="1"/>
- <a name="bit5" val="0"/>
- <a name="bit50" val="1"/>
- <a name="bit51" val="1"/>
- <a name="bit52" val="1"/>
- <a name="bit53" val="1"/>
- <a name="bit54" val="1"/>
- <a name="bit55" val="1"/>
- <a name="bit56" val="1"/>
- <a name="bit57" val="1"/>
- <a name="bit58" val="1"/>
- <a name="bit59" val="1"/>
- <a name="bit6" val="0"/>
- <a name="bit60" val="1"/>
- <a name="bit61" val="1"/>
- <a name="bit62" val="1"/>
- <a name="bit63" val="1"/>
- <a name="bit7" val="0"/>
- <a name="bit8" val="0"/>
- <a name="bit9" val="0"/>
- <a name="facing" val="north"/>
- <a name="incoming" val="64"/>
- </comp>
- <comp lib="0" loc="(1490,1240)" name="Tunnel">
- <a name="facing" val="north"/>
- <a name="label" val="RegIn"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(190,210)" name="Constant">
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(190,320)" name="Constant">
- <a name="value" val="0x2"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(190,430)" name="Constant">
- <a name="value" val="0x4"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(190,90)" name="Constant">
- <a name="value" val="0x3"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(210,970)" name="Constant">
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(280,530)" name="Splitter">
- <a name="bit1" val="0"/>
- <a name="bit10" val="0"/>
- <a name="bit11" val="0"/>
- <a name="bit12" val="0"/>
- <a name="bit13" val="0"/>
- <a name="bit14" val="0"/>
- <a name="bit15" val="0"/>
- <a name="bit16" val="0"/>
- <a name="bit17" val="0"/>
- <a name="bit18" val="0"/>
- <a name="bit19" val="0"/>
- <a name="bit2" val="0"/>
- <a name="bit20" val="0"/>
- <a name="bit21" val="0"/>
- <a name="bit22" val="0"/>
- <a name="bit23" val="0"/>
- <a name="bit24" val="0"/>
- <a name="bit25" val="0"/>
- <a name="bit26" val="0"/>
- <a name="bit27" val="0"/>
- <a name="bit28" val="0"/>
- <a name="bit29" val="0"/>
- <a name="bit3" val="0"/>
- <a name="bit30" val="0"/>
- <a name="bit31" val="0"/>
- <a name="bit32" val="1"/>
- <a name="bit33" val="1"/>
- <a name="bit34" val="1"/>
- <a name="bit35" val="1"/>
- <a name="bit36" val="1"/>
- <a name="bit37" val="1"/>
- <a name="bit38" val="1"/>
- <a name="bit39" val="1"/>
- <a name="bit4" val="0"/>
- <a name="bit40" val="1"/>
- <a name="bit41" val="1"/>
- <a name="bit42" val="1"/>
- <a name="bit43" val="1"/>
- <a name="bit44" val="1"/>
- <a name="bit45" val="1"/>
- <a name="bit46" val="1"/>
- <a name="bit47" val="1"/>
- <a name="bit48" val="1"/>
- <a name="bit49" val="1"/>
- <a name="bit5" val="0"/>
- <a name="bit50" val="1"/>
- <a name="bit51" val="1"/>
- <a name="bit52" val="1"/>
- <a name="bit53" val="1"/>
- <a name="bit54" val="1"/>
- <a name="bit55" val="1"/>
- <a name="bit56" val="1"/>
- <a name="bit57" val="1"/>
- <a name="bit58" val="1"/>
- <a name="bit59" val="1"/>
- <a name="bit6" val="0"/>
- <a name="bit60" val="1"/>
- <a name="bit61" val="1"/>
- <a name="bit62" val="1"/>
- <a name="bit63" val="1"/>
- <a name="bit7" val="0"/>
- <a name="bit8" val="0"/>
- <a name="bit9" val="0"/>
+ <comp lib="0" loc="(1210,1040)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1230,1320)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1240,1040)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1250,1210)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1270,1040)" name="Pull Resistor"/>
+ <comp lib="0" loc="(1300,1040)" name="Pull Resistor"/>
+ <comp lib="1" loc="(1150,1250)" name="AND Gate">
<a name="facing" val="south"/>
- <a name="incoming" val="64"/>
+ <a name="size" val="30"/>
</comp>
- <comp lib="0" loc="(30,640)" name="Constant">
- <a name="facing" val="north"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(300,550)" name="Splitter">
- <a name="bit1" val="0"/>
- <a name="bit10" val="0"/>
- <a name="bit11" val="0"/>
- <a name="bit12" val="0"/>
- <a name="bit13" val="0"/>
- <a name="bit14" val="0"/>
- <a name="bit15" val="0"/>
- <a name="bit16" val="1"/>
- <a name="bit17" val="1"/>
- <a name="bit18" val="1"/>
- <a name="bit19" val="1"/>
- <a name="bit2" val="0"/>
- <a name="bit20" val="1"/>
- <a name="bit21" val="1"/>
- <a name="bit22" val="1"/>
- <a name="bit23" val="1"/>
- <a name="bit24" val="1"/>
- <a name="bit25" val="1"/>
- <a name="bit26" val="1"/>
- <a name="bit27" val="1"/>
- <a name="bit28" val="1"/>
- <a name="bit29" val="1"/>
- <a name="bit3" val="0"/>
- <a name="bit30" val="1"/>
- <a name="bit31" val="1"/>
- <a name="bit4" val="0"/>
- <a name="bit5" val="0"/>
- <a name="bit6" val="0"/>
- <a name="bit7" val="0"/>
- <a name="bit8" val="0"/>
- <a name="bit9" val="0"/>
+ <comp lib="1" loc="(1170,1310)" name="AND Gate">
<a name="facing" val="south"/>
- <a name="incoming" val="32"/>
- </comp>
- <comp lib="0" loc="(510,880)" name="Clock"/>
- <comp lib="0" loc="(520,750)" name="Constant">
- <a name="facing" val="north"/>
- <a name="value" val="0x5"/>
- <a name="width" val="3"/>
+ <a name="size" val="30"/>
</comp>
- <comp lib="0" loc="(540,800)" name="Constant">
- <a name="facing" val="north"/>
- <a name="value" val="0x5"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(600,190)" name="Tunnel">
- <a name="label" val="RO1"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(600,300)" name="Tunnel">
- <a name="label" val="RO2"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(600,410)" name="Tunnel">
- <a name="label" val="RO3"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(600,70)" name="Tunnel">
- <a name="label" val="RO1"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(80,130)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegId"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(80,190)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegIn"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(80,230)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegId"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(80,300)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegIn"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(80,340)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegId"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(80,410)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegIn"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(80,450)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegId"/>
- <a name="width" val="3"/>
- </comp>
- <comp lib="0" loc="(80,70)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="RegIn"/>
- <a name="width" val="64"/>
- </comp>
- <comp lib="0" loc="(820,940)" name="Splitter">
+ <comp lib="1" loc="(1180,1200)" name="AND Gate">
<a name="facing" val="south"/>
- <a name="fanout" val="64"/>
- <a name="incoming" val="64"/>
+ <a name="size" val="30"/>
+ </comp>
+ <wire from="(1090,1240)" to="(1090,1270)"/>
+ <wire from="(1090,1270)" to="(1150,1270)"/>
+ <wire from="(1100,1020)" to="(1140,1020)"/>
+ <wire from="(1100,1070)" to="(1160,1070)"/>
+ <wire from="(1100,970)" to="(1190,970)"/>
+ <wire from="(1100,990)" to="(1170,990)"/>
+ <wire from="(1140,1020)" to="(1140,1130)"/>
+ <wire from="(1140,1130)" to="(1140,1220)"/>
+ <wire from="(1140,1130)" to="(1300,1130)"/>
+ <wire from="(1150,1250)" to="(1150,1270)"/>
+ <wire from="(1150,1270)" to="(1160,1270)"/>
+ <wire from="(1150,1360)" to="(1170,1360)"/>
+ <wire from="(1160,1070)" to="(1160,1090)"/>
+ <wire from="(1160,1090)" to="(1160,1220)"/>
+ <wire from="(1160,1090)" to="(1270,1090)"/>
+ <wire from="(1160,1270)" to="(1160,1280)"/>
+ <wire from="(1170,1040)" to="(1170,1170)"/>
+ <wire from="(1170,1040)" to="(1210,1040)"/>
+ <wire from="(1170,1310)" to="(1170,1340)"/>
+ <wire from="(1170,1340)" to="(1170,1360)"/>
+ <wire from="(1170,1340)" to="(1230,1340)"/>
+ <wire from="(1170,990)" to="(1170,1040)"/>
+ <wire from="(1180,1200)" to="(1180,1250)"/>
+ <wire from="(1180,1250)" to="(1180,1280)"/>
+ <wire from="(1180,1250)" to="(1250,1250)"/>
+ <wire from="(1190,1060)" to="(1190,1170)"/>
+ <wire from="(1190,1060)" to="(1240,1060)"/>
+ <wire from="(1190,970)" to="(1190,1060)"/>
+ <wire from="(1230,1320)" to="(1230,1340)"/>
+ <wire from="(1240,1040)" to="(1240,1060)"/>
+ <wire from="(1250,1210)" to="(1250,1250)"/>
+ <wire from="(1270,1040)" to="(1270,1090)"/>
+ <wire from="(1300,1040)" to="(1300,1130)"/>
+ </circuit>
+ <circuit name="X1110">
+ <a name="circuit" val="X1110"/>
+ <a name="circuitnamedboxfixedsize" val="true"/>
+ <a name="simulationFrequency" val="1.0"/>
+ <comp lib="0" loc="(350,350)" name="Pin">
+ <a name="appearance" val="classic"/>
+ <a name="label" val="IssueReset"/>
</comp>
- <comp lib="0" loc="(870,1200)" name="Pin">
+ <comp lib="0" loc="(770,350)" name="Bit Extender">
+ <a name="in_width" val="16"/>
+ <a name="out_width" val="64"/>
+ </comp>
+ <comp lib="0" loc="(940,450)" name="Pin">
<a name="appearance" val="classic"/>
- <a name="label" val="A16HH"/>
+ <a name="facing" val="west"/>
+ <a name="label" val="ResetLow"/>
<a name="output" val="true"/>
- <a name="tristate" val="true"/>
- <a name="width" val="16"/>
- </comp>
- <comp lib="0" loc="(990,1110)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="16"/>
- <a name="incoming" val="16"/>
+ <a name="width" val="64"/>
</comp>
- <comp lib="3" loc="(230,860)" name="Adder">
+ <comp lib="1" loc="(890,350)" name="NOT Gate">
<a name="width" val="64"/>
</comp>
- <comp lib="4" loc="(240,630)" name="ROM">
- <a name="addrWidth" val="16"/>
- <a name="appearance" val="logisim_evolution"/>
- <a name="contents">addr/data: 16 64
-8*0 1 1 1 5*0 16*1
-</a>
- <a name="dataWidth" val="64"/>
- </comp>
- <comp lib="8" loc="(109,36)" name="Text">
- <a name="text" val="Data registers"/>
- </comp>
- <comp lib="8" loc="(1122,865)" name="Text">
- <a name="text" val="- each value must be 16-bit, otherwise UD"/>
- </comp>
- <comp lib="8" loc="(1134,840)" name="Text">
- <a name="text" val="- big endian"/>
- </comp>
- <comp lib="8" loc="(1508,982)" name="Text">
- <a name="text" val="32-bit low"/>
- </comp>
- <comp lib="8" loc="(797,167)" name="Text">
- <a name="text" val="so that we write pre-boot code"/>
- </comp>
- <comp lib="8" loc="(842,1146)" name="Text">
- <a name="text" val="32-bit high"/>
- </comp>
- <comp lib="8" loc="(952,919)" name="Text">
- <a name="text" val="this value is 64-bit wide"/>
- </comp>
- <comp lib="8" loc="(960,121)" name="Text">
- <a name="text" val="This chip has a builtin flashable rom"/>
- </comp>
- <comp loc="(280,520)" name="X64">
- <a name="label" val="R6"/>
- </comp>
- <comp loc="(490,190)" name="X64">
- <a name="label" val="R1"/>
- </comp>
- <comp loc="(490,300)" name="X64">
- <a name="label" val="R2"/>
- </comp>
- <comp loc="(490,410)" name="X64">
- <a name="label" val="R3"/>
- </comp>
- <comp loc="(490,70)" name="X64">
- <a name="label" val="R4"/>
- </comp>
- <comp loc="(760,690)" name="X64">
- <a name="label" val="R5"/>
- </comp>
- <wire from="(100,340)" to="(100,360)"/>
- <wire from="(100,360)" to="(270,360)"/>
- <wire from="(1000,1110)" to="(1000,1200)"/>
- <wire from="(1000,1110)" to="(1140,1110)"/>
- <wire from="(1000,960)" to="(1000,1030)"/>
- <wire from="(1010,1060)" to="(1010,1200)"/>
- <wire from="(1010,1060)" to="(1150,1060)"/>
- <wire from="(1010,1200)" to="(1120,1200)"/>
- <wire from="(1010,960)" to="(1010,1030)"/>
- <wire from="(1020,960)" to="(1020,1030)"/>
- <wire from="(1030,960)" to="(1030,1030)"/>
- <wire from="(1040,960)" to="(1040,1030)"/>
- <wire from="(1050,960)" to="(1050,1030)"/>
- <wire from="(1060,960)" to="(1060,1030)"/>
- <wire from="(1070,1260)" to="(1120,1260)"/>
- <wire from="(1070,960)" to="(1070,1030)"/>
- <wire from="(1080,960)" to="(1080,1030)"/>
- <wire from="(1090,960)" to="(1090,1030)"/>
- <wire from="(110,660)" to="(110,710)"/>
- <wire from="(1100,960)" to="(1100,1030)"/>
- <wire from="(1110,960)" to="(1110,1030)"/>
- <wire from="(1120,1200)" to="(1120,1260)"/>
- <wire from="(1120,960)" to="(1120,1030)"/>
- <wire from="(1130,960)" to="(1130,1030)"/>
- <wire from="(1140,960)" to="(1140,1030)"/>
- <wire from="(1150,1050)" to="(1150,1060)"/>
- <wire from="(1150,1060)" to="(1150,1110)"/>
- <wire from="(1150,960)" to="(1150,1010)"/>
- <wire from="(1160,1130)" to="(1160,1180)"/>
- <wire from="(1160,1180)" to="(1470,1180)"/>
- <wire from="(1160,960)" to="(1160,1010)"/>
- <wire from="(1170,960)" to="(1170,1010)"/>
- <wire from="(1180,960)" to="(1180,1010)"/>
- <wire from="(1190,960)" to="(1190,1010)"/>
- <wire from="(1200,960)" to="(1200,1010)"/>
- <wire from="(1210,960)" to="(1210,1010)"/>
- <wire from="(1220,960)" to="(1220,1010)"/>
- <wire from="(1230,960)" to="(1230,1010)"/>
- <wire from="(1240,960)" to="(1240,1010)"/>
- <wire from="(1250,960)" to="(1250,1010)"/>
- <wire from="(1260,960)" to="(1260,1010)"/>
- <wire from="(1270,960)" to="(1270,1010)"/>
- <wire from="(1280,1240)" to="(1310,1240)"/>
- <wire from="(1280,960)" to="(1280,1010)"/>
- <wire from="(1290,960)" to="(1290,1010)"/>
- <wire from="(1300,960)" to="(1300,1010)"/>
- <wire from="(1310,1030)" to="(1310,1060)"/>
- <wire from="(1310,1060)" to="(1310,1240)"/>
- <wire from="(1310,1060)" to="(1460,1060)"/>
- <wire from="(1310,960)" to="(1310,990)"/>
- <wire from="(1320,960)" to="(1320,990)"/>
- <wire from="(1330,960)" to="(1330,990)"/>
- <wire from="(1340,960)" to="(1340,990)"/>
- <wire from="(1350,960)" to="(1350,990)"/>
- <wire from="(1360,960)" to="(1360,990)"/>
- <wire from="(1370,1280)" to="(1380,1280)"/>
- <wire from="(1370,960)" to="(1370,990)"/>
- <wire from="(1380,1030)" to="(1380,1280)"/>
- <wire from="(1380,1030)" to="(1470,1030)"/>
- <wire from="(1380,960)" to="(1380,990)"/>
- <wire from="(1390,960)" to="(1390,990)"/>
- <wire from="(140,780)" to="(140,790)"/>
- <wire from="(140,780)" to="(300,780)"/>
- <wire from="(1400,960)" to="(1400,990)"/>
- <wire from="(1410,960)" to="(1410,990)"/>
- <wire from="(1420,960)" to="(1420,990)"/>
- <wire from="(1430,960)" to="(1430,990)"/>
- <wire from="(1440,960)" to="(1440,990)"/>
- <wire from="(1450,960)" to="(1450,990)"/>
- <wire from="(1460,960)" to="(1460,990)"/>
- <wire from="(1470,1010)" to="(1470,1030)"/>
- <wire from="(1470,1030)" to="(1470,1060)"/>
- <wire from="(1480,1080)" to="(1480,1180)"/>
- <wire from="(1490,1200)" to="(1490,1240)"/>
- <wire from="(160,870)" to="(160,940)"/>
- <wire from="(160,870)" to="(190,870)"/>
- <wire from="(160,940)" to="(220,940)"/>
- <wire from="(170,640)" to="(170,670)"/>
- <wire from="(170,670)" to="(490,670)"/>
- <wire from="(190,210)" to="(270,210)"/>
- <wire from="(190,320)" to="(270,320)"/>
- <wire from="(190,430)" to="(270,430)"/>
- <wire from="(190,90)" to="(270,90)"/>
- <wire from="(20,520)" to="(20,740)"/>
- <wire from="(20,520)" to="(60,520)"/>
- <wire from="(20,740)" to="(240,740)"/>
- <wire from="(210,970)" to="(220,970)"/>
- <wire from="(220,940)" to="(220,970)"/>
- <wire from="(230,450)" to="(230,480)"/>
- <wire from="(230,450)" to="(270,450)"/>
- <wire from="(230,480)" to="(520,480)"/>
- <wire from="(230,620)" to="(230,640)"/>
- <wire from="(230,620)" to="(320,620)"/>
- <wire from="(230,640)" to="(240,640)"/>
- <wire from="(230,860)" to="(240,860)"/>
- <wire from="(240,740)" to="(240,860)"/>
- <wire from="(250,110)" to="(250,230)"/>
- <wire from="(250,110)" to="(270,110)"/>
- <wire from="(250,230)" to="(250,340)"/>
- <wire from="(250,230)" to="(270,230)"/>
- <wire from="(250,340)" to="(250,390)"/>
- <wire from="(250,340)" to="(270,340)"/>
- <wire from="(250,390)" to="(520,390)"/>
- <wire from="(280,520)" to="(280,530)"/>
- <wire from="(280,520)" to="(350,520)"/>
- <wire from="(290,550)" to="(290,560)"/>
- <wire from="(30,540)" to="(30,640)"/>
- <wire from="(30,540)" to="(60,540)"/>
- <wire from="(300,600)" to="(300,780)"/>
- <wire from="(300,600)" to="(350,600)"/>
- <wire from="(310,570)" to="(310,580)"/>
- <wire from="(320,570)" to="(320,620)"/>
- <wire from="(350,520)" to="(350,600)"/>
- <wire from="(350,600)" to="(350,610)"/>
- <wire from="(40,580)" to="(40,660)"/>
- <wire from="(40,580)" to="(60,580)"/>
- <wire from="(40,660)" to="(110,660)"/>
- <wire from="(480,690)" to="(540,690)"/>
- <wire from="(490,190)" to="(600,190)"/>
- <wire from="(490,300)" to="(600,300)"/>
- <wire from="(490,410)" to="(600,410)"/>
- <wire from="(490,650)" to="(490,670)"/>
- <wire from="(490,650)" to="(520,650)"/>
- <wire from="(490,670)" to="(510,670)"/>
- <wire from="(490,70)" to="(600,70)"/>
- <wire from="(50,560)" to="(50,640)"/>
- <wire from="(50,560)" to="(60,560)"/>
- <wire from="(50,640)" to="(170,640)"/>
- <wire from="(510,670)" to="(510,840)"/>
- <wire from="(510,840)" to="(530,840)"/>
- <wire from="(510,880)" to="(530,880)"/>
- <wire from="(520,390)" to="(520,480)"/>
- <wire from="(520,480)" to="(520,650)"/>
- <wire from="(520,710)" to="(520,750)"/>
- <wire from="(520,710)" to="(540,710)"/>
- <wire from="(530,730)" to="(530,840)"/>
- <wire from="(530,730)" to="(540,730)"/>
- <wire from="(530,840)" to="(530,880)"/>
- <wire from="(540,750)" to="(540,800)"/>
- <wire from="(760,690)" to="(820,690)"/>
- <wire from="(80,130)" to="(270,130)"/>
- <wire from="(80,190)" to="(270,190)"/>
- <wire from="(80,230)" to="(90,230)"/>
- <wire from="(80,300)" to="(270,300)"/>
- <wire from="(80,340)" to="(100,340)"/>
- <wire from="(80,410)" to="(270,410)"/>
- <wire from="(80,450)" to="(90,450)"/>
- <wire from="(80,70)" to="(270,70)"/>
- <wire from="(820,690)" to="(820,940)"/>
- <wire from="(830,960)" to="(830,1090)"/>
- <wire from="(840,960)" to="(840,1090)"/>
- <wire from="(850,960)" to="(850,1090)"/>
- <wire from="(860,960)" to="(860,1090)"/>
- <wire from="(870,1200)" to="(1000,1200)"/>
- <wire from="(870,960)" to="(870,1090)"/>
- <wire from="(880,960)" to="(880,1090)"/>
- <wire from="(890,960)" to="(890,1090)"/>
- <wire from="(90,230)" to="(90,250)"/>
- <wire from="(90,250)" to="(270,250)"/>
- <wire from="(90,450)" to="(90,470)"/>
- <wire from="(90,470)" to="(270,470)"/>
- <wire from="(90,780)" to="(140,780)"/>
- <wire from="(90,780)" to="(90,850)"/>
- <wire from="(90,850)" to="(190,850)"/>
- <wire from="(900,960)" to="(900,1090)"/>
- <wire from="(910,960)" to="(910,1090)"/>
- <wire from="(920,960)" to="(920,1090)"/>
- <wire from="(930,960)" to="(930,1090)"/>
- <wire from="(940,960)" to="(940,1090)"/>
- <wire from="(950,960)" to="(950,1090)"/>
- <wire from="(960,960)" to="(960,1090)"/>
- <wire from="(970,960)" to="(970,1090)"/>
- <wire from="(980,960)" to="(980,1090)"/>
- <wire from="(990,1110)" to="(1000,1110)"/>
- <wire from="(990,960)" to="(990,1030)"/>
+ <comp loc="(620,350)" name="RST"/>
+ <wire from="(350,350)" to="(400,350)"/>
+ <wire from="(620,350)" to="(730,350)"/>
+ <wire from="(770,350)" to="(860,350)"/>
+ <wire from="(890,350)" to="(910,350)"/>
+ <wire from="(910,350)" to="(910,450)"/>
+ <wire from="(910,450)" to="(940,450)"/>
</circuit>
</project>