1 " ***********************************************************
 2 " *                                                         *
 3 " * Copyright, (C) Honeywell Bull Inc., 1987                *
 4 " *                                                         *
 5 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *
 6 " *                                                         *
 7 " * Copyright (c) 1972 by Massachusetts Institute of        *
 8 " * Technology and Honeywell Information Systems, Inc.      *
 9 " *                                                         *
10 " ***********************************************************
11           name      parity_check
12 
13           entry     parity_check
14           entry     set_parity_mask
15           entry     reset_parity_mask
16 
17 "         Last Modified by RBSnyder 02/14/73 for follow-on
18 
19 "
20 "         call parity_check(loc, word, check)
21 "
22 "          loc pointer        pointer to parity cell
23 "         word bit(36)        contents of cell indicating parity
24 "         check fixed bin     = 0 if no parity
25 "
26 "
27 "         This routine is called to validate the existence of a parity error
28 "         by re-accessing the word in question.
29 "         It is used by the software to verify that the
30 "         condition was in fact a memory parity error.
31 "
32 "
33 "
34 "
35 "         call set_parity_mask
36 "
37 "         This entry is used to set the parity mask indicator in
38 "         the caller's indicators.
39 "
40 "
41 "         call reset_parity_mask
42 "
43 "         This entry is the reverse of the one above
44 "
45 
46           include   mc
47 "^L
48 
49 parity_check:
50           ldi       scu.ir.parm,dl      Set mask
51           eppbp     ap|2,*              Pick up pointer to cell
52           lda       bp|0,*              Read from cell
53           sta       ap|4,*              Return contents
54           sti       ap|6,*              Store indicators into return arg
55           lda       scu.ir.par,dl       Pick up mask
56           ansa      ap|6,*              If error occured, will be non-zero
57           short_return
58 
59 set_parity_mask:
60           sti       sp|0                store the current indicators
61           lda       scu.ir.parm,dl      Pick up masking bit
62           orsa      sp|0                store into stored indicators
63           ldi       sp|0                reload indicators
64           short_return
65 
66 reset_parity_mask:
67           sti       sp|0                save current indicators
68           lca       scu.ir.parm+1,dl    Form 1-s complement of mask
69           ansa      sp|0                and delete the bit
70           ldi       sp|0                get new indicators
71           short_return
72 
73           end       parity_check        ^L