aboutsummaryrefslogtreecommitdiffstats
path: root/digital
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2023-04-13 14:48:34 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2023-04-13 14:49:59 +0300
commit9d4c6fc299294ac36f7082599edce19286fa0f99 (patch)
treee7601bb1cd9950482f125377d25b6d5d40b72e62 /digital
parentafd5f32e56d3d30bfa98fb35deff51febf50e594 (diff)
Add @let directive, start pondering interrupt control
Diffstat (limited to 'digital')
-rw-r--r--digital/atk16.dig203
-rw-r--r--digital/atk16_irc.dig341
-rw-r--r--digital/atk16_mem.dig8
3 files changed, 496 insertions, 56 deletions
diff --git a/digital/atk16.dig b/digital/atk16.dig
index ca4aa6d..056fbb0 100644
--- a/digital/atk16.dig
+++ b/digital/atk16.dig
@@ -104,30 +104,6 @@
<pos x="280" y="340"/>
</visualElement>
<visualElement>
- <elementName>Driver</elementName>
- <elementAttributes>
- <entry>
- <string>Bits</string>
- <int>16</int>
- </entry>
- </elementAttributes>
- <pos x="140" y="-240"/>
- </visualElement>
- <visualElement>
- <elementName>Tunnel</elementName>
- <elementAttributes>
- <entry>
- <string>rotation</string>
- <rotation rotation="1"/>
- </entry>
- <entry>
- <string>NetName</string>
- <string>PC_OE</string>
- </entry>
- </elementAttributes>
- <pos x="140" y="-260"/>
- </visualElement>
- <visualElement>
<elementName>Tunnel</elementName>
<elementAttributes>
<entry>
@@ -258,7 +234,7 @@
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation reference="../../../../visualElement[14]/elementAttributes/entry/rotation"/>
+ <rotation reference="../../../../visualElement[12]/elementAttributes/entry/rotation"/>
</entry>
</elementAttributes>
<pos x="0" y="-180"/>
@@ -320,16 +296,6 @@
<pos x="280" y="300"/>
</visualElement>
<visualElement>
- <elementName>Probe</elementName>
- <elementAttributes>
- <entry>
- <string>Label</string>
- <string>Bus</string>
- </entry>
- </elementAttributes>
- <pos x="200" y="-280"/>
- </visualElement>
- <visualElement>
<elementName>atk16_mem.dig</elementName>
<elementAttributes/>
<pos x="580" y="-220"/>
@@ -993,7 +959,7 @@ program(0x4051, 0x40a2, 0x029b)
<elementAttributes>
<entry>
<string>rotation</string>
- <rotation reference="../../../../visualElement[77]/elementAttributes/entry/rotation"/>
+ <rotation reference="../../../../visualElement[74]/elementAttributes/entry/rotation"/>
</entry>
</elementAttributes>
<pos x="740" y="740"/>
@@ -1031,6 +997,103 @@ program(0x4051, 0x40a2, 0x029b)
<elementAttributes/>
<pos x="680" y="-380"/>
</visualElement>
+ <visualElement>
+ <elementName>atk16_irc.dig</elementName>
+ <elementAttributes/>
+ <pos x="160" y="-280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Probe</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>Bus</string>
+ </entry>
+ </elementAttributes>
+ <pos x="320" y="-320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="2"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>PC_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="160" y="-200"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Tunnel</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[4]/elementAttributes/entry/rotation"/>
+ </entry>
+ <entry>
+ <string>NetName</string>
+ <string>MAR_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="160" y="-220"/>
+ </visualElement>
+ <visualElement>
+ <elementName>DipSwitch</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>IRQ0</string>
+ </entry>
+ </elementAttributes>
+ <pos x="-160" y="-480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation rotation="1"/>
+ </entry>
+ </elementAttributes>
+ <pos x="-180" y="-460"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[85]/elementAttributes/entry/rotation"/>
+ </entry>
+ </elementAttributes>
+ <pos x="-180" y="-440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Ground</elementName>
+ <elementAttributes>
+ <entry>
+ <string>rotation</string>
+ <rotation reference="../../../../visualElement[85]/elementAttributes/entry/rotation"/>
+ </entry>
+ </elementAttributes>
+ <pos x="-180" y="-420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>1*4</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="-140" y="-480"/>
+ </visualElement>
</visualElements>
<wires>
<wire>
@@ -1070,6 +1133,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="20" y="-260"/>
</wire>
<wire>
+ <p1 x="100" y="-260"/>
+ <p2 x="160" y="-260"/>
+ </wire>
+ <wire>
<p1 x="40" y="260"/>
<p2 x="60" y="260"/>
</wire>
@@ -1111,6 +1178,10 @@ program(0x4051, 0x40a2, 0x029b)
</wire>
<wire>
<p1 x="200" y="-140"/>
+ <p2 x="300" y="-140"/>
+ </wire>
+ <wire>
+ <p1 x="300" y="-140"/>
<p2 x="480" y="-140"/>
</wire>
<wire>
@@ -1118,6 +1189,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="200" y="-140"/>
</wire>
<wire>
+ <p1 x="-180" y="-460"/>
+ <p2 x="-140" y="-460"/>
+ </wire>
+ <wire>
<p1 x="900" y="140"/>
<p2 x="920" y="140"/>
</wire>
@@ -1226,6 +1301,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="20" y="-280"/>
</wire>
<wire>
+ <p1 x="120" y="-280"/>
+ <p2 x="160" y="-280"/>
+ </wire>
+ <wire>
<p1 x="40" y="280"/>
<p2 x="60" y="280"/>
</wire>
@@ -1266,6 +1345,14 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="920" y="220"/>
</wire>
<wire>
+ <p1 x="-160" y="-480"/>
+ <p2 x="-140" y="-480"/>
+ </wire>
+ <wire>
+ <p1 x="-120" y="-480"/>
+ <p2 x="120" y="-480"/>
+ </wire>
+ <wire>
<p1 x="900" y="160"/>
<p2 x="920" y="160"/>
</wire>
@@ -1294,6 +1381,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="540" y="-100"/>
</wire>
<wire>
+ <p1 x="-180" y="-420"/>
+ <p2 x="-140" y="-420"/>
+ </wire>
+ <wire>
<p1 x="900" y="100"/>
<p2 x="920" y="100"/>
</wire>
@@ -1358,23 +1449,19 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="780" y="300"/>
</wire>
<wire>
- <p1 x="100" y="-240"/>
- <p2 x="120" y="-240"/>
- </wire>
- <wire>
<p1 x="-40" y="-240"/>
<p2 x="20" y="-240"/>
</wire>
<wire>
- <p1 x="160" y="-240"/>
- <p2 x="200" y="-240"/>
- </wire>
- <wire>
<p1 x="-280" y="-240"/>
<p2 x="-220" y="-240"/>
</wire>
<wire>
- <p1 x="200" y="-240"/>
+ <p1 x="260" y="-240"/>
+ <p2 x="300" y="-240"/>
+ </wire>
+ <wire>
+ <p1 x="300" y="-240"/>
<p2 x="400" y="-240"/>
</wire>
<wire>
@@ -1410,6 +1497,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="920" y="-120"/>
</wire>
<wire>
+ <p1 x="-180" y="-440"/>
+ <p2 x="-140" y="-440"/>
+ </wire>
+ <wire>
<p1 x="900" y="120"/>
<p2 x="920" y="120"/>
</wire>
@@ -1446,18 +1537,14 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="440" y="60"/>
</wire>
<wire>
- <p1 x="200" y="-280"/>
- <p2 x="200" y="-240"/>
+ <p1 x="300" y="-320"/>
+ <p2 x="320" y="-320"/>
</wire>
<wire>
<p1 x="200" y="-40"/>
<p2 x="200" y="80"/>
</wire>
<wire>
- <p1 x="200" y="-240"/>
- <p2 x="200" y="-140"/>
- </wire>
- <wire>
<p1 x="200" y="-140"/>
<p2 x="200" y="-80"/>
</wire>
@@ -1543,7 +1630,7 @@ program(0x4051, 0x40a2, 0x029b)
</wire>
<wire>
<p1 x="100" y="-280"/>
- <p2 x="100" y="-240"/>
+ <p2 x="100" y="-260"/>
</wire>
<wire>
<p1 x="40" y="280"/>
@@ -1558,6 +1645,14 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="620" y="-100"/>
</wire>
<wire>
+ <p1 x="300" y="-320"/>
+ <p2 x="300" y="-240"/>
+ </wire>
+ <wire>
+ <p1 x="300" y="-240"/>
+ <p2 x="300" y="-140"/>
+ </wire>
+ <wire>
<p1 x="-240" y="-340"/>
<p2 x="-240" y="-220"/>
</wire>
@@ -1582,6 +1677,10 @@ program(0x4051, 0x40a2, 0x029b)
<p2 x="440" y="60"/>
</wire>
<wire>
+ <p1 x="120" y="-480"/>
+ <p2 x="120" y="-280"/>
+ </wire>
+ <wire>
<p1 x="-60" y="-140"/>
<p2 x="-60" y="-80"/>
</wire>
diff --git a/digital/atk16_irc.dig b/digital/atk16_irc.dig
new file mode 100644
index 0000000..0037fa0
--- /dev/null
+++ b/digital/atk16_irc.dig
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="utf-8"?>
+<circuit>
+ <version>2</version>
+ <attributes>
+ <entry>
+ <string>romContent</string>
+ <romList>
+ <roms/>
+ </romList>
+ </entry>
+ <entry>
+ <string>Width</string>
+ <int>5</int>
+ </entry>
+ </attributes>
+ <visualElements>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>IRQ lines</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>IRQ</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>4</int>
+ </entry>
+ </elementAttributes>
+ <pos x="140" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>PC value</string>
+ </entry>
+ <entry>
+ <string>Label</string>
+ <string>PC</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="140" y="400"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Splitter</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Input Splitting</string>
+ <string>4</string>
+ </entry>
+ <entry>
+ <string>Output Splitting</string>
+ <string>1*4</string>
+ </entry>
+ </elementAttributes>
+ <pos x="160" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Text</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Description</string>
+ <string>Some IRQ active?</string>
+ </entry>
+ </elementAttributes>
+ <pos x="140" y="440"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>MAR_IE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="280" y="620"/>
+ </visualElement>
+ <visualElement>
+ <elementName>And</elementName>
+ <elementAttributes/>
+ <pos x="360" y="580"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Multiplexer</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="460" y="400"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Out</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>DBUS</string>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="680" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Driver</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ <entry>
+ <string>flipSelPos</string>
+ <boolean>true</boolean>
+ </entry>
+ </elementAttributes>
+ <pos x="600" y="420"/>
+ </visualElement>
+ <visualElement>
+ <elementName>In</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Label</string>
+ <string>PC_OE</string>
+ </entry>
+ </elementAttributes>
+ <pos x="580" y="540"/>
+ </visualElement>
+ <visualElement>
+ <elementName>PriorityEncoder</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>2</int>
+ </entry>
+ </elementAttributes>
+ <pos x="240" y="480"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Const</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Value</string>
+ <long>17</long>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="340" y="280"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Multiplexer</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Selector Bits</string>
+ <int>2</int>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="360" y="260"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Const</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Value</string>
+ <long>16</long>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="340" y="260"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Const</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Value</string>
+ <long>18</long>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="340" y="300"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Const</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Value</string>
+ <long>19</long>
+ </entry>
+ <entry>
+ <string>Bits</string>
+ <int>16</int>
+ </entry>
+ </elementAttributes>
+ <pos x="340" y="320"/>
+ </visualElement>
+ <visualElement>
+ <elementName>Testcase</elementName>
+ <elementAttributes>
+ <entry>
+ <string>Testdata</string>
+ <testData>
+ <dataString>IRQ PC MAR_IE PC_OE DBUS
+0b0000 0x5 0 0 Z
+0b0000 0x5 0 1 0x5
+0b0001 0x5 0 1 0x5
+0b0001 0x5 1 1 0x10
+0b0101 0x5 1 1 0x12</dataString>
+ </testData>
+ </entry>
+ </elementAttributes>
+ <pos x="640" y="240"/>
+ </visualElement>
+ </visualElements>
+ <wires>
+ <wire>
+ <p1 x="140" y="480"/>
+ <p2 x="160" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="480"/>
+ <p2 x="240" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="320" y="480"/>
+ <p2 x="380" y="480"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="320"/>
+ <p2 x="360" y="320"/>
+ </wire>
+ <wire>
+ <p1 x="620" y="420"/>
+ <p2 x="680" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="500" y="420"/>
+ <p2 x="580" y="420"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="580"/>
+ <p2 x="360" y="580"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="260"/>
+ <p2 x="360" y="260"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="520"/>
+ <p2 x="240" y="520"/>
+ </wire>
+ <wire>
+ <p1 x="280" y="620"/>
+ <p2 x="360" y="620"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="300"/>
+ <p2 x="360" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="400" y="300"/>
+ <p2 x="440" y="300"/>
+ </wire>
+ <wire>
+ <p1 x="140" y="400"/>
+ <p2 x="460" y="400"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="500"/>
+ <p2 x="240" y="500"/>
+ </wire>
+ <wire>
+ <p1 x="320" y="500"/>
+ <p2 x="340" y="500"/>
+ </wire>
+ <wire>
+ <p1 x="420" y="600"/>
+ <p2 x="480" y="600"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="280"/>
+ <p2 x="360" y="280"/>
+ </wire>
+ <wire>
+ <p1 x="440" y="440"/>
+ <p2 x="460" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="180" y="540"/>
+ <p2 x="240" y="540"/>
+ </wire>
+ <wire>
+ <p1 x="580" y="540"/>
+ <p2 x="600" y="540"/>
+ </wire>
+ <wire>
+ <p1 x="480" y="440"/>
+ <p2 x="480" y="600"/>
+ </wire>
+ <wire>
+ <p1 x="340" y="500"/>
+ <p2 x="340" y="580"/>
+ </wire>
+ <wire>
+ <p1 x="600" y="440"/>
+ <p2 x="600" y="540"/>
+ </wire>
+ <wire>
+ <p1 x="440" y="300"/>
+ <p2 x="440" y="440"/>
+ </wire>
+ <wire>
+ <p1 x="380" y="340"/>
+ <p2 x="380" y="480"/>
+ </wire>
+ </wires>
+ <measurementOrdering/>
+</circuit> \ No newline at end of file
diff --git a/digital/atk16_mem.dig b/digital/atk16_mem.dig
index 15f080d..5c56552 100644
--- a/digital/atk16_mem.dig
+++ b/digital/atk16_mem.dig
@@ -67,10 +67,10 @@
</entry>
<entry>
<string>Data</string>
- <data>6001,8000,4001,2a00,400a,9e00,1fe0,3178,1b48,6001,f000,3148,1b48
-,3150,1b48,1011,860a,3158,1b48,4200,4401,650,1280,14c0,1009,8408
-,61fa,1b49,2540,1b49,2340,1b49,2f40,51c0,10c0,1b49,2740,1b49,2540
-,1b49,2340,1b49,2f40,51c0</data>
+ <data>4014,2a00,6014,13*8000,4*15,8000,4055,f000,400a,9e00,1fe0,3178
+,1b48,6001,f000,3148,1b48,3150,1b48,1011,860a,3158,1b48,4200,4401
+,650,1280,14c0,1009,8408,61fa,1b49,2540,1b49,2340,1b49,2f40,51c0
+,10c0,1b49,2740,1b49,2540,1b49,2340,1b49,2f40,51c0</data>
</entry>
</elementAttributes>
<pos x="740" y="100"/>