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