diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md index b41b80fe..56596595 100644 --- a/doc/CHANGELOG.md +++ b/doc/CHANGELOG.md @@ -48,6 +48,7 @@ The full set of tests is only run for tagged releases. - rbd_rbmon: more robust ack,err trace when busy - rbd_tester: use now fifo_simple_dram - ibd_ibtst: rename dly[rw]->bsy[rw]; datto for write; add datab + - ibdr_lp11: move valid bit to msb of buf (for ibdr_lp11_buf compatibility) - sys_w11a_s3: set BTOWIDTH 7 (was 6, must be > vmbox atowidth (6)) - pdp11_sys70: instantiate ibd_ibtst (when sys_conf_ibtst = true) - ibdr_maxisys,sys_conf ready for buffered DL,PC,LP and dz11,ibtst diff --git a/rtl/ibus/ibdr_lp11.vhd b/rtl/ibus/ibdr_lp11.vhd index b3eb0f93..a0860c48 100644 --- a/rtl/ibus/ibdr_lp11.vhd +++ b/rtl/ibus/ibdr_lp11.vhd @@ -1,6 +1,6 @@ --- $Id: ibdr_lp11.vhd 984 2018-01-02 20:56:27Z mueller $ +-- $Id: ibdr_lp11.vhd 1121 2019-03-11 08:59:12Z mueller $ -- --- Copyright 2009-2013 by Walter F.J. Mueller +-- Copyright 2009-2019 by Walter F.J. Mueller -- -- This program is free software; you may redistribute and/or modify it under -- the terms of the GNU General Public License as published by the Free @@ -18,7 +18,7 @@ -- Dependencies: - -- Test bench: - -- Target Devices: generic --- Tool versions: ise 8.2-14.7; viv 2014.4; ghdl 0.18-0.31 +-- Tool versions: ise 8.2-14.7; viv 2014.4-2018.3; ghdl 0.18-0.35 -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri @@ -27,6 +27,8 @@ -- -- Revision History: -- Date Rev Version Comment +-- 2019-03-10 1121 1.3.2 ignore buf write if csr.err=1 for lp11_buf compat +-- 2019-03-03 1118 1.3.1 VAL in bit 15 and 8 for lp11_buf compat -- 2013-05-04 515 1.3 BUGFIX: r.err was cleared in racc read ! -- 2011-11-18 427 1.2.2 now numeric_std clean -- 2010-10-23 335 1.2.1 rename RRI_LAM->RB_LAM; @@ -74,7 +76,8 @@ architecture syn of ibdr_lp11 is constant csr_ibf_err : integer := 15; constant csr_ibf_done : integer := 7; constant csr_ibf_ie : integer := 6; - constant buf_ibf_val : integer := 8; + constant buf_ibf_val : integer := 15; + constant buf_ibf_val8: integer := 8; type regs_type is record -- state registers ibsel : slbit; -- ibus select @@ -160,30 +163,37 @@ begin n.intreq := '0'; end if; end if; - else -- rri + else -- rri if ibw1 = '1' then n.err := IB_MREQ.din(csr_ibf_err); + if IB_MREQ.din(csr_ibf_err) = '1' then + n.done := '1'; + n.intreq := '0'; -- clear irupt (like simh!) + end if; end if; end if; when ibaddr_buf => -- BUF -- data buffer ---------------- if IB_MREQ.racc = '0' then -- cpu if ibw0 = '1' then - n.buf := IB_MREQ.din(n.buf'range); - if r.err = '0' then -- if online (handle via rbus) - ilam := '1'; -- request attention - n.done := '0'; -- clear done - n.intreq := '0'; -- clear interrupt - else -- if offline (discard locally) - n.done := '1'; -- set done - if r.ie = '1' then -- if interrupts enabled - n.intreq := '1'; -- request interrupt - end if; - end if; - end if; - else -- rri + if r.done = '1' then -- ignore buf write when done=0 + n.buf := IB_MREQ.din(n.buf'range); + if r.err = '0' then -- if online (handle via rbus) + ilam := '1'; -- request attention + n.done := '0'; -- clear done + n.intreq := '0'; -- clear interrupt + else -- if offline (discard locally) + n.done := '1'; -- set done + if r.ie = '1' then -- if interrupts enabled + n.intreq := '1'; -- request interrupt + end if; + end if; -- r.err = '0' + end if; -- r.done = '1' + end if; -- ibw0 = '1' + else -- rri idout(r.buf'range) := r.buf; idout(buf_ibf_val) := not r.done; + idout(buf_ibf_val8) := not r.done; if ibrd = '1' then n.done := '1'; if r.ie = '1' then diff --git a/tools/asm-11/lib/defs_lp.mac b/tools/asm-11/lib/defs_lp.mac new file mode 100644 index 00000000..bef519b9 --- /dev/null +++ b/tools/asm-11/lib/defs_lp.mac @@ -0,0 +1,21 @@ +; $Id: defs_lp.mac 1122 2019-03-17 08:15:42Z mueller $ +; Copyright 2019- by Walter F.J. Mueller +; License disclaimer see License.txt in $RETROBASE directory +; +; definitions for LP11 controler (as in defs_lp.das) +; +; vector address/priority definition +; + va.lp=000200 + vp.lp=4 +; +; register addresses +; + lp.csr=177514 + lp.buf=177516 +; +; symbol definitions for lp.csr +; + lp.err=100000 + lp.don=000200 + lp.ie=000100 diff --git a/tools/oskit/hook/hook_ibmon_lpa.tcl b/tools/oskit/hook/hook_ibmon_lpa.tcl new file mode 100644 index 00000000..a465d064 --- /dev/null +++ b/tools/oskit/hook/hook_ibmon_lpa.tcl @@ -0,0 +1,7 @@ +# $Id: hook_ibmon_lpa.tcl 1122 2019-03-17 08:15:42Z mueller $ +puts "hook: start ibmon for lpa" +package require ibd_ibmon +ibd_ibmon::stop +cpu0 cp -wibr im.lolim [cpu0 imap lpa.csr] \ + -wibr im.hilim [cpu0 imap lpa.buf] +ibd_ibmon::start diff --git a/tools/oskit/hook/hook_lp11_trace.tcl b/tools/oskit/hook/hook_lp11_trace.tcl new file mode 100644 index 00000000..02837051 --- /dev/null +++ b/tools/oskit/hook/hook_lp11_trace.tcl @@ -0,0 +1,4 @@ +# $Id: hook_lp11_trace.tcl 1121 2019-03-11 08:59:12Z mueller $ +puts "hook: trace LP11 to rlc.log" +rlc set logfile rlc.log +cpu0lpa set trace 2 diff --git a/tools/tcl/rw11/defs.tcl b/tools/tcl/rw11/defs.tcl index f385956e..5cac8aa6 100644 --- a/tools/tcl/rw11/defs.tcl +++ b/tools/tcl/rw11/defs.tcl @@ -1,4 +1,4 @@ -# $Id: defs.tcl 1116 2019-03-03 08:24:07Z mueller $ +# $Id: defs.tcl 1121 2019-03-11 08:59:12Z mueller $ # # Copyright 2014-2019 by Walter F.J. Mueller # @@ -13,7 +13,7 @@ # # Revision History: # Date Rev Version Comment -# 2019-03-02 1116 1.0.7 define INIT bits +# 2019-03-10 1121 1.0.7 define INIT bits; define ANUM # 2018-09-09 1044 1.0.6 update defs kw11p, literals for KW11P_CSR(rate) # 2017-02-17 851 1.0.5 defs for auxilliary devices (kw11l,kw11p,iist) # 2016-12-30 834 1.0.4 fix typo in regmap_add for SDR's @@ -113,6 +113,9 @@ namespace eval rw11 { # rw11util::regmap_add rw11 cntrl {?? CNTRL} # + # define attn channel for W11 CPU cluster + variable ANUM 0 + # # other w11a definitions --------------------------------------------------- # # KW11-L line clock