2020-03-27

885 test-02

is giving me the gips.

LDA 002002,IDC

(first fault fetching 2002 descriptor)

LDA 002002,IDC

2002 contains 004003000255
address 4003, tally 22, tag DIC

This is IDC --the next address is pre-increment: 4003

(2nd fault fetching 4003)

LDA 004003,DIC

4003 is 006005001257
address 6005, tallly 12, tag 57 IDC

This is DIC; the next address is post-decrement: 6004

(3rd fault fetching 6004)

LDA 006005,IDC

Okay; this is where it gets This is an RCU from ISOLTS so we are pretty certain the machine conditions are correct at this point.

The IWB contains address 6005, but we know that the descriptor is is at 6004. So Weiss' 'correct CA' code must be needed. It goes before startCA:; it after it will break the 'goto startCA' logic.

6004 is 010005000655
addr is 10005 tally 6, tag 55 DIC

This is IDCl next address is pre-increment: 10005

(4th fault fetching 10005)

LDA 010005,DIC

10005 is 010007000656
addr 10007, tally 6, tag 56 ID

This is DIC; the next address is post-decrement: 10006

10006 contains 010007000700 
address 10007, tally 7, tag 0

Operand is at 10007
lda 2002,idc --> 4003,dic --> 60055, idc --> 10005,dic --> 10007,id --> 10007

test 03a

*************************   misc. logic      **************************
pa885    test-03a    its mod         bar-100176
***dsbr***  addr= 00115322 bnd= 00001 u= 1 stack= 0000
test start 102670   patch 103022   subtest loop point 102733

this subtest is checking its modification with
a directed fault on the segment

location 110000  000002235060   instruction is   lda,*n

prime results       a         c(y+0)       c(y+1)       c(y+2)
          s/b 434343434343 000000651001 000000000041 000001000100
          was 434343434343 000000651001 000000000041 000001000100
           c(y+3)       c(y+4)       c(y+5)       c(y+6)
    s/b 000000000000 000000200200 000004000260 000004235000
    was 000000000000 000000200200 000004000200 000004235000
           c(y+7)
    s/b 110001001000
    was 110001001000
faults         s/b                       was
   directed fault 0  -000000 directed fault 0  - 000000

The IWB tag field is wrong?

ADDRMOD: IR_MOD 
ADDRMOD: IR_MOD: CT_HOLD will be 60
ADDRMOD: IR_MOD: fetching indirect word from 000002
ADDRMOD: IR_MOD sets CT_HOLD to 60
ADDRMOD: ITS clears CT_HOLD
ADDRMOD: IR_MOD1: cpu.itxPair[0]=000001000043 TPR.CA=000004 Tm=0 Td=00 (its)
ADDRMOD: IR_MOD(TM_R): CT_HOLD 0 Cr=000000 
ADDRMOD: IR_MOD(TM_R): TPR.CA=000004
ADDRMOD: IR_MOD(TM_R) not direct operand updateIWB
ADDRMOD: updateIWB: IWB was 000002235060 000002 *n
ADDRMOD: updateIWB: IWB now 000004235000 000004 
ADDRMOD: readOperands (LDA 000004):mne=lda flags=1
ADDRMOD: readOperands a 0 address 00000004
FAULT: Fault 16(020), sub 0(00), dfc N, 'SDW0.F == 0'
FAULT: 1: 00000:000000 0 000004235000 (LDA 000004) 000004 235(0) 0 0 0 00
FAULT: CU: P 1 IR 0200200 PSR 0 IC 0 TSR 01
xsf 1 rf 0 rpt 0 rd 0 rl 0 pot 0 xde 0 xdo 0 itp 0 rfi 0 its 1 fif 0 hold 0
FAULT: CU: iwb 000004235000 irodd 110001001000
TRACE: 1: 000000 020320657200 (SCU 020320) 020320 657(0) 0 1 0 00
ADDRMOD: do_caf(Entry): operType:writeCYblock8 TPR.CA=020320
ADDRMOD: do_caf(Entry): CT_HOLD 0
ADDRMOD: startCA: TAG=00() CT_HOLD 00 CA:020320
ADDRMOD: writeOperands (SCU 020320):mne=scu flags=24020

updateIWB put the wrong tag in…

                    // CT_HOLD has *DU or *DL; convert to DU or DL
                    word6 tag = TM_R | GET_TD (cpu.cu.CT_HOLD);
                    sim_debug (DBG_ADDRMOD, & cpu_dev, "IR_MOD(TM_R) direct operand updateIWB\n");
                    updateIWB (cpu.TPR.CA, tag); // Known to be DL or DU

Hmm. CT-HOLD had 0…

Hmm… The earlier: ."ADDRMOD: ITS clears CT_HOLD"?

ITS/ITP clear CT-HOLD because Multic won't boot otherwise:

bootload_0: Booting system MR12.6g3 generated 03/04/19 2136.3 pst Mon.  
bootload_0: External symbol not found: prds       $_1  symbol_table .  
bootload_0: External symbol not found: pl1_operators_    $        . 
bootload_0: External symbol not found: pl1_operators_    $        . 
bootload_0: External symbol not found: pl1_operators_    $        . 
...
...
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License