OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/trunk
    from Rev 31 to Rev 32
    Reverse comparison

Rev 31 → Rev 32

/tools/asm-11/lib/defs_rp.mac
1,4 → 1,4
; $Id: defs_rp.mac 667 2015-04-18 20:16:05Z mueller $
; $Id: defs_rp.mac 691 2015-06-15 21:22:08Z mueller $
; Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
; License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
;
40,7 → 40,7
rp.fcl=000010 ; drive clear
rp.fse=000030 ; search
rp.fwr=000060 ; write
rp.fwr=000070 ; read
rp.frd=000070 ; read
rp.go =000001
;
; symbol definitions for rp.ds
/tools/tcl/rutil/util.tcl
1,4 → 1,4
# $Id: util.tcl 661 2015-04-03 18:28:41Z mueller $
# $Id: util.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
13,7 → 13,8
#
# Revision History:
# Date Rev Version Comment
# 2015-03-28 660 1,0,4 add com8 and com16
# 2015-06-05 688 1.0.5 add dohook
# 2015-03-28 660 1.0.4 add com8 and com16
# 2014-12-23 619 1.0.3 regget: add check for unknown field descriptor
# 2014-07-12 569 1.0.2 add sxt16 and sxt32
# 2013-05-09 517 1.0.1 add optlist2arr
240,7 → 241,7
}
 
#
# com16: 16 bit complement ------------------------------------------------
# com16: 16 bit complement -------------------------------------------------
#
proc com16 {val} {
return [expr (~$val) & 0xffff]
247,6 → 248,18
}
 
#
# dohook: source a hook script if is defined -------------------------------
#
proc dohook {name} {
set fname "${name}.tcl"
if {[file readable $fname]} {
puts "dohook: $fname"
source $fname
}
return
}
 
#
# ! export reg... procs to global scope ------------------------------------
#
 
/tools/tcl/ibd_rhrp/util.tcl
1,4 → 1,4
# $Id: util.tcl 678 2015-05-10 16:23:02Z mueller $
# $Id: util.tcl 690 2015-06-07 18:23:51Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
13,6 → 13,7
#
# Revision History:
# Date Rev Version Comment
# 2015-06-06 690 1.0.1 rdump: all online units now shown by default
# 2015-03-21 659 1.0 Initial version
#
 
54,7 → 55,8
regdsc DA {ta 12 5 2d} {sa 5 6 2d}
regdsc CS2 {wce 14} {ned 12} {nem 11} {pge 10} {or 7} {ir 6} \
{clr 5} {pat 4} {bai 3} {unit 2 3 d}
regdsc DS {ata 15} {erp 14} {mol 12} {wrl 11} {lbt 10} {dpr 8} {dry 7} {vv 6}
regdsc DS {ata 15} {erp 14} {pip 13} {mol 12} {wrl 11} {lbt 10} {dpr 8} \
{dry 7} {vv 6} {om 0}
regdsc ER1 {uns 14} {iae 10} {aoe 9} {rmr 2} {ilf 0}
regdsc AS {u3 3} {u2 2} {u1 1} {u0 0}
regdsc LA {sc 11 6 2d}
108,7 → 110,7
#
# rdump: register dump - rem view ------------------------------------------
#
proc rdump {{cpu "cpu0"} {unit 0}} {
proc rdump {{cpu "cpu0"} {unit -1}} {
set rval {}
$cpu cp -ribr "rpa.cs1" cs1 \
-ribr "rpa.wc" wc \
131,19 → 133,35
append rval [format "\n ba: %6.6o" $ba]
append rval [format "\n bae: %6.6o ea=%8.8o" $bae [expr {($bae<<16)|$ba}] ]
 
$cpu cp -wibr "rpa.cs1" [rcs1_wunit $unit] \
-ribr "rpa.da" da \
-ribr "rpa.ds" ds \
-ribr "rpa.er1" er1 \
-ribr "rpa.as" as \
-ribr "rpa.la" la \
-ribr "rpa.mr1" mr1 \
-ribr "rpa.dt" dt \
-ribr "rpa.sn" sn \
-ribr "rpa.of" of \
-ribr "rpa.dc" dc
$cpu cp -wibr "rpa.cs1" [rcs1_wunit 0] \
-ribr "rpa.ds" ds0 \
-wibr "rpa.cs1" [rcs1_wunit 1] \
-ribr "rpa.ds" ds1 \
-wibr "rpa.cs1" [rcs1_wunit 2] \
-ribr "rpa.ds" ds2 \
-wibr "rpa.cs1" [rcs1_wunit 3] \
-ribr "rpa.ds" ds3
 
append rval "\nUnit $unit registers:"
set dslist [list $ds0 $ds1 $ds2 $ds3]
 
set ulist [expr {$unit & 0x03} ]
if {$unit < 0} { set ulist {0 1 2 3} }
 
foreach u $ulist {
set ds [lindex $dslist $u]
if {$u == $unit || [regget ibd_rhrp::DS(mol) $ds] } {
$cpu cp -wibr "rpa.cs1" [rcs1_wunit $u] \
-ribr "rpa.da" da \
-ribr "rpa.er1" er1 \
-ribr "rpa.as" as \
-ribr "rpa.la" la \
-ribr "rpa.mr1" mr1 \
-ribr "rpa.dt" dt \
-ribr "rpa.sn" sn \
-ribr "rpa.of" of \
-ribr "rpa.dc" dc
 
append rval "\nUnit $u registers:"
append rval [format "\n da: %6.6o %s" $da [regtxt ibd_rhrp::DA $da ]]
append rval [format "\n ds: %6.6o %s" $ds [regtxt ibd_rhrp::DS $ds ]]
append rval [format "\n er1: %6.6o %s" $er1 [regtxt ibd_rhrp::ER1 $er1]]
160,6 → 178,13
append rval [format "\n of: %6.6o %s" $of [regtxt ibd_rhrp::OF $of ]]
append rval [format "\n dc: %6.6o dc:%s" $dc [format "%3d" $dc]]
 
} else {
append rval [format "\nUnit $u offline or disabled: mol:%d dpr:%s" \
[regget ibd_rhrp::DS(mol) $ds] \
[regget ibd_rhrp::DS(dpr) $ds] ]
}
}
 
return $rval
}
}
/tools/tbench/rhrp/test_rhrp_func_reg.tcl
1,4 → 1,4
# $Id: test_rhrp_func_reg.tcl 683 2015-05-17 21:54:35Z mueller $
# $Id: test_rhrp_func_reg.tcl 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
5,6 → 5,7
#
# Revision History:
# Date Rev Version Comment
# 2015-06-20 692 1.0.1 de-configure all drives at begin
# 2015-03-29 660 1.0 Initial version
#
# Test functions - register level
19,6 → 20,16
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# de-configure all drives (and clear errros and reset vv)
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv]
 
# configure drives
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS {dpr 1} mol] \
/tools/tbench/rhrp/test_rhrp_int.tcl
1,4 → 1,4
# $Id: test_rhrp_int.tcl 683 2015-05-17 21:54:35Z mueller $
# $Id: test_rhrp_int.tcl 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
5,6 → 5,7
#
# Revision History:
# Date Rev Version Comment
# 2015-06-20 692 1.1.1 de-configure all drives at begin
# 2015-05-04 674 1.1 w11a start/stop/suspend overhaul
# 2015-03-29 667 1.0 Initial version
#
20,6 → 21,16
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# de-configure all drives (and clear errros and reset vv)
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv]
 
# configure drives
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS {dpr 1} mol] \
/tools/tbench/rhrp/test_rhrp_int2.tcl
0,0 → 1,337
# $Id: test_rhrp_int2.tcl 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2015-05-20 692 1.0 Initial version
#
# Test interrupt response
# A:
 
# ----------------------------------------------------------------------------
rlc log "test_rhrp_int2: test interrupt response for nested xfer+seek --------"
rlc log " setup: unit 0-3: RP06(mol)"
package require ibd_rhrp
ibd_rhrp::setup
 
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# de-configure all drives (and clear errros and reset vv)
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv]
 
# configure drives
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS dpr mol] \
-wibr rpa.dt $ibd_rhrp::DTE_RP06 \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
-wibr rpa.ds [regbld ibd_rhrp::DS dpr mol] \
-wibr rpa.dt $ibd_rhrp::DTE_RP06 \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
-wibr rpa.ds [regbld ibd_rhrp::DS dpr mol] \
-wibr rpa.dt $ibd_rhrp::DTE_RP06 \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
-wibr rpa.ds [regbld ibd_rhrp::DS dpr mol] \
-wibr rpa.dt $ibd_rhrp::DTE_RP06
 
# clear errors: cs1.tre=1 via unit 0
$cpu cp -wma rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}] \
-wma rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
-wma rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_DCLR] \
-wma rpa.as [regbld ibd_rhrp::AS u3 u2 u1 u0] \
-rma rpa.ds -edata [regbld ibd_rhrp::DS dpr mol dry]
 
# do pack ack on all drives
$cpu cp -wma rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}] \
-wma rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_PACK] \
-wma rpa.cs2 [regbld ibd_rhrp::CS2 {unit 1}] \
-wma rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_PACK] \
-wma rpa.cs2 [regbld ibd_rhrp::CS2 {unit 2}] \
-wma rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_PACK] \
-wma rpa.cs2 [regbld ibd_rhrp::CS2 {unit 3}] \
-wma rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::FUNC_PACK]
 
# load test code
$cpu ldasm -lst lst -sym sym {
.include |lib/defs_cpu.mac|
.include |lib/defs_rp.mac|
;
.include |lib/vec_cpucatch.mac|
;
. = 000254 ; setup RHRP interrupt vector
v..rp: .word vh.rp
.word cp.pr7
;
. = 1000 ; data area
stack:
ibuf: .blkw <3+1+<3*3>> ; input buffer (3 for xfer; #seek; 3 per seek)
obuf: .blkw <<4*6>+<4*6>+1> ; output buffer
;
sdone: .word 0 ; seek done
idone: .word 0 ; interrupt done
apat: .word 0 ; attn pattern
;
. = 2000 ; code area
start: spl 7 ; lock out interrupts
clr sdone ; clear flags
clr idone
;
mov #obuf,r5 ; clear obuf
mov #8.,r2 ; clear 8 sections with 6 words
1$: clr (r5)+
clr (r5)+
clr (r5)+
clr (r5)+
clr (r5)+
clr (r5)+
sob r2,1$
clr (r5)+
;
mov #obuf,r5 ; setup obuf pointer
mov #ibuf,r0 ; setup regs from ibuf
clrb @#rp.cs2 ; cs2 (unit=0)
mov (r0)+,@#rp.da ; da
mov (r0)+,@#rp.dc ; dc
mov (r0)+,@#rp.cs1 ; cs1
;
mov #177000,(r5)+ ; tag: regs after xfer started
mov @#rp.cs1,(r5)+ ; cs1
mov @#rp.cs2,(r5)+ ; cs2
mov @#rp.er1,(r5)+ ; er1
mov @#rp.ds,(r5)+ ; ds
mov @#rp.as,(r5)+ ; as
;
mov #1,r2 ; next unit
mov #2,r3 ; next abit
mov (r0)+,r1 ; # of seeks
beq 30$
;
20$: movb r2,@#rp.cs2 ; cs2 (unit=i)
mov (r0)+,@#rp.da ; da
mov (r0)+,@#rp.dc ; dc
mov (r0)+,@#rp.cs1 ; cs1
;
mov r2,(r5)
add #177100,(r5)+ ; tag: regs after seek started
mov @#rp.cs1,(r5)+ ; cs1
mov @#rp.cs2,(r5)+ ; cs2
mov @#rp.er1,(r5)+ ; er1
mov @#rp.ds,(r5)+ ; ds
mov @#rp.as,(r5)+ ; as
;
bis r3,apat ; build apat
inc r2 ; next unit
asl r3 ; next abit
;
sob r1,20$
;
30$: inc sdone ; signal seeks queued
spl 0 ; allow interrupts
wpnt: wait
 
1$: tst idone ; wait for interrupt
beq 1$
mov #177777,(r5)+ ; tag: all done
halt ; halt if done
stop:
;
 
; RHRP interrupt handler
vh.rp: clrb @#rp.cs2 ; cs2 (unit=0)
mov #177200,(r5)+ ; tag: regs after seek started
mov @#rp.cs1,(r5)+ ; cs1
mov @#rp.cs2,(r5)+ ; cs2
mov @#rp.er1,(r5)+ ; er1
mov @#rp.ds,(r5)+ ; ds
mov @#rp.as,r4 ;
mov r4,(r5)+ ; as
;
mov #3,r1 ; max # of seeks
mov #1,r2 ; next unit
mov #2,r3 ; next abit
;
1$: bit r3,r4 ; bit set in as ?
beq 2$
;
movb r2,@#rp.cs2 ; cs2 (unit=i)
mov r2,(r5)
add #177300,(r5)+ ; tag: regs after seek started
mov @#rp.cs1,(r5)+ ; cs1
mov @#rp.cs2,(r5)+ ; cs2
mov @#rp.er1,(r5)+ ; er1
mov @#rp.ds,(r5)+ ; ds
mov r3,@#rp.as ; clear abit in as
mov @#rp.as,(r5)+ ; as
;
2$: inc r2 ; next unit
asl r3 ; next abit
sob r1,1$
;
inc idone
rti ; and return
}
 
##puts $lst
 
# define tmpproc for readback checks
proc tmpproc_dotest {cpu symName opts} {
upvar 1 $symName sym
 
set tout 10.; # FIXME_code: parameter ??
 
# setup defs hash, first defaults, than write over concrete run values
array set defs { i.nseek 0 \
i.idly 0
}
array set defs $opts
 
set fread [list func $ibd_rhrp::FUNC_READ]
set fsear [list func $ibd_rhrp::FUNC_SEAR]
set as 0
 
# build ibuf
set ibuf {}
lappend ibuf 01 0100 [regbld ibd_rhrp::CS1 ie $fread go]
lappend ibuf $defs(i.nseek)
for {set i 1} {$i<=$defs(i.nseek)} {incr i} {
set da [expr { 010 + $i}]
set dc [expr {0100 + $i}]
lappend ibuf $da $dc [regbld ibd_rhrp::CS1 ie $fsear go]
set as [expr {$as | [expr {01 << $i} ] } ]
}
 
# setup idly, write ibuf, setup stack, and start cpu at start:
$cpu cp -wibr rpa.cs1 [regbld ibd_rhrp::RCS1 \
[list val $defs(i.idly)] \
[list func $ibd_rhrp::RFUNC_WIDLY] ] \
-wal $sym(ibuf) \
-bwm $ibuf \
-wsp $sym(stack) \
-stapc $sym(start)
 
# here do minimal lam handling (harvest + send DONE)
# wait for interrupt
# and for sdone (all search issued flag) set
rlc wtlam $tout apat
for {set i 0} {$i<100} {incr i} {
$cpu cp -wal $sym(sdone) \
-rmi sdone
if {$sdone} {break}
}
$cpu cp -attn \
-wibr rpa.cs1 [ibd_rhrp::cs1_func $ibd_rhrp::RFUNC_DONE]
 
# wait for halt
$cpu wtcpu -reset $tout
# check context
$cpu cp -rpc -edata $sym(stop) \
-rsp -edata $sym(stack) \
-wal $sym(idone) \
-rmi -edata 1
 
# check setup xfer
set osxcs1 [regbld ibd_rhrp::CS1 dva ie $fread]
set osxcs2 [regbld ibd_rhrp::CS2 or ir]
set osxds [regbld ibd_rhrp::DS mol dpr vv]
$cpu cp -wal $sym(obuf) \
-rmi -edata 0177000 \
-rmi -edata $osxcs1 \
-rmi -edata $osxcs2 \
-rmi -edata 0 \
-rmi -edata $osxds \
-rmi -edata 0
 
# check setup search
set mskcs1sc [rutil::com16 [regbld ibd_rhrp::CS1 sc]]
for {set i 1} {$i<=$defs(i.nseek)} {incr i} {
set osscs1 [regbld ibd_rhrp::CS1 dva ie $fsear]
set osscs2 [regbld ibd_rhrp::CS2 or ir [list unit $i]]
set ossds [regbld ibd_rhrp::DS pip mol dpr vv]
$cpu cp -rmi -edata [expr {0177100 + $i}] \
-rmi -edata $osscs1 $mskcs1sc\
-rmi -edata $osscs2 \
-rmi -edata 0 \
-rmi -edata $ossds \
-rmi
}
 
# check interrupt xfer
set sc [expr {$defs(i.nseek) > 0}]
set oixcs1 [regbld ibd_rhrp::CS1 [list sc $sc] dva rdy $fread]
set oixcs2 [regbld ibd_rhrp::CS2 or ir]
set oixds [regbld ibd_rhrp::DS mol dpr dry vv]
set oixas $as
$cpu cp -rmi -edata 0177200 \
-rmi -edata $oixcs1 \
-rmi -edata $oixcs2 \
-rmi -edata 0 \
-rmi -edata $oixds \
-rmi -edata $oixas
 
# check interrupt search
set oisas $as
for {set i 1} {$i<=$defs(i.nseek)} {incr i} {
set oiscs1 [regbld ibd_rhrp::CS1 [list sc $sc] dva rdy $fsear]
set oiscs2 [regbld ibd_rhrp::CS2 or ir [list unit $i]]
set oisds [regbld ibd_rhrp::DS ata mol dpr dry vv]
set oisas [expr {$oisas & [expr {~(01<<$i)} ] }]
$cpu cp -rmi -edata [expr {0177300 + $i}] \
-rmi -edata $oiscs1 \
-rmi -edata $oiscs2 \
-rmi -edata 0 \
-rmi -edata $oisds \
-rmi -edata $oisas
}
 
# ckeck end tag
$cpu cp -rmi -edata 0177777
 
return ""
}
 
# discard pending attn to be on save side
rlc wtlam 0.
rlc exec -attn
 
rlc log " A1: test without search -----------------------------------"
 
set opts [list \
i.nseek 0 \
i.idly 0
]
tmpproc_dotest $cpu sym $opts
 
rlc log " A2: test with 1 search ------------------------------------"
 
set opts [list \
i.nseek 1 \
i.idly 10
]
tmpproc_dotest $cpu sym $opts
 
rlc log " A2: test with 2 search ------------------------------------"
 
set opts [list \
i.nseek 2 \
i.idly 10
]
tmpproc_dotest $cpu sym $opts
 
rlc log " A2: test with 3 search ------------------------------------"
 
set opts [list \
i.nseek 3 \
i.idly 10
]
tmpproc_dotest $cpu sym $opts
 
/tools/tbench/rhrp/rhrp_all.dat
1,4 → 1,4
# $Id: rhrp_all.dat 683 2015-05-17 21:54:35Z mueller $
# $Id: rhrp_all.dat 692 2015-06-21 11:53:24Z mueller $
#
## steering file for all rhrp tests
#
6,3 → 6,4
test_rhrp_regs.tcl
test_rhrp_func_reg.tcl
test_rhrp_int.tcl
test_rhrp_int2.tcl
/tools/tbench/rhrp/test_rhrp_regs.tcl
1,4 → 1,4
# $Id: test_rhrp_regs.tcl 683 2015-05-17 21:54:35Z mueller $
# $Id: test_rhrp_regs.tcl 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
5,6 → 5,7
#
# Revision History:
# Date Rev Version Comment
# 2015-06-20 692 1.0.1 de-configure all drives at begin
# 2015-03-29 660 1.0 Initial version
#
# Test register response
24,6 → 25,16
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# de-configure all drives (and clear errros and reset vv)
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 1] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 2] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv] \
-wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 3] \
-wibr rpa.ds [regbld ibd_rhrp::DS erp vv]
 
# configure drives
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
-wibr rpa.ds [regbld ibd_rhrp::DS {dpr 1}] \
/tools/src/librw11/Rw11CntlTM11.hpp
1,4 → 1,4
// $Id: Rw11CntlTM11.hpp 686 2015-06-04 21:08:08Z mueller $
// $Id: Rw11CntlTM11.hpp 690 2015-06-07 18:23:51Z mueller $
//
// Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
//
20,7 → 20,7
 
/*!
\file
\version $Id: Rw11CntlTM11.hpp 686 2015-06-04 21:08:08Z mueller $
\version $Id: Rw11CntlTM11.hpp 690 2015-06-07 18:23:51Z mueller $
\brief Declaration of class Rw11CntlTM11.
*/
 
76,7 → 76,7
static const uint16_t kTMSR_M_EOT = kWBit10; //!< EOT: end-of-tape seen
static const uint16_t kTMSR_M_RLE = kWBit09; //!< RLE: record lgth error
static const uint16_t kTMSR_M_BTE = kWBit08; //!< BTE: bad tape error
static const uint16_t kTMSR_M_NXM = kWBit07; //!< NXM: non-existant mem
static const uint16_t kTMSR_M_NXM = kWBit07; //!< NXM: non-existent mem
static const uint16_t kTMSR_M_ONL = kWBit06; //!< ONL: online
static const uint16_t kTMSR_M_BOT = kWBit05; //!< BOT: at begin-of-tape
static const uint16_t kTMSR_M_WRL = kWBit02; //!< WRL: write locked
/tools/src/librw11/Rw11CntlTM11.cpp
1,4 → 1,4
// $Id: Rw11CntlTM11.cpp 686 2015-06-04 21:08:08Z mueller $
// $Id: Rw11CntlTM11.cpp 690 2015-06-07 18:23:51Z mueller $
//
// Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
// Other credits:
15,6 → 15,7
//
// Revision History:
// Date Rev Version Comment
// 2015-06-06 690 1.0.1 BUGFIX: AddFastExit() check for Virt() defined
// 2015-06-04 686 1.0 Initial version
// 2015-05-17 683 0.1 First draft
// ---------------------------------------------------------------------------
21,7 → 22,7
 
/*!
\file
\version $Id: Rw11CntlTM11.cpp 686 2015-06-04 21:08:08Z mueller $
\version $Id: Rw11CntlTM11.cpp 690 2015-06-07 18:23:51Z mueller $
\brief Implemenation of Rw11CntlTM11.
*/
 
239,20 → 240,20
0046524, // boot_start: "TM"
0012706, kBOOT_START, // mov #boot_start, sp
0012700, uint16_t(unit), // mov #unit_num, r0
0012701, 0172526, // mov #172526, r1 ; mtcma
0005011, // clr (r1)
0012741, 0177777, // mov #-1, -(r1) ; mtbrc
0012701, 0172526, // mov #172526, r1 ; #tmba
0005011, // clr (r1) ; tmba = 0
0012741, 0177777, // mov #-1, -(r1) ; tmbc = -1
0010002, // mov r0,r2
0000302, // swab r2
0062702, 0060011, // add #60011, r2
0010241, // mov r2, -(r1) ; space + go
0105711, // tstb (r1) ; mtc
0010241, // mov r2, -(r1) ; tmcr = space + go
0105711, // tstb (r1) ; test tmcr.rdy
0100376, // bpl .-2
0010002, // mov r0,r2
0010002, // mov r0,r2 ; note: tmbc=0 now
0000302, // swab r2
0062702, 0060003, // add #60003, r2
0010211, // mov r2, (r1) ; read + go
0105711, // tstb (r1) ; mtc
0062702, 0060003, // add #60003, r2 ; note: tmbc still = 0!
0010211, // mov r2, (r1) ; tmcr = read + go
0105711, // tstb (r1) ; test tmcr.rdy
0100376, // bpl .-2
0005002, // clr r2
0005003, // clr r3
313,6 → 314,9
 
uint32_t addr = uint32_t(ea)<<16 | uint32_t(tmba);
 
// Note: a zero tmbc translates into nbyt=64k !
// correct behaviour, the boot loaded actually issues a read
// with tmbc=0 to read the boot block into memory !!
uint32_t nbyt = (~uint32_t(tmbc)&0xffff) + 1; // transfer size in bytes
 
//Rw11Cpu& cpu = Cpu();
503,11 → 507,17
Rw11Cpu& cpu = Cpu();
 
uint16_t tmcr = 0;
uint16_t tmds = kTMRL_M_ONL;
if (unit.Virt()->WProt()) tmds |= kTMRL_M_WRL;
if (unit.Virt()->Bot()) tmds |= kTMRL_M_BOT;
if (unit.Virt()->Eot()) tmds |= kTMRL_M_EOT;
uint16_t tmds = 0;
 
// AddFastExit() is also called after UNLOAD, which calls unit.Detach()
// So unlike in all other cases, Virt() may be 0, so check on this
if (unit.Virt()) {
tmds |= kTMRL_M_ONL;
if (unit.Virt()->WProt()) tmds |= kTMRL_M_WRL;
if (unit.Virt()->Bot()) tmds |= kTMRL_M_BOT;
if (unit.Virt()->Eot()) tmds |= kTMRL_M_EOT;
}
switch (opcode) {
 
case Rw11VirtTape::kOpCodeOK:
540,8 → 550,9
<< (err ? " err " :" ok ")
<< " un=" << unum
<< " cr=" << RosPrintBvi(tmcr,8)
<< " ds=" << RosPrintBvi(tmds,8)
<< " bc=" << RosPrintBvi(tmbc,8);
<< " "
<< " bc=" << RosPrintBvi(tmbc,8)
<< " ds=" << RosPrintBvi(tmds,8);
}
 
return;
/tools/bin/create_disk
1,5 → 1,5
#!/usr/bin/perl -w
# $Id: create_disk 686 2015-06-04 21:08:08Z mueller $
# $Id: create_disk 692 2015-06-21 11:53:24Z mueller $
#
# Copyright 2013-2014 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
14,7 → 14,7
#
# Revision History:
# Date Rev Version Comment
# 2015-06-04 686 1.1.2 use sysseek rather seek; add RM80
# 2015-06-21 692 1.1.2 use sysseek rather seek; add RM80
# 2015-04-06 665 1.1.1 add alias RM03 (for RM02) and RP05 (for RP04)
# 2014-06-14 562 1.1 BUGFIX: repair --boot; add RM02,RM05,RP04,RP07
# 2013-05-20 521 1.0 First draft
43,10 → 43,10
RK05 => {cyl=> 203, hd=> 2, sec=> 12, bps=> 512, bad=>0},
RL01 => {cyl=> 256, hd=> 2, sec=> 40, bps=> 256, bad=>1},
RL02 => {cyl=> 512, hd=> 2, sec=> 40, bps=> 256, bad=>1},
RM02 => {cyl=> 823, hd=> 5, sec=> 32, bps=> 512, bad=>1},
RM03 => {cyl=> 823, hd=> 5, sec=> 32, bps=> 512, bad=>1},
RM05 => {cyl=> 823, hd=> 19, sec=> 32, bps=> 512, bad=>1},
RM80 => {cyl=> 559, hd=> 14, sec=> 31, bps=> 512, bad=>1},
RP04 => {cyl=> 411, hd=> 19, sec=> 22, bps=> 512, bad=>1},
RP05 => {cyl=> 411, hd=> 19, sec=> 22, bps=> 512, bad=>1},
RP06 => {cyl=> 815, hd=> 19, sec=> 22, bps=> 512, bad=>1},
RP07 => {cyl=> 630, hd=> 32, sec=> 50, bps=> 512, bad=>1}
);
73,8 → 73,8
 
my $typ = uc($opts{typ});
 
$typ = "RM02" if defined $typ && $typ eq "RM03"; # RM03 is equivalent to RM02
$typ = "RP04" if defined $typ && $typ eq "RP05"; # RM05 is equivalent to RP04
$typ = "RM03" if defined $typ && $typ eq "RM02"; # RM02 is equivalent to RM03
$typ = "RP05" if defined $typ && $typ eq "RP04"; # RM04 is equivalent to RP05
 
unless (defined $typ && exists $disktype{$typ}) {
print STDERR "create_disk-E: no or invalid --typ specification, use --help\n";
128,7 → 128,7
push @dat, 0xdead,0xbeaf if $ini eq 'dead';
}
my $buf = pack('v*',@dat);
my $rc = $fh->seek(0, SEEK_SET);
my $rc = sysseek($fh, 0, SEEK_SET);
if (not $rc) {die "seek failed: $!";}
for (my $i=0; $i<$nblk; $i++) {
$rc = syswrite($fh, $buf, length($buf));
140,7 → 140,7
my $cur_sec = 0;
my $cur_trk = 0;
my $cur_cyl = 0;
my $rc = $fh->seek(0, SEEK_SET);
my $rc = sysseek($fh, 0, SEEK_SET);
if (not $rc) {die "seek failed: $!";}
for (my $i=0; $i<$nblk; $i++) {
my @dat;
183,7 → 183,7
my $buf = pack('v*',@dat);
 
my $pos = $cap - $sec*$bps; # position of last track
my $rc = $fh->seek($pos, SEEK_SET);
my $rc = sysseek($fh, $pos, SEEK_SET);
if (not $rc) {die "seek failed: $!";}
my $nsec = ($sec > 10) ? 10 : $sec; # write last track, at most 10 sec
for (my $i=0; $i<$nsec; $i++) {
208,7 → 208,7
push @dat, 0000000; # 3$: halt
 
my $buf = pack('v*',@dat);
my $rc = $fh->seek(0, SEEK_SET);
my $rc = sysseek($fh, 0, SEEK_SET);
if (not $rc) {die "seek failed: $!";}
$rc = syswrite($fh, $buf, length($buf));
if ($rc<=0) {die "write failed: $!";}
233,7 → 233,7
# NOTE: the text above almost fills the first 512 bytes !!
# don't add more text, all has been said anyway !!
 
$rc = $fh->seek(0100, SEEK_SET);
$rc = sysseek($fh ,0100, SEEK_SET);
if (not $rc) {die "seek failed: $!";}
$rc = syswrite($fh, $buf, length($buf));
if ($rc<=0) {die "write failed: $!";}
268,8 → 268,8
}
 
print "\n";
print " RM03 is accepted as an alias for RM02 (same capacity)\n";
print " RP05 is accepted as an alias for RP04 (same capacity)\n";
print " RM02 is accepted as an alias for RM03 (same capacity)\n";
print " RP04 is accepted as an alias for RP05 (same capacity)\n";
 
print "\n";
print "currently supported initialization patterns:\n";
/tools/oskit/xxdp_rl/xxdp22_rl_boot.tcl
1,4 → 1,4
# $Id: xxdp22_rl_boot.tcl 654 2015-03-01 18:45:38Z mueller $
# $Id: xxdp22_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Setup file for XXDP V2.2 RL02 based system
#
9,6 → 9,7
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS)
20,6 → 21,7
cpu0rla0 att xxdp22.dsk
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot rla0
/tools/oskit/xxdp_rl/xxdp25_rl_boot.tcl
1,4 → 1,4
# $Id: xxdp25_rl_boot.tcl 654 2015-03-01 18:45:38Z mueller $
# $Id: xxdp25_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Setup file for XXDP V2.5 RL02 based system
#
9,6 → 9,7
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS)
20,6 → 21,7
cpu0rla0 att xxdp25.dsk
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot rla0
/tools/oskit/xxdp_rl/.cvsignore
2,3 → 2,4
*.dat
*.dsk
*.log
*hook.tcl
tools/oskit/xxdp_rl Property changes : Modified: svn:ignore ## -35,3 +35,4 ## *.dat *.dsk *.log +*hook.tcl Index: tools/oskit/hook_ibmon_rka.tcl =================================================================== --- tools/oskit/hook_ibmon_rka.tcl (nonexistent) +++ tools/oskit/hook_ibmon_rka.tcl (revision 32) @@ -0,0 +1,8 @@ +# $Id: hook_ibmon_rka.tcl 690 2015-06-07 18:23:51Z mueller $ +puts "hook: start ibmon for rka" +package require ibd_ibmon +ibd_ibmon::setup +ibd_ibmon::stop +cpu0 cp -wibr im.lolim [cpu0 imap rka.ds] \ + -wibr im.hilim [cpu0 imap rka.mr] +ibd_ibmon::start Index: tools/oskit/rt11-40_rk/rt11-40_rk_boot.tcl =================================================================== --- tools/oskit/rt11-40_rk/rt11-40_rk_boot.tcl (revision 31) +++ tools/oskit/rt11-40_rk/rt11-40_rk_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: rt11-40_rk_boot.tcl 622 2014-12-28 20:45:26Z mueller $ +# $Id: rt11-40_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for RT-11 V4.0 RK05 based system # @@ -9,6 +9,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) @@ -20,6 +21,7 @@ cpu0rka0 att rtv4_rk.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rka0
/tools/oskit/rt11-40_rk/.cvsignore
1,4 → 1,5
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
tools/oskit/rt11-40_rk Property changes : Modified: svn:ignore ## -34,4 +34,5 ## *.dat *.dsk *.log +*hook.tcl *license.txt Index: tools/oskit/hook_ibmon_tma.tcl =================================================================== --- tools/oskit/hook_ibmon_tma.tcl (nonexistent) +++ tools/oskit/hook_ibmon_tma.tcl (revision 32) @@ -0,0 +1,8 @@ +# $Id: hook_ibmon_tma.tcl 689 2015-06-05 14:33:18Z mueller $ +puts "hook: start ibmon for tma" +package require ibd_ibmon +ibd_ibmon::setup +ibd_ibmon::stop +cpu0 cp -wibr im.lolim [cpu0 imap tma.sr] \ + -wibr im.hilim [cpu0 imap tma.rl] +ibd_ibmon::start Index: tools/oskit/hook_blkdev_trace.tcl =================================================================== --- tools/oskit/hook_blkdev_trace.tcl (nonexistent) +++ tools/oskit/hook_blkdev_trace.tcl (revision 32) @@ -0,0 +1,7 @@ +# $Id: hook_blkdev_trace.tcl 689 2015-06-05 14:33:18Z mueller $ +puts "hook: trace all block devices to rlc.log" +rlc set logfile rlc.log +cpu0rka set trace 2 +cpu0rla set trace 2 +cpu0rpa set trace 2 +cpu0tma set trace 2 Index: tools/oskit/unix-v5_rk/uv5_rk_boot.tcl =================================================================== --- tools/oskit/unix-v5_rk/uv5_rk_boot.tcl (revision 31) +++ tools/oskit/unix-v5_rk/uv5_rk_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: uv5_rk_boot.tcl 622 2014-12-28 20:45:26Z mueller $ +# $Id: uv5_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for Unix V5 RK05 based system # @@ -8,6 +8,7 @@ # ti_w11 -xxx @uv5_boot.tcl ( -xxx depends on sim or fpga connect) # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp (uses only 1 console; uses parity -> use 7 bit mode) @@ -18,6 +19,7 @@ cpu0rka0 att unix_v5_rk.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rka0
/tools/oskit/unix-v5_rk/.cvsignore
1,5 → 1,6
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
*license.pdf
tools/oskit/unix-v5_rk Property changes : Modified: svn:ignore ## -34,5 +34,6 ## *.dat *.dsk *.log +*hook.tcl *license.txt *license.pdf Index: tools/oskit/hook_ibmon_rpa.tcl =================================================================== --- tools/oskit/hook_ibmon_rpa.tcl (nonexistent) +++ tools/oskit/hook_ibmon_rpa.tcl (revision 32) @@ -0,0 +1,8 @@ +# $Id: hook_ibmon_rpa.tcl 689 2015-06-05 14:33:18Z mueller $ +puts "hook: start ibmon for rpa" +package require ibd_ibmon +ibd_ibmon::setup +ibd_ibmon::stop +cpu0 cp -wibr im.lolim [cpu0 imap rpa.cs1] \ + -wibr im.hilim [cpu0 imap rpa.cs3] +ibd_ibmon::start Index: tools/oskit/211bsd_rk/README_211bsd_rkset.txt =================================================================== --- tools/oskit/211bsd_rk/README_211bsd_rkset.txt (revision 31) +++ tools/oskit/211bsd_rk/README_211bsd_rkset.txt (revision 32) @@ -1,4 +1,4 @@ -# $Id: README_211bsd_rkset.txt 680 2015-05-14 13:29:46Z mueller $ +# $Id: README_211bsd_rkset.txt 688 2015-06-05 13:15:10Z mueller $ Notes on oskit: 2.11BSD system on RK05 volumes
/tools/oskit/211bsd_rk/211bsd_rk_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rk_boot.tcl 622 2014-12-28 20:45:26Z mueller $
# $Id: 211bsd_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Setup file for 211bsd RK05 based system
#
10,6 → 10,7
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp (211bsd uses parity -> use 7 bit mode)
24,6 → 25,7
cpu0rka4 att 211bsd_rk_usr.dsk
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot rka0
/tools/oskit/211bsd_rk/.cvsignore
1,5 → 1,6
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
*license.pdf
tools/oskit/211bsd_rk Property changes : Modified: svn:ignore ## -34,5 +34,6 ## *.dat *.dsk *.log +*hook.tcl *license.txt *license.pdf Index: tools/oskit/rsx11m-31_rk/rsx11m-31_rk_boot.tcl =================================================================== --- tools/oskit/rsx11m-31_rk/rsx11m-31_rk_boot.tcl (revision 31) +++ tools/oskit/rsx11m-31_rk/rsx11m-31_rk_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: rsx11m-31_rk_boot.tcl 622 2014-12-28 20:45:26Z mueller $ +# $Id: rsx11m-31_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for RSX11-M V3.1 RK05 based system # @@ -10,6 +10,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp,pp (enable rx rate limiter on old DEC OS) @@ -23,6 +24,7 @@ cpu0rka2 att RSX11M_USER.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rka0
/tools/oskit/rsx11m-31_rk/.cvsignore
1,4 → 1,5
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
tools/oskit/rsx11m-31_rk Property changes : Modified: svn:ignore ## -34,4 +34,5 ## *.dat *.dsk *.log +*hook.tcl *license.txt Index: tools/oskit/rsx11m-40_rk/rsx11m-40_rk_boot.tcl =================================================================== --- tools/oskit/rsx11m-40_rk/rsx11m-40_rk_boot.tcl (revision 31) +++ tools/oskit/rsx11m-40_rk/rsx11m-40_rk_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: rsx11m-40_rk_boot.tcl 622 2014-12-28 20:45:26Z mueller $ +# $Id: rsx11m-40_rk_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for RSX11-M V4.0 RK05 based system # @@ -10,6 +10,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp,pp (enable rx rate limiter on old DEC OS) @@ -23,6 +24,7 @@ cpu0rka2 att RSX11M_USER.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rka0
/tools/oskit/rsx11m-40_rk/.cvsignore
1,4 → 1,5
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
tools/oskit/rsx11m-40_rk Property changes : Modified: svn:ignore ## -34,4 +34,5 ## *.dat *.dsk *.log +*hook.tcl *license.txt Index: tools/oskit/211bsd_rl/README_211bsd_rlset.txt =================================================================== --- tools/oskit/211bsd_rl/README_211bsd_rlset.txt (revision 31) +++ tools/oskit/211bsd_rl/README_211bsd_rlset.txt (revision 32) @@ -1,4 +1,4 @@ -# $Id: README_211bsd_rlset.txt 680 2015-05-14 13:29:46Z mueller $ +# $Id: README_211bsd_rlset.txt 688 2015-06-05 13:15:10Z mueller $ Notes on oskit: 2.11BSD system on RL02 volumes
/tools/oskit/211bsd_rl/.cvsignore
1,5 → 1,6
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
*license.pdf
/tools/oskit/211bsd_rl/211bsd_rl_boot.tcl
1,4 → 1,4
# $Id: 211bsd_rl_boot.tcl 633 2015-01-11 22:58:48Z mueller $
# $Id: 211bsd_rl_boot.tcl 689 2015-06-05 14:33:18Z mueller $
#
# Setup file for 211bsd RL02 based system
#
10,6 → 10,7
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp (211bsd uses parity -> use 7 bit mode)
21,6 → 22,7
cpu0rla1 att 211bsd_rl_usr.dsk
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot rla0
tools/oskit/211bsd_rl Property changes : Modified: svn:ignore ## -34,5 +34,6 ## *.dat *.dsk *.log +*hook.tcl *license.txt *license.pdf Index: tools/oskit/rt11-53_rl/.cvsignore =================================================================== --- tools/oskit/rt11-53_rl/.cvsignore (revision 31) +++ tools/oskit/rt11-53_rl/.cvsignore (revision 32) @@ -1,4 +1,5 @@ *.dat *.dsk *.log +*hook.tcl *license.txt Index: tools/oskit/rt11-53_rl/rt11-53_rl_boot.tcl =================================================================== --- tools/oskit/rt11-53_rl/rt11-53_rl_boot.tcl (revision 31) +++ tools/oskit/rt11-53_rl/rt11-53_rl_boot.tcl (revision 32) @@ -9,6 +9,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp,pp (single console; enable rx rate limiter on old DEC OS) @@ -20,6 +21,7 @@ cpu0rla0 att RT11_V5.3_SYSTEM.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rla0
tools/oskit/rt11-53_rl Property changes : Modified: svn:ignore ## -34,4 +34,5 ## *.dat *.dsk *.log +*hook.tcl *license.txt Index: tools/oskit/211bsd_tm/211bsd_tm_boot.scmd =================================================================== --- tools/oskit/211bsd_tm/211bsd_tm_boot.scmd (revision 31) +++ tools/oskit/211bsd_tm/211bsd_tm_boot.scmd (nonexistent) @@ -1,26 +0,0 @@ -; $Id: $ -; -; Setup file for creating a 211bsd RP06 system from a TM11 dist kit -; -; Usage: -; -; pdp11 211bsd_tm_boot.scmd -; -do ../../simh/setup_w11a_max.scmd -set tto 7b -set dlo0 7b -; -set rp0 rp06 -set rp1 rp06 -; -set rl0 rl02 -set rl1 rl02 -set rl2 rl02 -set rl3 rl02 -; -set tm0 locked -; -att rp0 211bsd_rp06.dsk -att tm0 211bsd_tm.tap -; -boo tm0 Index: tools/oskit/211bsd_tm/211bsd_tm_boot.tcl =================================================================== --- tools/oskit/211bsd_tm/211bsd_tm_boot.tcl (revision 31) +++ tools/oskit/211bsd_tm/211bsd_tm_boot.tcl (nonexistent) @@ -1,32 +0,0 @@ -# $Id: $ -# -# Setup file for creating a 211bsd RP06 system from a TM11 dist kit -# -# Usage: -# -# console_starter -d DL0 & -# console_starter -d DL1 & -# create_disk --typ=rp06 --bad 211bsd_rp06.dsk -# ti_w11 -xxx @211bsd_tm_boot.tcl ( -xxx depends on sim or fpga connect) -# - -# setup w11 cpu -puts [rlw] - -# setup tt,lp (211bsd uses parity -> use 7 bit mode) -rw11::setup_tt "cpu0" {to7bit 1} -rw11::setup_lp - -# mount disks -cpu0rpa0 set type rp06 -cpu0rpa1 set type rp06 - -cpu0rpa0 att 211bsd_rp06.dsk - -# mount tapes -cpu0tma0 att 211bsd_tm.tap?wpro - -# and boot -rw11::cpumon -rw11::cpucons -cpu0 boot tma0 Index: tools/oskit/211bsd_tm/README_211bsd_tmset.txt =================================================================== --- tools/oskit/211bsd_tm/README_211bsd_tmset.txt (revision 31) +++ tools/oskit/211bsd_tm/README_211bsd_tmset.txt (revision 32) @@ -8,6 +8,7 @@ 2. Installation 3. Usage 4. Install 211bsd from tape on a RP06 disk + 5. Install 211bsd from tape on a RM05 disk 1. General remarks --------------------------------------------------- @@ -32,14 +33,21 @@ 3. Usage ------------------------------------------------------------- - - This is a tape distribution kit and tailoed to be installed on RP06 disks. - So first step is to create a disk image which will hold the system + - This is a tape distribution kit and tailoed to be installed on massbus + disks of RP or RM type. The 211bsd system doesn't contain a ready to + used boot block for RP07 disks, while RM03 and RP05 disks are too small + for a full 211bsd system. Therefore RP06 and RM05 disks are the supported + disk types. + So first step is to create a disk image, use one of + create_disk --typ=rp06 --bad 211bsd_rp06.dsk + create_disk --typ=rm05 --bad 211bsd_rm05.dsk - Start backend server and boot system (see section 3 in w11a_os_guide.txt) - boot script: 211bsd_tm_boot.tcl - example: ti_w11 @211bsd_tm_boot.tcl + boot script: 211bsd_tm_rp06_boot.tcl or + 211bsd_tm_rm05_boot.tcl + example: ti_w11 @211bsd_tm_rp06_boot.tcl where is the proper option set for the board. - Hit in the xterm window to connnect to backend server. @@ -225,7 +233,7 @@ erase, kill ^U, intr ^C -!! make system bootable +!! make system bootable {!! different for RM05 !!} # dd if=/mdec/hpuboot of=/dev/rxp0a count=1 1+0 records in 1+0 records out @@ -272,3 +280,59 @@ : ## from now on like for README_211bsd_rpset.txt + +5. Install 211bsd from tape on a RM05 disk --------------------------- + + The procedure is very similar to an RP06 install, the only differences are + - disk partitioning (creating disklabel) + - setup of boot block + - initializing the 'c' file system + + In the following only these differences are briefly summarized: + + - use 211bsd_tm_rm05_boot.tcl (instead of 211bsd_tm_rp06_boot.tcl) + + - in disklabel use different sizes and offsets + + 'a' size [500384]: ## 34c + 'b' offset [0]: ## 34c + 'b' size [0]: ## 13c + 'c' offset [0]: ## 47c + 'c' size [0]: ## 775c + + - the final 'd' or display in disklabel show show + + type: SMD + disk: SMD + label: DEFAULT + flags: + bytes/sector: 512 + sectors/track: 32 + tracks/cylinder: 19 + sectors/cylinder: 608 + cylinders: 823 + rpm: 3600 + drivedata: 0 0 0 0 0 + + 3 partitions: + # size offset fstype [fsize bsize] + a: 20672 0 2.11BSD 1024 1024 # (Cyl. 0 - 33) + b: 7904 20672 swap # (Cyl. 34 - 46) + c: 471200 28576 2.11BSD 1024 1024 # (Cyl. 47 - 821) + + - after first boot write the correct boot block + + # dd if=/mdec/rm05uboot of=/dev/rxp0a count=1 + + Note: the boot code has the disk geometry hard coded, so using the right + one is essential. RP06 uses hpuboot, while RM05 uses rm05uboot !! + + - to create file system on partition c use + + # /sbin/mkfs -m 2 -n 304 -i 4096 -s 235600 /dev/rxp0c + + - the final system should give a 'df' output like + + Filesystem 1K-blocks Used Avail Capacity Mounted on + root 10173 4503 5670 44% / + /dev/xp0c 231917 87043 144874 38% /usr
/tools/oskit/211bsd_tm/211bsd_tm_rm05_boot.tcl
0,0 → 1,34
# $Id: 211bsd_tm_rm05_boot.tcl 690 2015-06-07 18:23:51Z mueller $
#
# Setup file for creating a 211bsd RM05 system from a TM11 dist kit
#
# Usage:
#
# console_starter -d DL0 &
# console_starter -d DL1 &
# create_disk --typ=rm05 --bad 211bsd_rm05.dsk
# ti_w11 -xxx @211bsd_tm_boot.tcl ( -xxx depends on sim or fpga connect)
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp (211bsd uses parity -> use 7 bit mode)
rw11::setup_tt "cpu0" {to7bit 1}
rw11::setup_lp
 
# mount disks
cpu0rpa0 set type rm05
cpu0rpa1 set type rm05
 
cpu0rpa0 att 211bsd_rm05.dsk
 
# mount tapes
cpu0tma0 att 211bsd_tm.tap?wpro
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot tma0
/tools/oskit/211bsd_tm/211bsd_rm05_boot.tcl
0,0 → 1,30
# $Id: 211bsd_rm05_boot.tcl 690 2015-06-07 18:23:51Z mueller $
#
# Setup file for 211bsd RM05 based system
#
# Usage:
#
# console_starter -d DL0 &
# console_starter -d DL1 &
# ti_w11 -xxx @211bsd_rp_boot.tcl ( -xxx depends on sim or fpga connect)
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp (211bsd uses parity -> use 7 bit mode)
rw11::setup_tt "cpu0" {to7bit 1}
rw11::setup_lp
 
# mount disks
cpu0rpa0 set type rm05
cpu0rpa1 set type rm05
 
cpu0rpa0 att 211bsd_rm05.dsk
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot rpa0
/tools/oskit/211bsd_tm/211bsd_tm_rp06_boot.tcl
0,0 → 1,34
# $Id: 211bsd_tm_rp06_boot.tcl 690 2015-06-07 18:23:51Z mueller $
#
# Setup file for creating a 211bsd RP06 system from a TM11 dist kit
#
# Usage:
#
# console_starter -d DL0 &
# console_starter -d DL1 &
# create_disk --typ=rp06 --bad 211bsd_rp06.dsk
# ti_w11 -xxx @211bsd_tm_boot.tcl ( -xxx depends on sim or fpga connect)
#
 
# setup w11 cpu
rutil::dohook "preinithook"
puts [rlw]
 
# setup tt,lp (211bsd uses parity -> use 7 bit mode)
rw11::setup_tt "cpu0" {to7bit 1}
rw11::setup_lp
 
# mount disks
cpu0rpa0 set type rp06
cpu0rpa1 set type rp06
 
cpu0rpa0 att 211bsd_rp06.dsk
 
# mount tapes
cpu0tma0 att 211bsd_tm.tap?wpro
 
# and boot
rutil::dohook "preboothook"
rw11::cpumon
rw11::cpucons
cpu0 boot tma0
/tools/oskit/211bsd_tm/211bsd_tm_rm05_boot.scmd
0,0 → 1,26
; $Id: 211bsd_tm_rm05_boot.scmd 690 2015-06-07 18:23:51Z mueller $
;
; Setup file for creating a 211bsd RM05 system from a TM11 dist kit
;
; Usage:
;
; pdp11 211bsd_tm_boot.scmd
;
do ../../simh/setup_w11a_max.scmd
set tto 7b
set dlo0 7b
;
set rp0 rm05
set rp1 rm05
;
set rl0 rl02
set rl1 rl02
set rl2 rl02
set rl3 rl02
;
set tm0 locked
;
att rp0 211bsd_rm05.dsk
att tm0 211bsd_tm.tap
;
boo tm0
/tools/oskit/211bsd_tm/211bsd_tm_rp06_boot.scmd
0,0 → 1,26
; $Id: 211bsd_tm_rp06_boot.scmd 690 2015-06-07 18:23:51Z mueller $
;
; Setup file for creating a 211bsd RP06 system from a TM11 dist kit
;
; Usage:
;
; pdp11 211bsd_tm_boot.scmd
;
do ../../simh/setup_w11a_max.scmd
set tto 7b
set dlo0 7b
;
set rp0 rp06
set rp1 rp06
;
set rl0 rl02
set rl1 rl02
set rl2 rl02
set rl3 rl02
;
set tm0 locked
;
att rp0 211bsd_rp06.dsk
att tm0 211bsd_tm.tap
;
boo tm0
/tools/oskit/211bsd_tm/.cvsignore
3,5 → 3,6
*.log
*.tap
*.tgz
*hook.tcl
*license.txt
*license.pdf
tools/oskit/211bsd_tm Property changes : Modified: svn:ignore ## -36,5 +36,6 ## *.log *.tap *.tgz +*hook.tcl *license.txt *license.pdf Index: tools/oskit/rsx11mp-30_rp/rsx11mp-30_rp_boot.tcl =================================================================== --- tools/oskit/rsx11mp-30_rp/rsx11mp-30_rp_boot.tcl (revision 31) +++ tools/oskit/rsx11mp-30_rp/rsx11mp-30_rp_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: rsx11mp-30_rp_boot.tcl 679 2015-05-13 17:38:46Z mueller $ +# $Id: rsx11mp-30_rp_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for RSX11-M+ V3.0 RP06 based system # @@ -10,6 +10,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp (211bsd uses parity -> use 7 bit mode) @@ -23,6 +24,7 @@ cpu0rpa0 att rsx11mp-30.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rpa0
/tools/oskit/rsx11mp-30_rp/.cvsignore
1,5 → 1,6
*.dat
*.dsk
*.log
*hook.tcl
*license.txt
*license.pdf
tools/oskit/rsx11mp-30_rp Property changes : Modified: svn:ignore ## -34,5 +34,6 ## *.dat *.dsk *.log +*hook.tcl *license.txt *license.pdf Index: tools/oskit/211bsd_rp/211bsd_rp_boot.tcl =================================================================== --- tools/oskit/211bsd_rp/211bsd_rp_boot.tcl (revision 31) +++ tools/oskit/211bsd_rp/211bsd_rp_boot.tcl (revision 32) @@ -1,4 +1,4 @@ -# $Id: 211bsd_rp_boot.tcl 686 2015-06-04 21:08:08Z mueller $ +# $Id: 211bsd_rp_boot.tcl 689 2015-06-05 14:33:18Z mueller $ # # Setup file for 211bsd RP06 based system # @@ -10,6 +10,7 @@ # # setup w11 cpu +rutil::dohook "preinithook" puts [rlw] # setup tt,lp (211bsd uses parity -> use 7 bit mode) @@ -23,6 +24,7 @@ cpu0rpa0 att 211bsd_rp.dsk # and boot +rutil::dohook "preboothook" rw11::cpumon rw11::cpucons cpu0 boot rpa0
/tools/oskit/211bsd_rp/README_211bsd_rpset.txt
1,4 → 1,4
# $Id: README_211bsd_rpset.txt 680 2015-05-14 13:29:46Z mueller $
# $Id: README_211bsd_rpset.txt 688 2015-06-05 13:15:10Z mueller $
 
Notes on oskit: 2.11BSD system on a RP06 volume
 
/tools/oskit/211bsd_rp/.cvsignore
2,5 → 2,6
*.dsk
*.log
*.tgz
*hook.tcl
*license.txt
*license.pdf
tools/oskit/211bsd_rp Property changes : Modified: svn:ignore ## -35,5 +35,6 ## *.dsk *.log *.tgz +*hook.tcl *license.txt *license.pdf Index: tools/dox/w11_vhd_all.Doxyfile =================================================================== --- tools/dox/w11_vhd_all.Doxyfile (revision 31) +++ tools/dox/w11_vhd_all.Doxyfile (revision 32) @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "w11 - vhd" -PROJECT_NUMBER = 0.66 +PROJECT_NUMBER = 0.70 PROJECT_BRIEF = "W11 CPU core and support modules" PROJECT_LOGO = OUTPUT_DIRECTORY = $(RETRODOXY)/w11/vhd Index: tools/dox/w11_cpp.Doxyfile =================================================================== --- tools/dox/w11_cpp.Doxyfile (revision 31) +++ tools/dox/w11_cpp.Doxyfile (revision 32) @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "w11 - cpp" -PROJECT_NUMBER = 0.66 +PROJECT_NUMBER = 0.70 PROJECT_BRIEF = "Backend server for Rlink and w11" PROJECT_LOGO = OUTPUT_DIRECTORY = $(RETRODOXY)/w11/cpp Index: tools/dox/w11_tcl.Doxyfile =================================================================== --- tools/dox/w11_tcl.Doxyfile (revision 31) +++ tools/dox/w11_tcl.Doxyfile (revision 32) @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "w11 - tcl" -PROJECT_NUMBER = 0.66 +PROJECT_NUMBER = 0.70 PROJECT_BRIEF = "Backend server for Rlink and w11" PROJECT_LOGO = OUTPUT_DIRECTORY = $(RETRODOXY)/w11/tcl Index: rtl/ibus/ibdr_tm11.vhd =================================================================== --- rtl/ibus/ibdr_tm11.vhd (revision 31) +++ rtl/ibus/ibdr_tm11.vhd (revision 32) @@ -1,4 +1,4 @@ --- $Id: ibdr_tm11.vhd 686 2015-06-04 21:08:08Z mueller $ +-- $Id: ibdr_tm11.vhd 690 2015-06-07 18:23:51Z mueller $ -- -- Copyright 2015- by Walter F.J. Mueller -- @@ -127,7 +127,7 @@ srpae: slbit; -- sr: parity error srrle: slbit; -- sr: record length error srbte: slbit; -- sr: bad tape error - srnxm: slbit; -- sr: non-existant memory + srnxm: slbit; -- sr: non-existent memory sreof: slv4; -- sr: eof-of-file sreot: slv4; -- sr: eof-of-tape sronl: slv4; -- sr: online Index: rtl/ibus/ibdr_rhrp.vhd =================================================================== --- rtl/ibus/ibdr_rhrp.vhd (revision 31) +++ rtl/ibus/ibdr_rhrp.vhd (revision 32) @@ -1,4 +1,4 @@ --- $Id: ibdr_rhrp.vhd 682 2015-05-15 18:35:29Z mueller $ +-- $Id: ibdr_rhrp.vhd 692 2015-06-21 11:53:24Z mueller $ -- -- Copyright 2015- by Walter F.J. Mueller -- @@ -22,11 +22,15 @@ -- -- Synthesized (xst): -- Date Rev ise Target flop lutl lutm slic t peri +-- 2015-06-20 692 14.7 131013 xc6slx16-2 212 406 8 142 s 8.7 -- 2015-05-14 680 14.7 131013 xc6slx16-2 211 408 8 131 s 8.8 -- 2015-04-06 664 14.7 131013 xc6slx16-2 177 331 8 112 s 8.7 -- -- Revision History: -- Date Rev Version Comment +-- 2015-06-20 692 1.0.3 BUGFIX: fix func-go when drive/init busy checks +-- 2015-06-05 690 1.0.2 use 'not unit' for lsb of rpsn to avoid SI detect +-- BUGFIX: set rmr only for write to busy unit -- 2015-05-15 682 1.0.1 correct ibsel range select logic -- 2015-05-14 680 1.0 Initial version -- 2015-03-15 658 0.1 First draft @@ -147,6 +151,7 @@ constant func_pres : slv5 := "01000"; -- func: readin preset constant func_pack : slv5 := "01001"; -- func: pack acknowledge constant func_sear : slv5 := "01100"; -- func: search + constant func_xfer : slv5 := "10100"; -- used to check for xfer type funcs constant func_wcd : slv5 := "10100"; -- func: write check data constant func_wchd : slv5 := "10101"; -- func: write check header&data constant func_write : slv5 := "11000"; -- func: write @@ -169,8 +174,8 @@ constant cs2_ibf_rwco : integer := 15; -- rem: write check odd word constant cs2_ibf_wce : integer := 14; -- write check error - constant cs2_ibf_ned : integer := 12; -- non-existant drive - constant cs2_ibf_nem : integer := 11; -- non-existant memory + constant cs2_ibf_ned : integer := 12; -- non-existent drive + constant cs2_ibf_nem : integer := 11; -- non-existent memory constant cs2_ibf_pge : integer := 10; -- programming error constant cs2_ibf_mxf : integer := 9; -- missed transfer constant cs2_ibf_or : integer := 7; -- output ready @@ -269,6 +274,7 @@ s_wmem, -- wmem: write mem (DA,MR1,OF,DC,MR2) s_wmembe, -- wmem: write mem with be (WC,BA,DB) s_whr, -- whr: write hr (holding reg only) + s_funcchk, -- funcchk: check function go s_funcgo, -- funcgo: handle function go s_chkdc, -- chkdc: handle dc check s_chkda, -- chksa: handle da check @@ -297,8 +303,8 @@ ffunc : slv5; -- func code (frozen on ext func go) fxfer : slbit; -- func is xfer cs2wce : slbit; -- cs2: write check error - cs2ned : slbit; -- cs2: non-existant drive - cs2nem : slbit; -- cs2: non-existant memory + cs2ned : slbit; -- cs2: non-existent drive + cs2nem : slbit; -- cs2: non-existent memory cs2pge : slbit; -- cs2: programming error cs2mxf : slbit; -- cs2: missed transfer cs2pat : slbit; -- cs2: parity test @@ -330,7 +336,7 @@ poredone: slbit; -- cs3 rem: port rel done packdone: slbit; -- cs3 rem: pack ack done seardone: slbit; -- cs3 rem: search done - ned : slbit; -- current drive non-existant + ned : slbit; -- current drive non-existent cerm : slbit; -- current eff. drive rm controller dtyp : slv6; -- current drive type (5:0) camax : slv10; -- current max cylinder address @@ -473,7 +479,7 @@ variable itamax : slv5 := (others=>'0'); -- max track address variable isamax : slv6 := (others=>'0'); -- max sector address - variable ined : slbit := '0'; -- non-existanrt drive + variable ined : slbit := '0'; -- non-existent drive variable icerm : slbit := '0'; -- effectiv drive is rm variable iclrreg : slbit := '0'; -- clr enable @@ -590,7 +596,7 @@ n.tamax := itamax; n.samax := isamax; - -- consider drive non-existant if not 'DPR' or unit>=4 selected + -- consider drive non-existent if not 'DPR' or unit>=4 selected if r.dsdpr(to_integer(unsigned(r.cs2unit))) = '0' or r.cs2unit2 = '1' then ined := '1'; @@ -759,9 +765,14 @@ -- some general error catchers if ibrem = '0' and imbreg='1' then -- local massbus write -- for cs1: imbreg=0 !! + -- write to non-existent drives if ined = '1' then n.cs2ned := '1'; - elsif inormr='0' and r.cs1rdy='0' then -- rmr prot reg and RDY=0 + -- write to a busy unit, can be a search/seek or a transfer + elsif inormr='0' and -- rmr protected reg + (r.dspip(to_integer(unsigned(r.cs2unit)))='1' or -- busy pip + (r.cs1rdy='0' and (r.funit = r.cs2unit)) -- busy xfer + ) then n.state := s_setrmr; end if; end if; @@ -826,17 +837,16 @@ n.ireq := '1'; -- issue software interrupt end if; - if r.cs1rdy = '1' then -- controller ready - if r.ned = '0' and -- drive on - IB_MREQ.din(cs1_ibf_go) = '1' then -- GO bit set - ibhold := '1'; - n.state := s_funcgo; - end if; - else -- cntl not rdy - n.cs2pge := '1'; -- issue program error - end if; + if r.ned = '0' and -- drive on + IB_MREQ.din(cs1_ibf_go) = '1' then -- GO bit set + ibhold := '1'; + n.state := s_funcchk; + end if; + -- FIXME_code: that's likely not fully correct, cs1 func bits are + -- stored before all error checks are done... imem_we0 := IB_MREQ.be0; -- remember func field per unit + if r.ned = '1' then -- loc access and drive off n.cs2ned := '1'; -- signal error end if; @@ -1008,6 +1018,22 @@ imem_we1 := '1'; end if; + when s_funcchk => -- funcchk: check function go -------- + n.state := s_idle; -- in general return to s_idle + if r.cs1rdy = '0' and + unsigned(IB_MREQ.din(cs1_ibf_func)) >= unsigned(func_xfer) then + n.cs2pge := '1'; -- issue program error + elsif IB_MREQ.din(cs1_ibf_func) = func_dclr then + n.eunit := r.cs2unit; -- for follow-up states + n.clrmode := clrmode_fdclr; + n.state := s_oot_clr0; -- OOT state, no hold! + elsif r.dserp(to_integer(unsigned(r.cs2unit))) = '1' then + n.er1ilf(to_integer(unsigned(r.cs2unit))) := '1'; + else + ibhold := '1'; + n.state := s_funcgo; + end if; + when s_funcgo => -- funcgo: handle function go -------- n.state := s_idle; -- in general return to s_idle n.dsata(to_integer(unsigned(r.cs2unit))) := '0'; @@ -1031,10 +1057,7 @@ end if; n.dsata(to_integer(unsigned(r.cs2unit))) := '1'; - when func_dclr => -- func: drive clear ------- - n.eunit := r.cs2unit; -- for follow-up states - n.clrmode := clrmode_fdclr; - n.state := s_oot_clr0; -- OOT state, no hold! + -- when func_dclr => now handled in funcchk !! when func_offs | -- func: offset ------------ func_retc => -- func: return to center -- @@ -1236,13 +1259,20 @@ -- digit 3: always 1 -- digit 2: 1 if RM type; 0 if RP type -- digit 1: 0-3 based on encoded drive type - -- digit 0: 0-3 taken from unit + -- digit 0: 0-3 taken as complement of unit + -- Note: the 3lsb are the *complement* of the unit number because + -- 211bsd driver code contains a hack to detect SI and CDC + -- drives. For those drives the drive type is encode in the + -- sn register, and one convention is that the 3 lsb of sn + -- equal the unit numnber. To prevent that the SI/CDC hacks + -- are actived the 3lsb are set as complement of the unit ! idout(12) := '1'; idout(8) := r.dtrm(to_integer(unsigned(r.eunit))); idout(5) := r.dte1(to_integer(unsigned(r.eunit))); idout(4) := r.dte0(to_integer(unsigned(r.eunit))); - idout(1) := r.eunit(1); - idout(0) := r.eunit(0); + idout(2) := '1'; + idout(1) := not r.eunit(1); + idout(0) := not r.eunit(0); when omux_bae => -- omux: bae reg --------------- idout(bae_ibf_bae) := r.bae;
/rtl/sys_gen/w11a/nexys2/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 683 2015-05-17 21:54:35Z mueller $
-- $Id: sys_conf.vhd 692 2015-06-21 11:53:24Z mueller $
--
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
19,6 → 19,7
-- Tool versions: xst 11.4-14.7; ghdl 0.26-0.31
-- Revision History:
-- Date Rev Version Comment
-- 2015-06-21 692 1.4.1 use clksys=52 (no closure after rhrp fixes)
-- 2015-03-14 658 1.4 add sys_conf_ibd_* definitions
-- 2015-02-15 647 1.3 drop bram and minisys options
-- 2015-01-04 630 1.2.2 use clksys=54 (no closure after rlink r4 + RL11)
44,7 → 45,7
 
-- configure clocks --------------------------------------------------------
constant sys_conf_clkfx_divide : positive := 25;
constant sys_conf_clkfx_multiply : positive := 27; -- ==> 54 MHz
constant sys_conf_clkfx_multiply : positive := 26; -- ==> 52 MHz
 
-- configure rlink and hio interfaces --------------------------------------
constant sys_conf_ser2rri_defbaud : integer := 115200; -- default 115k baud
/rtl/sys_gen/w11a/nexys2/sys_w11a_n2.vhd
1,4 → 1,4
-- $Id: sys_w11a_n2.vhd 686 2015-06-04 21:08:08Z mueller $
-- $Id: sys_w11a_n2.vhd 692 2015-06-21 11:53:24Z mueller $
--
-- Copyright 2010-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
34,6 → 34,7
--
-- Synthesized (xst):
-- Date Rev ise Target flop lutl lutm slic t peri
-- 2015-06-21 692 14.7 131013 xc3s1200e-4 2312 6716 414 4192 ok: rhrp fixes
-- 2015-06-04 686 14.7 131013 xc3s1200e-4 2311 6725 414 4198 ok: +TM11
-- 2015-05-14 680 14.7 131013 xc3s1200e-4 2232 6547 414 4083 ok: +RHRP
-- 2015-02-21 649 14.7 131013 xc3s1200e-4 1903 5512 382 3483 ok: +RL11
/rtl/sys_gen/w11a/nexys3/sys_conf.vhd
1,4 → 1,4
-- $Id: sys_conf.vhd 683 2015-05-17 21:54:35Z mueller $
-- $Id: sys_conf.vhd 692 2015-06-21 11:53:24Z mueller $
--
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
19,6 → 19,7
-- Tool versions: xst 13.1-14.7; ghdl 0.29-0.31
-- Revision History:
-- Date Rev Version Comment
-- 2015-06-21 692 1.4.1 use clksys=64 (no closure after rhrp fixes)
-- 2015-03-14 658 1.4 add sys_conf_ibd_* definitions
-- 2015-02-15 647 1.3 drop bram and minisys options
-- 2014-12-26 621 1.2.2 use 68 MHz, get occasional problems with 72 MHz
48,8 → 49,8
 
-- configure clocks --------------------------------------------------------
constant sys_conf_clksys_vcodivide : positive := 25;
constant sys_conf_clksys_vcomultiply : positive := 17; -- dcm 68 MHz
constant sys_conf_clksys_outdivide : positive := 1; -- sys 68 MHz
constant sys_conf_clksys_vcomultiply : positive := 16; -- dcm 64 MHz
constant sys_conf_clksys_outdivide : positive := 1; -- sys 64 MHz
constant sys_conf_clksys_gentype : string := "DCM";
-- configure rlink and hio interfaces --------------------------------------
/rtl/sys_gen/w11a/nexys3/sys_w11a_n3.vhd
1,4 → 1,4
-- $Id: sys_w11a_n3.vhd 686 2015-06-04 21:08:08Z mueller $
-- $Id: sys_w11a_n3.vhd 692 2015-06-21 11:53:24Z mueller $
--
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
--
34,6 → 34,7
--
-- Synthesized (xst):
-- Date Rev ise Target flop lutl lutm slic t peri
-- 2015-06-21 692 14.7 131013 xc6slx16-2 2192 4518 161 1584 ok: rhrp fixes
-- 2015-06-04 686 14.7 131013 xc6slx16-2 2189 4492 161 1543 ok: +TM11 67%
-- 2015-05-14 680 14.7 131013 xc6slx16-2 2120 4443 161 1546 ok: +ibmon 67%
-- 2015-04-06 664 14.7 131013 xc6slx16-2 1991 4350 167 1489 ok: +RHRP 65%
/doc/README_known_issues.txt
1,4 → 1,4
$Id: README_known_issues.txt 687 2015-06-05 09:03:34Z mueller $
$Id: README_known_issues.txt 693 2015-06-21 14:02:46Z mueller $
 
Known issues for this release.
The case id indicates the release when the issue was first recognized.
8,9 → 8,6
are currently not supported and rejected as invalid command. Odd byte
length records aren't used by OS, if at all, so in practice this limitation
isn't relevant.
- V0.66-2: using two RP06 drives in parallel under 211bsd leads to a hangup of
the system after a short time. Currently only operation of a single drive
works reliably.
 
- V0.65-1: ti_rri sometimes crashes in normal rundown (exit or ^D) when
a cuff: type rlink is active. One gets
/doc/w11a_tb_guide.txt
1,4 → 1,4
# $Id: w11a_tb_guide.txt 687 2015-06-05 09:03:34Z mueller $
# $Id: w11a_tb_guide.txt 688 2015-06-05 13:15:10Z mueller $
 
Note: Only ISE based test benches are currently documented !
The Vivado test environemnt is still in it's infancy !
/doc/README.txt
1,4 → 1,4
$Id: README.txt 687 2015-06-05 09:03:34Z mueller $
$Id: README.txt 693 2015-06-21 14:02:46Z mueller $
 
Release notes for w11a
 
22,6 → 22,67
 
2. Change Log ----------------------------------------------------------------
 
- w11a_V0.60 -> w11a_V0.70 cummulative summary of key changes
- Bugfix for DIV instruction (in w11a_V0.61, see ECO-026-div.txt)
- revised rbus protocol V4 (in w11a_V0.62, see README_Rlink_V4.txt)
- add basic Vivado support (in w11a_V0.64)
- add Nexys4 and Basys3 port of w11a (in w11a_V0.64)
- add RH70+RP/RM disk support (in w11a_V0.65)
- add TM11/TY10 tape support (in w11a_V0.66)
- reference system now ISE 14.7, Vivado 2014.4; Ubuntu 14.04 64 bit, ghdl 0.31
 
- trunk (2015-06-21: svn rev 33(oc) 693(wfjm); tagged w11a_V0.70) +++++++++++
- Preface
- resolved known issue V0.66-2: operation with multiple RP or RM disks
under 211bsd works now. Issue was caused by a faulty error check.
- resolved bug tracker issue 2015-06-06: the tm11 offline function works
now as expected. Issue was caused by de-referencing a null pointer.
- resolved bug tracker request 2015-06-05: the values returned as drive
serial number were interpreted by 211bsd standalone code as a signature
of SI drives, which made disk partitioning a bit cumbersome. Changed the
scheme used to generate drive serial numbers such that they never match
these 3rd party drive characteristics. The 211bsd installation on a
RM05 is documented with the 211bsd_tm oskit.
- the w11a designs grow larger, filling the FPGA's on Nexys2 and Nexys3
to ~50% (n2) or 67% (n3). To reach timing closure without fine tuning
constraints the cpu clock had to be reduced to
sys_w11a_n2 now 52 MHz (was 54 MHz)
sys_w11a_n3 now 64 MHz (was 68 MHz)
 
- w11a has now a complete set of mass storage peripherals. This is a good
reason of a major release, thus go for version V0.70.
 
- there are many known issues, and in many cases only core functionality
used by operating systems has been implemented. The missing parts will
be implemented in the upcoming releases towards V0.80, also much more
intensive testing, especially with maindecs (aka xxdp) will be done.
 
- Summary
- rhrp and tm11 bug fixes
- no major functionality added
 
- New features
 
- Changes
- renames
- tools/oskit/211bsd_tm/211bsd_tm_boot.* -> 211bsd_tm_rp06_boot.*
- functional changes
- rtl/ibus/ibdr_rhrp - modify sn register to avoid 211bsd issues
- tools/bin/create_disk - support RM80 disks
- tools/tcl/rutil/util.tcl - add dohook
- tools/oskit/*/*_boot.tcl - add preinithook and preboothook
 
- Bug fixes
- rtl/ibus/ibdr_rhrp - set er1.rmr only when unit busy
- set cs2.pge only when controller busy
- tools/src/librw11
- Rw11CntlTM11 - fix crash when offline function was executed
 
- Known issues
- all issues: see README_known_issues.txt
- resolved issues:
- V0.66-2: operation with multiple RP/RM drives works now under 211bsd
 
- trunk (2015-06-05: svn rev 31(oc) 687(wfjm); untagged w11a_V0.66) +++++++++
- Preface

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.