1
0
mirror of https://github.com/wfjm/w11.git synced 2026-02-26 09:03:45 +00:00

ibdr_lp11: move valid bit to msb

This commit is contained in:
wfjm
2019-03-17 10:01:38 +01:00
parent a36531709c
commit 059d3b7f14
6 changed files with 66 additions and 20 deletions

View File

@@ -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

View File

@@ -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 <W.F.J.Mueller@gsi.de>
-- Copyright 2009-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
-- 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

View File

@@ -0,0 +1,21 @@
; $Id: defs_lp.mac 1122 2019-03-17 08:15:42Z mueller $
; Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; 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

View File

@@ -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

View File

@@ -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

View File

@@ -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 <W.F.J.Mueller@gsi.de>
#
@@ -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