1
0
mirror of https://github.com/wfjm/w11.git synced 2026-02-11 10:55:17 +00:00
Files
wfjm.w11/tools/tcl/ibd_deuna/util.tcl

98 lines
3.3 KiB
Tcl

# $Id: util.tcl 985 2018-01-03 08:59:40Z mueller $
#
# Copyright 2014-2017 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
# Software Foundation, either version 3, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for complete details.
#
# Revision History:
# Date Rev Version Comment
# 2017-05-06 894 1.0 Initial version (full functionality)
# 2017-04-14 874 0.5 Initial version (partial functionality)
# 2014-06-09 561 0.1 First draft
#
package provide ibd_deuna 1.0
package require rlink
package require rw11util
package require rw11
namespace eval ibd_deuna {
#
# setup register descriptions for ibd_deuna --------------------------------
#
set pcmdtxt "s:NOOP:GETPCB:GETCMD:SELFTST:START:BOOT:CU06:CU07:PDMD:CU11:CU12:CU13:CU14:CU15:CU16:STOP"
regdsc PR0 {seri 15} {pcei 14} {rxi 13} {txi 12} {dni 11} {rcbi 10} \
{usci 8} {intr 7} {inte 6} {rset 5} \
[list "pcmd" 3 4 $pcmdtxt]
regdsc PR0RR [list "pcmdbp" 15 4 $pcmdtxt] {pdmdwb 10} {busy 9} {pcwwb 8}\
{intr 7} {inte 6} {rset 5} {brst 4} \
[list "pcmd" 3 4 $pcmdtxt]
regdsc PR0RW {seri 15} {pcei 14} {rxi 13} {txi 12} {dni 11} {rcbi 10} \
{busy 9} {usci 8} {rset 5} {brst 4}
unset pcmdtxt
variable PCMD_NOOP [bvi b4 "0000"]
variable PCMD_GETPCB [bvi b4 "0001"]
variable PCMD_GETCMD [bvi b4 "0010"]
variable PCMD_SELFTST [bvi b4 "0011"]
variable PCMD_START [bvi b4 "0100"]
variable PCMD_BOOT [bvi b4 "0101"]
variable PCMD_PDMD [bvi b4 "1000"]
variable PCMD_STOP [bvi b4 "1111"]
regdsc PR1 {xpwr 15} {icab 14} {pcto 7} {deuna 4} \
{state 3 4 "s:RESET:PLOAD:READY:RUN:SU04:UHALT:NHALT:NUHALT:PHALT:SU11:SU12:SU13:SU14:SU15:SU16:SLOAD"}
variable STATE_RESET [bvi b4 "0000"]
variable STATE_PLOAD [bvi b4 "0001"]
variable STATE_READY [bvi b4 "0010"]
variable STATE_RUN [bvi b4 "0011"]
variable STATE_UHALT [bvi b4 "0101"]
variable STATE_NHALT [bvi b4 "0110"]
variable STATE_NUHALT [bvi b4 "0111"]
variable STATE_PHALT [bvi b4 "1000"]
variable STATE_SLOAD [bvi b4 "1111"]
rw11util::regmap_add ibd_deuna xu?.pr0 {l? PR0 rr PR0RR rw PR0RW}
rw11util::regmap_add ibd_deuna xu?.pr1 {?? PR1}
variable ANUM 9
#
# setup: create controller with default attributes -------------------------
#
proc setup {{cpu "cpu0"}} {
return [rw11::setup_cntl $cpu "deuna" "xua"]
}
#
# rdump: register dump - rem view ------------------------------------------
#
proc rdump {{cpu "cpu0"}} {
set rval {}
$cpu cp -ribr "xua.pr0" pr0 \
-ribr "xua.pr1" pr1 \
-ribr "xua.pr2" pr2 \
-ribr "xua.pr3" pr3
set pcbb [expr {$pr2 + ($pr3<<16) }]
append rval "Controller registers:"
append rval [format "\n pr0: %6.6o %s" $pr0 [regtxt ibd_deuna::PR0 $pr0]]
append rval [format "\n pr1: %6.6o %s" $pr1 [regtxt ibd_deuna::PR1 $pr1]]
append rval [format "\n pr2: %6.6o" $pr2]
append rval [format "\n pr3: %6.6o %s" $pr3 [format "pcbb: %7.7o" $pcbb]]
return $rval
}
}