CAC 2015-09-27
Chasing config_deck_data_
>user_dir_dir>SysEng>Anthony>fromSource>work>tmp>config_deck_data_: (segment 1)
11/11/89 1029.6 pdt Sat cds
>user_dir_dir>SysEng>Anthony>fromSource>work>config_deck_data_: (segment 2)
09/26/93 1354.8 pdt Sun cds
Lengths of the symb section of the 2 segments do not agree.
>user_dir_dir>SysEng>Anthony>fromSource>work>tmp>config_deck_data_ : 217
>user_dir_dir>SysEng>Anthony>fromSource>work>config_deck_data_ : 220
The discrepancy is trivial
**Text discrepancies between the 2 segments have been found.
>user_dir_dir>SysEng>Anthony>fromSource>work>tmp>config_deck_data_:
002614 aa 000003400043
Changed to:
>user_dir_dir>SysEng>Anthony>fromSource>work>config_deck_data_:
002614 aa 000002400043
ds config_deck_data_ -ascii
002410 000000000000 000000000007 055163165142 163171163000 ........-subsys.
002414 000000000000 000000000006 055156143150 141156000000 ........-nchan..
002420 000000000000 000000000006 055144162151 166145000000 ........-drive..
002424 000000000000 000000000007 055156165155 142145162000 ........-number.
002430 000000000000 000000000006 055144162151 166145000000 ........-drive..
002434 000000000000 000000000007 055156165155 142145162000 ........-number.
002440 000000000000 000000000006 055144162151 166145000000 ........-drive..
002444 000000000000 000000000007 055156165155 142145162000 ........-number.
002450 000000000000 000000000006 055144162151 166145000000 ........-drive..
002454 000000000000 000000000007 055156165155 142145162000 ........-number.
002460 000000000000 000000000006 055144162151 166145000000 ........-drive..
002464 000000000000 000000000007 055156165155 142145162000 ........-number.
002470 000000000000 000000000006 055144162151 166145000000 ........-drive..
002474 000000000000 000000000007 055156165155 142145162000 ........-number.
002500 000000000000 000000000000 000000000000 000000000000 ................
======
002570 000000000000 440404040040 000000045004 000044700000 ...... ..%..$..
002574 022000000004 500000002200 000002040404 040000000000 .......... . ...
002600 524000000220 000000110000 000044024000 022000000011 ......H..$......
002604 000000004400 000002200000 001252525252 000000000000 ................
002610 000000000000 000000000000 000000000010 000000000000 ................
002614 000002400043 000000000003 000000000000 000000000000 ...#............ <<<<==== HERE
002620 000000000000 000000000000 000000000000 000000000000 ................
002624 000000000003 000000000000 000000000000 000000000000 ................
002630 000000000002 000000000000 000000000000 000000000000 ................
002634 000000000000 000000000002 000000000002 000000000000 ................
002640 000000000000 000000000000 000000000000 000000000000 ................
002644 000000000002 000000000000 000000000004 000000000002 ................
002650 000000000005 000000000005 000000000004 000000000004 ................
002654 000000000003 000000000005 000000000000 000000000003 ................
002660 000000000004 000000000006 000000000006 000000000005 ................
002664 000000000004 000000000004 000000000006 000000000002 ................
002670 000000000000 000000000004 000000000004 000000000002 ................
002674 000000000002 000000000002 000000000000 143150156154 ............chnl
002700 143154157153 143160165040 160162160150 151160143040 clokcpu prphipc
002704 151157155040 155145155040 155160143040 160141162155 iom mem mpc parm
002710 160141162164 160162160150 160162160150 160162160150 partprphprphprph
002714 160162160150 160162160150 160162160150 160162160150 prphprphprphprph
002720 162157157164 163141154166 163143150144 163163164040 rootsalvschdsst
002724 164142154163 164143144040 165144163153 125123105122 tblstcd udskUSER
from config_deck_cards_.incl.pl1
2 66 "udsk emp minimum 2 -subsys STRING -nchan OCTAL repeat 6 -drive OCTAL -number OCTAL",
2 67 "USER emp");
This gets 'compiled' in at 002410
This is the spot it gets written by create_data_segment.
WATCH [142354828] write 00420:002275 66657770 000002400043 (Write)
DBG(134446012)> CPU TRACE: 00314:050323 bound_library_wired_:any_to_any_+02751
DBG(134446012)> CPU TRACE: 002751 aa 5 00004 7421 00 2765 stx2 work|fix_bin_generic " save precision
DBG(134446012)> CPU TRACE: 00314:050323 4 500004742100 (STX2 PR5|4) 500004 742(0) 1 0 0 00
DBG(134446012)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66657002 readData=000002400043
DBG(134446012)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66657002 writeData=000002400043
2751 " Char to bit conversion is simple. We simply determine if varying or
2752 " simple target, and copy sufficient bits to fill the target. Return
2753 " is directly to user since we cannot be complex. For a varying string
2754 " we only copy up to the length of the source, for a non-varying string,
2755 " we fill "0" beyond the length of the source. We receive generic pointing
2756 " to the character string, X3 as the length. We leave generic as base of
2757 " bit string and X3 as length. We use fix_bin_generic as the working
2758 " target length, permitting correct varying target conversion.
2759
002746 2760 char_to_bit:
002746 2761 char.bit.restart: " enter and restart
002746 aa 5 00001 7231 00 2762 lxl3 work|source_precision
DBG(134446006)> CPU TRACE: 002746 aa 5 00001 7231 00 2762 lxl3 work|source_precision
DBG(134446006)> CPU TRACE: 00314:050320 4 500001723100 (LXL3 PR5|1) 500001 723(0) 1 0 0 00
DBG(134446006)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66656777 readData=000000000002
002747 aa 5 00000 7221 00 2763 lxl2 work|target_precision
DBG(134446008)> CPU TRACE: 002747 aa 5 00000 7221 00 2763 lxl2 work|target_precision
DBG(134446008)> CPU TRACE: 00314:050321 4 500000722100 (LXL2 PR5|0) 500000 722(0) 1 0 0 00
DBG(134446008)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66656776 readData=000000000002
002750 aa 000000 2240 03 2764 ldx4 0,du " save length of target
002751 aa 5 00004 7421 00 2765 stx2 work|fix_bin_generic " save precision
DBG(134446012)> CPU TRACE: 002751 aa 5 00004 7421 00 2765 stx2 work|fix_bin_generic " save precision
DBG(134446012)> CPU TRACE: 00314:050323 4 500004742100 (STX2 PR5|4) 500004 742(0) 1 0 0 00
DBG(134446012)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66657002 readData=000002400043
DBG(134446012)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66657002 writeData=000002400043
So, X2 is 2, s.b. 3.
lxl2 work|target_precision
Track target_precision back...
DBG(134445970)> CPU TRACE: 000007 aa 5 00000 7571 00 395 xfer: staq work|scales " Scales in DU, precision DL
DBG(134445970)> CPU TRACE: 00314:045361 4 500000757100 (STAQ PR5|0) 500000 757(0) 1 0 0 00
DBG(134445970)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66656776 writeData=000000000002
DBG(134445970)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66656777 writeData=000000000002
390 " Dispatch
391
392 " Scales and precision share the same word. Scales are upper (ldxN).
393 " Precision is lower (lxlN).
394
000007 aa 5 00000 7571 00 395 xfer: staq work|scales " Scales in DU, precision DL
DBG(134445970)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66656776 writeData=000000000002
DBG(134445970)> CPU APPENDING: Write(Actual) Write: iefpFinalAddress=66656777 writeData=000000000002
000010 aa 000256 1070 03 396 cmpx7 source_map_size,du " See if source convertable
000011 0a 006273 6030 00 397 trc error_bad_type
000012 aa 000256 1060 03 398 cmpx6 target_map_size,du " See if target convertable
000013 0a 006273 6030 00 399 trc error_bad_type
From
000000 373 any_to_any_truncate_:
000000 374 real_to_real_truncate_:
000000 aa 000000 6250 00 375 eax5 0 " no rounding
000001 0a 000007 7100 00 376 tra xfer
Here's the pl1 compiler calling:
DBG(134445962)> CPU TRACE: 00400:036540 bound_bootload_0:Length+04734
DBG(134445962)> CPU TRACE: 00400:036540 4 001257700100 (TSX0 PR0|1257) 001257 700(0) 1 0 0 00
DBG(134445962)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=77451215 readData=045352710000
WATCH [134446012] read 00314:050323 00234:017002 66657002 000002400043 (Read)
002751 aa 5 00004 7421 00 2765 stx2 work|fix_bin_generic " save precision
dcn >sss>bound_pl1_ 036540
36540 initialize_int_static|2152
STATEMENT 1 ON LINE 514
(stringsize):
bit_target.image = bit (substr (v -> token.string, 1, insize));
002146 aa 0 00552 7001 00 tsx0 pr0|362 alloc_bit_temp
002147 aa 6 00414 2521 00 spri2 pr6|268
002150 aa 5 00004 3535 00 epp3 pr5|4 token.string
002151 aa 000052 7270 07 lxl7 42,dl
002152 aa 2 00000 3515 00 epp1 pr2|0
002153 aa 6 00112 2351 00 lda pr6|74 insize
DBG(134445956)> CPU TRACE: 00400:036535 bound_bootload_0:Length+04731
DBG(134445956)> CPU TRACE: 00400:036535 4 600112235100 (LDA PR6|112) 600112 235(0) 1 0 0 00
DBG(134445956)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66656452 readData=000000000002
DBG(134445956)> CPU REGDUMPAQI: A=000000000002 Q=000000000002 IR:~BAR
002154 aa 000046 7260 07 lxl6 38,dl
002155 aa 6 00436 3715 00 epp5 pr6|286
002156 aa 0 01257 7001 00 tsx0 pr0|687 any_to_any_truncate_
512 else if v -> token.type = bit_string then do;
513 insize = v -> token.size - 1; /* used below if varying */
514 (stringsize):
515 bit_target.image = bit (substr (v -> token.string, 1, insize));
516 end;
STATEMENT 1 ON LINE 513
insize = v -> token.size - 1;
002142 aa 6 00100 3715 20 epp5 pr6|64,* v
002143 aa 5 00003 2361 00 ldq pr5|3 token.size
DBG(134445890)> CPU TRACE: 00400:036525 4 500003236100 (LDQ PR5|3) 500003 236(0) 1 0 0 00
DBG(134445890)> CPU APPENDING: Read (Actual) Read: iefpFinalAddress=66207325 readData=000000000003
002144 aa 000001 1760 07 sbq 1,dl
002145 aa 6 00112 7561 00 stq pr6|74 insize
I think the problem is here:
dcl Card_data_bit_strings (4) bit (2) static options (constant) init
("01"b, "11"b, "00"b, "10"b);
002614 aa 000003400043
Changed to:
002614 aa 000002400043
011 10010
page revision: 0, last edited: 28 Sep 2015 00:47